Instead of waiting until the interrupt reaches GuC, we can grab a
forcewake while triggering the H2G interrupt. GEN11_GUC_HOST_INTERRUPT
is inside an "always on" domain with respect to RC6. However, there
could be some delays when platform is entering/exiting some higher
level platform sleep states and a H2G is triggered. A forcewake
ensures those sleep states have been fully exited and further
processing occurs as expected.

This will have an official WA soon so adding a FIXME in the comments.

Signed-off-by: Vinay Belgaumkar <vinay.belgaum...@intel.com>
---
 drivers/gpu/drm/i915/intel_uncore.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_uncore.c 
b/drivers/gpu/drm/i915/intel_uncore.c
index dfefad5a5fec..121458a31886 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -1800,7 +1800,10 @@ static const struct intel_forcewake_range 
__mtl_fw_ranges[] = {
        GEN_FW_RANGE(0x24000, 0x2ffff, 0), /*
                0x24000 - 0x2407f: always on
                0x24080 - 0x2ffff: reserved */
-       GEN_FW_RANGE(0x30000, 0x3ffff, FORCEWAKE_GT)
+       GEN_FW_RANGE(0x30000, 0x3ffff, FORCEWAKE_GT),
+       GEN_FW_RANGE(0x40000, 0x1901ec, 0),
+       GEN_FW_RANGE(0x1901f0, 0x1901f0, FORCEWAKE_GT)
+               /* FIXME: WA to wake GT while triggering H2G */
 };
 
 /*
-- 
2.38.1

Reply via email to