diff mbox

[06/16] drm/i915/error: Check the potential ctx obj's vm

Message ID 1404238671-18760-7-git-send-email-benjamin.widawsky@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ben Widawsky July 1, 2014, 6:17 p.m. UTC
The bound list is global (all objects which back the VMAs are stored
here). Recently the BUG() in the offset lookup was demoted to a WARN,
but the fault actually lies in the caller, here.

This bug has existed since the initial introduction of PPGTT (however,
it was fixed in unmerged patches to fix up the error state).

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
---
 drivers/gpu/drm/i915/i915_gpu_error.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Daniel Vetter July 17, 2014, 8:47 a.m. UTC | #1
On Tue, Jul 01, 2014 at 11:17:41AM -0700, Ben Widawsky wrote:
> The bound list is global (all objects which back the VMAs are stored
> here). Recently the BUG() in the offset lookup was demoted to a WARN,
> but the fault actually lies in the caller, here.
> 
> This bug has existed since the initial introduction of PPGTT (however,
> it was fixed in unmerged patches to fix up the error state).

Aside: This is another bug than the one which spurred me to demote the
BUG_ON to a WARN_ON. Patch merged with that patch referenced for clarity.
-Daniel

> 
> Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_gpu_error.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index 66cf417..550ba38 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -871,6 +871,9 @@ static void i915_gem_record_active_context(struct intel_engine_cs *ring,
>  		return;
>  
>  	list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) {
> +		if (!i915_gem_obj_ggtt_bound(obj))
> +			continue;
> +
>  		if ((error->ccid & PAGE_MASK) == i915_gem_obj_ggtt_offset(obj)) {
>  			ering->ctx = i915_error_ggtt_object_create(dev_priv, obj);
>  			break;
> -- 
> 2.0.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 66cf417..550ba38 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -871,6 +871,9 @@  static void i915_gem_record_active_context(struct intel_engine_cs *ring,
 		return;
 
 	list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) {
+		if (!i915_gem_obj_ggtt_bound(obj))
+			continue;
+
 		if ((error->ccid & PAGE_MASK) == i915_gem_obj_ggtt_offset(obj)) {
 			ering->ctx = i915_error_ggtt_object_create(dev_priv, obj);
 			break;