[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v2 00/30] PVHv2 Dom0



Hello,

This is the first "complete" PVHv2 implementation in the sense that
it has feature parity with classic PVH Dom0. It is still very experimental,
but I've managed to boot it on all Intel boxes I've tried (OK, only 3 so far).
I've also tried on an AMD box, but sadly the ACPI tables there didn't contain
any RMRR regions and the IOMMU started spitting a bunch of page faults caused
by devices trying to access memory regions marked as reserved in the e820.

Here is the list of most relevant changes compared to classic PVH or PV:

 - An emulated local APIC (for each vCPU) and IO APIC is provided to Dom0.
 - The MADT has been replaced in order to reflect the real topology seen by
   the guest. This needs a little bit more of work so that the new MADT is
   not placed over the old one.
 - BARs of PCI devices are automatically mapped by Xen into Dom0 memory space.
   Currently there's no support for changing the position of the BARs, and Xen
   will just crash the domain if this is attempted.
 - Interrupts from physical devices are configured and routed using native
   mechanism, PIRQs are not available to this PVH Dom0 implementation at all.
   Xen will automatically detect the features of the physical devices available
   to Dom0, and will setup traps/handlers in order to intercept all relevant
   configuration accesses.
 - Access to PCIe regions is also trapped by Xen, so configuration can be done
   using the IO ports or the memory mapped configuration areas, as supported
   by each device.
 - Some ACPI tables are zapped (it's signature is inverted) to prevent Dom0
   from poking at them, those are: HPET, SLIT, SRAT, MPST and PMTT.

I know this series is quite big, but I think some of the initial changes can
go in as bugfixes, which would help me reduce the size.

Thanks, Roger.

Changes in this series:
 docs/misc/printk-formats.txt                |    5 +
 docs/misc/xen-command-line.markdown         |   15 +
 tools/firmware/hvmloader/hvmloader.c        |   17 -
 tools/libxc/include/xc_dom.h                |    2 +-
 tools/libxc/xc_dom_x86.c                    |   16 +
 xen/arch/arm/domain.c                       |    2 +-
 xen/arch/arm/domain_build.c                 |   16 +-
 xen/arch/arm/kernel.c                       |    4 +-
 xen/arch/arm/percpu.c                       |    3 +-
 xen/arch/x86/domain.c                       |   30 +-
 xen/arch/x86/domain_build.c                 | 1003 +++++++++++++++++++++++---
 xen/arch/x86/e820.c                         |    2 +-
 xen/arch/x86/hvm/hvm.c                      |   26 +-
 xen/arch/x86/hvm/io.c                       |  921 +++++++++++++++++++++++-
 xen/arch/x86/hvm/ioreq.c                    |   11 +
 xen/arch/x86/hvm/irq.c                      |    9 +
 xen/arch/x86/hvm/svm/nestedsvm.c            |    8 +-
 xen/arch/x86/hvm/svm/vmcb.c                 |    5 +-
 xen/arch/x86/hvm/vioapic.c                  |   28 +-
 xen/arch/x86/hvm/vmsi.c                     | 1036 +++++++++++++++++++++++++++
 xen/arch/x86/mm/hap/hap.c                   |   22 +-
 xen/arch/x86/mm/p2m.c                       |   88 +--
 xen/arch/x86/mm/paging.c                    |   16 +
 xen/arch/x86/mm/shadow/common.c             |   10 +-
 xen/arch/x86/percpu.c                       |    3 +-
 xen/arch/x86/physdev.c                      |    9 +-
 xen/arch/x86/setup.c                        |   11 +
 xen/arch/x86/smpboot.c                      |    4 +-
 xen/arch/x86/traps.c                        |   39 -
 xen/common/kernel.c                         |    3 +-
 xen/common/kexec.c                          |    2 +-
 xen/common/page_alloc.c                     |    2 +-
 xen/common/tmem_xen.c                       |    2 +-
 xen/common/vsprintf.c                       |   15 +
 xen/common/xmalloc_tlsf.c                   |    6 +-
 xen/drivers/char/console.c                  |    6 +-
 xen/drivers/char/serial.c                   |    2 +-
 xen/drivers/passthrough/amd/iommu_init.c    |   17 +-
 xen/drivers/passthrough/amd/pci_amd_iommu.c |    3 +-
 xen/drivers/passthrough/io.c                |  148 +++-
 xen/drivers/passthrough/pci.c               |  438 ++++++++++-
 xen/drivers/passthrough/vtd/iommu.c         |   23 +-
 xen/include/asm-x86/domain.h                |   12 +-
 xen/include/asm-x86/e820.h                  |    1 +
 xen/include/asm-x86/event.h                 |    3 +
 xen/include/asm-x86/flushtlb.h              |    2 +-
 xen/include/asm-x86/hap.h                   |    2 +-
 xen/include/asm-x86/hvm/domain.h            |    4 +
 xen/include/asm-x86/hvm/io.h                |  251 +++++++
 xen/include/asm-x86/hvm/ioreq.h             |    1 +
 xen/include/asm-x86/irq.h                   |    5 +
 xen/include/asm-x86/msi.h                   |   34 +
 xen/include/asm-x86/p2m.h                   |    5 -
 xen/include/asm-x86/paging.h                |    7 +
 xen/include/asm-x86/shadow.h                |    8 +
 xen/include/public/arch-x86/xen.h           |    4 +-
 xen/include/xen/hvm/irq.h                   |    4 +
 xen/include/xen/iommu.h                     |    1 +
 xen/include/xen/mm.h                        |   12 +-
 xen/include/xen/p2m-common.h                |   30 +
 xen/include/xen/pci.h                       |   10 +
 xen/include/xen/pci_regs.h                  |    4 +
 62 files changed, 4031 insertions(+), 397 deletions(-)

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.