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.

[参考译文] TDA4VM:一些 PCIe 问题

Guru**** 2416110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1525866/tda4vm-some-pcie-questions

器件型号:TDA4VM

工具/软件:

您好、

  在最近的测试中、我发现当 PCIe 未成功安装时、未调用 MVL 驱动程序中的探头功能。 因此,我们怀疑可能有与 MVL 芯片的连接,我们目前正在

与 MVL 制造商的通信。

  如果您有任何新的建议、请告诉我。

此致、

Yang

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

    尊敬的 Yang:

    感谢您创建新的 E2E 主题。 最后一个线程、我已分配给我们的硬件团队、看看他们是否可以做出响应、但看起来他们没有看过。 我会尝试向他们发送消息、看看他们是否也可以响应这个新主题。

    在软件方面、任何 PCIe 设备驱动程序都将使用从 通用 标准 PCIe 空间获得的供应商 ID (VID) 和设备 ID (DID) 来确定要使用哪个设备驱动程序。 如果在启动设备时有时出现 PCIe 问题、但并非始终出现、则可能是 硬件问题(不过,这种情况非常少见)。

    但是、与制造商进行检查是一个很好的步骤。

    此致、

    Takuma

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

    您好、

      添加补丁后、我们确保在不识别 PCIe 器件的情况下它不会进入 init 函数、以避免内核错误问题。 不过、

    链路接通后、问题仍然出现。 您能帮我们看一下吗? 在禁止核查过程中似乎出现了冻结。

    e2e.ti.com/.../PCIE_2D00_Kernel-Panic.txt

    e2e.ti.com/.../PCIE_5F00_normal.txt

    下面是补丁:

    e2e.ti.com/.../pcie.diff

    此致、

    Yang

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

    尊敬的 Yang:

     调用栈中的最后一个重要函数是 pci_generic_config_read。 由于它是在 BAR 初始化期间发生的、我猜它正在尝试读取 BAR 寄存器。  如果读取 PCIe 器件发生在不应访问的某个位置(例如,PCIe 器件未就绪、读取到 PCIe 器件的内存,或某些无效的内存位置)、则总线错误可能会触发您看到的 SError 响应。 由于在上一个线程中您看到链路断开日志、我认为 PCIe 器件在条形码初始化期间突然被禁用。 这是因为,我不确定。

    在一个稍微不同的主题中、您 提到的问题出现了 1/20 次、但是否所有板上都出现了此速率? 还是仅 1 块板显示了该问题?

    此致、

    Takuma

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

    您好、

    在一个稍微不同的主题上、您 提到的问题是看到了 1/20 次的、但是否所有板上都看到了这一速率? 还是只有一个显示此问题的板?

      在多个电路板上进行测试时会出现相同的问题、且概率非常接近。

      

     我在论坛上发现了一个类似的问题。 我使用了修改后的文章,但仍然未能解决的问题。

      e2e.ti.com/.../faq-j721exsomxevm-how-to-work-around-errata-i2086-for-pcie-switches-and-multifunction-devices-for-j721e-tda4vm-dra829

    此致、

    Yang

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

    您好、

      PCIe 中的内核紧急问题应已修复或屏蔽。 目前、我的测试不会重现问题。

     但我想问的是、您对 PCI 桥接概率安装故障的问题有什么想法吗? 或者、您能告诉我在哪里可以识别? 我不知道你能不能

    将延迟或重试操作添加到已识别的位置。

    令人遗憾的是、

    Yang

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

    尊敬的 Yang:

    PCIe 中的内核严重问题应已修复或掩蔽。 目前、我的测试不会重现问题。

    解决方法是什么?

    至于 安装失败的原因、我不确定。 我曾尝试联系我们的硬件团队、看看他们是否可以从硬件的角度发表一些评论、但到目前为止、没有评论。

    为了给您一些尝试的想法、下面是 PCI-SIG 规范的屏幕截图、其中显示了初始上电的时序:

    您 可以 尝试:

    1. 增加 PERST 置为无效时间(也即,2. 上图中的 TPVPERL)。 这就是这里的 msleep: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/pci/controller/cadence/pci-j721e.c?h=ti-linux-6.12.y#n684
    2. 增加 PCIe 链路处于活动状态之前的时间(也称为,4. 如上图所示)。 也就是在 PERST 信号置为无效之后、因此在 msleep 并设置 GPIO 值之后、您可以再设置一次延迟。

    通常、100ms 应该足以让 PERST 置为无效时间。 我们在驱动器中的时序很少出现问题。 但是,如果你是出于想法,你可以尝试上面的实验。  

    此致、

    Takuma

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

    您好、

    一般来说、100ms 应该足以让 PERST 置为无效时间。 我们在驱动器中的时序很少出现问题。 但是,如果你是出于想法,你可以尝试上面的实验。  [/报价]

     谢谢你。 我将尝试看看在这些天是否有不同的现象。

    修复方法是什么?

     我找到了关于内核恐慌问题的前一篇文章:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1234995/dra829v-connection-between-dra829-and-pcie-sw-pi7c9x3g1632gp-again/4748057#4748057

    添加了以下两个补丁:

    e2e.ti.com/.../0001_2D00_Testing_2D00_return_2D00_from_2D00_ea_2D00_handler_2D00_for_2D00_debug_2D00_purposes.diff

    e2e.ti.com/.../0001_2D00_Temporary_2D00_workaround_2D00_to_2D00_disable_2D00_kernel_2D00_panic_2D00_for_2D00_pci.diff

    此致、

    Yang

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

    尊敬的 Yang:

    好的、明白。 这些补丁适用于勘误表 i2086、其中 SoC 假定从 PCIe 器件收到 UR(不支持的请求)响应时存在不可恢复的总线错误。 UR 响应始终是为 PCIe 交换机(可以连接多个 PCIe 设备的交换机,不要与网络交换机混淆)或具有多个但少于 6 个功能的多功能设备创建的。 对于普通网卡、通常不会出现此问题。

    但是、如果权变措施有效并且 PCIe 设备得到了正确枚举、则很可能是您的设备出现了勘误表 i2086。  

    此致、

    Takuma

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

    您好、

      对于 PCIe 未连接的问题、我想知道是否可以让 PCIe 在通电后再次识别 PCI 桥接器件? 类似于 HOT

    交换操作。

    例如、我可以重置 MVL 开关、然后在 TDA4 上重新运行 PCI 桥接器件识别过程吗?

    此致、

    Yang

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

    尊敬的 Yang:

    是的、可以扫描 PCIe 总线。 不过、它是否工作取决于所连接的 PCIe 设备是否支持热插拔。

    • 这应在运行时扫描 PCIe 总线: Echo 1 >/sys/bus/pci/rescan

    如果需要移除 PCIe 设备、 在总线 0、设备 0、函数 0 上移除 PCIe 设备的示例将是  echo 1 >/sys/bus/pci/devices/0000 \:00\:00.0/remove

    此致、

    Takuma

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

    您好、

      有个好消息。 将 TDA4 的 PCIe 设置为 Gen1 后、将不再出现无法安装 PCIe 的问题。 你认为是这样的原因

    现象?

    此致、

    Yang

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

    尊敬的 Yang:

    可能已完成勘误表。 或者、可能存在一些信号完整性问题。  

    当遇到勘误表时、问题通常更频繁。 因此、这种情况很少见、但信号可能存在一些完整性问题?

    此致、

    Takuma

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

    尊敬的 Yang:

    在您的电路板上可能很难做到、但是否可以捕获一些眼图?

    由于问题很少出现、而忽略总线错误的补丁会改善观察到的行为、而设置到 Gen1 速度会使无法安装 PCIe 的问题消失、这些都是可能与信号完整性相关的行为。 具体来说、总线错误可能是由因信号完整性问题而导致的格式错误的数据包引起 的 、这可能会产生 UR 响应、而 Gen1 速度会放宽一些信号要求。  获得眼图后、您 可以参考 PCI-SIG 的“PCI Express 卡机电规范修订版 3.0“、该规范 包含 PCIe 标准的定义、指明了每个不同 PCIe Gen 速度的眼图应该是什么样的。  

    此致、

    Takuma