On Sun, Jan 8, 2017 at 1:37 AM, Borislav Petkov <bp@xxxxxxxxx> wrote: > On Sun, Jan 08, 2017 at 01:22:55AM +0100, Rafael J. Wysocki wrote: >> Is an IVRS table actually present on this machine? > > Like this? > > [ 0.000000] ACPI: IVRS 0x000000009CFD6000 0000D0 (v02 AMD AGESA 00000001 AMD 00000000) Yup. So we get the table, but apparently we crash when we attempt to put it. Let's try to check the obvious just to rule it out (see attached), but honestly I'm not sure what's going on in there. Thanks, Rafael
--- drivers/iommu/amd_iommu_init.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) Index: linux-pm/drivers/iommu/amd_iommu_init.c =================================================================== --- linux-pm.orig/drivers/iommu/amd_iommu_init.c +++ linux-pm/drivers/iommu/amd_iommu_init.c @@ -2337,8 +2337,10 @@ static int __init early_amd_iommu_init(v out: /* Don't leak any ACPI memory */ - acpi_put_table(ivrs_base); - ivrs_base = NULL; + if (ivrs_base) { + acpi_put_table(ivrs_base); + ivrs_base = NULL; + } return ret; } @@ -2372,7 +2374,8 @@ static bool detect_ivrs(void) return false; } - acpi_put_table(ivrs_base); + if (ivrs_base) + acpi_put_table(ivrs_base); /* Make sure ACS will be enabled during PCI probe */ pci_request_acs();