Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp2274099pxb; Fri, 8 Oct 2021 04:43:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWOId5Yp4UlOX6ID+45XXMeBJP9S0oV3CR4XarB3vw5OOkhFvzpIULlBTK7Qd8uW2AAGSW X-Received: by 2002:a63:4f57:: with SMTP id p23mr4272239pgl.376.1633693394536; Fri, 08 Oct 2021 04:43:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633693394; cv=none; d=google.com; s=arc-20160816; b=JO0kCyL+tl4eMxRmR5ee/f549E09gFpIgjSCNd1rd7YbvlmmlfYiObuz6jw9CWXnmc 0fpGZ5Z2CY2oEGC8GK3WnGCOWQ98dMFMCmDSKjvgUuzBBToveVtN7MsIl58sBf6Pgq6Z P+NBUtawNvFKao+t3bz0O/6GVrvPhwbUUxCMUuFWH1pT/3eXGhG55U/0AdLxbhgLUHUN JMLBKs+7XpM1VJzHN36NzfUBeiwDLUHSWTYyxZD04ICGbKafiOzy+8dQVLrd18c6UffI ql+iTQDRg9ozRl0zXfyHPsgUnr+icXKnaZBUiUm2nopOZjCiKzavw53evhaV/Dq5g3IM xmDg== 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=1wt+vPzwDZVKaSZSLWseYeIQ9mgHKEu/fSc1oY21Akc=; b=xLLZrXRfGvrv4uam2ib+kwRSVQpt0oOWIRjpz2C5Z50zJOUFPAHD4dEjBDNdGBWtCO WVrmBszGFgy5FAPONr6HloLPBnYgcrWTGEduKxyan15eaEIpBfAuFCJ3HCLrniz2CysH NDZE0LgINeRzM4Y9+UVqriWKvku/0+axsue5dmMbTaKSaUBEJMVxcNwtqpWjsBbcoD5W RbdvY9fq2Sh/yJQIv9JjOvV4yXWamVLc7bO2EVH5e0XSbsZQorKlfLxd0qXju0RQckhE C014JFklzEHtiIjvixe24fwZFNk3IO+gPE3XhRaECmV4131xZW/n9K0rFq1/Ih9IU12N 0GrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=uv638qhi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b10si1081144pfm.351.2021.10.08.04.43.01; Fri, 08 Oct 2021 04:43:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=uv638qhi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S240374AbhJHLnD (ORCPT + 99 others); Fri, 8 Oct 2021 07:43:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:39524 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243283AbhJHLjI (ORCPT ); Fri, 8 Oct 2021 07:39:08 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D4582615E6; Fri, 8 Oct 2021 11:33:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1633692810; bh=/g68fCW7EKslGzoBlnuOAln9+zqm7mdEjmeXMxWP0lw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uv638qhi68EB/uxcMm1l/5JODBqnB8i5aIJST22mP7TBSGyTEscczcvyfJjKkfDke EnpCbEt2XiofbzUl86qlTiGfQo9Eh4/wFagDEJK8WLg4UYzbB4uGmp42xejTTZtmOT idYmWDnNgZLzW9xWipZl7QTDBrptxKihPs/KcqnU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sergey Senozhatsky , Paolo Bonzini , Sasha Levin Subject: [PATCH 5.14 41/48] KVM: do not shrink halt_poll_ns below grow_start Date: Fri, 8 Oct 2021 13:28:17 +0200 Message-Id: <20211008112721.413969911@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211008112720.008415452@linuxfoundation.org> References: <20211008112720.008415452@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sergey Senozhatsky [ Upstream commit ae232ea460888dc5a8b37e840c553b02521fbf18 ] grow_halt_poll_ns() ignores values between 0 and halt_poll_ns_grow_start (10000 by default). However, when we shrink halt_poll_ns we may fall way below halt_poll_ns_grow_start and endup with halt_poll_ns values that don't make a lot of sense: like 1 or 9, or 19. VCPU1 trace (halt_poll_ns_shrink equals 2): VCPU1 grow 10000 VCPU1 shrink 5000 VCPU1 shrink 2500 VCPU1 shrink 1250 VCPU1 shrink 625 VCPU1 shrink 312 VCPU1 shrink 156 VCPU1 shrink 78 VCPU1 shrink 39 VCPU1 shrink 19 VCPU1 shrink 9 VCPU1 shrink 4 Mirror what grow_halt_poll_ns() does and set halt_poll_ns to 0 as soon as new shrink-ed halt_poll_ns value falls below halt_poll_ns_grow_start. Signed-off-by: Sergey Senozhatsky Signed-off-by: Paolo Bonzini Message-Id: <20210902031100.252080-1-senozhatsky@chromium.org> Signed-off-by: Paolo Bonzini Signed-off-by: Sasha Levin --- virt/kvm/kvm_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index b50dbe269f4b..1a11dcb670a3 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -3053,15 +3053,19 @@ out: static void shrink_halt_poll_ns(struct kvm_vcpu *vcpu) { - unsigned int old, val, shrink; + unsigned int old, val, shrink, grow_start; old = val = vcpu->halt_poll_ns; shrink = READ_ONCE(halt_poll_ns_shrink); + grow_start = READ_ONCE(halt_poll_ns_grow_start); if (shrink == 0) val = 0; else val /= shrink; + if (val < grow_start) + val = 0; + vcpu->halt_poll_ns = val; trace_kvm_halt_poll_ns_shrink(vcpu->vcpu_id, val, old); } -- 2.33.0