Lines Matching +full:power +full:- +full:limits
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Intel Running Average Power Limit (RAPL) Driver via MSR interface
26 #include <asm/intel-family.h>
45 .limits[RAPL_DOMAIN_PACKAGE] = 2,
46 .limits[RAPL_DOMAIN_PLATFORM] = 2,
49 /* Handles CPU hotplug on multi-socket systems.
54 * per-domain level.
66 cpumask_set_cpu(cpu, &rp->cpumask); in rapl_cpu_online()
79 cpumask_clear_cpu(cpu, &rp->cpumask); in rapl_cpu_down_prep()
80 lead_cpu = cpumask_first(&rp->cpumask); in rapl_cpu_down_prep()
83 else if (rp->lead_cpu == cpu) in rapl_cpu_down_prep()
84 rp->lead_cpu = lead_cpu; in rapl_cpu_down_prep()
90 u32 msr = (u32)ra->reg; in rapl_msr_read_raw()
92 if (rdmsrl_safe_on_cpu(cpu, msr, &ra->value)) { in rapl_msr_read_raw()
94 return -EIO; in rapl_msr_read_raw()
96 ra->value &= ra->mask; in rapl_msr_read_raw()
103 u32 msr = (u32)ra->reg; in rapl_msr_update_func()
106 ra->err = rdmsrl_safe(msr, &val); in rapl_msr_update_func()
107 if (ra->err) in rapl_msr_update_func()
110 val &= ~ra->mask; in rapl_msr_update_func()
111 val |= ra->value; in rapl_msr_update_func()
113 ra->err = wrmsrl_safe(msr, val); in rapl_msr_update_func()
124 return ra->err; in rapl_msr_write_raw()
142 rapl_msr_priv.limits[RAPL_DOMAIN_PACKAGE] = 3; in rapl_msr_probe()
148 rapl_msr_priv.control_type = powercap_register_control_type(NULL, "intel-rapl", NULL); in rapl_msr_probe()
192 MODULE_DESCRIPTION("Driver for Intel RAPL (Running Average Power Limit) control via MSR interface");