TheTumultuousUnicornOfDarkness / CPU-X

CPU-X is a Free software that gathers information on CPU, motherboard and more
https://thetumultuousunicornofdarkness.github.io/CPU-X
GNU General Public License v3.0
2.05k stars 134 forks source link

X470 Master SLI PCIe Gen 4 ? #335

Closed kswit closed 2 months ago

kswit commented 3 months ago

Describe the bug/Expected behavior CPU-X in the 'graphics' tab shows the interface speed 'PCIe Gen4x16 (current) / Gen4x16 (max)' while 'sudo lspci -s 0c:00.0 -vvv' shows Capabilities: [410 v1] Physical Layer 16.0 GT/s < ?> The current PCI bus speed 0000:00:03.1 is 8.0 GT/s which means PCIe Gen 3 while GPU 0000:0c:00.0 has a max speed of 16GT/s which means PCIe Gen 4.

Additional information

Bug information The motherboard is ASRock X470 Master SLI which does not support PCIE Gen 4 CPU AMD Ryzen 5 2600x GPU AMD Radeon RX 6700 XT

kernel: pci 0000:0c:00.0: 126.016 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x16 link at 0000:00:03.1 (capable of 252.048 Gb/s with 16.0 GT/s PCIe x16 link)

TheTumultuousUnicornOfDarkness commented 2 months ago

AMD Ryzen 5 2600X is Zen 1 and according to AMD, this CPU supports PCIe 3.0 x16. PCIe 4.0 was introduced with Zen 2. AMD X470 chipset only supports PCIe 3.0 too.

So you are right, something is wrong on CPU-X side, I need to investigate.

TheTumultuousUnicornOfDarkness commented 2 months ago

I own a AMD Radeon RX 7800 XT (PCIe 4.0) with a AMD Ryzen 3600X (PCIe 4.0) on a MSI B450M MORTAR MAX, but according to my MB specs, the PCIe slot is 3.0 x16. I did not realize this issue before.

I found interesting information here: https://gitlab.freedesktop.org/drm/amd/-/issues/1967 The kernel reports 16 GT/s (AKA PCIe 4.0) for this link but AMDGPU reports 8 GT/s (AKA PCIe 3.0) in my case:

$ head -v /sys/bus/pci/devices/*/drm/card*/device/{current_link_speed,max_link_speed,pp_dpm_pcie}
==> /sys/bus/pci/devices/0000:28:00.0/drm/card1/device/current_link_speed <==
16.0 GT/s PCIe

==> /sys/bus/pci/devices/0000:28:00.0/drm/card1/device/max_link_speed <==
16.0 GT/s PCIe

==> /sys/bus/pci/devices/0000:28:00.0/drm/card1/device/pp_dpm_pcie <==
0: 2.5GT/s, x1 78Mhz
1: 5.0GT/s, x4 156Mhz
2: 8.0GT/s, x16 623Mhz *

I think I will try to parse pp_dpm_pcie file before if available.

kswit commented 2 months ago

Some information regarding PCIe speeds:

head -v /sys/bus/pci/devices/*/drm/card*/device/{current_link_speed,max_link_speed,pp_dpm_pcie}
==> /sys/bus/pci/devices/0000:0c:00.0/drm/card1/device/current_link_speed <==
16.0 GT/s PCIe

==> /sys/bus/pci/devices/0000:0c:00.0/drm/card1/device/max_link_speed <==
16.0 GT/s PCIe

==> /sys/bus/pci/devices/0000:0c:00.0/drm/card1/device/pp_dpm_pcie <==
0: 2.5GT/s, x1 310Mhz 
1: 8.0GT/s, x16 619Mhz *