Skip to content

Commit 23f24d0

Browse files
jnikulagregkh
authored andcommitted
drm/i915/power: fix size for for_each_set_bit() in abox iteration
[ Upstream commit cfa7b76 ] for_each_set_bit() expects size to be in bits, not bytes. The abox mask iteration uses bytes, but it works by coincidence, because the local variable holding the mask is unsigned long, and the mask only ever has bit 2 as the highest bit. Using a smaller type could lead to subtle and very hard to track bugs. Fixes: 62afef2 ("drm/i915/rkl: RKL uses ABOX0 for pixel transfers") Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Matt Roper <matthew.d.roper@intel.com> Cc: stable@vger.kernel.org # v5.9+ Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://lore.kernel.org/r/20250905104149.1144751-1-jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com> (cherry picked from commit 7ea3baa) Signed-off-by: Tvrtko Ursulin <tursulin@ursulin.net> [ adapted struct intel_display *display parameters to struct drm_i915_private *dev_priv ] Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 0a87bf8 commit 23f24d0

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

drivers/gpu/drm/i915/display/intel_display_power.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,7 +1170,7 @@ static void icl_mbus_init(struct drm_i915_private *dev_priv)
11701170
if (DISPLAY_VER(dev_priv) == 12)
11711171
abox_regs |= BIT(0);
11721172

1173-
for_each_set_bit(i, &abox_regs, sizeof(abox_regs))
1173+
for_each_set_bit(i, &abox_regs, BITS_PER_TYPE(abox_regs))
11741174
intel_de_rmw(dev_priv, MBUS_ABOX_CTL(i), mask, val);
11751175
}
11761176

@@ -1623,11 +1623,11 @@ static void tgl_bw_buddy_init(struct drm_i915_private *dev_priv)
16231623
if (table[config].page_mask == 0) {
16241624
drm_dbg(&dev_priv->drm,
16251625
"Unknown memory configuration; disabling address buddy logic.\n");
1626-
for_each_set_bit(i, &abox_mask, sizeof(abox_mask))
1626+
for_each_set_bit(i, &abox_mask, BITS_PER_TYPE(abox_mask))
16271627
intel_de_write(dev_priv, BW_BUDDY_CTL(i),
16281628
BW_BUDDY_DISABLE);
16291629
} else {
1630-
for_each_set_bit(i, &abox_mask, sizeof(abox_mask)) {
1630+
for_each_set_bit(i, &abox_mask, BITS_PER_TYPE(abox_mask)) {
16311631
intel_de_write(dev_priv, BW_BUDDY_PAGE_MASK(i),
16321632
table[config].page_mask);
16331633

0 commit comments

Comments
 (0)