]> www.infradead.org Git - users/jedix/linux-maple.git/commit
Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs
authorNuno Das Neves <nunodasneves@linux.microsoft.com>
Fri, 14 Mar 2025 19:28:56 +0000 (12:28 -0700)
committerWei Liu <wei.liu@kernel.org>
Fri, 21 Mar 2025 18:24:22 +0000 (18:24 +0000)
commit621191d709b14882270dfd8ea5d7d6cdfebe2c35
tree9b7bc2e3ecaf9cf85c469df69a3b78ffc3bc7ae9
parent0bd921a4b4d9ca832578fcc61a6a99bd980776c9
Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs

Provide a set of IOCTLs for creating and managing child partitions when
running as root partition on Hyper-V. The new driver is enabled via
CONFIG_MSHV_ROOT.

A brief overview of the interface:

MSHV_CREATE_PARTITION is the entry point, returning a file descriptor
representing a child partition. IOCTLs on this fd can be used to map
memory, create VPs, etc.

Creating a VP returns another file descriptor representing that VP which
in turn has another set of corresponding IOCTLs for running the VP,
getting/setting state, etc.

MSHV_ROOT_HVCALL is a generic "passthrough" hypercall IOCTL which can be
used for a number of partition or VP hypercalls. This is for hypercalls
that do not affect any state in the kernel driver, such as getting and
setting VP registers and partition properties, translating addresses,
etc. It is "passthrough" because the binary input and output for the
hypercall is only interpreted by the VMM - the kernel driver does
nothing but insert the VP and partition id where necessary (which are
always in the same place), and execute the hypercall.

Co-developed-by: Anirudh Rayabharam <anrayabh@linux.microsoft.com>
Signed-off-by: Anirudh Rayabharam <anrayabh@linux.microsoft.com>
Co-developed-by: Jinank Jain <jinankjain@microsoft.com>
Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
Co-developed-by: Mukesh Rathor <mrathor@linux.microsoft.com>
Signed-off-by: Mukesh Rathor <mrathor@linux.microsoft.com>
Co-developed-by: Muminul Islam <muislam@microsoft.com>
Signed-off-by: Muminul Islam <muislam@microsoft.com>
Co-developed-by: Praveen K Paladugu <prapal@linux.microsoft.com>
Signed-off-by: Praveen K Paladugu <prapal@linux.microsoft.com>
Co-developed-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Signed-off-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
Co-developed-by: Wei Liu <wei.liu@kernel.org>
Signed-off-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
Reviewed-by: Roman Kisel <romank@linux.microsoft.com>
Link: https://lore.kernel.org/r/1741980536-3865-11-git-send-email-nunodasneves@linux.microsoft.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
Message-ID: <1741980536-3865-11-git-send-email-nunodasneves@linux.microsoft.com>
14 files changed:
Documentation/userspace-api/ioctl/ioctl-number.rst
drivers/hv/Kconfig
drivers/hv/Makefile
drivers/hv/mshv.h [new file with mode: 0644]
drivers/hv/mshv_common.c [new file with mode: 0644]
drivers/hv/mshv_eventfd.c [new file with mode: 0644]
drivers/hv/mshv_eventfd.h [new file with mode: 0644]
drivers/hv/mshv_irq.c [new file with mode: 0644]
drivers/hv/mshv_portid_table.c [new file with mode: 0644]
drivers/hv/mshv_root.h [new file with mode: 0644]
drivers/hv/mshv_root_hv_call.c [new file with mode: 0644]
drivers/hv/mshv_root_main.c [new file with mode: 0644]
drivers/hv/mshv_synic.c [new file with mode: 0644]
include/uapi/linux/mshv.h [new file with mode: 0644]