From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753434AbdC0PHq (ORCPT ); Mon, 27 Mar 2017 11:07:46 -0400 Received: from mail-bl2nam02on0064.outbound.protection.outlook.com ([104.47.38.64]:42700 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751124AbdC0PHg (ORCPT ); Mon, 27 Mar 2017 11:07:36 -0400 Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=amd.com; Subject: Re: [RFC PATCH v2 15/32] x86: Add support for changing memory encryption attribute in early boot To: Borislav Petkov References: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> <148846772794.2349.1396854638510933455.stgit@brijesh-build-machine> <20170324171257.lgvqcdqec3nla5nb@pd.tnic> CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , From: Brijesh Singh Message-ID: Date: Mon, 27 Mar 2017 10:07:00 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <20170324171257.lgvqcdqec3nla5nb@pd.tnic> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR22CA0056.namprd22.prod.outlook.com (10.171.142.18) To DM5PR1201MB0140.namprd12.prod.outlook.com (10.174.106.145) X-MS-Office365-Filtering-Correlation-Id: 0f8db6f2-b061-48fc-40da-08d47522f140 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423046)(201703031133052);SRVR:DM5PR1201MB0140; X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0140;3:awnVXrdxHrEIszuBtl619Yrw6nJAnjqafPry3Ml2m/NnRZD7forx6FLAVKljsvvcOyTILmnx51PcsvLlP3eBnp1WGCen1+1Bans9mMEbT8bzOroYiUBF/Qhi2n42ybTw+Tu5LD7PmKzFSYq29oA//6R3o90x9CYI922dh8eJM0QL9co1Kt2+OO+B0+OUQTianqb1J6Bkuung/5GY1ZSpTvcwc7aUYvrD6WExs1JEvsvr5paOH7BMzFlrvc6uFL0lGa7TeRSrWmIFyJh7VwAJP82VnDLHNGDpoRnusJknzTSrQbrhDWbR1bF2sPu/pj9C+nWauVlQz4UfGtCFsadowzo4xq03UhAkwGArRjF97U4=;25:It0GHpscIByBzoHUNrWatgiE4YMZS/utlkZiLn8cCiVBtwWqs1yx2YA5nX/GYfJq/iajH3Of+W94Sdr4Fb7zANIyOdXMEoABiIvAvs5yO86n5r71XPTcGT8s2Sa7YFSbv/X68mgzXZUlOwqjy7745FQ6qBiIgJBlweyQK4ouFocnqkn1h5bpnrW6Qvy6PSFHRKPKUlvA3cOXm95a+hYoX9I1IVcv5aN2xsHaoVYzD38za2MPS4RtYWFrbdmMSPjA2JyCq/+Q8NszXEBKQ+L4do20gGt4hBidKIatqrLWJtduhc98s8tmVX2h0ij5YQRaFDfBGqrJpdkjhIe+HlDc9QgEBxoQ2CF709t+QTL2ZeaQ6Wi/PK/F1C6uGHXdrGujAypnjDMq1tKZCnf0HcYuWjbf2fLUlMpRYF/yOLLDrx7hv9KbMD+qLAwop0NxwsIfvvpsESswdGIer6K7QnW2RA== X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0140;31:zBr1GK1E4dSk3wQ9w0LhPn0LUkHIruE7BaW60UDDjMKM/ZePomyRmcoBJ0mjb9Zj9QRRlrl53Pz54kVNkPed0F4jQ5YE32RISrs8XWOliVTt20hDzVn1RxWSpjgfZb/a66T/FRQLdWGI1e095e0z26PkFpKoB8DKnTSkYplmF5+3ussI6EBI7mNSUCbYjU/rGXoXcmnY1quMr0bYreMm5U8gjxbjyc4gdFokYRUJ2X5EIDv86xSUvwhdcsR6jRGM;20:UxFju3lKWGQLl4xJUV1QLO5ZXfHCka6I0WXI3nT+gHM0huMuktR70UzYCkEiZ4711l9eIGBTPNeZ272R+AlscZzY7lRefA5XtnvBxokr3AFQvaU0u6smifKt5yCgtp5Gn8tBJnbXpkCkxi9HoG/XIhMJE7ncjpk22s+t/boj7Li8FcYFwrFjpzD7bkD9OaIw746G7QtAZv631lU9ZDI5qCi1HiixrAqiPDwX51VJFZ09cqlpzkRPI7d7nVfJUUlsMIpOYCN3Vhn+OSDL73FktYeAYKvnpjRU8ROka/L8/FRPKas2ZASbZOuK+mS6qWtZQnstfbwj/R199iiigVc0L3ziI1PumlQzsjJ8Tpb+zM1Xn3FDrHMCVnh6pdZx6s5oA4EFxB8vWrOGuQXAfJqqd8l3sSiiFEdHi7uuiOZzvsVyhTORVmDLkGDSqNxEkeAzm2OXeFchuco4AOTqfAeMi1qmfHP0ixMHji1bXsKwRMsBY59j4w0TlN4lZXwY9K54 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040421)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123558025)(20161123564025)(20161123562025)(20161123560025)(201703131423046)(201702281528046)(201703061421046)(201703061406046)(6072148);SRVR:DM5PR1201MB0140;BCL:0;PCL:0;RULEID:;SRVR:DM5PR1201MB0140; X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0140;4:kQ4xhxqTrD9xY/3hQ4CI0KnEwI9gBybVPLS7aIzCinEQuDTwjjAnPIoIiqLt9TqGOGDxMlqyCPmVmPd3GoJkH0GzJW5cXaxE+aSbQWqisd1YKU+Sm+T6vHPIKc4sVn0yZaBr8xbUR+DG0vxo7MLtJb6C06Sy1OmoQKDx87p40TTwvbmnDvLEDopFRExVrrAOE3kQ7BxQAzafR5GCAeeVM0wDiYYHN7r/MoXXo8sPmsu7c/7QO9zoTTpLuLgAqK0BwdepuHoePykMcQAP5VC9ADnh1BZMIgZ45riYCj54wO2lbXgIobMoDz42+Td2JOrDkdfhssgx1j1Pt9gn1IayMzjlnk1+vvu7bBnKilUpFC427fBp2pe1sx5LXknL6TdaEE7ZnckI+BN0ZMJChSP0u8h3x2MWVo2FJ+6iTGOFURMb/1A5mAz5K1EUPReA0fnQrm5SNYDGLJ7/pk66OTgPGk4FNGt2NKnSqTCVB7aOwzENd48gT2DI2sygdOgWAKEfdBkmz8RNXSnGev3+SStrLYnOK9RPSmr9iyhOEGKUdumLiBdLqwHO2T1HVlWh0G9DGciTRMJzr4bcJw//xCbiZut/EnpakIRlf7UQIw4y3845JmR+jDc5PIUD6BgC4yLC7kh6LAFHYhP0wpXnyC+e4RDgCXniNWSG8VHj2V5mUVIH5JphENKbowlRSYVhfKCAL+uBgJV8Lb16uSdhfaVgMG43a30lRJPZyK7W+Lbc7B4DBoFU9M3F/ukLnTTCXZqaD2+hwEw0rnmvGkGFa1mIjQ== X-Forefront-PRVS: 02596AB7DA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(39410400002)(39400400002)(39840400002)(39450400003)(39860400002)(39850400002)(377454003)(24454002)(189998001)(305945005)(23676002)(8676002)(86362001)(6116002)(81166006)(2906002)(3846002)(54356999)(54906002)(229853002)(31686004)(4326008)(76176999)(6486002)(53546009)(50986999)(77096006)(230700001)(25786009)(42186005)(65826007)(31696002)(53936002)(64126003)(5660300001)(33646002)(47776003)(6666003)(7736002)(6916009)(110136004)(36756003)(38730400002)(65956001)(66066001)(7416002)(65806001)(2950100002)(6246003)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR1201MB0140;H:[10.236.136.62];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyMDFNQjAxNDA7MjM6bkFCUEswNjZzL2hKYTFieVkrOFhMRWpz?= =?utf-8?B?bWtvbCt5bFJ5cUFTY2w4RWVVQ1B5QkJnOWhRNzIzTXNOUGs3bGZRYVV3UkRH?= =?utf-8?B?MjVsaUxmL0RwOWI3a05UaWRCNEppQWlVaEZhNkx3MThKcEZuM0lVMkt1c1Ra?= =?utf-8?B?c1ZXK0JHRko1bHVKN3pvdklNVEMyeUNzemFCQ292UnlYWVRiWVY1Rk1ZTFFM?= =?utf-8?B?Z21yNWxjNS9nT0lPZWNiNk5kczNDV21tREVlK21hU1B0WGdCa29BVEQwRFpj?= =?utf-8?B?Q1lSejBGSkw5T3k0dkJ6K1h2UjNrclNjWHBwOEZQL01WaVFDVGl0RUErdjZw?= =?utf-8?B?WXVrZTdBQVJWQUo3NzhGaEh3RXlMY2crMy9pNzlxNkJGeDJ6QnpnTkIvQVJT?= =?utf-8?B?ZXpBNUM5cDB4Q3dkNHI0N1J5dC9TbkFldjAwM2V6Y2xCUzVRNlBpc0kxZzVS?= =?utf-8?B?WU9tTnJjd2crTmNNTTZITUc0bkVHNWRmdENPS29oR0lVYVJwaVl2YllTeElr?= =?utf-8?B?TkxFdWR1TzAyQjgyemZENzJyMEszUzViQmVYLzYvbHJrTzFFT2l0S2FEZFpi?= =?utf-8?B?a0xMYzRUdGdTT1ZrZkR5RHJ6UVorRnMrYWMzNlpIUTFkbStIZXVaQ0JsVHpQ?= =?utf-8?B?Tm1KVzRESURVcDZNMjhwbE5OVVFTQVhDb3RyaHdjMytON2dDdUdBUm9NUWtZ?= =?utf-8?B?NmtYVFdyVm1reGF2a1JTc1pjRmF5Q3JETExPN1plS3M5aG83blFPTmgvNXZS?= =?utf-8?B?WDhldDRicFZGSWdvZDdKajJGV1hkdGJBa0NJQ09MWTdISFIyazhENC81dDZo?= =?utf-8?B?MENzRmNiRlpzcFJBYWdNNXFsaFo3d2tnVlBvNFBJNmFHdDh3ZUwzRi92a2tn?= =?utf-8?B?dG1QZmJSQnFZNWY1MGVjME85OFVSdnhZQ1BLLzR0WndGK1FpdUJtbFZHdWVS?= =?utf-8?B?OStJLys2WS9lbnpSb0xhUzlGV3g0c09oR01ydjJZYy9rZWlEbTFZZnhCcG9B?= =?utf-8?B?OU1IODRYRkxRWmFVUVlMcDdMT0pLNi9RVnRoaGJmNFpqcjFoQm9uQWhoTXR2?= =?utf-8?B?Z01KVWE3aENqRnhzSjZHdEs3VTZLMkluQVBDYUFRckVXdEVublFieU5Vc0dD?= =?utf-8?B?OU9HNGkrN3VRVnY1cEVxcUhaL1NXeVVjY0RDc3Vsc05DNXR3ODNhZFJXdUpj?= =?utf-8?B?SWhHVi9keEJQVmpqK1BlbVp0U0UyY2NpM1pGcVF2cXhpRHJVRnNvTmZIa2VL?= =?utf-8?B?WWhEanZDMURScDB2T3d4Q0tzUmpDYWg0SHJZZFd0TmVMQVBVUlRHZWlQTHlG?= =?utf-8?B?cjZCNm0wV0FPM2hKbHN0c3M0WnZFNmdjM3gwYjNONDl4QWdNTExlSFBHemNT?= =?utf-8?B?a2ZsaEEvUk4vY2RNQ2hCVW1FbUFZb1EwUEtwWjRZMHZITk9oc2NyUEZkUXE2?= =?utf-8?B?QzduNGszU0NsQ3AwRnJpc0svRHdpMm5uVEtPa2hNM1VRM3UzQmlMcCtjeGdT?= =?utf-8?B?MFZnajFWVFFENjZjYVNjQXRaVjFxWC9PeUxmSVVuNDYvUEV5VnUrQkx3NnV1?= =?utf-8?B?MmVNNVJoODE1aUViNTVyMlVuaTA4bUV0dHJMVFFEaVZhcm56V0N1aGVMcGo4?= =?utf-8?B?dE1vd0dpRHc5Um54clBsTkYwc2xnYklaUE9KVEpmZEVJRUkzTjZYa1pCU2lU?= =?utf-8?B?NDJRTE5lSm4wa2M0V2JFblJGQ3NYTEU5Y3kraUM1RTZCd2g1RnpTSWkwNVJO?= =?utf-8?B?Z211a0FTMVdpTmRkY2llbWxBPT0=?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0140;6:STRX9Exnh+rJH/sWMXGdqvmbbt3alQdUAwCdl7z2qQL9kP9sHtjZqsL0YMOTiVfBw48eh0CrDSSgso9j+bctCC4wei3HJeZbN2NOTJZFUt0N8t746UlYwQzp1v21phhcSYkO9mjOpFn1C3SKuiHFdTZIs06aM0FDT2Q+8pHxoX3KvYee97OYgYcAVJwJuDFk4fw03YIfZwdfEJjc0ebqdY1KQYQ5L23d8fWp5COh8M+Tza7Ba8AJWigJ8j38wPC2KthBiy0i/bYgXaOY4EIbV37/YI+m7kUO0W7QXjvwDKP9CIN4whmgkmTfeFe7neTiJsXMieubSsANWmw/diS1fMgSaEtzponQpq8GfcFUM+IGo05q/xN7Ks0CqqqsbwmtCkgxd2TZR3y99DMPUfVZMuf+IdOWYyNNV3zl1kuWP/c=;5:7cfa6CmiZCdEsWGYs6vsvsggsA5x81rBxECvM1qRSu1TrV1kqE+laOrgxBUZAZ1b3QsNh5VL2qYGjXrTFuJeP3D4ubvnoLDtFcfNP502vs1mnsJt+4Whm5K0wPdCKa9AlJR1U2HgJDj4Xu6LJnPUxg==;24:Uno3IylOWN/Gm5liIhe53TOLsizKXqMyJhv/MLpf8YbvRdeTGmjRMtlc7DldOBn15MczR4WlcgVuzgH5lvMEcpYpG0Y90Xi78if9TaO66ko= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0140;7:REsuFs+IlmTgsGXBOGXNQPoa68Tq5ytBFHbX8sk4CzKZcycJLQ4N9eYYXRdZf+ZW3gFAuArLwcuE0sf2kXWDAs80H+bykN95pSF2VdZgVGpYNnNFAaxbaLuUtaPf66hIVCYJRTopPQjqIYuZKURUP/ar2oX4L0GohmnawrDAS4GyLgyyPFbn9QdotUmJjEbGlzcZr3UV+5I49FbShB0aFqg41QIrjPSWx7dMLs5FxlhGwsrzgimXpwHyDq9n+7oUx7+8LyKwIWciKHk2bSJTHOmEN/O+QFcrNjWJ6vP072NVqc1BKfLwYI+9p3a8Sk37yvyHORIP1Dsrk826mRj7+A==;20:An+VB0rpNnL3y+8VbKH6oo9EoPRQVov2wzFtxfElQMulsAyhlB7PqZ4aOKaZesSGWdqEzcNqJHaWFCSeV2jhPc7rv+mef5rCqhWpDe28DEFYj8yquRCLZREG2Thd6xg9Jx09jjbNFGFvQ5pWsdIG1elO31GHnX0nwEfEyksI6DogDe5iMq+L2xhAXrzvHUHPwnZbvho8YRu9x56qTbYVNr/oD2R/fQOVnRWZwA1ZJKFMoBR4Uz+X2UyHbMAYnc9U X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2017 15:07:04.9815 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0140 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Boris, On 03/24/2017 12:12 PM, Borislav Petkov wrote: >> } >> >> +static inline int __init early_set_memory_decrypted(void *addr, >> + unsigned long size) >> +{ >> + return 1; > ^^^^^^^^ > > return 1 when !CONFIG_AMD_MEM_ENCRYPT ? > > The non-early variants return 0. > I will fix it and use the same return value. >> +} >> + >> +static inline int __init early_set_memory_encrypted(void *addr, >> + unsigned long size) >> +{ >> + return 1; >> +} >> + >> #define __sme_pa __pa >> + unsigned long pfn, npages; >> + unsigned long addr = (unsigned long)vaddr & PAGE_MASK; >> + >> + /* We are going to change the physical page attribute from C=1 to C=0. >> + * Flush the caches to ensure that all the data with C=1 is flushed to >> + * memory. Any caching of the vaddr after function returns will >> + * use C=0. >> + */ > > Kernel comments style is: > > /* > * A sentence ending with a full-stop. > * Another sentence. ... > * More sentences. ... > */ > I will update to use kernel comment style. >> + clflush_cache_range(vaddr, size); >> + >> + npages = PAGE_ALIGN(size) >> PAGE_SHIFT; >> + pfn = slow_virt_to_phys((void *)addr) >> PAGE_SHIFT; >> + >> + return kernel_map_pages_in_pgd(init_mm.pgd, pfn, addr, npages, >> + flags & ~sme_me_mask); >> + >> +} >> + >> +int __init early_set_memory_decrypted(void *vaddr, unsigned long size) >> +{ >> + unsigned long flags = get_pte_flags((unsigned long)vaddr); > > So this does lookup_address()... > >> + return early_set_memory_enc_dec(vaddr, size, flags & ~sme_me_mask); > > ... and this does it too in slow_virt_to_phys(). So you do it twice per > vaddr. > > So why don't you define a __slow_virt_to_phys() helper - notice > the "__" - which returns flags in its second parameter and which > slow_virt_to_phys() calls with a NULL second parameter in the other > cases? > I will look into creating a helper function. thanks -Brijesh