mirror of https://github.com/torvalds/linux.git
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 ... |
||
|---|---|---|
| .. | ||
| amd | ||
| cpuid | ||
| e820 | ||
| fpu | ||
| numachip | ||
| shared | ||
| trace | ||
| uv | ||
| vdso | ||
| xen | ||
| GEN-for-each-reg.h | ||
| Kbuild | ||
| acenv.h | ||
| acpi.h | ||
| acrn.h | ||
| agp.h | ||
| alternative.h | ||
| apic.h | ||
| apicdef.h | ||
| apm.h | ||
| arch_hweight.h | ||
| archrandom.h | ||
| asm-offsets.h | ||
| asm-prototypes.h | ||
| asm.h | ||
| atomic.h | ||
| atomic64_32.h | ||
| atomic64_64.h | ||
| audit.h | ||
| barrier.h | ||
| bios_ebda.h | ||
| bitops.h | ||
| boot.h | ||
| bootparam_utils.h | ||
| bug.h | ||
| bugs.h | ||
| cache.h | ||
| cacheflush.h | ||
| cacheinfo.h | ||
| ce4100.h | ||
| cfi.h | ||
| checksum.h | ||
| checksum_32.h | ||
| checksum_64.h | ||
| clocksource.h | ||
| cmdline.h | ||
| cmpxchg.h | ||
| cmpxchg_32.h | ||
| cmpxchg_64.h | ||
| coco.h | ||
| compat.h | ||
| cpu.h | ||
| cpu_device_id.h | ||
| cpu_entry_area.h | ||
| cpufeature.h | ||
| cpufeatures.h | ||
| cpuidle_haltpoll.h | ||
| cpumask.h | ||
| crash.h | ||
| crash_reserve.h | ||
| current.h | ||
| debugreg.h | ||
| 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 | ||
| espfix.h | ||
| exec.h | ||
| extable.h | ||
| extable_fixup_types.h | ||
| fixmap.h | ||
| floppy.h | ||
| 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 | ||
| hyperv_timer.h | ||
| hypervisor.h | ||
| i8259.h | ||
| ia32.h | ||
| ibt.h | ||
| idtentry.h | ||
| imr.h | ||
| inat.h | ||
| inat_types.h | ||
| init.h | ||
| insn-eval.h | ||
| insn.h | ||
| inst.h | ||
| intel-family.h | ||
| intel-mid.h | ||
| intel_ds.h | ||
| intel_pt.h | ||
| intel_punit_ipc.h | ||
| intel_telemetry.h | ||
| invpcid.h | ||
| io.h | ||
| io_apic.h | ||
| io_bitmap.h | ||
| iomap.h | ||
| iommu.h | ||
| iosf_mbi.h | ||
| irq.h | ||
| irq_remapping.h | ||
| irq_stack.h | ||
| irq_vectors.h | ||
| irq_work.h | ||
| irqdomain.h | ||
| irqflags.h | ||
| ist.h | ||
| jailhouse_para.h | ||
| jump_label.h | ||
| kasan.h | ||
| kaslr.h | ||
| kbdleds.h | ||
| kdebug.h | ||
| kexec-bzimage64.h | ||
| kexec.h | ||
| kfence.h | ||
| kgdb.h | ||
| kmsan.h | ||
| kprobes.h | ||
| kvm-x86-ops.h | ||
| kvm-x86-pmu-ops.h | ||
| kvm_host.h | ||
| kvm_page_track.h | ||
| kvm_para.h | ||
| kvm_types.h | ||
| kvm_vcpu_regs.h | ||
| kvmclock.h | ||
| linkage.h | ||
| local.h | ||
| mach_timer.h | ||
| mach_traps.h | ||
| math_emu.h | ||
| mc146818rtc.h | ||
| mce.h | ||
| mem_encrypt.h | ||
| memtype.h | ||
| microcode.h | ||
| misc.h | ||
| mman.h | ||
| mmconfig.h | ||
| mmu.h | ||
| mmu_context.h | ||
| module.h | ||
| mpspec.h | ||
| mpspec_def.h | ||
| mshyperv.h | ||
| msi.h | ||
| msr-index.h | ||
| msr-trace.h | ||
| msr.h | ||
| mtrr.h | ||
| mwait.h | ||
| nmi.h | ||
| nops.h | ||
| nospec-branch.h | ||
| 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 | ||
| page_64_types.h | ||
| page_types.h | ||
| paravirt.h | ||
| paravirt_api_clock.h | ||
| paravirt_types.h | ||
| parport.h | ||
| pc-conf-reg.h | ||
| pci-direct.h | ||
| pci-functions.h | ||
| pci.h | ||
| pci_x86.h | ||
| percpu.h | ||
| perf_event.h | ||
| 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 | ||
| pgtable_32.h | ||
| pgtable_32_areas.h | ||
| pgtable_32_types.h | ||
| pgtable_64.h | ||
| pgtable_64_types.h | ||
| pgtable_areas.h | ||
| pgtable_types.h | ||
| 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 | ||
| prom.h | ||
| proto.h | ||
| pti.h | ||
| ptrace.h | ||
| purgatory.h | ||
| pvclock-abi.h | ||
| pvclock.h | ||
| qrwlock.h | ||
| qspinlock.h | ||
| qspinlock_paravirt.h | ||
| realmode.h | ||
| reboot.h | ||
| reboot_fixups.h | ||
| resctrl.h | ||
| rmwcc.h | ||
| rqspinlock.h | ||
| runtime-const.h | ||
| seccomp.h | ||
| sections.h | ||
| segment.h | ||
| serial.h | ||
| set_memory.h | ||
| setup.h | ||
| setup_arch.h | ||
| setup_data.h | ||
| sev-common.h | ||
| sev-internal.h | ||
| sev.h | ||
| sgx.h | ||
| shmparam.h | ||
| shstk.h | ||
| sigcontext.h | ||
| sigframe.h | ||
| sighandling.h | ||
| signal.h | ||
| simd.h | ||
| smap.h | ||
| smp.h | ||
| softirq_stack.h | ||
| sparsemem.h | ||
| spec-ctrl.h | ||
| special_insns.h | ||
| 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 | ||
| switch_to.h | ||
| sync_bitops.h | ||
| sync_core.h | ||
| syscall.h | ||
| syscall_wrapper.h | ||
| syscalls.h | ||
| tdx.h | ||
| tdx_global_metadata.h | ||
| text-patching.h | ||
| thermal.h | ||
| thread_info.h | ||
| time.h | ||
| timer.h | ||
| timex.h | ||
| tlb.h | ||
| tlbbatch.h | ||
| tlbflush.h | ||
| topology.h | ||
| trace_clock.h | ||
| trap_pf.h | ||
| trapnr.h | ||
| traps.h | ||
| tsc.h | ||
| uaccess.h | ||
| uaccess_32.h | ||
| uaccess_64.h | ||
| umip.h | ||
| unaccepted_memory.h | ||
| unistd.h | ||
| unwind.h | ||
| unwind_hints.h | ||
| uprobes.h | ||
| user.h | ||
| user32.h | ||
| user_32.h | ||
| user_64.h | ||
| vdso.h | ||
| vermagic.h | ||
| vga.h | ||
| vgtod.h | ||
| video.h | ||
| vm86.h | ||
| vmalloc.h | ||
| vmware.h | ||
| vmx.h | ||
| vmxfeatures.h | ||
| vsyscall.h | ||
| word-at-a-time.h | ||
| x86_init.h | ||
| xor.h | ||
| xor_32.h | ||
| xor_64.h | ||
| xor_avx.h | ||