linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Nuno Das Neves <nunodasneves@linux.microsoft.com>
To: linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
	x86@kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-arch@vger.kernel.org
Cc: mikelley@microsoft.com, kys@microsoft.com, wei.liu@kernel.org,
	haiyangz@microsoft.com, decui@microsoft.com,
	ssengar@linux.microsoft.com, mukeshrathor@microsoft.com,
	stanislav.kinsburskiy@gmail.com, jinankjain@linux.microsoft.com,
	apais@linux.microsoft.com, Tianyu.Lan@microsoft.com,
	vkuznets@redhat.com, tglx@linutronix.de, mingo@redhat.com,
	bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com,
	will@kernel.org, catalin.marinas@arm.com
Subject: Re: [PATCH 00/15] Introduce /dev/mshv drivers
Date: Thu, 27 Jul 2023 14:05:34 -0700	[thread overview]
Message-ID: <fd718124-7b71-6746-2b09-e3208894f94c@linux.microsoft.com> (raw)
In-Reply-To: <1690487690-2428-1-git-send-email-nunodasneves@linux.microsoft.com>

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@linux.microsoft.com/
> [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
> 


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-07-27 21:06 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-27 19:54 [PATCH 00/15] Introduce /dev/mshv drivers Nuno Das Neves
2023-07-27 19:54 ` [PATCH 01/15] hyperv-tlfs: Change shared HV_REGISTER_* defines to HV_MSR_* Nuno Das Neves
2023-08-03  1:25   ` Wei Liu
2023-07-27 19:54 ` [PATCH 02/15] mshyperv: Introduce hv_get_hypervisor_version Nuno Das Neves
2023-08-02 23:39   ` Wei Liu
2023-08-15 21:57     ` Nuno Das Neves
2023-07-27 19:54 ` [PATCH 03/15] mshyperv: Introduce numa_node_to_proximity_domain_info Nuno Das Neves
2023-08-02 23:47   ` Wei Liu
2023-07-27 19:54 ` [PATCH 04/15] asm-generic/mshyperv: Introduce hv_recommend_using_aeoi() Nuno Das Neves
2023-08-02 23:48   ` Wei Liu
2023-07-27 19:54 ` [PATCH 05/15] hyperv: Move hv_connection_id to hyperv-tlfs Nuno Das Neves
2023-08-02 23:55   ` Wei Liu
2023-08-15 22:04     ` Nuno Das Neves
2023-07-27 19:54 ` [PATCH 06/15] hyperv-tlfs: Introduce hv_status_to_string and hv_status_to_errno Nuno Das Neves
2023-07-27 19:54 ` [PATCH 07/15] Drivers: hv: Move hv_call_deposit_pages and hv_call_create_vp to common code Nuno Das Neves
2023-08-03  0:02   ` Wei Liu
2023-07-27 19:54 ` [PATCH 08/15] Drivers: hv: Introduce per-cpu event ring tail Nuno Das Neves
2023-08-03  0:10   ` Wei Liu
2023-08-16 21:40     ` Nuno Das Neves
2023-07-27 19:54 ` [PATCH 09/15] Drivers: hv: Introduce hv_output_arg_exists in hv_common Nuno Das Neves
2023-08-03  0:16   ` Wei Liu
2023-08-16 21:56     ` Nuno Das Neves
2023-07-27 19:54 ` [PATCH 10/15] x86: hyperv: Add mshv_handler irq handler and setup function Nuno Das Neves
2023-08-03  0:17   ` Wei Liu
2023-07-27 19:54 ` [PATCH 11/15] Drivers: hv: export vmbus_isr, hv_context and hv_post_message Nuno Das Neves
2023-08-03  0:17   ` Wei Liu
2023-07-27 19:54 ` [PATCH 12/15] Documentation: Reserve ioctl number for mshv driver Nuno Das Neves
2023-08-03  0:23   ` Wei Liu
2023-08-03 13:23     ` Jonathan Corbet
2023-08-03 21:05       ` Wei Liu
2023-07-27 19:54 ` [PATCH 13/15] uapi: hyperv: Add mshv driver headers hvhdk.h, hvhdk_mini.h, hvgdk.h, hvgdk_mini.h Nuno Das Neves
2023-08-03  0:27   ` Wei Liu
2023-07-27 19:54 ` [PATCH 14/15] asm-generic: hyperv: Use mshv headers conditionally. Add asm-generic/hyperv-defs.h Nuno Das Neves
2023-08-03  0:48   ` Wei Liu
2023-08-17 16:41     ` Nuno Das Neves
2023-07-27 21:05 ` Nuno Das Neves [this message]
     [not found] ` <1690487690-2428-16-git-send-email-nunodasneves@linux.microsoft.com>
2023-08-03  1:23   ` [PATCH 15/15] Drivers: hv: Add modules to expose /dev/mshv to VMMs running on Hyper-V Wei Liu
2023-08-17 17:57     ` Nuno Das Neves

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=fd718124-7b71-6746-2b09-e3208894f94c@linux.microsoft.com \
    --to=nunodasneves@linux.microsoft.com \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=apais@linux.microsoft.com \
    --cc=bp@alien8.de \
    --cc=catalin.marinas@arm.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=decui@microsoft.com \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=jinankjain@linux.microsoft.com \
    --cc=kys@microsoft.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mikelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=mukeshrathor@microsoft.com \
    --cc=ssengar@linux.microsoft.com \
    --cc=stanislav.kinsburskiy@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --cc=x86@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).