Re: [PATCH] iommu/vt-d: Handle hotplug devices' default identity mapping setting

From: Jis Ben
Date: Fri Feb 22 2019 - 13:11:13 EST


An NVMe device configured in static identity mapping should also cause
this error when removed and rescanned. Essentially, a device that does
a DMA when its driver inits, or one that you can force a DMA from.

-Jis


On Fri, Feb 22, 2019 at 12:28 AM James Dong <xmdong@xxxxxxxxxx> wrote:
>
> Baolu:
>
> The reproduction depends on devices. HW passthrough PCIe devices with default
> identity map could have the issue. Make sure that messages like following came
> out in dmesg and their mapping does not change after booting:
> [ 10.167809] DMAR: Hardware identity mapping for device 0000:30:00.0
> [ 10.167823] DMAR: Hardware identity mapping for device 0000:30:00.1
>
> Devices which make following true could also be used for the experiment:
> > static int iommu_should_identity_map(struct device *dev, int startup)
> > {
> > if ((iommu_identity_mapping & IDENTMAP_AZALIA) && IS_AZALIA(pdev))
> > return 1;
> > if ((iommu_identity_mapping & IDENTMAP_GFX) && IS_GFX_DEVICE(pdev))
> > return 1;
>
> Once they are up, remove them first by following command:
> echo 1 > /sys/bus/pci/devices/0000\:03\:00.1/remove
>
> Then trigger the hotplug device rescanning:
> echo 1 > /sys/bus/pci/rescan
>
> To provide an example of specific devices on the market, I need to try out.
> Or, if it is fine with you, forcing a PCIe NIC card to be default hardware
> passthrough by changing the intel-iommu.c is another easy way to reproduce
> this issue.
>
> Best Regards,
> James