Apologies, it seems patch 15 bouncing from some mailing lists. As a workaround, here is a link to the patch on github while we figure out a solution: https://github.com/NunoDasNeves/linux/commit/54329d18d68b0cbff4f1e0aeba00bc6dd9a21288 On 7/27/2023 12:54 PM, Nuno Das Neves wrote: > This series introduces support for creating and running guest machines > while running on the Microsoft Hypervisor. [0] > This is done via an IOCTL interface accessed through /dev/mshv, similar to > /dev/kvm. Another series introducing this support was previously posted. > [1] > > These interfaces support VMMs running in: > 1. The root patition - provided in the mshv_root module, and > 2. VTL 2 - provided in the mshv_vtl module [2] > > Patches breakdown > ----------------- > The first 7 patches are refactoring and adding some helper functions. > They provide some benefit on their own and could be applied independently > as cleanup patches. > > The following 5 patches just set things up for the driver code to come. > These are very small. They are separated so that the remaining patches are > more self-contained. > > The final 3 patches are the meat of the series: > - Patch 13 contains new header files used by the driver. > These are designed to mirror the ABI headers exported by Hyper-V. This is > done to avoid polluting hyperv-tlfs.h and help track changes to the ABIs > that are still unstable. (See FAQ below). > - Patch 14 conditionally includes these new header files into mshyperv.h > and linux/hyperv.h, in order to be able to use these files in the new > drivers while remaining independent from hyperv-tlfs.h. > - Patch 15 contains the new driver code located in drivers/hv. This is a > large amount of code and new files, but it is mostly self-contained and > all within drivers/hv - apart from the IOCTL interface itself in uapi. > > FAQ on include/uapi/hyperv/*.h > ------------------------------ > Q: > Why not just add these definitions to hyperv-tlfs.h? > A: > The intention of hyperv-tlfs.h is to contain stable definitions documented > in the public TLFS document. These new definitions don't fit that criteria, > so they should be separate. > > Q: > Why are these files named hvgdk.h, hvgdk_mini.h, hvhdk.h and hvhdk_mini.h? > A: > The precise meaning of the names reflects conventions used internally at > Microsoft. > Naming them this way makes it easy to find where particular Hyper-V > definitions come from, and check their correctness. > It also facilitates the future work of automatically generating these files. > > Q: > Why are they in uapi? > A: > In short, to keep things simple. There are many definitions needed in both > the kernel and the VMM in userspace. Separating them doesn't serve much > purpose, and makes it more laborious to import definitions from Hyper-V > code. > > Q: > The new headers redefine many things that are already in hyperv-tlfs.h - why? > A: > Some definitions are extended compared to what is documented in the TLFS. > In order to avoid adding undocumented or unstable definitions to hyperv-tlfs.h, > the new headers must compile independently. > Therefore, the new headers must redefine many things in hyperv-tlfs.h in order > to compile. > > -------------------------- > [0] "Hyper-V" is more well-known, but it really refers to the whole stack > including the hypervisor and other components that run in Windows > kernel and userspace. > [1] Previous /dev/mshv patch series and discussion: > https://lore.kernel.org/linux-hyperv/1632853875-20261-1-git-send-email-nunodasneves@xxxxxxxxxxxxxxxxxxx/ > [2] Virtual Secure Mode (VSM) and Virtual Trust Levels (VTL): > https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/tlfs/vsm > > Nuno Das Neves (15): > hyperv-tlfs: Change shared HV_REGISTER_* defines to HV_MSR_* > mshyperv: Introduce hv_get_hypervisor_version > mshyperv: Introduce numa_node_to_proximity_domain_info > asm-generic/mshyperv: Introduce hv_recommend_using_aeoi() > hyperv: Move hv_connection_id to hyperv-tlfs > hyperv-tlfs: Introduce hv_status_to_string and hv_status_to_errno > Drivers: hv: Move hv_call_deposit_pages and hv_call_create_vp to > common code > Drivers: hv: Introduce per-cpu event ring tail > Drivers: hv: Introduce hv_output_arg_exists in hv_common > x86: hyperv: Add mshv_handler irq handler and setup function > Drivers: hv: export vmbus_isr, hv_context and hv_post_message > Documentation: Reserve ioctl number for mshv driver > uapi: hyperv: Add mshv driver headers hvhdk.h, hvhdk_mini.h, hvgdk.h, > hvgdk_mini.h > asm-generic: hyperv: Use mshv headers conditionally. Add > asm-generic/hyperv-defs.h > Drivers: hv: Add modules to expose /dev/mshv to VMMs running on > Hyper-V > > .../userspace-api/ioctl/ioctl-number.rst | 2 + > arch/arm64/hyperv/mshyperv.c | 23 +- > arch/arm64/include/asm/hyperv-tlfs.h | 25 + > arch/arm64/include/asm/mshyperv.h | 2 +- > arch/x86/hyperv/hv_init.c | 2 +- > arch/x86/hyperv/hv_proc.c | 166 +- > arch/x86/include/asm/hyperv-tlfs.h | 137 +- > arch/x86/include/asm/mshyperv.h | 13 +- > arch/x86/kernel/cpu/mshyperv.c | 71 +- > drivers/acpi/numa/srat.c | 1 + > drivers/clocksource/hyperv_timer.c | 24 +- > drivers/hv/Kconfig | 54 + > drivers/hv/Makefile | 21 + > drivers/hv/hv.c | 46 +- > drivers/hv/hv_call.c | 119 + > drivers/hv/hv_common.c | 225 +- > drivers/hv/hyperv_vmbus.h | 2 +- > drivers/hv/mshv.h | 156 ++ > drivers/hv/mshv_eventfd.c | 758 +++++++ > drivers/hv/mshv_eventfd.h | 80 + > drivers/hv/mshv_main.c | 208 ++ > drivers/hv/mshv_msi.c | 129 ++ > drivers/hv/mshv_portid_table.c | 84 + > drivers/hv/mshv_root.h | 194 ++ > drivers/hv/mshv_root_hv_call.c | 1064 +++++++++ > drivers/hv/mshv_root_main.c | 1964 +++++++++++++++++ > drivers/hv/mshv_synic.c | 689 ++++++ > drivers/hv/mshv_vtl.h | 52 + > drivers/hv/mshv_vtl_main.c | 1541 +++++++++++++ > drivers/hv/vmbus_drv.c | 3 +- > drivers/hv/xfer_to_guest.c | 28 + > include/asm-generic/hyperv-defs.h | 26 + > include/asm-generic/hyperv-tlfs.h | 77 +- > include/asm-generic/mshyperv.h | 76 +- > include/linux/hyperv.h | 11 +- > include/uapi/hyperv/hvgdk.h | 41 + > include/uapi/hyperv/hvgdk_mini.h | 1077 +++++++++ > include/uapi/hyperv/hvhdk.h | 1352 ++++++++++++ > include/uapi/hyperv/hvhdk_mini.h | 164 ++ > include/uapi/linux/mshv.h | 298 +++ > 40 files changed, 10653 insertions(+), 352 deletions(-) > create mode 100644 drivers/hv/hv_call.c > create mode 100644 drivers/hv/mshv.h > create mode 100644 drivers/hv/mshv_eventfd.c > create mode 100644 drivers/hv/mshv_eventfd.h > create mode 100644 drivers/hv/mshv_main.c > create mode 100644 drivers/hv/mshv_msi.c > create mode 100644 drivers/hv/mshv_portid_table.c > create mode 100644 drivers/hv/mshv_root.h > create mode 100644 drivers/hv/mshv_root_hv_call.c > create mode 100644 drivers/hv/mshv_root_main.c > create mode 100644 drivers/hv/mshv_synic.c > create mode 100644 drivers/hv/mshv_vtl.h > create mode 100644 drivers/hv/mshv_vtl_main.c > create mode 100644 drivers/hv/xfer_to_guest.c > create mode 100644 include/asm-generic/hyperv-defs.h > create mode 100644 include/uapi/hyperv/hvgdk.h > create mode 100644 include/uapi/hyperv/hvgdk_mini.h > create mode 100644 include/uapi/hyperv/hvhdk.h > create mode 100644 include/uapi/hyperv/hvhdk_mini.h > create mode 100644 include/uapi/linux/mshv.h >