All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/17] Q35 initial support for HVM guests
@ 2026-03-13 16:35 Thierry Escande
  2026-03-13 16:35 ` [PATCH 01/17] libacpi: Split dsdt.asl file and extract i440 specific parts Thierry Escande
                   ` (18 more replies)
  0 siblings, 19 replies; 59+ messages in thread
From: Thierry Escande @ 2026-03-13 16:35 UTC (permalink / raw)
  To: xen-devel
  Cc: Thierry Escande, Jan Beulich, Andrew Cooper, Roger Pau Monné,
	Anthony PERARD, Michal Orzel, Julien Grall, Stefano Stabellini,
	Juergen Gross

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@gmail.com/

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



^ permalink raw reply	[flat|nested] 59+ messages in thread

end of thread, other threads:[~2026-05-10 23:33 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-13 16:35 [PATCH 00/17] Q35 initial support for HVM guests Thierry Escande
2026-03-13 16:35 ` [PATCH 01/17] libacpi: Split dsdt.asl file and extract i440 specific parts Thierry Escande
2026-04-28  9:05   ` Roger Pau Monné
2026-05-04 14:34   ` Jan Beulich
2026-05-04 14:35     ` Jan Beulich
2026-03-13 16:35 ` [PATCH 06/17] hvmloader: Move pci devices setup to a separate function Thierry Escande
2026-04-28 12:48   ` Roger Pau Monné
2026-05-04 14:52   ` Jan Beulich
2026-03-13 16:35 ` [PATCH 03/17] hvmloader: add function to set the emulated machine type (i440/Q35) Thierry Escande
2026-04-28 10:39   ` Roger Pau Monné
2026-05-04 10:58     ` Jan Beulich
2026-05-04 14:43   ` Jan Beulich
2026-03-13 16:35 ` [PATCH 02/17] libacpi: new DSDT ACPI table for Q35 Thierry Escande
2026-04-28 10:17   ` Roger Pau Monné
2026-05-04 14:39   ` Jan Beulich
2026-03-13 16:35 ` [PATCH 05/17] hvmloader: add Q35 DSDT table loading Thierry Escande
2026-04-28 11:08   ` Roger Pau Monné
2026-03-13 16:35 ` [PATCH 07/17] hvmloader: add basic Q35 support Thierry Escande
2026-04-28 13:15   ` Roger Pau Monné
2026-05-10 23:32     ` Alexey G
2026-05-04 14:55   ` Jan Beulich
2026-03-13 16:35 ` [PATCH 10/17] hvmloader: Add support for HVMOP_set|get_ecam_space hypercalls Thierry Escande
2026-04-28 14:14   ` Roger Pau Monné
2026-03-13 16:35 ` [PATCH 08/17] hvmloader: Extend PCI BAR struct Thierry Escande
2026-04-28 13:31   ` Roger Pau Monné
2026-05-04 15:01   ` Jan Beulich
2026-03-13 16:35 ` [PATCH 14/17] libacpi: build ACPI MCFG table if requested Thierry Escande
2026-04-29 10:13   ` Roger Pau Monné
2026-03-13 16:35 ` [PATCH 09/17] xev/hvm: Add HVMOP_get|set_ecam_space hypercalls Thierry Escande
2026-04-28 13:59   ` Roger Pau Monné
2026-05-04 11:09     ` Jan Beulich
2026-05-04 15:12   ` Jan Beulich
2026-03-13 16:35 ` [PATCH 11/17] hvmloader: allocate MMCONFIG area in the MMIO hole Thierry Escande
2026-04-29  9:29   ` Roger Pau Monné
2026-05-04 11:11     ` Jan Beulich
2026-05-04 12:23       ` Roger Pau Monné
2026-05-04 12:36         ` Jan Beulich
2026-03-13 16:35 ` [PATCH 12/17] libxl: Q35 support (new option device_model_machine) Thierry Escande
2026-04-29 10:01   ` Roger Pau Monné
2026-03-13 16:35 ` [PATCH 13/17] libxl: Add xen-platform device for Q35 machine Thierry Escande
2026-03-13 16:35 ` [PATCH 04/17] hvmloader: add ACPI enabling for Q35 Thierry Escande
2026-04-28 10:48   ` Roger Pau Monné
2026-05-05 13:58     ` Alexey G
2026-05-05 14:25       ` Roger Pau Monné
2026-03-13 16:35 ` [PATCH 15/17] hvmloader: Set MCFG in ACPI table Thierry Escande
2026-04-29 12:33   ` Roger Pau Monné
2026-03-13 16:35 ` [PATCH 16/17] Handle PCIe ECAM space access from guests Thierry Escande
2026-04-29 12:42   ` Roger Pau Monné
2026-05-04 15:22   ` Jan Beulich
2026-03-13 16:35 ` [PATCH 17/17] docs: provide description for device_model_machine option Thierry Escande
2026-04-29 12:43   ` Roger Pau Monné
2026-03-15 22:43 ` [PATCH 00/17] Q35 initial support for HVM guests Alexey G
2026-04-28  7:48 ` Roger Pau Monné
2026-05-04 10:45   ` Jan Beulich
2026-05-05  5:48     ` Jan Beulich
2026-05-05  5:49       ` Jan Beulich
2026-05-05 13:29     ` Alexey G
2026-05-05 13:07   ` Alexey G
2026-05-05 14:15     ` Roger Pau Monné

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.