When PCI device hotplug event happen, we need to update device to static identity domain mapping relationship to maintain correct device to domain mapping. Signed-off-by: Jiang Liu <jiang.liu@xxxxxxxxxxxxxxx> --- drivers/iommu/intel-iommu.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 6a9a314..83e3ed4 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -3659,13 +3659,26 @@ static int device_notifier(struct notifier_block *nb, return 0; down_read(&dmar_global_lock); - if (action == BUS_NOTIFY_UNBOUND_DRIVER && !iommu_pass_through) { - domain_remove_one_dev_info(domain, pdev); + switch (action) { + case BUS_NOTIFY_ADD_DEVICE: + if (iommu_should_identity_map(pdev, 1)) + domain_add_dev_info(si_domain, pdev, + hw_pass_through ? + CONTEXT_TT_PASS_THROUGH : + CONTEXT_TT_MULTI_LEVEL); + break; + case BUS_NOTIFY_UNBOUND_DRIVER: + if (iommu_pass_through) + break; + /* fall through */ + case BUS_NOTIFY_DEL_DEVICE: + domain_remove_one_dev_info(domain, pdev); if (!(domain->flags & DOMAIN_FLAG_VIRTUAL_MACHINE) && !(domain->flags & DOMAIN_FLAG_STATIC_IDENTITY) && list_empty(&domain->devices)) domain_exit(domain); + break; } up_read(&dmar_global_lock); -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html