PCI resource allocation not using pref 64-bit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi folks !

So on my POWER9 simulator, I noticed that the PCI code isn't assigning
any BAR to my 64-bit prefetchable window.

This is the trimmed log. Focus on domain 0000, the devices on domain
0001 are 32-bit only. I've also appended an lspci output and a
/proc/iomem output.

I think all that is needed but feel free to ask me if you want more. 

You can see that I pass 2 windows for the root bridge, a 32-bit
one and a prefetchable 64-bit one. It's PCIe so anything 64-bit should
be able to hit the prefetchable 64-bit one but that isn't happening.

Note that PCI_REASSIGN_ALL_RSRC is set, the original setup of the
bridges (including the root complex) is to have base > limit, we
expect Linux to fix them up.

Do you have any idea what's going on ? Is that expected ?

Cheers,
Ben.

[    0.000000] Linux version 4.7.0-rc4-00029-gf55fbbe9-dirty (benh@pasglop) (gcc
 version 6.1.1 20160427 (Red Hat Cross 6.1.1-1) (GCC) ) #50 SMP Wed Jun 22 16:18
:18 AEST 2016
[    0.000000] Initializing IODA3 OPAL PHB /pciex@600c3c0000000
[    0.000000] PCI host bridge /pciex@600c3c0000000 (primary) ranges:
[    0.000000]  MEM 0x000600c000000000..0x000600c07ffeffff -> 0x0000000080000000
[    0.000000]  MEM 0x0006000000000000..0x0006001fffffffff -> 0x0006000000000000 (M64 #1..31)
[    0.000000]  Using M64 #31 as default window
[    0.000000]   256 (255) PE's M32: 0x80000000 [segment=0x800000]
[    0.000000]                  M64: 0x2000000000 [segment=0x20000000]
[    0.000000]   Allocated bitmap for 4088 MSIs (base IRQ 0xfe000)
[    0.000000] Initializing IODA3 OPAL PHB /pciex@600c3c0100000
[    0.000000] PCI host bridge /pciex@600c3c0100000  ranges:
[    0.000000]  MEM 0x000600c080000000..0x000600c0fffeffff -> 0x0000000080000000
[    0.000000]  MEM 0x0006002000000000..0x0006003fffffffff -> 0x0006002000000000 (M64 #1..15)
[    0.000000]  Using M64 #15 as default window
[    0.000000]   128 (127) PE's M32: 0x80000000 [segment=0x1000000]
[    0.000000]                  M64: 0x2000000000 [segment=0x40000000]
[    0.000000]   Allocated bitmap for 2040 MSIs (base IRQ 0xfd800)
[    0.000000] Top of RAM: 0x80000000, Total RAM: 0x80000000
  .../...
[    0.030521] PCI: Probing PCI hardware
[    0.030632] PCI: I/O resource not set for host bridge /pciex@600c3c0000000 (domain 0)
[    0.031040] PCI host bridge to bus 0000:00
[    0.031181] pci_bus 0000:00: root bus resource [mem 0x600c000000000-0x600c07ffeffff] (bus address [0x80000000-0xfffeffff])
[    0.031407] pci_bus 0000:00: root bus resource [mem 0x6000000000000-0x6001fdfffffff 64bit pref]
[    0.031657] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.031760] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to ff
[    0.032028] pci 0000:00:00.0: [1014:04c1] type 01 class 0x060400
[    0.032455] pci 0000:00:00.0: PME# supported from D0 D3hot
[    0.033466] pci 0000:01:00.0: [1014:033d] type 00 class 0x010400
[    0.033708] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0003ffff 64bit]
[    0.033965] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x00ffffff 64bit pref]
[    0.034227] pci 0000:01:00.0: reg 0x30: [mem 0x00000000-0x007fffff pref]
[    0.035008] pci 0000:00:00.0: PCI bridge to [bus 01]
[    0.035263] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 01
[    0.035424] PCI: I/O resource not set for host bridge /pciex@600c3c0100000 (domain 1)
[    0.035887] PCI host bridge to bus 0001:00
[    0.035980] pci_bus 0001:00: root bus resource [mem 0x600c080000000-0x600c0fffeffff] (bus address [0x80000000-0xfffeffff])
[    0.036229] pci_bus 0001:00: root bus resource [mem 0x6002000000000-0x6003fbfffffff 64bit pref]
[    0.036431] pci_bus 0001:00: root bus resource [bus 00-ff]
[    0.036582] pci_bus 0001:00: busn_res: [bus 00-ff] end is updated to ff
[    0.036803] pci 0001:00:00.0: [1014:04c1] type 01 class 0x060400
[    0.037277] pci 0001:00:00.0: PME# supported from D0 D3hot
[    0.038243] pci 0001:01:00.0: [8086:105e] type 00 class 0x020000
[    0.038446] pci 0001:01:00.0: reg 0x10: [mem 0x00000000-0x0001ffff]
[    0.038687] pci 0001:01:00.0: reg 0x14: [mem 0x00000000-0x0003ffff]
[    0.038880] pci 0001:01:00.0: reg 0x18: [mem 0x00000000-0x0000ffff]
[    0.039150] pci 0001:01:00.0: reg 0x30: [mem 0x00000000-0x0001ffff pref]
[    0.039987] pci 0001:01:00.1: [8086:105e] type 00 class 0x020000
[    0.040192] pci 0001:01:00.1: reg 0x10: [mem 0x00000000-0x0001ffff]
[    0.040385] pci 0001:01:00.1: reg 0x14: [mem 0x00000000-0x0003ffff]
[    0.040626] pci 0001:01:00.1: reg 0x18: [mem 0x00000000-0x0000ffff]
[    0.040899] pci 0001:01:00.1: reg 0x30: [mem 0x00000000-0x0001ffff pref]
[    0.041697] pci 0001:00:00.0: PCI bridge to [bus 01]
[    0.041984] pci_bus 0001:00: busn_res: [bus 00-ff] end is updated to 01
[    0.042230] pci 0000:00:00.0: BAR 8: assigned [mem 0x600c000000000-0x600c0007fffff]
[    0.042421] pci 0000:00:00.0: BAR 9: assigned [mem 0x600c000800000-0x600c001ffffff pref]
[    0.042620] pci 0000:01:00.0: BAR 2: assigned [mem 0x600c001000000-0x600c001ffffff 64bit pref]
[    0.042900] pci 0000:01:00.0: BAR 6: assigned [mem 0x600c000800000-0x600c000ffffff pref]
[    0.043095] pci 0000:01:00.0: BAR 0: assigned [mem 0x600c000000000-0x600c00003ffff 64bit]
[    0.043304] pci 0000:00:00.0: PCI bridge to [bus 01]
[    0.043465] pci 0000:00:00.0:   bridge window [mem 0x600c000000000-0x600c0007fffff]
[    0.043675] pci 0000:00:00.0:   bridge window [mem 0x600c000800000-0x600c001ffffff pref]
[    0.043925] pci_bus 0000:00: resource 4 [mem 0x600c000000000-0x600c07ffeffff]
[    0.044112] pci_bus 0000:00: resource 5 [mem 0x6000000000000-0x6001fdfffffff 64bit pref]
[    0.044300] pci_bus 0000:01: resource 1 [mem 0x600c000000000-0x600c0007fffff]
[    0.044487] pci_bus 0000:01: resource 2 [mem 0x600c000800000-0x600c001ffffff pref]
[    0.044698] pci 0001:00:00.0: BAR 8: assigned [mem 0x600c080000000-0x600c080ffffff]
[    0.044889] pci 0001:00:00.0: BAR 9: assigned [mem 0x600c081000000-0x600c081ffffff pref]
[    0.045137] pci 0001:01:00.0: BAR 1: assigned [mem 0x600c080000000-0x600c08003ffff]
[    0.045334] pci 0001:01:00.1: BAR 1: assigned [mem 0x600c080040000-0x600c08007ffff]
[    0.045531] pci 0001:01:00.0: BAR 0: assigned [mem 0x600c080080000-0x600c08009ffff]
[    0.045729] pci 0001:01:00.0: BAR 6: assigned [mem 0x600c081000000-0x600c08101ffff pref]
[    0.045921] pci 0001:01:00.1: BAR 0: assigned [mem 0x600c0800a0000-0x600c0800bffff]
[    0.046166] pci 0001:01:00.1: BAR 6: assigned [mem 0x600c081020000-0x600c08103ffff pref]
[    0.046357] pci 0001:01:00.0: BAR 2: assigned [mem 0x600c0800c0000-0x600c0800cffff]
[    0.046555] pci 0001:01:00.1: BAR 2: assigned [mem 0x600c0800d0000-0x600c0800dffff]
[    0.046748] pci 0001:00:00.0: PCI bridge to [bus 01]
[    0.046909] pci 0001:00:00.0:   bridge window [mem 0x600c080000000-0x600c080ffffff]
[    0.047103] pci 0001:00:00.0:   bridge window [mem 0x600c081000000-0x600c081ffffff pref]
[    0.047352] pci_bus 0001:00: resource 4 [mem 0x600c080000000-0x600c0fffeffff]
[    0.047540] pci_bus 0001:00: resource 5 [mem 0x6002000000000-0x6003fbfffffff 64bit pref]
[    0.047728] pci_bus 0001:01: resource 1 [mem 0x600c080000000-0x600c080ffffff]
[    0.047915] pci_bus 0001:01: resource 2 [mem 0x600c081000000-0x600c081ffffff pref]
[    0.048091] pnv_ioda_reserve_pe: Invalid PE 1536 on PHB#0
[    0.048240] pci 0000:00     : [PE# 000] Secondary bus 0 associated with PE#0
[    0.050026] pci 0000:01     : [PE# 001] Secondary bus 1 associated with PE#1
[    0.051814] pci 0001:00     : [PE# 000] Secondary bus 0 associated with PE#0
[    0.053600] pci 0001:01     : [PE# 001] Secondary bus 1 associated with PE#1
[    0.055408] PCI: Domain 0000 has 8 available 32-bit DMA segments
[    0.055570] pci 0000:01     : [PE# 001] Assign DMA32 space
[    0.055781] pci 0000:01     : [PE# 001] Setting up 32-bit TCE table at 0..80000000
[    0.123541] IOMMU table initialized, virtual merging enabled
[    0.123715] pci 0000:01     : [PE# 001] Setting up window#0 0..7fffffff pg=1000
[    0.124494] pci 0000:01     : [PE# 001] Enabling 64-bit DMA bypass
[    0.125467] iommu: Adding device 0000:01:00.0 to group 0
[    0.125606] PCI: Domain 0001 has 8 available 32-bit DMA segments
[    0.125720] pci 0001:01     : [PE# 001] Assign DMA32 space
[    0.125960] pci 0001:01     : [PE# 001] Setting up 32-bit TCE table at 0..80000000
[    0.183171] pci 0001:01     : [PE# 001] Setting up window#0 0..7fffffff pg=1000
[    0.183921] pci 0001:01     : [PE# 001] Enabling 64-bit DMA bypass
[    0.184920] iommu: Adding device 1001:01:00.0 to group 1
[    0.185079] iommu: Adding device 0001:01:00.1 to group 1
[    0.188083] EEH: PCI Enhanced I/O Error Handling Enabled
[    0.188425] PCI: Probing PCI hardware done

# lspci -v
0000:00:00.0 PCI bridge: IBM Device 04c1 (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: 80000000-807fffff
        Prefetchable memory behind bridge: 80800000-81ffffff
        Capabilities: [40] Power Management version 1
        Capabilities: [48] Express Root Port (Slot-), MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] #19

0000:01:00.0 RAID bus controller: IBM PCI-E IPR SAS Adapter (FPGA)
        Subsystem: IBM PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5)
        Flags: bus master, fast devsel, latency 74, IRQ 128
        Memory at 600c000000000 (64-bit, non-prefetchable) [size=256K]
        Memory at 600c001000000 (64-bit, prefetchable) [size=16M]
        [virtual] Expansion ROM at 600c000800000 [disabled] [size=8M]
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [78] Power Management version 2
        Capabilities: [a0] Express Legacy Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting

0001:00:00.0 PCI bridge: IBM Device 04c1 (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: 80000000-80ffffff
        Prefetchable memory behind bridge: 81000000-81ffffff
        Capabilities: [40] Power Management version 1
        Capabilities: [48] Express Root Port (Slot-), MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] #19

0001:01:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Con
troller (rev 06)
        Subsystem: IBM Device 0340
        Flags: bus master, 66MHz, medium devsel, latency 8, IRQ 26
        Memory at 600c080080000 (32-bit, non-prefetchable) [size=128K]
        Memory at 600c080000000 (32-bit, non-prefetchable) [size=256K]
        Memory at 600c0800c0000 (32-bit, non-prefetchable) [size=64K]
        [virtual] Expansion ROM at 600c081000000 [disabled] [size=128K]
        Capabilities: [c8] Power Management version 0
        Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [e0] Express Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        Kernel driver in use: e1000e

0001:01:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Con
troller (rev 06)
        Subsystem: IBM Device 0340
        Flags: bus master, 66MHz, medium devsel, latency 8, IRQ 27
        Memory at 600c0800a0000 (32-bit, non-prefetchable) [size=128K]
        Memory at 600c080040000 (32-bit, non-prefetchable) [size=256K]
        Memory at 600c0800d0000 (32-bit, non-prefetchable) [size=64K]
        [virtual] Expansion ROM at 600c081020000 [disabled] [size=128K]
        Capabilities: [c8] Power Management version 0
        Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [e0] Express Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        Kernel driver in use: e1000e

# cat /proc/iomem 
00000000-7fffffff : System RAM
6000000000000-6001fdfffffff : /pciex@600c3c0000000
6002000000000-6003fbfffffff : /pciex@600c3c0100000
600c000000000-600c07ffeffff : /pciex@600c3c0000000
  600c000000000-600c0007fffff : PCI Bus 0000:01
    600c000000000-600c00003ffff : 0000:01:00.0
  600c000800000-600c001ffffff : PCI Bus 0000:01
    600c000800000-600c000ffffff : 0000:01:00.0
    600c001000000-600c001ffffff : 0000:01:00.0
600c080000000-600c0fffeffff : /pciex@600c3c0100000
  600c080000000-600c080ffffff : PCI Bus 0001:01
    600c080000000-600c08003ffff : 1001:01:00.0
      600c080000000-600c08003ffff : e1000e
    600c080040000-600c08007ffff : 0001:01:00.1
      600c080040000-600c08007ffff : e1000e
    600c080080000-600c08009ffff : 1001:01:00.0
      600c080080000-600c08009ffff : e1000e
    600c0800a0000-600c0800bffff : 0001:01:00.1
      600c0800a0000-600c0800bffff : e1000e
    600c0800c0000-600c0800cffff : 1001:01:00.0
      600c0800c0000-600c0800cffff : e1000e
    600c0800d0000-600c0800dffff : 0001:01:00.1
      600c0800d0000-600c0800dffff : e1000e
  600c081000000-600c081ffffff : PCI Bus 0001:01
    600c081000000-600c08101ffff : 1001:01:00.0
    600c081020000-600c08103ffff : 0001:01:00.1

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux