> > Hardware C-state auto-demotion is a mechanism where the HW overrides > > the OS C-state request, instead demoting to a shallower state, > > which is less expensive, but saves less power. > > > > Modern Linux should generally get exactly the states it requests. > > In particular, when a CPU is taken off-line, it must not be demoted, else > > it can prevent the entire package from reaching deep C-states. > > > > https://bugzilla.kernel.org/show_bug.cgi?id=25252 > > > > > > +#define MSR_NHM_SNB_PKG_CST_CFG_CTL 0x000000e2 > > +#define NHM_C3_AUTO_DEMOTE (1UL << 25) > > +#define NHM_C1_AUTO_DEMOTE (1UL << 26) > > + > .... > > @@ -85,6 +86,12 @@ static int intel_idle(struct cpuidle_dev > > static struct cpuidle_state *cpuidle_state_table; > > > > /* > > + * Hardware C-state auto-demotion may not always be optimal. > > + * Indicate which enable bits to clear here. > > + */ > > +static unsigned long long auto_demotion_disable_flags; > > Why long long here, but long above? long long here because MSR accesses are 64-bits, even on 32-bit builds. UL above because it matches the style of the neighboring code. The "UL" is purely cosmetic, of course. Same code is generated if it were "ULL" or left off entirely; as the LHS is 64-bit. cheers, Len Brown, Intel Open Source Technology Center _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm