Make it easier to later add support for accel device.

Signed-off-by: Oded Gabbay <ogab...@kernel.org>
---
 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,
                                &dev_entry->i2c_bus);
 
        debugfs_create_u8("i2c_addr",
                                0644,
-                               dev_entry->root,
+                               root,
                                &dev_entry->i2c_addr);
 
        debugfs_create_u8("i2c_reg",
                                0644,
-                               dev_entry->root,
+                               root,
                                &dev_entry->i2c_reg);
 
        debugfs_create_u8("i2c_len",
                                0644,
-                               dev_entry->root,
+                               root,
                                &dev_entry->i2c_len);
 
        debugfs_create_file("i2c_data",
                                0644,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_i2c_data_fops);
 
        debugfs_create_file("led0",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_led0_fops);
 
        debugfs_create_file("led1",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_led1_fops);
 
        debugfs_create_file("led2",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_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 = &hdev->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(&dev_entry->file_list);
-       INIT_LIST_HEAD(&dev_entry->cb_list);
-       INIT_LIST_HEAD(&dev_entry->cs_list);
-       INIT_LIST_HEAD(&dev_entry->cs_job_list);
-       INIT_LIST_HEAD(&dev_entry->userptr_list);
-       INIT_LIST_HEAD(&dev_entry->ctx_mem_hash_list);
-       mutex_init(&dev_entry->file_mutex);
-       init_rwsem(&dev_entry->state_dump_sem);
-       spin_lock_init(&dev_entry->cb_spinlock);
-       spin_lock_init(&dev_entry->cs_spinlock);
-       spin_lock_init(&dev_entry->cs_job_spinlock);
-       spin_lock_init(&dev_entry->userptr_spinlock);
-       spin_lock_init(&dev_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,
                                &hdev->memory_scrub_val);
 
        debugfs_create_file("memory_scrub",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_mem_scrub_fops);
 
        debugfs_create_x64("addr",
                                0644,
-                               dev_entry->root,
+                               root,
                                &dev_entry->addr);
 
        debugfs_create_file("data32",
                                0644,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_data32b_fops);
 
        debugfs_create_file("data64",
                                0644,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_data64b_fops);
 
        debugfs_create_file("set_power_state",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_power_fops);
 
        debugfs_create_file("device",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_device_fops);
 
        debugfs_create_file("clk_gate",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_clk_gate_fops);
 
        debugfs_create_file("stop_on_err",
                                0644,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_stop_on_err_fops);
 
        debugfs_create_file("dump_security_violations",
                                0644,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_security_violations_fops);
 
        debugfs_create_file("dump_razwi_events",
                                0644,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_razwi_check_fops);
 
        debugfs_create_file("dma_size",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_dma_size_fops);
 
        debugfs_create_blob("data_dma",
                                0400,
-                               dev_entry->root,
+                               root,
                                &dev_entry->data_dma_blob_desc);
 
        debugfs_create_file("monitor_dump_trig",
                                0200,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_monitor_dump_fops);
 
        debugfs_create_blob("monitor_dump",
                                0400,
-                               dev_entry->root,
+                               root,
                                &dev_entry->mon_dump_blob_desc);
 
        debugfs_create_x8("skip_reset_on_timeout",
                                0644,
-                               dev_entry->root,
+                               root,
                                &hdev->reset_info.skip_reset_on_timeout);
 
        debugfs_create_file("state_dump",
                                0600,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_state_dump_fops);
 
        debugfs_create_file("timeout_locked",
                                0644,
-                               dev_entry->root,
+                               root,
                                dev_entry,
                                &hl_timeout_locked_fops);
 
        debugfs_create_u32("device_release_watchdog_timeout",
                                0644,
-                               dev_entry->root,
+                               root,
                                &hdev->device_release_watchdog_timeout_sec);
 
        for (i = 0, entry = dev_entry->entry_arr ; i < count ; i++, entry++) {
                debugfs_create_file(hl_debugfs_list[i].name,
                                        0444,
-                                       dev_entry->root,
+                                       root,
                                        entry,
                                        &hl_debugfs_fops);
                entry->info_ent = &hl_debugfs_list[i];
                entry->dev_entry = dev_entry;
        }
+}
+
+void hl_debugfs_add_device(struct hl_device *hdev)
+{
+       struct hl_dbg_device_entry *dev_entry = &hdev->hl_debugfs;
+       int count = ARRAY_SIZE(hl_debugfs_list);
+
+       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(&dev_entry->file_list);
+       INIT_LIST_HEAD(&dev_entry->cb_list);
+       INIT_LIST_HEAD(&dev_entry->cs_list);
+       INIT_LIST_HEAD(&dev_entry->cs_job_list);
+       INIT_LIST_HEAD(&dev_entry->userptr_list);
+       INIT_LIST_HEAD(&dev_entry->ctx_mem_hash_list);
+       mutex_init(&dev_entry->file_mutex);
+       init_rwsem(&dev_entry->state_dump_sem);
+       spin_lock_init(&dev_entry->cb_spinlock);
+       spin_lock_init(&dev_entry->cs_spinlock);
+       spin_lock_init(&dev_entry->cs_job_spinlock);
+       spin_lock_init(&dev_entry->userptr_spinlock);
+       spin_lock_init(&dev_entry->ctx_mem_hash_spinlock);
+
+       dev_entry->root = debugfs_create_dir(dev_name(hdev->dev),
+                                               hl_debug_root);
 
+       add_files_to_device(hdev, dev_entry, dev_entry->root);
        if (!hdev->asic_prop.fw_security_enabled)
-               add_secured_nodes(dev_entry);
+               add_secured_nodes(dev_entry, dev_entry->root);
 }
 
 void hl_debugfs_remove_device(struct hl_device *hdev)
-- 
2.25.1

Reply via email to