Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3501114ybi; Fri, 5 Jul 2019 08:25:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqwIquadWgt+atEOBW838YfqdkIkknUKuKnFGkGu4vLyhAk0ch7N6FQtZo2S6Jy1E5tIT9w/ X-Received: by 2002:a17:902:8ec3:: with SMTP id x3mr6177059plo.313.1562340352569; Fri, 05 Jul 2019 08:25:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562340352; cv=none; d=google.com; s=arc-20160816; b=NagbNX+S/S1wK4xgzWaLUxUdJHC5SwXW8ka1J1+9/wieCI7qamHSeqeJVAUdouYiyO zydCV9NAx8IffsiwBbolh2Zr+uxlm1MBb9l7NyDK2UYCz0uX0f/kULHqq41lfLgB5VDq 4G82I467HS+PgetoPS9TCtQRZWi5k82zGg14JJOkfaq+UgIVE5Hn7i03fQ2rcERTIfyB k5ZD8mFUJd1YFzIXjpNY2yS3CgPnvQgvSYpYWm+OWce2K91T0VwoCJITVASsOuPE+XN4 8yjWf3hOCOYVZXrP7SDcdX1ZwyzDhzpWnBFK9vEEVStaa5YbwhUUCg+jGPHrvsQTf8wt SlOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=6+TO8x752f6vXrFXdGdKz2ORTM7cjlLRwSUng/658nA=; b=qW9JtqNpbBz61RfSCTy/vjtXtCIOusCMKBOr2KSC8gO91uYexixoPEqP5WUz91eOXS nEQpcEPZtlfJVR5EnPSY3XT8XbpYgFe9GjmMt0iBP7g2Q0+m3pWfW/jm4KtSn2VvSM8u 2Cy8TJ0pAkqWIiyzLp4DDo1mQOKOp1o4jPMl/TLCFuoi3K/ozkLtVVsXH5Cd++UFzjFQ TWhdF2CKABv7C51MxfaZ3J11VeFj5lWtSsvr+gVb7waRz1KZYilkUq9XY7qA1fQxk9xc nv+kuhclv+xAGGKaHiT57iTizEbVgagTj7F0rrLPhWoPGaQlmkWbs/Rk7OIBV7/99bSl K1NQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=DIE7h60j; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id s18si8617306plp.128.2019.07.05.08.25.37; Fri, 05 Jul 2019 08:25:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=DIE7h60j; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1727734AbfGEPXt (ORCPT + 99 others); Fri, 5 Jul 2019 11:23:49 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:41033 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726978AbfGEPXt (ORCPT ); Fri, 5 Jul 2019 11:23:49 -0400 Received: by mail-pg1-f194.google.com with SMTP id q4so4453864pgj.8; Fri, 05 Jul 2019 08:23:49 -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:mime-version :content-transfer-encoding; bh=6+TO8x752f6vXrFXdGdKz2ORTM7cjlLRwSUng/658nA=; b=DIE7h60jObGRoVc47IG9ZiNF+Bhmp2bJPyIuQ86xCO7ud4uMZiZZ4pxIEgtPMTBs3c o/VPeTbK7TQ+HE3OBIYwNt6w3vtzZDpHyps/w9JbDFsvFjLO4AqEJhAFhKGadjg/8iEN pVf2mgnFOnVye/zBr7JO76dYtZ5NoXA2x070oyH6YnL05qr3+WuVPi5lRTB9w7gMGE+W qBJOt0KFZR1UlVlVYCUBcLUJ9R2zdP4f/yM7d2tDh1cfZlM7neowt+1fto46TM2zII4/ sAMVAiEV+chBWUHPjD0/ivvM5CiShDokuUa5b9UbaVbMWH6dwbMx1IZSvuwaOEzA9OaN D66A== 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:mime-version :content-transfer-encoding; bh=6+TO8x752f6vXrFXdGdKz2ORTM7cjlLRwSUng/658nA=; b=VfF2LTfv/mdwtD4RWt/PFLO93ipxucPLJAE3v2veBdsQsZiN3KnzaS6Lp7Ylm+0y2w neXlyy5s1hEMvSILMUupMLXXVTJ3AZXvlR8DCQGm9cU+jhzK3UIrhx0AtoHyNKH3iapl siFlDLYYqDcXDuvnfOcztApRpCrpkePOABVza4KokqwzDeSvUdx9ebW8SJ2WlQkjBKZ2 23vNzhJUH2yeYu1WjCP7sZkl66Ru4sgQYQg3gke6IbSHxoz4wieHB0fctuhTthC9iYqm sjx3q8Gw6hHaFJKjWMLWZgHhipXfu4kb2FxUeJtGMCHWFnmD7zRG4K5wXxpFN69/uqrj CBpQ== X-Gm-Message-State: APjAAAVO3RSJC39O+YkscB9qmdzR2HZHyGSCqyK46i7mog9kUguRg8oH 9dESbVbLDg0SW6HmllffFWAhuxhSiyw= X-Received: by 2002:a63:5107:: with SMTP id f7mr6113640pgb.266.1562340228531; Fri, 05 Jul 2019 08:23:48 -0700 (PDT) Received: from localhost ([2409:8a00:7815:93e0:4a4d:7eff:feb0:5c9a]) by smtp.gmail.com with ESMTPSA id h1sm12203284pfg.55.2019.07.05.08.23.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Jul 2019 08:23:47 -0700 (PDT) From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= Subject: [PATCH v2] KVM: LAPIC: Retry tune per-vCPU timer_advance_ns if adaptive tuning goes insane Date: Fri, 5 Jul 2019 23:23:42 +0800 Message-Id: <1562340222-31324-1-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li Retry tune per-vCPU timer_advance_ns if adaptive tuning goes insane which can happen sporadically in product environment. Cc: Paolo Bonzini Cc: Radim Krčmář Signed-off-by: Wanpeng Li --- v1 -> v2: * retry max 10 times if adaptive tuning goes insane arch/x86/kvm/lapic.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 95affa5..bd0dbe5 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1538,6 +1538,7 @@ static inline void adjust_lapic_timer_advance(struct kvm_vcpu *vcpu, struct kvm_lapic *apic = vcpu->arch.apic; u32 timer_advance_ns = apic->lapic_timer.timer_advance_ns; u64 ns; + uint retry_count = 0; /* too early */ if (advance_expire_delta < 0) { @@ -1556,8 +1557,10 @@ static inline void adjust_lapic_timer_advance(struct kvm_vcpu *vcpu, if (abs(advance_expire_delta) < LAPIC_TIMER_ADVANCE_ADJUST_DONE) apic->lapic_timer.timer_advance_adjust_done = true; if (unlikely(timer_advance_ns > 5000)) { - timer_advance_ns = 0; - apic->lapic_timer.timer_advance_adjust_done = true; + timer_advance_ns = 1000; + apic->lapic_timer.timer_advance_adjust_done = false; + if (++retry_count > 10) + apic->lapic_timer.timer_advance_adjust_done = true; } apic->lapic_timer.timer_advance_ns = timer_advance_ns; } -- 1.8.3.1