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

John Baldwin jhb at freebsd.org
Tue May 24 11:55:40 UTC 2011


On Monday, May 23, 2011 1:22:50 pm Philip Soeberg wrote:
> 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?

Short of dynamically patching ixgbe_probe()'s return value at runtime?
No, no ideas. :(

-- 
John Baldwin


More information about the freebsd-hackers mailing list