Thanks for the detailed report.

smu7_powergate_uvd+0x23
pp_set_powergating_by_smu+0x15a
amdgpu_dpm_enable_uvd+0xc1
taskq_thread

POLARIS10 has UVD 6.3

If driver init fails the task gets removed by:

cancel_delayed_work_sync(&adev->uvd.idle_work);

uvd_v6_0_hw_fini
amdgpu_device_ip_fini_early
amdgpu_device_fini_hw
amdgpu_driver_unload_kms
amdgpu_driver_load_kms
amdgpu_attachhook

but your trace must occur before that gets cleaned up

smu7_powergate_uvd+0x23 is
/sys/dev/pci/drm/amd/pm/powerplay/hwmgr/smu7_clockpowergating.c:118

   114  void smu7_powergate_uvd(struct pp_hwmgr *hwmgr, bool bgate)
   115  {
   116          struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
   117  
   118          data->uvd_power_gated = bgate;

Try the following revert of
'drm/amd/pm/smu7: fix a memleak in smu7_hwmgr_backend_init'
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=ae7cbf935b9a1b41f65fe6443e7cd0c401500b20

The matching OpenBSD commit was rev 1.9
date: 2024/01/29 01:51:19;  author: jsg;  state: Exp;  lines: +5 -1;  commitid: 
cUHNbtd9MymExldJ;

Index: sys/dev/pci/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c,v
diff -u -p -r1.10 smu7_hwmgr.c
--- sys/dev/pci/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c 6 Feb 2024 03:55:02 
-0000       1.10
+++ sys/dev/pci/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c 7 Mar 2024 02:43:27 
-0000
@@ -2974,8 +2974,6 @@ static int smu7_hwmgr_backend_init(struc
                result = smu7_get_evv_voltages(hwmgr);
                if (result) {
                        pr_info("Get EVV Voltage Failed.  Abort Driver 
loading!\n");
-                       kfree(hwmgr->backend);
-                       hwmgr->backend = NULL;
                        return -EINVAL;
                }
        } else {
@@ -3021,10 +3019,8 @@ static int smu7_hwmgr_backend_init(struc
        }
 
        result = smu7_update_edc_leakage_table(hwmgr);
-       if (result) {
-               smu7_hwmgr_backend_fini(hwmgr);
+       if (result)
                return result;
-       }
 
        return 0;
 }

Reply via email to