Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1172279AbdDXPyT (ORCPT ); Mon, 24 Apr 2017 11:54:19 -0400 Received: from mail-co1nam03on0059.outbound.protection.outlook.com ([104.47.40.59]:51456 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1762845AbdDXPyJ (ORCPT ); Mon, 24 Apr 2017 11:54:09 -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> 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: <9fc79e28-ad64-1c2f-4c46-a4efcdd550b0@amd.com> Date: Mon, 24 Apr 2017 10:53:58 -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: <0106e3fc-9780-e872-2274-fecf79c28923@intel.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: MWHPR17CA0066.namprd17.prod.outlook.com (10.173.106.156) To DM5PR12MB1145.namprd12.prod.outlook.com (10.168.236.140) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c09149b4-ced4-42a5-5a40-08d48b2a23c9 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:DM5PR12MB1145; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;3:KszB/Me5QEw+2yTUqFJDruN+6Vzbo1SpH7KjWzZ6AHTeLIeazMra5NILbTwss3yJGHstEhSGlFd0tzlMEcmuxx0ofS5P0+R2afuE9/iND072m/phcf1IJxjmoymaaCg36teWtrrgogTB1kjDpUyxU8nbYIxJlC7X5naqgJWnrLvp+VrEhnGx9flUxk5yrDGCinG1zz66QLuUrT/Km48D73JXMqhEUm2hi9y42reiwZm2GBzFyWH8/n6AtMymsVhMRSmLqAgmXYpQ1uHdE6SwA6NJei1WK2KaHB3hX4KlgSj4WA4Eb5Mjk4580HRe6RbvrY1p39E85XTZdglDYf7QT116Mh2iHSGp4CQ9ABMX9Zw=;25:340hJwRDfYKpE7Xb2YqCt2EcmGSY7vR5C8h0icriHokncbLQYtccKpc8x+Ekod4C18PsPp4iB7lrnhWqTqk7ZhSn23K7k77q4n0FUZVQjCPhRZ/mI1jvCz2TopOLfeDn0n0tjxrUHGjoWLiOkgF03aSV6qNMnDKP27DASUYH+iyyASLjuKGuYaSQ5/EXr102PWJcbUbdCaJORvaU4cJNbpKCFBGP/gA3tfBlqCGNj/NveY2j+tMs8N3Jk2f0xxp/v5h/q+NHo23DsC/A/R791l4Nit70kj0+IRBu6SjRKTNm0tumEaTcVnd/eRjMvVf+7x85uUCZYUri/2YY7+Yw0jlcKAS2woc1/0gvlHBQ8j2/+xy9v/uPrqR2T1ogsNdbmPfc0sZiaGcTrVdLhoFCGKrRs8ucFQMDZDhGN8kOeYtXqtEihfXsuwvfyCuHKrkmKnKIt89WqTPr0TnEJSEA0Q== X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;31:mvbh2ZZJPYREH8ICBNe0AzGlLsZTuAGMUrvHam6iVPSVPvtRLLHccCZFBZodxJQ0QVgCqpsseXNIvVwT8HxbsE8j7tE7WR5PPJQ1nMw7P/ar+81x5ozVdic1izAcFRpkd3kkUs52sIXnLv2Xu+RDludxprzoXocj4fh0oZT8FdNiJTHXVq2xFRkVoJ+p5ing3+PUe8IfVEZ96xpMVL4mtjo0ccOa3XM6YcJGBowzD0/+wLeaph9Ryx5zXr1Wk66i;20:X+iTP7Y9XLoA3LrYcaaPb8pAswSrpZmdjC+nzfCMxOeN/fay2LJCEHFLgIL4LRJzTvFp0wGN+veDUF1d1TAZxcmk0Xm7wpYT8RJHesv40BSW97ojhQsdxOF/yryvKEJQAi7IyuBT29D72SNwZj/sLVKdZPCUO+4C9ZSzeerCFnQxWeS/oQez/IjER7wfV6Kp2LCAPntYM9sltfP3od+pztFdY1ZG3CxT2ohvCG7G+dm/UgtBQhTRPqZsfqlF5AQwc4/Np8B7aRlRIjA8GaTUELxR5WfPn2fcsqkSA8wpomFeCkBnHWIiOUNA10Qr0+1t4bWfm6CC0uYbGeG1czlY5gb5NFDSpMeAKOC9ZxIDsbaVzS9gKU6gjRfVI5C8uze8VtQMhpJksZYIJt78XbznEbeZT+PIX7Vb+9MpUWA1CSDh/hcVg/Zb6jmS7FMy6HJgP2FOp1wk7z1DHBbIgcDQJCEayxFEXLU5mptWrpnZAq/w15oeEgu7Smr4cmNkXQ+e 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)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(20161123555025)(20161123564025)(6072148);SRVR:DM5PR12MB1145;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1145; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;4:GwvmQuDyHDaR+XssBpH0M6oi4YlEVJHXjZ3rHwWDFTVxGxDcqxKuvAHj4JU3kf4SH4pSW+ICP9+xY/vEbBgN98UrVAnvgZJVplCY+/e/NtYr9dSx0+tkyNPcwwvNpX8LyQ0LmOHDdOibfHmujKBw3O7vV57O1I1zPvygbSEXPh6og0vSIy1bE2pkgzCnH+Nr1RgwMSGFAmZg6t9QFHBJFCZHDpPFw3ZUgIR94f/ujgw1/vcR6WYIGZ9QskY3f1oJ+XE4tAJB6uzYtvAMKwQzKmVZNvZv9ZWgfWudFy25wnL1HgqfJurSB+jtJpJwbjtyMg5B2Fr91zw9o53elODQEKYbk14SrMv6PV3G2SdKkB50ntvIM+F41sUbd8YeCnciqmMzoCP1pKdce+++Ly007pg3tXQcIz+Xy5m3rzerYlRDOBB6bzRKooPCy4Ko26m0EF34FJMZSyo1yD31OQWnsKFPoEAaC1vAFRnljkFMODyEisbnd9yEB7/B2M2BUZUwQ4tCyOoCt0h6k2RQnvGhTWtg1OD2M7TyJxI8HsrFvFujMQBxDm7YDj9iJFR6nLs+qTAyEG0S67XndwaQ4PO7aB37ZFfPZdtJ4e8/orPOHMKO4r7sTIHUIV+WZ6oaG5G7c8vPUfaO0ZR7Az8mhw+oNZdmiSkedxGnpuR35vY/gByFHBxoWRB+0QekkXnw8WXuciJkCzUWRztD1YjP/lrWNHwTKF80inibsm+sQLS8mk4= X-Forefront-PRVS: 0287BBA78D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(39860400002)(39450400003)(39850400002)(39410400002)(39400400002)(39840400002)(377454003)(24454002)(90366009)(6486002)(77096006)(23676002)(5660300001)(33646002)(42186005)(25786009)(4326008)(8676002)(81166006)(38730400002)(189998001)(4001350100001)(2950100002)(53546009)(2201001)(6666003)(83506001)(2906002)(76176999)(54356999)(36756003)(7416002)(7406005)(50466002)(50986999)(86362001)(31696002)(7736002)(53936002)(305945005)(54906002)(6246003)(65956001)(47776003)(66066001)(6116002)(3846002)(229853002)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1145;H:[10.236.64.250];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxMTQ1OzIzOmpqRlpxYVkycVZmNHdNTVNKMUxYWVNXb0s5?= =?utf-8?B?RFFTZ09WNHR5UktPVVpFR0hqQjBLWTNIS2p1VUE2b1dBMUwwNlFFZ2tKZUEy?= =?utf-8?B?bU0yeHVlWTErMkhQZCtuUTQ2M1Q4WDE3c0VlcllTK25LbGg5LzB0amk0VmMy?= =?utf-8?B?N2NBL1kwc3ZqYnF1WjV4WXdFK2p6Vjl3ajJ4VU5RZnVVc29xVlE2cTFWNUdN?= =?utf-8?B?Mm9VVUQ5dG1LUXhKRU0vQTgzTnE5QnJyMW5hRlhXbVE0OVdKcjdBb2p5UG1a?= =?utf-8?B?WlVzQzBmODBEeWNtTEZBVjlNaUJRWHNLak5EcENxb0JnZHdaeDd4QzQyRmk5?= =?utf-8?B?MWlsbUV5czRyYzY4Q0hsaUhpWUVhR1NnSXovQkQxV2k1SjRIcGo0VlYwY1dY?= =?utf-8?B?RHNNNGFEeW1IeDVMbFpSM0Y0WmwzNDhEdDBiTDlCY0RmcC9Ca25QelFwR2pi?= =?utf-8?B?bTYxK1U2N1BhbDdwcGRqY3FyRk4wNHdPYU44T2FBbWxuZXcrUU5vbkpBcmRm?= =?utf-8?B?dTg4NVluU2ppR2JtcEFsbVhBZFdDUHp6aDlVWVFDS3FSWVlQSDRyajAxOHBW?= =?utf-8?B?dWZrNVhHNVB4TFVmeFBoYmMrdFhaSDgwVDBUZ1cxUG13aGpzVU5XKzJXZGln?= =?utf-8?B?SG1EYldRQ2RMNXB6M0xMNkVnZ3lkOUQzaEFHQWZIdEVIYjUzaWVMUEt2UCt5?= =?utf-8?B?aXV6ZStkaXNsYUNveXpabnlKYnBkWHNXelRUVWRyOEJ6RWMzTi9RZi82QUt3?= =?utf-8?B?UUhGV3dGa3hVbUxWeWR0UTRFNFJWak5FbWFReTdyVnRWWFcvMG9ESXVBOUd1?= =?utf-8?B?N0p1VGNBZzkyN1A0YlpqV1RWQzdndHh2emhmeFMxbG1PWlc4RUs3clZuYkVZ?= =?utf-8?B?QVlxakx4SmZDeUxNakhGNXVIcnp0SHhKTDlMeDZzOUZVS2J5cU16ak5Ec3dv?= =?utf-8?B?YklPREppckV5eGo4VjlIZ29xYjZMVDIvWFJyYkVFTEdlWFkwakRoREM5WHk0?= =?utf-8?B?eklLUjVtMDczV1ROSnlCTWJuNWhyVG5yejVtc0Rxb0FVV3ppMkNjM0JNZEpn?= =?utf-8?B?YStRR1YrQnZNb1JPV2srSlNJMnRQWVBpVzlsaU1iK2ZZY0JUWUtTZzBaa2ZX?= =?utf-8?B?dDhRc29OR1VnQTdzODFnODFONWxmaEgvNUZWdEdTSldsT1pSSklHWU9vUW5q?= =?utf-8?B?d2ptZGNzdXVtU2N2eFlCUDA5cVFWaForL0F3Nk5Cam9WQS8wVDlCTVZOMXFq?= =?utf-8?B?OW9mVDNTQUlkVE14d2cxNm1RZjdUOXF5a2xnbTFXTEttRkZWUnBzenV5bEFW?= =?utf-8?B?c2ZYWHc2QU0vSGJHenkvTnBzQU1EOXk0S0tINUJHTXEwL2l6RnAzVURnUnBn?= =?utf-8?B?UzI2cU9WUGQ4ZDJTc2Q0ZXlBaWhNUG9oREQ4cVlRSS9vOUxnUTJWWmJDSEF1?= =?utf-8?B?SjB1cXVuNnZQV28wRkpvbUJxY2VHeC9CUExac0hlUDVtY0VQRzNuSVYyTmhu?= =?utf-8?B?eVcwYVZmMjBDMXpnalRURG9VSzVyd0JsSHBRZVd2NitXb1dkYWx0bVlYKzk4?= =?utf-8?B?eFhwS2ZCeVhaNjF4aXU5WGNVcTgzYkRFSFJrRUJkV1lnZ3BVYStSSEhiWDFI?= =?utf-8?B?cXJuNDMrMnpFakkzMUYwMEt3TkFTeFN1aFhvTUI3TU9nanhCaFdZUEpudXNU?= =?utf-8?B?OTY1a2k1VTBZd3lQU2ludDdyblc0ODNQOFRqdHFrSzFqZlJ0anRySzB0TGlv?= =?utf-8?B?QWxRVUhqdzZOOTMzVm1sQT09?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;6:B3THAP8lOS7dE4R/mMPS5eKsTh0gyxQlGVWvIdAPvU+ravyzuZuAF48PgTuW006tgBPeKMla7ZD62kiM3R/dwmDwbSHt1RmucwlFsjIbD7iXp7KQugMxhuh7PnpmK8vqss1Z4ESXs8RCYYSCx0wGV/Us5YWJ4ebCZWOBox2jnBLGkPAgdjmAg4DNWUlzdaEcPDpVaPbsL53hugh2g8W7cQVYcFZVROBfISnb0Eow27s6pcMBDsFtLRO8Ukj1roIZA8rCfu8qbhvq3bm3cLhPNGoQDfJAF3WznuydazDWk1kDLfC4BHk765phh6x+gLy+7FQLM5bKwxMfDSrRCzgD8Uxf+N6ErEyoGCI0ggjlzevjEDpFfCUgaJbHyDFovelROZC1RFiaXi26rxIhVJB08iswXQ1+lp7AgFRYLnIAM7t8B+RYPTO0JMkhTf4KFgz7Fn/Vhp1Rq2nPM0NCbUdONMmwMIDGr8ywz4IJiGlbygKsmk6/2wZJec8ylT+h+BVKJWcF/at2p0mHKGLCSyMIUrFZAsubP2plntDEtnCuq1s=;5:tesdjG1PeAy6EfuxbwFuamxX4j4ncS5WOyEHulFEBoGEsHCRyQ6nYYNAO/HL6vBvAVO61Twc+p8c4TbHftPXZwod0Af1IX6BksIopt+aalLCPyCl07C3EUSchu7zAH4HWZ3i2nC6P4aeFZ1eUi6TD4X6k9qf6M5r0v+c849Mejg=;24:rTPAx50PosiKCMJWamNy0+eI+dYzug4UPzxKz4VdjeXguzM2zzkqBDbHsiHbcz2dS3pi8eCUZvSAEXcLSS5hTDNbdKfFWlC+2SmYcf4pSfg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;7:nRMjhjROE0rqBLdks/nlSo9sonk/QBn4qA5S9MG9LgsSW4TWMM8bNK6mPAlpynQwuciRIOf13rig3+of98O7rPU0xY/pvMBL/eDJCpk1wKCaPiU62adOpZqxHjBoWHIy6EVPkk/rxF0rFPuezw1PAcf5ox1ucfjTpAYafA7hkqgAySsmVKa0CZWY+qG+aRtHWlrtePuhiBUTJyEtMFwt3I9ZBuPQXHcV84/ddX8erlxqS1ubbkXdAjO5Ddxp0a1CG8owpaKsusqfA0JbN3E0of5WuG0kL4ogIkzNY2eceLm9mJtuq+21MjsTRkAP9hQ5G9V4nPw1SWMvjO3ICG0Rsg==;20:8evV0NXwXA8A92JqjIHKN5p66IW4l/llUb5j6SIYXuXOh8HFdMT55Ra/+SQmQhWHtEpwWXaGsAdXvfcqeuBrpcnSZNpaXhCY22yoNauu+HRFReZFSBmaWI/hRGeh3YsrIA9QriVbaKuxvH9clPzq2vnDPiv4zTLgCPPsJqcvpjlJTPrr4XW42h7slwm7cfoBxbv9vX0+1pM2Y9/oyadRB3UI9NwUXL5dhcLl4m4sr4zVnW8rPOSX9q6AKcmW4scx X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2017 15:54:03.4805 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1145 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1261 Lines: 36 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. > > How does that end up ever happening? If we are pulling physical > addresses out of the page tables, we use p??_phys(). I'd expect *those* > to be masking off the SME bits. > > Is it these cases? > > pgd_t *base = __va(read_cr3()); > > For those, it seems like we really want to create two modes of reading > cr3. One that truly reads CR3 and another that reads the pgd's physical > address out of CR3. Then you only do the SME masking on the one > fetching a physical address, and the SME bits never leak into __va(). I'll investigate this and see if I can remove the mod to __va(). Thanks, Tom >