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 <nunodasneves@linux.microsoft.com>,
Wei Liu <wei.liu@kernel.org>,
sameo@linux.intel.com, robert.bradford@intel.com,
sebastien.boeuf@intel.com
Subject: [PATCH v4 00/17] Introducing Linux root partition support for Microsoft Hypervisor
Date: Wed, 6 Jan 2021 20:33:33 +0000 [thread overview]
Message-ID: <20210106203350.14568-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]. 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 2020.
This series implements only the absolutely necessary components to get
things running. 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.
This series is now based on 5.11-rc2.
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: sameo@linux.intel.com
Cc: robert.bradford@intel.com
Cc: sebastien.boeuf@intel.com
Changes since v3:
1. Fix compilation errors.
2. Adapt to upstream changes.
Changes since v2:
1. Address more comments from Vitaly.
2. Fix and test 32bit build.
Changes since v1:
1. Simplify MSI IRQ domain implementation.
2. Address Vitaly's comments.
Wei Liu (17):
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/hyperv: implement an 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 | 120 +++++-
arch/x86/hyperv/hv_proc.c | 225 +++++++++++
arch/x86/hyperv/irqdomain.c | 559 ++++++++++++++++++++++++++++
arch/x86/include/asm/hyperv-tlfs.h | 23 ++
arch/x86/include/asm/io_apic.h | 22 ++
arch/x86/include/asm/mshyperv.h | 16 +-
arch/x86/kernel/apic/io_apic.c | 25 +-
arch/x86/kernel/cpu/mshyperv.c | 49 +++
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 | 254 ++++++++++++-
14 files changed, 1272 insertions(+), 36 deletions(-)
create mode 100644 arch/x86/hyperv/hv_proc.c
create mode 100644 arch/x86/hyperv/irqdomain.c
base-commit: e71ba9452f0b5b2e8dc8aa5445198cd9214a6a62
--
2.20.1
next reply other threads:[~2021-01-06 20:34 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-06 20:33 Wei Liu [this message]
2021-01-06 20:33 ` [PATCH v4 01/17] asm-generic/hyperv: change HV_CPU_POWER_MANAGEMENT to HV_CPU_MANAGEMENT Wei Liu
2021-01-06 20:33 ` [PATCH v4 02/17] x86/hyperv: detect if Linux is the root partition Wei Liu
2021-01-06 20:33 ` [PATCH v4 03/17] Drivers: hv: vmbus: skip VMBus initialization if Linux is root Wei Liu
2021-01-06 20:33 ` [PATCH v4 04/17] iommu/hyperv: don't setup IRQ remapping when running as root Wei Liu
2021-01-06 20:33 ` [PATCH v4 05/17] clocksource/hyperv: use MSR-based access if " Wei Liu
2021-01-06 20:33 ` [PATCH v4 06/17] x86/hyperv: allocate output arg pages if required Wei Liu
2021-01-06 20:33 ` [PATCH v4 07/17] x86/hyperv: extract partition ID from Microsoft Hypervisor if necessary Wei Liu
2021-01-06 20:33 ` [PATCH v4 08/17] x86/hyperv: handling hypercall page setup for root Wei Liu
2021-01-06 20:33 ` [PATCH v4 09/17] x86/hyperv: provide a bunch of helper functions Wei Liu
2021-01-06 20:33 ` [PATCH v4 10/17] x86/hyperv: implement and use hv_smp_prepare_cpus Wei Liu
2021-01-06 20:33 ` [PATCH v4 11/17] asm-generic/hyperv: update hv_msi_entry Wei Liu
2021-01-06 20:33 ` [PATCH v4 12/17] asm-generic/hyperv: update hv_interrupt_entry Wei Liu
2021-01-06 20:33 ` [PATCH v4 13/17] asm-generic/hyperv: introduce hv_device_id and auxiliary structures Wei Liu
2021-01-06 20:33 ` [PATCH v4 14/17] asm-generic/hyperv: import data structures for mapping device interrupts Wei Liu
2021-01-06 20:33 ` [PATCH v4 15/17] x86/hyperv: implement an MSI domain for root partition Wei Liu
2021-01-06 22:21 ` kernel test robot
2021-01-07 15:05 ` Wei Liu
2021-01-06 20:33 ` [PATCH v4 16/17] x86/ioapic: export a few functions and data structures via io_apic.h Wei Liu
2021-01-09 16:38 ` Wei Liu
2021-01-06 20:33 ` [PATCH v4 17/17] x86/hyperv: handle IO-APIC when running as root Wei Liu
2021-01-09 16:45 ` 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=20210106203350.14568-1-wei.liu@kernel.org \
--to=wei.liu@kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikelley@microsoft.com \
--cc=nunodasneves@linux.microsoft.com \
--cc=robert.bradford@intel.com \
--cc=sameo@linux.intel.com \
--cc=sebastien.boeuf@intel.com \
--cc=sunilmut@microsoft.com \
--cc=viremana@linux.microsoft.com \
--cc=virtualization@lists.linux-foundation.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).