Date: 07 Mar 2005 20:23:19 +0100 From: Bengt Ahlgren <bengta@sics.se> To: freebsd-mobile@freebsd.org Subject: pccard0: Card has no functions! OR PCI memory range allocation problem? Message-ID: <uh7ll8zl0pk.fsf@P142.sics.se>
next in thread | raw e-mail | index | archive | help
I don't know where to best start explaining this problem, but I'll start with the symptoms. These are the same for 5.3-R and 5.4-PRERELEASE installed two days ago on an IBM TP X40. After kldunload:ing if_ath, no pccard is recognised. For any pccard (16-bit - cardbus is not affected!) it just says: pccard0: Card has no functions! The system has an Atheros mini-PCI wireless card. (If my theory is right, the particular card is irrelevant. I got the same symptoms with if_ipw earlier when I had an Intel Wireless PRO 2100 in the same box.) I have no device driver for the card compiled into the kernel. At boot the kernel says: pcib1: device (null) requested decoded memory range 0xd0200000-0xd020ffff When the if_ath driver is kldload:ed: ath0: <Atheros 5212> mem 0xd0200000-0xd020ffff irq 11 at device 2.0 on pci2 At this point (and also before loading if_ath), inserting a pccard works: pcib1: device pccard0 requested decoded memory range 0xd0200000-0xdfffffff cis mem map 0xd63ab000 (resource: 0xd0240000) pccard0: check_cis_quirks pccard0: CIS version PC Card Standard 5.0 pccard0: CIS info: Lucent Technologies, WaveLAN/IEEE, Version 01.01, (and so on...) After unloading the if_ath driver, it says the following instead: pcib1: device pccard0 requested decoded memory range 0xd0200000-0xdfffffff cis mem map 0xd63ab000 (resource: 0xd0200000) The "(resource: 0xd0200000)" now points to where the mini-PCI card is! The pccard driver contiues with: pccard0: CIS tuple chain: CISTPL_NONE 00 (the above two lines are repeated in total nine times... then:) TOO MANY CIS_NONE CIS is too long -- truncating CISTPL_END ff cis mem map d63ab000 CISTPL_LINKTARGET expected, code 00 observed pccard0: check_cis_quirks pccard0: Card has no functions! cbb0: PC Card card activation failed If I load the if_ath driver again, pccards are again recognised properly. Now to the bottom line: where is the bug? 1) In the if_ath driver module which deallocated a PCI memory range which it didn't allocate (the kernel did at boot). 2) In the PCI memory allocation/deallocation routines which allowed the loadable driver to deallocate a PCI memory range that was allocated at boot. 3) In cbb/pccard which perhaps shouldn't be allowed to use the memory range? 4) Or is the answer that I should not unload drivers for fixed hardware? Bengt
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?uh7ll8zl0pk.fsf>