v1: 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. v2: also move kfd_debugfs_fini() into kgd2kfd_device_exit() function. 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@xxxxxxx> --- drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c | 7 ++++--- drivers/gpu/drm/amd/amdkfd/kfd_device.c | 3 +++ drivers/gpu/drm/amd/amdkfd/kfd_module.c | 3 --- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 4 ++-- 4 files changed, 9 insertions(+), 8 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..aa9154a8410f 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; } @@ -884,6 +886,7 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd) amdgpu_amdkfd_free_gws(kfd->kgd, kfd->gws); } + kfd_debugfs_fini(); kfree(kfd); } diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c index 5e90fe642192..6b9f735c55ea 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: @@ -76,7 +74,6 @@ static int kfd_init(void) static void kfd_exit(void) { - kfd_debugfs_fini(); kfd_process_destroy_wq(); kfd_procfs_shutdown(); kfd_topology_shutdown(); 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 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx