[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |