Stolen memory is not usable for MTL A0 stepping beyond
certain access size and we have no control over userspace
access size of /dev/fb which can be backed by stolen memory.
So disable stolen memory backed fb by setting i915->dsm.usable_size
to zero.

v2: remove hsdes reference and fix commit message(Andi)
v3: use revid as we want to target SOC stepping(Radhakrishna)

Cc: Matthew Auld <[email protected]>
Cc: Andi Shyti <[email protected]>
Cc: Daniele Ceraolo Spurio <[email protected]>
Cc: Lucas De Marchi <[email protected]>
Cc: Radhakrishna Sripada <[email protected]>
Signed-off-by: Nirmoy Das <[email protected]>
Reviewed-by: Andi Shyti <[email protected]>
---
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c 
b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
index 8ac376c24aa2..ee492d823f1b 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
@@ -535,6 +535,14 @@ static int i915_gem_init_stolen(struct intel_memory_region 
*mem)
        /* Basic memrange allocator for stolen space. */
        drm_mm_init(&i915->mm.stolen, 0, i915->dsm.usable_size);
 
+       /*
+        * Access to stolen lmem beyond certain size for MTL A0 stepping
+        * would crash the machine. Disable stolen lmem for userspace access
+        * by setting usable_size to zero.
+        */
+       if (IS_METEORLAKE(i915) && INTEL_REVID(i915) == 0x0)
+               i915->dsm.usable_size = 0;
+
        return 0;
 }
 
-- 
2.39.0

Reply via email to