mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
x86/spec-ctrl: Wire up the Native-BHI software sequences
In the absence of BHI_DIS_S, mitigating Native-BHI requires the use of a
software sequence.
Introduce a new bhb-seq= option to select between avaialble sequences and
bhb-entry= to control the per-PV/HVM actions like we have for other blocks.
Activate the short sequence by default for PV and HVM guests on affected
hardware if BHI_DIS_S isn't present.
This is part of XSA-456 / CVE-2024-2201.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
(cherry picked from commit 689ad48ce9)
This commit is contained in:
1 parent
72a357f4fa
commit
9be85b14aa
2 files changed
+157
-13
No files matched your search
@@ -2370,8 +2370,9 @@ By default SSBD will be mitigated at runtime (i.e `ssbd=runtime`).
|
||||
|
||||
### spec-ctrl (x86)
|
||||
> `= List of [ <bool>, xen=<bool>, {pv,hvm}=<bool>,
|
||||
> {msr-sc,rsb,verw,ibpb-entry}=<bool>|{pv,hvm}=<bool>,
|
||||
> bti-thunk=retpoline|lfence|jmp, {ibrs,ibpb,ssbd,psfd,
|
||||
> {msr-sc,rsb,verw,{ibpb,bhb}-entry}=<bool>|{pv,hvm}=<bool>,
|
||||
> bti-thunk=retpoline|lfence|jmp,bhb-seq=short|tsx,
|
||||
> {ibrs,ibpb,ssbd,psfd,
|
||||
> eager-fpu,l1d-flush,branch-harden,srb-lock,
|
||||
> unpriv-mmio,gds-mit,div-scrub,lock-harden,
|
||||
> bhi-dis-s}=<bool> ]`
|
||||
@@ -2396,10 +2397,10 @@ in place for guests to use.
|
||||
|
||||
Use of a positive boolean value for either of these options is invalid.
|
||||
|
||||
The `pv=`, `hvm=`, `msr-sc=`, `rsb=`, `verw=` and `ibpb-entry=` options
|
||||
offer fine grained control over the primitives by Xen. These impact Xen's
|
||||
ability to protect itself, and/or Xen's ability to virtualise support for
|
||||
guests to use.
|
||||
The `pv=`, `hvm=`, `msr-sc=`, `rsb=`, `verw=`, `ibpb-entry=` and `bhb-entry=`
|
||||
options offer fine grained control over the primitives by Xen. These impact
|
||||
Xen's ability to protect itself, and/or Xen's ability to virtualise support
|
||||
for guests to use.
|
||||
|
||||
* `pv=` and `hvm=` offer control over all suboptions for PV and HVM guests
|
||||
respectively.
|
||||
@@ -2425,6 +2426,12 @@ guests to use.
|
||||
Return Stack Overflow if appropriate microcode has been loaded, but for
|
||||
performance reasons dom0 is unprotected by default. If it is necessary to
|
||||
protect dom0 too, boot with `spec-ctrl=ibpb-entry`.
|
||||
* `bhb-entry=` offers control over whether BHB-clearing (Branch History
|
||||
Buffer) sequences are used on entry to Xen. This is used by default on
|
||||
hardware vulnerable to Branch History Injection, when the BHI_DIS_S control
|
||||
is not available (see `bhi-dis-s`). The choice of scrubbing sequence can be
|
||||
selected using the `bhb-seq=` option. If it is necessary to protect dom0
|
||||
too, boot with `spec-ctrl=bhb-entry`.
|
||||
|
||||
If Xen was compiled with `CONFIG_INDIRECT_THUNK` support, `bti-thunk=` can be
|
||||
used to select which of the thunks gets patched into the
|
||||
@@ -2432,6 +2439,12 @@ used to select which of the thunks gets patched into the
|
||||
(generally preferred), with the alternatives being `jmp` (a `jmp *%reg` gadget,
|
||||
minimal overhead), and `lfence` (an `lfence; jmp *%reg` gadget).
|
||||
|
||||
On all hardware, `bhb-seq=` can be used to select which of the BHB-clearing
|
||||
sequences gets used. This interacts with the `bhb-entry=` and `bhi-dis-s=`
|
||||
options in order to mitigate Branch History Injection on affected hardware.
|
||||
The default sequence is `short`, with `tsx` as an alternative available
|
||||
capable hardware that can be opted in to.
|
||||
|
||||
On hardware supporting IBRS (Indirect Branch Restricted Speculation), the
|
||||
`ibrs=` option can be used to force or prevent Xen using the feature itself.
|
||||
If Xen is not using IBRS itself, functionality is still set up so IBRS can be
|
||||
|
||||