From patchwork Wed Jun 12 09:35:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wanpeng Li X-Patchwork-Id: 10989199 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4F1501515 for ; Wed, 12 Jun 2019 09:36:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3BD4E1FE82 for ; Wed, 12 Jun 2019 09:36:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 301FD28A11; Wed, 12 Jun 2019 09:36:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A5C3B1FE82 for ; Wed, 12 Jun 2019 09:36:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437467AbfFLJgN (ORCPT ); Wed, 12 Jun 2019 05:36:13 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:43711 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2436605AbfFLJgM (ORCPT ); Wed, 12 Jun 2019 05:36:12 -0400 Received: by mail-pf1-f195.google.com with SMTP id i189so9308016pfg.10; Wed, 12 Jun 2019 02:36:11 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=88lmluIaE7kKZILXvo6NHqb4oRYbdykbJ9/sXwZnO1M=; b=UxcPVoPge84gHKa9lkF71A9zos8xXimiSmSTNVkzubPoS7hwAzD8wS4pBLPW/GPQCd NqSjLmqqRUQeGzpC2IdQHwMcgNocDNceuU4XUhWuX9T/c5uLsb8ekeSgYhsA68KPBpdQ UwFnsLEG/VCauoc757MpET1YncY8eFTZ3qTJVgp95Rs6IkuqsDfGnsUq0ZWOrsiVX84b wdnmvsVCfOjCn7Sb9lOb+Wgf37S0IMwXUVEhbzzbuZD7RhJXWke4GvHHYXDICCt4KpW8 WfY1CA3apdDOMSNOfUkETH+FfhdmdDfcJBoxytO1RGBnLt16vLRbcWcu/0xLvD0zcOOv 8NqA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=88lmluIaE7kKZILXvo6NHqb4oRYbdykbJ9/sXwZnO1M=; b=LXegbZnSYVvHTm0VYfSvkNXh4+ZpYTew82te+sBfRbW+7oQwyTfshDNt7jfS/pRgIa T+330vZb3FXkLUc4gT3nrCitjO/Ex5Xs2iqNI1Z+NW2ZDYbxiodY9ttt+B16MOG++hdA 2xAwaUTs+emFp7fHnVaaNTnuj9RM7R9+ApLSP73fyA7vpJCUgsalUsFM2goK4sJU+uxt MfNYPcTZ5mGOsod5SV67/Jb06Nde7YlVXBb9Szpq0lhHtUfg7I0x+7HdbCb9Mu5i13PY FV03difH5leVVxIXxBASEDoiK+N977SlhjjMTjhFbt9N1yYhqxbIJu5L6Cp53UElwUEX Kkqg== X-Gm-Message-State: APjAAAWFwKNpn2Vd2C7xd9OJnuNUPQca9iiyrg22EqXUWpZLU6VFM33z r0M8CWrDajQHrlXD7YLtyFdZMpQB X-Google-Smtp-Source: APXvYqzx6SQmo43U9ZA704N0c1Y0btJ8Y2tYi1EoZ4svBE7THvNxsSr+dDoHWQ5xMnqNWUgLTVLzVw== X-Received: by 2002:a62:ce4f:: with SMTP id y76mr2602196pfg.21.1560332171442; Wed, 12 Jun 2019 02:36:11 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id 27sm6148936pgl.82.2019.06.12.02.36.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 12 Jun 2019 02:36:10 -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?b?UmFkaW0gS3LEjW3DocWZ?= , Sean Christopherson , Liran Alon Subject: [PATCH v3 1/5] KVM: LAPIC: Extract adaptive tune timer advancement logic Date: Wed, 12 Jun 2019 17:35:56 +0800 Message-Id: <1560332160-17050-2-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> References: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Wanpeng Li Extract adaptive tune timer advancement logic to a single function. Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Sean Christopherson Cc: Liran Alon Signed-off-by: Wanpeng Li --- arch/x86/kvm/lapic.c | 57 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index bd13fdd..2f364fe 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1501,11 +1501,40 @@ static inline void __wait_lapic_expire(struct kvm_vcpu *vcpu, u64 guest_cycles) } } -void wait_lapic_expire(struct kvm_vcpu *vcpu) +static inline void adaptive_tune_timer_advancement(struct kvm_vcpu *vcpu, + u64 guest_tsc, u64 tsc_deadline) { struct kvm_lapic *apic = vcpu->arch.apic; u32 timer_advance_ns = apic->lapic_timer.timer_advance_ns; - u64 guest_tsc, tsc_deadline, ns; + u64 ns; + + /* too early */ + if (guest_tsc < tsc_deadline) { + ns = (tsc_deadline - guest_tsc) * 1000000ULL; + do_div(ns, vcpu->arch.virtual_tsc_khz); + timer_advance_ns -= min((u32)ns, + timer_advance_ns / LAPIC_TIMER_ADVANCE_ADJUST_STEP); + } else { + /* too late */ + ns = (guest_tsc - tsc_deadline) * 1000000ULL; + do_div(ns, vcpu->arch.virtual_tsc_khz); + timer_advance_ns += min((u32)ns, + timer_advance_ns / LAPIC_TIMER_ADVANCE_ADJUST_STEP); + } + + if (abs(guest_tsc - tsc_deadline) < 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; + } + apic->lapic_timer.timer_advance_ns = timer_advance_ns; +} + +void wait_lapic_expire(struct kvm_vcpu *vcpu) +{ + struct kvm_lapic *apic = vcpu->arch.apic; + u64 guest_tsc, tsc_deadline; if (apic->lapic_timer.expired_tscdeadline == 0) return; @@ -1521,28 +1550,8 @@ void wait_lapic_expire(struct kvm_vcpu *vcpu) if (guest_tsc < tsc_deadline) __wait_lapic_expire(vcpu, tsc_deadline - guest_tsc); - if (!apic->lapic_timer.timer_advance_adjust_done) { - /* too early */ - if (guest_tsc < tsc_deadline) { - ns = (tsc_deadline - guest_tsc) * 1000000ULL; - do_div(ns, vcpu->arch.virtual_tsc_khz); - timer_advance_ns -= min((u32)ns, - timer_advance_ns / LAPIC_TIMER_ADVANCE_ADJUST_STEP); - } else { - /* too late */ - ns = (guest_tsc - tsc_deadline) * 1000000ULL; - do_div(ns, vcpu->arch.virtual_tsc_khz); - timer_advance_ns += min((u32)ns, - timer_advance_ns / LAPIC_TIMER_ADVANCE_ADJUST_STEP); - } - if (abs(guest_tsc - tsc_deadline) < 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; - } - apic->lapic_timer.timer_advance_ns = timer_advance_ns; - } + if (unlikely(!apic->lapic_timer.timer_advance_adjust_done)) + adaptive_tune_timer_advancement(vcpu, guest_tsc, tsc_deadline); } static void start_sw_tscdeadline(struct kvm_lapic *apic) From patchwork Wed Jun 12 09:35:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wanpeng Li X-Patchwork-Id: 10989191 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 98C911515 for ; Wed, 12 Jun 2019 09:36:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 82B4C289FC for ; Wed, 12 Jun 2019 09:36:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7303D28A11; Wed, 12 Jun 2019 09:36:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0CEC9289FC for ; Wed, 12 Jun 2019 09:36:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437483AbfFLJgQ (ORCPT ); Wed, 12 Jun 2019 05:36:16 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:39254 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2436605AbfFLJgO (ORCPT ); Wed, 12 Jun 2019 05:36:14 -0400 Received: by mail-pl1-f193.google.com with SMTP id b7so1358835pls.6; Wed, 12 Jun 2019 02:36:14 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=SwGzI5XfH1K4vXAfrjZTodx1XMnoUAT4N0Igdk71XCY=; b=NgfU4ZvFIHAUa5XZscShQ8Z4CDQi0RfI7OWOhoKSu845QOerJAzhH+x01UDUvbyPJi 3kCOGHyPT9KgoEqEf2SDAiiphUbOvUWlx+EW5PsIj3pUsOPZyexqX9kt2lPV0xmrszeo eG+EQAD0Rczv7z7k5L+sFF8GvbUDYD/BgruBmHgEdgQTAUyzFOe5lwk4hY+I80MTOsiH AMEGMTiMrEwVJ89g0G1CnBvjBsxOCwW+zNxTy0FkV4/6ISJqAghOrN+eULBmTrKYiDeD XgDbMOdHNVf2su+s3jYYlVodcq43xMNfIFODRB1RYsh+7sp0UBBfPo4b9tvHLWsMbtK2 ttvA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=SwGzI5XfH1K4vXAfrjZTodx1XMnoUAT4N0Igdk71XCY=; b=Ln8oLsZ2E+wiZLYGLzyhWm3W1FJOgSWAKl2yJIK846Mu3EQ9Lf73Fs1W2jPaUq6jkg DNth/9m6bFXGMogZ7qzqzFBpXkMuXIF5EsRXv/2D6uBaqlrYdMKA/TXTPZqWpBYGZG9Q 6y29+TuQzqytFzw6mX9gGbX+90C+AOtKXaAW7gJAm3FQAVf22QA9e+GpWP6d78xi+CEh JSslnsX62N34Ut3S4Van2rVigNCgKWD9B1Cdt1i+l81vI0j7mN7BqgyDuLGEKzyspfGm dbn+ReDaE/lGdDoPF1jJzMMNtFfqogB9bRWRKkU6f+yMm4EOgcqowRx247aO9hy7FHl7 cpPg== X-Gm-Message-State: APjAAAWSZOAb+h9n88uWvgy2Se4e9k0ubjdVqD82fh4muaPD/FGijI1v xo32f879IKnfBOcSTqR3zLvm34pq X-Google-Smtp-Source: APXvYqwe4WQfg2VoWySAJ68UC5vy7Xn4AHB9eF6MZhzn51pcH+zW9OtDTV4KI9OyjcYMOdc86dfu+Q== X-Received: by 2002:a17:902:4906:: with SMTP id u6mr81809848pld.220.1560332173747; Wed, 12 Jun 2019 02:36:13 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id 27sm6148936pgl.82.2019.06.12.02.36.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 12 Jun 2019 02:36:13 -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?b?UmFkaW0gS3LEjW3DocWZ?= , Sean Christopherson , Liran Alon Subject: [PATCH v3 2/5] KVM: LAPIC: Fix lapic_timer_advance_ns parameter overflow Date: Wed, 12 Jun 2019 17:35:57 +0800 Message-Id: <1560332160-17050-3-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> References: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Wanpeng Li After commit c3941d9e0 (KVM: lapic: Allow user to disable adaptive tuning of timer advancement), '-1' enables adaptive tuning starting from default advancment of 1000ns. However, we should expose an int instead of an overflow uint module parameter. Before patch: /sys/module/kvm/parameters/lapic_timer_advance_ns:4294967295 After patch: /sys/module/kvm/parameters/lapic_timer_advance_ns:-1 Fixes: c3941d9e0 (KVM: lapic: Allow user to disable adaptive tuning of timer advancement) Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Sean Christopherson Cc: Liran Alon Reviewed-by: Sean Christopherson Signed-off-by: Wanpeng Li --- arch/x86/kvm/x86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index b63e7b0..f2e3847 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -143,7 +143,7 @@ module_param(tsc_tolerance_ppm, uint, S_IRUGO | S_IWUSR); * tuning, i.e. allows priveleged userspace to set an exact advancement time. */ static int __read_mostly lapic_timer_advance_ns = -1; -module_param(lapic_timer_advance_ns, uint, S_IRUGO | S_IWUSR); +module_param(lapic_timer_advance_ns, int, S_IRUGO | S_IWUSR); static bool __read_mostly vector_hashing = true; module_param(vector_hashing, bool, S_IRUGO); From patchwork Wed Jun 12 09:35:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wanpeng Li X-Patchwork-Id: 10989197 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CB28B1515 for ; Wed, 12 Jun 2019 09:36:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B7A421FE82 for ; Wed, 12 Jun 2019 09:36:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A9BDC28A0B; Wed, 12 Jun 2019 09:36:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5252C1FE82 for ; Wed, 12 Jun 2019 09:36:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437497AbfFLJgS (ORCPT ); Wed, 12 Jun 2019 05:36:18 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:40601 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437492AbfFLJgR (ORCPT ); Wed, 12 Jun 2019 05:36:17 -0400 Received: by mail-pf1-f195.google.com with SMTP id p184so6028137pfp.7; Wed, 12 Jun 2019 02:36:16 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=wj3VoxcHtEUUOCOJDV3/IkQEZy74zBF0y5Hje4ka4G0=; b=BArrchFGj6F74ig6hTmStuzxFhPJZ6KsJshUxbEvyOuupxfYrF/zBfR30N0pk4xOcc teBMuzm0l1m45daeHUX3burBPW8WV0zQUWK2fXvQgPo9W4h9BO4PCQ1Ia/PGZ2hN03jf s7DQeahfa7guryuQtUJFgjNrVF6oVMTYGZKmpI8Yn5Ki75NW+mVqh++1OSJWj4TDbBma l3zs/7tK+4xiQBcdlaV5wZTIbEfSsP3BBMvaWYqDjjrurbWA7xnZE7F7YC4Tx6ThqCfi dhvILUbH7Lrk+zjxMD063GWv/UXtJXrQzxkQJZ6K2zFVPWMJsGg3Tqx9JYAIVdu1xIc3 Ptrw== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=wj3VoxcHtEUUOCOJDV3/IkQEZy74zBF0y5Hje4ka4G0=; b=Sqev87SSwkejeclVkIx3S3CO69wFcjAys7uHrOfDnwkOqscVpkI59aTnyhGKNIym68 GAN8yftrvJcDDg0uTvXTaMlJB0D2SvvYS8twjZz5ONXJCm1cccg2rfWGHBjnVz9eDgvz NDgyxOabAiGW4on/M530LZ4tCbZu33rver2rKxjOQ0DnZn4f4aikdLNJT2G97rskpr/1 FmiWJCHeg2AmbbTEeHBML0oFvqezJVUOrYWhD0R+6KIhW+Y9uee1ILJgh5mMfhQ9MGbn OFOfMPbr020CF1uQ6iKfivebmHLbbfg70Ssi2NUL+95Rsus0u1qzC18p5FUYTmecI0Aa HuDg== X-Gm-Message-State: APjAAAXgTi7vRcM/Fi3tyv8mezsvIhvVL7QnmGxg3pPI2XPMqJYZG2U5 sNSff1ErdcEh+pIGJSmIJLaVRCsD X-Google-Smtp-Source: APXvYqxTtyS104EAy9EwtxxJYRYGAk5uwX2n69Tncivk7HrW3qgfKd4Wufam3aLANzkOY2bRbu3MuQ== X-Received: by 2002:a63:6105:: with SMTP id v5mr24291696pgb.312.1560332176123; Wed, 12 Jun 2019 02:36:16 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id 27sm6148936pgl.82.2019.06.12.02.36.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 12 Jun 2019 02:36: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 , =?utf-8?b?UmFkaW0gS3LEjW3DocWZ?= , Sean Christopherson , Liran Alon Subject: [PATCH v3 3/5] KVM: LAPIC: Expose per-vCPU timer_advance_ns to userspace Date: Wed, 12 Jun 2019 17:35:58 +0800 Message-Id: <1560332160-17050-4-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> References: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Wanpeng Li Expose per-vCPU timer_advance_ns to userspace, so it is able to query the auto-adjusted value. Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Sean Christopherson Cc: Liran Alon Signed-off-by: Wanpeng Li --- arch/x86/kvm/debugfs.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/x86/kvm/debugfs.c b/arch/x86/kvm/debugfs.c index c19c7ed..a6f1f93 100644 --- a/arch/x86/kvm/debugfs.c +++ b/arch/x86/kvm/debugfs.c @@ -9,12 +9,22 @@ */ #include #include +#include "lapic.h" bool kvm_arch_has_vcpu_debugfs(void) { return true; } +static int vcpu_get_timer_advance_ns(void *data, u64 *val) +{ + struct kvm_vcpu *vcpu = (struct kvm_vcpu *) data; + *val = vcpu->arch.apic->lapic_timer.timer_advance_ns; + return 0; +} + +DEFINE_SIMPLE_ATTRIBUTE(vcpu_timer_advance_ns_fops, vcpu_get_timer_advance_ns, NULL, "%llu\n"); + static int vcpu_get_tsc_offset(void *data, u64 *val) { struct kvm_vcpu *vcpu = (struct kvm_vcpu *) data; @@ -51,6 +61,12 @@ int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu) if (!ret) return -ENOMEM; + ret = debugfs_create_file("lapic_timer_advance_ns", 0444, + vcpu->debugfs_dentry, + vcpu, &vcpu_timer_advance_ns_fops); + if (!ret) + return -ENOMEM; + if (kvm_has_tsc_control) { ret = debugfs_create_file("tsc-scaling-ratio", 0444, vcpu->debugfs_dentry, From patchwork Wed Jun 12 09:35:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wanpeng Li X-Patchwork-Id: 10989195 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CF62213AF for ; Wed, 12 Jun 2019 09:36:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BAE311FE82 for ; Wed, 12 Jun 2019 09:36:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AE42628A0B; Wed, 12 Jun 2019 09:36:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2D7861FE82 for ; Wed, 12 Jun 2019 09:36:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437512AbfFLJgU (ORCPT ); Wed, 12 Jun 2019 05:36:20 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:39955 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437503AbfFLJgT (ORCPT ); Wed, 12 Jun 2019 05:36:19 -0400 Received: by mail-pl1-f193.google.com with SMTP id a93so6408628pla.7; Wed, 12 Jun 2019 02:36:19 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=XpEnBE6bGmJdt1K4+jFodyaadPKkbgqY+88bNzccZ0Y=; b=RX83D3kfSfz2ttjlAg5kltFuEKTsQhd1Hp5CMH+sKKNjyV2R/nRdt03FHbCoCHbeH2 c2CHMzShfy4JUsNBWNlCPOSWs/Kboo5aA6J21/TWY0k183hs4PJDvkj71drzOwBsUxXg OSWvXPtlEArFMeKzYgEyCR30N1fpfArZRO1Mb/bRXdx2MPW3dyzJ5NfWJMJsxvQYuJSM IeUCIOKgRt0+h9yLAVRgVJ0Lo51GQXxz2+9hGm4Ddb01aTWRsARZTsslcf+MmFiQ82BR LgKWuQ03cB7t4PlT+hIZUWgwKMbobcO1Eyf25d2uDAm+l5eH4IPuRICTCtbDJQlyhzbi 2sHQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=XpEnBE6bGmJdt1K4+jFodyaadPKkbgqY+88bNzccZ0Y=; b=mZEAB4UoJC9mJWTBYCu03wlVRc7yZltnLDSSrMG4i2wRmbkLY9uK7BcUT3jbnEZ4ZY Xvla1Rc3rKABz/W1aolj3LWl+G0tcCtPkv2tNPTqa8Sn5vwXhkCU66hPf4NtAk7aYsUG iCi26qrsWnauQELw8mxF8/ZEP8fs/gr1Ev8+qrN8JOAKuVzsQcmjSOHFDOM/DBWXaRly uKSC40HzJtRxockCnPz/ssG5yYD2zs6tzwLuQoN+QZ08jMTj+DYOl3U4iyF4QdkaRRrW LugHhSt9x+jgaM4dpTZ1yI7V7vIFffuNlAF+Of0tF20otuUSN4jOP+/1StIiAUHw125X XTng== X-Gm-Message-State: APjAAAUO1WARUpZ5+r5HQVszdNX9SBG2aQWjR+yD5+8pDxoDDOE2ATKC yudb7RyZ8nZNJHMFPJHWJa+jZ9fL X-Google-Smtp-Source: APXvYqxW/4jY4bnjpg3tE9zUuZVmrDGHHptuTCc/LGAfkeBoJ6/NCjAgSZNHsfZYNVckFCL4nO+U5Q== X-Received: by 2002:a17:902:ba82:: with SMTP id k2mr73161407pls.323.1560332178485; Wed, 12 Jun 2019 02:36:18 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id 27sm6148936pgl.82.2019.06.12.02.36.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 12 Jun 2019 02:36:18 -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?b?UmFkaW0gS3LEjW3DocWZ?= , Sean Christopherson , Liran Alon Subject: [PATCH v3 4/5] KVM: LAPIC: Delay trace advance expire delta Date: Wed, 12 Jun 2019 17:35:59 +0800 Message-Id: <1560332160-17050-5-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> References: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Wanpeng Li wait_lapic_expire() call was moved above guest_enter_irqoff() because of its tracepoint, which violated the RCU extended quiescent state invoked by guest_enter_irqoff()[1][2]. This patch simply moves the tracepoint below guest_exit_irqoff() in vcpu_enter_guest(). Snapshot the delta before VM-Enter, but trace it after VM-Exit. This can help us to move wait_lapic_expire() just before vmentry in the later patch. [1] Commit 8b89fe1f6c43 ("kvm: x86: move tracepoints outside extended quiescent state") [2] https://patchwork.kernel.org/patch/7821111/ Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Sean Christopherson Cc: Liran Alon Signed-off-by: Wanpeng Li --- arch/x86/kvm/lapic.c | 16 ++++++++-------- arch/x86/kvm/lapic.h | 1 + arch/x86/kvm/x86.c | 2 ++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 2f364fe..af38ece 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1502,27 +1502,27 @@ static inline void __wait_lapic_expire(struct kvm_vcpu *vcpu, u64 guest_cycles) } static inline void adaptive_tune_timer_advancement(struct kvm_vcpu *vcpu, - u64 guest_tsc, u64 tsc_deadline) + s64 advance_expire_delta) { struct kvm_lapic *apic = vcpu->arch.apic; u32 timer_advance_ns = apic->lapic_timer.timer_advance_ns; u64 ns; /* too early */ - if (guest_tsc < tsc_deadline) { - ns = (tsc_deadline - guest_tsc) * 1000000ULL; + if (advance_expire_delta < 0) { + ns = -advance_expire_delta * 1000000ULL; do_div(ns, vcpu->arch.virtual_tsc_khz); timer_advance_ns -= min((u32)ns, timer_advance_ns / LAPIC_TIMER_ADVANCE_ADJUST_STEP); } else { /* too late */ - ns = (guest_tsc - tsc_deadline) * 1000000ULL; + ns = advance_expire_delta * 1000000ULL; do_div(ns, vcpu->arch.virtual_tsc_khz); timer_advance_ns += min((u32)ns, timer_advance_ns / LAPIC_TIMER_ADVANCE_ADJUST_STEP); } - if (abs(guest_tsc - tsc_deadline) < LAPIC_TIMER_ADVANCE_ADJUST_DONE) + 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; @@ -1545,13 +1545,13 @@ void wait_lapic_expire(struct kvm_vcpu *vcpu) tsc_deadline = apic->lapic_timer.expired_tscdeadline; apic->lapic_timer.expired_tscdeadline = 0; guest_tsc = kvm_read_l1_tsc(vcpu, rdtsc()); - trace_kvm_wait_lapic_expire(vcpu->vcpu_id, guest_tsc - tsc_deadline); + apic->lapic_timer.advance_expire_delta = guest_tsc - tsc_deadline; - if (guest_tsc < tsc_deadline) + if (apic->lapic_timer.advance_expire_delta < 0) __wait_lapic_expire(vcpu, tsc_deadline - guest_tsc); if (unlikely(!apic->lapic_timer.timer_advance_adjust_done)) - adaptive_tune_timer_advancement(vcpu, guest_tsc, tsc_deadline); + adaptive_tune_timer_advancement(vcpu, apic->lapic_timer.advance_expire_delta); } static void start_sw_tscdeadline(struct kvm_lapic *apic) diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h index d6d049b..3e72a25 100644 --- a/arch/x86/kvm/lapic.h +++ b/arch/x86/kvm/lapic.h @@ -32,6 +32,7 @@ struct kvm_timer { u64 tscdeadline; u64 expired_tscdeadline; u32 timer_advance_ns; + s64 advance_expire_delta; atomic_t pending; /* accumulated triggered timers */ bool hv_timer_in_use; bool timer_advance_adjust_done; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f2e3847..4a7b00c 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7961,6 +7961,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) ++vcpu->stat.exits; guest_exit_irqoff(); + trace_kvm_wait_lapic_expire(vcpu->vcpu_id, + vcpu->arch.apic->lapic_timer.advance_expire_delta); local_irq_enable(); preempt_enable(); From patchwork Wed Jun 12 09:36:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wanpeng Li X-Patchwork-Id: 10989193 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D62E81515 for ; Wed, 12 Jun 2019 09:36:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C0A931FE82 for ; Wed, 12 Jun 2019 09:36:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B352228A0B; Wed, 12 Jun 2019 09:36:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2B8DF1FE82 for ; Wed, 12 Jun 2019 09:36:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437530AbfFLJgX (ORCPT ); Wed, 12 Jun 2019 05:36:23 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:46919 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437517AbfFLJgV (ORCPT ); Wed, 12 Jun 2019 05:36:21 -0400 Received: by mail-pl1-f194.google.com with SMTP id e5so6393086pls.13; Wed, 12 Jun 2019 02:36:21 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=8Dqc/R6tA+VMXmtA2D7t9ERetiSobjxfaHTvZxh87cs=; b=ogvmdw8xHe041JGpZDrMyNMTMo403aGh6dtmODfjXYMSWl/FMLryX5X8fxEErLDW0V NnVO7lEcxjvhnzsiJ7GYzXl/5bRpAxN7mJfjQdWziIE4UIUKr+ZiegjeP1oiztRF4OoN xCxacdDxIuOnIYIF3PWA+SPiRpu9NhRA3FPPEoXoyxIxdjoy5saiTQWGC7Wgdo4QaZif 9Dkwfyr3P9FVBZQQUcySXMInu7qxfhmHwlws5m77HFWzm3WqZ7gVS7VqjzCQMN0tJ2Va HXT56szHTYf5LNjNafY2jRMymy1kEtSMqQ0RQ1uxJRb4Mmy1og9BwZU/CjMBR6zqdliV dmbw== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=8Dqc/R6tA+VMXmtA2D7t9ERetiSobjxfaHTvZxh87cs=; b=EhSdwdZ34foqIGzDMYEhoNcRoywsT5aE9//ByyXtyq58VMwZtZBTq8X887DL3dDFXu TcEnOs37eB0B1rzQrWO3L5EtlMFF6Uybs7/ORhIa2EGyT80r6xalludtPXAG+3vtS7nl GFrcwehySeeqy4XxTmgJu2Ai5v3lPcryAa+y2Pa/tSpW0FtzqI/95d0RSNOWig9HMrbP EoTF5RB+ab5SwzWRQ5KCCE1RnbSCuhECIPaDSI2TSMw0GBRd0CJqP6GRjjqoz6XPUFYj N9Rj2oRBliIV2dqmqssMjsrzxyVwAtZsl2r63Pj5HIkAXxrFkEEAu8HwKg6pBCQOk+TD A+/Q== X-Gm-Message-State: APjAAAVk5mpQh42osc2w2WQCcQxAfHGgfQa//AObOXTUyiFcS/3DMcWh +rPGCP5rn0u1SdfsRWmVr91x1cQ/ X-Google-Smtp-Source: APXvYqzfj4TXkwPGhX58WBPRcCd4Q4fhf33MmMnBqLdu3/ifQwiblBrZlPpAFaTNkbaUQcfDK/XRhA== X-Received: by 2002:a17:902:30a3:: with SMTP id v32mr81641033plb.6.1560332180831; Wed, 12 Jun 2019 02:36:20 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id 27sm6148936pgl.82.2019.06.12.02.36.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 12 Jun 2019 02:36:20 -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?b?UmFkaW0gS3LEjW3DocWZ?= , Sean Christopherson , Liran Alon Subject: [PATCH v3 5/5] KVM: LAPIC: Optimize timer latency further Date: Wed, 12 Jun 2019 17:36:00 +0800 Message-Id: <1560332160-17050-6-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> References: <1560332160-17050-1-git-send-email-wanpengli@tencent.com> MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Wanpeng Li Advance lapic timer tries to hidden the hypervisor overhead between the host emulated timer fires and the guest awares the timer is fired. However, it just hidden the time between apic_timer_fn/handle_preemption_timer -> wait_lapic_expire, instead of the real position of vmentry which is mentioned in the orignial commit d0659d946be0 ("KVM: x86: add option to advance tscdeadline hrtimer expiration"). There is 700+ cpu cycles between the end of wait_lapic_expire and before world switch on my haswell desktop. This patch tries to narrow the last gap(wait_lapic_expire -> world switch), it takes the real overhead time between apic_timer_fn/handle_preemption_timer and before world switch into consideration when adaptively tuning timer advancement. The patch can reduce 40% latency (~1600+ cycles to ~1000+ cycles on a haswell desktop) for kvm-unit-tests/tscdeadline_latency when testing busy waits. Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Sean Christopherson Cc: Liran Alon Signed-off-by: Wanpeng Li --- arch/x86/kvm/lapic.c | 3 ++- arch/x86/kvm/lapic.h | 2 +- arch/x86/kvm/svm.c | 4 ++++ arch/x86/kvm/vmx/vmx.c | 4 ++++ arch/x86/kvm/x86.c | 3 --- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index af38ece..63513de 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1531,7 +1531,7 @@ static inline void adaptive_tune_timer_advancement(struct kvm_vcpu *vcpu, apic->lapic_timer.timer_advance_ns = timer_advance_ns; } -void wait_lapic_expire(struct kvm_vcpu *vcpu) +void kvm_wait_lapic_expire(struct kvm_vcpu *vcpu) { struct kvm_lapic *apic = vcpu->arch.apic; u64 guest_tsc, tsc_deadline; @@ -1553,6 +1553,7 @@ void wait_lapic_expire(struct kvm_vcpu *vcpu) if (unlikely(!apic->lapic_timer.timer_advance_adjust_done)) adaptive_tune_timer_advancement(vcpu, apic->lapic_timer.advance_expire_delta); } +EXPORT_SYMBOL_GPL(kvm_wait_lapic_expire); static void start_sw_tscdeadline(struct kvm_lapic *apic) { diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h index 3e72a25..f974a3d 100644 --- a/arch/x86/kvm/lapic.h +++ b/arch/x86/kvm/lapic.h @@ -220,7 +220,7 @@ static inline int kvm_lapic_latched_init(struct kvm_vcpu *vcpu) bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector); -void wait_lapic_expire(struct kvm_vcpu *vcpu); +void kvm_wait_lapic_expire(struct kvm_vcpu *vcpu); bool kvm_intr_is_single_vcpu_fast(struct kvm *kvm, struct kvm_lapic_irq *irq, struct kvm_vcpu **dest_vcpu); diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 6b92eaf..955cfcb 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5638,6 +5638,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) clgi(); kvm_load_guest_xcr0(vcpu); + if (lapic_in_kernel(vcpu) && + vcpu->arch.apic->lapic_timer.timer_advance_ns) + kvm_wait_lapic_expire(vcpu); + /* * If this vCPU has touched SPEC_CTRL, restore the guest's value if * it's non-zero. Since vmentry is serialising on affected CPUs, there diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index e1fa935..771d3bf 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -6423,6 +6423,10 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu) vmx_update_hv_timer(vcpu); + if (lapic_in_kernel(vcpu) && + vcpu->arch.apic->lapic_timer.timer_advance_ns) + kvm_wait_lapic_expire(vcpu); + /* * If this vCPU has touched SPEC_CTRL, restore the guest's value if * it's non-zero. Since vmentry is serialising on affected CPUs, there diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 4a7b00c..e154f52 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7903,9 +7903,6 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) } trace_kvm_entry(vcpu->vcpu_id); - if (lapic_in_kernel(vcpu) && - vcpu->arch.apic->lapic_timer.timer_advance_ns) - wait_lapic_expire(vcpu); guest_enter_irqoff(); fpregs_assert_state_consistent();