drm/i915: Implement GGTT update method with MI_UPDATE_GTT
authorNirmoy Das <nirmoy.das@intel.com>
Tue, 26 Sep 2023 08:37:40 +0000 (10:37 +0200)
committerNirmoy Das <nirmoy.das@intel.com>
Sat, 30 Sep 2023 11:49:30 +0000 (13:49 +0200)
commit8a7f77fabac16e284cc47191fe033770012bf48d
treec458edc7e07c0d9ad00d855a2697c3b1df15927d
parent3f5f62883631a987964102bc5044f7bf62c26323
drm/i915: Implement GGTT update method with MI_UPDATE_GTT

Implement GGTT update method with blitter command, MI_UPDATE_GTT
and install those handlers if a platform requires that.

v2: Make sure we hold the GT wakeref and Blitter engine wakeref before
we call mutex_lock/intel_context_enter below. When GT/engine are not
awake, the intel_context_enter calls into some runtime pm function which
can end up with kmalloc/fs_reclaim. But trigger fs_reclaim holding a
mutex lock is not allowed because shrinker can also try to hold the same
mutex lock. It is a circular lock. So hold the GT/blitter engine wakeref
before calling mutex_lock, to fix the circular lock.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
Acked-by: Oak Zeng <oak.zeng@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230926083742.14740-6-nirmoy.das@intel.com
drivers/gpu/drm/i915/gt/intel_ggtt.c