• Changbin Du's avatar
    drm/i915/gvt: implement per-vm mmio switching optimization · 0e86cc9c
    Changbin Du authored
    Commit ab9da627906a ("drm/i915: make context status notifier head be
    per engine") gives us a chance to inspect every single request. Then
    we can eliminate unnecessary mmio switching for same vGPU. We only
    need mmio switching for different VMs (including host).
    
    This patch introduced a new general API intel_gvt_switch_mmio() to
    replace the old intel_gvt_load/restore_render_mmio(). This function
    can be further optimized for vGPU to vGPU switching.
    
    To support individual ring switch, we track the owner who occupy
    each ring. When another VM or host request a ring we do the mmio
    context switching. Otherwise no need to switch the ring.
    
    This optimization is very useful if only one guest has plenty of
    workloads and the host is mostly idle. The best case is no mmio
    switching will happen.
    
    v2:
      o fix missing ring switch issue. (chuanxiao)
      o support individual ring switch.
    Signed-off-by: default avatarChangbin Du <changbin.du@intel.com>
    Reviewed-by: default avatarChuanxiao Dong <chuanxiao.dong@intel.com>
    Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
    0e86cc9c
gvt.c 8.49 KB