Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp6282774iob; Tue, 10 May 2022 14:51:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxQ8mVXYdcdfk/abF392n4pGwtCz0Vf4i1URdJkWePGWhTP0XFCYb893XB1lilOJ47J1Yks X-Received: by 2002:a05:6402:3593:b0:427:e6d6:9265 with SMTP id y19-20020a056402359300b00427e6d69265mr25501609edc.402.1652219465624; Tue, 10 May 2022 14:51:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652219465; cv=none; d=google.com; s=arc-20160816; b=hMWEKMJekRbJEhBcDiFNckzATaiKsrwwXM2FZP3AD/D9CObL34ORPE2ivPMemK7DkS 3QRb05h2Uk8+IhFLYITeOCkPlzB+o22P7ijYo9vP+h7UnOpNni7QZeUjA85gYmKz7/Cj FWTp8iGfdBnCQkYF8mluiNmbr8HZ8EqllOFhY7nSV5KplC9RifX3PDiCUwxoJWJGS+2f 0N4p1JgS5Qa0bXwM+4QKc4JPCqrxAEDilZaJOH7qvZUerFjiQPT3haZlh+VqpBz3YQDv A8k2qWnaCCToePWZTUohLMIpbh/vPlKeznc3NuNvnw12M6mPTG6EUY8hn/rZdPNtbRUd tMXg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Fwx9GARDZwIEzVZlHSjN0/eQd1gwTZWbfHwRVSyFvZ4=; b=lzKNOEER4pH+ee9E6F9LO31qDGynt/KjxKR9eAC0bu0KhwAj6X0B5s7B52YZDm3nq3 Zjvd1CU8rRqorppZkP/LTr4iiBO7NNJL9Ywyct1Dn6vHIMsTNErLcGM67UZfuY1vLuBj Sz/bWFRB3Ky1EZ2h1ZSUN19Bh3QVSy1PIbR5WVTqlkzbYurgquiQCceZpRfhMaDgUfsu qcaACa+lJF51mquUBS0wQkIFKYMcN7uwccM0Gu1nNcfkccQ0Sms14b1bVE4ttSf8oNHx RZ6teYm4yFw3Qg4EDqZjl1Bfw7l6utm7JdquRwZZBzdeIN14jC5nqCBvNHj27mpz4E7r SovQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=1nTZlDdt; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dt8-20020a170907728800b006f3a02976f6si421109ejc.484.2022.05.10.14.50.42; Tue, 10 May 2022 14:51:05 -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=@linuxfoundation.org header.s=korg header.b=1nTZlDdt; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344295AbiEJOVj (ORCPT + 99 others); Tue, 10 May 2022 10:21:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244978AbiEJNrK (ORCPT ); Tue, 10 May 2022 09:47:10 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F94E2380E5; Tue, 10 May 2022 06:33:07 -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 DFCCC6182F; Tue, 10 May 2022 13:33:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE998C385A6; Tue, 10 May 2022 13:33:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652189586; bh=nt4Jl+T/r56aML4HwP1tjND6t2tSipFlS5Q/81Noaz0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1nTZlDdt0vVD9IjdDTL4EtmR99YopGjh8XCw4z/FW1VlVVw0qxZ354p2YQ4f+rNrx 74YqwV4EFmUsS6lwv/7yk9rbVBBdqmSgOBQzbHXK5eyf4TWAHGuOoAbPqUyjLmOenk s+f9SVReLfsGJEmn7GJ6fky65UYgtLYexxqxdQbo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Aili Yao , Sean Christopherson , Wanpeng Li , Paolo Bonzini , Sasha Levin Subject: [PATCH 5.15 099/135] KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is advertised Date: Tue, 10 May 2022 15:08:01 +0200 Message-Id: <20220510130743.249028835@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220510130740.392653815@linuxfoundation.org> References: <20220510130740.392653815@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 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 83d1743a1dd0..493d636e6231 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