Lines Matching +full:x +full:- +full:rp
1 // SPDX-License-Identifier: GPL-2.0-only
26 #include <asm/intel-family.h>
65 /* Handles CPU hotplug on multi-socket systems.
70 * per-domain level.
74 struct rapl_package *rp; in rapl_cpu_online() local
76 rp = rapl_find_package_domain_cpuslocked(cpu, rapl_msr_priv, true); in rapl_cpu_online()
77 if (!rp) { in rapl_cpu_online()
78 rp = rapl_add_package_cpuslocked(cpu, rapl_msr_priv, true); in rapl_cpu_online()
79 if (IS_ERR(rp)) in rapl_cpu_online()
80 return PTR_ERR(rp); in rapl_cpu_online()
82 cpumask_set_cpu(cpu, &rp->cpumask); in rapl_cpu_online()
88 struct rapl_package *rp; in rapl_cpu_down_prep() local
91 rp = rapl_find_package_domain_cpuslocked(cpu, rapl_msr_priv, true); in rapl_cpu_down_prep()
92 if (!rp) in rapl_cpu_down_prep()
95 cpumask_clear_cpu(cpu, &rp->cpumask); in rapl_cpu_down_prep()
96 lead_cpu = cpumask_first(&rp->cpumask); in rapl_cpu_down_prep()
98 rapl_remove_package_cpuslocked(rp); in rapl_cpu_down_prep()
99 else if (rp->lead_cpu == cpu) in rapl_cpu_down_prep()
100 rp->lead_cpu = lead_cpu; in rapl_cpu_down_prep()
106 if (rdmsrl_safe_on_cpu(cpu, ra->reg.msr, &ra->value)) { in rapl_msr_read_raw()
107 pr_debug("failed to read msr 0x%x on cpu %d\n", ra->reg.msr, cpu); in rapl_msr_read_raw()
108 return -EIO; in rapl_msr_read_raw()
110 ra->value &= ra->mask; in rapl_msr_read_raw()
119 ra->err = rdmsrl_safe(ra->reg.msr, &val); in rapl_msr_update_func()
120 if (ra->err) in rapl_msr_update_func()
123 val &= ~ra->mask; in rapl_msr_update_func()
124 val |= ra->value; in rapl_msr_update_func()
126 ra->err = wrmsrl_safe(ra->reg.msr, val); in rapl_msr_update_func()
137 return ra->err; in rapl_msr_write_raw()
169 pr_err("intel-rapl does not support CPU vendor %d\n", boot_cpu_data.x86_vendor); in rapl_msr_probe()
170 return -ENODEV; in rapl_msr_probe()
172 rapl_msr_priv->read_raw = rapl_msr_read_raw; in rapl_msr_probe()
173 rapl_msr_priv->write_raw = rapl_msr_write_raw; in rapl_msr_probe()
176 rapl_msr_priv->limits[RAPL_DOMAIN_PACKAGE] |= BIT(POWER_LIMIT4); in rapl_msr_probe()
177 rapl_msr_priv->regs[RAPL_DOMAIN_PACKAGE][RAPL_DOMAIN_REG_PL4].msr = in rapl_msr_probe()
182 rapl_msr_priv->control_type = powercap_register_control_type(NULL, "intel-rapl", NULL); in rapl_msr_probe()
183 if (IS_ERR(rapl_msr_priv->control_type)) { in rapl_msr_probe()
185 return PTR_ERR(rapl_msr_priv->control_type); in rapl_msr_probe()
192 rapl_msr_priv->pcap_rapl_online = ret; in rapl_msr_probe()
198 powercap_unregister_control_type(rapl_msr_priv->control_type); in rapl_msr_probe()
204 cpuhp_remove_state(rapl_msr_priv->pcap_rapl_online); in rapl_msr_remove()
205 powercap_unregister_control_type(rapl_msr_priv->control_type); in rapl_msr_remove()