summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c22
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c1
-rw-r--r--drivers/gpu/drm/amd/include/amdgpu_ptl.h1
3 files changed, 21 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
index a1db694063b1..aec284c6b6d7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
@@ -1543,18 +1543,34 @@ static umode_t amdgpu_ptl_is_visible(struct kobject *kobj, struct attribute *att
int amdgpu_ptl_sysfs_init(struct amdgpu_device *adev)
{
- if (!adev->psp.ptl.hw_supported)
+ struct amdgpu_ptl *ptl = &adev->psp.ptl;
+ int ret;
+
+ if (!ptl->hw_supported)
return 0;
- return sysfs_create_group(&adev->dev->kobj, &amdgpu_ptl_attr_group);
+ if (ptl->ptl_sysfs_created)
+ return 0;
+
+ ret = sysfs_create_group(&adev->dev->kobj, &amdgpu_ptl_attr_group);
+ if (!ret)
+ ptl->ptl_sysfs_created = true;
+
+ return ret;
}
void amdgpu_ptl_sysfs_fini(struct amdgpu_device *adev)
{
- if (!adev->psp.ptl.hw_supported)
+ struct amdgpu_ptl *ptl = &adev->psp.ptl;
+
+ if (!ptl->hw_supported)
+ return;
+
+ if (!ptl->ptl_sysfs_created)
return;
sysfs_remove_group(&adev->dev->kobj, &amdgpu_ptl_attr_group);
+ ptl->ptl_sysfs_created = false;
}
int psp_spatial_partition(struct psp_context *psp, int mode)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
index 1b982b803e6f..428c3cbc4a40 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
@@ -90,6 +90,7 @@ static int amdgpu_reset_xgmi_reset_on_init_restore_hwctxt(
kgd2kfd_init_zone_device(tmp_adev);
amdgpu_amdkfd_device_init(tmp_adev);
amdgpu_amdkfd_drm_client_create(tmp_adev);
+ amdgpu_ptl_sysfs_init(tmp_adev);
}
}
diff --git a/drivers/gpu/drm/amd/include/amdgpu_ptl.h b/drivers/gpu/drm/amd/include/amdgpu_ptl.h
index dc74119d91c8..154b8da3bfa9 100644
--- a/drivers/gpu/drm/amd/include/amdgpu_ptl.h
+++ b/drivers/gpu/drm/amd/include/amdgpu_ptl.h
@@ -49,6 +49,7 @@ struct amdgpu_ptl {
atomic_t disable_ref;
struct mutex mutex;
DECLARE_BITMAP(disable_bitmap, AMDGPU_PTL_DISABLE_MAX);
+ bool ptl_sysfs_created;
};
int amdgpu_ptl_perf_monitor_ctrl(struct amdgpu_device *adev, u32 req_code,