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.

[参考译文] TMS320C6674:定制 PCIe 板与放大器;总线复位

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/954382/tms320c6674-custom-pcie-board-bus-reset

器件型号:TMS320C6674
主题中讨论的其他器件:XIO2000A

您好!

我们拥有基于 C6674的定制 PCIe 板。 我们正在尝试在 Linux KVM/QEMU 虚拟机中使用该设备。 在主机 Linux 计算机上、有 vfio 内核模块。 启动虚拟机后,Vfio 会调用 Linux 内核 PCI_try_reset_bus (kernel.org) 来执行总线重置。 此时设备消失。 主机上的 lspci 会显示:

 

# lspci -v -s 11:00.0

11:00.0多媒体控制器:德州仪器(TI)器件 b005 (修订版 ff)(prog-if ff)

       !!! 未知的标头类型7f

       正在使用的内核驱动程序:vfio-pci

 

PCI 配置空间看起来只是0xFFFF FFFF。

 如果将“quirk”添加到 Linux 内核驱动程序/pci/quirk.c 以防止总线复位

 

decled_pci_fixup_header (pci_vender_ID_TI、bb005、quirk_no_bus_reset);

 

设备显示在虚拟机中,可以访问该设备。

C6674是否应支持通过 PCIe 进行总线重置? 或者有什么想法、可能会出什么问题?

BR、Antti

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

    你(们)好  

    我们仍在对此进行研究。 是否有任何更新或从 您身边突破? 要共享的任何其他调试日志。  
    有一个简短的问题-当您通过 Linux 主机执行总线复位时、您是否在 c6674上看到任何器件中断?

    此致
    Mukul  

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

    您好!

    感谢您的更新。 遗憾的是、在执行总线复位时、Linux 内核没有太多的调试日志。 我们是否可以从器件本身中查看 JTAG/CCS 的内容?

    在执行总线复位时、我们看不到器件中断。

    BR、Antti  

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

    你好,Antti

    很抱歉、在对规范进行一些内部挖掘后、我从子系统规范中了解到热复位事件需要通过软件对子系统进行复位。  我认为 TI 提供的软件不会基于热复位来复位 PCIe 子系统。  

    因此、我们似乎实际上不支持热复位功能  

    我认为最好查看是否可以防止上游发送 PCIe 热复位。  

    此致

    Mukul  

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

    您好、Mukul、

    感谢您提供信息。

    在 Linux 内核 驱动程序/pci/quirk.c 中添加一行可防止总线复位。

    decled_pci_fixup_header (pci_vender_ID_TI、bb005、quirk_no_bus_reset);  

    那么、TI 是否可以将其作为 Linux 内核的补丁提交?

    BR、Antti

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

    您好、Antti、  

    很抱歉、我在与 Linux 团队就此问题进行讨论后忘记发布对此问题的响应。  

    下面是 git buggling 所处理的信息字节。

    TI XIO2000A PCIe-PCI 桥接器的一个奇怪之处是由 NI 提供

    提交1f56f4a2b4d12c1c348cab23024396ec7cddc
    作者:Gabe Black
    日期:  2009年10月6日09:19:45 2009 - 0500

       PCI 怪事:TI XIO200a 错误地报告了对快速 B2B 传输的支持
       
       这个奇怪的情况将禁用次级总线上的快速背靠背传输
       TI 桥接器的一部分。
       
       签字人:Gabe Black
       签字人:Jesse Barnes

    另一个问题是 TI

    提交63c4408074cbcc070ac17fc10e524800eb9bd0b0
    作者:Hemant Pedanekar
    日期:  2011年4月5日星期二12:32:50 +0530

       PCI:添加用于设置 TI816X 端点的有效类的查询
       
       配置的 TI816X (DM816x/C6A816x/AM389x 系列的通用名称)器件
       引导、因为 PCIe 端点的类代码= 0。 这使得内核 PCI 总线成为问题
       跳过为这些器件分配条形图的代码、从而导致以下情况
       尝试启用时的错误类型:
       
       "由于资源冲突、设备0000:01:00.0不可用"
       
       由于上述问题、无法操作设备。
       
       此补丁添加了特定 ID (基于 TI 供应商 ID 和816X 器件 ID)
       "早期"修复程序、将类代码替换为
       PCI_class_multimedia 视频作为类。
       
       签字人:Hemant Pedanekar
       签字人:Jesse Barnes

    鉴于 PCIESS 自动禁用 LTSSM、可以添加 quirk_no_bus_reset。

    我们是否可以请求您直接上传此内容、因为您已经进行了正常设置、因此您可以重现此问题。 (如 NI 为 TI 器件发送了补丁)。

    我目前无法提交 TI 直接提交任何此类补丁。

    由此给您带来的不便、我们深表歉意。 但愿这对您有所帮助。

    此致

    Mukul  

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

    我们仍有关于热复位支持的技术问题。 C6674是否在某个地方记录不支持通过 PCIe 进行热复位? 或者、这是否是一些新发现、尚未添加到勘误表中?

    了解 KeyStone 架构外设组件快速互连(PCIe) https://www.ti.com/lit/ug/sprugs6d/sprugs6d.pdf?ts=1590390155122 第1.4.4章

    PCIESS 支持 PCI Express 规范中指定的传统复位机制。

     和 PCI ExpressRegistered基本规范修订版本2.0节中的术语和首字母缩略词

     传统复位   热、热或冷复位。 不同于功能级复位(FLR)。

    如果 TI 能够对其进行上游处理、并且100%确信通过 PCIe 的 C6674上没有热复位、我们将不胜感激。

    BR、Antti

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

    c6674没有热复位。 这不是一个浏览档案的新发现,但在将其转移到勘误表方面似乎是一个疏忽。 我无法跟踪为什么这一情况从未出现在勘误表中的原因(用户指南将反映预期的功能行为、并且是正确的、勘误表-建议或使用说明部分应已捕捉到此限制)。  

    同样、TI 也没有计划进行上游开发。

    我们不针对此器件系列进行任何新的软件开发/增强。

    我们只会评估因业务机会而被权衡的需求基础上至关重要的软件错误修复。  

    对此可能造成的不便、我深表歉意。  

    我将调查勘误表上的纠正措施-并查看下一季度发布调查后是否可以更新该措施。  

    此致

    Mukul