Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755249AbbGCPqQ (ORCPT ); Fri, 3 Jul 2015 11:46:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47797 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755315AbbGCPqK (ORCPT ); Fri, 3 Jul 2015 11:46:10 -0400 Subject: Re: [PATCH] sched,kvm: Fix KVM preempt_notifier usage To: Peter Zijlstra References: <20150625120949.GZ3644@twins.programming.kicks-ass.net> <558BF0E4.50602@gmail.com> <20150625125514.GA3644@twins.programming.kicks-ass.net> <55966E0B.7060100@redhat.com> <20150703121907.GH19282@twins.programming.kicks-ass.net> <5596809D.4000905@redhat.com> <20150703131712.GJ19282@twins.programming.kicks-ass.net> <20150703151642.GQ18673@twins.programming.kicks-ass.net> <5596A997.5060705@redhat.com> <5596AC82.6080706@redhat.com> <20150703154245.GL25159@twins.programming.kicks-ass.net> Cc: Pontus Fuchs , Linus Torvalds , mingo@redhat.com, "linux-kernel@vger.kernel.org" , gleb@kernel.org From: Paolo Bonzini Message-ID: <5596AE3E.4030706@redhat.com> Date: Fri, 3 Jul 2015 17:46:06 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1 MIME-Version: 1.0 In-Reply-To: <20150703154245.GL25159@twins.programming.kicks-ass.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1810 Lines: 43 On 03/07/2015 17:42, Peter Zijlstra wrote: > On Fri, Jul 03, 2015 at 05:38:42PM +0200, Paolo Bonzini wrote: >> So basically this. Can you reply with SoB and maybe Acked-by? > > Ah, thanks for doing that! > >> ------------- 8< --------------- >> From: Peter Zijlstra >> Subject: [PATCH] sched, preempt_notifier: separate notifier registration from static_key inc/dec >> >> Commit 1cde2930e154 ("sched/preempt: Add static_key() to preempt_notifiers") >> had two problems. First, the preempt-notifier API needs to sleep with the >> addition of the static_key, we do however need to hold off preemption >> while modifying the preempt notifier list, otherwise a preemption could >> observe an inconsistent list state. KVM correctly registers and >> unregisters preempt notifiers with preemption disabled, so the sleep >> caused dmesg splats. >> >> Second, KVM registers and unregisters preemption notifiers very often >> (in vcpu_load/vcpu_put). With a single uniprocessor guest the static key >> would move between 0 and 1 continuously, hitting the slow path on every >> userspace exit. >> >> To fix this, wrap the static_key inc/dec in a new API, and call it from >> KVM. >> >> Fixes: 1cde2930e154 ("sched/preempt: Add static_key() to preempt_notifiers") >> Reported-by: Pontus Fuchs >> Reported-by: Takashi Iwai > > Signed-off-by: Peter Zijlstra (Intel) Ok, I'm crossing fingers and including this in my pull request in order to preserve bisectability. Thanks. Paolo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/