[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-mips-cvs
Subject:    [MIPS] Fix for pci config_access on alchemy au1x000
From:       linux-mips () linux-mips ! org
Date:       2006-08-29 15:56:12
Message-ID: S20039460AbWH2P4R/20060829155617Z+4869 () ftp ! linux-mips ! org
[Download RAW message or body]

Author: Alexander Bigga <ab@mycable.de> Tue Aug 29 16:48:34 2006 +0200
Comitter: Ralf Baechle <ralf@linux-mips.org> Tue Aug 29 16:53:15 2006 +0100
Commit: 132dce0b054d52d3110fbac583c3d8e0d017d982
Gitweb: http://www.linux-mips.org/g/linux/132dce0b
Branch: linux-2.6.17-stable

I've encountered a serious problem with PCI config space access on Au1x000
platforms with recent 2.6.x-kernel. With 2.4.31 the same hardware works fine.
So I was looking for the differences:

Symptoms:
- no PCI-device is seen on bootup though two or three cards are present
- lspci output is empty
- OR: lspci shows 20 times the same device
(- OR: in some slot-configurations it worked anyhow)

System(s):
1. platform with Au1500 and three PCI-devices (actually a mycable XXS1500
    with backplane for three PCI-devices)
2. platform with Au1550 and two PCI-devices (custom board)

Debugging:
I digged down to the config_access() of the au1xxx-processors in
arch/mips/pci/ops-au1000.c and switched on DEBUG.

The code of config_access() seems to be almost the same as of the
2.4.x-kernel. But the "pci_cfg_vm->addr" returned by get_vm_area(0x2000, 0)
once on booting is different. That's of course not forbidden. But the
alignment seems to be wrong. In my case, I received:

2.4.31: pci_cfg_vm->addr = c0000000
2.6.18-rc5: pci_cfg_vm->addr = c0101000

To make it short: With 2.6.x it fails on the first config-access with:
"PCI ERR detected: status 83a00356".

Fixup:
My fix is now, to use the VM_IOREMAP-flag in the get_vm_area call. This flag
seems to be introduced in mm/vmalloc.c a long time ago (in 2.6.7-bk13, I
found in gitweb).
Now, the returned address is pci_cfg_vm->addr = c0104000 and everything works
fine.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from 4f043b6092184d00df9185f0521dfbcb57a43134 commit)

---

 arch/mips/pci/ops-au1000.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic