RE: [PATCH hyperv-next v5 03/11] Drivers: hv: Enable VTL mode for arm64

Michael Kelley
2025-03-10T21:01:48Z

From: Arnd Bergmann <arnd@arndb.de> Sent: Saturday, March 8, 2025 1:05 PM
>
> On Fri, Mar 7, 2025, at 23:02, Roman Kisel wrote:
> > @@ -5,18 +5,20 @@ menu "Microsoft Hyper-V guest support"
> > config HYPERV
> > tristate "Microsoft Hyper-V client drivers"
> > depends on (X86 && X86_LOCAL_APIC && HYPERVISOR_GUEST) \
> > - || (ACPI && ARM64 && !CPU_BIG_ENDIAN)
> > + || (ARM64 && !CPU_BIG_ENDIAN)
> > + depends on (ACPI || HYPERV_VTL_MODE)
> > select PARAVIRT
> > select X86_HV_CALLBACK_VECTOR if X86
> > - select OF_EARLY_FLATTREE if OF
> > help
> > Select this option to run Linux as a Hyper-V client operating
> > system.
> >
> > config HYPERV_VTL_MODE
> > bool "Enable Linux to boot in VTL context"
> > - depends on X86_64 && HYPERV
> > + depends on (X86_64 || ARM64)
> > depends on SMP
> > + select OF_EARLY_FLATTREE
> > + select OF
> > default n
> > help
>
> Having the dependency below the top-level Kconfig entry feels a little
> counterintuitive. You could flip that back as it was before by doing
>
> select HYPERV_VTL_MODE if !ACPI
> depends on ACPI || SMP
>
> in the HYPERV option, leaving the dependency on HYPERV in
> HYPERV_VTL_MODE.

I would argue that we don't ever want to implicitly select
HYPERV_VTL_MODE because of some other config setting or
lack thereof. VTL mode is enough of a special case that it should
only be explicitly selected. If someone omits ACPI, then HYPERV
should not be selectable unless HYPERV_VTL_MODE is explicitly
selected.

The last line of the comment for HYPERV_VTL_MODE says
"A kernel built with this option must run at VTL2, and will not run
as a normal guest." In other words, don't choose this unless you
100% know that VTL2 is what you want.

Michael

>
> Is OF_EARLY_FLATTREE actually needed on x86?
>
> Arnd