Re: [PATCH V4 4/5] iommu/hyperv: Only call pviommu init on non-root VMs

From: Easwar Hariharan

Date: Wed Nov 04 2026 - 23:36:13 EST


On 11/4/2026 18:01, Mukesh R wrote:
> 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.

You no longer do this below. Also, please wait a week or so before spinning
a new revision to collect additional comments.

With that fixed,

Reviewed-by: Easwar Hariharan <easwar.hariharan@xxxxxxxxxxxxxxxxxxx>

>
> 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;