linux/arch/x86/include/asm
Linus Torvalds 9591fdb061 - Remove a bunch of asm implementing condition flags testing in KVM's
emulator in favor of int3_emulate_jcc() which is written in C
 
 - Replace KVM fastops with C-based stubs which avoids problems with the
   fastop infra related to latter not adhering to the C ABI due to their
   special calling convention and, more importantly, bypassing compiler
   control-flow integrity checking because they're written in asm
 
 - Remove wrongly used static branches and other ugliness accumulated
   over time in hyperv's hypercall implementation with a proper static
   function call to the correct hypervisor call variant
 
 - Add some fixes and modifications to allow running FRED-enabled kernels
   in KVM even on non-FRED hardware
 
 - Add kCFI improvements like validating indirect calls and prepare for
   enabling kCFI with GCC. Add cmdline params documentation and other
   code cleanups
 
 - Use the single-byte 0xd6 insn as the official #UD single-byte
   undefined opcode instruction as agreed upon by both x86 vendors
 
 - Other smaller cleanups and touchups all over the place
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmjqXxkACgkQEsHwGGHe
 VUq9QBAAsjaay99a1+Dc53xyP1/HzCUFZDOzEYhj9zF85I8/xA9vTXZr7Qg2m6os
 +4EEmnlwU43AR5KgwGJcuszLF9qSqTMz5qkAdFpvnoQ1Hbc8b49A+3yo9/hM7NA2
 gPGH0gVZVBcffoETiQ8tJN6C9H6Ec0nTZwKTbasWwxz5oUAw+ppjP+aF4rFQ2/5w
 b1ofrcga5yucjvSlXjBOEwHvd21l7O9iMre1oGEn6b0E2LU8ldToRkJkVZIhkWeL
 2Iq3gYtVNN4Ao06WbV/EfXAqg5HWXjcm5bLcUXDtSF+Blae+gWoCjrT7XQdQGyEq
 J12l4FbIZk5Ha8eWAC425ye9i3Wwo+oie3Cc4SVCMdv5A+AmOF0ijAlo1hcxq0rX
 eGNWm8BKJOJ9zz1kxLISO7CfjULKgpsXLabF5a19uwoCsQgj5YrhlJezaIKHXbnK
 OWwHWg9IuRkN2KLmJa7pXtHkuAHp4MtEV9TP9kU2WCvCInrNrzp3gYtds3pri82c
 8ove+WA3yb/AQ6RCq5vAMLYXBxMRbN7FrmY5ZuwgWJTMi6cp1Sp02mhobwJOgNhO
 H7nKWCZnQMyCLPzVeg97HTSgqSXw13dSrujWX9gWYVWBMfZO1B9HcUrhtiOhH7Q9
 cvELkcqaxKrCKdRHLLYgHeMIQU2tdpsQ5TXHm7C7liEcZPZpk+g=
 =3Otb
 -----END PGP SIGNATURE-----

Merge tag 'x86_core_for_v6.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull more x86 updates from Borislav Petkov:

 - Remove a bunch of asm implementing condition flags testing in KVM's
   emulator in favor of int3_emulate_jcc() which is written in C

 - Replace KVM fastops with C-based stubs which avoids problems with the
   fastop infra related to latter not adhering to the C ABI due to their
   special calling convention and, more importantly, bypassing compiler
   control-flow integrity checking because they're written in asm

 - Remove wrongly used static branches and other ugliness accumulated
   over time in hyperv's hypercall implementation with a proper static
   function call to the correct hypervisor call variant

 - Add some fixes and modifications to allow running FRED-enabled
   kernels in KVM even on non-FRED hardware

 - Add kCFI improvements like validating indirect calls and prepare for
   enabling kCFI with GCC. Add cmdline params documentation and other
   code cleanups

 - Use the single-byte 0xd6 insn as the official #UD single-byte
   undefined opcode instruction as agreed upon by both x86 vendors

 - Other smaller cleanups and touchups all over the place

