Skip to content

Commit 5feccdd

Browse files
committed
habanalabs: add more protection of device during reset
Prevent accesses to the device (register read/write) from debugfs entries during reset as that can cause the device to get stuck. Signed-off-by: Oded Gabbay <[email protected]> Reviewed-by: Tomer Tayar <[email protected]>
1 parent 55f6d68 commit 5feccdd

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

drivers/misc/habanalabs/debugfs.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,12 @@ static int engines_show(struct seq_file *s, void *data)
528528
struct hl_dbg_device_entry *dev_entry = entry->dev_entry;
529529
struct hl_device *hdev = dev_entry->hdev;
530530

531+
if (atomic_read(&hdev->in_reset)) {
532+
dev_warn_ratelimited(hdev->dev,
533+
"Can't check device idle during reset\n");
534+
return 0;
535+
}
536+
531537
hdev->asic_funcs->is_device_idle(hdev, NULL, s);
532538

533539
return 0;
@@ -640,6 +646,11 @@ static ssize_t hl_data_read32(struct file *f, char __user *buf,
640646
u32 val;
641647
ssize_t rc;
642648

649+
if (atomic_read(&hdev->in_reset)) {
650+
dev_warn_ratelimited(hdev->dev, "Can't read during reset\n");
651+
return 0;
652+
}
653+
643654
if (*ppos)
644655
return 0;
645656

@@ -669,6 +680,11 @@ static ssize_t hl_data_write32(struct file *f, const char __user *buf,
669680
u32 value;
670681
ssize_t rc;
671682

683+
if (atomic_read(&hdev->in_reset)) {
684+
dev_warn_ratelimited(hdev->dev, "Can't write during reset\n");
685+
return 0;
686+
}
687+
672688
rc = kstrtouint_from_user(buf, count, 16, &value);
673689
if (rc)
674690
return rc;

0 commit comments

Comments
 (0)