Re: [Nouveau] [RFC PATCH] drm/nouveau: use vmalloc for pgt allocation

2013-03-19 Thread Marcin Slusarz
On Tue, Mar 05, 2013 at 07:57:08PM +0100, Marcin Slusarz wrote:
 Page tables on nv50 take 48kB, which can be hard to allocate in one piece.
 Let's use vmalloc.
 
 Signed-off-by: Marcin Slusarz marcin.slus...@gmail.com
 Cc: sta...@vger.kernel.org [3.7+]
 ---
  drivers/gpu/drm/nouveau/core/subdev/vm/base.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c 
 b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
 index 77c67fc..e66fb77 100644
 --- a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
 +++ b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
 @@ -362,7 +362,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;
 @@ -371,7 +371,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;
   }
 @@ -446,7 +446,7 @@ nouveau_vm_del(struct nouveau_vm *vm)
   }
  
   nouveau_mm_fini(vm-mm);
 - kfree(vm-pgt);
 + vfree(vm-pgt);
   kfree(vm);
  }
  
 -- 

What's up with this patch?

Marcin
___
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [RFC PATCH] drm/nouveau: use vmalloc for pgt allocation

2013-03-05 Thread Marcin Slusarz
Page tables on nv50 take 48kB, which can be hard to allocate in one piece.
Let's use vmalloc.

Signed-off-by: Marcin Slusarz marcin.slus...@gmail.com
Cc: sta...@vger.kernel.org [3.7+]
---
 drivers/gpu/drm/nouveau/core/subdev/vm/base.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c 
b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
index 77c67fc..e66fb77 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
@@ -362,7 +362,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;
@@ -371,7 +371,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;
}
@@ -446,7 +446,7 @@ nouveau_vm_del(struct nouveau_vm *vm)
}
 
nouveau_mm_fini(vm-mm);
-   kfree(vm-pgt);
+   vfree(vm-pgt);
kfree(vm);
 }
 
-- 
1.8.1.4

___
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau