Commit 08f0aa95 authored by Ofir Bitton's avatar Ofir Bitton Committed by Oded Gabbay
Browse files

habanalabs: expose only valid debugfs nodes



In case security is enabled on the device, some debugfs nodes will
fail. Hence, we do not expose them.

Signed-off-by: default avatarOfir Bitton <obitton@habana.ai>
Reviewed-by: default avatarOded Gabbay <ogabbay@kernel.org>
Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
parent 168fc718
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -130,14 +130,16 @@ Date: Jan 2019
KernelVersion:  5.1
Contact:        ogabbay@kernel.org
Description:    Sets I2C device address for I2C transaction that is generated
                by the device's CPU
                by the device's CPU, Not available when device is loaded with secured
                firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/i2c_bus
Date:           Jan 2019
KernelVersion:  5.1
Contact:        ogabbay@kernel.org
Description:    Sets I2C bus address for I2C transaction that is generated by
                the device's CPU
                the device's CPU, Not available when device is loaded with secured
                firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/i2c_data
Date:           Jan 2019
@@ -145,39 +147,45 @@ KernelVersion: 5.1
Contact:        ogabbay@kernel.org
Description:    Triggers an I2C transaction that is generated by the device's
                CPU. Writing to this file generates a write transaction while
                reading from the file generates a read transaction
                reading from the file generates a read transaction, Not available
                when device is loaded with secured firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/i2c_len
Date:           Dec 2021
KernelVersion:  5.17
Contact:        obitton@habana.ai
Description:    Sets I2C length in bytes for I2C transaction that is generated by
                the device's CPU
                the device's CPU, Not available when device is loaded with secured
                firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/i2c_reg
Date:           Jan 2019
KernelVersion:  5.1
Contact:        ogabbay@kernel.org
Description:    Sets I2C register id for I2C transaction that is generated by
                the device's CPU
                the device's CPU, Not available when device is loaded with secured
                firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/led0
Date:           Jan 2019
KernelVersion:  5.1
Contact:        ogabbay@kernel.org
Description:    Sets the state of the first S/W led on the device
Description:    Sets the state of the first S/W led on the device, Not available
                when device is loaded with secured firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/led1
Date:           Jan 2019
KernelVersion:  5.1
Contact:        ogabbay@kernel.org
Description:    Sets the state of the second S/W led on the device
Description:    Sets the state of the second S/W led on the device, Not available
                when device is loaded with secured firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/led2
Date:           Jan 2019
KernelVersion:  5.1
Contact:        ogabbay@kernel.org
Description:    Sets the state of the third S/W led on the device
Description:    Sets the state of the third S/W led on the device, Not available
                when device is loaded with secured firmware

What:           /sys/kernel/debug/habanalabs/hl<n>/memory_scrub
Date:           May 2022
+50 −44
Original line number Diff line number Diff line
@@ -1562,6 +1562,53 @@ static const struct file_operations hl_debugfs_fops = {
	.release = single_release,
};

static void add_secured_nodes(struct hl_dbg_device_entry *dev_entry)
{
	debugfs_create_u8("i2c_bus",
				0644,
				dev_entry->root,
				&dev_entry->i2c_bus);

	debugfs_create_u8("i2c_addr",
				0644,
				dev_entry->root,
				&dev_entry->i2c_addr);

	debugfs_create_u8("i2c_reg",
				0644,
				dev_entry->root,
				&dev_entry->i2c_reg);

	debugfs_create_u8("i2c_len",
				0644,
				dev_entry->root,
				&dev_entry->i2c_len);

	debugfs_create_file("i2c_data",
				0644,
				dev_entry->root,
				dev_entry,
				&hl_i2c_data_fops);

	debugfs_create_file("led0",
				0200,
				dev_entry->root,
				dev_entry,
				&hl_led0_fops);

	debugfs_create_file("led1",
				0200,
				dev_entry->root,
				dev_entry,
				&hl_led1_fops);

	debugfs_create_file("led2",
				0200,
				dev_entry->root,
				dev_entry,
				&hl_led2_fops);
}

void hl_debugfs_add_device(struct hl_device *hdev)
{
	struct hl_dbg_device_entry *dev_entry = &hdev->hl_debugfs;
@@ -1632,50 +1679,6 @@ void hl_debugfs_add_device(struct hl_device *hdev)
				dev_entry,
				&hl_power_fops);

	debugfs_create_u8("i2c_bus",
				0644,
				dev_entry->root,
				&dev_entry->i2c_bus);

	debugfs_create_u8("i2c_addr",
				0644,
				dev_entry->root,
				&dev_entry->i2c_addr);

	debugfs_create_u8("i2c_reg",
				0644,
				dev_entry->root,
				&dev_entry->i2c_reg);

	debugfs_create_u8("i2c_len",
				0644,
				dev_entry->root,
				&dev_entry->i2c_len);

	debugfs_create_file("i2c_data",
				0644,
				dev_entry->root,
				dev_entry,
				&hl_i2c_data_fops);

	debugfs_create_file("led0",
				0200,
				dev_entry->root,
				dev_entry,
				&hl_led0_fops);

	debugfs_create_file("led1",
				0200,
				dev_entry->root,
				dev_entry,
				&hl_led1_fops);

	debugfs_create_file("led2",
				0200,
				dev_entry->root,
				dev_entry,
				&hl_led2_fops);

	debugfs_create_file("device",
				0200,
				dev_entry->root,
@@ -1754,6 +1757,9 @@ void hl_debugfs_add_device(struct hl_device *hdev)
		entry->info_ent = &hl_debugfs_list[i];
		entry->dev_entry = dev_entry;
	}

	if (!hdev->asic_prop.fw_security_enabled)
		add_secured_nodes(dev_entry);
}

void hl_debugfs_remove_device(struct hl_device *hdev)