Hello, Barebox version: 2024-09 I am porting the Linux PCIE driver for Broadcom Cortex-A9 (ARMv7) chip. So far I am able to detect the bridge and NVME device attach to it:
pci: pci_scan_bus for bus 0 pci: last_io = 0x00000000, last_mem = 0x20000000, last_mem_pref = 0x00000000 pci: class = 00000604, hdr_type = 00000001 pci: 00:00 [14e4:b170] pci: pci_scan_bus for bus 1 pci: last_io = 0x00000000, last_mem = 0x20000000, last_mem_pref = 0x00000000 pci: class = 00000108, hdr_type = 00000000 pci: 01:00 [126f:2263] ERROR: pci: last_mem = 0x20000000, 16384 pci: pbar0: mask=ffffc004 NP-MEM 16384 bytes ... pci: class = 00000108, hdr_type = 00000000 pci: 01:f8 [126f:2263] ERROR: pci: last_mem = 0x2007c000, 16384 pci: pbar0: mask=ffffc004 NP-MEM 16384 bytes pci: pci_scan_bus returning with max=02 pci: bridge NP limit at 0x20100000 The PCI memory address is assigned to the device and map (pci_iomap from nvme_dev_map) but access to this PCI space crashes the system: pci: pci_scan_bus returning with max=02 ERROR: nvme_dev_map: bar = 0x20000000 nvme pci-126f:2263.0: enabling bus mastering ERROR: pci: __pci_set_master ERROR: nvme_pci_enable: address: 0x2000001c unable to handle paging request at address 0x2000001c pc : [<9fe3d6e4>] lr : [<9fe3d6d8>] sp : 9fff7f38 ip : 00000002 fp : 00000000 r10: 0006b52c r9 : 40000000 r8 : 9fea9b88 r7 : 7fe18500 r6 : 7fe295a8 r5 : 9fe8e5b8 r4 : 7fe29538 r3 : 20000000 r2 : 00000000 r1 : 0000000a r0 : 00000027 Flags: nZCv IRQs off FIQs off Mode SVC_32 [<9fe3d6e4>] (nvme_probe+0xd8/0x4c4) from [<9fe14650>] (device_probe+0x64/0x15c) [<9fe14650>] (device_probe+0x64/0x15c) from [<9fe14778>] (match+0x30/0x68) Tracing the problem, I found that if I limit the scanning in pci_scan_bus to 1 device/function - for (devfn = 0; devfn < 0xff; ++devfn) { + for (devfn = 0; devfn < 0x8; ++devfn) { ==> At 0x10 I see the crash. Then, the NVME device is detected: nvme pci-126f:2263.0: serial: A012410180620000000 nvme pci-126f:2263.0: model: SM681GEF AGS nvme pci-126f:2263.0: firmware: TFX7GB Has anybody seen this problem before (I havenoyt seen that on the LS1046A)? I am not seeing much diff with the master branch in /drivers/pci and drivers/nvme Cheers, Renaud