From patchwork Thu Mar 2 15:15:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 9600975 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 E37B260414 for ; Thu, 2 Mar 2017 16:52:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D4AD62858D for ; Thu, 2 Mar 2017 16:52:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C6E49285A9; Thu, 2 Mar 2017 16:52:49 +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=unavailable 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 3E4E32858D for ; Thu, 2 Mar 2017 16:52:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753611AbdCBQvg (ORCPT ); Thu, 2 Mar 2017 11:51:36 -0500 Received: from mail-bn3nam01on0080.outbound.protection.outlook.com ([104.47.33.80]:10784 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751256AbdCBQuj (ORCPT ); Thu, 2 Mar 2017 11:50:39 -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=GLGmaJt6YIITLUF5hJg+LL+HESD3+eiaJhPpLGg4K+c=; b=nmQkseMYo/PBFqwxuaVcMSsIcFsrvmETxBZ2FcWNfyJXTmvHUNOjmsh9jcG+p5urH1g0ijc7EUnxuRtU03wKgBOGuXd8vVwAwObuMYoNRKdt4FQoI2fcrLoEbnnV9szFh+PEC2RmCmSyyZIWyUvIWqZ4dJ0PcTXCUceiY3PT2GA= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=amd.com; Received: from [127.0.1.1] (165.204.77.1) by BN6PR12MB1602.namprd12.prod.outlook.com (10.172.20.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Thu, 2 Mar 2017 15:15:05 +0000 Subject: [RFC PATCH v2 13/32] KVM: SVM: Enable SEV by setting the SEV_ENABLE CPU feature From: Brijesh Singh To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Date: Thu, 2 Mar 2017 10:15:01 -0500 Message-ID: <148846770159.2349.16863375000963463500.stgit@brijesh-build-machine> In-Reply-To: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> References: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR2201CA0007.namprd22.prod.outlook.com (10.171.208.145) To BN6PR12MB1602.namprd12.prod.outlook.com (10.172.20.151) X-MS-Office365-Filtering-Correlation-Id: b2e6e1e1-a915-4e6c-9096-08d4617eeadf X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1602; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1602; 3:nvl2KV9ItN3xSH7XhO4MNJbfUZkx+Tsc5aNT5YAsLz1l3/ua182yZCLfWaPjKSuFt/6hYnselw61OlLdGrAEOrmm8B/xlskhQtZc13CtBV2cl5hZKb/2MXK7GKHPK5FzcXBGgtlzsilFO1r+ENNyHhnLoWjxVCRG2Qj6O0WjvcspVT1M+O/ybf7RI1rAikHS29MISpOkFREx4kM0/en5zSQhruhcps8r+ZUeNB+HYAkrg5eoAUXK7jZp+tWMEULndAx9b4ygDqo/Dz8yVFU8ywwKlre3m8luL3lBKJVV5cM=; 25:TBde+LeL5OvbbPwGfVs0MMirp1T3wuoJeGTymGhvngLeE5U17iJle07sPHZx4FylIBD4jYT0/Os0hayf21fQ9AvdBDc3KK7JL4WNbDJ+SLbWPTAlTeOll7IQrLuJgRTIJx4UeWe3YGOuZ5OR8IKoSCJbNXKBihtKw5IDAmPEavVa321fnMcHPniK73TRbZqs8qAKS2B8uK56TWiIeTmwfSo/A/8ri+9xpir3OMDrbSFEZN5i8hdkDjBQQofqkA3cfRwRD/indcV745RLqDyyUlscsdtzd2BLZ5yCloFHhesgwr0jD844ffCoE01QDQJanxy3CyRGw2SMwZSp4L+j8NBq7DjLSJp8YpU+cvDd4KmI4/dS8mOJSdfnmImeHV5imPYZXpqxqi2wGpqT6DrkAvl8YE9pxzX+nNLFnXiGuhX5fhN3Zui+U+oNjRbnNa6IxpwhU5y12cVxLBcFB+lreA== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1602; 31:AiuugUEeGTslhl0Hcs+9SJ1pc5LAsx6naJd8YXi84fks/dKyA4QHXKovIKi1bUuK6NiG3BLcmr6N3WeK35NfTJa81yq6Tm2uO9gYpruju6OTe1axHqeWWsBMyeZvvWB0SgrQqp1jz3KaqbhNNlB2bfyg8WLdacKBacBOJApo53kkWeay8SIBd8pbMaElWUKJCmEW3vmBqiOooEzy0E4mwBYwcJ0Vf6qFskQ0elkJyZM=; 20:CmBan2GJNwP5Ac9oDafADYY0jiUz+n95dpD8hs1MEkIQyYtr3scbfhtnkZLBEdPLjFTXkrk+OJkF5Yribm2JQOHu6bzhHiojBnDKzz0SsqJcNnjfJSoKH/1G5eK/cup6GdgIibdPe43hi4c9aZsv7M+Qcv5DTJvw6jw5fCkcFVgCh6pzW5IkKd0ButBALB+XfobNuxkHZLqFEyjriTfs4i8oNzuzBGsq1/JqUXhWsOvekAU+Q6o4Wo03ivz0o7MRPSsJCqFs3P/1D3SXMKioh9yNYE411I9Gzg+ZH90rb/ALvAp0iN1sfpm45yY0qzet2/tfzgcc6sdkSk8eAu2n14uGH2mmhLTnEhlnwiJIcIpeyDR6VDP6jVaEXn5MMwRoQjNi8+Nj0bljfr+df/oYedgTv6DinaEaFmn45Ek8rYf4RUnHpnzgeiX3ciR031qMs8Vu2SIZeyfH4AFKClXqrS3uWKdzeIf5lr0XSGzRQQ/cRkGCpzZZ2GZODg8ENpx9 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123564025)(20161123560025)(20161123555025)(20161123558025)(6072148); SRVR:BN6PR12MB1602; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1602; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1602; 4:KYJfu7Pz0NXTJ1wANnK0rCKHLtsJaVNzB/FL26Xh5W5RiR2/jFR6ouVEMw04YAm6icWQAR7vJebBjjE42f4/PUuqmdRY/oj688DMqndvL1Jync65JE+SFMGzaWVOXmuobVC7R+NZMdt5u+jar19AvWFMZgwt5m2fK8JpbGqnyx8sLxRj4H6okPdtED/FrvBTAy9tZB048GoybgWr7Zxw6Sl5pGTTVitrqCq0fantY5onb0a4vpWusIqFKi9eAiqknm6C7pqZO337WxfnBgcjR7d23hzziCOccxsTRI4Wg4uiUFSfCc7eXbHVsQzlfprRv15UgapJxTajS4kG3CYbg8rJSQhz9g2KLX1UdoWDmHHaQ1VCwukxeP4kKgNJ6uIn/oVAAV+rKBoLZJNjMpGC7iv2guwn2QcJrtYb+LIc7QAEyCeYvonm4M7Absv1gW5d175b5j2nq40xpiRe0Ynj+NvWrQdDHWbFUW4V4RQhLoLqtfhJ4S9FQ4x7BLezVhrQjiNICkfqCRz6MB56+Ibhoy/wvV6pQB71BXDUep7JzEYcRALOm5bxh0w/7uh1DEBM67PSDS051+inzEGsbcaLC99xjGs7umBLKom813TtMkc9APsXvz/orkz6cjEvv1i6B7F02n2SUCQDhi+NIwS0xz1HMnI4AdkUDKkNsavy0vI= X-Forefront-PRVS: 023495660C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6009001)(6049001)(7916002)(39850400002)(39450400003)(39860400002)(39840400002)(39410400002)(25786008)(77096006)(23676002)(50466002)(47776003)(6486002)(230700001)(66066001)(5660300001)(9686003)(3846002)(50986999)(4001350100001)(92566002)(83506001)(7416002)(7366002)(7736002)(7406005)(305945005)(103116003)(42186005)(1191002)(2906002)(90366009)(54356999)(33716001)(6116002)(53936002)(33646002)(2950100002)(8676002)(81166006)(6666003)(575784001)(38730400002)(2201001)(86362001)(189998001)(76176999)(921003)(2101003)(84006005)(1121003)(83996005)(217873001)(309714004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1602; H:[127.0.1.1]; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxNjAyOzIzOmY4NFZkbU9NUGcvRUlzbkVNZk1UcHVISFQy?= =?utf-8?B?NFRSV2xnb09IR0k0cFdtOXhBWUtUalI4V296eVpJeFJaT0R0OHd1VkVBR0pS?= =?utf-8?B?bVlJU3RMM1cvMkI5enE0aitNeGFuSWVzVEszRHAwU0lDc2xWM0h0VXBDNkhS?= =?utf-8?B?S254a1I2cXM3M0tIb3B5V25PWWJkSFhXbkNmRm1Ua2N2UnU2RHNOV3NTdWda?= =?utf-8?B?alVVTHJwSXVnb3RQQSt5dGZKTDRUOWVOL2c2bEUrQWFhdHkzc045SmZQdll3?= =?utf-8?B?S00yUmgvYXlSclUyMU1QVVBXZWRGanpFd3FMdjZOeG5Ed3dNSzlYdUQ3SXBo?= =?utf-8?B?NTNRRXlLRXVzR1ErZ1VpdDA0MHBEU2x1QUlQdHgvaWdwdEcwV2JrYUtGdkZN?= =?utf-8?B?ZUNjNkJRUExsSkhzczdHeWFVaFZTN2k4U2NyRzJLV0ZBTHlUUDQzQWd1OUpC?= =?utf-8?B?MDNFeWdsTmdrM3BaQzlqNDlxK0ZSUVN5cnFSUHRvZ21rcmZQOTZ3YWRtYnMv?= =?utf-8?B?b20xS0FmczdZZE9IcmlBQkEwcndUUUUvMFdMQWdYcnEyWk4vYk1ITFJHbUsv?= =?utf-8?B?eWhsdlJLR2dTV0cvekxHTFpCOHhrRlVvdnJyblpyZjNtL1VHSGh6bERKdTFt?= =?utf-8?B?ZzFMeEdvQ2M3NzVRbkxWZTRjN2owNXdCbDh2dmFOMHJHMUhhN29rQ2lhNGtx?= =?utf-8?B?N3F6cmFZTEwxNWhLYVJ3RGNyNlYvSm9sakw4cmxCODFxekV6YXIzY1U0MjUy?= =?utf-8?B?WVdHcld1akU3eUx4TjROWkc5emZ2dmJJMmhJWGRBakZNNHhKZW43MS9NOWtJ?= =?utf-8?B?ei8xTVVKN2lHMXk0WGZMcE85Zkp4aHllNC9CN1c3UENyRzRIRlFZdm14VW9V?= =?utf-8?B?Uit4dVdPZUZIVVhIUlRQRHMybUNYaXVvSnVpYlFtbGxwSDhSMHRZRXIrME9n?= =?utf-8?B?ZzRtM3V6eWNmT3JZRkZScU1VOWxtS3RrSy9xZWlJZnNRcVllZHRtYmN1cTJK?= =?utf-8?B?U096R2JOR0VIYmJydXlRWnVHZ2VDU2MzUmduYTQ3TkN2eGJHUFdlT09BdlZy?= =?utf-8?B?OFdIQ3I5dWdSWTE4NHA5WnA1QTF3dWdkSXpmSks1RHZxSWVwNmxYaTFXdWxB?= =?utf-8?B?a1k2TjczZjZDMzhCMnROTzJyNlhMTXZhQmx2dlg2Z0FuVVBNTzNna0JqOFlw?= =?utf-8?B?SHNjUklLVUczS3JlTkxvY2liNnpjclZxaDZDbWI5K25aYWovSGhWTUR3SXAz?= =?utf-8?B?V0p5MmE5a21XazQ4R0VmN2xpeWkyUUdSRGNXRnVURWxBT2RYL25hazdGZFlW?= =?utf-8?B?THVvbjN2Ui8zM3dMQ2Y4WW1jcGM2R255YUROUkh6QlorS2pOL2JuVXVlWmFa?= =?utf-8?B?L2R2ZmcwT2VvQmMrL2ZmRUkyRmNLaGhRWlFUd3ArT2JOeTRYU0dabXdpTno1?= =?utf-8?B?bGdWVzlhcCtPMUNNcWJPZmFDQ2tWU1FabHQvUTdIVHRUdVpiL0RvS3VkQ0pN?= =?utf-8?B?dHlqM3VSQ3U5aGdtU2lwUi9HZTBCWWJzSDl4ZGFOYnM4TkZGS1BscDBoZ2Ns?= =?utf-8?B?Rkc5V3lzZUtCQUk2emwvNjdhbS9WTlNWYllndlJLSUsyZ3QxVGMrdEdXN09a?= =?utf-8?B?anpwYXg2c2hpUENXanBDQUtCRkdMakNacW1mQ3ZCOHRpYWVMR21OcFR0NjZr?= =?utf-8?B?YUc4Ymw3WnJmVW5nL3FIQ1B5YUhxODBFRkQ5ZFhrTkZxYkRYSjJQekRlS0U5?= =?utf-8?B?bmFJb0RYWHUzZkZDMnNzei96TzRYbm1lK1VycE04OElvdXdUSmJyZjZKNmwv?= =?utf-8?B?c3NldHI5Q0llaWIzMzkvaDIyRk9MNTZwZzZrZzZoS1lvR2w4NmUwaWVsMkZq?= =?utf-8?B?REhSWHFqQzlwTFkxSjBYR09uV3p0eTVkWFV1K0pDOWs3ZVhZZnpMMkxpaitq?= =?utf-8?Q?a5Y4jnCZ3veSIHd3mNm4aP/WogWCyM=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1602; 6:K7ICWP0NIjcbksgOq8X1YYPPkNxPjHGPHlggvh9gXIJulTUoW6lzZrs/b3zVDdKV58olVaj4e4kfkBLIcLmX325b7G/0miPKJt8OTYraRI6/H4wQ117k/chryy+z0dt8ym047ZKCOBj4F0Rrt3T+Iwc8YEGoEL41mBNLs61H+oqYgOJ5yWeAbDnAdGwzbn0KBly70KNPuMaJs6QUw4J+Tc+XFd0kWf/p9UkedR8ZY0WLB3vIKnRgKxXVs6r3Lj5IpQLvckdBA3FZDT3zx2E9uzIG8uYWgdprnoyqDkRNtvuZ4J5+OSKyeGIp15pyyki6JYyuEX19TxR/YN7Z9o4iqEWtJqG5hKgHJEExeeziFZJBJUBA/GnKQhCC3qbwnYcudKWbi/CAsaRc9l6yPVRtqUpsdnz/Ku51NI7hwICBPuA=; 5:FzBkLuqaw3LZ7xhwi05iDCLpR1ezC5wo1TzMMxB3uJ8EV7xnTjoMxwnHbf/3+SJWjFpvQdYPjqfwz0rWKy2JwGYvGwptmoYyaq/ebz6GhSP+bzWh6jV5YYpuZ39CwMOs859aPHXnizQc/M9sUxCLXw==; 24:KOjE6HkNf+bGzMTA5iESC1BbU0vftIeirBTxil4zL0RtDbUH8EmhIL2IFu0tXlSoaBShj35rdSIfeqZ0I9IRGWWJihRticH/4M44fw0GNMM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1602; 7:fuUxCvZwp2CGrwdK7y6uPmeifbmmiIcxRSXcloVmxLKY4ijp5SdWApFEOe/CiEYE2TJJr47tDDeHwwSZZ2EOASOYyj2ULPJCIThkSMJdCB5rcILy7locNlTYQPSU4EdHA8KLlSRA7lAhFAV7kMeah7HgcRPrSnCxisNdCLaUYu2hgBjOo40F77zaPtN0SHTjr39KadUVdNv4OOn/YAZQUYLlscOaIA0F78lrRYCtrAWa2ZIr5jTHsIQKYB883XkQqKHYH/1m9n5g3o+x09QejgDEZTQUc41DypwW3m1XzXVPYOOGJPfKrIZmG6pB6Pw1hsQJo5rKJ7jYBF2MkRbvew==; 20:UX2bMVQqGRt9/z0CSAOC8jdY2YOEZk9LFuNc2OcJeuqACC9Y4Zgx0QglpWcYDs9Ty8RcRBKQK+dA2NONlIiJjy3QwIhdkBNhaM+nO91fRdHYnA7jzX2mw0OJXre4gSp2Bwsnz30eOPGp/hF4rEujcU7HCOn2auz3NgBPcDJgjTQCcorrV3PHVb5d/Su7zkhOabPK52w/wpuQNinJ7cixL9JWEpxIIVWq2d6AMGJcXhw3cpFwNUUiTuam57Li3UH6 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2017 15:15:05.1775 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1602 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Tom Lendacky Modify the SVM cpuid update function to indicate if Secure Encrypted Virtualization (SEV) is active in the guest by setting the SEV KVM CPU features bit. SEV is active if Secure Memory Encryption is enabled in the host and the SEV_ENABLE bit of the VMCB is set. Signed-off-by: Tom Lendacky --- arch/x86/kvm/cpuid.c | 4 +++- arch/x86/kvm/svm.c | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 1639de8..e0c40a8 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -601,7 +601,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, entry->edx = 0; break; case 0x80000000: - entry->eax = min(entry->eax, 0x8000001a); + entry->eax = min(entry->eax, 0x8000001f); break; case 0x80000001: entry->edx &= kvm_cpuid_8000_0001_edx_x86_features; @@ -634,6 +634,8 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, break; case 0x8000001d: break; + case 0x8000001f: + break; /*Add support for Centaur's CPUID instruction*/ case 0xC0000000: /*Just support up to 0xC0000004 now*/ diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 75b0645..36d61ff 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -46,6 +46,7 @@ #include #include +#include #include "trace.h" #define __ex(x) __kvm_handle_fault_on_reboot(x) @@ -5005,10 +5006,27 @@ static void svm_cpuid_update(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); struct kvm_cpuid_entry2 *entry; + struct vmcb_control_area *ca = &svm->vmcb->control; + struct kvm_cpuid_entry2 *features, *sev_info; /* Update nrips enabled cache */ svm->nrips_enabled = !!guest_cpuid_has_nrips(&svm->vcpu); + /* Check for Secure Encrypted Virtualization support */ + features = kvm_find_cpuid_entry(vcpu, KVM_CPUID_FEATURES, 0); + if (!features) + return; + + sev_info = kvm_find_cpuid_entry(vcpu, 0x8000001f, 0); + if (!sev_info) + return; + + if (ca->nested_ctl & SVM_NESTED_CTL_SEV_ENABLE) { + features->eax |= (1 << KVM_FEATURE_SEV); + cpuid(0x8000001f, &sev_info->eax, &sev_info->ebx, + &sev_info->ecx, &sev_info->edx); + } + if (!kvm_vcpu_apicv_active(vcpu)) return;