<div dir="ltr"><div class="gmail_extra">Hi Ard,</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 12, 2018 at 6:22 PM, Ard Biesheuvel <span dir="ltr"><<a href="mailto:ard.biesheuvel@linaro.org" target="_blank">ard.biesheuvel@linaro.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 12 March 2018 at 16:15, Frederik Lotter<br>
<div><div class="gmail-h5"><<a href="mailto:frederik.lotter@netronome.com">frederik.lotter@netronome.com</a><wbr>> wrote:<br>
> Hi,<br>
> I am getting CPU stall warnings when booting up using the EFI route. I<br>
> suspect the PCIe interface, as the stall warning sometimes contain the probe<br>
> function. Other times is seems to get further than PCIe init, but still<br>
> stall interrupt handling.<br>
> Here are some facts around my observation:<br>
><br>
> I have two sdcards for my Machiattobin board. They have identical kernels<br>
> (4.16 rc5) with Ubuntu 16.04 rootfs. The one sdcard uses a uboot, DT and<br>
> kernel boot. The second sdcard has EDKII, grub kernel boot. The EDKII build<br>
> includes the device tree DTB (and DTS which I believe is unused) from the<br>
> one used on the uboot sdcard.<br>
><br>
> EFI stub: Booting Linux Kernel...<br>
> EFI stub: Using DTB from configuration table<br>
> EFI stub: Exiting boot services and installing virtual address map...<br>
> [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd081]<br>
> [    0.000000] Linux version 4.16.0-rc5-mbcin-netronome-2-<wbr>dirty<br>
> (root@mcb1-cpt) (gcc version 5.4.0 20160609 (Ubuntu/Linaro<br>
> 5.4.0-6ubuntu1~16.04.9)) #2 SMP PREEMPT Mon Mar 12 14:40:25 UTC 2018<br>
> [    0.000000] Machine model: Marvell 8040 MACHIATOBin<br>
> [    0.000000] efi: Getting EFI parameters from FDT:<br>
> [    0.000000] efi: EFI v2.70 by EDK II<br>
> [    0.000000] efi:  SMBIOS 3.0=0xbfd00000  ACPI 2.0=0xb6760000<br>
> MEMATTR=0xb8973418  RNG=0xbffdbf98<br>
> [    0.000000] random: fast init done<br>
> [    0.000000] efi: seeding entropy pool<br>
> :<br>
><br>
> (I am using the latest EDKII master, the Marvell edk2-open-platform 17.10<br>
> banch, with all the latest mv-ddr/ atf /etc....).<br>
><br>
> The DT data appear there in die EFI boot, but the PCIe interface fails, and<br>
> results (I believe) in the CPU stall warnings:<br>
><br>
> [  717.453025] INFO: rcu_preempt self-detected stall on CPU<br>
> :<br>
> :<br>
> [  717.589783]  armada8k_pcie_probe+0x140/<wbr>0x240<br>
> :<br>
><br>
> Other times, the pcie gets further:<br>
><br>
> [    3.312127] PCI: OF: host bridge /cp0/pcie@f2600000 ranges:<br>
> [    3.317740] PCI: OF:    IO 0xf9000000..0xf900ffff -> 0xf9000000<br>
> [    3.323692] PCI: OF:   MEM 0xc0000000..0xdfffffff -> 0xc0000000<br>
> [    3.328915] random: crng init done<br>
> [    4.326158] armada8k-pcie f2600000.pcie: phy link never came up<br>
> [    4.332109] armada8k-pcie f2600000.pcie: Link not up after<br>
> reconfiguration<br>
> [    4.339056] armada8k-pcie f2600000.pcie: PCI host bridge to bus 0000:00<br>
<br>
<br>
</div></div>To be brutally honest, the armada8k-pcie driver is a piece of junk,<br>
and you're much better off using the generic ECAM driver, which now<br>
includes special handling for the missing root port on Synopsys IP.<br>
<br>
It also allows you to have both MMIO32 and MMIO64 regions, which can<br>
be useful with some PCIe cards with large BARs<br>
<br>
Could you try<br>
<br>
compatible = "marvell,armada8k-pcie-ecam";<br>
<br>
in the DT node, please?<br>
<br>
(Before you do that, please check whether UEFI recognizes your PCI<br>
hardware using the 'pci' command in the shell)<br></blockquote><div><br></div><div>This exercise help a lot. Thank you for the proposal.</div><div><br></div><div>So now I can consistently boot using uboot and efi.</div><div><br></div><div>However, the pcie driver init fails. I have provided boot logs and also my DT entry - we need custom BAR ranges, and I am not sure if this driver understand everything.</div><div><br></div><div><div> cp0_pcie0: pcie@f2600000 {</div><div>  compatible = "marvell,armada8k-pcie-ecam", "snps,dw-pcie";</div><div>  reg = <0 0xf2600000 0 0x10000>,</div><div>        <0 ((0xf6000000 + (0 * 0x1000000)) + 0xf00000) 0 0x80000>;</div><div>  reg-names = "ctrl", "config";</div><div>  #address-cells = <3>;</div><div>  #size-cells = <2>;</div><div>  #interrupt-cells = <1>;</div><div>  device_type = "pci";</div><div>  dma-coherent;</div><div>  msi-parent = <&gic_v2m0>;</div><div><br></div><div>  bus-range = <0 0xff>;</div><div>  ranges =</div><div><br></div><div>  <0x81000000 0 (0xf9000000 + (0 * 0x10000)) 0 (0xf9000000 + (0 * 0x10000)) 0 0x10000</div><div><br></div><div>  0x82000000 0 (0xf6000000 + (0 * 0x1000000)) 0 (0xf6000000 + (0 * 0x1000000)) 0 0xf00000>;</div><div>  interrupt-map-mask = <0 0 0 0>;</div><div>  interrupt-map = <0 0 0 0 &cp0_icu 0x0 22 4>;</div><div>  interrupts = <0x0 22 4>;</div><div>  num-lanes = <1>;</div><div>  clocks = <&cp0_clk 1 13>;</div><div>  status = "disabled";</div><div> };</div></div><div><br></div><div><br></div><div>Error:</div><div><br></div><div><div>[    1.396968] PCI: OF: host bridge /cp0/pcie@f2600000 ranges:</div><div>[    1.396979] PCI: OF:    IO 0xf9000000..0xf900ffff -> 0xf9000000</div><div>[    1.396984] PCI: OF:   MEM 0xc0000000..0xdfffffff -> 0xc0000000</div><div>[    1.396998] pci-host-generic f2600000.pcie: ECAM area [mem 0xf2600000-0xf260ffff] can only accommodate [bus 00-ffffffffffffffff] (reduced from [bus 00-ff] desired)</div><div>[    1.397002] pci-host-generic f2600000.pcie: ECAM ioremap failed</div><div>[    1.397011] pci-host-generic: probe of f2600000.pcie failed with error -12</div></div><div><br></div><div><br></div><div>Thanks for the support.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
> [    4.345705] pci_bus 0000:00: root bus resource [bus 00-ff]<br>
<div><div class="gmail-h5">> [    4.351217] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus<br>
> address [0xf9000000-0xf900ffff])<br>
> [    4.360741] pci_bus 0000:00: root bus resource [mem<br>
> 0xc0000000-0xdfffffff]<br>
> [    4.367659] pci 0000:00:00.0: [11ab:0110] type 01 class 0x060400<br>
> [    4.373708] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit]<br>
> [    4.380562] pci 0000:00:00.0: supports D1 D2<br>
> [    4.384853] pci 0000:00:00.0: PME# supported from D0 D1 D3hot<br>
> [    4.390697] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]),<br>
> reconfiguring<br>
> [    4.398771] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01<br>
> [    4.405427] pci 0000:00:00.0: BAR 0: assigned [mem 0xc0000000-0xc00fffff<br>
> 64bit]<br>
> [    4.412776] pci 0000:00:00.0: PCI bridge to [bus 01]<br>
> [    4.725111] pcieport 0000:00:00.0: Signaling PME with IRQ 56<br>
> [    4.730842] pcieport 0000:00:00.0: AER enabled with IRQ 56<br>
><br>
> but then CPUs are still stalled on some incoming IRQ<br>
><br>
> [   87.352768]  dump_backtrace+0x0/0x150<br>
> [   87.356445]  show_stack+0x14/0x20<br>
> [   87.359773]  sched_show_task+0x14c/0x170<br>
> [   87.363711]  dump_cpu_task+0x40/0x50<br>
> [   87.367300]  rcu_dump_cpu_stacks+0x94/0xd8<br>
> [   87.371412]  rcu_check_callbacks+0x7ac/<wbr>0x980<br>
> [   87.375700]  update_process_times+0x2c/0x58<br>
> [   87.379900]  tick_sched_handle.isra.5+0x30/<wbr>0x50<br>
> [   87.384449]  tick_sched_timer+0x40/0x90<br>
> [   87.388301]  __hrtimer_run_queues+0x124/<wbr>0x198<br>
> [   87.392676]  hrtimer_interrupt+0xe4/0x240<br>
> [   87.396701]  arch_timer_handler_phys+0x30/<wbr>0x40<br>
> [   87.401163]  handle_percpu_devid_irq+0x78/<wbr>0x130<br>
> [   87.405712]  generic_handle_irq+0x24/0x38<br>
> [   87.409738]  __handle_domain_irq+0x5c/0xb8<br>
> [   87.413850]  gic_handle_irq+0x58/0xb0<br>
> [   87.417526]  el1_irq+0xb0/0x128<br>
> [   87.420678]  __do_softirq+0xb0/0x228<br>
> [   87.424267]  irq_exit+0xbc/0xf0<br>
> [   87.427421]  __handle_domain_irq+0x60/0xb8<br>
> [   87.431533]  gic_handle_irq+0x58/0xb0<br>
> [   87.435209]  el1_irq+0xb0/0x128<br>
><br>
> Is anyone aware of any issue like this?<br>
><br>
> Regards,<br>
> Fred<br>
><br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> Macchiato mailing list<br>
> <a href="mailto:Macchiato@lists.einval.com">Macchiato@lists.einval.com</a><br>
> <a href="https://lists.einval.com/cgi-bin/mailman/listinfo/macchiato" rel="noreferrer" target="_blank">https://lists.einval.com/cgi-<wbr>bin/mailman/listinfo/macchiato</a><br>
</blockquote></div><br></div></div>