Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
7c5a3f0
lib: packing: refuse operating on bit indices which exceed size of bu…
PlaidCat Nov 12, 2025
83f8ff6
lib: packing: adjust definitions and implementation for arbitrary buf…
PlaidCat Nov 12, 2025
0e51a39
lib: packing: remove kernel-doc from header file
PlaidCat Nov 12, 2025
37c50f3
lib: packing: add pack() and unpack() wrappers over packing()
PlaidCat Nov 12, 2025
df7d700
lib: packing: duplicate pack() and unpack() implementations
PlaidCat Nov 12, 2025
cdf314e
lib: packing: add KUnit tests adapted from selftests
PlaidCat Nov 12, 2025
e7ecd7d
lib: packing: add additional KUnit tests
PlaidCat Nov 12, 2025
cef9690
lib: packing: fix QUIRK_MSB_ON_THE_RIGHT behavior
PlaidCat Nov 12, 2025
8190ccd
lib: packing: use BITS_PER_BYTE instead of 8
PlaidCat Nov 12, 2025
b1c2e29
lib: packing: use GENMASK() for box_mask
PlaidCat Nov 12, 2025
f23776a
lib: packing: create __pack() and __unpack() variants without error c…
PlaidCat Nov 12, 2025
6da30d3
lib: packing: demote truncation error in pack() to a warning in __pack()
PlaidCat Nov 12, 2025
eed22f5
lib: packing: add pack_fields() and unpack_fields()
PlaidCat Nov 12, 2025
005bf95
lib: packing: document recently added APIs
PlaidCat Nov 12, 2025
3d360ea
lib: packing: catch kunit_kzalloc() failure in the pack() test
PlaidCat Nov 12, 2025
ac1567a
devlink: add devlink_fmsg_put() macro
PlaidCat Nov 12, 2025
d38ba7f
devlink: add devlink_fmsg_dump_skb() function
PlaidCat Nov 12, 2025
85b677c
unroll: add generic loop unroll helpers
PlaidCat Nov 12, 2025
f6e4352
ice: Fix E825 initialization
PlaidCat Nov 12, 2025
e3cfb77
ice: Fix quad registers read on E825
PlaidCat Nov 12, 2025
e0eae6a
ice: Fix ETH56G FC-FEC Rx offset value
PlaidCat Nov 12, 2025
502b3fa
ice: Add correct PHY lane assignment
PlaidCat Nov 12, 2025
5f0027f
ice: Implement ethtool reset support
PlaidCat Nov 12, 2025
f861fd7
ice: consistently use q_idx in ice_vc_cfg_qs_msg()
PlaidCat Nov 12, 2025
e2f406d
ice: store max_frame and rx_buf_len only in ice_rx_ring
PlaidCat Nov 12, 2025
99568a1
ice: Make use of assign_bit() API
PlaidCat Nov 12, 2025
8ab7778
ice: Use common error handling code in two functions
PlaidCat Nov 12, 2025
33a0714
ice: Cleanup unused declarations
PlaidCat Nov 12, 2025
5826ef6
virtchnl: support queue rate limit and quanta size configuration
PlaidCat Nov 12, 2025
9ef0e42
virtchnl: fix m68k build.
PlaidCat Nov 12, 2025
adbab33
ice: Support VF queue rate limit and quanta size configuration
PlaidCat Nov 12, 2025
3f0d406
ice: rework of dump serdes equalizer values feature
PlaidCat Nov 12, 2025
eb63f90
ice: extend dump serdes equalizer values feature
PlaidCat Nov 12, 2025
9bb6cfe
ice: refactor "last" segment of DDP pkg
PlaidCat Nov 12, 2025
83d0d21
ice: support optional flags in signature segment header
PlaidCat Nov 12, 2025
1797b2c
ice: only allow Tx promiscuous for multicast
PlaidCat Nov 12, 2025
ac3fb5a
ice: initialize pf->supported_rxdids immediately after loading DDP
PlaidCat Nov 12, 2025
5b66b05
ice: use stack variable for virtchnl_supported_rxdids
PlaidCat Nov 12, 2025
f05ca37
ice: Unbind the workqueue
PlaidCat Nov 12, 2025
b00daf9
ice: fix PHY timestamp extraction for ETH56G
PlaidCat Nov 12, 2025
a631628
ice: Fix NULL pointer dereference in switchdev
PlaidCat Nov 12, 2025
42ffb7f
ice: Fix VLAN pruning in switchdev mode
PlaidCat Nov 12, 2025
d5c1b20
ice: fix max values for dpll pin phase adjust
PlaidCat Nov 12, 2025
31ea462
ice: fix incorrect PHY settings for 100 GB/s
PlaidCat Nov 12, 2025
5ea7287
ice: remove int_q_state from ice_tlan_ctx
PlaidCat Nov 12, 2025
89e47b5
ice: use structures to keep track of queue context size
PlaidCat Nov 12, 2025
4039966
ice: use <linux/packing.h> for Tx and Rx queue context data
PlaidCat Nov 12, 2025
a93da80
ice: reduce size of queue context fields
PlaidCat Nov 12, 2025
ea766b2
ice: move prefetch enable to ice_setup_rx_ctx
PlaidCat Nov 12, 2025
78c6098
ice: cleanup Rx queue context programming functions
PlaidCat Nov 12, 2025
2a34a84
ice: rename devlink_port.[ch] to port.[ch]
PlaidCat Nov 12, 2025
14f861d
ice: add Tx hang devlink health reporter
PlaidCat Nov 12, 2025
dbd6ff3
ice: Add MDD logging via devlink health
PlaidCat Nov 12, 2025
26038d5
ice: add recipe priority check in search
PlaidCat Nov 12, 2025
368674f
ice: add fw and port health reporters
PlaidCat Nov 12, 2025
a3dce3e
ice: use string choice helpers
PlaidCat Nov 12, 2025
bf432e7
ice: Add in/out PTP pin delays
PlaidCat Nov 12, 2025
87ce82c
ice: fix ice_parser_rt::bst_key array size
PlaidCat Nov 12, 2025
6a198dd
ice: remove invalid parameter of equalizer
PlaidCat Nov 12, 2025
85f40ca
ice: Add check for devm_kzalloc()
PlaidCat Nov 12, 2025
ab2b78a
ice: count combined queues using Rx/Tx count
PlaidCat Nov 12, 2025
12a2567
ice: use generic unrolled_count() macro
PlaidCat Nov 12, 2025
a143a5c
ice: Don't check device type when checking GNSS presence
PlaidCat Nov 12, 2025
eb3133b
ice: Remove unnecessary ice_is_e8xx() functions
PlaidCat Nov 12, 2025
a3d576e
ice: Use FIELD_PREP for timestamp values
PlaidCat Nov 12, 2025
93fa037
ice: Process TSYN IRQ in a separate function
PlaidCat Nov 12, 2025
fe8da2d
ice: Add unified ice_capture_crosststamp
PlaidCat Nov 12, 2025
fbe39ed
ice: Refactor ice_ptp_init_tx_*
PlaidCat Nov 12, 2025
71363a9
ice: Implement PTP support for E830 devices
PlaidCat Nov 12, 2025
8b9c136
ice: refactor ice_fdir_create_dflt_rules() function
PlaidCat Nov 12, 2025
28644de
virtchnl: add support for enabling PTP on iAVF
PlaidCat Nov 12, 2025
626cb68
ice: support Rx timestamp on flex descriptor
PlaidCat Nov 12, 2025
821385d
virtchnl: add enumeration for the rxdid format
PlaidCat Nov 12, 2025
7bbaf85
ice: dpll: Remove newline at the end of a netlink error message
PlaidCat Nov 12, 2025
dddb6c0
ice: do not configure destination override for switchdev
PlaidCat Nov 12, 2025
5d64051
ice: fix memory leak in aRFS after reset
PlaidCat Nov 12, 2025
8772e1a
ice: Fix switchdev slow-path in LAG
PlaidCat Nov 12, 2025
fbe71b9
ice: register devlink prior to creating health reporters
PlaidCat Nov 12, 2025
bfffe24
ice: Add E830 checksum offload support
PlaidCat Nov 12, 2025
8c0f525
ice: rename ice_ptp_init_phc_eth56g function
PlaidCat Nov 12, 2025
4df9166
ice: Refactor E825C PHY registers info struct
PlaidCat Nov 12, 2025
8e375f6
ice: E825C PHY register cleanup
PlaidCat Nov 12, 2025
ca7f4c1
ice: health.c: fix compilation on gcc 7.5
PlaidCat Nov 12, 2025
932d999
ice: fix reservation of resources for RDMA when disabled
PlaidCat Nov 12, 2025
7aece85
virtchnl: make proto and filter action count unsigned
PlaidCat Nov 12, 2025
881c39d
ice: stop truncating queue ids when checking
PlaidCat Nov 12, 2025
91c97c6
ice: validate queue quanta parameters to prevent OOB access
PlaidCat Nov 12, 2025
b3fafea
ice: fix input validation for virtchnl BW
PlaidCat Nov 12, 2025
8479ad8
ice: fix using untrusted value of pkt_len in ice_vc_fdir_parse_raw()
PlaidCat Nov 12, 2025
585265e
ice: fix Get Tx Topology AQ command error on E830
PlaidCat Nov 12, 2025
eb82583
ice: Check VF VSI Pointer Value in ice_vc_add_fdir_fltr()
PlaidCat Nov 12, 2025
9ae5822
ice: fix vf->num_mac count with port representors
PlaidCat Nov 12, 2025
0fbb7d0
ice: Fix LACP bonds without SRIOV environment
PlaidCat Nov 12, 2025
a005954
ice: fix Tx scheduler error handling in XDP callback
PlaidCat Nov 12, 2025
9ced651
ice: create new Tx scheduler nodes for new queues only
PlaidCat Nov 12, 2025
76851ee
ice: fix rebuilding the Tx scheduler tree for large queue counts
PlaidCat Nov 12, 2025
fe5de06
ice/ptp: fix crosstimestamp reporting
PlaidCat Nov 12, 2025
57405a6
ice: remove SW side band access workaround for E825
PlaidCat Nov 12, 2025
b5b1665
ice: refactor ice_sbq_msg_dev enum
PlaidCat Nov 12, 2025
d62baff
ice: enable timesync operation on 2xNAC E825 devices
PlaidCat Nov 12, 2025
677da25
ice: move TSPLL functions to a separate file
PlaidCat Nov 12, 2025
5f3eb52
ice: rename TSPLL and CGU functions and definitions
PlaidCat Nov 12, 2025
0dce216
ice: fix E825-C TSPLL register definitions
PlaidCat Nov 12, 2025
20603fa
ice: remove ice_tspll_params_e825 definitions
PlaidCat Nov 12, 2025
ba1c8e9
ice: use designated initializers for TSPLL consts
PlaidCat Nov 12, 2025
a08830d
ice: add TSPLL log config helper
PlaidCat Nov 12, 2025
74f3af3
ice: clear time_sync_en field for E825-C during reprogramming
PlaidCat Nov 12, 2025
cd963d2
ice: read TSPLL registers again before reporting status
PlaidCat Nov 12, 2025
d617484
ice: use bitfields instead of unions for CGU regs
PlaidCat Nov 12, 2025
593da3e
ice: add multiple TSPLL helpers
PlaidCat Nov 12, 2025
921747b
ice: wait before enabling TSPLL
PlaidCat Nov 12, 2025
c3196fb
ice: fall back to TCXO on TSPLL lock fail
PlaidCat Nov 12, 2025
386de12
ice: move TSPLL init calls to ice_ptp.c
PlaidCat Nov 12, 2025
a609647
ice: default to TIME_REF instead of TXCO on E825-C
PlaidCat Nov 12, 2025
a66f202
ice: fix NULL access of tx->in_use in ice_ptp_ts_irq
PlaidCat Nov 12, 2025
aa7a8bf
ice: fix NULL access of tx->in_use in ice_ll_ts_intr
PlaidCat Nov 12, 2025
fea346b
ice: fix Rx page leak on multi-buffer frames
PlaidCat Nov 12, 2025
6937147
x86/cpufeatures: Add X86_FEATURE_AMD_HETEROGENEOUS_CORES
PlaidCat Nov 12, 2025
0cf7bd6
x86/cpu: Add CPU type to struct cpuinfo_topology
PlaidCat Nov 12, 2025
1e03304
mm: vmalloc: group declarations depending on CONFIG_MMU together
PlaidCat Nov 12, 2025
f017899
mm: vmalloc: don't account for number of nodes for HUGE_VMAP allocations
PlaidCat Nov 12, 2025
d9905b2
asm-generic: introduce text-patching.h
PlaidCat Nov 12, 2025
0f01fb3
module: prepare to handle ROX allocations for text
PlaidCat Nov 12, 2025
5a9e6da
arch: introduce set_direct_map_valid_noflush()
PlaidCat Nov 12, 2025
74226bd
x86/module: prepare module loading for ROX allocations of text
PlaidCat Nov 12, 2025
1bdf654
execmem: add support for cache of large ROX pages
PlaidCat Nov 12, 2025
21aa3a8
x86/module: enable ROX caches for module text on 64 bit
PlaidCat Nov 12, 2025
17fc400
maple_tree: add mas_for_each_rev() helper
PlaidCat Nov 12, 2025
66e3e16
alloc_tag: introduce shutdown_mem_profiling helper function
PlaidCat Nov 12, 2025
0d69206
alloc_tag: load module tags into separate contiguous memory
PlaidCat Nov 12, 2025
36388e3
x86/execmem: fix ROX cache usage in Xen PV guests
PlaidCat Nov 12, 2025
b3d7daf
module: fix writing of livepatch relocations in ROX text
PlaidCat Nov 12, 2025
d8c91b6
x86/bugs: Add SRSO_USER_KERNEL_NO support
PlaidCat Nov 12, 2025
9ad613d
KVM: x86: Advertise SRSO_USER_KERNEL_NO to userspace
PlaidCat Nov 12, 2025
ae21f2c
x86/cpu: Introduce new microcode matching helper
PlaidCat Nov 12, 2025
459d99a
x86/cpu: Expose only stepping min/max interface
PlaidCat Nov 12, 2025
c4d0eec
x86/cpu: Fix typo in x86_match_cpu()'s doc
PlaidCat Nov 12, 2025
79906c7
x86/cpu/kvm: SRSO: Fix possible missing IBPB on VM-Exit
PlaidCat Nov 12, 2025
72d85d9
x86/mm/pat: cpa-test: fix length for CPA_ARRAY test
PlaidCat Nov 12, 2025
8e7f899
x86/mm/pat: drop duplicate variable in cpa_flush()
PlaidCat Nov 12, 2025
1faef9b
x86/mm/pat: restore large ROX pages after fragmentation
PlaidCat Nov 12, 2025
32a2026
execmem: don't remove ROX cache from the direct map
PlaidCat Nov 12, 2025
e34d43f
execmem: add API for temporal remapping as RW and restoring ROX after…
PlaidCat Nov 12, 2025
d2cf390
module: switch to execmem API for remapping as RW and restoring ROX
PlaidCat Nov 12, 2025
e0aba1c
Revert "x86/module: prepare module loading for ROX allocations of text"
PlaidCat Nov 12, 2025
10d89c0
module: drop unused module_writable_address()
PlaidCat Nov 12, 2025
80f5729
module: don't annotate ROX memory as kmemleak_not_leak()
PlaidCat Nov 12, 2025
891ef0f
x86/cpu: Fix the description of X86_MATCH_VFM_STEPS()
PlaidCat Nov 12, 2025
16639bd
x86/cpu: Shorten CPU matching macro
PlaidCat Nov 12, 2025
ddd22ed
x86/cpu: Add cpu_type to struct x86_cpu_id
PlaidCat Nov 12, 2025
acd40d8
x86/cpu: Update x86_match_cpu() to also use cpu-type
PlaidCat Nov 12, 2025
669b0b8
x86/rfds: Exclude P-only parts from the RFDS affected list
PlaidCat Nov 12, 2025
2fa998d
arm64: errata: Add QCOM_KRYO_4XX_GOLD to the spectre_bhb_k24_list
PlaidCat Nov 12, 2025
beebb8c
arm64: errata: Assume that unknown CPUs _are_ vulnerable to Spectre BHB
PlaidCat Nov 12, 2025
eda191e
x86/bugs: KVM: Add support for SRSO_MSR_FIX
PlaidCat Nov 12, 2025
783bc0d
x86/bugs: Move the X86_FEATURE_USE_IBPB check into callers
PlaidCat Nov 12, 2025
dae5752
x86/mm: Remove X86_FEATURE_USE_IBPB checks in cond_mitigation()
PlaidCat Nov 12, 2025
d4d1426
x86/bugs: Remove the X86_FEATURE_USE_IBPB check in ib_prctl_set()
PlaidCat Nov 12, 2025
2e95293
x86/bugs: Use a static branch to guard IBPB on vCPU switch
PlaidCat Nov 12, 2025
d1bac36
KVM: nVMX: Always use IBPB to properly virtualize IBRS
PlaidCat Nov 12, 2025
b79959e
x86/bugs: Remove X86_FEATURE_USE_IBPB
PlaidCat Nov 12, 2025
62d5328
x86/bugs: Add X86_BUG_SPECTRE_V2_USER
PlaidCat Nov 12, 2025
256efff
x86/bugs: Relocate mds/taa/mmio/rfds defines
PlaidCat Nov 12, 2025
0a9c5d0
x86/bugs: Add AUTO mitigations for mds/taa/mmio/rfds
PlaidCat Nov 12, 2025
919b48a
x86/bugs: Use the cpu_smt_possible() helper instead of open-coded code
PlaidCat Nov 12, 2025
bfabd67
x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2
PlaidCat Nov 12, 2025
42fae1a
x86/bugs: Rename entry_ibpb() to write_ibpb()
PlaidCat Nov 12, 2025
1ff0def
x86/bugs: Use SBPB in write_ibpb() if applicable
PlaidCat Nov 12, 2025
42bb38c
x86/bugs: Fix RSB clearing in indirect_branch_prediction_barrier()
PlaidCat Nov 12, 2025
f5fe550
x86/bugs: Don't fill RSB on VMEXIT with eIBRS+retpoline
PlaidCat Nov 12, 2025
9f72a26
x86/bugs: Don't fill RSB on context switch with eIBRS
PlaidCat Nov 12, 2025
8438a19
x86/bugs: Add RSB mitigation document
PlaidCat Nov 12, 2025
6e050ae
KVM: SVM: Set/clear SRSO's BP_SPEC_REDUCE on 0 <=> 1 VM count transit…
PlaidCat Nov 12, 2025
cb0f1ce
Documentation: x86/bugs/its: Add ITS documentation
PlaidCat Nov 12, 2025
fa8feb9
x86/its: Enumerate Indirect Target Selection (ITS) bug
PlaidCat Nov 12, 2025
1dd6807
x86/its: Add support for ITS-safe indirect thunk
PlaidCat Nov 12, 2025
812a479
x86/its: Add support for ITS-safe return thunk
PlaidCat Nov 12, 2025
3ac81fc
x86/its: Enable Indirect Target Selection mitigation
PlaidCat Nov 12, 2025
e952964
x86/its: Add "vmexit" option to skip mitigation on some CPUs
PlaidCat Nov 12, 2025
1c75b98
x86/its: Add support for RSB stuffing mitigation
PlaidCat Nov 12, 2025
9dff3af
x86/its: Align RETs in BHB clear sequence to avoid thunking
PlaidCat Nov 12, 2025
e0ea4d8
mm/execmem: Unify early execmem_cache behaviour
PlaidCat Nov 12, 2025
d56b3f9
x86/ibt: Keep IBT disabled during alternative patching
PlaidCat Nov 12, 2025
aa92586
selftest/x86/bugs: Add selftests for ITS
PlaidCat Nov 12, 2025
3d18fe3
arm64: insn: Add support for encoding DSB
PlaidCat Nov 12, 2025
4d3e805
arm64: proton-pack: Expose whether the platform is mitigated by firmware
PlaidCat Nov 12, 2025
7a8616c
arm64: proton-pack: Expose whether the branchy loop k value
PlaidCat Nov 12, 2025
8551a4f
arm64: bpf: Add BHB mitigation to the epilogue for cBPF programs
PlaidCat Nov 12, 2025
98c46c2
arm64: bpf: Only mitigate cBPF programs loaded by unprivileged users
PlaidCat Nov 12, 2025
e275756
arm64: proton-pack: Add new CPUs 'k' values for branch mitigation
PlaidCat Nov 12, 2025
2419146
x86/mm/pat: don't collapse pages without PSE set
PlaidCat Nov 12, 2025
c7e4314
x86/Kconfig: only enable ROX cache in execmem when STRICT_MODULE_RWX …
PlaidCat Nov 12, 2025
9d37c5c
Revert "mm/execmem: Unify early execmem_cache behaviour"
PlaidCat Nov 12, 2025
f1ac171
tools arch x86: Sync the msr-index.h copy with the kernel sources
PlaidCat Nov 12, 2025
45220ca
powerpc/pseries/iommu: memory notifier incorrectly adds TCEs for pmemory
PlaidCat Nov 12, 2025
962b746
cxgb4: Avoid removal of uninserted tid
PlaidCat Nov 12, 2025
1306a8c
coredump: Only sort VMAs when core_sort_vma sysctl is set
PlaidCat Nov 12, 2025
9be3d8d
igc: fix PTM cycle trigger logic
PlaidCat Nov 12, 2025
da4aaa2
igc: increase wait time before retrying PTM
PlaidCat Nov 12, 2025
2a5c7e5
igc: move ktime snapshot into PTM retry loop
PlaidCat Nov 12, 2025
9e997fa
igc: handle the IGC_PTP_ENABLED flag correctly
PlaidCat Nov 12, 2025
3f2e642
igc: cleanup PTP module if probe fails
PlaidCat Nov 12, 2025
641847c
igc: add lock preventing multiple simultaneous PTM transactions
PlaidCat Nov 12, 2025
cb247a1
igc: fix lock order in igc_ptp_reset
PlaidCat Nov 12, 2025
f35c205
wifi: cfg80211: fix use-after-free in cmp_bss()
PlaidCat Nov 12, 2025
11e6cfb
Rebuild rocky10_0 with kernel-6.12.0-55.43.1.el10_0
PlaidCat Nov 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
File renamed without changes.
1 change: 1 addition & 0 deletions Documentation/ABI/testing/sysfs-devices-system-cpu
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,7 @@ Description: information about CPUs heterogeneity.

