Radeon RX 7900 XTX eGPU problem with frame.work built-in display

Radeon RX 7900 XTX eGPU problem with frame.work built-in display

( Posting here in case somebody in the community can help and also in case somebody else will have similar problem. But I am also sending an email to support )

Current problems:

Very low fps for anything displayed on the built-in laptop display:
studdering KDE animations, capped 30fps in Black Myth: Wukong Benchmark
But - disabling built-in display and only looking at external display connected to GPU output port
~80fps in MB:W Benchmark and no visible problems with KDE animations

I think this could be related to PCIe bridge, but I am not very experienced with hardware (as software engineer)

I tried searching for PCI related settings in BIOS and didn’t find anything useful.
Only something about USB-4 devices check on startup, which i tried disabling for no result

My specs are:

  1. framework 13 - Ultra 7 165H, Display: 2.8K

  2. eGPU enclosure - Sonnet eGPU-Breakaway-Box-750ex

  3. Linux:

sb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.2 LTS
Release:        24.04
Codename:       noble
uname -srm
Linux 6.11.0-17-generic x86_64
  1. bios:
sudo dmidecode 
# dmidecode 3.5
Getting SMBIOS data from sysfs.
SMBIOS 3.6 present.
# SMBIOS implementations newer than version 3.5.0 are not
# fully supported by this version of dmidecode.
53 structures occupying 4159 bytes.
Table at 0x5CDEE000.


Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
        Vendor: INSYDE Corp.
        Version: 03.04
        Release Date: 10/09/2024
        ROM Size: 16 MB
        Characteristics:
                PCI is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                8042 keyboard services are supported (int 9h)
                CGA/mono video services are supported (int 10h)
                ACPI is supported
                USB legacy is supported
                BIOS boot specification is supported
                Targeted content distribution is supported
                UEFI is supported
        BIOS Revision: 3.4
  1. GPU is successfully set to external with “all-ways-egpu”:
glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon RX 7900 XTX (radeonsi, navi31, LLVM 19.1.1, DRM 3.59, 6.11.0-17-generic)

inspecting speed of PCI connections

info from lspci
I tried figuring out source of low speed
both with and without custom modeprobe.d file for amd card
( mentioned here : win3-resources/docs/eGPU.md at master - quad/win3-resources - Forgejo )

#+begin_src

lspci -tv
-[0000:00]-+-00.0  Intel Corporation Device 7d01
           +-02.0  Intel Corporation Meteor Lake-P [Intel Graphics]
           +-04.0  Intel Corporation Device 7d03
           +-07.0-[01-2a]--
           +-07.1-[2b-54]----00.0-[2c-54]--+-01.0-[2d-2f]----00.0-[2e-2f]----00.0-[2f]--+-00.0  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M]
           |                               |                                            \-00.1  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 HDMI/DP Audio
           |                               \-04.0-[30-54]----00.0-[31-54]--+-00.0-[32]----00.0  Intel Corporation I210 Gigabit Network Connection
           |                                                               +-01.0-[33]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
           |                                                               \-02.0-[34-54]----00.0  Intel Corporation JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016]
           +-07.2-[55-7e]--
           +-07.3-[7f-a8]--
           +-08.0  Intel Corporation Device 7e4c
           +-0a.0  Intel Corporation Device 7d0d
           +-0b.0  Intel Corporation Meteor Lake NPU
           +-0d.0  Intel Corporation Meteor Lake-P Thunderbolt 4 USB Controller
           +-0d.2  Intel Corporation Meteor Lake-P Thunderbolt 4 NHI #0
           +-0d.3  Intel Corporation Meteor Lake-P Thunderbolt 4 NHI #1
           +-14.0  Intel Corporation Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller
           +-14.2  Intel Corporation Device 7e7f
           +-15.0  Intel Corporation Meteor Lake-P Serial IO I2C Controller #0
           +-15.1  Intel Corporation Meteor Lake-P Serial IO I2C Controller #1
           +-16.0  Intel Corporation Device 7e70
           +-19.0  Intel Corporation Meteor Lake-P Serial IO I2C Controller #4
           +-19.1  Intel Corporation Meteor Lake-P Serial IO I2C Controller #5
           +-1c.0-[a9]----00.0  Sandisk Corp WD Black SN770 / PC SN740 256GB / PC SN560 (DRAM-less) NVMe SSD
           +-1c.5-[aa]----00.0  Intel Corporation Wi-Fi 6E(802.11ax) AX210/AX1675* 2x2 [Typhoon Peak]
           +-1f.0  Intel Corporation Device 7e02
           +-1f.3  Intel Corporation Meteor Lake-P HD Audio Controller
           +-1f.4  Intel Corporation Meteor Lake-P SMBus Controller
           \-1f.5  Intel Corporation Meteor Lake-P SPI Controller
efim-nefedov@LL421000D:~$ cd ../ANY-21120-writing-live-reports-dashboards-into-weaver/^C
efim-nefedov@LL421000D:~$ sudo lspci -vv -s 2f:00.0 | grep "Lnk\|Thunderbolt\|Radeon"
[sudo] password for efim-nefedov: 
2f:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] (rev c8) (prog-if 00 [VGA controller])
        Subsystem: Tul Corporation / PowerColor Navi 31 [Radeon RX 7900 XT/7900 XTX]
                LnkCap: Port #0, Speed 16GT/s, Width x16, ASPM L1, Exit Latency L1 <1us
                LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
                LnkSta: Speed 16GT/s, Width x16
                LnkCap2: Supported Link Speeds: 2.5-16GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
                LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis-
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-
efim-nefedov@LL421000D:~$ sudo lspci -vv -s 2e:00.0 | grep "Lnk\|Thunderbolt\|Radeon"
                LnkCap: Port #0, Speed 16GT/s, Width x16, ASPM L1, Exit Latency L1 <1us
                LnkCtl: ASPM Disabled; Disabled- CommClk+
                LnkSta: Speed 16GT/s, Width x16
                LnkCap2: Supported Link Speeds: 2.5-16GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
                LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -3.5dB
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-
efim-nefedov@LL421000D:~$ sudo lspci -vv -s 2d:00.0 | grep "Lnk\|Thunderbolt\|Radeon"
                LnkCap: Port #0, Speed 16GT/s, Width x16, ASPM L1, Exit Latency L1 <64us
                LnkCtl: ASPM Disabled; Disabled- CommClk+
                LnkSta: Speed 8GT/s (downgraded), Width x4 (downgraded)
                LnkCap2: Supported Link Speeds: 2.5-16GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
                LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis-
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-
efim-nefedov@LL421000D:~$ sudo lspci -vv -s 2c:01.0 | grep "Lnk\|Thunderbolt\|Radeon"
2c:01.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02) (prog-if 00 [Normal decode])
        Subsystem: Sonnet Technologies, Inc. JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]
        Capabilities: [ac] Subsystem: Sonnet Technologies, Inc. JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]
                LnkCap: Port #1, Speed 8GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <2us, L1 <4us
                LnkCtl: ASPM Disabled; Disabled- CommClk+
                LnkSta: Speed 8GT/s, Width x4
                LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -3.5dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-
efim-nefedov@LL421000D:~$ sudo lspci -vv -s 2b:00.0 | grep "Lnk\|Thunderbolt\|Radeon"
2b:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02) (prog-if 00 [Normal decode])
        Subsystem: Sonnet Technologies, Inc. JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]
        Capabilities: [ac] Subsystem: Sonnet Technologies, Inc. JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]
                LnkCap: Port #0, Speed 2.5GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <2us, L1 <4us
                LnkCtl: ASPM Disabled; Disabled- CommClk+
                LnkSta: Speed 2.5GT/s, Width x4
                LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-
