Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4999625pxj; Wed, 12 May 2021 19:01:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxFxK4h6Uu9E0WlCttif/tdQ5sADbmg4He6nqGCsUEapeh3VwkPnbA/Rp0DnRzICK+CIG8w X-Received: by 2002:aa7:c382:: with SMTP id k2mr48048528edq.189.1620871280273; Wed, 12 May 2021 19:01:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620871280; cv=none; d=google.com; s=arc-20160816; b=kFzRbQ2pMgEVKrisveO+te7z9o4aH98lw9A7qZNO8gbC6pyY4OEGQKTr63IOUa1QCm spwepYe/uazoo+A7HXnV/M8eX76ZALtlWrXnnm5YChQ1Bsa9mn63yDoN7CFLcMZakkmH +ImYXgLHwNOl4hFJdyJnPeVOmZ6STWKZIyZ7YNpv+Z2SYdwfHeQ+Jop8TaTgNJSp3+Xn efwtdyxrd1E3KxtoHRpzFLa4gtGmOZcU3FzbNH17oDe4AjUzlwR8GAyLvOkXDqfR6s+W hgBRb+Kpy7IJDn43/olQr2lWKYw2iR4/6+M3Vzkzxo4Ds1xm0ZOamqwlH8gU36QIirS9 qerg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=s6yds0eAnM4G0Wdu571RvhPi3TKjI+npGap0XFILkfE=; b=v+JNiOwY23e1li3sD647B+n6ylDDt88YRQ1TX/jQ6bhT9TBuDAUaTkjw9ewUVgBgTy 68vNCd9oGaLNfGV8mja8zhPoyg5f8W9Hm8a0jeORHUpGAvDRNtgNwMw5w+pDJs4hpVvT rPLcQjg2Y/jJxhFvWZUBJGeLTIlonFO79D0QyabFPkBRoPvm58TL9w19SHTr9GYarCJw pOAtJlHO2GlJXNGaWUvW7jJpa1Ei0abZnhprgxA3D+OG21rfbJB844VyJuW6Ejgsp9NN j9IAbw5XJMnWIUwM6yPjyo+j4UXv9vCEHMHirzRqXhDD074qoTZysh8IQm80sWbmH1bA 5+Vg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=klaPh4iM; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y14si1542337edd.373.2021.05.12.19.00.55; Wed, 12 May 2021 19:01:20 -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=@gmail.com header.s=20161025 header.b=klaPh4iM; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229877AbhEMB7a (ORCPT + 99 others); Wed, 12 May 2021 21:59:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229801AbhEMB71 (ORCPT ); Wed, 12 May 2021 21:59:27 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86107C061574; Wed, 12 May 2021 18:58:17 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id c13so6829360pfv.4; Wed, 12 May 2021 18:58:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=s6yds0eAnM4G0Wdu571RvhPi3TKjI+npGap0XFILkfE=; b=klaPh4iM4ryJKcK4ak5Gfiffhss4QGvganMQRvxA3qZPdfc3DZscvNZalHS2iYY7l7 eh7k3GoMAAuKHe4bKB7A2eIgoI5YkAhZbeevFgMnQzAniRwfzgmKbrXup6XMFcuJXzuH OTlFUIcDR5se3vDF+RbYMJYyBuY5lpPA70fczLto5JJvhn+VQnWUDFXrYzSWT9dJ2oC+ bYVn24RIOEWg2b48Qn3ScdJAyLMfMnOOUtnHVJqAmMP/lqcWIHUXK1eQJNwma3vxR9FZ cSwcvzxAwEXITjApPsOQginDTlbi1fzYtvh0sB9yAoez58SOwXoF5cuRkZ6ZGJQIblYE Qxbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=s6yds0eAnM4G0Wdu571RvhPi3TKjI+npGap0XFILkfE=; b=dpfba45GmFGAh0uE1qSEakZRVq9vIFCvbZz3v4rq8I/ZyRQ/xRblrR5pdf6hHgwdh3 5blhSSVvu1drDNzHFIpPl4XvUzA7uctGho9Ow6Mxzwr/cgZhnF/y/ffqqWGpCszga/XN /wHU5x2LuuDVyeiD4AdL12xfIDoXKYlFZtmmwz4bpvWYVZnW/+Rxe/F/Q4grxOwfDOUf 80CAJHgBWrYP10Q8uy9JE9GqwA6kcAUKe8VS+u2OEM/TzoJOX0yxBvYnrF6rQ/jYYnld /1iWyop8ffVGau9hQIOBPk84fHEZgQ6aZd+Q5sfuT3x6M7c3GElQKRS6f3bvSAwePVT4 5m1A== X-Gm-Message-State: AOAM533Brl+1339A0uPd18e5vaL0d4PJGtRUCwxjA61qyDSuvK+zHWIr bvwhQh9/FAj6clDw5ohADCpvWNfiJoo= X-Received: by 2002:a17:90a:fd95:: with SMTP id cx21mr1777447pjb.137.1620871096858; Wed, 12 May 2021 18:58:16 -0700 (PDT) Received: from localhost.localdomain ([103.7.29.6]) by smtp.googlemail.com with ESMTPSA id b7sm799560pjq.36.2021.05.12.18.58.12 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 May 2021 18:58:15 -0700 (PDT) From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Paolo Bonzini , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , Ben Segall , Venkatesh Srinivas , David Matlack , Paul Mackerras , Suraj Jitindar Singh Subject: [PATCH v2 1/4] KVM: PPC: Book3S HV: exit halt polling on need_resched() as well Date: Thu, 13 May 2021 09:58:04 +0800 Message-Id: <1620871084-4639-1-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li Inspired by commit 262de4102c7bb8 (kvm: exit halt polling on need_resched() as well), CFS_BANDWIDTH throttling will use resched_task() when there is just one task to get the task to block. It was likely allowing VMs to overrun their quota when halt polling. Due to PPC implements an arch specific halt polling logic, we should add the need_resched() checking there as well. Cc: Ben Segall Cc: Venkatesh Srinivas Cc: Jim Mattson Cc: David Matlack Cc: Paul Mackerras Cc: Suraj Jitindar Singh Signed-off-by: Wanpeng Li --- v1 -> v2: * update patch description arch/powerpc/kvm/book3s_hv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 28a80d2..6199397 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -3936,7 +3936,8 @@ static void kvmppc_vcore_blocked(struct kvmppc_vcore *vc) break; } cur = ktime_get(); - } while (single_task_running() && ktime_before(cur, stop)); + } while (single_task_running() && !need_resched() && + ktime_before(cur, stop)); spin_lock(&vc->lock); vc->vcore_state = VCORE_INACTIVE; -- 2.7.4