Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Feb 2008 07:26:44 -0500
From:      Greg Troxel <gdt@ir.bbn.com>
To:        Andreas Wetzel <mickey242@gmx.net>
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: ThinkPad 600 - CardBus inoperative
Message-ID:  <rmiprupb2ij.fsf@fnord.ir.bbn.com>
In-Reply-To: <47BE9CBC.6010500@gmx.net> (Andreas Wetzel's message of "Fri, 22 Feb 2008 10:58:20 %2B0100")
References:  <47BE9CBC.6010500@gmx.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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".

>From NetBSD's pci(4):

        PCI_INTR_FIXUP  Fixup PCI interrupt routing via PCIBIOS or ACPI.

                        Some i386 and amd64 BIOS implementations don't assign
                        an interrupt for some devices.

                        This option assigns an interrupt for such devices
                        instead of relying upon the BIOS to do so.

                        If a valid interrupt has already been assigned to a
                        device, this option leaves the interrupt as is.

>From NetBSD's cardbus(4):

   Memory space conflicts
     NetBSD maps memory on Cardbus and PCMCIA cards in order to access the
     cards (including reading CIS tuples on PCMCIA cards) and access the
     devices using the RBUS abstraction.  When the mapping does not work, PCM-
     CIA cards are typically ignored on insert, and Cardbus cards are recog-
     nized but nonfunctional.  On i386, the kernel has a heuristic to choose a
     memory address for mapping, defaulting to 1 GB, but choosing 0.5 GB on
     machines with less than 192 MB RAM and 2 GB on machines with more than 1
     GB of RAM.  The intent is to use an address that is larger than available
     RAM, but low enough to work; some systems seem to have trouble with
     addresses requiring more than 20 address lines.  On i386, the following
     kernel configuration line disables the heuristics and forces Cardbus mem-
     ory space to be mapped at 512M; this value makes Cardbus support (includ-
     ing PCMCIA attachment under a cbb) work on some notebook models, includ-
     ing the IBM Thinkpad 600E (2645-4AU) and the Compaq ARMADA M700:

     options RBUS_MIN_START="0x20000000"



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