Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S973311AbdDXQOs (ORCPT ); Mon, 24 Apr 2017 12:14:48 -0400 Received: from mail-sn1nam02on0044.outbound.protection.outlook.com ([104.47.36.44]:20871 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S973053AbdDXQKu (ORCPT ); Mon, 24 Apr 2017 12:10:50 -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: [PATCH v5 09/32] x86/mm: Provide general kernel support for memory encryption To: Dave Hansen , , , , , , , , , , References: <20170418211612.10190.82788.stgit@tlendack-t1.amdoffice.net> <20170418211754.10190.25082.stgit@tlendack-t1.amdoffice.net> <0106e3fc-9780-e872-2274-fecf79c28923@intel.com> <9fc79e28-ad64-1c2f-4c46-a4efcdd550b0@amd.com> <67926f62-a068-6114-92ee-39bc08488b32@intel.com> 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 , Larry Woodman , Brijesh Singh , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , Andrey Ryabinin , Alexander Potapenko , Dave Young , Thomas Gleixner , Dmitry Vyukov From: Tom Lendacky Message-ID: <8bb579a0-2855-f311-e087-d97cdd730922@amd.com> Date: Mon, 24 Apr 2017 11:10:31 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <67926f62-a068-6114-92ee-39bc08488b32@intel.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: MWHPR1701CA0005.namprd17.prod.outlook.com (10.172.58.15) To BN6PR12MB1139.namprd12.prod.outlook.com (10.168.226.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c7ba4582-364b-4efc-58ee-08d48b2c7451 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:BN6PR12MB1139; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;3:YZCRraBKJRJkeanpT0TqoN4pFEn+ZCetELRkmrCjSinUqGoNwzWEM/tey5X+bPOI+Eg1ycWO8Eai/+mvM1o4u6QyoLaxl1bS40MKSOV2lai+EXqpmH0ohSk7L2CrIOTjT1Q+/FYidQQgbFY2OZFaBoRyInd8y3rP746jXxmugYFQodtjDPvzE7uv/RCBGUkOzcJOMA9THlV1Egqm9+4RkBCAhafAoAlgG2y/ydn3rWTw+Uss5e/y7H+JMPvVzAfg1XauPPV96Heo+UPdgi+iNBoUExaW/yHCrJwt1K3TXIe/ZfoM+4JA84WZJdKGlKJIIkTu4XEtPwIBOefU0J+PXrt32sbN5NsgWLG8azDoqMc=;25:WoCmSiH1ZtmiF0qsufqGBrfpuAQm0PFaasfPQHmBwVRpRxxKBp1NFWeBtZwwM/17M4PkcnGKmMHLeydM8kVnFoxGU6bsvkDT6bOIi8GZyqsmZX7SnpTb0lnPcNfj0AFJeKMVczzkGfGASal5kQCF6AdZ4nWdvr5BUAIqLB7beIAcjNCGn1VYHPLl5b2+xPOgQfqG4TuE7GTRG+Y2W0j1PxZ9YVLjGhtXCyWK2pg1iFq+hWjr6SHAwcnoBe7mxhB7NF5Zg802CDM8U92Q7IcJDLdBihbvuFrpWivLD3Tgr+FHDd/wv1dKdWUrgTzpqDhnwDRgw/C7nKTJ+NFSViUiMfCUz8E4sHpgTnKzprDzJadz2yUq52TCqEkzqzjbYNf/4OU1NoTKk799aHSadQgaKxZOcYtbKsRBHcAxbWdm8el8XS/QIBXVwoomL5iAwZ/D9XHa7Uhoo5QrjJFQ9Ud3Ig== X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;31:pHZn6Zj2Uqr7mUqgcSwJ5ze0EXs/RvSGInWwawYnBHP/A48Whb1LIPNH1Ls20Ap8uyGi0UBJ5xDM9oCiE6AaPAVpAczYGo7+9weVYpkg8ErCJ4Hqs8D13N42VW+ccOfczM/8NfttgfyTXPYhteqbz/17tmagWIuO62up2TiSXNDrnPexm7d0UqCc/YIC44NE9lyYEb+hqJMBK5GIxOa/o6j7t4yzwhhvgiEdg92v6f0hWuYL/N5aX03QkZiEi70V;20:eOkIHCPkfZBZ7tsElOuowSntF00O0v1IugDfT5gL4qnb01FiU9lQklws/K4d+OdzCy5022x1ZlD9w3ESe7ioiucemO61blLqUaI/Dv5zSIJRf9oQU+uFP8IGx2eGoTOQDDqygFPxAWwCG09IEsIaA06slBPA/UhbUn+auHxLzhOGUsTJJXlGBp97QmbHDUhC1h70385GCqj6diSHewfUOkWePmhzQXzTgjYz2oiCRISn0qX2fQ9jacNlluqG0e36wyv9RUzJ8Qp8Cemk/pVM2kYSreV7VSpxktdrjCJE7/U+2KdJvex0K884PAq16u+/vzT8FpuRiT2SUrNJQJBAYUDmnznV7w1xDo6+RvYI8S/lpWWjjmwmwApJpBhpjLUt8hqEmmw4tpo/WcbqqWnNWd0uPbtBUCkJwStDMmNDm+j8ZGLRh/wSwsjEJBoGfHDnN6mrm/o4MbpoKqovvnU0RYuDaMsVAFajK6Qo4kGzhswZSbTrHKdGZgk6sPOycr5h X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(6072148);SRVR:BN6PR12MB1139;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1139; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;4:4LrE6NdvjxSt5Typu62mQBS0byzeCPpY28IN5L4zwAOBLUMt70ZJnkeuZVXaIx/qcQBqs46Mfoh7c0kq95jVd5H1g8lMZnhn6gaTh7NNyMRCpb6yHVxvc339z6rGU6btqvXDpRH/5Tlac/EwPVfrj9xNvLNhC51FlTXjtiC5zLyVoJfcbe4G5lYTNLxi6xl3WeXLy3KgRI7TkK9ejjYIaJGLcocfyJrfNpSztcALS4wyxovQ9SyeHpFEOmDSaZ7FvMOBGeRRKEdTuHhFldqfNN/153wELqwTVvsLKCXQrLTQGyrDmKV31+45LYYQv3mcYqHIXi8O4qMB5FfQCiD38Ln2umM9kEumvXx4y8KEUVqqGcntrhl4Vv9mtYMAJAqBfqfHp5VKHJqbkJ9n2YNeIyawc5qiw4K+qhMKU0w4NubSZGPVNqe9fgi9h+MToZbARi7ncak84aqvu+iscURvVoJZxc36qRrypo7XtU+PEQk6bFra5+vW6Vp+Ynjl+TXVKa4JuDFb29rHbBsXyr/pHo8TlqP49c/SFGoDHOdiAX+AoG6E5YvWNuRlR98IhHdGUNKCzDtKG+TXfyHRkKFXM3fBEsDqe7hUlPPdcfOMtOBoIdiA71vYg+DtOzdmhpwPBJ0hKrh4LUPYpVxVihE4BQA+CAwMmQgkMVsXmJxwZkxKELzpuUCjJ8oHlbtI0Vdy9N7b3ykQFGX8JpPr6Lh6U/s4x6Z/iYAI/cRKiW2lkDM= X-Forefront-PRVS: 0287BBA78D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(979002)(6049001)(6009001)(39840400002)(39450400003)(39410400002)(39850400002)(39400400002)(39860400002)(377454003)(24454002)(25786009)(3260700006)(53546009)(31686004)(90366009)(64126003)(33646002)(65826007)(50466002)(6486002)(42186005)(77096006)(4001350100001)(5660300001)(66066001)(65806001)(47776003)(65956001)(6666003)(3846002)(6116002)(2950100002)(229853002)(8676002)(7406005)(7736002)(189998001)(305945005)(7416002)(23676002)(4326008)(81166006)(31696002)(86362001)(230700001)(36756003)(93886004)(2906002)(2201001)(53936002)(54906002)(38730400002)(6246003)(50986999)(83506001)(54356999)(76176999)(921003)(1121003)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1139;H:[10.236.64.250];FPR:;SPF:None;MLV:ovrnspm;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM5OzIzOlNaTkEwN3gzQ0JwMlhiamhrd3V5TmlyeDJi?= =?utf-8?B?SkxiSENoNnlnUGwxZFJjMW1GdXdJeFlqZllXbjJIcVNoSzhERFRsZmhCYVRP?= =?utf-8?B?Z2JUWDNEdmFORmpOcGM1L2svZkdaa0VqZ25SbkJMR2xNVzg2dkxvUlNzK3RD?= =?utf-8?B?dUVWNlA5TkhmalAxQWdnVldHSzMyTTE1R3BYZzM4dkpQVXZxYUFXV1RibDFp?= =?utf-8?B?aHBtTEI2OUZVOXBMU3hzSWVnNHhoTjJMNDRod0ljNFJGM1QxQmUvc1NVeTFi?= =?utf-8?B?d3dEU0tWVmFqbSthUHRkNGpzUlprSlRuR0R1NUxZR1NNQ3RQZzk0MVNoUlRG?= =?utf-8?B?NXJZT0tzcmdYVVFYL2hwZFJMR3h3NlNtU1BrM3R0OXJZU0hyVExLMERVUTQz?= =?utf-8?B?UGtSVGZlNStlN1Q4Y0RnMWh4bUFuY1R6cllkY3dCUDRIQlNTeTVEaXNXZTZG?= =?utf-8?B?NjlkZGJOVGliMFZKRCtMWFp4eUxTS2Nyc1puRWwrRWh4WDNPWWFKQ2RsU05r?= =?utf-8?B?dG5NV2p3VktjV1B3bmFjREtFT1BMWUdsczY0NkZxWGMxald6NTZZQTk1bFlS?= =?utf-8?B?QmVndDZ1eHlLR2w5MnFwRzBvaGtNNVkzZU9FaWZJSktUQzRCUThVMzNjQXRK?= =?utf-8?B?dlhFWlVkUzBDb01zbk5UTFhhOWJzOVoyY0hYMnE0Y1gxM0tMMXVWNXY0RlQy?= =?utf-8?B?bDdyblphbTJBQk43emQ4WEhFOVVacHE0U3g2Mi95cm1HdGVUVmp1QURrdi9s?= =?utf-8?B?OC9zb3pMblFjS2Z1L1dtUlRTdktOR05ySG52NUEzcUQzOFE3UkRkZFFMT2Zi?= =?utf-8?B?SExOQlU0eU92UXFqN25IT1UzbytKWVJCNFNyNWdxRGhSK3AyendWRDQ2dWU0?= =?utf-8?B?QXo4cFE3eTVEdFJzWmpsVXRkOEcra1FRQXJtRlJkeVUvekJnbDlFL1R5MXB1?= =?utf-8?B?TXVxZi91RnNUNkE4OGdNNXV2NjVTZ01Ub2hKcm93TWhDTmZUTDUyZUJKam1t?= =?utf-8?B?K25FaUZFdWlrbjdSeHc3RW5KdXh3UTZjdFBWVGtvYjZKT1NaNFNVdW1sR2JC?= =?utf-8?B?a25WUzVHN1I0Y1BGQ2RkQTErUzhkc2pqYWcyVDh6ZjRlOUZtOWN3RlJXUXFw?= =?utf-8?B?UldvTGtQMktRSlNCTEE2MGN4T1R3RzJkeGcySGw2QzFOMi80K01RQjJzSVVt?= =?utf-8?B?aGVzbmUwMTFoZlB1VVMrUHJmbG5LUERRdWxYVzJEdW15V2tjbjdIRURpUkVt?= =?utf-8?B?QW02L20rUmRDdnJyU2ZXUXgrV2lDV2pWQmh6aXp3amc0UENhUmIvN1dSZGFG?= =?utf-8?B?QWtGcUtyVmZGcXZrL3ZHUmtuK3ZIQWZ2OVU5MmcvbGtPN1l4MDdQRFBlbmVS?= =?utf-8?B?OEZCVGhzcjNUODFqRnVtQkpCam05VTgrMmVmdmNxeHRFSkVPS3dlVWlFWlVa?= =?utf-8?B?RTZoZytwVnp0M3ZNNzg1a0dsUjYvV2FDbUdWYjkzZHl4QXVlTVJpa3NkUlV5?= =?utf-8?B?d2FMUW5wUllzOExHeElLdDQ3VU5CUUJSK2QvL3Y5M3Rvdk5LUjhtaE05bE9n?= =?utf-8?B?cnluT2t0TzVlMzdqeTJTZWFHN1hGYTZSZjViVHU3SkZhWEY5dGRGSVFWY2wv?= =?utf-8?B?aVlEbk11OUJJK0l4dmQ1VTNyWVB6c0VVcGtPWXZpODhzQlVUdlR3KzJNU0JR?= =?utf-8?B?RTdWUDF4WVNUUHd2RnBBNzQxT29lSEk1RUh3QktGSVpwSTRGV2ZzY1AxSFlQ?= =?utf-8?B?R2lhYjc0c1lRb0JhS3o1WnE4ZlFTbEdONHNRZXNHOXhUamVYM3NYbFlMTVVv?= =?utf-8?B?VDROZ0hZeGdMM2d1b3ZSNXdUdjBsRWhSZHFrY3RleWtSN3BVNDBIdzNkVmx6?= =?utf-8?B?SjBLYXdYSUhheVo2dWUwNzFoV1g3WXhLUGdKeHBQNzBTazIwLzh1TzBUN1Bp?= =?utf-8?B?cWJtZS9DWkp1d2pLT2RvL1pWOWdoVXBOYU56dVNjRW4ycnEzS1h3b2ZOL2s5?= =?utf-8?B?aG5QNWpzMWtHM29aVEd0VHVWT2gxK3NYa1pUcjN4RFlrc01PQ3gwcWkvcXN6?= =?utf-8?B?dXZTY3FKdC9uQVJFbkFGNEtyc0ptcVNGQkxJcThBV0dUM3ZMbjF4WHlTOXgv?= =?utf-8?B?M3c9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;6:o8Mv28G9+eIOT4lz+aLuR7WIw1M7TMDAQyxbMtVpaRy7w7TAtWoEYbk/g+QFEyLRujydfZMyp6rtN+4B66rToEXFEYSwWkK7x6+meQFRh0FAbDFQn2xi4cAUyz/Ms6dIw3pBJHAuJ9fjB+JixwOQZDcxqwnMo+/MlV3gwPvXMnRMNDaBlnI9Lr38RlR0UpBG6kOotRBBrMVDA8PZH49ysYsZq5K2PYrz+Il/mpvB6ZQ0c7pxWHmhpjsfXMzTYFQuqt8eYrukrOA9BI3Xsj3J7pVAS0/enk4J23EVmvMk3SANwpFeofSykWNLiCyKAmvyWDyvMSVwiLguE6ayhgFGEqFE5/32zzyjtuaE9uS7GavMbaAR5AOxzHKbrH5qZjQ8NmAkm407PXnrODwdjvGE7rbpM6Uw+lQk1uFdmrTYfVZH1UNGDoI4eWMD4oQQi/zWGgivZoLRmZzJ3LrFnpOe1mTjcrsOiG7XdVTOjPXEkdzvkH74nBU1B1bTWtZYYNc87KmnnSqBKz3F2LIU6XUaV2+odnkJEgJMt1Gc7MoYfdw=;5:dtxxpVmbCku3h+WfBQx32ArTZuvuqg9Fetrbe6ufpjk/hjTgI1klmvU1QfxRwiwwKBdXeNxtGr3EFRHSvNdozOPHwlhW9AiENFVA+/ebbqVHBaG9XruxiokHUgQAgmNjo35coZm9uPMj+IitX1/fvQ==;24:1Y7/tf1c3pK/NBMXuUOxAohDiTYVIlW+qSWTcwfHVV4OdLVqyvigy33CxW7X33tJ3dzIuq2mRs1f98Npg5Cvuz13Hi7Fs6uwcwfskebn0Lk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;7:YSUXXazMO4H+ace3ZyTSV6mQuRnD+kyjkNjOGeWdI7iP5+Ooi3FEz2lJeIoNh+YyPM5D+ywu/LMV+Vcri2+2TPkwZmfnIe8g7ahhl9/WjX6Ay+F+o3MNxZ2BV7n1K/Yr8jZiU8bncx2QAVusAEcV2l/5PAtlk5KlvqziSYu/ZVjw0NFlf4Gg8G4CW+bzKtbuIfpn96tnvDV4t0Pz7QJR4NtFwmUZk5m7D0WVnZreOs2J++LBZVMRmaqyqS9LTkDyM8cJ/cOixKrQwuno9Hf0tSypLqnI9IkUcQHhpllE5h9S+DV3svwjwZ5xN70XBQ/tamXvStEv1x9eezI4ORnz2Q==;20:Nkqq1gn+CqUidhlekQAocVjqeNXltjLro+dCJvKSGfQocFIoVk59L7ubuPwvuyLnfcHfQy+d1HM/2aRS9hfEzAfFIjLULPnCtyZHwJmu01EAyfE3T/Te+b0CuHfPGFnJz7zwqPCFzwYvNqPUEQGm6AyMVCDXUHNh6szaiFsVkzFo57YoaNECrIh5boUdhdStztCc/x/yhSzbB36Zr0+uJNEuIbHIPQa0Tz4j9Rs3hYh+gTttJ1HM2lYkQ5mExRI+ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2017 16:10:36.2711 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1139 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1393 Lines: 37 On 4/24/2017 10:57 AM, Dave Hansen wrote: > On 04/24/2017 08:53 AM, Tom Lendacky wrote: >> On 4/21/2017 4:52 PM, Dave Hansen wrote: >>> On 04/18/2017 02:17 PM, Tom Lendacky wrote: >>>> @@ -55,7 +57,7 @@ static inline void copy_user_page(void *to, void >>>> *from, unsigned long vaddr, >>>> __phys_addr_symbol(__phys_reloc_hide((unsigned long)(x))) >>>> >>>> #ifndef __va >>>> -#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) >>>> +#define __va(x) ((void *)(__sme_clr(x) + PAGE_OFFSET)) >>>> #endif >>> >>> It seems wrong to be modifying __va(). It currently takes a physical >>> address, and this modifies it to take a physical address plus the SME >>> bits. >> >> This actually modifies it to be sure the encryption bit is not part of >> the physical address. > > If SME bits make it this far, we have a bug elsewhere. Right? Probably > best not to paper over it. That all depends on the approach. Currently that's not the case for the one situation that you mentioned with cr3. But if we do take the approach that we should never feed physical addresses to __va() with the encryption bit set then, yes, it would imply a bug elsewhere - which is probably a good approach. I'll work on that. I could even add a debug config option that would issue a warning should __va() encounter the encryption bit if SME is enabled or active. Thanks, Tom >