From patchwork Tue Sep 19 20:46:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 9960295 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 530136038F for ; Tue, 19 Sep 2017 20:56:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4826628EE2 for ; Tue, 19 Sep 2017 20:56:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3D1BC28EE9; Tue, 19 Sep 2017 20:56:24 +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 C34C628EE2 for ; Tue, 19 Sep 2017 20:56:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751782AbdISU4J (ORCPT ); Tue, 19 Sep 2017 16:56:09 -0400 Received: from mail-by2nam01on0056.outbound.protection.outlook.com ([104.47.34.56]:55572 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751781AbdISUrE (ORCPT ); Tue, 19 Sep 2017 16:47:04 -0400 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=sTeGfL5BJ6tZrJyVd9+wAQ+uW4XTAkbqiy3tVlu6GaA=; b=cTZrpbDDt659nGh2C1jC8+PWMUnjBNM0c85jdHVPBu46W7T5dz08Kcpf9wGvmVHxUBgn/aywgekuyNa9LZH9UToqeOy/dLNbMMFDEobyMXLSws++bMHVHN8TDRdpnSCR51Af8CHT4roigqs1PJ7BcKMOqit+6ou6R9WjWZr4uQg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from ubuntu-010236106000.amd.com (165.204.78.1) by SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.11; Tue, 19 Sep 2017 20:46:55 +0000 From: Brijesh Singh To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: 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 v4 09/29] KVM: SVM: Reserve ASID range for SEV guest Date: Tue, 19 Sep 2017 15:46:07 -0500 Message-Id: <20170919204627.3875-10-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170919204627.3875-1-brijesh.singh@amd.com> References: <20170919204627.3875-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: CY4PR04CA0071.namprd04.prod.outlook.com (10.171.243.164) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5c69405-0fce-4564-c0f6-08d4ff9f913a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 3:hwuWQlls2/zdrfhivcMv97gkOqVUbA2VnO3lN4y4B8JhP3wvQ5IjruxBXTVIMfvXHcTQ/CzGo6sbvXzwv5Axq9py5yHQE3NUEy+GO6Oz6xaDcnWmrl3hqk6MvybVbF0+G40FwNMGYHwrxP4oWralFfSUCEPYTvlujUEZ1J9YdK0+88rmtNePJxuwpSJ3IqXW8N8C5gabIiDAA59aDMUSmJC2nu1WWCMaGH0HVZAIot6Fa+fMK/jrRcdN9BhA4Kzc; 25:yd6P7OpVc/GHN62OUXC4aDzv8fvkvZ/V4JWcUXqi1WaddlvA1G+tuyb2KIH2sdPXLOwgGKBE27MmMrlBkiKOHZgVOHXtcbKoJuSp/MZgoeOwRM2rZtPP7im4/P409qaRDhVAX3dkjy9xacrSNuRu5fMZDdLnnNPrqnWzLcFcSY+wmnwek2gURE7srC3MoRfVpcLUnhiDTtM7aP0fgPzL4E5TrAL1BuNl5Dn9bHjqyl1E8TZYNXxIni4rZbJQ1IIPVy6tdakxFMxcvDqCg9tmsDaI/47GDTQhWSMOAYpGpSC+4vFfIOf4iTXSSj0HXgD6+/vWcwnIZjaQsbgv4UTy5w==; 31:/7mZMA0b2oTPHMDx+Z8exaPrrZKUl8y36Ltuhm9cAnO5oXfSs2jAaCkJBbNJKXOuvDmEpMaEuISOnG2De0Jwgoj34FMyx6Spcde09U1E+nwex5kRwEKvX+mHK2ziJjefxdCCrwJetPz1npAyp/MkBnneo8O05l4vXvHlD4oTNrNjs6e5zmv1EPMswxcHbJhycHXML0ANdgzsgpsbBSOfpYPqXLVJ9k3Akl72mkpeeKA= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 20:ZhlUzqxyZWJBktZekC8jZsbOneBS6wkqN6WAHxvRr9JTj7+M4NV7TZ0q/fG28BcmQ0LIeS3XdXjM2a2zUEFCqJ5UDUVsQcBK+WmQEcGgwAttM62rZjLar1LqQ6flm0VwkQo3zyb3XhE009L5zgxK+MVJ4uhDwlGDxqr5jDMIHNpsexvwoKojX/miOVt8a8UZNE61TC3qDEP3OtvUPb4XPXEuq2zIfQZN39yep5PvRsy20A3i7BapseLuHrADdib/OZt/Lr8VZLzKSqmiMdbKnEzMzeU/OmB6Sn6CXFb9QHY//8rjWPbMf1IQqdJPZZE3EM48V4XokFpkAj7TPvGTYk3+mwKl5DWKminI/Z0h3Ca8+LMuzeehf0MGMQ0wY8e5IMlcIIM7jXWHC2w9vjtbAuoiF28+kxNSg89CiChilPb310Y0+42e0QL2QUrhYfF76Fh4cblO+/HyVcvE26gOlYAYpH/GdHcql7lbX70/6socAdMgHY6mZ1c9eSK+qYXZ; 4:UJl/ksX3KuynA65dLWcn2bEyLpphoHz1rGFUb5nhWqUkz6UefDdofJ1hNLhOEubP3k0U3DzDj9e/vPLIM97+5/mzvmdxKBZUYVJx5tiNsBQc9v4nZB7BJlqBxTNUpZ0cyel/02+rs8zN8v22sUIl+eK8lDCvHS5TKteyGGD1M2CVFUFHFgUl/05Gk0Zc9ywVq/EE3ndLIISFEN6L04PSPTH0kOEJVKCVb47OLbIRx+BpolEEzQfZ3dyQFMjyweApzvhPRnmcf2JBNsDZPzeUWUnZhBxRie/QMO1/81R8iAHTw5jr9D+KcF5bpLX4vRTd 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)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN1PR12MB0158; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN1PR12MB0158; X-Forefront-PRVS: 04359FAD81 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(86362001)(50466002)(8936002)(97736004)(6116002)(3846002)(7416002)(81156014)(8676002)(50226002)(2950100002)(81166006)(316002)(478600001)(16526017)(6666003)(7736002)(66066001)(305945005)(47776003)(6486002)(189998001)(53416004)(25786009)(101416001)(2870700001)(50986999)(76176999)(53936002)(2906002)(68736007)(36756003)(106356001)(1076002)(4326008)(5660300001)(105586002)(33646002)(23676002)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0158; H:ubuntu-010236106000.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: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOk56KzRXSHIrSm85VWlNNkFmQW4xMTI2YTVQ?= =?utf-8?B?cVJRemNsbFg5Q3JkSnlBbFU4ZDZKMXFQRVVWaklpaDV1alNjUXNXd0NZWDVv?= =?utf-8?B?SklCbWtQQ2IyVmR3N01hRXJmYmhmbzBxck95aGt0YkRuQ1o2dnNlbUNCTTA0?= =?utf-8?B?Y0J2Zlk2RlRORGVvYk9uZHNWeXMzUytrbGRYdDJGUHhVUnpSL1FETWxER1dr?= =?utf-8?B?ZkE4WGw1cVlEZlloYjhpNHkrK3RROVlyU0VQVXBsM05uc1BFSkFjNTdmWXVH?= =?utf-8?B?QkFuU1k5K3NnNmUzU0Q1c05FZEdabUtuWnFUSUJJRFF4VHZIL3BCNityMlMz?= =?utf-8?B?NHJVYWJPTWZ4cDRYVnkzd1o1MXZ5dVJTZEE2QXBCSEhkamJPZjdYaEhSUDA1?= =?utf-8?B?MDlPaTNBZ2prQWltY2NEVVRQa3pXdDFsV0lBMGZVSUoxZXhkWDBOKzZDVHpV?= =?utf-8?B?Y1ZHaXRQWWQzcENrakJ1NlIzUW5OWjJnRXRoa1FuYzV0VGdGRkMzU3ptaTBZ?= =?utf-8?B?ZDFXUDFURUFPNWtjNmJuM2RFa2dGV0pvQW1Ba0lFKzdyUk5LWTlkM3Uwbjl4?= =?utf-8?B?ZVpkb1IyS0UrcE01Qmd2cnY4V1YzRDE4RXAyYTRWUmRZeE9RTUtIVmtwOHdX?= =?utf-8?B?WW5KL2FrbGhsbmh5dDYvTU9YbHpFeFNDc2ljb2dVRXhrMFhObDFWOTIxREFv?= =?utf-8?B?ejlKbWZ3cUlWMHJZRW9TSW1KL05hVnM5RGswdWFhRERJLzBueFFlYllDUGJy?= =?utf-8?B?dWY1a1BsRTJ3eVYxRkF4b2ZTNkx2L3JtVG9MWkRCSExSQk9vMFIvYzlDNURx?= =?utf-8?B?TDJ5MExNeDkwcm9aOGsrRnZ1K1FzaUZFM2tNU0ZuVC9SSVdtVGtjVlh2RXdp?= =?utf-8?B?UkYrOEgvcnkxZnozMlp4Z0pnbTBSd2RSbU12NXB1eWozS2IvcFNxWmJLUDJK?= =?utf-8?B?R2pFd2hqSDZtdUtoQVcrTEdGUUZQNlJ3anVMR0dwMnByY2EyWE1VRmJzcXJ1?= =?utf-8?B?MVFaN25zcHNpVWlrOG0vb211MWloSUJxWFJOMWo2VGt3MkNZdHZPSk1UVUZm?= =?utf-8?B?ZnBWTk1lMGkrYlRsbWlGNUxGZWtRbEkxNklLSHVqK0VEenJOTngwa0w2YzlS?= =?utf-8?B?dlBrcHlQZXlKUzJ6akd1TUQ2R2R2UDN6Y0tvVXNUdVJtQ01MUVhzVzU4K2dz?= =?utf-8?B?ak5aUHl1VjBkeUVnR3AwM1BROWh1K0RwKzdRVjNaaG5QVWl2SzBNblIzZlpO?= =?utf-8?B?Qlh4aHhqS2lYYzhMOUxzZ295OVFGTVpIblgzWTNhVy9Nc3VDNzgwMzdtdzE0?= =?utf-8?B?V2JOT1BhZ2ZxaFlCeVdEbTFkdHBDdngrZnlGMUpzRUZabnNVNGF5bDhGVGh2?= =?utf-8?B?YTdiLzlBUUxqRDVIZUZXTW1CUkh2SWVxWDVnbVRjbjVwdXpVVnZYZzdIb1VD?= =?utf-8?Q?NdT5iCUqwT/RpL2oO2NOVuJeSCJ?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 6:SxpyHntvlWvNRizGIOmrEqdCAsZLECW2A810ww3cDHoz03F8e9YH/gM1wO8+p/WcFZm3SmLdS/Pkh46Y8dTOaNcFycbAdSYXd1M1/XUjhFnAnO/Pf/29A9nHynI2APY4xb5A9p4xceifXvQ9CzeV5SDpMb0D7hv0dF0V31arqJ3T4pdAj2DHT+k4KCr+GotyFtl4UMrcJfAE+nSDkd+9VmDn/ZFLFh9X6LVo0tvrIbl4luohx63w1kkq9V6pbA1cOJ1gHnxN9BbvtSPkNS/ioMq9vMc/echsKTbtR8FVvf2Kr3oGGonKlf01ioOIBMdNrEszEV5LvHu08PSasYyn6w==; 5:iFWTx21hZkMV66UXDRjJB+W8Oc8FsRWLdziW4zCziKp8CnfEC2DtKrplJ3GHvic39cfsKxNAAZxrqqW/BRUq6wabsOwzhaRuqh4smzlhuH4bcOLOlhzgSMv4jfJxjvB+WlDgcUga6N4I6dBc+yM9ww==; 24:rkiTfhncaIAPLWrqXoJhaUph9WdTtvDyt9ggxmra8NSR0DGdiUUqBDHJO7YLyGioALRZ7Um1rCHHtvr2OWAB70IYitkV9tixXfHgLbWOBh8=; 7:Nn8L0QcrR8fbFAYxfbTOTY5TocI2LtPzL0wtZBw1UJS0Cd+xuR6ZQh5GR2R2pW9dzXJA19K8RUwuzzKWS92zvaqKueG4R60AzkKiKvQ0aAPT4Ii0yC1EzHhWMucR3M3Esofy7ebmnZS1t+Ouhj/4dsFPKbl4ScKUNz055BNDu6yfga6xSVMWGuow6qRY4LK2QiqgsQe94avhvW+zHDFqTN0YuysLdOMGK3VVuu9eDMI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0158; 20:Ik7mMtt28Ag1P8z1t/F1xP/d/+MllJPp1wO519+Ra1ru5RfgyEK+K1z1Le2+rdSfeGlSuUwYSK2OOKNeDXQS4OxFJOHzlWrtdZYzNiC1/jgt6p9XtP3CbO4BnGquEeXZ3HT8JhXd/TwCcgT/L+/ArLHhkeai1lRO56UQoGREzzATCkPi76XX/GwACvSUOyKaO39ve5MUflNvxWTFCw49QAFD0tXHZ3Ls2a8q3zSrcoRamb+PEMMKNABXizI2BL69 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2017 20:46:55.8607 (UTC) 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 A SEV-enabled guest must use ASIDs from the defined subset, while non-SEV guests can use the remaining ASID range. The range of ASID allowed SEV guest ASIDs is [1 - CPUID_8000_001F[ECX][31:0]]. 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 --- arch/x86/kvm/svm.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 2c3a3c88596c..360f4b90f48d 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -319,6 +319,8 @@ enum { #define VMCB_AVIC_APIC_BAR_MASK 0xFFFFFFFFFF000ULL +static unsigned int max_sev_asid; + static inline void mark_all_dirty(struct vmcb *vmcb) { vmcb->control.clean = 0; @@ -783,7 +785,7 @@ static int svm_hardware_enable(void) sd->asid_generation = 1; sd->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1; sd->next_asid = sd->max_asid + 1; - sd->min_asid = 1; + sd->min_asid = max_sev_asid + 1; gdt = get_current_gdt_rw(); sd->tss_desc = (struct kvm_ldttss_desc *)(gdt + GDT_ENTRY_TSS); @@ -1050,6 +1052,15 @@ static int avic_ga_log_notifier(u32 ga_tag) return 0; } +/* + * Get maximum number of encrypted guest supported: Fn8001_001F[ECX]. + * [31:0]: Number of supported guest + */ +static __init void sev_hardware_setup(void) +{ + max_sev_asid = cpuid_ecx(0x8000001F); +} + static __init int svm_hardware_setup(void) { int cpu; @@ -1080,6 +1091,9 @@ static __init int svm_hardware_setup(void) kvm_tsc_scaling_ratio_frac_bits = 32; } + if (boot_cpu_has(X86_FEATURE_SEV)) + sev_hardware_setup(); + if (nested) { printk(KERN_INFO "kvm: Nested Virtualization enabled\n"); kvm_enable_efer_bits(EFER_SVME | EFER_LMSLE);