[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