Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4711981ioa; Wed, 27 Apr 2022 09:27:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz5rBcXKJj7n2wUz0nGK5kMEGYj18y6TiE+rQ1VHyXlFzxIRBzOkciY5ANxoHL2gAmw9Rmt X-Received: by 2002:a17:903:20f:b0:158:d86a:f473 with SMTP id r15-20020a170903020f00b00158d86af473mr29619699plh.92.1651076859622; Wed, 27 Apr 2022 09:27:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651076859; cv=none; d=google.com; s=arc-20160816; b=cAIf3WdHFZjP/VjttNxH5G6u534iuWAAW5XatRXAncMtASsWUJ0NuBiLnJmEKurZ8y nhmqaRAM4SktPQEuUpvkprQ7qaHIVCBVT+adfDgt0Juwqywlg5L5cTj/EjCKD29l/MsF M+cxxq0LxA3ywPWbHWjO4EemecOwairGJJ33AKWNQm5joX2Yl+jcna+B0r6y3T9GohQC Owwo2dxcKuxt3UQXYfZ3GcaFFEHu8mges+LsE7tx0jsUMvNLEsWKQh5f+YcyLikS6eDb /GBPaLxK4qd0V9/cNuApqYureF02H9VgzGaff5OHz8JRAGm7F3/LBA/udC56f7INNSFH rPEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wc29ycpQse37Wy0S5+elf93yL3hEQzZ6UlRcZVqRMs0=; b=oBZ3dKOkEVBNP9S4e0QC93aCRK8GPyMVJf5uQ1Jyrz3rY2nCws0d5ER6CCpeBuyCju 7AG+F03E8KODi/tAnn1nmXhEFDhu6Hrb4+RSLsrDhjazVLgibWBQnMOZB3L5DsKzgHbL TICgxzj0l7blhcB4FMX80c7MBIRI15H+XLCL77h+hcGdJBywTVBOstkKkhqLLJLKE8I6 mm6VqHpgqNHo7OBu3+gDe8MuVES1fKY60bbDHr8ekr0lD488s1Bv35YvztDfhQ/qoYO2 Ao8l99cOc4mDaBsyR3ziYUZgZc/HwfJbiflVXVoLPH9B5j63qDbulu3X7GBAnfNP5dvG r04w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BbQd5jc8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id l18-20020a17090ac59200b001d297b4e1afsi5202936pjt.185.2022.04.27.09.27.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 09:27:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BbQd5jc8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B8E9194196; Wed, 27 Apr 2022 08:56:59 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240630AbiD0P7V (ORCPT + 99 others); Wed, 27 Apr 2022 11:59:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57024 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240899AbiD0P6P (ORCPT ); Wed, 27 Apr 2022 11:58:15 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4BA7B703D1; Wed, 27 Apr 2022 08:54:42 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E86F561B53; Wed, 27 Apr 2022 15:54:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2C9BEC385A7; Wed, 27 Apr 2022 15:54:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1651074878; bh=KSEJ+saCnB7wp+Oq1NcgEnSORri1ySBk4CdULLq8XTc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BbQd5jc8puJkou5Ls+FBgSysHyXdzGbHCu82Zoz4nXTjcQsj496Xd42L8XtVv4WjI Ip7OIpfJm/xyFx7QyANfPOii8qBm9PSrXN1SaJ76Fv0Ik3y9Z+2AvbQo0PBBVNZFef ZVFLMAJqTa0Vr75/x+ky+rXmQ2Ftd8qf/F+rKL2CjoSX/YuNuVMVkLhS2hj2nR0k+1 fzpEVvHLfayUUOe5v6HvW+hbURIfzdTTkH6bN0TBhCffNrT/OfELN3kbYUOwIKMPU2 6BlOFqhc93xIwZtZNxFh/J8Jr1ZBOtVuV7GfaOsbN8YtoT2tPrRk4ZWTbVNDpFiNPM tvyfZGo8ycvQw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Wanpeng Li , Aili Yao , Sean Christopherson , Paolo Bonzini , Sasha Levin , tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, kvm@vger.kernel.org Subject: [PATCH MANUALSEL 5.10 4/4] KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is advertised Date: Wed, 27 Apr 2022 11:54:35 -0400 Message-Id: <20220427155435.19554-4-sashal@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220427155435.19554-1-sashal@kernel.org> References: <20220427155435.19554-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RDNS_NONE,SPF_HELO_NONE autolearn=unavailable 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 From: Wanpeng Li [ Upstream commit 1714a4eb6fb0cb79f182873cd011a8ed60ac65e8 ] As commit 0c5f81dad46 ("KVM: LAPIC: Inject timer interrupt via posted interrupt") mentioned that the host admin should well tune the guest setup, so that vCPUs are placed on isolated pCPUs, and with several pCPUs surplus for *busy* housekeeping. In this setup, it is preferrable to disable mwait/hlt/pause vmexits to keep the vCPUs in non-root mode. However, if only some guests isolated and others not, they would not have any benefit from posted timer interrupts, and at the same time lose VMX preemption timer fast paths because kvm_can_post_timer_interrupt() returns true and therefore forces kvm_can_use_hv_timer() to false. By guaranteeing that posted-interrupt timer is only used if MWAIT or HLT are done without vmexit, KVM can make a better choice and use the VMX preemption timer and the corresponding fast paths. Reported-by: Aili Yao Reviewed-by: Sean Christopherson Cc: Aili Yao Cc: Sean Christopherson Signed-off-by: Wanpeng Li Message-Id: <1643112538-36743-1-git-send-email-wanpengli@tencent.com> Signed-off-by: Paolo Bonzini Signed-off-by: Sasha Levin --- arch/x86/kvm/lapic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index e45ebf0870b6..a3ef793fce5f 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -113,7 +113,8 @@ static inline u32 kvm_x2apic_id(struct kvm_lapic *apic) static bool kvm_can_post_timer_interrupt(struct kvm_vcpu *vcpu) { - return pi_inject_timer && kvm_vcpu_apicv_active(vcpu); + return pi_inject_timer && kvm_vcpu_apicv_active(vcpu) && + (kvm_mwait_in_guest(vcpu->kvm) || kvm_hlt_in_guest(vcpu->kvm)); } bool kvm_can_use_hv_timer(struct kvm_vcpu *vcpu) -- 2.35.1