• Changbin Du's avatar
    drm/i915/gvt: fix vGPU instance reuse issues by vGPU reset function · cfe65f40
    Changbin Du authored
    Our function tests found several issues related to reusing vGPU
    instance. They are qemu reboot failure, guest tdr after reboot, host
    hang when reboot guest. All these issues are caused by dirty status
    inherited from last VM.
    
    This patch fix all these issues by resetting a virtual GPU before VM
    use it. The reset logical is put into a low level function
    _intel_gvt_reset_vgpu(), which supports Device Model Level Reset, Full
    GT Reset and Per-Engine Reset.
    
    vGPU Device Model Level Reset (DMLR) simulates the PCI reset to reset
    the whole vGPU to default state as when it is created, including GTT,
    execlist, scratch pages, cfg space, mmio space, pvinfo page, scheduler
    and fence registers. The ultimate goal of vGPU DMLR is that reuse a
    vGPU instance by different virtual machines. When we reassign a vGPU
    to a virtual machine we must issue such reset first.
    
    Full GT Reset and Per-Engine GT Reset are soft reset flow for GPU engines
    (Render, Blitter, Video, Video Enhancement). It is defined by GPU Spec.
    Unlike the FLR, GT reset only reset particular resource of a vGPU per
    the reset request. Guest driver can issue a GT reset by programming
    the virtual GDRST register to reset specific virtual GPU engine or all
    engines.
    
    Since vGPU DMLR and GT reset can share some code so we implement both
    these two into one single function intel_gvt_reset_vgpu_locked(). The
    parameter dmlr is to identify if we will do FLR or GT reset. The
    parameter engine_mask is to specific the engines that need to be
    resetted. If value ALL_ENGINES is given for engine_mask, it means
    the caller requests a full gt reset that we will reset all virtual
    GPU engines.
    Signed-off-by: default avatarChangbin Du <changbin.du@intel.com>
    Reviewed-by: default avatarJike Song <jike.song@intel.com>
    Reviewed-by: default avatarKevin Tian <kevin.tian@intel.com>
    Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
    cfe65f40
vgpu.c 12.3 KB