lkml.org 
[lkml]   [2022]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 3/3] perf cs-etm: Update deduction of TRCCONFIGR register for branch broadcast
From
Date


On 10/12/2021 02:41, Leo Yan wrote:
> On Wed, Dec 08, 2021 at 04:09:07PM +0000, James Clark wrote:
>> Now that a config flag for branch broadcast has been added, take it into
>> account when trying to deduce what the driver would have programmed the
>> TRCCONFIGR register to.
>>
>> Signed-off-by: James Clark <james.clark@arm.com>
>> ---
>> tools/include/linux/coresight-pmu.h | 2 ++
>> tools/perf/arch/arm/util/cs-etm.c | 3 +++
>> 2 files changed, 5 insertions(+)
>>
>> diff --git a/tools/include/linux/coresight-pmu.h b/tools/include/linux/coresight-pmu.h
>> index 4ac5c081af93..6c2fd6cc5a98 100644
>> --- a/tools/include/linux/coresight-pmu.h
>> +++ b/tools/include/linux/coresight-pmu.h
>> @@ -18,6 +18,7 @@
>> * ETMv3.5/PTM doesn't define ETMCR config bits with prefix "ETM3_" and
>> * directly use below macros as config bits.
>> */
>> +#define ETM_OPT_BRANCH_BROADCAST 8
>
> I checked ETMv3 architecture spec (ARM IHI 0014Q), its bit 8 is "branch
> output" for all branch address outputting. I am not sure if it is the
> same thing between ETMv3's "branch output" and ETMv4's "branch
> broadcasting", but it makes sense for me to use bit 8 as an unified
> config bit to control these two options for ETMv3 and ETMv4
> respectively.
>
> Just note, I understand this patch set is to enable branch broadcasting
> for entire memory region rather than using any comparators (see
> TRCBBCTLR) to limit branch broadcasting ranges. This is fine for me and
> we could enable ranges later.
>
> Reviewed-by: Leo Yan <leo.yan@linaro.org>

Hi Leo,

Thanks for the review, I've posted v2, but I only put your reviewed by tag
on this commit because I wasn't sure if you meant for the full set. Please
take another look

Thanks
James

>
>> #define ETM_OPT_CYCACC 12
>> #define ETM_OPT_CTXTID 14
>> #define ETM_OPT_CTXTID2 15
>> @@ -25,6 +26,7 @@
>> #define ETM_OPT_RETSTK 29
>>
>> /* ETMv4 CONFIGR programming bits for the ETM OPTs */
>> +#define ETM4_CFG_BIT_BB 3
>> #define ETM4_CFG_BIT_CYCACC 4
>> #define ETM4_CFG_BIT_CTXTID 6
>> #define ETM4_CFG_BIT_VMID 7
>> diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
>> index 293a23bf8be3..c7ef4e9b4a3a 100644
>> --- a/tools/perf/arch/arm/util/cs-etm.c
>> +++ b/tools/perf/arch/arm/util/cs-etm.c
>> @@ -527,6 +527,9 @@ static u64 cs_etmv4_get_config(struct auxtrace_record *itr)
>> if (config_opts & BIT(ETM_OPT_CTXTID2))
>> config |= BIT(ETM4_CFG_BIT_VMID) |
>> BIT(ETM4_CFG_BIT_VMID_OPT);
>> + if (config_opts & BIT(ETM_OPT_BRANCH_BROADCAST))
>> + config |= BIT(ETM4_CFG_BIT_BB);
>> +
>> return config;
>> }
>>
>> --
>> 2.28.0
>>

\
 
 \ /
  Last update: 2022-01-13 10:11    [W:0.096 / U:0.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site