* tag 'x86_core_for_v6.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
  x86,retpoline: Optimize patch_retpoline()
  x86,ibt: Use UDB instead of 0xEA
  x86/cfi: Remove __noinitretpoline and __noretpoline
  x86/cfi: Add "debug" option to "cfi=" bootparam
  x86/cfi: Standardize on common "CFI:" prefix for CFI reports
  x86/cfi: Document the "cfi=" bootparam options
  x86/traps: Clarify KCFI instruction layout
  compiler_types.h: Move __nocfi out of compiler-specific header
  objtool: Validate kCFI calls
  x86/fred: KVM: VMX: Always use FRED for IRQs when CONFIG_X86_FRED=y
  x86/fred: Play nice with invoking asm_fred_entry_from_kvm() on non-FRED hardware
  x86/fred: Install system vector handlers even if FRED isn't fully enabled
  x86/hyperv: Use direct call to hypercall-page
  x86/hyperv: Clean up hv_do_hypercall()
  KVM: x86: Remove fastops
  KVM: x86: Convert em_salc() to C
  KVM: x86: Introduce EM_ASM_3WCL
  KVM: x86: Introduce EM_ASM_1SRC2
  KVM: x86: Introduce EM_ASM_2CL
  KVM: x86: Introduce EM_ASM_2W
  ...
