coresight: etm-perf: Update to activate selected configuration
Add calls to activate the selected configuration as perf starts and stops the tracing session. Link: https://lore.kernel.org/r/20210723165444.1048-7-mike.leach@linaro.org Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> Signed-off-by: Mike Leach <mike.leach@linaro.org> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Link: https://lore.kernel.org/r/20210818194022.379573-7-mathieu.poirier@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
f8cce2ff3c
commit
a0114b4740
@ -215,6 +215,10 @@ static void free_event_data(struct work_struct *work)
|
|||||||
/* Free the sink buffers, if there are any */
|
/* Free the sink buffers, if there are any */
|
||||||
free_sink_buffer(event_data);
|
free_sink_buffer(event_data);
|
||||||
|
|
||||||
|
/* clear any configuration we were using */
|
||||||
|
if (event_data->cfg_hash)
|
||||||
|
cscfg_deactivate_config(event_data->cfg_hash);
|
||||||
|
|
||||||
for_each_cpu(cpu, mask) {
|
for_each_cpu(cpu, mask) {
|
||||||
struct list_head **ppath;
|
struct list_head **ppath;
|
||||||
|
|
||||||
@ -292,7 +296,7 @@ static bool sinks_compatible(struct coresight_device *a,
|
|||||||
static void *etm_setup_aux(struct perf_event *event, void **pages,
|
static void *etm_setup_aux(struct perf_event *event, void **pages,
|
||||||
int nr_pages, bool overwrite)
|
int nr_pages, bool overwrite)
|
||||||
{
|
{
|
||||||
u32 id;
|
u32 id, cfg_hash;
|
||||||
int cpu = event->cpu;
|
int cpu = event->cpu;
|
||||||
cpumask_t *mask;
|
cpumask_t *mask;
|
||||||
struct coresight_device *sink = NULL;
|
struct coresight_device *sink = NULL;
|
||||||
@ -310,6 +314,14 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
|
|||||||
sink = user_sink = coresight_get_sink_by_id(id);
|
sink = user_sink = coresight_get_sink_by_id(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* check if user wants a coresight configuration selected */
|
||||||
|
cfg_hash = (u32)((event->attr.config2 & GENMASK_ULL(63, 32)) >> 32);
|
||||||
|
if (cfg_hash) {
|
||||||
|
if (cscfg_activate_config(cfg_hash))
|
||||||
|
goto err;
|
||||||
|
event_data->cfg_hash = cfg_hash;
|
||||||
|
}
|
||||||
|
|
||||||
mask = &event_data->mask;
|
mask = &event_data->mask;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -49,12 +49,14 @@ struct etm_filters {
|
|||||||
* @work: Handle to free allocated memory outside IRQ context.
|
* @work: Handle to free allocated memory outside IRQ context.
|
||||||
* @mask: Hold the CPU(s) this event was set for.
|
* @mask: Hold the CPU(s) this event was set for.
|
||||||
* @snk_config: The sink configuration.
|
* @snk_config: The sink configuration.
|
||||||
|
* @cfg_hash: The hash id of any coresight config selected.
|
||||||
* @path: An array of path, each slot for one CPU.
|
* @path: An array of path, each slot for one CPU.
|
||||||
*/
|
*/
|
||||||
struct etm_event_data {
|
struct etm_event_data {
|
||||||
struct work_struct work;
|
struct work_struct work;
|
||||||
cpumask_t mask;
|
cpumask_t mask;
|
||||||
void *snk_config;
|
void *snk_config;
|
||||||
|
u32 cfg_hash;
|
||||||
struct list_head * __percpu *path;
|
struct list_head * __percpu *path;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user