From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.80]) by mx.groups.io with SMTP id smtpd.web10.4661.1618960425199224813 for ; Tue, 20 Apr 2021 16:13:45 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=nkLZNudT; 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.93.80, mailfrom: thomas.lendacky@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oOzCRSlYcSM1NZz4yF9hVAQBIH4M2hgdBKVfKqmuHRtdBuu2n754MYlidd97RQbSMJ4psyImUNcCqfKQPSHA4+UHv8dEqNUBegLEa32phCYZIazJecuXbkWdfkrpYtsbuuu/rYyP+c7Jn96TZ9TqDtI/oeA2BTx6+EiO0z+C4YhDx58sBx75s/grx0j67S/kC+4Gq5f0af1wE2c1kWoMxtRjDvS9F6zqVVEionmSAvnrXTcJ3hEFQXrHUePGAhjxmFBUwtE2cl6gIiPr7qr+9gIqoMy3sX/WnOsG2NMHB9/uVRQk3moMQ0d7tAvKE4KogJiOIzQqk4qudPCxhmwwcg== 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=K34ah0VaVJl3xK68qFKSnH4jnNE/5gpBGuO4yb8EJl8=; b=UaqYz1DUH3Iew/DGvegJ7HPSLaM51R87LxEQE4V0DGPFLrUXkS+faG40dK/e6r6ihjbytVgkkeUDIr9fLOw+iqBxeIXnlwompNOPULtrvrTc8t5p4/nf92VoHHUR/Qx+MwkRf6YeM43bBkZtpKUbOly9Va5dh3sg540EcbaLKTD+6eJMniOESrqj3AdhgMhmMBcbXLlbGquntcIjNNTnPD5hNg/Yogkjak299n20V5ZmE1o+bIMynghto0Ce5ufoM0pfLQgvpQlh4ZvDFBsRsRTGlcpK5nowesv2XFgM243H2fIUDFE2NU6gWYhwesXOEGN/c1ftYoj0g9i4aldeTg== 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=K34ah0VaVJl3xK68qFKSnH4jnNE/5gpBGuO4yb8EJl8=; b=nkLZNudTzTkzbwLrJbCJ8XKIVA/AWuhL67WZXFegNcfSfXRhUpfH4Lvz7TcCPYDc8zlSSRVxzED+uTpmnSsWNRRK3JcseGq8ykRvKrCL1wPC9KMLHAbimZhoVFr5gOoKYEgSjVK77F2jZD2fDvJpFAB080ZCONyu0/B1BUzpHU4= 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 DM6PR12MB4436.namprd12.prod.outlook.com (2603:10b6:5:2a3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Tue, 20 Apr 2021 23:13:44 +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.4042.024; Tue, 20 Apr 2021 23:13:43 +0000 Subject: Re: [edk2-devel] [PATCH 3/3] OvmfPkg/PlatformPei: Mark TPM MMIO range as unencrypted for SEV To: devel@edk2.groups.io Cc: Joerg Roedel , Borislav Petkov , Laszlo Ersek , Ard Biesheuvel , Jordan Justen , Brijesh Singh , James Bottomley , Jiewen Yao , Min Xu References: <1677B2EC90F30786.1355@groups.io> From: "Lendacky, Thomas" Message-ID: <007e59ea-3933-7b93-afff-4023f3111558@amd.com> Date: Tue, 20 Apr 2021 18:13:34 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 In-Reply-To: <1677B2EC90F30786.1355@groups.io> X-Originating-IP: [67.79.209.213] X-ClientProxiedBy: SN4PR0501CA0010.namprd05.prod.outlook.com (2603:10b6:803:40::23) 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 office-linux.texastahm.com (67.79.209.213) by SN4PR0501CA0010.namprd05.prod.outlook.com (2603:10b6:803:40::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.6 via Frontend Transport; Tue, 20 Apr 2021 23:13:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1edd7cfd-d86f-48ae-b515-08d90451f146 X-MS-TrafficTypeDiagnostic: DM6PR12MB4436: 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: MFfvOjRroLLupp3ZhhGaQb0tdkfnb8OM6lAICif5wpgtAvTXVvG+iXB2aCGgT8wixim1MISus4OG37LFYcKjypmAJOm3Ei1Dk3CPw/EVsi+snMSbSzh/2i7BdFqbICHTDXb+z0qSegV+CPaW/NtPXCPi1He3HajjdGhVrQbEXovkt3qyspFprwLAKmexKXb4YHVk41O/wYdu2zjTp7IFl188HJUftpRpFUNwgFEz1DzCQkzbHTq8vjwpbrBjp614yeE+tHo1qTTIe7SuP+n4tqR6tPzKbRFzxeX09RqiIdf1lofdjfMwsUatXDYZsaJA+ZhJHOY+wGBksKKqyLfFW4DCZetGtukm4T7tUrfTW/LZYF5og9vsUJbnq+VMcHwgIHqBpSp5n7WhQ5OAWLpSqTaX48h0rxnOJZR9E/B/YayoMt8rsfHuLz0yLx+G4sfBFRwBK/ON+pAabH7r/PT3KvQRoWQXqU1wrgIKBqeTpS1rnNgvFAnrJwg5NgK/NVibu2jKjHrFa7LsaI0S5ec6WQDcM4IW2L8WMkALT7G9lne1S/Mevm5Lwl5fOBKfwIXQ5QNwOO8VSJTw0Gamzs9/G3JD5qCWwX3YVHe62Xem0qermJpmpzqyQyyGNOTrObJEyVdl1K/wW8tY00i/DwgpwM8S7LG+CNvs5C9hoazpV9g+fCCmaz/Y6myYOpTmn+j5kvumXAIgUS6Z9QZ1IaZhSen5ljPODW1hcYrGsWf25lJbMTzQz/fld9YOixUviLv3SFaAcLJseBBGA7tKszs9Fg== 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)(376002)(39860400002)(346002)(396003)(366004)(54906003)(956004)(478600001)(2616005)(4326008)(966005)(38100700002)(5660300002)(8676002)(186003)(6512007)(66476007)(26005)(16526019)(86362001)(66556008)(66946007)(31686004)(8936002)(6506007)(2906002)(316002)(6486002)(83380400001)(31696002)(36756003)(6916009)(53546011)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?ekh6b2lyTzBaUG1xQlRwWTlvdXRPT1pnVzZvRmF1NXdiOHlrSHdkbU5RazJL?= =?utf-8?B?NGNqaUpBSTMxb1AzcExxajIzZGp0TGFsMHpBd2dabVhveFZlZXV6RGg0Mkxv?= =?utf-8?B?TzhmNVRrMkMvSmRHZzZVUkhWMXgxcXhzSGhXeGRjOXk4RU9Rem9CaGNFUEFh?= =?utf-8?B?bkFEV2FhM212eGpRMlNvMnMzNS9aUldvd2dBaHlQaUtlNG9QaXpFZ1Btc3Jv?= =?utf-8?B?OW5SUHZpeElFU1F5VXhTcHI5bXJZaEJxQjViZ0c2R0FNUUYrZmZnVWNMR0Y4?= =?utf-8?B?d0hNb1J1Y2xoeXhhbzZkSXRaYVkwS1Zjd1phUElmZmVabVBlWmlBUk9peVQ0?= =?utf-8?B?T3dMS3FFdWFBbHlxdzhDSHdpaGF6NFljOGN0Y0M4TjVpY2JRZkwzUTFRSzZQ?= =?utf-8?B?VklXNE9KYTFpbFlYVFJKYVlEem41RmhYZkk2REJOYmNKQ0xJOFJNWjlYVHhZ?= =?utf-8?B?QjRWTFVVWkc5dmgrZXRQOVdCWEFpazFWRzBNZDMrRE5QYmNTTEFROGdnaXZh?= =?utf-8?B?Y0JYYnlVU3pGbmhaS3IrL25aRTBtbnp5RmppblBSMWYxRi9lSWVTWDZNSVJv?= =?utf-8?B?R0FxR3pUbzk2clRSRThrU0RFd21VOGlpckdXdHRXSmVEZTRPYWxaRnl5TXRZ?= =?utf-8?B?dkJzWm1qbnhieHBZTExRdFhxbHo3RjFCbE1iQlA1TnpSYWxKS3hyQXo2NHQ4?= =?utf-8?B?ckZQVHRzdDFhKzNxc3BaV3JsWXNwemdkMFNxMkpHUFV0UU0yby9aNkVYWWdx?= =?utf-8?B?Mjk3dnRPTDZUNks3Zm16VTNWb0RjaCtQdGFJc09rS0dITHZua3hRblRDclhi?= =?utf-8?B?RjJZZlFFWDNWdkFXN2VGVXpNRWowYnZWNUMxM0NsQUUwTVpYdVduVlgwcGs3?= =?utf-8?B?UXR2aUV1MzR0ckxlL1ZTdEhQdGpDZ2VYRjIyUUFLb2xkTyt6cy9WWkJnOTJJ?= =?utf-8?B?Y3IxWlNFbjNXaWZVbjM0dDNzd2JvaXptWEk0TkhyNkU3bWpGaldGejd0ck1U?= =?utf-8?B?WVZtVVcwY0FFdVZSekJiSjM2bE83MVJJNTVGUWk2NkdNK09FSjRXVncxOElm?= =?utf-8?B?ZzRpMTBmdy9md1pNbEMyK2ZWS2xuUkdqUUVRZzF2QkRWZC85bHZHWElmdWhH?= =?utf-8?B?Z3labHRvRVc0NnVoa0ZKd1ltUTMrNitvS1dWK1NEcSs2ZnRGRHpOcFdSTTdP?= =?utf-8?B?VmdNeTBUSmxSL1QwUkNqTS9Ob24zSTZ6WUdybDVQdk1MbUJvOXhkbnJKZDRQ?= =?utf-8?B?aE5NS3lVeHVsUmIxUDdsKzdsTnpzN2w4bXg0TFcyRFNEdXBEdkVjcnJVeEYx?= =?utf-8?B?UjZTYXk1MmhhU2diemc0REZvcFBQNUNqdktMdU54T0NYR1hFT2JJb05kVXN0?= =?utf-8?B?SVgvbXZHdnI5NlhjWnpyN014aUVoMDc2Z3FDSkkwOWw1eGVpTHVIR3lhYVBV?= =?utf-8?B?Z3pVMlpQWlpFYUd6MWRSOS9xR3N3djFRdmU4QW5ZMVRuOGc1ckx0OUViSU12?= =?utf-8?B?cG00Ui9ycTRMdVVMYldMOEpWS0ZORUptS3AxcEhWQlh6aldqNFlSR2FsSkY1?= =?utf-8?B?OHNtWC9yTWkrR0pzREgzTHNqNHFPZ2tNUUR5aFloRlM0U1EyWWJHajV3ckgw?= =?utf-8?B?Z0JMTFExQjR2bUw3ek00SUNqb1IzSUhxMThhRERBUER3TndXNGdqQ2gwSEYv?= =?utf-8?B?YTl1Y3ZPSUZqR2JvUm5kS0lNR0psYytUWFhUbVJuWnlET08rOURqOFExb1Jm?= =?utf-8?Q?tLImc1GJhfDucCl9JHZ6T/0WmCGzDR9cixAgpad?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1edd7cfd-d86f-48ae-b515-08d90451f146 X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB1355.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2021 23:13:43.8969 (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: gC4ovNvAh8cNQDfVgH4VBQ4qH9Ysszxb8C/sZ0yu7Wi7S1vg/HOl3sqYhdVLGnw3uQg4kHZbjTi9x+EH58//AA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4436 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 4/20/21 5:54 PM, Lendacky, Thomas via groups.io wrote: > From: Tom Lendacky > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3345 > > The TPM support in OVMF performs MMIO accesses during the PEI phase. At > this point, MMIO ranges have not been marked un-encyrpted, so an SEV-ES > guest will fail attempting to perform MMIO to an encrypted address. > > Read the PcdTpmBaseAddress and mark the specification defined range > (0x5000 in length) as un-encrypted, to allow an SEV-ES guest to process > the MMIO requests. > > Cc: Laszlo Ersek > Cc: Ard Biesheuvel > Cc: Jordan Justen > Cc: Brijesh Singh > Cc: James Bottomley > Cc: Jiewen Yao > Cc: Min Xu > Signed-off-by: Tom Lendacky > --- > OvmfPkg/PlatformPei/PlatformPei.inf | 1 + > OvmfPkg/PlatformPei/AmdSev.c | 19 +++++++++++++++++++ > 2 files changed, 20 insertions(+) > > diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf > index 6ef77ba7bb21..de60332e9390 100644 > --- a/OvmfPkg/PlatformPei/PlatformPei.inf > +++ b/OvmfPkg/PlatformPei/PlatformPei.inf > @@ -113,6 +113,7 @@ [Pcd] > > [FixedPcd] > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress > + gEfiSecurityPkgTokenSpaceGuid.PcdTpmBaseAddress > gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS > gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory > gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType > diff --git a/OvmfPkg/PlatformPei/AmdSev.c b/OvmfPkg/PlatformPei/AmdSev.c > index dddffdebda4b..d524929f9e10 100644 > --- a/OvmfPkg/PlatformPei/AmdSev.c > +++ b/OvmfPkg/PlatformPei/AmdSev.c > @@ -141,6 +141,7 @@ AmdSevInitialize ( > ) > { > UINT64 EncryptionMask; > + UINT64 TpmBaseAddress; > RETURN_STATUS PcdStatus; > > // > @@ -206,6 +207,24 @@ AmdSevInitialize ( > } > } > > + // > + // PEI TPM support will perform MMIO accesses, be sure this range is not > + // marked encrypted. > + // > + TpmBaseAddress = PcdGet64 (PcdTpmBaseAddress); > + if (TpmBaseAddress != 0) { > + RETURN_STATUS DecryptStatus; > + > + DecryptStatus = MemEncryptSevClearPageEncMask ( > + 0, > + TpmBaseAddress, > + EFI_SIZE_TO_PAGES (0x5000), > + FALSE > + ); > + > + ASSERT_RETURN_ERROR (DecryptStatus); > + } > + Laszlo, I'm not sure if this is the best way to approach this. It is simple and straight forward and the TCG/TPM support is one of the few (only?) pieces of code that does actual MMIO during PEI that is bitten by not having the address marked as shared/unencrypted. I was also thinking of just marking everything above the highest system memory address below 4GB and up to the PcdOvmfFdBaseAddress as unencrypted. That also works. Once DXE starts it takes care of all this and there isn't an issue in DXE. This is just for PEI. Thoughts? Other suggestions? Thanks, Tom > // > // Check and perform SEV-ES initialization if required. > // >