[PATCH 1/7] drm/amdgpu: fix VM PD addr shift
Michel Dänzer
michel at daenzer.net
Mon Nov 27 17:51:45 UTC 2017
On 2017-11-27 06:12 PM, Christian König wrote:
> Am 27.11.2017 um 17:40 schrieb Felix Kuehling:
>> On 2017-11-27 11:02 AM, Christian König wrote:
>>> The block size only affects the leave nodes, everything else is fixed.
>>>
>>> Signed-off-by: Christian König <christian.koenig at amd.com>
>>> ---
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 28
>>> +++++++++++++++++++++++-----
>>> 1 file changed, 23 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> index 122379dfc7d8..f1e541e9b514 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> @@ -139,6 +139,24 @@ struct amdgpu_prt_cb {
>>> };
>>> /**
>>> + * amdgpu_vm_level_shift - return the addr shift for each level
>>> + *
>>> + * @adev: amdgpu_device pointer
>>> + *
>>> + * Returns the number of bits the pfn needs to be right shifted for
>>> a level.
>>> + */
>>> +static unsigned amdgpu_vm_level_shift(struct amdgpu_device *adev,
>>> + unsigned level)
>>> +{
>>> + if (level != adev->vm_manager.num_level)
>>> + return 9 * (adev->vm_manager.num_level - level - 1) +
>>> + adev->vm_manager.block_size;
>>> + else
>>> + /* For the page tables on the leaves */
>>> + return 0;
>>> +}
>>> +
>>> +/**
>>> * amdgpu_vm_num_entries - return the number of entries in a PD/PT
>>> *
>>> * @adev: amdgpu_device pointer
>>> @@ -288,8 +306,7 @@ static int amdgpu_vm_alloc_levels(struct
>>> amdgpu_device *adev,
>>> uint64_t saddr, uint64_t eaddr,
>>> unsigned level)
>>> {
>>> - unsigned shift = (adev->vm_manager.num_level - level) *
>>> - adev->vm_manager.block_size;
>>> + unsigned shift = amdgpu_vm_level_shift(adev, level);
>>> unsigned pt_idx, from, to;
>>> int r;
>>> u64 flags;
>>> @@ -1302,18 +1319,19 @@ void amdgpu_vm_get_entry(struct
>>> amdgpu_pte_update_params *p, uint64_t addr,
>>> struct amdgpu_vm_pt **entry,
>>> struct amdgpu_vm_pt **parent)
>>> {
>>> - unsigned idx, level = p->adev->vm_manager.num_level;
>>> + unsigned level = 0;
>> This generates a checkpatch.pl warning.
>>
>> General question: Do you have a policy for running your patches through
>> checkpatch.pl before/during/after code review?
>
> No, I'm using editor settings which generate coding style compliant code
> most of the time and complains/shows when it isn't compliant.
>
>> I've noticed before that some of your patches aren't always 100%
>> compliant.
>
> Yeah, amdgpu inherited a lot of code as well as coding style from radeon
> which isn't compliant.
>
> For example in this case checkpatch.pl most likely complains that we
> should use "unsigned int" instead of just "unsigned".
>
> I've tried to clean this up for years, but simply not enough time to
> handle everything.
Moreover, checkpatch.pl cannot always be 100% satisfied, let alone in a
way that actually makes sense for the code in question. Its reports
should be considered guidelines, not the law.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the amd-gfx
mailing list