From: Wei Liu <wei.liu@kernel.org> To: Linux on Hyper-V List <linux-hyperv@vger.kernel.org> Cc: virtualization@lists.linux-foundation.org, Linux Kernel List <linux-kernel@vger.kernel.org>, Michael Kelley <mikelley@microsoft.com>, Vineeth Pillai <viremana@linux.microsoft.com>, Sunil Muthuswamy <sunilmut@microsoft.com>, Nuno Das Neves <nudasnev@microsoft.com>, Wei Liu <wei.liu@kernel.org>, x86@kernel.org, "K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, Stephen Hemminger <sthemmin@microsoft.com>, Samuel Ortiz <sameo@linux.intel.com> Subject: [PATCH RFC v1 00/18] Introducing Linux root partition support for Microsoft Hypervisor Date: Mon, 14 Sep 2020 11:27:44 +0000 [thread overview] Message-ID: <20200914112802.80611-1-wei.liu@kernel.org> (raw) Hi all Here we propose this patch series to make Linux run as the root partition [0] on Microsoft Hypervisor [1]. Microsoft wants to create a complete virtualization stack with Linux and Microsoft Hypervisor. There will be a subsequent patch series to provide a device node (/dev/mshv) such that userspace programs can create and run virtual machines. We've also ported Cloud Hypervisor [3] over and have been able to boot a Linux guest with Virtio devices since late July. Being an RFC sereis, this implements only the absolutely necessary components to get things running. I will break down this series a bit. A large portion of this series consists of patches that augment hyperv-tlfs.h. They should be rather uncontroversial and can be applied right away. A few key things other than the changes to hyperv-tlfs.h: 1. Linux needs to setup existing Hyper-V facilities differently. 2. Linux needs to make a few hypercalls to bring up APs. 3. Interrupts are remapped by IOMMU, which is controlled by the hypervisor. Linux needs to make hypercalls to map and unmap interrupts. This is done by introducing a new MSI irqdomain and new irqchips. #3 is perhaps the thing that we feel least confident about. We drew inspiration from the Xen code in Linux. We are of course open to criticism and sugguestions on how to make it better / acceptable to upstream. We're aware of tglx's series to change some of the MSI code, so we may need to change some of the code after that series is upstreamed. But it wouldn't hurt to throw this out as soon as possible for feedback. Comments and suggestions are welcome. Thanks, Wei. [0] Just think of it like Xen's Dom0. [1] 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. [3] https://github.com/cloud-hypervisor/ Cc: x86@kernel.org Cc: "K. Y. Srinivasan" <kys@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger <sthemmin@microsoft.com> Cc: Sunil Muthuswamy <sunilmut@microsoft.com> Cc: Nuno Das Neves <nudasnev@microsoft.com> Cc: Vineeth Pillai <viremana@linux.microsoft.com> Cc: Samuel Ortiz <sameo@linux.intel.com> Wei Liu (18): asm-generic/hyperv: change HV_CPU_POWER_MANAGEMENT to HV_CPU_MANAGEMENT x86/hyperv: detect if Linux is the root partition Drivers: hv: vmbus: skip VMBus initialization if Linux is root iommu/hyperv: don't setup IRQ remapping when running as root clocksource/hyperv: use MSR-based access if running as root x86/hyperv: allocate output arg pages if required x86/hyperv: extract partition ID from Microsoft Hypervisor if necessary x86/hyperv: handling hypercall page setup for root x86/hyperv: provide a bunch of helper functions x86/hyperv: implement and use hv_smp_prepare_cpus asm-generic/hyperv: update hv_msi_entry asm-generic/hyperv: update hv_interrupt_entry asm-generic/hyperv: introduce hv_device_id and auxiliary structures asm-generic/hyperv: import data structures for mapping device interrupts x86/apic/msi: export pci_msi_get_hwirq x86/hyperv: implement MSI domain for root partition x86/ioapic: export a few functions and data structures via io_apic.h x86/hyperv: handle IO-APIC when running as root arch/x86/hyperv/Makefile | 4 +- arch/x86/hyperv/hv_init.c | 126 +++++- arch/x86/hyperv/hv_proc.c | 209 ++++++++++ arch/x86/hyperv/irqdomain.c | 580 ++++++++++++++++++++++++++++ arch/x86/include/asm/hyperv-tlfs.h | 23 ++ arch/x86/include/asm/io_apic.h | 20 + arch/x86/include/asm/mshyperv.h | 13 +- arch/x86/include/asm/msi.h | 3 + arch/x86/kernel/apic/io_apic.c | 28 +- arch/x86/kernel/apic/msi.c | 3 +- arch/x86/kernel/cpu/mshyperv.c | 43 +++ drivers/clocksource/hyperv_timer.c | 3 + drivers/hv/vmbus_drv.c | 3 + drivers/iommu/hyperv-iommu.c | 3 +- drivers/pci/controller/pci-hyperv.c | 2 +- include/asm-generic/hyperv-tlfs.h | 243 +++++++++++- 16 files changed, 1268 insertions(+), 38 deletions(-) create mode 100644 arch/x86/hyperv/hv_proc.c create mode 100644 arch/x86/hyperv/irqdomain.c -- 2.20.1
next reply other threads:[~2020-09-14 17:51 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-14 11:27 Wei Liu [this message] 2020-09-14 11:27 ` [PATCH RFC v1 01/18] asm-generic/hyperv: change HV_CPU_POWER_MANAGEMENT to HV_CPU_MANAGEMENT Wei Liu 2020-09-14 11:27 ` [PATCH RFC v1 02/18] x86/hyperv: detect if Linux is the root partition Wei Liu 2020-09-14 11:27 ` [PATCH RFC v1 03/18] Drivers: hv: vmbus: skip VMBus initialization if Linux is root Wei Liu 2020-09-14 11:27 ` [PATCH RFC v1 04/18] iommu/hyperv: don't setup IRQ remapping when running as root Wei Liu 2020-09-18 9:12 ` Joerg Roedel 2020-09-14 11:27 ` [PATCH RFC v1 05/18] clocksource/hyperv: use MSR-based access if " Wei Liu 2020-09-15 10:10 ` Vitaly Kuznetsov 2020-09-15 10:32 ` Wei Liu 2020-09-14 11:27 ` [PATCH RFC v1 06/18] x86/hyperv: allocate output arg pages if required Wei Liu 2020-09-15 10:16 ` Vitaly Kuznetsov 2020-09-15 12:43 ` Wei Liu 2020-09-16 15:42 ` Wei Liu 2020-09-16 16:10 ` Vitaly Kuznetsov 2020-09-14 11:27 ` [PATCH RFC v1 07/18] x86/hyperv: extract partition ID from Microsoft Hypervisor if necessary Wei Liu 2020-09-15 10:27 ` Vitaly Kuznetsov 2020-09-16 16:32 ` Wei Liu 2020-10-27 12:19 ` Wei Liu 2020-09-14 11:27 ` [PATCH RFC v1 08/18] x86/hyperv: handling hypercall page setup for root Wei Liu 2020-09-15 10:32 ` Vitaly Kuznetsov 2020-09-15 10:37 ` Wei Liu 2020-09-15 11:02 ` Vitaly Kuznetsov 2020-09-15 11:16 ` Wei Liu 2020-09-15 11:23 ` Vitaly Kuznetsov 2020-09-15 11:27 ` Wei Liu 2020-09-16 21:34 ` [EXTERNAL] " Sunil Muthuswamy 2020-09-17 11:06 ` Vitaly Kuznetsov 2020-09-14 11:59 ` [PATCH RFC v1 09/18] x86/hyperv: provide a bunch of helper functions Wei Liu 2020-09-15 11:00 ` Vitaly Kuznetsov 2020-10-27 13:10 ` Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 10/18] x86/hyperv: implement and use hv_smp_prepare_cpus Wei Liu 2020-09-15 11:14 ` Vitaly Kuznetsov 2020-10-27 13:47 ` Wei Liu 2020-10-27 13:56 ` Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 11/18] asm-generic/hyperv: update hv_msi_entry Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 12/18] asm-generic/hyperv: update hv_interrupt_entry Wei Liu 2020-10-01 14:33 ` Rob Herring 2020-09-14 11:59 ` [PATCH RFC v1 13/18] asm-generic/hyperv: introduce hv_device_id and auxiliary structures Wei Liu 2020-09-15 11:16 ` Vitaly Kuznetsov 2020-09-15 11:59 ` Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 14/18] asm-generic/hyperv: import data structures for mapping device interrupts Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 15/18] x86/apic/msi: export pci_msi_get_hwirq Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 16/18] x86/hyperv: implement MSI domain for root partition Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 17/18] x86/ioapic: export a few functions and data structures via io_apic.h Wei Liu 2020-09-14 11:59 ` [PATCH RFC v1 18/18] x86/hyperv: handle IO-APIC when running as root Wei Liu
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=20200914112802.80611-1-wei.liu@kernel.org \ --to=wei.liu@kernel.org \ --cc=haiyangz@microsoft.com \ --cc=kys@microsoft.com \ --cc=linux-hyperv@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mikelley@microsoft.com \ --cc=nudasnev@microsoft.com \ --cc=sameo@linux.intel.com \ --cc=sthemmin@microsoft.com \ --cc=sunilmut@microsoft.com \ --cc=viremana@linux.microsoft.com \ --cc=virtualization@lists.linux-foundation.org \ --cc=x86@kernel.org \ --subject='Re: [PATCH RFC v1 00/18] Introducing Linux root partition support for Microsoft Hypervisor' \ /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
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).