Subject: Moving from 2.6.14 (ppc) to 2.6.20 (powerpc): problems with PCI-PCI bridge

From: Johan Borkhuis <[email-masked]>
Date: Mon, 04 Feb 2008 10:13:17 +0100

Hello,

I was using kernel version 2.6.14 (ppc) on a  MVME3100 board (MPC8540 
processor). We are planning to move to 2.6.20 (powerpc), but I have some 
problems with the initialization of a PCI-PCI bridge.
Connected to the MVME3100 board is a PCI-PCI bridge (HiNT, PCI6150, 
3388:0022). When using the 2.6.14 kernel this bridge is initialized 
correctly:  it is setup as bus-master, memory and IO are configured, and 
the memory allocation on the PCI-bus is correct.
When I use 2.6.20 (powerpc) the device is not configured correctly: 
bus-master, memory and IO are not set, and the memory space of the 
bridge on the PCI bus is set to the minimum value (0xfffff).
I can correct these settings by modifying the PCI_COMMAND register to 
set the bus-master, memory and IO. I change the size of the memory space 
in pci_32.c, by forcing the size to the required setting in 
pci_relocate_bridge_resource. But to be honest, I don't like this very 
much: modifying registers like this should not be needed, so I guess 
there is something wrong in my configuration or setup.

How can I fix this problem in a better way? What could be wrong with my 
configuration?

Below is some output from lspci:
bash-3.00# lspci -t
-[0000:00]-+-01.0
           +-02.0-[0000:01]--
           +-03.0-[0000:02-03]--+-00.0
           |                    +-00.1
           |                    +-00.2
           |                    \-04.0-[0000:03]--+-02.0
           |                                      \-03.0
           \-04.0

bash-3.00# lspci -vs  02:04.0
02:04.0 PCI bridge: Hint Corp HiNT HB4 PCI-PCI Bridge (PCI6150) (rev 04) 
(prog-if 00 [Normal decode])
        Flags: bus master, medium devsel, latency 0
        Bus: primary=02, secondary=03, subordinate=03, sec-latency=0
        I/O behind bridge: 00011000-00011fff
        Memory behind bridge: 87f00000-87ffffff
        Prefetchable memory behind bridge: 0000000087e00000-0000000087e00000
        Capabilities: [dc] Power Management version 1
        Capabilities: [e4] #06 [0094]
        Capabilities: [e8] Vital Product Data

After the modifications to the PCI COMMAND register and memory map:
bash-3.00# lspci -vs  02:04.0
02:04.0 PCI bridge: Hint Corp HiNT HB4 PCI-PCI Bridge (PCI6150) (rev 04) 
(prog-if 00 [Normal decode])
        Flags: stepping, medium devsel
        Bus: primary=02, secondary=03, subordinate=03, sec-latency=0
        I/O behind bridge: 00011000-00011fff
        Memory behind bridge: 82000000-87ffffff
        Prefetchable memory behind bridge: 0000000000000000-0000000000000000
        Capabilities: [dc] Power Management version 1
        Capabilities: [e4] #06 [0094]
        Capabilities: [e8] Vital Product Data

Kind regards,
    Johan Borkhuis

-- 
Johan Borkhuis                                  Dutch Space BV
email:        [email-masked]          Newtonweg 1
phone:        071-5245788                       Leiden
fax:          071-5245499                       The Netherlands