Sophgo SG2042's MSI driver lacks 32-bit MSI support. Added a msi64 parameter to skip the limitation and force 64-bit MSI.
Signed-off-by: Han Gao <[email protected]> --- drivers/gpu/drm/radeon/radeon.h | 1 + drivers/gpu/drm/radeon/radeon_drv.c | 4 ++++ drivers/gpu/drm/radeon/radeon_irq_kms.c | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 527b9d19d730..7207e3156c28 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -122,6 +122,7 @@ extern int radeon_uvd; extern int radeon_vce; extern int radeon_si_support; extern int radeon_cik_support; +extern int radeon_msi64; /* * Copy from radeon_drv.h so we don't have to include both and have conflicting diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 87fd6255c114..53af28494c03 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -249,6 +249,10 @@ int radeon_cik_support = -1; MODULE_PARM_DESC(cik_support, "CIK support (1 = enabled, 0 = disabled, -1 = default)"); module_param_named(cik_support, radeon_cik_support, int, 0444); +int radeon_msi64; +MODULE_PARM_DESC(msi64, "MSI64 support (1 = enabled, 0 = disabled)"); +module_param_named(msi64, radeon_msi64, int, 0444); + static const struct pci_device_id pciidlist[] = { radeon_PCI_IDS }; diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c index 9961251b44ba..62eb5a6968ff 100644 --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -250,7 +250,7 @@ static bool radeon_msi_ok(struct radeon_device *rdev) * of address for "64-bit" MSIs which breaks on some platforms, notably * IBM POWER servers, so we limit them */ - if (rdev->family < CHIP_BONAIRE) { + if (rdev->family < CHIP_BONAIRE && !radeon_msi64) { dev_info(rdev->dev, "radeon: MSI limited to 32-bit\n"); rdev->pdev->no_64bit_msi = 1; } -- 2.47.3
