From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759527AbcILPP3 (ORCPT ); Mon, 12 Sep 2016 11:15:29 -0400 Received: from mail-sn1nam02on0077.outbound.protection.outlook.com ([104.47.36.77]:31032 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933127AbcILPPX (ORCPT ); Mon, 12 Sep 2016 11:15:23 -0400 Authentication-Results: google.com; dkim=none (message not signed) header.d=none;google.com; dmarc=none action=none header.from=amd.com; Subject: Re: [RFC PATCH v2 11/20] mm: Access BOOT related data in the clear To: Borislav Petkov References: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> <20160822223738.29880.6909.stgit@tlendack-t1.amdoffice.net> <20160909163814.sgsi2jlxlshskt5c@pd.tnic> CC: , , , , , , , , , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Joerg Roedel , Konrad Rzeszutek Wilk , Andrey Ryabinin , Ingo Molnar , Andy Lutomirski , "H. Peter Anvin" , Paolo Bonzini , Alexander Potapenko , Thomas Gleixner , Dmitry Vyukov From: Tom Lendacky Message-ID: <6431e761-a4c8-c9bb-1352-6d66672200fd@amd.com> Date: Mon, 12 Sep 2016 10:14:59 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20160909163814.sgsi2jlxlshskt5c@pd.tnic> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: YTOPR01CA0022.CANPRD01.PROD.OUTLOOK.COM (10.166.147.32) To CY4PR12MB1141.namprd12.prod.outlook.com (10.168.163.149) X-MS-Office365-Filtering-Correlation-Id: 7e61b1d1-2a9d-454c-8428-08d3db1f954f X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;2:6emO099h8XxU9+jN6903nNbm43xVjeHJ3lIYkQ5TlgcJL+ENV/SJWlaJyfQwBYv3Afh9DrcZqCKghFWzNi3W4pxrKPxGvTyUAR0ZGq4dQOs4t3P++ZpZCN1crcN7emAQmsxAhjeFkX/NQ1xhZEVIqZc/Vf3y4vYCLCp0lse+6Bvj1T0/x8gjhoLdsUsiuxTy;3:CY4/edy7SGoyZMQyRI99eRezxLATERz9LcFb+jcJSvvPHtJ5DAkEnlSziIxzVTGAahF8QHdTIOItZDApXQpF/t7eejVMqHr0R9zYT/ao3iH+qt4o6Qhwx0szDaSC9W/K;25:r4DLfnk4+LugCcxjNqMmXJ6X7BOz9TxvKNvhY3O+xi0bJIFsg2VkxiokJm6v6e9F9N4Lg3Xylwq87EXvcqTBJJN8A61Cpf8anoRpaDjY46D1pAxm/8n/kH8MySP42sa+HFYLgaIvVl46tJVLTj2mFrx2XfzuF6mUiizKRwv/K/1SIGi3VfXfyaqCeCWyH7elsoCP20lXYnENVh+c0o1Wezwb/nCtOh52R9shJz9l0fx0CjdHZfzW/8rhWyfbWgERkC66T8Y2PmVceEOqUViBXibqgIxDfPIE4v1pzx6+Jiw7HkcbTKEY9TK0JTQvmLwvU/OAUyEc6hC9877ucJSKylxgy6hvn03WgGvFsV9ROjPCLGSVZUG//mdlcrrA/Lsep0ocPuD0mfc76UPSPpoPfVPK3Zi2cn7Yrt9ER8K/778= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;31:UUctVSMu5cLQwLBXnXi8jryuKRsVLtoMNVCneZ9hLLtm4kgtNEYLpqmUfZM0pOkdonIpywbMowKdst9/3sGngvvUmajMQIuydP/Z8w+iIlLQAM/Qqlg83NkjQvuhIp+KiXkv1hfLy/zjwevuqBcYY0n/23/2mp7KtsM5wCP2/a9Y0neiKR6fTx5nUQaR3MkbUnmXWSB8iiwhzfZyyHzgUJSalsezvS3dMnzSOz6ARcM=;20:Oy1yAN+ZLeFA0hcxkGAbIDJPejX/6ss5kaZuU7rT3Qr6cmPJWOn9njtlwdl7QjGrf0Wgwke+kz2ds/7nqr++Iwbas0pEu3iN1j26LgoFIbM2qT10BG0o8Xrv30qoRmt2uwtCF8bMSaffmFEuav1/Y4lxY6IeQvyis1v0c9+RiZuh5Z2fTfSs9Q5jmYA4AYjl6bJ/Kvah3w0LgNBtRJOZcq2aa9sq9BhsbwBzTe6jIkeeS4zpSIxnTHh4YYVaxBq7Rvvp+AJeGEagmIYUDt6xl7ORDvSv0GqqhG1+OFw74WdJaHvSf4AeUUhnoixr9v8YTpnr1COWAu7KrxP/cdUiWPDmXXqLZfNMmtQ/LH2UjbPPNU6f1kOyPv1jfhImWWoMYTzyP302kOlpVf1hNJY3mzkI787ezY9sgRq/QcklT+PzMzcrwprrzPZIaLJs4boDkuNBrn+67O3cB8cCK4PEFNU6mvVL+jlNqbgq19TJvoRbgPFMzDiw8unxVia6Zebd X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(271806183753584)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:CY4PR12MB1141;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;4:0m3AHt8xiMvn7m7G/Gf6TPKYuRGOzOC4GcFWTs3RCVyQcr2KyicxOxlsioQ4kRJskVDaT+rKb3vYkMANK5cKrdhjUxF3t/WyB5agODnVzxrC6A4ptYu6nH5zbyniVOe9SXRflKnvcGx7HsKO86v2I+xC5JFA2N0HwkB4WbZDXXdo2lzI/Z3hJVfVX10bdTPuxL67j/79NYw1CrKkCsHdA47Qi3fGQBa4l1jGNU90pVJiBcIs2vzqdFON5pkG52UgVWCfH1BFcgIeVRBDFvavdReM8St6qmpMPssLJwV+iHtAMlbr0NyRgJxnbmIfb8+p5M4TO430Mii47hrjs8Zjg8ni9dYUL92jB3T90iLIVc8HLP0BwdAE0BUGtoCd6sM8D8csamSGgR5nt8LpDWDt/All3ol0HkDvMTObrFoV5xFn+0hNL0HMG1BwOSf3OpA0g2P6x7vdO/wkUL+Rw3uasRJgU6u3V51sdMbQSp44TmQ= X-Forefront-PRVS: 006339698F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(377454003)(43544003)(24454002)(50986999)(54356999)(76176999)(7736002)(5660300001)(83506001)(7846002)(77096005)(305945005)(33646002)(7416002)(2950100001)(4326007)(31686004)(81166006)(8676002)(65826007)(31696002)(2906002)(86362001)(42186005)(92566002)(230700001)(23676002)(5004840100003)(66066001)(47776003)(65806001)(65956001)(586003)(4001350100001)(189998001)(110136002)(87386001)(36756003)(64126003)(19580405001)(3846002)(19580395003)(50466002)(6116002)(4001520100001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1141;H:[10.236.18.82];FPR:;SPF:None;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMTQxOzIzOjRPS3k4NUJveE4rR3hHVExUNFloQm5TU0d4?= =?utf-8?B?NUkweHBlcVg1SWpoMGYrWDkzcGtseEw2ZlJJSjcyZGx4Uk5kQ3krbGV2cEho?= =?utf-8?B?TG9aVWErQ2lsZEE3VG9kOGhRdmk4OFFtYTMrZWFNa3I3Y3dPRTFtQVFaRmtJ?= =?utf-8?B?NDg3RmZsdEcvTlV0Y1l1bmZkQ3BVNVZvNDJXWmpaTWdkL2VhN09GV1l4OGRl?= =?utf-8?B?ZmpjYTZHdmQ4cUlOVXJDbWVaK0UyTGZLWXFibHV0UTlpVkRWR0tVUk1LOCts?= =?utf-8?B?RG4xUi9obFZVK2Jld2w2R1RrY2lOQ2szYytzbHdSSmFHbHJxaUExOG1MdU9a?= =?utf-8?B?VVZ3aE5tUnUxTWlVb1BDczl5cjlvdGZpZDdVZjhZeER0WWY4TktkTmhEVmFr?= =?utf-8?B?Tlk3eHhHQy9uR0M2M1RUQ04rTTRNL0l4QWh4ZWNWdHoxUFFLM2dldWNDdjA3?= =?utf-8?B?RndZekFvNU52Z1BHVXQyVEVwdlpxYzZZRENIYVRhVHFCeFQ4UG9rWWpIY3Ix?= =?utf-8?B?c1BWL1NnUFNWd0RGV1pzUUNDNkhtN2pOM3VwaVRNVGFuVnlWNmdIaGMrTHNq?= =?utf-8?B?MW05VUpQK0ZxeHJUQVppL3JaOS9jTVFHRVJJd0NYQzFuM1F5M2Z4N294eFhw?= =?utf-8?B?cEM0V1ovOG82dTJOQys2NXRGUmJMcHdiV1ZFUTUzVXdaYmZqRjdraUQwOXNK?= =?utf-8?B?ZjQ3UVAwNUlNVDBaakRxVHZwTUJNeVgwYU9SRnFmZjhMdVM3T0k0N3JxZXB5?= =?utf-8?B?UFNxMVRGNEJmVG1lSTZDNENiMGtDWmZPY3JDa3NBb0dsa0lqejRkRlRPeUZp?= =?utf-8?B?aVIrRG1wd1k4dTRiZUZaeWp3WGFNUnppdkgwQ1NUVjJxZXFNYzg1N3lNdUhX?= =?utf-8?B?TXdzREtHbEY3RUx2dGFLZGlTeHpiTkwwR2NDWXpXdkxHdUFGQ09ybUdTa3Nz?= =?utf-8?B?Y3ZsS3I4MGUzaGN5aDZLUmwveEpnWmVhQThqejVvWmZsMGtFajBUOWN1MXV6?= =?utf-8?B?d3V4aUs3ZDM3Mk8zbDJzZG9lTG5PWUdIS2pwR0lqTFV3bC85T0s2TXFQS1o0?= =?utf-8?B?RDJsM241U1BlZTV2Rm01cjRIeXNjYXEyeUhabnJNTmRDajljT09GVEwya3cx?= =?utf-8?B?RWRXVzYxNkZjeHRSb2lEcnBET3I1ZVlINWRia1NWZjRsbnBGeW4vZ3RiamYz?= =?utf-8?B?dm9kU0o5U2pIVjJRZzdidDhBUzdVTHZtVEREaEJweGpJSWxoMkIwZkZZZk56?= =?utf-8?B?VlNBL3Y5eHRWV2hsY1VBdk5iUEZsNnlhOUR5cGtuSUFpUHRzQ1Z5WXcyV0p6?= =?utf-8?B?enZ0Z1BMQk5nREVYNE1PZkl5UGV5YmlYM0lZOGhXZHZkMUl2a20zbGhOL250?= =?utf-8?B?SDQ0dXlqZUFER3RXYnVYaXlRbEJ0VVpxMnRuTWlvcmdMMnVtbzZ1Uk5qZWtx?= =?utf-8?B?aDkySlBVTDZKVWVKTm5uS2FWSWhFQ2Z5dVdORStSSGlhd2NnRlRTL2ppNVJm?= =?utf-8?B?RHphVW9NMlBiMExteWpFTmpERGhCWjJ1d2VBM3lqRVlSWWFjVXlDdS9Ndng1?= =?utf-8?B?REhtTDJDUGwwVDJYS2NOcytDMmN0dGJrNjFMQytBOWdIZ3liWjlmbDk4bndL?= =?utf-8?B?aC91dHplUmZ2Y0xBVXJNVkNkNUdQTElFM1I0UTVtR2VkYlcrOWowZUhCRW45?= =?utf-8?Q?T392l7pPWT2DrEnLISzWM1w/S2xECRI3dUHcbZo?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;6:JVW1ZYyVlPtWRH2Lq37oWes876TNR2XQ9rSItmqd78fQatjqv5ytbLrM/sW4zPhBDY2WXbXBFe6JqgZcNkrcLDEURf1zqzjWnMk9zR1lDKc17qOWvA6MgDHl1i3CwQN/hzthwKcl9HqLhr0+HbdXU2dEj0B3RUROcWUT9VjOJMpWgsNRntD283CCmfT1g+ji104a9v83VBpKccsibgGWQrHGG4FsJ+LYAtwcFn/yB7YiDkc+5FUkOsRk6PuOCar2whZYylZ2K3Zecg9slbPZIFiVX1rLlfJRX+fjDMQnG2zoYZqC18pzTq0Lf/TiThr3yzosp9tCJ/XUhPfm20hghA==;5:oN7f/S+h5/+XYxR0iVy9pXs9LNObUFFwhiOklUHUaD7tEBYNBmUMpwJg05YV6uNXyVzhhKz+rsaRs6QXyVDbcfkpY1z2UL/XcqOej0TA7ebXoa3MvWC4iMvJcr43mhu9fsWDPFClwjCkK8jnJ25sBg==;24:uLpmbSNdo/UEe2Wzu/kRKV0hXCafMlfbxNfQzLPlOzNZHL1Y0xZvD+Mec1UZ9n92EMJaERUgiMhiCDcCJpOjuGJ8FKVRQ4GoARuu0KTSYEY=;7:hmuf/ap2lS/M92XG7wAHCFnm9UmrYJlj1INTmEV20q0k8n9aVfS0KRUWfB8egKdc5LFbANpFvFr7kMRSI/BT3AVXslz1AJcX3NZnxBpnX2hsuSHopK9gmgMOLIkA5nHIUEjstGxMByvaK0tOf+F4pKBSkER1bNd4z9S3NR4et/Mre38NvlbE8CqiZvOzomyDKqOEXRHoizCiVI/Lru6KN2w5ALcM736Nm1qR0mtrKgazJR83qF95mjM5acjpJst9 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;20:dFlCLskE7/LnKAGYuBd4j3gSyUhznZe1X053ta/HZnu1RYwsWk84RXB0B0R3DbdO0DrQFE4YLeumD+I0+UwuDN4qd+L2EAWnwRhh3FSUOAJrcfADV/Wm67Mo+XLwXBZAJrXBQMpd4GYQJQyPyeg9+b3Nb2pHSKFDxozt6bTZKgQiKm+fp4ngzDI2CyOi7WHbqNVAwa9VkuRcEOLPPYDFhzW5VxFij4SODcXcWeK9I7riL7uPVnOnH7msGPsIR+X5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2016 15:15:06.1847 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1141 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/09/2016 11:38 AM, Borislav Petkov wrote: > On Mon, Aug 22, 2016 at 05:37:38PM -0500, Tom Lendacky wrote: >> BOOT data (such as EFI related data) is not encyrpted when the system is >> booted and needs to be accessed as non-encrypted. Add support to the >> early_memremap API to identify the type of data being accessed so that >> the proper encryption attribute can be applied. Currently, two types >> of data are defined, KERNEL_DATA and BOOT_DATA. >> >> Signed-off-by: Tom Lendacky >> --- > > ... > >> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c >> index 031db21..e3bdc5a 100644 >> --- a/arch/x86/mm/ioremap.c >> +++ b/arch/x86/mm/ioremap.c >> @@ -419,6 +419,25 @@ void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr) >> iounmap((void __iomem *)((unsigned long)addr & PAGE_MASK)); >> } >> >> +/* >> + * Architecure override of __weak function to adjust the protection attributes >> + * used when remapping memory. >> + */ >> +pgprot_t __init early_memremap_pgprot_adjust(resource_size_t phys_addr, >> + unsigned long size, >> + enum memremap_owner owner, >> + pgprot_t prot) >> +{ >> + /* >> + * If memory encryption is enabled and BOOT_DATA is being mapped >> + * then remove the encryption bit. >> + */ >> + if (_PAGE_ENC && (owner == BOOT_DATA)) >> + prot = __pgprot(pgprot_val(prot) & ~_PAGE_ENC); >> + >> + return prot; >> +} >> + > > Hmm, so AFAICT, only arch/x86/xen needs KERNEL_DATA and everything else > is BOOT_DATA. > > So instead of touching so many files and changing early_memremap(), > why can't you remove _PAGE_ENC by default on x86 and define a specific > early_memremap() for arch/x86/xen/ which you call there? > > That would make this patch soo much smaller and the change simpler. Yes it would. I'll take a look into that. > > ... > >> diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c >> index 5a2631a..f9286c6 100644 >> --- a/drivers/firmware/efi/efi.c >> +++ b/drivers/firmware/efi/efi.c >> @@ -386,7 +386,7 @@ int __init efi_mem_desc_lookup(u64 phys_addr, efi_memory_desc_t *out_md) >> * So just always get our own virtual map on the CPU. >> * >> */ >> - md = early_memremap(p, sizeof (*md)); >> + md = early_memremap(p, sizeof (*md), BOOT_DATA); > > WARNING: space prohibited between function name and open parenthesis '(' > #432: FILE: drivers/firmware/efi/efi.c:389: > + md = early_memremap(p, sizeof (*md), BOOT_DATA); > > Please integrate checkpatch.pl into your workflow so that you can catch > small style nits like this. And don't take its output too seriously... :-) I did run checkpatch against everything, but was always under the assumption that I shouldn't change existing warnings/errors like this. If it's considered ok since I'm touching that line of code then I'll take care of those situations. Thanks, Tom > >> if (!md) { >> pr_err_once("early_memremap(%pa, %zu) failed.\n", >> &p, sizeof (*md)); >> @@ -501,7 +501,8 @@ int __init efi_config_parse_tables(void *config_tables, int count, int sz, >> if (efi.properties_table != EFI_INVALID_TABLE_ADDR) { >> efi_properties_table_t *tbl; >> >> - tbl = early_memremap(efi.properties_table, sizeof(*tbl)); >> + tbl = early_memremap(efi.properties_table, sizeof(*tbl), >> + BOOT_DATA); >> if (tbl == NULL) { >> pr_err("Could not map Properties table!\n"); >> return -ENOMEM;