mirror of
https://github.com/torvalds/linux.git
synced 2026-04-26 18:42:25 -04:00
drm/i915/gvt: use cmd to restore in-context mmios to hw for gen9 platform
for restore-inhibit context, hardware will not load in-context mmios (engine context part) to hardware, but hardware will save the mmio values in hardware back to context image. So, in order to save correct values of vGPU back to context image, values of vGPU mmios have to be loaded into hardware first for restore-inhibit context. In this patch, the mechanism is applied to all gen9 platform. The reason excluding gen8 platforms is only because of lacking of testing on those platforms. v3: for mocs registers, goto in-context mmios save-restore path for skl platform as well (weinan li) v2: update vreg when scanning indirect context for inhibit context for gen9 Cc: Weinan Li <weinan.z.li@intel.com> Acked-by: Weinan Li <weinan.z.li@intel.com> Signed-off-by: Yan Zhao <yan.y.zhao@intel.com> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
This commit is contained in:
@@ -896,12 +896,16 @@ static int cmd_reg_handler(struct parser_exec_state *s,
|
||||
}
|
||||
|
||||
/* TODO
|
||||
* Right now only scan LRI command on KBL and in inhibit context.
|
||||
* It's good enough to support initializing mmio by lri command in
|
||||
* vgpu inhibit context on KBL.
|
||||
* In order to let workload with inhibit context to generate
|
||||
* correct image data into memory, vregs values will be loaded to
|
||||
* hw via LRIs in the workload with inhibit context. But as
|
||||
* indirect context is loaded prior to LRIs in workload, we don't
|
||||
* want reg values specified in indirect context overwritten by
|
||||
* LRIs in workloads. So, when scanning an indirect context, we
|
||||
* update reg values in it into vregs, so LRIs in workload with
|
||||
* inhibit context will restore with correct values
|
||||
*/
|
||||
if ((IS_KABYLAKE(s->vgpu->gvt->dev_priv)
|
||||
|| IS_COFFEELAKE(s->vgpu->gvt->dev_priv)) &&
|
||||
if (IS_GEN(gvt->dev_priv, 9) &&
|
||||
intel_gvt_mmio_is_in_ctx(gvt, offset) &&
|
||||
!strncmp(cmd, "lri", 3)) {
|
||||
intel_gvt_hypervisor_read_gpa(s->vgpu,
|
||||
|
||||
Reference in New Issue
Block a user