This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5728:PCIe 访问错误

Guru**** 2999690 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/676998/linux-am5728-pcie-access-error

器件型号:AM5728

工具/软件:Linux

您好!

客户遇到错误  

OMAP-L3_NOC 440000.OCP:L3应用程序错误:目标5 mod:1 (不可清除)

 

通过 PCIe 连接的 FPGA 时看到的错误消息。

对 FPGA 进行编程后、我们立即加载驱动程序、并访问条0的第一个32位字。 在通过调用 oread32读取字之前、我们在条上调用 pci_iomap (因此它不被缓存)。 /proc/iomem 的相关部分如下所示。 我们正在读取24400000处的条形图的第一个字、该字形图映射到内核地址 d5f18000。

 

20013000-2ffffffff:MEM

 20020000 - 2002FFFF:0000:00:00.0

 20100000-201ffff:0000:00:00.0

 24000000-2ffffffff:PCI 总线0000:01

   24000000-243fff: 0000:01:00.0

     24000000-243fff: PLDA

   24400000-24403fff:0000:01:00.0

     24400000-24403fff:PLDA

   2800000-2fffffff: 0000:01:00.0

     28000000-2ffffffff:PLDA

…μ A

 

8000000000-feffff:系统 RAM

 80008000-80dfff:内核代码

 81000000-898bab:内核数据

200000000-27fcfff:系统 RAM

 

我们有一个逻辑分析仪连接到电路板、并且不会看到 PCI 读取/写入出现任何错误。

我认为这与我们上次收到 OMAP-L3_NOC 错误时不同、即用户空间通过缓存映射访问条形、这可能导致 PCIe 总线突发。 然后、通过确保条形图未缓存来解决错误。

这次是内核空间访问。

我们一直在研究这个 e2e 线程的末尾、在这里发生了类似的错误。 有一些提示、但很难找到导致这些错误的根本原因。

您能否告诉我们、您是否在 PCIe 访问中看到过这些 OMAP-L3_NOC 错误? 我们应该如何最好地跟踪该误差?

此致、