What: /sys/devices/system/cpu/vulnerabilities
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling
/sys/devices/system/cpu/vulnerabilities/indirect_target_selection
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
/sys/devices/system/cpu/vulnerabilities/l1tf
/sys/devices/system/cpu/vulnerabilities/mds
Expand Down
2 changes: 2 additions & 0 deletions Documentation/admin-guide/hw-vuln/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,5 @@ are configurable at compile, boot or run time.
srso
gather_data_sampling
reg-file-data-sampling
rsb
indirect-target-selection
168 changes: 168 additions & 0 deletions Documentation/admin-guide/hw-vuln/indirect-target-selection.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
.. SPDX-License-Identifier: GPL-2.0

Indirect Target Selection (ITS)
===============================

ITS is a vulnerability in some Intel CPUs that support Enhanced IBRS and were
released before Alder Lake. ITS may allow an attacker to control the prediction
of indirect branches and RETs located in the lower half of a cacheline.

ITS is assigned CVE-2024-28956 with a CVSS score of 4.7 (Medium).

Scope of Impact
---------------
- **eIBRS Guest/Host Isolation**: Indirect branches in KVM/kernel may still be
predicted with unintended target corresponding to a branch in the guest.

- **Intra-Mode BTI**: In-kernel training such as through cBPF or other native
gadgets.

