Thread (53 messages) 53 messages, 6 authors, 2024-08-05

RE: [PATCH v3 2/7] Drivers: hv: Enable VTL mode for arm64

From: Michael Kelley <hidden>
Date: 2024-08-05 19:51:40
Also in: linux-acpi, linux-arch, linux-hyperv, linux-pci, lkml

From: Roman Kisel <redacted> Sent: Monday, August 5, 2024 8:24 AM
On 8/4/2024 9:05 PM, Saurabh Singh Sengar wrote:
quoted
On Mon, Aug 05, 2024 at 03:01:58AM +0000, Michael Kelley wrote:
quoted
From: Roman Kisel <redacted> Sent: Friday, July 26, 2024 3:59
PM
quoted
quoted
quoted
Kconfig dependencies for arm64 guests on Hyper-V require that be ACPI enabled,
and limit VTL mode to x86/x64. To enable VTL mode on arm64 as well, update the
dependencies. Since VTL mode requires DeviceTree instead of ACPI, don't require
arm64 guests on Hyper-V to have ACPI.

Signed-off-by: Roman Kisel <redacted>
---
  drivers/hv/Kconfig | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig
index 862c47b191af..a5cd1365e248 100644
--- a/drivers/hv/Kconfig
+++ b/drivers/hv/Kconfig
@@ -5,7 +5,7 @@ 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)
  	select PARAVIRT
  	select X86_HV_CALLBACK_VECTOR if X86
  	select OF_EARLY_FLATTREE if OF
@@ -15,7 +15,7 @@ config HYPERV

  config HYPERV_VTL_MODE
  	bool "Enable Linux to boot in VTL context"
-	depends on X86_64 && HYPERV
+	depends on HYPERV
  	depends on SMP
  	default n
  	help
@@ -31,7 +31,7 @@ config HYPERV_VTL_MODE

  	  Select this option to build a Linux kernel to run at a VTL other than
  	  the normal VTL0, which currently is only VTL2.  This option
-	  initializes the x86 platform for VTL2, and adds the ability to boot
+	  initializes the kernel to run in VTL2, and adds the ability to boot
  	  secondary CPUs directly into 64-bit context as required for VTLs other
  	  than 0.  A kernel built with this option must run at VTL2, and will
  	  not run as a normal guest.
--
2.34.1
In v2 of this patch, I suggested [1] making a couple additional minor changes
so that kernels built *without* HYPER_VTL_MODE would still require
ACPI.  Did that suggestion not work out?  If that's the case, I'm curious
about what goes wrong.
Hi Michael/Roman,
I was considering making HYPERV_VTL_MODE depend on CONFIG_OF. That should
address
quoted
above concern as well. Do you see any potential issue with it.
Michael,

I ran into a pretty gnarly recursive dependencies which in all fairness
might stem from not being fluent enough in the Kconfig language. Any
help of how to approach implementing your idea would be greatly appreciated!
This is what I had in mind:
--- a/drivers/hv/Kconfig
+++ b/drivers/hv/Kconfig
@@ -5,7 +5,8 @@ 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
@@ -15,7 +16,7 @@ config HYPERV

 config HYPERV_VTL_MODE
        bool "Enable Linux to boot in VTL context"
-       depends on X86_64 && HYPERV
+       depends on X86_64
        depends on SMP
        default n
        help
HYPERV_VTL_MODE can now be selected independently of HYPERV.
The existing code should be such that even if someone is building a
random config and gets HYPERV_VTL_MODE without HYPERV, the
kernel will build and run in a non-Hyper-V environment and isn't
broken somehow.

For HYPERV to be selected, either ACPI must already be selected, or
HYPERV_VTL_MODE must already be selected. So "normal" kernels are
still enforced to require ACPI. But if building with HYPERV_VTL_MODE,
then ACPI is optional.

Saurabh's idea of adding "depends on OF" to HYPERV_VTL_MODE
should also work with these changes.

I haven't fully tested the above with all the relevant combinations
on both x86 and arm64, but I think the logic makes sense.

Michael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help