linux/drivers/hwtracing/coresight/coresight-cfg-preload.c
Linu Cherian 4b7e62627a coresight: config: Add preloaded configuration
Add a preloaded configuration for generating
external trigger on address match. This can be
used by CTI and ETR blocks to stop trace capture
on kernel panic.

Kernel address for "panic" function is used as the
default trigger address.

This new configuration is available as,
/sys/kernel/config/cs-syscfg/configurations/panicstop

Signed-off-by: Linu Cherian <lcherian@marvell.com>
Reviewed-by: James Clark <james.clark@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20250212114918.548431-8-lcherian@marvell.com
2025-02-21 16:17:36 +00:00

39 lines
900 B
C

// SPDX-License-Identifier: GPL-2.0
/*
* Copyright(C) 2020 Linaro Limited. All rights reserved.
* Author: Mike Leach <mike.leach@linaro.org>
*/
#include "coresight-cfg-preload.h"
#include "coresight-config.h"
#include "coresight-syscfg.h"
/* Basic features and configurations pre-loaded on initialisation */
static struct cscfg_feature_desc *preload_feats[] = {
#if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X)
&strobe_etm4x,
&gen_etrig_etm4x,
#endif
NULL
};
static struct cscfg_config_desc *preload_cfgs[] = {
#if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X)
&afdo_etm4x,
&pstop_etm4x,
#endif
NULL
};
static struct cscfg_load_owner_info preload_owner = {
.type = CSCFG_OWNER_PRELOAD,
};
/* preload called on initialisation */
int cscfg_preload(void *owner_handle)
{
preload_owner.owner_handle = owner_handle;
return cscfg_load_config_sets(preload_cfgs, preload_feats, &preload_owner);
}