Part Number: SK-AM69
Other Parts Discussed in Thread: AM69
Tool/software:
The AM69 running Yocto Linux ( 10.01.00.05 (Dec 18, 2024) ) Is not able to enumerate large 64Bit prefetchable PCIe BARs on 3rd party endpoint hardware.
Is this a hardware limitation (not enough address bits allocated to the controller) or is it just a software limitation / bug which can be fixed?
Here is an example of trying to enumerate a device with a 512MB BAR0 Size:
[ 1.975135] j721e-pcie 2900000.pcie: host bridge /bus@100000/pcie@2900000 ranges: [ 1.982627] j721e-pcie 2900000.pcie: IO 0x0010001000..0x0010010fff -> 0x0010001000 [ 1.990713] j721e-pcie 2900000.pcie: MEM 0x0010011000..0x0017ffffff -> 0x0010011000 [ 1.998795] j721e-pcie 2900000.pcie: IB MEM 0x0000000000..0xffffffffffff -> 0x0000000000 [ 2.215061] j721e-pcie 2900000.pcie: Link up [ 2.219676] j721e-pcie 2900000.pcie: PCI host bridge to bus 0000:00 [ 2.225938] pci_bus 0000:00: root bus resource [bus 00-ff] [ 2.231413] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] (bus address [0x10001000-0x10010fff]) [ 2.240873] pci_bus 0000:00: root bus resource [mem 0x10011000-0x17ffffff] [ 2.247759] pci 0000:00:00.0: [104c:b012] type 01 class 0x060400 [ 2.253754] pci_bus 0000:00: 2-byte config write to 0000:00:00.0 offset 0x4 may corrupt adjacent RW1C bits [ 2.263490] pci 0000:00:00.0: supports D1 [ 2.267490] pci 0000:00:00.0: PME# supported from D0 D1 D3hot [ 2.275213] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 2.283312] pci 0000:01:00.0: [1e38:0102] type 00 class 0x120000 [ 2.289361] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x1fffffff 64bit pref] [ 2.296585] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x00ffffff] [ 2.302855] pci 0000:01:00.0: reg 0x1c: [mem 0x00000000-0x003fffff] [ 2.309346] pci 0000:01:00.0: PME# supported from D0 D3hot [ 2.315162] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01 [ 2.321777] pci 0000:00:00.0: BAR 15: no space for [mem size 0x20000000 64bit pref] [ 2.329417] pci 0000:00:00.0: BAR 15: failed to assign [mem size 0x20000000 64bit pref] [ 2.337405] pci 0000:00:00.0: BAR 14: assigned [mem 0x10800000-0x11ffffff] [ 2.344266] pci 0000:01:00.0: BAR 0: no space for [mem size 0x20000000 64bit pref] [ 2.351818] pci 0000:01:00.0: BAR 0: failed to assign [mem size 0x20000000 64bit pref] [ 2.359715] pci 0000:01:00.0: BAR 2: assigned [mem 0x11000000-0x11ffffff] [ 2.366495] pci 0000:01:00.0: BAR 3: assigned [mem 0x10800000-0x10bfffff]
Also what does 'IB MEM' imply on the PCIe address map printed to the kernel log, this looks like a big 64bit range, which presumably should be prefetchable and easily able to fit a 512MB BAR ?