| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- L1D Flushing
- ============
- With an increasing number of vulnerabilities being reported around data
- leaks from the Level 1 Data cache (L1D) the kernel provides an opt-in
- mechanism to flush the L1D cache on context switch.
- This mechanism can be used to address e.g. CVE-2020-0550. For applications
- the mechanism keeps them safe from vulnerabilities, related to leaks
- (snooping of) from the L1D cache.
- Related CVEs
- ------------
- The following CVEs can be addressed by this
- mechanism
- ============= ======================== ==================
- CVE-2020-0550 Improper Data Forwarding OS related aspects
- ============= ======================== ==================
- Usage Guidelines
- ----------------
- Please see document: :ref:`Documentation/userspace-api/spec_ctrl.rst
- <set_spec_ctrl>` for details.
- **NOTE**: The feature is disabled by default, applications need to
- specifically opt into the feature to enable it.
- Mitigation
- ----------
- When PR_SET_L1D_FLUSH is enabled for a task a flush of the L1D cache is
- performed when the task is scheduled out and the incoming task belongs to a
- different process and therefore to a different address space.
- If the underlying CPU supports L1D flushing in hardware, the hardware
- mechanism is used, software fallback for the mitigation, is not supported.
- Mitigation control on the kernel command line
- ---------------------------------------------
- The kernel command line allows to control the L1D flush mitigations at boot
- time with the option "l1d_flush=". The valid arguments for this option are:
- ============ =============================================================
- on Enables the prctl interface, applications trying to use
- the prctl() will fail with an error if l1d_flush is not
- enabled
- ============ =============================================================
- By default the mechanism is disabled.
- Limitations
- -----------
- The mechanism does not mitigate L1D data leaks between tasks belonging to
- different processes which are concurrently executing on sibling threads of
- a physical CPU core when SMT is enabled on the system.
- This can be addressed by controlled placement of processes on physical CPU
- cores or by disabling SMT. See the relevant chapter in the L1TF mitigation
- document: :ref:`Documentation/admin-guide/hw-vuln/l1tf.rst <smt_control>`.
- **NOTE** : The opt-in of a task for L1D flushing works only when the task's
- affinity is limited to cores running in non-SMT mode. If a task which
- requested L1D flushing is scheduled on a SMT-enabled core the kernel sends
- a SIGBUS to the task.
|