i915/gtt: fix ordering causing DMAR errors on object teardown.
authorDave Airlie <airlied@gmail.com>
Wed, 12 Jan 2011 01:39:48 +0000 (11:39 +1000)
committerDave Airlie <airlied@gmail.com>
Wed, 12 Jan 2011 01:39:48 +0000 (11:39 +1000)
Previous to the last GTT rework we always rewrote the GTT then unmapped the
object, somehow this got reversed in the rework in 2.6.37-rc5 timeframe.

This fix needs to go to stable in an alternate form since the code changed.

This fixes DMAR reports on my Ironlake HP2540p.

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/char/agp/intel-gtt.c

index b7c0c7e..e921b69 100644 (file)
@@ -1000,14 +1000,14 @@ static int intel_fake_agp_remove_entries(struct agp_memory *mem,
        if (mem->page_count == 0)
                return 0;
 
+       intel_gtt_clear_range(pg_start, mem->page_count);
+
        if (intel_private.base.needs_dmar) {
                intel_gtt_unmap_memory(mem->sg_list, mem->num_sg);
                mem->sg_list = NULL;
                mem->num_sg = 0;
        }
 
-       intel_gtt_clear_range(pg_start, mem->page_count);
-
        return 0;
 }