ThinkPad 600 - CardBus inoperative

Andreas Wetzel mickey242 at gmx.net
Fri Feb 22 13:56:58 UTC 2008


Greg Troxel wrote:
> I have dealt with this on NetBSD, and am posting here in the hope my
> experiences are helpful.  Thinkpad 600 (2645-41U) and 600E (2645-4AU)
> have different and seemingly indepdenent cbb problems, and it seems 600X
> might be like 600E.  This is all from memory, so take with a grain of
> salt.
> 
> 600: had uninitialized irq for cbb (-1).  pcic would attach ok if cbb
> not in kernel.  With PCI_INTR_FIXUP, this would get whacked to 11 and
> then it works.  I'm typing this with packets being routed through a 600
> with two cbb ethernets (NetBSD 4 GENERIC_LAPTOP).
> 
> 600E: If one mapped cardbus space at 1 GB, cardbus cards wouldn't work.
> Mapping at 0.5 GB worked.
> 
> Ruslan recommended hw.cbb.start_memory=0xd8000, which is also below 1 GB
> and very likely above physical memory (my 600 has 96 and 600E 192).
> 
> So, I suspect you have an IRQ routing problem, not a memory space
> problem, unless you were speaking loosely about a "600".

My ThinkPad 600 is a model 2645-450 with a total of 288 MB RAM installed
(2 * 128MB + 32 MB internal memory). I know the 600 has several IRQ related
issues and BIOS IRQ settings can only be modified by means of the DOS PS2
program, which I already used to disable all unnecessary devices so that
IRQs 7, 10 and 11 are exclusively available to PCI devices. When booting in
verbose mode, this is also what the FreeBSD kernel tells me. I have seen
postings of others who had IRQ related error messages from the kernel, that
cbb could not map an IRQ, but I do not get these. Possibly because I have
been playing around with the hw.pci.link.*.irq options in /boot/loader.conf
for quite some time now. A while ago I found some info mentioning a possible 
bug in the ACPI DSDT of the 600's here:

http://bugzilla.kernel.org/show_bug.cgi?id=5966

So I dumped a disassembly of the ACPI DSDT of my 600 and found the exact same
code fragment in it, changed it according to the info above, and tried booting
with the modified DSDT. Unfortunately this did not make any difference either.

One interesting thing is, that with FreeBSD 6.2, the card used to function
every once in a while, for no apparent reason. To that time the only tunables
I have been using were:

hw.pci.link.LNKA.irq=11
hw.pci.link.LNKB.irq=10
hw.pci.link.LNKC.irq=7
hw.pci-link.LNKD.irq=7

But since I put FreeBSD 6.3 on the machine, I wasn't able to reproduce that
behaviour, even if I would boot the machine 50 times in a row.

-- 
Keep it icy man.
I don't want to end up a corpse before my time because you were daydreaming.


More information about the freebsd-mobile mailing list