From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932921AbcHVX31 (ORCPT ); Mon, 22 Aug 2016 19:29:27 -0400 Received: from mail-cys01nam02on0042.outbound.protection.outlook.com ([104.47.37.42]:12384 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932578AbcHVX3W (ORCPT ); Mon, 22 Aug 2016 19:29:22 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Subject: [RFC PATCH v1 25/28] KVM: SVM: add KVM_SEV_GUEST_STATUS command From: Brijesh Singh To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Date: Mon, 22 Aug 2016 19:29:09 -0400 Message-ID: <147190854977.9523.2458628974170220401.stgit@brijesh-build-machine> In-Reply-To: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> References: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR07CA0020.namprd07.prod.outlook.com (10.172.94.30) To SN1PR12MB0670.namprd12.prod.outlook.com (10.163.208.28) X-MS-Office365-Filtering-Correlation-Id: 4eca610d-7e50-4bd5-1199-08d3cae4233f X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0670;2:m1disKBGy6sQ015iO/Noc1vEaJ0IvYKl6c1yt0fI5l0p0Amnpz7CiLEYGlctV+8sEMbTSeNa5+j6mgNcFhTG2Y6y0VIBzKtaA0izlhQkKuhKtQgAn/VpIYw+ydFIbg9xp7YMCAhMxuyW/QngJZGZX2Ff4gxD4u6gYSvnZXIKM713kaFV0WzvNweJsZFtO8VJ;3:Ax56PhDGRn2ddnjyp/ul2QcvL2cqQWSRy+wTvnYrKaQ1twACcMPI9ZiE9JO/GSubl6YKqhICzIwiSJKla4Va9n/EFY63g/ysdjmBGr/3ywqYQHS08mnK1qymrSqdFrzQ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0670; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0670;25:AMuoNc7f5bX3+LQGNIhJiUrmO+F4xqIfS0VmCucg4kMJulXshHzTdAMqzDvSaCJfGRSN2owEq36hW6n2WnCpjX98eaw63L2K1iPQ/4IqL/LNR78KvtNAJxOnN6YNoEteRIpIaXrQfzo0EBgrRyE3V/tMGywPoJcvPVBFxEGbsjNXlrvmjdanQUUonj0vujqptjKEhLZTNKuhSBBxSccAW/xBnj29mAlNE2Vew+9Ck0p0oxAKyqOC5CqSSWFxPVP7hsvVhI9YWT5DvjIl8ELMzbGQ0K6ENytpVoAQLkJcPNY90PuaJX9ZHd9dIqLvHGO8DUts1N3JQ9J3gQrNZxGa2PzMLp49gOOQLtkSD7Kjb7lqJyao7TwMI6FiSffuXaKZqMw6/9iAQbukO6TWd9Xim6QGMygNjYcXJP4dxkI3o+5Nc94mg7rIpy8LsycsBixiMstXX1xVjj/cRqiGwlENEF2okzjdATBQfoXcKW97ECdlpGGiLNt95lCoqNx6rIdujEswOUR8DQ4ENXxNdAb3z55rF+PdjKe+yQfpMBmopqVFKuRo+OH73kn3NvNJ+kHhzOHjKqnfCXShErHoYNDFmUMM+0VIZmFHxPjBrhUNvbuvfaWop5pkOb/OBS791AcRrj+bJ3qbw+MTHXMYXfs0kKZfKcWO1EAViMTgBnsfBRyKOdn3f61UpdAfZomhkfT1DKnzLPLYtoFMdcMe6hsEdnOxGrrox2vnsiGBRQlbGHthsjT2pV1wL3BhpJaPL+VoFrBnOgEnKn2AXZ6Apt2OR4p0fktl9SZ6vFGfLL/n9TF9HMOfbZ0VaO+PVYopbDhr X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0670;31:f7YgqhLMYeA1yWC3u4n9n4RJd1HYTFd7aUX81xmPMN7c1rZceFxBMl4hnJeucz+w8SRkqZQ1cYLb8iy+Q1iaVpD4RCAwmTK4F+zL3teS5qBjjLQincid79TbzcwQiOfipvm6Gvwk7v0na23emUD/XVH0eQaU069jRv7DHwnajNvhO+1JU7UHusDTc47mwrJfC9BQtzE2vK5TEyXOUSzntfwP068WbRDp5EMlix/ihNk=;20:YZqr9XV7Cz/Nn1ygBaf5cQgOadF/I1jMcwvbfRmjJGRbAXUw4wTV9mZaKX0x0Kovij11KFK3Frrjuofq2ER5qOUSsJhbtqla0e6BM+mooq6XWGNIlK2j5KeZ2nWry08kKzqTGDXJtjV8O7ht5+ebqHHzRs8hUXOdRd4rlaa8QmjVudbCkJsPv7BvWC6zUw6XOtsmWqpynW1QJ/lptLtgLI9m0SnR2/YAJkkNRPf8JcE4jE7SFouZiae5nepNjd5m5f6zENcuC8k64PrpjA4z5JRkTiYMa0ur/gmcmJ6K5hVEryxNoGKX2SpQsXmP2F0ArQ4YGTvt23XKByMGfBiBeTb9FYW8q4ykarEplduXhsZjqb0ZxNZ+hfVJNY7UDi5QIbehoV/yX78ZXx/BPH3xlwA1Jq0zvburqN3g06x6C3NMENdWf4lNoWcrhE/I68ccTAQCzMrJwpQrU+tiecAyHUyR8XNl82QRZbdUWVBRq9Ez0hTBSN9nK2DtXVBSX1KZ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:SN1PR12MB0670;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0670; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0670;4:3r2gdnHL3BLFTh1PMUMZWknYzNsoknkldsotqVhjWRYxkgPeKQU8hR4x69/IKejO7FKamNOHuT3MDVwCyrqW9SKpIKmoOhK2/s9GQ4RlHt2SSqlLegCiNLQiZCuagaCb+VILihjbKQwOHLPq0RaWOPmLY7aDob56OjFUmZGiBEjx3awr5FGevgb+fn6APlRpnW3zEhOwpNAPnoB2D+096iUI9wK3UazFTTKJL0v9ifLPTQ4JMPKtAv4HEBl31++cdWoc9+e9V4zug6aC8tnQFzlQmKGP+ymg3DK41FibhT5GbLxcyjaJVWBDEx/cGenU+2WaAE+3omX3+XZf14P+WPX6ePZIoHBUM27Qgm4OwC5bD3vjqAPxrOb6a8/z3HZEzR57mLa2+Kefthjz2dXmXm5+Eb5giYHjsplkXUz6G0a9yXN1bpT0+o0IAOxKX/rf X-Forefront-PRVS: 00429279BA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(7916002)(199003)(189002)(2906002)(15975445007)(230700001)(9686002)(8676002)(81156014)(586003)(81166006)(77096005)(105586002)(33716001)(103116003)(42186005)(2950100001)(3846002)(68736007)(6116002)(305945005)(101416001)(66066001)(7846002)(7736002)(83506001)(50466002)(92566002)(19580405001)(19580395003)(97736004)(4001350100001)(5001770100001)(107886002)(189998001)(106356001)(229853001)(86362001)(47776003)(575784001)(5660300001)(54356999)(7416002)(7406005)(76176999)(33646002)(50986999)(2201001)(23676002)(921003)(1121003)(2101003)(83996005)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0670;H:[127.0.1.1];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwNjcwOzIzOiswcEpHM3hMYXM4cHE2MUk0NEVrYkxUS1Vv?= =?utf-8?B?cml1N3V0dFRqRnd2T2ZGdkE0enlHemRKWklaalp5cVZDQmExekJTS0t2NXZi?= =?utf-8?B?WlhJcWJzM09hd2RleUlsS3ZBR0FhbGZEekszVUloL2JTaGlHRDJvTUdCU3dh?= =?utf-8?B?NHdQUkpnbE4yRW94MUg2ZEpEQUZqa0pXRm9zem1JbVdaR2RsakljUjV1KytG?= =?utf-8?B?QlJTQlJ2U3orZG5VV0txNkNFYmo5eGFpM2hUbjZzdzlmUjBOS0FYRVFLTFVT?= =?utf-8?B?aGJ1UXVXeEgwRVk4NVlzRDVhUm9SeXdzbFFGbUpCS2pKc2RnSE1RZ3VOd2Vk?= =?utf-8?B?TzFpUjlhcnozQmhlYVlTbmZkTHBaV1MxRlpuSVhlcXJEVlZlVDlpakMzR1Zq?= =?utf-8?B?V3BoWjlLSWFpMW1rN2lVdi82Z2NiZ29sY004U053bjZmWjJPSHR5QnR3N2FV?= =?utf-8?B?cXhsZmwvMldXS2pUZnYvRTFtekgxdmtYdnRRN3o4YjBKUXNpdzh1ajJRSVVO?= =?utf-8?B?WjNPNVBJcUlMT0NZZ2VxUmJ5a0o4NkNLOFc0VTVaUzFlbC9uSTU3RklnN1Nh?= =?utf-8?B?RUFBMFRleHVUdnp2clY1Tm9FMGR4L01nN2dFeDZTd0pjQmVkd3B6aXFuTmZ3?= =?utf-8?B?V2IxRDN0NDZSMXpkU0hDWWZuNHdHbXQycXJJdHphdHVlelJpZ3Q3U0lJbTNN?= =?utf-8?B?Vkh6WHB2aXhmcWpJdHI3d0d1Yk9nMEw1TFBHNmg3Wm1zRFZhOThvclVnL25H?= =?utf-8?B?TWNGSzJQM3liWjdlRjRwVVJqVEZYQ2p2S0xqandlbm9hTEpvNTg1dVE2S3VT?= =?utf-8?B?Zmh4UXZadFlPU2V4YUczb04wdVNDbHRBNnB6clJhZUgrcUx1TFNqRnVjbTVO?= =?utf-8?B?NGJSUVAzd1BSSzd5OGJwbXNPWnhnTEp2eVZIWHl5dUErbWhNT0szWmtTSkxS?= =?utf-8?B?RDdxTHplTkVHbWVkRFFuZ3V1c2tma3hnMjF2Q0NxY1lndUI4bW5LRkVPMEdo?= =?utf-8?B?aC93UG1HeWRzNGJHZVRlY2tKK1pNVExUOVR0eTVtYkFYMjJwU29lVlhJUE9B?= =?utf-8?B?dXkwTzVYSGM1a3RHM0NXVytSeStFbzU0TTZEeE9BeldLdEdiZXNHUVFwMzlu?= =?utf-8?B?Y1pZZ1VaRUJ1eisvTXdtUCtHb1ozbVh6ckNWRy83ejliamUvV2JpQnJvNzhp?= =?utf-8?B?WDQyNDNEQi9FVG9lTTJYSVpScnh3TmF6RzYrRG5CNkR6TEt0OG5CYkQyU01u?= =?utf-8?B?QXI5R3FaU2dJMGFwZURmOXo3ZTJ5Ti9FZ1dkZ2R5NS9MM3dmdUZKSHBYNHEx?= =?utf-8?B?UHdQUDJwUnhZMVhsTUZRdlgyck40Z216NE1iTWIvQy83VkkyTjRTWklFWlJN?= =?utf-8?B?TEhrL0RySHgxandZempyZmtXZXRMQ3gxeTE5dGhkb00rYVRkaFQ1Sm9GVUtv?= =?utf-8?B?UFZndVh5RWFNSmhWdjhteFFjSmRCV294dDMxbDcvZVJnaUdHY2dnSU9ZbGsv?= =?utf-8?B?bi9iUWlkaC84MEVXd0FmRVpSYXB5dVZLYnlaZXRyUk1icUpIUkxXOGZwaEdE?= =?utf-8?B?dEdqbng5UHpZby82dzlJNjMvRGF5UWZjNE81UWpaRzhhMjZ1UGcxbS9LMlEr?= =?utf-8?B?OWVoSm02RHQxaDdhb3E3MUpMWEFTUmNaUmJhN2ROTmRBdmFUNVZ2a2dhNm53?= =?utf-8?B?WUJYNVRnOW9hODcxd3dmdXp3dmh1NGkzSVNmaFlxZVBOeWdBd09oNWM4WElM?= =?utf-8?B?aTVVSVBsWVowcXNhS2pVbk1DSjQ2RG9Za2h6TnBRTjZPejVWaHZaeTZKTyt4?= =?utf-8?B?aThjY1NFTm5CMTRYcGpRL1F3ZW5CenVOMFNHZWRXMFAySDFiZXRhOFprV25v?= =?utf-8?Q?Vq8QYK0yeYP7tOBAVyx9mCZ4/Au3nMV7?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0670;6:cCQ5ASFMlDWP5WqDjFo+y++uyQfz/ECcs0FfDdxe6qqH+UX2YyhJC1mVKpKaIrlWr4vgR2DKBhw1l5X6KnsxxwJRQ1TxNO3hl4gWd16wS4k3+vCxeWYNms8C93XIZTJSIBOTuuceRZkkCOss5mEiutHi1T2hV9tgqfK9TpR86py4rVb88Tz/bT1U+f8SUtlsFWSvvAdn8EIHFc4O6sEWajXN6rjWsxG3dsC8oTwWN1TXeDUBOk2aXspq/lgGvJ7yQt0gPzqXmTuxv+SWtI356TcTGASiXqs7+ThJIy31kz2bYeOrj5qoxonyMx67CuBhx/xb8mnzIHE5T3S7Xj+vYw==;5:Olq3ARZn1rGD0TiYhTp3DADnIZcV46VCRtPbFIj/Q31Dtyr7ebuWTv93fpl2EzfmwQdHKJOCgr8FAIhAMQhlQQvu/mrW4+bExjK3uOElwK2JS2nDT+gCBDUrE30DuXHFsxlhvt2+eqr3hZV5/+iHIw==;24:/kSdu58zWcVpka5z1o8qRTTgJwphldyRDQ9trYTq8U+zuTgfMTJUsMGbYlIoPtFzElTxpzVhf6ruWijby7CpZHWE03MfexQATe98ao9yxuc=;7:WPh7uIUuVMuj/bsaSlaaOMv5Rlc5TyLl1HKvwNKKKnLTim/UbyyQaIAdYArDvBvIJa43lbgc01repwi4FH/G+srkVAHTwtOUEGz3/GynaT9puEPZJdCBzOV/3nF8MWL9IWzGcUI/3TKwXMF3WYhZiUJqZZP0E19jfLwW8SVzgbntkWgUOaj4lQ405lghHJOKRUCFeRq3mGmq0GLQplos4ciq5O2GyHVSJbLVYVyyMl5U3BGK133v88+CyTI9JaPh SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0670;20:1v8Z/JvwD/qd4gQ4a3cq1eTCHhxnR+T5f3mKofpAlm1meqTFU+EyRKA/aoGuK5luOxPs9uL35jLG9bOHTYpqyhSJgQfS0FzW1dp5wEZ0hrmOY7Rfdyvk7G2iFsZDuL2OkCqQIqKJ9BjjjQYPPWG1XLLEOYiK9Mo7WIEQtK/TqboJ7xWm+CdplGIyY2rCPWsirKbslAkzhInPH8Q4G+cBdy+34zrXTsyUREEJZNVr4MlM7Nezx0NDuib4xhaxBuYC X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2016 23:29:13.8046 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0670 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The command is used to query the SEV guest status. For more information see [1], section 6.10 [1] http://support.amd.com/TechDocs/55766_SEV-KM%20API_Spec.pdf Signed-off-by: Brijesh Singh --- arch/x86/kvm/svm.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 60cc0f7..63e7d15 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5570,6 +5570,42 @@ err_1: return ret; } +static int sev_guest_status(struct kvm *kvm, + struct kvm_sev_guest_status __user *argp, + int *psp_ret) +{ + int ret; + struct kvm_sev_guest_status params; + struct psp_data_guest_status *status; + + if (!kvm_sev_guest()) + return -ENOTTY; + + if (copy_from_user(¶ms, argp, sizeof(*argp))) + return -EFAULT; + + status = kzalloc(sizeof(*status), GFP_KERNEL); + if (!status) + return -ENOMEM; + + status->hdr.buffer_len = sizeof(*status); + status->handle = kvm_sev_handle(); + ret = psp_guest_status(status, psp_ret); + if (ret) { + printk(KERN_ERR "SEV: GUEST_STATUS ret=%d (%#010x)\n", + ret, *psp_ret); + goto err_1; + } + params.policy = status->policy; + params.state = status->state; + + if (copy_to_user(argp, ¶ms, sizeof(*argp))) + ret = -EFAULT; +err_1: + kfree(status); + return ret; +} + static int amd_sev_issue_cmd(struct kvm *kvm, struct kvm_sev_issue_cmd __user *user_data) { @@ -5595,6 +5631,11 @@ static int amd_sev_issue_cmd(struct kvm *kvm, &arg.ret_code); break; } + case KVM_SEV_GUEST_STATUS: { + r = sev_guest_status(kvm, (void *)arg.opaque, + &arg.ret_code); + break; + } default: break; } From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brijesh Singh Subject: [RFC PATCH v1 25/28] KVM: SVM: add KVM_SEV_GUEST_STATUS command Date: Mon, 22 Aug 2016 19:29:09 -0400 Message-ID: <147190854977.9523.2458628974170220401.stgit@brijesh-build-machine> References: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: simon.guinot@sequanux.org, linux-efi@vger.kernel.org, brijesh.singh@amd.com, kvm@vger.kernel.org, rkrcmar@redhat.com, matt@codeblueprint.co.uk, linus.walleij@linaro.org, linux-mm@kvack.org, paul.gortmaker@windriver.com, hpa@zytor.com, dan.j.williams@intel.com, aarcange@redhat.com, sfr@canb.auug.org.au, andriy.shevchenko@linux.intel.com, herbert@gondor.apana.org.au, bhe@redhat.com, xemul@parallels.com, joro@8bytes.org, x86@kernel.org, mingo@redhat.com, msalter@redhat.com, ross.zwisler@linux.intel.com, bp@suse.de, dyoung@redhat.com, thomas.lendacky@amd.com, jroedel@suse.de, keescook@chromium.org, toshi.kani@hpe.com, mathieu.desnoyers@efficios.com, devel@linuxdriverproject.org, tglx@linutronix.de, mchehab@kernel.org, iamjoonsoo.kim@lge.com, labbott@fedoraproject.org, tony.luck@intel.com, alexandre.boun List-Id: linux-efi@vger.kernel.org The command is used to query the SEV guest status. For more information see [1], section 6.10 [1] http://support.amd.com/TechDocs/55766_SEV-KM%20API_Spec.pdf Signed-off-by: Brijesh Singh --- arch/x86/kvm/svm.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 60cc0f7..63e7d15 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5570,6 +5570,42 @@ err_1: return ret; } +static int sev_guest_status(struct kvm *kvm, + struct kvm_sev_guest_status __user *argp, + int *psp_ret) +{ + int ret; + struct kvm_sev_guest_status params; + struct psp_data_guest_status *status; + + if (!kvm_sev_guest()) + return -ENOTTY; + + if (copy_from_user(¶ms, argp, sizeof(*argp))) + return -EFAULT; + + status = kzalloc(sizeof(*status), GFP_KERNEL); + if (!status) + return -ENOMEM; + + status->hdr.buffer_len = sizeof(*status); + status->handle = kvm_sev_handle(); + ret = psp_guest_status(status, psp_ret); + if (ret) { + printk(KERN_ERR "SEV: GUEST_STATUS ret=%d (%#010x)\n", + ret, *psp_ret); + goto err_1; + } + params.policy = status->policy; + params.state = status->state; + + if (copy_to_user(argp, ¶ms, sizeof(*argp))) + ret = -EFAULT; +err_1: + kfree(status); + return ret; +} + static int amd_sev_issue_cmd(struct kvm *kvm, struct kvm_sev_issue_cmd __user *user_data) { @@ -5595,6 +5631,11 @@ static int amd_sev_issue_cmd(struct kvm *kvm, &arg.ret_code); break; } + case KVM_SEV_GUEST_STATUS: { + r = sev_guest_status(kvm, (void *)arg.opaque, + &arg.ret_code); + break; + } default: break; } From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brijesh Singh Subject: [RFC PATCH v1 25/28] KVM: SVM: add KVM_SEV_GUEST_STATUS command Date: Mon, 22 Aug 2016 19:29:09 -0400 Message-ID: <147190854977.9523.2458628974170220401.stgit@brijesh-build-machine> References: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , In-Reply-To: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" List-Id: kvm.vger.kernel.org The command is used to query the SEV guest status. For more information see [1], section 6.10 [1] http://support.amd.com/TechDocs/55766_SEV-KM%20API_Spec.pdf Signed-off-by: Brijesh Singh --- arch/x86/kvm/svm.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 60cc0f7..63e7d15 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5570,6 +5570,42 @@ err_1: return ret; } +static int sev_guest_status(struct kvm *kvm, + struct kvm_sev_guest_status __user *argp, + int *psp_ret) +{ + int ret; + struct kvm_sev_guest_status params; + struct psp_data_guest_status *status; + + if (!kvm_sev_guest()) + return -ENOTTY; + + if (copy_from_user(¶ms, argp, sizeof(*argp))) + return -EFAULT; + + status = kzalloc(sizeof(*status), GFP_KERNEL); + if (!status) + return -ENOMEM; + + status->hdr.buffer_len = sizeof(*status); + status->handle = kvm_sev_handle(); + ret = psp_guest_status(status, psp_ret); + if (ret) { + printk(KERN_ERR "SEV: GUEST_STATUS ret=%d (%#010x)\n", + ret, *psp_ret); + goto err_1; + } + params.policy = status->policy; + params.state = status->state; + + if (copy_to_user(argp, ¶ms, sizeof(*argp))) + ret = -EFAULT; +err_1: + kfree(status); + return ret; +} + static int amd_sev_issue_cmd(struct kvm *kvm, struct kvm_sev_issue_cmd __user *user_data) { @@ -5595,6 +5631,11 @@ static int amd_sev_issue_cmd(struct kvm *kvm, &arg.ret_code); break; } + case KVM_SEV_GUEST_STATUS: { + r = sev_guest_status(kvm, (void *)arg.opaque, + &arg.ret_code); + break; + } default: break; } From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f71.google.com (mail-oi0-f71.google.com [209.85.218.71]) by kanga.kvack.org (Postfix) with ESMTP id 6701382F66 for ; Mon, 22 Aug 2016 19:29:22 -0400 (EDT) Received: by mail-oi0-f71.google.com with SMTP id i144so32368935oib.0 for ; Mon, 22 Aug 2016 16:29:22 -0700 (PDT) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0040.outbound.protection.outlook.com. [104.47.37.40]) by mx.google.com with ESMTPS id 49si171560otz.29.2016.08.22.16.29.21 for (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 22 Aug 2016 16:29:21 -0700 (PDT) Subject: [RFC PATCH v1 25/28] KVM: SVM: add KVM_SEV_GUEST_STATUS command From: Brijesh Singh Date: Mon, 22 Aug 2016 19:29:09 -0400 Message-ID: <147190854977.9523.2458628974170220401.stgit@brijesh-build-machine> In-Reply-To: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> References: <147190820782.9523.4967724730957229273.stgit@brijesh-build-machine> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: simon.guinot@sequanux.org, linux-efi@vger.kernel.org, brijesh.singh@amd.com, kvm@vger.kernel.org, rkrcmar@redhat.com, matt@codeblueprint.co.uk, linus.walleij@linaro.org, linux-mm@kvack.org, paul.gortmaker@windriver.com, hpa@zytor.com, dan.j.williams@intel.com, aarcange@redhat.com, sfr@canb.auug.org.au, andriy.shevchenko@linux.intel.com, herbert@gondor.apana.org.au, bhe@redhat.com, xemul@parallels.com, joro@8bytes.org, x86@kernel.org, mingo@redhat.com, msalter@redhat.com, ross.zwisler@linux.intel.com, bp@suse.de, dyoung@redhat.com, thomas.lendacky@amd.com, jroedel@suse.de, keescook@chromium.org, toshi.kani@hpe.com, mathieu.desnoyers@efficios.com, devel@linuxdriverproject.org, tglx@linutronix.de, mchehab@kernel.org, iamjoonsoo.kim@lge.com, labbott@fedoraproject.org, tony.luck@intel.com, alexandre.bounine@idt.com, kuleshovmail@gmail.com, linux-kernel@vger.kernel.org, mcgrof@kernel.org, linux-crypto@vger.kernel.org, pbonzini@redhat.com, akpm@linux-foundation.org, davem@davemloft.net The command is used to query the SEV guest status. For more information see [1], section 6.10 [1] http://support.amd.com/TechDocs/55766_SEV-KM%20API_Spec.pdf Signed-off-by: Brijesh Singh --- arch/x86/kvm/svm.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 60cc0f7..63e7d15 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5570,6 +5570,42 @@ err_1: return ret; } +static int sev_guest_status(struct kvm *kvm, + struct kvm_sev_guest_status __user *argp, + int *psp_ret) +{ + int ret; + struct kvm_sev_guest_status params; + struct psp_data_guest_status *status; + + if (!kvm_sev_guest()) + return -ENOTTY; + + if (copy_from_user(¶ms, argp, sizeof(*argp))) + return -EFAULT; + + status = kzalloc(sizeof(*status), GFP_KERNEL); + if (!status) + return -ENOMEM; + + status->hdr.buffer_len = sizeof(*status); + status->handle = kvm_sev_handle(); + ret = psp_guest_status(status, psp_ret); + if (ret) { + printk(KERN_ERR "SEV: GUEST_STATUS ret=%d (%#010x)\n", + ret, *psp_ret); + goto err_1; + } + params.policy = status->policy; + params.state = status->state; + + if (copy_to_user(argp, ¶ms, sizeof(*argp))) + ret = -EFAULT; +err_1: + kfree(status); + return ret; +} + static int amd_sev_issue_cmd(struct kvm *kvm, struct kvm_sev_issue_cmd __user *user_data) { @@ -5595,6 +5631,11 @@ static int amd_sev_issue_cmd(struct kvm *kvm, &arg.ret_code); break; } + case KVM_SEV_GUEST_STATUS: { + r = sev_guest_status(kvm, (void *)arg.opaque, + &arg.ret_code); + break; + } default: break; } -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org