Subject: PCI not working in 4.1 for p2010rdb(Freescale) based board

From: Joakim Tjernlund <[email-masked]>
Date: Fri, 14 Aug 2015 13:15:52 +0000

I upgraded our kernel for our custom p2010rdb based board from 3.4 to 4.1 and I cannot get the
PCI controller to work, it is not initialized as can be seem by the below dmesg fro 3.4 and 4.1.
Sorry to say, PCI is not my cup of tea so I don't not know how to find the culprit.
I have checked what I can but nothing stands out and I would appreciate some help/pointers

dmesg for 4.1:
[    0.000000] Using P2010 RDB machine description
[    0.000000] Memory CAM mapping: 256/256 Mb, residual: 0Mb
[    0.000000] Linux version 4.1.0+ (jocke@gentoo-jocke) (gcc version 4.5.3 (Gentoo 4.5.3-r2 p1.6, pie-0.4.7) ) #102 Thu Aug 13 21:23:04 CEST 2015
[    0.000000] Found legacy serial port 0 for /soc@ff700000/serial@4500
[    0.000000]   mem=ff704500, taddr=ff704500, irq=0, clk=600000000, speed=0
[    0.000000] Found legacy serial port 1 for /soc@ff700000/serial@4600
[    0.000000]   mem=ff704600, taddr=ff704600, irq=0, clk=600000000, speed=0
[    0.000000] bootconsole [udbg0] enabled
[    0.000000] E500 platform from Transmode Systems AB
[    0.000000] Top of RAM: 0x20000000, Total RAM: 0x20000000
[    0.000000] Memory hole size: 0MB
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x000000001fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000001fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff]
[    0.000000] On node 0 totalpages: 131072
[    0.000000] free_area_init_node: node 0, pgdat c03c8b10, node_mem_map df5ec000
[    0.000000]   DMA zone: 1024 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 131072 pages, LIFO batch:31
[    0.000000] MMU: Allocated 1088 bytes of context maps for 255 contexts
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
[    0.000000] Kernel command line: root=/dev/mtdblock6 rw rootfstype=jffs2 ip=172.18.2.61:192.168.201.63:172.18.0.1:255.255.0.0:P2020RDB:eth0:off console=ttyS0,115200
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Sorting __ex_table...
[    0.000000] Memory: 443652K/524288K available (2984K kernel code, 108K rwdata, 664K rodata, 152K init, 126K bss, 80636K reserved, 0K cma-reserved)
[    0.000000] Kernel virtual memory layout:
[    0.000000]   * 0xfffdf000..0xfffff000  : fixmap
[    0.000000]   * 0xfdffe000..0xfe000000  : early ioremap
[    0.000000]   * 0xe1000000..0xfdffe000  : vmalloc & ioremap
[    0.000000] NR_IRQS:128 nr_irqs:128 16
[    0.000000] mpic: Resetting
[    0.000000] mpic: Setting up MPIC " OpenPIC  " version 1.2 at ff740000, max 1 CPUs
[    0.000000] mpic: ISU size: 256, shift: 8, mask: ff
[    0.000000] mpic: Initializing for 256 sources
[    0.000000] time_init: decrementer frequency = 75.000000 MHz
[    0.000000] time_init: processor frequency   = 1200.000000 MHz
[    0.000007] clocksource timebase: mask: 0xffffffffffffffff max_cycles: 0x114c1bade8, max_idle_ns: 440795203839 ns
[    0.010184] clocksource: timebase mult[d555555] shift[24] registered
[    0.016531] clockevent: decrementer mult[13333333] shift[32] cpu[0]
[    0.016616] pid_max: default: 32768 minimum: 301
[    0.021202] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.027754] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.036855] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.046775] NET: Registered protocol family 16
[    0.055827] spidev registred.
[    0.064391] PCI: Probing PCI hardware
[    0.067979] PCI: Assigning unassigned resources...
[    0.068068] Registering qe_ic with sysfs...
[    0.071912] pps_core: LinuxPPS API ver. 1 registered
[    0.076804] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email-masked]>
[    0.086152] PTP clock support registered
[    0.090408] Switched to clocksource timebase
[    0.095368] NET: Registered protocol family 2
[    0.100202] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.107199] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.113626] TCP: Hash tables configured (established 4096 bind 4096)
[    0.120013] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.125781] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.132109] NET: Registered protocol family 1
[    0.136405] PCI: CLS 0 bytes, default 32
[    0.141059] Setting up Freescale MSI support
[    0.141551] Adding PCI host bridge /pcie@ff70a000
[    0.141561] PCI memory map start 0x00000000ff70a000, size 0x0000000000001000
[    0.141578] Found FSL PCI host bridge at 0x00000000ff70a000. Firmware bus number: 0->1
[    0.149423]  ->Hose at 0xdb0d5a00, cfg_addr=0xe1020000,cfg_data=0xe1020004
[    0.149427] PCI host bridge /pcie@ff70a000 (primary) ranges:
[    0.155066]  MEM 0x0000000080000000..0x000000009fffffff -> 0x0000000080000000 
[    0.162279]   IO 0x00000000ffc00000..0x00000000ffc0ffff -> 0x0000000000000000
[    0.169659] PCI MEM resource start 0x0000000080000000, size 0x0000000020000000.
[    0.169665] PCI IO resource start 0x0000000000000000, size 0x0000000000010000, phy base 0x00000000ffc00000.
[    0.169671] /pcie@ff70a000: PCICSRBAR @ 0xfff00000
[    0.179635] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.186075] jffs2: version 2.2. © 2001-2006 Red Hat, Inc.
[    0.191672] io scheduler noop registered (default)
[    0.196526] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    0.202109] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    0.208754] Serial: 8250/16550 driver, 2 ports, IRQ sharing enabled
[    0.215254] console [ttyS0] disabled
[    0.218849] serial8250.0: ttyS0 at MMIO 0xff704500 (irq = 42, base_baud = 37500000) is a 16550A
[    0.227481] console [ttyS0] enabled
[    0.234423] bootconsole [udbg0] disabled
[    0.242395] serial8250.0: ttyS1 at MMIO 0xff704600 (irq = 42, base_baud = 37500000) is a 16550A
.....

------------------------------------------------------------------------------

old 3.4 dmesg:
Using P2010 RDB machine description
Memory CAM mapping: 256/256 Mb, residual: 0Mb
Linux version 3.4.0+ (jocke@gentoo-jocke) (gcc version 4.5.3 (Gentoo 4.5.3-r2 p1.6, pie-0.4.7) ) #25 Thu Apr 23 15:44:23 CEST 2015
Found legacy serial port 0 for /soc@ff700000/serial@4500
  mem=ff704500, taddr=ff704500, irq=0, clk=600000000, speed=0
Found legacy serial port 1 for /soc@ff700000/serial@4600
  mem=ff704600, taddr=ff704600, irq=0, clk=600000000, speed=0
bootconsole [udbg0] enabled
Found FSL PCI host bridge at 0x00000000ff70a000. Firmware bus number: 0->0
PCI host bridge /pcie@ff70a000  ranges:
 MEM 0x0000000080000000..0x000000009fffffff -> 0x0000000080000000 
  IO 0x00000000ffc00000..0x00000000ffc0ffff -> 0x0000000000000000
/pcie@ff70a000: PCICSRBAR @ 0xfff00000
E500 platform from Transmode Systems AB
Top of RAM: 0x20000000, Total RAM: 0x20000000
Memory hole size: 0MB
Zone PFN ranges:
  DMA      0x00000000 -> 0x00020000
  Normal   empty
Movable zone start PFN for each node
Early memory PFN ranges
    0: 0x00000000 -> 0x00020000
On node 0 totalpages: 131072
free_area_init_node: node 0, pgdat c038988c, node_mem_map c03bc000
  DMA zone: 1024 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 130048 pages, LIFO batch:31
MMU: Allocated 1088 bytes of context maps for 255 contexts
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
Kernel command line: root=/dev/mtdblock6 rw rootfstype=jffs2 ip=172.18.2.61:192.168.201.63:172.18.0.1:255.255.0.0:P2020RDB:eth0:off console=ttyS0,115200
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 509708k/524288k available (3548k kernel code, 14580k reserved, 140k data, 126k bss, 156k init)
Kernel virtual memory layout:
  * 0xfffdf000..0xfffff000  : fixmap
  * 0xfdfec000..0xfe000000  : early ioremap
  * 0xe1000000..0xfdfec000  : vmalloc & ioremap
NR_IRQS:128 nr_irqs:128 16
mpic: Resetting
mpic: Setting up MPIC " OpenPIC  " version 1.2 at ff740000, max 1 CPUs
mpic: ISU size: 256, shift: 8, mask: ff
mpic: Initializing for 256 sources
time_init: decrementer frequency = 75.000000 MHz
time_init: processor frequency   = 1200.000000 MHz
clocksource: timebase mult[d555555] shift[24] registered
clockevent: decrementer mult[13333333] shift[32] cpu[0]
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
NET: Registered protocol family 16
gpiochip_add: registered GPIOs 224 to 255 on device: /soc@ff700000/gpio-controller@f000
PCI: Probing PCI hardware
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io  0xfdfed000-0xfdffcfff] (bus address [0x0000-0xffff])
pci_bus 0000:00: root bus resource [mem 0x80000000-0x9fffffff]
pci 0000:00:00.0: [1957:0079] type 01 class 0x0b2000
pci 0000:00:00.0: ignoring class 0x0b2000 (doesn't match header type 01)
pci 0000:00:00.0: supports D1 D2
pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:01:00.0: [14e4:b541] type 00 class 0x020000
pci 0000:01:00.0: reg 10: [mem 0x00000000-0x0003ffff 64bit]
pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
pci 0000:00:00.0: PCI bridge to [bus 01-ff]
PCI 0000:00 Cannot reserve Legacy IO [io  0xfdfed000-0xfdfedfff]
pci 0000:01:00.0: BAR 0: assigned [mem 0x80000000-0x8003ffff 64bit]
pci 0000:00:00.0: PCI bridge to [bus 01-01]
pci 0000:00:00.0:   bridge window [io  0xfdfed000-0xfdffcfff]
pci 0000:00:00.0:   bridge window [mem 0x80000000-0x9fffffff]
pci 0000:00:00.0: enabling device (0106 -> 0107)
pci_bus 0000:00: resource 4 [io  0xfdfed000-0xfdffcfff]
pci_bus 0000:00: resource 5 [mem 0x80000000-0x9fffffff]
pci_bus 0000:01: resource 0 [io  0xfdfed000-0xfdffcfff]
pci_bus 0000:01: resource 1 [mem 0x80000000-0x9fffffff]
Registering qe_ic with sysfs...
bio: create slab <bio-0> at 0
Switching to clocksource timebase

.....