From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419734; cv=none; d=zohomail.com; s=zohoarc; b=IQ4MldFHhr2K7Y6bFVBKAUox6420RBbAqXyTKkwzFAO9CHt8w1Nl2YCLvXY0IS9k3dEnMDYi3em6TD2xovuqwDG/Qb5ElkRJIavb9OkQPbtq6GFSE6gNuv6NqCPZenLjji0O6yNvfeEkUtTIwyJQJbl7I+ud2sinyjPVEiLyPWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419734; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xkR51huuZGxHmTSzRvJUtjlM0MP/Kew4xYHp0fhpCbg=; b=XmjYr0l1cbcmj5B/5UzCxmc0g48Xko6MzZ7L/AljEB51U8SZfgTSiaIFOtlIQzuznPYg74v0rNvPix/UQSQBJ20bwhPJ/C+TGFBmLvEMI06eHbdzIX0FdOnZRC0G/gg+rHdDHRPDLI757FL372SuI1JrRUKfCCVpC3acMWzqkMU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419734713903.8069348615215; Fri, 13 Mar 2026 09:35:34 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253908.1549860 (Exim 4.92) (envelope-from ) id 1w15Tf-0006IC-M8; Fri, 13 Mar 2026 16:35:07 +0000 Received: by outflank-mailman (output) from mailman id 1253908.1549860; Fri, 13 Mar 2026 16:35:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tf-0006I1-IE; Fri, 13 Mar 2026 16:35:07 +0000 Received: by outflank-mailman (input) for mailman id 1253908; Fri, 13 Mar 2026 16:35:06 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Te-0006Ek-Mi for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:06 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 958cdc8b-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:03 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT156HszPm0PrP for ; Fri, 13 Mar 2026 16:35:01 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 73f22918691e4f6590e71139c2bbb6cf; Fri, 13 Mar 2026 16:35:01 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 958cdc8b-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419701; x=1773689701; bh=xkR51huuZGxHmTSzRvJUtjlM0MP/Kew4xYHp0fhpCbg=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=YNiAtf/nxp0NJtbCaQGLI2VrUUiUBaeDLqB3ZduynhWp2LTonNfA9A/Oky/7m/dr6 tLer3bn0irCv6unTBWcy5ZWCxI9ho1Af0IYu2KDVR7zylhktrlbAuPj3VBztQwgkIR gU/ZdL/EbnYAOHEqhVRHWsh395nc++FsVQ059wU2x74iXabqDHWDT64a7tiPfiNpHZ cLibmdl4SPAcRgB6ZkanNk+fskL+DUfTI2oXaUg1COCKRr4mnzs+8/3XcWMaaC8E6Y GvlTtko2QUUgGcD/CeoByhJA9vsRYovWFsJeLPwvNiwm5JTFSvc5JDmfTrjEiS3TEX LWYtcc6X6+G6w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419701; x=1773680201; i=thierry.escande@vates.tech; bh=xkR51huuZGxHmTSzRvJUtjlM0MP/Kew4xYHp0fhpCbg=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=aDCJyBCXYWddBWvMz/tk43hGiVkQL1U5pAV1Ibh9eF+MbSUU8CpG7UFonw0PNyaLr MJP/h1AKv1Eb/f59DJfQfwwNzgqUdPexZgpdxyCHsUUzWz/50uRMfqScLxg5xAq9Rd YLC8b8BTe4f9itCS3vcrj4O59LoCNCI71rNVAaO5w26x3hBsgsdmVhSRTzGJwv03zo 1pevTZSlZQ1b0LzWXYlarkXpMQ9IaWjWcXRmDeRg4J8pQKsT4DAsu6P5oJ0YMdw2FF BK6FPTtEN5jMpom8Pr6EL2Resjc7faV1MQhjU5Ov/TXU2r9ad+Mm1Zo6D3L044IcSm ZZ3+82MzfuTNg== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2001/17]=20libacpi:=20Split=20dsdt.asl=20file=20and=20extract=20i440=20specific=20parts?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419700638 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" Message-Id: <20260313163455.790692-2-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.73f22918691e4f6590e71139c2bbb6cf?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:01 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity thierry.escande@vates.tech) (identity @mandrillapp.com) X-ZM-MESSAGEID: 1773419736005154100 Content-Type: text/plain; charset="utf-8" In order to factorize the common parts between i440 and q35 dsdt files, this patch splits dsdt.asl and put the i440 specific parts into dsdt_i400.asl. This also makes use of #include directives instead of file concatenations to build the asl files. Also, the anycpu asl files generation makes use of makefile pattern rules to avoid duplication for i440 and q35. Becuase the LPC controller BDF (which differs between i440 and q35) must be set at device declaration, it is still set in dsdt.asl by checking for a MACHINE_TYPE_I440 macro defined in dsdt_i400.asl. Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/Makefile | 2 +- tools/firmware/hvmloader/ovmf.c | 4 ++-- tools/firmware/hvmloader/seabios.c | 4 ++-- tools/firmware/hvmloader/util.c | 4 ++-- tools/firmware/hvmloader/util.h | 4 ++-- tools/libacpi/Makefile | 10 ++++----- tools/libacpi/dsdt.asl | 25 ++++----------------- tools/libacpi/dsdt_i440.asl | 36 ++++++++++++++++++++++++++++++ 8 files changed, 53 insertions(+), 36 deletions(-) create mode 100644 tools/libacpi/dsdt_i440.asl diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/M= akefile index 21de72187d..bdc33a877f 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -78,7 +78,7 @@ rombios.o: roms.inc smbios.o: CFLAGS +=3D -D__SMBIOS_DATE__=3D"\"$(SMBIOS_REL_DATE)\"" =20 ACPI_PATH =3D ../../libacpi -DSDT_FILES +=3D dsdt_anycpu_qemu_xen.c +DSDT_FILES +=3D dsdt_i440_anycpu_qemu_xen.c ACPI_OBJS =3D $(patsubst %.c,%.o,$(DSDT_FILES)) build.o static_tables.o $(ACPI_OBJS): CFLAGS +=3D -iquote . -DLIBACPI_STDUTILS=3D\"$(CURDIR)/util.= h\" CFLAGS +=3D -I$(ACPI_PATH) diff --git a/tools/firmware/hvmloader/ovmf.c b/tools/firmware/hvmloader/ovm= f.c index 23610a0717..d264a50c73 100644 --- a/tools/firmware/hvmloader/ovmf.c +++ b/tools/firmware/hvmloader/ovmf.c @@ -119,8 +119,8 @@ static void ovmf_load(const struct bios_config *config, static void ovmf_acpi_build_tables(void) { struct acpi_config config =3D { - .dsdt_anycpu =3D dsdt_anycpu_qemu_xen, - .dsdt_anycpu_len =3D dsdt_anycpu_qemu_xen_len, + .dsdt_anycpu =3D dsdt_i440_anycpu_qemu_xen, + .dsdt_anycpu_len =3D dsdt_i440_anycpu_qemu_xen_len, .dsdt_15cpu =3D NULL,=20 .dsdt_15cpu_len =3D 0 }; diff --git a/tools/firmware/hvmloader/seabios.c b/tools/firmware/hvmloader/= seabios.c index 444d118ddb..74b0406b5a 100644 --- a/tools/firmware/hvmloader/seabios.c +++ b/tools/firmware/hvmloader/seabios.c @@ -90,8 +90,8 @@ static void seabios_acpi_build_tables(void) { uint32_t rsdp =3D (uint32_t)scratch_alloc(sizeof(struct acpi_20_rsdp),= 0); struct acpi_config config =3D { - .dsdt_anycpu =3D dsdt_anycpu_qemu_xen, - .dsdt_anycpu_len =3D dsdt_anycpu_qemu_xen_len, + .dsdt_anycpu =3D dsdt_i440_anycpu_qemu_xen, + .dsdt_anycpu_len =3D dsdt_i440_anycpu_qemu_xen_len, .dsdt_15cpu =3D NULL, .dsdt_15cpu_len =3D 0, }; diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/uti= l.c index e651342681..f1ed1eb48d 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -843,8 +843,8 @@ void hvmloader_acpi_build_tables(struct acpi_config *co= nfig, s =3D xenstore_read("platform/device-model", ""); if ( !strncmp(s, "qemu_xen", 9) ) { - config->dsdt_anycpu =3D dsdt_anycpu_qemu_xen; - config->dsdt_anycpu_len =3D dsdt_anycpu_qemu_xen_len; + config->dsdt_anycpu =3D dsdt_i440_anycpu_qemu_xen; + config->dsdt_anycpu_len =3D dsdt_i440_anycpu_qemu_xen_len; config->dsdt_15cpu =3D NULL; config->dsdt_15cpu_len =3D 0; } diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/uti= l.h index 765a013ddd..3c5eeff5e7 100644 --- a/tools/firmware/hvmloader/util.h +++ b/tools/firmware/hvmloader/util.h @@ -381,8 +381,8 @@ extern struct e820map memory_map; bool check_overlap(uint64_t start, uint64_t size, uint64_t reserved_start, uint64_t reserved_size); =20 -extern const unsigned char dsdt_anycpu_qemu_xen[], dsdt_anycpu[], dsdt_15c= pu[]; -extern const int dsdt_anycpu_qemu_xen_len, dsdt_anycpu_len, dsdt_15cpu_len; +extern const unsigned char dsdt_i440_anycpu_qemu_xen[], dsdt_anycpu[], dsd= t_15cpu[]; +extern const int dsdt_i440_anycpu_qemu_xen_len, dsdt_anycpu_len, dsdt_15cp= u_len; =20 unsigned long acpi_pages_allocated(void); =20 diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile index b21a64c6b4..d3d4bc9543 100644 --- a/tools/libacpi/Makefile +++ b/tools/libacpi/Makefile @@ -11,7 +11,7 @@ endif =20 MK_DSDT =3D $(ACPI_BUILD_DIR)/mk_dsdt =20 -C_SRC-$(CONFIG_X86) =3D dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c = dsdt_pvh.c +C_SRC-$(CONFIG_X86) =3D dsdt_anycpu.c dsdt_15cpu.c dsdt_i440_anycpu_qemu_x= en.c dsdt_pvh.c C_SRC-$(CONFIG_ARM_64) =3D dsdt_anycpu_arm.c DSDT_FILES ?=3D $(C_SRC-y) C_SRC =3D $(addprefix $(ACPI_BUILD_DIR)/, $(DSDT_FILES)) @@ -39,18 +39,16 @@ $(H_SRC): $(ACPI_BUILD_DIR)/%.h: %.asl $(MK_DSDT): mk_dsdt.c $(HOSTCC) $(HOSTCFLAGS) $(MKDSDT_CFLAGS-y) $(CFLAGS_xeninclude) -D__XEN_T= OOLS__ -o $@ mk_dsdt.c =20 -$(ACPI_BUILD_DIR)/dsdt_anycpu_qemu_xen.asl: dsdt.asl dsdt_acpi_info.asl $(= MK_DSDT) +$(ACPI_BUILD_DIR)/dsdt_%_anycpu_qemu_xen.asl: dsdt_%.asl dsdt.asl dsdt_acp= i_info.asl $(MK_DSDT) # Remove last bracket awk 'NR > 1 {print s} {s=3D$$0}' $< > $@.$(TMP_SUFFIX) - cat dsdt_acpi_info.asl >> $@.$(TMP_SUFFIX) $(MK_DSDT) --debug=3D$(debug) --dm-version qemu-xen >> $@.$(TMP_SUFFIX) mv -f $@.$(TMP_SUFFIX) $@ =20 # NB. awk invocation is a portable alternative to 'head -n -1' -$(ACPI_BUILD_DIR)/dsdt_%cpu.asl: dsdt.asl dsdt_acpi_info.asl $(MK_DSDT) +$(ACPI_BUILD_DIR)/dsdt_%cpu.asl: dsdt_i440.asl dsdt.asl dsdt_acpi_info.asl= $(MK_DSDT) # Remove last bracket awk 'NR > 1 {print s} {s=3D$$0}' $< > $@.$(TMP_SUFFIX) - cat dsdt_acpi_info.asl >> $@.$(TMP_SUFFIX) $(MK_DSDT) --debug=3D$(debug) --maxcpu $* >> $@.$(TMP_SUFFIX) mv -f $@.$(TMP_SUFFIX) $@ =20 @@ -65,7 +63,7 @@ $(ACPI_BUILD_DIR)/dsdt_anycpu_arm.asl: $(MK_DSDT) mv -f $@.$(TMP_SUFFIX) $@ =20 $(C_SRC): $(ACPI_BUILD_DIR)/%.c: $(ACPI_BUILD_DIR)/%.asl - $(IASL) -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $< + $(IASL) -vs -I $(CURDIR) -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $< sed -e 's/AmlCode/$*/g' -e 's/_aml_code//g' $(ACPI_BUILD_DIR)/$*.hex > $@= .$(TMP_SUFFIX) echo "int $*_len=3Dsizeof($*);" >> $@.$(TMP_SUFFIX) mv -f $@.$(TMP_SUFFIX) $@ diff --git a/tools/libacpi/dsdt.asl b/tools/libacpi/dsdt.asl index 32b42f85ae..130826fdcc 100644 --- a/tools/libacpi/dsdt.asl +++ b/tools/libacpi/dsdt.asl @@ -5,8 +5,6 @@ * Copyright (c) 2004, Intel Corporation. */ =20 -DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0) -{ Name (\PMBS, 0x0C00) Name (\PMLN, 0x08) Name (\IOB1, 0x00) @@ -199,7 +197,10 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", = 0) =20 Device (ISA) { - Name (_ADR, 0x00010000) /* device 1, fn 0 */ + /* Error will be raised if the machine type is not defined= */ + #ifdef MACHINE_TYPE_I440 + Name (_ADR, 0x00010000) /* device 1, fn 0 */ + #endif =20 OperationRegion(PIRQ, PCI_Config, 0x60, 0x4) Scope(\) { @@ -329,23 +330,6 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", = 0) }) } =20 - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06) - IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01) - IRQNoFlags () {6} - DMA (Compatibility, NotBusMaster, Transfer8) {2} - }) - } - Device (UAR1) { Name (_HID, EisaId ("PNP0501")) @@ -444,4 +428,3 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0) Method(_PIC, 1) { Store(Arg0, PICD) } -} diff --git a/tools/libacpi/dsdt_i440.asl b/tools/libacpi/dsdt_i440.asl new file mode 100644 index 0000000000..e80c454ad9 --- /dev/null +++ b/tools/libacpi/dsdt_i440.asl @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: LGPL-2.1-only */ +/*************************************************************************= ***** + * DSDT for Xen with Qemu device model (for i440 machine) + * + * Copyright (c) 2004, Intel Corporation. + */ + +DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0) +{ + #define MACHINE_TYPE_I440 + + #include "dsdt.asl" + + Scope (\_SB.PCI0.ISA) + { + Device (FDC0) + { + Name (_HID, EisaId ("PNP0700")) + + Method (_STA, 0, NotSerialized) + { + Return (0x0F) + } + + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06) + IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01) + IRQNoFlags () {6} + DMA (Compatibility, NotBusMaster, Transfer8) {2} + }) + } + } + + #include "dsdt_acpi_info.asl" +} --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419740; cv=none; d=zohomail.com; s=zohoarc; b=cwySaxLrCZnmB56Dn2bJBqvTAXlgJR8jteO4F9Z0PkIghUneHp7L8U4kHpc54zFFkMZQn5ky4FTAwjCA6qOwBzrvk9wXZXdDO3e6rJB5fm/VIjvinIno99IdH4Z93wXS6g8oOslaBxBR2Tn7GjmuYvSQAB5Y29xDVAOYVYGzGdg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419740; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZFode1C11grIE/JKanD6R+1CjHsHBuSPqCWIftB9HSk=; b=Aj7aArN51PsJAdZ2cIrAPAJQWb3ZAtH/qr3bmpVg/45ecdIucHOU9T7QLxrsNvcoHDj4icWDf1O3SUGmvvyMjsPUyNDY5RhxvmaPF61Ox7V5rbjiRaLZD+BOEfI5i6YTQXMFS47Q4Sm6bhNsKI8i6hhGmHqXILgnJWdsCdI5eR0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419740232598.4599661653785; Fri, 13 Mar 2026 09:35:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253907.1549855 (Exim 4.92) (envelope-from ) id 1w15Tf-0006F5-ED; Fri, 13 Mar 2026 16:35:07 +0000 Received: by outflank-mailman (output) from mailman id 1253907.1549855; Fri, 13 Mar 2026 16:35:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tf-0006Ey-BI; Fri, 13 Mar 2026 16:35:07 +0000 Received: by outflank-mailman (input) for mailman id 1253907; Fri, 13 Mar 2026 16:35:06 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Te-0006Ek-1y for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:06 +0000 Received: from mail179-36.suw41.mandrillapp.com (mail179-36.suw41.mandrillapp.com [198.2.179.36]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 959554c3-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:03 +0100 (CET) Received: from pmta12.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1]) by mail179-36.suw41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT20tXpzlfcYX for ; Fri, 13 Mar 2026 16:35:02 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 3400e0b633134c63b4737acb401da8d3; Fri, 13 Mar 2026 16:35:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 959554c3-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419702; x=1773689702; bh=ZFode1C11grIE/JKanD6R+1CjHsHBuSPqCWIftB9HSk=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=fFmc8jZsv3oHWELzoOSyw3b6GGkZrB0/Dvc6ayoQWpuVXfi+25ZMr+keBZsclO34/ 1Tnw57+Qq+WzZilPFVEw8phSCQ/Ao8hlmal3vIjYcYl0IdNEi9EidRiFQl7LGR7IXQ MQsHvlv5KoER3jJllVtqgEubuC5pUTxRf/qZjvdGSv+kxSGokcFj/oX/GRYBfPPZ+J Nbi8Kn3aYorsL//OVvLG9ZIvzxJjr4h8z30Zk4mW4ZaVHGbEeu+KZYFpXRLFf8rEmg Ox3JalRM5fCABhVYDdEzwT5dnVhYhzYlJteOLguAMtdiCuzH6r0ZDSGwBmWDuZHNIE U/MJRq952W7Uw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419702; x=1773680202; i=thierry.escande@vates.tech; bh=ZFode1C11grIE/JKanD6R+1CjHsHBuSPqCWIftB9HSk=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=b4MczgNqHmRiJMLVpSOlr2OCMAYtVQVZWqBlTzi8rKRpQbwzm4zBAh3qFqJEDI/q8 DpG1dVL5ak6/PTIr6dJZP+DWHxanjVHOIPOCfMbdLiqB9prKlH/K6mS6yJwyxDeM7N F3fZ6a27RDd5nJ/AgOnNWlegpRP+iINykW8a60nzv0BVWfEVnZWnWUoJe95FUVpAiN /2zl26GcSnlXV67Eo8ji3Hk0ZeUQbMdl9CQT2aJhnWLYs0hihDSIP01zWNwE6JRqZi 9kEcoCTEsQpGZnf0hzZvCdCSzSGewsw3g7qMuZAqeenV8CDes2XjR1A+0C/LI1xre5 uYhC0x9/8cNRg== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2002/17]=20libacpi:=20new=20DSDT=20ACPI=20table=20for=20Q35?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419700964 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-3-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.3400e0b633134c63b4737acb401da8d3?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:02 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419742225158500 Content-Type: text/plain; charset="utf-8" This patch adds the DSDT table for Q35 (new tools/libacpi/dsdt_q35.asl file). It only contains the specific Q35 parts that differ from i440). At the moment, these are: - BDF location of LPC Controller - Minor changes related to FDC detection - Addition of _OSC method to inform OSPM about PCIe features supported As we are still using 4 PCI router links and their corresponding device/register addresses are same (offset 0x60), no need to change PCI routing descriptions. Note that '15cpu' ACPI tables are only applicable to qemu-traditional (which have no support for Q35), so we need to use 'anycpu' version only. Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/Makefile | 2 +- tools/libacpi/Makefile | 2 +- tools/libacpi/dsdt.asl | 3 + tools/libacpi/dsdt_q35.asl | 130 ++++++++++++++++++++++++++++++ 4 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 tools/libacpi/dsdt_q35.asl diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/M= akefile index bdc33a877f..99f045efaa 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -78,7 +78,7 @@ rombios.o: roms.inc smbios.o: CFLAGS +=3D -D__SMBIOS_DATE__=3D"\"$(SMBIOS_REL_DATE)\"" =20 ACPI_PATH =3D ../../libacpi -DSDT_FILES +=3D dsdt_i440_anycpu_qemu_xen.c +DSDT_FILES +=3D dsdt_i440_anycpu_qemu_xen.c dsdt_q35_anycpu_qemu_xen.c ACPI_OBJS =3D $(patsubst %.c,%.o,$(DSDT_FILES)) build.o static_tables.o $(ACPI_OBJS): CFLAGS +=3D -iquote . -DLIBACPI_STDUTILS=3D\"$(CURDIR)/util.= h\" CFLAGS +=3D -I$(ACPI_PATH) diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile index d3d4bc9543..e6c4a3fd8b 100644 --- a/tools/libacpi/Makefile +++ b/tools/libacpi/Makefile @@ -11,7 +11,7 @@ endif =20 MK_DSDT =3D $(ACPI_BUILD_DIR)/mk_dsdt =20 -C_SRC-$(CONFIG_X86) =3D dsdt_anycpu.c dsdt_15cpu.c dsdt_i440_anycpu_qemu_x= en.c dsdt_pvh.c +C_SRC-$(CONFIG_X86) =3D dsdt_anycpu.c dsdt_15cpu.c dsdt_i440_anycpu_qemu_x= en.c dsdt_q35_anycpu_qemu_xen.c dsdt_pvh.c C_SRC-$(CONFIG_ARM_64) =3D dsdt_anycpu_arm.c DSDT_FILES ?=3D $(C_SRC-y) C_SRC =3D $(addprefix $(ACPI_BUILD_DIR)/, $(DSDT_FILES)) diff --git a/tools/libacpi/dsdt.asl b/tools/libacpi/dsdt.asl index 130826fdcc..dc764881c9 100644 --- a/tools/libacpi/dsdt.asl +++ b/tools/libacpi/dsdt.asl @@ -201,6 +201,9 @@ #ifdef MACHINE_TYPE_I440 Name (_ADR, 0x00010000) /* device 1, fn 0 */ #endif + #ifdef MACHINE_TYPE_Q35 + Name (_ADR, 0x001f0000) /* device 31, fn 0 */ + #endif =20 OperationRegion(PIRQ, PCI_Config, 0x60, 0x4) Scope(\) { diff --git a/tools/libacpi/dsdt_q35.asl b/tools/libacpi/dsdt_q35.asl new file mode 100644 index 0000000000..7cefe63506 --- /dev/null +++ b/tools/libacpi/dsdt_q35.asl @@ -0,0 +1,130 @@ +/* SPDX-License-Identifier: LGPL-2.1-only */ +/*************************************************************************= ***** + * DSDT for Xen with Qemu device model (for Q35 machine) + */ + +DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0) +{ + #define MACHINE_TYPE_Q35 + + #include "dsdt.asl" + + Scope (\_SB.PCI0) + { + /* _OSC, modified from ASL sample in ACPI spec */ + Name (SUPP, 0) /* PCI _OSC Support Field value */ + Name (CTRL, 0) /* PCI _OSC Control Field value */ + Method (_OSC, 4) { + /* Create DWORD-addressable fields from the Capabilities Buffer= */ + CreateDWordField (Arg3, 0, CDW1) + + /* Switch by UUID. + * Only PCI Host Bridge Device capabilities UUID used for now + */ + If (LEqual (Arg0, ToUUID ("33DB4D5B-1FF7-401C-9657-7441C03DD766= "))) { + /* Create DWORD-addressable fields from the Capabilities Bu= ffer */ + CreateDWordField (Arg3, 4, CDW2) + CreateDWordField (Arg3, 8, CDW3) + + /* Save Capabilities DWORD2 & 3 */ + Store (CDW2, SUPP) + Store (CDW3, CTRL) + + /* Validate Revision DWORD */ + If (LNotEqual (Arg1, One)) { + /* Unknown revision */ + /* Support and Control DWORDs will be returned anyway */ + Or (CDW1, 0x08, CDW1) + } + + /* Control field bits are: + * bit 0 PCI Express Native Hot Plug control + * bit 1 SHPC Native Hot Plug control + * bit 2 PCI Express Native Power Management Events cont= rol + * bit 3 PCI Express Advanced Error Reporting control + * bit 4 PCI Express Capability Structure control + */ + + /* Always allow native PME, AER (no dependencies) + * Never allow SHPC (no SHPC controller in this system) + * Do not allow PCIe Capability Structure control for now + * Also, ACPI hotplug is used for now instead of PCIe + * Native Hot Plug + */ + And (CTRL, 0x0C, CTRL) + + If (LNotEqual (CDW3, CTRL)) { + /* Some of Capabilities bits were masked */ + Or (CDW1, 0x10, CDW1) + } + /* Update DWORD3 in the buffer */ + Store (CTRL, CDW3) + } Else { + Or (CDW1, 4, CDW1) /* Unrecognized UUID */ + } + Return (Arg3) + } + /* end of _OSC */ + } + + /**************************************************************** + * LPC ISA bridge + ****************************************************************/ + + Scope (\_SB.PCI0.ISA) + { + /* + LPC ISA bridge + + PCI Interrupt Routing Register 2 (PIRQE..PIRQH) cannot be + used because of existing Xen IRQ limitations (4 PCI links + only) + */ + + /* LPC_I/O: I/O Decode Ranges Register */ + OperationRegion (LPCD, PCI_Config, 0x80, 0x2) + Field (LPCD, AnyAcc, NoLock, Preserve) { + COMA, 3, + , 1, + COMB, 3, + + Offset(0x01), + LPTD, 2, + , 2, + FDCD, 2 + } + + /* LPC_EN: LPC I/F Enables Register */ + OperationRegion(LPCE, PCI_Config, 0x82, 0x2) + Field(LPCE, AnyAcc, NoLock, Preserve) { + CAEN, 1, + CBEN, 1, + LPEN, 1, + FDEN, 1 + } + + Device (FDC0) + { + Name (_HID, EisaId ("PNP0700")) + Method (_STA, 0, NotSerialized) + { + Store (FDEN, Local0) + If (LEqual (Local0, 0)) { + Return (0x00) + } Else { + Return (0x0F) + } + } + + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04) + IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01) + IRQNoFlags () {6} + DMA (Compatibility, NotBusMaster, Transfer8) {2} + }) + } + } + + #include "dsdt_acpi_info.asl" +} --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419736; cv=none; d=zohomail.com; s=zohoarc; b=jDxZit+BMmkghTwAA3cpGQazhSEb4K018ttB0xWRFTwDN/oFFv0VQR9GA1BeNBz92wZKPDKSN5OxIjs5hqB2cOyYsyCuu/AqkbENGiSmXPB4bqkCBq+Pim213YNQ+p3EwtDcIcxpHbEwKHOtQXqntiXAPiEeudNVc23YRnhopzQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419736; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EZV6VZwcVdA/V+iWTxOZ0DDZfDnD1N74CpP85tJ1xcs=; b=fFsO6A+cJAV95KYA3uDPG/tQKVWYkN+8TGRU0Kjo8B/e+Mjy+xrwNGg4zAifKlqQtFUIB7rNZLlU5NSQtuGeuSUaz1MDvwvO6R7DBaf0/MglHVOIzFqRI7HXKqmu+ijJFS3Mr03kggsBLbu7THgHbsP8v3C8fFhqQO2UfY+5bbc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419736675586.3850313729572; Fri, 13 Mar 2026 09:35:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253911.1549883 (Exim 4.92) (envelope-from ) id 1w15Th-0006q8-NM; Fri, 13 Mar 2026 16:35:09 +0000 Received: by outflank-mailman (output) from mailman id 1253911.1549883; Fri, 13 Mar 2026 16:35:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Th-0006oJ-GI; Fri, 13 Mar 2026 16:35:09 +0000 Received: by outflank-mailman (input) for mailman id 1253911; Fri, 13 Mar 2026 16:35:08 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tg-0006Ek-My for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:08 +0000 Received: from mail136-12.atl41.mandrillapp.com (mail136-12.atl41.mandrillapp.com [198.2.136.12]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 95a21f94-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:03 +0100 (CET) Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail136-12.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT21jsdz5QmHBy for ; Fri, 13 Mar 2026 16:35:02 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id a80daf2a6a5d488eb90b6254a9f1b77a; Fri, 13 Mar 2026 16:35:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 95a21f94-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419702; x=1773689702; bh=EZV6VZwcVdA/V+iWTxOZ0DDZfDnD1N74CpP85tJ1xcs=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=nBTvzgCXtgVPKD443WZh7ijLbsZv+RQ2NglOoLl/d7+/UWjEAbZvpov+QeZGj6Ntj lXsGfAhgbRxLhvQwYTe2fDXufxeOb1hmUGVZTmTmmrAiRmSrt6zNeUwjzKzEx4x3Oc NP7uhuW5V5iVrmGb1fiZAMS+uEq5Kbaf144Owtp3HMaIP20Sqh3HvcstJEGO0YdSxX XdRWmu81ZJfND1bzTQFIJO046ZeGpSGVFC0wYAUaI0PwH5OgQK0SbBg3iQ8gQD2q3/ MVzNKU/7V54hIa2nOrPbTagqOikmp9ro8C9duSAkJxEg89QRmOug5forCLuWOwKBFv 5308YFMqwVK2g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419702; x=1773680202; i=thierry.escande@vates.tech; bh=EZV6VZwcVdA/V+iWTxOZ0DDZfDnD1N74CpP85tJ1xcs=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=Jg01yOHajDuGeiFFDGKRfwE1G1TxOV9qEttlhxL4WQfH0W5HO1giUTnCYHNBRIHBU yIfpSa1SK21cU/52PhYIAzc5HKt6Ukw4t5QIDUelOPeSXEa6m/44A6bg429fXLnqE7 CK+1ZSORo2VFCmP+silLs5/2G0qD8gGhDeHJ4jC7F7QKje/Dp3J9hsmBd1fqDywi+T BDsJt7lYDobAyvzmaO970S5tLsSne+J41DB8HMzl5gii7rJG7KZuH0Hwh3SK+CsQfN DrYuZNPAQTpTfuAg+UmFWvuSLa2vSXVkPd/70vfKW1enQSxwne7K3/D+NdIoa4XeLR Y7PTIfAhvIjvw== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2003/17]=20hvmloader:=20add=20function=20to=20set=20the=20emulated=20machine=20type=20(i440/Q35)?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419701312 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-4-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.a80daf2a6a5d488eb90b6254a9f1b77a?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:02 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity thierry.escande@vates.tech) (identity @mandrillapp.com) X-ZM-MESSAGEID: 1773419738151158500 Content-Type: text/plain; charset="utf-8" This adds a new function init_pc_machine_type() which allows to determine and set the emulated chipset type. Possible values are MACHINE_TYPE_I440 and MACHINE_TYPE_Q35 and stored in the global variable machine_type. The machine_type variable will be used from multiple places in following commits. Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/hvmloader.c | 2 ++ tools/firmware/hvmloader/pci_regs.h | 4 +++ tools/firmware/hvmloader/util.c | 42 ++++++++++++++++++++++++++++ tools/firmware/hvmloader/util.h | 11 ++++++++ 4 files changed, 59 insertions(+) diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloade= r/hvmloader.c index 6d23150fc9..626cc53649 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -332,6 +332,8 @@ int main(void) =20 init_hypercalls(); =20 + init_pc_machine_type(); + memory_map_setup(); =20 xenbus_setup(); diff --git a/tools/firmware/hvmloader/pci_regs.h b/tools/firmware/hvmloader= /pci_regs.h index 7bf2d873ab..4d4dc0cd01 100644 --- a/tools/firmware/hvmloader/pci_regs.h +++ b/tools/firmware/hvmloader/pci_regs.h @@ -107,6 +107,10 @@ =20 #define PCI_INTEL_OPREGION 0xfc /* 4 bits */ =20 +#define PCI_VENDOR_ID_INTEL 0x8086 +#define PCI_DEVICE_ID_INTEL_82441 0x1237 +#define PCI_DEVICE_ID_INTEL_Q35_MCH 0x29c0 + #endif /* __HVMLOADER_PCI_REGS_H__ */ =20 /* diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/uti= l.c index f1ed1eb48d..f9116bea4d 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -22,6 +22,7 @@ #include "hypercall.h" #include "ctype.h" #include "vnuma.h" +#include "pci_regs.h" #include #include #include @@ -648,6 +649,47 @@ void __bug(const char *file, int line) crash(); } =20 +machine_type_t machine_type; + +void init_pc_machine_type(void) +{ + uint16_t vendor_id; + uint16_t device_id; + + if ( machine_type !=3D MACHINE_TYPE_UNDEFINED ) + return; + + vendor_id =3D pci_readw(0, PCI_VENDOR_ID); + device_id =3D pci_readw(0, PCI_DEVICE_ID); + + /* only Intel platforms are emulated currently */ + if ( vendor_id !=3D PCI_VENDOR_ID_INTEL ) + goto error; + + switch ( device_id ) + { + case PCI_DEVICE_ID_INTEL_82441: + machine_type =3D MACHINE_TYPE_I440; + printf("Detected i440 chipset\n"); + break; + + case PCI_DEVICE_ID_INTEL_Q35_MCH: + machine_type =3D MACHINE_TYPE_Q35; + printf("Detected Q35 chipset\n"); + break; + + default: + goto error; + } + + return; + +error: + printf("Unknown emulated chipset encountered, VID=3D%04Xh, DID=3D%04Xh= \n", + vendor_id, device_id); + BUG(); +} + static void validate_hvm_info(struct hvm_info_table *t) { uint8_t *ptr =3D (uint8_t *)t; diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/uti= l.h index 3c5eeff5e7..2f37504aca 100644 --- a/tools/firmware/hvmloader/util.h +++ b/tools/firmware/hvmloader/util.h @@ -170,6 +170,17 @@ void pci_write(uint32_t devfn, uint32_t reg, uint32_t = len, uint32_t val); #define pci_writew(devfn, reg, val) pci_write(devfn, reg, 2, (uint16_t)(va= l)) #define pci_writel(devfn, reg, val) pci_write(devfn, reg, 4, (uint32_t)(va= l)) =20 +/* Emulated machine types */ +typedef enum { + MACHINE_TYPE_UNDEFINED =3D 0, + MACHINE_TYPE_I440, + MACHINE_TYPE_Q35, +} machine_type_t; + +extern machine_type_t machine_type; + +void init_pc_machine_type(void); + /* Get a pointer to the shared-info page */ struct shared_info *get_shared_info(void) __attribute__ ((const)); =20 --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419735; cv=none; d=zohomail.com; s=zohoarc; b=gdQO4ilJ73GMlVa4BKLirtvsN28ylraD8pYeLMij6JPkO4rJAPYefLwJDxQez+VY7MwgYDlhfelwAebM9iOhs1gNRWNEHWJtLLkXfTB1MDf/BFj59heSH1xtBN12uKzJ22PD5aU99Inh+W/SJZyTD/aBPD+OFn+cOS2KdwR0XAI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419735; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=peVzH/RSknOHNSKTQdaYXevRTD3ymuxiEuHEUoR9BgM=; b=Bn13N7WeWWkwIaLuHPzFZH4erjxG+gTaQ7Ir39+e/EdInnlAuHPJe7TCnCmp0yR9NMxm1sQQyv1YPqsty3OLtwr6v+heKxSLO4CncKxfJpB8GL7OZ05DFlXyf1qO8fsUGlq9Bk+zdjrS6KDS4fcqd1ff0pTw4N6dROeAcpH77jo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177341973584764.89818124896658; Fri, 13 Mar 2026 09:35:35 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253919.1549958 (Exim 4.92) (envelope-from ) id 1w15Tp-0000VB-AP; Fri, 13 Mar 2026 16:35:17 +0000 Received: by outflank-mailman (output) from mailman id 1253919.1549958; Fri, 13 Mar 2026 16:35:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tp-0000TO-2B; Fri, 13 Mar 2026 16:35:17 +0000 Received: by outflank-mailman (input) for mailman id 1253919; Fri, 13 Mar 2026 16:35:14 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tm-0006Ek-Nl for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:14 +0000 Received: from mail179-36.suw41.mandrillapp.com (mail179-36.suw41.mandrillapp.com [198.2.179.36]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 98d2f523-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:08 +0100 (CET) Received: from pmta12.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1]) by mail179-36.suw41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT53gDVzlfjbT for ; Fri, 13 Mar 2026 16:35:05 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 27f9226dc476489280796f4f05794d27; Fri, 13 Mar 2026 16:35:05 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 98d2f523-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419705; x=1773689705; bh=peVzH/RSknOHNSKTQdaYXevRTD3ymuxiEuHEUoR9BgM=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=E4iTtJ8OJ+U52Jcmqe6F4/4D2tExf3Njg8tyNOGH/opfEnDxh4V3DdqBHFlkE2BkT LNYjx8uVG2RpsNDlUdo6RktLw3fuNAZlP7nkOPh2vnMIJFJo3BoLlkI271XT+iovI4 oCP8cbVbTTVMNS68tAfUPjPjkZh8/3NWoJj+bGnfGOsrBnXalIyP7RucDl18QeCpf6 JQ5dMlNeIVaxbWXBrK5Dqjl/8xEfXab206rcNjXzuv82YpKAFBgkktTNEAdB+KAq9V KLLpSnwv+mMAFWIAyjV0J7lRFp0KidcGh0+B/F1mLIM0HBp94ZoSNzDBizIQNOZdLT zpD/7qWCutmZQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419705; x=1773680205; i=thierry.escande@vates.tech; bh=peVzH/RSknOHNSKTQdaYXevRTD3ymuxiEuHEUoR9BgM=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=IAG8VVPYvK2e73qkhrFw4a55QbxAeF4tgwa1P3vkuEuENpJbMTUKozO2PM2rHpPWe NtNq6i8c/u1K4AvnIrMwYrlM5IeZCfkw+I5plnttlBYUfwPzs9UJ5/vonOUBG9/Hbn 84tP8B+6d/sz7oPhyTK1yR0cypIQ8M4pfuKl719qIhIEuQAIihJlB6IDMQI5pTte8q ayILS8tgVK9exOEJ9E5vc0m2vqOeVHSDpkjaTp2uBzankU3oqKN9smZ+yS17x0cNcX Pyl6zjDo8lB1hwBs4wtKmPHaoTItPAP55A/gMmQMAccVlyxVPHCeHud6AgBG09O6zS JFF3QHCCPpK5w== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2004/17]=20hvmloader:=20add=20ACPI=20enabling=20for=20Q35?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419701560 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-5-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.27f9226dc476489280796f4f05794d27?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:05 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419736092158500 Content-Type: text/plain; charset="utf-8" In order to turn on ACPI for OS, we need to write a chipset-specific value to SMI_CMD register (sort of imitation of the APM->ACPI switch on real systems). Modify acpi_enable_sci() function to support both i440 and Q35 emulation. Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/hvmloader.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloade= r/hvmloader.c index 626cc53649..f6cc3fa4b9 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -258,9 +258,24 @@ static const struct bios_config *detect_bios(void) static void acpi_enable_sci(void) { uint8_t pm1a_cnt_val; + uint8_t acpi_enable_val; =20 -#define PIIX4_SMI_CMD_IOPORT 0xb2 +#define SMI_CMD_IOPORT 0xb2 #define PIIX4_ACPI_ENABLE 0xf1 +#define ICH9_ACPI_ENABLE 0x02 + + switch ( machine_type ) + { + case MACHINE_TYPE_Q35: + acpi_enable_val =3D ICH9_ACPI_ENABLE; + break; + case MACHINE_TYPE_I440: + acpi_enable_val =3D PIIX4_ACPI_ENABLE; + break; + default: + /* Not likely to happen */ + BUG(); + } =20 /* * PIIX4 emulation in QEMU has SCI_EN=3D0 by default. We have no legacy @@ -268,7 +283,7 @@ static void acpi_enable_sci(void) */ pm1a_cnt_val =3D inb(ACPI_PM1A_CNT_BLK_ADDRESS_V1); if ( !(pm1a_cnt_val & ACPI_PM1C_SCI_EN) ) - outb(PIIX4_SMI_CMD_IOPORT, PIIX4_ACPI_ENABLE); + outb(SMI_CMD_IOPORT, acpi_enable_val); =20 pm1a_cnt_val =3D inb(ACPI_PM1A_CNT_BLK_ADDRESS_V1); BUG_ON(!(pm1a_cnt_val & ACPI_PM1C_SCI_EN)); --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419730; cv=none; d=zohomail.com; s=zohoarc; b=cqq5qp1+klWbuwIDRPSVspKaKLbK8yCta1zS6OIuI8igmNSmWVcibhRp7U9HMZj1mmbHwlgH/dYjZmaP5UHz5+ilvBRilB2WyvZsFoFkhwf8vg3HIUn6bB6Ysp6pEuO/63ahkxolO1MqH1La5KHiY8uxULd7WuXiwVtYOPy8Z9c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419730; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JfHFYvtudm5KF8F0VORCJcQt4zo5UBXTcc/C8TzmeOA=; b=HE6TgEWZPlJNNrH8XJB6lP+7i6U0soLhaQyu2txTvbTZc6MHG4VEpVQf1oI7O3nWz0oY5HMW8Wx+jeVSEwQhXM0BTTltz/v87E1EfuEx/Y+dw7+H4Svyogz02xJFbxkX1PKGYiQfceEM0+AbLbwz+WHTLbST1rm8wGQqGItDtbA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 17734197305881016.4860434334757; Fri, 13 Mar 2026 09:35:30 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253909.1549874 (Exim 4.92) (envelope-from ) id 1w15Th-0006fY-10; Fri, 13 Mar 2026 16:35:09 +0000 Received: by outflank-mailman (output) from mailman id 1253909.1549874; Fri, 13 Mar 2026 16:35:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tg-0006fR-TW; Fri, 13 Mar 2026 16:35:08 +0000 Received: by outflank-mailman (input) for mailman id 1253909; Fri, 13 Mar 2026 16:35:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tf-0006Ek-Mo for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:07 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 95fd48a8-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:03 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT26z4fzPm0Tfk for ; Fri, 13 Mar 2026 16:35:02 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 67f6cedc721c42edbf171055fee92f62; Fri, 13 Mar 2026 16:35:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 95fd48a8-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419703; x=1773689703; bh=JfHFYvtudm5KF8F0VORCJcQt4zo5UBXTcc/C8TzmeOA=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=Cr7ix8mpoVVF1RvAhtUe+IUrYgBDRBNVWvATBUdkAJ2uY6+EBxGn1JyzvK2jr/hK0 +2FzWg9tElDWxwwrdRNVOYCacTF3/82Jr1yYNtVciklRlwa76WKeuMfgOH35LAnsfR kJZUYEIppgxM8XI1W2ONvjARsMfksjiZ6yj/7FKz2Jvr62mXAsbpgf+t6OA4a1AZea tG9ubT5uxIPHTlM6yFCZtq+EiDTSqNgxx7i5EBdX2pKNaSOUuDRZvP1pfGPO6gdqNB PDkBzqYxCtPkwPXi8c/+HvBrAezSR07XaiAHoEr7qKfpqkziTqNDEhhMqku2etTE78 jRZP6fZdIFBfA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419703; x=1773680203; i=thierry.escande@vates.tech; bh=JfHFYvtudm5KF8F0VORCJcQt4zo5UBXTcc/C8TzmeOA=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=VJqFJtu2xGYuVcLOW7Apox2ntOVpWsXdMGjhm68+C5UgmO5mOaBcuv3T0zQZR55gc yPFw+iutjQLdj4RnAMKg2UHJlCj8QlPVXMG8eTqeU77Qz0CPBYIGC6qZWEI1493Uit wH/nKlGTZIS0Gwr6uKAtcP1/fDpdOSiOxR+wCV06PEFufh6galoubakN6LrigCxmU9 DtxBSMegYH4bSHnqwUkOdTMHc6YSIUhNB84cFFpWkjravbnWHjzIQCC0pun01LF9YE xNjUgRrPw0l5C0C0yXIyG8AgkgUMQvYOI8+kcmuuVe1Kxyt4GRTZhNUvRBJ6ysacMv 2a1rsCMbBZZGQ== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2005/17]=20hvmloader:=20add=20Q35=20DSDT=20table=20loading?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419701817 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-6-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.67f6cedc721c42edbf171055fee92f62?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:02 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419732219154100 Content-Type: text/plain; charset="utf-8" This patch allows to select Q35 DSDT table in the function hvmloader_acpi_build_tables(). The machine_type global variable is used to select a proper table (i440/q35). As we are bound to the qemu-xen device model for Q35, there is no need to initialize config->dsdt_15cpu/config->dsdt_15cpu_len fields. Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/util.c | 17 +++++++++++++++-- tools/firmware/hvmloader/util.h | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/uti= l.c index f9116bea4d..45519ea583 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -885,8 +885,21 @@ void hvmloader_acpi_build_tables(struct acpi_config *c= onfig, s =3D xenstore_read("platform/device-model", ""); if ( !strncmp(s, "qemu_xen", 9) ) { - config->dsdt_anycpu =3D dsdt_i440_anycpu_qemu_xen; - config->dsdt_anycpu_len =3D dsdt_i440_anycpu_qemu_xen_len; + switch ( machine_type ) + { + case MACHINE_TYPE_Q35: + config->dsdt_anycpu =3D dsdt_q35_anycpu_qemu_xen; + config->dsdt_anycpu_len =3D dsdt_q35_anycpu_qemu_xen_len; + break; + case MACHINE_TYPE_I440: + config->dsdt_anycpu =3D dsdt_i440_anycpu_qemu_xen; + config->dsdt_anycpu_len =3D dsdt_i440_anycpu_qemu_xen_len; + break; + default: + /* Not likely to happen */ + BUG(); + } + config->dsdt_15cpu =3D NULL; config->dsdt_15cpu_len =3D 0; } diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/uti= l.h index 2f37504aca..4641ca0c46 100644 --- a/tools/firmware/hvmloader/util.h +++ b/tools/firmware/hvmloader/util.h @@ -393,7 +393,9 @@ bool check_overlap(uint64_t start, uint64_t size, uint64_t reserved_start, uint64_t reserved_size); =20 extern const unsigned char dsdt_i440_anycpu_qemu_xen[], dsdt_anycpu[], dsd= t_15cpu[]; +extern const unsigned char dsdt_q35_anycpu_qemu_xen[]; extern const int dsdt_i440_anycpu_qemu_xen_len, dsdt_anycpu_len, dsdt_15cp= u_len; +extern const int dsdt_q35_anycpu_qemu_xen_len; =20 unsigned long acpi_pages_allocated(void); =20 --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419736; cv=none; d=zohomail.com; s=zohoarc; b=U4rkBja4ln5t5gL61CxOnfJs+CUrHmJSpFbNv2N75yuAB2X8IeOOTQboYv/0WodxvzPyvBSSwV3AlyISTLhwz7heXyXflCAVHnYEqpgwZOULXtLh0K4DEmByhZrlz6th8e7xv6vZHWQL2+VFON4IpaHm1GWFo386qLgh76WvZBc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419736; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qbZoeBv8SgU3eWXReXQKgYvL+qyJ7a3Zk9GQ6xJBpd4=; b=ZJuN83OkbYz1mA9NIX+qvdPvc4+Hm58uZIDfilDx2xqXqZptZJlKNXRf/bH0NerICob8ecrQPuqBTLdSszV27DYXlWkN/5zB2dqjN/C36ulFZ88cQDmQFfk0i1z6yYguoYQzb0jDaoQ6eOHyeDvK5vEvhs5aTu3u6OKnVdydLsg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419736050606.4857005638313; Fri, 13 Mar 2026 09:35:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253913.1549907 (Exim 4.92) (envelope-from ) id 1w15Tj-0007Pr-Ii; Fri, 13 Mar 2026 16:35:11 +0000 Received: by outflank-mailman (output) from mailman id 1253913.1549907; Fri, 13 Mar 2026 16:35:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tj-0007PE-B4; Fri, 13 Mar 2026 16:35:11 +0000 Received: by outflank-mailman (input) for mailman id 1253913; Fri, 13 Mar 2026 16:35:09 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Th-0006Ek-N8 for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:09 +0000 Received: from mail136-12.atl41.mandrillapp.com (mail136-12.atl41.mandrillapp.com [198.2.136.12]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 95ec48ac-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:03 +0100 (CET) Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail136-12.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT26G1Rz5QlqMM for ; Fri, 13 Mar 2026 16:35:02 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id be292d3c77f841e39b0ebfacbd36f6a1; Fri, 13 Mar 2026 16:35:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 95ec48ac-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419702; x=1773689702; bh=qbZoeBv8SgU3eWXReXQKgYvL+qyJ7a3Zk9GQ6xJBpd4=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=0WwwoKl5Gg/CHOMM9d7EBMCDk3yE9YP2PwHUU/ZBrkTr2630+XXSVWVUBX7YopKAi 7QWFjfczxzdDo+dRgdrGELUxF2+zLVX4e6SR+yvn3QV0Q/4/E95WeM+MKT4hdLrncw Y9hDbSx6Q06xmMPVcPzXsYpX5oHXck2MNScbg7KE2iJKc2+amV/GiuCcWrODLQcv8x rFbs8QC3QuEv+krEK7IWf9VzsEeWbCNao77K1SqEOhCDfqDrkR0ydIhhJdWR8G3G7G +sE4Uugh21fnsC5JbU0zEyB4xDOfC2TYZ5dMBV8Slxn8uAN63mwuz1xsy+Nqqx1tGB sOvO6ESEVnSRA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419702; x=1773680202; i=thierry.escande@vates.tech; bh=qbZoeBv8SgU3eWXReXQKgYvL+qyJ7a3Zk9GQ6xJBpd4=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=l9mt3IbMuetvw+obqEF3dVhNccAKFpxQjr7taWJQFUEetrltAOyhs8jY1wheecsmw TsbETwCC+GBgtDNako0VEMJV0DaGIFRgaWf/hd54SjqfBWwwt8DwpU67XMZ9s2iA+A x32KWc7RTkIdrpVIW3mRnSVNkU/cnrfETtA4cGPOXlNF2os0Sn6Gy258SYjYfdzZuN VUBwSkhXM4s4L9MuX25ZYy2eWgXophPT7TFUjwD10sJ3gmh1J65euyzCn8MhwgxnqK Ym5G7rl/UUP9c5AZA0wvXyYPGnaHwXRHnhii5SVv3RaeOQKmHFRiG7MSFBLxFTyTZN p/4gxWcpgI2tg== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2006/17]=20hvmloader:=20Move=20pci=20devices=20setup=20to=20a=20separate=20function?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419702054 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" Message-Id: <20260313163455.790692-7-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.be292d3c77f841e39b0ebfacbd36f6a1?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:02 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419738055154100 Content-Type: text/plain; charset="utf-8" For readability and code simplification, this patch moves PCI-device specific initializations out of the pci_setup() function to a new function class_specific_pci_device_setup(). Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/pci.c | 117 +++++++++++++++------------- tools/firmware/hvmloader/pci_regs.h | 4 + 2 files changed, 68 insertions(+), 53 deletions(-) diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c index c41c8d946a..a76d051bdf 100644 --- a/tools/firmware/hvmloader/pci.c +++ b/tools/firmware/hvmloader/pci.c @@ -84,12 +84,71 @@ static int find_next_rmrr(uint32_t base) return next_rmrr; } =20 +static void class_specific_pci_device_setup(uint16_t vendor_id, + uint16_t device_id, + uint16_t class, + uint8_t bus, + uint8_t devfn, uint8_t *vga_de= vfn) +{ + switch ( class ) + { + case PCI_CLASS_DISPLAY_VGA: + /* If emulated VGA is found, preserve it as primary VGA. */ + if ( (vendor_id =3D=3D 0x1234) && (device_id =3D=3D 0x1111) ) + { + *vga_devfn =3D devfn; + virtual_vga =3D VGA_std; + } + else if ( (vendor_id =3D=3D 0x1013) && (device_id =3D=3D 0xb8) ) + { + *vga_devfn =3D devfn; + virtual_vga =3D VGA_cirrus; + } + else if ( virtual_vga =3D=3D VGA_none ) + { + *vga_devfn =3D devfn; + virtual_vga =3D VGA_pt; + if ( vendor_id =3D=3D 0x8086 ) + { + igd_opregion_pgbase =3D mem_hole_alloc(IGD_OPREGION_PAGES); + /* + * Write the the OpRegion offset to give the opregion + * address to the device model. The device model will trap + * and map the OpRegion at the give address. + */ + pci_writel(*vga_devfn, PCI_INTEL_OPREGION, + igd_opregion_pgbase << PAGE_SHIFT); + } + } + break; + case PCI_CLASS_BRIDGE_OTHER: + /* PIIX4 ACPI PM. Special device with special PCI config space. */ + ASSERT((vendor_id =3D=3D 0x8086) && (device_id =3D=3D 0x7113)); + pci_writew(devfn, 0x20, 0x0000); /* No smb bus IO enable */ + pci_writew(devfn, 0xd2, 0x0000); /* No smb bus IO enable */ + pci_writew(devfn, 0x22, 0x0000); + pci_writew(devfn, 0x3c, 0x0009); /* Hardcoded IRQ9 */ + pci_writew(devfn, 0x3d, 0x0001); + pci_writel(devfn, 0x40, ACPI_PM1A_EVT_BLK_ADDRESS_V1 | 1); + pci_writeb(devfn, 0x80, 0x01); /* enable PM io space */ + break; + case PCI_CLASS_STORAGE_IDE: + if ( vendor_id =3D=3D 0x8086 ) + { + /* Intel ICHs since PIIX3: enable IDE legacy mode. */ + pci_writew(devfn, 0x40, 0x8000); /* enable IDE0 */ + pci_writew(devfn, 0x42, 0x8000); /* enable IDE1 */ + } + break; + } +} + void pci_setup(void) { uint8_t is_64bar, using_64bar, bar64_relocate =3D 0; uint32_t devfn, bar_reg, cmd, bar_data, bar_data_upper; uint64_t base, bar_sz, bar_sz_upper, mmio_total =3D 0; - uint32_t vga_devfn =3D 256; + uint8_t vga_devfn =3D 0xff; uint16_t class, vendor_id, device_id; unsigned int bar, pin, link, isa_irq; uint8_t pci_devfn_decode_type[256] =3D {}; @@ -170,57 +229,9 @@ void pci_setup(void) ASSERT((devfn !=3D PCI_ISA_DEVFN) || ((vendor_id =3D=3D 0x8086) && (device_id =3D=3D 0x7000))); =20 - switch ( class ) - { - case 0x0300: - /* If emulated VGA is found, preserve it as primary VGA. */ - if ( (vendor_id =3D=3D 0x1234) && (device_id =3D=3D 0x1111) ) - { - vga_devfn =3D devfn; - virtual_vga =3D VGA_std; - } - else if ( (vendor_id =3D=3D 0x1013) && (device_id =3D=3D 0xb8)= ) - { - vga_devfn =3D devfn; - virtual_vga =3D VGA_cirrus; - } - else if ( virtual_vga =3D=3D VGA_none ) - { - vga_devfn =3D devfn; - virtual_vga =3D VGA_pt; - if ( vendor_id =3D=3D 0x8086 ) - { - igd_opregion_pgbase =3D mem_hole_alloc(IGD_OPREGION_PA= GES); - /* - * Write the the OpRegion offset to give the opregion - * address to the device model. The device model will = trap=20 - * and map the OpRegion at the give address. - */ - pci_writel(vga_devfn, PCI_INTEL_OPREGION, - igd_opregion_pgbase << PAGE_SHIFT); - } - } - break; - case 0x0680: - /* PIIX4 ACPI PM. Special device with special PCI config space= . */ - ASSERT((vendor_id =3D=3D 0x8086) && (device_id =3D=3D 0x7113)); - pci_writew(devfn, 0x20, 0x0000); /* No smb bus IO enable */ - pci_writew(devfn, 0xd2, 0x0000); /* No smb bus IO enable */ - pci_writew(devfn, 0x22, 0x0000); - pci_writew(devfn, 0x3c, 0x0009); /* Hardcoded IRQ9 */ - pci_writew(devfn, 0x3d, 0x0001); - pci_writel(devfn, 0x40, ACPI_PM1A_EVT_BLK_ADDRESS_V1 | 1); - pci_writeb(devfn, 0x80, 0x01); /* enable PM io space */ - break; - case 0x0101: - if ( vendor_id =3D=3D 0x8086 ) - { - /* Intel ICHs since PIIX3: enable IDE legacy mode. */ - pci_writew(devfn, 0x40, 0x8000); /* enable IDE0 */ - pci_writew(devfn, 0x42, 0x8000); /* enable IDE1 */ - } - break; - } + class_specific_pci_device_setup(vendor_id, device_id, class, + 0 /* virt_bus support TBD */, + devfn, &vga_devfn); =20 /* * It is recommended that BAR programming be done whilst decode @@ -583,7 +594,7 @@ void pci_setup(void) ((pci_hi_mem_start & -pci_hi_mem_start) - 1)) + = 1; } =20 - if ( vga_devfn !=3D 256 ) + if ( vga_devfn !=3D 0xff ) { /* * VGA registers live in I/O space so ensure that primary VGA diff --git a/tools/firmware/hvmloader/pci_regs.h b/tools/firmware/hvmloader= /pci_regs.h index 4d4dc0cd01..c94278855b 100644 --- a/tools/firmware/hvmloader/pci_regs.h +++ b/tools/firmware/hvmloader/pci_regs.h @@ -111,6 +111,10 @@ #define PCI_DEVICE_ID_INTEL_82441 0x1237 #define PCI_DEVICE_ID_INTEL_Q35_MCH 0x29c0 =20 +#define PCI_CLASS_STORAGE_IDE 0x0101 +#define PCI_CLASS_DISPLAY_VGA 0x0300 +#define PCI_CLASS_BRIDGE_OTHER 0x0680 + #endif /* __HVMLOADER_PCI_REGS_H__ */ =20 /* --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419737; cv=none; d=zohomail.com; s=zohoarc; b=Un/lg8rWIEyQyb3Ul9eNd9l5KZps5qHKfTc/Bcxfgsr+jZFx8vN849oPxGDizQjeg72+rqSV4u8FdXcJBdBu1hEKed1gUOsS6ZduyeArSHrytZr3WsLrPYkuh+wALB/x1sgkex0UjMmgnI2dYTJTHAiicIB5EkVQwLlFwCAOuCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419737; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XSxhFtwRrj4zOawhkcLVYmXGgE7mrKTe8uCJzHl6uzM=; b=cpLJLpeQK+qdSAJQsJ2tmPE6L6nHXUSZLu8aGExyAHtHoJ6FypecGfd24Cq9Ile/iz6s5wRSYnozHxJQX349N4Qi7xIpumBNHJEpn1fcYSkw1BunBvEcJpw5tIHfYMZG+reF/jxpyt/yFjAtOYK8wdg6bOl3R00Jt9bF4YcAdQY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419737251708.2928985102924; Fri, 13 Mar 2026 09:35:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253915.1549923 (Exim 4.92) (envelope-from ) id 1w15Tl-0007wE-98; Fri, 13 Mar 2026 16:35:13 +0000 Received: by outflank-mailman (output) from mailman id 1253915.1549923; Fri, 13 Mar 2026 16:35:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tl-0007uq-5N; Fri, 13 Mar 2026 16:35:13 +0000 Received: by outflank-mailman (input) for mailman id 1253915; Fri, 13 Mar 2026 16:35:11 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tj-0006Ek-NP for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:11 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 978d3106-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:06 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT32wgCzPm0V3Q for ; Fri, 13 Mar 2026 16:35:03 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 13f6336bd29a454d82ff99a76d7c914a; Fri, 13 Mar 2026 16:35:03 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 978d3106-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419703; x=1773689703; bh=XSxhFtwRrj4zOawhkcLVYmXGgE7mrKTe8uCJzHl6uzM=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=GEwEssXItslynmjuKGy/aZ/dAPc+3HTMuIe4WFj28tg7zvdGzahLUIhm1t9Z3kxzF M3z7590meT4QdQPlPmkLno72dANXvcOZBACF6y8O+zdaXSUtt3CPXa5OFaWPDiNyJf wHH6Sm6eKWC+7ySt8ai8FG7o5exOdtHASb6Pa+vviS2eiKa68r+jb7i61USRoBgwtj am8qFRTNvh8LIr3+tjo50NcqAwOowHxgnuezveMjMPh4FnUBmboQgpWnb4TiPEtRUt M6bOna8ce8cEhsM7+EJvJnOO4SKbm9Wrx7+fyDkWqI4iEfbQKrFgFqsdB1n2KpKb/4 zcxWF+Uj/6ZUg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419703; x=1773680203; i=thierry.escande@vates.tech; bh=XSxhFtwRrj4zOawhkcLVYmXGgE7mrKTe8uCJzHl6uzM=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=rIvyUy/+W/ptLxicvQIJmGkXSGZisW0Y8CyCAW64IANEbmAc8T8i+VNPEUBBe5N64 ja8Z2g3JtRNeN83hGX50x/Q7PBaRuALnaSY+4Rw3daOngxsRCaWSC+my6IdPvr44A9 cnKwxQcu1CZCXYdsiDEqFbJx6zybsxuTRviNJUVxuBlboug7eFIbplFAJKx7LnA6NA 8jd8nt6pg5i4EbudOLDP/NCXDHlm2pHNUEGCusgFRDsLLE7/JfBj9VVcz4C8SqeNOd dxBu0VHDbSvXVeHc62C7KSM6OC0GA5ctcFVhyhWGTva0BiAPNXltZe8hyJXKdmejR2 X0qtlj41R7CeQ== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2007/17]=20hvmloader:=20add=20basic=20Q35=20support?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419702314 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-8-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.13f6336bd29a454d82ff99a76d7c914a?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:03 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity thierry.escande@vates.tech) (identity @mandrillapp.com) X-ZM-MESSAGEID: 1773419738158158500 Content-Type: text/plain; charset="utf-8" The current hvmloader implementation assumes a fixed PCI-to-ISA bridge at 00:01.0 (PIIX3). This patch introduces support for the ICH9 LPC bridge used in Q35 machine types, which resides at 00:1f.0. It also initializes PIRQA...{PIRQD, PIRQH} routing accordingly to the emulated south bridge (either located on PCI_ISA_DEVFN or PCI_ICH9_LPC_DEVFN). Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/config.h | 1 + tools/firmware/hvmloader/pci.c | 34 ++++++++++++++++++++++++----- tools/firmware/hvmloader/pci_regs.h | 1 + 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/c= onfig.h index c159db30ee..baaed91c7f 100644 --- a/tools/firmware/hvmloader/config.h +++ b/tools/firmware/hvmloader/config.h @@ -54,6 +54,7 @@ extern uint32_t *cpu_to_apicid; =20 #define PCI_ISA_DEVFN 0x08 /* dev 1, fn 0 */ #define PCI_ISA_IRQ_MASK 0x0c20U /* ISA IRQs 5,10,11 are PCI connected = */ +#define PCI_ICH9_LPC_DEVFN 0xf8 /* dev 31, fn 0 */ =20 #define ACPI_TIS_HDR_ADDRESS 0xFED40F00UL =20 diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c index a76d051bdf..91c7fd2171 100644 --- a/tools/firmware/hvmloader/pci.c +++ b/tools/firmware/hvmloader/pci.c @@ -84,6 +84,10 @@ static int find_next_rmrr(uint32_t base) return next_rmrr; } =20 +#define SCI_EN_IOPORT (ACPI_PM1A_EVT_BLK_ADDRESS_V1 + 0x30) +#define GBL_SMI_EN (1 << 0) +#define APMC_EN (1 << 5) + static void class_specific_pci_device_setup(uint16_t vendor_id, uint16_t device_id, uint16_t class, @@ -140,6 +144,17 @@ static void class_specific_pci_device_setup(uint16_t v= endor_id, pci_writew(devfn, 0x42, 0x8000); /* enable IDE1 */ } break; + case PCI_CLASS_BRIDGE_ISA: + /* LPC bridge */ + if ( vendor_id =3D=3D 0x8086 && device_id =3D=3D 0x2918 ) + { + pci_writeb(devfn, 0x3c, 0x09); /* Hardcoded IRQ9 */ + pci_writeb(devfn, 0x3d, 0x01); + pci_writel(devfn, 0x40, ACPI_PM1A_EVT_BLK_ADDRESS_V1 | 1); + pci_writeb(devfn, 0x44, 0x80); /* enable PM io space */ + outl(SCI_EN_IOPORT, inl(SCI_EN_IOPORT) | GBL_SMI_EN | APMC_EN); + } + break; } } =20 @@ -152,6 +167,7 @@ void pci_setup(void) uint16_t class, vendor_id, device_id; unsigned int bar, pin, link, isa_irq; uint8_t pci_devfn_decode_type[256] =3D {}; + int is_running_on_q35 =3D (machine_type =3D=3D MACHINE_TYPE_Q35); =20 /* Resources assignable to PCI devices via BARs. */ struct resource { @@ -209,7 +225,16 @@ void pci_setup(void) { do { isa_irq =3D (isa_irq + 1) & 15; } while ( !(PCI_ISA_IRQ_MASK & (1U << isa_irq)) ); - pci_writeb(PCI_ISA_DEVFN, 0x60 + link, isa_irq); + + if ( is_running_on_q35 ) + { + pci_writeb(PCI_ICH9_LPC_DEVFN, 0x60 + link, isa_irq); + } + else + { + pci_writeb(PCI_ISA_DEVFN, 0x60 + link, isa_irq); + } + printf("PCI-ISA link %u routed to IRQ%u\n", link, isa_irq); } =20 @@ -226,9 +251,6 @@ void pci_setup(void) if ( (vendor_id =3D=3D 0xffff) && (device_id =3D=3D 0xffff) ) continue; =20 - ASSERT((devfn !=3D PCI_ISA_DEVFN) || - ((vendor_id =3D=3D 0x8086) && (device_id =3D=3D 0x7000))); - class_specific_pci_device_setup(vendor_id, device_id, class, 0 /* virt_bus support TBD */, devfn, &vga_devfn); @@ -362,7 +384,9 @@ void pci_setup(void) { /* This is the barber's pole mapping used by Xen. */ link =3D ((pin - 1) + (devfn >> 3)) & 3; - isa_irq =3D pci_readb(PCI_ISA_DEVFN, 0x60 + link); + isa_irq =3D pci_readb(is_running_on_q35 ? + PCI_ICH9_LPC_DEVFN : PCI_ISA_DEVFN, + 0x60 + link); pci_writeb(devfn, PCI_INTERRUPT_LINE, isa_irq); printf("pci dev %02x:%x INT%c->IRQ%u\n", devfn>>3, devfn&7, 'A'+pin-1, isa_irq); diff --git a/tools/firmware/hvmloader/pci_regs.h b/tools/firmware/hvmloader= /pci_regs.h index c94278855b..d217b8f1a4 100644 --- a/tools/firmware/hvmloader/pci_regs.h +++ b/tools/firmware/hvmloader/pci_regs.h @@ -114,6 +114,7 @@ #define PCI_CLASS_STORAGE_IDE 0x0101 #define PCI_CLASS_DISPLAY_VGA 0x0300 #define PCI_CLASS_BRIDGE_OTHER 0x0680 +#define PCI_CLASS_BRIDGE_ISA 0x0601 =20 #endif /* __HVMLOADER_PCI_REGS_H__ */ =20 --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419739; cv=none; d=zohomail.com; s=zohoarc; b=R59haZ7Uu7giNEsVAadLEtNYlAxeJnZr7s/DMWYxu+KfmzsmuyAlte7hXb0ImWgHhL8PZxMC1NP0fU8Ac9gq+DbFo7nKAqCVkILql3KODi4gZly09yneGY6fMVjDQRsPxJq/vdit7MgP8UGW8v9pZ/A/wNI1Z5m2/zwCVZYwMYI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419739; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vBvMj1s8yDbIqTjPGPxPkkkz4nmbCVdKzy+th6j4Qis=; b=lPkQ3DWSRfVa0vr5kCliSg0z/7H7hnJz5bOoDOjxxymTEQUw+a38ppJ/B0VlMMJUrPhKhZPyMkc2zwyVf0ZPtVvdkfn9IRWsDURq03HHnJfMgMOEjin+rSL9YAid4No3U7t4e3G+nwg/cfadkqvbjZUvU+/v0ymFeYA8es2QASw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419739305476.1749540722187; Fri, 13 Mar 2026 09:35:39 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253917.1549943 (Exim 4.92) (envelope-from ) id 1w15Tn-0008Uu-D0; Fri, 13 Mar 2026 16:35:15 +0000 Received: by outflank-mailman (output) from mailman id 1253917.1549943; Fri, 13 Mar 2026 16:35:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tn-0008SY-7u; Fri, 13 Mar 2026 16:35:15 +0000 Received: by outflank-mailman (input) for mailman id 1253917; Fri, 13 Mar 2026 16:35:13 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tl-0006Ek-Nd for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:13 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9798a939-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:06 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT35JmGzPm0V3V for ; Fri, 13 Mar 2026 16:35:03 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 977f1deb1d244fa8b6af82292b76ac72; Fri, 13 Mar 2026 16:35:03 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9798a939-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419703; x=1773689703; bh=vBvMj1s8yDbIqTjPGPxPkkkz4nmbCVdKzy+th6j4Qis=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=nW97KB39JLhzIedqNpJLFmUTGNw0mrDbP4riYn684Z+TfnYnnmpZn08mQB9CDv+ct +jMWbH2HdYMkoTsmOyXMzobBGKNCZCPT7nRZ251Cf5Vqn7imPhbF6H2S+UTQf3Hioq HpEdHH96QEIIRluvY/PMEd87nDQUswlDVXsPHyHNWpJR+UzGKnoO13ZQhW6TYYjrhP Z+iMCi8Ber8kb/t2ZomvDzIdYFfPPoByBItzy6i+VJ0naogiCOxIHs3xatn+ztRVbj 8lhdCESE9qq22XRPagWOOeEbfe+UVQCES6VZCRAix6U92I4yQ4HLrzh+5UjfZKhJIE aRXvAHlWt6iQw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419703; x=1773680203; i=thierry.escande@vates.tech; bh=vBvMj1s8yDbIqTjPGPxPkkkz4nmbCVdKzy+th6j4Qis=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=mr3OMuMwONIlQMIgUASU69/UPpBr2wwvjoZFyrTQcMwEjthGpYeL3wsN5A6Yy+1Wc yREliV5fA8X1Kbur6XdKOMFbODDEhVKYxVFvSiKAdIcniSQHtfW918CmyZAn/HOcYH kiZiqOyKV7QlL8RqQr7FFfAkMkWBWGdl9uECP2K1D3eNXFCdDGTwtTRRiWADMtlbXs aGpP+Zr7CxDliUOfrdYGLILFtTRCxCzwTHqqTZb18CULxBLQBVDWwGNVBG39Ql/ZiN ibBwGwGnkw4QbIxJaokEFUkQrsIsFixhZWqOyxEmj9XISuf+d2HKRGAYTolKKAWsAr z+GinmlUoqWQA== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2008/17]=20hvmloader:=20Extend=20PCI=20BAR=20struct?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419702568 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-9-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.977f1deb1d244fa8b6af82292b76ac72?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:03 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419742242154100 Content-Type: text/plain; charset="utf-8" For the upcoming allocation of the MMCONFIG range in MMIO hole, this patch extends the 'bars' structure to make it universal for any arbitrary BAR type. Either IO, MMIO, ROM or a chipset-specific resource. One important new field is addr_mask, which tells which bits of the base address can (should) be written. Different address types (ROM, MMIO BAR, PCIEXBAR) will have different addr_mask values. For every assignable BAR range we store its size, PCI device BDF (devfn actually) to which it belongs, BAR type (mem/io/mem64) and corresponding register offset in device PCI conf space. Also, to reduce code complexity, all long mem/mem64 BAR flags checks are replaced by simple bars[i] field probing, eg.: - if ( (bar_reg =3D=3D PCI_ROM_ADDRESS) || - ((bar_data & PCI_BASE_ADDRESS_SPACE) =3D=3D - PCI_BASE_ADDRESS_SPACE_MEMORY) ) + if ( bars[i].is_mem ) Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/pci.c | 58 ++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c index 91c7fd2171..6e6720adae 100644 --- a/tools/firmware/hvmloader/pci.c +++ b/tools/firmware/hvmloader/pci.c @@ -160,9 +160,10 @@ static void class_specific_pci_device_setup(uint16_t v= endor_id, =20 void pci_setup(void) { - uint8_t is_64bar, using_64bar, bar64_relocate =3D 0; + uint8_t is_64bar, using_64bar, bar64_relocate =3D 0, is_mem; uint32_t devfn, bar_reg, cmd, bar_data, bar_data_upper; uint64_t base, bar_sz, bar_sz_upper, mmio_total =3D 0; + uint64_t addr_mask; uint8_t vga_devfn =3D 0xff; uint16_t class, vendor_id, device_id; unsigned int bar, pin, link, isa_irq; @@ -176,10 +177,13 @@ void pci_setup(void) =20 /* Create a list of device BARs in descending order of size. */ struct bars { - uint32_t is_64bar; uint32_t devfn; uint32_t bar_reg; uint64_t bar_sz; + uint64_t addr_mask; /* which bits of the base address can be writt= en */ + uint32_t bar_data; /* initial value - BAR flags here */ + uint8_t is_64bar; + uint8_t is_mem; } *bars =3D (struct bars *)scratch_start; unsigned int i, nr_bars =3D 0; uint64_t mmio_hole_size =3D 0; @@ -278,13 +282,21 @@ void pci_setup(void) bar_reg =3D PCI_ROM_ADDRESS; =20 bar_data =3D pci_readl(devfn, bar_reg); + + is_mem =3D !!(((bar_data & PCI_BASE_ADDRESS_SPACE) =3D=3D + PCI_BASE_ADDRESS_SPACE_MEMORY) || + (bar_reg =3D=3D PCI_ROM_ADDRESS)); + if ( bar_reg !=3D PCI_ROM_ADDRESS ) { - is_64bar =3D !!((bar_data & (PCI_BASE_ADDRESS_SPACE | - PCI_BASE_ADDRESS_MEM_TYPE_MASK)) =3D=3D - (PCI_BASE_ADDRESS_SPACE_MEMORY | + is_64bar =3D !!(is_mem && + ((bar_data & PCI_BASE_ADDRESS_MEM_TYPE_MASK) = =3D=3D PCI_BASE_ADDRESS_MEM_TYPE_64)); + pci_writel(devfn, bar_reg, ~0); + + addr_mask =3D is_mem ? PCI_BASE_ADDRESS_MEM_MASK + : PCI_BASE_ADDRESS_IO_MASK; } else { @@ -292,15 +304,16 @@ void pci_setup(void) pci_writel(devfn, bar_reg, (bar_data | PCI_ROM_ADDRESS_MASK) & ~PCI_ROM_ADDRESS_ENABLE); + + addr_mask =3D PCI_ROM_ADDRESS_MASK; } + bar_sz =3D pci_readl(devfn, bar_reg); pci_writel(devfn, bar_reg, bar_data); =20 if ( bar_reg !=3D PCI_ROM_ADDRESS ) - bar_sz &=3D (((bar_data & PCI_BASE_ADDRESS_SPACE) =3D=3D - PCI_BASE_ADDRESS_SPACE_MEMORY) ? - PCI_BASE_ADDRESS_MEM_MASK : - (PCI_BASE_ADDRESS_IO_MASK & 0xffff)); + bar_sz &=3D is_mem ? PCI_BASE_ADDRESS_MEM_MASK : + (PCI_BASE_ADDRESS_IO_MASK & 0xffff); else bar_sz &=3D PCI_ROM_ADDRESS_MASK; if (is_64bar) { @@ -314,6 +327,9 @@ void pci_setup(void) if ( bar_sz =3D=3D 0 ) continue; =20 + /* leave only memtype/enable bits etc */ + bar_data &=3D ~addr_mask; + if ( !xenpci_bar_uc && ((bar_data & PCI_BASE_ADDRESS_SPACE) =3D=3D PCI_BASE_ADDRESS_SPACE_MEMORY) && @@ -359,16 +375,17 @@ void pci_setup(void) if ( i !=3D nr_bars ) memmove(&bars[i+1], &bars[i], (nr_bars-i) * sizeof(*bars)); =20 - bars[i].is_64bar =3D is_64bar; bars[i].devfn =3D devfn; bars[i].bar_reg =3D bar_reg; bars[i].bar_sz =3D bar_sz; + bars[i].is_64bar =3D is_64bar; + bars[i].is_mem =3D is_mem; + bars[i].addr_mask =3D addr_mask; + bars[i].bar_data =3D bar_data; =20 if ( is_64bar && bar_sz > BAR_RELOC_THRESH ) bar64_relocate =3D 1; - else if ( ((bar_data & PCI_BASE_ADDRESS_SPACE) =3D=3D - PCI_BASE_ADDRESS_SPACE_MEMORY) || - (bar_reg =3D=3D PCI_ROM_ADDRESS) ) + else if ( is_mem ) mmio_total +=3D bar_sz; =20 nr_bars++; @@ -531,10 +548,10 @@ void pci_setup(void) using_64bar =3D bars[i].is_64bar && bar64_relocate && (mmio_total > (mem_resource.max - mem_resource.base) || bar_sz > BAR_RELOC_THRESH); - bar_data =3D pci_readl(devfn, bar_reg); =20 - if ( (bar_data & PCI_BASE_ADDRESS_SPACE) =3D=3D - PCI_BASE_ADDRESS_SPACE_MEMORY ) + bar_data =3D bars[i].bar_data; + + if ( bars[i].is_mem ) { /* Mapping high memory if PCI device is 64 bits bar */ if ( using_64bar ) { @@ -544,11 +561,9 @@ void pci_setup(void) if ( !pci_hi_mem_start ) pci_hi_mem_start =3D high_mem_resource.base; resource =3D &high_mem_resource; - bar_data &=3D ~PCI_BASE_ADDRESS_MEM_MASK; }=20 else { resource =3D &mem_resource; - bar_data &=3D ~PCI_BASE_ADDRESS_MEM_MASK; } if ( bar_sz <=3D BAR_RELOC_THRESH ) mmio_total -=3D bar_sz; @@ -556,7 +571,6 @@ void pci_setup(void) else { resource =3D &io_resource; - bar_data &=3D ~PCI_BASE_ADDRESS_IO_MASK; } =20 base =3D (resource->base + bar_sz - 1) & ~(uint64_t)(bar_sz - 1); @@ -578,7 +592,7 @@ void pci_setup(void) } } =20 - bar_data |=3D (uint32_t)base; + bar_data |=3D (uint32_t) (base & bars[i].addr_mask); bar_data_upper =3D (uint32_t)(base >> 32); base +=3D bar_sz; =20 @@ -600,9 +614,7 @@ void pci_setup(void) PRIllx_arg(bar_sz), bar_data_upper, bar_data); =09 - if ( (bar_reg =3D=3D PCI_ROM_ADDRESS) || - ((bar_data & PCI_BASE_ADDRESS_SPACE) =3D=3D - PCI_BASE_ADDRESS_SPACE_MEMORY) ) + if ( bars[i].is_mem ) pci_devfn_decode_type[devfn] |=3D PCI_COMMAND_MEMORY; else pci_devfn_decode_type[devfn] |=3D PCI_COMMAND_IO; --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419860; cv=none; d=zohomail.com; s=zohoarc; b=PZZwDgpDs6fLsJR3z3WR0DRWECOvOd+U8C2voqldrK9SnNXcGBKPmdu6GYpNTMR4F8W8JXBOnYc30xGp1MZL4/o36V6TmSl6FF+7j9HTxqCDSs6zYHNhDASSl6r66pXGxcNDlEXFsmRvZz3sbQA7jSAV1QfWSNs/OA1av0kN4/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419860; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Hgw6ALXwahveH8XpeaP1oYUCpV9mVDJR9YzEbJZFSCM=; b=EGaUk+UqvlF+P5NMJNcdcHxEFz5Nh3Bc2WtyO2in4CKg6t9i0kAp16FmaFzU7AUgWky1zrR00aFIwvxSG5aDRECWO2la/ggdwPb+JG3z73YsQrjhDTmpfs2gkG5u56HVYCInFs16SQAkf8B92iDtP1zgz9aV2TFXHumtCqdT0wo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419860557448.9719833579717; Fri, 13 Mar 2026 09:37:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1254031.1550029 (Exim 4.92) (envelope-from ) id 1w15Vt-0007LF-CO; Fri, 13 Mar 2026 16:37:25 +0000 Received: by outflank-mailman (output) from mailman id 1254031.1550029; Fri, 13 Mar 2026 16:37:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Vt-0007KX-9L; Fri, 13 Mar 2026 16:37:25 +0000 Received: by outflank-mailman (input) for mailman id 1254031; Fri, 13 Mar 2026 16:37:24 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15To-0006Ek-Nv for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:16 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9947323d-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:08 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT42HJpzPm0V3p for ; Fri, 13 Mar 2026 16:35:04 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 4c742f4a7f4f4904ac3549a756e6bd0d; Fri, 13 Mar 2026 16:35:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9947323d-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419704; x=1773689704; bh=Hgw6ALXwahveH8XpeaP1oYUCpV9mVDJR9YzEbJZFSCM=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=Mw1wDR5DHu8B4KkyqcCPxxNRFao0l9qHnuMzUvOEDFGgGAN4p8xZ7tWMBSSDTzm1f bvhCjJsH1efWgoJQ6KRhB/yt+CT5gOT59mKx5PsOpnkruvxo3m7XpLNBl8CEItgPKK 7+rSslNK6mh/aLYc2nq51CXrVZ2kft2WEAYZUWscRdGaHyRSYhdwsHSchSE9PqzIgO UKIe0jccpuhd/bZ7vWlskZcf0kBVeAEeaQvIfRPdHdXt3mliQbQVNL9HAxz6NZhtFf Cd0OdZc8ut1N7z7Q+Xs92/+A8oH9YgG78C2U0LX1hTKbJ5JPL3aeSGFkqHjgvHcZkc 3MiEIXYpyAXtA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419704; x=1773680204; i=thierry.escande@vates.tech; bh=Hgw6ALXwahveH8XpeaP1oYUCpV9mVDJR9YzEbJZFSCM=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=BEn/o7TCPtwEkYCRFfTyo80k7wi0W1aCZ8bJzjbv272Vg+pZKFrYx/wBtmsYO/CU+ dHXvdJtKNEn+8ui23EFuXwbZHEGliqNY7m4QpOn3s6dcp4QG+aLLsf0c0JFWwWEPAO PE7F4AQhKywwk0w2t01HOcPqqmdxygPL5qCYpI1D2jo6E9pBX+HatfUp/Izy8LO7ij 7LpevsfSpK9ENg9AWlDBzSWdACdtvNyszxXWbtLFxcedk5r5HoLjbjfVb1IU/Mzjxr C7PYxVfEhQMjiaHN3LVXEZEh/RIqEyiXcfjZ8afe3nAfF75foUosFcC43c+BLS6/ku 1WQV9hkKxtntQ== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2009/17]=20xev/hvm:=20Add=20HVMOP=5Fget|set=5Fecam=5Fspace=20hypercalls?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419702933 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Michal Orzel" , "Julien Grall" , "Stefano Stabellini" Message-Id: <20260313163455.790692-10-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.4c742f4a7f4f4904ac3549a756e6bd0d?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:04 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity thierry.escande@vates.tech) (identity @mandrillapp.com) X-ZM-MESSAGEID: 1773419862136154100 Content-Type: text/plain; charset="utf-8" This patch adds 2 HVMOP hypercalls, HVMOP_get|set_ecam_space, used to set and get the base address and size of the PCIe ECAM space as configured by hvmloader. Signed-off-by: Thierry Escande --- xen/arch/x86/hvm/hvm.c | 52 +++++++++++++++++++++++++++++++ xen/arch/x86/include/asm/domain.h | 4 +++ xen/include/public/hvm/hvm_op.h | 11 +++++++ 3 files changed, 67 insertions(+) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 4d37a93c57..a46dfa955d 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -5195,6 +5195,58 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PA= RAM(void) arg) rc =3D current->hcall_compat ? compat_altp2m_op(arg) : do_altp2m_o= p(arg); break; =20 + case HVMOP_set_ecam_space: { + xen_hvm_ecam_space_t ecam; + struct domain *d; + + if ( copy_from_guest( &ecam, guest_handle_cast(arg, xen_hvm_ecam_s= pace_t), 1 ) ) + return -EFAULT; + + d =3D rcu_lock_domain_by_any_id(ecam.domid); + if ( d =3D=3D NULL ) + return -ESRCH; + + if ( d->arch.ecam_addr ) { + rcu_unlock_domain(d); + return -EFAULT; + } + + if ( (ecam.size >> 28) || (!ecam.addr) ) { + rcu_unlock_domain(d); + return -EINVAL; + } + + d->arch.ecam_addr =3D ecam.addr; + d->arch.ecam_size =3D ecam.size; + + rcu_unlock_domain(d); + break; + } + + case HVMOP_get_ecam_space: { + xen_hvm_ecam_space_t ecam; + struct domain *d; + + if ( copy_from_guest( &ecam, guest_handle_cast(arg, xen_hvm_ecam_s= pace_t), 1 ) ) + return -EFAULT; + + d =3D rcu_lock_domain_by_any_id(ecam.domid); + if ( d =3D=3D NULL ) + return -ESRCH; + + if ( ! d->arch.ecam_addr || ! d->arch.ecam_size ) { + rcu_unlock_domain(d); + return -EINVAL; + } + + ecam.addr =3D d->arch.ecam_addr; + ecam.size =3D d->arch.ecam_size; + rc =3D __copy_to_guest(arg, &ecam, 1) ? -EFAULT : 0; + + rcu_unlock_domain(d); + break; + } + default: rc =3D -ENOSYS; break; diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/d= omain.h index ad7f6adb2c..24ec33fc4d 100644 --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -476,6 +476,10 @@ struct arch_domain =20 /* Emulated devices enabled bitmap. */ uint32_t emulation_flags; + + /* PCI ECAM space emulation */ + uint64_t ecam_addr; + uint32_t ecam_size; } __cacheline_aligned; =20 #ifdef CONFIG_HVM diff --git a/xen/include/public/hvm/hvm_op.h b/xen/include/public/hvm/hvm_o= p.h index e22adf0319..c84febc37c 100644 --- a/xen/include/public/hvm/hvm_op.h +++ b/xen/include/public/hvm/hvm_op.h @@ -166,6 +166,17 @@ struct xen_hvm_get_mem_type { typedef struct xen_hvm_get_mem_type xen_hvm_get_mem_type_t; DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_mem_type_t); =20 +#define HVMOP_set_ecam_space 16 +#define HVMOP_get_ecam_space 17 +struct xen_hvm_ecam_space { + domid_t domid; + uint16_t pad[3]; /* align next field on 8-byte boundary */ + uint64_t addr; + uint32_t size; +}; +typedef struct xen_hvm_ecam_space xen_hvm_ecam_space_t; +DEFINE_XEN_GUEST_HANDLE(xen_hvm_ecam_space_t); + /* Following tools-only interfaces may change in future. */ #if defined(__XEN__) || defined(__XEN_TOOLS__) =20 --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419759; cv=none; d=zohomail.com; s=zohoarc; b=WOhhCc30ED+aIO+2FZ2fIMm/MF45BtCdOFpPxQJSOELTfv+BuK/NHKO6sQluFzTP4h4XB2c/XUCfDZRowLeRKjdO1BWtvop+uOtaa9MLHd9NjFIgAybNDSMbQ3q6MIN9nl/DcKSBAk7U3DYmEmQA40Nxt9rggTQwS4Dy2msygUs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419759; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SJNwp/e+ZZuXxiujULGF+OAKlHbvuetBMvexQHhjjo8=; b=VwlyIrTbhyBR5OABfdh15Uet+TpUu3uunfMxfBr5Pdl6lG7i49a4GLQQ/LKkx63fbZP0HfGhrPcOHtTvz3GZ4RRui+W3GP4l+aVJNGH00iAoGg8jcaPLveW1bwh0pH+WJSQYnEM9K7+vYpXulMaa2EwZncXS408z+LgQTPNrCOc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419759456972.130461783985; Fri, 13 Mar 2026 09:35:59 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253918.1549955 (Exim 4.92) (envelope-from ) id 1w15To-0000PF-Rt; Fri, 13 Mar 2026 16:35:16 +0000 Received: by outflank-mailman (output) from mailman id 1253918.1549955; Fri, 13 Mar 2026 16:35:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15To-0000O4-IT; Fri, 13 Mar 2026 16:35:16 +0000 Received: by outflank-mailman (input) for mailman id 1253918; Fri, 13 Mar 2026 16:35:14 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tm-0006Ps-NA for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:14 +0000 Received: from mail136-12.atl41.mandrillapp.com (mail136-12.atl41.mandrillapp.com [198.2.136.12]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 979dae23-1efa-11f1-b164-2bf370ae4941; Fri, 13 Mar 2026 17:35:06 +0100 (CET) Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail136-12.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT36mzZz5Qkjg4 for ; Fri, 13 Mar 2026 16:35:03 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 344d125658814570b3612034e846277e; Fri, 13 Mar 2026 16:35:03 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 979dae23-1efa-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419703; x=1773689703; bh=SJNwp/e+ZZuXxiujULGF+OAKlHbvuetBMvexQHhjjo8=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=VtsccEyU7+GNTAHs4flCl0OeOQylMdjXtK3xTaGgkOt+kYYO462N6VEtbGvBaPXoU 50bUH5TgVxX1ZIM3cPKW61GchWLiBZazkDjJuZ5bL+c+fyLmRf2k3AZPtZIb2NkDLe fDA140diy5tmrsrfRnqA3RVIZocKA2a6sFdK3R1oo9LVb8Y6fnf6BBD53Tb6xV8NhT GzfzQmr8YeakG5WfBeDpby03k5BlRCitz8Y4Y8VAa2bIArVX3HfsU3QGpD5AP5p1p2 COQTLeC1mSJzb0hz6mV1bRgLo86pyu/5A3YzEFXC+UCtLS3eRmV+au32lO58yxYVUa akRBQlMlnFn6Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419703; x=1773680203; i=thierry.escande@vates.tech; bh=SJNwp/e+ZZuXxiujULGF+OAKlHbvuetBMvexQHhjjo8=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=lhkiGL07AiVnT6o0YW6293mnSd4WF2oA6yZIZXZaH7eUj250uCYW5OAtKbC7Nr83p nmj9NaOyLkL0EuRONTiFZ2slExNmGAQbSluFxJ4o73DtLxLS4BfWfD38vOZ2R+RCAQ 9yA3l+X7Q3ArUQGgGaq9V3J+Z23B9MFJEHjjjQF+eEbtzcYKwP52aVlHM6uSUtJ+u6 fl71oFIEI8VChyctmq/bC0AOiHJgP/sFH1Vk+FtX5gKslnYsGdimR+Kg/F0Nk3TIL3 Ngbci2xTgcRCvisrb/6x01ms8DljL0fxO/W1CAZTi2aN2Q/84BD5q0ksB75OHwXUTD ibH2w8VBIK9LA== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2010/17]=20hvmloader:=20Add=20support=20for=20HVMOP=5Fset|get=5Fecam=5Fspace=20hypercalls?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419703166 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" Message-Id: <20260313163455.790692-11-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.344d125658814570b3612034e846277e?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:03 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419762456154100 Content-Type: text/plain; charset="utf-8" This patch adds wrappers in hvmloader for the hypercalls used to set and get the ECAM space base address and size. Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/util.c | 26 ++++++++++++++++++++++++++ tools/firmware/hvmloader/util.h | 4 ++++ 2 files changed, 30 insertions(+) diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/uti= l.c index 45519ea583..ee7a09b5bc 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -690,6 +690,32 @@ error: BUG(); } =20 +int hvm_set_ecam_space(uint64_t addr, uint32_t size) +{ + xen_hvm_ecam_space_t ecam; + + ecam.domid =3D DOMID_SELF; + ecam.addr =3D addr; + ecam.size =3D size; + return hypercall_hvm_op(HVMOP_set_ecam_space, &ecam); +} + +int hvm_get_ecam_space(uint64_t *addr, uint32_t *size) +{ + struct xen_hvm_ecam_space e =3D { }; + int ret; + + e.domid =3D DOMID_SELF; + + ret =3D hypercall_hvm_op(HVMOP_get_ecam_space, &e); + if ( ret =3D=3D 0 ) { + *addr =3D e.addr; + *size =3D e.size; + } + + return ret; +} + static void validate_hvm_info(struct hvm_info_table *t) { uint8_t *ptr =3D (uint8_t *)t; diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/uti= l.h index 4641ca0c46..f63fdd3fbf 100644 --- a/tools/firmware/hvmloader/util.h +++ b/tools/firmware/hvmloader/util.h @@ -403,6 +403,10 @@ struct acpi_config; void hvmloader_acpi_build_tables(struct acpi_config *config, unsigned int physical); =20 +/* Pass ecam space information to Xen */ +int hvm_get_ecam_space(uint64_t *addr, uint32_t *size); +int hvm_set_ecam_space(uint64_t addr, uint32_t size); + #endif /* __HVMLOADER_UTIL_H__ */ =20 /* --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419739; cv=none; d=zohomail.com; s=zohoarc; b=P8QjViZ3N6eqlO/UXK2C0cjkDU/SA3xHB8dj1TcGo1xYgUXi0xXOKOEs1NFsXrYqUcjsyWThEgWdn3CAlzRM04jANmNFsG5iXJqX7mTSupE/m3VHO4I/L+f4Rs1ixAMYRvaAu2Y+4faJRPJkZD1n7gZXJdlqQ+S3AFjMoBIG33c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419739; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9d+OJots/k384GAeF2LH1TnTIC8qi57D6qknmRoe2hc=; b=HmJuvtGCtWfn2aCUiB9z2p6ZpUzxyEpSkhluDeIr7BV5bUqgno89GyIl5NSux1sS7qMgQYQFdYqzKhSGopkjGa48BqrzJxz69dVlqKa9dMbLBLa04hTuWqqCDDgapvG36TTTLZuofeKLM3uvBAwHskO89MKwhGTLOdD0jiFyhTw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419739356456.84523967046186; Fri, 13 Mar 2026 09:35:39 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253916.1549932 (Exim 4.92) (envelope-from ) id 1w15Tm-00087n-6S; Fri, 13 Mar 2026 16:35:14 +0000 Received: by outflank-mailman (output) from mailman id 1253916.1549932; Fri, 13 Mar 2026 16:35:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tl-00085C-PG; Fri, 13 Mar 2026 16:35:13 +0000 Received: by outflank-mailman (input) for mailman id 1253916; Fri, 13 Mar 2026 16:35:12 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tk-0006Ek-NW for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:12 +0000 Received: from mail136-12.atl41.mandrillapp.com (mail136-12.atl41.mandrillapp.com [198.2.136.12]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 97a09214-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:06 +0100 (CET) Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail136-12.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT43Vybz5Rb3ST for ; Fri, 13 Mar 2026 16:35:04 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id ee742bd0e8e04fb0b2288f6f2cdd7ad3; Fri, 13 Mar 2026 16:35:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 97a09214-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419704; x=1773689704; bh=9d+OJots/k384GAeF2LH1TnTIC8qi57D6qknmRoe2hc=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=u+P0My+Lkw6MMAr/LeetpFtzceuJWbRpbiUDSNi/JIX5BTkKd2A7MWGC+rbauPLB5 5vmZYl3F5iAk/K0/qP7BeVPLcp7t9bVuUkXDhncPpiZZL7vytHZRfqFzAQq66F3c84 pOecnHt33RHlj+yvqX4ncRQQG+GhMAyCQ3Gl1CykOT1MZdAJ1h9jL9iIGN5Czc50CM DiEBmzJhRLUhLXtGMcVY98yISSbT2/yDrRxDiCz4FDzIJBdMc0Opdkci5yC5gMNe1o ZO+EhBTSQtuDxAsmSgaxOmEoHJyHH0vTRpQfAHr0KAetmmbQcjSfKuGZqdym5C0e9/ JASJaL3D8d9Tg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419704; x=1773680204; i=thierry.escande@vates.tech; bh=9d+OJots/k384GAeF2LH1TnTIC8qi57D6qknmRoe2hc=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=A019VsH6dSG6YnTwJHlebFuP8rlPdNvnhXsEHuBdoEz/A1NI6iN7Yn7KPF3MzRuWf jAOlrvsNBk3tNfZFjv9+PsVZV6lHizg5kyhRVIKpW150YLM6kZNZaKNw64/nGgOfz3 4DMBklH+3g2jBrd116azWAqarkMSU8psm2rXvvT43C+4Fn3Eaoz68mXqfMqkekBKUA QidGqWnmARVYsUr8BniRv6uhgdBy/3BbSfG/Lh8ax0gaGMw6XfJWX1bYyo6azODxj0 fVmfuF49zm7O9jKZFBSQN5Xm4RW40wYoYlaiDFZE+C67jCfymev2VEP2TBlTW8SANc OmpV8uaahPgWA== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2011/17]=20hvmloader:=20allocate=20MMCONFIG=20area=20in=20the=20MMIO=20hole?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419703422 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-12-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.ee742bd0e8e04fb0b2288f6f2cdd7ad3?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:04 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419748581158500 Content-Type: text/plain; charset="utf-8" The actual MMCONFIG size depends on the number of PCI buses available which should be covered by ECAM. Possible options are 64MB, 128MB and 256MB. As Xen is limited to the bus 0 currently, the lowest possible setting is used (64MB), defined via PCI_MAX_MCFG_BUSES in hvmloader/config.h. When multiple PCI buses support for Xen will be implemented, PCI_MAX_MCFG_BUSES may be replaced by a calculation of the number of buses according to PCI devices enumeration. The MMCONFIG entry is inserted into bars array in the same manner like for any other BARs. In this case, the devfn field will point to MCH PCI device and bar_reg will contain PCIEXBAR register offset. It will be assigned a slot in the MMIO hole later in a very same way like for plain PCI BARs, with respect to its size and alignment. At this point, the actual base address and size of the ECAM space are passed to Xen using the HVMOP_set_ecam_space hypercall. Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/config.h | 4 +++ tools/firmware/hvmloader/pci.c | 55 +++++++++++++++++++++++++++++ tools/firmware/hvmloader/pci_regs.h | 7 ++++ 3 files changed, 66 insertions(+) diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/c= onfig.h index baaed91c7f..aa3158bca5 100644 --- a/tools/firmware/hvmloader/config.h +++ b/tools/firmware/hvmloader/config.h @@ -55,6 +55,10 @@ extern uint32_t *cpu_to_apicid; #define PCI_ISA_DEVFN 0x08 /* dev 1, fn 0 */ #define PCI_ISA_IRQ_MASK 0x0c20U /* ISA IRQs 5,10,11 are PCI connected = */ #define PCI_ICH9_LPC_DEVFN 0xf8 /* dev 31, fn 0 */ +#define PCI_MCH_DEVFN 0 /* bus 0, dev 0, func 0 */ + +/* possible values are: 64, 128, 256 */ +#define PCI_MAX_MCFG_BUSES 64 =20 #define ACPI_TIS_HDR_ADDRESS 0xFED40F00UL =20 diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c index 6e6720adae..54c23ffdd8 100644 --- a/tools/firmware/hvmloader/pci.c +++ b/tools/firmware/hvmloader/pci.c @@ -413,6 +413,58 @@ void pci_setup(void) pci_devfn_decode_type[devfn] |=3D PCI_COMMAND_MASTER; } =20 + /* + * Calculate MMCONFIG area size and squeeze it into the bars array + * for assigning a slot in the MMIO hole + */ + if ( is_running_on_q35 ) + { + /* disable PCIEXBAR decoding for now */ + pci_writel(PCI_MCH_DEVFN, PCI_MCH_PCIEXBAR, 0); + pci_writel(PCI_MCH_DEVFN, PCI_MCH_PCIEXBAR + 4, 0); + + switch ( PCI_MAX_MCFG_BUSES ) + { + case 64: + bar_data =3D PCIEXBAR_64_BUSES | PCIEXBAR_ENABLE; + bar_sz =3D MB(64); + break; + + case 128: + bar_data =3D PCIEXBAR_128_BUSES | PCIEXBAR_ENABLE; + bar_sz =3D MB(128); + break; + + case 256: + bar_data =3D PCIEXBAR_256_BUSES | PCIEXBAR_ENABLE; + bar_sz =3D MB(256); + break; + + default: + /* unsupported number of buses specified */ + BUG(); + } + + addr_mask =3D ~(bar_sz - 1); + + for ( i =3D 0; i < nr_bars; i++ ) + if ( bars[i].bar_sz < bar_sz ) + break; + + if ( i !=3D nr_bars ) + memmove(&bars[i+1], &bars[i], (nr_bars-i) * sizeof(*bars)); + + bars[i].is_mem =3D 1; + bars[i].devfn =3D PCI_MCH_DEVFN; + bars[i].bar_reg =3D PCI_MCH_PCIEXBAR; + bars[i].bar_sz =3D bar_sz; + bars[i].addr_mask =3D addr_mask; + bars[i].bar_data =3D bar_data; + + mmio_total +=3D bar_sz; + nr_bars++; + } + if ( mmio_hole_size ) { uint64_t max_ram_below_4g =3D GB(4) - mmio_hole_size; @@ -592,6 +644,9 @@ void pci_setup(void) } } =20 + if ( bar_reg =3D=3D PCI_MCH_PCIEXBAR ) + hvm_set_ecam_space(base, bar_sz); + bar_data |=3D (uint32_t) (base & bars[i].addr_mask); bar_data_upper =3D (uint32_t)(base >> 32); base +=3D bar_sz; diff --git a/tools/firmware/hvmloader/pci_regs.h b/tools/firmware/hvmloader= /pci_regs.h index d217b8f1a4..86e04f8bbd 100644 --- a/tools/firmware/hvmloader/pci_regs.h +++ b/tools/firmware/hvmloader/pci_regs.h @@ -116,6 +116,13 @@ #define PCI_CLASS_BRIDGE_OTHER 0x0680 #define PCI_CLASS_BRIDGE_ISA 0x0601 =20 +#define PCI_MCH_PCIEXBAR 0x60 + +#define PCIEXBAR_64_BUSES 0x04 +#define PCIEXBAR_128_BUSES 0x02 +#define PCIEXBAR_256_BUSES 0x00 +#define PCIEXBAR_ENABLE 0x01 + #endif /* __HVMLOADER_PCI_REGS_H__ */ =20 /* --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419875; cv=none; d=zohomail.com; s=zohoarc; b=nVa4BdLn2ahTAe96e6v1Pebt+D5WamAu2OoIdeFaTHLqRHq0fXn47LNaFKT3SNwztuh7aqyhzL3ZY0PdKBDjj2QRjcXf9gUDSlcsQf6h4SsCnjUohRgLpIT/FZxRHHyb95NSFz3Eex6aQDwECT4Pm9FJKzSD/2ICzNCZgXyK26Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419875; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=R5584u5biB3YH5gAUKEPnNqwevOZ2xVZukEW5ifg0cU=; b=UhYR+ymMGD6ppcbzrS5t7ldOH7BPBOdRM8lYnmZXOV+gcCuVX6VwaJao9ETO6Q/ytxZhdLuNmHknLb+ycRI5U2GKYeOrQczcsLNJclOrivZ/iDUN57QmZnXy2t7cN9f1niAf731xn0b7PGL8YqWPTv3sPdFTt3fwlY/+FBNCRJU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419874992529.0411909588372; Fri, 13 Mar 2026 09:37:54 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1254052.1550063 (Exim 4.92) (envelope-from ) id 1w15W4-0000Nt-Gn; Fri, 13 Mar 2026 16:37:36 +0000 Received: by outflank-mailman (output) from mailman id 1254052.1550063; Fri, 13 Mar 2026 16:37:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15W4-0000Nj-CS; Fri, 13 Mar 2026 16:37:36 +0000 Received: by outflank-mailman (input) for mailman id 1254052; Fri, 13 Mar 2026 16:37:35 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tn-0006Ek-Nt for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:15 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9952ad39-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:08 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT42VDCzPm0V3t for ; Fri, 13 Mar 2026 16:35:04 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id fdb286a6cc10436981f303e25614d07d; Fri, 13 Mar 2026 16:35:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9952ad39-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419704; x=1773689704; bh=R5584u5biB3YH5gAUKEPnNqwevOZ2xVZukEW5ifg0cU=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=K8fmtxl4tV4VUw1ecE5JmTIfKzMctA4yaJpZEuc1zolpDAYI7O5Rh8nnqVu6/xuoA Mxa9pKq6ieNdc0UnkXW6SBSZP+6O0kFSspQr8P7afj+tAgZIGgWjUt1u019whoLcLx 5vmN8WGf2+nkd+C9xFYZKUeQ4NgrqWsl3C9QornuBENSbfe6nfLDEa3jLE9madLfFK SX4lx5l7vjQHKpRaXOkuiPVTv+UAfbpA3SDpNwsLW8iszld2OsHi+av65+yqqFE12L lQKmnsfj/3uVXk3cs6oWY+7rj/jLuw5RzVeGJGK+MUH6rjIp55NvxJSJvboYkNxv53 mY06geEHGf4Nw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419704; x=1773680204; i=thierry.escande@vates.tech; bh=R5584u5biB3YH5gAUKEPnNqwevOZ2xVZukEW5ifg0cU=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=wzVwF4Kn0wqWWPxDk4RbPZB5FJ9YfNjPsIDIxv8xSXqqtOhv8STPnZes+IhMa0W3p I4baaUD7usvgCeooAE90QKR5luoUiZVHRPOjUaLTyGiKTV/GJVJErBIxg2fEiU5qCN VTmlr1KFvJIS+xLMAA632t09nYEsFPg0OpdR1PpjQNnBlD3PdkNhQLyXBcQbXDcrYr kcfeuGmrHxgmI06gVePzooylPkxuNfX3bQMYbKHUp5bxbEC53AuTyHX5bvc12w62Qv kAtKGsK1MeQXx0VtUUAaXDlAEnMrWyR7a2ek+wYkNXEF8UwWu5O7aK88VwB7WtNX8A gUTVu/DULUS5A== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2012/17]=20libxl:=20Q35=20support=20(new=20option=20device=5Fmodel=5Fmachine)?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419703641 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Anthony PERARD" , "Juergen Gross" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-13-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.fdb286a6cc10436981f303e25614d07d?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:04 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419876919158501 Content-Type: text/plain; charset="utf-8" Provide a new domain config option to select the emulated machine type, device_model_machine. It has following possible values: - "i440" - i440 emulation (default) - "q35" - emulate a Q35 machine. By default, the storage interface is AHCI. Note that omitting device_model_machine parameter means i440 system by default, so the default behavior doesn't change for existing domain config files. Setting device_model_machine to "q35" sends '-machine q35,accel=3Dxen' argument to QEMU. Unlike i440, there is no separated machine type to enable/disable Xen platform device, it is controlled via a machine property only. See 'libxl: Add xen-platform device for Q35 machine' patch for a detailed description. Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/libs/light/libxl_dm.c | 16 ++++++++++------ tools/libs/light/libxl_types.idl | 7 +++++++ tools/xl/xl_parse.c | 14 ++++++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index 511ec76a65..36f2813cde 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -1562,13 +1562,17 @@ static int libxl__build_device_model_args_new(libxl= __gc *gc, flexarray_append(dm_args, b_info->extra_pv[i]); break; case LIBXL_DOMAIN_TYPE_HVM: - if (!libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) { - /* Switching here to the machine "pc" which does not add - * the xen-platform device instead of the default "xenfv" mach= ine. - */ - machinearg =3D libxl__strdup(gc, "pc,accel=3Dxen,suppress-vmde= sc=3Don"); + if (b_info->device_model_machine =3D=3D LIBXL_DEVICE_MODEL_MACHINE= _Q35) { + machinearg =3D libxl__sprintf(gc, "q35,accel=3Dxen"); } else { - machinearg =3D libxl__strdup(gc, "xenfv,suppress-vmdesc=3Don"); + if (!libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) { + /* Switching here to the machine "pc" which does not add + * the xen-platform device instead of the default "xenfv" = machine. + */ + machinearg =3D libxl__strdup(gc, "pc,accel=3Dxen,suppress-= vmdesc=3Don"); + } else { + machinearg =3D libxl__strdup(gc, "xenfv,suppress-vmdesc=3D= on"); + } } if (b_info->u.hvm.mmio_hole_memkb) { uint64_t max_ram_below_4g =3D (1ULL << 32) - diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type= s.idl index d64a573ff3..f9cd881b66 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -109,6 +109,12 @@ libxl_device_model_version =3D Enumeration("device_mod= el_version", [ (2, "QEMU_XEN"), # Upstream based qemu-xen device model ]) =20 +libxl_device_model_machine =3D Enumeration("device_model_machine", [ + (0, "UNKNOWN"), + (1, "I440"), + (2, "Q35"), + ]) + libxl_console_type =3D Enumeration("console_type", [ (0, "UNKNOWN"), (1, "SERIAL"), @@ -613,6 +619,7 @@ libxl_domain_build_info =3D Struct("domain_build_info",[ ("device_model_ssidref", uint32), ("device_model_ssid_label", string), ("device_model_user", string), + ("device_model_machine", libxl_device_model_machine), =20 # extra parameters pass directly to qemu, NULL terminated ("extra", libxl_string_list), diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 1a2ea8b5d5..a4346d1693 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -2813,6 +2813,20 @@ skip_usbdev: if (!xlu_cfg_get_long (config, "stubdomain_memory", &l, 0)) b_info->stubdomain_memkb =3D l * 1024; =20 + if (!xlu_cfg_get_string (config, "device_model_machine", &buf, 0)) { + if (!strcmp(buf, "i440")) { + b_info->device_model_machine =3D LIBXL_DEVICE_MODEL_MACHINE_I4= 40; + } else if (!strcmp(buf, "q35")) { + b_info->device_model_machine =3D LIBXL_DEVICE_MODEL_MACHINE_Q3= 5; + } else { + fprintf(stderr, + "Unknown device_model_machine \"%s\" specified\n", buf= ); + exit(1); + } + } else { + b_info->device_model_machine =3D LIBXL_DEVICE_MODEL_MACHINE_UNKNOW= N; + } + #define parse_extra_args(type) \ e =3D xlu_cfg_get_list_as_string_list(config, "device_model_args"#type= , \ &b_info->extra##type, 0); \ --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419862; cv=none; d=zohomail.com; s=zohoarc; b=kR6GiR1E3Yn0OFxFMsOfOe9Acr19byg/BtPEvJ6ONltPQJTyG8Kccj8tlHqkvANu+AnmYI5dF8XU3doz/4FuHATh1YcOPerk8kGccRH6KHsmUKwGr4hJc2Red9/Oz3CQkWCJh25b0+Wm9R8Idy/7TMsGJPHV8td7XNTO/KpAyb0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419862; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LlYPKk0xH8yJMporrB500MvTCwnh+CM9hoJ6qpHIVMQ=; b=e8EyV6ojsOf2k+mcKxkzm0V/vU6uzNxLHE4iSfZhhSzaBSRcM9MFsdEYBwS71JFiOxhSTAgUz+grdjHHX8ix/voQIVuBkzBB6RS5i4NK5802tRxaPWZe8x0MDeq7Y7d1da2aRA/CEVKsSIGdd5aDI5FRmjlIdUVuHv58eClt7G8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419862749221.79911397062926; Fri, 13 Mar 2026 09:37:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1254035.1550044 (Exim 4.92) (envelope-from ) id 1w15Vu-0007bY-Bv; Fri, 13 Mar 2026 16:37:26 +0000 Received: by outflank-mailman (output) from mailman id 1254035.1550044; Fri, 13 Mar 2026 16:37:26 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Vu-0007YY-1z; Fri, 13 Mar 2026 16:37:26 +0000 Received: by outflank-mailman (input) for mailman id 1254035; Fri, 13 Mar 2026 16:37:25 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tp-0006Ek-O4 for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:17 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9a79d599-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:10 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT42nVczPm0V3w for ; Fri, 13 Mar 2026 16:35:04 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 2bcbd756c26342c989cfe55e6cc82acb; Fri, 13 Mar 2026 16:35:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9a79d599-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419704; x=1773689704; bh=LlYPKk0xH8yJMporrB500MvTCwnh+CM9hoJ6qpHIVMQ=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=hPzO+XdGGHvtKFO1fOJgo0kn40j1p7JS0jnOI/cOk+iPYBCdCWyvEYlpIh16M8yt8 yB7xy16VrFIzVtjjGO9cBoe3HEARG3Z3N/q89InuJOFVCV0o6S7O2CIufJi/gsXusi b9KRUBqXzoET0JovhnURvBaKkGCnpomfbImSrhtQRBQJoiA3G4n6vDYzimT/X7DJ6q ak4M8dhmzRT1dCL8+v6BCI0Gb/85AI6kW7YZpJx6bDQo/qmiwJAF67H5zYr29M5cwI c0Hwe6I2SR8jFRWM0QtJRfCTqIbnfeajxw3UnWT6PBbzELN//WYhdHwCSubS0KOLqX wAwgBA5Y3kdlA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419704; x=1773680204; i=thierry.escande@vates.tech; bh=LlYPKk0xH8yJMporrB500MvTCwnh+CM9hoJ6qpHIVMQ=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=YnPrZi1NG75A8b7T72/WH8GTlzBXWpWMNj9KPFvcXXpO4uyrhNwbz/XJ6DTImMNGZ 99vT2Nz2DRHLs8CDuvCjiNmpeKhMHoJroKOf4q64qGtNvttBpE7IxZnbjJyr+Lzi/i GRsBkc9NWNZbZ8yiw3Lf73gZtjyHl07waYrgCMX7k6Qk4kK/qhneRKDDZgl3oW9vLM CJMLApsEdmjyMcN6ncMYM2OInoqfv7VdWr8N5ZFdTzX7DjF53F4HTf/LqLDbbgE9nB /mGFXQX5gXEQhK9cwP4RTAIdL4xdLOvPYYwCB0nRGlgmKqfXuLekJJBO4deoCzXzHu fTmgyYr4kdilg== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2013/17]=20libxl:=20Add=20xen-platform=20device=20for=20Q35=20machine?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419703848 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Anthony PERARD" , "Juergen Gross" Message-Id: <20260313163455.790692-14-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.2bcbd756c26342c989cfe55e6cc82acb?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:04 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity thierry.escande@vates.tech) (identity @mandrillapp.com) X-ZM-MESSAGEID: 1773419864082154100 Content-Type: text/plain; charset="utf-8" Current Xen/QEMU method to control Xen Platform device is done by setting the 'xen_platform_device' option value that modifies QEMU emulated machine type, namely xenfv <--> pc. In order to avoid multiplying machine types, this patch supplies '-device xen-platform' directly to Qemu. To maintain backward compatibility with existing Xen/QEMU setups, this is currently only applicable to q35 machine. i440 emulation uses the old method (xenfv/pc machine) to control Xen Platform device. Signed-off-by: Thierry Escande --- tools/libs/light/libxl_dm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index 36f2813cde..a64e4779d0 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -1811,6 +1811,12 @@ static int libxl__build_device_model_args_new(libxl_= _gc *gc, flexarray_append(dm_args, state->dm_runas); } } + + if (b_info->device_model_machine =3D=3D LIBXL_DEVICE_MODEL_MACHINE= _Q35 && + libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) { + flexarray_append(dm_args, "-device"); + flexarray_append(dm_args, "xen-platform"); + } } flexarray_append(dm_args, NULL); *args =3D (char **) flexarray_contents(dm_args); --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419741; cv=none; d=zohomail.com; s=zohoarc; b=GiLRFZWcpY+JffE+S7Lwju9G0ji3sm1cLsTyhWbPIMN+O0fRkEWz3YCXCrbSuKA67sw6DE88AATdccovsd+gbXMMqKc/NH9Ei0raHFtjcSrvJ8SuAYk5DPrMx/PWnW+UyGHljcTGyGLpR+QmBgq5gXNDMnkTlX9d9gj1AavyCT4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419741; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oACyCsIVsnwSUu/TjdHiufId4TiklazXrlevhafTKHs=; b=MopLrf8ZAgOI/6BRp0WMHPW8je2iJX07ItiY/+V+FxtIKOyElfUWElBLGhYHl0cF72NrPN4RgamcHhL9Rkal0qS8RNeEqOTKd+f+F97uYSFYMdcV0KR4N0m1yL8yLNq0r5brlzL2/O6PAB8w6x8oR2HSsDTouqjaYF/LlbIgffs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177341974193863.99839926672314; Fri, 13 Mar 2026 09:35:41 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253910.1549879 (Exim 4.92) (envelope-from ) id 1w15Th-0006i7-BA; Fri, 13 Mar 2026 16:35:09 +0000 Received: by outflank-mailman (output) from mailman id 1253910.1549879; Fri, 13 Mar 2026 16:35:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Th-0006hb-5j; Fri, 13 Mar 2026 16:35:09 +0000 Received: by outflank-mailman (input) for mailman id 1253910; Fri, 13 Mar 2026 16:35:08 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tg-0006Ps-9T for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:08 +0000 Received: from mail179-36.suw41.mandrillapp.com (mail179-36.suw41.mandrillapp.com [198.2.179.36]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 97848431-1efa-11f1-b164-2bf370ae4941; Fri, 13 Mar 2026 17:35:06 +0100 (CET) Received: from pmta12.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1]) by mail179-36.suw41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT457MqzlfgFM for ; Fri, 13 Mar 2026 16:35:04 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 59b3d60feaeb4f9283ad2ed0cc719c6c; Fri, 13 Mar 2026 16:35:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 97848431-1efa-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419704; x=1773689704; bh=oACyCsIVsnwSUu/TjdHiufId4TiklazXrlevhafTKHs=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=LR0cXLuQPXiCs/hQvAs5Ib+He1LVsnXEdISk+MtdSZu3OYmcbf5hyENSkayKq70tR Tc53IbnybhxF1NrcA9rIe0+BXO7RwwJud6ZZBDT6O6OA08VPMBwKVTwCTk8fafdJOq tZfTjn+PJR1Ci9V6VknsKphBZaoIouvo72dNGBsfDFR/N2uqOi6CrWB6dlGTOoxUTN UJqlm4xkLP8pysBnSmLDGqymeiNgqqaslHtpTe2z+t8JDN7kZ2gfaeMJBukTzpIkH6 hWk3C41NRczl6jS3kv2vHVB0pDQIpQnzBxIttHUsnn3HxEDQnz2P83f1l/rsed1mJs rYBWiR3IWoCXQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419704; x=1773680204; i=thierry.escande@vates.tech; bh=oACyCsIVsnwSUu/TjdHiufId4TiklazXrlevhafTKHs=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=dIoncJw2UWsY2zZT+HwGlQQRrmkkp2NkD5vkRdPk+SXb1CXLMEscVx1w+Jpgj9hyp pSRR7+ERsbXw+CLEUP47xONrCpLVd/xIRv84qJ+hES9CfvkhRnbUT8qIZY1BGLosd3 3NmgLPtKc8IBzMrU2ASfjmDKnSsMS2wA1b5+hkk/+bhMIaTQVdjK0RH4aU+UYiHMYY 5AgNMWb8uyGL93wUaOw6zUACyeG+xv4NlvHzjQfqAO52yuR5QOQszzBWb55MK/2lbR NPmtm/KayNElsEmAEGyzhkLDfze7Pla8rpxqBpHpm+j8ROdjWQBGjar/euaHPeTb+R HXExTYpA89E4w== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2014/17]=20libacpi:=20build=20ACPI=20MCFG=20table=20if=20requested?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419704069 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-15-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.59b3d60feaeb4f9283ad2ed0cc719c6c?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:04 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419744205154100 Content-Type: text/plain; charset="utf-8" This adds construct_mcfg() function to libacpi which allows to build MCFG table for a given mmconfig_addr/mmconfig_len pair if the ACPI_HAS_MCFG flag was specified in acpi_config struct. The maximum bus number is calculated from mmconfig_size using MCFG_SIZE_TO_NUM_BUSES macro (1MByte of MMIO space per bus). Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- tools/libacpi/acpi2_0.h | 17 ++++++++++++++++ tools/libacpi/build.c | 43 +++++++++++++++++++++++++++++++++++++++++ tools/libacpi/libacpi.h | 6 ++++++ 3 files changed, 66 insertions(+) diff --git a/tools/libacpi/acpi2_0.h b/tools/libacpi/acpi2_0.h index 51623e2a8a..2b16bd636a 100644 --- a/tools/libacpi/acpi2_0.h +++ b/tools/libacpi/acpi2_0.h @@ -442,6 +442,21 @@ struct acpi_20_slit { uint8_t entry[0]; }; =20 +/* + * PCI Express Memory Mapped Configuration Description Table + */ +struct acpi_10_mcfg { + struct acpi_header header; + uint8_t reserved[8]; + struct { + uint64_t base_address; + uint16_t pci_segment; + uint8_t start_pci_bus_num; + uint8_t end_pci_bus_num; + uint32_t reserved; + } entries[1]; +}; + /* * Table Signatures. */ @@ -457,6 +472,7 @@ struct acpi_20_slit { #define ACPI_2_0_WAET_SIGNATURE ASCII32('W','A','E','T') #define ACPI_2_0_SRAT_SIGNATURE ASCII32('S','R','A','T') #define ACPI_2_0_SLIT_SIGNATURE ASCII32('S','L','I','T') +#define ACPI_MCFG_SIGNATURE ASCII32('M','C','F','G') =20 /* * Table revision numbers. @@ -472,6 +488,7 @@ struct acpi_20_slit { #define ACPI_1_0_FADT_REVISION 0x01 #define ACPI_2_0_SRAT_REVISION 0x01 #define ACPI_2_0_SLIT_REVISION 0x01 +#define ACPI_1_0_MCFG_REVISION 0x01 =20 #pragma pack () =20 diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c index 95188e217e..90080c76c4 100644 --- a/tools/libacpi/build.c +++ b/tools/libacpi/build.c @@ -295,6 +295,37 @@ static struct acpi_20_slit *construct_slit(struct acpi= _ctxt *ctxt, return slit; } =20 +static struct acpi_10_mcfg *construct_mcfg(struct acpi_ctxt *ctxt, + const struct acpi_config *config) +{ + struct acpi_10_mcfg *mcfg; + + /* Warning: this code expects that we have only one PCI segment */ + mcfg =3D ctxt->mem_ops.alloc(ctxt, sizeof(*mcfg), 16); + if ( !mcfg ) + return NULL; + + memset(mcfg, 0, sizeof(*mcfg)); + mcfg->header.signature =3D ACPI_MCFG_SIGNATURE; + mcfg->header.revision =3D ACPI_1_0_MCFG_REVISION; + mcfg->header.creator_id =3D ACPI_CREATOR_ID; + mcfg->header.creator_revision =3D ACPI_CREATOR_REVISION; + mcfg->header.length =3D sizeof(*mcfg); + mcfg->header.oem_revision =3D ACPI_OEM_REVISION; + fixed_strcpy(mcfg->header.oem_id, ACPI_OEM_ID); + fixed_strcpy(mcfg->header.oem_table_id, ACPI_OEM_TABLE_ID); + + mcfg->entries[0].base_address =3D config->mmconfig_addr; + mcfg->entries[0].pci_segment =3D 0; + mcfg->entries[0].start_pci_bus_num =3D 0; + mcfg->entries[0].end_pci_bus_num =3D + MCFG_SIZE_TO_NUM_BUSES(config->mmconfig_size) - 1; + + set_checksum(mcfg, offsetof(struct acpi_header, checksum), sizeof(*mcf= g)); + + return mcfg; +} + static int construct_passthrough_tables(struct acpi_ctxt *ctxt, unsigned long *table_ptrs, int nr_tables, @@ -343,6 +374,7 @@ static int construct_secondary_tables(struct acpi_ctxt = *ctxt, struct acpi_20_waet *waet; struct acpi_20_tcpa *tcpa; struct acpi_20_tpm2 *tpm2; + struct acpi_10_mcfg *mcfg; unsigned char *ssdt; void *lasa; =20 @@ -402,6 +434,17 @@ static int construct_secondary_tables(struct acpi_ctxt= *ctxt, memcpy(ssdt, ssdt_laptop_slate, sizeof(ssdt_laptop_slate)); table_ptrs[nr_tables++] =3D ctxt->mem_ops.v2p(ctxt, ssdt); } + + /* MCFG */ + if ( config->table_flags & ACPI_HAS_MCFG ) + { + mcfg =3D construct_mcfg(ctxt, config); + if ( !mcfg ) + return -1; + + table_ptrs[nr_tables++] =3D ctxt->mem_ops.v2p(ctxt, mcfg); + } + /* TPM and its SSDT. */ if ( config->table_flags & ACPI_HAS_TPM ) { diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h index deda39e5db..b2abda90b1 100644 --- a/tools/libacpi/libacpi.h +++ b/tools/libacpi/libacpi.h @@ -27,6 +27,9 @@ #define ACPI_HAS_8042 (1<<13) #define ACPI_HAS_CMOS_RTC (1<<14) #define ACPI_HAS_SSDT_LAPTOP_SLATE (1<<15) +#define ACPI_HAS_MCFG (1<<16) + +#define MCFG_SIZE_TO_NUM_BUSES(size) ((size) >> 20) =20 struct xen_vmemrange; struct acpi_numa { @@ -89,6 +92,9 @@ struct acpi_config { uint32_t ioapic_base_address; uint16_t pci_isa_irq_mask; uint8_t ioapic_id; + + uint64_t mmconfig_addr; + uint32_t mmconfig_size; }; =20 int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config); --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419882; cv=none; d=zohomail.com; s=zohoarc; b=ci+iCj8K0SVs2OEYdDXqXlOQLRvC4VfNhkXq6uaBgR3Ni/7jhtHXHSIUdqyuP7XoZdm3wC9IWg9aGaBXsMNGxU/w4qdolUAjJiKaIYO2SiOp7gIBdUhdRwN3W7IQ/6t5oO1jJPUCUoII9w8cWUSytbxoaAVAX706CXbVTY7RIQ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419882; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7Tb9FoFWUrTG8bVI2BmSiKFAzIP/VrW/gdQM1MC0oms=; b=ZRApX0LgU4Kwn/+vvSzNoWKCztfNkqjoIz3ZBrqO8TmE2T3A3JiXy0s3fuo6DVmuBgvaRQ3tdVoBD9Gkn5ZUQvOh39hKa00kDrb3nniOWahltfdrVVev9EG80Q46jPVvMeucebmq3M8UOBgr42tnDEF8LYjc/GowF1AfucwOQRQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 17734198821611012.9957390386493; Fri, 13 Mar 2026 09:38:02 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1254064.1550081 (Exim 4.92) (envelope-from ) id 1w15WB-0001Ny-AQ; Fri, 13 Mar 2026 16:37:43 +0000 Received: by outflank-mailman (output) from mailman id 1254064.1550081; Fri, 13 Mar 2026 16:37:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15WB-0001Nn-62; Fri, 13 Mar 2026 16:37:43 +0000 Received: by outflank-mailman (input) for mailman id 1254064; Fri, 13 Mar 2026 16:37:42 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tq-0006Ek-OL for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:18 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9a83c461-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:10 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT52z3lzPm0VQt for ; Fri, 13 Mar 2026 16:35:05 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 0d58c467262f41fd83129dba59f499f8; Fri, 13 Mar 2026 16:35:05 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9a83c461-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419705; x=1773689705; bh=7Tb9FoFWUrTG8bVI2BmSiKFAzIP/VrW/gdQM1MC0oms=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=tVTR8ZL+tGzsruvdEkBKwXPgUz58kYymfrscpoGZzQfkjym4/vkwPUmFlpPLnNSLM DEgYLBS31r/pv1MzcJ+cmYvGeY2FiRxT+O3F2CkwCmPCWNB8nOSMd6DXbMBL4HIazj grMJ4BxQ6kttNnlEb/zyNBI2CQfU4EBMG/mfo8CBHMb3uNYSMX8whGn/YjuqjJktqM Bgq0K6D+GvFucvA4tj+mhmhjYkpr+HDqlw95UPFLdJYbIcgcysYX0nc+0txsTEw07a u9/LVT6rytYUN248JbVKq7pCNOO047mRFdJfw2ESrpxi2xljvnnMVswnQPsiuTjzL4 PBqZNHLYYNIEA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419705; x=1773680205; i=thierry.escande@vates.tech; bh=7Tb9FoFWUrTG8bVI2BmSiKFAzIP/VrW/gdQM1MC0oms=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=n7hT4u57+/WziwtTPyLi72zdqfKdJdi+w4ywlBQDjtIBMzrlWuDnKpfDljbg3IpQl OSJ7wMdvfGFt+zCxmgd7p5RXMFC/K1FVMxSoLhleX1h5vef/I8fZUsfigDVHjnIKw1 a50UV4tuBp4YU/eTScAnCikpsXCxE0ljkkBsS1kNFb/mUs8VuAab0ywgdyhdtO7xy8 PF6+rj1gdeCCfdJ5eh0LGvmAljng2+Zci7YjLYhfB0SNQ/qpp3kQtmFK8g5Pgwa208 HR1+ONeFHgjSmGZ3UaC77NOz33QwV/rFE+SSqdap+jbna1f3xsYh4sTxUWLWNOG6wH yC08iq99W8UNw== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2015/17]=20hvmloader:=20Set=20MCFG=20in=20ACPI=20table?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419704313 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" , "Anthony PERARD" Message-Id: <20260313163455.790692-16-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.0d58c467262f41fd83129dba59f499f8?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:05 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity thierry.escande@vates.tech) (identity @mandrillapp.com) X-ZM-MESSAGEID: 1773419882989158500 Content-Type: text/plain; charset="utf-8" This patch extends hvmloader_acpi_build_tables() to detect if MMCONFIG is available by obtaining its base address and size from the hypercall HVMOP_get_ecam_space and sets the flag ACPI_HAS_MCFG in the ACPI config if needed. This also sets the MMCONFIG area in E820 map using the same method. Signed-off-by: Thierry Escande --- tools/firmware/hvmloader/e820.c | 11 +++++++++++ tools/firmware/hvmloader/util.c | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/firmware/hvmloader/e820.c b/tools/firmware/hvmloader/e82= 0.c index 86d39544e8..ff5c270f57 100644 --- a/tools/firmware/hvmloader/e820.c +++ b/tools/firmware/hvmloader/e820.c @@ -158,6 +158,8 @@ int build_e820_table(struct e820entry *e820, unsigned long acpi_mem_end =3D acpi_enabled ? ACPI_MEMORY_DYNAMIC_START + (acpi_pages_allocated() << PAGE_SHIFT)= : RESERVED_MEMBASE; + uint64_t mmconfig_addr; + uint32_t mmconfig_size; =20 if ( !lowmem_reserved_base ) lowmem_reserved_base =3D 0xA0000; @@ -260,6 +262,15 @@ int build_e820_table(struct e820entry *e820, nr++; } =20 + /* mark MMCONFIG area */ + if ( ! hvm_get_ecam_space(&mmconfig_addr, &mmconfig_size) ) + { + e820[nr].addr =3D mmconfig_addr; + e820[nr].size =3D mmconfig_size; + e820[nr].type =3D E820_RESERVED; + nr++; + } + /* Low RAM goes here. Reserve space for special pages. */ BUG_ON(low_mem_end < MB(2)); =20 diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/uti= l.c index ee7a09b5bc..2cd1cadfc3 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -903,6 +903,8 @@ void hvmloader_acpi_build_tables(struct acpi_config *co= nfig, struct acpi_ctxt ctxt; long long tpm_version; char *end; + uint64_t mmconfig_addr; + uint32_t mmconfig_size; =20 /* Allocate and initialise the acpi info area. */ mem_hole_populate_ram(ACPI_INFO_PHYSICAL_ADDRESS >> PAGE_SHIFT, 1); @@ -953,6 +955,13 @@ void hvmloader_acpi_build_tables(struct acpi_config *c= onfig, config->pci_hi_len =3D pci_hi_mem_end - pci_hi_mem_start; } =20 + if ( ! hvm_get_ecam_space(&mmconfig_addr, &mmconfig_size) ) + { + config->table_flags |=3D ACPI_HAS_MCFG; + config->mmconfig_addr =3D mmconfig_addr; + config->mmconfig_size =3D mmconfig_size; + } + s =3D xenstore_read("platform/generation-id", "0:0"); if ( s ) { --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419730; cv=none; d=zohomail.com; s=zohoarc; b=kupJPAnTqKbXZHHPz+lMpmg48qzwGTMW9ASo1tUBGUAPR30yfn2mn2zGh1T+tb/Yso5HjwJi0XnxPUHSEdRKoTZOot/sIjIcDCOvuP5PmeerKTWFkZgiUlqhfpoC+se60vfmeVQzFv2GjZ8dyxt4SBSP2JL8FDpUdnGh9zNePf8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419730; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=z20eYvkhwyKw++a+c98wvdYw/gsjZHxgfR6V0/vLjGg=; b=Du4jCdl9LuOOWgz/QB61CVc12aBlvW1elds0sxqWAQfvhvV0wF87TL0A/07eyavLGu7b0C90/LcnvcaBlI3lg23PvbZB493/uYIqk3j14R9ZuFif2OwyW86bIjgYaDaB76vOR/3CDou+Ano+fz8zEcLoJJ1oUBRbIzvMtmWCR0A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773419730835369.0942090900314; Fri, 13 Mar 2026 09:35:30 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1253912.1549901 (Exim 4.92) (envelope-from ) id 1w15Tj-0007KS-4H; Fri, 13 Mar 2026 16:35:11 +0000 Received: by outflank-mailman (output) from mailman id 1253912.1549901; Fri, 13 Mar 2026 16:35:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Ti-0007Jm-VD; Fri, 13 Mar 2026 16:35:10 +0000 Received: by outflank-mailman (input) for mailman id 1253912; Fri, 13 Mar 2026 16:35:09 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tg-0006Ps-UM for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:08 +0000 Received: from mail179-36.suw41.mandrillapp.com (mail179-36.suw41.mandrillapp.com [198.2.179.36]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 98bb3473-1efa-11f1-b164-2bf370ae4941; Fri, 13 Mar 2026 17:35:07 +0100 (CET) Received: from pmta12.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1]) by mail179-36.suw41.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT52GHlzlfhqS for ; Fri, 13 Mar 2026 16:35:05 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id f3d1f1e41b594d69b286bae8494a8c00; Fri, 13 Mar 2026 16:35:05 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 98bb3473-1efa-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419705; x=1773689705; bh=z20eYvkhwyKw++a+c98wvdYw/gsjZHxgfR6V0/vLjGg=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=c2lhrOE3EcoU+EqduNWxBC4UypXSqQYjFiRydu7L4GjSJUyhHHxgFzNJ6l4az03c/ OYBjJMh8l3Nh8sDPLqZPhbRdJ5yJUr+YaUx9j7SDFlC0XKFtlFJCWFJq1nOuPBwEtr V5eC1kjAvHVZufGS9CfvWEpIc/80X2R0kbQtYHM9FmqzXKav43vEKjA08hlzhys9hA d64PDAuTvQAOd0sYFDwK9B4lt8VBWWRBYJgfJ6Jz7Qo+Jb8w3ethpTiIBFb40hApLd MCBrSrXGZYpZgYa/hGUYaVjQvy72phdyE+K2QGlOR18gI9kwXhfP9Xl+SVJwVdxdca E1mFLVoUKEruQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419705; x=1773680205; i=thierry.escande@vates.tech; bh=z20eYvkhwyKw++a+c98wvdYw/gsjZHxgfR6V0/vLjGg=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=WeBWCsYS+nyPsnO9wjCuwyRnDA6FRr+o2IeHHhTkO42qeoVJOHN0IhNIViAOHnb5g +f2eyy77/jJIj9Gg1dwJf8/iiyW2TVR5vedTpLqSyyGItdbc6oi7ai/ymtqx7+lzEP Oy/bFqfy770baXYkhgXCvnwLmg4NCeH/eUHTLJuB3+qS5mMOzzUgjrFxcNnCftLrg+ JxU4vQFSLtqsuAoTkUBI0eJmmnGzJbxJCSjaB7M1EI9eP6Xrm4RDYlHyHKrEC3dwgM pGtucqvZRfTKWv7Tu2JPryvGI9nrsD9bMSUDsC7u/I/Ae61lTNBqVO0jrkn8djijjP s63ZCyLJZEr3Q== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2016/17]=20Handle=20PCIe=20ECAM=20space=20access=20from=20guests?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419704539 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Jan Beulich" , "Andrew Cooper" , "=?utf-8?Q?Roger=20Pau=20Monn=C3=A9?=" Message-Id: <20260313163455.790692-17-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.f3d1f1e41b594d69b286bae8494a8c00?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:05 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419732200158500 Content-Type: text/plain; charset="utf-8" This patch adds the logic to decode MMIO-based PCIe ECAM accesses. If the IOREQ_TYPE_COPY request is within the ECAM address space configured by hvmloader, the ioreq type is set to XEN_DMOP_IO_RANGE_PCI and the sbdf decoded from the accessed address. Signed-off-by: Thierry Escande --- xen/arch/x86/hvm/ioreq.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c index a5fa97e149..022fe05222 100644 --- a/xen/arch/x86/hvm/ioreq.c +++ b/xen/arch/x86/hvm/ioreq.c @@ -268,6 +268,8 @@ bool arch_ioreq_server_get_type_addr(const struct domai= n *d, uint64_t *addr) { unsigned int cf8 =3D d->arch.hvm.pci_cf8; + unsigned long mmio_start =3D (p->type =3D=3D IOREQ_TYPE_COPY) ? + ioreq_mmio_first_byte(p) : 0; =20 if ( p->type !=3D IOREQ_TYPE_COPY && p->type !=3D IOREQ_TYPE_PIO ) return false; @@ -298,6 +300,19 @@ bool arch_ioreq_server_get_type_addr(const struct doma= in *d, *addr |=3D CF8_ADDR_HI(cf8); } } + else if ( p->type =3D=3D IOREQ_TYPE_COPY && + (mmio_start >=3D d->arch.ecam_addr && + mmio_start < (d->arch.ecam_addr + d->arch.ecam_size)) ) + { + pci_sbdf_t sbdf; + unsigned int reg =3D mmio_start & ~PAGE_MASK; + + sbdf.bdf =3D (((mmio_start - d->arch.ecam_addr) & 0x0ffff000) >> = 12); + sbdf.seg =3D 0; + + *type =3D XEN_DMOP_IO_RANGE_PCI; + *addr =3D ((uint64_t)sbdf.sbdf << 32) | reg; + } else { *type =3D (p->type =3D=3D IOREQ_TYPE_PIO) ? --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech From nobody Mon Mar 23 19:52:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=vates.tech ARC-Seal: i=1; a=rsa-sha256; t=1773419860; cv=none; d=zohomail.com; s=zohoarc; b=QMVE0Rl82xY1+13mFB2Z0AgWZt1UHc/xpvJ+WE4tNfUZMoSMRC3jgRW1tWguTS8RK6zsd1/vatpu3FT5OfLngkO/V59y7Ryyppjpwvs9bqsSBa7iMeUtpD4wbMl7mQUI8j3nZbP8vJohK2mLNTEFzJF7S8xv1zROr80y83ekN1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773419860; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zCToo0BUt48GgGQBpWxoSVCEuPxLKsIzXwRS6hk9B5M=; b=PGrBl1UmVYbmuwlNL4JLSJq6nL+/qSg5u4xT/8qQmcfEWribgeVR98qAqsTjFzlv50YvsS4g9Pcos5gQrRiZtj9vugWLVEQ7bHJF6s5kjTTRlrd4mRWY9V6JsNhWpaUU575NfyBT1LlPDoohBu/y8L++FJ6iYvuNgdr5V139Vxk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=thierry.escande@vates.tech; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177341986076531.751714672892376; Fri, 13 Mar 2026 09:37:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1254032.1550035 (Exim 4.92) (envelope-from ) id 1w15Vt-0007Q2-Mk; Fri, 13 Mar 2026 16:37:25 +0000 Received: by outflank-mailman (output) from mailman id 1254032.1550035; Fri, 13 Mar 2026 16:37:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Vt-0007OE-Iw; Fri, 13 Mar 2026 16:37:25 +0000 Received: by outflank-mailman (input) for mailman id 1254032; Fri, 13 Mar 2026 16:37:24 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1w15Tr-0006Ek-OD for xen-devel@lists.xenproject.org; Fri, 13 Mar 2026 16:35:19 +0000 Received: from mail134-15.atl141.mandrillapp.com (mail134-15.atl141.mandrillapp.com [198.2.134.15]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9b963385-1efa-11f1-9ccf-f158ae23cfc8; Fri, 13 Mar 2026 17:35:12 +0100 (CET) Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail134-15.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4fXVT53DRJzPm0VQy for ; Fri, 13 Mar 2026 16:35:05 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 444c273532074034b177761798950319; Fri, 13 Mar 2026 16:35:05 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9b963385-1efa-11f1-9ccf-f158ae23cfc8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1773419705; x=1773689705; bh=zCToo0BUt48GgGQBpWxoSVCEuPxLKsIzXwRS6hk9B5M=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=kK1q9Z6xLekpynpevRex7JTlsukH91Fx35HwdyBHKHuuD2dWWaQDF4vnoFaocAtF4 TltRooNr2fn1uTGl+udUA9UwV8dzvHn0y//mDLmD4us/OC8vrmNFaiYwC9YA5MVv9T Rz7TY/hT/t6rwIuor21WAzHC5ZIJIz5+15+tkipYZldQvno/Ekv8o6xl4sd//Zm2Pl dGH+37qCjBx/Uv0f0d1jm8iqldvU5+KtSmxM1dYqMp0XZr3hX3gRf77akaq8Vt7Jms UTcJ36e2Niliudpniz/hdzg8QFO9kHBR9wAJ56VGeVi4KlkYrr+tkkw3zvES6rK/z4 w8w0A4LZ0rX+Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1773419705; x=1773680205; i=thierry.escande@vates.tech; bh=zCToo0BUt48GgGQBpWxoSVCEuPxLKsIzXwRS6hk9B5M=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=HrYXqO+KVPt/1J6K75FQMSUAtjTQtazfmHaheTF5Pg2nm6sIC5UbSE67B2mW9sN5O r9OtUiJfo2ZovCd/BUHGREH1IDxS8IjJ577zYKqKUyr/QQnTmFjKmSgApD4GnZjCUW vvX2J1Zi45jYSzlTgmiDnFMhvirvR9JHqNOmg3ijNjFl1vTmrzTcRQVm4fW7rrrAw/ DEYoJBv1ATrEe0tuEO5oKL5BSXUWijnV5gqhoOeDKqnN1I3+gR9kB4JfBbvrPpnW0z NHPeDLdpbukBtH32NvbsKH2UGW1qGLBBosobFsZ0p5b7x3kyblxFmwUJd3EgS7Nb5R xEjpdRvQTA7Bw== From: "Thierry Escande" Subject: =?utf-8?Q?[PATCH=2017/17]=20docs:=20provide=20description=20for=20device=5Fmodel=5Fmachine=20option?= X-Mailer: git-send-email 2.51.0 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1773419704742 To: xen-devel@lists.xenproject.org Cc: "Thierry Escande" , "Anthony PERARD" , "Alexey Gerasimenko" Message-Id: <20260313163455.790692-18-thierry.escande@vates.tech> In-Reply-To: <20260313163455.790692-1-thierry.escande@vates.tech> References: <20260313163455.790692-1-thierry.escande@vates.tech> X-Native-Encoded: 1 X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.444c273532074034b177761798950319?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20260313:md Date: Fri, 13 Mar 2026 16:35:05 +0000 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @mandrillapp.com) (identity thierry.escande@vates.tech) X-ZM-MESSAGEID: 1773419862769158500 Content-Type: text/plain; charset="utf-8" This patch adds description for 'device_model_machine' option which allows to control which chipset will be emulated by device model. Signed-off-by: Alexey Gerasimenko Signed-off-by: Thierry Escande --- docs/man/xl.cfg.5.pod.in | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index 27c455210b..67a5bc54a5 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -2963,6 +2963,33 @@ you have existing guests then, depending on the natu= re of the guest Operating System, you may wish to force them to use the device model which they were installed with. =20 +=3Ditem B + +Selects which chipset the device model should emulate for this +guest. + +Valid options are: + +=3Dover 4 + +=3Ditem B<"i440"> + +Use i440 emulation (a default setting) + +=3Ditem B<"q35"> + +Use Q35/ICH9 emulation. This enables additional features for +PCIe device passthrough + +=3Dback + +Note that omitting device_model_machine parameter means i440 system +by default, so the default behavior doesn't change for old domain +config files. + +It is recommended to install the guest OS from scratch to avoid issues +due to the emulated platform change. + =3Ditem B =20 Override the path to the binary to be used as the device-model running in --=20 2.51.0 -- Thierry Escande | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech