Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4711592ioa; Wed, 27 Apr 2022 09:27:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxHzYZA3RBxP5bRVMRAn5o9GSYtNMGWx8Rq7PoyjDGUN97BOnV4+zXYwIEmA27c1RVQYxis X-Received: by 2002:a17:903:1210:b0:14f:973e:188d with SMTP id l16-20020a170903121000b0014f973e188dmr29030838plh.61.1651076834434; Wed, 27 Apr 2022 09:27:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651076834; cv=none; d=google.com; s=arc-20160816; b=QnM1h8amKInIsu9N/L/wG9L0i6oKQmKt0u1wh1oJn4n6aHVBBhwaRHQV6fW+gi6b3x ELt+VHhch0QzFCRRd1w+IIcvSrrZ8ri6Fn1oRH/1rmZ0nfwSkp3OoHOlRRkB7tYZyTIB os5fmF+I/PWCJVvTy7S6c1QGabtGCX/zjqyWDfOr98NXOi8W3mhxFCvq0PL3wPbjggbr BM2eli5LsNrQHoy/jZKZSXfDWi2TJDM7LcBnrdzvIqSUNT11RlmpkiLpFK6PxYMitXKS L8tzZsJ8lxlfCSKaUnZkloxZayK+0I7lVHz0vA5vp/wiVWC1fDp5u+S7t3SL15HJ0hbo osyg== 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=05d1877H9J7mBKFf5YXGkqU62a+q4p5JjVd0+w6HuOQ=; b=wGwqnHsht9hPv8yKgg5OcJ7w3CuMjWfo6H8jjLt4X2HI26zYpmPofIWo7CA8AOUumf 7WbS5wyEp8/mBPOXwi7wWvHJk5wYx8O+moIJyXvMl20Mrat3pmAnz412d1fxlPl/K5iH NvP2seQF1DZ6t8ONOmqKpr8WLDBqzcqFPR1KH1XsscMaMOjsB/HtYToMXv8VW663UfEf 8MuByD8Mc0fEFp0yJroJseNhQq8+qtz536DNiyH++weEORw5b30J9ZiD36n9ZOZCha01 R62alsS5106cHcULNOzE1oLFRC9AyiSbgc2Nw4pipnacUWc5OW16+Bs7+PV24BEXqdK3 u+Yg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pJBB+zJL; 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 lb5-20020a17090b4a4500b001cb5ca6d2d2si2314995pjb.165.2022.04.27.09.27.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 09:27:14 -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=pJBB+zJL; 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 193EA81FC3; Wed, 27 Apr 2022 08:56:26 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241181AbiD0P65 (ORCPT + 99 others); Wed, 27 Apr 2022 11:58:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58660 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240974AbiD0P6Z (ORCPT ); Wed, 27 Apr 2022 11:58:25 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B6E973795; Wed, 27 Apr 2022 08:54:47 -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 ams.source.kernel.org (Postfix) with ESMTPS id 8F970B82888; Wed, 27 Apr 2022 15:54:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 33246C385A7; Wed, 27 Apr 2022 15:54:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1651074880; bh=qS9yeF5Z4kqyQaN+jkF6ZO2qnwVTEewgiRMJ/qCZUY4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pJBB+zJLelsPEKwCEF1Dtr3aQQMufAT8fjOt9upW1OCposOswFLoBJ2sEzJzVlCGz UFJwjVRGKBxom3kLwm+KFAXQ+d+9nb5sZExu7I2oMkW8vZ8Ql98H+ydzjknTkKKASG m72QI2DW+ENWZj4VUON5nCbTm9BQZnRULG+yS8Z1Pk1QY7EczLBeV+sHrmLBRWMj0N woYhs/Pm/DqtGs6qwHoD7GulgmfRYne3N1qmx78RYHnwiYRR6xZxkCVVb77ospoul4 rgk5TH475pN/Np9HMlgyLUeWFHtTbvO+LuiMPlUNPh8og9+Yu2eb0J+eoiM6vKnCzx CJ21O85p/JpOg== 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.4 2/2] KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is advertised Date: Wed, 27 Apr 2022 11:54:38 -0400 Message-Id: <20220427155438.19612-2-sashal@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220427155438.19612-1-sashal@kernel.org> References: <20220427155438.19612-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 afe3b8e61514..3696b4de9d99 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -118,7 +118,8 @@ static inline u32 kvm_x2apic_id(struct kvm_lapic *apic) 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)); } EXPORT_SYMBOL_GPL(kvm_can_post_timer_interrupt); -- 2.35.1