Few days ago my Radeon RX 5700 after 3 years of working absolutely fine, kind of stopped working.
The symptoms are:
At BIOS and GRUB there is video output.
If I run the system with “nomodeset” kernel option, then there is video output (obviously without acceleration and limited to low resolution).
It’s not a faulty cable, because I tested it with other cables. I usually use HDMI cable, but with DisplayPort it’s the same.
It’s not a faulty monitor, because I use it also with my laptop on a second input.
If I put my card into another computer with Windows, it works with acceleration, like there’s nothing wrong.
But if I start my Tumbleweed with amdgpu drivers, then as soon as kernel loads drm driver (so it’s even before Xorg starts), the screen goes blank (the monitor shows “no signal” and shuts off). It doesn’t matter if I boot my Tumbleweed with current or previous kernel. It doesn’t matter if it’s my Tumbleweed or a Leap 15.4 booted from usb stick.
dmesg: openSUSE Paste
It says:
amdgpu 0000:09:00.0: [drm] Cannot find any crtc or sizes
Xorg.0.log: openSUSE Paste
It says:
(WW) AMDGPU(0): Unable to find connected outputs
I guess that’s the default for my card. But it changed nothing.
Unfortunately, didn’t help.
As I wrote, this happens before Xorg starts. I can even add “3” to kernel commandline, which is equivalent of telling systemd to run multi-user.target, which does not start Xorg at all.
With removed “quiet splash=silent”, and added “plymouth.enable=0” I can see system booting for a second, then when usually the screen resolution of the text mode gets changed, it instead goes blank.
That means the amdgpu KMS kernel module is the issue. It goes black when it does because that’s when the module is engaged. You could try one of the iommu boot options and if none help, report a kernel bug.
Mine works, but it’s nowhere near as new as yours:
# dmesg | grep amdg
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz root=LABEL=zd8p07stw noresume ipv6.disable=1 net.ifnames=0 mitigations=auto consoleblank=0 radeon.cik_support=0 amdgpu.cik_support=1 video=1440x900@60 drm.debug=0x1e log_buf_len=1M 3
[ 0.020220] Kernel command line: BOOT_IMAGE=/boot/vmlinuz root=LABEL=zd8p07stw noresume ipv6.disable=1 net.ifnames=0 mitigations=auto consoleblank=0 radeon.cik_support=0 amdgpu.cik_support=1 video=1440x900@60 drm.debug=0x1e log_buf_len=1M 3
[ 8.778840] [drm] amdgpu kernel modesetting enabled.
[ 8.788606] amdgpu: Topology: Add APU node [0x0:0x0]
[ 8.831117] amdgpu 0000:00:01.0: vgaarb: deactivate vga console
[ 8.848119] amdgpu 0000:00:01.0: amdgpu: Fetched VBIOS from ROM BAR
[ 8.848123] amdgpu: ATOM BIOS: 113-SPEC-102
[ 8.848146] amdgpu 0000:00:01.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[ 8.848365] amdgpu 0000:00:01.0: amdgpu: VRAM: 1024M 0x000000F400000000 - 0x000000F43FFFFFFF (1024M used)
[ 8.848367] amdgpu 0000:00:01.0: amdgpu: GART: 1024M 0x000000FF00000000 - 0x000000FF3FFFFFFF
[ 8.848404] [drm] amdgpu: 1024M of VRAM memory ready
[ 8.848407] [drm] amdgpu: 3435M of GTT memory ready.
[ 8.974647] [drm] amdgpu: dpm initialized
[ 9.258019] kfd kfd: amdgpu: Allocated 3969056 bytes on gart
[ 9.258079] amdgpu: sdma_bitmap: f
[ 9.258083] kfd kfd: amdgpu: error getting iommu info. is the iommu enabled?
[ 9.258085] kfd kfd: amdgpu: Error initializing iommuv2
[ 9.258640] kfd kfd: amdgpu: device 1002:130f NOT added due to errors
[ 9.258654] amdgpu 0000:00:01.0: amdgpu: SE 1, SH per SE 1, CU per SH 8, active_cu_number 8
[ 9.262217] [drm] Initialized amdgpu 3.49.0 20150101 for 0000:00:01.0 on minor 0
[ 9.453626] fbcon: amdgpudrmfb (fb0) is primary device
[ 9.871224] amdgpu 0000:00:01.0: [drm] fb0: amdgpudrmfb frame buffer device
I noticed something potentially interesting: my graphic card appears in /dev/dri and /sys/class/drm as card1, not card0. My computer has no other GPUs, not even an integrated one in CPU.
I got more info! It turns out that the problem is in combination of my graphic card with my monitor (because the graphic card works correctly with other monitors).
From my laptop I got this:
> sudo get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 2
No EDID on bus 4
Problem requesting slave address: Device or resource busy
2 potential busses found: 1 3
Will scan through until the first EDID is found.
Pass a bus number as an option to this program to go only for that one.
128-byte EDID successfully retrieved from i2c bus 1
Looks like i2c was successful. Have a good day.
Checksum Correct
Section "Monitor"
Identifier "D2242P"
ModelName "D2242P"
VendorName "GSM"
# Monitor Manufactured week 12 of 2011
# EDID version 1.3
# Digital Display
DisplaySize 480 270
Gamma 2.20
Option "DPMS" "true"
Horizsync 30-83
VertRefresh 56-75
# Maximum pixel clock is 150MHz
#Not giving standard mode: 1152x864, 75Hz
#Not giving standard mode: 1280x1024, 60Hz
#Not giving standard mode: 1280x960, 60Hz
#Not giving standard mode: 1680x1050, 60Hz
Modeline "Mode 0" +hsync +vsync
EndSection
Case closed: the HDMI port of my monitor is broken.
The same HDMI cable attached to DVI port on the monitor (with a HDMI-to-DVI adapter) works fine. The important part I missed before is to reboot the computer after changing ports.