cardbus and kldunload issue
Paul B. Mahol
onemda at gmail.com
Sat Feb 26 19:05:46 UTC 2011
On Sat, Feb 26, 2011 at 4:25 PM, Bernhard Schmidt <bschmidt at freebsd.org> wrote:
> Hi,
>
> while working on a wireless driver for a Cardbus card I stumbled over
> an issue which bugs me quite a bit.
>
> The device:
>
> % none3 at pci0:22:0:0: class=0x028000 card=0x107f1043 chip=0x02011814 rev=0x01 hdr=0x00
>
> Loading the module attaches nicely to the device:
>
> # kldload if_ral
> % ral0: <Ralink Technology RT2560> mem 0xf4800000-0xf4801fff irq 16 at device 0.0 on cardbus0
> % ral0: MAC/BBP RT2560 (rev 0x04), RF RT2525
> % ral0: [ITHREAD]
> # pciconf -l
> % ral0 at pci0:22:0:0: class=0x028000 card=0x107f1043 chip=0x02011814 rev=0x01 hdr=0x00
>
> Though, kldunload doesn't detach the device, it doesn't even call the
> module's detach function.
>
> # kldunload if_ral
> # pciconf -l
> % ral0 at pci0:22:0:0: class=0x028000 card=0x107f1043 chip=0x02011814 rev=0x01 hdr=0x00
> # kldstat
> % Id Refs Address Size Name
> % 1 27 0xffffffff80100000 e640a0 kernel
> # ifconfig ral0
> % ral0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
> % ether 00:0e:a6:a6:1b:70
> % media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
> % status: no carrier
>
> And of course trying to use the device at that point will result in
> instant panics. Playing around a bit I've noticed that changing the bus
> name in:
>
> % DRIVER_MODULE(ral, pci, ral_pci_driver, ral_devclass, 0, 0);
>
> from pci to cardbus makes a big difference. On module unload the detach
> function is then called as expected. So, question is, are we doing some
> too strict checks on module unload while matching the bus? Or is this
> expected behavior and the drivers are supposed to indiciated that they
> support both pci and cardbus? I don't see the later anywhere in tree.
There is MODULE_DEPEND(), if_ndis depends on pccard, pci and usb
modules and use both MODULE_DEPEND() and DRIVER_MODULE() with them.
If I'm not mistaken pccard depends on cardbus.
More information about the freebsd-current
mailing list