AMD Graphics and Driver Issues

Hey folks, total Linux noob here. I have a fresh installation of Fedora Workstation 40 running on a Lenovo Z41-70. While trying to boot the live USB for installation, I just got a black screen. It only worked after adding nomodeset in one of the run commands. I installed Fedora and now everything seems to be going fine. However, when I connect my computer to my Samsung monitor via HDMI, it appears Fedora does not recognize it (inxi -Fzxx):

Graphics:
  Device-1: Intel HD Graphics 5500 vendor: Lenovo driver: N/A arch: Gen-8
    bus-ID: 00:02.0 chip-ID: 8086:1616
  Device-2: AMD Topaz XT [Radeon R7 M260/M265 / M340/M360 M440/M445 530/535
    620/625 Mobile] vendor: Lenovo driver: N/A arch: GCN-3 pcie: speed: 5 GT/s
    lanes: 4 bus-ID: 04:00.0 chip-ID: 1002:6900
  Device-3: Syntek Lenovo EasyCamera driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 bus-ID: 1-6:6 chip-ID: 174f:14ee
  Display: server: X.Org v: 23.2.4 with: Xwayland v: 23.2.4
    compositor: gnome-shell driver: dri: swrast gpu: N/A display-ID: :0
    screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96
  Monitor-1: Unknown-1 mapped: None-1 res: 1920x1080 dpi: 96
  API: OpenGL v: 4.5 vendor: mesa v: 24.0.5 glx-v: 1.4 es-v: 3.2
    direct-render: yes renderer: llvmpipe (LLVM 18.1.1 256 bits)
    device-ID: ffffffff:ffffffff
  API: EGL Message: EGL data requires eglinfo. Check --recommends.

I am unable to connect to my monitor, possibly because of an apparent lack of a driver for my AMD graphics.

Here is my /etc/default/grub if that would be of any help:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="nomodeset rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

Thank you all in advance for your assistance.

The AMD Topaz XT appears to be a Graphics Core Next 1 (Southern Islands) card: Radeon 200 series - Wikipedia

Southern Islands support is disabled by default in the amdgpu driver:

$ modinfo -p amdgpu | grep si_support
si_support:SI support (1 = enabled, 0 = disabled (default)) (int)

You’ll need to manually enable support for your video card by adding amdgpu.si_support=1 to your kernel command line (instead of nomodeset): AMDGPU - ArchWiki

Edit: Actually, I’m not sure I’m reading the specs right. Is your laptop an older model from around 2015?

1 Like

I found a review of this model dated August, 2014, so a decade old.

1 Like

Yes, it is an older model. I only got my hands on it recently and it had Windows installed. It is actually surprisingly capable, being able to run various modern PC games at decent framerates. Here’s the full specs:

System:
  Kernel: 6.8.5-301.fc40.x86_64 arch: x86_64 bits: 64 compiler: gcc
    v: 2.41-34.fc40
  Desktop: GNOME v: 46.0 tk: GTK v: 3.24.41 wm: gnome-shell dm: GDM
    Distro: Fedora Linux 40 (Workstation Edition)
Machine:
  Type: Laptop System: LENOVO product: 80K5 v: Lenovo Z41-70
    serial: <superuser required> Chassis: type: 10 v: Lenovo Z41-70
    serial: <superuser required>
  Mobo: LENOVO model: Lenovo Z41-70 v: SDK0J40709 WIN
    serial: <superuser required>
    part-nu: LENOVO_MT_80K5_BU_idea_FM_Lenovo Z41-70 UEFI: LENOVO
    v: C2CN19WW(V2.00) date: 07/14/2015
Battery:
  ID-1: BAT1 charge: 23.9 Wh (100.0%) condition: 23.9/39.6 Wh (60.3%)
    volts: 16.7 min: 14.9 model: LENOVO PABAS0241231 serial: <filter>
    status: full
CPU:
  Info: dual core model: Intel Core i7-5500U bits: 64 type: MT MCP
    arch: Broadwell rev: 4 cache: L1: 128 KiB L2: 512 KiB L3: 4 MiB
  Speed (MHz): avg: 650 high: 800 min/max: 500/3000 cores: 1: 500 2: 800
    3: 800 4: 500 bogomips: 19199
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
  Device-1: Intel HD Graphics 5500 vendor: Lenovo driver: N/A arch: Gen-8
    bus-ID: 00:02.0 chip-ID: 8086:1616
  Device-2: AMD Topaz XT [Radeon R7 M260/M265 / M340/M360 M440/M445 530/535
    620/625 Mobile] vendor: Lenovo driver: N/A arch: GCN-3 pcie: speed: 5 GT/s
    lanes: 4 bus-ID: 04:00.0 chip-ID: 1002:6900
  Device-3: Syntek Lenovo EasyCamera driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 bus-ID: 1-6:5 chip-ID: 174f:14ee
  Display: wayland server: X.Org v: 23.2.4 with: Xwayland v: 23.2.4
    compositor: gnome-shell driver: dri: swrast gpu: N/A display-ID: :0
    screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96
  Monitor-1: Unknown-1 mapped: None-1 res: 1920x1080 dpi: 96
  API: OpenGL v: 4.5 vendor: mesa v: 24.0.5 glx-v: 1.4 es-v: 3.2
    direct-render: yes renderer: llvmpipe (LLVM 18.1.1 256 bits)
    device-ID: ffffffff:ffffffff
  API: EGL Message: EGL data requires eglinfo. Check --recommends.
