Date: Wed, 22 Aug 2007 22:25:16 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: cnst@freebsd.org Cc: freebsd-hackers@freebsd.org Subject: Re: device hints for isa modules Message-ID: <20070822.222516.-1749707994.imp@bsdimp.com> In-Reply-To: <46CB625D.7040505@FreeBSD.org> References: <46CB625D.7040505@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <46CB625D.7040505@FreeBSD.org>
"Constantine A. Murenin" <cnst@freebsd.org> writes:
: Dear freebsd-hackers@,
:
: Is there a way to statically compile device hints into an isa(4) module?
:
: From what it looks, there is no place in the source tree to put the
: hints for isa(4) modules -- you either have to place default hints into
: GENERIC.hints, implying that the driver will be compiled into a GENERIC
: kernel, or place it into NOTES. In the former case, having a module is
: then useless; in the latter, the module simply ain't going to work.
No. It isn't useless. If you have a driver listed in GENERIC.hints,
but not GENERIC, then there's no driver that will be attached and the
hint will effectively be ignored. If you later load a driver of the
proper name, it will use the hints. We do this all the time at work
so that we can load our drivers and have them probe/attach for the
custom ISA hardware we produce (it doesn't do ISA PNP).
You actually need to place them in both places.
: This is complicated further by the fact that changing isa hints after
: the boot has no effect on isa driver modules that use standard methods
: of resource acquisition. (Specifically, notice that kenv(1) won't give
: you an error message when you try to create a new hint or update an
: existing one, and the new or updated hint will in fact be visible back
: from kenv(1), but it won't have any effect on bus_alloc_resource(9)
: calls, thus modules depending on isa hints will fail to find their
: hardware.)
This is actually a bug. It would be desirable to place hints into the
hint space after boot.
: I'm specifically looking for a solution to a usable module for my lm(4)
: driver in soc2007/cnst-sensors perforce branch...
Just add them to GENERIC.hints. Then if/when your driver is loaded,
it will properly probe/attach. If it is never loaded, then there's no
real harm.
I have a kernel without sio. Yet I have the following hints:
hint.sio.0.at="isa"
hint.sio.0.flags="0x10"
hint.sio.0.irq="4"
hint.sio.0.port="0x3F8"
hint.sio.1.at="isa"
hint.sio.1.irq="3"
hint.sio.1.port="0x2F8"
hint.sio.2.at="isa"
hint.sio.2.disabled="1"
hint.sio.2.irq="5"
hint.sio.2.port="0x3E8"
hint.sio.3.at="isa"
hint.sio.3.disabled="1"
hint.sio.3.irq="9"
hint.sio.3.port="0x2E8"
The only side effect you'll see is with devinfo -v:
nexus0
acpi0
pcib0 pnpinfo _HID=PNP0A03 _UID=1 at handle=\_SB_.PCI0
pci0
isab0 pnpinfo vendor=0x1002 device=0x4377 subvendor=0x0000 subdevice=0x0000 class=0x060100 at slot=20 function=3 handle=\_SB_.PCI0.LPC0
isa0
sio0
sio1
sio2
sio3
devinfo doesn't show it. kldstat on my box doesn't list any sio
devices. When I load sio.ko, sio0-sio3 do not attach because I don't
have any real COMx devices.
This is a little confusing, but has proven to be fairly useful in
practice. It would be a little nicer if devinfo -v reported if the
device was attached or not...
Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070822.222516.-1749707994.imp>