efim-nefedov@LL421000D:~$ sudo lspci -vv -s 00:07.1 | grep "Lnk\|Thunderbolt\|Radeon"
00:07.1 PCI bridge: Intel Corporation Meteor Lake-P Thunderbolt 4 PCI Express Root Port #1 (rev 10) (prog-if 00 [Normal decode])
        Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCap: Port #17, Speed 2.5GT/s, Width x4, ASPM L1, Exit Latency L1 <16us
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkSta: Speed 2.5GT/s, Width x4
                LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
        Capabilities: [90] Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-

#+end_src

and this limit is the same 2.5 regardless of which usb-c ports out of 4 on the laptop i use:

right, closer to screen

#+begin_src

lspci -tv
-[0000:00]-+-00.0  Intel Corporation Device 7d01
           +-02.0  Intel Corporation Meteor Lake-P [Intel Graphics]
           +-04.0  Intel Corporation Device 7d03
           +-07.0-[01-2a]--
           +-07.1-[2b-54]--
           +-07.2-[55-7e]----00.0-[56-7e]--+-01.0-[57-59]----00.0-[58-59]----00.0-[59]--+-00.0  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M]
           |                               |                                            \-00.1  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 HDMI/DP Audio
           |                               \-04.0-[5a-7e]----00.0-[5b-7e]--+-00.0-[5c]----00.0  Intel Corporation I210 Gigabit Network Connection
           |                                                               +-01.0-[5d]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
           |                                                               \-02.0-[5e-7e]----00.0  Intel Corporation JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016]

#+end_src

and the first one is
#+begin_src

sudo lspci -vv -s 00:07.2 | grep "Lnk\|Thunderbolt\|Radeon"
00:07.2 PCI bridge: Intel Corporation Meteor Lake-P Thunderbolt 4 PCI Express Root Port #2 (rev 10) (prog-if 00 [Normal decode])
        Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCap: Port #18, Speed 2.5GT/s, Width x4, ASPM L1, Exit Latency L1 <16us
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkSta: Speed 2.5GT/s, Width x4
                LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
        Capabilities: [90] Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-

#+end_src

left, closer to screen

#+begin_src

lspci -tv
-[0000:00]-+-00.0  Intel Corporation Device 7d01
           +-02.0  Intel Corporation Meteor Lake-P [Intel Graphics]
           +-04.0  Intel Corporation Device 7d03
           +-07.0-[01-2a]--
           +-07.1-[2b-54]----00.0-[2c-54]--+-01.0-[2d-2f]----00.0-[2e-2f]----00.0-[2f]--+-00.0  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M]
           |                               |                                            \-00.1  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 HDMI/DP Audio
           |                               \-04.0-[30-54]----00.0-[31-54]--+-00.0-[32]----00.0  Intel Corporation I210 Gigabit Network Connection
           |                                                               +-01.0-[33]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
           |                                                               \-02.0-[34-54]----00.0  Intel Corporation JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016]
#+end_src
#+begin_src
sudo lspci -vv -s 00:07.1 | grep "Lnk\|Thunderbolt\|Radeon"
[sudo] password for efim-nefedov: 
00:07.1 PCI bridge: Intel Corporation Meteor Lake-P Thunderbolt 4 PCI Express Root Port #1 (rev 10) (prog-if 00 [Normal decode])
        Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCap: Port #17, Speed 2.5GT/s, Width x4, ASPM L1, Exit Latency L1 <16us
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkSta: Speed 2.5GT/s, Width x4
                LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
        Capabilities: [90] Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-

#+end_src

left, closer to touchpad:

#+begin_src
lspci -tv

-[0000:00]-+-00.0  Intel Corporation Device 7d01
           +-02.0  Intel Corporation Meteor Lake-P [Intel Graphics]
           +-04.0  Intel Corporation Device 7d03
           +-07.0-[01-2a]----00.0-[02-2a]--+-01.0-[03-05]----00.0-[04-05]----00.0-[05]--+-00.0  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M]
           |                               |                                            \-00.1  Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 HDMI/DP Audio
           |                               \-04.0-[06-2a]----00.0-[07-2a]--+-00.0-[08]----00.0  Intel Corporation I210 Gigabit Network Connection
           |                                                               +-01.0-[09]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
           |                                                               \-02.0-[0a-2a]----00.0  Intel Corporation JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016]

