Re: [Intel-gfx] [PATCH 05/15] drm/i915: Only refcount ppgtt if it actually is one

2014-08-08 Thread Thierry, Michel


 -Original Message-
 From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On Behalf
 Of Daniel Vetter
 Sent: Wednesday, August 06, 2014 2:05 PM
 To: Intel Graphics Development
 Cc: Daniel Vetter
 Subject: [Intel-gfx] [PATCH 05/15] drm/i915: Only refcount ppgtt if it
actually
 is one
 
 This essentially unbreaks non-ppgtt operation where we'd scribble over
 random memory.
 
 While at it give the vm_to_ppgtt function a proper prefix and make it
 a bit more paranoid.
 
 Signed-off-by: Daniel Vetter daniel.vet...@ffwll.ch
 ---
  drivers/gpu/drm/i915/i915_drv.h | 10 +-
  drivers/gpu/drm/i915/i915_gem.c |  3 ++-
  drivers/gpu/drm/i915/i915_gem_gtt.c |  3 ++-
  3 files changed, 13 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/gpu/drm/i915/i915_drv.h
 b/drivers/gpu/drm/i915/i915_drv.h
 index 194367f0ba1a..31422bc07445 100644
 --- a/drivers/gpu/drm/i915/i915_drv.h
 +++ b/drivers/gpu/drm/i915/i915_drv.h
 @@ -2475,6 +2475,15 @@ static inline bool i915_is_ggtt(struct
 i915_address_space *vm)
   return vm == ggtt;
  }
 
 +static inline struct i915_hw_ppgtt *
 +i915_vm_to_ppgtt(struct i915_address_space *vm)
 +{
 + WARN_ON(i915_is_ggtt(vm));
 +
 + return container_of(vm, struct i915_hw_ppgtt, base);
 +}
 +
 +
  static inline bool i915_gem_obj_ggtt_bound(struct drm_i915_gem_object
 *obj)
  {
   return i915_gem_obj_bound(obj, obj_to_ggtt(obj));
 @@ -2510,7 +2519,6 @@ void i915_gem_object_ggtt_unpin(struct
 drm_i915_gem_object *obj);
 
  /* i915_gem_context.c */
  #define ctx_to_ppgtt(ctx) container_of((ctx)-vm, struct i915_hw_ppgtt,
 base)
 -#define vm_to_ppgtt(vm) container_of(vm, struct i915_hw_ppgtt, base)
  int __must_check i915_gem_context_init(struct drm_device *dev);
  void i915_gem_context_fini(struct drm_device *dev);
  void i915_gem_context_reset(struct drm_device *dev);
 diff --git a/drivers/gpu/drm/i915/i915_gem.c
 b/drivers/gpu/drm/i915/i915_gem.c
 index b33a677b4b1e..c43ccfdf45a5 100644
 --- a/drivers/gpu/drm/i915/i915_gem.c
 +++ b/drivers/gpu/drm/i915/i915_gem.c
 @@ -4508,7 +4508,8 @@ void i915_gem_vma_destroy(struct i915_vma
 *vma)
 
   vm = vma-vm;
 
 - i915_ppgtt_put(vm_to_ppgtt(vm));
 + if (!i915_is_ggtt(vm))
 + i915_ppgtt_put(i915_vm_to_ppgtt(vm));
 
   list_del(vma-vma_link);
 
 diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c
 b/drivers/gpu/drm/i915/i915_gem_gtt.c
 index 83ee41e5c1c7..3753bf184865 100644
 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
 +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
 @@ -2204,7 +2204,8 @@ i915_gem_obj_lookup_or_create_vma(struct
 drm_i915_gem_object *obj,
   if (!vma)
   vma = __i915_gem_vma_create(obj, vm);
 
 - i915_ppgtt_get(vm_to_ppgtt(vm));
 + if (!i915_is_ggtt(vm))
 + i915_ppgtt_get(i915_vm_to_ppgtt(vm));
 
   return vma;
  }
 --
 1.9.3

Reviewed-by: Michel Thierry michel.thie...@intel.com
 
 ___
 Intel-gfx mailing list
 Intel-gfx@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/intel-gfx


smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 05/15] drm/i915: Only refcount ppgtt if it actually is one

2014-08-06 Thread Daniel Vetter
This essentially unbreaks non-ppgtt operation where we'd scribble over
random memory.

While at it give the vm_to_ppgtt function a proper prefix and make it
a bit more paranoid.

Signed-off-by: Daniel Vetter daniel.vet...@ffwll.ch
---
 drivers/gpu/drm/i915/i915_drv.h | 10 +-
 drivers/gpu/drm/i915/i915_gem.c |  3 ++-
 drivers/gpu/drm/i915/i915_gem_gtt.c |  3 ++-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 194367f0ba1a..31422bc07445 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2475,6 +2475,15 @@ static inline bool i915_is_ggtt(struct 
i915_address_space *vm)
return vm == ggtt;
 }
 
+static inline struct i915_hw_ppgtt *
+i915_vm_to_ppgtt(struct i915_address_space *vm)
+{
+   WARN_ON(i915_is_ggtt(vm));
+
+   return container_of(vm, struct i915_hw_ppgtt, base);
+}
+
+
 static inline bool i915_gem_obj_ggtt_bound(struct drm_i915_gem_object *obj)
 {
return i915_gem_obj_bound(obj, obj_to_ggtt(obj));
@@ -2510,7 +2519,6 @@ void i915_gem_object_ggtt_unpin(struct 
drm_i915_gem_object *obj);
 
 /* i915_gem_context.c */
 #define ctx_to_ppgtt(ctx) container_of((ctx)-vm, struct i915_hw_ppgtt, base)
-#define vm_to_ppgtt(vm) container_of(vm, struct i915_hw_ppgtt, base)
 int __must_check i915_gem_context_init(struct drm_device *dev);
 void i915_gem_context_fini(struct drm_device *dev);
 void i915_gem_context_reset(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index b33a677b4b1e..c43ccfdf45a5 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4508,7 +4508,8 @@ void i915_gem_vma_destroy(struct i915_vma *vma)
 
vm = vma-vm;
 
-   i915_ppgtt_put(vm_to_ppgtt(vm));
+   if (!i915_is_ggtt(vm))
+   i915_ppgtt_put(i915_vm_to_ppgtt(vm));
 
list_del(vma-vma_link);
 
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c 
b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 83ee41e5c1c7..3753bf184865 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -2204,7 +2204,8 @@ i915_gem_obj_lookup_or_create_vma(struct 
drm_i915_gem_object *obj,
if (!vma)
vma = __i915_gem_vma_create(obj, vm);
 
-   i915_ppgtt_get(vm_to_ppgtt(vm));
+   if (!i915_is_ggtt(vm))
+   i915_ppgtt_get(i915_vm_to_ppgtt(vm));
 
return vma;
 }
-- 
1.9.3

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx