From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752050AbdIMS6p (ORCPT ); Wed, 13 Sep 2017 14:58:45 -0400 Received: from mail-bn3nam01on0074.outbound.protection.outlook.com ([104.47.33.74]:15168 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751148AbdIMS6k (ORCPT ); Wed, 13 Sep 2017 14:58:40 -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 15/26] KVM: SVM: Add support for SEV LAUNCH_START command To: Borislav Petkov References: <20170724200303.12197-1-brijesh.singh@amd.com> <20170724200303.12197-16-brijesh.singh@amd.com> <20170913172510.azjkur3wsvat32aq@pd.tnic> <23c14fd9-f935-3bcd-412c-49889a94134a@amd.com> <20170913183701.2gxm4d4gngp4vgd2@pd.tnic> From: Brijesh Singh Message-ID: Date: Wed, 13 Sep 2017 13:58:31 -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: <20170913183701.2gxm4d4gngp4vgd2@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: BN6PR1101CA0006.namprd11.prod.outlook.com (10.174.237.16) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d8016c53-1a5e-40e5-2c6f-08d4fad9704f 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:KtgV6SLialTHBPTdjyMB+FRo+XFR7pTEicrNGqt/YmDIsT30qS926CUT6D1JKIrOmff7z8fjXYVzjiqnCzMrwX3Uzu/f7hrhyiZaGthvBoNNP8no8gv84HnsYcn/i/lgFXSCpS/VzY9h3LtEynfvtwHgCxJmpLrrVCLGe/1WoI019X2IVTHyrhYZVDdYHAgnN7p/ZF2W8UNg34iLoIrhctEkXUfk3KayUlbY2xOraiL0AaA3Gx5ezhaPpYjjTlZL;25:Z9cH1Y3U9xLKYCL4c529OKId2Hvod9lmjRvz9HFhFFE/P0Q8C+8znhrkPk1cQcf0WNmI87h8rAAizQnnU7/zEt4NqmJdxJ9hZJFS2bUjITyKfCPop7BBZLBmq/NlubQ4zbh7VkidprjGlUEPYrJz33pPjFiC34T4GqaMhF84eW1k/Bj9qCNqT6nNLKzEsXGv8apz/0jNrifAMyphaJ+GKT5viEpfLHoUSaAuiclBjTquB20Pjx1JKBHvgWrS2r+/YSYGp59jEuAOenxwh+qx+48K24q/yVsu0UE8xfDusNgB/x/G2lHm049xeIRcfTP6dBv7ZuM+CEiLvgsQ93xong==;31:MGuUDoIhvJDsz6q9GYksp8OhTUYBRUxxP9kb1iFq8g8SG+rjy6JuIBQvRZr24YpEWMSDsTUgobWe1c3eWKjpKNDYRAv87S2ueghVjntVXQCPdIqrNIEOIgiBEtGBGLCJ1ago2bfI3UWd6RE2Z1jY38eJfA6B0PFrat8PuOSpM+G0Jxnv294r4YdEkFsP4D/EIH/n1QdJ1mXqd+SieC9hPKFsAQT1Rx3Gq7z5Ci9r0UI= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:ryYJbt4D+elAVc8LLDrfG3McykvxeY6GHzq6xlZe5QbHStS19y8erjS5TgtTyRniJVu/WBgCCm/mzTDaQVSb3UnH6/tcNeqENaLTPUr6yAhQ7JA9Rhsq8yamfGgpQ8z2lcn48pcuvHDzX8tvGC8HsbfGzu+zHU4jT1x/gVDLAuG1kBPI+PC8sHw1Rg2vXef/2Trp/rSa0TdYP0Dh2eiwbDuij0OpVjrJhoDfL/e1cYmVdt4JOimjw5uzLaKhrcTg7/+FeYYPH7xiouqmTmGAxqLWzgB/ep1tGdTrgNr5e3ct3UZKgOfRIIn9FZmSjktPta7uLLeLnfSkrODu2tJroIsO03hYopIHMcIbiQfcUWd/8Pdtk8M9EI/X5IUeu3o5n8VFFZliOxEF7QfIKlvpuQju6VoWUIl3Mk0l9yvKXLHryNkj5zUJaUqiXowVD8ABMkZnNPfrqjWAq1AlBMhYD8g5qk0alSFZO0Ju4vPxi02qE/7PP7Qdu+gzPPq08F+A;4:5AhE6NRnL7qtW98zicknmePzUEYOgBCTuJbs4G1X7m4GfY8eXnJ3SyVEdO/2DvaKn6C9Peb+ngvBjQ/CJtO0wQ4O+VBWanrf1t9Vzd0d9hpWE+5gG+FmcWUQS0ryLIzofIWa55MY5eaSDpemts9/q4hjsEiomohgoKbLN2LHNcoLBMjbhp6syKdK2UAD/k3HQVqTbZgh1+5otTXmrdicQWHuKEl6NQosWZTZdcDBr9EZNOOKZ6Vk88+B5Q5B+lRw 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)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6055026)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123558100)(20161123564025)(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)(979002)(6049001)(6009001)(39860400002)(376002)(346002)(189002)(377454003)(24454002)(199003)(53546010)(93886005)(2950100002)(36756003)(8676002)(81166006)(81156014)(189998001)(6666003)(6916009)(478600001)(83506001)(31696002)(305945005)(86362001)(8936002)(25786009)(50466002)(97736004)(16576012)(66066001)(47776003)(316002)(65806001)(7736002)(4001350100001)(16526017)(65956001)(230700001)(54356999)(65826007)(5660300001)(31686004)(3846002)(6116002)(6246003)(64126003)(110136004)(54906002)(101416001)(53936002)(76176999)(50986999)(105586002)(106356001)(4326008)(90366009)(2906002)(229853002)(23676002)(77096006)(68736007)(33646002)(6486002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0158;H:[10.236.136.62];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOkRRMGhyYVV0WjQranVzZXpVUFVpSE94ZWRJ?= =?utf-8?B?WUhEMWxPWGpJMnB0V2hlUC9Yb3IwR2U2TjFBTStaWk5EWFJNR0tkdElpUHor?= =?utf-8?B?SjRRZ2VxYmxRZm1ML05KZ1VkSUI5WmhsUmNseGhRVm1HMDBiQWVmQWVjR3BY?= =?utf-8?B?Q3dCS1Q1VmZCbE1EU003WjB6MHJBVnJnNlpPM1RzTkFBbERhV0dqNDVhTzdR?= =?utf-8?B?UitLY2Z1NFNNK05LWnR4Sm5LdmQybDkwa1hQczZnaFBPdWxUTkR3RGs3RXRP?= =?utf-8?B?cS9UUWZHSStPUU8vdXhrelc4NDM2VktIVGE4MDdtYno3dEJQd0ZveXBveStl?= =?utf-8?B?ZjlocHFwVGdWYSsyazl2b0Zaa2dGeitZSEU5ZjFwaDZNaG5CVjBkTytKVDgy?= =?utf-8?B?aDd1Nld0MXNhdDAzd0xtQ0FwV09SV2Rkc3dUZnhSZFNWSEVuOWFrcnMzd01k?= =?utf-8?B?MDRxSTVwWGRGS3dhK24zQ2pWSG9MajZFRnNVQkxXd1N5NGJIMFlHaEd2ZjRq?= =?utf-8?B?Rk00OGsrbS9aTG5UTUQvMXVOVXR2MEhhcE8zektXUW1oeHVHaTJLajVPS1NV?= =?utf-8?B?WFBuVWdYOWpHSFF6OHVjalNOTE5qOXJLSGt2UkR0Z0RjUm9oaUszQlEvaUlH?= =?utf-8?B?WWY4eURnS2VhbzVYdU11VndacDBsdTVBOUQwODNSaDZ0blVmVHFJS2t0N29Y?= =?utf-8?B?RFNySE51WWY4ZDhKaWd2bkZ4SEtOT3Y4Vm1XNklsZ09KQ0NPNEpwblJhK0RJ?= =?utf-8?B?eDh5RlRKMjY4bERJZVBEUGVGRGxsUCtUaFlTQlFIN0kvWGJMYkhzSjZaeTZL?= =?utf-8?B?akRmR3NnV01qR3dwZlRJazdnRFhvVUU4MFlNR2tsRUdybXhySzE3cnV3bytY?= =?utf-8?B?RGhvcHBzM09TU2VURjVIeXJhb0dMVkF6MFBkR0ppT3gyN1FwV1JpamdJazZ1?= =?utf-8?B?dStRbFZ3SzZlVlVUNGRmWStQY0xldWJ4K3RaZWxCcW5WblBmOFA4cUgxRmhZ?= =?utf-8?B?cnd3N3RRc1RUaFhFVTNEanBTcmNtWFRKcWJlQVlCcndGK1ptQStObWxIYWlG?= =?utf-8?B?b0RBSmdVa1NXeUFPRm9ScjN5WjJ2Tk1SazFNQ2pMY2dJVVVMamNpZUZLbS9r?= =?utf-8?B?NVYxZUp1bWg2bWp1QmV3ZVRwUjVTMUVlUE1Yend1bjNoajI1djJKS3BYRktv?= =?utf-8?B?VGJzZ2ZsUjBKaytCaTU4YjE0NTBGNmVvZnJINGozTFhYL3dYY0hKV0pGa1ZI?= =?utf-8?B?WEF4NGlHT1BEY2phazVsL0lDbnhxdmIwTFVRb2FlNDlnQ0w3dkVkQzYxQWQ1?= =?utf-8?B?VkVrcTdGcGNPcWwzUTBBRXRyV25mVW9PMFFGSzgrV282M0RKdm92VEh3MUtt?= =?utf-8?B?VEU5bkwrVWsxZklVbmZBRjcra3lvdmJsc3JBbDdNbU5mY3pwZVdsMHg4U1k5?= =?utf-8?B?dUMrL0JzWWR6dnQycjJSWGg2bUFzc2ZKRlluU3hUdHlUQ2FCSlltMnhodVND?= =?utf-8?B?czBOTEN6R2p1anRYeFY1cXpiNGNGVnZVRks5dXRoQTYzb1hMWk9rZ0o2aEhE?= =?utf-8?B?dWJiMkxlbm52SDJqZHRJeDEwUXMwZ21qOHdTbGVzTlBKN1VacFBEQmwrTlV0?= =?utf-8?B?cHd2TzlxNG5oZy9rREpNV21rVUMzM0xXbjlUTHJhMkVadlNtNHVEOU9DYU01?= =?utf-8?B?UUtJa0V2N3Zuam9aY05uZTI0dGFqRW5lRm81NlZNZERiWjNyMnowUWxJekUx?= =?utf-8?B?QUFKVFJKa3lVVGh5K2p6aXFuVGFMVjN4K3NtUWtjMjhGVnptcEJyWnpRaDE2?= =?utf-8?B?YUdNMmVuRkRmSEFhdm96SGtiS0pJc1pMb2I4U2kzNEFmUENidmRxUm1RT29k?= =?utf-8?B?N2kyczNubTNJaVFxZURKZ0k1V3EzMFczeTZwMTUyaFJmOFYxSkYvdE1UY0hB?= =?utf-8?B?R2VBUUpoNTdDWnBQRTEzeUQ3VmYwakpSVWNuWmV1TWZ4bldYR3Z0bU5zZ01Q?= =?utf-8?B?Z2Y2dDhqMk5nRjBuaUk4V1NENElNejF5U3VjeS9EMytlLzRibFhXOEh5cnRz?= =?utf-8?B?Mk54dURYUXBKYktKSndMSWdMN3ZtZHpYVlpFbG5jaVVYODBVdURETmlaQjhP?= =?utf-8?B?a1E9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;6:HCXSwGvZSARmYxhHA0/kjhJM1qhUCpCSQDdDDfJ0Sp3OXL8q30S2DkQk0bGYn5X3om2k4xyH/IVdzyMLyEknW7T3vysuVhld4MKo4DsB3iOsUgSyj/1rmllzXDpabMajkCChOaeQm5gZkOYlxjeX57JFMB2nZoAGn1N6qsCB279b9H7CI31rsYUUpSwhiTAsuJKzCq6+E0upp/kygm/E+XCLiZDZ7LyPcox1Fomhe0QnqGr9dfc3H2IMyh9s+fMXxEQ7RmqfQRcxn13LbLz5nQ3k99Zcl7TJFfbArUyHeDov4xAuc2+x3+wmGoNpNz3NhEiPsg6+yhOlpMXkHIf4uw==;5:Aw7epeQZKZRIsoyWLaffYLQt8cSXkI47G7kQbbqDD+8wkevLnRURkbnBUDkJjn3R2kuctu5iDhjuerQGGBqDJIpf2ExRg++TUYe2lgNXx2+Qu9M4nK0zySum1OWw7m2O+mBUFl3Z2jfO8WA36yjo5A==;24:UhnXDhpbkhwVBjM/FYbxBHaH6bdUDiwmhAA3y19ct46cDwj2jPQyLO6GnNbHNS+xHiqnJr+pLSnPv1u7DSEu/3D4x8/TKPcKGa/ZzGiS2Go=;7:Jba44SszdK2q6dMAlkp65sdxlifWFrcznROvpaKPFw60zN2Fb/7KA6OFKsLCRryjuYzrw1354y4NrD84SyK9mt0suDbRETeurMGci8SIf/T/I+zpvtz3p+E8B0Hv61TrFlr/FFTxNaStB6R2OLN+JQNUgJuR7a62r2vZv7rmxvZ3ee5hHSUu0VhfcPShaYt+HWcPYE4qrHJ31uVo1OLINpcgeKA1b921fXxk4cBAMI8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:R7bwBd5jaITX4l2POZrOdoFgZKRMcUDdZBVQX+rP8uYfTVXdlyu0Gj/yKddXZ6L2kKhdtpj+boHiQaT6ni2Xn9zuTbPqMFl6m0maCeTJyS5rgIk++FhmZ/TZ80TzdK5TfC10HEdvvJOFnvxzYTC+V9k/vuX2/mXjGxLzWhcqX2IA+YAWtePtvr3DaAA6/UWPsNBCQLgbijYJPK9ZuA556o+V1eR41tWfAdy+anmdRc9IQNq8TuF/DyJYFqXKuMRM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2017 18:58:35.2043 (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 01:37 PM, Borislav Petkov wrote: > On Wed, Sep 13, 2017 at 01:23:08PM -0500, Brijesh Singh wrote: >> Yes, I will add some upper bound check on the length field and add the >> sanity-check just after copying the parameters from userspace > > Also, you could either fail the command if some of the reserved fields > are set - picky - or zero them out - less picky :) > Actually reversed fields are not exposed in userspace structure. e.g a LAUNCH_UPDATE_DATE userspace structure looks like this: struct kvm_sev_launch_update_data { __u64 address; /* userspace address of memory region to encrypt */ __u32 length; /* length of memory region to encrypt */ }; But SEV firmware command structure is a slightly different (mainly it contains the reserved field and firmware handle etc). /** * struct sev_data_launch_update_data - LAUNCH_UPDATE_DATA command parameter * * @handle: firmware handle to use * @length: length of memory to be encrypted * @address: physical address of memory region to encrypt */ struct sev_data_launch_update_data { u32 handle; /* In */ u32 reserved; u64 address; /* In */ u32 length; /* In */ }; Please note that some commands require us passing the VM ASID etc -- userspace does not have VM ASID information. The current approach is -- while handling the command we copy the value from userspace structure into FW compatible structure and also populate missing fields which are not known to userspace (e.g firmware handle, VM ASID, use system physical addresses etc).