update_domain() is the only place where domain->pt_root will be got and set into dev entry. So before the device driver initialization we do nothing if it's in previously enabled translation status. Signed-off-by: Baoquan He <bhe at redhat.com> --- drivers/iommu/amd_iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 0d59f79..aee1ae4 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -2350,7 +2350,7 @@ static void update_device_table(struct protection_domain *domain) static void update_domain(struct protection_domain *domain) { - if (!domain->updated) + if (!domain->updated || translation_pre_enabled()) return; update_device_table(domain); -- 2.4.0