• Zhi Wang's avatar
    drm/i915/gvt: Activate/de-activate vGPU in mdev ops. · b79c52ae
    Zhi Wang authored
    This patch introduces two functions for activating/de-activating vGPU in
    mdev ops.
    
    A racing condition was found between virtual vblank emulation and KVGMT
    mdev release path. V-blank emulation will emulate and inject V-blank
    interrupt for every active vGPU with holding gvt->lock, while in mdev
    release path, it will directly release hypervisor handle without changing
    vGPU status or taking gvt->lock, so a kernel oops is encountered when
    vblank emulation is injecting a interrupt with a invalid hypervisor
    handle. (Reported by Terrence)
    
    To solve this problem, we factor out vGPU activation/de-activation from
    vGPU creation/destruction path and let KVMGT mdev release ops de-activate
    the vGPU before release hypervisor handle. Once a vGPU is de-activated,
    GVT-g will not emulate v-blank for it or touch the hypervisor handle.
    
    Fixes: 659643f7 ("drm/i915/gvt/kvmgt: add vfio/mdev support to KVMGT")
    Signed-off-by: default avatarZhi Wang <zhi.a.wang@intel.com>
    Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
    b79c52ae
gvt.h 13.3 KB