linux/arch/x86/include/asm
Sean Christopherson ce25681d59 KVM: x86/mmu: Protect marking SPs unsync when using TDP MMU with spinlock
Add yet another spinlock for the TDP MMU and take it when marking indirect
shadow pages unsync.  When using the TDP MMU and L1 is running L2(s) with
nested TDP, KVM may encounter shadow pages for the TDP entries managed by
L1 (controlling L2) when handling a TDP MMU page fault.  The unsync logic
is not thread safe, e.g. the kvm_mmu_page fields are not atomic, and
misbehaves when a shadow page is marked unsync via a TDP MMU page fault,
which runs with mmu_lock held for read, not write.

Lack of a critical section manifests most visibly as an underflow of
unsync_children in clear_unsync_child_bit() due to unsync_children being
corrupted when multiple CPUs write it without a critical section and
without atomic operations.  But underflow is the best case scenario.  The
worst case scenario is that unsync_children prematurely hits '0' and
leads to guest memory corruption due to KVM neglecting to properly sync
shadow pages.

Use an entirely new spinlock even though piggybacking tdp_mmu_pages_lock
would functionally be ok.  Usurping the lock could degrade performance when
building upper level page tables on different vCPUs, especially since the
unsync flow could hold the lock for a comparatively long time depending on
the number of indirect shadow pages and the depth of the paging tree.

For simplicity, take the lock for all MMUs, even though KVM could fairly
easily know that mmu_lock is held for write.  If mmu_lock is held for
write, there cannot be contention for the inner spinlock, and marking
shadow pages unsync across multiple vCPUs will be slow enough that
bouncing the kvm_arch cacheline should be in the noise.

Note, even though L2 could theoretically be given access to its own EPT
entries, a nested MMU must hold mmu_lock for write and thus cannot race
against a TDP MMU page fault.  I.e. the additional spinlock only _needs_ to
be taken by the TDP MMU, as opposed to being taken by any MMU for a VM
that is running with the TDP MMU enabled.  Holding mmu_lock for read also
prevents the indirect shadow page from being freed.  But as above, keep
it simple and always take the lock.

