• H
    x86/asm/delay: Introduce an MWAITX-based delay with a configurable timer · b466bdb6
    Huang Rui 提交于
    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: NAndy Lutomirski <luto@amacapital.net>
    Suggested-by: NBorislav Petkov <bp@suse.de>
    Suggested-by: NPeter Zijlstra <peterz@infradead.org>
    Signed-off-by: NHuang Rui <ray.huang@amd.com>
    [ Fix delay truncation. ]
    Signed-off-by: NBorislav 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.deSigned-off-by: NIngo Molnar <mingo@kernel.org>
    b466bdb6
amd.c 23.0 KB