|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 00/17] Q35 initial support for HVM guests
This series introduces initial Q35 chipset support for HVM guests, based on the patchset at [1] by Alexey Gerasimenko. Basic support means that this patchset allows to start an HVM guest that emulates a Q35 chipset via Qemu and implements access to PCIe extended configuration space for such devices emulated by Qemu. Support for PCIe device passthrough is not implemented yet. This is planned but implies modifications in the hypervisor and the firmwares, mainly for the support of multiple PCI buses. In order to create a Q35 guest, a new domain config option has been added, named 'device_model_machine'. Possible values are: - "i440" - i440 emulation (default) - "q35" - emulate a Q35 machine If the option is omitted it defaults to "i440", not impacting existing domain configuration files. DSDT files for Q35 and i440 are largely similar so the existing file dsdt.asl has been split with i440 and q35 specific parts put in seperated files. The PCIe MMCONFIG area is configured by hvmloader and its base address and size are set in Xen using a new pair of hypercalls HVMOP_get|set_ecam_space. Access to the MMCONFIG area from a guest is trapped by Xen and transfered to the emulator as XEN_DMOP_IO_RANGE_PCI ioreq type. [1] https://lore.kernel.org/xen-devel/cover.1520867740.git.x1917x@xxxxxxxxx/ Thierry Escande (17): libacpi: Split dsdt.asl file and extract i440 specific parts libacpi: new DSDT ACPI table for Q35 hvmloader: add function to set the emulated machine type (i440/Q35) hvmloader: add ACPI enabling for Q35 hvmloader: add Q35 DSDT table loading hvmloader: Move pci devices setup to a separate function hvmloader: add basic Q35 support hvmloader: Extend PCI BAR struct xev/hvm: Add HVMOP_get|set_ecam_space hypercalls hvmloader: Add support for HVMOP_set|get_ecam_space hypercalls hvmloader: allocate MMCONFIG area in the MMIO hole libxl: Q35 support (new option device_model_machine) libxl: Add xen-platform device for Q35 machine libacpi: build ACPI MCFG table if requested hvmloader: Set MCFG in ACPI table Handle PCIe ECAM space access from guests docs: provide description for device_model_machine option docs/man/xl.cfg.5.pod.in | 27 +++ tools/firmware/hvmloader/Makefile | 2 +- tools/firmware/hvmloader/config.h | 5 + tools/firmware/hvmloader/e820.c | 11 ++ tools/firmware/hvmloader/hvmloader.c | 21 ++- tools/firmware/hvmloader/ovmf.c | 4 +- tools/firmware/hvmloader/pci.c | 264 +++++++++++++++++++-------- tools/firmware/hvmloader/pci_regs.h | 16 ++ tools/firmware/hvmloader/seabios.c | 4 +- tools/firmware/hvmloader/util.c | 94 +++++++++- tools/firmware/hvmloader/util.h | 21 ++- tools/libacpi/Makefile | 10 +- tools/libacpi/acpi2_0.h | 17 ++ tools/libacpi/build.c | 43 +++++ tools/libacpi/dsdt.asl | 28 +-- tools/libacpi/dsdt_i440.asl | 36 ++++ tools/libacpi/dsdt_q35.asl | 130 +++++++++++++ tools/libacpi/libacpi.h | 6 + tools/libs/light/libxl_dm.c | 22 ++- tools/libs/light/libxl_types.idl | 7 + tools/xl/xl_parse.c | 14 ++ xen/arch/x86/hvm/hvm.c | 52 ++++++ xen/arch/x86/hvm/ioreq.c | 15 ++ xen/arch/x86/include/asm/domain.h | 4 + xen/include/public/hvm/hvm_op.h | 11 ++ 25 files changed, 739 insertions(+), 125 deletions(-) create mode 100644 tools/libacpi/dsdt_i440.asl create mode 100644 tools/libacpi/dsdt_q35.asl -- 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |