Commit 5e0b3f3b authored by Xiong Zhang's avatar Xiong Zhang Committed by Zhenyu Wang

drm/i915/gvt: refine ggtt range validation

The vgpu ggtt range should be in vgpu aperture or hidden range. This
patch enforce begin and end address check and guarantee both of them are
in the valid range.

For size=0, it will regress to vgpu_gmadr_is_valid(), will refine
this usage in a later fix.

Fixes: 2707e444 ("drm/i915/gvt: vGPU graphics memory virtualization")
Reviewed-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: default avatarXiong Zhang <xiong.y.zhang@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent cb2808da
...@@ -53,13 +53,19 @@ static int preallocated_oos_pages = 8192; ...@@ -53,13 +53,19 @@ static int preallocated_oos_pages = 8192;
*/ */
bool intel_gvt_ggtt_validate_range(struct intel_vgpu *vgpu, u64 addr, u32 size) bool intel_gvt_ggtt_validate_range(struct intel_vgpu *vgpu, u64 addr, u32 size)
{ {
if ((!vgpu_gmadr_is_valid(vgpu, addr)) || (size if (size == 0)
&& !vgpu_gmadr_is_valid(vgpu, addr + size - 1))) { return vgpu_gmadr_is_valid(vgpu, addr);
gvt_vgpu_err("invalid range gmadr 0x%llx size 0x%x\n",
if (vgpu_gmadr_is_aperture(vgpu, addr) &&
vgpu_gmadr_is_aperture(vgpu, addr + size - 1))
return true;
else if (vgpu_gmadr_is_hidden(vgpu, addr) &&
vgpu_gmadr_is_hidden(vgpu, addr + size - 1))
return true;
gvt_dbg_mm("Invalid ggtt range at 0x%llx, size: 0x%x\n",
addr, size); addr, size);
return false; return false;
}
return true;
} }
/* translate a guest gmadr to host gmadr */ /* translate a guest gmadr to host gmadr */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment