armsr: add Hyper-V on Arm64 support

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>
This commit is contained in:
Mathew McBride 2025-01-17 16:58:05 +11:00 committed by Hauke Mehrtens
parent 6a7fa68569
commit 075571b023

View 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