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,59 +1583,183 @@ 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); } +static void add_files_to_device(struct hl_device *hdev, struct hl_dbg_device_entry *dev_entry, + struct dentry *root) +{ + int count = ARRAY_SIZE(hl_debugfs_list); + struct hl_debugfs_entry *entry; + int i; + + debugfs_create_x64("memory_scrub_val", + 0644, + root, + &hdev->memory_scrub_val); + + debugfs_create_file("memory_scrub", + 0200, + root, + dev_entry, + &hl_mem_scrub_fops); + + debugfs_create_x64("addr", + 0644, + root, + &dev_entry->addr); + + debugfs_create_file("data32", + 0644, + root, + dev_entry, + &hl_data32b_fops); + + debugfs_create_file("data64", + 0644, + root, + dev_entry, + &hl_data64b_fops); + + debugfs_create_file("set_power_state", + 0200, + root, + dev_entry, + &hl_power_fops); + + debugfs_create_file("device", + 0200, + root, + dev_entry, + &hl_device_fops); + + debugfs_create_file("clk_gate", + 0200, + root, + dev_entry, + &hl_clk_gate_fops); + + debugfs_create_file("stop_on_err", + 0644, + root, + dev_entry, + &hl_stop_on_err_fops); + + debugfs_create_file("dump_security_violations", + 0644, + root, + dev_entry, + &hl_security_violations_fops); + + debugfs_create_file("dump_razwi_events", + 0644, + root, + dev_entry, + &hl_razwi_check_fops); + + debugfs_create_file("dma_size", + 0200, + root, + dev_entry, + &hl_dma_size_fops); + + debugfs_create_blob("data_dma", + 0400, + root, + &dev_entry->data_dma_blob_desc); + + debugfs_create_file("monitor_dump_trig", + 0200, + root, + dev_entry, + &hl_monitor_dump_fops); + + debugfs_create_blob("monitor_dump", + 0400, + root, + &dev_entry->mon_dump_blob_desc); + + debugfs_create_x8("skip_reset_on_timeout", + 0644, + root, + &hdev->reset_info.skip_reset_on_timeout); + + debugfs_create_file("state_dump", + 0600, + root, + dev_entry, + &hl_state_dump_fops); + + debugfs_create_file("timeout_locked", + 0644, + root, + dev_entry, + &hl_timeout_locked_fops); + + debugfs_create_u32("device_release_watchdog_timeout", + 0644, + 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, + 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); - struct hl_debugfs_entry *entry; - int i; dev_entry->hdev = hdev; dev_entry->entry_arr = kmalloc_array(count, @@ -1666,126 +1790,9 @@ void hl_debugfs_add_device(struct hl_device *hdev) dev_entry->root = debugfs_create_dir(dev_name(hdev->dev), hl_debug_root); - debugfs_create_x64("memory_scrub_val", - 0644, - dev_entry->root, - &hdev->memory_scrub_val); - - debugfs_create_file("memory_scrub", - 0200, - dev_entry->root, - dev_entry, - &hl_mem_scrub_fops); - - debugfs_create_x64("addr", - 0644, - dev_entry->root, - &dev_entry->addr); - - debugfs_create_file("data32", - 0644, - dev_entry->root, - dev_entry, - &hl_data32b_fops); - - debugfs_create_file("data64", - 0644, - dev_entry->root, - dev_entry, - &hl_data64b_fops); - - debugfs_create_file("set_power_state", - 0200, - dev_entry->root, - dev_entry, - &hl_power_fops); - - debugfs_create_file("device", - 0200, - dev_entry->root, - dev_entry, - &hl_device_fops); - - debugfs_create_file("clk_gate", - 0200, - dev_entry->root, - dev_entry, - &hl_clk_gate_fops); - - debugfs_create_file("stop_on_err", - 0644, - dev_entry->root, - dev_entry, - &hl_stop_on_err_fops); - - debugfs_create_file("dump_security_violations", - 0644, - dev_entry->root, - dev_entry, - &hl_security_violations_fops); - - debugfs_create_file("dump_razwi_events", - 0644, - dev_entry->root, - dev_entry, - &hl_razwi_check_fops); - - debugfs_create_file("dma_size", - 0200, - dev_entry->root, - dev_entry, - &hl_dma_size_fops); - - debugfs_create_blob("data_dma", - 0400, - dev_entry->root, - &dev_entry->data_dma_blob_desc); - - debugfs_create_file("monitor_dump_trig", - 0200, - dev_entry->root, - dev_entry, - &hl_monitor_dump_fops); - - debugfs_create_blob("monitor_dump", - 0400, - dev_entry->root, - &dev_entry->mon_dump_blob_desc); - - debugfs_create_x8("skip_reset_on_timeout", - 0644, - dev_entry->root, - &hdev->reset_info.skip_reset_on_timeout); - - debugfs_create_file("state_dump", - 0600, - dev_entry->root, - dev_entry, - &hl_state_dump_fops); - - debugfs_create_file("timeout_locked", - 0644, - dev_entry->root, - dev_entry, - &hl_timeout_locked_fops); - - debugfs_create_u32("device_release_watchdog_timeout", - 0644, - dev_entry->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, - entry, - &hl_debugfs_fops); - entry->info_ent = &hl_debugfs_list[i]; - entry->dev_entry = dev_entry; - } - + 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)