Message ID | 3844875.YPkTDDlcrF@kreacher (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Rafael Wysocki |
Headers | show |
Series | x86: intel_epb: Do not build when CONFIG_PM is unset | expand |
* Rafael J. Wysocki <rjw@rjwysocki.net> wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > Commit 9ed0985332a6 ("x86: intel_epb: Take CONFIG_PM into account") > prevented the majority of the Performance and Energy Bias Hint (EPB) > handling code from being built when CONFIG_PM is unset to fix a > regression introduced by commit b9c273babce7 ("PM / arch: x86: > MSR_IA32_ENERGY_PERF_BIAS sysfs interface"). > > In hindsight, however, it would be better to skip all of the EPB > handling code for CONFIG_PM unset as there really is no reason for > it to be there in that case. Namely, if the EPB is not touched > by the kernel at all with CONFIG_PM unset, there is no need to > worry about modifying the EPB inadvertently on CPU online and since > the system will not suspend or hibernate then, there is no need to > worry about possible modifications of the EPB by the platform > firmware during system-wide PM transitions. > > For this reason, revert the changes made by commit 9ed0985332a6 > and only allow intel_epb.o to be built when CONFIG_PM is set. > > Note that this changes the behavior of the kernels built with > CONFIG_PM unset as they will not modify the EPB on boot if it is > zero initially any more, so it is not a fix strictly speaking, but > users building their kernels with CONFIG_PM unset really should not > expect them to take energy efficiency into account. Moreover, if > CONFIG_PM is unset for performance reasons, leaving EPB as set > initially by the platform firmware will actually be consistent > with the user's expectations. > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > --- > > This is complementary to the EPB handling changes made in the current > development cycle, so IMO it would be good to do it in this cycle too > if there are no technical concerns or objections regarding it. Sure: Acked-by: Ingo Molnar <mingo@kernel.org> Thanks, Ingo
Index: linux-pm/arch/x86/kernel/cpu/Makefile =================================================================== --- linux-pm.orig/arch/x86/kernel/cpu/Makefile +++ linux-pm/arch/x86/kernel/cpu/Makefile @@ -28,7 +28,10 @@ obj-y += cpuid-deps.o obj-$(CONFIG_PROC_FS) += proc.o obj-$(CONFIG_X86_FEATURE_NAMES) += capflags.o powerflags.o -obj-$(CONFIG_CPU_SUP_INTEL) += intel.o intel_pconfig.o intel_epb.o +ifdef CONFIG_CPU_SUP_INTEL +obj-y += intel.o intel_pconfig.o +obj-$(CONFIG_PM) += intel_epb.o +endif obj-$(CONFIG_CPU_SUP_AMD) += amd.o obj-$(CONFIG_CPU_SUP_HYGON) += hygon.o obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o Index: linux-pm/arch/x86/kernel/cpu/intel_epb.c =================================================================== --- linux-pm.orig/arch/x86/kernel/cpu/intel_epb.c +++ linux-pm/arch/x86/kernel/cpu/intel_epb.c @@ -97,7 +97,6 @@ static void intel_epb_restore(void) wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, (epb & ~EPB_MASK) | val); } -#ifdef CONFIG_PM static struct syscore_ops intel_epb_syscore_ops = { .suspend = intel_epb_save, .resume = intel_epb_restore, @@ -194,25 +193,6 @@ static int intel_epb_offline(unsigned in return 0; } -static inline void register_intel_ebp_syscore_ops(void) -{ - register_syscore_ops(&intel_epb_syscore_ops); -} -#else /* !CONFIG_PM */ -static int intel_epb_online(unsigned int cpu) -{ - intel_epb_restore(); - return 0; -} - -static int intel_epb_offline(unsigned int cpu) -{ - return intel_epb_save(); -} - -static inline void register_intel_ebp_syscore_ops(void) {} -#endif - static __init int intel_epb_init(void) { int ret; @@ -226,7 +206,7 @@ static __init int intel_epb_init(void) if (ret < 0) goto err_out_online; - register_intel_ebp_syscore_ops(); + register_syscore_ops(&intel_epb_syscore_ops); return 0; err_out_online: