All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 00/18] Microsoft Hypervisor root partition ioctl interface
@ 2020-11-21  0:30 Nuno Das Neves
  2020-11-21  0:30 ` [RFC PATCH 01/18] x86/hyperv: convert hyperv statuses to linux error codes Nuno Das Neves
                   ` (19 more replies)
  0 siblings, 20 replies; 70+ messages in thread
From: Nuno Das Neves @ 2020-11-21  0:30 UTC (permalink / raw)
  To: linux-hyperv
  Cc: virtualization, linux-kernel, mikelley, viremana, sunilmut,
	nunodasneves, wei.liu, ligrassi, kys

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


^ permalink raw reply	[flat|nested] 70+ messages in thread

end of thread, other threads:[~2021-04-07 14:19 UTC | newest]

Thread overview: 70+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-21  0:30 [RFC PATCH 00/18] Microsoft Hypervisor root partition ioctl interface Nuno Das Neves
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-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-02-08 19:41     ` Michael Kelley via Virtualization
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-03-05  9:18         ` Vitaly Kuznetsov
2021-04-07  0:21         ` Nuno Das Neves
2021-04-07  7:38           ` Vitaly Kuznetsov
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: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-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-02-08 19:42     ` Michael Kelley via Virtualization
2021-03-04 23:49     ` Nuno Das Neves
2021-03-04 23:58       ` Michael Kelley
2021-03-04 23:58         ` Michael Kelley via Virtualization
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-02-08 19:44     ` Michael Kelley via Virtualization
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-02-08 19:45     ` Michael Kelley via Virtualization
2021-03-08 19:14     ` Nuno Das Neves
2021-03-08 19:30       ` Michael Kelley
2021-03-08 19:30         ` Michael Kelley via Virtualization
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-02-08 19:47     ` Michael Kelley via Virtualization
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-02-08 19:47     ` Michael Kelley via Virtualization
2021-03-11 19:37     ` Nuno Das Neves
2021-03-11 20:45       ` Michael Kelley
2021-03-11 20:45         ` Michael Kelley via Virtualization
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-02-08 19:48     ` Michael Kelley via Virtualization
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-02-08 19:49     ` Michael Kelley via Virtualization
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
2021-02-08 19:40   ` Michael Kelley via Virtualization

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.