summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorNirmoy Das <nirmoy.das@intel.com>2023-02-02 19:02:43 +0100
committerLucas De Marchi <lucas.demarchi@intel.com>2023-02-03 15:53:19 -0800
commit01f0411f8e307e7154d062f62d4b0799b8498748 (patch)
treef1f4b83f088eaa9557161afd09e42914fb6a5764 /drivers
parent5dfb29d444daf94120762e9d7b9fe6aa4e0f9929 (diff)
downloadlinux-stable-01f0411f8e307e7154d062f62d4b0799b8498748.tar.gz
linux-stable-01f0411f8e307e7154d062f62d4b0799b8498748.tar.bz2
linux-stable-01f0411f8e307e7154d062f62d4b0799b8498748.zip
drm/i915: Make sure dsm_size has correct granularity
DSM granularity is 1MB so make sure we stick to that. The address set by firmware in GEN12_DSMBASE in driver initialization doesn't mean "anything above that and until end of lmem is part of DSM". In fact, there may be a few KB that is not part of DSM on the end of lmem. How large is that space is platform-dependent, but since it's always less than the DSM granularity, it can be simplified by simply aligning the size down. v2: replace "1 * SZ_1M" with SZ_1M (Andrzej). v3: reword commit message to explain why the round down is needed (Lucas) Cc: Matthew Auld <matthew.auld@intel.com> Suggested-by: Lucas De Marchi <lucas.demarchi@intel.com> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230202180243.23637-1-nirmoy.das@intel.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/gem/i915_gem_stolen.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
index bc9521078807..7ab9e98bcbd2 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
@@ -913,7 +913,7 @@ i915_gem_stolen_lmem_setup(struct drm_i915_private *i915, u16 type,
dsm_base = intel_uncore_read64(uncore, GEN12_DSMBASE) & GEN12_BDSM_MASK;
if (WARN_ON(lmem_size < dsm_base))
return ERR_PTR(-ENODEV);
- dsm_size = lmem_size - dsm_base;
+ dsm_size = ALIGN_DOWN(lmem_size - dsm_base, SZ_1M);
}
io_size = dsm_size;