Audio:
  Device-1: Intel Broadwell-U Audio vendor: Lenovo driver: N/A bus-ID: 00:03.0
    chip-ID: 8086:160c
  Device-2: Intel Wildcat Point-LP High Definition Audio vendor: Lenovo
    driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:9ca0
  API: ALSA v: k6.8.5-301.fc40.x86_64 status: kernel-api
  Server-1: JACK v: 1.9.22 status: off
  Server-2: PipeWire v: 1.0.4 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: Lenovo driver: r8169 v: kernel pcie: speed: 2.5 GT/s lanes: 1
    port: 4000 bus-ID: 02:00.0 chip-ID: 10ec:8168
  IF: enp2s0 state: down mac: <filter>
  Device-2: Qualcomm Atheros QCA6164 802.11ac Wireless Network Adapter
    vendor: Lenovo driver: ath10k_pci v: kernel pcie: speed: 2.5 GT/s lanes: 1
    bus-ID: 03:00.0 chip-ID: 168c:0041
  IF: wlp3s0 state: up mac: <filter>
Bluetooth:
  Device-1: Qualcomm Atheros QCA61x4 Bluetooth 4.0 driver: btusb v: 0.8
    type: USB rev: 1.1 speed: 12 Mb/s lanes: 1 bus-ID: 1-7:6 chip-ID: 0cf3:e300
  Report: btmgmt ID: hci0 rfk-id: 2 state: up address: <filter> bt-v: 4.1
    lmp-v: 7
Drives:
  Local Storage: total: 931.51 GiB used: 3.93 GiB (0.4%)
  ID-1: /dev/sda vendor: Seagate model: ST1000LM014-SSHD-8GB
    size: 931.51 GiB speed: 6.0 Gb/s serial: <filter>
Partition:
  ID-1: / size: 929.93 GiB used: 3.67 GiB (0.4%) fs: btrfs dev: /dev/sda3
  ID-2: /boot size: 973.4 MiB used: 255.6 MiB (26.3%) fs: ext4
    dev: /dev/sda2
  ID-3: /boot/efi size: 598.8 MiB used: 19 MiB (3.2%) fs: vfat
    dev: /dev/sda1
  ID-4: /home size: 929.93 GiB used: 3.67 GiB (0.4%) fs: btrfs
    dev: /dev/sda3
Swap:
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) priority: 100
    dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 50.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 16 GiB available: 15.53 GiB used: 2.23 GiB (14.3%)
  Processes: 266 Power: uptime: 5m wakeups: 0 Init: systemd v: 255
    target: graphical (5) default: graphical
  Packages: Compilers: N/A Shell: Bash v: 5.2.26 running-in: gnome-terminal
    inxi: 3.3.34

Now, I edited GRUB_CMDLINE_LINUX in the grub file to GRUB_CMDLINE_LINUX="amdgpu.si_support=1 rhgb quiet" However, it would not boot once I restarted until I temporarily added nomodeset back.

Not booting with the amdgpu driver enabled might be a separate issue. That problem has come up a few times on this forum recently.

Does it boot if you use modprobe.blacklist=amdgpu instead of nomodeset?

If so, what happens if you then run the following command?

$ sudo modprobe amdgpu si_support=1 

It does indeed boot. However, running $ sudo modprobe amdgpu si_support=1 makes everything freeze up. I left it for like 10 minutes but it still wouldn’t unfreeze so I rebooted.

I think there is something wrong with the amdgpu driver in recent kernels.

Here is another idea if you feel up to trying it – downgrade your kernel (and the associated amdgpu driver) and see if that works. You will still need to supply the amdgpu.si_support=1 kernel parameter for it to have a chance of working.

$ sudo dnf --repo=fedora --releasever=39 downgrade kernel*

The above command won’t remove your currently installed kernel, but it might remove an older kernel depending on how many you have installed and how many your system is configured to keep.

I don’t know if the older kernel will be selected by default when you reboot. You might have to manually choose it in your boot menu. After you’ve rebooted, the command uname -r should print out what kernel version you are running on. With luck, the older kernel and driver will work with your hardware and hopefully someday a newer driver will also work (but you might have to stay with the older one for a while).