[PATCH] drm/i915/gvt: Clear d3_entered on elsp cmd submission.
Zhenyu Wang
zhenyuw at linux.intel.com
Mon Jul 5 02:33:00 UTC 2021
On 2021.07.01 10:54:23 +0800, Colin Xu wrote:
> d3_entered flag is used to mark for vgpu_reset a previous power
> transition from D3->D0, typically for VM resume from S3, so that gvt
> could skip PPGTT invalidation in current vgpu_reset during resuming.
>
> In case S0ix exit, although there is D3->D0, guest driver continue to
> use vgpu as normal, with d3_entered set, until next shutdown/reboot or
> power transition.
>
> If a reboot follows a S0ix exit, device power state transite as:
> D0->D3->D0->D0(reboot), while system power state transites as:
> S0->S0 (reboot). There is no vgpu_reset until D0(reboot), thus
> d3_entered won't be cleared, the vgpu_reset will skip PPGTT invalidation
> however those PPGTT entries are no longer valid. Err appears like:
>
> gvt: vgpu 2: vfio_pin_pages failed for gfn 0xxxxx, ret -22
> gvt: vgpu 2: fail: spt xxxx guest entry 0xxxxx type 2
> gvt: vgpu 2: fail: shadow page xxxx guest entry 0xxxxx type 2.
>
> Give gvt a chance to clear d3_entered on elsp cmd submission so that the
> states before & after S0ix enter/exit are consistent.
>
> Fixes: ba25d977571e ("drm/i915/gvt: Do not destroy ppgtt_mm during vGPU D3->D0.")
>
> Signed-off-by: Colin Xu <colin.xu at intel.com>
> ---
> drivers/gpu/drm/i915/gvt/handlers.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
> index 98eb48c24c46..f3e044521aa6 100644
> --- a/drivers/gpu/drm/i915/gvt/handlers.c
> +++ b/drivers/gpu/drm/i915/gvt/handlers.c
> @@ -1977,6 +1977,9 @@ static int elsp_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
> if (drm_WARN_ON(&i915->drm, !engine))
> return -EINVAL;
>
> + if (vgpu->d3_entered)
> + vgpu->d3_entered = false;
Pls add comment to explain why to trigger this here, so easier to find out why..
> +
> execlist = &vgpu->submission.execlist[engine->id];
>
> execlist->elsp_dwords.data[3 - execlist->elsp_dwords.index] = data;
> --
> 2.32.0
>
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gvt-dev/attachments/20210705/e3c803f8/attachment.sig>
More information about the intel-gvt-dev
mailing list