All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Andy Lutomirski <luto@kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Dave Hansen <dave.hansen@intel.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Andi Kleen <ak@linux.intel.com>,
	Arjan Van De Ven <arjan.van.de.ven@intel.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/7] x86/feature: Detect the x86 feature to control Speculation
Date: Thu, 4 Jan 2018 20:58:10 +0100	[thread overview]
Message-ID: <20180104195810.GA30228@kroah.com> (raw)
In-Reply-To: <427aa76dea14532dea7e49f0bce4e7cf1dea7c6f.1515086770.git.tim.c.chen@linux.intel.com>

On Thu, Jan 04, 2018 at 09:56:42AM -0800, Tim Chen wrote:
> cpuid ax=0x7, return rdx bit 26 to indicate presence of this feature
> IA32_SPEC_CTRL (0x48) and IA32_PRED_CMD (0x49)
> IA32_SPEC_CTRL, bit0 – Indirect Branch Restricted Speculation (IBRS)
> IA32_PRED_CMD,  bit0 – Indirect Branch Prediction Barrier (IBPB)
> 
> If IBRS is set, near returns and near indirect jumps/calls will not
> allow their predicted target address to be controlled by code that
> executed in a less privileged prediction mode before the IBRS mode was
> last written with a value of 1 or on another logical processor so long
> as all RSB entries from the previous less privileged prediction mode
> are overwritten.
> 
> Setting of IBPB ensures that earlier code's behavior does not control later
> indirect branch predictions.  It is used when context switching to new
> untrusted address space.  Unlike IBRS, it is a command MSR and does not retain
> its state.
> 
> * Thus a near indirect jump/call/return may be affected by code in a
> less privileged prediction mode that executed AFTER IBRS mode was last
> written with a value of 1
> 
> * There is no need to clear IBRS before writing it with a value of
> 1. Unconditionally writing it with a value of 1 after the prediction
> mode change is sufficient
> 
> * Note: IBRS is not required in order to isolate branch predictions for
> SMM or SGX enclaves
> 
> * Code executed by a sibling logical processor cannot control indirect
> jump/call/return predicted target when IBRS is set
> 
> * SMEP will prevent supervisor mode using RSB entries filled by user code;
> this can reduce the need for software to overwrite RSB entries
> 
> * IBRS is not guaranteed to differentiate two applications that use
> the same CR3 due to recycling. Software can use an IBPB command when
> recycling a page table base address.
> 
> * VMM software can similarly use an IBPB when recycling a controlling
> VMCS pointer address
> 
> CPU performance could be reduced when running with IBRS set.
> 
> Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
> ---
>  arch/x86/include/asm/cpufeatures.h | 1 +
>  arch/x86/include/asm/msr-index.h   | 7 +++++++
>  arch/x86/kernel/cpu/scattered.c    | 1 +
>  3 files changed, 9 insertions(+)
> 
> diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
> index 86c68cb..431f393 100644
> --- a/arch/x86/include/asm/cpufeatures.h
> +++ b/arch/x86/include/asm/cpufeatures.h
> @@ -209,6 +209,7 @@
>  #define X86_FEATURE_AVX512_4FMAPS	( 7*32+17) /* AVX-512 Multiply Accumulation Single precision */
>  
>  #define X86_FEATURE_MBA			( 7*32+18) /* Memory Bandwidth Allocation */
> +#define X86_FEATURE_SPEC_CTRL		( 7*32+19) /* Control Speculation Control */
>  
>  /* Virtualization flags: Linux defined, word 8 */
>  #define X86_FEATURE_TPR_SHADOW		( 8*32+ 0) /* Intel TPR Shadow */

You should have gotten a build warning with just this patch, please also
update tools/arch/x86/include/asm/cpufeatures.h to fix that.

And why not use a free slot, (7*32+13) or (7*32+12) is free, right?

Or were you just trying to make backports "easier"?  :)

thanks,

