drm/i915: Fix vGPU balloon for ggtt guard page
authorZhenyu Wang <zhenyuw@linux.intel.com>
Fri, 10 Mar 2017 02:22:38 +0000 (10:22 +0800)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 17 Mar 2017 09:41:27 +0000 (09:41 +0000)
From commit a6508ded2a66 ("drm/i915: Use page coloring to provide the guard
page at the end of the GTT"), we no longer explicitly subtract guard page
at end for GGTT address space init, so shouldn't subtract that for vGPU
balloon too, as that will leave that end page to be available for
vGPU. Change balloon to cover full range too.

This fixes to use recent drm-intel tip kernel for guest OS. Found by GVT-g
cmd parser that guest kernel uses end page as scratch then try to run
MI_STORE_REG_MEM onto it.

v2: remove old comments

Cc: Terrence Xu <terrence.xu@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170310022238.3191-1-zhenyuw@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_vgpu.c

index 14014068dfcfd88ce70959e67e8757ad0ac2e430..4ab8a973b61f155c47ba528d1a907385e22b3b94 100644 (file)
@@ -218,13 +218,9 @@ int intel_vgt_balloon(struct drm_i915_private *dev_priv)
                        goto err;
        }
 
-       /*
-        * No need to partition out the last physical page,
-        * because it is reserved to the guard page.
-        */
-       if (unmappable_end < ggtt_end - PAGE_SIZE) {
+       if (unmappable_end < ggtt_end) {
                ret = vgt_balloon_space(ggtt, &bl_info.space[3],
-                                       unmappable_end, ggtt_end - PAGE_SIZE);
+                                       unmappable_end, ggtt_end);
                if (ret)
                        goto err;
        }