2024-05-30 13:53:17

by Dimitri Sivanich

[permalink] [raw]
Subject: [PATCH] iommu/vt-d: Fix panic accessing amd_iommu_enable_faulting

This fixes a bug introduced by commit d74169ceb0d2 ("iommu/vt-d: Allocate
DMAR fault interrupts locally"). The panic happens when
amd_iommu_enable_faulting is called from CPUHP_AP_ONLINE_DYN context.

Signed-off-by: Dimitri Sivanich <[email protected]>
Tested-by: Yi Zhang <[email protected]>
---
drivers/iommu/amd/init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c
index a18e74878f68..b02b959d12af 100644
--- a/drivers/iommu/amd/init.c
+++ b/drivers/iommu/amd/init.c
@@ -3353,7 +3353,7 @@ int amd_iommu_reenable(int mode)
return 0;
}

-int __init amd_iommu_enable_faulting(unsigned int cpu)
+int amd_iommu_enable_faulting(unsigned int cpu)
{
/* We enable MSI later when PCI is initialized */
return 0;
--
2.35.3


2024-05-30 15:27:51

by Vasant Hegde

[permalink] [raw]
Subject: Re: [PATCH] iommu/vt-d: Fix panic accessing amd_iommu_enable_faulting

Hi Dimitri,


On 5/30/2024 6:27 PM, Dimitri Sivanich wrote:
> This fixes a bug introduced by commit d74169ceb0d2 ("iommu/vt-d: Allocate
> DMAR fault interrupts locally"). The panic happens when
> amd_iommu_enable_faulting is called from CPUHP_AP_ONLINE_DYN context.

Issue is happening on AMD system. Can you please change subject line. s/vt-d/amd/ ?

Also may be add "Fixes" tag as well.

-Vasant


>
> Signed-off-by: Dimitri Sivanich <[email protected]>
> Tested-by: Yi Zhang <[email protected]>
> ---
> drivers/iommu/amd/init.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c
> index a18e74878f68..b02b959d12af 100644
> --- a/drivers/iommu/amd/init.c
> +++ b/drivers/iommu/amd/init.c
> @@ -3353,7 +3353,7 @@ int amd_iommu_reenable(int mode)
> return 0;
> }
>
> -int __init amd_iommu_enable_faulting(unsigned int cpu)
> +int amd_iommu_enable_faulting(unsigned int cpu)
> {
> /* We enable MSI later when PCI is initialized */
> return 0;