Skip to content
  • Huang Rui's avatar
    x86/asm/delay: Introduce an MWAITX-based delay with a configurable timer · b466bdb6
    Huang Rui authored and Ingo Molnar's avatar Ingo Molnar committed
    
    
    MWAITX can enable a timer and a corresponding timer value
    specified in SW P0 clocks. The SW P0 frequency is the same as
    TSC. The timer provides an upper bound on how long the
    instruction waits before exiting.
    
    This way, a delay function in the kernel can leverage that
    MWAITX timer of MWAITX.
    
    When a CPU core executes MWAITX, it will be quiesced in a
    waiting phase, diminishing its power consumption. This way, we
    can save power in comparison to our default TSC-based delays.
    
    A simple test shows that:
    
    	$ cat /sys/bus/pci/devices/0000\:00\:18.4/hwmon/hwmon0/power1_acc
    	$ sleep 10000s
    	$ cat /sys/bus/pci/devices/0000\:00\:18.4/hwmon/hwmon0/power1_acc
    
    Results:
    
    	* TSC-based default delay:      485115 uWatts average power
    	* MWAITX-based delay:           252738 uWatts average power
    
    Thus, that's about 240 milliWatts less power consumption. The
    test method relies on the support of AMD CPU accumulated power
    algorithm in fam15h_power for which patches are forthcoming.
    
    Suggested-by: default avatarAndy Lutomirski <luto@amacapital.net>
    Suggested-by: default avatarBorislav Petkov <bp@suse.de>
    Suggested-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Signed-off-by: default avatarHuang Rui <ray.huang@amd.com>
    [ Fix delay truncation. ]
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Aaron Lu <aaron.lu@intel.com>
    Cc: Andreas Herrmann <herrmann.der.user@gmail.com>
    Cc: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
    Cc: Fengguang Wu <fengguang.wu@intel.com>
    Cc: Frédéric Weisbecker <fweisbec@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Hector Marco-Gisbert <hecmargi@upv.es>
    Cc: Jacob Shin <jacob.w.shin@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Li <tony.li@amd.com>
    Link: http://lkml.kernel.org/r/1438744732-1459-3-git-send-email-ray.huang@amd.com
    Link: http://lkml.kernel.org/r/1439201994-28067-4-git-send-email-bp@alien8.de
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    b466bdb6