From nobody Sat May 18 10:30:10 2024 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=1588451863; cv=none; d=zohomail.com; s=zohoarc; b=mTnGQ/1rT3YdP/sP8u5dB8Z7qnxTZyMU1MskrZ6CXUGDBAHY5d1yv031x81U+NLaUCVxHnG3Qh6XB4iUT++ZIfyII3s4hceAl45ol5kp9T/VHiUqMbKB0LumUEHQ4xh7sG7sdE0XEuTABm3wg6a8YDel5A5vnFIfd7geP/OZxSA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588451863; 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=08iwP7LqFIqqeGyoG9u6SDwyyi8beRnRJa3nu+7iKrY=; b=lHzyzxNRj1d1sZGsgkjEDwlbJmP4ytYHIKTANvwMkOvbn4j0fgzCswCojuJ/CXTVmtzNYbswHQ3HwNNC+0J8g6XHifsnAN4qEDmX3uyR8WwnvDOIxU7gAjvbUUEXYG7lB3LR5cxmucgHMCBUlUApHOpRO7LL741bBaOnCvH0TpQ= 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 1588451863248175.3503815118571; Sat, 2 May 2020 13:37:43 -0700 (PDT) Received: from localhost ([::1]:56638 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUytJ-0003bS-Q3 for importer@patchew.org; Sat, 02 May 2020 16:37:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jUyro-0002Ds-QG for qemu-devel@nongnu.org; Sat, 02 May 2020 16:36:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jUyro-0003Wl-92 for qemu-devel@nongnu.org; Sat, 02 May 2020 16:36:08 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:50031 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 1jUyrn-0003VV-RU for qemu-devel@nongnu.org; Sat, 02 May 2020 16:36:07 -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-207-8UIoZFC9PayXxV2_-_UUZQ-1; Sat, 02 May 2020 16:36:03 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0897C80183C; Sat, 2 May 2020 20:36:02 +0000 (UTC) Received: from laptop.redhat.com (ovpn-112-58.ams2.redhat.com [10.36.112.58]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0B5D810002AA; Sat, 2 May 2020 20:35:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588451767; 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=08iwP7LqFIqqeGyoG9u6SDwyyi8beRnRJa3nu+7iKrY=; b=H1Cl5Q6PpvSEp+JKXXT9iOoH+FNVWl2l+HxjVNC+xb0fAONgyADdm2J7kSpeFlPGw6NprP DszvQDnmgfPHBcAeVWHM5Jx2C7i1NVo/Kl8iezndQp7qbZBp+Kph/YjJxyumpwhajUe214 MF0WOlw//mPi7yRhQEbvYf2G9701nkc= X-MC-Unique: 8UIoZFC9PayXxV2_-_UUZQ-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 1/2] arm/acpi: TPM2 ACPI table support Date: Sat, 2 May 2020 22:35:35 +0200 Message-Id: <20200502203536.15011-2-eric.auger@redhat.com> In-Reply-To: <20200502203536.15011-1-eric.auger@redhat.com> References: <20200502203536.15011-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 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/02 16:36:05 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.120 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 --- include/sysemu/tpm.h | 2 ++ hw/arm/virt-acpi-build.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) 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/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 81d41a3990..cc5863eaf2 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 @@ -704,6 +706,35 @@ static void build_fadt_rev5(GArray *table_data, BIOSLi= nker *linker, build_fadt(table_data, linker, &fadt, 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_SYSBUS(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 { + g_warn_if_reached(); + } + + tpm2_ptr->log_area_minimum_length =3D cpu_to_le32(TPM_LOG_AREA_MINIMUM= _SIZE); + acpi_data_push(tcpalog, le32_to_cpu(tpm2_ptr->log_area_minimum_length)= ); + + /* log area start address to be filled by Guest linker */ + bios_linker_loader_alloc(linker, ACPI_BUILD_TPMLOG_FILE, + tcpalog, 1, false); + 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); +} + /* DSDT */ static void build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) @@ -831,6 +862,11 @@ 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_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 Sat May 18 10:30:10 2024 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=1588451890; cv=none; d=zohomail.com; s=zohoarc; b=JjKM1a9aSNJ4sSA34uv11tOJzR73CjvNy+IYfBzWOCJpSiMQcp2GoRMTh7cxYkLiYLZVP662bdxBlux8X+AR6OYv5Y7lrom2cQzFVosAhFAesRoxVO6Q53GdRFdwpw24znjk3LSnzkAETEzW0DiBZcA/woerEQR/K2rX9k3DE1Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588451890; 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=nX4JQPiEzAFhnB9ENyMrEpHgnft3fb952sqvA++yGTk=; b=Ge4UDY9H2t1XUX+GEjMhGPf+fdysE0jJCZ1bW+ecNE1EXRn3aygKE6gyBNIF/5NQt4C5Eeqm19jqWGledE5gYGqgy0TF3BD4udAAnPSjK6O3359mQqkt05dFZeLoZKoL4/ObUdGN1Zd9TulvwjfzVQdXjrKLTKL4Nv1iDmOzjw4= 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 1588451890651185.77689196111226; Sat, 2 May 2020 13:38:10 -0700 (PDT) Received: from localhost ([::1]:58208 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUytl-0004LS-ER for importer@patchew.org; Sat, 02 May 2020 16:38:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60268) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jUysF-0002rM-Gc for qemu-devel@nongnu.org; Sat, 02 May 2020 16:36:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jUysD-00044e-Hz for qemu-devel@nongnu.org; Sat, 02 May 2020 16:36:35 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:44025 helo=us-smtp-delivery-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 1jUysC-00043f-28 for qemu-devel@nongnu.org; Sat, 02 May 2020 16:36:32 -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-500-xqgOJiRgNNW3gn9MIvlwlg-1; Sat, 02 May 2020 16:36:18 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E585D1009600; Sat, 2 May 2020 20:36:16 +0000 (UTC) Received: from laptop.redhat.com (ovpn-112-58.ams2.redhat.com [10.36.112.58]) by smtp.corp.redhat.com (Postfix) with ESMTP id C3E691002388; Sat, 2 May 2020 20:36:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588451789; 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=nX4JQPiEzAFhnB9ENyMrEpHgnft3fb952sqvA++yGTk=; b=Ktqu20VIz6tDxkf7/5NmtMSM97uGmZ607XBdog/TjDId8pbpBPX+r5F7M68NyTEdLpqypg HKAsxnZAqnKq4z/jLgs3qSeG06kTi8yeWGT8cqPsnEgI9OHdt8QgQwKN/172w9Fgy5GUBO e3dgk2aOAy3cvJ//5Do6QJw6G9PDacM= X-MC-Unique: xqgOJiRgNNW3gn9MIvlwlg-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 2/2] arm/acpi: Add the TPM2.0 device under the DSDT Date: Sat, 2 May 2020 22:35:36 +0200 Message-Id: <20200502203536.15011-3-eric.auger@redhat.com> In-Reply-To: <20200502203536.15011-1-eric.auger@redhat.com> References: <20200502203536.15011-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 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.61; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/02 16:36:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.61 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 --- hw/arm/virt-acpi-build.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index cc5863eaf2..0cb9cdb2ce 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,38 @@ 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, sbdev_mr->size, 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) { @@ -785,6 +818,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