Subject: kern/20585: GENERIC config COMPAT_1[56] option usage is (mostly) bogus
To: None <gnats-bugs@gnats.netbsd.org>
From: None <kre@munnari.OZ.AU>
List: netbsd-bugs
Date: 03/05/2003 17:09:06
>Number:         20585
>Category:       kern
>Synopsis:       GENERIC config COMPAT_1[56] option usage is (mostly) bogus
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 05 02:11:00 PST 2003
>Closed-Date:
>Last-Modified:
>Originator:     Robert Elz
>Release:        NetBSD 1.6P	(-current of 2003-03-03)
>Organization:
	Prince of Songkla University
>Environment:
System: NetBSD fuchsia.cs.mu.OZ.AU 1.6P NetBSD 1.6P (FUCHSIA) #35: Wed Mar 5 13:50:03 ICT 2003 root@:/usr/obj/sys/FUCHSIA i386
Architecture: i386
Machine: i386
>Description:
	Many (but not all) sys/arch/*/conf/GENERIC* files include
		options	COMPAT_15
	None of the sys/arch/*/conf/GENERIC* files include
		options COMPAT_16

	Yet, COMPAT_15 is a (wholly) useless option - apart from the
	various sys/arch/*/conf/* files the only place it appears is
	in conf/files where it is defined.   Nothing in the kernel
	(in -current anyway) depends upon it in any way at all.

	On the other hand, COMPAT_16 does exist - currently twice.
	It is in arch/vax/vax/machdep.c (and is defined in
	arch/vax/conf/GENERIC so that one is fine).

	It is also in kern/subr_disk.c and so should be in all the
	various ports' conf/GENERIC files - the lack of it is almost
	certainly what causes so many people to bump into the
	"bad sysctl" from iostat (as hw.diskstats changed).

	But apart from those two, COMPAT_16 should also appear in
	vast numbers of arch/x/x/*machdep.c files - and in a way
	does, using the idiom
		#if 1 /* COMPAT_16 */
	which seems to date from the times when COMPAT_16 did not
	yet exist, and someone was hoping not to have to add it...

>How-To-Repeat:
	UTSL.

>Fix:
	Remove COMPAT_15 from everywhere except sys/conf/files
	where it wants to remain so it remains a valid (useless) option
	for people's private kernel config files.   While that isn't
	strictly necessary, it is a good idea to keep it there.
	It should be in none of the distributed config files though.

	Add COMPAT_16 to everywhere (GENERIC at least), except
	vax/conf/GENERIC where it exists already.   This is the
	most important part of this PR (the rest is just cleanup).

	Change
		#if 1 /* COMPAT_16 */
	to
		#ifdef COMPAT_16
	throughout (appears in arch/x/x/*machdep.c files for most x)

	Document COMPAT_16 in options(4).   (Note there is no COMPAT_15
	there, so why everyone keeps using it is a mystery).

	Whie cleaning up, a few ports' GENERIC files could perhaps lose
	their COMPAT_09 compat_10 (etc) options, where they describe
	versions of the kernel that never existed for the port in
	question - and not just include them all "because everyone else
	does".
>Release-Note:
>Audit-Trail:
>Unformatted: