[PATCH 1/2] Apply g2h adjust for GTT mmio access

Zhenyu Wang zhenyuw at linux.intel.com
Sat Apr 15 14:13:59 UTC 2017


Pls use "drm/i915/gvt: xxx" in patch title, ditto second one.

On 2017.04.14 23:46:01 +0800, Yulei Zhang wrote:
> Apply guest to host gma conversion while guest try to acces the
> GTT mmio registers, as after enable live migration the host gma
> will be changed due to resource re-allocation, but guest gma should
> be remaining unchanged, g2h conversion is request for this.
> 
> Signed-off-by: Yulei Zhang <yulei.zhang at intel.com>
> ---
>  drivers/gpu/drm/i915/gvt/gtt.c | 11 ++++-------
>  1 file changed, 4 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gvt/gtt.c b/drivers/gpu/drm/i915/gvt/gtt.c
> index bf90f72..11d844b 100644
> --- a/drivers/gpu/drm/i915/gvt/gtt.c
> +++ b/drivers/gpu/drm/i915/gvt/gtt.c
> @@ -59,8 +59,7 @@ bool intel_gvt_ggtt_validate_range(struct intel_vgpu *vgpu, u64 addr, u32 size)
>  /* translate a guest gmadr to host gmadr */
>  int intel_gvt_ggtt_gmadr_g2h(struct intel_vgpu *vgpu, u64 g_addr, u64 *h_addr)
>  {
> -	if (WARN(!vgpu_gmadr_is_valid(vgpu, g_addr),
> -		 "invalid guest gmadr %llx\n", g_addr))
> +	if (!vgpu_gmadr_is_valid(vgpu, g_addr))
>  		return -EACCES;
>  
>  	if (vgpu_gmadr_is_aperture(vgpu, g_addr))
> @@ -1817,17 +1816,15 @@ static int emulate_gtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
>  	struct intel_vgpu_mm *ggtt_mm = vgpu->gtt.ggtt_mm;
>  	struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
>  	unsigned long g_gtt_index = off >> info->gtt_entry_size_shift;
> -	unsigned long gma;
> +	unsigned long h_gtt_index;
>  	struct intel_gvt_gtt_entry e, m;
>  	int ret;
>  
>  	if (bytes != 4 && bytes != 8)
>  		return -EINVAL;
>  
> -	gma = g_gtt_index << GTT_PAGE_SHIFT;
> -
>  	/* the VM may configure the whole GM space when ballooning is used */
> -	if (!vgpu_gmadr_is_valid(vgpu, gma))
> +	if (intel_gvt_ggtt_index_g2h(vgpu, g_gtt_index, &h_gtt_index))
>  		return 0;
>  
>  	ggtt_get_guest_entry(ggtt_mm, &e, g_gtt_index);
> @@ -1850,7 +1847,7 @@ static int emulate_gtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off,
>  		ops->set_pfn(&m, gvt->gtt.scratch_ggtt_mfn);
>  	}
>  
> -	ggtt_set_shadow_entry(ggtt_mm, &m, g_gtt_index);
> +	ggtt_set_shadow_entry(ggtt_mm, &m, h_gtt_index);
>  	ggtt_set_guest_entry(ggtt_mm, &e, g_gtt_index);
>  	return 0;
>  }
> -- 
> 2.9.3
> 
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 163 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gvt-dev/attachments/20170415/785038f9/attachment.sig>


More information about the intel-gvt-dev mailing list