[PATCH V4 4/5] iommu/hyperv: Only call pviommu init on non-root VMs
From: Mukesh R
Date: Wed Nov 04 2026 - 22:16:08 EST
Next patch introduces root iommu init. Since both can co-exist, set
x86 iommu_init to pviommu init only on non-root VMs. Also, rename
hv_iommu_init() to hv_pviommu_init(). Lastly, check for null iommu_init
before assignement as suggested by one of the pviommu authors.
Signed-off-by: Mukesh R <mrathor@xxxxxxxxxxxxxxxxxxx>
---
arch/x86/hyperv/hv_init.c | 3 ++-
arch/x86/include/asm/mshyperv.h | 2 +-
drivers/iommu/hyperv/hv-iommu-guest.c | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
index b90e6f487533..ea50708c3ae6 100644
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@ -580,7 +580,8 @@ void __init hyperv_init(void)
x86_init.timers.setup_percpu_clockev = hv_stimer_setup_percpu_clockev;
#ifdef CONFIG_HYPERV_PVIOMMU
- x86_init.iommu.iommu_init = hv_iommu_init;
+ if (!hv_root_partition())
+ x86_init.iommu.iommu_init = hv_pviommu_init;
#endif
hv_apic_init();
diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
index 24b19cd28a05..c95d75ae645e 100644
--- a/arch/x86/include/asm/mshyperv.h
+++ b/arch/x86/include/asm/mshyperv.h
@@ -320,7 +320,7 @@ static inline void __mshv_vtl_return_call(struct mshv_vtl_cpu_context *vtl0) {}
#endif
#ifdef CONFIG_HYPERV_PVIOMMU
-int __init hv_iommu_init(void);
+int __init hv_pviommu_init(void);
#endif
#include <asm-generic/mshyperv.h>
diff --git a/drivers/iommu/hyperv/hv-iommu-guest.c b/drivers/iommu/hyperv/hv-iommu-guest.c
index 876a22f21f1e..a40a8ceb3261 100644
--- a/drivers/iommu/hyperv/hv-iommu-guest.c
+++ b/drivers/iommu/hyperv/hv-iommu-guest.c
@@ -601,7 +601,7 @@ hv_init_iommu_device(struct hv_iommu_dev *hv_iommu,
hv_iommu_device = hv_iommu;
}
-int __init hv_iommu_init(void)
+int __init hv_pviommu_init(void)
{
u64 status;
int ret = 0;
--
2.51.2.vfs.0.1