From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E08DAD2AB1B for ; Tue, 29 Oct 2024 10:26:34 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t5jQU-0004oL-VY; Tue, 29 Oct 2024 06:26:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t5jQI-0004nC-8R for qemu-devel@nongnu.org; Tue, 29 Oct 2024 06:26:04 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t5jQB-0003PQ-UQ for qemu-devel@nongnu.org; Tue, 29 Oct 2024 06:26:00 -0400 Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4Xd5wB3cDrz6JB3N; Tue, 29 Oct 2024 18:24:26 +0800 (CST) Received: from frapeml500008.china.huawei.com (unknown [7.182.85.71]) by mail.maildlp.com (Postfix) with ESMTPS id 74A551400D9; Tue, 29 Oct 2024 18:25:41 +0800 (CST) Received: from localhost (10.203.177.66) by frapeml500008.china.huawei.com (7.182.85.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 29 Oct 2024 11:25:40 +0100 Date: Tue, 29 Oct 2024 10:25:38 +0000 To: , , Markus Armbruster , , CC: , , , Richard Henderson , "Dave Jiang" , Huang Ying , "Paolo Bonzini" , , Michael Roth , Ani Sinha , Subject: Re: [PATCH v6 00/15] acpi: NUMA nodes for CXL HB as GP + complex NUMA test Message-ID: <20241029102517.00003f56@huawei.com> In-Reply-To: <20240916171017.1841767-1-Jonathan.Cameron@huawei.com> References: <20240916171017.1841767-1-Jonathan.Cameron@huawei.com> Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.203.177.66] X-ClientProxiedBy: lhrpeml500010.china.huawei.com (7.191.174.240) To frapeml500008.china.huawei.com (7.182.85.71) Received-SPF: pass client-ip=185.176.79.56; envelope-from=jonathan.cameron@huawei.com; helo=frasgout.his.huawei.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Jonathan Cameron From: Jonathan Cameron via Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Gentle ping. This series still applied to upstream when I tested it yesterday. On Mon, 16 Sep 2024 18:10:05 +0100 Jonathan Cameron wrote: > v6 changes: > - 2 new patches (11 and 12) to improve things in existing code after > Igor pointed them out in the new code. > - More detailed example provided for docs for control of Generic Ports. > This has proved a difficult concept to convey. > Note there is one question Igor raised for Markus: > - Is exit(1) ok for failure paths rather than error_fatal. > Markus has acked the patch (10) but maybe this part was not his > focus. > - Rebased. Table data regenerated as other series touched DSDT. > > Title becoming a little misleading as now this does a bunch of other > stuff as precursors, but I've kept it to maintain association with v3 and > before. A more accurate series title is probably > acpi: Rework GI affinity structure generation, add GPs + complex NUMA test. > > ACPI 6.5 introduced Generic Port Affinity Structures to close a system > description gap that was a problem for CXL memory systems. > It defines an new SRAT Affinity structure (and hence allows creation of an > ACPI Proximity Node which can only be defined via an SRAT structure) > for the boundary between a discoverable fabric and a non discoverable > system interconnects etc. > > The HMAT data on latency and bandwidth is combined with discoverable > information from the CXL bus (link speeds, lane counts) and CXL devices > (switch port to port characteristics and USP to memory, via CDAT tables > read from the device). QEMU has supported the rest of the elements > of this chain for a while but now the kernel has caught up and we need > the missing element of Generic Ports (this code has been used extensively > in testing and debugging that kernel support, some resulting fixes > currently under review). > > Generic Port Affinity Structures are very similar to the recently > added Generic Initiator Affinity Structures (GI) so this series > factors out and reuses much of that infrastructure for reuse > There are subtle differences (beyond the obvious structure ID change). > > - The ACPI spec example (and linux kernel support) has a Generic > Port not as associated with the CXL root port, but rather with > the CXL Host bridge. As a result, an ACPI handle is used (rather > than the PCI SBDF option for GIs). In QEMU the easiest way > to get to this is to target the root bridge PCI Bus, and > conveniently the root bridge bus number is used for the UID allowing > us to construct an appropriate entry. > > A key addition of this series is a complex NUMA topology example that > stretches the QEMU emulation code for GI, GP and nodes with just > CPUS, just memory, just hot pluggable memory, mixture of memory and CPUs. > > A similar test showed up a few NUMA related bugs with fixes applied for > 9.0 (note that one of these needs linux booted to identify that it > rejects the HMAT table and this test is a regression test for the > table generation only). > > https://lore.kernel.org/qemu-devel/2eb6672cfdaea7dacd8e9bb0523887f13b9f85ce.1710282274.git.mst@redhat.com/ > https://lore.kernel.org/qemu-devel/74e2845c5f95b0c139c79233ddb65bb17f2dd679.1710282274.git.mst@redhat.com/ > > > Jonathan Cameron (15): > hw/acpi: Fix ordering of BDF in Generic Initiator PCI Device Handle. > hw/acpi/GI: Fix trivial parameter alignment issue. > hw/acpi: Move AML building code for Generic Initiators to aml_build.c > hw/acpi: Rename build_all_acpi_generic_initiators() to > build_acpi_generic_initiator() > hw/pci: Add a busnr property to pci_props and use for acpi/gi > acpi/pci: Move Generic Initiator object handling into acpi/pci.* > hw/pci-bridge: Add acpi_uid property to TYPE_PXB_BUS > hw/i386/acpi: Use TYPE_PXB_BUS property acpi_uid for DSDT > hw/pci-host/gpex-acpi: Use acpi_uid property. > hw/acpi: Generic Port Affinity Structure support > hw/acpi: Make storage of node id uint32_t to reduce fragility > hw/acpi: Generic Initiator - add missing object class property > descriptions. > bios-tables-test: Allow for new acpihmat-generic-x test data. > bios-tables-test: Add complex SRAT / HMAT test for GI GP > bios-tables-test: Add data for complex numa test (GI, GP etc) > > qapi/qom.json | 41 +++ > include/hw/acpi/acpi_generic_initiator.h | 47 ---- > include/hw/acpi/aml-build.h | 7 + > include/hw/acpi/pci.h | 3 + > include/hw/pci/pci_bridge.h | 1 + > hw/acpi/acpi_generic_initiator.c | 148 ----------- > hw/acpi/aml-build.c | 83 ++++++ > hw/acpi/pci.c | 242 ++++++++++++++++++ > hw/arm/virt-acpi-build.c | 3 +- > hw/i386/acpi-build.c | 8 +- > hw/pci-bridge/pci_expander_bridge.c | 14 +- > hw/pci-host/gpex-acpi.c | 5 +- > hw/pci/pci.c | 14 + > tests/qtest/bios-tables-test.c | 97 +++++++ > hw/acpi/meson.build | 1 - > .../data/acpi/x86/q35/APIC.acpihmat-generic-x | Bin 0 -> 136 bytes > .../data/acpi/x86/q35/CEDT.acpihmat-generic-x | Bin 0 -> 68 bytes > .../data/acpi/x86/q35/DSDT.acpihmat-generic-x | Bin 0 -> 12566 bytes > .../data/acpi/x86/q35/HMAT.acpihmat-generic-x | Bin 0 -> 360 bytes > .../data/acpi/x86/q35/SRAT.acpihmat-generic-x | Bin 0 -> 520 bytes > 20 files changed, 511 insertions(+), 203 deletions(-) > delete mode 100644 include/hw/acpi/acpi_generic_initiator.h > delete mode 100644 hw/acpi/acpi_generic_initiator.c > create mode 100644 tests/data/acpi/x86/q35/APIC.acpihmat-generic-x > create mode 100644 tests/data/acpi/x86/q35/CEDT.acpihmat-generic-x > create mode 100644 tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x > create mode 100644 tests/data/acpi/x86/q35/HMAT.acpihmat-generic-x > create mode 100644 tests/data/acpi/x86/q35/SRAT.acpihmat-generic-x >