Subject: Re: proposed mods to config(8) and the kernel build process
To: Luke Mewburn <lukem@wasabisystems.com>
From: Matthew Jacob <mjacob@feral.com>
List: tech-kern
Date: 12/11/2000 12:11:35
> Is there any reason not to provide this functionality until a separate
> kernel configuration mechanism exists? (which hasn't even been
> discussed let alone had an implementation started or completed :)

No, of course not. I'm just pointing out that before one adds a feature one
should step back and say "Will we want this in two years?".

> 
> 	``oh no, don't do <foo>, we'll have feature <bar> to do that better''
> 
> 	two years go by, no sign of <bar>, we've missed out on being
> 	slightly better for our users because there was no <foo>
> 	either :-|
> 
> Can someone point me in the direction of docco or what part of FreeBSD
> does this? If we do decide we like the functionality and their scheme
> is reasonable, we probably should look at using it.

I think I mentioned this at BSDcon- there was some talk of parts of this as
part of the kernel loader talk- I don't know how detailed it is and how well
documented other than in source.

But the basic gist is that in committing to a (in FreeBSD's implementation,
froth) comman loader as your second stage bootstrap you can then provide a
consistent boot interface to all platforms. The fallout of this is that things
like ports and irqs for configurable devices like ISA devices are now a set of
hints sitting in a file off of /boot (e.g., see below) that can be overridden.

This makes the notion of a stored config file not as useful or desirable as it
used to be. Possibly compilation options still, but if the intent is to
ultimately have it all be knobs, why go to the effort.

This may not be desirable (or practical) for NetBSD. I was just mentioning it
so that before the establishment of an invasive feature, even a minor one,
that some thought was applied.

-matt

# $FreeBSD: src/sys/i386/conf/GENERIC.hints,v 1.3 2000/07/19 16:32:38 imp Exp $
hint.fdc.0.at="isa"
hint.fdc.0.port="0x3F0"
hint.fdc.0.irq="6"
hint.fdc.0.drq="2"
hint.fd.0.at="fdc0"
hint.fd.0.drive="0"
hint.fd.1.at="fdc0"
hint.fd.1.drive="1"
hint.ata.0.at="isa"
hint.ata.0.port="0x1F0"
hint.ata.0.irq="14"
hint.ata.1.at="isa"
hint.ata.1.port="0x170"
hint.ata.1.irq="15"
hint.adv.0.at="isa"
hint.bt.0.at="isa"
hint.aha.0.at="isa"
hint.aic.0.at="isa"
hint.atkbdc.0.at="isa"
hint.atkbdc.0.port="0x060"
hint.atkbd.0.at="atkbdc"
hint.atkbd.0.irq="1"
hint.atkbd.0.flags="0x1"
hint.psm.0.at="atkbdc"
hint.psm.0.irq="12"
hint.vga.0.at="isa"
hint.sc.0.at="isa"
hint.sc.0.flags="0x100"
hint.vt.0.at="isa"
hint.npx.0.at="nexus"
hint.npx.0.port="0x0F0"
hint.npx.0.irq="13"
hint.apm.0.at="nexus"
hint.apm.0.disabled="1"
hint.apm.0.flags="0x20"
hint.pcic.0.at="isa"
# hint.pcic.0.irq="10"	# Default to polling
hint.pcic.0.port="0x3e0"
hint.pcic.0.maddr="0xd0000"
hint.pcic.1.at="isa"
hint.pcic.1.irq="11"
hint.pcic.1.port="0x3e2"
hint.pcic.1.maddr="0xd4000"
hint.pcic.1.disabled="1"
hint.sio.0.at="isa"
hint.sio.0.port="0x3F8"
hint.sio.0.flags="0x10"
hint.sio.0.irq="4"
hint.sio.1.at="isa"
hint.sio.1.port="0x2F8"
hint.sio.1.irq="3"
hint.sio.2.at="isa"
hint.sio.2.disabled="1"
hint.sio.2.port="0x3E8"
hint.sio.2.irq="5"
hint.sio.3.at="isa"
hint.sio.3.disabled="1"
hint.sio.3.port="0x2E8"
hint.sio.3.irq="9"
hint.ppc.0.at="isa"
hint.ppc.0.irq="7"
hint.ed.0.at="isa"
hint.ed.0.port="0x280"
hint.ed.0.irq="10"
hint.ed.0.maddr="0xd8000"
hint.cs.0.at="isa"
hint.cs.0.port="0x300"
hint.sn.0.at="isa"
hint.sn.0.port="0x300"
hint.sn.0.irq="10"
hint.ie.0.at="isa"
hint.ie.0.port="0x300"
hint.ie.0.irq="10"
hint.ie.0.maddr="0xd0000"
hint.fe.0.at="isa"
hint.fe.0.port="0x300"
hint.le.0.at="isa"
hint.le.0.port="0x300"
hint.le.0.irq="5"
hint.le.0.maddr="0xd0000"
hint.lnc.0.at="isa"
hint.lnc.0.port="0x280"
hint.lnc.0.irq="10"
hint.lnc.0.drq="0"