From patchwork Wed Feb 7 16:06:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10205541 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 1BFAB60247 for ; Wed, 7 Feb 2018 16:08:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0ADD425E13 for ; Wed, 7 Feb 2018 16:08:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F38EE2902B; Wed, 7 Feb 2018 16:08:06 +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 952B725E13 for ; Wed, 7 Feb 2018 16:08:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754680AbeBGQIC (ORCPT ); Wed, 7 Feb 2018 11:08:02 -0500 Received: from mail-bl2nam02on0064.outbound.protection.outlook.com ([104.47.38.64]:53920 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932087AbeBGQHx (ORCPT ); Wed, 7 Feb 2018 11:07:53 -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=G11ghH3J4ALf7yiQ3HBWVpRGdKMhjcO7rVnstBkzy3M=; b=kVBRSP2n44RIJ0SIABMe0gHQ1vBpskCTfJ6q57k2MzvfICn/8eBf3jj/m3bn4iBx+Rr8QhkX+Q6RLtHTClYJ0c3rkBzNEj3x/jF+Dud5Rf+U6B3JiVTom3RrD2OaLUHhnvhAL3SZQnzD5w3ZRFgVsz3btpeHXk/RplMZTG5Db0M= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by CY1PR12MB0152.namprd12.prod.outlook.com (10.161.173.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.464.11; Wed, 7 Feb 2018 16:07:30 +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 , Brijesh Singh Subject: [PATCH v7 23/26] include: add psp-sev.h header file Date: Wed, 7 Feb 2018 10:06:35 -0600 Message-Id: <20180207160638.98872-23-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180207160638.98872-1-brijesh.singh@amd.com> References: <20180207160638.98872-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM3PR12CA0071.namprd12.prod.outlook.com (10.161.151.143) To CY1PR12MB0152.namprd12.prod.outlook.com (10.161.173.22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ef3bf82e-3377-4afb-7725-08d56e44e482 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:CY1PR12MB0152; X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0152; 3:SvQQwre58kxSmU/+KOzrVFKe50teCaADmnXyCqSKB1d+oqLCOPbnDnoVZ1M6x2O4XKYcfSqn6giTubjjXONR+FtAN0x2dLjKN+n+W0wngHQd7OBE7zHfrQ1DQeHISpUX5sPswD93t8+nax6o8mP05T4POisUKRLCWQo6j+Y+We/0SgVx5YughCbvOUybq8BTCKM3wqWWixVqh96oX4R17J+LMFGNyLjUJ4j5eVL9A4v/leurt7gAIbEYemjkxNXj; 25:QcckC1l8bFPfH0Jq4fxjHV8rCUoza09SRg0f0YXP+5ZVwYBXvkedwKRDjRrH5rD2hPzCT8jiuw9LbDF4qJ6ZRJbYAlvyUGgf45u9f3bT4P3DP6/bpW11AcJ8bwQ7Oz8iywI31KCWpB4Cq9WcmdDCp4zKVMMG17AzcOg/RZ/qg4aniI7v8g1PFh7oWddfsdFuqgKtjOiHk/SjwlJluEm3ll7hmJsmpQ0DXql0yNe35TylONe3RaJvJ4sM1F3GnzG+7Sh4ABtCDj1fG2GShtjKQluPay76tFkuq2Zdxt/P+m1wqmfhluy+zOusdVvmOoJOMMuPBwuqQnRFy3lkFuy6FQ==; 31:38ZfRC998rdUKUyySH25okLHTjSI287ZrA+7toS/anlkOWgS9PTlRWvsXnMWAEK6hqF62H+V9JXrt6MSC/o+DjCjXr21KoU6Cc1zb1EU8tc05OxMbOLuzmI7wNFd7wCJYCv27jjiU2pHw71Q8oXP7rnVIVt/dNHDYpel4pY2sHyvqKceOQnD4s3YumFsOmndwXvnymw7ehDar/tQurce8DBSiagMeSMc0/Qu0hJOhHo= X-MS-TrafficTypeDiagnostic: CY1PR12MB0152: X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0152; 20:u583bAvAqEib4eGMsj/zAxELGlQiuwMQwTELI4QFXFaib1OFxoQ+HV/rAbonwmJbYndSFarF7Nny4/qjkRBBh/e4m7K7+Ayl3YCtKB4dr8xXvys5YDc3M1HqjWXTqOrsMacWMwNAApkfL0yf4FKfoQ7cxGDAeqj95M/xKlF4D6U9iZwI+MoKetauSxcOdQvEhco+GhpuRw/gsuIAeF8FaP/VMBID7vTVZSOVjNWi8+IC7jZH1YqGCBimwdvy2pHu6UgqZlQQfoci0uX7pG2mhZNfdO9Yxy78bnOmbREgZekGbFXDmEHrhN/7UEYeRRJYmheBAh5RjoHE8h9qaPWfdvt9gdGoC1pjPF9fEAVZiZ7qEXj/CxgqKDYg7dtsvKb0nfzr9K2xImfhtinQbW8kk7bPK1tnNVsp3L/GmxYJ1XXvlXtO5mhkdfHDP67rVUsYJ6yB9qRbaTw81Sz4J/F/LJtYhP+RUTjfd2mT7sp+OmQo/Oume1q5B2jHoKbTd/tt; 4:rRFNvC1OM+gku4fEU0g6lUzM8W/GbG5DC5iEqynjS6z/E41aiKa0+JT61Fgrw6ghppAlRqFspf9ARNdz0zRsXj3aJeo75sGntjWO7O0XOvOBAQbPPPxPq2c7MT8deqHy3HgFicWEDuj9tMcf8rYiUjGCgUMmtIUGnFcIvvdqpdv1toxObHhCqyQ3OO4OzEo0kxq9aPXlJOro9W85kELkWs6T4+N1MgK3elbnzYxfPs4buadYTAGrDPYMCwXju4syxAmLVd86dWCY51zZcxVdE+DSz3pDPEj7b856+0N2Wa4QwJSNSs/t7qTdTgT1dDLNBeJ8XO9fYNVk2m8ndu5KLA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231101)(2400082)(944501161)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:CY1PR12MB0152; BCL:0; PCL:0; RULEID:; SRVR:CY1PR12MB0152; X-Forefront-PRVS: 0576145E86 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(366004)(39380400002)(346002)(396003)(376002)(199004)(189003)(6306002)(50226002)(68736007)(8666007)(51416003)(6916009)(7696005)(16526019)(1076002)(50466002)(6486002)(53416004)(7736002)(305945005)(53936002)(8656006)(8936002)(8676002)(7416002)(86362001)(4326008)(81156014)(81166006)(52116002)(966005)(2950100002)(478600001)(2351001)(66066001)(16586007)(2906002)(54906003)(5660300001)(106356001)(2361001)(47776003)(48376002)(105586002)(3846002)(59450400001)(6116002)(36756003)(386003)(316002)(39060400002)(26005)(97736004)(186003)(76176011)(25786009)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR12MB0152; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR12MB0152; 23:yhCU1XkpfODE5xv5SHWsXYcEJ8Gi8VGksJg3R0mQe?= =?us-ascii?Q?KfS5WjWmdtQEvI5gTDef2rP9Yp+4P303OuzjF3KBefh/kEiyeP9XnhqBx1tC?= =?us-ascii?Q?M2WWn17TV/iRphuSdmjT7PZ7RSAvcPmWrM5SetRs7rZcljZy8DZ4/5HvF4uI?= =?us-ascii?Q?ffNPJa9VUfgxYhbN54aCclDPWA+M+goYTvs5/tnSQPIGJPNyNpuyGzBkjeZB?= =?us-ascii?Q?O8Kh0JgV0E21Y1ytJdSfGyHnUnFybh/TE6YbbsGwi8SCD7cq83YZ0KHSlawo?= =?us-ascii?Q?iWiQKEUir0Z5Yc/CUFtBdolAXIpnupl4ohkG+bgmlAiUAAT4sYOA7/I6+2Z1?= =?us-ascii?Q?zzhFtaEKXf+MN7OR/gHGvM9a8DdczV6b+RIiFHPqZc30zW56rf0Vk/hF46vP?= =?us-ascii?Q?EL1sV6LmSEM9Nd6VXDRTBWUaElq9Fx+pwfQS8ZusY4KDk1fzv6aje8NoZWVD?= =?us-ascii?Q?fYI76337OuyGgnZ6WVWLkY50KKSAmMAv14FaMOVvXV9EvjIcJvR5GQGkDCXv?= =?us-ascii?Q?c9eMaiMzmirWUls+A0UR86yNMK0lU+sGvns7kFymJp6rUKmPKkKqh4C7UF22?= =?us-ascii?Q?kGH3ttoqDJFrej1DSx98WeAH2Nj8Kxe5ZQFC656dth94iqUHdQIOPqREj7MY?= =?us-ascii?Q?8aCDKpaKWieK6OiGGOV4zeAR+lrtXnFVTmivqCcMBP4sMstnldaeuju5pLFX?= =?us-ascii?Q?vWzpxfPAUpQZ0Xj7szqNkQJqH6eO0xjQzP5mALnZuEXNoqvcFb+TG8uppwkp?= =?us-ascii?Q?LaeZgCem2cHZJ14/s7IiFL/liESPEYJADCXND3/8hkJSgv7WNPy2fcepM/3k?= =?us-ascii?Q?toSZfaMDDZdvOwmpev3Tf/CPnaAwSxIrykYxL4xz+Kamnca08yUrtNpjYG7k?= =?us-ascii?Q?GSA7EkIAFMxwLygqzL3Pb8YbYieHhlOQj1b3ya55dV9biiT3xbunycW7TIO+?= =?us-ascii?Q?nu7jMGn+m2YlLKp/mBTM0g3LvUVvwW3mlXtevng/ryO061lTbvvIQ/zgHSGo?= =?us-ascii?Q?NGc++ttpFae5hfGIG1bupSo4n6VLLm+mCd1bqubsKcQBAJkocaPDEX4Dhfdn?= =?us-ascii?Q?VPoWy9RwqQdjiXbA4jwveQA10eGm1AXmRjcZFFuoVt00T2ZJN0sUVBdnL8d1?= =?us-ascii?Q?PbV52/TstA2XqvNARfFYi02jLw/Rz/K5uyds9HH0a504eHYlvv8GtPOxdqXB?= =?us-ascii?Q?Ur1PUupHU4pqt6/5q9fC9uEC9Q7YImkAz44qO+S45NSxxIUivbDG8uAL8t62?= =?us-ascii?Q?5ot504o+pe8lKs+QnMGPAqoYjTSXJtm39fSpckQlI/s3phPxgd98NtHw1VjU?= =?us-ascii?Q?J9exJd6B8U28jYBDrerOr2eXOUafXy3Rnz11/iu2Sdy?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0152; 6:bD0YugvAcoY/3emxnSYjOoWDnF/3gTdQ9/d9H8THw07lduv7WrbA/kZ3y9gv4AvxbUnd0K0vlgOb/E5/Jsbk6Am3od+NblcBgSHFwQf24/TFA1jqRLou4s0zRa4VQ4EtRqj5+kQqpGpvyhIglFMpPrLcHS75un3s+vmX1pFjyQgqRIWE64tsNLqIzdGfiUpv8+6PXuVKV6rE8t+pGg0Mu0zSkfZfZk9MiQ3XSyMyxKXsSUcJuDw6HgAOnqO5xjnW9cLL25iLPgKis5p01Sr3zJxILumEHdQzs3AxaED327DcfKUrUroUrUagS5CBsyAMME3aK6Z2VDBZZ/ZgvwOHYy7QX7fBn0rVmB7z9p45hWo=; 5:XOqxiqfysmBdhYdKF4jBwvx88+nTcG5ozCVtPangn8e0xBSrk2amrrbfHDfxEGQcma3L94RLLa34oWd9bx+fZ0vc3yPuIPPhVW6MgjnIee6+jytafswt+L1e3PpoTZkxgGgmoIyKcWnQut0FFatqhLJQE+es6fo2jw2xfocYjQQ=; 24:urXoyOYAxieb4tNBF6Bk6X88ikOO8LYiBYEwei+F+LFZ9QsYzZiKMiCtJokooFOz3hXIvppVv6dNZdpkRBqs4xUQGOL+BGsP5HZT6CoYoLg=; 7:dCjIAp/UklDFIQNwwErVzNFVB8YMaujmMliscxVt2s7v+vh5HRHh+3rtlKgFW0EX3jm+Z0kMuKrzGuHj6lA0SMjhzzHsRNSo3CMERU0X0t3BzqtG2oBI6zrsQZg7t9M2vJ7C2q2xCqyi+bD/RLjo14fzWFnyP/o2uykU0xEzU4xDyZjdCYWKG/KA3G8qqay5hVSYjm2N6OeroR2xN0164cxah7xFI8/a2iw0ZfTGyhv4HySDxogmU4v4+casoN3w SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0152; 20:jWkh5jF3OHIEbxyS1B9zJ0Z7Z4rBtZfHpF9+pdkddRFUjVGpuzNXsMjKssa1j8IisTRwdm/6YikG2hClBy6RxuNFOI9SkNblnJTZwYfpVhUWW13chT9t6ZZZgNfesPNRQbZZcJuDGWnjO2zkC3ivMaM94grAesO7EdOqUfKU8gw69ZL2+fh88q/p1XY1kqt1ppyovhVXDbN2z068oj37ZhwUzn7Rw8glbo+Dk4b0nbb0up/2VWWeqDkbFcm4qUo/ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Feb 2018 16:07:30.4004 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ef3bf82e-3377-4afb-7725-08d56e44e482 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0152 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The header file provide the ioctl command and structure to communicate with /dev/sev device. Cc: Paolo Bonzini Cc: kvm@vger.kernel.org Signed-off-by: Brijesh Singh --- linux-headers/linux/psp-sev.h | 142 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 linux-headers/linux/psp-sev.h diff --git a/linux-headers/linux/psp-sev.h b/linux-headers/linux/psp-sev.h new file mode 100644 index 000000000000..33e247471ae0 --- /dev/null +++ b/linux-headers/linux/psp-sev.h @@ -0,0 +1,142 @@ +/* + * Userspace interface for AMD Secure Encrypted Virtualization (SEV) + * platform management commands. + * + * Copyright (C) 2016-2017 Advanced Micro Devices, Inc. + * + * Author: Brijesh Singh + * + * SEV spec 0.14 is available at: + * http://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __PSP_SEV_USER_H__ +#define __PSP_SEV_USER_H__ + +#include + +/** + * SEV platform commands + */ +enum { + SEV_FACTORY_RESET = 0, + SEV_PLATFORM_STATUS, + SEV_PEK_GEN, + SEV_PEK_CSR, + SEV_PDH_GEN, + SEV_PDH_CERT_EXPORT, + SEV_PEK_CERT_IMPORT, + + SEV_MAX, +}; + +/** + * SEV Firmware status code + */ +typedef enum { + SEV_RET_SUCCESS = 0, + SEV_RET_INVALID_PLATFORM_STATE, + SEV_RET_INVALID_GUEST_STATE, + SEV_RET_INAVLID_CONFIG, + SEV_RET_INVALID_LEN, + SEV_RET_ALREADY_OWNED, + SEV_RET_INVALID_CERTIFICATE, + SEV_RET_POLICY_FAILURE, + SEV_RET_INACTIVE, + SEV_RET_INVALID_ADDRESS, + SEV_RET_BAD_SIGNATURE, + SEV_RET_BAD_MEASUREMENT, + SEV_RET_ASID_OWNED, + SEV_RET_INVALID_ASID, + SEV_RET_WBINVD_REQUIRED, + SEV_RET_DFFLUSH_REQUIRED, + SEV_RET_INVALID_GUEST, + SEV_RET_INVALID_COMMAND, + SEV_RET_ACTIVE, + SEV_RET_HWSEV_RET_PLATFORM, + SEV_RET_HWSEV_RET_UNSAFE, + SEV_RET_UNSUPPORTED, + SEV_RET_MAX, +} sev_ret_code; + +/** + * struct sev_user_data_status - PLATFORM_STATUS command parameters + * + * @major: major API version + * @minor: minor API version + * @state: platform state + * @flags: platform config flags + * @build: firmware build id for API version + * @guest_count: number of active guests + */ +struct sev_user_data_status { + __u8 api_major; /* Out */ + __u8 api_minor; /* Out */ + __u8 state; /* Out */ + __u32 flags; /* Out */ + __u8 build; /* Out */ + __u32 guest_count; /* Out */ +} __attribute__((packed)); + +/** + * struct sev_user_data_pek_csr - PEK_CSR command parameters + * + * @address: PEK certificate chain + * @length: length of certificate + */ +struct sev_user_data_pek_csr { + __u64 address; /* In */ + __u32 length; /* In/Out */ +} __attribute__((packed)); + +/** + * struct sev_user_data_cert_import - PEK_CERT_IMPORT command parameters + * + * @pek_address: PEK certificate chain + * @pek_len: length of PEK certificate + * @oca_address: OCA certificate chain + * @oca_len: length of OCA certificate + */ +struct sev_user_data_pek_cert_import { + __u64 pek_cert_address; /* In */ + __u32 pek_cert_len; /* In */ + __u64 oca_cert_address; /* In */ + __u32 oca_cert_len; /* In */ +} __attribute__((packed)); + +/** + * struct sev_user_data_pdh_cert_export - PDH_CERT_EXPORT command parameters + * + * @pdh_address: PDH certificate address + * @pdh_len: length of PDH certificate + * @cert_chain_address: PDH certificate chain + * @cert_chain_len: length of PDH certificate chain + */ +struct sev_user_data_pdh_cert_export { + __u64 pdh_cert_address; /* In */ + __u32 pdh_cert_len; /* In/Out */ + __u64 cert_chain_address; /* In */ + __u32 cert_chain_len; /* In/Out */ +} __attribute__((packed)); + +/** + * struct sev_issue_cmd - SEV ioctl parameters + * + * @cmd: SEV commands to execute + * @opaque: pointer to the command structure + * @error: SEV FW return code on failure + */ +struct sev_issue_cmd { + __u32 cmd; /* In */ + __u64 data; /* In */ + __u32 error; /* Out */ +} __attribute__((packed)); + +#define SEV_IOC_TYPE 'S' +#define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd) + +#endif /* __PSP_USER_SEV_H */