From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752322AbdJTClD (ORCPT ); Thu, 19 Oct 2017 22:41:03 -0400 Received: from mail-bl2nam02on0071.outbound.protection.outlook.com ([104.47.38.71]:59884 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752143AbdJTCf3 (ORCPT ); Thu, 19 Oct 2017 22:35:29 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: kvm@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, linux-kernel@vger.kernel.org Subject: [Part2 PATCH v6 23/38] KVM: SVM: Reserve ASID range for SEV guest Date: Thu, 19 Oct 2017 21:33:58 -0500 Message-Id: <20171020023413.122280-24-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171020023413.122280-1-brijesh.singh@amd.com> References: <20171020023413.122280-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: MWHPR1701CA0020.namprd17.prod.outlook.com (10.172.58.30) To SN1PR12MB0157.namprd12.prod.outlook.com (10.162.3.144) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f53a76a-0187-49d1-0511-08d517633451 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199);SRVR:SN1PR12MB0157; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;3:jyKolIs3jpZvFKDhpku7z0qhDUQzXahZKjHvO8gJjBf5cM1g8E1CQo0RZVBmO8azBR7Zu0KQ6wdThqJwf/pR0wAgYVD+MYutyzvY3uNdeu2Quc67HUkCmM1TR8+DsPrL9xy+1yUnw9P7NCJzePidy4CRcur4iYe/Zv0sBxRrABHFR2II6L7re+AOx7fepJo1YIQpJCy+P4kuZSWdFECrsTjqh0apiWCU3t95haFUZ5wVxao5TNpGkQsuwK8BIdlE;25:nr3U2VxHj0ITYfUwuOEJh6H+v6SCAuSBSw3lFBiGYWvjr5LF38AZRcXPtV3EK0CtL4A8DMqii+aR/01XD8LaSXlq906Di9bw0L84lVn+VykdQnxfMfrWu9YnQJ1hsXjU6UgTrIDZEw2KAMm4ewdyUC7lDjGwGwqTmZKIHQzT6tZZDGvwsRlM/jVpOBCNp9bvSZV8p5REHGdK4mXRdIHK72oKl3qQH6p3JcXBUE0sC5UcaZQJxU8G6X2zi1o53VOWXhtWRg3fEgeFDDhlIaon9veIUJ9U0HmVK8zzJ9mJMQPSg6TaOogSBVDec0reqqORS4zSmChXtxbvQvh8GbwYVQ==;31:EcNFkpkSeo1FJQsm1DFhVqIxxFnZxaDy27utWkt7ByHCp4oDp2ueg1WCxo+FFzk4gidXrvgF9XmLTmK3cvWEd3mWszcGYECrnP2/hZbuR0gp9gtJ06ztH3suoXb1S70DIATAmjGsJJehruIj9tu3/y96Mos+ux+NyDbmDzpI2k44ETP3egf23ZCU5iFlYzYDMN8xc4+oDDE7+mTXTmJP4184xjxYAtsATe4PdyNDLEM= X-MS-TrafficTypeDiagnostic: SN1PR12MB0157: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;20:eD3B4+Q0/bVPTeskTD7HLjCsq03M5pEfzHm4lO1NUnZd3dm+G3610HeAUExz4CAEiG9c2MdGtOT/Fc6fZUxXXbnain6jhGSCh7S/YRYChtDe5deZtndlFFDcbBmUvzFAHXhW+k79PK3OQT0a7dA1WrwPo9MsMQH6fBRWnCfEFNN/n7xur3j0mIA9my5yhrfTV/rpkao4q1WzXzPPLj5taVmieSfvI2pCModvjsPckFM0/CV8EogcJJefsTqSg1CVySxOTOl22PijwONUJWoE8a1BcK6UuNiu9ubSgd+sWPkIXgwufiiKMts7yEUb08XmEaR1PNiySqdxXPJMtlxpY5W5wfPirm5JtELlFGO9hiJ+4zjE5vV5EBksrvaW6jPq49yp/o+Ts5/xIrioqyWAxBUJDIga+zbXu0Nlw3y4iuNUHgdABN1T/h+11igm+jbTjgO+QrYmQjREGwmnmZpr5qcj994Wg5mXcfACSBiGWUheA6c334ZrBTGUvBJdDvRZ;4:utT3TbXApU7NpSdMjHK7jDdkVchR+EpcNIrBnbPgmLHbCUZdZg9dczOHvc+n4K1YxXwv809kbsHYi3dJZP7TJHzdTwXJBj1KcHtszeFrAkU7eAMPPdxwYY0hlCWxDM1Tqvw440XF/PTg9tWp9rZanJuc5FYUjJBsiq0QL9tKkxrJnWnH3/QYjzh43Q1kPQV/9LnZbe6vKlBEfFiYtgm1lb7U806Ui55Ur8W/Vy8RmY+9tzzJSofDWoxHi0ddCH4pEGYDkKbtV6xa/Kcm+OEUuOSJOBU+2H27JR5FFtSIfOYrvP7+ExMX0LFJz1FFW7ci 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)(3231020)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123555025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0157;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0157; X-Forefront-PRVS: 0466CA5A45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(36756003)(7736002)(68736007)(50466002)(1076002)(478600001)(4326008)(16526018)(316002)(53936002)(6486002)(86362001)(305945005)(53416004)(54906003)(50226002)(2351001)(106356001)(101416001)(81166006)(105586002)(8676002)(2361001)(76176999)(2870700001)(2906002)(50986999)(6916009)(23676002)(66066001)(47776003)(6666003)(97736004)(6116002)(2950100002)(189998001)(8936002)(3846002)(33646002)(81156014)(7416002)(5660300001)(25786009);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0157;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU3OzIzOjFBcnVqdmVIY2UxcEF5dElzb0tlYWxLcDRm?= =?utf-8?B?UDMrU0xrMWdhS0FjNEUrdG1jenJGVDNXaXlQaW01WEQwdE1OQnR2ZHN3eWps?= =?utf-8?B?VHA0Q0lScW1BWFVTd0tYS0dja1BKNXMzMVQxR2l6ZTVhMFdWY0MvWG5LK3dx?= =?utf-8?B?VkxjOS9Va1hYZVJqTzRxZFJhekdTaURmbVJlUjRCeXVBUFhtUlB1T1EwNHlQ?= =?utf-8?B?c2M1YVZKc2VOSE1QdGpSK0I1M1EydkYxZCtub2o0c29MS2szWTM2eWlaTUhG?= =?utf-8?B?Q0hYZmtPRkZudGxvOVNTdGk4VFhVSDdzMHZMTDRCZXI0a1k1QnlkdkV0YTM4?= =?utf-8?B?RU8yaFNjNzkrSXlYRnI2SlRkQ2hKOXBQRHRma1dtenBRZllqZmIyNU4vdzZZ?= =?utf-8?B?R21DdTBGMUIvUE1LK25jNVdvTUtJRHUrOHBLeVBNcVhoUTA3WmJIdDF3RlQx?= =?utf-8?B?K1o5eTVML21xUzJnMzl5V3ZEdE04d2V6L2FwM0luK0ZZZWc5MTVZYXRtbE9a?= =?utf-8?B?aUtCV0JwWStXWTEwWm4zZEwvR2xzWnZLM2FzelBMZFB1VjVyU3RNMWE5NEpn?= =?utf-8?B?L1RUeHZwejlRaUJKaVJRRkdxdlhQUTBqRk0xU0dSZi9yQnJDYzBRKzN6dlgr?= =?utf-8?B?TFdCb2lEODNqVVp3M2pNR3kyOGtkY2wzc3BkanByUWQrOCszUmFOUFlVZW9S?= =?utf-8?B?MGEyb3hpWStUWk9OUnA5UjIxOWxOVjRUYXVWT0kxM3UwQzdJVmJWWU5CQjdq?= =?utf-8?B?MldHb1FoQUQyc1JZa21ZQVYrdUZpdFBFVU9VY3laVE1VTVFFNTRyRjMxc2o2?= =?utf-8?B?Und5TmcvNkVuOVpDVjRBa2ZoZTFUb3R6OS81YUJucUJVVmxwV09UNW9PSGs4?= =?utf-8?B?OVBXbU16a1k2dS9WNEsxSUI2Ui9RRkJSaWQyYzJTcUJZVWVwamg5c2M2dXY5?= =?utf-8?B?QVZiaitQSlFGUytDODFuWk5haEFsYTBWS0lLUDYvUXVEWldObGJ4OGlxNkFD?= =?utf-8?B?STJrUzFQeVhnOTc4c0V6YjRWV2pwMVloeEhtQmNqK2NvYWNwYXF3TEdZczM1?= =?utf-8?B?VGk2MzYwVmYybTRCNlpoSHJHYzYremp5dmQ0SVZCZE5nSXNBcGlUNlJIWlha?= =?utf-8?B?bUJ0VEZOVHhpWGJjaTBHd0lIZm1yTnp5MUFvSnlYbEZ0NmN2UUdPaVdCM1pF?= =?utf-8?B?WjE2bWxxbzRseENZeDh3Z2tlZFF0TEpFeWYxMGhySXQyWmxsRURkNUhTZ1VB?= =?utf-8?B?clZJeDdlcDhNZmpmdjRtUVFWWFVDZFJGQWFSNVlueCt4V2pFd1o1bCtTUWVm?= =?utf-8?B?MERreU1NMXhMUEZVMFdJWFNoeXVnTFhkcmRNR3hqVzRtYmZ5YUNTdndOOXhq?= =?utf-8?B?eGxUa1lYYTlxK0xZT29rYnlMRzhyczlRNEVjdFNuL3ljb0kzVHIxYzNpdW53?= =?utf-8?B?RnJVcWg3L3pVY3VYRjhmS0s5OTd5Qkp3VDM2MWt5bFZjd3E5ZklZcnY5TFho?= =?utf-8?Q?A1F/abmPXroWCuGonyfbd+AAOL6lPzEsUQ35ybI+xCsuby?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;6:MRjD7wAWtQ4BDW1b+2cEsRWhoDHJucr5wNkAuNBLDdE32WZ8ESkwCr3sR2v9OUTXbl3R9R1pY/D2DWRjtcd/myvQICYcYp2VyHxxx6TpmrgXXjnaBpHUxs0XzjO8fynmK27kMxIrA7SNREOmjnTiS+I35Be/lrlfZTJxSJgqVzti6++YVbPDd1KoTSPk/k9RXyi5y0W2bDqCKYTXgKI4B/AolrpEaSsua7oDLYxS7z+ld4xwuTKzNlu/U+1NMtQgSYSJOY9ConafkyXUA6oWptv2pElfD7Jx0Mn9BqDBrduNzBpBVxMO0pSW1QVnOe1RwPA2CFqT0RFtvDBWNTOYkA==;5:czDOChQGryR8zbtghobsBfdt8B7ba6hXGKudwHSnkTQ0qKkgyU6AFZscZaa+I9CjPuVRZO6TYqaBH0f1UHOuBQhFTTLBMCCiWMkmUQITtTuC9/+XR/1m5wvKAAQSSORPEHx4dXBLrlRIsc3CZUtc2w==;24:StA6yFwoRdOjG6b0bkMhx/W99bpTUXqJcdSPXBVh9YOfM9lsRQQ3+pJ9cgZj2ygEuz7KemQtR5Fl0UrF1Gu4sYyxddE5yAtvaMlhf0Sninc=;7:WbhElRTSZmGI8V7tock0on7Cb2XgWkza8gvVI5d9BFmMsmD/Aamp4m0kiQp5zeaapz8hCyvg0yVzJOG6gIE5KDI1+bYOjNl9/rGxJCClntH12Q0+ZKB8RJ59xAPh3svsuL9LWOvhjr1da7/dCy8geTSMz2ymp+diLJVd2DERAFjjQkxlVM3o5RTLNPtY6usucrh6IOpOkqj1bhpHbFysjPdz1V4FF9j8CV6g7a+TJA0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;20:WSo5qYlFWBFAG54M9DFDYo7YPopPUPLAv961rxUhj59XCD4Z4ddJ92N8CsCTJPNTKU8IxVqeLRlRhSZrxcBbZXN6vnc4urZgJrRDdSCWOvwlPMGW1QH6hY/DQSTLDnCl+m4y84W4juV5nODVNORj/bUy1Iu+YYBsOU5/eWFxCdauWdb5xEMp+RWLYhwllhfIonb5eGQyCVKcg63y5vl02dYtgN6xuRC0H0H2JjJlDEaxSj9d7v3am3gC9WhPR7ke X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 02:35:17.2687 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2f53a76a-0187-49d1-0511-08d517633451 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0157 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A SEV-enabled guest must use ASIDs from the defined subset, while non-SEV guests can use the remaining ASID range. The range of 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 Improvements-by: Borislav Petkov Signed-off-by: Brijesh Singh --- arch/x86/kvm/svm.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index be2e98c01b22..d4b62536e305 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -323,6 +323,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; @@ -787,7 +789,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); @@ -1054,6 +1056,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 +1095,16 @@ static __init int svm_hardware_setup(void) kvm_tsc_scaling_ratio_frac_bits = 32; } + 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; + } + } + if (nested) { printk(KERN_INFO "kvm: Nested Virtualization enabled\n"); kvm_enable_efer_bits(EFER_SVME | EFER_LMSLE); -- 2.9.5