On 1/29/26 02:56, Vivian Wang wrote: > The code was originally written using no_64bit_msi, which restricts the > device to 32-bit MSI addresses. > > Since msi_addr_mask is introduced, use DMA_BIT_MASK(dma_bits) instead of > DMA_BIT_MASK(32) here for msi_addr_mask, describing the restriction more > precisely and allowing these devices to work on platforms with MSI > doorbell address above the 32-bit limit, as long as it is within the > hardware's addressable range. > > Signed-off-by: Vivian Wang <[email protected]>
Reviewed-by: Christian König <[email protected]> > > --- > v4: Patch message rewording for more consistency > --- > drivers/gpu/drm/radeon/radeon_device.c | 1 + > drivers/gpu/drm/radeon/radeon_irq_kms.c | 10 ---------- > 2 files changed, 1 insertion(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_device.c > b/drivers/gpu/drm/radeon/radeon_device.c > index 60afaa8e56b4..5faae0361361 100644 > --- a/drivers/gpu/drm/radeon/radeon_device.c > +++ b/drivers/gpu/drm/radeon/radeon_device.c > @@ -1374,6 +1374,7 @@ int radeon_device_init(struct radeon_device *rdev, > pr_warn("radeon: No suitable DMA available\n"); > return r; > } > + rdev->pdev->msi_addr_mask = DMA_BIT_MASK(dma_bits); > rdev->need_swiotlb = drm_need_swiotlb(dma_bits); > > /* Registers mapping */ > diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c > b/drivers/gpu/drm/radeon/radeon_irq_kms.c > index d550554a6f3f..839d619e5602 100644 > --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c > +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c > @@ -245,16 +245,6 @@ static bool radeon_msi_ok(struct radeon_device *rdev) > if (rdev->flags & RADEON_IS_AGP) > return false; > > - /* > - * Older chips have a HW limitation, they can only generate 40 bits > - * of address for "64-bit" MSIs which breaks on some platforms, notably > - * IBM POWER servers, so we limit them > - */ > - if (rdev->family < CHIP_BONAIRE) { > - dev_info(rdev->dev, "radeon: MSI limited to 32-bit\n"); > - rdev->pdev->msi_addr_mask = DMA_BIT_MASK(32); > - } > - > /* force MSI on */ > if (radeon_msi == 1) > return true; >
