Skip to content

Commit e02b50c

Browse files
sinkapbp3tk0v
authored andcommitted
Documentation/hw-vuln: Document the interaction between IBRS and STIBP
Explain why STIBP is needed with legacy IBRS as currently implemented (KERNEL_IBRS) and why STIBP is not needed when enhanced IBRS is enabled. Fixes: 7c693f5 ("x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS") Signed-off-by: KP Singh <kpsingh@kernel.org> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://lore.kernel.org/r/20230227060541.1939092-2-kpsingh@kernel.org
1 parent 6921ed9 commit e02b50c

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

Documentation/admin-guide/hw-vuln/spectre.rst

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -479,8 +479,16 @@ Spectre variant 2
479479
On Intel Skylake-era systems the mitigation covers most, but not all,
480480
cases. See :ref:`[3] <spec_ref3>` for more details.
481481

482-
On CPUs with hardware mitigation for Spectre variant 2 (e.g. Enhanced
483-
IBRS on x86), retpoline is automatically disabled at run time.
482+
On CPUs with hardware mitigation for Spectre variant 2 (e.g. IBRS
483+
or enhanced IBRS on x86), retpoline is automatically disabled at run time.
484+
485+
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
486+
boot, by setting the IBRS bit, and they're automatically protected against
487+
Spectre v2 variant attacks, including cross-thread branch target injections
488+
on SMT systems (STIBP). In other words, eIBRS enables STIBP too.
489+
490+
Legacy IBRS systems clear the IBRS bit on exit to userspace and
491+
therefore explicitly enable STIBP for that
484492

485493
The retpoline mitigation is turned on by default on vulnerable
486494
CPUs. It can be forced on or off by the administrator
@@ -504,9 +512,12 @@ Spectre variant 2
504512
For Spectre variant 2 mitigation, individual user programs
505513
can be compiled with return trampolines for indirect branches.
506514
This protects them from consuming poisoned entries in the branch
507-
target buffer left by malicious software. Alternatively, the
508-
programs can disable their indirect branch speculation via prctl()
509-
(See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
515+
target buffer left by malicious software.
516+
517+
On legacy IBRS systems, at return to userspace, implicit STIBP is disabled
518+
because the kernel clears the IBRS bit. In this case, the userspace programs
519+
can disable indirect branch speculation via prctl() (See
520+
:ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
510521
On x86, this will turn on STIBP to guard against attacks from the
511522
sibling thread when the user program is running, and use IBPB to
512523
flush the branch target buffer when switching to/from the program.

0 commit comments

Comments
 (0)