-Gunter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    以下是启动时的内核消息。

    [0.719721]  、共:PCI:主机桥/ocp/axi@0/PCIe@51000000范围:

    [0.719732]  、共页:PCI: 未找到/ocp/axi@0/PCIe@51000000的总线范围、使用[bus 00-ff]

    [0.719765]  、共页:PCI:  IO 0x20003000.0x20012fff -> 0x00000000

    [0.719786]  、共页:PCI: MEM 0x20013000..0x2ffffff -> 0x20013000

    [0.820965]  dra7-PCIe 51000000.PCIe:链路建立

    [0.821123]  dra7-PCIe 51000000.PCIe:PCI 主机桥至总线0000:00

    [0.821136]  PCI_BUS 0000:00:根总线资源[bus 00-ff]

    [0.821147]  PCI_BUS 0000:00:根总线资源[IO 0x0000-0xFFF]

    [0.821156]  PCI_BUS 0000:00:根总线资源[mem 0x20013000-0x2fffffff]

    [0.821189]  PCI 0000:00:00.0:[104C:888]类型01类0x060400

    [0.821215]  PCI 0000:00:00.0:寄存器0x10:[MEM 0x00000000-0x000fff]

    [0.821231]  PCI 0000:00:00.0:寄存器0x14:[MEM 0x00000000-0x0000FFF]

    [0.821301]  PCI 0000:00:00.0:支持 D1

    [0.821310]  PCI 0000:00:00.0:D0 D1 D3hot 支持 PME#

    [0.821540]  PCI:总线0:禁用快速背对背传输

    [0.821723]  PCI 0000:01:00.0:[1556:1100]类型00类0x0000

    [0.821822]  PCI 0000:01:00.0:寄存器0x10:[MEM 0x00000000-0x00003fff 64位 pref]

    [0.821887]  PCI 0000:01:00.0:寄存器0x18:[MEM 0x00000000-0x003fff 64位 pref]

    [0.821191]  PCI 0000:01:00.0:寄存器0x20:[MEM 0x0000-0x07ffff 64位 pref]

    [0.847102]  PCI:总线1:禁用快速背对背传输

    [0.847270]  PCI 0000:00:00.0:栏9:已分配[mem 0x24000000-0x2ffffffff pref]

    [0.847283]  PCI 0000:00:00.0:条0:已分配[mem 0x20100000-0x201fff]

    [0.847297]  PCI 0000:00:00.0:条1:已分配[mem 0x2000000-0x2002FFF]

    [0.847312]  PCI 0000:01:00.0:条形4:已分配[mem 0x28000000-0x2ffffff 64位 pref]

    [0.847365]  PCI 0000:01:00.0:条码2:已分配[mem 0x24000000-0x243fff 64位 pref]

    [0.847417]  PCI 0000:01:00.0:条0:已分配[mem 0x24400000-0x24403fff 64位 pref]

    [0.847469]  PCI 0000:00:00.0:PCI 桥至[bus 01]

    [0.847482]  PCI 0000:00:00.0: 桥接窗口[mem 0x24000000-0x2ffffffff pref]

    [0.847701]  pcieport 0000:00:00.0:通过 PCIe PME 中断向 PME 发送信号

    [0.847711]  PCI 0000:01:00.0:通过 PCIe PME 中断向 PME 发送信号

    [0.847722]  PCIe_PME 0000:00:00.0:pcie001:已加载服务驱动程序 PCIe_PME

    [0.847850]  aer 0000:00:00.0:pcie002:服务驱动程序 aer loaded

    我们对红色线条感到疑惑。 看起来处理器控制器的条9与 FPGA 的条重叠。 这有道理吗? 条形图9的用途是什么?

    此致、

    -Gunter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Gunter、

    您能否执行"lspci -v"并显示结果? 我很好奇它是如何显示在客户的电路板上的。 对于我们的 GP EVM、引导日志如下所示。 有一个配置为桥后存储器的 BAR8、供 EP 使用。 BAR9可能还可以、但不确定它是不是导致问题、还是应该是 BAR8。 我们没有 FPGA 设置来比较正确的行为。

    [0.734180]、共页:PCI:主机桥/ocp/axi@0/PCIe@51000000范围:
    [0.734192]、共页:PCI:未找到/ocp/axi@0/PCIe@51000000的总线范围、使用[bus 00-ff]
    [0.734224]、共页:PCI:IO 0x20003000.0x20012fff -> 0x00000000
    [0.734246]、共页:PCI:MEM 0x20013000..0x2ffffff -> 0x20013000
    [0.835449] dra7-PCIe 51000000.PCIe:链路连接
    [0.835618] dra7-PCIe 51000000.PCIe:PCI 主机桥至总线0000:00
    [0.835631] PCI_BUS 0000:00:根总线资源[bus 00-ff]
    [0.835642] PCI_BUS 0000:00:根总线资源[IO 0x0000-0xFFF]
    [0.835652] PCI_BUS 0000:00:根总线资源[mem 0x20013000-0x2fffffff]
    [0.836027] PCI:总线0:禁用快速背对背传输
    [0.860249] PCI:总线1:禁用快速背对背传输
    [0.860415] PCI 0000:00:00.0:条0:已分配[mem 0x20100000-0x201fff]
    [0.860431] PCI 0000:00:00.0:条8:已分配[mem 0x20200000-0x202fff]
    [0.860443] PCI 0000:00:00.0:bar 1:已分配[mem 0x2000000-0x2002FFF]
    [0.860459] PCI 0000:01:00.0:条0:已分配[mem 0x20200000-0x20201fff 64位]
    [0.860514] PCI 0000:00:00.0:PCI 桥至[bus 01]
    [0.860527] PCI 0000:00:00.0:桥接窗口[mem 0x20200000-0x202fff]
    [0.860755] pcieport 0000:00:00.0:通过 PCIe PME 中断向 PME 发送信号
    [0.860765] PCI 0000:01:00.0:通过 PCIe PME 中断向 PME 发送信号
    [0.861887]未找到使用虚拟稳压器的背光电源

    下面显示了"lspci -v"输出、其中 PCI 桥的区域0和1的内存地址与 BAR0和 BAR1配置匹配、后面的内存与 BAR8匹配。 在 EP 侧、区域0的存储器位于0x20200000 (其中、BAR8开始)。

    root@am57xx-EVM:~# lspci -vv
    00:00.0 PCI 桥:德州仪器(TI)多核 DSP+ARM KeyStone II SOC (修订版01)(prog-if 00 [正常解码])
    控制:I/O+ MEM+ busmaster+ SpectrusCycle - MemWINV- VGASnoop- ParErr+ Stepping - SERR+ FastB2B- DiscINTx+
    状态:CAP+ 66MHz - UDF- FastB2B- ParErr- DEVSEL=FAST > TABORT-<TAbort- SERR-<PERR- INTx-
    延迟:0、缓存行大小:64字节
    中断:引脚 A 路由到 IRQ 438
    区域0:20100000 (32位、不可预取)的存储器[size=1M]
    区域1:20020000的存储器(32位、不可预取)[size=64K]
    总线:primary=00、secondary =01、subordinate=01、sec-latiter=0
    桥后内存:20200000-202fff

    01:00.0网络控制器:英特尔公司迅驰 Wireless-N 1000 [冷凝器峰值]
    子系统:英特尔公司迅驰 Wireless-N 1000 BGN
    控制:I/O- MEM+总线主控-频谱周期- MemWINV- VGASnoop- ParErr+步进- SERR+ FastB2B - DiscINTx-
    状态:CAP+ 66MHz - UDF- FastB2B- ParErr- DEVSEL=FAST > TABORT-<TAbort- SERR-<PERR- INTx-
    中断:引脚 A 路由至 IRQ 470
    区域0:20200000处的存储器(64位、不可预取)[size=8K]

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Gunter、

    我没有听到您的反馈。 客户问题是否已解决? 是否存在配置问题?
    谢谢!

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Rex:

    很抱歉、这需要更长的时间、但客户正在跟踪其某些电路板上的电源问题、因为并非所有电路板上都出现 OMAP-L3_NOC 错误。 修复电源问题还会导致 OMAP-L3_NOC 错误消失。

    现在、我们可以解决这个问题。

    感谢您提供有关 lspci -vv 和 BAR8说明的注释。 如果这些问题再次出现、我们将保留此信息。


    谢谢!
    -Gunter