armsr: add Hyper-V on Arm64 support
authorMathew McBride <matt@traverse.com.au>
Fri, 17 Jan 2025 05:58:05 +0000 (16:58 +1100)
committerHauke Mehrtens <hauke@hauke-m.de>
Fri, 24 Jan 2025 21:19:34 +0000 (22:19 +0100)
This adds support for running as a guest on Windows Hyper-V
on arm64 Windows machines (like the Qualcomm Snapdragon X based
machines). The drivers are the same as Hyper-V on x86-64.

Limitations:
- The VM must be configured with a single vCPU only[1].

It appears Microsoft has made changes to Arm64 Hyper-V's timers
and other infrastructure in Windows 11 24H2 which require
kernel changes[2][3] to fix.

- You must turn off secure boot enforcement to boot OpenWrt, as
OpenWrt/armsr does not have a signed bootloader.

[1] https://www.reddit.com/r/Surface/comments/1dmzpzt/comment/lx4tatp/
[2] https://www.reddit.com/r/Surface/comments/1dmzpzt/comment/m5bqgrm/
[3] https://github.com/microsoft/WSL2-Linux-Kernel

Signed-off-by: Mathew McBride <matt@traverse.com.au>
Link: https://github.com/openwrt/openwrt/pull/17675
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/armsr/armv8/config-6.6

index a5a90ff9a89b2c2b4c3b9756ff6f2415d3b7dbc7..d99ac46d143a180ca506c1bb6f8fd6f72246edc2 100644 (file)
@@ -264,6 +264,7 @@ CONFIG_DRM_BOCHS=y
 CONFIG_DRM_BRIDGE=y
 # CONFIG_DRM_FSL_LDB is not set
 CONFIG_DRM_GEM_SHMEM_HELPER=y
+# CONFIG_DRM_HYPERV is not set
 # CONFIG_DRM_IMX8QM_LDB is not set
 # CONFIG_DRM_IMX8QXP_LDB is not set
 # CONFIG_DRM_IMX8QXP_PIXEL_COMBINER is not set
@@ -308,6 +309,7 @@ CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_IMAGEBLIT=y
 CONFIG_FB_CMDLINE=y
+CONFIG_FB_HYPERV=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_MX3=y
 # CONFIG_FB_SH_MOBILE_LCDC is not set
@@ -339,6 +341,7 @@ CONFIG_GPIO_ZYNQMP_MODEPIN=y
 CONFIG_HDMI=y
 CONFIG_HI3660_MBOX=y
 CONFIG_HI6220_MBOX=y
+# CONFIG_HID_HYPERV_MOUSE is not set
 CONFIG_HISILICON_ERRATUM_161600802=y
 CONFIG_HISILICON_LPC=y
 CONFIG_HISI_PMU=y
@@ -354,6 +357,12 @@ CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y
 # CONFIG_HW_RANDOM_HISI is not set
 # CONFIG_HW_RANDOM_HISTB is not set
 CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_HYPERV=y
+# CONFIG_HYPERV_BALLOON is not set
+CONFIG_HYPERV_KEYBOARD=y
+CONFIG_HYPERV_NET=y
+CONFIG_HYPERV_STORAGE=y
+# CONFIG_HYPERV_TESTING is not set
 CONFIG_I2C=y
 CONFIG_I2C_ALGOBIT=y
 CONFIG_I2C_ALTERA=y
@@ -408,6 +417,7 @@ CONFIG_IOMMU_SUPPORT=y
 # CONFIG_IPMMU_VMSA is not set
 # CONFIG_K3_DMA is not set
 CONFIG_KCMP=y
+CONFIG_KEYBOARD_ATKBD=y
 # CONFIG_KEYBOARD_IMX_SC_KEY is not set
 # CONFIG_KEYBOARD_SUN4I_LRADC is not set
 CONFIG_KSM=y
@@ -517,6 +527,7 @@ CONFIG_PCI_AARDVARK=y
 CONFIG_PCI_HISI=y
 CONFIG_PCI_HOST_THUNDER_ECAM=y
 CONFIG_PCI_HOST_THUNDER_PEM=y
+CONFIG_PCI_HYPERV=y
 CONFIG_PCI_IMX6=y
 CONFIG_PCI_IMX6_HOST=y
 CONFIG_PCI_IOV=y
@@ -700,6 +711,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
 CONFIG_SERIAL_SH_SCI_DMA=y
 CONFIG_SERIAL_SH_SCI_EARLYCON=y
 CONFIG_SERIAL_SH_SCI_NR_UARTS=18
+CONFIG_SERIO=y
 # CONFIG_SMC91X is not set
 # CONFIG_SND_SOC_RCAR is not set
 # CONFIG_SND_SOC_RZ is not set