Skip to content

Commit 23c0014

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 9c2e5bb commit 23c0014

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
@@ -1122,7 +1122,7 @@ static void icl_mbus_init(struct drm_i915_private *dev_priv)
11221122
if (DISPLAY_VER(dev_priv) == 12)
11231123
abox_regs |= BIT(0);
11241124

1125-
for_each_set_bit(i, &abox_regs, sizeof(abox_regs))
1125+
for_each_set_bit(i, &abox_regs, BITS_PER_TYPE(abox_regs))
11261126
intel_de_rmw(dev_priv, MBUS_ABOX_CTL(i), mask, val);
11271127
}
11281128

@@ -1587,11 +1587,11 @@ static void tgl_bw_buddy_init(struct drm_i915_private *dev_priv)
15871587
if (table[config].page_mask == 0) {
15881588
drm_dbg(&dev_priv->drm,
15891589
"Unknown memory configuration; disabling address buddy logic.\n");
1590-
for_each_set_bit(i, &abox_mask, sizeof(abox_mask))
1590+
for_each_set_bit(i, &abox_mask, BITS_PER_TYPE(abox_mask))
15911591
intel_de_write(dev_priv, BW_BUDDY_CTL(i),
15921592
BW_BUDDY_DISABLE);
15931593
} else {
1594-
for_each_set_bit(i, &abox_mask, sizeof(abox_mask)) {
1594+
for_each_set_bit(i, &abox_mask, BITS_PER_TYPE(abox_mask)) {
15951595
intel_de_write(dev_priv, BW_BUDDY_PAGE_MASK(i),
15961596
table[config].page_mask);
15971597

0 commit comments

Comments
 (0)