RE: [PATCH 05/27] habanalabs: refactor debugfs init

2023-02-16 Thread Tomer Tayar
On Sun, Feb 12, 2023 at 22:45 Oded Gabbay  wrote:
> Make it easier to later add support for accel device.
> 
> Signed-off-by: Oded Gabbay 

Reviewed-by: Tomer Tayar 


[PATCH 05/27] habanalabs: refactor debugfs init

2023-02-12 Thread Oded Gabbay
Make it easier to later add support for accel device.

Signed-off-by: Oded Gabbay 
---
 drivers/accel/habanalabs/common/debugfs.c | 129 --
 1 file changed, 68 insertions(+), 61 deletions(-)

diff --git a/drivers/accel/habanalabs/common/debugfs.c 
b/drivers/accel/habanalabs/common/debugfs.c
index 945c0e6758ca..86901ff4aa02 100644
--- a/drivers/accel/habanalabs/common/debugfs.c
+++ b/drivers/accel/habanalabs/common/debugfs.c
@@ -1583,209 +1583,216 @@ static const struct file_operations hl_debugfs_fops = 
{
.release = single_release,
 };
 
-static void add_secured_nodes(struct hl_dbg_device_entry *dev_entry)
+static void add_secured_nodes(struct hl_dbg_device_entry *dev_entry, struct 
dentry *root)
 {
debugfs_create_u8("i2c_bus",
0644,
-   dev_entry->root,
+   root,
_entry->i2c_bus);
 
debugfs_create_u8("i2c_addr",
0644,
-   dev_entry->root,
+   root,
_entry->i2c_addr);
 
debugfs_create_u8("i2c_reg",
0644,
-   dev_entry->root,
+   root,
_entry->i2c_reg);
 
debugfs_create_u8("i2c_len",
0644,
-   dev_entry->root,
+   root,
_entry->i2c_len);
 
debugfs_create_file("i2c_data",
0644,
-   dev_entry->root,
+   root,
dev_entry,
_i2c_data_fops);
 
debugfs_create_file("led0",
0200,
-   dev_entry->root,
+   root,
dev_entry,
_led0_fops);
 
debugfs_create_file("led1",
0200,
-   dev_entry->root,
+   root,
dev_entry,
_led1_fops);
 
debugfs_create_file("led2",
0200,
-   dev_entry->root,
+   root,
dev_entry,
_led2_fops);
 }
 
-void hl_debugfs_add_device(struct hl_device *hdev)
+static void add_files_to_device(struct hl_device *hdev, struct 
hl_dbg_device_entry *dev_entry,
+   struct dentry *root)
 {
-   struct hl_dbg_device_entry *dev_entry = >hl_debugfs;
int count = ARRAY_SIZE(hl_debugfs_list);
struct hl_debugfs_entry *entry;
int i;
 
-   dev_entry->hdev = hdev;
-   dev_entry->entry_arr = kmalloc_array(count,
-   sizeof(struct hl_debugfs_entry),
-   GFP_KERNEL);
-   if (!dev_entry->entry_arr)
-   return;
-
-   dev_entry->data_dma_blob_desc.size = 0;
-   dev_entry->data_dma_blob_desc.data = NULL;
-   dev_entry->mon_dump_blob_desc.size = 0;
-   dev_entry->mon_dump_blob_desc.data = NULL;
-
-   INIT_LIST_HEAD(_entry->file_list);
-   INIT_LIST_HEAD(_entry->cb_list);
-   INIT_LIST_HEAD(_entry->cs_list);
-   INIT_LIST_HEAD(_entry->cs_job_list);
-   INIT_LIST_HEAD(_entry->userptr_list);
-   INIT_LIST_HEAD(_entry->ctx_mem_hash_list);
-   mutex_init(_entry->file_mutex);
-   init_rwsem(_entry->state_dump_sem);
-   spin_lock_init(_entry->cb_spinlock);
-   spin_lock_init(_entry->cs_spinlock);
-   spin_lock_init(_entry->cs_job_spinlock);
-   spin_lock_init(_entry->userptr_spinlock);
-   spin_lock_init(_entry->ctx_mem_hash_spinlock);
-
-   dev_entry->root = debugfs_create_dir(dev_name(hdev->dev),
-   hl_debug_root);
-
debugfs_create_x64("memory_scrub_val",
0644,
-   dev_entry->root,
+   root,
>memory_scrub_val);
 
debugfs_create_file("memory_scrub",
0200,
-   dev_entry->root,
+   root,
dev_entry,
_mem_scrub_fops);
 
debugfs_create_x64("addr",
0644,
-   dev_entry->root,
+   root,
_entry->addr);
 
debugfs_create_file("data32",
0644,
-