FreeBSD / amdgpu / Vega 3, pstate TEST_DEBUG_DATA: 0x0

Andriy Gapon avg at FreeBSD.org
Fri Apr 24 12:34:08 UTC 2020


First, I understand that my platform is not directly supported and probably not
very interesting, but I still hope to get some tips or pointers.

I am trying to get amdgpu/FreeBSD going on Motile M141 laptop with Ryzen 3 3200U
CPU that has Vega 3 graphics integrated.  When amdgpu starts loading the screen
goes black and never lights up again.  I am not sure whether there is no signal
at all or whether the backlight is turned off, but the screen is completely
dark.  I can blindly interact with the system, so it's not crashed or hung.
>From system logs I can see that the driver attaches successfully.  It recognizes
the hardware, loads its firmware, detects the eDP screen and so on.

The FreeBSD's amdgpu port that I am trying is based on code circa 5.0.
There is no newer version ported.
I tried a couple of Linux distros with 5.3.x kernels and they worked without any
problems. So that gives me some hope.

I compared driver messages (with drm_debug set to 0xfff) between Linux and
FreeBSD and they look quite similar.  Except for one thing.
In the FreeBSD case there are these error messages that are not seen with Linux:

[drm] pstate TEST_DEBUG_DATA: 0x0
WARNING !(0) failed at
/usr/home/avg/devel/kms-drm/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c:868
#0 0xffffffff83451633 at linux_dump_stack+0x23
#1 0xffffffff8325a9ee at dcn10_verify_allow_pstate_change_high+0x4e
#2 0xffffffff8325e925 at dcn10_wait_for_mpcc_disconnect+0x25
#3 0xffffffff8325de53 at dcn10_disable_plane+0x53
#4 0xffffffff8325c9f5 at dcn10_init_hw+0x755
#5 0xffffffff83295ca8 at dc_create+0x538
#6 0xffffffff8327a8da at dm_hw_init+0x1ea
#7 0xffffffff831701d1 at amdgpu_device_init+0x1b11
#8 0xffffffff83185177 at amdgpu_driver_load_kms+0xd7
#9 0xffffffff833f138e at drm_dev_register+0x17e
#10 0xffffffff83178dea at amdgpu_pci_probe+0x18a
#11 0xffffffff83456f40 at linux_pci_attach+0x560
#12 0xffffffff80bf68ea at device_attach+0x3ca
#13 0xffffffff80bf6490 at device_probe_and_attach+0x70
#14 0xffffffff80bf8358 at bus_generic_driver_added+0x58
#15 0xffffffff80bf4289 at devclass_driver_added+0x39
#16 0xffffffff80bf41c7 at devclass_add_driver+0x147
#17 0xffffffff83455ae9 at _linux_pci_register_driver+0xc9

That warning plus stack trace is actually BREAK_TO_DEBUGGER() in the original
Linux code.
So, that makes me think that the problem is pretty serious.
I tried searching for "TEST_DEBUG_DATA: 0x0" and I could not find a single
result with "0x0" in it.  Usually there is some non-zero value.
To me this looks like maybe some hardware component is not turned on...
Perhaps this is something relatively obvious for people that hack on the driver
and the hardware.
I hope to receive some hint about what to look for.
I can cherry-pick commits from Linux, apply patches, add additional debugging
logs, etc.

FreeBSD amdgpu dmesg: https://people.freebsd.org/~avg/amdgpu.dmesg.txt
Full Linux dmesg: https://people.freebsd.org/~avg/linux-5.3.0-28.dmesg.out

And with with drm_debug=0xfff.
FreeBSD: https://people.freebsd.org/~avg/fbsd-dmesg.txt
Linux: https://people.freebsd.org/~avg/linux-5.3.9-dmesg.txt

I see that both Linux and FreeBSD have similar messages about failing to load
some microcode components, but I guess that it must be okay since Linux works:
[    4.487381] [drm] reserve 0x400000 from 0xf400c00000 for PSP TMR
[    4.564893] [drm] failed to load ucode id (12)
[    4.564894] [drm] psp command failed and response status is (-53233)
[    4.567891] [drm] failed to load ucode id (13)
[    4.567892] [drm] psp command failed and response status is (-65521)
[    4.570891] [drm] failed to load ucode id (14)
[    4.570892] [drm] psp command failed and response status is (-65521)

Thank you!

-- 
Andriy Gapon


More information about the amd-gfx mailing list