• Colin Xu's avatar
    drm/i915/gvt: Clear d3_entered on elsp cmd submission. · c90b4503
    Colin Xu authored
    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: ba25d977
    
     ("drm/i915/gvt: Do not destroy ppgtt_mm during vGPU D3->D0.")
    Reviewed-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
    Signed-off-by: default avatarColin Xu <colin.xu@intel.com>
    Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20210707004531.4873-1-colin.xu@intel.com
    c90b4503
handlers.c 123 KB