From nobody Sat Feb 7 17:41:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7DB93C77B7A for ; Thu, 18 May 2023 17:07:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229552AbjERRHC (ORCPT ); Thu, 18 May 2023 13:07:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229783AbjERRG7 (ORCPT ); Thu, 18 May 2023 13:06:59 -0400 Received: from mail-pg1-x549.google.com (mail-pg1-x549.google.com [IPv6:2607:f8b0:4864:20::549]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CB8E199 for ; Thu, 18 May 2023 10:06:57 -0700 (PDT) Received: by mail-pg1-x549.google.com with SMTP id 41be03b00d2f7-51b7810ec2cso1327740a12.1 for ; Thu, 18 May 2023 10:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684429616; x=1687021616; h=cc:to:from:subject:message-id:mime-version:date:reply-to:from:to:cc :subject:date:message-id:reply-to; bh=Ha8ZfG9WtE0dPySJ/+ise1++4XlMqEuz3CNRHMvVR+0=; b=qzfeyf3TraFs/hFscOCnvXugA2E4VTI4Q3PHtq6vDUuGOQTnPx0hInkmMb/PjG8OJy VYXZVZ2B22J/881K+e94rxIdxhhTyhktiCwSCM1sFJ4dsorZa2Jlmdh8gYktLew/WF2s PuEoOPbZucxfKL2YafxmKGa/X1AhHnJwdjdBDZuV7HXFnsORktauKpaA2t8e52hVYA4+ gINZm4lxoMVTva2NXkus25VId9dRJLkLDhg+hZ5L66aQ2WZOPr5ydekR0H40s3Ilx1jS 9o35oqjQbu1R9jDkBUhlhMjMS7l3zszK+JyY9zz+T45hWhOHvD64X7SIywIqib/WPnGp jNog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684429616; x=1687021616; 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=Ha8ZfG9WtE0dPySJ/+ise1++4XlMqEuz3CNRHMvVR+0=; b=N2D8DLFcR11g69HX9l96bFhGZgjuzO0UVZdlmdWB4pi5ZZSbXs7CWtqqmLUE8q4DbX NFq2ueUtftRwl+VAjkD2axoTj2NPeX1RB1cYA37v4QGg3QguxuGcG15EWMKxSFIu1yV3 NofrrISKvyqsbeO7EWZ+HFDlW4UyayzsAdczGfPZ4Vw5UhgCTdiC1ma4uyGgmruTN9Ro GyIo2og/dH4HeWQt9O+QPqYXCyXQgNUp5gr/oKOxCpfba1DsXA54UFBnn4D7kLf4PWiS YIvTBcSemAEV+IIoLuY61uiejx4Z0Ki7rNWephW6BiX920lEnumFzYOrHfxn3YID2rs0 Pfww== X-Gm-Message-State: AC+VfDw4hncuyAAsTniGfQqQ8leYfZH2KGjyuVgCyITzxH3vHCCUDIt8 XJtjpvjmepW0sXE512bB3I6en9T0lZlK X-Google-Smtp-Source: ACHHUZ6Nhs9hYjvqI0OzmsHnESW8H7QtDtj6cOsbr3W+Idrd7doJnSDv0w619W1QPkBe0REMD4M+wzeAK7+z X-Received: from mizhang-super.c.googlers.com ([34.105.13.176]) (user=mizhang job=sendgmr) by 2002:a63:465e:0:b0:52c:4227:aa61 with SMTP id v30-20020a63465e000000b0052c4227aa61mr479850pgk.6.1684429616582; Thu, 18 May 2023 10:06:56 -0700 (PDT) Reply-To: Mingwei Zhang Date: Thu, 18 May 2023 17:06:53 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230518170653.704562-1-mizhang@google.com> Subject: [PATCH] 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 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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. Because of that, also remove the relevant data field tss_desc in svm_cpu_data as well as its data structure definition. [1] commit e79b91bb3c91 ("KVM: SVM: use vmsave/vmload for saving/restoring = additionalhost 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(-) 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[] =3D "\x0f\xaa"; =20 static unsigned long iopm_base; =20 -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); =20 /* @@ -584,7 +575,6 @@ static int svm_hardware_enable(void) =20 struct svm_cpu_data *sd; uint64_t efer; - struct desc_struct *gdt; int me =3D raw_smp_processor_id(); =20 rdmsrl(MSR_EFER, efer); @@ -597,9 +587,6 @@ static int svm_hardware_enable(void) sd->next_asid =3D sd->max_asid + 1; sd->min_asid =3D max_sev_asid + 1; =20 - gdt =3D get_current_gdt_rw(); - sd->tss_desc =3D (struct kvm_ldttss_desc *)(gdt + GDT_ENTRY_TSS); - wrmsrl(MSR_EFER, efer | EFER_SVME); =20 wrmsrl(MSR_VM_HSAVE_PA, sd->save_area_pa); @@ -3453,14 +3440,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fa= stpath_t exit_fastpath) return svm_invoke_exit_handler(vcpu, exit_code); } =20 -static void reload_tss(struct kvm_vcpu *vcpu) -{ - struct svm_cpu_data *sd =3D per_cpu_ptr(&svm_data, vcpu->cpu); - - sd->tss_desc->type =3D 9; /* available 32/64-bit TSS */ - load_TR_desc(); -} - static void pre_svm_run(struct kvm_vcpu *vcpu) { struct svm_cpu_data *sd =3D per_cpu_ptr(&svm_data, vcpu->cpu); @@ -4064,9 +4043,6 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_= vcpu *vcpu) =20 svm_vcpu_enter_exit(vcpu, spec_ctrl_intercepted); =20 - 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); =20 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; =20 struct page *save_area; unsigned long save_area_pa; --=20 2.40.1.698.g37aff9b760-goog