Re: [PATCH v2 00/33] iommu: Move iommu_group setup to IOMMU core code

From: Lu Baolu
Date: Mon Jun 01 2020 - 19:20:18 EST


Hi Jerry,

On 6/1/20 6:42 PM, Jerry Snitselaar wrote:

Hi Joerg,

With this patchset, I have an epyc system where if I boot with
iommu=nopt and force a dump I will see some io page faults for a nic
on the system. The vmcore is harvested and the system reboots. I
haven't reproduced it on other systems yet, but without the patchset I
don't see the io page faults during the kdump.

Regards,
Jerry

I just hit an issue on a separate intel based system (kdump iommu=nopt),
where it panics in during intel_iommu_attach_device, in is_aux_domain,
due to device_domain_info being DEFER_DEVICE_DOMAIN_INFO. That doesn't
get set to a valid address until the domain_add_dev_info call.

Is it as simple as the following?

I guess you won't hit this issue if you use iommu/next branch of Joerg's
tree. We've changed to use a generic helper to retrieve the valid per
device iommu data or NULL (if there's no).

Best regards,
baolu


diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 29d3940847d3..f1bbeed46a4c 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -5053,8 +5053,8 @@ is_aux_domain(struct device *dev, struct iommu_domain *domain)
Â{
ÂÂÂÂÂÂÂ struct device_domain_info *info = dev->archdata.iommu;

-ÂÂÂÂÂÂ return info && info->auxd_enabled &&
-ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ domain->type == IOMMU_DOMAIN_UNMANAGED;
+ÂÂÂÂÂÂ return info && info != DEFER_DEVICE_DOMAIN_INFO &&
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ info->auxd_enabled && domain->type == IOMMU_DOMAIN_UNMANAGED;
Â}

Âstatic void auxiliary_link_device(struct dmar_domain *domain,


Regards,
Jerry