[lkml]   [2013]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: 50 Watt idle power regression bisected to Linux-3.10
On Wed, Dec 11, 2013 at 12:28:36PM +0100, Thomas Gleixner wrote:
> On Wed, 11 Dec 2013, Mike Galbraith wrote:
> > Alakazam..
> > Yup, magical gremlin repellent works on 8 socket DL980 too.
> Now here is a less magical version of the gremlin repellent.
> And just for the amusement value: The erratum for the series 7400
> says:
> AAI65. MONITOR/MWAIT May Have Excessive False Wakeups
> Problem: Normally, if MWAIT is used to enter a C-state that is
> C1 or higher, a store to the address range armed by
> the MONITOR instruction will cause the processor to
> exit MWAIT. Due to this erratum, false wakeups may
> occur when the monitored address range was recently
> written prior to executing the MONITOR instruction.
> Implication: Due to this erratum, performance and power savings may
> be impacted due to excessive false wakeups.
> Workaround: Execute a CLFLUSH Instruction immediately before every
> MONITOR instruction when the monitored location may
> have been recently written.
> Now that looks like the very same issue on these westmere EX
> machines.
> These false wakeups can be observed already before the idle changes
> and now they are just more prominent.
> Adding that clflush() unconditionally fixes the issue at least on
> Boris machine.
> Mike, can you retest on that 8 socket monstrum, please?
> So it looks like the idle power regression is actually a software
> change which exhibits a hardware "regression".

Right, if it turns out that this is really the case and that this
erratum hasn't been fixed for models later than 29 - we'd need the
additional model numbers to set X86_FEATURE_CLFLUSH_MONITOR correctly.


Sent from a fat crate under my desk. Formatting is fine.

 \ /
  Last update: 2013-12-11 13:01    [W:0.175 / U:1.080 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site