From nobody Mon Dec 15 00:33:12 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1764725304; cv=none; d=zohomail.com; s=zohoarc; b=BFVPnoGJsk5qBWD0KOF++dRAjCqTJftWrm3RmyQWjW1Iw1I04Ri+NgVCDu9dFyX/nNJ2dIGsf2LV+HwGo7zktSgYhBi//T5yGGY5cCW9Ug2VvxyqLu+pwaGybWFOA90hR9NIIU8lKY4WsD3CWb0jinWQQGyUq0C6wgLq1FtPhDE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764725304; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Gd0KWvCcV63RFImWGjcCMBVmotIXPRGLHBDmbO1O2k4=; b=Fhxe5YeyUiRu2qrZZSaIklPbQpGDSl6SLRrF4ThHFi63NsVke1vMP0EoXht7CyNacmLtBi7uTMbZTtgMK9yMP+3/GzOw1xCwSlOv7eKJ7iFOHocAG145dg2zvmCFPIjEhOE20AiDRF+Odscfy41AXQR5DiEIpfBsDXsc6NxKE5Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1764725303978602.6118672004592; Tue, 2 Dec 2025 17:28:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vQbeo-0005SG-4j; Tue, 02 Dec 2025 20:27:50 -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 1vQae9-00010X-2V for qemu-devel@nongnu.org; Tue, 02 Dec 2025 19:23:05 -0500 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vQae7-0000vT-Fd for qemu-devel@nongnu.org; Tue, 02 Dec 2025 19:23:04 -0500 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-7b86e0d9615so7338706b3a.0 for ; Tue, 02 Dec 2025 16:23:02 -0800 (PST) Received: from DESKTOP-I1ETA6N.dc1.ventanamicro.com (c-73-223-207-212.hsd1.ca.comcast.net. [73.223.207.212]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11dcb057cb0sm94148974c88.9.2025.12.02.16.23.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Dec 2025 16:23:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1764721381; x=1765326181; darn=nongnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Gd0KWvCcV63RFImWGjcCMBVmotIXPRGLHBDmbO1O2k4=; b=plup31dUxm1wqysiFLrS+u7XUX93CbF7/HIzh+Fae26tDHV7RQRQeD4gme6HVOVYvN 6rUub8Zi9lsdi6WQQdibAfgmw14ewh0o+9YlDMc8nzHhB/eCxYAkkgHPpucDPOVDH5Zo e58NxXPH/D5E6HQLpYYtZ8jxNZnMPEuZSlHEHKxVsXs3Cpwaj0tPI5FLApyf3o+asEl4 onOGJHo7I2KhoHRkCvca2gQi/WwlDfcL/qi+C/Da44Sw6uww65ndT9pP5ic21tUlj9bW c3PplWXjVcjUECuFeActP8XdgT2edOYSTu6OTJe6k77yyl7SlIMaU3VEOx4KsQDzBcKR NFHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764721381; x=1765326181; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Gd0KWvCcV63RFImWGjcCMBVmotIXPRGLHBDmbO1O2k4=; b=LT8GKhELzgq6HyBSbhy7xk9GKsN5YwOHQZ1pIUDmSrpZKiVDyfTJnv92xvO3qyXKys G4xXBigrfvEuEvXHeS5+eYUTUtMV7uds7JMVf5dREKK5f8CDEHKIBO9uqxm72AFfNF37 43FtS2S0KpYG6H2XJ24idfK+Dc1Hq4ATETgtSgRG4l7dx14ExAW58tF0U7TtJKh29qTp Z4ahxL8FRBBJrYyanKYzBtLwX9OiqOsmo86TMUXzVbuRMGRUB0MXz2rDivgj0Yll5+2O YHGwSUc1hpq2/uK1uO/JbAIy6abCmJdpnMnHBnzIoj4fyG8EAOmbtwDQQGoNlKK++WHO kAwA== X-Gm-Message-State: AOJu0YyaP8mlu5kwL/VGOhL+w4XfCfdxl+td0Mfci2KFqFFxSw/GEUcf cABiSqaMsXqJ8cTpqy0YrDWSnUkm5HHiVLYnjJR9Dy6wXuBwxl0g51eXYdlXH4a01B4lUJLs2A0 FAC4k X-Gm-Gg: ASbGncvBhh6pAaMgcQNjfeqjzX0kPhwqp86g7N5agwkomsNam/5CZfvBYi44QhGCtSm gjcM+k/YLDaYmNFf67USo3tue8Pe38GceEK3+QiTSaaZlmVPmHo+IjKBR+bUD1guT/mLKMFoEpJ 8W0uqrKUEZsTzfM3nB0SNpsA7EefueXoVw025mCIbmFODtGMzFj5QHQIwNuiuTE7XYzk8h5aK3l peIBBd3vaJ56y1QTKADlH0fqC5UzbtyDYs8Ttjngep/2XM5DblWV75V7B+1TeBQdnF108BkJIcv t0pXBfrBhWIzWr+7eK/ysbSJGCSpH1NqfRxPWmzTXRUveZVb+g9qoamHmL+Ut70o0BXx2kjNm7y e2J8y791fzHHyjSnD/E/1vzeuaZaOJXn535b4wRV310eJCmp62zxgCMHAxzDbfenAP6z0aLwSbG 79+VWV7d9TIkGCjaj0HCM8f+fxMsJwiBWETZHmmnoQc5U8jBY36LD9f4sNYB/COlL7KHNgaKrHO bPSHBCsxQ2jsKRf8jC3UK9vJw== X-Google-Smtp-Source: AGHT+IGuVl4btVJJT3VuWptosWRBoYhFtS2dClw1b7SGaJQvw7xqV8dylkWzbsryVNXxqy6D3bkVsQ== X-Received: by 2002:a05:7022:1607:b0:11a:3734:3db3 with SMTP id a92af1059eb24-11df0cd7faemr310058c88.32.1764721381115; Tue, 02 Dec 2025 16:23:01 -0800 (PST) From: Tuan Phan To: qemu-devel@nongnu.org Cc: Alistair Francis , Sunil V L , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org, Palmer Dabbelt , Weiwei Li , Tuan Phan Subject: [PATCH] hw/riscv/virt-acpi-build.c: Add TPM2 device node and ACPI table support Date: Tue, 2 Dec 2025 16:22:59 -0800 Message-Id: <20251203002259.2856-1-tphan@ventanamicro.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=tphan@ventanamicro.com; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 02 Dec 2025 20:27:47 -0500 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1764725306565019200 Content-Type: text/plain; charset="utf-8" This patch enables TPM2 support in the RISC-V virt machine ACPI builder. Signed-off-by: Tuan Phan --- hw/riscv/virt-acpi-build.c | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c index f1406cb68339..b5bf812a9d36 100644 --- a/hw/riscv/virt-acpi-build.c +++ b/hw/riscv/virt-acpi-build.c @@ -32,6 +32,7 @@ #include "hw/intc/riscv_aclint.h" #include "hw/nvram/fw_cfg_acpi.h" #include "hw/pci-host/gpex.h" +#include "hw/platform-bus.h" #include "hw/riscv/virt.h" #include "hw/riscv/numa.h" #include "hw/virtio/virtio-acpi.h" @@ -39,6 +40,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "system/reset.h" +#include "system/tpm.h" =20 #define ACPI_BUILD_TABLE_SIZE 0x20000 #define ACPI_BUILD_INTC_ID(socket, index) ((socket << 24) | (index)) @@ -224,6 +226,41 @@ static void acpi_dsdt_add_iommu_sys(Aml *scope, const = MemMapEntry *iommu_memmap, aml_append(scope, dev); } =20 +#ifdef CONFIG_TPM +static void acpi_dsdt_add_tpm(Aml *scope, RISCVVirtState *s) +{ + PlatformBusDevice *pbus =3D PLATFORM_BUS_DEVICE(s->platform_bus_dev); + hwaddr pbus_base =3D s->memmap[VIRT_PLATFORM_BUS].base; + SysBusDevice *sbdev =3D SYS_BUS_DEVICE(tpm_find()); + MemoryRegion *sbdev_mr; + hwaddr tpm_base; + + if (!sbdev) { + return; + } + + tpm_base =3D platform_bus_get_mmio_addr(pbus, sbdev, 0); + assert(tpm_base !=3D -1); + + tpm_base +=3D pbus_base; + + sbdev_mr =3D sysbus_mmio_get_region(sbdev, 0); + + Aml *dev =3D aml_device("TPM0"); + aml_append(dev, aml_name_decl("_HID", aml_string("MSFT0101"))); + aml_append(dev, aml_name_decl("_STR", aml_string("TPM 2.0 Device"))); + aml_append(dev, aml_name_decl("_UID", aml_int(0))); + + Aml *crs =3D aml_resource_template(); + aml_append(crs, + aml_memory32_fixed(tpm_base, + (uint32_t)memory_region_size(sbdev_mr), + AML_READ_WRITE)); + aml_append(dev, aml_name_decl("_CRS", crs)); + aml_append(scope, dev); +} +#endif + /* * Serial Port Console Redirection Table (SPCR) * Rev: 1.10 @@ -479,6 +516,10 @@ static void build_dsdt(GArray *table_data, acpi_dsdt_add_iommu_sys(scope, &memmap[VIRT_IOMMU_SYS], IOMMU_SYS_= IRQ); } =20 +#ifdef CONFIG_TPM + acpi_dsdt_add_tpm(scope, s); +#endif + if (socket_count =3D=3D 1) { virtio_acpi_dsdt_add(scope, memmap[VIRT_VIRTIO].base, memmap[VIRT_VIRTIO].size, @@ -914,6 +955,16 @@ static void virt_acpi_build(RISCVVirtState *s, AcpiBui= ldTables *tables) } } =20 +#ifdef CONFIG_TPM + /* TPM info */ + if (tpm_get_version(tpm_find()) =3D=3D TPM_VERSION_2_0) { + acpi_add_table(table_offsets, tables_blob); + build_tpm2(tables_blob, tables->linker, + tables->tcpalog, s->oem_id, + s->oem_table_id); + } +#endif + /* XSDT is pointed to by RSDP */ xsdt =3D tables_blob->len; build_xsdt(tables_blob, tables->linker, table_offsets, s->oem_id, @@ -1025,6 +1076,11 @@ void virt_acpi_setup(RISCVVirtState *s) build_state, tables.rsdp, ACPI_BUILD_RSDP_FILE); =20 +#ifdef CONFIG_TPM + fw_cfg_add_file(s->fw_cfg, ACPI_BUILD_TPMLOG_FILE, tables.tcpalog->dat= a, + acpi_data_len(tables.tcpalog)); +#endif + qemu_register_reset(virt_acpi_build_reset, build_state); virt_acpi_build_reset(build_state); vmstate_register(NULL, 0, &vmstate_virt_acpi_build, build_state); --=20 2.34.1