Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2194462/?format=api
{ "id": 2194462, "url": "http://patchwork.ozlabs.org/api/patches/2194462/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/202602091025447146cbSJ01TP_ckm5Y-zJv5X@zte.com.cn/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<202602091025447146cbSJ01TP_ckm5Y-zJv5X@zte.com.cn>", "list_archive_url": null, "date": "2026-02-09T02:25:44", "name": "[v6,2/4] hw/riscv/virt: Add acpi ged support", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "78a9dc4b220e4af9b12173bda4979ecbc6a78c5a", "submitter": { "id": 90817, "url": "http://patchwork.ozlabs.org/api/people/90817/?format=api", "name": "", "email": "liu.xuemei1@zte.com.cn" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/202602091025447146cbSJ01TP_ckm5Y-zJv5X@zte.com.cn/mbox/", "series": [ { "id": 491459, "url": "http://patchwork.ozlabs.org/api/series/491459/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=491459", "date": "2026-02-09T02:21:28", "name": "hw/riscv/virt: Add acpi ged and powerdown support", "version": 6, "mbox": "http://patchwork.ozlabs.org/series/491459/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2194462/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2194462/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)", "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4f8T8L0NNYz1xvc\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 09 Feb 2026 13:26:10 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vpGyO-00055n-JD; Sun, 08 Feb 2026 21:26:00 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <liu.xuemei1@zte.com.cn>)\n id 1vpGyM-000556-7T; Sun, 08 Feb 2026 21:25:58 -0500", "from mxct.zte.com.cn ([183.62.165.209])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <liu.xuemei1@zte.com.cn>)\n id 1vpGyK-0007bN-0S; Sun, 08 Feb 2026 21:25:57 -0500", "from mse-fl1.zte.com.cn (unknown [10.5.228.132])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mxct.zte.com.cn (FangMail) with ESMTPS id 4f8T7w1Dljz4xQX7;\n Mon, 09 Feb 2026 10:25:48 +0800 (CST)", "from xaxapp02.zte.com.cn ([10.88.97.241])\n by mse-fl1.zte.com.cn with SMTP id 6192PhpW092062;\n Mon, 9 Feb 2026 10:25:43 +0800 (+08)\n (envelope-from liu.xuemei1@zte.com.cn)", "from mapi (xaxapp05[null]) by mapi (Zmail) with MAPI id mid32;\n Mon, 9 Feb 2026 10:25:44 +0800 (CST)" ], "X-Zmail-TransId": "2afc698945a813d-8f702", "X-Mailer": "Zmail v1.0", "Message-ID": "<202602091025447146cbSJ01TP_ckm5Y-zJv5X@zte.com.cn>", "In-Reply-To": "<20260209102128930gN_7xu7bNIZcEawnIz3c7@zte.com.cn>", "References": "20260209102128930gN_7xu7bNIZcEawnIz3c7@zte.com.cn", "Date": "Mon, 9 Feb 2026 10:25:44 +0800 (CST)", "Mime-Version": "1.0", "From": "<liu.xuemei1@zte.com.cn>", "To": "<imammedo@redhat.com>, <alistair.francis@wdc.com>,\n <dbarboza@ventanamicro.com>, <sunilvl@ventanamicro.com>,\n <anisinha@redhat.com>", "Cc": "<pbonzini@redhat.com>, <palmer@dabbelt.com>, <liwei1518@gmail.com>,\n <zhiwei_liu@linux.alibaba.com>, <mst@redhat.com>,\n <qemu-devel@nongnu.org>, <qemu-riscv@nongnu.org>, <liu.xuemei1@zte.com.cn>", "Subject": "=?utf-8?q?=5BPATCH_v6_2/4=5D_hw/riscv/virt=3A_Add_acpi_ged_support?=", "Content-Type": "text/plain;\n\tcharset=\"UTF-8\"", "X-MAIL": "mse-fl1.zte.com.cn 6192PhpW092062", "X-TLS": "YES", "X-SPF-DOMAIN": "zte.com.cn", "X-ENVELOPE-SENDER": "liu.xuemei1@zte.com.cn", "X-SPF": "None", "X-SOURCE-IP": "10.5.228.132 unknown Mon, 09 Feb 2026 10:25:48 +0800", "X-Fangmail-Anti-Spam-Filtered": "true", "X-Fangmail-MID-QID": "698945AC.000/4f8T7w1Dljz4xQX7", "Received-SPF": "pass client-ip=183.62.165.209;\n envelope-from=liu.xuemei1@zte.com.cn; helo=mxct.zte.com.cn", "X-Spam_score_int": "-31", "X-Spam_score": "-3.2", "X-Spam_bar": "---", "X-Spam_report": "(-3.2 / 5.0 requ) BAYES_00=-1.9, CTE_8BIT_MISMATCH=0.951,\n RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,\n UNPARSEABLE_RELAY=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": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "From: Xuemei Liu <liu.xuemei1@zte.com.cn>\n\nThis patch adds ACPI Generic Event Device (GED) support to\nthe RISC-V virt machine.\n\nCo-authored-by: Björn Töpel <bjorn@rivosinc.com>\nSigned-off-by: Xuemei Liu <liu.xuemei1@zte.com.cn>\n---\n hw/riscv/Kconfig | 1 +\n hw/riscv/virt-acpi-build.c | 6 ++++++\n hw/riscv/virt.c | 23 +++++++++++++++++++++++\n include/hw/riscv/virt.h | 3 +++\n 4 files changed, 33 insertions(+)", "diff": "diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig\nindex 0222c93f87..3dad43669f 100644\n--- a/hw/riscv/Kconfig\n+++ b/hw/riscv/Kconfig\n@@ -68,6 +68,7 @@ config RISCV_VIRT\n select PLATFORM_BUS\n select ACPI\n select ACPI_PCI\n+ select ACPI_HW_REDUCED\n\n config SHAKTI_C\n bool\ndiff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c\nindex f1406cb683..1717b1c24f 100644\n--- a/hw/riscv/virt-acpi-build.c\n+++ b/hw/riscv/virt-acpi-build.c\n@@ -27,6 +27,7 @@\n #include \"hw/acpi/acpi-defs.h\"\n #include \"hw/acpi/acpi.h\"\n #include \"hw/acpi/aml-build.h\"\n+#include \"hw/acpi/generic_event_device.h\"\n #include \"hw/acpi/pci.h\"\n #include \"hw/acpi/utils.h\"\n #include \"hw/intc/riscv_aclint.h\"\n@@ -498,6 +499,11 @@ static void build_dsdt(GArray *table_data,\n acpi_dsdt_add_gpex_host(scope, PCIE_IRQ + VIRT_IRQCHIP_NUM_SOURCES * 2);\n }\n\n+ build_ged_aml(scope, \"\\\\_SB.\"GED_DEVICE,\n+ HOTPLUG_HANDLER(s->acpi_ged),\n+ ACPI_GED_IRQ, AML_SYSTEM_MEMORY,\n+ s->memmap[VIRT_ACPI_GED].base);\n+\n aml_append(dsdt, scope);\n\n /* copy AML table into ACPI tables blob and patch header there */\ndiff --git a/hw/riscv/virt.c b/hw/riscv/virt.c\nindex bd8608ea5b..1d7011b952 100644\n--- a/hw/riscv/virt.c\n+++ b/hw/riscv/virt.c\n@@ -55,6 +55,7 @@\n #include \"hw/pci-host/gpex.h\"\n #include \"hw/display/ramfb.h\"\n #include \"hw/acpi/aml-build.h\"\n+#include \"hw/acpi/generic_event_device.h\"\n #include \"qapi/qapi-visit-common.h\"\n #include \"hw/virtio/virtio-iommu.h\"\n #include \"hw/uefi/var-service-api.h\"\n@@ -95,6 +96,7 @@ static const MemMapEntry virt_memmap[] = {\n [VIRT_UART0] = { 0x10000000, 0x100 },\n [VIRT_VIRTIO] = { 0x10001000, 0x1000 },\n [VIRT_FW_CFG] = { 0x10100000, 0x18 },\n+ [VIRT_ACPI_GED] = { 0x10101000, ACPI_GED_EVT_SEL_LEN },\n [VIRT_FLASH] = { 0x20000000, 0x4000000 },\n [VIRT_IMSIC_M] = { 0x24000000, VIRT_IMSIC_MAX_SIZE },\n [VIRT_IMSIC_S] = { 0x28000000, VIRT_IMSIC_MAX_SIZE },\n@@ -1270,6 +1272,22 @@ static inline DeviceState *gpex_pcie_init(MemoryRegion *sys_mem,\n return dev;\n }\n\n+static DeviceState *create_acpi_ged(RISCVVirtState *s, DeviceState *irqchip)\n+{\n+ DeviceState *dev;\n+ uint32_t event = ACPI_GED_PWR_DOWN_EVT;\n+\n+ dev = qdev_new(TYPE_ACPI_GED);\n+ qdev_prop_set_uint32(dev, \"ged-event\", event);\n+ sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);\n+\n+ sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, s->memmap[VIRT_ACPI_GED].base);\n+ sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0,\n+ qdev_get_gpio_in(irqchip, ACPI_GED_IRQ));\n+\n+ return dev;\n+}\n+\n static FWCfgState *create_fw_cfg(const MachineState *ms, hwaddr base)\n {\n FWCfgState *fw_cfg;\n@@ -1702,6 +1720,11 @@ static void virt_machine_init(MachineState *machine)\n\n create_platform_bus(s, mmio_irqchip);\n\n+ /* acpi ged */\n+ if (virt_is_acpi_enabled(s)) {\n+ s->acpi_ged = create_acpi_ged(s, mmio_irqchip);\n+ }\n+\n serial_mm_init(system_memory, s->memmap[VIRT_UART0].base,\n 0, qdev_get_gpio_in(mmio_irqchip, UART0_IRQ), 399193,\n serial_hd(0), DEVICE_LITTLE_ENDIAN);\ndiff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h\nindex 18a2a323a3..9ea0b3b7b6 100644\n--- a/include/hw/riscv/virt.h\n+++ b/include/hw/riscv/virt.h\n@@ -47,6 +47,7 @@ struct RISCVVirtState {\n\n /*< public >*/\n Notifier machine_done;\n+ DeviceState *acpi_ged;\n DeviceState *platform_bus_dev;\n RISCVHartArrayState soc[VIRT_SOCKETS_MAX];\n DeviceState *irqchip[VIRT_SOCKETS_MAX];\n@@ -88,9 +89,11 @@ enum {\n VIRT_PLATFORM_BUS,\n VIRT_PCIE_ECAM,\n VIRT_IOMMU_SYS,\n+ VIRT_ACPI_GED,\n };\n\n enum {\n+ ACPI_GED_IRQ = 9,\n UART0_IRQ = 10,\n RTC_IRQ = 11,\n VIRTIO_IRQ = 1, /* 1 to 8 */\n", "prefixes": [ "v6", "2/4" ] }