2005-02-20 09:22:17

by David Härdeman

[permalink] [raw]
Subject: Re: IBM Thinkpad G41 PCMCIA problems

Steven Rostedt wrote:
> I have a IBM Thinkpad G41 with a pentium4M with Hyperthreading. I can't
> get the PCMCIA working at all. I've tried turning off hyperthreading,
> I've tried with and without preempt, I've even added pci=noacpi. I've
> added Len's ACPI patches, but nothing works.


I see the same problem with an IBM Thinkpad G40, and only when there is
1Gb of memory or more in the machine.

The problem was reported the first time (to my knowledge), here:
http://www.ussg.iu.edu/hypermail/linux/kernel/0306.3/0956.html
by a Thinkpad T40 user.

So the problem seems to affect at least three different Thinkpad models.

The workaround I've seen so far have either been to disable
pci_fixup_transparent_bridge (as mentioned in this thread) or to raise
the value of pci_mem_start.

Re,
David

lspci -vvv with pci_fixup_transparent bridge disabled:
0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 81) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR+
Latency: 0
Bus: primary=00, secondary=02, subordinate=05, sec-latency=64
I/O behind bridge: 00003000-00006fff
Memory behind bridge: d0200000-dfffffff
Prefetchable memory behind bridge: f0000000-f7ffffff
BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B-


2005-02-20 09:27:07

by Russell King

[permalink] [raw]
Subject: Re: IBM Thinkpad G41 PCMCIA problems

On Sun, Feb 20, 2005 at 10:22:09AM +0100, David H?rdeman wrote:
> Steven Rostedt wrote:
> > I have a IBM Thinkpad G41 with a pentium4M with Hyperthreading. I can't
> > get the PCMCIA working at all. I've tried turning off hyperthreading,
> > I've tried with and without preempt, I've even added pci=noacpi. I've
> > added Len's ACPI patches, but nothing works.
>
>
> I see the same problem with an IBM Thinkpad G40, and only when there is
> 1Gb of memory or more in the machine.

Check to see if your e820 map has a hole in it, and whether any of
your Cardbus bridge memory / region 0 resources appear in it.

If your e820 map contains a hole, I'd suspect another buggy bios.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core

2005-02-20 09:52:27

by David Härdeman

[permalink] [raw]
Subject: Re: IBM Thinkpad G41 PCMCIA problems

On Sun, Feb 20, 2005 at 09:26:59AM +0000, Russell King wrote:
>On Sun, Feb 20, 2005 at 10:22:09AM +0100, David H?rdeman wrote:
>> I see the same problem with an IBM Thinkpad G40, and only when there is
>> 1Gb of memory or more in the machine.
>
>Check to see if your e820 map has a hole in it, and whether any of
>your Cardbus bridge memory / region 0 resources appear in it.
>
>If your e820 map contains a hole, I'd suspect another buggy bios.

e820 map:
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000ce000 - 00000000000d0000 (reserved)
BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000000f6f0000 (usable)
BIOS-e820: 000000000f6f0000 - 000000000f700000 (reserved)
BIOS-e820: 000000000f700000 - 000000003f6f0000 (usable)
BIOS-e820: 000000003f6f0000 - 000000003f6f8000 (ACPI data)
BIOS-e820: 000000003f6f8000 - 000000003f6fa000 (ACPI NVS)
BIOS-e820: 000000003f700000 - 0000000040000000 (reserved)
BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
118MB HIGHMEM available.
896MB LOWMEM available.

Is the hole between 0x36f6fa000 and 0x3f700000?

And what would be the proper way of fixing it (assuming that IBM won't
issue a fixed BIOS)?

Re,
David

2005-02-20 10:19:11

by Russell King

[permalink] [raw]
Subject: Re: IBM Thinkpad G41 PCMCIA problems

On Sun, Feb 20, 2005 at 10:52:12AM +0100, David H?rdeman wrote:
> e820 map:
> BIOS-provided physical RAM map:
> BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
> BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
> BIOS-e820: 00000000000ce000 - 00000000000d0000 (reserved)
> BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
> BIOS-e820: 0000000000100000 - 000000000f6f0000 (usable)
> BIOS-e820: 000000000f6f0000 - 000000000f700000 (reserved)
> BIOS-e820: 000000000f700000 - 000000003f6f0000 (usable)
> BIOS-e820: 000000003f6f0000 - 000000003f6f8000 (ACPI data)
> BIOS-e820: 000000003f6f8000 - 000000003f6fa000 (ACPI NVS)
> BIOS-e820: 000000003f700000 - 0000000040000000 (reserved)
> BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
> 118MB HIGHMEM available.
> 896MB LOWMEM available.
>
> Is the hole between 0x36f6fa000 and 0x3f700000?

Looks like it.

> And what would be the proper way of fixing it (assuming that IBM won't
> issue a fixed BIOS)?

Try passing:

reserve=0x3f6fa000,0x6000

to the kernel.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core

2005-02-20 10:21:24

by Dominik Brodowski

[permalink] [raw]
Subject: Re: IBM Thinkpad G41 PCMCIA problems

On Sun, Feb 20, 2005 at 10:52:12AM +0100, David H?rdeman wrote:
> On Sun, Feb 20, 2005 at 09:26:59AM +0000, Russell King wrote:
> >On Sun, Feb 20, 2005 at 10:22:09AM +0100, David H?rdeman wrote:
> >>I see the same problem with an IBM Thinkpad G40, and only when there is
> >>1Gb of memory or more in the machine.
> >
> >Check to see if your e820 map has a hole in it, and whether any of
> >your Cardbus bridge memory / region 0 resources appear in it.
> >
> >If your e820 map contains a hole, I'd suspect another buggy bios.
>
> e820 map:
> BIOS-provided physical RAM map:
> BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
> BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
> BIOS-e820: 00000000000ce000 - 00000000000d0000 (reserved)
> BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
> BIOS-e820: 0000000000100000 - 000000000f6f0000 (usable)
> BIOS-e820: 000000000f6f0000 - 000000000f700000 (reserved)
> BIOS-e820: 000000000f700000 - 000000003f6f0000 (usable)
> BIOS-e820: 000000003f6f0000 - 000000003f6f8000 (ACPI data)
> BIOS-e820: 000000003f6f8000 - 000000003f6fa000 (ACPI NVS)
> BIOS-e820: 000000003f700000 - 0000000040000000 (reserved)
> BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
> 118MB HIGHMEM available.
> 896MB LOWMEM available.
>
> Is the hole between 0x36f6fa000 and 0x3f700000?
>
> And what would be the proper way of fixing it (assuming that IBM won't
> issue a fixed BIOS)?

passing "reserve=0x3f6fa000,0x600" as kernel boot option. Please also post
/proc/iomem for further debugging, especially if this didn't help.

Dominik

2005-02-20 10:25:30

by Russell King

[permalink] [raw]
Subject: Re: IBM Thinkpad G41 PCMCIA problems

On Sun, Feb 20, 2005 at 11:20:59AM +0100, Dominik Brodowski wrote:
> > Is the hole between 0x36f6fa000 and 0x3f700000?
> >
> > And what would be the proper way of fixing it (assuming that IBM won't
> > issue a fixed BIOS)?
>
> passing "reserve=0x3f6fa000,0x600" as kernel boot option. Please also post
> /proc/iomem for further debugging, especially if this didn't help.

You're missing a zero in the length. 8)

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core

2005-02-20 10:58:06

by David Härdeman

[permalink] [raw]
Subject: Re: IBM Thinkpad G41 PCMCIA problems

On Sun, Feb 20, 2005 at 10:19:02AM +0000, Russell King wrote:
>On Sun, Feb 20, 2005 at 10:52:12AM +0100, David H?rdeman wrote:
>> Is the hole between 0x36f6fa000 and 0x3f700000?
>
>Looks like it.
>
>> And what would be the proper way of fixing it (assuming that IBM won't
>> issue a fixed BIOS)?
>
>Try passing:
>
> reserve=0x3f6fa000,0x6000
>
>to the kernel.
>

Thanks a bunch, that worked, now I don't have to patch my kernel
to get PCMCIA working anymore :-)

//David