Hello again, On Mon, May 11, 2020 at 09:59:31PM +0200, Uwe Kleine-König wrote: > On 5/9/20 3:58 AM, Lu Baolu wrote: > > Hi Uwe, > > > > Have you tried commenting out intel_disable_iommus() in > > intel_iommu_shutdowan()? > > > > diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > > index 0182cff2c7ac..532e62600f95 100644 > > --- a/drivers/iommu/intel-iommu.c > > +++ b/drivers/iommu/intel-iommu.c > > @@ -4928,8 +4928,10 @@ void intel_iommu_shutdown(void) > > for_each_iommu(iommu, drhd) > > iommu_disable_protect_mem_regions(iommu); > > > > +#if 0 > > /* Make sure the IOMMUs are switched off */ > > intel_disable_iommus(); > > +#endif > > > > up_write(&dmar_global_lock); > > } > > I just tested that and it didn't help. The machine still hangs with the > same symptoms as reported before.
I patched the file a bit differently:
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index ef0a5246700e..b76acae6a6ac 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -4922,16 +4922,24 @@ void intel_iommu_shutdown(void)
if (no_iommu || dmar_disabled)
return;
+ pr_warn("%s:%d\n", __func__, __LINE__);
down_write(&dmar_global_lock);
+ pr_warn("%s:%d\n", __func__, __LINE__);
/* Disable PMRs explicitly here. */
- for_each_iommu(iommu, drhd)
+ for_each_iommu(iommu, drhd) {
+ pr_warn("%s:%d\n", __func__, __LINE__);
iommu_disable_protect_mem_regions(iommu);
+ pr_warn("%s:%d\n", __func__, __LINE__);
+ }
+ pr_warn("%s:%d\n", __func__, __LINE__);
/* Make sure the IOMMUs are switched off */
intel_disable_iommus();
+ pr_warn("%s:%d\n", __func__, __LINE__);
up_write(&dmar_global_lock);
+ pr_warn("%s:%d\n", __func__, __LINE__);
}
static inline struct intel_iommu *dev_to_intel_iommu(struct device *dev)
and the output shows that the for_each_iommu loop runs twice and the
last pr_warn is reached, too. So the hang doesn't occur in
intel_iommu_shutdown() but later.
I don't know enough about x86 and iommus to judge what that means or
even if this was a useful test.
Best regards
Uwe
signature.asc
Description: PGP signature

