From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752123AbdIMTpr (ORCPT ); Wed, 13 Sep 2017 15:45:47 -0400 Received: from mail-co1nam03on0073.outbound.protection.outlook.com ([104.47.40.73]:65376 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751308AbdIMTpn (ORCPT ); Wed, 13 Sep 2017 15:45:43 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Cc: brijesh.singh@amd.com, linux-kernel@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org, Thomas Gleixner , Joerg Roedel , "Michael S . Tsirkin" , Paolo Bonzini , =?UTF-8?B?XCJSYWRpbSBLcsSNbcOhxZlcIg==?= , Tom Lendacky Subject: Re: [RFC Part2 PATCH v3 16/26] KVM: SVM: Add support for SEV LAUNCH_UPDATE_DATA command To: Borislav Petkov References: <20170724200303.12197-1-brijesh.singh@amd.com> <20170724200303.12197-17-brijesh.singh@amd.com> <20170913175537.wlfk3tmipx3xtbun@pd.tnic> From: Brijesh Singh Message-ID: <6f38ed16-376e-6716-981e-20bdf31c58b3@amd.com> Date: Wed, 13 Sep 2017 14:45:37 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <20170913175537.wlfk3tmipx3xtbun@pd.tnic> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR1801CA0016.namprd18.prod.outlook.com (10.171.252.29) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0535317b-bd95-4140-3ab3-08d4fae003dc X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;3:VRpHKvrSwjCyATN65BhyDiiQyrtXSE8N50I9YlDwimu+IJnniXENo0/HtIgheX9BhlVak2WNJ61q4Dla0rdb2N6xJbFZDgmd2Ky3DB3vlqHrdunjXN7R3jena2TEdbRnW70nBQc8+e4Y9MsssoH0QqUpx/DF3ZqXekULjuO5JFzFDIaZSv+IOgyVqlLg0WoyBije93DcEpGxuwWvIXdtgIGnsxCqmt8xF3WH0W3fgAsZepK/4ODHueHYTDjCj1zb;25:EedkGS+w0mGlXr0cQfYEqRR7eOAaFDLMZAt0CN2H+JSoZHQZXq/0BsW06Bkg8DaAh4Nxkt1cMMphfAv/ggX02i28m49iQMK0jKbNn+4c23sfz45DTLWQK32+7mxKys3Dyzd5dhghlGqeZ/sa/mOdm4t0cSyStwt7iB8G4IownNveHPPhMtFCgtYA71p44n8TgIyJwVSDIUYX0wFBpeC3KJedhnoOcZzcii5yDUNn3iEsQxZies0M1mz2mcZn2T/jB5hIa+95k76dElf+4Qo2LGIL8/ZNQ4viI0OMzCUsjjOpBwdtKojrDuOlfGaMkFLLBeQP8ozbvflzBOVEzU1xhw==;31:N1GStqQE9/y+CWyELD/OYUkS3Hka6U3lMQXEARgklxOgNmUAzDtuBRSafkWP7o70RVONGUsHOWNPFnrdUxQBxFnKuWKvO/SW7GbLokTHcOPgAcReOXnlKrguwk2Ar57cSsFtQAyqdWv8sq48JfwT2BlwK7Q71k4+UBT40TXP3y9HaD8D9lB01tzDsIf6nhuGPbHTxFALwviU897+uK3rv54pPLh0PFdyXUjpyXiTldM= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:gAMHLjuQmkszpXzFgm1IOkEmD1iOrI6q0G9NCbyoz4RUhIt7e1yMRx9NEGqK5qhMWB06gCDpjX2pbA3fv3u/f33lhi1EeiLHMr5ZVCVlye5hXmsUvAWrULUqcZKJKBuauMV+kBcQNXM7TAsgURDxViHFnyHYyQJXJOALVhE2O84SgSGZx4B/pGIpfj9MJDAG3Gg2dpLKXLP9+7A+BcB7cg62NsTzRE3ySofHOFSSKuGy5DFXxyor7k7yGcnG4T/6JFkhgI2FAVr6EbN2nYIaU1b4+baNQL/44B8ZfeqrT+yAHXNODeEMkn9/aI4uqZzxq4PqyQAUe9F3RMcmZifL4XuN0DvW11dOiXrJ+O9vJbfqX9cBvvh+frc6BnVj11G1yq7rCj3Z0cNhUDi27gWOPjGsAQU/j+Z4oFjG26yy/MPIbmZds711+8VXbSMXm34wHs2HRkDgefk1UTaZ9W8GGquog1F6eCfl07REq8A9geMEh+mdPXPGIZqNNuqKQ7SY;4:/TtDBZIMLBwtA1sOLk6W0BU331n6fCoFJkv0H0uy6zS3dDM9jGgd8E+HXcg378kzZnhk1fAzRhUdUSx2ZNrHScQV3K3wXNWRRDs9Z4ksbRfY4kYyHM3mpwMYr53dorxfuJvzxBwy5x3PnYgmwcJkj978mh8eQaBmbY8XSfTqB9EXQg4//q5E1IrpSTb2RBMxCirLMkinOnzeIGHmMzjpno/fHA6bhnLkdwiJ+N+7Bp2N1/l/vCY/yeVW/nCNR4Y2 X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123558100)(20161123564025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0158;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0158; X-Forefront-PRVS: 042957ACD7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(346002)(376002)(39860400002)(24454002)(199003)(189002)(377454003)(54906002)(76176999)(50986999)(101416001)(53936002)(5660300001)(230700001)(54356999)(65826007)(110136004)(3846002)(6116002)(31686004)(64126003)(6246003)(77096006)(33646002)(6486002)(68736007)(90366009)(4326008)(106356001)(105586002)(23676002)(2906002)(229853002)(478600001)(6666003)(6916009)(189998001)(83506001)(53546010)(36756003)(2950100002)(81166006)(81156014)(8676002)(4001350100001)(7736002)(65806001)(316002)(65956001)(16526017)(47776003)(97736004)(16576012)(66066001)(86362001)(31696002)(305945005)(25786009)(50466002)(8936002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0158;H:[10.236.136.62];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOjBUWGpvbDZCRWY3UDU0aGtvN1VveGg2YXB0?= =?utf-8?B?T2l1ME1Td05NenZwL09tdENmY0wxNndqUUpHN08xVlB0SzlzWnRDeEF5MHZK?= =?utf-8?B?eWd3aUtacFEvSkN2aHhjSWthTGNNVmsyTlNyWUVGQmwxZUkyU1VUQ2szbGha?= =?utf-8?B?NXpNWE5MRUpkQ21BS3Mxb1ZzdTdWNXp1WTFSTmVMSndmdGNIVU9pRCsvVXRG?= =?utf-8?B?Q0pHYTViOEYzNFNoekM2TFp0K1VRdnRjSkt2dGdVcFUvOGZmM0pRWlgyN3Ru?= =?utf-8?B?Y1NnMVlXR2E1N2VMUm5RaU5wak8zWmhvS0JhaVJRSFdXVHFtcS9JeE0xdTlZ?= =?utf-8?B?OGZLS1BpcDZhSlRvRS9leEtqTTZhYUovajh0a3JtTWlOalExbmR1UHdUWnB0?= =?utf-8?B?OG1UZTI1UW90SjhId25heTY0ZUNzSWN6VnRuYnNXS0hyNC9scm1EUG9ROHJ0?= =?utf-8?B?TkFtNldWYnJaMmFrS2JlZGNPZVVicjBUdDhGVURWeWxoSEJKTkxaMTVlY2Q0?= =?utf-8?B?OExKL0hhdEFpOFRRcVlXYzlpTUJUYmxiUEdWU2VtdVo4Kzg3Q1ZWclN3aUNa?= =?utf-8?B?ZTNKUmk5MGdicURUbWdReXZQY0dPWm9Wb0FObGZYYVhkbjBuZTRBWk45MGs3?= =?utf-8?B?cnpuZmhpNC90ODArMUlOSzkxM2IxY1oyMWZ6WUYzNTlhYU9mcGxXNkk0bm12?= =?utf-8?B?RVRTVStsaDkwY0dCOUdhTE1GRU5zTmJjaDdPYW9Wa3ZQMUI4cGsxTU1COGdF?= =?utf-8?B?Ryt0TkxrS2NPNk14N2hCbU14ZlhiVHl0QkN5VFF3WUdON1BCTnRWeUt1ZnJM?= =?utf-8?B?MUhXeFJUaDRMeE5CaEQzSDRlbTFwRlZJbkdrZFdneXp6RFJJVTlmM3k1UVlL?= =?utf-8?B?VlZ6RTRZdjgwaDBBbEFEbUt4allVTFNDQkpsZXdrSDRzY240RFZsNW45UDl4?= =?utf-8?B?RlRUOUp5WjN5aFRhQS9zRmdncnBjYUh6RW80RGJyVXNRQW9jZ0dCcTlJT0dR?= =?utf-8?B?T25YK0dBalJ4QXVFb0tCL2xTRzlQQW1PbHRnSGdLVU9Wb3pBYmRoTlZSN2cx?= =?utf-8?B?cm9SQ3IwUzZaVzFsVDdYbGR4UmtreWhGOFkrd3h2aUhZS3RPWkgvWnNhQUwr?= =?utf-8?B?aWxzSmlrTmcrOWQ1aTh5djhJT0xkdVIwTmQ2WnQyT1kzc0Nkb0xUbEVyVUQ1?= =?utf-8?B?Tlc1OGg4aUtvMmlwOUZ1WDdRRmZOS1ZvcFZmMFBWYjNnQS9LRTc3cHdFc3FO?= =?utf-8?B?SEhrdUZ6Nnh4WXFmME8waFJpWDlLbzd6azlram1UbWdqNjhtWDRRY1c1d0ow?= =?utf-8?B?bjB5Z1Z5Tzg0TGhRYzZRM0RZSU5tcjFuWFJkM2w5MllBV1NURzlSR1V1aVJx?= =?utf-8?B?MVlJdWxkTXNBRkpVaFExM3FsRlk2bDVtSWJyV0o2SFR6MitWQXFBQnVETG8x?= =?utf-8?B?QzBuZmZpMW5YQlkwUGU0cVNrK3dmYnpHVWtyajFuRE1LOFUvejdUMkI2K1p3?= =?utf-8?B?VitOY1dyb2pOQVBxMDlqUE5aQ1JMYWpqb3NpR2FlSXZGM3ZmOEsxeFVMeWxW?= =?utf-8?B?dktKd1ZwbkUxcVFQQ2xEY3oxSVM0aUVORktVUXM4dUtNTUUzVXBCbjZXUDJK?= =?utf-8?B?VWhEd0p4a0E4VC9YK21uR1RWR0dCQjFKRE43Tk9JdlR0MVRacW5qZmFmU0c1?= =?utf-8?B?dVI0VmhjNHA0VUc5aE5HNU9tMFp1clY2UHFUeHN5bE5iOTJrT3Vrc2s1eUIw?= =?utf-8?B?azRTSGlKaU02bkE2TlpBTUlKYTVyMjlSdmtPQnJ1VXdtV3c0aUplbllkQ2w4?= =?utf-8?B?c0xuSVFTUjdRZ3JUb084dnZCbzdYUTdSWVBJQWUxUWRlZnZ1YVBsbHZlQkNS?= =?utf-8?B?NDVIVSsvU0ZDRGgwaEJMY25FMFdnYVRyUVlDL0cvb1VGNlRCclBkbzhwYU1m?= =?utf-8?Q?XGlYOvGJXB0ByfPnCoSh/tlJWSzLJk=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;6:ufPEUgsoryjF7k0jEg26Wsid1+vlt4rEJdE6Mq+4pGPui33z86nsFHYViQ0WNoHrmf9cm2Z7dxoQiYJzsybyOO60NheZ6OaEYl7wG/OcF/dNDbXqg1htltatFOg2XOxxNOAz6v4EHr5jG/V4sQ7gdDFLHbmj1PcIDcnjVnOnwG/N7HhNbHa+lnPJzTOYwKROQMom0Zyq+csMBHSw7GXE5wsMgSRuzI+2WpTGbCRycNUhBBkISxiH0OSjaZg8VxuLc/4kbQ/tEu8IAalrU2UDL6E7FUXoaykdlOK0sOquQNcwfnkqRJKl0Av6YCfchzQ4nYt/ptlQHa6/LB8evsQZJA==;5:BLD7cT55yWcvZ82/UU+tAsHjBBvN9wAFmqEjQtlzXdnWAfthy7Gvgg9WTsP1IgPkDeP3yfi8qcUpPW2j7PJXTx1mIB9liRa92hqh0O1lgemlKihQGmcpGFd+bMGPmfmX/ejH1Ryo6ypnW1xEeduEPA==;24:44nFCg9kv2FiLJkBAggRe+sIGVyndy5GrJyt6Bpj13r+O1e8mBYnQzvGf3F54bISCeYPQtqPIIFTnP1m1//ZQ1R0AbJbP/+l3jT7Gw1lVz8=;7:eDKz5TL0g9OAeOlZJAOJNeLeFKruMWGQ7kvrT74f75wZmjmUeo6YCmFqOqwvJrQ8RmtUS1nOo9VdnUGrzkXZbYGLGJGOtMVbHEz50AJ2/tzPfmz8A/tE6J0sT7TTFveKgAKve/WqiYYTUzcQVzjrNmXJn+uwUPs2tsdhnLdZi3MgnoRfN67zdden1inQawHO+4XoG2+3xV0jmaukdumwoQU+hAjXEM1GX0YAOmuWyYI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:aAgZkqBAbP/czfo1/GekdWG0/HFxObU5DIEerdFzzMyqbB3lmwkxFWzDvFfscMSw5QZLS1GMqGOht+0HrBpvHEgK0sqXEbGlMfYTrgfTgJlEur6zhGS4+bdiPAHsd+W8Cu4WwcXZIjtDltM6Wc44TWnstNjlzkxNe76lCLWkt2dHp8ZZP7mYoAr+cBhCuYmZfYdjaspe0zZOQTtRp+AUFK2t2K751lQ9ul4EekUch3swEottgCtqhugo+6/buwns X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2017 19:45:40.3278 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0158 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/13/2017 12:55 PM, Borislav Petkov wrote: ... >> + >> + /* pin the user virtual address */ >> + pinned = get_user_pages_fast(uaddr, npages, write ? FOLL_WRITE : 0, >> + pages); > > Let it stick out. Will do. ... >> + vaddr = params.address; >> + size = params.length; >> + vaddr_end = vaddr + size; >> + >> + /* lock the user memory */ >> + inpages = sev_pin_memory(vaddr, size, &npages, 1); > > This way user basically controls how many pages to pin and you need to > limit that on the upper end. > Actually I don't know what should be sane upper bound in this case -- typically we encrypt the guest BIOS using LAUNCH_UPDATE_DATA command. I have heard that some user may want to create a pre-encrypted image (which may contains guest BIOS + kernel + initrd) -- this can be huge. For SEV guest, we have been needing to pin the memory hence how about if we limit the number of pages to pin with rlimit ? The rlimit check can also include the guest RAM pinning. >> + if (!inpages) { >> + ret = -ENOMEM; >> + goto e_free; >> + } >> + >> + /* >> + * invalidate the cache to ensure that DRAM has recent content before > > recent content? Cache access from the PSP are coherent with x86 but not other way around -- I will update the comments to reflect the true meaning. ... > > Yah, let it stick out. > Okay.