Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Feb 2011 21:04:12 +0100
From:      Bernhard Schmidt <bschmidt@freebsd.org>
To:        "Paul B. Mahol" <onemda@gmail.com>
Cc:        freebsd-current@freebsd.org
Subject:   Re: cardbus and kldunload issue
Message-ID:  <201102282104.12427.bschmidt@freebsd.org>
In-Reply-To: <AANLkTikStZB9SsEorN-ivMC=Z90vgW=pFVykjw81v89y@mail.gmail.com>
References:  <201102261625.41522.bschmidt@freebsd.org> <AANLkTikStZB9SsEorN-ivMC=Z90vgW=pFVykjw81v89y@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 26 February 2011 19:36:14 Paul B. Mahol wrote:
> On Sat, Feb 26, 2011 at 4:25 PM, Bernhard Schmidt <bschmidt@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@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@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@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.

I tried playing around with various MODULE_DEPEND() values, without any
differences.

-- 
Bernhard



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102282104.12427.bschmidt>