From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934087AbcAZI1x (ORCPT ); Tue, 26 Jan 2016 03:27:53 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:4131 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932758AbcAZI1s (ORCPT ); Tue, 26 Jan 2016 03:27:48 -0500 Message-ID: <56A72D78.1040507@huawei.com> Date: Tue, 26 Jan 2016 16:25:28 +0800 From: "Wangnan (F)" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Alexei Starovoitov , Arnaldo Carvalho de Melo CC: Brendan Gregg , Daniel Borkmann , "David S. Miller" , He Kuang , Jiri Olsa , Li Zefan , Masami Hiramatsu , Namhyung Kim , Peter Zijlstra , , Will Deacon , Subject: Re: [PATCH 50/54] perf record: Toggle overwrite ring buffer for reading References: <1453715801-7732-1-git-send-email-wangnan0@huawei.com> <1453715801-7732-51-git-send-email-wangnan0@huawei.com> In-Reply-To: <1453715801-7732-51-git-send-email-wangnan0@huawei.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.66.109] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020205.56A72D8D.0104,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 39458aa2523280068d11c7c156169679 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016/1/25 17:56, Wang Nan wrote: > Reading from a overwrite ring buffer is unrelible. perf_evsel__pause() > should be called before reading from them. > > Toggel overwrite_evt_paused director after receiving done or switch > output. > > Signed-off-by: Wang Nan > Signed-off-by: He Kuang > Cc: Arnaldo Carvalho de Melo > Cc: Jiri Olsa > Cc: Masami Hiramatsu > Cc: Namhyung Kim > Cc: Zefan Li > Cc: pi3orama@163.com > --- > tools/perf/builtin-record.c | 77 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 77 insertions(+) [SNIP] > +static void > +record__toggle_overwrite_evsels(struct record *rec, > + enum overwrite_evt_state state) > +{ [SNIP] > + rec->overwrite_evt_state = state; > + > + if (action == NONE) > + return; > + > + evlist__for_each(evlist, pos) { > + if (!pos->overwrite) > + continue; > + perf_evsel__pause(pos, action == PAUSE); > + } > +} > + This part is incorrect. We should pause ring buffers for each CPU in a channel, not each evsel. Already fixed at: https://git.kernel.org/cgit/linux/kernel/git/pi3orama/linux.git/commit/?h=perf/overwrite&id=fe59d9c6621c60087ce7e6e269f2f15f152d6d71 Thank you.