Lines Matching +full:on +full:- +full:die
1 // SPDX-License-Identifier: GPL-2.0
7 * Provide interface to set MSR 620 at a granularity of per die. On CPU online,
8 * one control CPU is identified per die to read/write limit. This control CPU
10 * offline in a die then remove the sysfs object for that die.
22 #include <asm/intel-family.h>
28 * struct uncore_data - Encapsulate all uncore data
30 * on system resume.
33 * @control_cpu: Designated CPU for a die to read/write
37 * settings for a die/package.
51 /* Max instances for uncore data, one for each die */
87 data->member_name); \
101 if (data->control_cpu < 0) in uncore_read_ratio()
102 return -ENXIO; in uncore_read_ratio()
104 ret = rdmsrl_on_cpu(data->control_cpu, MSR_UNCORE_RATIO_LIMIT, &cap); in uncore_read_ratio()
123 if (data->control_cpu < 0) { in uncore_write_ratio()
124 ret = -ENXIO; in uncore_write_ratio()
130 ret = -EINVAL; in uncore_write_ratio()
134 ret = rdmsrl_on_cpu(data->control_cpu, MSR_UNCORE_RATIO_LIMIT, &cap); in uncore_write_ratio()
146 ret = wrmsrl_on_cpu(data->control_cpu, MSR_UNCORE_RATIO_LIMIT, cap); in uncore_write_ratio()
150 data->stored_uncore_data = cap; in uncore_write_ratio()
167 return -EINVAL; in store_min_max_freq_khz()
233 complete(&data->kobj_unregister); in uncore_sysfs_entry_release()
264 if (data->valid) { in uncore_add_die_entry()
266 data->control_cpu = cpu; in uncore_add_die_entry()
276 uncore_read_ratio(data, &data->initial_min_freq_khz, in uncore_add_die_entry()
277 &data->initial_max_freq_khz); in uncore_add_die_entry()
279 init_completion(&data->kobj_unregister); in uncore_add_die_entry()
281 ret = kobject_init_and_add(&data->kobj, &uncore_ktype, in uncore_add_die_entry()
284 data->control_cpu = cpu; in uncore_add_die_entry()
285 data->valid = true; in uncore_add_die_entry()
291 /* Last CPU in this die is offline, make control cpu invalid */
299 data->control_cpu = -1; in uncore_remove_die_entry()
312 /* Use this CPU on this die as a control CPU */ in uncore_event_cpu_online()
354 if (!data || !data->valid || !data->stored_uncore_data) in uncore_pm_notify()
358 data->stored_uncore_data); in uncore_pm_notify()
390 return -ENODEV; in intel_uncore_init()
397 return -ENOMEM; in intel_uncore_init()
400 &cpu_subsys.dev_root->kobj); in intel_uncore_init()
402 ret = -ENOMEM; in intel_uncore_init()
407 "platform/x86/uncore-freq:online", in intel_uncore_init()