drivers/platform/x86/intel/pmt/features.c

Source file repositories/reference/linux-study-clean/drivers/platform/x86/intel/pmt/features.c

File Facts

System
Linux kernel
Corpus path
drivers/platform/x86/intel/pmt/features.c
Extension
.c
Size
5327 bytes
Lines
206
Domain
Driver Families
Bucket
drivers/platform
Inferred role
Driver Families: exported/initcall integration point
Status
integration 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.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2025, Intel Corporation.
 * All Rights Reserved.
 *
 * Author: "David E. Box" <david.e.box@linux.intel.com>
 */

#include <linux/export.h>
#include <linux/types.h>

#include <linux/intel_pmt_features.h>

const char * const pmt_feature_names[] = {
	[FEATURE_PER_CORE_PERF_TELEM]	= "per_core_performance_telemetry",
	[FEATURE_PER_CORE_ENV_TELEM]	= "per_core_environment_telemetry",
	[FEATURE_PER_RMID_PERF_TELEM]	= "per_rmid_perf_telemetry",
	[FEATURE_ACCEL_TELEM]		= "accelerator_telemetry",
	[FEATURE_UNCORE_TELEM]		= "uncore_telemetry",
	[FEATURE_CRASH_LOG]		= "crash_log",
	[FEATURE_PETE_LOG]		= "pete_log",
	[FEATURE_TPMI_CTRL]		= "tpmi_control",
	[FEATURE_TRACING]		= "tracing",
	[FEATURE_PER_RMID_ENERGY_TELEM]	= "per_rmid_energy_telemetry",
};
EXPORT_SYMBOL_NS_GPL(pmt_feature_names, "INTEL_PMT_DISCOVERY");

enum feature_layout feature_layout[] = {
	[FEATURE_PER_CORE_PERF_TELEM]	= LAYOUT_WATCHER,
	[FEATURE_PER_CORE_ENV_TELEM]	= LAYOUT_WATCHER,
	[FEATURE_PER_RMID_PERF_TELEM]	= LAYOUT_RMID,
	[FEATURE_ACCEL_TELEM]		= LAYOUT_WATCHER,
	[FEATURE_UNCORE_TELEM]		= LAYOUT_WATCHER,
	[FEATURE_CRASH_LOG]		= LAYOUT_COMMAND,
	[FEATURE_PETE_LOG]		= LAYOUT_COMMAND,
	[FEATURE_TPMI_CTRL]		= LAYOUT_CAPS_ONLY,
	[FEATURE_TRACING]		= LAYOUT_CAPS_ONLY,
	[FEATURE_PER_RMID_ENERGY_TELEM]	= LAYOUT_RMID,
};

struct pmt_cap pmt_cap_common[] = {
	{PMT_CAP_TELEM,		"telemetry"},
	{PMT_CAP_WATCHER,	"watcher"},
	{PMT_CAP_CRASHLOG,	"crashlog"},
	{PMT_CAP_STREAMING,	"streaming"},
	{PMT_CAP_THRESHOLD,	"threshold"},
	{PMT_CAP_WINDOW,	"window"},
	{PMT_CAP_CONFIG,	"config"},
	{PMT_CAP_TRACING,	"tracing"},
	{PMT_CAP_INBAND,	"inband"},
	{PMT_CAP_OOB,		"oob"},
	{PMT_CAP_SECURED_CHAN,	"secure_chan"},
	{PMT_CAP_PMT_SP,	"pmt_sp"},
	{PMT_CAP_PMT_SP_POLICY,	"pmt_sp_policy"},
	{}
};

struct pmt_cap pmt_cap_pcpt[] = {
	{PMT_CAP_PCPT_CORE_PERF,	"core_performance"},
	{PMT_CAP_PCPT_CORE_C0_RES,	"core_c0_residency"},
	{PMT_CAP_PCPT_CORE_ACTIVITY,	"core_activity"},
	{PMT_CAP_PCPT_CACHE_PERF,	"cache_performance"},
	{PMT_CAP_PCPT_QUALITY_TELEM,	"quality_telemetry"},
	{}
};

struct pmt_cap *pmt_caps_pcpt[] = {
	pmt_cap_common,
	pmt_cap_pcpt,
	NULL
};

struct pmt_cap pmt_cap_pcet[] = {
	{PMT_CAP_PCET_WORKPOINT_HIST,	"workpoint_histogram"},
	{PMT_CAP_PCET_CORE_CURR_TEMP,	"core_current_temp"},
	{PMT_CAP_PCET_CORE_INST_RES,	"core_inst_residency"},
	{PMT_CAP_PCET_QUALITY_TELEM,	"quality_telemetry"},
	{PMT_CAP_PCET_CORE_CDYN_LVL,	"core_cdyn_level"},
	{PMT_CAP_PCET_CORE_STRESS_LVL,	"core_stress_level"},
	{PMT_CAP_PCET_CORE_DAS,		"core_digital_aging_sensor"},
	{PMT_CAP_PCET_FIVR_HEALTH,	"fivr_health"},
	{PMT_CAP_PCET_ENERGY,		"energy"},
	{PMT_CAP_PCET_PEM_STATUS,	"pem_status"},
	{PMT_CAP_PCET_CORE_C_STATE,	"core_c_state"},
	{}
};

struct pmt_cap *pmt_caps_pcet[] = {
	pmt_cap_common,
	pmt_cap_pcet,

Annotation

Implementation Notes