mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
powercap: intel_rapl: Move primitive info to header for interface drivers
RAPL primitive information varies across different RAPL interfaces
(MSR, TPMI, MMIO). Keeping them in the common code adds no benefit, but
requires interface-specific handling logic and makes the common layer
unnecessarily complex.
Move the primitive info infrastructure to the shared header to allow
interface drivers to configure RAPL primitives. Specific changes:
1. Move struct rapl_primitive_info, enum unit_type, and
PRIMITIVE_INFO_INIT macro to intel_rapl.h.
2. Change the @rpi field in struct rapl_if_priv from void * to
struct rapl_primitive_info * to improve type safety and eliminate
unnecessary casts.
No functional changes. This is a preparatory refactoring to allow
interface drivers to supply their own RAPL primitive settings.
Co-developed-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Link: https://patch.msgid.link/20260331211950.3329932-4-sathyanarayanan.kuppuswamy@linux.intel.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
3e6996c0cb
commit
04bcbed4cd
@@ -100,13 +100,6 @@
|
||||
|
||||
#define RAPL_EVENT_MASK GENMASK(7, 0)
|
||||
|
||||
enum unit_type {
|
||||
ARBITRARY_UNIT, /* no translation */
|
||||
POWER_UNIT,
|
||||
ENERGY_UNIT,
|
||||
TIME_UNIT,
|
||||
};
|
||||
|
||||
static const char *pl_names[NR_POWER_LIMITS] = {
|
||||
[POWER_LIMIT1] = "long_term",
|
||||
[POWER_LIMIT2] = "short_term",
|
||||
@@ -208,27 +201,6 @@ static const struct rapl_defaults *get_defaults(struct rapl_package *rp)
|
||||
return rp->priv->defaults;
|
||||
}
|
||||
|
||||
/* per domain data. used to describe individual knobs such that access function
|
||||
* can be consolidated into one instead of many inline functions.
|
||||
*/
|
||||
struct rapl_primitive_info {
|
||||
const char *name;
|
||||
u64 mask;
|
||||
int shift;
|
||||
enum rapl_domain_reg_id id;
|
||||
enum unit_type unit;
|
||||
u32 flag;
|
||||
};
|
||||
|
||||
#define PRIMITIVE_INFO_INIT(p, m, s, i, u, f) { \
|
||||
.name = #p, \
|
||||
.mask = m, \
|
||||
.shift = s, \
|
||||
.id = i, \
|
||||
.unit = u, \
|
||||
.flag = f \
|
||||
}
|
||||
|
||||
static void rapl_init_domains(struct rapl_package *rp);
|
||||
static int rapl_read_data_raw(struct rapl_domain *rd,
|
||||
enum rapl_primitives prim,
|
||||
@@ -748,10 +720,10 @@ static int rapl_config(struct rapl_package *rp)
|
||||
/* MMIO I/F shares the same register layout as MSR registers */
|
||||
case RAPL_IF_MMIO:
|
||||
case RAPL_IF_MSR:
|
||||
rp->priv->rpi = (void *)rpi_msr;
|
||||
rp->priv->rpi = rpi_msr;
|
||||
break;
|
||||
case RAPL_IF_TPMI:
|
||||
rp->priv->rpi = (void *)rpi_tpmi;
|
||||
rp->priv->rpi = rpi_tpmi;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
||||
Reference in New Issue
Block a user