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> > --- > 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);