[PATCH] drm/amdgpu: Use drm_calloc_large for VM page_tables array
Alex Deucher
alexdeucher at gmail.com
Tue Jan 19 09:05:20 PST 2016
On Tue, Jan 19, 2016 at 8:03 AM, Christian König
<deathsimple at vodafone.de> wrote:
> Am 19.01.2016 um 09:59 schrieb Michel Dänzer:
>>
>> From: Michel Dänzer <michel.daenzer at amd.com>
>>
>> It can be big, depending on the VM address space size, which is tunable
>> via the vm_size module parameter.
>>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93721
>> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
>
>
> I actually wanted to address this by reducing sizeof(struct amdgpu_vm_pt),
> but once more never got the time to do so.
>
> Patch is Reviewed-by: Christian König <christian.koenig at amd.com>
>
Applied. Thanks,
Alex
>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 7 +++----
>> 1 file changed, 3 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> index aefc668..9599f75 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> @@ -1282,7 +1282,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev,
>> struct amdgpu_vm *vm)
>> {
>> const unsigned align = min(AMDGPU_VM_PTB_ALIGN_SIZE,
>> AMDGPU_VM_PTE_COUNT * 8);
>> - unsigned pd_size, pd_entries, pts_size;
>> + unsigned pd_size, pd_entries;
>> int i, r;
>> for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
>> @@ -1300,8 +1300,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev,
>> struct amdgpu_vm *vm)
>> pd_entries = amdgpu_vm_num_pdes(adev);
>> /* allocate page table array */
>> - pts_size = pd_entries * sizeof(struct amdgpu_vm_pt);
>> - vm->page_tables = kzalloc(pts_size, GFP_KERNEL);
>> + vm->page_tables = drm_calloc_large(pd_entries, sizeof(struct
>> amdgpu_vm_pt));
>> if (vm->page_tables == NULL) {
>> DRM_ERROR("Cannot allocate memory for page table
>> array\n");
>> return -ENOMEM;
>> @@ -1361,7 +1360,7 @@ void amdgpu_vm_fini(struct amdgpu_device *adev,
>> struct amdgpu_vm *vm)
>> for (i = 0; i < amdgpu_vm_num_pdes(adev); i++)
>> amdgpu_bo_unref(&vm->page_tables[i].entry.robj);
>> - kfree(vm->page_tables);
>> + drm_free_large(vm->page_tables);
>> amdgpu_bo_unref(&vm->page_directory);
>> fence_put(vm->page_directory_fence);
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list