From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754356AbdKFSPb (ORCPT ); Mon, 6 Nov 2017 13:15:31 -0500 Received: from mail-by2nam03on0078.outbound.protection.outlook.com ([104.47.42.78]:49424 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932700AbdKFSMg (ORCPT ); Mon, 6 Nov 2017 13:12:36 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: kvm@vger.kernel.org, linux-kernel@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 Subject: [Part2 PATCH v8 23/38] KVM: SVM: Add sev module_param Date: Mon, 6 Nov 2017 12:11:15 -0600 Message-Id: <20171106181130.68491-24-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171106181130.68491-1-brijesh.singh@amd.com> References: <20171106181130.68491-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: BN6PR10CA0031.namprd10.prod.outlook.com (10.175.102.145) To SN1PR12MB0159.namprd12.prod.outlook.com (10.162.3.146) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e82346a5-59f2-4c3a-596d-08d52541eeb6 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603199);SRVR:SN1PR12MB0159; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;3:dV7psCxmtXzb/FtsCbcOUnN/smrtLZuGoUl+fbiqBjSLCxo4WMJiOlGyDL3yumKdDrZXNRT0bkU7gsE/geR2qN8WMep42266jqCrdQ/MSbpNdl2f3rC+D4sYIInPO+XukWM5DhDNpjhm00ztnTXuU6XrJfYwLUGy0iRZMqxlOqDR4rGuw7j+jVaH1FphMbIcUTDfoif7qpb4FwPly4elCs/Hk4Hpl+dLWYeZmq04/BT0XyC+BXI7MeqgBUfE7hL5;25:1L6bCiQfVMnE80/eEK2Qwm8FpOflTOYUpO3+BZ9vhwuhYepLk9na+zTGvAyAlWi7iKzfIy5B0WYRN41IOFcZkgvwyadMfxQ7LTpXPHE78XVfQb3ly2Yjn1wcCS4BRd3+RNB+Z0a+TdtDkyH9Hn+mPpiRze+BliF0vPYkFlvebaMsnpHa9H59CcoeAyaWET+EXpjydr+CuCv6+SBUEGHMFrsss8B+O2tCjo2Kq3SQCPHgtNA+GOYFC9DDznUhvrqjyddQN6gaTb65t0vjBfWjw5eoOcAKSoompDb5h8S/GFUDmUYeXvCAwA0B8WagAURQZlryWHNH73se90BvWettzQ==;31:l4GNHBxf8r5GtMb6CBIfmhrgF/zMvuV2+9D7abFo0F/o781rZrCaVfd6kzi+PBNr+bVicyQ7+2BrQ5RJcl15ADb9Zh8OM2egvNShT8PGAXx5UkiWNdOOeP7pGc8JZhPugTr6Pj5oHPT79QEEdBdZbQy5WuEB7mSb+2ZU0GppvDXCZtrvfAD3FlpXwt5p2l6Pm272PncOUJ5JysnTOSEYv/N/svJk+g83yyGYNm6G/Cc= X-MS-TrafficTypeDiagnostic: SN1PR12MB0159: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;20:4jmb5REqwQmRgi9Vgw9ozh1cpLCd0fxw7hsEFxLJCRKRR83gbgiWUV9AmswR9S16WBEnY+hQTMObyGBmuVMGH1xE8IMoSW08DZNO0alr54jyIGZVG60JbVCrGmEVNKApEZ2/Y690nFUWNTkSFtg/54BitRQGBhqRddajpmaHqC0rguz27xfKvUXuYYjgxu43o6Fd4C6F5pFcWKta3M2cXf36iM2CvBfVr+mFBkraic29QWqSCABACRFsfXy6tATJ1Mpff9/mrNqQtmR4K5f9cqrwUlOcfNe3WrqhBW135pYleQFGKWHmw/QTE0rwBDqWj4q6agv3T2JvJooUtWM9n5fe2QHvfu5q8726kZUEm+tdVTnw+QogPW4yGORrFj2ouLZPBp02vx2JKOMQcXpSJxo3kAl1cXhL8YGuPpQJnzAHojwCxbc1eZVdX6y4axKwpm0PNXncY3xRAtMk/ab+fPWzum3Rt/VBd8ClONiTFLR0MUFv1Cl+rwd6enddeNal;4:yZcl0yGOzQnEcdCV/pLZDvHQO8Ms3h5wTbN3MILWzA8CX+5nRAVi1ApnfP3LA8W4q06YCxFcYDaOFXZ0/Jwwt8VEzQOXzrY/5LX8vDzWHTCuEEwmj1+R7j9Mc9nzzYFQQVxyPQHwAiLxl410kj2kDtnH1+XwJLYyAphZjagT3t5ffSOuMk8WrphdKJPv6I1Y4wumo2KRTc68N81sdv/tiX8Xf/eUcHmV+HqcLSi/W3PXG5KZMFnBayhp/RsXw1O+tQaQUaDcySOUTWW+IB8cMrt7KSgedwxpXlBTbVfdNWjG5rrRlNH4AP8PcSvGlDPObrZ4XMeAyz2ded7iKhe+5Q== 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)(3231021)(100000703101)(100105400095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0159;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0159; X-Forefront-PRVS: 048396AFA0 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(39860400002)(189002)(199003)(68736007)(97736004)(4326008)(316002)(16526018)(54906003)(7736002)(8936002)(2906002)(81166006)(81156014)(25786009)(53936002)(8676002)(2870700001)(1076002)(6116002)(23676003)(50226002)(189998001)(305945005)(86362001)(3846002)(50466002)(33646002)(66066001)(36756003)(53416004)(47776003)(5660300001)(7416002)(76176999)(478600001)(6486002)(105586002)(50986999)(2950100002)(101416001)(106356001)(6666003);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0159;H:wsp141597wss.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU5OzIzOnd4N1VUdUxzQnhUYVU1U0FLcTBpYXJ6cDJS?= =?utf-8?B?TXRpViszWWJxQnlwZW9kMnhjNWNGaHh5T25qd21veTM3aDlYQStCNUNrY3lB?= =?utf-8?B?WjlIVjM4dmRzYkwydkVTWjlmMW5Md0toeEhpS3VCS1NnWlFVNkwwdlN4UW1o?= =?utf-8?B?RW9QRWpuazJ3Nmlhckc4T09ETi9Fd0NJN2FsNTg4WkVJWG1kcTFzc2xDQUhU?= =?utf-8?B?SEx4SkNKNzFIUmNVdUhleloyMHJlUnFmdk9jUWhVeE9qbjlyNC96ZE1lMTdj?= =?utf-8?B?TmZCMmVsUXl5d3YrWkhzU3RzclZEVVlIK3BKVkJPdlRNQkd0OGlWdGxRbHYy?= =?utf-8?B?SlZjVU01ejJZS3o5UjRZR3l2bXp3ZzB0N0cxUWxiakhHazVVOWJPNDdIZTFn?= =?utf-8?B?b3p0bmJZM2x1UTgxRmFSRG1YM0Mxd0JhOC9YWWQwT05odkhLT0pBVWJBN2lK?= =?utf-8?B?dmJzWEtRLzdzellJaXgzOVh6N2wyS2ozWG1KbzlDejhzRzcxWlhyNS9kQk9R?= =?utf-8?B?RlN0L2c0WEg4MWpjbHRzN3NXbThaaWQ4MGxVYXIyZE44aFAwejlEOHU4TjNN?= =?utf-8?B?b0hzbXN4dUk2R0NVM24rSUxMSERaMml2NEhhN0dxanZoLzZNUTFtVHZlbDVQ?= =?utf-8?B?bDk1ZiszcVFxelJQQ0NaZHpkSWt1K3MwajdLSk1RaDM0QThNc1hsdkVpaysv?= =?utf-8?B?R08zZXYzTm4waWR3dC9ENm5DMFZRaUlpRzBJaFNXalhCZDNndG9CU0c4Yi96?= =?utf-8?B?cFZkN3ZXRWNEbWxmNHJJVklkMG9BNzFpc3NlNk9EcURKRHUvZVMweFQ4ZXRs?= =?utf-8?B?eEloNWljYWhkUHVwaEg2d0liZUhFdzNtWDdCeGkyekZWV1NVVE5RMTZwbUVp?= =?utf-8?B?dlY3RGJJTmJGMDdOK2tFMFZkU3pGVW9OTjdJaVVRMU5yZTdQVXg2aDFQVEZZ?= =?utf-8?B?ZHNNYm1qVFA1YmJCV1VEVTJDZXF4LzV6WFBWeWR4TmhFOFAxd3E4TFBPN1NI?= =?utf-8?B?WVJzNGo1NEszUHJIdE9EK0tFeDZPMHFiU0U0ZFc2LzNYYzhEWDVXbjRabC9v?= =?utf-8?B?WUo4aG9saW1QY0Fnb0VTRDJtcFdPTU5Ta2NHWXRsdnhyMlN0RDZqY3dLbTUr?= =?utf-8?B?S2FJek0wYWVwUmJhenFjNUh5MzFJdDdBSlRyc2RpU1BKem5tZGxERzZTbTVC?= =?utf-8?B?K1NNME0zemVBelpRVm9hZWFaa2d4Z0JDVFZDMjVtZVZuVWxsRVFneWFLcTNV?= =?utf-8?B?WnE5akpMNEM0M3JISitBU0U3NzNwdWVuTFQzMnlkK08rK0dHajB5Qm41ZlJn?= =?utf-8?B?Q0V6NnkzSXJlYjNzNkFzcVh5QjljMktsMG14ZjAyT3h0SCtiS1gydHI2cHBJ?= =?utf-8?B?K3hxRSsyMU5WRHJNcTRzanFFV3VPT3B0Ri9iWUgvdDZHMlhJWTE2eE5WdjBX?= =?utf-8?Q?rUCpMQzmNxrQBOMLmkNj5BXHr1a?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;6:PFejbU/g6X5qlXJm3O/aQ5AYEy75fRFxD6ndAXylizNyVP7CS+2Ux4mx+CrYISkSab1FSrMN+NCoES36OMa5Su+633osPF0SEWUS5wUX9HQ5eBIiN9WG5HUZvyHV9PSoQiscnqQVLl1ErQmvpw624HlvyBHl4Do44nW6MCc7tDV4cpSpzKMcOF4HZgHjEiGEs/b9N6YsXF48JIoWGYNfEpwSJdXgysf3+NCBL+PlmHVYjIEEXIbT/D+akMrjg7JVE8TJhzKFEgDoJgr+4JNv+3oDOhelllCqxLXPNewIk2hdXISYPskQVID2q/N05MslZkKhuXpMiEQ/O5FHeu+QQNrVBIJoI3f7ySy2MkH8sjw=;5:aRefJn1MBfGJpIMarCfe6VoGYkDZkgaLi1/KtYagvT2oh8Ty7VUswWBfqugOqfGlwG/VhGGaFBlvlN0rVZoMi9UWI4lOMPT3ORKJFxhlz72qxDDFHrmJPQoY5PYADbXc8Gh5blej8eTheB1VoIPAKebB+vo/WBtgddHzw0EFFdA=;24:FExyOZIRV7hVgO9IrnzUdYP5IBnZWiVakv2kjc93T6YmEm5XhDnj8EJ5wk21GrEm9wXD0EshnQrjtaYSI2ioiwBIWlwfq27Elt5gLunIvr0=;7:JK1afkRF7OtChp4E2ZCumDpbIVVubMo96TibLmsEgYeixPb7SgZYIns8lPBDcMmEIll6g6WWc3UqPkOpFOa2eFBqRNcIu9TCj0L4H4+NiQMltsFUQAzDG4ZhbotRLZFEAV06aPNIDOO6yagO1qf9jDSZScsfIBf0ziTs4+92tjsbu7J9MwWwy5WfM0Cc/+Vpp+KCe/aWeOKrMKlU6WQD7hRUFz5lYjZfwVFiZEPsOGaFbIZhi/d95SG08cTtBmtH SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;20:PPEialgayh+oiBIRsucfVIp3UxdU+XG8afYLFBK89jfZ9n0rhzL2drJcS214Ip1aSiH5onV9pVKeyzEehNSMPNg70QHeRsig8s5xQrk0sWTbNhyrbJzE5SmPjG9McDvQ5/fv6c/MlXT/zPBA7e5vkvCd+A+wYvonkYnpq9fYBZ4DcOuT86gyGBD7TYXAK5zN/hY6yhNfhce0od/xc0y4L6sYIrLSkraGAXJ1f37gQKqMagLzpvfUq1Yk7zzJUacZ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2017 18:12:24.0510 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e82346a5-59f2-4c3a-596d-08d52541eeb6 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0159 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The module parameter can be used to control the SEV feature support. 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 Reviewed-by: Borislav Petkov --- arch/x86/kvm/svm.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 7e46aea59615..59abb9fe2f13 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -284,6 +284,10 @@ module_param(vls, int, 0444); static int vgif = true; module_param(vgif, int, 0444); +/* enable/disable SEV support */ +static int sev = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); +module_param(sev, int, 0444); + static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0); static void svm_flush_tlb(struct kvm_vcpu *vcpu); static void svm_complete_interrupts(struct vcpu_svm *svm); @@ -1049,6 +1053,15 @@ static int avic_ga_log_notifier(u32 ga_tag) return 0; } +/* + * Get the maximum number of encrypted guests: + * Fn8001_001F[ECX][31:0]: Number of supported guests. + */ +static __init void sev_hardware_setup(void) +{ + max_sev_asid = cpuid_ecx(0x8000001F); +} + static __init int svm_hardware_setup(void) { int cpu; @@ -1084,6 +1097,16 @@ static __init int svm_hardware_setup(void) kvm_enable_efer_bits(EFER_SVME | EFER_LMSLE); } + if (sev) { + if (boot_cpu_has(X86_FEATURE_SEV) && + IS_ENABLED(CONFIG_KVM_AMD_SEV)) { + sev_hardware_setup(); + pr_info("SEV supported\n"); + } else { + sev = false; + } + } + for_each_possible_cpu(cpu) { r = svm_cpu_init(cpu); if (r) -- 2.9.5