mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 18:37:58 -04:00
platform/x86/intel-uncore-freq: Get rid of magic min_max argument
Get rid of the hardcoded / magic min_max argument from internal APIs. Instead, use an enumerated index value for it. No functional change intended. Signed-off-by: Tero Kristo <tero.kristo@linux.intel.com> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Link: https://lore.kernel.org/r/20240617060708.892981-4-tero.kristo@linux.intel.com Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
committed by
Ilpo Järvinen
parent
4babdbdce6
commit
90583374f1
@@ -20,7 +20,7 @@ static DEFINE_IDA(intel_uncore_ida);
|
||||
|
||||
/* callbacks for actual HW read/write */
|
||||
static int (*uncore_read)(struct uncore_data *data, unsigned int *min, unsigned int *max);
|
||||
static int (*uncore_write)(struct uncore_data *data, unsigned int input, unsigned int min_max);
|
||||
static int (*uncore_write)(struct uncore_data *data, unsigned int input, enum uncore_index index);
|
||||
static int (*uncore_read_freq)(struct uncore_data *data, unsigned int *freq);
|
||||
|
||||
static ssize_t show_domain_id(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
|
||||
@@ -45,7 +45,7 @@ static ssize_t show_package_id(struct kobject *kobj, struct kobj_attribute *attr
|
||||
}
|
||||
|
||||
static ssize_t show_min_max_freq_khz(struct uncore_data *data,
|
||||
char *buf, int min_max)
|
||||
char *buf, enum uncore_index index)
|
||||
{
|
||||
unsigned int min, max;
|
||||
int ret;
|
||||
@@ -56,7 +56,7 @@ static ssize_t show_min_max_freq_khz(struct uncore_data *data,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (min_max)
|
||||
if (index == UNCORE_INDEX_MAX_FREQ)
|
||||
return sprintf(buf, "%u\n", max);
|
||||
|
||||
return sprintf(buf, "%u\n", min);
|
||||
@@ -64,7 +64,7 @@ static ssize_t show_min_max_freq_khz(struct uncore_data *data,
|
||||
|
||||
static ssize_t store_min_max_freq_khz(struct uncore_data *data,
|
||||
const char *buf, ssize_t count,
|
||||
int min_max)
|
||||
enum uncore_index index)
|
||||
{
|
||||
unsigned int input;
|
||||
int ret;
|
||||
@@ -73,7 +73,7 @@ static ssize_t store_min_max_freq_khz(struct uncore_data *data,
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&uncore_lock);
|
||||
ret = uncore_write(data, input, min_max);
|
||||
ret = uncore_write(data, input, index);
|
||||
mutex_unlock(&uncore_lock);
|
||||
|
||||
if (ret)
|
||||
@@ -125,11 +125,11 @@ static ssize_t show_perf_status_freq_khz(struct uncore_data *data, char *buf)
|
||||
return show_perf_status_freq_khz(data, buf); \
|
||||
}
|
||||
|
||||
store_uncore_min_max(min_freq_khz, 0);
|
||||
store_uncore_min_max(max_freq_khz, 1);
|
||||
store_uncore_min_max(min_freq_khz, UNCORE_INDEX_MIN_FREQ);
|
||||
store_uncore_min_max(max_freq_khz, UNCORE_INDEX_MAX_FREQ);
|
||||
|
||||
show_uncore_min_max(min_freq_khz, 0);
|
||||
show_uncore_min_max(max_freq_khz, 1);
|
||||
show_uncore_min_max(min_freq_khz, UNCORE_INDEX_MIN_FREQ);
|
||||
show_uncore_min_max(max_freq_khz, UNCORE_INDEX_MAX_FREQ);
|
||||
|
||||
show_uncore_perf_status(current_freq_khz);
|
||||
|
||||
@@ -270,7 +270,8 @@ void uncore_freq_remove_die_entry(struct uncore_data *data)
|
||||
EXPORT_SYMBOL_NS_GPL(uncore_freq_remove_die_entry, INTEL_UNCORE_FREQUENCY);
|
||||
|
||||
int uncore_freq_common_init(int (*read_control_freq)(struct uncore_data *data, unsigned int *min, unsigned int *max),
|
||||
int (*write_control_freq)(struct uncore_data *data, unsigned int input, unsigned int set_max),
|
||||
int (*write_control_freq)(struct uncore_data *data, unsigned int input,
|
||||
enum uncore_index index),
|
||||
int (*read_freq)(struct uncore_data *data, unsigned int *freq))
|
||||
{
|
||||
mutex_lock(&uncore_lock);
|
||||
|
||||
@@ -66,8 +66,14 @@ struct uncore_data {
|
||||
|
||||
#define UNCORE_DOMAIN_ID_INVALID -1
|
||||
|
||||
enum uncore_index {
|
||||
UNCORE_INDEX_MIN_FREQ,
|
||||
UNCORE_INDEX_MAX_FREQ,
|
||||
};
|
||||
|
||||
int uncore_freq_common_init(int (*read_control_freq)(struct uncore_data *data, unsigned int *min, unsigned int *max),
|
||||
int (*write_control_freq)(struct uncore_data *data, unsigned int input, unsigned int min_max),
|
||||
int (*write_control_freq)(struct uncore_data *data, unsigned int input,
|
||||
enum uncore_index index),
|
||||
int (*uncore_read_freq)(struct uncore_data *data, unsigned int *freq));
|
||||
void uncore_freq_common_exit(void);
|
||||
int uncore_freq_add_entry(struct uncore_data *data, int cpu);
|
||||
|
||||
@@ -130,13 +130,13 @@ static int uncore_read_control_freq(struct uncore_data *data, unsigned int *min,
|
||||
|
||||
/* Helper function to write MMIO offset for max/min control frequency */
|
||||
static void write_control_freq(struct tpmi_uncore_cluster_info *cluster_info, unsigned int input,
|
||||
unsigned int min_max)
|
||||
unsigned int index)
|
||||
{
|
||||
u64 control;
|
||||
|
||||
control = readq(cluster_info->cluster_base + UNCORE_CONTROL_INDEX);
|
||||
|
||||
if (min_max) {
|
||||
if (index == UNCORE_INDEX_MAX_FREQ) {
|
||||
control &= ~UNCORE_MAX_RATIO_MASK;
|
||||
control |= FIELD_PREP(UNCORE_MAX_RATIO_MASK, input);
|
||||
} else {
|
||||
@@ -149,7 +149,7 @@ static void write_control_freq(struct tpmi_uncore_cluster_info *cluster_info, un
|
||||
|
||||
/* Callback for sysfs write for max/min frequencies. Called under mutex locks */
|
||||
static int uncore_write_control_freq(struct uncore_data *data, unsigned int input,
|
||||
unsigned int min_max)
|
||||
enum uncore_index index)
|
||||
{
|
||||
struct tpmi_uncore_cluster_info *cluster_info;
|
||||
struct tpmi_uncore_struct *uncore_root;
|
||||
@@ -174,10 +174,10 @@ static int uncore_write_control_freq(struct uncore_data *data, unsigned int inpu
|
||||
|
||||
for (j = 0; j < uncore_root->pd_info[i].cluster_count; ++j)
|
||||
write_control_freq(&uncore_root->pd_info[i].cluster_infos[j],
|
||||
input, min_max);
|
||||
input, index);
|
||||
}
|
||||
|
||||
if (min_max)
|
||||
if (index == UNCORE_INDEX_MAX_FREQ)
|
||||
uncore_root->max_ratio = input;
|
||||
else
|
||||
uncore_root->min_ratio = input;
|
||||
@@ -185,13 +185,15 @@ static int uncore_write_control_freq(struct uncore_data *data, unsigned int inpu
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (min_max && uncore_root->max_ratio && uncore_root->max_ratio < input)
|
||||
if (index == UNCORE_INDEX_MAX_FREQ && uncore_root->max_ratio &&
|
||||
uncore_root->max_ratio < input)
|
||||
return -EINVAL;
|
||||
|
||||
if (!min_max && uncore_root->min_ratio && uncore_root->min_ratio > input)
|
||||
if (index == UNCORE_INDEX_MIN_FREQ && uncore_root->min_ratio &&
|
||||
uncore_root->min_ratio > input)
|
||||
return -EINVAL;
|
||||
|
||||
write_control_freq(cluster_info, input, min_max);
|
||||
write_control_freq(cluster_info, input, index);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ static int uncore_read_control_freq(struct uncore_data *data, unsigned int *min,
|
||||
}
|
||||
|
||||
static int uncore_write_control_freq(struct uncore_data *data, unsigned int input,
|
||||
unsigned int min_max)
|
||||
enum uncore_index index)
|
||||
{
|
||||
int ret;
|
||||
u64 cap;
|
||||
@@ -78,7 +78,7 @@ static int uncore_write_control_freq(struct uncore_data *data, unsigned int inpu
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (min_max) {
|
||||
if (index == UNCORE_INDEX_MAX_FREQ) {
|
||||
cap &= ~UNCORE_MAX_RATIO_MASK;
|
||||
cap |= FIELD_PREP(UNCORE_MAX_RATIO_MASK, input);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user