From patchwork Thu Feb 27 16:00:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mauro Carvalho Chehab X-Patchwork-Id: 13994882 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 6BE3BC19F2E for ; Thu, 27 Feb 2025 16:13:10 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tngK5-00076A-Pb; Thu, 27 Feb 2025 11:01:17 -0500 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 1tngJw-0006yM-7D; Thu, 27 Feb 2025 11:01:09 -0500 Received: from tor.source.kernel.org ([2600:3c04::f03c:95ff:fe5e:7468]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tngJs-0007Fv-NB; Thu, 27 Feb 2025 11:01:07 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 77F6B6156B; Thu, 27 Feb 2025 16:00:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8BB39C4CEE8; Thu, 27 Feb 2025 16:01:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740672062; bh=CJdMczjk8lJZY4gc13JYCbZZS+ZSJu7ONYadUHYeag4=; h=From:To:Cc:Subject:Date:From; b=jJXtzZCQLcwj/jUPm+PjdxzJ73q43BlFWguSoLtcrJG1h6JLuEQuIwndzAeMxUYgu Xy/JT83rak+iP5q3yncs3eVKFBKPd4U7IWSY/S9UbWVQz9brVzV8LvVC4hjg5hs3rf wbBPipMcaAYIbAGt3X+AwPNDbt//TQskMGWh4xjS8ZRXI+zv9ncr7CZAXsXX2gS+aI kUcTzOfZEmyZCq9to6J3SSYhf5ArKOUxo+9yVZs742w1Sa4PUVDb18Al0dY6kzhRPo iv/uVQqs4u9d8up0LYNKcxZ7ozF2TULbrXr/FCv5GRmTLSLdBpeU6ZxXDfvqEn+Ud9 8M2M2UoB/7Ong== Received: from mchehab by mail.kernel.org with local (Exim 4.98) (envelope-from ) id 1tngJo-000000023ai-2zLr; Thu, 27 Feb 2025 17:01:00 +0100 From: Mauro Carvalho Chehab To: Igor Mammedov , "Michael S . Tsirkin" Cc: Jonathan Cameron , Shiju Jose , qemu-arm@nongnu.org, qemu-devel@nongnu.org, Mauro Carvalho Chehab , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Ani Sinha , Cleber Rosa , Dongjiu Geng , Eduardo Habkost , Eric Blake , John Snow , Marcel Apfelbaum , Markus Armbruster , Michael Roth , Paolo Bonzini , Peter Maydell , Shannon Zhao , Yanan Wang , Zhao Liu , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 00/19] Change ghes to use HEST-based offsets and add support for error inject Date: Thu, 27 Feb 2025 17:00:38 +0100 Message-ID: X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Received-SPF: pass client-ip=2600:3c04::f03c:95ff:fe5e:7468; envelope-from=mchehab+huawei@kernel.org; helo=tor.source.kernel.org X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.438, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Now that the ghes preparation patches were merged, let's add support for error injection. On this version, HEST table got added to ACPI tables testing for aarch64 virt. There are also some patch reorder to help reviewers to check the changes. The code itself is almost identical to v4, with just a few minor nits addressed. --- v6: - some minor nits addressed: - use GPA instead of offset; - merged two patches; - fixed a couple of long line coding style issues; - the HEST/DSDT diff inside a patch was changed to avoid troubles applying it. v5: - make checkpatch happier; - HEST table is now tested; - some changes at HEST spec documentation to align with code changes; - extra care was taken with regards to git bisectability. v4: - added an extra comment for AcpiGhesState structure; - patches reordered; - no functional changes, just code shift between the patches in this series. v3: - addressed more nits; - hest_add_le now points to the beginning of HEST table; - removed HEST from tests/data/acpi; - added an extra patch to not use fw_cfg with virt-10.0 for hw_error_le v2: - address some nits; - improved ags cleanup patch and removed ags.present field; - added some missing le*_to_cpu() calls; - update date at copyright for new files to 2024-2025; - qmp command changed to: inject-ghes-v2-error ans since updated to 10.0; - added HEST and DSDT tables after the changes to make check target happy. (two patches: first one whitelisting such tables; second one removing from whitelist and updating/adding such tables to tests/data/acpi) Mauro Carvalho Chehab (19): tests/acpi: virt: add an empty HEST file tests/qtest/bios-tables-test: extend to also check HEST table tests/acpi: virt: update HEST file with its current data acpi/ghes: Cleanup the code which gets ghes ged state acpi/ghes: prepare to change the way HEST offsets are calculated acpi/ghes: add a firmware file with HEST address acpi/ghes: Use HEST table offsets when preparing GHES records acpi/ghes: don't hard-code the number of sources for HEST table acpi/ghes: add a notifier to notify when error data is ready acpi/generic_event_device: Update GHES migration to cover hest addr acpi/generic_event_device: add logic to detect if HEST addr is available acpi/generic_event_device: add an APEI error device tests/acpi: virt: allow acpi table changes at DSDT and HEST tables arm/virt: Wire up a GED error device for ACPI / GHES qapi/acpi-hest: add an interface to do generic CPER error injection acpi/generic_event_device.c: enable use_hest_addr for QEMU 10.x tests/acpi: virt: update HEST and DSDT tables docs: hest: add new "etc/acpi_table_hest_addr" and update workflow scripts/ghes_inject: add a script to generate GHES error inject MAINTAINERS | 10 + docs/specs/acpi_hest_ghes.rst | 28 +- hw/acpi/Kconfig | 5 + hw/acpi/aml-build.c | 10 + hw/acpi/generic_event_device.c | 44 ++ hw/acpi/ghes-stub.c | 7 +- hw/acpi/ghes.c | 231 ++++-- hw/acpi/ghes_cper.c | 38 + hw/acpi/ghes_cper_stub.c | 19 + hw/acpi/meson.build | 2 + hw/arm/virt-acpi-build.c | 35 +- hw/arm/virt.c | 19 +- hw/core/machine.c | 2 + include/hw/acpi/acpi_dev_interface.h | 1 + include/hw/acpi/aml-build.h | 2 + include/hw/acpi/generic_event_device.h | 1 + include/hw/acpi/ghes.h | 51 +- include/hw/arm/virt.h | 2 + qapi/acpi-hest.json | 35 + qapi/meson.build | 1 + qapi/qapi-schema.json | 1 + scripts/arm_processor_error.py | 476 ++++++++++++ scripts/ghes_inject.py | 51 ++ scripts/qmp_helper.py | 703 ++++++++++++++++++ target/arm/kvm.c | 7 +- tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5240 bytes .../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5326 bytes tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6601 bytes tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7723 bytes tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5442 bytes tests/data/acpi/aarch64/virt/HEST | Bin 0 -> 224 bytes tests/qtest/bios-tables-test.c | 2 +- 32 files changed, 1692 insertions(+), 91 deletions(-) create mode 100644 hw/acpi/ghes_cper.c create mode 100644 hw/acpi/ghes_cper_stub.c create mode 100644 qapi/acpi-hest.json create mode 100644 scripts/arm_processor_error.py create mode 100755 scripts/ghes_inject.py create mode 100755 scripts/qmp_helper.py create mode 100644 tests/data/acpi/aarch64/virt/HEST