From patchwork Wed Mar 7 16:50:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10264415 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 3C72C6016D for ; Wed, 7 Mar 2018 16:51:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2BCE528FDA for ; Wed, 7 Mar 2018 16:51:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1FF1E29693; Wed, 7 Mar 2018 16:51:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8EF5C28FDA for ; Wed, 7 Mar 2018 16:51:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934110AbeCGQvi (ORCPT ); Wed, 7 Mar 2018 11:51:38 -0500 Received: from mail-bl2nam02on0075.outbound.protection.outlook.com ([104.47.38.75]:30896 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933956AbeCGQv0 (ORCPT ); Wed, 7 Mar 2018 11:51:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=W8Lk2nNYg9Ep8TlNsT0ZIwgBlxXaKUwm79iDe1hFzfM=; b=UcaezvIuflCXuhSj0RZscqBCXIRguxs3JPIVUE4qI4+jHhGpowFFZilxpbzBfyIyT+31mPbIWitW1+nrXcDRDGsoBzDE0Jaovs+5faRUCxn/mUuU/HGgH7OR/ELBbzCyQ54JSzHfs+zzhPK9SSQagezO5fL6SsXOmIlBVtcK9tA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by SN1PR12MB0158.namprd12.prod.outlook.com (2a01:111:e400:5144::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.13; Wed, 7 Mar 2018 16:51:09 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Cc: Alistair Francis , Christian Borntraeger , Cornelia Huck , "Daniel P . Berrange" , "Dr. David Alan Gilbert" , "Michael S. Tsirkin" , "Edgar E. Iglesias" , Eduardo Habkost , Eric Blake , kvm@vger.kernel.org, Marcel Apfelbaum , Markus Armbruster , Paolo Bonzini , Peter Crosthwaite , Peter Maydell , Richard Henderson , Stefan Hajnoczi , Thomas Lendacky , Borislav Petkov , Alexander Graf , Bruce Rogers , Brijesh Singh Subject: [PATCH v11 09/28] qmp: add query-sev command Date: Wed, 7 Mar 2018 10:50:19 -0600 Message-Id: <20180307165038.88640-10-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180307165038.88640-1-brijesh.singh@amd.com> References: <20180307165038.88640-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0501CA0095.namprd05.prod.outlook.com (2603:10b6:803:22::33) To SN1PR12MB0158.namprd12.prod.outlook.com (2a01:111:e400:5144::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: cba2cfc2-237c-4a33-3f8e-08d5844ba11f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 3:TLi2EA5Ju9P/9EFDIOsOT/yhXRV6TryPNroUVbjGGgzYyOaPqUjkSh2xlw29eYE7B3clpCuHXIyNH8Q0/zkmqzI9WcPwORJI+a36rMIWU1K0w/GykmlweD497pb4lqq6s6q4g16rAKRWx8/mWmkCrRQU2w9dj6FvcRCO0E50EP+U2gEkXhxdM4Jq7Oo052ScKlx5JptCiQUJZLoWuz6dfhjabNJC4zsvANa68xyutN/M/7AFR+NNPLWB5a1CmpG5; 25:VnYfe0ccGBsYx9+CFpF/K/mnX53GW5bQZsKaOYfgIXtU1Dj4rLQYnnrybMN/FEkDeeTi2DKsdCA0Zg8Wk+LJAw0JWhk6yxYJYCWwmy7aKQQz+O6yCqLR2hxhKxNNs4ND8L0im3MVUXGv2LBH/rRV6zhMEWnPDue3hkn3PSPy10LF2jF4I0xWADMLPG1fJw50Em+ZNKsGuEdRQ5iUK3nFAv4Ewkh+zPrkHwIEWmjekW0XA+HyaTyQRkOCJr9wAjOBIrwB2r1Nf9TXlUaEloP1f+p1R870S2GgQaPRgDs9t2JlXnmanClRjvF6UfL1owxlJMupQ6dLuqy8cNl7tjOcbA==; 31:1TfaXn63puBRZeLnFDxCJHMWZrL69Z5JHkJ4mbFarNm9QWffWKb5AERP777QCUZlpAFHOsMQwYfg5qG/gQcVkWSTaXRg2iObQqK05F/d2CrGJCqGetO3D1UGfEKsq0tauDugnGbrenGwbLex6N/M2bSBEvHUvcTf/3NcrJV/gFuImyChljz20RIEVric6X+BFF9V1MOQqVrqRKNo/3V/BqpCOU33DkEJhig75m4Cw/s= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 20:tf7b4htUCXRmKVJhymfSFz+fxp/os92Jw7gurVd1Jo8XOn5VdELTQ7a6tciB0JTvwA8QDQkU6xFT3Ysneu6j2m/jICK0NP0VPsJLnzFvsVcDFvcyhe7Lv4HvR6kKg2JbahPzBA7AtESsmSvBbXdig3cZr9y2P1bfy6EBnPIuoIdgpcbSlhhjTgvvbpX6nteIHEW4WkExPDK2qtGk+auomAVrGvFXAwYlGZ+hVqq0c6fk5USqdBtM0eZ3vhdpugvqmw/R6h8AkZDdmK2dqkdaBIdB7sOYtaerLY/qAjXis3G/irYvdc6lTjTDaFuYh0eMBNxLrrmdT0/3Sr+cvmiRmq78PKXuj2K8d34oL0X/Dj1mGTB30ia5yQ9T3s9oI/dvX2U4Upqgr5mfz/qmGz/ZaFWtFwtnZeU/UBJpvid9RJPQ8sIrd/CSbvlzxQO6rjnl1DF147EnQjxEb10nWdJ9+FFTSj6wsV8v1YFBD4DWTvRmckuz+XBwE/P6AEA9d1iW; 4:fiYsbU0vPU5R9NcA+TJ41TwFH8jiVSTl+hGbGqPeCbMb4zLz576j4dWAYI6Uv7ptC2CXpZ1BiLkaNrOWAXXZ4XKG+j+55xL6v5lA/yB9aPKC8TWQr654A/aNYkDn7g2mY95xtLk9Wx3SqUjr3wSoEb+FPauxV1DtSG75u/BtwT3Jp02effan0/3yU92PqDydcMwrEH9uK1VNOIAkqWiVrbQQZrm7pMlvnzk4fuooK8GInXGlhvWV8wtms9zAxLrYF9j9zCefurrnXPi/BVmXvwCkxnLmJ6vVOO2i3f7dhvJx01o/QElGc2gMG1dxcjLc X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3231220)(944501244)(52105095)(3002001)(6055026)(6041288)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(6072148)(201708071742011); SRVR:SN1PR12MB0158; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0158; X-Forefront-PRVS: 0604AFA86B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(376002)(346002)(396003)(366004)(189003)(199004)(53936002)(8666007)(2950100002)(6486002)(6666003)(6916009)(53416004)(3846002)(1076002)(6116002)(4326008)(54906003)(8656006)(2906002)(2870700001)(25786009)(59450400001)(386003)(68736007)(478600001)(50466002)(105586002)(2361001)(2351001)(86362001)(66066001)(106356001)(47776003)(186003)(16526019)(76176011)(52116002)(23676004)(7696005)(26005)(316002)(50226002)(8936002)(8676002)(81156014)(81166006)(36756003)(7416002)(97736004)(305945005)(7736002)(39060400002)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0158; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOmFySHZheUR0VUUySzd2OW1ZNU9ZOFdSb0JV?= =?utf-8?B?YlRIK2htWHVsRmw5MUFEUUNEazBkM1JDTStRMUx2WVBDNEpPc1JSTzlaR25E?= =?utf-8?B?WGxPK0xwd2c4cS9VbjEvUW53NDlJZlZBVGZHcXJER2pWV0tNcTFlZ1BqYnhK?= =?utf-8?B?cDRTL2cxQ2pWRXdwT0FZRmptVzVwbEsxQjh2NklxTVlFc0lKNzRTVkh1T0Yv?= =?utf-8?B?L3RkSzlPRFpCODU4NTluMmpoMkpZSTBYZTgzSVRsTGN1ZVRjZ1lZTVJ0amMz?= =?utf-8?B?aVduZGVwUHZydkdzbzFRTVZxcmcrSkJJVFBuSVp5S2FjMVJCY1dLVllLS2JH?= =?utf-8?B?UlVWS3RBQU8xVkRYRktRZFRUUzE0OEpJUDlEQkdjbWpYbjRHbzRBUDdMZENH?= =?utf-8?B?bVZsQVFxSkl2L2RUNG85OWRsYTlNdlVXWTV0MVlZcEV0RnVhM1dKd3Qrc2hK?= =?utf-8?B?ajUwZlpvT1R2YTN2Uk4vaE9xU1FaWGgxdFB5MjRaV2VhdEVVNitUTkFYKzB4?= =?utf-8?B?cnpRVjU4OEd3eGNqcGQxUGo4THpSYTRsVC9JUVA2eDR3cHRvd1pPMUdzdjNz?= =?utf-8?B?N1JFNFZKdzNUMTBmM3BjaWpyRGc0UFBybjRaQzRsQ3lKbTFESWtjTW9aWW5K?= =?utf-8?B?WllpRVV2ejA4b1JXN05JL1ZwL1p0T1NoeFYwcy9yZnh4MjBXQ01FSm1VOGJz?= =?utf-8?B?K1NTcFk3bzNJQXpqcjBoanpSM3NJRG0yaVQ3WWdjK3VTSHd6bHYzSWc5MXI1?= =?utf-8?B?bDJ5dUkzYWs4M2tJM1cyZjFTYXdzbXNUT2hBWVRBeEFSVDcvVGxvNmU5SFhx?= =?utf-8?B?L0NObWtnN3lINk8yRW1BZEQ3bDR2ZFhFd0xZdmJpNUxFVUJZajRGRHhTUXZC?= =?utf-8?B?OG1tVlJOWHJMb1drTkErLzh5cWoxb0RWZEs2YjI1ZjcrT0RwNW9IdVZ0ZW1E?= =?utf-8?B?b1RxcWc2STU1U0dUNDZqV3FscmZrRkpOMm5Fb1B5d0JpcWZvdHVCUWZWZFVv?= =?utf-8?B?K0xKTTlTL3lWTjdUS2hYVjJoeVlpaTBLQ3p4UFJKR1FOMGZLTjRSdkI0dnhr?= =?utf-8?B?MGNzTkR3dHJhcXd6dEVrejloWWlrcmFUdVpPZEdDMWZVOTR1dThiTEZYRWNz?= =?utf-8?B?b0FxcGVuTWNKV1JaZUhrYnlmbzZtaEU3eTltUExVcUlCZ1VtNzZHb2NuNjFr?= =?utf-8?B?ZVEyanlxeXZNcVFCTjhNdCtaYmhyWW5DT0hMTW1ERDVQUkVaUmxSSEppR09Y?= =?utf-8?B?Q3ErRWJidmp2cTN6ZjIra0RSL2dFK28vdUFGMkRoaDZRQVFmbFgwMkZxN2w3?= =?utf-8?B?WHRtWkc5U3dKT21KdmhlTXExZG9SSU85NVgzNHRWWjAyL1Q2alF5bHJYak5D?= =?utf-8?B?SnQ4NFM5dVc0RkRPT3NmTnpoeTVuT3YrakZZRHAyR0xDejY0bFRhUUJhVnpq?= =?utf-8?B?SkxsbjdSUTYvVHM1L3RjSy8vMUF6Ly9KVVFWTmF6M1p1QW9mREowRi9sTGV3?= =?utf-8?B?cmErQUtoZjQ1bFNzTDlVbFp6eHhpREZHamwwTkpZUkR1NDN1cENrNUVqNzVJ?= =?utf-8?B?ekFOUE1UTTRESkN3cVRGVFVmOHNEMThDUE5FOCt4bXp1WXphbjM3dlhkK3Qw?= =?utf-8?B?a3N3UVVqclp5TTJqSW1wRWVzZUhBcmt4bDZ2dlJtRDN5SmRTK0xxdGZ5UkV5?= =?utf-8?Q?8VhKIl0kJfBv8ZSt2SZGpnpub73SQqmhlpKU5pb?= X-Microsoft-Antispam-Message-Info: OX1ZjzePcmlGNu82T09vwhl4cZaRzuRbVWMVF+yAQb0l7RJCT1CM2FyUaFVmKZxhdr9dR9k9KTbCQeSo0Jw5GKb3Ddg8Hd6BZ5WLNbYU1GYkZM+46rVa03moyWHGWIaHjH6VZB39otB7mmcp7Zaoz1YXsZIZClz1WkSiKecP/dPckHuhg80/NtkZjJYZtxAw X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 6:TuuKupYdwTmf/ChSM0JhrNSvz8zkSkoS4BkT7yOn7RPaHLtfD17gBWlybSkGpIJRIqusyQw0kNkYH2abQOhHToMPJuw60WsKkBdTsiP2T2FjWMqNW18ET97s8N1hkbqX24mSd66t5hKMSwfsIuQhDB8yip0Or4lCtp+EG1fWpgjP1bXSVrKkOuCjGT7BY6uCF9ce7dWy8iRoW10+40pkGy63/VkhchTJ/sbFilgzduJAQrZ5bzlnieTCQkqkxlqHlytWQAtFHKy/4ktbTrxuGzx5bQgN5uzI8c24Gn0MZAQQdocARs8BaaFv4nwRLAmczkqYVlZ9zWU1WHiIy4V5s2TgyiBY/CuEJLyxbjfk9bM=; 5:1iDd4EkAQ+o3oUC/7bUUQzXsZUob1WRRuOTpQAvepMlCb5N9gFRHszbfguN4vB3DGZbHXzKAR2CDNSWPiCTKR8Zo/4zZ5+qBcGPP/PAexdqiZ1h1EUkqL+bYa0Fzi+//Kbrt96sl5nGkvRFXPBtmIwfodC1h8SlUp3QfdUQfDRo=; 24:507dnnLo4iJfOGm7oVdIRDUO5dDYH0mV+p8W4mpAQGz/3FIZmlkQEOUBG8TW1nlJm6hDAWr1TVlP3nH/PWSmpmnMhku9Nt3cMcp4d6N9gOQ=; 7:HSZvj8ew8RgILtvCBfoNAN7eXhc6tTXvSKSakdwTAZv/YDy0AI3PiIKjrurKbk3mm8sAHq5cOi853jkHqwmERTllCm0bGbIYwLAcjzpAmiLMp3e+FuP6V4LsfdHHT794HrWfcU4aSItTMmbi6g6Mn2jYgAg5RqpCN0zncaSIoJz1rwuqpuuqLvr7m7N2EVfUb2TP2DsifOIwUy9CqTn3VWl/x2v9JyBfyHTB/T66N6vqtsi3dOsh3nVYCI+K4Zq4 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 20:pZZNvbOnGMD3i/t/Opmh4LN+uY7Y/Hh5W+mN2OQo6r0h/rkaujqzwTGSzTHrF9AKx1qeqK2q8vN/u88gaJexT0CKQkDmWRxBZ9gkw8f5tLy/kbKQFSUDzA1Yb17uiWsPOsRChcX8653WkyeZaCeJARsSC7XgG7oJQU8xC8fIM93IxGp9cykSNDizuAR9/BQBPFmAbFRnQUA7KUM0qaIfREfjgFn5nYtLp0sPaPfHdewTMKYkKZSTfk9U7Z7cneVC X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Mar 2018 16:51:09.5105 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cba2cfc2-237c-4a33-3f8e-08d5844ba11f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0158 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The QMP query command can used to retrieve the SEV information when memory encryption is enabled on AMD platform. Cc: Eric Blake Cc: "Daniel P. Berrangé" Cc: "Dr. David Alan Gilbert" Cc: Markus Armbruster Reviewed-by: Eric Blake Signed-off-by: Brijesh Singh --- monitor.c | 7 +++++ qapi/misc.json | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ target/i386/monitor.c | 8 ++++++ 3 files changed, 91 insertions(+) diff --git a/monitor.c b/monitor.c index 3f4ba902266b..2225cf5030dc 100644 --- a/monitor.c +++ b/monitor.c @@ -983,6 +983,7 @@ static void qmp_unregister_commands_hack(void) #endif #ifndef TARGET_I386 qmp_unregister_command(&qmp_commands, "rtc-reset-reinjection"); + qmp_unregister_command(&qmp_commands, "query-sev"); #endif #ifndef TARGET_S390X qmp_unregister_command(&qmp_commands, "dump-skeys"); @@ -4103,6 +4104,12 @@ void qmp_rtc_reset_reinjection(Error **errp) { error_setg(errp, QERR_FEATURE_DISABLED, "rtc-reset-reinjection"); } + +SevInfo *qmp_query_sev(Error **errp) +{ + error_setg(errp, QERR_FEATURE_DISABLED, "query-sev"); + return NULL; +} #endif #ifndef TARGET_S390X diff --git a/qapi/misc.json b/qapi/misc.json index a1702c906098..fcf3bfc66a15 100644 --- a/qapi/misc.json +++ b/qapi/misc.json @@ -3199,3 +3199,79 @@ # Since: 2.9 ## { 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } + + +## +# @SevState: +# +# An enumeration of SEV state information used during @query-sev. +# +# @uninit: The guest is uninitialized. +# +# @lupdate: The guest is currently being launched and plaintext and +# reigster state is being imported. +# +# @lsecret: The guest is currently being launched and ciphertext data +# are being imported. +# +# @running: The guest is fully launched or migrated in. +# +# @supdate: The guest is currently being migrated out to another machine. +# +# @rupdate: The guest is currently being migrated from another machine. +# +# Since: 2.12 +## +{ 'enum': 'SevState', + 'data': ['uninit', 'lupdate', 'lsecret', 'running', 'supdate', 'rupdate' ] } + +## +# @SevInfo: +# +# Information about Secure Encrypted Virtualization (SEV) support +# +# @enabled: true if SEV is active +# +# @api-major: SEV API major version +# +# @api-minor: SEV API minor version +# +# @build-id: SEV FW build id +# +# @policy: SEV policy value +# +# @state: SEV guest state +# +# @handle: SEV firmware handle +# +# Since: 2.12 +## +{ 'struct': 'SevInfo', + 'data': { 'enabled': 'bool', + 'api-major': 'uint8', + 'api-minor' : 'uint8', + 'build-id' : 'uint8', + 'policy' : 'uint32', + 'state' : 'SevState', + 'handle' : 'uint32' + } +} + +## +# @query-sev: +# +# Returns information about SEV +# +# Returns: @SevInfo +# +# Since: 2.12 +# +# Example: +# +# -> { "execute": "query-sev" } +# <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0, +# "build-id" : 0, "policy" : 0, "state" : "running", +# "handle" : 1 } } +# +## +{ 'command': 'query-sev', 'returns': 'SevInfo' } diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 55ea10deb8ef..27b99adf395b 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -30,6 +30,8 @@ #include "hw/i386/pc.h" #include "sysemu/kvm.h" #include "hmp.h" +#include "sev_i386.h" +#include "qapi/qapi-commands-misc.h" static void print_pte(Monitor *mon, CPUArchState *env, hwaddr addr, @@ -665,3 +667,9 @@ void hmp_info_io_apic(Monitor *mon, const QDict *qdict) ioapic_dump_state(mon, qdict); } } + +SevInfo *qmp_query_sev(Error **errp) +{ + error_setg(errp, "SEV feature is not available"); + return NULL; +}