OSDN Git Service

drm/amdkfd: Use better name to indicate the offset is in dwords
authorYong Zhao <Yong.Zhao@amd.com>
Tue, 15 Jan 2019 18:16:34 +0000 (13:16 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 13 Nov 2019 20:29:45 +0000 (15:29 -0500)
The doorbell offset could mean the byte offset or the dword offset,
and the 0 offset place is also different, sometimes the start of PCI
doorbell bar or the start of process doorbell pages. Use better name
to avoid confusion.

Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
drivers/gpu/drm/amd/amdkfd/kfd_priv.h

index 984c2f2..b42f34e 100644 (file)
@@ -170,7 +170,7 @@ static int allocate_doorbell(struct qcm_process_device *qpd, struct queue *q)
        }
 
        q->properties.doorbell_off =
-               kfd_doorbell_id_to_offset(dev, q->process,
+               kfd_get_doorbell_dw_offset_in_bar(dev, q->process,
                                          q->doorbell_id);
 
        return 0;
index ebe79bf..8e0c00b 100644 (file)
@@ -91,7 +91,7 @@ int kfd_doorbell_init(struct kfd_dev *kfd)
        kfd->doorbell_base = kfd->shared_resources.doorbell_physical_address +
                                doorbell_start_offset;
 
-       kfd->doorbell_id_offset = doorbell_start_offset / sizeof(u32);
+       kfd->doorbell_base_dw_offset = doorbell_start_offset / sizeof(u32);
 
        kfd->doorbell_kernel_ptr = ioremap(kfd->doorbell_base,
                                           kfd_doorbell_process_slice(kfd));
@@ -103,8 +103,8 @@ int kfd_doorbell_init(struct kfd_dev *kfd)
        pr_debug("doorbell base           == 0x%08lX\n",
                        (uintptr_t)kfd->doorbell_base);
 
-       pr_debug("doorbell_id_offset      == 0x%08lX\n",
-                       kfd->doorbell_id_offset);
+       pr_debug("doorbell_base_dw_offset      == 0x%08lX\n",
+                       kfd->doorbell_base_dw_offset);
 
        pr_debug("doorbell_process_limit  == 0x%08lX\n",
                        doorbell_process_limit);
@@ -185,7 +185,7 @@ void __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd,
         * Calculating the kernel doorbell offset using the first
         * doorbell page.
         */
-       *doorbell_off = kfd->doorbell_id_offset + inx;
+       *doorbell_off = kfd->doorbell_base_dw_offset + inx;
 
        pr_debug("Get kernel queue doorbell\n"
                        "     doorbell offset   == 0x%08X\n"
@@ -225,17 +225,17 @@ void write_kernel_doorbell64(void __iomem *db, u64 value)
        }
 }
 
-unsigned int kfd_doorbell_id_to_offset(struct kfd_dev *kfd,
+unsigned int kfd_get_doorbell_dw_offset_in_bar(struct kfd_dev *kfd,
                                        struct kfd_process *process,
                                        unsigned int doorbell_id)
 {
        /*
-        * doorbell_id_offset accounts for doorbells taken by KGD.
+        * doorbell_base_dw_offset accounts for doorbells taken by KGD.
         * index * kfd_doorbell_process_slice/sizeof(u32) adjusts to
         * the process's doorbells. The offset returned is in dword
         * units regardless of the ASIC-dependent doorbell size.
         */
-       return kfd->doorbell_id_offset +
+       return kfd->doorbell_base_dw_offset +
                process->doorbell_index
                * kfd_doorbell_process_slice(kfd) / sizeof(u32) +
                doorbell_id * kfd->device_info->doorbell_size / sizeof(u32);
index 3f7c3d6..603d793 100644 (file)
@@ -235,9 +235,10 @@ struct kfd_dev {
                                         * KFD. It is aligned for mapping
                                         * into user mode
                                         */
-       size_t doorbell_id_offset;      /* Doorbell offset (from KFD doorbell
-                                        * to HW doorbell, GFX reserved some
-                                        * at the start)
+       size_t doorbell_base_dw_offset; /* Offset from the start of the PCI
+                                        * doorbell BAR to the first KFD
+                                        * doorbell in dwords. GFX reserves
+                                        * the segment before this offset.
                                         */
        u32 __iomem *doorbell_kernel_ptr; /* This is a pointer for a doorbells
                                           * page used by kernel queue
@@ -815,7 +816,7 @@ void kfd_release_kernel_doorbell(struct kfd_dev *kfd, u32 __iomem *db_addr);
 u32 read_kernel_doorbell(u32 __iomem *db);
 void write_kernel_doorbell(void __iomem *db, u32 value);
 void write_kernel_doorbell64(void __iomem *db, u64 value);
-unsigned int kfd_doorbell_id_to_offset(struct kfd_dev *kfd,
+unsigned int kfd_get_doorbell_dw_offset_in_bar(struct kfd_dev *kfd,
                                        struct kfd_process *process,
                                        unsigned int doorbell_id);
 phys_addr_t kfd_get_process_doorbells(struct kfd_dev *dev,