From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752800AbdCPSSF (ORCPT ); Thu, 16 Mar 2017 14:18:05 -0400 Received: from mail-dm3nam03on0078.outbound.protection.outlook.com ([104.47.41.78]:19205 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752111AbdCPSSB (ORCPT ); Thu, 16 Mar 2017 14:18:01 -0400 Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Subject: Re: [RFC PATCH v2 32/32] x86: kvm: Pin the guest memory when SEV is active To: Paolo Bonzini , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , References: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> <148846793743.2349.8478208161427437950.stgit@brijesh-build-machine> <453770c9-f9d7-4806-dbae-d19876f2a22e@redhat.com> CC: From: Brijesh Singh Message-ID: Date: Thu, 16 Mar 2017 13:17:47 -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: <453770c9-f9d7-4806-dbae-d19876f2a22e@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR22CA0052.namprd22.prod.outlook.com (10.171.142.14) To BY2PR12MB0711.namprd12.prod.outlook.com (10.163.113.21) X-MS-Office365-Filtering-Correlation-Id: cbfb4bd9-ae0d-4e98-ffd6-08d46c98c59d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:BY2PR12MB0711; X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0711;3:UrwTgihmLZCJpthfcWuGBbCF++QZe+Whai+WKdLEynBSwmK6fzNpRDQNAxB35s2hM4t/M6hOwGmnrHAWcm4yoaSYeHEGlSvpRATNbfKx9mtOrNIQC4lM8JDhe67kiGZwOp/Alf//GSSjZImotWGm3qjA/2wRDHeJaNeQChv6uL6S/4WFFADC+vnwpAydwABmMlWsJDdrH061sSxR0wTuZe/lZC6u/qf6gbj9n+sBqvXBdeEtOPTGVKsrPwISKQyx9HEUvuoEfgTsiXGy/183smWjZvJ3fj1/IzjTMr24fgA=;25:opSV6cGx29sw7kFjqvvNVnwwXYeZaWiNw4Uq3rRzc8EbLyV/dsDM+qSAoNwmTgaRClRdTVFbWkKD7O2/53VjJ2DJoeLO91T7/muJaZn6bgIwl0BDaaWy37Jp0C/4rWBwyT68P66q/4h/X4zYyHPA/cQ8gqo6FbTBc+ci24WGkBgFTy8/PFxUaEcnisYEVJsyNjXaOcSwik/+96jrmldWxdPC3xN+T7oEFXhm1IeAAcqhsimxpIdrXZ8NuH5cbikIhhkYLaS9X6lJomCHatr4e7shKqnmS9M7O3Ol6hGAyFHkLxF6uXhUrEzkNh1brrAz7VYiFub4CHY7ACUCV7ZrX2z4/bFaLLhkQTFNJ9luvoPYR27poOqO922AtizBlpLRIHvdvY+BSuv0VCzpgrMKXCfQpjO2afhvVulr4+/MOFxt0UP2f893QOPOywjTvhnlxUbVH8LPiMegGFBEzVeiHA== X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0711;31:S0Z0s0qxm78NlQ8rChNpV9ha8EiCedab8/FCtuVKs3hJLYsxU6Ga4NuYvM6p0DE1mjs9GiORCel306y84S3qK2WIXdqD2whKra7YWOBf6rKbAC22bVlUrtLnGJc5ZUaPVFiKze/uEHwhWk/Mip1JFDwJowPn4TERt6LcHX9KWEyvYOudF0VJMSwa9uKhCfDcELDkWb3Eaf0J3fDGid+eP+S2rVNcnkLg3UZ+56+vp0U=;20:wtAOleVttAAiu3UmSfe8dFAdKoFgMPPRXLY1dxOnmAJczKXWchialnCNGbdP12eESg5OnH0XsZrnbW46aqusyk3H19qyzCbDJ/zjIL7oXRSpK/2dhAMfor7/qLL/anmTQ8xcNFtT+PTRTk8Zg9IGb6rGBa9jtt1SgybrWbcSmC7A4udkHZinBtJD80F3u+B/kZFdrsprpl6MAwa51Fxlhmbu78rRUOVZ45UfnreEuLWcVGDF/DNaZWDinUqPAO3tJc79Eik8I16eigc6uxlu9pepyENhKzLNXD3XMCU1Ii7qVXR6HXMZJWkqiPgtN1Ary3ppM8xbDpcWJKjVyrpvfW9yZtSpvowteAtwlhvsqjOj3ImsnM4nXwZ++asOgGN5xNxgv529FEygqKfXRTXt8WoBz063F5BH/LdYYtGlqk8VHKIhAf1a1g4C+GoEry+BhREJTkcPlJ/cKRIQCB9svCoXB3z8CO37mVGv0cAeUI2JcDdzCQ3DII5p+rlNtjUU 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)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123558025)(20161123562025)(20161123560025)(20161123555025)(6072148);SRVR:BY2PR12MB0711;BCL:0;PCL:0;RULEID:;SRVR:BY2PR12MB0711; X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0711;4:ufoPUpnPCJwO3YHbIK/IlcQMsTV37mW90A7hdlnEZWleSeQI9S8mW8lzcUDm08efJZWrj6YJaiTg4ffgLRqevT7WmarbbKGXOoHozNOPqv9aCg3mHCl7UYHHb7fjbj4bKziJ9GjaWL+QA8EnUj0Z4hDpyPL/B14ZjmDAnkJYC3Z+01frVYH4SByeCuYTFQqA6T9af8gq0dnFidEykCDGAqO2hN4mEYiYNA41BvKW8FfxVsMUPvdPXe8GQWkoS+ymmnbFhVxELLMxTDlRaWp6N/dJjvfhb7904R5yx+vxswVsCMHl6LIKixg1OQzg6uLqSSVzLYdLsm3KY9GhFDEY85JCG5NFBfp6PzMZejYERg/nOZfTtSXaBBj+tatE1KaH1Og2ScVZ0VYVPCnm1cEyD5vPDd+XPVI9Mb/lYNJhMW8ya2LC9WNRwx6Ak4AdTTT19GXz+zcZkqJmO46l76fq9CnY9/TyllURVZCFbYnetxQkNvk2rjDS02tfXDRU42PuZhQobWj1ZNvKFETdST8i2UrKtrhYuMYeL2lfvsz879aUT7E1EKDGHamUz4LJtb9I+TWo/vYOwd6wI4y3eS6WYTF6tIK3hQ8CVIMQu36ybOtPbVD50wtVnCL8bOfv8vFed3dq9ynBjk8xSSGlzOUAevkfxhdO3TCNbYiUu1otRrU= X-Forefront-PRVS: 024847EE92 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39410400002)(39450400003)(39840400002)(39860400002)(39850400002)(24454002)(377454003)(966004)(6306002)(5660300001)(50466002)(65806001)(3846002)(66066001)(65956001)(6116002)(8676002)(64126003)(189998001)(229853002)(6246003)(1191002)(83506001)(42186005)(2950100002)(4326008)(53546007)(77096006)(50986999)(2906002)(305945005)(54356999)(2201001)(6486002)(33646002)(81166006)(7416002)(90366009)(230700001)(25786008)(86362001)(31696002)(6666003)(7406005)(4001350100001)(38730400002)(36756003)(47776003)(23676002)(76176999)(53936002)(921003)(217873001)(1121003)(83996005)(2101003)(84006005);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR12MB0711;H:[10.236.136.62];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTJQUjEyTUIwNzExOzIzOjV5bGxKY0dzSDdNZ3Q3YWpheVdhSUdscFEw?= =?utf-8?B?NHNwV3RyNDEzWTJkeUJqcytldjlnUFdta3lBL1FPdWd0RkJJQ0U3TTVpWjdk?= =?utf-8?B?Y1luMEJ4L2ZWQkpFcHhFS3BTYUltQ05BY21YdU5vMGhOSGRLbzlYbUtJN0E3?= =?utf-8?B?TXNjUEhJa0hFSlgrUVZkdEtHMlVybnVVMEZRZUhkbFlZV2hPd3BacG5uM0JE?= =?utf-8?B?aWtVcjhaTmUvTE91TkE3Q2hlNGI4Wms5YlpDa1B6WEdraVJNL1lhbWV1MGtT?= =?utf-8?B?MFhzS3lxN3dEM1N3UEVSVVovQW9PZWpMS2paNzYvaWxvUzdOWjRNYmQyUWlC?= =?utf-8?B?MUREZm40V2JvWkdNTU5kNFUzUHFQNnB6WFk5cERVbXNBWk9CMk1kdmhWdnB3?= =?utf-8?B?ZlEvdDUrZHBBdXNSK3VvcXdsQm1ubVdGcjJWckZzMTQ2RW0zQUI3ZTYwQ3hP?= =?utf-8?B?YWwxVERzcjNPQ1pQU2FrSFBLUFhkd04vYVdhdCtRdXBxOXhjZVNma1B5R1cz?= =?utf-8?B?Nis4TFJQUkFLdXdDY0NDL0UyYVU2N1R4YnNIUWdBaGhhcVA5YVVzejlIM1Vu?= =?utf-8?B?c1BaOEdGa0lUVzV3WFZVVHV3aGF1bWV1VWgycmtLWUdpYWRqUGZtR2NsaG1J?= =?utf-8?B?N2thTXhxeGhCbGhwNUdYZGd5OExJWkVabmlZVi9aUUo2d0NwZjVEazNZallk?= =?utf-8?B?T2haTUw4eFFEeHRwNFgxSUk5NVB5aEV2RkFqVnA4dWhZRzhmUTYybG8wK2F3?= =?utf-8?B?clYyQTg5TGhvL3VoY2pVaEQzODdWMnUxUmVENVAxdlU1WXc4b3hkMTJ5aHBr?= =?utf-8?B?QndMTXNWZjZIU1lGR0ZDSElxODBpc1RZVGlOQTlET01QWkdha2dtVTVaTFJX?= =?utf-8?B?RlFNd2gycndpcHBwUGVtZUNESHVQRjk1ejMrbDdLamJlaU1RbzJnZkJhSDZR?= =?utf-8?B?d2tNb2dDYWw2NlNJVFJYQ2tXTnFRUklUN3RCc1RnMEsyelBRc0htRjYzd1Bi?= =?utf-8?B?bVN5OXJiWE9CMm92WWp0R0FocUVvcGRsTjVEaTZXeXRQcjJNMWdMSVpidWpP?= =?utf-8?B?VkY4Rnp5ejNBcC9GUHFhTms3TjdGZEY4dFZpVWdZc2hMSUF6OFBKdWxkTm1x?= =?utf-8?B?RDhKREU0aDFqNUJVb3FueXp4WkRud3RxWXFCekNUVitoaUdxVmJ1NTNZOFRs?= =?utf-8?B?cS9PL2tuWTluRXZqbGFkTk54TXFPV2Ztc3Ixd1lkaDI3QlFKTGx0eStYWjNN?= =?utf-8?B?aVJaRWdMMXhmZWlJRC9WdWFraU14dVhQTUQ2eGZ2cXhrQVpjNzZ0RmJ4V3FF?= =?utf-8?B?WkJhUGt4Z3JlS3NEbU5TNDZUK3BPZHNRWEQ3WkNsRno1ckU3OTVoUmZaSnVt?= =?utf-8?B?SVgwSEFmZ0FwQWVWOWxaVjhUWlhYbXd1RGNKVDFEUGs5c0JrajdJNkZEd2p4?= =?utf-8?B?S25hM2FpWHQ1Und1K24rekxhQU9sc0JNd0RwamJLbUpJaGhnQkQ4Q3BFaWJq?= =?utf-8?B?ZkZKZlNSdEpRU285VEtyRWdUM1FQTDE3Wk1VMWt0a2hDM2VKeWIxMzVRaHJi?= =?utf-8?B?ZG4wSm1UNVdWN29lZlc2czNtVlNPTE5YTzJmUnkyeklUZUNuMC9PT3RHYytk?= =?utf-8?B?VDhqcjlmZWZGKzJuZG5Yb01sTFczQWVOWk02NWw1YkhEbHo2b0ZIaTA4YlM2?= =?utf-8?B?NXVzWENuU1BWVEJieWdjWFRuUzIvdEVPV1I2T2dIdGlQQi9xNHZaZkRYVGV6?= =?utf-8?B?RU5uNGpNYmo0MlBQVDd4RVhyZExVdmhZSXdEYThxK0d6R2t5R1prYmJaMXFQ?= =?utf-8?B?TmszTHJIL3E0NllFam5kMUJraXBncDdxL3UwYzdONFB3T0EyVVRoRnZZenBj?= =?utf-8?B?MjdHMWYxcGpqdjYvTFBEOFkvSURveXQycnVlN3BSdU1IYkdBSFR6VTBmLzJq?= =?utf-8?Q?HJKL1eQn0TxpztdWMkmQs2+fy+8xos=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0711;6:0rTx4ZYIIMQCbfk5RhNUzQScBP1iy4KHVmZLNUPAxgWOIOXiYuTRW7F7HHdRvkIvs9zYVM0YXmo2w8zNDOAj1S9qS/yFjwS/TQ486rG6TUHmAdaN27QEquy7NF4dhxXgHeupoLT1aYTpYCTvK6xpapijeqi6SZdpS+Cpshd6zs1BIjSabgmzsaN+2kN+7Q6DG4VDturM3FnYfc0raLV6gGu4YJ9I+aYu9rEdK2Gmjt+Cp/Vyz4U/DFJVXSVSRHnQXaEqPF/zBmeTRsNTAlkOAoAuLsnxucToTACITGQbgp+fl4vG8hJcHrzNKi7HPTQR+io0RfqBQXiMbQ2n4V5RcSH3bplEkX4pylNwcLcSuIUVaLKzgZ2QtLb7G4GB0jD0VSUA/jLZHs25V95HkqrM1qP3RRXyzntmpP8LWPdmKJQ=;5:NDX3MgF7BnSnqJX3c+p/Uhzp0afGMDWoOZZqOVGXKivqF+ZovX9K5kxHiTNkGn+opv6MKSns7AQGopsbe0roO3NTkITBEcj5kdnBSGXaz6GxxePXpG22n46gFljFcxSyjrkhcHjrvL+tM09dCE965w==;24:XwMuzrz27HIfHqRZPUxWKme/oOfyk7CR0JJHtCk0OLetv+ciXTOZFQUhYOM+kuMMMw4qqbwRcv2sxwEng//DLLUKKS8S93vJrcMCtEiXDSU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0711;7:c3AwcZxKidqstN9g56D0ma7rX2XbCmB9szujQPMuqmeEXv51bVw7u0FkpMBf7qZiQ9NlCxY/NxblVn1W12bm4Y+40bALUt1Zt13kHWXgpONeIQl+38FAVnVID+kMEt/O6IE7+gHK58nbTnbatjpcLT5LKuwI+i+XtZO+ab82r5rBocexos5Xa2G+NcGWq5sQhwwVGQCwYy32nBErII0rV8Mxe+RLFpwk3vrR/1tWkQ2WMHEPmerq90uHKeCldR0rPP08OUjlnffGFhM+orrmGoSOs1fv3aGOlFhEl32k/mHC3JW6yHhAbfSwwCZS7FjOuiY/PucIAGyuzvWX4OP3nA==;20:qHIgiDLxwCia5ghQHuIGDTKy71v/E8O4WLtLaCwv3s5jQpMSLFqiJPDvlECqslkF8mOntJppYzX7o9jhaybFQQmRyMtKOW4H4MEbxlsgw6V/RxGWh5UGf0Wd4k9uBybbtgqb+L71ywSlPrhOeq8l5VphRx/xy+HeZ11Oe7CVJUdTzEAumrWvhqpcJ6u4p9nsgC2fMCBERIu0F/lr5IbMvz0QnTfGkC7bCg386EKhfWb/xrR5dbzaKEDTZ5T3C5pT X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2017 18:17:52.2376 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0711 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/16/2017 05:38 AM, Paolo Bonzini wrote: > > > On 02/03/2017 16:18, Brijesh Singh wrote: >> The SEV memory encryption engine uses a tweak such that two identical >> plaintexts at different location will have a different ciphertexts. >> So swapping or moving ciphertexts of two pages will not result in >> plaintexts being swapped. Relocating (or migrating) a physical backing pages >> for SEV guest will require some additional steps. The current SEV key >> management spec [1] does not provide commands to swap or migrate (move) >> ciphertexts. For now we pin the memory allocated for the SEV guest. In >> future when SEV key management spec provides the commands to support the >> page migration we can update the KVM code to remove the pinning logical >> without making any changes into userspace (qemu). >> >> The patch pins userspace memory when a new slot is created and unpin the >> memory when slot is removed. >> >> [1] http://support.amd.com/TechDocs/55766_SEV-KM%20API_Spec.pdf > > This is not enough, because memory can be hidden temporarily from the > guest and remapped later. Think of a PCI BAR that is backed by RAM, or > also SMRAM. The pinning must be kept even in that case. > > You need to add a pair of KVM_MEMORY_ENCRYPT_OPs (one that doesn't map > to a PSP operation), such as KVM_REGISTER/UNREGISTER_ENCRYPTED_RAM. In > QEMU you can use a RAMBlockNotifier to invoke the ioctls. > I was hoping to avoid adding new ioctl, but I see your point. Will add a pair of ioctl's and use RAMBlocNotifier to invoke those ioctls. -Brijesh