From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759204AbcG1QP7 (ORCPT ); Thu, 28 Jul 2016 12:15:59 -0400 Received: from mail-yw0-f179.google.com ([209.85.161.179]:34828 "EHLO mail-yw0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758928AbcG1QPy (ORCPT ); Thu, 28 Jul 2016 12:15:54 -0400 MIME-Version: 1.0 In-Reply-To: <20160727192639.GC23264@krava> References: <1469047100-18131-1-git-send-email-mathieu.poirier@linaro.org> <1469047100-18131-4-git-send-email-mathieu.poirier@linaro.org> <20160721074722.GB7192@krava> <20160721145434.GA15915@krava> <20160726204139.GA13377@krava> <20160727192639.GC23264@krava> From: Mathieu Poirier Date: Thu, 28 Jul 2016 10:15:52 -0600 Message-ID: Subject: Re: [PATCH V2 3/6] perf tools: add infrastructure for PMU specific configuration To: Jiri Olsa Cc: Arnaldo Carvalho de Melo , jolsa@kernel.org, Peter Zijlstra , Ingo Molnar , Alexander Shishkin , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 27 July 2016 at 13:26, Jiri Olsa wrote: > On Wed, Jul 27, 2016 at 11:59:50AM -0600, Mathieu Poirier wrote: > > SNIP > >> > -PE_DRV_CFG_TERM >> > +'@' PE_NAME '=' PE_NAME >> > { >> > struct parse_events_term *term; >> > >> > ABORT_ON(parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, >> > - $1, $1, &@1, NULL)); >> > + $2, $4, &@2, &@4)); >> > $$ = term; >> > } >> > >> >> The problem here is that the correlation between the first and the >> second PE_NAME is lost and instead of seeing "PE_NAME=PE_NAME", the >> kernel only gets the value associated with the second PE_NAME. >> >> For example, >> >> -e event/@cfg1=value1,@cfg2=value2/ ... >> >> The above code will send "value1" and "value2" to the kernel driver >> where there is no way to know what configurable the values correspond > > hum.. you get the 'cfg1' and 'cfg2' strings in $1 no? Indeed you do. Macro ADD_CONFIG_TERM in function get_config_terms() only account for the __val parameter and struct parse_events_term::config is completely ignored. We could concatenate the fields before calling ADD_CONFIG_TERM() but between that and freeing the reserved memory, I think it is cleaner to let flex do the work. Mathieu > > jirka > >> to. To go around that we'd have to concatenate $2 and $4 in function >> parse_events_term__str() (or new_term()) when @type_term == >> PARSE_EVENTS__TERM_TYPE_DRV_CFG, something that definitely looks >> hackish to me. >> >> Thanks, >> Mathieu