[PATCH] drm/amdkfd: disable kfd debugfs node of hang_hws on vf mode

Kevin Wang kevin1.wang at amd.com
Thu May 13 07:46:43 UTC 2021


the kfd debugfs node is rely on kgd2kfd probe success,
if not, the kfd_debugfs should not be created,
and the node of "hang_hws" should be disabled on vf mode.

1. move kfd_debugfs_init() function into kgd2kfd_probe() function.
2. disable "hang_hws" debugfs node on vf mode.

Signed-off-by: Kevin Wang <kevin1.wang at amd.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c | 7 ++++---
 drivers/gpu/drm/amd/amdkfd/kfd_device.c  | 2 ++
 drivers/gpu/drm/amd/amdkfd/kfd_module.c  | 2 --
 drivers/gpu/drm/amd/amdkfd/kfd_priv.h    | 4 ++--
 4 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c b/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c
index 673d5e34f213..f9a81f34d09e 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c
@@ -88,7 +88,7 @@ static const struct file_operations kfd_debugfs_hang_hws_fops = {
 	.release = single_release,
 };
 
-void kfd_debugfs_init(void)
+void kfd_debugfs_init(bool is_vf)
 {
 	debugfs_root = debugfs_create_dir("kfd", NULL);
 
@@ -98,8 +98,9 @@ void kfd_debugfs_init(void)
 			    kfd_debugfs_hqds_by_device, &kfd_debugfs_fops);
 	debugfs_create_file("rls", S_IFREG | 0444, debugfs_root,
 			    kfd_debugfs_rls_by_device, &kfd_debugfs_fops);
-	debugfs_create_file("hang_hws", S_IFREG | 0200, debugfs_root,
-			    kfd_debugfs_hang_hws_read, &kfd_debugfs_hang_hws_fops);
+	if (!is_vf)
+		debugfs_create_file("hang_hws", S_IFREG | 0200, debugfs_root,
+				    kfd_debugfs_hang_hws_read, &kfd_debugfs_hang_hws_fops);
 }
 
 void kfd_debugfs_fini(void)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index dedb8e33b953..3b493ffaf2aa 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -649,6 +649,8 @@ struct kfd_dev *kgd2kfd_probe(struct kgd_dev *kgd,
 
 	ida_init(&kfd->doorbell_ida);
 
+	kfd_debugfs_init(vf);
+
 	return kfd;
 }
 
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
index 5e90fe642192..930447bd080d 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
@@ -61,8 +61,6 @@ static int kfd_init(void)
 	 */
 	kfd_procfs_init();
 
-	kfd_debugfs_init();
-
 	return 0;
 
 err_create_wq:
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index daa9d47514c6..f3ddd8c5b11e 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -1174,7 +1174,7 @@ static inline int kfd_devcgroup_check_permission(struct kfd_dev *kfd)
 /* Debugfs */
 #if defined(CONFIG_DEBUG_FS)
 
-void kfd_debugfs_init(void);
+void kfd_debugfs_init(bool is_vf);
 void kfd_debugfs_fini(void);
 int kfd_debugfs_mqds_by_process(struct seq_file *m, void *data);
 int pqm_debugfs_mqds(struct seq_file *m, void *data);
@@ -1189,7 +1189,7 @@ int dqm_debugfs_execute_queues(struct device_queue_manager *dqm);
 
 #else
 
-static inline void kfd_debugfs_init(void) {}
+static inline void kfd_debugfs_init(bool is_vf) {}
 static inline void kfd_debugfs_fini(void) {}
 
 #endif
-- 
2.17.1



More information about the amd-gfx mailing list