[PATCH 2/2] drm/amdkfd: Use order_base_2 to get log2 of buffes sizes

Oded Gabbay oded.gabbay at gmail.com
Thu Nov 9 06:57:27 UTC 2017


Thanks,
Applied to -next

On Tue, Nov 7, 2017 at 12:04 AM, Deucher, Alexander
<Alexander.Deucher at amd.com> wrote:
>> -----Original Message-----
>> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
>> Of Felix Kuehling
>> Sent: Monday, November 06, 2017 2:52 PM
>> To: amd-gfx at lists.freedesktop.org; oded.gabbay at gmail.com
>> Cc: Kuehling, Felix
>> Subject: [PATCH 2/2] drm/amdkfd: Use order_base_2 to get log2 of buffes
>> sizes
>>
>> Replace (ffs(size) - 1) with order_base_2(size) as a more straight
>> forward way to get log2 of buffer sizes.
>>
>> Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com>
>
> Series is:
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>
>> ---
>>  drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | 6 +++---
>>  drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c  | 6 +++---
>>  2 files changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
>> b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
>> index efed6ef..7aa57ab 100644
>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
>> @@ -183,7 +183,7 @@ static int update_mqd(struct mqd_manager *mm,
>> void *mqd,
>>        * Calculating queue size which is log base 2 of actual queue size -1
>>        * dwords and another -1 for ffs
>>        */
>> -     m->cp_hqd_pq_control |= ffs(q->queue_size / 4) - 1 - 1;
>> +     m->cp_hqd_pq_control |= order_base_2(q->queue_size / 4) - 1;
>>       m->cp_hqd_pq_base_lo = lower_32_bits((uint64_t)q-
>> >queue_address >> 8);
>>       m->cp_hqd_pq_base_hi = upper_32_bits((uint64_t)q-
>> >queue_address >> 8);
>>       m->cp_hqd_pq_rptr_report_addr_lo = lower_32_bits((uint64_t)q-
>> >read_ptr);
>> @@ -208,7 +208,7 @@ static int update_mqd_sdma(struct mqd_manager
>> *mm, void *mqd,
>>       struct cik_sdma_rlc_registers *m;
>>
>>       m = get_sdma_mqd(mqd);
>> -     m->sdma_rlc_rb_cntl = (ffs(q->queue_size / 4) - 1)
>> +     m->sdma_rlc_rb_cntl = order_base_2(q->queue_size / 4)
>>                       << SDMA0_RLC0_RB_CNTL__RB_SIZE__SHIFT |
>>                       q->vmid <<
>> SDMA0_RLC0_RB_CNTL__RB_VMID__SHIFT |
>>                       1 <<
>> SDMA0_RLC0_RB_CNTL__RPTR_WRITEBACK_ENABLE__SHIFT |
>> @@ -349,7 +349,7 @@ static int update_mqd_hiq(struct mqd_manager
>> *mm, void *mqd,
>>        * Calculating queue size which is log base 2 of actual queue
>>        * size -1 dwords
>>        */
>> -     m->cp_hqd_pq_control |= ffs(q->queue_size / 4) - 1 - 1;
>> +     m->cp_hqd_pq_control |= order_base_2(q->queue_size / 4) - 1;
>>       m->cp_hqd_pq_base_lo = lower_32_bits((uint64_t)q-
>> >queue_address >> 8);
>>       m->cp_hqd_pq_base_hi = upper_32_bits((uint64_t)q-
>> >queue_address >> 8);
>>       m->cp_hqd_pq_rptr_report_addr_lo = lower_32_bits((uint64_t)q-
>> >read_ptr);
>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
>> b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
>> index 85e1b67..2ba7cea 100644
>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
>> @@ -121,7 +121,7 @@ static int __update_mqd(struct mqd_manager *mm,
>> void *mqd,
>>       m->cp_hqd_pq_control = 5 <<
>> CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT |
>>                       atc_bit << CP_HQD_PQ_CONTROL__PQ_ATC__SHIFT
>> |
>>                       mtype << CP_HQD_PQ_CONTROL__MTYPE__SHIFT;
>> -     m->cp_hqd_pq_control |= ffs(q->queue_size / 4) - 1 - 1;
>> +     m->cp_hqd_pq_control |= order_base_2(q->queue_size / 4) - 1;
>>       pr_debug("cp_hqd_pq_control 0x%x\n", m->cp_hqd_pq_control);
>>
>>       m->cp_hqd_pq_base_lo = lower_32_bits((uint64_t)q-
>> >queue_address >> 8);
>> @@ -151,7 +151,7 @@ static int __update_mqd(struct mqd_manager *mm,
>> void *mqd,
>>        * is safe, giving a maximum field value of 0xA.
>>        */
>>       m->cp_hqd_eop_control |= min(0xA,
>> -             ffs(q->eop_ring_buffer_size / 4) - 1 - 1);
>> +             order_base_2(q->eop_ring_buffer_size / 4) - 1);
>>       m->cp_hqd_eop_base_addr_lo =
>>                       lower_32_bits(q->eop_ring_buffer_address >> 8);
>>       m->cp_hqd_eop_base_addr_hi =
>> @@ -287,7 +287,7 @@ static int update_mqd_sdma(struct mqd_manager
>> *mm, void *mqd,
>>       struct vi_sdma_mqd *m;
>>
>>       m = get_sdma_mqd(mqd);
>> -     m->sdmax_rlcx_rb_cntl = (ffs(q->queue_size / 4) - 1)
>> +     m->sdmax_rlcx_rb_cntl = order_base_2(q->queue_size / 4)
>>               << SDMA0_RLC0_RB_CNTL__RB_SIZE__SHIFT |
>>               q->vmid << SDMA0_RLC0_RB_CNTL__RB_VMID__SHIFT |
>>               1 <<
>> SDMA0_RLC0_RB_CNTL__RPTR_WRITEBACK_ENABLE__SHIFT |
>> --
>> 2.7.4
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list