From patchwork Tue May 23 16:56:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mingwei Zhang X-Patchwork-Id: 98090 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2297334vqo; Tue, 23 May 2023 10:14:34 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4+upWh/VZNEEaIDIIGgSaseGKzElXFQprj8gqDlwERg5BZX7T32kK+4ToqfVVmOfUOsmX2 X-Received: by 2002:a17:90a:e150:b0:253:8260:f9aa with SMTP id ez16-20020a17090ae15000b002538260f9aamr12250659pjb.6.1684862074487; Tue, 23 May 2023 10:14:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684862074; cv=none; d=google.com; s=arc-20160816; b=K3VyjPi0tYaDmBEzmXWfbfd6xCSTa5SvuUag/Nn+TN5vkJsfEQytFky5M89PEX0VVW Xn7UBsxwMyFmd0DBJnYJbMwcu+aMvt6LlRRRfVvJis2IhDIGtOzrJXZNMTq9sR6M0uLg KLJoayitAxABuw+r0DAriSToso+5P4oQlF8LnHGjlJ2KP/tpcDuwXu2iQKd3q/GGwxNm mQTZYygNcaiSjUze38CUupn1twYaNA27xSmbpNnma/03z/zFrIjaw2Y6NfZ4fjiVz0G8 Awda7sZpCw1gtfUcvbOhxD5FNigh3tspGH6MKsEOa92krSKQMsr/Oi7XzCuM8t6Y4f55 8wlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:mime-version:date :reply-to:dkim-signature; bh=wrBhXdURti5dDN8ayuXGB0ofh5Nn3n6ogjtgMB2nW2Q=; b=e8AN+einMK23B1JSysxzcZNL16AIvsTeojV46aGiwrfI3uFnAmcSvBEYx0igCkmDHb kyfBW/v6orF+dq7aOvqha+PmYCY1arMZLVj+X0Qs8QaHz6Mx0CNaqs2zMLKmgK0MxduE xRgRktjCHrGI0B1tRtl70uXiPl1IRqYl0buwU70pOw4Is3waeyy+BLGfoCYvqpxquRrH VGrJwUdLbvJmhNKbg2fUw2HniYUrkx6YWLsgDKjR8wgG2vug2oou6uHKmh1OqCZZ0IbU eBERR1t1pl4lNXwkJ9eFlhPAlkuGDIwehz33uZ+YRy8DxB3dt+Qsi+xnwiKCw6wBKghg njfA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=Ipet8D8+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 6-20020a630b06000000b00528593926e3si1573888pgl.627.2023.05.23.10.14.19; Tue, 23 May 2023 10:14:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=Ipet8D8+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237788AbjEWQ4q (ORCPT + 99 others); Tue, 23 May 2023 12:56:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237703AbjEWQ4o (ORCPT ); Tue, 23 May 2023 12:56:44 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D49A1DD for ; Tue, 23 May 2023 09:56:41 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-55d9a9d19c9so147508877b3.1 for ; Tue, 23 May 2023 09:56:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684861001; x=1687453001; h=cc:to:from:subject:message-id:mime-version:date:reply-to:from:to:cc :subject:date:message-id:reply-to; bh=wrBhXdURti5dDN8ayuXGB0ofh5Nn3n6ogjtgMB2nW2Q=; b=Ipet8D8+ByimH4J0Yup7AfjiRNANkpz/sRtQDxkHat/bahvEYoS8gmEG+5SvYC/1P5 a3Gt1GqyMyas8m2DUR8jNdOeVjEozG7mJ8b0FpV3xK4vdY2FW1zll8VQ9WTZpnx8KK96 V8o7yNyKqoUq0JvtTqDMPlC2lQ9KE7MkOAjJOnrOLDCQBJeu382hvUwjbEl0omhYc70B 0jOPclBKZDuIPzxBbVa6p5N34U0+/g81y/fBMppddz2NEvmAoAcdVx0Z3Kh+3t1AeGg2 2SVWh4JSYEaSmlvIWLVfmxpMxRMey2K0vULQYfWcdfCOlfDucPH0EzILs16hEgQojH/B tX/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684861001; x=1687453001; h=cc:to:from:subject:message-id:mime-version:date:reply-to :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wrBhXdURti5dDN8ayuXGB0ofh5Nn3n6ogjtgMB2nW2Q=; b=XrKgxl79/h9LH4JTJUt+bTQtZAMhAn1gESk8uV1ZHfL30prh0sCot/4OuJl5F7NC4I VOJMFpL5nwGWlPzW8+nsu8Zb40zjGyTHLAp1ORHibLueQyt/q292np1jVRSqCMUqgMAU QcDCjUW/Ag3crOtGQBwboCjGMuzx+UOBq7XA42aNbYvRNDrs3nl16ac0nmihA5efzxHa eXMzhu5BLl3WZHpbekER88JQDVexPND4bfUtUAq6Kg8MKJYxoPHz7llHNTwpBalntTIY ZWX9u2TF6qGxsw6d8Du+aB7mEubT6tfGLbYLZFtFX9TyqDl1aseUVZZq003WWDUcb+Zc 9xig== X-Gm-Message-State: AC+VfDzCc6e9WrwcYLKMny5cGUJC/uq6TZszU7iRWNMTGwxPAPccEih5 Kj1W8+lab0RP7s29/jIwXx5QZG8GXctJ X-Received: from mizhang-super.c.googlers.com ([34.105.13.176]) (user=mizhang job=sendgmr) by 2002:a81:440b:0:b0:565:2bb:6860 with SMTP id r11-20020a81440b000000b0056502bb6860mr4621180ywa.4.1684861001145; Tue, 23 May 2023 09:56:41 -0700 (PDT) Reply-To: Mingwei Zhang Date: Tue, 23 May 2023 16:56:35 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523165635.4002711-1-mizhang@google.com> Subject: [PATCH v2] KVM: SVM: Remove TSS reloading code after VMEXIT From: Mingwei Zhang To: Sean Christopherson , Paolo Bonzini Cc: "H. Peter Anvin" , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Venkatesh Srinivas , Jim Mattson , Mingwei Zhang , Michael Roth X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766705934588240407?= X-GMAIL-MSGID: =?utf-8?q?1766705934588240407?= Remove TSS reloading code after VMEXIT since upstream KVM after [1] has already been using VMLOAD to load host segment state (including TSS). Therefore, reload_tss() becomes redundant and could have been removed in [1]. So fix it by removing remove reload_tss() and the relevant data field tss_desc in svm_cpu_data as well as its data structure definition. [1] Check the Fixes tag. Fixes: e79b91bb3c91 ("KVM: SVM: use vmsave/vmload for saving/restoring additional host state") Reported-by: Venkatesh Srinivas Suggested-by: Jim Mattson Tested-by: Mingwei Zhang Signed-off-by: Mingwei Zhang --- arch/x86/kvm/svm/svm.c | 24 ------------------------ arch/x86/kvm/svm/svm.h | 1 - 2 files changed, 25 deletions(-) base-commit: 5c291b93e5d665380dbecc6944973583f9565ee5 diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index eb308c9994f9..cfbe00360908 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -240,15 +240,6 @@ static u8 rsm_ins_bytes[] = "\x0f\xaa"; static unsigned long iopm_base; -struct kvm_ldttss_desc { - u16 limit0; - u16 base0; - unsigned base1:8, type:5, dpl:2, p:1; - unsigned limit1:4, zero0:3, g:1, base2:8; - u32 base3; - u32 zero1; -} __attribute__((packed)); - DEFINE_PER_CPU(struct svm_cpu_data, svm_data); /* @@ -584,7 +575,6 @@ static int svm_hardware_enable(void) struct svm_cpu_data *sd; uint64_t efer; - struct desc_struct *gdt; int me = raw_smp_processor_id(); rdmsrl(MSR_EFER, efer); @@ -597,9 +587,6 @@ static int svm_hardware_enable(void) sd->next_asid = sd->max_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); - wrmsrl(MSR_EFER, efer | EFER_SVME); wrmsrl(MSR_VM_HSAVE_PA, sd->save_area_pa); @@ -3453,14 +3440,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) return svm_invoke_exit_handler(vcpu, exit_code); } -static void reload_tss(struct kvm_vcpu *vcpu) -{ - struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu); - - sd->tss_desc->type = 9; /* available 32/64-bit TSS */ - load_TR_desc(); -} - static void pre_svm_run(struct kvm_vcpu *vcpu) { struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu); @@ -4064,9 +4043,6 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) svm_vcpu_enter_exit(vcpu, spec_ctrl_intercepted); - if (!sev_es_guest(vcpu->kvm)) - reload_tss(vcpu); - if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL)) x86_spec_ctrl_restore_host(svm->virt_spec_ctrl); diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index f44751dd8d5d..18af7e712a5a 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -303,7 +303,6 @@ struct svm_cpu_data { u32 max_asid; u32 next_asid; u32 min_asid; - struct kvm_ldttss_desc *tss_desc; struct page *save_area; unsigned long save_area_pa;