Skip to content
  • Ray Huang's avatar
    x86/asm: Add MONITORX/MWAITX instruction support · f9675674
    Ray Huang authored
    
    
    AMD Carrizo processors (Family 15h, Models 60h-6fh) added a new
    feature called MWAITX (MWAIT with extensions) as an extension to
    MONITOR/MWAIT.
    
    This new instruction controls a configurable timer which causes
    the core to exit wait state on timer expiration, in addition to
    "normal" MWAIT condition of reading from a monitored VA.
    
    Compared to MONITOR/MWAIT, there are minor differences in opcode
    and input parameters:
    
    MWAITX ECX[1]: enable timer if set
    MWAITX EBX[31:0]: max wait time expressed in SW P0 clocks ==
    TSC. The software P0 frequency is the same as the TSC frequency.
    
                    MWAIT                           MWAITX
    opcode          0f 01 c9           |            0f 01 fb
    ECX[0]                  value of RFLAGS.IF seen by instruction
    ECX[1]          unused/#GP if set  |            enable timer if set
    ECX[31:2]                     unused/#GP if set
    EAX                           unused (reserve for hint)
    EBX[31:0]       unused             |            max wait time (SW P0 == TSC)
    
                    MONITOR                         MONITORX
    opcode          0f 01 c8           |            0f 01 fa
    EAX                     (logical) address to monitor
    ECX                     #GP if not zero
    
    Max timeout = EBX/(TSC frequency)
    
    Signed-off-by: default avatarHuang Rui <ray.huang@amd.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Aaron Lu <aaron.lu@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andreas Herrmann <herrmann.der.user@gmail.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Dirk Brandewie <dirk.j.brandewie@intel.com>
    Cc: Fengguang Wu <fengguang.wu@intel.com>
    Cc: Frédéric Weisbecker <fweisbec@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <bitbucket@online.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Li <tony.li@amd.com>
    Link: http://lkml.kernel.org/r/1439201994-28067-3-git-send-email-bp@alien8.de
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    f9675674