From: Nuno Das Neves <nunodasneves@linux.microsoft.com>
To: linux-hyperv@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org, mikelley@microsoft.com,
viremana@linux.microsoft.com, sunilmut@microsoft.com,
nunodasneves@linux.microsoft.com, wei.liu@kernel.org,
ligrassi@microsoft.com, kys@microsoft.com
Subject: [RFC PATCH 00/18] Microsoft Hypervisor root partition ioctl interface
Date: Fri, 20 Nov 2020 16:30:19 -0800 [thread overview]
Message-ID: <1605918637-12192-1-git-send-email-nunodasneves@linux.microsoft.com> (raw)
This patch series provides a userspace interface for creating and running guest
virtual machines while running on the Microsoft Hypervisor [0].
Since managing guest machines can only be done when Linux is the root partition,
this series depends on the RFC already posted by Wei Liu:
https://lore.kernel.org/linux-hyperv/20201105165814.29233-1-wei.liu@kernel.org/T/#t
The first two patches provide some helpers for converting hypervisor status
codes to linux error codes, and easily printing hypervisor status codes to dmesg
for debugging.
Hyper-V related headers asm-generic/hyperv-tlfs.h and x86/asm/hyperv-tlfs.h are
split into uapi and non-uapi. The uapi versions contain structures used in both
the ioctl interface and the kernel.
The mshv API is introduced in virt/mshv/mshv_main.c. As each interface is
introduced, documentation is added in Documentation/virt/mshv/api.rst.
The API is file-desciptor based, like KVM. The entry point is /dev/mshv.
/dev/mshv ioctls:
MSHV_REQUEST_VERSION
MSHV_CREATE_PARTITION
Partition (vm) ioctls:
MSHV_MAP_GUEST_MEMORY, MSHV_UNMAP_GUEST_MEMORY
MSHV_INSTALL_INTERCEPT
MSHV_ASSERT_INTERRUPT
MSHV_GET_PARTITION_PROPERTY, MSHV_SET_PARTITION_PROPERTY
MSHV_CREATE_VP
Vp (vcpu) ioctls:
MSHV_GET_VP_REGISTERS, MSHV_SET_VP_REGISTERS
MSHV_RUN_VP
MSHV_GET_VP_STATE, MSHV_SET_VP_STATE
mmap() (register page)
[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.
Nuno Das Neves (18):
x86/hyperv: convert hyperv statuses to linux error codes
asm-generic/hyperv: convert hyperv statuses to strings
virt/mshv: minimal mshv module (/dev/mshv/)
virt/mshv: request version ioctl
virt/mshv: create partition ioctl
virt/mshv: create, initialize, finalize, delete partition hypercalls
virt/mshv: withdraw memory hypercall
virt/mshv: map and unmap guest memory
virt/mshv: create vcpu ioctl
virt/mshv: get and set vcpu registers ioctls
virt/mshv: set up synic pages for intercept messages
virt/mshv: run vp ioctl and isr
virt/mshv: install intercept ioctl
virt/mshv: assert interrupt ioctl
virt/mshv: get and set vp state ioctls
virt/mshv: mmap vp register page
virt/mshv: get and set partition property ioctls
virt/mshv: Add enlightenment bits to create partition ioctl
.../userspace-api/ioctl/ioctl-number.rst | 2 +
Documentation/virt/mshv/api.rst | 173 ++
arch/x86/Kconfig | 2 +
arch/x86/hyperv/Kconfig | 22 +
arch/x86/hyperv/Makefile | 4 +
arch/x86/hyperv/hv_init.c | 2 +-
arch/x86/hyperv/hv_proc.c | 40 +-
arch/x86/include/asm/hyperv-tlfs.h | 44 +-
arch/x86/include/asm/mshyperv.h | 1 +
arch/x86/include/uapi/asm/hyperv-tlfs.h | 1312 +++++++++++
arch/x86/kernel/cpu/mshyperv.c | 16 +
include/asm-generic/hyperv-tlfs.h | 324 ++-
include/asm-generic/mshyperv.h | 3 +
include/linux/mshv.h | 61 +
include/uapi/asm-generic/hyperv-tlfs.h | 160 ++
include/uapi/linux/mshv.h | 109 +
virt/mshv/mshv_main.c | 2054 +++++++++++++++++
17 files changed, 4178 insertions(+), 151 deletions(-)
create mode 100644 Documentation/virt/mshv/api.rst
create mode 100644 arch/x86/hyperv/Kconfig
create mode 100644 arch/x86/include/uapi/asm/hyperv-tlfs.h
create mode 100644 include/linux/mshv.h
create mode 100644 include/uapi/asm-generic/hyperv-tlfs.h
create mode 100644 include/uapi/linux/mshv.h
create mode 100644 virt/mshv/mshv_main.c
--
2.25.1
next reply other threads:[~2020-11-21 0:30 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-21 0:30 Nuno Das Neves [this message]
2020-11-21 0:30 ` [RFC PATCH 01/18] x86/hyperv: convert hyperv statuses to linux error codes Nuno Das Neves
2021-02-09 13:04 ` Vitaly Kuznetsov
2021-03-04 18:24 ` Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 02/18] asm-generic/hyperv: convert hyperv statuses to strings Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 03/18] virt/mshv: minimal mshv module (/dev/mshv/) Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 04/18] virt/mshv: request version ioctl Nuno Das Neves
2021-02-08 19:41 ` Michael Kelley
2021-03-04 21:35 ` Nuno Das Neves
2021-02-09 13:11 ` Vitaly Kuznetsov
2021-03-04 18:43 ` Nuno Das Neves
2021-03-05 9:18 ` Vitaly Kuznetsov
2021-04-07 0:21 ` Nuno Das Neves
2021-04-07 7:38 ` Vitaly Kuznetsov
2021-04-07 13:43 ` Wei Liu
2021-04-07 14:02 ` Vitaly Kuznetsov
2021-04-07 14:19 ` Wei Liu
2020-11-21 0:30 ` [RFC PATCH 05/18] virt/mshv: create partition ioctl Nuno Das Neves
2021-02-09 13:15 ` Vitaly Kuznetsov
2021-03-04 18:44 ` Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 06/18] virt/mshv: create, initialize, finalize, delete partition hypercalls Nuno Das Neves
2021-02-08 19:42 ` Michael Kelley
2021-03-04 23:49 ` Nuno Das Neves
2021-03-04 23:58 ` Michael Kelley
2020-11-21 0:30 ` [RFC PATCH 07/18] virt/mshv: withdraw memory hypercall Nuno Das Neves
2021-02-08 19:44 ` Michael Kelley
2021-03-05 21:01 ` Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 08/18] virt/mshv: map and unmap guest memory Nuno Das Neves
2021-02-08 19:45 ` Michael Kelley
2021-03-08 19:14 ` Nuno Das Neves
2021-03-08 19:30 ` Michael Kelley
2020-11-21 0:30 ` [RFC PATCH 09/18] virt/mshv: create vcpu ioctl Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 10/18] virt/mshv: get and set vcpu registers ioctls Nuno Das Neves
2021-02-08 19:47 ` Michael Kelley
2021-03-09 1:39 ` Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 11/18] virt/mshv: set up synic pages for intercept messages Nuno Das Neves
2021-02-08 19:47 ` Michael Kelley
2021-03-11 19:37 ` Nuno Das Neves
2021-03-11 20:45 ` Michael Kelley
2020-11-21 0:30 ` [RFC PATCH 12/18] virt/mshv: run vp ioctl and isr Nuno Das Neves
2020-11-24 16:15 ` Wei Liu
2020-11-21 0:30 ` [RFC PATCH 13/18] virt/mshv: install intercept ioctl Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 14/18] virt/mshv: assert interrupt ioctl Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 15/18] virt/mshv: get and set vp state ioctls Nuno Das Neves
2021-02-08 19:48 ` Michael Kelley
2021-03-11 23:38 ` Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 16/18] virt/mshv: mmap vp register page Nuno Das Neves
2021-02-08 19:49 ` Michael Kelley
2021-03-25 17:36 ` Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 17/18] virt/mshv: get and set partition property ioctls Nuno Das Neves
2020-11-21 0:30 ` [RFC PATCH 18/18] virt/mshv: Add enlightenment bits to create partition ioctl Nuno Das Neves
2020-11-24 16:18 ` [RFC PATCH 00/18] Microsoft Hypervisor root partition ioctl interface Wei Liu
2021-02-08 19:40 ` Michael Kelley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1605918637-12192-1-git-send-email-nunodasneves@linux.microsoft.com \
--to=nunodasneves@linux.microsoft.com \
--cc=kys@microsoft.com \
--cc=ligrassi@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikelley@microsoft.com \
--cc=sunilmut@microsoft.com \
--cc=viremana@linux.microsoft.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=wei.liu@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).