History log of /freebsd-current/usr.sbin/config/config.y
Revision Date Author Comments
# 8a7b6120 23-Nov-2023 Warner Losh <imp@FreeBSD.org>

usr.sbin: Remove ancient SCCS tags.

Remove ancient SCCS tags from the tree, automated scripting, with two
minor fixup to keep things compiling. All the common forms in the tree
were removed with a perl script.

Sponsored by: Netflix


# 42b38843 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line .h pattern

Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/


# b9c8f490 24-Feb-2023 Kyle Evans <kevans@FreeBSD.org>

config: drop reference to removed System_spec

Fixes the following warning:

yacc: w - the symbol System_spec is undefined
yacc: 3 rules never reduced

Reported by: otis
Fixes: 6a836ea741c7 ("config(8): Remove obsolete 'config' directive.")


# 6a836ea7 17-Jun-2021 Warner Losh <imp@FreeBSD.org>

config(8): Remove obsolete 'config' directive.

The "config" line in config files has been obsolete since FreeBSD 4.x
when we moved to having the boot loader pass in the root device. Remove
it.

MFC After: 1 week
Sponsored by: Netflix


# 69efe369 31-Mar-2021 Konstantin Belousov <kib@FreeBSD.org>

config(8): remove support for -p

and other equivalent ways to request mcount-based profiling, like
'profile N' in kernel config.

Reviewed by: jhb
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D29529


# 9bcb7418 23-Feb-2020 Warner Losh <imp@FreeBSD.org>

Relax machine directives a little.

Currently, you can have multiple machine directives if they are otherwise
identical. Relax this so that only the machinename part is the same. This allows
one to change the machine arch in a different config file you've included easily.


# 91221f54 16-Apr-2019 Emmanuel Vadot <manu@FreeBSD.org>

config: Only warn if duplicate option/device comes from the same file

This is useful for arm (possibly other arches too) where we want to have
a GENERIC kernel that only include files for the different SoC. Since
multiple SoCs/Board needs the same device we would need to do either :

Include the device in a generic file
Include the device in each file that really needs it

