Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753108AbbHEQWF (ORCPT ); Wed, 5 Aug 2015 12:22:05 -0400 Received: from casper.infradead.org ([85.118.1.10]:37723 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753004AbbHEQWD (ORCPT ); Wed, 5 Aug 2015 12:22:03 -0400 Date: Wed, 5 Aug 2015 18:21:52 +0200 From: Peter Zijlstra To: Alexei Starovoitov Cc: Kaixu Xia , davem@davemloft.net, acme@kernel.org, mingo@redhat.com, masami.hiramatsu.pt@hitachi.com, jolsa@kernel.org, daniel@iogearbox.net, wangnan0@huawei.com, linux-kernel@vger.kernel.org, pi3orama@163.com, hekuang@huawei.com, netdev@vger.kernel.org Subject: Re: [PATCH v6 3/4] bpf: Implement function bpf_perf_event_read() that get the selected hardware PMU conuter Message-ID: <20150805162152.GC25159@twins.programming.kicks-ass.net> References: <1438678696-88289-1-git-send-email-xiakaixu@huawei.com> <1438678696-88289-4-git-send-email-xiakaixu@huawei.com> <20150805100425.GZ25159@twins.programming.kicks-ass.net> <20150805135317.GZ18673@twins.programming.kicks-ass.net> <55C23500.1000207@plumgrid.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <55C23500.1000207@plumgrid.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: 991 Lines: 28 On Wed, Aug 05, 2015 at 09:08:32AM -0700, Alexei Starovoitov wrote: > On 8/5/15 6:53 AM, Peter Zijlstra wrote: > >+ /* > >+ * If the event is currently on this CPU, its either a per-task event, > >+ * or local to this CPU. Furthermore it means its ACTIVE (otherwise > >+ * oncpu == -1). > >+ */ > >+ if (event->oncpu == smp_processor_id()) > >+ event->pmu->read(event); > >+ > >+ val = local64_read(&event->count); > >+ local_irq_restore(flags); > >+ > > nice! cleaner and faster. > so raw_spin_lock(&ctx->lock) is not needed, because > update_*(event) methods are not called, right? Indeed, and by ensuring the event is indeed local (by force of WARN_ON) disabling IRQs will avoid counter scheduling and result in a stable event state. -- 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/