device_detach() on a device used by ixgbe driver (FreeBSD 7-STABLE through to 9-CURRENT)

Philip Soeberg philip-freebsd1 at soeberg.net
Mon May 23 17:22:54 UTC 2011


On 23-05-2011 16:32, John Baldwin wrote:
>> I assume this (transcanding from FreeBSD 7.0-STABLE through to FreeBSD
>> 9-CURRENT) is in error? I would expect sys/dev/ixgbe/ixgbe.c's probe()
>> function to return BUS_PROBE_DEFAULT, which is the "Base OS default
>> driver"..
>
> Yes, that is true.
>
>> If this is true, then we should probably also update
>> sys/kern/device_if.m's description of the probe() method as to reflect
>> the BUS_PROBE_* return values in a clearer way than is currently described.
>> Do you want me to provide a patch? (it's really a one liner for ixgbe.c
>> and a couple of alterations to the device_if.m, if need be)
>
> device_if.m was probably just never updated from when BUS_PROBE_* were added.
> Updating it would be a good thing.
I'll submit a patch tomorrow with an updated description and a fix for 
the ixgbe then..
>
>> I would also expect the ixgbe.c driver to do a quick resource_disabled()
>> in it's attach() function, so that we can disable specific adapters
>> through kenv hint.ix.0.disabled=1..
 >
> I think ixgbe has to be fixed to use BUS_PROBE_DEFAULT.  Very few drivers
> should use '0' for their probe return value.
>

but since it does return zero, do you have any idea how I can force it 
to detach allowing me in instead? I've been stabbing high and low at it 
for hours now, and nothing seem to get me anywhere.. short of hacking 
the ixgbe_attach() function address, I can't seem to figure out a way to 
kill the systems way of re-attaching the device to the ixgbe just after 
I've detached it.

rather frustrating.. It's like a catch-22 problem..

and worse, the ixgbe driver is per default included as a static module, 
so loader.conf "ix_load=no" will have no effect (unless I'm mistaken?)

I'm running out of ideas as to how I can attach myself to that Intel 
device instead of the ixgbe when it is linked static and with a return 
of zero in it's probe().. And I'm also out of ideas as to how to disable 
that damn module altogether, short of recompiling the kernel..

any ideas?



More information about the freebsd-hackers mailing list