From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932975AbdBVPmR (ORCPT ); Wed, 22 Feb 2017 10:42:17 -0500 Received: from mail-by2nam03on0085.outbound.protection.outlook.com ([104.47.42.85]:58973 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932462AbdBVPmK (ORCPT ); Wed, 22 Feb 2017 10:42:10 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Subject: Re: [RFC PATCH v4 08/28] x86: Extend the early_memremap support with additional attrs To: Borislav Petkov References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> <20170216154348.19244.11884.stgit@tlendack-t1.amdoffice.net> <20170220154354.ggb7yzpjotmbrd5a@pd.tnic> CC: , , , , , , , , , Rik van Riel , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , Konrad Rzeszutek Wilk , Paolo Bonzini , Brijesh Singh , Ingo Molnar , Alexander Potapenko , Andy Lutomirski , "H. Peter Anvin" , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov From: Tom Lendacky Message-ID: Date: Wed, 22 Feb 2017 09:42:02 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <20170220154354.ggb7yzpjotmbrd5a@pd.tnic> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR12CA0063.namprd12.prod.outlook.com (10.175.83.153) To CY4PR12MB1144.namprd12.prod.outlook.com (10.168.164.136) X-MS-Office365-Filtering-Correlation-Id: 3fa033f2-8312-4bf6-8bdf-08d45b395b79 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:CY4PR12MB1144; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1144;3:kQgg4XHRbf7A3jx3mkEIRFtS6E5kIUYhlQjJyM4wsuZu1R7hGfCwjntcuE8U5P39WocA3LXiT1u9GwEU9bjiYMwnUxxCVjL/rUoJpvwTu6/CGeYuFF5ioDxebV4+GxSuS0ValmhEg/TpJhgmiiel/pD8OGQGVyIiNx0+jFWHHNh0T9n4yiMix429gkmehpQ9kn65iXSTt9E/bj2y/95NElmNQzvZzwvkL4u6AFH9f3nWFGVuAdwaqxbgHVcKEM08GhtiC8Dpvv0Xzmgv+OV4Oa8ArnensknHOLvA9dg0/bQ=;25:/hsbcMefJmA/CddWT4An+xYwQcDOYYVonaqTHNFsPiq7o6hKHsesu3ZDUstYISU3uH5iwgFc9yoxjpUPiJ3cSfpZzk5rwRs0ziApJRn4xdNXn7LMNyGXs3uv22RjawIg8UPA0arL1tp2G1f1gpVk0ulxYlkGng00mkoxqc3acXRlNN4WHB1eO6XyTAqNaY6Y/r7xjEdpK+myac0Ppvjj10VGhyDHplRDrNsj4z+xwtt/5R58s8gwoJIQZOuDho5dJ1Jdg5idVp2mX5Kf3kKcSJwWXbSKOsZw0c79PABwgJeHLu4p9XD6ZA5aLgWyIudb3WJbjY+/Z0YPyDABhza81+YPrMNuoHXj+aUvxi2IpUPmwb8c6FODT+/UyvX4dedaWmhsLYLq+QBh1TElcNtY61kbzcA9ZiOs2MVK6rHAQfilmBZ4SyRPA0j+C2hPpLqE8+X/3q2jBWjuSf/5xos3AA== X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1144;31:ELrCLjiXEg8eJEAiA5HF5ZvPkKdGuD7tVHB+f2UnOyRwgwLWBuTg0hKKq8YOgum5x7D1SFpP9yj2AcnRNlogVzlTdUrWwl2wLAg4Fk4A0ZPoH+5WV/Gp3iqiWiSmzTZKNo6acKAc65loMc52S45dmCjRsB/5effuZT92gClKbB5OD471kdsGDHkbSx0P0qJo0S5nxOCRwr1Nb0GGyHNEd1gK8WkxJPm4B+Mt7qtqOU8=;20:pdTJV7Dvt1EVWuKRi28slHcksalu8D4Ckxpm53RMbzmxO/dBAmBRnmmTqyL9GCkHLOJDZ6DvsR7X0RIHVmJKwQqrQYIwjvsxcGyvrzPMcbQqH4UAozvras6ymUpZY+FVJuzRKa0H4fO75quGbnrI6rjvkwdRgd9bcX5aqyyd4mxfGUIrWyDu/ZbwzQL9+hhN5Wmrt3jrDOWGU+Qzk/9ZB8lKM/D8sAqHi3VKwxX9jY8y5t4kojr7/VQ+9LQAALU16QGo79S+L7FPgwRGsevRG+YDbc/xRmfmPtspqHDUjDBzdWC3Wkplm0xxTR58M9l8sQipkbQ0VOvvvDegXJXNn8XPemfpcx2fFE/ByWSH42cCDnHnDM3SO/Jy4to/brGBJbiHMVTdQSjwRkBB7YUtqYswLVuUkRm0irlzi9Fg/LATNKWQuh9knnBQVlD+UMc7r52VxRyBMZ3T2/wVaKcMrixDxKjK3sS2MQVST4cC1udPVmbxBe03l6oG7KTvG40I X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123558025)(20161123560025)(6072148);SRVR:CY4PR12MB1144;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1144; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1144;4:PJjkxDqFMmJG9D/hyZeqlYNJ0UuBdIIMD91CMQjg5svtJPiCVipoycAKCImSKLvYXTyOvOGgFqd5d0YzfADGv5p6Y09lvqQqim4pYq6+p/oWGvCJOO/T5aTMuKyioEafHls0Q43bcQCg+yw3VFTqfpcxcKcdJNKvfi8eOfUqTl5CaiAPBsQymyARhFbeaDsqnGH+7Nj8vL/fVpsyYG3bxIi9qQztCZKRc7hacfPYbY/H2VeYmCd+O8AkxZxDvs2NyXxCrk/uM6dk/r9CdG+9qy0nMeKH+aRoboLpusNfpNwAqPQiG0TV5jBhWLj/MRHtiPO/cnlBvaCIwKruuzikwY1hWty0rTBcm/r0VxCO46JxSiRKICEleeOJrD9JyZ6F17NGnUX2bedBhEzykvG9bdzvEpXYMlg/7JAMrCywWiqoZCoo+QZSxdF40VmOj0zPZKqvne1ZWivaQArJ3nnI5Hu6EfeLAIRdZ+8StRdixNzPw/WcC5HX/xSySCdfU1fsFKGa+mT90ouLPoBvexhtLC5Kwcx7/I2wp3WCIhYDE7EwbDu+lwke1JWzASZ4C+1DHMDDyFVv/KhvHwZxRhcTez3/4ZTjJAdOQRNBym6lfnBFk0w/lsJ1lb6YtDCN5Cb32rkUwz0Y7GFBsG2rxGQDkArIS7K1AHjiYXEOZBc7UdI= X-Forefront-PRVS: 022649CC2C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(7916002)(39850400002)(39410400002)(39450400003)(39840400002)(39860400002)(24454002)(377454003)(57704003)(189002)(199003)(86362001)(81156014)(31696002)(4326007)(3846002)(83506001)(81166006)(6116002)(305945005)(33646002)(65956001)(47776003)(2950100002)(54906002)(66066001)(65806001)(229853002)(38730400002)(42186005)(7736002)(8676002)(110136004)(7416002)(23676002)(77096006)(6486002)(90366009)(25786008)(36756003)(189998001)(105586002)(68736007)(101416001)(50986999)(54356999)(230700001)(53546006)(106356001)(92566002)(4001350100001)(64126003)(6916009)(5660300001)(6666003)(31686004)(65826007)(6246003)(76176999)(2906002)(97736004)(50466002)(53936002)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1144;H:[10.236.64.179];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMTQ0OzIzOjFzSUtSTGRCb2xKc1ROSEFKTUtWZHRLU2Vk?= =?utf-8?B?T3JsVTVYZk8zY3l1TnlBbnFuZ20vaUNaT2VkQTFpK1A3QnBsa2pGaHo2NVpi?= =?utf-8?B?SDFQaFluTDU2TGVlNzZkOFNTM0pmYkVoQjJtcjkwMHFVd280T1gwaVlGdWE0?= =?utf-8?B?QnFWR3djMllwcjFnMzY5T2xBdHNFTnhOd2dDV2V4dVByR1dsWmdxa2hPKy9v?= =?utf-8?B?VnhoeU5GaUxOYWJPWFJnKzQzblZ5RVl4M2xYNGFNYTYvVHUrQ0Fjcm1TVExB?= =?utf-8?B?UTlOWndoKzBnVEVZcTRzZEZoMUsxa010QXlibzlWdXNNWjduOTVMSUpMdVdE?= =?utf-8?B?d1pyMHNkSjRmdWx4ZUlsa0s0cC9MZGtLZkM5eEo5Szk0UHN6a0xxcTlzWCtH?= =?utf-8?B?NnVRTDZUcWxEYzYvdTNSdUs4MStPaFJ2K2MyL1hvbGV1bjZyQUJ0enU3UWJS?= =?utf-8?B?c2xUYVBZL2FWNVRkYkx4eXd4dS9ub1Fia1pTWTZ6amErR3FickFOMVpYZGR1?= =?utf-8?B?NHB1NGRBNUJxNVFyS0laZGpqOU01cmN0RjNMTFlFNDMxaVlQSmJtd0tROU1l?= =?utf-8?B?QlNwZlVmT1RxTTdTbkFqdVFuSUNjNXhrdUo4eEVOYzl2cS8xTElCN2x1VklU?= =?utf-8?B?UU5teTZvbGpIWmdJNkNGSTllbTlQSTU5dENxeGtTY1VoTjJWOHRWaXY3MWFD?= =?utf-8?B?MlQzYVMvWjg2NzQzN3FuamdXTVNvY2FYNmJnMyt6aVUxWnFNbjFqNlBEaDNN?= =?utf-8?B?eUozUlZFdngzNTlza0c4UUxwZFdWRFNXd0hGWnlVTHpReXBkakhUelBxcnE4?= =?utf-8?B?bDJnRjFlR0FPOVRpQ2s1MnViUk5PWHA2VGVIcm9zdmMvRmUrVUJvK2ZEVVBn?= =?utf-8?B?OTlwQlg4bDhNck5uSU9IczNaVllOaGVLUlluZm9GNyt1TGFLZllUVjdCWXRq?= =?utf-8?B?TVA2ZVFwZFRjWTMyODA2eHBibWZMNWxFcWs2WW5CQWRidk5WeEVXN3ZoV0l6?= =?utf-8?B?NFQ0TXlpUFArOFVWMk1PRURjRDhuRDQvYTFSbjQ0Qi9SR25CYldOQ1NpSVVx?= =?utf-8?B?MlVVL2xSdHExczRzclJwcjQ3bm1VYnNlWitScDkwK0ozcHh5MGMwWExJVmNt?= =?utf-8?B?MDBveXlZRjJMcm50K0dZb0RaRExMNFJGcEZjNldkY3gvU2ZKK3RYWUpwUzM3?= =?utf-8?B?OGhOTi9QR21BYWI2QjZPdUp1MzVWM2paMUxkRDBjbkJrc0pkUHFadTA1MDZz?= =?utf-8?B?bFBDd2hQL0JjRjlyZ3dBSmVOeTkyT214eVExaHpvMkpUQ3dlY3Rpa2VPMWQw?= =?utf-8?B?UGVxZ1FIbmxDMlF0b3VnOERtQmE2cSs5ZURYRTN1UmMzdVJlUFdqTTZIeDRU?= =?utf-8?B?cnV6VHBnbkRUWFMwRUN6ZERIT3U2VWNkT21BZ0l4RWxFZ21xY1hzbE9nSEtU?= =?utf-8?B?Z3FUQ092eXAvZFAzZzBhZkh4MkIyWTlqYk1XNUdJZXJuREdyK09EVjBRQkVV?= =?utf-8?B?Ukd4NVE5Nk42dExOdi9oTll0eTJHbjA4V1FEeUcxTTRISFhObnhPQjNIMmo0?= =?utf-8?B?YkpqeXltdUJsa2h4QU1pRnRTOTRsdGQ5ZWZTVjhNMk9iZGJBTmhmWmtqeWlV?= =?utf-8?B?RDFwWm1WeDMzdmxQeWYxWWFmM1RxM1RuWGZvLy9mOGJYVjI1QUxUOFJYNzZk?= =?utf-8?B?RWd1ZWNhRGN1ZGR2YUtiT3RzRjJoSGJBRW1ndEhzV1BRQ29JRWFQM2hZeWJD?= =?utf-8?B?RHhzWndCK25Xelo3WG8zeTBMdElENWpUWFVxSkxyTXZZbDlKMytnRVJ3eUg5?= =?utf-8?B?YkdKUzFlNkNLcWlIbDliVk5OWGIxQ2ZwcHZCcGFYUmdFLzhUTFNnWGNaUFBj?= =?utf-8?B?cGp4OFNBaUtuUnBPajVCK1hsVWVFQnYyWStzQUsxMGdRNjFtK2dYaVMveUIv?= =?utf-8?B?dFJhK3dHUDhyeFh4YjRWYkVBaTBLT2tDMGpjY0JZRXBkVGVUaVJQUXBsWHVm?= =?utf-8?B?ZW5tOTdMb3Q5Q3dRRXFkVVl4MlEzR2pOTlV3b1JSVktrWGk4S3ArV0FwNitJ?= =?utf-8?B?cURKRWxLMVhyZG4yVkg3ZTdaUm1zcEs5T2xNNXlDUkozQVBuVk9YL2pmckVp?= =?utf-8?Q?8su0PR0LDQGZxE/US4fLnJETJby73Pxdhvkt7h8lwLXH?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1144;6:E2+lnRZmk2inqrHuBysUGFyGKpjuJPLSkgLgRVAPXi87a76OoE5/wuwHdy88huruOxuBva6T4ctvhCUAIPY4Zh9/cqW+oDda/QJ5/erRPfxpbhR/oQZW9+UnR3RZ9wNvS5bC0Z2qQWqj7RCDU2F7HnCDMGk3wsQWz7vUK4lfKCeki+V92F09EeGZYYf2pdnNFSk5Hb2EQv7ldDsEcn8JqY4vyllxJzmDPozLJuHTuTfDQNq75TLXAJF2qmLjIaIBFvCyxx74tm4/TJ7/VBDdUPtwdR0hNFrUOtgFinDgmSfI5G2mXoW50brEAYCAaaxg+ipF41UZJ8Ehu4prrQHnH8P6ot6whOk/kdaw17yCweg8xAX6QZ1ptoTPknvBApEHo/Ga7athL9WuYzFMd99DY4QJ48z4IAVQxGTmq86WfJw=;5:umnHh8AInf+6f2w4hZSa1wuJgY8zL6RIWbfY/3MAPGkvYkGoVQWOHVoKJiGNxQofIwfNNX2VholDk7KIm2tMLx8u3RSObBgJNsHuIFtX1OW1hGjnJV+hWKT5+/iZx8UI0S6TqUNiBh692cWTsMNN5rgS6M0YrDTVaD65PLuBMfo=;24:5DBpgGquA+8WVVVvxC9dH/OpL+j+CIuHIQsdf0IyvoYkKyPuHAcXiNgWqYZB+o5NkpDDR2HX9EUTd2PoSIO0TkkjpowvSFiymqif8fQicvE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1144;7:yABK/52E5wRvVxYXEaq3cm2HXQC1HJBqQsM10uN9ZMsY1R0Asfde7Dc5+n9TThTJ8nyKHLWQFxrtz3NzUm19sEIYJkdHABmhR017GZebs40n//3zDnbBR7t27mRC7MjkI+qQJWyqZ373nH8ljqkv/q7xe5waAf/GAQe43TyZHSSN2rP6gT1FNTKRCkHgY4Q9IVy9e5y9DBAWE71zPBN3ohPz7uaDAgqXzmoPqKFJ6wukTHwBNcDK77yfBS1IXwjePfCU2hZO16M8yP4BJ2XP8MotCnoZ3sL+R3RBJhxgsRtf0c4E1ekEUkUFd7NE39Hm+2t6iFTxt7CMYWNH6RalZw==;20:MCXk5aauwTFuA+1XmVTHE/lr1VShglMJ/UUBaacli7te+9lvvGL/MXw88mJpquC7N0jc2/mXyRr21EfXEYTLXpkLo+4z3QeLTCPOq781/SaIuPY96Wjh3FWAYAPVw+bxp+dG6xqqixCtQVKJZxaepXXLACIhkKBPCGKaLsTioj5atHXwtONmFtrFBWhmZRFJMkuBVk4se8Qk/qvMYNyRebiN1C/kSyXCI2MVt/xcnIlMoiGXWh+D6Id3Kcf+terk X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2017 15:42:05.3823 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1144 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2/20/2017 9:43 AM, Borislav Petkov wrote: > On Thu, Feb 16, 2017 at 09:43:48AM -0600, Tom Lendacky wrote: >> Add to the early_memremap support to be able to specify encrypted and > > early_memremap() > > Please append "()" to function names in your commit messages text. > >> decrypted mappings with and without write-protection. The use of >> write-protection is necessary when encrypting data "in place". The >> write-protect attribute is considered cacheable for loads, but not >> stores. This implies that the hardware will never give the core a >> dirty line with this memtype. > > By "hardware will never give" you mean that WP writes won't land dirty > in the cache but will go out to mem and when some other core needs them, > they will have to come from memory? I think this best explains it, from Table 7-8 of the APM Vol 2: "Reads allocate cache lines on a cache miss, but only to the shared state. All writes update main memory. Cache lines are not allocated on a write miss. Write hits invalidate the cache line and update main memory." We're early enough that only the BSP is running and we don't have to worry about accesses from other cores. If this was to be used outside of early boot processing, then some safeties might have to be added. > >> Signed-off-by: Tom Lendacky >> --- >> arch/x86/Kconfig | 4 +++ >> arch/x86/include/asm/fixmap.h | 13 ++++++++++ >> arch/x86/include/asm/pgtable_types.h | 8 ++++++ >> arch/x86/mm/ioremap.c | 44 ++++++++++++++++++++++++++++++++++ >> include/asm-generic/early_ioremap.h | 2 ++ >> mm/early_ioremap.c | 10 ++++++++ >> 6 files changed, 81 insertions(+) >> >> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig >> index a3b8c71..581eae4 100644 >> --- a/arch/x86/Kconfig >> +++ b/arch/x86/Kconfig >> @@ -1417,6 +1417,10 @@ config AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT >> If set to N, then the encryption of system memory can be >> activated with the mem_encrypt=on command line option. >> >> +config ARCH_USE_MEMREMAP_PROT >> + def_bool y >> + depends on AMD_MEM_ENCRYPT > > Why do we need this? > > IOW, all those helpers below will end up being defined unconditionally, > in practice. Think distro kernels. Then saving the couple of bytes is > not really worth the overhead. I added this because some other architectures use a u64 for the protection value instead of an unsigned long (i386 for one) and it was causing build errors/warnings on those archs. And trying to bring in the header to use pgprot_t instead of an unsigned long caused a ton of build issues. This seemed to be the simplest and least intrusive way to approach the issue. Thanks, Tom >