[AMD Official Use Only - General] +Mario I believe the comment below from Mario points the right direction to suppress the "UBSAN: invalid-load..." warnings. https://gitlab.freedesktop.org/drm/amd/-/issues/2541#note_1898035 However, it might be not right to simply drop the line below since the adev->powerplay.pp_handle pointer is still needed for those APIs like amdgpu_dpm_read_sensor(). - adev->powerplay.pp_handle = adev; BR Evan > -----Original Message----- > From: Chen, Guchun <Guchun.Chen@xxxxxxx> > Sent: Friday, May 5, 2023 4:24 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Deucher, Alexander > <Alexander.Deucher@xxxxxxx>; Zhang, Hawking > <Hawking.Zhang@xxxxxxx>; Lazar, Lijo <Lijo.Lazar@xxxxxxx>; Quan, Evan > <Evan.Quan@xxxxxxx>; Koenig, Christian <Christian.Koenig@xxxxxxx>; > Pan, Xinhui <Xinhui.Pan@xxxxxxx> > Cc: Chen, Guchun <Guchun.Chen@xxxxxxx> > Subject: [PATCH] drm/amd/pm: parse pp_handle under appropriate > conditions > > amdgpu_dpm_is_overdrive_supported is a common API across all > asics, so we should cast pp_handle into correct structure > under different power frameworks. > > Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2541 > Fixes: ebfc253335af("drm/amd/pm: do not expose the smu_context > structure used internally in power") > Signed-off-by: Guchun Chen <guchun.chen@xxxxxxx> > --- > drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c > b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c > index f0068df2d073..ae45abeab5b5 100644 > --- a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c > +++ b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c > @@ -1455,13 +1455,15 @@ int > amdgpu_dpm_get_smu_prv_buf_details(struct amdgpu_device *adev, > > int amdgpu_dpm_is_overdrive_supported(struct amdgpu_device *adev) > { > - struct pp_hwmgr *hwmgr = adev->powerplay.pp_handle; > - struct smu_context *smu = adev->powerplay.pp_handle; > - > - if ((is_support_sw_smu(adev) && smu->od_enabled) || > - (is_support_sw_smu(adev) && smu->is_apu) || > - (!is_support_sw_smu(adev) && hwmgr->od_enabled)) > - return true; > + if (is_support_sw_smu(adev)) { > + struct smu_context *smu = adev->powerplay.pp_handle; > + if (smu->od_enabled || smu->is_apu) > + return true; > + } else { > + struct pp_hwmgr *hwmgr = adev->powerplay.pp_handle; > + if (hwmgr->od_enabled) > + return true; > + } > > return false; > } > -- > 2.25.1