Skip to content

Commit 215ea32

Browse files
jnikulagregkh
authored andcommitted
drm/i915/power: fix size for for_each_set_bit() in abox iteration
commit cfa7b76 upstream. 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 b9f9035 commit 215ea32

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

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

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

1153-
for_each_set_bit(i, &abox_regs, sizeof(abox_regs))
1153+
for_each_set_bit(i, &abox_regs, BITS_PER_TYPE(abox_regs))
11541154
intel_de_rmw(dev_priv, MBUS_ABOX_CTL(i), mask, val);
11551155
}
11561156

@@ -1603,11 +1603,11 @@ static void tgl_bw_buddy_init(struct drm_i915_private *dev_priv)
16031603
if (table[config].page_mask == 0) {
16041604
drm_dbg(&dev_priv->drm,
16051605
"Unknown memory configuration; disabling address buddy logic.\n");
1606-
for_each_set_bit(i, &abox_mask, sizeof(abox_mask))
1606+
for_each_set_bit(i, &abox_mask, BITS_PER_TYPE(abox_mask))
16071607
intel_de_write(dev_priv, BW_BUDDY_CTL(i),
16081608
BW_BUDDY_DISABLE);
16091609
} else {
1610-
for_each_set_bit(i, &abox_mask, sizeof(abox_mask)) {
1610+
for_each_set_bit(i, &abox_mask, BITS_PER_TYPE(abox_mask)) {
16111611
intel_de_write(dev_priv, BW_BUDDY_PAGE_MASK(i),
16121612
table[config].page_mask);
16131613

0 commit comments

Comments
 (0)