drivers/hwtracing/coresight/coresight-cfg-pstop.c
Source file repositories/reference/linux-study-clean/drivers/hwtracing/coresight/coresight-cfg-pstop.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/hwtracing/coresight/coresight-cfg-pstop.c- Extension
.c- Size
- 2016 bytes
- Lines
- 84
- Domain
- Driver Families
- Bucket
- drivers/hwtracing
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
coresight-config.hcoresight-etm4x-cfg.h
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright(C) 2023 Marvell.
* Based on coresight-cfg-afdo.c
*/
#include "coresight-config.h"
/* ETMv4 includes and features */
#if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X)
#include "coresight-etm4x-cfg.h"
/* preload configurations and features */
/* preload in features for ETMv4 */
/* panic_stop feature */
static struct cscfg_parameter_desc gen_etrig_params[] = {
{
.name = "address",
.value = (u64)panic,
},
};
static struct cscfg_regval_desc gen_etrig_regs[] = {
/* resource selector */
{
.type = CS_CFG_REG_TYPE_RESOURCE,
.offset = TRCRSCTLRn(2),
.hw_info = ETM4_CFG_RES_SEL,
.val32 = 0x40001,
},
/* single address comparator */
{
.type = CS_CFG_REG_TYPE_RESOURCE | CS_CFG_REG_TYPE_VAL_64BIT |
CS_CFG_REG_TYPE_VAL_PARAM,
.offset = TRCACVRn(0),
.val32 = 0x0,
},
{
.type = CS_CFG_REG_TYPE_RESOURCE,
.offset = TRCACATRn(0),
.val64 = 0xf00,
},
/* Driver external output[0] with comparator out */
{
.type = CS_CFG_REG_TYPE_RESOURCE,
.offset = TRCEVENTCTL0R,
.val32 = 0x2,
},
/* end of regs */
};
struct cscfg_feature_desc gen_etrig_etm4x = {
.name = "gen_etrig",
.description = "Generate external trigger on address match\n"
"parameter \'address\': address of kernel address\n",
.match_flags = CS_CFG_MATCH_CLASS_SRC_ETM4,
.nr_params = ARRAY_SIZE(gen_etrig_params),
.params_desc = gen_etrig_params,
.nr_regs = ARRAY_SIZE(gen_etrig_regs),
.regs_desc = gen_etrig_regs,
};
/* create a panic stop configuration */
/* the total number of parameters in used features */
#define PSTOP_NR_PARAMS ARRAY_SIZE(gen_etrig_params)
static const char *pstop_ref_names[] = {
"gen_etrig",
};
struct cscfg_config_desc pstop_etm4x = {
.name = "panicstop",
.description = "Stop ETM on kernel panic\n",
.nr_feat_refs = ARRAY_SIZE(pstop_ref_names),
.feat_ref_names = pstop_ref_names,
.nr_total_params = PSTOP_NR_PARAMS,
};
/* end of ETM4x configurations */
#endif /* IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) */
Annotation
- Immediate include surface: `coresight-config.h`, `coresight-etm4x-cfg.h`.
- Atlas domain: Driver Families / drivers/hwtracing.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.