greg k-h

  reply	other threads:[~2018-01-04 19:58 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-04 17:56 [PATCH 0/7] IBRS patch series Tim Chen
2018-01-04 17:56 ` [PATCH 1/7] x86/feature: Detect the x86 feature to control Speculation Tim Chen
2018-01-04 19:58   ` Greg KH [this message]
2018-01-04 20:47     ` Tim Chen
2018-01-05 11:14   ` David Woodhouse
2018-01-05 15:14     ` Tom Lendacky
2018-01-05 17:07       ` Tim Chen
2018-01-05 13:09   ` Thomas Gleixner
2018-01-05 13:44     ` Andrea Arcangeli
2018-01-05 13:51       ` Thomas Gleixner
2018-01-04 17:56 ` [PATCH 2/7] x86/enter: MACROS to set/clear IBRS Tim Chen
2018-01-04 22:16   ` Peter Zijlstra
2018-01-04 22:21     ` Tim Chen
2018-01-04 22:23       ` Dave Hansen
2018-01-05  4:54         ` Andy Lutomirski
2018-01-05  5:05           ` Dave Hansen
2018-01-05 13:19       ` Thomas Gleixner
2018-01-04 17:56 ` [PATCH 3/7] x86/enter: Use IBRS on syscall and interrupts Tim Chen
2018-01-04 20:00   ` Greg KH
2018-01-04 20:26     ` Tim Chen
2018-01-04 20:45   ` Dave Hansen
2018-01-04 22:33   ` Peter Zijlstra
2018-01-04 23:12     ` Andrea Arcangeli
2018-01-05  0:08     ` Dave Hansen
2018-01-05  4:51       ` Andy Lutomirski
2018-01-05  5:11         ` Dave Hansen
2018-01-05 12:01           ` Alan Cox
2018-01-05 13:35   ` Thomas Gleixner
2018-01-04 17:56 ` [PATCH 4/7] x86/idle: Disable IBRS entering idle and enable it on wakeup Tim Chen
2018-01-04 22:47   ` Peter Zijlstra
2018-01-04 23:00     ` Andrea Arcangeli
2018-01-04 23:22     ` Tim Chen
2018-01-04 23:42       ` Andrea Arcangeli
2018-01-04 23:45         ` Thomas Gleixner
2018-01-05  0:03           ` Andrea Arcangeli
2018-01-08  8:24       ` Peter Zijlstra
2018-01-04 17:56 ` [PATCH 5/7] x86: Use IBRS for firmware update path Tim Chen
2018-01-04 18:48   ` Alan Cox
2018-01-04 20:05   ` Greg KH
2018-01-04 20:08     ` Woodhouse, David
2018-01-05 16:08       ` gregkh
2018-01-05 16:37         ` Andrea Arcangeli
2018-01-04 20:21     ` Andrew Cooper
2018-01-04 20:48     ` Andrea Arcangeli
2018-01-04 20:51   ` Yves-Alexis Perez
2018-01-04 21:13     ` Tim Chen
2018-01-04 22:51   ` Peter Zijlstra
2018-01-05 13:40   ` Thomas Gleixner
2018-01-04 17:56 ` [PATCH 6/7] x86/spec_ctrl: Add sysctl knobs to enable/disable SPEC_CTRL feature Tim Chen
2018-01-04 18:33   ` Borislav Petkov
2018-01-04 18:36     ` Dave Hansen
2018-01-04 18:52       ` Borislav Petkov
2018-01-04 18:57         ` Andrea Arcangeli
2018-01-04 18:59         ` Dave Hansen
2018-01-04 19:06           ` Borislav Petkov
2018-01-05 13:48       ` Thomas Gleixner
2018-01-04 18:38     ` Andrea Arcangeli
2018-01-04 18:54       ` Dave Hansen
2018-01-04 18:56         ` Borislav Petkov
2018-01-04 18:55       ` Borislav Petkov
2018-01-04 18:34   ` Andrea Arcangeli
2018-01-04 19:02     ` Tim Chen
2018-01-04 18:50   ` Alan Cox
2018-01-04 20:16   ` Greg KH
2018-01-04 20:58     ` Tim Chen
2018-01-04 22:54   ` Peter Zijlstra
2018-01-04 23:26     ` Tim Chen
2018-01-04 23:51       ` Andrea Arcangeli
2018-01-04 23:59         ` Borislav Petkov
2018-01-05  0:07           ` Thomas Gleixner
2018-01-05 11:16   ` David Woodhouse
2018-01-06  1:29     ` Tim Chen
2018-01-04 17:56 ` [PATCH 7/7] x86/microcode: Recheck IBRS features on microcode reload Tim Chen
2018-01-04 18:28   ` Borislav Petkov
2018-01-04 18:34     ` Andrea Arcangeli
2018-01-04 18:50       ` Borislav Petkov
2018-01-04 19:10         ` Tim Chen
2018-01-05 13:32         ` Greg KH
2018-01-05 13:37           ` Borislav Petkov
2018-01-05 13:47             ` Greg KH
2018-01-05 15:28           ` Andrea Arcangeli
2018-01-04 19:00 ` [PATCH 0/7] IBRS patch series Linus Torvalds
2018-01-04 19:19   ` David Woodhouse
2018-01-04 19:33     ` Linus Torvalds
2018-01-04 19:39       ` David Woodhouse
2018-01-04 19:40       ` Andrew Cooper
2018-01-04 19:46         ` David Woodhouse
2018-01-04 21:22       ` Van De Ven, Arjan
2018-01-05 11:32         ` Paolo Bonzini
2018-01-05 12:09           ` Paul Turner
2018-01-05 14:45           ` Van De Ven, Arjan
2018-01-05 14:43         ` Andrea Arcangeli
2018-01-05 14:52           ` Van De Ven, Arjan
2018-01-05 15:03             ` Andrea Arcangeli
2018-01-05 14:54           ` Thomas Gleixner
2018-01-05 11:52       ` Paul Turner
2018-01-05 14:28         ` David Woodhouse
2018-01-05 14:42           ` Van De Ven, Arjan
2018-01-05 15:38             ` David Woodhouse
2018-01-05 16:05               ` Andrea Arcangeli
2018-01-05 16:37                 ` David Woodhouse
2018-01-05 16:42                   ` Andrea Arcangeli
2018-01-05 16:44                     ` Van De Ven, Arjan
2018-01-05 16:46                     ` David Woodhouse
2018-01-05  5:25   ` Florian Weimer
2018-01-05 11:05     ` David Woodhouse
2018-01-04 19:05 ` Justin Forbes
2018-01-04 19:10   ` Tim Chen
2018-01-04 21:01     ` Yves-Alexis Perez
2018-01-05 13:28       ` Greg KH
2018-01-05 13:47         ` Yves-Alexis Perez
2018-01-05 14:01           ` Greg KH
2018-01-05 14:26             ` Paolo Bonzini
2018-01-05 14:54               ` Yves-Alexis Perez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180104195810.GA30228@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=aarcange@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=arjan.van.de.ven@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.