From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752397AbdJTCgC (ORCPT ); Thu, 19 Oct 2017 22:36:02 -0400 Received: from mail-bl2nam02on0077.outbound.protection.outlook.com ([104.47.38.77]:40268 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752291AbdJTCfv (ORCPT ); Thu, 19 Oct 2017 22:35:51 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: kvm@vger.kernel.org Cc: bp@alien8.de, Brijesh Singh , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Borislav Petkov , Tom Lendacky , x86@kernel.org, linux-kernel@vger.kernel.org Subject: [Part2 PATCH v6 31/38] KVM: SVM: Add support for SEV GUEST_STATUS command Date: Thu, 19 Oct 2017 21:34:06 -0500 Message-Id: <20171020023413.122280-32-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171020023413.122280-1-brijesh.singh@amd.com> References: <20171020023413.122280-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: MWHPR1701CA0020.namprd17.prod.outlook.com (10.172.58.30) To SN1PR12MB0157.namprd12.prod.outlook.com (10.162.3.144) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a57b3e0d-832d-49da-cbac-08d517633ef3 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199);SRVR:SN1PR12MB0157; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;3:5iTX2obEgv+ExWBNLX+0svQsfvun9A9WcMgzHaGdB/izpMZAg4v37w+G+yXMoUwi9SxvflS40tAY4mj8X4tv07bMHWzdeifidNErjD9sUSqoODbc63u+VNyDJrSBquhAtdmglxsZRLZdBjtrNecQuefphlZOFQYLajMbqvNpwVlCiP9RdEa+N/LDTimJi7NnxdVJ8uxCwiSuvyPE/4qrMXA+xwUi8TqR48OUqIX0tYgOqiLRwdlyrPetvj0Pg9dX;25:TMnGHUeIvdDXkO184PpSKA/QmNVM6smDQ3uKn/wuxHWyt5FcQmDQHNnXa43DYv/MzS6CEvsBSBO5mRcdw3ZKIM2OxEh5vqtilXSNGn3BYl/6Ljlmfw6EgtzMyzU5OF0yDDYO5/sk6qV6MmEalE/6V8EDRqIpAKZJ5BLp8ig12QjkY0VPQgIZ0YAVmbbrojsoWLs5mTBi9+SxywmeKtaQT9Zmz9gSKAiy6t3enxgLGl2mQPcTte2tJ9u955zAFK5k1XrOaxcNHt/256jpvu4/1nQBGENr9pt5FQCX7cqYjXtkyTeWbaC5nk9uxACJCBZDnT/QBKW3Wf4O15ERn8SsjQ==;31:CQnAQDW/lvzUDtpbHzuvEadbEHkru0J3/U6pmULKSSwnrk46SIubLcsHjGNCjkVQqE9V0YmkVNbgTqnA6VaAK27QdOSSYHqZelAK0d9ZP+kRKbQ66LcFoE04sURu7Yt3CsTKznjMuXAePfC7eFzof9RFxRK9M48F8S6hMXxOTYwopLvoKdwWeuMcx8wywFEkCDTlqVp3Epkx/AtbrB/UC7FuFQ8wJMH/xn9ZrmcD3WA= X-MS-TrafficTypeDiagnostic: SN1PR12MB0157: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;20:95CBT3viSOLFQ9qgJYiIcdKez6uX0vmpkH+gOrhYI0atBjwyIAE1e+JxqvkSnYt8cpqtdbnxVYlzOKCKr6SZU/CsspaNJkJuXynfGd9QrVSpVg2y1SF1RThjncE1rG6OBQ8ClmYG2JOtzFuTV73Swep2cRXQF/do3PHz82nDP6dB9lxT3hr05fK0569qtz5GAjDmFdd/J86omCqZ4LnSyDxNaobYsDUvMYi2si9EzKsmIGrlLMfy18VgrbfLCGcGoZW97CsfgdF/bvR8WFunLipjaohLF7MNmXYBg2ZMLx5VqhTkXR7rgGdNMDJA1N2TSfTdxXK96tX5eI0zDaV/6C9ygrQNewiuyeenufr4mZuTgQcc6LhvYgHeqieVWqnc1cA8C2GvZfu8ecuRPD+EZO0VgKgEVNmIxfDI9CyYUEltdbJ0Cq+QIGFPFX/UIXf4H4c33FkUbtpPeQum2jgATxkPhmXwF3M72WX/c83y48huh/HftLDP53VWDQtVDOkL;4:7BgHzjG3k58w4o/jwMcbX56ym0QhQ2ZUsPgD3cvPPMU0PRxrUArHUygjY2UmtwhaYT66T6uEsOolcuJZsFUZ7qAqtPGRklQqeaj364ry7uG8SUrRzZrd7GdeiyLHYWbpB6LGw3L2x57T5hUo5a6cVdC8AS2lrjwJQI3x/Knho2bZA43YzREwwTAmcKvJBxWsQdF3EAGw2YNBlulJDO6qdWiESSpWseZxgYQwQAr0j9zD8MCuCwqYwP4Qn8ho2bmegiS1QInqW7PTi2kiqGW++ggytkSEZYexshQGIHkpbIjtdTdZlH8E/la8Y+2RmUGKeu+TPiChqY/4TuwcuPzwBg== X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); 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)(3231020)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123555025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0157;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0157; X-Forefront-PRVS: 0466CA5A45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(36756003)(7736002)(68736007)(50466002)(1076002)(478600001)(4326008)(16526018)(316002)(53936002)(6486002)(86362001)(305945005)(53416004)(54906003)(50226002)(2351001)(106356001)(101416001)(81166006)(105586002)(8676002)(2361001)(76176999)(2870700001)(2906002)(50986999)(6916009)(23676002)(66066001)(47776003)(6666003)(97736004)(6116002)(2950100002)(189998001)(8936002)(3846002)(33646002)(81156014)(7416002)(5660300001)(25786009);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0157;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU3OzIzOnpXWE82di9BaEZDeUFmZGt2NDBoRlRZbXBj?= =?utf-8?B?elRJeHRUdjR1SlNFUzdxZG9sbnd0V09OL1h0ZWlsM2ZSQTBOMDhhbytxK3Nk?= =?utf-8?B?NHlLUzk0VmFaUzdmbkZseXR6OFFvN3pZT2RiZjBYWHJtcXB2NG5BcWlSSHJu?= =?utf-8?B?YUNhTzQ4czE1WnNvVW8yN01ZSnc2MEJFeFJ0RjZTMDRaWDg4R29xdjAvN0xG?= =?utf-8?B?QW1oQVZtWVJvZHp5OUxKNmlvdHpwNTJWQkZMTG1JZTdYVVc5WWJVZVpxVVpO?= =?utf-8?B?b0oyV1ZKTjVETDJabS9XdldzcStnanlXWmJGNHU0KzhqUDgzYWd6Z1ZJVXdB?= =?utf-8?B?V2ozWHFHOFpQY014MWZTYU42dm9ZWmgxbzlHSldsR1h3b1N1dzZIUjYzMnpJ?= =?utf-8?B?TTdiYUdNUFVFa2llWFhCbFJNMzhsWmZIZFViNkNNczFma1p0VDNtKzBFS1JM?= =?utf-8?B?ajg5SFBjeURuS3poRURqcVFUZjc1NDVORHlQTTEra0lpRGpMNFVXRDExUjlU?= =?utf-8?B?VUpHczFQK2dVQ0o0VzFvZ2trK3V0YmEyR1VZZHFjWUtRSjRMdk9zTTNyRnFw?= =?utf-8?B?NzRnaG5jbHJveWw1QTNJdGtTZ2ZBV0VDc1cza2haZThUbWRLeFZaeXgwRml2?= =?utf-8?B?c1JQTEtxdVRIT3h5UHB3V2pNVi9PZEZBelo5U2dJUDAraUJRRU84c2Y2TlNR?= =?utf-8?B?WnVlNG5OcWRJZU9ROGthVkRKY0p4RERSMDgwWDZGQldZUms5bS9HclZ3WTZJ?= =?utf-8?B?eFFlemFYeU56bFZRUnRHV01ZSXdhWGczS0ZDSUpyeXVteDBxQTA0aXZWR0hC?= =?utf-8?B?b0c0cjdoNGRGUzdmQUxhTWxuK3NTMndEeTVzNEdOTENpQ0Zkay9lcS9qb2Np?= =?utf-8?B?Tzg3VkR4QnhnbFZlblgxSkU3dWZ3V0pFTUw5Z0d0aU13WUV6RG5ZajA1a3NT?= =?utf-8?B?R1JjNHZ4L3hDdzQreDZwUm9rUDMzUWJhQ2NQZGxDNEE0L2hXNWlWSDZJZm5n?= =?utf-8?B?RzZTNkpQUzk4ZUhHWmFVWXlGbTY0Z0hHRVdMa2VTNFdYZWkrdjVkeU1ZTFpR?= =?utf-8?B?d3FzdWFiS0VPSFdrWmt1NlpiZlVQQVZFWE9EeFV5SWRRUHNqUjAyemY0OVUr?= =?utf-8?B?TEhBQWNkYUw3czFCR1IxZW9XUnVjdHBSQmVPVzdqMXltWjFwNSs1eEpROUpx?= =?utf-8?B?UlFWZksyZHBzNHd0bUJKSWZuT092MUJ1aWdNcGNDckFpUnFaL2YraGJZVGtB?= =?utf-8?B?SWVydVkraXY0WCt1MmFMZWMwWG4rZS9BYzc2aWllZEtybTFLUXRhZUlQaExB?= =?utf-8?B?M3dqTy8vdkdpR0F5UWU5bzVETndMdENteEptWWlZZnRIcGhiQklIeHNuVVFN?= =?utf-8?B?N2VST0dsTVRTYTFqdFJsN0ZNc2IrKzExVjRCVDRqYjAwM3kwUVBieWFkV1NF?= =?utf-8?B?bndtZHJFTmN1b1dNTFpqcUw0cUlLV09KVXBwelB5cVYvSlhNZlBZclFkODlC?= =?utf-8?Q?65YC/AAGhK0HY4Z7OvcettprVVFXL6OUSuBF5U8aq89itr?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;6:WYUnyH4TJo6JWhKdFPDg4+Oo/xJsSqdpciOIDvywfzgsrCE8Rv4YtKOLiiWRvQFizEwovGd+CIpFj2i28NT3tYJCU6nj5qnCctuqDNuk9PTU52HZsXi2AFjsPomHa2Hx4Fhhbw3o5S3XwlwG+e2AC9WphKIi2xR7E0AU5rPXxXonQyXayt4/qsNXgBtJRWdT1tdZS313NwN9ibWp4+4kk1Zm+aP6P6yUXndv7q/yR/CiHsPnemu7sAA6R/VKjADmGzS+ofetxH06rtD33LrKXuriiQCZv70FtRkfREoYreMoy6v7N1fh2CE1zk6O/wVvVi+/zauvd6HLay370HFMYA==;5:lF8qzEY+9ABt4ZMCFvWahBLUu/0E32C7cmQDyv1V9xCpYYbOQIkx+B7rr0OM0NwOeYWiZ2wwWnqQ/Uq5ABaswInGCd8NOPre20OA/pKfq2rzyB37oWdP5LgKogg9uvCiYtOxfm4bG6TXe1xYYQaPpA==;24:QnkDyQGgNgCxq+10ujYRaj4u2MbrsCkH54tU8ti6cDO924toCkDvmocXoxSN/750O8d+Olz2NnKODpjkWw34evy4DAyfnDBdrAey1DfrkII=;7:qhCpKjkfO1k/fmX+LpFkdz7q/7AC78Em94b3P/0LMVlidtMYyyZ6Q3k1IUUz+JYwBsg/cZmwbZGAyI//WS12Ir2kiT9RTiNLtXYYrN/TKTMb8wTjcDUX2zdkT2x66947bsx31+Tj1/rewbE9Jc0wlfyFr6zS+i1402+ST+QXgU5tjPyGGbbZjPhmt+r++vbIm2OalySwhhoHjLHijB3KGtGmIFERJVInfuHKj8zsbhg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;20:4D5YH7ECo1MIu1TiqghVhmkTC61zRvDeNI1ghwLiblaf77IHDLqLLd2QixQ1/ZkZkF+fmrdfEnBaykUx6aQENFnadRjC2WNR+GjvHyJ5pmFNf0UBN/0B+iy42iX678FodYd/dvWd7nm1Jn8+lysZ4QISKMTlEf9CcWhoGpS27AGCKzRYhmoqzzV2cL0Q11rfeSS1H/B7JWo+vMP1c3PAkMD2Nx4dq7DemlummYxKMgKv792d1UNeLSONwrsVK8Qh X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 02:35:35.1127 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a57b3e0d-832d-49da-cbac-08d517633ef3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0157 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The command is used for querying the SEV guest information. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: Paolo Bonzini Cc: "Radim Krčmář" Cc: Joerg Roedel Cc: Borislav Petkov Cc: Tom Lendacky Cc: x86@kernel.org Cc: kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Brijesh Singh --- arch/x86/kvm/svm.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 5ac290b845b9..83a4d0406a4b 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5993,6 +5993,36 @@ static int sev_launch_finish(struct kvm *kvm, struct kvm_sev_cmd *argp) return ret; } +static int sev_guest_status(struct kvm *kvm, struct kvm_sev_cmd *argp) +{ + struct kvm_sev_info *sev = &kvm->arch.sev_info; + struct kvm_sev_guest_status params; + struct sev_data_guest_status *data; + int ret; + + if (!sev_guest(kvm)) + return -ENOTTY; + + data = kzalloc(sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + data->handle = sev->handle; + ret = sev_issue_cmd(kvm, SEV_CMD_GUEST_STATUS, data, &argp->error); + if (ret) + goto e_free; + + params.policy = data->policy; + params.state = data->state; + params.handle = data->handle; + + if (copy_to_user((void __user *)(uintptr_t)argp->data, ¶ms, sizeof(params))) + ret = -EFAULT; +e_free: + kfree(data); + return ret; +} + static int svm_mem_enc_op(struct kvm *kvm, void __user *argp) { struct kvm_sev_cmd sev_cmd; @@ -6022,6 +6052,9 @@ static int svm_mem_enc_op(struct kvm *kvm, void __user *argp) case KVM_SEV_LAUNCH_FINISH: r = sev_launch_finish(kvm, &sev_cmd); break; + case KVM_SEV_GUEST_STATUS: + r = sev_guest_status(kvm, &sev_cmd); + break; default: r = -EINVAL; goto out; -- 2.9.5