Alternative #1, the TDP MMU could simply pass "false" for can_unsync and
effectively disable unsync behavior for nested TDP.  Write protecting leaf
shadow pages is unlikely to noticeably impact traditional L1 VMMs, as such
VMMs typically don't modify TDP entries, but the same may not hold true for
non-standard use cases and/or VMMs that are migrating physical pages (from
L1's perspective).

Alternative #2, the unsync logic could be made thread safe.  In theory,
simply converting all relevant kvm_mmu_page fields to atomics and using
atomic bitops for the bitmap would suffice.  However, (a) an in-depth audit
would be required, (b) the code churn would be substantial, and (c) legacy
shadow paging would incur additional atomic operations in performance
sensitive paths for no benefit (to legacy shadow paging).

Fixes: a2855afc7e ("KVM: x86/mmu: Allow parallel page faults for the TDP MMU")
Cc: stable@vger.kernel.org
Cc: Ben Gardon <bgardon@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210812181815.3378104-1-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-08-13 03:32:14 -04:00
..
e820 x86/efi: EFI soft reservation to E820 enumeration 2019-11-07 15:44:14 +01:00
fpu x86/fpu: Return proper error codes from user access functions 2021-06-23 20:04:58 +02:00
numachip
trace x86/mm/tlb: Flush remote and local TLBs concurrently 2021-03-06 12:59:10 +01:00
uv x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
vdso clocksource/drivers/hyper-v: Re-enable VDSO_CLOCKMODE_HVCLOCK on X86 2021-05-14 14:55:13 +02:00
xen Revert "xen: fix p2m size in dom0 for disabled memory hotplug case" 2021-03-24 18:33:36 -05:00
acenv.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
acpi.h x86/mce, cper: Pass x86 CPER through the MCA handling chain 2020-11-21 12:05:41 +01:00
acrn.h x86/acrn: Introduce hypercall interfaces 2021-02-09 10:58:18 +01:00
agp.h x86: Fix various typos in comments, take #2 2021-03-21 23:50:28 +01:00
alternative.h x86/alternatives: Optimize optimize_nops() 2021-04-02 12:41:17 +02:00
amd_nb.h x86/mce/amd: Cleanup threshold device remove path 2020-04-14 15:49:51 +02:00
apic.h x86/apic: Mark _all_ legacy interrupts when IO/APIC is missing 2021-05-29 11:41:14 +02:00
apicdef.h x86/apic: Cleanup delivery mode defines 2020-10-28 20:26:24 +01:00
apm.h x86/apm: Don't access __preempt_count with zeroed fs 2018-07-16 17:59:57 +02:00
arch_hweight.h x86/kconfig: Disable CONFIG_GENERIC_HWEIGHT and remove __HAVE_ARCH_SW_HWEIGHT 2019-05-13 11:07:33 +02:00
archrandom.h x86/cpu: Use RDRAND and RDSEED mnemonics in archrandom.h 2020-05-18 19:50:47 +02:00
asm-offsets.h
asm-prototypes.h objtool/x86: Rewrite retpoline thunk calls 2021-04-02 12:47:28 +02:00
asm.h x86/asm: Make <asm/asm.h> valid on cross-builds as well 2021-05-14 08:50:28 +02:00
atomic.h locking/atomic: make ARCH_ATOMIC a Kconfig symbol 2021-05-26 13:20:49 +02:00
atomic64_32.h locking/atomics: Flip fallbacks and instrumentation 2020-06-11 08:03:24 +02:00
atomic64_64.h asm-generic/atomic: Add try_cmpxchg() fallbacks 2020-10-12 18:27:27 +02:00
audit.h x86/audit: Fix a -Wmissing-prototypes warning for ia32_classify_syscall() 2020-05-19 18:03:07 +02:00
barrier.h x86/asm: Simplify __smp_mb() definition 2021-05-12 12:22:57 +02:00
bios_ebda.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bitops.h x86, kcsan: Remove __no_kcsan_or_inline usage 2020-06-15 14:10:08 +02:00
boot.h x86: Add support for ZSTD compressed kernel 2020-07-31 11:49:09 +02:00
bootparam_utils.h x86/boot: Preserve boot_params.secure_boot from sanitizing 2019-09-02 09:17:45 +02:00
bug.h x86: Delete UD0, UD1 traces 2021-05-05 21:50:13 +02:00
bugs.h x86/mpx: remove MPX from arch/x86 2020-01-23 10:41:20 -08:00
cache.h treewide: Convert macro and uses of __section(foo) to __section("foo") 2020-10-25 14:51:49 -07:00
cacheflush.h asm-generic: don't include <linux/mm.h> in cacheflush.h 2020-06-08 11:05:57 -07:00
cacheinfo.h x86/CPU/AMD: Save AMD NodeId as cpu_die_id 2020-11-19 11:43:13 +01:00
ce4100.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
checksum_32.h i386: propagate the calling conventions change down to csum_partial_copy_generic() 2020-08-20 15:45:18 -04:00
checksum_64.h amd64: switch csum_partial_copy_generic() to new calling conventions 2020-08-20 15:45:22 -04:00
checksum.h unify generic instances of csum_partial_copy_nocheck() 2020-08-20 15:45:14 -04:00
clocksource.h x86: Introduce asm/vdso/clocksource.h 2020-03-21 15:23:54 +01:00
cmdline.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cmpxchg_32.h x86: cmpxchg_32.h: Delete duplicated word 2020-07-26 12:47:22 +02:00
cmpxchg_64.h locking/atomics/x86: Reduce arch_cmpxchg64*() instrumentation 2018-07-25 11:53:58 +02:00
cmpxchg.h x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
compat.h [amd64] clean PRSTATUS_SIZE/SET_PR_FPVALID up properly 2021-01-06 08:40:56 -05:00
cpu_device_id.h x86/cpu: Add a X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS() macro 2020-05-07 13:48:05 +02:00
cpu_entry_area.h x86/sev-es: Allocate and map an IST stack for #VC handler 2020-09-09 11:33:19 +02:00
cpu.h Perf events changes in this cycle were: 2021-04-28 13:03:44 -07:00
cpufeature.h x86/alternative: Use ALTERNATIVE_TERNARY() in _static_cpu_has() 2021-03-11 19:33:43 +01:00
cpufeatures.h x86/msr: Define new bits in TSX_FORCE_ABORT MSR 2021-06-15 17:23:15 +02:00
cpuidle_haltpoll.h cpuidle-haltpoll: vcpu hotplug support 2019-09-03 09:36:36 +02:00
cpumask.h x86/entry, cpumask: Provide non-instrumented variant of cpu_is_offline() 2020-06-15 14:10:09 +02:00
crash.h x86/crash: Remove crash_reserve_low_1M() 2021-06-07 12:14:45 +02:00
current.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
debugreg.h x86/debug: Remove aout_dump_debugregs() 2020-09-04 15:12:55 +02:00
delay.h x86/delay: Introduce TPAUSE delay 2020-05-07 16:06:20 +02:00
desc_defs.h x86/idt: Make IDT init functions static inlines 2020-09-07 22:44:43 +02:00
desc.h Merge branch 'akpm' (patches from Andrew) 2021-07-02 12:08:10 -07:00
device.h x86: Remove dev->archdata.iommu pointer 2020-06-30 11:59:48 +02:00
disabled-features.h x86/cpufeatures: Force disable X86_FEATURE_ENQCMD and remove update_pasid() 2021-06-03 16:33:09 +02:00
div64.h sched/cputime: Improve cputime_adjust() 2020-06-15 14:10:00 +02:00
dma-mapping.h dma-mapping: move dma-debug.h to kernel/dma/ 2020-10-06 07:07:05 +02:00
dma.h x86/dma: Fix max PFN arithmetic overflow on 32 bit systems 2020-05-28 20:21:32 +02:00
dmi.h x86: Don't include linux/irq.h from asm/hardirq.h 2018-08-05 09:53:13 +02:00
doublefault.h x86/32: Remove CONFIG_DOUBLEFAULT 2020-04-14 14:24:05 +02:00
dwarf2.h x86: remove always-defined CONFIG_AS_CFI_SECTIONS 2020-04-09 00:01:59 +09:00
edac.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
efi.h - Have 64-bit kernel code which uses 387 insns request a x87 init 2021-02-20 20:07:44 -08:00
elf.h x86/elf: Support a new ELF aux vector AT_MINSIGSTKSZ 2021-05-19 12:18:45 +02:00
elfcore-compat.h [amd64] clean PRSTATUS_SIZE/SET_PR_FPVALID up properly 2021-01-06 08:40:56 -05:00
emergency-restart.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
emulate_prefix.h x86: xen: kvm: Gather the definition of emulate prefixes 2019-10-17 21:31:57 +02:00
enclu.h x86/vdso: Implement a vDSO for Intel SGX enclave call 2020-11-18 18:02:50 +01:00
entry-common.h x86/entry: Enable random_kstack_offset support 2021-04-08 14:05:20 +02:00
espfix.h init: Invoke init_espfix_bsp() from mm_init() 2017-12-22 20:13:05 +01:00
exec.h
extable.h x86/mce: Provide method to find out the type of an exception handler 2020-10-07 11:08:59 +02:00
fb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fixmap.h x86/platform/intel-mid: Remove unused leftovers (vRTC) 2021-02-09 15:28:37 +01:00
floppy.h floppy: remove redundant assignment to variable st 2021-04-20 08:59:03 -06:00
frame.h x86/unwind/fp: Fix FP unwinding in ret_from_fork 2020-09-18 09:59:40 +02:00
fsgsbase.h x86/fsgsbase: Replace static_cpu_has() with boot_cpu_has() 2020-08-24 18:18:32 +02:00
ftrace.h livepatch: Use the default ftrace_ops instead of REGS when ARGS is available 2020-11-13 12:15:28 -05:00
futex.h x86: get rid of user_atomic_cmpxchg_inatomic() 2020-03-27 23:58:55 -04:00
gart.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
GEN-for-each-reg.h x86: Simplify retpoline declaration 2020-04-30 20:14:34 +02:00
genapic.h
geode.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
hardirq.h x86/kvm/vmx: Move guest enter/exit into .noinstr.text 2020-07-09 07:08:40 -04:00
highmem.h x86/mm/highmem: Use generic kmap atomic implementation 2020-11-06 23:14:55 +01:00
hpet.h x86/hpet: Move MSI support into hpet.c 2020-10-28 20:26:25 +01:00
hugetlb.h mm/hugetlb: define a generic fallback for arch_clear_hugepage_flags() 2020-06-03 20:09:46 -07:00
hw_breakpoint.h perf/hw_breakpoint: Remove default hw_breakpoint_arch_parse() 2018-06-26 09:07:58 +02:00
hw_irq.h iommu/amd: Fix IOMMU interrupt generation in X2APIC mode 2020-11-18 20:55:59 +01:00
hyperv-tlfs.h hyperv: SVM enlightened TLB flush support flag 2021-06-17 13:09:36 -04:00
hypervisor.h x86/paravirt: Remove const mark from x86_hyper_xen_hvm variable 2019-07-17 08:09:59 +02:00
i8259.h x86: i8259: Add missing include file 2018-08-15 13:44:10 -07:00
ia32_unistd.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ia32.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idtentry.h X86 interrupt related changes: 2021-06-29 12:36:59 -07:00
imr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
inat_types.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
inat.h x86/insn: Add a __ignore_sync_check__ marker 2021-03-15 11:00:57 +01:00
init.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
insn-eval.h x86/insn: Rename insn_decode() to insn_decode_from_regs() 2021-03-15 10:53:10 +01:00
insn.h x86: Add insn_decode_kernel() 2021-03-31 16:20:22 +02:00
inst.h x86/asm: Drop unused RDPID macro 2020-11-26 12:58:56 +01:00
intel_ds.h perf/x86/intel: Add Icelake support 2019-04-16 12:26:18 +02:00
intel_pconfig.h x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
intel_pt.h x86: Fix various typos in comments, take #2 2021-03-21 23:50:28 +01:00
intel_punit_ipc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intel_scu_ipc.h x86/platform/intel-mid: Get rid of intel_scu_ipc_legacy.h 2021-02-15 20:10:30 +01:00
intel_telemetry.h platform/x86: intel_pmc_ipc: Convert to MFD 2020-04-24 11:18:44 +01:00
intel-family.h x86/cpu: Fix core name for Sapphire Rapids 2021-05-14 14:31:14 +02:00
intel-mid.h x86/platform/intel-mid: Update Copyright year and drop file names 2021-02-15 20:10:30 +01:00
invpcid.h x86/cpu: Use INVPCID mnemonic in invpcid.h 2020-05-12 16:05:30 +02:00
io_apic.h x86/ioapic: Handle Extended Destination ID field in RTE 2020-10-28 20:26:28 +01:00
io_bitmap.h x86/ioperm: Fix io bitmap invalidation on Xen PV 2020-07-18 12:31:49 +02:00
io.h x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
iomap.h io-mapping: Cleanup atomic iomap 2020-11-06 23:14:58 +01:00
iommu_table.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
iommu.h iommu/vt-d: Check VT-d RMRR region in BIOS is reported as reserved 2019-11-11 16:06:07 +01:00
iosf_mbi.h media: atomisp: move CCK endpoint address to generic header 2020-07-18 07:17:16 +02:00
irq_remapping.h x86: Kill all traces of irq_remapping_get_irq_domain() 2020-10-28 20:26:28 +01:00
irq_stack.h x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
irq_vectors.h x86/irq: Add and use NR_EXTERNAL_VECTORS and NR_SYSTEM_VECTORS 2021-05-21 12:36:44 +02:00
irq_work.h x86/entry: Convert various system vectors 2020-06-11 15:15:14 +02:00
irq.h Rework of the X86 irq stack handling: 2021-02-24 16:32:23 -08:00
irqdomain.h x86/apic: Add select() method on vector irqdomain 2020-10-28 20:26:27 +01:00
irqflags.h x86/paravirt: Switch functions with custom code to ALTERNATIVE 2021-03-11 20:07:01 +01:00
ist.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 118 2019-05-24 17:39:02 +02:00
jailhouse_para.h x86/jailhouse: Fix incorrect SPDX identifier 2018-04-23 10:17:28 +02:00
jump_label.h jump_label, x86: Allow short NOPs 2021-05-12 14:54:56 +02:00
kasan.h kasan: clean up KASAN_SHADOW_SCALE_SHIFT usage 2018-02-06 18:32:43 -08:00
kaslr.h x86/mm: simplify init_trampoline() and surrounding logic 2020-06-09 09:39:13 -07:00
kbdleds.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kbuild x86/syscalls: Switch to generic syscalltbl.sh 2021-05-20 15:03:58 +02:00
kdebug.h x86/dumpstack: Add log_lvl to __show_regs() 2020-07-22 23:56:53 +02:00
kexec-bzimage64.h kexec_file,x86,powerpc: factor out kexec_file_ops functions 2018-04-13 17:10:27 -07:00
kexec.h x86: Use ELF fields defined in 'struct kimage' 2021-03-08 12:06:29 -07:00
kfence.h kfence, x86: fix preemptible warning on KPTI-enabled systems 2021-04-09 14:54:23 -07:00
kgdb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
kprobes.h x86/kprobes: Use int3 instead of debug trap for single-step 2021-03-23 16:07:56 +01:00
kvm_host.h KVM: x86/mmu: Protect marking SPs unsync when using TDP MMU with spinlock 2021-08-13 03:32:14 -04:00
kvm_page_track.h KVM: Simplify kvm_free_memslot() and all its descendents 2020-03-16 17:57:22 +01:00
kvm_para.h x86/kvm: Disable all PV features on crash 2021-05-07 06:06:10 -04:00
kvm_types.h KVM: Move x86's version of struct kvm_mmu_memory_cache to common code 2020-07-09 13:29:42 -04:00
kvm_vcpu_regs.h KVM: x86: Explicitly #define the VCPU_REGS_* indices 2019-02-20 22:47:38 +01:00
kvm-x86-ops.h KVM: x86: Drop "pre_" from enter/leave_smm() helpers 2021-06-17 13:09:35 -04:00
kvmclock.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
linkage.h x86/asm: Remove the last GLOBAL user and remove the macro 2019-10-18 11:29:50 +02:00
livepatch.h livepatch: Use the default ftrace_ops instead of REGS when ARGS is available 2020-11-13 12:15:28 -05:00
local.h x86/asm: 'Simplify' GEN_*_RMWcc() macros 2018-10-16 17:33:54 +02:00
mach_timer.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mach_traps.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
math_emu.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mc146818rtc.h x86: Convert x86_platform_ops to timespec64 2018-05-19 14:03:14 +02:00
mce.h x86/MCE/AMD, EDAC/mce_amd: Add new SMCA bank types 2021-05-27 20:08:14 +02:00
mem_encrypt.h x86/sev: Drop redundant and potentially misleading 'sev_enabled' 2021-04-26 05:27:14 -04:00
memtype.h x86/mm: Move pgprot2cachemode out of line 2020-04-20 12:39:17 +02:00
microcode_amd.h x86/microcode/AMD: Increase microcode PATCH_MAX_SIZE 2020-04-14 17:34:46 +02:00
microcode_intel.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
microcode.h x86/microcode: Make microcode_init() static 2020-12-31 11:44:00 +01:00
misc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmconfig.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmu_context.h asm-generic: mmu-context cleanup 2020-12-15 23:58:04 -08:00
mmu.h x86/mm: Convert mmu context ia32_compat into a proper flags field 2020-10-26 13:46:47 +01:00
mmx.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmzone_32.h x86/mm: Drop deprecated DISCONTIGMEM support for 32-bit 2020-05-28 18:34:30 +02:00
mmzone_64.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmzone.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
module.h arch: split MODULE_ARCH_VERMAGIC definitions out to <asm/vermagic.h> 2020-04-23 10:50:26 +09:00
mpspec_def.h x86: Introduce and use MP IRQ trigger and polarity defines 2018-01-14 21:11:54 +01:00
mpspec.h x86/init: Remove unused init ops 2020-09-16 16:52:28 +02:00
mshyperv.h drivers: hv: Create a consistent pattern for checking Hyper-V hypercall status 2021-04-21 09:49:19 +00:00
msi.h x86/apic: Support 15 bits of APIC ID in MSI where available 2020-10-28 20:26:29 +01:00
msr-index.h - New AMD models support 2021-06-28 11:22:40 -07:00
msr-trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
msr.h x86/cpu: Remove write_tsc() and write_rdtscp_aux() wrappers 2021-05-05 21:50:14 +02:00
mtrr.h x86/mm/pat: Rename <asm/pat.h> => <asm/memtype.h> 2019-12-10 10:12:55 +01:00
mwait.h sched/idle: Fix arch_cpu_idle() vs tracing 2020-11-24 16:47:35 +01:00
nmi.h arch: x86: Remove CONFIG_OPROFILE support 2021-01-29 10:05:51 +05:30
nops.h x86/asm: Use _ASM_BYTES() in <asm/nops.h> 2021-05-10 12:33:28 +02:00
nospec-branch.h - turn the stack canary into a normal __percpu variable on 32-bit which 2021-04-27 17:45:09 -07:00
numa_32.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
numa.h ACPI updates for 5.10-rc1 2020-10-14 11:42:04 -07:00
olpc_ofw.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
olpc.h Platform: OLPC: Move EC-specific functionality out from x86 2019-05-20 17:27:08 +03:00
orc_lookup.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13 2019-05-21 11:28:45 +02:00
orc_types.h objtool: Fix x86 orc generation on big endian cross-compiles 2021-01-13 18:13:13 -06:00
page_32_types.h x86/build: Fix vmlinux size check on 64-bit 2020-10-29 21:54:35 +01:00
page_32.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
page_64_types.h x86/cpu: Use alternative to generate the TASK_SIZE_MAX constant 2021-05-05 08:52:31 +02:00
page_64.h x86: Always inline task_size_max() 2021-06-22 13:56:43 +02:00
page_types.h x86/mm: thread pgprot_t through init_memory_mapping() 2020-04-10 15:36:21 -07:00
page.h mm: arch: remove indirection level in alloc_zeroed_user_highpage_movable() 2021-06-04 19:32:21 +01:00
paravirt_types.h The x86 MM changes in this cycle were: 2021-04-29 11:41:43 -07:00
paravirt.h The x86 MM changes in this cycle were: 2021-04-29 11:41:43 -07:00
parport.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci_x86.h x86/pci: Reducde #ifdeffery in PCI init code 2020-09-16 16:52:35 +02:00
pci-direct.h PCI: Make early dump functionality generic 2018-06-29 20:06:07 -05:00
pci-functions.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci.h x86/irq: Cleanup the arch_*_msi_irqs() leftovers 2020-09-16 16:52:38 +02:00
percpu.h x86/percpu: Remove unused PER_CPU() macro 2020-07-23 11:46:43 +02:00
perf_event_p4.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
perf_event.h perf/x86: Reset the dirty counter to prevent the leak for an RDPMC task 2021-06-17 14:11:47 +02:00
pgalloc.h mm/thp: define default pmd_pgtable() 2021-07-01 11:06:03 -07:00
pgtable_32_areas.h mm, x86/mm: Untangle address space layout definitions from basic pgtable type definitions 2019-12-10 10:12:55 +01:00
pgtable_32_types.h mm, x86/mm: Untangle address space layout definitions from basic pgtable type definitions 2019-12-10 10:12:55 +01:00
pgtable_32.h x86/build: Fix vmlinux size check on 64-bit 2020-10-29 21:54:35 +01:00
pgtable_64_types.h x86: Support kmap_local() forced debugging 2020-11-24 14:42:09 +01:00
pgtable_64.h The biggest change is to not sync the vmalloc and ioremap ranges for x86-64 anymore. 2020-08-03 17:25:42 -07:00
pgtable_areas.h mm, x86/mm: Untangle address space layout definitions from basic pgtable type definitions 2019-12-10 10:12:55 +01:00
pgtable_types.h mm: define default value for FIRST_USER_ADDRESS 2021-07-01 11:06:02 -07:00
pgtable-2level_types.h x86/mm/32: implement arch_sync_kernel_mappings() 2020-06-02 10:59:11 -07:00
pgtable-2level.h Revert "x86/mm/legacy: Populate the user page-table with user pgd's" 2018-09-14 17:08:45 +02:00
pgtable-3level_types.h x86/paravirt: Remove 32-bit support from CONFIG_PARAVIRT_XXL 2020-08-15 13:52:11 +02:00
pgtable-3level.h mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
pgtable-invert.h x86/speculation/l1tf: Exempt zeroed PTEs from inversion 2018-08-17 10:27:36 -07:00
pgtable.h mm: rename p4d_page_vaddr to p4d_pgtable and make it return pud_t * 2021-07-08 11:48:22 -07:00
pkeys.h x86/fpu: Use pkru_write_default() in copy_init_fpstate_to_fpregs() 2021-06-23 19:15:16 +02:00
pkru.h x86/pkru: Remove xstate fiddling from write_pkru() 2021-06-23 19:55:51 +02:00
platform_sst_audio.h sfi: Remove framework for deprecated firmware 2021-02-15 20:09:46 +01:00
pm-trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
posix_types.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
preempt.h sched/core: Initialize the idle task with preemption disabled 2021-05-12 13:01:45 +02:00
probe_roms.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
processor-cyrix.h x86/cpu/cyrix: Remove {get,set}Cx86_old macros used for Cyrix processors 2019-03-21 12:28:50 +01:00
processor-flags.h x86/mm/pti: Define X86_CR3_PTI_PCID_USER_BIT on x86_32 2018-07-20 01:11:44 +02:00
processor.h Fixes and improvements for FPU handling on x86: 2021-07-07 11:12:01 -07:00
prom.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
proto.h x86/asm: Ensure asm/proto.h can be included stand-alone 2021-04-12 13:12:46 +02:00
pti.h x86: Use the correct SPDX License Identifier in headers 2019-10-01 20:31:35 +02:00
ptrace.h Linux 5.12-rc3 2021-03-15 10:49:00 +01:00
purgatory.h x86/kdump: Remove the backup region handling 2019-11-14 18:24:43 +01:00
pvclock-abi.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pvclock.h x86/vdso: Switch to generic vDSO implementation 2019-06-22 21:21:10 +02:00
qrwlock.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qspinlock_paravirt.h locking/pvqspinlock/x86: Use LOCK_PREFIX in __pv_queued_spin_unlock() assembly code 2018-07-25 11:22:20 +02:00
qspinlock.h x86/kvm: Add "nopvspin" parameter to disable PV spinlocks 2020-07-08 16:21:57 -04:00
realmode.h x86/head/64: Don't call verify_cpu() on starting APs 2020-09-09 11:33:20 +02:00
reboot_fixups.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
reboot.h x86/headers: Fix -Wmissing-prototypes warning 2018-11-23 07:59:59 +01:00
required-features.h x86/cpufeatures: Assign dedicated feature word for CPUID_0x8000001F[EAX] 2021-01-28 17:41:24 +01:00
resctrl.h x86/resctrl: Apply READ_ONCE/WRITE_ONCE to task_struct.{rmid,closid} 2021-01-11 11:43:23 +01:00
rmwcc.h jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
seccomp.h x86: Enable seccomp architecture tracking 2020-11-20 11:16:34 -08:00
sections.h x86/setup: Fix static memory detection 2020-03-19 11:58:13 +01:00
segment.h x86/stackprotector/32: Make the canary into a regular percpu variable 2021-03-08 13:19:05 +01:00
serial.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
set_memory.h x86: Fix various typos in comments, take #2 2021-03-21 23:50:28 +01:00
setup_arch.h
setup.h x86/setup: Remove unused RESERVE_BRK_ARRAY() 2021-03-11 11:47:37 +01:00
sev-common.h x86/sev: Add defines for GHCB version 2 MSR protocol requests 2021-06-23 11:25:17 +02:00
sev.h x86/sev: Move GHCB MSR protocol and NAE definitions in a common header 2021-05-10 07:46:39 +02:00
sgx.h x86: Fix leftover comment typos 2021-05-12 20:00:51 +02:00
shmparam.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sigcontext.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sigframe.h x86/signal: Introduce helpers to get the maximum signal frame size 2021-05-19 11:46:27 +02:00
sighandling.h Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2020-03-31 11:04:05 -07:00
signal.h x86/entry: Use generic syscall exit functionality 2020-07-24 15:04:59 +02:00
simd.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
smap.h First big cleanup to the paravirt infra to use alternatives and thus 2021-04-26 09:01:29 -07:00
smp.h ACPI: processor: Fix build when CONFIG_ACPI_PROCESSOR=m 2021-04-07 19:02:43 +02:00
softirq_stack.h x86/softirq/64: Inline do_softirq_own_stack() 2021-02-10 23:34:17 +01:00
sparsemem.h mm: fix phys_to_target_node() and memory_add_physaddr_to_nid() exports 2020-11-22 10:48:22 -08:00
spec-ctrl.h x86/speculation: Prevent stale SPEC_CTRL msr content 2018-11-28 11:57:12 +01:00
special_insns.h x86/pkru: Remove xstate fiddling from write_pkru() 2021-06-23 19:55:51 +02:00
spinlock_types.h x86/spinlock: Remove obsolete ticket spinlock macros and types 2020-05-28 21:18:40 +02:00
spinlock.h Merge branch 'linus' into locking/core, to resolve conflicts 2017-11-07 10:32:44 +01:00
sta2x11.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
stackprotector.h x86: Fix leftover comment typos 2021-05-12 20:00:51 +02:00
stacktrace.h x86/dumpstack: Make show_trace_log_lvl() static 2020-11-17 19:05:32 +01:00
static_call.h static_call: Allow module use without exposing static_call_key 2021-02-17 14:12:42 +01:00
string_32.h x86/asm: Remove unused __constant_c_x_memset() macro and inlines 2019-01-12 17:54:49 +01:00
string_64.h x86, powerpc: Rename memcpy_mcsafe() to copy_mc_to_{user, kernel}() 2020-10-06 11:18:04 +02:00
string.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
suspend_32.h x86/stackprotector/32: Make the canary into a regular percpu variable 2021-03-08 13:19:05 +01:00
suspend_64.h x86/paravirt: Drop {read,write}_cr8() hooks 2019-07-22 10:12:33 +02:00
suspend.h x86, hibernate: Rename temp_level4_pgt to temp_pgt 2018-10-03 11:56:34 +02:00
svm.h KVM: SVM: Software reserved fields 2021-06-17 13:09:37 -04:00
swiotlb.h x86/dma: Use generic swiotlb_ops 2018-03-20 10:01:57 +01:00
switch_to.h x86/process/64: Move cpu_current_top_of_stack out of TSS 2021-03-28 22:40:10 +02:00
sync_bitops.h x86/asm: Modernize sync_bitops.h 2019-04-10 09:53:31 +02:00
sync_core.h x86/membarrier: Get rid of a dubious optimization 2020-12-09 09:37:42 +01:00
syscall_wrapper.h x86/entry/x32: Rename __x32_compat_sys_* to __x64_compat_sys_* 2021-05-20 15:03:58 +02:00
syscall.h x86/entry: Use int everywhere for system call numbers 2021-05-25 10:07:00 +02:00
syscalls.h x86: Remove unneeded includes 2020-03-21 16:03:25 +01:00
sysfb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
text-patching.h x86/alternatives: Teach text_poke_bp() to emulate RET 2020-09-01 09:58:05 +02:00
thermal.h x86/thermal: Fix LVT thermal setup for SMI delivery mode 2021-05-31 22:32:26 +02:00
thread_info.h x86/process/64: Move cpu_current_top_of_stack out of TSS 2021-03-28 22:40:10 +02:00
time.h x86/timer: Skip PIT initialization on modern chipsets 2019-06-29 11:35:35 +02:00
timer.h Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-13 19:07:38 -08:00
timex.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tlb.h tlb: arch: Remove empty __tlb_remove_tlb_entry() stubs 2021-01-29 20:02:29 +01:00
tlbbatch.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tlbflush.h x86/mm/tlb: Privatize cpu_tlbstate 2021-03-06 12:59:10 +01:00
topology.h x86/topology: Make __max_die_per_package available unconditionally 2021-01-14 12:18:36 +01:00
trace_clock.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trap_pf.h x86/mm: Signal SIGSEGV with PF_SGX 2020-11-17 14:36:13 +01:00
trapnr.h x86/boot/compressed/64: Add stage1 #VC handler 2020-09-07 19:45:25 +02:00
traps.h This feature enhances the current guest memory encryption support 2020-10-14 10:21:34 -07:00
tsc.h A set of locking fixes and updates: 2020-08-10 19:07:44 -07:00
uaccess_32.h x86: get rid of small constant size cases in raw_copy_{to,from}_user() 2020-03-18 15:53:25 -04:00
uaccess_64.h x86, powerpc: Rename memcpy_mcsafe() to copy_mc_to_{user, kernel}() 2020-10-06 11:18:04 +02:00
uaccess.h x86/uaccess: fix code generation in put_user() 2020-10-23 13:44:24 -07:00
umip.h x86/Kconfig: Rename UMIP config parameter 2019-11-07 11:07:29 +01:00
unistd.h x86/syscalls: Use __NR_syscalls instead of __NR_syscall_max 2021-05-20 15:03:59 +02:00
unwind_hints.h objtool: Combine UNWIND_HINT_RET_OFFSET and UNWIND_HINT_FUNC 2021-01-26 11:12:00 -06:00
unwind.h x86/unwind/orc: Fix premature unwind stoppage due to IRET frames 2020-04-25 12:22:29 +02:00
uprobes.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
user_32.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
user_64.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
user.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
user32.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vdso.h A set of updates for entry/exit handling: 2020-12-14 17:13:53 -08:00
vermagic.h arch: split MODULE_ARCH_VERMAGIC definitions out to <asm/vermagic.h> 2020-04-23 10:50:26 +09:00
vga.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vgtod.h um: Fix header inclusion 2020-03-23 18:45:14 +01:00
virtext.h KVM: VMX: Use the kernel's version of VMXOFF 2021-02-04 05:27:33 -05:00
vm86.h x86/vm86/32: Remove VM86_SCREEN_BITMAP support 2021-01-21 20:08:53 +01:00
vmalloc.h mm/vmalloc: provide fallback arch huge vmap support functions 2021-04-30 11:20:40 -07:00
vmware.h x86/cpu/vmware: Fix platform detection VMWARE_PORT macro 2019-10-22 00:51:44 +02:00
vmx.h KVM: VMX: Add basic handling of VM-Exit from SGX enclave 2021-04-20 04:18:54 -04:00
vmxfeatures.h KVM: VMX: Enable bus lock VM exit 2021-02-04 05:27:21 -05:00
vsyscall.h x86/vsyscall: Show something useful on a read fault 2019-06-28 00:04:39 +02:00
vvar.h x86/vdso: Add time napespace page 2020-01-14 12:20:58 +01:00
word-at-a-time.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
x86_init.h x86/apic: Support 15 bits of APIC ID in MSI where available 2020-10-28 20:26:29 +01:00
xor_32.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 47 2019-05-24 17:27:13 +02:00
xor_64.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xor_avx.h x86: remove always-defined CONFIG_AS_AVX 2020-04-09 00:01:59 +09:00
xor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 47 2019-05-24 17:27:13 +02:00