summaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifssmb.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2018-05-09 21:53:09 +0200
committerThomas Gleixner <tglx@linutronix.de>2018-05-17 17:09:18 +0200
commit1f50ddb4f4189243c05926b842dc1a0332195f31 (patch)
treee5cc9f1d3b062a3d60f4423cbb9c562c72ee6dd9 /fs/cifs/cifssmb.c
parentd1035d971829dcf80e8686ccde26f94b0a069472 (diff)
downloadlinux-stable-1f50ddb4f4189243c05926b842dc1a0332195f31.tar.gz
linux-stable-1f50ddb4f4189243c05926b842dc1a0332195f31.tar.bz2
linux-stable-1f50ddb4f4189243c05926b842dc1a0332195f31.zip
x86/speculation: Handle HT correctly on AMD
The AMD64_LS_CFG MSR is a per core MSR on Family 17H CPUs. That means when hyperthreading is enabled the SSBD bit toggle needs to take both cores into account. Otherwise the following situation can happen: CPU0 CPU1 disable SSB disable SSB enable SSB <- Enables it for the Core, i.e. for CPU0 as well So after the SSB enable on CPU1 the task on CPU0 runs with SSB enabled again. On Intel the SSBD control is per core as well, but the synchronization logic is implemented behind the per thread SPEC_CTRL MSR. It works like this: CORE_SPEC_CTRL = THREAD0_SPEC_CTRL | THREAD1_SPEC_CTRL i.e. if one of the threads enables a mitigation then this affects both and the mitigation is only disabled in the core when both threads disabled it. Add the necessary synchronization logic for AMD family 17H. Unfortunately that requires a spinlock to serialize the access to the MSR, but the locks are only shared between siblings. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Borislav Petkov <bp@suse.de> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'fs/cifs/cifssmb.c')
0 files changed, 0 insertions, 0 deletions