habanalabs: add cdev index data member
authorOmer Shpigelman <oshpigelman@habana.ai>
Thu, 4 Aug 2022 14:32:30 +0000 (17:32 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Sun, 18 Sep 2022 10:29:52 +0000 (13:29 +0300)
Instead of recalculating the cdev index, store it in a dedicated data
member. This data member is intended to be passed to other drivers using
the auxiliary bus infra and hence this new data member is necessary in
case that the calculation is changed in the future.

Signed-off-by: Omer Shpigelman <oshpigelman@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/misc/habanalabs/common/device.c
drivers/misc/habanalabs/common/habanalabs.h

index ab2497b6d16491103e8dc97f9a504f889dde4cf8..b662d40f18e88cba15f5a1d80500077a825d37e7 100644 (file)
@@ -1730,7 +1730,9 @@ int hl_device_init(struct hl_device *hdev, struct class *hclass)
        char *name;
        bool add_cdev_sysfs_on_err = false;
 
-       name = kasprintf(GFP_KERNEL, "hl%d", hdev->id / 2);
+       hdev->cdev_idx = hdev->id / 2;
+
+       name = kasprintf(GFP_KERNEL, "hl%d", hdev->cdev_idx);
        if (!name) {
                rc = -ENOMEM;
                goto out_disabled;
@@ -1745,7 +1747,7 @@ int hl_device_init(struct hl_device *hdev, struct class *hclass)
        if (rc)
                goto out_disabled;
 
-       name = kasprintf(GFP_KERNEL, "hl_controlD%d", hdev->id / 2);
+       name = kasprintf(GFP_KERNEL, "hl_controlD%d", hdev->cdev_idx);
        if (!name) {
                rc = -ENOMEM;
                goto free_dev;
@@ -2023,10 +2025,10 @@ out_disabled:
        if (hdev->pdev)
                dev_err(&hdev->pdev->dev,
                        "Failed to initialize hl%d. Device is NOT usable !\n",
-                       hdev->id / 2);
+                       hdev->cdev_idx);
        else
                pr_err("Failed to initialize hl%d. Device is NOT usable !\n",
-                       hdev->id / 2);
+                       hdev->cdev_idx);
 
        return rc;
 }
index 237a887b3a439b40ed16e7889cb834b8fe445324..a3c516c31b54a8e8bdd8d5637a64bcbcb90ab70c 100644 (file)
@@ -3129,7 +3129,8 @@ struct hl_reset_info {
  * @edma_binning: contains mask of edma engines that is received from the f/w which
  *                   indicates which edma engines are binned-out
  * @id: device minor.
- * @id_control: minor of the control device
+ * @id_control: minor of the control device.
+ * @cdev_idx: char device index. Used for setting its name.
  * @cpu_pci_msb_addr: 50-bit extension bits for the device CPU's 40-bit
  *                    addresses.
  * @is_in_dram_scrub: true if dram scrub operation is on going.
@@ -3289,6 +3290,7 @@ struct hl_device {
        u32                             edma_binning;
        u16                             id;
        u16                             id_control;
+       u16                             cdev_idx;
        u16                             cpu_pci_msb_addr;
        u8                              is_in_dram_scrub;
        u8                              disabled;