From b6bd02b7a877f9fac2de69e64d8245d56f92ab25 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Fri, 30 Nov 2018 12:09:09 +0100 Subject: [PATCH] amd/iommu: assign iommu devices to Xen MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit AMD IOMMU devices are exposed on the PCI bus, and thus are assigned by default to the hardware domain. This can cause issues because the IOMMU devices themselves are not behind an IOMMU, so update_paging_mode will return an error if Xen tries to expand the page tables of a domain that has assigned devices not behind an IOMMU. update_paging_mode failing will cause the domain to be destroyed. Fix this by hiding PCI IOMMU devices, so they are not assigned to the hardware domain. Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich Acked-by: Brian Woods --- xen/drivers/passthrough/amd/iommu_init.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c index 15c10b0929..17f39552a9 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -993,6 +993,8 @@ static void * __init allocate_ppr_log(struct amd_iommu *iommu) static int __init amd_iommu_init_one(struct amd_iommu *iommu) { + pci_hide_device(iommu->seg, PCI_BUS(iommu->bdf), PCI_DEVFN2(iommu->bdf)); + if ( map_iommu_mmio_region(iommu) != 0 ) goto error_out; -- 2.30.2