Skip to content
  • Fenghua Yu's avatar
    x86/umwait: Add sysfs interface to control umwait C0.2 state · ff4b353f
    Fenghua Yu authored
    
    
    C0.2 state in umwait and tpause instructions can be enabled or disabled
    on a processor through IA32_UMWAIT_CONTROL MSR register.
    
    By default, C0.2 is enabled and the user wait instructions results in
    lower power consumption with slower wakeup time.
    
    But in real time systems which require faster wakeup time although power
    savings could be smaller, the administrator needs to disable C0.2 and all
    umwait invocations from user applications use C0.1.
    
    Create a sysfs interface which allows the administrator to control C0.2
    state during run time.
    
    Andy Lutomirski suggested to turn off local irqs before writing the MSR to
    ensure the cached control value is not changed by a concurrent sysfs write
    from a different CPU via IPI.
    
    [ tglx: Simplified the update logic in the write function and got rid of
      	all the convoluted type casts. Added a shared update function and
    	made the namespace consistent. Moved the sysfs create invocation.
    	Massaged changelog ]
    
    Signed-off-by: default avatarFenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: default avatarAshok Raj <ashok.raj@intel.com>
    Reviewed-by: default avatarTony Luck <tony.luck@intel.com>
    Cc: "Borislav Petkov" <bp@alien8.de>
    Cc: "H Peter Anvin" <hpa@zytor.com>
    Cc: "Andy Lutomirski" <luto@kernel.org>
    Cc: "Peter Zijlstra" <peterz@infradead.org>
    Cc: "Ravi V Shankar" <ravi.v.shankar@intel.com>
    Link: https://lkml.kernel.org/r/1560994438-235698-4-git-send-email-fenghua.yu@intel.com
    ff4b353f