From nobody Sun Feb 8 17:14:54 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1588689961; cv=none; d=zohomail.com; s=zohoarc; b=APoFCJBNBBAvIwItijDzgI1hnlK2PV+AX2AveI/FRvF4v6F26Q8AMbdm++31MY/iNPU0yqYzlNSo948qAiuvqFMkT9BrL9uHwMjsPzhfygq427KC2aKMVCnNKSyC+0Ic4CSG1MbBZWDZXhizDbH3znls1zbqSrDx69tYcPV1urg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588689961; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Ru0ck5Z3LkTeKedMNPkCV9j9cijHHs4CW0s7fvSqEe4=; b=OTfoaDyzDF6GR8xWevYPiSrxmtfpNyIQDfkqbN+uZCAmYYZD4w45BRVHIIEcCi+VoI/8PUcYS3yAUjXKotIo/08b51LFOGbQ4quD02CNEKkoV7b23+YFhzF1PueoH3g6GW2uphDiejY9ZvQTI+gOZYENEag88EWaB7AcHEap9Q0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1588689961486950.1742498023277; Tue, 5 May 2020 07:46:01 -0700 (PDT) Received: from localhost ([::1]:40212 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jVypc-00078t-2q for importer@patchew.org; Tue, 05 May 2020 10:46:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35680) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jVyoM-0005KP-JM for qemu-devel@nongnu.org; Tue, 05 May 2020 10:44:42 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:36998 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jVyoK-0004Xx-3C for qemu-devel@nongnu.org; Tue, 05 May 2020 10:44:42 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-164-YAaJlirPPhG1H8W_iyXS6w-1; Tue, 05 May 2020 10:44:37 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 486FD1902EA0; Tue, 5 May 2020 14:44:36 +0000 (UTC) Received: from laptop.redhat.com (ovpn-114-214.ams2.redhat.com [10.36.114.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3005A70532; Tue, 5 May 2020 14:44:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588689879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ru0ck5Z3LkTeKedMNPkCV9j9cijHHs4CW0s7fvSqEe4=; b=NoBLV9fAvae8XjUvVMe3AonP0Fic2sQOfo5GwbhXoawg3kQEzAMoAqaNHmI2y1SUu4g8ZU brTKGNP845dlY+fR3w1IdUMXTywybmajSklrqIto/KkclnfWL8D5nAYNwPd0ox+uufu5x+ R1g50iO30Y5zG1cBfL9eYTLq+vMCAmA= X-MC-Unique: YAaJlirPPhG1H8W_iyXS6w-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, stefanb@linux.ibm.com, peter.maydell@linaro.org, qemu-devel@nongnu.org, qemu-arm@nongnu.org, imammedo@redhat.com, shannon.zhaosl@gmail.com, mst@redhat.com Subject: [PATCH v2 1/3] acpi: Move build_tpm2() in the generic part Date: Tue, 5 May 2020 16:44:17 +0200 Message-Id: <20200505144419.29174-2-eric.auger@redhat.com> In-Reply-To: <20200505144419.29174-1-eric.auger@redhat.com> References: <20200505144419.29174-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=205.139.110.120; envelope-from=eric.auger@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/05 03:48:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] 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, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, drjones@redhat.com, gshan@redhat.com, lersek@redhat.com, ardb@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We plan to build the tpm2 table on ARM too. In order to reuse the generation code, let's move build_tpm2() to aml-build.c. No change in the implementation. Signed-off-by: Eric Auger Reviewed-by: Stefan Berger Tested-by: Ard Biesheuvel --- include/hw/acpi/aml-build.h | 2 ++ hw/acpi/aml-build.c | 30 ++++++++++++++++++++++++++++++ hw/i386/acpi-build.c | 30 ------------------------------ 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h index 0f4ed53d7f..a67ab4618a 100644 --- a/include/hw/acpi/aml-build.h +++ b/include/hw/acpi/aml-build.h @@ -437,4 +437,6 @@ void build_slit(GArray *table_data, BIOSLinker *linker,= MachineState *ms); =20 void build_fadt(GArray *tbl, BIOSLinker *linker, const AcpiFadtData *f, const char *oem_id, const char *oem_table_id); + +void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog); #endif diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 2c3702b882..1f7fd09112 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -26,6 +26,7 @@ #include "qemu/bitops.h" #include "sysemu/numa.h" #include "hw/boards.h" +#include "hw/acpi/tpm.h" =20 static GArray *build_alloc_array(void) { @@ -1875,6 +1876,35 @@ build_hdr: "FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_= id); } =20 +void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog) +{ + Acpi20TPM2 *tpm2_ptr =3D acpi_data_push(table_data, sizeof *tpm2_ptr); + unsigned log_addr_size =3D sizeof(tpm2_ptr->log_area_start_address); + unsigned log_addr_offset =3D + (char *)&tpm2_ptr->log_area_start_address - table_data->data; + + tpm2_ptr->platform_class =3D cpu_to_le16(TPM2_ACPI_CLASS_CLIENT); + if (TPM_IS_TIS_ISA(tpm_find())) { + tpm2_ptr->control_area_address =3D cpu_to_le64(0); + tpm2_ptr->start_method =3D cpu_to_le32(TPM2_START_METHOD_MMIO); + } else if (TPM_IS_CRB(tpm_find())) { + tpm2_ptr->control_area_address =3D cpu_to_le64(TPM_CRB_ADDR_CTRL); + tpm2_ptr->start_method =3D cpu_to_le32(TPM2_START_METHOD_CRB); + } else { + g_warn_if_reached(); + } + + tpm2_ptr->log_area_minimum_length =3D + cpu_to_le32(TPM_LOG_AREA_MINIMUM_SIZE); + + /* log area start address to be filled by Guest linker */ + bios_linker_loader_add_pointer(linker, ACPI_BUILD_TABLE_FILE, + log_addr_offset, log_addr_size, + ACPI_BUILD_TPMLOG_FILE, 0); + build_header(linker, table_data, + (void *)tpm2_ptr, "TPM2", sizeof(*tpm2_ptr), 4, NULL, NUL= L); +} + /* ACPI 5.0: 6.4.3.8.2 Serial Bus Connection Descriptors */ static Aml *aml_serial_bus_device(uint8_t serial_bus_type, uint8_t flags, uint16_t type_flags, diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 23c77eeb95..c7c560e269 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2296,36 +2296,6 @@ build_tpm_tcpa(GArray *table_data, BIOSLinker *linke= r, GArray *tcpalog) (void *)tcpa, "TCPA", sizeof(*tcpa), 2, NULL, NULL); } =20 -static void -build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog) -{ - Acpi20TPM2 *tpm2_ptr =3D acpi_data_push(table_data, sizeof *tpm2_ptr); - unsigned log_addr_size =3D sizeof(tpm2_ptr->log_area_start_address); - unsigned log_addr_offset =3D - (char *)&tpm2_ptr->log_area_start_address - table_data->data; - - tpm2_ptr->platform_class =3D cpu_to_le16(TPM2_ACPI_CLASS_CLIENT); - if (TPM_IS_TIS_ISA(tpm_find())) { - tpm2_ptr->control_area_address =3D cpu_to_le64(0); - tpm2_ptr->start_method =3D cpu_to_le32(TPM2_START_METHOD_MMIO); - } else if (TPM_IS_CRB(tpm_find())) { - tpm2_ptr->control_area_address =3D cpu_to_le64(TPM_CRB_ADDR_CTRL); - tpm2_ptr->start_method =3D cpu_to_le32(TPM2_START_METHOD_CRB); - } else { - g_warn_if_reached(); - } - - tpm2_ptr->log_area_minimum_length =3D - cpu_to_le32(TPM_LOG_AREA_MINIMUM_SIZE); - - /* log area start address to be filled by Guest linker */ - bios_linker_loader_add_pointer(linker, ACPI_BUILD_TABLE_FILE, - log_addr_offset, log_addr_size, - ACPI_BUILD_TPMLOG_FILE, 0); - build_header(linker, table_data, - (void *)tpm2_ptr, "TPM2", sizeof(*tpm2_ptr), 4, NULL, NUL= L); -} - #define HOLE_640K_START (640 * KiB) #define HOLE_640K_END (1 * MiB) =20 --=20 2.20.1 From nobody Sun Feb 8 17:14:54 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1588689970; cv=none; d=zohomail.com; s=zohoarc; b=Q8HPPAfG9ZG314TPDfFhRwukH4gQPoVHWTjlGWj36UbGoZxq+MFLvm8bX8yT2dhRyaoe6P2iojwr/D8PQdirHj9UXf72tmPEIpJ3D1+sYXjLvjhKK40GVcHFZpmHjNM6pttX2e0k/B7xvrNuhuCAWu2KCaF1eUU0Ilmdg0n7qI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588689970; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VERTq+IsZfUBZ1kLIVVRf9I2woH7XdWBm6F0mgr2JT8=; b=UyB6e5gCF8nhg90S6ce9UqfSObu8YPlJ9+5IofMDeQjo9Q3NlEy1j7fjXi5UHBeibItrH8NFc58/DnLSmDUbk04W47hiHRLkbAfjDCnSgWihSe675kwmYT8E4yIZMMc0Ped9eTTRr+6SIyB9q7q4DXpqjqfPFMkke4yYyuILmPE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1588689970637274.83250905620696; Tue, 5 May 2020 07:46:10 -0700 (PDT) Received: from localhost ([::1]:40906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jVypl-0007QG-3Y for importer@patchew.org; Tue, 05 May 2020 10:46:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35688) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jVyoO-0005Nn-Dc for qemu-devel@nongnu.org; Tue, 05 May 2020 10:44:44 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:51580 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jVyoN-0004YX-BA for qemu-devel@nongnu.org; Tue, 05 May 2020 10:44:43 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-255-rjaRC-tPO-GqehX_W65D7Q-1; Tue, 05 May 2020 10:44:41 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AF0B680183C; Tue, 5 May 2020 14:44:39 +0000 (UTC) Received: from laptop.redhat.com (ovpn-114-214.ams2.redhat.com [10.36.114.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9F0006061C; Tue, 5 May 2020 14:44:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588689882; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VERTq+IsZfUBZ1kLIVVRf9I2woH7XdWBm6F0mgr2JT8=; b=cKcru+a3zO5JXkq6LHHoWoo1wvzABzntOIcqtI4JD7LyV22WkHbJhxH8kPcm6D2r6ETop6 n2w1D3AXkmGZJd3oWjbcDMCSJGFbTwmtmUEoKDyvCFdrBf/6W+rKMLYF2KFJtfbySACd1Y YE2D6d8xZfKlBikZzEMMSj+aG66aUp8= X-MC-Unique: rjaRC-tPO-GqehX_W65D7Q-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, stefanb@linux.ibm.com, peter.maydell@linaro.org, qemu-devel@nongnu.org, qemu-arm@nongnu.org, imammedo@redhat.com, shannon.zhaosl@gmail.com, mst@redhat.com Subject: [PATCH v2 2/3] arm/acpi: TPM2 ACPI table support Date: Tue, 5 May 2020 16:44:18 +0200 Message-Id: <20200505144419.29174-3-eric.auger@redhat.com> In-Reply-To: <20200505144419.29174-1-eric.auger@redhat.com> References: <20200505144419.29174-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=207.211.31.120; envelope-from=eric.auger@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/05 00:37:38 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] 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, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, drjones@redhat.com, gshan@redhat.com, lersek@redhat.com, ardb@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Add a TPM2 ACPI table if a TPM2.0 sysbus device has been dynamically instantiated. Signed-off-by: Eric Auger Reviewed-by: Stefan Berger Tested-by: Ard Biesheuvel --- v1 -> v2: - reuse generic build_tpm2() and alloc log area externally - call tpm_find() once in build_tpm2() --- include/sysemu/tpm.h | 2 ++ hw/acpi/aml-build.c | 5 +++-- hw/arm/virt-acpi-build.c | 11 +++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/sysemu/tpm.h b/include/sysemu/tpm.h index f37851b1aa..03fb25941c 100644 --- a/include/sysemu/tpm.h +++ b/include/sysemu/tpm.h @@ -50,6 +50,8 @@ typedef struct TPMIfClass { =20 #define TPM_IS_TIS_ISA(chr) \ object_dynamic_cast(OBJECT(chr), TYPE_TPM_TIS_ISA) +#define TPM_IS_TIS_SYSBUS(chr) \ + object_dynamic_cast(OBJECT(chr), TYPE_TPM_TIS_SYSBUS) #define TPM_IS_CRB(chr) \ object_dynamic_cast(OBJECT(chr), TYPE_TPM_CRB) #define TPM_IS_SPAPR(chr) \ diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 1f7fd09112..4224675cb2 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -1882,12 +1882,13 @@ void build_tpm2(GArray *table_data, BIOSLinker *lin= ker, GArray *tcpalog) unsigned log_addr_size =3D sizeof(tpm2_ptr->log_area_start_address); unsigned log_addr_offset =3D (char *)&tpm2_ptr->log_area_start_address - table_data->data; + TPMIf *tpmif =3D tpm_find(); =20 tpm2_ptr->platform_class =3D cpu_to_le16(TPM2_ACPI_CLASS_CLIENT); - if (TPM_IS_TIS_ISA(tpm_find())) { + if (TPM_IS_TIS_ISA(tpmif) || TPM_IS_TIS_SYSBUS(tpmif)) { tpm2_ptr->control_area_address =3D cpu_to_le64(0); tpm2_ptr->start_method =3D cpu_to_le32(TPM2_START_METHOD_MMIO); - } else if (TPM_IS_CRB(tpm_find())) { + } else if (TPM_IS_CRB(tpmif)) { tpm2_ptr->control_area_address =3D cpu_to_le64(TPM_CRB_ADDR_CTRL); tpm2_ptr->start_method =3D cpu_to_le32(TPM2_START_METHOD_CRB); } else { diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 81d41a3990..1a2ec10c8f 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -41,11 +41,13 @@ #include "hw/acpi/pci.h" #include "hw/acpi/memory_hotplug.h" #include "hw/acpi/generic_event_device.h" +#include "hw/acpi/tpm.h" #include "hw/pci/pcie_host.h" #include "hw/pci/pci.h" #include "hw/arm/virt.h" #include "sysemu/numa.h" #include "sysemu/reset.h" +#include "sysemu/tpm.h" #include "kvm_arm.h" #include "migration/vmstate.h" =20 @@ -831,6 +833,15 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildT= ables *tables) build_iort(tables_blob, tables->linker, vms); } =20 + if (tpm_get_version(tpm_find()) =3D=3D TPM_VERSION_2_0) { + acpi_data_push(tables->tcpalog, TPM_LOG_AREA_MINIMUM_SIZE); + bios_linker_loader_alloc(tables->linker, ACPI_BUILD_TPMLOG_FILE, + tables->tcpalog, 1, false); + + acpi_add_table(table_offsets, tables_blob); + build_tpm2(tables_blob, tables->linker, tables->tcpalog); + } + /* XSDT is pointed to by RSDP */ xsdt =3D tables_blob->len; build_xsdt(tables_blob, tables->linker, table_offsets, NULL, NULL); --=20 2.20.1 From nobody Sun Feb 8 17:14:54 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1588689993; cv=none; d=zohomail.com; s=zohoarc; b=hdkBP/NG+ToDVmktAGh+ERz708MP6Xg4LRl9u80GbAn8KRYe8lQyysSaV905w9EQbppMYtunoak1bJf+IULpZgOFScuvcUno7I34poS012fv9OHEvztqEt/qXzwTeEJhhEQEl8TX/9W/u/sP5vN+X0v4CYf9+GLRpOTGph9OJ18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588689993; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+y7WMV3btEsmWqlJ0VZGXww+ICsd0jjrW1ncM6f5HS8=; b=SRnt/t2qtPTmL7DjOrPkxkwxH6NTXggoGuuiIvUscFUbD2EaPMDIaLpF7hP8E07ixKBpf7tjGbT0D8A279b8s4dAOzYYSI36umFJKXP7j73RnQ5U6CsDNnmQeanspH+qGOueSowbC9sbb9ACgTRdVVn2espUTZH3uek06EcQhzE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 158868999341941.80922222810352; Tue, 5 May 2020 07:46:33 -0700 (PDT) Received: from localhost ([::1]:42502 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jVyq8-00084C-3X for importer@patchew.org; Tue, 05 May 2020 10:46:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35724) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jVyob-0005vk-8w for qemu-devel@nongnu.org; Tue, 05 May 2020 10:44:57 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:28546 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jVyoa-0004ak-Hc for qemu-devel@nongnu.org; Tue, 05 May 2020 10:44:56 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-331-PIRjhIutOd2Mp5rSHmv0JQ-1; Tue, 05 May 2020 10:44:52 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D9C0F1902EA2; Tue, 5 May 2020 14:44:50 +0000 (UTC) Received: from laptop.redhat.com (ovpn-114-214.ams2.redhat.com [10.36.114.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id 122E26060E; Tue, 5 May 2020 14:44:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588689895; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+y7WMV3btEsmWqlJ0VZGXww+ICsd0jjrW1ncM6f5HS8=; b=G0Q/ERO/lNSxBf5qs+EcCLMF/6de45NL96t9O7Gd82OWoXzA4nPi87iRs5WaWuFayfVfQP vdOAF4omp/FMpKMx9QiXxo8+3pbxV5g6yMMSOjwJnCDSanoI6TJrVopB0PRPXbSM3Y6JDO O22qRLwmDs6Gs3FYGLcohmT6Jjdjho8= X-MC-Unique: PIRjhIutOd2Mp5rSHmv0JQ-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, stefanb@linux.ibm.com, peter.maydell@linaro.org, qemu-devel@nongnu.org, qemu-arm@nongnu.org, imammedo@redhat.com, shannon.zhaosl@gmail.com, mst@redhat.com Subject: [PATCH v2 3/3] arm/acpi: Add the TPM2.0 device under the DSDT Date: Tue, 5 May 2020 16:44:19 +0200 Message-Id: <20200505144419.29174-4-eric.auger@redhat.com> In-Reply-To: <20200505144419.29174-1-eric.auger@redhat.com> References: <20200505144419.29174-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=207.211.31.120; envelope-from=eric.auger@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/05 00:37:38 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] 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, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, drjones@redhat.com, gshan@redhat.com, lersek@redhat.com, ardb@kernel.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" In case it is dynamically instantiated, add the TPM 2.0 device object under the DSDT table in the ACPI namespace. Its HID is MSFT0101 while its current resource settings (CRS) property is initialized with the guest physical address and MMIO size of the device. Signed-off-by: Eric Auger Reviewed-by: Stefan Berger Tested-by: Ard Biesheuvel --- v1 -> v2: - use memory_region_size - fix mingw compilation issue by casting to uint32_t - added Stefan's R-b --- hw/arm/virt-acpi-build.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 1a2ec10c8f..8534d14e20 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -45,6 +45,7 @@ #include "hw/pci/pcie_host.h" #include "hw/pci/pci.h" #include "hw/arm/virt.h" +#include "hw/platform-bus.h" #include "sysemu/numa.h" #include "sysemu/reset.h" #include "sysemu/tpm.h" @@ -362,6 +363,40 @@ static void acpi_dsdt_add_power_button(Aml *scope) aml_append(scope, dev); } =20 +static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms) +{ + hwaddr pbus_base =3D vms->memmap[VIRT_PLATFORM_BUS].base; + PlatformBusDevice *pbus =3D PLATFORM_BUS_DEVICE(vms->platform_bus_dev); + MemoryRegion *sbdev_mr; + SysBusDevice *sbdev; + hwaddr tpm_base; + + sbdev =3D (SysBusDevice *)object_dynamic_cast(OBJECT(tpm_find()), + TYPE_SYS_BUS_DEVICE); + 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("_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); +} + static void build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) { @@ -756,6 +791,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) } =20 acpi_dsdt_add_power_button(scope); + acpi_dsdt_add_tpm(scope, vms); =20 aml_append(dsdt, scope); =20 --=20 2.20.1