cardbus and kldunload issue

From: Bernhard Schmidt <bschmidt_at_freebsd.org>
Date: Sat, 26 Feb 2011 16:25:41 +0100
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.

-- 
Bernhard
Received on Sat Feb 26 2011 - 14:59:42 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:11 UTC