#+end_src

#+begin_src

sudo lspci -vv -s 00:07.0 | grep "Lnk\|Thunderbolt\|Radeon"
00:07.0 PCI bridge: Intel Corporation Meteor Lake-P Thunderbolt 4 PCI Express Root Port #0 (rev 10) (prog-if 00 [Normal decode])
        Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCap: Port #16, Speed 2.5GT/s, Width x4, ASPM L1, Exit Latency L1 <16us
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                LnkSta: Speed 2.5GT/s, Width x4
                LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
        Capabilities: [90] Subsystem: Framework Computer Inc. Meteor Lake-P Thunderbolt 4 PCI Express Root Port
                LnkCtl3: LnkEquIntrruptEn- PerformEqu-

#+end_src

after looking at each node it looks like 00:07.1 only capable of 2.5GT/s

and it looks like it is on the laptop side

i found this detailed note about fix already mentioned in several of framework community posts

options amdgpu pcie_gen_cap=0x40000

this does not help.
and in the comments of a github snippet: legion-go-tricks/resources/egpu-pcie3speed.conf at main · aarron-lee/legion-go-tricks · GitHub
it says:
#+begin_quote

it turns out it was most likely the amdgpu driver detecting the weakest link
in the chain and setting itself to 2.5 GT/s
#+end_quote

so maybe those ports should advertise only 2.5?
if so - i do not understand where should I look for the root cause
since all other ports already report higher speeds

udo dmesg | grep limited
[   19.994580] pci 0000:2b:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:00:07.1 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[   19.999134] pci 0000:2d:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:00:07.1 (capable of 252.048 Gb/s with 16.0 GT/s PCIe x16 link)
[   20.001053] pci 0000:2f:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:00:07.1 (capable of 252.048 Gb/s with 16.0 GT/s PCIe x16 link)
[   20.002699] pci 0000:30:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:00:07.1 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[   20.019018] pci 0000:34:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:00:07.1 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)

Ending questions:

  1. Do I actually have a problem with root PCI ports? Or others with eGPU see same speeds on the root nodes?
  2. What can I check \ try to figure out the root problem?
    Since eGPU seems to be working and functioning quite well for external display

I have the same problem in Fedora with my 13 12th gen, in Windows it works fine with 8GT/s PCIe 3.0 speed, so it’s likely not a hardware issue.

  1. Measure your actual thunderbolt bandwidth with a bandwidth test as lspci doesn’t report an accurate value for thunderbolt and USB4 connections. A similar question was asked and answered in this issue: Determining egpu connection speed. · Issue #37 · ewagner12/all-ways-egpu · GitHub
  2. The root problem of the built-in display lagging may not be the bandwidth. Assuming the bandwidth test looks ok it probably comes down to the specifics of your wayland compositor and how it handles display scanout
1 Like

Thank you for the tips!

I’ve tried to start a benchmark as described in the Determining egpu connection speed. · Issue #37 · ewagner12/all-ways-egpu · GitHub

but my result - operation of writing into amdgpu_benchmark is not allowed even under root:

sudo lspci | grep 7900
2f:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] (rev c8)
efim-nefedov@LL421000D:~$ sudo -i
root@LL421000D:~# ls -la /sys/kernel/debug/dri/0000\:2f\:00.0/amdgpu_benchmark 
--w------- 1 root root 0 Feb 18 09:05 /sys/kernel/debug/dri/0000:2f:00.0/amdgpu_benchmark
root@LL421000D:~# echo 4 > /sys/kernel/debug/dri/0000\:2f\:00.0/amdgpu_benchmark 
-bash: /sys/kernel/debug/dri/0000:2f:00.0/amdgpu_benchmark: Operation not permitted

I will go and search only for other ways to benchmark the speed of connection, for now don’t have any leads

( the same post also references clpeak so i’ll look into that )

To the note about possible problem in the compositor - i will also try to check how things work in X-11 kde session with a different eGPU switcher. (also thank you for the suggestion)