mirror-linux/arch/x86/include/asm
Pawan Gupta 6606515742 x86/bugs: Make sure MSR_SPEC_CTRL is updated properly upon resume from S3
The "force" argument to write_spec_ctrl_current() is currently ambiguous
as it does not guarantee the MSR write. This is due to the optimization
that writes to the MSR happen only when the new value differs from the
cached value.

This is fine in most cases, but breaks for S3 resume when the cached MSR
value gets out of sync with the hardware MSR value due to S3 resetting
it.

When x86_spec_ctrl_current is same as x86_spec_ctrl_base, the MSR write
is skipped. Which results in SPEC_CTRL mitigations not getting restored.

Move the MSR write from write_spec_ctrl_current() to a new function that
unconditionally writes to the MSR. Update the callers accordingly and
rename functions.

  [ bp: Rework a bit. ]

Fixes: caa0ff24d5 ("x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value")
Suggested-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@kernel.org>
Link: https://lore.kernel.org/r/806d39b0bfec2fe8f50dc5446dff20f5bb24a959.1669821572.git.pawan.kumar.gupta@linux.intel.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-12-02 15:45:33 -08:00
..
e820 x86/PCI: Revert "x86/PCI: Clip only host bridge windows for E820 regions" 2022-06-17 14:24:14 -05:00
fpu x86/fpu: Add a helper to prepare AMX state for low-power CPU idle 2022-07-19 18:46:15 +02:00
numachip
shared Intel Trust Domain Extensions 2022-05-23 17:51:12 -07:00
trace
uv
vdso
xen x86/xen: Add support for HVMOP_set_evtchn_upcall_vector 2022-08-12 11:28:21 +02:00
GEN-for-each-reg.h
Kbuild
acenv.h ACPICA: Avoid cache flush inside virtual machines 2022-04-07 08:27:54 -07:00
acpi.h
acrn.h x86/acrn: Set up timekeeping 2022-08-04 11:11:59 +02:00
agp.h
alternative.h x86: Undo return-thunk damage 2022-06-27 10:33:58 +02:00
amd-ibs.h perf/x86/amd: Add IBS OP_DATA2 DataSrc bit definitions 2022-09-29 12:20:54 +02:00
amd_hsmp.h platform/x86: Add AMD system management interface 2022-03-02 11:42:36 +01:00
amd_nb.h x86/amd_nb: Unexport amd_cache_northbridges() 2022-04-05 19:22:27 +02:00
apic.h profile: setup_profiling_timer() is moslty not implemented 2022-07-29 18:12:36 -07:00
apicdef.h KVM: x86: lapic: Rename [GET/SET]_APIC_DEST_FIELD to [GET/SET]_XAPIC_DEST_FIELD 2022-06-24 12:44:34 -04:00
apm.h
arch_hweight.h
archrandom.h random: handle archrandom with multiple longs 2022-07-25 13:26:14 +02:00
asm-offsets.h
asm-prototypes.h
asm.h x86/extable: Prefer local labels in .set directives 2022-04-07 11:27:02 +02:00
atomic.h
atomic64_32.h
atomic64_64.h
audit.h
barrier.h x86/barriers, kcsan: Use generic instrumentation for non-smp barriers 2021-12-09 16:42:28 -08:00
bios_ebda.h
bitops.h x86/asm/bitops: Use __builtin_ctzl() to evaluate constant expressions 2022-09-20 15:35:37 +02:00
boot.h
bootparam_utils.h x86/boot: Add a pointer to Confidential Computing blob in bootparams 2022-04-07 16:47:11 +02:00
bug.h - Remove all the code around GS switching on 32-bit now that it is not 2022-05-23 18:42:07 -07:00
bugs.h
cache.h
cacheflush.h
cacheinfo.h
ce4100.h
cfi.h x86: Add support for CONFIG_CFI_CLANG 2022-09-26 10:13:16 -07:00
checksum.h x86: kasan: kmsan: support CONFIG_GENERIC_CSUM on x86, enable it for KASAN/KMSAN 2022-10-03 14:03:24 -07:00
checksum_32.h
checksum_64.h
clocksource.h
cmdline.h
cmpxchg.h
cmpxchg_32.h locking/atomic/x86: Introduce arch_try_cmpxchg64 2022-05-18 00:08:28 +02:00
cmpxchg_64.h locking/atomic/x86: Introduce arch_try_cmpxchg64 2022-05-18 00:08:28 +02:00
coco.h x86/coco: Add API to handle encryption mask 2022-02-23 19:14:29 +01:00
compat.h RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
cpu.h x86/apic: Don't disable x2APIC if locked 2022-08-31 14:34:11 -07:00
cpu_device_id.h
cpu_entry_area.h task_stack, x86/cea: Force-inline stack helpers 2022-04-04 10:13:07 +02:00
cpufeature.h asm goto: eradicate CC_HAS_ASM_GOTO 2022-08-21 10:06:28 -07:00
cpufeatures.h x86/tsx: Add a feature bit for TSX control MSR support 2022-11-21 14:08:20 +01:00
cpuid.h KVM: x86: Move lookup of indexed CPUID leafs to helper 2022-04-07 16:47:11 +02:00
cpuidle_haltpoll.h
cpumask.h cpumask: Add a x86-specific cpumask_clear_cpu() helper 2022-02-12 18:20:05 +01:00
crash.h
current.h
debugreg.h
delay.h
desc.h
desc_defs.h
device.h
disabled-features.h x86/retbleed: Add fine grained Kconfig knobs 2022-06-29 17:43:41 +02:00
div64.h
dma-mapping.h x86: remove cruft from <asm/dma-mapping.h> 2022-04-18 07:21:14 +02:00
dma.h PCI: Move isa_dma_bridge_buggy out of asm/dma.h 2022-07-22 17:24:47 -05:00
dmi.h
doublefault.h
dwarf2.h
edac.h
efi.h EFI updates for v5.20 2022-08-03 14:38:02 -07:00
elf.h x86/32: Simplify ELF_CORE_COPY_REGS 2022-04-12 15:42:59 +02:00
elfcore-compat.h
emergency-restart.h
emulate_prefix.h
enclu.h
entry-common.h entry: Rename arch_check_user_regs() to arch_enter_from_user_mode() 2022-05-09 11:33:38 +02:00
espfix.h
exec.h
extable.h x86/extable: Annotate ex_handler_msr_mce() as a dead end 2022-05-27 12:34:45 +02:00
extable_fixup_types.h x86: simplify load_unaligned_zeropad() implementation 2022-08-16 11:03:38 -07:00
fb.h
fixmap.h
floppy.h
frame.h
fsgsbase.h
ftrace.h x86/ftrace: Remove unused modifying_ftrace_code declaration 2022-09-26 13:20:35 -04:00
futex.h x86/futex: Remove .fixup usage 2021-12-11 09:09:47 +01:00
gart.h x86: remove the IOMMU table infrastructure 2022-04-18 07:21:10 +02:00
genapic.h
geode.h
hardirq.h
highmem.h mm/usercopy: Check kmap addresses properly 2022-04-13 12:15:50 -07:00
hpet.h
hugetlb.h
hw_breakpoint.h perf/hw_breakpoint: Optimize constant number of breakpoint slots 2022-08-30 10:56:22 +02:00
hw_irq.h
hyperv-tlfs.h x86/hyperv: Update 'struct hv_enlightened_vmcs' definition 2022-09-26 12:02:37 -04:00
hypervisor.h
i8259.h
ia32.h
ia32_unistd.h
ibt.h x86/ibt, objtool: Add IBT_NOSEAL() 2022-08-19 04:05:42 -04:00
idtentry.h x86/traps: Add #VE support for TDX guest 2022-04-07 08:27:51 -07:00
imr.h
inat.h
inat_types.h
init.h
insn-eval.h - Get rid of all the .fixup sections because this generates 2022-01-12 16:31:19 -08:00
insn.h x86/insn: Add AVX512-FP16 instructions to the x86 instruction decoder 2022-01-23 20:38:01 +01:00
inst.h
intel-family.h x86/cpu: Add several Intel server CPU model numbers 2022-11-04 21:12:22 +01:00
intel-mid.h
intel_ds.h perf/x86/intel: Enable PEBS format 5 2022-02-02 13:11:43 +01:00
intel_pconfig.h
intel_pt.h perf/x86/intel/pt: Add a capability and config bit for disabling TNTs 2022-02-15 17:47:11 +01:00
intel_punit_ipc.h
intel_scu_ipc.h
intel_telemetry.h
invpcid.h
io.h arch/*/: remove CONFIG_VIRT_TO_BUS 2022-06-28 13:20:21 +02:00
io_apic.h
io_bitmap.h
iomap.h
iommu.h iommu/vt-d: Allow NVS regions in arch_rmrr_sanity_check() 2022-10-21 10:49:35 +02:00
iosf_mbi.h
irq.h
irq_remapping.h
irq_stack.h asm-generic: Conditionally enable do_softirq_own_stack() via Kconfig. 2022-09-05 17:20:55 +02:00
irq_vectors.h
irq_work.h
irqdomain.h
irqflags.h x86/entry: Convert SWAPGS to swapgs and remove the definition of SWAPGS 2022-05-03 12:26:08 +02:00
ist.h
jailhouse_para.h
jump_label.h objtool: Make jump label hack optional 2022-04-22 12:32:04 +02:00
kasan.h
kaslr.h
kbdleds.h
kdebug.h
kexec-bzimage64.h
kexec.h kexec: drop weak attribute from functions 2022-07-15 12:21:16 -04:00
kfence.h
kgdb.h
kmsan.h x86: kmsan: handle CPU entry area 2022-10-03 14:03:26 -07:00
kprobes.h x86/kprobes: Remove unused arch_kprobe_override_function() declaration 2022-09-26 13:20:52 -04:00
kvm-x86-ops.h KVM: x86: Rename kvm_x86_ops.queue_exception to inject_exception 2022-09-26 12:03:07 -04:00
kvm-x86-pmu-ops.h KVM: x86/pmu: Drop amd_event_mapping[] in the KVM context 2022-06-08 04:49:06 -04:00
kvm_host.h KVM: x86/pmu: Limit the maximum number of supported AMD GP counters 2022-11-09 12:26:54 -05:00
kvm_page_track.h KVM: x86/mmu: Propagate memslot const qualifier 2021-12-08 04:24:43 -05:00
kvm_para.h x86/tdx: Wire up KVM hypercalls 2022-04-07 08:27:52 -07:00
kvm_types.h
kvm_vcpu_regs.h
kvmclock.h
linkage.h x86: Add types to indirectly called assembly functions 2022-09-26 10:13:15 -07:00
local.h
mach_timer.h
mach_traps.h
math_emu.h
mc146818rtc.h x86/rtc: Rename mach_set_rtc_mmss() to mach_set_cmos_time() 2022-08-14 11:24:29 +02:00
mce.h EDAC/i10nm: Add driver decoder for Ice Lake and Tremont CPUs 2022-09-08 11:40:01 -07:00
mem_encrypt.h x86/mm: move protection_map[] inside the platform 2022-07-17 17:14:38 -07:00
memtype.h
microcode.h x86/microcode/AMD: Track patch allocation size explicitly 2022-09-23 13:46:26 +02:00
microcode_amd.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
microcode_intel.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
misc.h
mmconfig.h
mmu.h
mmu_context.h x86/32: Remove lazy GS macros 2022-04-14 14:09:43 +02:00
mmzone.h
mmzone_32.h
mmzone_64.h
module.h
mpspec.h
mpspec_def.h
mshyperv.h x86/Hyper-V: Add SEV negotiate protocol support in Isolation VM 2022-06-15 18:27:40 +00:00
msi.h x86/msi: Fix msi message data shadow struct 2022-04-07 15:19:32 +02:00
msr-index.h x86/cpu: Restore AMD's DE_CFG MSR after resume 2022-11-15 10:15:58 -08:00
msr-trace.h
msr.h x86/boot: Introduce helpers for MSR reads/writes 2022-04-06 12:59:17 +02:00
mtrr.h x86/mtrr: Remove the mtrr_bp_init() stub 2021-12-22 19:50:26 +01:00
mwait.h x86: Remove vendor checks from prefer_mwait_c1_over_halt 2022-06-08 13:00:19 -07:00
nmi.h x86/nmi: Make register_nmi_handler() more robust 2022-05-17 09:25:25 +02:00
nops.h
nospec-branch.h x86/bugs: Make sure MSR_SPEC_CTRL is updated properly upon resume from S3 2022-12-02 15:45:33 -08:00
numa.h
numa_32.h
olpc.h
olpc_ofw.h
orc_lookup.h
orc_types.h
page.h x86: Share definition of __is_canonical_address() 2022-02-02 13:11:42 +01:00
page_32.h x86/mmx_32: Remove X86_USE_3DNOW 2021-12-11 09:09:45 +01:00
page_32_types.h
page_64.h mm: kmsan: maintain KMSAN metadata for page operations 2022-10-03 14:03:20 -07:00
page_64_types.h
page_types.h
paravirt.h x86/paravirt: Ensure proper alignment 2022-09-21 12:30:16 +02:00
paravirt_api_clock.h sched/headers: Add initial new headers as identity mappings 2022-02-23 10:58:28 +01:00
paravirt_types.h - Ensure paravirt patching site descriptors are aligned properly so that 2022-10-04 10:03:40 -07:00
parport.h
pc-conf-reg.h
pci-direct.h
pci-functions.h
pci.h PCI: Remove pci_get_legacy_ide_irq() and asm-generic/pci.h 2022-07-22 17:23:45 -05:00
pci_x86.h x86/PCI: Revert "x86/PCI: Clip only host bridge windows for E820 regions" 2022-06-17 14:24:14 -05:00
percpu.h x86/percpu: Remove volatile from arch_raw_cpu_ptr(). 2022-04-05 09:59:38 +02:00
perf_event.h perf/x86/amd/lbr: Detect LbrExtV2 support 2022-08-27 00:05:43 +02:00
perf_event_p4.h
pgalloc.h
pgtable-2level.h
pgtable-2level_types.h
pgtable-3level.h mm/x86: use SWP_TYPE_BITS in 3-level swap macros 2022-09-26 19:46:04 -07:00
pgtable-3level_types.h
pgtable-invert.h
pgtable.h mm: introduce arch_has_hw_nonleaf_pmd_young() 2022-11-30 14:49:41 -08:00
pgtable_32.h
pgtable_32_areas.h
pgtable_32_types.h
pgtable_64.h x86/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE 2022-05-09 18:20:46 -07:00
pgtable_64_types.h x86: kmsan: pgtable: reduce vmalloc space 2022-10-03 14:03:19 -07:00
pgtable_areas.h
pgtable_types.h x86/mm: move protection_map[] inside the platform 2022-07-17 17:14:38 -07:00
pkeys.h x86/pkeys: Remove __arch_set_user_pkey_access() declaration 2022-04-04 15:58:24 -07:00
pkru.h x86/pkey: Fix undefined behaviour with PKRU_WD_BIT 2021-12-19 22:44:34 +01:00
platform_sst_audio.h
pm-trace.h
posix_types.h
preempt.h sched/preempt: Refactor sched_dynamic_update() 2022-02-19 11:11:07 +01:00
probe_roms.h
processor-cyrix.h
processor-flags.h
processor.h kernel: exit: cleanup release_thread() 2022-09-11 21:55:07 -07:00
prom.h
proto.h - Serious sanitization and cleanup of the whole APERF/MPERF and 2022-05-23 18:17:09 -07:00
pti.h
ptrace.h x86/sev: Mark the code returning to user space as syscall gap 2022-05-19 10:56:46 +02:00
purgatory.h
pvclock-abi.h
pvclock.h
qrwlock.h
qspinlock.h x86/qspinlock, kcsan: Instrument barrier of pv_queued_spin_unlock() 2021-12-09 16:42:28 -08:00
qspinlock_paravirt.h locking: Fix qspinlock/x86 inline asm error 2022-11-16 10:18:09 +01:00
realmode.h x86/boot: Add a trampoline for booting APs via firmware handoff 2022-04-07 08:27:52 -07:00
reboot.h
reboot_fixups.h
required-features.h x86/mmx_32: Remove X86_USE_3DNOW 2021-12-11 09:09:45 +01:00
resctrl.h x86/resctrl: Rename and change the units of resctrl_cqm_threshold 2022-09-23 14:23:41 +02:00
rmwcc.h asm goto: eradicate CC_HAS_ASM_GOTO 2022-08-21 10:06:28 -07:00
seccomp.h
sections.h
segment.h x86/asm: Merge load_gs_index() 2022-04-14 14:15:54 +02:00
serial.h
set_memory.h x86/mce: relocate set{clear}_mce_nospec() functions 2022-05-16 11:46:44 -07:00
setup.h x86/xen: Use clear_bss() for Xen PV guests 2022-07-01 10:57:52 +02:00
setup_arch.h
sev-common.h x86/sev: Provide support for SNP guest request NAEs 2022-04-07 16:47:12 +02:00
sev.h x86/sev: Mark snp_abort() noreturn 2022-08-25 15:54:03 +02:00
sgx.h x86/sgx: Keep record of SGX page type 2022-07-07 10:13:02 -07:00
shmparam.h
sigcontext.h
sigframe.h
sighandling.h
signal.h
simd.h
smap.h x86/cpu: Remove CONFIG_X86_SMAP and "nosmap" 2022-04-04 10:16:57 +02:00
smp.h x86/cacheinfo: Add a cpu_llc_shared_mask() UP variant 2022-09-28 18:35:37 +02:00
softirq_stack.h
sparsemem.h x86: add missing include to sparsemem.h 2022-10-03 14:03:17 -07:00
spec-ctrl.h x86, KVM: remove unnecessary argument to x86_virt_spec_ctrl and callers 2022-11-09 12:26:51 -05:00
special_insns.h x86/fpu: Add a helper to prepare AMX state for low-power CPU idle 2022-07-19 18:46:15 +02:00
spinlock.h
spinlock_types.h
sta2x11.h
stackprotector.h
stacktrace.h
static_call.h x86/retbleed: Add fine grained Kconfig knobs 2022-06-29 17:43:41 +02:00
string.h
string_32.h x86/mmx_32: Remove X86_USE_3DNOW 2021-12-11 09:09:45 +01:00
string_64.h x86: fortify: kmsan: fix KMSAN fortify builds 2022-10-28 13:37:23 -07:00
suspend.h
suspend_32.h x86/pm: Fix false positive kmemleak report in msr_build_context() 2022-04-27 13:55:19 +02:00
suspend_64.h x86/pm: Fix false positive kmemleak report in msr_build_context() 2022-04-27 13:55:19 +02:00
svm.h KVM: SVM: Introduce logic to (de)activate x2AVIC mode 2022-06-24 12:50:35 -04:00
switch_to.h fork: Generalize PF_IO_WORKER handling 2022-05-07 09:01:59 -05:00
sync_bitops.h
sync_core.h
syscall.h
syscall_wrapper.h x86/syscall: Include asm/ptrace.h in syscall_wrapper header 2022-10-24 17:57:28 +02:00
syscalls.h
tdx.h x86/tdx: Wire up KVM hypercalls 2022-04-07 08:27:52 -07:00
text-patching.h x86/alternative: Introduce text_poke_set 2022-05-23 23:07:38 +02:00
thermal.h
thread_info.h x86/split-lock: Remove unused TIF_SLD bit 2022-04-27 15:43:39 +02:00
time.h
timer.h
timex.h x86/tsc: Use fallback for random_get_entropy() instead of zero 2022-05-13 23:59:23 +02:00
tlb.h mmu_gather: Remove per arch tlb_{start,end}_vma() 2022-07-21 10:50:13 -07:00
tlbbatch.h
tlbflush.h - Rename a PKRU macro to make more sense when reading the code 2022-08-01 09:34:39 -07:00
topology.h x86/aperfperf: Make it correct on 32bit and UP kernels 2022-05-02 09:19:05 +02:00
trace_clock.h
trap_pf.h
trapnr.h
traps.h x86/traps: Use pt_regs directly in fixup_bad_iret() 2022-05-03 11:18:59 +02:00
tsc.h x86/tsc: Use fallback for random_get_entropy() instead of zero 2022-05-13 23:59:23 +02:00
uaccess.h x86: asm: make sure __put_user_size() evaluates pointer once 2022-10-28 13:37:23 -07:00
uaccess_32.h
uaccess_64.h x86/clear_user: Make it faster 2022-08-18 12:36:42 +02:00
umip.h
unistd.h fs: stat: compat: Add __ARCH_WANT_COMPAT_STAT 2022-04-26 13:35:45 -07:00
unwind.h x86,rethook,kprobes: Replace kretprobe with rethook on x86 2022-03-28 19:38:51 -07:00
unwind_hints.h objtool: Re-add UNWIND_HINT_{SAVE_RESTORE} 2022-06-27 10:34:00 +02:00
uprobes.h
user.h
user32.h
user_32.h asm/user.h: killed unused macros 2022-01-30 21:17:00 -05:00
user_64.h asm/user.h: killed unused macros 2022-01-30 21:17:00 -05:00
vdso.h x86: Remove toolchain check for X32 ABI capability 2022-03-15 10:32:48 +01:00
vermagic.h
vga.h
vgtod.h
virtext.h
vm86.h
vmalloc.h
vmware.h
vmx.h kvm: vmx: keep constant definition format consistent 2022-09-30 07:11:17 -04:00
vmxfeatures.h KVM: VMX: Enable Notify VM exit 2022-06-08 05:56:24 -04:00
vsyscall.h
vvar.h
word-at-a-time.h x86: simplify load_unaligned_zeropad() implementation 2022-08-16 11:03:38 -07:00
x86_init.h x86/mm/cpa: Generalize __set_memory_enc_pgtable() 2022-02-23 19:14:29 +01:00
xor.h lib/xor: make xor prototypes more friendly to compiler vectorization 2022-02-11 20:39:39 +11:00
xor_32.h lib/xor: make xor prototypes more friendly to compiler vectorization 2022-02-11 20:39:39 +11:00
xor_64.h
xor_avx.h lib/xor: make xor prototypes more friendly to compiler vectorization 2022-02-11 20:39:39 +11:00