From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH] kvmclock: set scheduler clock stable Date: Wed, 29 Apr 2015 10:15:34 +0200 Message-ID: <55409326.5090802@redhat.com> References: <20150423171242.5264bcb5@redhat.com> <20150429014754.GB14997@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: Marcelo Tosatti , Luiz Capitulino Return-path: Received: from mx1.redhat.com ([209.132.183.28]:39404 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031044AbbD2IPl (ORCPT ); Wed, 29 Apr 2015 04:15:41 -0400 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t3T8Feq4030077 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Wed, 29 Apr 2015 04:15:40 -0400 In-Reply-To: <20150429014754.GB14997@amt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: On 29/04/2015 03:47, Marcelo Tosatti wrote: > On Thu, Apr 23, 2015 at 05:12:42PM -0400, Luiz Capitulino wrote: >> If you try to enable NOHZ_FULL on a guest today, you'll get >> the following error when the guest tries to deactivate the >> scheduler tick: >> >> WARNING: CPU: 3 PID: 2182 at kernel/time/tick-sched.c:192 can_stop_full_tick+0xb9/0x290() >> NO_HZ FULL will not work with unstable sched clock >> CPU: 3 PID: 2182 Comm: kworker/3:1 Not tainted 4.0.0-10545-gb9bb6fb #204 >> Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 >> Workqueue: events flush_to_ldisc >> ffffffff8162a0c7 ffff88011f583e88 ffffffff814e6ba0 0000000000000002 >> ffff88011f583ed8 ffff88011f583ec8 ffffffff8104d095 ffff88011f583eb8 >> 0000000000000000 0000000000000003 0000000000000001 0000000000000001 >> Call Trace: >> [] dump_stack+0x4f/0x7b >> [] warn_slowpath_common+0x85/0xc0 >> [] warn_slowpath_fmt+0x46/0x50 >> [] can_stop_full_tick+0xb9/0x290 >> [] tick_nohz_irq_exit+0x8d/0xb0 >> [] irq_exit+0xc5/0x130 >> [] smp_apic_timer_interrupt+0x4a/0x60 >> [] apic_timer_interrupt+0x6e/0x80 >> [] ? _raw_spin_unlock_irqrestore+0x31/0x60 >> [] __wake_up+0x48/0x60 >> [] n_tty_receive_buf_common+0x49c/0xba0 >> [] ? tty_ldisc_ref+0x1f/0x70 >> [] n_tty_receive_buf2+0x14/0x20 >> [] flush_to_ldisc+0xe0/0x120 >> [] process_one_work+0x1d5/0x540 >> [] ? process_one_work+0x151/0x540 >> [] worker_thread+0x121/0x470 >> [] ? process_one_work+0x540/0x540 >> [] kthread+0xef/0x110 >> [] ? __kthread_parkme+0xa0/0xa0 >> [] ret_from_fork+0x42/0x70 >> [] ? __kthread_parkme+0xa0/0xa0 >> ---[ end trace 06e3507544a38866 ]--- >> >> However, it turns out that kvmclock does provide a stable >> sched_clock callback. So, let the scheduler know this which >> in turn makes NOHZ_FULL work in the guest. >> >> Signed-off-by: Marcelo Tosatti >> Signed-off-by: Luiz Capitulino >> --- >> >> PS: Original author of this patch is Marcelo. I did most of the >> testing and backported it to an older real-time kernel tree. Works >> like a charm. >> >> arch/x86/kernel/kvmclock.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c >> index 42caaef..4e03921 100644 >> --- a/arch/x86/kernel/kvmclock.c >> +++ b/arch/x86/kernel/kvmclock.c >> @@ -24,6 +24,7 @@ >> #include >> #include >> #include >> +#include >> >> #include >> #include >> @@ -265,6 +266,8 @@ void __init kvmclock_init(void) >> >> if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE_STABLE_BIT)) >> pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT); >> + >> + set_sched_clock_stable(); >> } >> >> int __init kvm_setup_vsyscall_timeinfo(void) >> -- >> 1.9.3 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe kvm" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > Ping? 6 days, half of them during the merge window is not such a terrible roundtrip. Anyhow I've applied the patch and will probably push to kvm/queue today. Paolo