2025-10-11 11:19:16 -07:00
..
amd Move FCH header to a location accessible by all archs 2025-06-30 13:42:11 +03:00
cpuid x86/cpuid: Rename hypervisor_cpuid_base()/for_each_possible_hypervisor_cpuid_base() to cpuid_base_hypervisor()/for_each_possible_cpuid_base_hypervisor() 2025-05-16 10:54:47 +02:00
e820
fpu arch: copy_thread: pass clone_flags as u64 2025-09-01 15:31:34 +02:00
numachip
shared KVM: TDX: Exit to userspace for SetupEventNotifyInterrupt 2025-06-20 14:09:50 -04:00
trace x86/fpu: Remove unused trace events 2025-05-31 09:40:40 +02:00
uv
vdso
xen xen: replace XENFEAT_auto_translated_physmap with xen_pv_domain() 2025-09-08 17:01:36 +02:00
GEN-for-each-reg.h
Kbuild
acenv.h
acpi.h x86: Handle KCOV __init vs inline mismatches 2025-07-24 16:55:11 -07:00
acrn.h x86/cpuid: Rename hypervisor_cpuid_base()/for_each_possible_hypervisor_cpuid_base() to cpuid_base_hypervisor()/for_each_possible_cpuid_base_hypervisor() 2025-05-16 10:54:47 +02:00
agp.h
alternative.h Merge commit 'its-for-linus-20250509-merge' into x86/core, to resolve conflicts 2025-05-13 10:47:10 +02:00
apic.h x86/apic: Add kexec support for Secure AVIC 2025-09-01 13:06:08 +02:00
apicdef.h x86/apic: Populate .read()/.write() callbacks of Secure AVIC driver 2025-08-31 22:07:35 +02:00
apm.h
arch_hweight.h
archrandom.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
asm-offsets.h
asm-prototypes.h
asm.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
atomic.h
atomic64_32.h
atomic64_64.h
audit.h
barrier.h
bios_ebda.h
bitops.h - Simplify inline asm flag output operands now that the minimum compiler 2025-10-11 10:51:14 -07:00
boot.h efistub/x86: Remap inittext read-execute when needed 2025-09-03 18:05:42 +02:00
bootparam_utils.h
bug.h x86,ibt: Use UDB instead of 0xEA 2025-09-04 21:59:09 +02:00
bugs.h
cache.h
cacheflush.h
cacheinfo.h
ce4100.h serial: 8250: Move CE4100 quirks to a module under 8250 driver 2025-06-29 14:24:46 +02:00
cfi.h - Remove a bunch of asm implementing condition flags testing in KVM's 2025-10-11 11:19:16 -07:00
checksum.h
checksum_32.h
checksum_64.h
clocksource.h
cmdline.h
cmpxchg.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
cmpxchg_32.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
cmpxchg_64.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
coco.h
compat.h
cpu.h
cpu_device_id.h
cpu_entry_area.h
cpufeature.h
cpufeatures.h Generic: 2025-10-06 12:37:34 -07:00
cpuidle_haltpoll.h
cpumask.h
crash.h
crash_reserve.h
current.h
debugreg.h x86/traps: Initialize DR7 by writing its architectural reset value 2025-06-24 13:15:52 -07:00
delay.h
desc.h
desc_defs.h
device.h
div64.h
dma-mapping.h
dma.h
dmi.h
doublefault.h
dwarf2.h
edac.h
efi.h
elf.h
elfcore-compat.h
emergency-restart.h
emulate_prefix.h
enclu.h
entry-common.h x86/vmscape: Add conditional IBPB mitigation 2025-08-14 10:37:18 -07:00
espfix.h
exec.h
extable.h
extable_fixup_types.h
fixmap.h
floppy.h floppy: Replace custom SZ_64K constant 2025-08-25 14:46:42 -06:00
fpu.h
frame.h
fred.h
fsgsbase.h
ftrace.h
futex.h
gart.h
genapic.h
geode.h
gsseg.h
hardirq.h
highmem.h
hpet.h
hugetlb.h
hw_breakpoint.h
hw_irq.h x86/irq: Plug vector setup race 2025-08-04 23:34:03 +02:00
hyperv_timer.h
hypervisor.h x86/cpu: Detect FreeBSD Bhyve hypervisor 2025-09-15 14:06:44 +02:00
i8259.h
ia32.h
ibt.h x86,ibt: Use UDB instead of 0xEA 2025-09-04 21:59:09 +02:00
idtentry.h x86/fred: Install system vector handlers even if FRED isn't fully enabled 2025-08-18 14:23:08 +02:00
imr.h
inat.h x86/insn: Add XOP prefix instructions decoder support 2025-08-18 17:15:02 +02:00
inat_types.h
init.h x86/boot: Move startup code out of __head section 2025-09-03 18:06:04 +02:00
insn-eval.h
insn.h x86/insn: Add XOP prefix instructions decoder support 2025-08-18 17:15:02 +02:00
inst.h
intel-family.h x86/cpu: Rename and move CPU model entry for Diamond Rapids 2025-09-17 11:22:11 +02:00
intel-mid.h
intel_ds.h
intel_pt.h
intel_punit_ipc.h
intel_telemetry.h platform/x86: intel_telemetry: Remove unused telemetry_raw_read_events() 2025-06-11 10:56:06 +03:00
invpcid.h
io.h
io_apic.h
io_bitmap.h
iomap.h
iommu.h
iosf_mbi.h
irq.h
irq_remapping.h iommu/amd: KVM: SVM: Allow KVM to control need for GA log interrupts 2025-06-23 09:50:51 -07:00
irq_stack.h
irq_vectors.h
irq_work.h
irqdomain.h
irqflags.h x86/bugs: Rename MDS machinery to something more generic 2025-06-16 18:45:18 +02:00
ist.h
jailhouse_para.h
jump_label.h
kasan.h
kaslr.h
kbdleds.h
kdebug.h
kexec-bzimage64.h
kexec.h x86/sme: Use percpu boolean to control WBINVD during kexec 2025-09-05 10:40:40 -07:00
kfence.h
kgdb.h
kmsan.h
kprobes.h
kvm-x86-ops.h KVM x86 changes for 6.18 2025-09-30 13:36:41 -04:00
kvm-x86-pmu-ops.h
kvm_host.h KVM: x86: Move kvm_intr_is_single_vcpu() to lapic.c 2025-09-30 13:40:02 -04:00
kvm_page_track.h
kvm_para.h x86/kvm: Make kvm_async_pf_task_wake() a local static helper 2025-09-11 08:57:16 -07:00
kvm_types.h KVM: Export KVM-internal symbols for sub-modules only 2025-09-30 13:40:02 -04:00
kvm_vcpu_regs.h
kvmclock.h
linkage.h
local.h
mach_timer.h
mach_traps.h
math_emu.h
mc146818rtc.h
mce.h x86/mce: Define BSP-only init 2025-09-11 12:22:37 +02:00
mem_encrypt.h
memtype.h
microcode.h
misc.h
mman.h
mmconfig.h
mmu.h
mmu_context.h
module.h x86/its: move its_pages array to struct mod_arch_specific 2025-06-11 11:20:51 +02:00
mpspec.h
mpspec_def.h
mshyperv.h x86/hyperv: Clean up hv_do_hypercall() 2025-08-18 14:23:07 +02:00
msi.h
msr-index.h Generic: 2025-10-06 12:37:34 -07:00
msr-trace.h
msr.h Generic: 2025-06-02 12:24:58 -07:00
mtrr.h x86/mtrr: Remove license boilerplate text with bad FSF address 2025-08-22 19:37:11 +02:00
mwait.h x86/idle: Use MONITORX and MWAITX mnemonics in <asm/mwait.h> 2025-08-22 13:52:21 +02:00
nmi.h
nops.h
nospec-branch.h x86/bugs: Simplify SSB cmdline parsing 2025-09-15 18:04:20 +02:00
numa.h
olpc.h
olpc_ofw.h
orc_header.h
orc_lookup.h
orc_types.h
page.h
page_32.h
page_32_types.h
page_64.h x86/mm/64: Make 5-level paging support unconditional 2025-05-17 10:38:16 +02:00
page_64_types.h x86/mm/64: Make 5-level paging support unconditional 2025-05-17 10:38:16 +02:00
page_types.h
paravirt.h x86/paravirt: Restrict PARAVIRT_XXL to 64-bit only 2025-05-17 10:38:29 +02:00
paravirt_api_clock.h
paravirt_types.h x86/paravirt: Restrict PARAVIRT_XXL to 64-bit only 2025-05-17 10:38:29 +02:00
parport.h
pc-conf-reg.h
pci-direct.h
pci-functions.h
pci.h
pci_x86.h
percpu.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
perf_event.h perf/x86/intel: Add ICL_FIXED_0_ADAPTIVE bit into INTEL_FIXED_BITS_MASK 2025-08-21 20:09:27 +02:00
perf_event_p4.h
pgalloc.h
pgtable-2level.h
pgtable-2level_types.h
pgtable-3level.h
pgtable-3level_types.h
pgtable-invert.h
pgtable.h mm: remove devmap related functions and page table bits 2025-07-09 22:42:18 -07:00
pgtable_32.h
pgtable_32_areas.h
pgtable_32_types.h
pgtable_64.h x86/mm/64: Make 5-level paging support unconditional 2025-05-17 10:38:16 +02:00
pgtable_64_types.h x86/mm/64: define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings() 2025-08-27 22:45:44 -07:00
pgtable_areas.h
pgtable_types.h Summary of significant series in this pull request: 2025-07-31 14:57:54 -07:00
pkeys.h
pkru.h
platform_sst_audio.h
pm-trace.h
posix_types.h
posted_intr.h
preempt.h
probe_roms.h
processor-cyrix.h
processor-flags.h
processor.h x86/sme: Use percpu boolean to control WBINVD during kexec 2025-09-05 10:40:40 -07:00
prom.h
proto.h
pti.h
ptrace.h
purgatory.h
pvclock-abi.h
pvclock.h
qrwlock.h
qspinlock.h
qspinlock_paravirt.h
realmode.h x86: Handle KCOV __init vs inline mismatches 2025-07-24 16:55:11 -07:00
reboot.h
reboot_fixups.h
resctrl.h x86/resctrl: Remove the rdt_mon_features global variable 2025-09-15 11:55:50 +02:00
rmwcc.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
rqspinlock.h
runtime-const.h
seccomp.h
sections.h
segment.h x86/vdso: Fix output operand size of RDPID 2025-08-26 19:33:19 +02:00
serial.h
set_memory.h Revert "x86/mm: Remove unused __set_memory_prot()" 2025-05-21 10:48:21 -07:00
setup.h x86/boot: Create a confined code area for startup code 2025-09-03 18:00:01 +02:00
setup_arch.h
setup_data.h
sev-common.h x86/apic/savic: Do not use snp_abort() 2025-09-04 13:12:51 +02:00
sev-internal.h Merge branch 'x86/apic' into x86/sev, to resolve conflict 2025-09-05 09:01:42 +02:00
sev.h - Simplify inline asm flag output operands now that the minimum compiler 2025-10-11 10:51:14 -07:00
sgx.h
shmparam.h
shstk.h Performance events updates for v6.18: 2025-09-30 11:11:21 -07:00
sigcontext.h
sigframe.h
sighandling.h x86/fred/signal: Prevent immediate repeat of single step trap on return from SIGTRAP handler 2025-06-09 08:50:58 -07:00
signal.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
simd.h
smap.h
smp.h x86/lib: Add WBINVD and WBNOINVD helpers to target multiple CPUs 2025-07-10 13:30:17 +02:00
softirq_stack.h
sparsemem.h
spec-ctrl.h
special_insns.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
spinlock.h
spinlock_types.h
stackprotector.h
stacktrace.h
static_call.h
string.h
string_32.h
string_64.h
suspend.h
suspend_32.h
suspend_64.h
svm.h KVM: SVM: Enable Secure TSC for SNP guests 2025-08-21 08:51:39 -07:00
switch_to.h
sync_bitops.h
sync_core.h
syscall.h
syscall_wrapper.h
syscalls.h
tdx.h x86/virt/tdx: Use precalculated TDVPR page physical address 2025-09-11 11:38:28 -07:00
tdx_global_metadata.h
text-patching.h KVM: x86: Implement test_cc() in C 2025-08-18 14:23:04 +02:00
thermal.h
thread_info.h x86: Use generic TIF bits 2025-09-17 08:14:04 +02:00
time.h
timer.h
timex.h
tlb.h
tlbbatch.h
tlbflush.h mm: remove arch_flush_tlb_batched_pending() arch helper 2025-07-24 19:12:32 -07:00
topology.h x86/topology: Implement topology_is_core_online() to address SMT regression 2025-09-22 21:25:36 +02:00
trace_clock.h
trap_pf.h
trapnr.h
traps.h
tsc.h
uaccess.h x86/asm: Remove code depending on __GCC_ASM_FLAG_OUTPUTS__ 2025-09-08 15:38:06 +02:00
uaccess_32.h
uaccess_64.h
umip.h
unaccepted_memory.h
unistd.h
unwind.h
unwind_hints.h
uprobes.h uprobes/x86: Add support to optimize uprobes 2025-08-21 20:09:21 +02:00
user.h
user32.h
user_32.h
user_64.h
vdso.h
vermagic.h
vga.h
vgtod.h
video.h Fix access to video_is_primary_device() when compiled without CONFIG_VIDEO 2025-09-10 09:35:33 -05:00
vm86.h
vmalloc.h
vmware.h
vmx.h KVM: x86: Enable CET virtualization for VMX and advertise to userspace 2025-09-23 09:22:32 -07:00
vmxfeatures.h
vsyscall.h
word-at-a-time.h
x86_init.h
xor.h
xor_32.h
xor_64.h
xor_avx.h