]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/gvt: Only pin/unpin intel_context along with workload
authorColin Xu <colin.xu@intel.com>
Fri, 16 Oct 2020 05:40:59 +0000 (13:40 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Fri, 30 Oct 2020 03:45:46 +0000 (11:45 +0800)
commitdbe1789c5a18a01cb0ed866af98b40668ccf56c2
treec337be1088adf5ce1c2d8fe1ccd24fb30aed1040
parentc30e6eafee5dca2182863732be2079435c4acccc
drm/i915/gvt: Only pin/unpin intel_context along with workload

One issue exposed after below commit with which the system will freeze
at suspend after vGPU is created (no need to activate the vGPU).
commit d021f0989ee9 ("drm/i915: Remove i915->kernel_context")

Old implementation pin the intel_context at setup_submission and
unpin it at clean_submission. So after some vGPU is created, the
intel_context is always pinned there although no workload using it.
It will then block i915 enter suspend state.

There is no need to pin it all the time. Pin/unpin it around workload
lifecycle is more reasonable. After GVT enabled suspend/resume, the
pinned intel_context will also get unpined when userspace put VM process
into suspend state since all workloads are retired, then it's safe to
unpin all intel_context for workloads created. So move the pin/unpin to
create_workload and destroy_workload, while still keep the
create/destroy in old place.

V2:
Rebase.

Fixes: d021f0989ee9 ("drm/i915: Remove i915->kernel_context")
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Colin Xu <colin.xu@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20201016054059.238371-1-colin.xu@intel.com
drivers/gpu/drm/i915/gvt/scheduler.c