- **Indirect Branch Prediction Barrier (IBPB)**: After an IBPB, indirect
branches may still be predicted with targets corresponding to direct branches
executed prior to the IBPB. This is fixed by the IPU 2025.1 microcode, which
should be available via distro updates. Alternatively microcode can be
obtained from Intel's github repository [#f1]_.

Affected CPUs
-------------
Below is the list of ITS affected CPUs [#f2]_ [#f3]_:

======================== ============ ==================== ===============
Common name Family_Model eIBRS Intra-mode BTI
Guest/Host Isolation
======================== ============ ==================== ===============
SKYLAKE_X (step >= 6) 06_55H Affected Affected
ICELAKE_X 06_6AH Not affected Affected
ICELAKE_D 06_6CH Not affected Affected
ICELAKE_L 06_7EH Not affected Affected
TIGERLAKE_L 06_8CH Not affected Affected
TIGERLAKE 06_8DH Not affected Affected
KABYLAKE_L (step >= 12) 06_8EH Affected Affected
KABYLAKE (step >= 13) 06_9EH Affected Affected
COMETLAKE 06_A5H Affected Affected
COMETLAKE_L 06_A6H Affected Affected
ROCKETLAKE 06_A7H Not affected Affected
======================== ============ ==================== ===============

- All affected CPUs enumerate Enhanced IBRS feature.
- IBPB isolation is affected on all ITS affected CPUs, and need a microcode
update for mitigation.
- None of the affected CPUs enumerate BHI_CTRL which was introduced in Golden
Cove (Alder Lake and Sapphire Rapids). This can help guests to determine the
host's affected status.
- Intel Atom CPUs are not affected by ITS.

Mitigation
----------
As only the indirect branches and RETs that have their last byte of instruction
in the lower half of the cacheline are vulnerable to ITS, the basic idea behind
the mitigation is to not allow indirect branches in the lower half.

This is achieved by relying on existing retpoline support in the kernel, and in
compilers. ITS-vulnerable retpoline sites are runtime patched to point to newly
added ITS-safe thunks. These safe thunks consists of indirect branch in the
second half of the cacheline. Not all retpoline sites are patched to thunks, if
a retpoline site is evaluated to be ITS-safe, it is replaced with an inline
indirect branch.

Dynamic thunks
~~~~~~~~~~~~~~
From a dynamically allocated pool of safe-thunks, each vulnerable site is
replaced with a new thunk, such that they get a unique address. This could
improve the branch prediction accuracy. Also, it is a defense-in-depth measure
against aliasing.

Note, for simplicity, indirect branches in eBPF programs are always replaced
with a jump to a static thunk in __x86_indirect_its_thunk_array. If required,
in future this can be changed to use dynamic thunks.

All vulnerable RETs are replaced with a static thunk, they do not use dynamic
thunks. This is because RETs get their prediction from RSB mostly that does not
depend on source address. RETs that underflow RSB may benefit from dynamic
thunks. But, RETs significantly outnumber indirect branches, and any benefit
from a unique source address could be outweighed by the increased icache
footprint and iTLB pressure.

Retpoline
~~~~~~~~~
Retpoline sequence also mitigates ITS-unsafe indirect branches. For this
reason, when retpoline is enabled, ITS mitigation only relocates the RETs to
safe thunks. Unless user requested the RSB-stuffing mitigation.

RSB Stuffing
~~~~~~~~~~~~
RSB-stuffing via Call Depth Tracking is a mitigation for Retbleed RSB-underflow
attacks. And it also mitigates RETs that are vulnerable to ITS.

Mitigation in guests
^^^^^^^^^^^^^^^^^^^^
All guests deploy ITS mitigation by default, irrespective of eIBRS enumeration
and Family/Model of the guest. This is because eIBRS feature could be hidden
from a guest. One exception to this is when a guest enumerates BHI_DIS_S, which
indicates that the guest is running on an unaffected host.

To prevent guests from unnecessarily deploying the mitigation on unaffected
platforms, Intel has defined ITS_NO bit(62) in MSR IA32_ARCH_CAPABILITIES. When
a guest sees this bit set, it should not enumerate the ITS bug. Note, this bit
is not set by any hardware, but is **intended for VMMs to synthesize** it for
guests as per the host's affected status.

Mitigation options
^^^^^^^^^^^^^^^^^^
The ITS mitigation can be controlled using the "indirect_target_selection"
kernel parameter. The available options are:

======== ===================================================================
on (default) Deploy the "Aligned branch/return thunks" mitigation.
If spectre_v2 mitigation enables retpoline, aligned-thunks are only
deployed for the affected RET instructions. Retpoline mitigates
indirect branches.

off Disable ITS mitigation.

vmexit Equivalent to "=on" if the CPU is affected by guest/host isolation
part of ITS. Otherwise, mitigation is not deployed. This option is
useful when host userspace is not in the threat model, and only
attacks from guest to host are considered.

stuff Deploy RSB-fill mitigation when retpoline is also deployed.
Otherwise, deploy the default mitigation. When retpoline mitigation
is enabled, RSB-stuffing via Call-Depth-Tracking also mitigates
ITS.

force Force the ITS bug and deploy the default mitigation.
======== ===================================================================

Sysfs reporting
---------------

The sysfs file showing ITS mitigation status is:

/sys/devices/system/cpu/vulnerabilities/indirect_target_selection

Note, microcode mitigation status is not reported in this file.

The possible values in this file are:

.. list-table::

* - Not affected
- The processor is not vulnerable.
* - Vulnerable
- System is vulnerable and no mitigation has been applied.
* - Vulnerable, KVM: Not affected
- System is vulnerable to intra-mode BTI, but not affected by eIBRS
guest/host isolation.
* - Mitigation: Aligned branch/return thunks
- The mitigation is enabled, affected indirect branches and RETs are
relocated to safe thunks.
* - Mitigation: Retpolines, Stuffing RSB
- The mitigation is enabled using retpoline and RSB stuffing.

References
----------
.. [#f1] Microcode repository - https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files

.. [#f2] Affected Processors list - https://www.intel.com/content/www/us/en/developer/topic-technology/software-security-guidance/processors-affected-consolidated-product-cpu-model.html

.. [#f3] Affected Processors list (machine readable) - https://github.com/intel/Intel-affected-processor-list
8 changes: 0 additions & 8 deletions Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,6 @@ Below is the list of affected Intel processors [#f1]_:
RAPTORLAKE_S 06_BFH
=================== ============

As an exception to this table, Intel Xeon E family parts ALDERLAKE(06_97H) and
RAPTORLAKE(06_B7H) codenamed Catlow are not affected. They are reported as
vulnerable in Linux because they share the same family/model with an affected
part. Unlike their affected counterparts, they do not enumerate RFDS_CLEAR or
CPUID.HYBRID. This information could be used to distinguish between the
affected and unaffected parts, but it is deemed not worth adding complexity as
the reporting is fixed automatically when these parts enumerate RFDS_NO.

Mitigation
==========
Intel released a microcode update that enables software to clear sensitive
Expand Down
Loading