Limiting the number of probed interfaces?
Peter Jeremy
peterjeremy at optushome.com.au
Thu May 3 21:49:53 UTC 2007
On 2007-May-03 15:30:48 +0200, "Patrick M. Hausen" <hausen at punkt.de> wrote:
>Hello!
>
>On Thu, May 03, 2007 at 08:49:40AM -0400, Michael Proto wrote:
>
>> > Is there a way to limit the number of probed entities for
>> > a certain pci device class to, say, 1 in my case?
>> > I'd like to use bge0 for FreeBSD but the kernel should leave
>> > everything else that might be a bge interface alone.
>>
>> Would the following in /boot/device.hints achieve what you are after?
>>
>> hint.bge.1.disabled="1"
>> hint.bge.2.disabled="1"
>
>That would be the feature I am seeking. Unfortunately this
>had no effect. I already tried. The latest statement I was able
>to find via Google claimed, that for FBSD 5.2 "you cannot disable
>PCI devices other than completely removing the driver".
>I don't know if this has changed since then.
Unfortunately, the 'disabled' hint is not handled generically. There
is support for disabling ISA devices and a handful of other devices
but bge is not amongst them.
Possibly the following (untested) code would work but I have a feeling
it would run afoul of dynamic device numbering. (It seems too simple
a solution to have not been implemented if it would work).
Index: /usr/src/sys/kern/subr_bus.c
===================================================================
RCS file: /usr/ncvs/src/sys/kern/subr_bus.c,v
retrieving revision 1.184.2.5
diff -u -r1.184.2.5 subr_bus.c
--- /usr/src/sys/kern/subr_bus.c 28 Dec 2006 22:13:26 -0000 1.184.2.5
+++ /usr/src/sys/kern/subr_bus.c 3 May 2007 21:45:49 -0000
@@ -1722,7 +1722,10 @@
resource_int_value(dl->driver->name, child->unit,
"flags", &child->devflags);
- result = DEVICE_PROBE(child);
+ if (resource_disabled(dl->driver->name, child->unit))
+ result = ENXIO;
+ else
+ result = DEVICE_PROBE(child);
/* Reset flags and devclass before the next probe. */
child->devflags = 0;
@@ -1805,7 +1808,8 @@
* A bit bogus. Call the probe method again to make
* sure that we have the right description.
*/
- DEVICE_PROBE(child);
+ if (!resource_disabled(dl->driver->name, child->unit))
+ DEVICE_PROBE(child);
#if 0
child->flags |= DF_REBID;
#endif
--
Peter Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20070503/f50de136/attachment.pgp
More information about the freebsd-stable
mailing list