Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d005f51e authored by Marcin Slusarz's avatar Marcin Slusarz Committed by Ben Skeggs
Browse files

drm/nouveau: use vmalloc for pgt allocation



Page tables on nv50 take 48kB, which can be hard to allocate in one piece.
Let's use vmalloc.

Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
Cc: stable@vger.kernel.org [3.7+]
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 5c5ae715
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -365,7 +365,7 @@ nouveau_vm_create(struct nouveau_vmmgr *vmm, u64 offset, u64 length,
	vm->fpde = offset >> (vmm->pgt_bits + 12);
	vm->lpde = (offset + length - 1) >> (vmm->pgt_bits + 12);

	vm->pgt  = kcalloc(vm->lpde - vm->fpde + 1, sizeof(*vm->pgt), GFP_KERNEL);
	vm->pgt  = vzalloc((vm->lpde - vm->fpde + 1) * sizeof(*vm->pgt));
	if (!vm->pgt) {
		kfree(vm);
		return -ENOMEM;
@@ -374,7 +374,7 @@ nouveau_vm_create(struct nouveau_vmmgr *vmm, u64 offset, u64 length,
	ret = nouveau_mm_init(&vm->mm, mm_offset >> 12, mm_length >> 12,
			      block >> 12);
	if (ret) {
		kfree(vm->pgt);
		vfree(vm->pgt);
		kfree(vm);
		return ret;
	}
@@ -450,7 +450,7 @@ nouveau_vm_del(struct nouveau_vm *vm)
	}

	nouveau_mm_fini(&vm->mm);
	kfree(vm->pgt);
	vfree(vm->pgt);
	kfree(vm);
}