linux/Documentation/x86
Thomas Gleixner 6a9e529272 x86/speculation/mds: Add mds_clear_cpu_buffers()
The Microarchitectural Data Sampling (MDS) vulernabilities are mitigated by
clearing the affected CPU buffers. The mechanism for clearing the buffers
uses the unused and obsolete VERW instruction in combination with a
microcode update which triggers a CPU buffer clear when VERW is executed.

Provide a inline function with the assembly magic. The argument of the VERW
instruction must be a memory operand as documented:

  "MD_CLEAR enumerates that the memory-operand variant of VERW (for
   example, VERW m16) has been extended to also overwrite buffers affected
   by MDS. This buffer overwriting functionality is not guaranteed for the
   register operand variant of VERW."

Documentation also recommends to use a writable data segment selector:

  "The buffer overwriting occurs regardless of the result of the VERW
   permission check, as well as when the selector is null or causes a
   descriptor load segment violation. However, for lowest latency we
   recommend using a selector that indicates a valid writable data
   segment."

Add x86 specific documentation about MDS and the internal workings of the
mitigation.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Reviewed-by: Jon Masters <jcm@redhat.com>
Tested-by: Jon Masters <jcm@redhat.com>
2019-03-06 21:52:12 +01:00
..
i386
x86_64 x86/dma/amd-gart: Stop resizing dma_debug_entry pool 2018-12-11 14:32:12 +01:00
amd-memory-encryption.txt Documentation/x86: Add AMD Secure Encrypted Virtualization (SEV) description 2017-11-07 15:35:54 +01:00
boot.txt A fairly normal cycle for documentation stuff. We have a new 2018-12-29 11:21:49 -08:00
conf.py x86/speculation/mds: Add mds_clear_cpu_buffers() 2019-03-06 21:52:12 +01:00
earlyprintk.txt x86/doc: Fix Documentation/x86/earlyprintk.txt 2018-09-10 15:09:30 +02:00
entry_64.txt x86/asm/entry/64: Update path names 2015-07-02 11:08:50 +02:00
exception-tables.txt x86/mm: Expand the exception table logic to allow new handling options 2016-02-18 09:21:46 +01:00
index.rst x86/speculation/mds: Add mds_clear_cpu_buffers() 2019-03-06 21:52:12 +01:00
intel_mpx.txt x86/Documentation: Fix various typos in Documentation/x86/ files 2016-07-01 10:00:10 +02:00
kernel-stacks Documentation/x86: Rename IRQSTACKSIZE to IRQ_STACK_SIZE 2015-08-24 11:42:41 -06:00
mds.rst x86/speculation/mds: Add mds_clear_cpu_buffers() 2019-03-06 21:52:12 +01:00
microcode.txt firmware: Fix up docs referring to FIRMWARE_IN_KERNEL 2018-01-25 12:46:30 +01:00
mtrr.txt x86/mm/mtrr: Remove kernel internal MTRR interfaces: unexport mtrr_add() and mtrr_del() 2015-08-28 10:09:28 +02:00
orc-unwinder.txt x86/unwind: Rename unwinder config options to 'CONFIG_UNWINDER_*' 2017-10-14 10:12:12 +02:00
pat.txt mm: remove references to vm_insert_pfn() 2018-10-26 16:25:20 -07:00
protection-keys.txt x86/pkeys: Update documentation about availability 2017-11-21 09:34:52 +01:00
pti.txt x86/pti: Document fix wrong index 2018-01-19 16:31:29 +01:00
resctrl_ui.txt x86/resctrl: Avoid confusion over the new X86_RESCTRL config 2019-02-02 10:34:52 +01:00
tlb.txt x86/Documentation: Fix various typos in Documentation/x86/ files 2016-07-01 10:00:10 +02:00
topology.txt x86/topology: Fix function name in documentation 2018-02-23 08:40:12 +01:00
usb-legacy-support.txt
zero-page.txt Documentation/x86: Fix typo in zero-page.txt 2018-11-05 07:05:45 +01:00