lkml.org 
[lkml]   [2021]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v4 00/17] Introducing Linux root partition support for Microsoft Hypervisor
    Date
    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

    \
     
     \ /
      Last update: 2021-01-06 21:36    [W:2.126 / U:0.532 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site