Option 1 works but if someone wants to create a specific kernel config
(which isn't uncommon for embedded system), he will need to add a lots
of nodevice to it.

Option 2 also works but produce a lots of warnings.

Reviewed by: kevans
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D19424


# ac0a7e2a 21-Dec-2018 Kyle Evans <kevans@FreeBSD.org>

config(8): Remove all instances of an option when opting out

Quick follow-up to r342362: options can appear multiple times now, so
clean up all of them as needed. For non-OPTIONS options, this has no effect
since they're already de-duplicated.

MFC after: 1 week
X-MFC-With: r342362


# 993e5c4f 21-Dec-2018 Kyle Evans <kevans@FreeBSD.org>

config(8): Allow duplicate options to be specified

config(8)'s option handling has been written to allow duplicate options; if
the value changes, then the latest value is used and an informative message
is printed to stderr like so:

/usr/src/sys/amd64/conf/TEST: option "VERBOSE_SYSINIT" redefined from 0 to 1

Currently, this is only a possibility for cpu types, MAXUSERS, and
MACHINE_ARCH. Anything else duplicated in a config file will use the first
value set and error about duplicated options on subsequent appearances,
which is arguably unfriendly since one could specify:

include GENERIC
nooptions VERBOSE_SYSINIT
options VERBOSE_SYSINIT

to redefine the value later anyways.

Reported by: mmacy
MFC after: 1 week


# 39d44f7f 05-Jul-2018 Kyle Evans <kevans@FreeBSD.org>

kern_environment: use any provided environments, evict hintmode/envmode

At the moment, hintmode and envmode are used to indicate whether static
hints or static env have been provided in the kernel config(5) and the
static versions are mutually exclusive with loader(8)-provided environment.
hintmode *can* be reconfigured later to pull from the dynamic environment,
thus taking advantage of the loader(8) or post-kmem environment setting.

This changeset fixes both problems at once to move us from a semi-confusing
state to a consistent state: if an environment file, hints file, or
loader(8) environment are provided, we use them in a well-known order of
precedence:

- loader(8) environment
- static environment
- static hints file

Once the dynamic environment is setup this becomes a moot point. The
loader(8) and static environments are merged (respecting the above order of
precedence), and the static hints are merged in on an as-needed basis after
the dynamic environment has been setup.

Hints lookup are changed to respect all of the above. Before the dynamic
environment is setup, lookups use the above-mentioned order and fallback to
the next environment if a matching hint is not found. Once the dynamic
environment is setup, that is used on its own since it captures all of the
above information plus any dynamic kenv settings that came up later in boot.

The following tangentially related changes were made to res_find:

- A hintp cookie is now passed in so that related searches continue using
the chain of environments (or dynamic environment) without relying on
global state
- All three environments will be searched if they actually have valid hints
to use, rather than just choosing the first environment that actually had
a hint and rolling with that only

The hintmode sysctl has been ripped out. static_{env,hints}.disabled are
still honored and will disable their respective environments from being used
for hint lookups and from being merged into the dynamic environment, as
expected.

MFC after: 1 month (maybe)
Differential Revision: https://reviews.freebsd.org/D15953


# e2868734 05-Jul-2018 Kyle Evans <kevans@FreeBSD.org>

Revert r335995 due to accidental changes snuck in


# 8ef58863 05-Jul-2018 Kyle Evans <kevans@FreeBSD.org>

kern_environment: use any provided environments, evict hintmode/envmode

At the moment, hintmode and envmode are used to indicate whether static
hints or static env have been provided in the kernel config(5) and the
static versions are mutually exclusive with loader(8)-provided environment.
hintmode *can* be reconfigured later to pull from the dynamic environment,
thus taking advantage of the loader(8) or post-kmem environment setting.

This changeset fixes both problems at once to move us from a semi-confusing
state to a consistent state: if an environment file, hints file, or
loader(8) environment are provided, we use them in a well-known order of
precedence:

- loader(8) environment
- static environment
- static hints file

Once the dynamic environment is setup this becomes a moot point. The
loader(8) and static environments are merged (respecting the above order of
precedence), and the static hints are merged in on an as-needed basis after
the dynamic environment has been setup.

Hints lookup are changed to respect all of the above. Before the dynamic
environment is setup, lookups use the above-mentioned order and fallback to
the next environment if a matching hint is not found. Once the dynamic
environment is setup, that is used on its own since it captures all of the
above information plus any dynamic kenv settings that came up later in boot.

The following tangentially related changes were made to res_find:

- A hintp cookie is now passed in so that related searches continue using
the chain of environments (or dynamic environment) without relying on
global state
- All three environments will be searched if they actually have valid hints
to use, rather than just choosing the first environment that actually had
a hint and rolling with that only

The hintmode sysctl has been ripped out. static_{env,hints}.disabled are
still honored and will disable their respective environments from being used
for hint lookups and from being merged into the dynamic environment, as
expected.

MFC after: 1 month (maybe)
Differential Revision: https://reviews.freebsd.org/D15953


# 6ffdd5ef 25-Jun-2018 Kyle Evans <kevans@FreeBSD.org>

config(8): Flip the order of concatenation for `hints` and `env`

As previously noted, kernel's processing of these means that the first
appearance of a hint/variable wins. Flipping the order of concatenation
means that later variables override earlier variables, as expected when one
does:

hints x
hints y

Where perhaps x is:

hint.aw_sid.0.disable=1

and y is:

hint.aw_sid.0.disable=0

The expectation would be that a later appearing variable would override an
earlier appearing variable, such as with `device`/`nodevice`, device.hints,
and other similarly structured data files.


# 4edfa908 25-Jun-2018 Kyle Evans <kevans@FreeBSD.org>

config(8): Make 'env' files consistent with other file-accepting options

Previously, only one 'env' file could be specified. Later 'env' directives
would overwrite earlier 'env' directives. This is inconsistent with every
other file-accepting directives which process files in order, including
hints.

A caveat applies to both hints and env that isn't mentioned: they're
concatenated in the order of appearance, so they're not actually applied in
the way one might think by supplying:

hints x
hints y

Hints in x will take precedence over same-name hints in y due to how
the kernel processes them, stopping at the first line that matches the hint
we're searching for. Future work will flip the order of concatenation so
that later files may still properly override earlier files.

In practice, this likely doesn't matter at all due to the nature of the
beast.


# 1aae2365 25-Jun-2018 Kyle Evans <kevans@FreeBSD.org>

config(8): Set envmode if we accept an envvar

X-MFC-With: r335642


# 3b31596d 25-Jun-2018 Kyle Evans <kevans@FreeBSD.org>

config(8): Add `envvar` support

envvar allows adding individual environment variables to the kernel's static
environment without the overhead of pulling in a full file. envvar in a
config looks like:

envvar some_var=5

All envvar-provided variables will be added after the env file is processed,
so envvar keys that exist in the previous env will be overwritten by
whatever value is set here in the kernel configuration directly.

As an aside, envvar lines are intentionally tokenized differently from
basically every other line. We used a named state when ENVVAR is encountered
to gobble up the rest of the line, which will later be cleaned and validated
in post-processing by sanitize_envline. This turns out to be the simplest
and cleanest way to allow the flexibility that kenv does while not
compromising on silly hacks.

Reviewed by: ian (also contributor of sanitize_envline rewrite)
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D15962


# 8a16b7a1 20-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

General further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 3-Clause license.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

Special thanks to Wind River for providing access to "The Duke of
Highlander" tool: an older (2014) run over FreeBSD tree was useful as a
starting point.


# fbbd9655 28-Feb-2017 Warner Losh <imp@FreeBSD.org>

Renumber copyright clause 4

Renumber cluase 4 to 3, per what everybody else did when BSD granted
them permission to remove clause 3. My insistance on keeping the same
numbering for legal reasons is too pedantic, so give up on that point.

Submitted by: Jan Schaumann <jschauma@stevens.edu>
Pull Request: https://github.com/freebsd/freebsd/pull/96


# ca71b908 23-Jan-2015 Will Andrews <will@FreeBSD.org>

Allow lists for "nooption" and "nooptions" keywords.

usr.sbin/config/config.y
According to config(5), the "device", "devices",
"nodevice", "nodevices", "option", "options",
"nooption", and "nooptions" keywords can all take a
comma-separated list of values. However, the yacc code
did not allow lists for "nooption" and "nooptions", only
single values. This commit fixes the yacc code to allow
comma separated values for all the above keywords.

Submitted by: asomers
MFC after: 1 week
Sponsored by: Spectra Logic
MFSpectraBSD: 1095296 on 2014/10/07


# 914e11a7 11-Dec-2010 Joel Dahl <joel@FreeBSD.org>

Remove the advertising clause from UCB copyrighted files in usr.sbin. This
is in accordance with the information provided at
ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# cbb9ebd7 13-Sep-2010 Ed Maste <emaste@FreeBSD.org>

Allow a kernel config to specify a set but empty value via
'makeoptions OPTION=' for consistency with the make commandline.

Previously 'makeoptions WERROR=' would result in a syntax error; now
it produces the same effect as 'makeoptions WERROR'. Both forms now
result in 'WERROR=' in the generated Makefile.


# 5eb01644 15-Jul-2010 Warner Losh <imp@FreeBSD.org>

Put warnings out to stderr rather than stdout.

MFC after: 3 days


# e7edb3e3 13-Apr-2010 Ed Maste <emaste@FreeBSD.org>

MFC r205880 by ru:

- Handle calloc() allocation failures.
- Fixed a comment.
- 2 -> EXIT_FAILURE in some places.
- errx() -> err() where appropriate.

PR: 144644
Submitted by: Garrett Cooper

Also fix endinclude() prototype to avoid compiler warning.


# 53d55e97 30-Mar-2010 Ruslan Ermilov <ru@FreeBSD.org>

- Handle calloc() allocation failures.
- Fixed a comment.
- 2 -> EXIT_FAILURE in some places.
- errx() -> err() where appropriate.

PR: 144644
Submitted by: Garrett Cooper


# fe0506d7 09-Mar-2010 Marcel Moolenaar <marcel@FreeBSD.org>

Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.


# 2880daeb 22-Nov-2008 Andrew Thompson <thompsa@FreeBSD.org>

Allow multiple makeoption lines to be used with the += operator, this permits
the following syntax in the kernel config.

makeoptions MODULES_OVERRIDE=foo
makeoptions MODULES_OVERRIDE+=bar
makeoptions MODULES_OVERRIDE+=baz

Bump config minor version to 600007.


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# eb432404 28-Jul-2008 David E. O'Brien <obrien@FreeBSD.org>

Allow kernel config files to include files other than those in the CWD,
using unquoted paths.


# 91998fc5 24-Dec-2007 Warner Losh <imp@FreeBSD.org>

Spring forward into the late 1970's by following item 5 in the yacc
manual's Appendix D ("Old Features Supported but not Encouraged") in
the Seventh Edition Unix Programmer's Manual (January, 1979) by
retiring the " = {" method of of action specification in favor of a
plain "{". It is no longer necessary for this bootstrap program to
be compatible with 6th Edition systems. Some yaccs in the wild do not
support this old syntax any more, and compatibility with those systems
is more important these days (as there are easily 7 orders of magnitude
more of them than real v6 systems today).

Reviewed by: jhb@ and dds@ (the latter gave the reference).


# c1f4dd93 16-May-2007 Warner Losh <imp@FreeBSD.org>

Fix some problems that affect multiple file inclusion. Bruce found
this bug and submitted these patches to dunstan@. He sent them to me
to test, and I discovered they were needed for the atmel kernel config
files. Since we were playing with them in the terminal room after the
developer's summit today, I thought I'd go ahead and commit them to
allow those folks that now have atmel hardware (thanks Andre) a chance
to try it out w/o my help. Since dunstan@ is asleep right now, risk
stepping on his toes a little by going ahead and committing this
change.

Submitted by: dunstan@, bde@
Tested by: bde@


# 744b947e 12-May-2007 Wojciech A. Koszek <wkoszek@FreeBSD.org>

Improve INCLUDE_CONFIG_FILE support.

This change will let us to have full configuration of a running kernel
available in sysctl:

sysctl -b kern.conftxt

The same configuration is also contained within the kernel image. It can be
obtained with:

config -x <kernelfile>

Current functionality lets you to quickly recover kernel configuration, by
simply redirecting output from commands presented above and starting kernel
build procedure. "include" statements are also honored, which means options
and devices from included files are also included.

Please note that comments from configuration files are not preserved by
default. In order to preserve them, you can use -C flag for config(8). This
will bring configuration file and included files literally; however,
redirection to a file no longer works directly.

This commit was followed by discussion, that took place on freebsd-current@.
For more details, look here:

http://lists.freebsd.org/pipermail/freebsd-current/2007-March/069994.html
http://lists.freebsd.org/pipermail/freebsd-current/2007-May/071844.html

Development of this patch took place in Perforce, hierarchy:

//depot/user/wkoszek/wkoszek_kconftxt/

Support from: freebsd-current@ (links above)
Reviewed by: imp@
Approved by: imp@


# 86418d0c 23-Oct-2006 Warner Losh <imp@FreeBSD.org>

End my resistance to jmg's multiple hints files and bring in support
for having multiple hints files generate a correct hints.c (eg, with
all the specified ones catenated together).


# 55659bb5 23-Oct-2006 Warner Losh <imp@FreeBSD.org>

style(9) pedantry


# f4359e4e 23-Oct-2006 Warner Losh <imp@FreeBSD.org>

Since multiple hints lines do not work, make doing that a fatal error.


# 347a5ee7 20-Jul-2006 Stefan Farfeleder <stefanf@FreeBSD.org>

Remove unused variables.


# 5f17c1e2 06-Jun-2006 Xin LI <delphij@FreeBSD.org>

Use calloc() instead of zeroing the memory our own.


# 8ee64886 30-Dec-2005 Ruslan Ermilov <ru@FreeBSD.org>

- Avoid adding devices multiple times to the device list.
- Avoid adding options multiple times to the option list.

Based on a patch by: Matt Emmerton <matt@gsicomp.on.ca>


# 6646524f 27-Nov-2005 Ruslan Ermilov <ru@FreeBSD.org>

- Allow duplicate "machine" directives with the same arguments.
- Move existing "machine" directives to DEFAULTS.


# d3e15dba 03-Nov-2005 Ruslan Ermilov <ru@FreeBSD.org>

Use the eq() macro for comparing strings (style), and remove a "break"
statement to null the effect of several identical "cpu" directives.


# acd58322 03-Nov-2005 Ruslan Ermilov <ru@FreeBSD.org>

Implement the "nocpu" directive.

Requested by: rwatson


# dfdbf9be 27-Oct-2005 John Baldwin <jhb@FreeBSD.org>

Optionally include a DEFAULTS config file if it is present in the current
directory before the specified config file. This is implemented by
opening DEFAULTS as stdin if it exists, and if so resetting stdin to the
actual config file when DEFAULTS is fully parsed via yywrap(). In short,
this lets us create DEFAULTS kernel configs in /sys/<arch>/conf that can
enable certain options or devices by default and allow users to disable
them via 'nooptions' or 'nodevice' rather than having to create kludge
NO_FOO options.

Requested by: scottl
Reviewed by: scottl


# 51c1297a 01-Apr-2005 Warner Losh <imp@FreeBSD.org>

Allow one to specify a second parameter to the machine line. This
allows us to specify the machine_arch as well as machine. If
specified then a second link will be made, similar to machine, from
$MACHINE_ARCH to $S/$MACHINE_ARCH/include.

This is for ports where MACHINE != MACHINE_ARCH (pc98 today, others in
the future?).

Reviewed by: arch@, nyan@


# 30fdf276 24-Oct-2004 Dag-Erling Smørgrav <des@FreeBSD.org>

Allow multiple devices to be specified on one device / nodevice line.
Also allow "device" / "nodevice" to be spelled "devices" / "nodevices".

MFC after: 2 weeks


# f37a929c 30-Aug-2004 Peter Wemm <peter@FreeBSD.org>

Kill count device support from config. I've changed the last few
remaining consumers to have the count passed as an option. This is
i4b, pc98/wdc, and coda.

Bump configvers.h from 500013 to 600000.

Remove heuristics that tried to parse "device ed5" as 5 units of the ed
device. This broke things like the snd_emu10k1 device, which required
quotes to make it parse right. The no-longer-needed quotes have been
removed from NOTES, GENERIC etc. eg, I've removed the quotes from:
device snd_maestro
device "snd_maestro3"
device snd_mss

I believe everything will still compile and work after this.


# 43a903c0 09-May-2004 Olivier Houchard <cognet@FreeBSD.org>

Add a new "files" directive, which allows to include a files.foo file directly
from a kernel config file.
Bump config version to reflect this change.


# e3937b62 14-Nov-2003 Bruce Evans <bde@FreeBSD.org>

Fixed spurious syntax errors for including files that don't begin with
a SEMICOLON token (a newline or semicolon, or one of these preceded
by a comment and/or whitespace). The input stream was switched too
early and the parser was expecting a SEMICOLON in the included file
instead of after the filename in the include directive.

Submitted by: Stefan Farfeleder <stefan@fafoe.narf.at>
Kept alive by: Adam C. Migus <adam@migus.org>


# 1949e955 05-Jul-2003 Joseph Koshy <jkoshy@FreeBSD.org>

Disallow multiple 'machine' directives in a kernel configuration
file.

Reviewed by: ru, bde


# 82401849 26-Feb-2003 Ruslan Ermilov <ru@FreeBSD.org>

Implemented "nooption" and "nomakeoption" config(8) tokens.
Fixed memory leak in the "nodevice" option implementation.

Use these instead of sed(1) in MD NOTES.

Use a single makefile (sys/conf/makeLINT.mk) to generate
LINT for all architectures. (Previous versions missed
the LINT dependency on Makefile, and i386 version also
missed the dependency on ${NOTES}.)

Fixed bugs in the previous NOTES conversion using the
"nodevice" token and sed(1):

- i386 LINT lost "device pst".

- pc98 LINT lost SC_*, MAXCONS and KBD_DISABLE_KEYMAP_LOAD
options, and got needless DPT_* options.

- Added nooptions PPC_DEBUG, PPC_PROBE_CHIPSET, KBD_INSTALL_CDEV
to sparc64 LINT so that it has a chance to config(8).

This basically returns us to where we were before.


# e20f30f7 21-Feb-2003 Ruslan Ermilov <ru@FreeBSD.org>

Allow for boolean make options (``makeoptions NO_MODULES'').
Fixed the potential bug in rmopt().


# 0b56eafd 14-Feb-2003 Ruslan Ermilov <ru@FreeBSD.org>

Implemented a simple "nodevice" config(8) command that cancels
the effect of the "device" command, and use it to generate the
OLDCARD from GENERIC.

Suggested by: bde


# 292dd8a8 14-Feb-2003 Ruslan Ermilov <ru@FreeBSD.org>

Convert to using <sys/queue.h> macros.


# 76cb0cad 26-Aug-2001 Peter Wemm <peter@FreeBSD.org>

Enable hardwiring of things like tunables from embedded enironments
that do not start from loader(8).


# 5e06480c 11-Jul-2001 Dima Dorfman <dd@FreeBSD.org>

Introduce an "include" directive. It takes one argument, a filename
to be included into this one. This works the same way as #include
does in C; as far as the user is concerned, the included file is
inlined into the current one.

Since config(8) is no longer limited to working on one user-supplied
file, printing just a line number in an error message is not
sufficient. The new global variable yyfile represents the file
currently being parsed, and must be printed as well.

Reviewed by: imp
Obtained from: OpenBSD


# a9973e4a 21-Feb-2001 Peter Wemm <peter@FreeBSD.org>

Futher cleanups. Since we have two options lists, one for proper options
and one for Makefile options, pass in the list head and use a common
newopt() routine.
Fix the 'config vmunix' support glue which was broken for a few minutes.


# 2db1cff1 21-Feb-2001 Peter Wemm <peter@FreeBSD.org>

Collect together a handful of copies of the option generator code into a
single newopt(char *name, char *value) function. Change newdev() to
do the same thing rather than depending on the evil 'cur' device hack.


# 68f4fced 18-Feb-2001 Peter Wemm <peter@FreeBSD.org>

${BDECFLAGS} work. And fix a real error in the process. A "MAXUSERS"
string could have been passed to free(); There are some warnings here
I am not sure how to fix as they are in the lex scanner code, etc.


# 3b10a240 04-Feb-2001 Peter Wemm <peter@FreeBSD.org>

Remove the need to list each and every cpu platform. Config will now
take your word for the 'machine' switch.


# 246449f3 31-Jan-2001 Peter Wemm <peter@FreeBSD.org>

Unwind a bit more cruft - we only have one type of device now.


# 9abfa9d1 21-Jan-2001 Benno Rice <benno@FreeBSD.org>

Add support for configuring PowerPC kernels.

Reviewed by: peter


# b8e39fd1 22-Jan-2001 Peter Wemm <peter@FreeBSD.org>

Clean up some obsolete stuff. config -r has not been needed since around
FreeBSD 3.x or so when the 'make depend' picked up the opt_foo.h files.
Convert warnings into actual errors in the hope that buildkernel users
will pay more attention. :-(


# 10ca19cf 18-Jan-2001 Peter Wemm <peter@FreeBSD.org>

Implement option strings that we can use in #ifdefs (where unavoidable)
as a replacement for the evil #define NFOO. If 'device npx' is in the
static kernel, a synthetic option '#define DEV_NPX 1' will be available
to stick in an opt_xxx.h file. "#if NNPX > 0" can be replaced with
"#ifdef DEV_NPX" and we can get rid of the overloaded meaning of the
device count mechanism.


# 41291607 14-Oct-2000 Poul-Henning Kamp <phk@FreeBSD.org>

Make it possible to specify profiling in the kernel config file.

Do so for LINT.


# 918c9eec 29-Sep-2000 Doug Rabson <dfr@FreeBSD.org>

Add ia64 support.


# 596feda5 25-Aug-2000 Peter Wemm <peter@FreeBSD.org>

If a ${KERNEL}.hints file exists, and no hints are specified explicitly,
then include the hints with a marker indicating that it is a fallback.
The kernel side of this is to come shortly.


# f71c01cc 13-Jun-2000 Peter Wemm <peter@FreeBSD.org>

Borrow phk's axe and apply the next stage of config(8)'s evolution.

Use Warner Losh's "hint" driver to decode ascii strings to fill the
resource table at boot time.

config(8) no longer generates an ioconf.c table - ie: the configuration
no longer has to be compiled into the kernel. You can reconfigure your
isa devices with the likes of this at loader(8) time:
set hint.ed.0.port=0x320

userconfig will be rewritten to use this style interface one day and will
move to /boot/userconfig.4th or something like that.

It is still possible to statically compile in a set of hints into a kernel
if you do not wish to use loader(8). See the "hints" directive in GENERIC
as an example.

All device wiring has been moved out of config(8). There is a set of
helper scripts (see i386/conf/gethints.pl, and the same for alpha and pc98)
that extract the 'at isa? port foo irq bar' from the old files and produces
a hints file. If you install this file as /boot/device.hints (and update
/boot/defaults/loader.conf - You can do a build/install in sys/boot) then
loader will load it automatically for you. You can also compile in the
hints directly with: hints "device.hints" as well.

There are a few things that I'm not too happy with yet. Under this scheme,
things like LINT would no longer be useful as "documentation" of settings.
I have renamed this file to 'NOTES' and stored the example hints strings
in it. However... this is not something that config(8) understands, so
there is a script that extracts the build-specific data from the
documentation file (NOTES) to produce a LINT that can be config'ed and
built. A stack of man4 pages will need updating. :-/

Also, since there is no longer a difference between 'device' and
'pseudo-device' I collapsed the two together, and the resulting 'device'
takes a 'number of units' for devices that still have it statically
allocated. eg: 'device fe 4' will compile the fe driver with NFE set
to 4. You can then set hints for 4 units (0 - 3). Also note that
'device fe0' will be interpreted as "zero units of 'fe'" which would be
bad, so there is a config warning for this. This is only needed for
old drivers that still have static limits on numbers of units.
All the statically limited drivers that I could find were marked.

Please exercise EXTREME CAUTION when transitioning!

Moral support by: phk, msmith, dfr, asmodai, imp, and others


# ac0711e1 29-Jan-2000 Peter Wemm <peter@FreeBSD.org>

Mark the 'conflicts' keyword as obsolete, and don't generate (unused)
resource table entries for it.


# 8ef328cf 23-Jan-2000 Peter Wemm <peter@FreeBSD.org>

Remove the cam-specific device wiring code. This was a duplicate of
the data in the resource tables, and cam is getting it directly now.


# 218f95f3 22-Jan-2000 Peter Wemm <peter@FreeBSD.org>

Clean up something in config(8) that has annoyed me for ages. Remove
the need to specify the unit number of unwired devices. ie: instead
of saying "device fxp0" we can say "device fxp" which is much closer
to what it actually means. The former (fxp0) implied something about
reserving the 0th unit, but it does not and never did - it was a
figment of config(8)'s imagination that we had to work around..
"device fxp0" simply means "compile in the fxp device driver", so we
may as well just write it as "device fxp" which is closer to what it
really means.

Doing this also saves us from filling up the ioconf.c tables with
meaningless entries.


# 94142695 08-Jan-2000 Peter Wemm <peter@FreeBSD.org>

Apply the axe to some more cruft in config(8). In particular:
- redo the "at" configuration system so that it just syntax checks
to make sure the device you're configuring something "at" appears to
exist. Nuke a bunch of complexity that was responsible for creating
"clones" of wildcard devices and some wierd stuff in a few places
including the scbus config tables etc.
- merge "controller" and "device" - there is no difference as far as
the kernel is concernend, it's just something there to make life
difficult for config file writers. "controller" is now an alias for
"device".
- emit full scsi config into the resource tables. We could trivially
change cam to use that rather than it's own "special" table for wiring
and static configuration. ATA could use this too for static wiring.
- try and emulate some of the quirks of the old system where it made
sense. Some were too strange though and I'd be very suprised if they
were features and not outright bugs. nexus handling is still strange.
One thing in particular is that some of the wierd entries in the
newbus devtables is now gone as it was a quirk side effect of the
wildcard/question-mark cloning above.

GENERIC and LINT still build etc.


# 6c54a82e 09-Nov-1999 Peter Wemm <peter@FreeBSD.org>

Re-support "tape" as an alias for device and clean up a bit more cruft
left over from the original system (d_dk was for preassigned iostat unit
numbers for disks)


# c1454d67 30-Oct-1999 Marcel Moolenaar <marcel@FreeBSD.org>

Add option "-d destdir" which instructs config to use another output
directory than the default one. If the option is not given, then the
output of config is exactly as before. Only when an alternate output
directory has been specified will config modify its behavior.

Additional changed:
o Remove the now conflicting and unused NODEV define. It
conflicts with NODEV in sys/param.h.
o Rename the now conflicting MACHINE token to ARCH. It
conflicts with MACHINE in sys/param.h.
o Fix some easy style bugs.
o Fix some easy grammar bugs in the manpage.

Approved by: peter, archie


# 1c56dc36 10-Oct-1999 Peter Wemm <peter@FreeBSD.org>

Further cleanup. Also remove the following unused or defunct tokens:
and, bio, cam, master, minor, net, priority, sequential, size, slave, trace


# 1b00e6b5 08-Oct-1999 Peter Wemm <peter@FreeBSD.org>

Zap references to 'major' token, it's not used.
Zap references to devices.i386 - it's not used. (neither is devices.pc98
or devices.alpha)


# ef354ff7 09-May-1999 Peter Wemm <peter@FreeBSD.org>

Understand 'config kernelname' and pretend it was a
'makeoptions KERNEL=kernelname'. Warn about any trailing stuff as it's
not handled here. This is a simple bandaid, hopefully to head off some
complaints from certain people.


# 3e624da0 09-May-1999 Peter Wemm <peter@FreeBSD.org>

Put on my viking helmet from the closet, and get out the war axe and
"retire" some more stuff.


# bb4d5614 09-May-1999 Poul-Henning Kamp <phk@FreeBSD.org>

config(8) lobotomy, please see commit msg in sys.

(I have no idea why cvs didn't take these changes before.)


# e07fcb3e 26-Apr-1999 Luoqi Chen <luoqi@FreeBSD.org>

Make options like NO_F00F_HACK work (with context sensitive lexical rules).


# 96217b0f 24-Apr-1999 Peter Wemm <peter@FreeBSD.org>

More cleanups, tweaks and features.
- make this work: options FOO123=456 *without quotes*
- grumble (but accept) vector xxxintr, and tty/net/bio/cam flags.
- complain if a device is specified twice (eg: 2 x psm0)
- don't require quotes around: port IO_COM2
- recognize negative numbers. (ie: options CAM_DEBUG_UNIT=-1)
- GC some more unused stuff (we don't have composite disks from config(8)).
- various other nits (snprintf paranoia etc)


# e6fbbbe4 18-Apr-1999 Peter Wemm <peter@FreeBSD.org>

Further cleanups. i386_ioconf.c and alpha_ioconf.c were essentially the
same and were merged into a single newbus_ioconf.c. CG'd some more unused
code.


# 188334f6 17-Apr-1999 Peter Wemm <peter@FreeBSD.org>

Get out the blow torch and hack away all the unused stuff. Note that
I zapped the MACHINE_MIPS stuff, it isn't likely to be useful apart from
recognition of the machine name. It would be reasonable to expect new
ports would look something like the alpha/i386 from a config perspective.


# 2c431191 16-Apr-1999 Peter Wemm <peter@FreeBSD.org>

Corresponding minimal changes for kernel configuration after new-bus
commit.


# e05da2e9 15-Apr-1999 Bruce Evans <bde@FreeBSD.org>

Made booting with -a work for all configurations. Previously it
only worked for configurations with "swap on generic".

usr.sbin/config/config.y:
- ignore all "swap [on] device ...' specifications except for
warning about them. They haven't done anything related to swap
for almost 4 years, and were previously silently ignored,
except for "swap on generic" which stopped swap${KERNEL}.c
from being generated. Code to support swapping is now deader
than before.

usr.sbin/config/mkswapconf.c:
- don't generate a dummy setconf() function in swap${KERNEL}.c.

sys/i386/conf/files.i386:
- swapgeneric.c is now standard. It should be merged into autoconf.c
so that it doesn't conflict with swap${KERNEL}.c for kernels named
"generic".

sys/i386/i386/autoconf.c:
- don't call setroot() for mfs roots. Since setroot() doesn't do anything
harmful, this was just a waste of time, except possibly for booting with
-a it may have helped prevent an undesireable call to setconf() by
finding a bogus rootdev.
- honor -a for ffs roots. -a now overrides all other ways of specifying
the root device. Previously, -r had precedence over -a, and the -a
handling was usually a no-op.
- don't honor -a for non-ffs roots, since it would currently just get in
the way of a clean panic.

sys/i386/i386/swapgeneric.c:
- don't declare things that are now always declared in swap${KERNEL}.c.
Don't decide things that are now decided in autoconf.c. Code to
support the "generic" case is now dead instead of useless.


# f59d2e02 11-Jul-1998 Bruce Evans <bde@FreeBSD.org>

Fixed off-by-1 errors in option line numbers. yyline is 0-based, but
was used as if it is 1-based. This happened to give the correct result
for options without values because of a compensating error in newline
lexing. Didn't fix the latter, so line numbers in yyerror() may still
be 1 too high in some cases.


# 4d40ec2f 09-Jun-1998 Doug Rabson <dfr@FreeBSD.org>

Add (mostly stub) alpha support. Incidentally, it doesn't build on stable
unless I manually construct y.tab.h. Is this normal?


# c090df39 01-May-1998 KATO Takenori <kato@FreeBSD.org>

Support PC-98 machine.


# a0eea1d6 01-Apr-1998 Eivind Eklund <eivind@FreeBSD.org>

Scaffolding for High Availability code. The actual code will probably
come tomorrow.

Submitted by: Simon Shapiro <shimon@simon-shapiro.org>


# b272cc1e 17-Feb-1998 Eivind Eklund <eivind@FreeBSD.org>

Make '-n' the default, and introduce a new flag '-r' to get old
behaviour. Also indicate which option(s) are unknown if there are any
old-style options.


# 93384faa 21-Sep-1997 Justin T. Gibbs <gibbs@FreeBSD.org>

Add isa_devtab_cam.


# bc8600f6 16-Sep-1997 Philippe Charnier <charnier@FreeBSD.org>

Police from style.9 and Bruce.


# d5831691 15-Sep-1997 Philippe Charnier <charnier@FreeBSD.org>

Use err(3), add usage(). -Wall clean.


# 659d2a20 27-Mar-1997 Andrey A. Chernov <ache@FreeBSD.org>

Remove support for "port none" and "port auto", it gains nothing,
non-standard and not used. "port auto" is equal to "port?" or missing "port"
keyword now. "port none" is really probe routine task (return -1 for
no ports).


# 1d29927c 26-Mar-1997 Andrey A. Chernov <ache@FreeBSD.org>

Add #define's for port "none" and "auto"
Now port ommiting is equal to port "none" not to port 0


# 5bd7b809 14-Dec-1996 Joerg Wunsch <joerg@FreeBSD.org>

Part #2 of the config cleanup. More aggressive, replaced an NIH
version of strdup() by a macro, killed many calls to strdup(), thus
potentially wasting less malloc'ed space (their args were never be
free()ed desptie despite of being malloc'ed). Probably still a huge
memory leak at all... Also killed two totally useless variables.

I've tested it as i could, but wouldn't be surprised if unexpected
problems showed up. So watch out this space!


# f0b48d98 14-Dec-1996 Joerg Wunsch <joerg@FreeBSD.org>

Round #1 of cleaning up the config(8) mess. This is only the more
conservative part of the tidyup, like fixing potential buffer overflow
conditions. It is believed to be safe to go into 2.2.

Pointed out by: lozenko@cc.acnit.ac.ru (Evgeny A. Lozenko)


# 227941d5 13-Apr-1996 Bruce Evans <bde@FreeBSD.org>

Implemented a new keyword `disable'. This should be useful for controlling
dangerous drivers in GENERIC.

Removed non-comments on #endifs in config.y.

Improved output formatting in mkioconf.c.


# 6d41b96f 11-Dec-1995 Peter Wemm <peter@FreeBSD.org>

Implement support for conf/options and i386/conf/options.i386
Note that this code is dormant unless the options files exist.
Also, parsing of quoted options in the config files is improved.

What this allows, is all the options in LINT to be specified to be
configured as #defines in a file rather than on the CC command line at
kernel build time. This means that 'make depend' will catch dependencies
on actual *options*, meaning that you can run 'config' and 'make depend'
in complete safety WITHOUT removing the compile directory each time.

Unfortunately, this requires a pass over the source to get the individual
files to #include the new .h files that would be generated by config.
This has a small compile time penalty (appears up to about 2% slower)
from a "fresh" build. Of course, you should not be needing to do complete
rebuilds very often once this was completed, so it would be an overall
win for most people.

Since this code is dormant and we've got a lot of other things happening
on the kernel tree at the moment (prototypes, devfs, static declarations
etc) I am not planning on doing any changes to activate this feature just
yet.


# f7ad28d7 18-Jul-1995 Justin T. Gibbs <gibbs@FreeBSD.org>

Add missing quote to yyerror call.


# 31acd246 17-Jul-1995 Justin T. Gibbs <gibbs@FreeBSD.org>

Allow the specification of the controller bus when wiring down scsi buses.
This is performed by using a line similar to:

controller scbus0 at ahc0 bus 1

to wire scbus0 to the second bus on an adaptec 2742T controller.

Reviewed by: Peter Dufault(dufault@hda.com), Rod Grimes(rgrimes@FreeBSD.org)


# 975f4abc 29-Jun-1995 David Greenman <dg@FreeBSD.org>

Killed TIMEZONE, DST, and HZ keywords. They have generated a config error
for more than a year now. They've been replaced with userland methods for
changing (see adjkerntz).


# 5e7d9e89 12-May-1995 Garrett Wollman <wollman@FreeBSD.org>

Don't automatically default dumps to be on a swap device; if the user
wants dumps, he can either configure it explicitly (`dumps on' whatever) or
use the dumpon(8) utility.


# babb4e92 10-May-1995 Jordan K. Hubbard <jkh@FreeBSD.org>

Add a new `conflicts' flag for telling when a device is in conflict with
others. The flag can be put in descriptive locations, e.g.:

device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr
or
device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr

But is nonetheless boolean only. You can't turn conflict checking off for
only a given type of conflict. I didn't deem it worth the trouble at this
stage, and it's far better than the ALLOW_CONFLICT_* that preceeded it.


# c30c84ed 01-Mar-1995 Peter Dufault <dufault@FreeBSD.org>

Added configuration for SCSI devices wired in place. The documentation
is in "man 4 scsi".


# da12c6d2 15-Feb-1995 Bruce Evans <bde@FreeBSD.org>

config.y:
Support slice numbers in device names. The syntax is `<driver name>
[<unit number>] ['s' <slice number>] [<partition letter>]'. Only
`['s' <slice number>]' is new here. The slice number defaults to 0
so that there is no change in the output from config if this new
feature is not used.

Replace some magic disk numbers by `dk' slice and label macros.

mkswapconf.c:
Improve the output formatting:
Generate <> style includes.
Print minor numbers in hex so that slice numbers are easy to see and edit.
Print the rootdev and dumpdev names in comments like the swapdev names.


# 8a7c811a 23-Nov-1994 Garrett Wollman <wollman@FreeBSD.org>

Don't core on ``root on qq0 and fx0 and yy0'' specifications; just
take the first one and ignore all the rest, giving a warning message.
Fixes PR #3.


# 021ce2d6 08-Aug-1994 Garrett Wollman <wollman@FreeBSD.org>

Disallow timezone specification, but still allow it to be present
if it is zero (so that we can parse old config files).


# 4eaaddb7 26-May-1994 Rodney W. Grimes <rgrimes@FreeBSD.org>

Upgrade config to be compatible with our i386 port, pull in 95% of the
changes that have been made in FreeBSD 1.x, except for possibly the nfs
diskless support this is a completed config.


# dea673e9 25-May-1994 Rodney W. Grimes <rgrimes@FreeBSD.org>

BSD 4.4 Lite usr.sbin Sources