Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755813AbbGCPm6 (ORCPT ); Fri, 3 Jul 2015 11:42:58 -0400 Received: from casper.infradead.org ([85.118.1.10]:57404 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755015AbbGCPmu (ORCPT ); Fri, 3 Jul 2015 11:42:50 -0400 Date: Fri, 3 Jul 2015 17:42:45 +0200 From: Peter Zijlstra To: Paolo Bonzini Cc: Pontus Fuchs , Linus Torvalds , mingo@redhat.com, "linux-kernel@vger.kernel.org" , gleb@kernel.org Subject: Re: [PATCH] sched,kvm: Fix KVM preempt_notifier usage Message-ID: <20150703154245.GL25159@twins.programming.kicks-ass.net> 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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5596AC82.6080706@redhat.com> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1617 Lines: 35 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) -- 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/