From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.84]) by mx.groups.io with SMTP id smtpd.web08.2502.1619118660530580569 for ; Thu, 22 Apr 2021 12:11:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=mvqrA7Qs; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.223.84, mailfrom: thomas.lendacky@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NwNSFnxzXHJR898pIBpvbH7HCLnz7LXdBnCIDzwUzHaksq6vRcOXy3D6S3li92Vbk3931lWEceWbjVtvmz9sMJjkW/P9mGFrPn6BrVmGBcdbx9w5NuhzMfTSdqCcIVbAmh0CPVAGorAO2dl+n09G4fccES8Fs9WIX7nMwwRipc2TEQkBDj7a7oNnv3vrA5zz4cAIwza9ZTU8kjNdQ6SwgrlVWovJN3QE548leOWhtPVv4w+0poPkLDJ+T0t+xYdXEPWvqWrRO5G6/iRjWZ7zLd/e12pwUgGYMMhdtLRHXZebTXw62co2HBVq5t2ml3Ey7bV8nzb6W/vYO2v/cyDlFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iUCfgD/jXqfTJ1kzARCNQ1KKWU6QlphrkhANjXgNjZo=; b=PcB3jezP7Th2FIfiw43rceFsjLemGUzCM6S/0Fu6AZMpZVDkb/Sh7I+rmRW3d6npHRkqhArwNI+icgjGSz/E04/YbT7k80uB/ii8R/JdC6/NNTklD0c3OEDyPKz5s/dzVfvbewr573i31cclQJH3sCY/YaMT9Q/V4QYdbumchYaaEW/pQssaEu/HRGh4xYjOCByal417h4SYGwUlBbIOuvd7L+cbyaMlYUYw+RJy8Jy5WbMR4UIDmmYvZFl+qZmOmghbNLng7kXpyLcKVfxMdZcmm7gzI9kXTBx1BraXR5OX2187qQdLlRuuVjp7fLVIMzRJGJyC9edbBxtKPnYYHg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iUCfgD/jXqfTJ1kzARCNQ1KKWU6QlphrkhANjXgNjZo=; b=mvqrA7QstTf/tuHcbA9xrPKUVCnhfGQXitQHEl9LWIVppYE5xriaLyMSiCDcy0VtONyzcbvLZm6/CAk3MoQgJBVZ1GJWwgZwOj1hRMkjDeyy75BAVv7ust/xWts84Rehw1bFS4bZh5hTjjCewsegfICNH2GG7iD6V4dTdgWGPWM= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=amd.com; Received: from DM5PR12MB1355.namprd12.prod.outlook.com (2603:10b6:3:6e::7) by DM6PR12MB2986.namprd12.prod.outlook.com (2603:10b6:5:39::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.19; Thu, 22 Apr 2021 19:10:58 +0000 Received: from DM5PR12MB1355.namprd12.prod.outlook.com ([fe80::b914:4704:ad6f:aba9]) by DM5PR12MB1355.namprd12.prod.outlook.com ([fe80::b914:4704:ad6f:aba9%12]) with mapi id 15.20.4065.023; Thu, 22 Apr 2021 19:10:58 +0000 Subject: Re: [edk2-devel] [PATCH 3/3] OvmfPkg/PlatformPei: Mark TPM MMIO range as unencrypted for SEV To: Laszlo Ersek , devel@edk2.groups.io Cc: Joerg Roedel , Borislav Petkov , Ard Biesheuvel , Jordan Justen , Brijesh Singh , James Bottomley , Jiewen Yao , Min Xu References: <1677B2EC90F30786.1355@groups.io> <007e59ea-3933-7b93-afff-4023f3111558@amd.com> <08f723a5-9883-7785-91c0-9e5627836288@redhat.com> From: "Lendacky, Thomas" Message-ID: Date: Thu, 22 Apr 2021 14:10:55 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 In-Reply-To: X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0701CA0025.namprd07.prod.outlook.com (2603:10b6:803:2d::22) To DM5PR12MB1355.namprd12.prod.outlook.com (2603:10b6:3:6e::7) Return-Path: thomas.lendacky@amd.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [10.236.30.118] (165.204.77.1) by SN4PR0701CA0025.namprd07.prod.outlook.com (2603:10b6:803:2d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.22 via Frontend Transport; Thu, 22 Apr 2021 19:10:58 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e92a0d13-eba7-4e55-c165-08d905c25ca3 X-MS-TrafficTypeDiagnostic: DM6PR12MB2986: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8b7wuol/lX/a0zTrc2RHdhoGMzho/Y/O9B7m12317fWYP9/iRd3hcXUM8R60MJv/zfwjxLXbfwsvEg+dKmr06O2FwvjGeuYu66EsZsOAD1DKjpb4F7nDA0+6ep4zUE2DhrPY/mAtZHyDDV+lTTKaP+1b7qTL3sssP/taJ7FFaDrANM+A3jwJk9yC7vakXYDEK3eZqWTDA2HOvU+SerNpMYdkTPN75DiCloGTSqDSxsrw6gLtrGfUfoZ90tgZzqJ9Q1xO7okQKFbsPTAE9dIBOwk9VaRVvymO8LQk090iY3cp2tyyB4mcbfmS4YPlbl/D9jVHXLGfKIYSSYN6pp7GnuJYIzsUdhqcsOkX9aFLrcLaZv8CYne2qxAxaE5nbF0bASTvW2O3OiznZiLoI99slVvOE4w1TKsW2BAx2IqcnJGRg+sfb3A4Y8MWTmYMhbdjxhTZzeYRGvcT4Zt2B7isfblsmJ6YOkh3XbUItOf+e6agEfsA15C8wmcIvHwmoNErsfvjSPzSGpEme/LYqMkeOpsteWdaRm31rPsshgyZ4gXZkmeWm5G40uuMMrJimRbGHQzQOyGs7gPYLWJ9hebbKfln/L2uQ2+MBuGpscI7LsTETziGPkeiGSwMhR7mdxmL/hF190BeK9lzblwrXuJ3Bjl0UnFIHx6OvdiNhvXqxbi1M4SL9i2BflX6bhKfnNmv X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR12MB1355.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(346002)(366004)(376002)(39850400004)(2616005)(186003)(16526019)(36756003)(478600001)(66476007)(16576012)(31686004)(66946007)(6486002)(38100700002)(316002)(6666004)(4326008)(5660300002)(66556008)(8676002)(8936002)(26005)(956004)(83380400001)(86362001)(54906003)(19627235002)(2906002)(53546011)(31696002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?eHNFbW1nSENaT2NuNFNhMGVud2dSenRndk9sd3NZOTJHdVgrNVIyNndlOGha?= =?utf-8?B?SHN4Y3QvMHgyOFB0TnFHSlJiUDU3OTVRNTUyajl6aU5peDVjaWdjTTg2Q1do?= =?utf-8?B?bkV6S0lKNkhpczM2SGJhQWx1dXNKR29pSVJBbi9JeGVNam4yTENKNXEzMmoy?= =?utf-8?B?eXNpMitlb1JteHF2ZmwvbkswZWJPdmVXNnJNMVl3TVRBdE1aWXRSaFBreDhX?= =?utf-8?B?OFRRSldzUVZhTXJMbUM1Z1lYRHVKNzNNeitRYVAzNHpqWUZVWm00LzZwZko0?= =?utf-8?B?TzV4M2V6MWEyd1ZTVkNXeTVuZkRib0tYVWdYUlh0V2ZSVmFabkRaSWxKbXg5?= =?utf-8?B?Z0JVTG14T1J5emkwR2VCME5iQVRCVVlrWnFRMzQxWmExYi9mRG1ZdDBhS3cx?= =?utf-8?B?dWd4ay9oWHpRVEtnQ3lOL3huUWRCNEk1UFVZM25mY3lYdXRZR2d5OTRjWjVx?= =?utf-8?B?eXZhL1FMSXRRZHRJTWpKRE9GekhSUTMwdGVLU1NTUkRETUhjUUx6aGNmSmdY?= =?utf-8?B?eHJBWmFPVDNqRkVrNXhIWFZheXE1ZFVNRlZYREM1a25KdW81cUt2VWcrd1JO?= =?utf-8?B?Z3pKTHdPaEZFUGs1WDBBYUlHT3Z3T29pdGtXaWhsa3cxRzN6VngwTnVMeEh0?= =?utf-8?B?Uk1obnRJS3BPcU5BNTltbm45V3lxVmg5UjVPVEljSjZOc1hXeG0vS2ZqUStB?= =?utf-8?B?QnBJcEEzZVJ5cStOb3U1MldLN3VkSHVabHNLaEJwbk1DYVh5TFQ3U3Zudnkx?= =?utf-8?B?UXlXandYV3dITThsd3pYOVl1WXd4SHlpVTFLam83RHhxR1Rad05lbS9aTkI2?= =?utf-8?B?aC96TDBtNDBjaUZNN3RvTlJnMnQwZk54TW5yYXZFaWcwYUVJS2hkV2FTaElH?= =?utf-8?B?cm5DYlpjL3NJMmdYUGFJL3ZvRDg1Y0lra3N5Q3V5dnZ4ZUZna0NQamRpanlk?= =?utf-8?B?d2VyQ050QjZ1ODJtY3V0OWZjbzVMNTZMN0FNd1Rydm1ja1FxN2ZIRy95RDFJ?= =?utf-8?B?eFpkc2FSMWhmWDNKSVRkUlA5MHQvd1JrdlpDeFZqMS85N3A1RWtvUEZ2eFhi?= =?utf-8?B?YUVuR3VUekN3bnM3SE55ZllNdHJMRjRnRG1uSndkZDAwOWxSdy9sSWtUejBZ?= =?utf-8?B?bkI0dlZCUTJxcXhoLzEzcWtoRi9MdVhRR0pCL2Zialoyb0U0OUZYWmhLek81?= =?utf-8?B?V3FWZjJIdGZ3QmMrYU5UMkZGbWpPOXJNcmU0bE5ERWpCY0Z1bjZ3cTFRSktl?= =?utf-8?B?Rm54cTNpZm9wNTc3OGpZOEI1aUxkZHRQMnNWMHk5bTVMcXc2TDVET3ZuMGF3?= =?utf-8?B?L2tzYzlIVE95ODFtbUdaOEd1NElwNlhPYm0zK2VVU3FzY2JUN25GS2xJVXEv?= =?utf-8?B?WlAwMGJqdzJvdS9MODJMM3I0azZtaVY1VDZqUXZZZSt4K1lSQS9xRXRqNnEz?= =?utf-8?B?ME5ybzcrTllGZUwxV1VBUWEwSHNZMkZSNUNWellsSEorYkZKSCtlRWp4cTZO?= =?utf-8?B?Q1c3L1k1Y2VLay9idUE4am9GYTlLNmRqQTltTEQ0anNJT0kxdk9BL1BTTTZv?= =?utf-8?B?Vkw3K0Q5MWRFd0h0Y3BwdFc5Qk5uamJOR1hZS2wrK1lmVXlGdmlUTy8vdWly?= =?utf-8?B?LzRoSlZRR2crNHZYekkwSkQ1NWhrYWpDNmt2UWlqaXdaTDd0eDNBNEU2UHQx?= =?utf-8?B?NnhxNlhGMDBpS0Z2dE9ETVhjWlRKb3FPZXQwSWR0MHRlVi9SanpweGc0eFcy?= =?utf-8?Q?OBx8u7qHARxsrMwbLTnl1jcDXvSpk7Ks5CRLVlu?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: e92a0d13-eba7-4e55-c165-08d905c25ca3 X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB1355.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2021 19:10:58.7884 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nlMPRPTtOoBzAtShQxI/NukzgjGlGn/pHSOoXKSkPjsulKABsl+4jCKFJkQ1tonBji+IttYTM3BIoRYVzE2HUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2986 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 4/22/21 3:39 AM, Laszlo Ersek wrote: > On 04/22/21 09:34, Laszlo Ersek wrote: > >> The new InternalTpmDecryptAddressRange() function should be called >> from Tcg2ConfigPeimEntryPoint(), before the latter calls >> InternalTpm12Detect(). Regarding error checking... if >> InternalTpmDecryptAddressRange() fails, I think we can log an error >> message, and hang with CpuDeadLoop(). > Unfortunately, this method doesn't work. The OVMF Tcg2ConfigPei.inf file uses the SecurityPkg Tpm2DeviceLib library. The SecurityPkg Tpm2DeviceLib library's constructor is called before the OVMF Tcg2ConfigPei constructor. The Tpm2DeviceLib constructor performs MMIO to the TPM base address and fails because the pages haven't been marked unencrypted yet by OVMF Tcg2ConfigPei. Some debug output: Loading PEIM at 0x0007F793000 EntryPoint=0x0007F794E4F Tcg2ConfigPei.efi *** DEBUG: InternalTpm2DeviceLibDTpmCommonConstructor:55 *** DEBUG: Tpm2GetPtpInterface:425 *** DEBUG: Tpm2IsPtpPresence:51 MMIO using encrypted memory: FED40000 !!!! X64 Exception Type - 0D(#GP - General Protection) CPU Apic ID - 00000000 !!!! Thanks, Tom > Sorry, another point: > > (6) where we determine that no TPM is available: > > // > // If no TPM2 was detected, we still need to install > // TpmInitializationDonePpi. Namely, Tcg2Pei will exit early upon seeing > // the default (all-bits-zero) contents of PcdTpmInstanceGuid, thus we have > // to install the PPI in its place, in order to unblock any dependent > // PEIMs. > // > Status = PeiServicesInstallPpi (&mTpmInitializationDonePpiList); > > we should re-encrypt the address range, as if nothing had happened. > > For this, we'll likely need a similarly polymorphic function called > InternalTpmEncryptAddressRange(). > > ( > > For some background on this particular branch of the code, please refer > to commit 6cf1880fb5b6 ("OvmfPkg: add customized Tcg2ConfigPei clone", > 2018-03-09): > > - Check the QEMU hardware for TPM2 availability only > > - If found, set the dynamic PCD "PcdTpmInstanceGuid" to > &gEfiTpmDeviceInstanceTpm20DtpmGuid. This is what informs the rest of > the firmware about the TPM type. > > - Install the gEfiTpmDeviceSelectedGuid PPI. This action permits the > PEI_CORE to dispatch the Tcg2Pei module, which consumes the above PCD. > In effect, the gEfiTpmDeviceSelectedGuid PPI serializes the setting > and the consumption of the "TPM type" PCD. > > - If no TPM2 was found, install gPeiTpmInitializationDonePpiGuid. > (Normally this is performed by Tcg2Pei, but Tcg2Pei doesn't do it if > no TPM2 is available. So in that case our Tcg2ConfigPei must do it.) > > ) > > Thanks > Laszlo >