主题中讨论的其他器件: XIO2001
您好!
我在定制电路板上使用 AM5749、其中我启用了第二个 PCIe 控制器(PCIe_SS2)以及 PCIe_SS1。
因此、每个控制器都使用单个 PCIe 通道。
我使用 TI 5.10内核、但也使用最新的上游内核6.1.8复制了这个问题。
&axi1{
状态="可以";
};
&PCIe2_RC{
状态="可以";
};
&PCIe2_phy{
状态="可以";
};
有时(相对容易重现)无法正确识别第二个 PCI 桥接器:
# lspci
0000:00:00.0 PCI 桥接器:德州仪器(TI)多核 DSP+ARM KeyStone II SOC (修订版01)
0000:01:00.0 PCI 桥接器:德州仪器 XIO2001 PCI Express 至 PCI 桥接器
0000:02:00.0未分配的分类[ff00]:Hilscher GmbH CIFX 50E-DP (M/S)
0001:00:00.0非 VGA 未分类器件:德州仪器(TI)多核 DSP+ARM KeyStone II SOC (修订版01)
该问题仅出现在 PCIe_SS2上。
实际上、总线报告的器件类为0x0:
[ 1212.493316] PCI 0001:00:00.0:[104C:8888] type 01 class 0x000000 <<<??? 韩语
[ 1212.493347] PCI 0001:00:00.0:寄存器0x10:[MEM 0x00000000-0x000fff pref]
[ 1212.493377] PCI 0001:00:00.0:寄存器0x14:[MEM 0x00000000-0x0000ffff pref]
[ 1212.493438] PCI 0001:00:00.0:支持 D1
[1212.493438] PCI 0001:00:00.0: D0 D1 D3hot 支持 PME#
[ 1212.517578] PCI:bus1:启用快速背对背传输
[1212.517608] PCI 0001:00:00.0:连接[bus 01]的 PCI 桥
在 dmesg 日志之前、我们有以下行:
[ 3.215606] dra7-PCIe 51800.PCIe:PHY 链路从未出现
此外、lspci 会报告"Invalid class 0000 for header type 01"、and yearly a issues of PCIe bar mapping (Memory at )
# lspci -nv
0001:00:00.0 0000:104C:8888 (修订版01)
!!! 标头类型01的类0000无效
flags:fast devsel、IRQ 255
上的闪存 (32位、可预取)[virtual][size=1m]<<<
上的闪存 (32位、可预取)[虚拟][size=64K]<<<
总线:主要=00、次要=01、从属=01、秒-延迟=0
桥后面的 I/O:[已禁用]
桥后面的内存:[已禁用]
桥后面的可预取存储器:[已禁用]
功能:[40]电源管理版本3
能力:[50] MSI:ENABLE- Count=1/1可屏蔽- 64位以上
功能:[70] Express Root Port (Slot-),MSI 00
功能:[100]高级错误报告
工作时、器件类为0x060400
[2.316070] PCI 0001:00:00.0:[104C:888] type 01 class 0x060400
还有 PCIe 链路:
[ 2.315917] dra7-PCIe 51800.PCIe:建立链路
# lspci
0000:00:00.0 PCI 桥接器:德州仪器(TI)多核 DSP+ARM KeyStone II SOC (修订版01)
0000:01:00.0 PCI 桥接器:德州仪器 XIO2001 PCI Express 至 PCI 桥接器
0000:02:00.0未分配的分类[ff00]:Hilscher GmbH CIFX 50E-DP (M/S)
0001:00:00.0 PCI 桥接器:德州仪器(TI)多核 DSP+ARM KeyStone II SOC (修订版01)
0001:01:00.0网络控制器:Qualcomm 设备1103 (修订版01)
我发现之前的一份报告与此类问题相关、但没有明确说明原因和解决方法:
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1017941/dra722-pcie-either-pcie1-or-pcie2-is-not-detected-properly
我注意到当我们遇到问题(来自 PCIECTRL_TI_CONF_DEVICE_CMD 寄存器)时 PCIe1和 PCIe2之间的 LTSSM 状态不同
# devmem2 0x51002104 w
在地址 0x51002104 (0xb6f0e104)处读取:0x00000045
# devmem2 0x51802104 w
在地址 0x51802104 (0xb6f67104):0x00000000 <<<
工作时:
# devmem2 0x51002104 w ; devmem2 0x51802104 w
在地址 0x51002104 (0xb6f73104)处读取:0x00000045
在地址 0x51802104 (0xb6f7b104):0x00000045处读取
我尝试删除和重新扫描 PCI 总线、但未成功:
echo "1">/sys/bus/pci/devices/0001 \:00\:00.0/remove;SLEEP 1;echo "1">/sys/bus/pci/rescan
在6.1.8内核上、这会使系统崩溃:
[142.966583] PCI 0000:01:00.0:PCI 桥接器至[bus 02]
[ 142.971588] PCI 0000:01:00.0: 桥接窗口[mem 0x20200000-0x202fff]
[142.985382] PCI 0001:01:00.0:[17cb:1103] type 00 class 0x028000
[ 142.991485] PCI 0001:01:00.0:寄存器0x10:[MEM 0x00000000-0x001fff 64位]
[142.998779] PCI 0001:01:00.0: D0 D3hot D3cold 支持 PME#
[ 143.005035] PCI 0001:01:00.0:4000 Gb/s 可用 PCIe 带宽、受0001:00:00.0下5.0 GT/s PCIe x1链路限制(支持7.876 Gb/s、带8.0 GT/s PCIe x1链路)
[143.044342] PCI 0001:01:00.0:栏0:已分配[mem 0x00200000-0x003fff 64bit]
[143.051757] PCI 0001:00:00.0: PCI 桥接器至[bus 01]
[ 143.056793] PCI 0001:00:00.0: 桥接窗口[mem 0x00200000-0x003fff]
[ 143.063995] ath11k_PCI 0001:01:00.0:bar 0:已分配[mem 0x00200000-0x003ffff 64位]
[143.072052] PCI 0001:00:00.0:无法启用设备:bar 0 [mem 0x00000000-0x000fff pref]未声明
[ 143.081359] PCI 0001:00:00.0:启用网桥(-22)时出错,继续
[ 143.087890] ath11k_PCI 0001:01:00.0:启用设备(0000 -> 0002)
在 ath11k 驱动程序不支持 Qualcomm 模块的5.10内核上、lspci 能够列出该模块、但仍然无法正确检测到 PCI 桥(非 VGA 未分类设备)
# lspci
0000:00:00.0 PCI 桥接器:德州仪器(TI)多核 DSP+ARM KeyStone II SOC (修订版01)
0000:01:00.0 PCI 桥接器:德州仪器 XIO2001 PCI Express 至 PCI 桥接器
0000:02:00.0未分配的分类[ff00]:Hilscher GmbH CIFX 50E-DP (M/S)
0001:00:00.0非 VGA 未分类器件:德州仪器(TI)多核 DSP+ARM KeyStone II SOC (修订版01)
0001:01:00.0网络控制器:Qualcomm 设备1103 (修订版01)
你有什么线索吗?
此致、
Romain