From nobody Mon Dec 15 03:13:33 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) smtp.mailfrom=seabios-bounces@seabios.org Return-Path: Received: from mail.coreboot.org (mail.coreboot.org [80.81.252.135]) by mx.zohomail.com with SMTPS id 1519686274589831.4553056855585; Mon, 26 Feb 2018 15:04:34 -0800 (PST) Received: from [127.0.0.1] (helo=ra.coreboot.org) by mail.coreboot.org with esmtp (Exim 4.86_2) (envelope-from ) id 1eqRqE-0008WI-Oc; Tue, 27 Feb 2018 00:05:54 +0100 Received: from mail-eopbgr10110.outbound.protection.outlook.com ([40.107.1.110] helo=EUR02-HE1-obe.outbound.protection.outlook.com) by mail.coreboot.org with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) (Exim 4.86_2) (envelope-from ) id 1eqPZG-00042X-MF for seabios@seabios.org; Mon, 26 Feb 2018 21:40:24 +0100 Received: from localhost.localdomain (96.82.2.57) by VI1PR04MB1357.eurprd04.prod.outlook.com (2a01:111:e400:5348::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Mon, 26 Feb 2018 20:37:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=SILICOMLTD.onmicrosoft.com; s=selector1-silicomusa-com01i; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ZQnh4C/mCUDAyFYE/moO8arT1OmvjvYWVE4uUv62u1Y=; b=0jqRwtMcxAoIi+TiO5ne78jJFl4f6/tKRuyt+a61Aa0cIc1A2X4DXUkr/cxxK8lCDNaarDCopdxKT5xsgm7EXma7mE/VCPiXJGoye4Yxpzk6SiJJ+LgS6xjnrNTU5qepAkk3XnWeV7T9tgvpMlhlp5C2YzwiS66pm2eK731LmyA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=stephend@silicom-usa.com; From: Stephen Douthit To: Kevin O'Connor , Stefan Berger , seabios@seabios.org Date: Mon, 26 Feb 2018 15:37:34 -0500 Message-Id: <20180226203734.558-4-stephend@silicom-usa.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180226203734.558-1-stephend@silicom-usa.com> References: <20180226203734.558-1-stephend@silicom-usa.com> MIME-Version: 1.0 X-Originating-IP: [96.82.2.57] X-ClientProxiedBy: DM5PR21CA0049.namprd21.prod.outlook.com (2603:10b6:3:129::11) To VI1PR04MB1357.eurprd04.prod.outlook.com (2a01:111:e400:5348::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c4602ea4-5dba-494c-62da-08d57d58d3d3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB1357; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB1357; 3:8BxhAFPkGgxi+IZN4O661jpycuzG55nnA7T/AMegJB2VPpO5ADLDqLFPFIzKXQn1h3pGa0CAYPHrFyYj7ETqvVzKK+W9vdYMXKGD1I18ieSfSMaUwkaLgsvRz09Aig2jQrl3DbgscMr/eV+BAMbrRD2d3b8/OhVHNXMHhottvhxLr9fmmJWnxz2Mtl+oR5eY+DFeb2mUqU/bzsoNco0cumLqJOhOhDfhEwieCvpe+PLiOQwJHHahNWnNsPoeEWm1; 25:EHLNkaKJj40FtAh+9G/Py5HAMoVZwrxaorvHfs7s8j2IQnwO+nXMF9RY3UZ/QZNBzsHaOIc4cCzLlCxHpchz9DdodBUDOO7vrBV7JhqNdmAg15cSi31BMXTQbfvmy8zglfT+jaWhS/yo6a5Am2s3VO+pPV5Rc3OOjKKqyUmJ1RxIwa6LngThRTOoqmuhd09lEIeXJT2TbKgb6bhih05FWqboEMJzobAaf42o7hugd246FnUf98DOJ1oDLlaDJ7uFCqqoUAAnIJQk7w0wWr2gC0muL4FCkzKTN9peV01GmOkqzjmVckeMxu3Ex8do2+9nXAVO/oRB037lT6kliuA2sA==; 31:V4m1FdzSOOkW4hiH/Zv+WCnEb30m2WsAk03cs/jx9HRetM096KF5admuJ56rAsI5PbKihDRsutRqHgdTMiS8Uw/KHRE+B9qbROrGTXXBmFcnQ5DyS8hMClssVRS0RcoFT3FwZ0C/ov8qO21EW+vPINiqvb0ovNlKIafuM08w2ULdHn4OyCIW9KKD1Ko1zwkETpL4wbHo/Ysv+wUgiM3tTEfGKX43nG2m1TfR8nKV4n8= X-MS-TrafficTypeDiagnostic: VI1PR04MB1357: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB1357; 20:nbxAteTZeGRZ+EHmcuISXhGmFmsTO6qmLduHqwVzOPByjrgY4N9zhwXplvmyW9c6xwveBEPb+LSdku15VhLpGpLuoGfNIL9bqPFsttsV7b9TBSR/42WRLXMfhpntDcRuSNndB2u5Oe7bpuu6m55lcDWJ2JfL6e+orfbOz5dmGyE8auvEMtG75Ren4t2HJ6yWeJq5DQWl23XlKzFnuTDE5MduD1WbINYECH7iMm7g16uzYcQK/AoIXn+TIU9+ET2biKDULtbVSof/s5NE/FM94Va3wXRiRpHedsamZR0GhB6F07IqjTKfVtCWUD+tfmV1gvt3XvsnyEqOawEw7MG9UGr2qPC5VMYz3QTJoRqG9BLjvh7lFJ9tjS1SfdDiDnsnMR3EWS1M+vud+T2fuJXlzaOlhS5V0973vAHR9czp2BohsWd20AbrHydWI1B8oCHZNuCpZpc4t5ZWrlu0tbGfNCccerzltkdyMg/PsGCMH9+CTcy6b42Yt3eIoStUwQ7O; 4:sY3LzzakgUoB0R/sItK+DSdJtYvxZr5hHk/PyOYLwZ/n7lboXrhqwGlkOfHjGL1Tg5VnyxWk8BqGca2uvlLOgmlq73LVX+g6eC1zdlvNw2ObLcyvdt7fzeKYa7zDG2BywV9bqKpLKDeWNohYTQWEYixuwumO+LPnLIh7jQkTkTP0PHBJQZRag5CLfApaelrUKASXIZ051oncMGz0hvDXG3zDD+nXuvIi6WWcbsQs/+n5VRaodPwR8l7EHoqrHHPAm+71WWVuHfEbwBxP3xBcVQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231220)(944501161)(52105095)(3002001)(10201501046)(6041288)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:VI1PR04MB1357; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB1357; X-Forefront-PRVS: 05954A7C45 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6069001)(366004)(396003)(39850400004)(39380400002)(376002)(346002)(199004)(189003)(6116002)(3846002)(25786009)(386003)(106356001)(6666003)(6506007)(76176011)(50226002)(105586002)(1076002)(8936002)(48376002)(50466002)(53936002)(8676002)(6512007)(2906002)(97736004)(7736002)(5660300001)(36756003)(478600001)(52116002)(47776003)(66066001)(305945005)(110136005)(81156014)(81166006)(86362001)(16586007)(316002)(16526019)(6486002)(26005)(186003)(51416003)(1857600001)(2950100002)(68736007); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR04MB1357; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) client-ip=80.81.252.135; envelope-from=seabios-bounces@seabios.org; helo=mail.coreboot.org; Received-SPF: None (protection.outlook.com: silicom-usa.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR04MB1357; 23:dYQSMp5GpN4g+XX73NPgqAoVYWk/Ee+/FSy/J9joJ?= =?us-ascii?Q?b0NyEa7d6g7gUoKcNkQWcvFQE7bB21qnTP9uxyWOmpqnLU8NeoSueazpjCNX?= =?us-ascii?Q?wWgpAxk+8cStwAmI6vGNWoOIXEXIT+JDmhtXxZ+uSDxLmTDBJ+XTfowSQ30P?= =?us-ascii?Q?MSG3ogVob2SdqAtkGp6IG+LJCWFjjqin/4LNU8Oyk3gKg+z6/JoUHHEB1pJT?= =?us-ascii?Q?9jCF4t+aoESa0fB1Z5r8XW9Qq13bJ2GK7QmhXo5cRtNdwqwDzKh2qWu51SNV?= =?us-ascii?Q?dHjTWMBcjiwMlirSl2Ylipp4P/KRjOKk2+VfxahqeCfcYyjGp45lSxLBZaZ7?= =?us-ascii?Q?as24MPmwii5NX5itcSGc/DIl7JTU3fgDaNrbanpBIEcwOBKx7BgEwJgLKHj+?= =?us-ascii?Q?X7v0p0yOA4cm0tdofo3DLBaouEj8M+gVszdgUAW7dtyiR4utfH5pnLT8FIv0?= =?us-ascii?Q?r3UXnyfcw3m7I9sPoNMfR6LtNsdTuXDjbS+t2moT+/8o8c7RB+Dm2ryrJu4L?= =?us-ascii?Q?5BqEqInaeGXfLVVV+9Q/qBRCsXvrtYfdFPIwMnztIlZhkHUR1bC505DDxpuN?= =?us-ascii?Q?bXpWn9391ueML5fb3Jk4MNPNBCHBs/c/ozsjCXdlErzof9U6v6Nvzaz9gfM4?= =?us-ascii?Q?sFuc881aaX6O0IbD3cQk1NzGxqoBeZxe82NKRxuym4G4V10k7Fi/ZJ8Mpkhc?= =?us-ascii?Q?aeU7rX8R2/aA3Bw9a5f5fGwZ6YCN+bJcpIENBA4BfByU1Emaf7sXxc4c9Nfu?= =?us-ascii?Q?5E8Td/d+V1YNwxRbk/+Pyfvs2Kzq0UWZyXUUdmHkyi4h1en/99a0EqTIOIkE?= =?us-ascii?Q?+LHoYdWPbRGx461xMvOqW8F90K0A0xITs6/EzrYJtNVSK2kQkSDe5vne3x5F?= =?us-ascii?Q?3fem+YoOd78wekvnsRIFJTMK9Sttu+k+w0EZJtSoh4PAOviNWmCBRZczIepQ?= =?us-ascii?Q?tvauqwohCiCo3U2EeQJU5GY09+0Jc/y5s27xexplMlT32wjwVSU556Wcmz01?= =?us-ascii?Q?T4u3rCLK4QIxta6Hmjbpi+cE4br2By92+hsJNUH0f4G4pIk1Ux+5Tg7+8urF?= =?us-ascii?Q?xXVhw50Fw+QVSNEPIQW+zZCwdzfH2nX62nrCcRS+wtDGr6fD6MIiB4FAjcli?= =?us-ascii?Q?+1LNifOtKRp//huLQQJscTz9Z/s03LV?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB1357; 6:3xUQj0oYBFwoED0LZOCas/zPMPh/5JdtSoCfPBIT/+bAw/LJBYL2SdnF8DOwE+pZpK2ZmWRpDQEn8AFDftoOphBR189gV/e4DGO+Fbvx22tt6dp/MwJ8sEJ2zaAFK3fksy+FwaG35zF1/NVOo2Ll8LjumEylpxfMDL6Rlt8ao4vcBAq2wk+96BP+RFY0xPqln2KlL4MKNjmQrmRTDZEcZk63y+vdA9n+qPttHI9lT0ppJtTS40mwJ1DA1aSpXjqkjZiOLOEgBk2JjytjfiwUn+rbEsPo9k0G20jgWa0TtWKwPA06Kb2M4s6UX2M6lZhp1BmGZhll4o4VbbUzXVAUZLbXCs8e0koDFngViWH9gak=; 5:0kNHglmT2JMp1tLEz/Z4OSZq8VGNpONRmX2VwbOpGzqSJ1VxJatjU7wfXqwM/IfgUS+tRU96tkzOUOdoCffAlaJ4oKuN5GEKL+peniN3sLdRfER3Htusd3bIIlaKluZ26t+RXcteBDNdk6Y1H9Aq08xnDjpphPVIYt+wUAfw36M=; 24:smjib4tFepbZIhbh2Sa1zDbQeNW9UMCHux1Oe6T7QHyC+QoVi0y9Pbthhr4wZYpnUOfpMOiegwTPIO/HPp7iKO6AYvLghB+yAtL2j0VKGb0=; 7:NQ67rvBqnf9URSAUonFQ/T/M91mjtjrbAYOn+9B+lMWK7yNBXZUbGn9wW4SN1spfiHLmvoYfT5ZkewVwzWNxLNC03okOLy6AZgbwwsStrJdbz4niNhEI+PhI1H+U6r1Wvf6rU8ZUZd4tP82Bm+rGedM2FmhqFmzITSoduRISIm9vb2HfV1Qj0OLqaNQHVENzqYK8YLC5F8XMGrVONwZ7TL3v6YcVjhFiktjWLof/fzVJJRy/3uU5Kku4HcBgWU4A SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: silicom-usa.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2018 20:37:59.7545 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c4602ea4-5dba-494c-62da-08d57d58d3d3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: c9e326d8-ce47-4930-8612-cc99d3c87ad1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB1357 X-Spam-Score: -1.2 (-) X-Mailman-Approved-At: Tue, 27 Feb 2018 00:05:50 +0100 Subject: [SeaBIOS] [PATCH 3/3] tpm: Support 2.0 TPM devices connected to a TIS host X-BeenThere: seabios@seabios.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SeaBIOS mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Errors-To: seabios-bounces@seabios.org Sender: "SeaBIOS" X-Duff: Orig. Duff, Duff Lite, Duff Dry, Duff Dark, Raspberry Duff, Lady Duff, Red Duff, Tartar Control Duff X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" tis_get_tpm_version() was returning the interface version, which is always 1.2 since tis_probe() would have failed if the interface wasn't TIS. New version check is based on the tpm2_probe() function from the Linux tpm_tis driver. Signed-off-by: Stephen Douthit Tested-by: Stephen Douthit --- src/hw/tpm_drivers.c | 21 +++++++++++++++------ src/std/tcg.h | 1 + src/tcgbios.c | 2 +- src/tcgbios.h | 4 ++++ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/hw/tpm_drivers.c b/src/hw/tpm_drivers.c index 789d70a..32c34df 100644 --- a/src/hw/tpm_drivers.c +++ b/src/hw/tpm_drivers.c @@ -11,6 +11,7 @@ #include "config.h" // CONFIG_TPM_TIS_SHA1THRESHOLD #include "hw/tpm_drivers.h" // struct tpm_driver #include "std/tcg.h" // TCG_RESPONSE_TIMEOUT +#include "tcgbios.h" // tpm20_getcapability #include "output.h" // warn_timeout #include "stacks.h" // yield #include "string.h" // memcpy @@ -119,7 +120,7 @@ static u32 tis_probe(void) if ((didvid !=3D 0) && (didvid !=3D 0xffffffff)) rc =3D 1; =20 - /* TPM 2 has an interface register */ + /* Low 32 bits of CRB interface register overlap TIS interface registe= r */ u32 ifaceid =3D readl(TIS_REG(0, TIS_REG_IFACE_ID)); =20 if ((ifaceid & 0xf) !=3D 0xf) { @@ -142,13 +143,21 @@ static u32 tis_probe(void) =20 static TPMVersion tis_get_tpm_version(void) { - /* TPM 2 has an interface register */ - u32 ifaceid =3D readl(TIS_REG(0, TIS_REG_IFACE_ID)); + u8 buffer[128]; + int ret; + struct tpm2_res_getcapability *trg =3D + (struct tpm2_res_getcapability *)&buffer; + + ret =3D tpm20_getcapability(TPM2_CAP_TPM_PROPERTIES, cpu_to_be32(0x100= ), + cpu_to_be32(1), &trg->hdr, sizeof(buffer)); + if (ret =3D=3D TPM2_RC_INITIALIZE) + return TPM_VERSION_2; + else if (ret) + return TPM_VERSION_NONE; =20 - if ((ifaceid & 0xf) =3D=3D 0) { - /* TPM 2 */ + if (cpu_to_be32(trg->hdr.tag) =3D=3D TPM2_ST_NO_SESSIONS) return TPM_VERSION_2; - } + return TPM_VERSION_1_2; } =20 diff --git a/src/std/tcg.h b/src/std/tcg.h index 09a92d8..4c07493 100644 --- a/src/std/tcg.h +++ b/src/std/tcg.h @@ -357,6 +357,7 @@ struct tpm_res_sha1complete { =20 /* TPM 2 Capabilities */ #define TPM2_CAP_PCRS 0x00000005 +#define TPM2_CAP_TPM_PROPERTIES 0x00000006 =20 /* TPM 2 data structures */ =20 diff --git a/src/tcgbios.c b/src/tcgbios.c index 40b3028..b86bf64 100644 --- a/src/tcgbios.c +++ b/src/tcgbios.c @@ -381,7 +381,7 @@ tpm_simple_cmd(u8 locty, u32 ordinal return ret; } =20 -static int +int tpm20_getcapability(u32 capability, u32 property, u32 count, struct tpm_rsp_header *rsp, u32 rsize) { diff --git a/src/tcgbios.h b/src/tcgbios.h index 32fb941..9fc711a 100644 --- a/src/tcgbios.h +++ b/src/tcgbios.h @@ -1,6 +1,7 @@ #ifndef TCGBIOS_H #define TCGBIOS_H =20 +#include "std/tcg.h" // struct tpm_rsp_header #include "types.h" =20 struct bregs; @@ -15,5 +16,8 @@ void tpm_add_cdrom_catalog(const u8 *addr, u32 length); void tpm_option_rom(const void *addr, u32 len); int tpm_can_show_menu(void); void tpm_menu(void); +int +tpm20_getcapability(u32 capability, u32 property, u32 count, + struct tpm_rsp_header *rsp, u32 rsize); =20 #endif /* TCGBIOS_H */ --=20 2.14.3 _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://mail.coreboot.org/mailman/listinfo/seabios