linux/arch/x86/include/asm
Linus Torvalds b91e1302ad mm: optimize PageWaiters bit use for unlock_page()
In commit 6290602709 ("mm: add PageWaiters indicating tasks are
waiting for a page bit") Nick Piggin made our page locking no longer
unconditionally touch the hashed page waitqueue, which not only helps
performance in general, but is particularly helpful on NUMA machines
where the hashed wait queues can bounce around a lot.

However, the "clear lock bit atomically and then test the waiters bit"
sequence turns out to be much more expensive than it needs to be,
because you get a nasty stall when trying to access the same word that
just got updated atomically.

On architectures where locking is done with LL/SC, this would be trivial
to fix with a new primitive that clears one bit and tests another
atomically, but that ends up not working on x86, where the only atomic
operations that return the result end up being cmpxchg and xadd.  The
atomic bit operations return the old value of the same bit we changed,
not the value of an unrelated bit.

On x86, we could put the lock bit in the high bit of the byte, and use
"xadd" with that bit (where the overflow ends up not touching other
bits), and look at the other bits of the result.  However, an even
simpler model is to just use a regular atomic "and" to clear the lock
bit, and then the sign bit in eflags will indicate the resulting state
of the unrelated bit #7.

So by moving the PageWaiters bit up to bit #7, we can atomically clear
the lock bit and test the waiters bit on x86 too.  And architectures
with LL/SC (which is all the usual RISC suspects), the particular bit
doesn't matter, so they are fine with this approach too.

This avoids the extra access to the same atomic word, and thus avoids
the costly stall at page unlock time.

The only downside is that the interface ends up being a bit odd and
specialized: clear a bit in a byte, and test the sign bit.  Nick doesn't
love the resulting name of the new primitive, but I'd rather make the
name be descriptive and very clear about the limitation imposed by
trying to work across all relevant architectures than make it be some
generic thing that doesn't make the odd semantics explicit.

So this introduces the new architecture primitive

    clear_bit_unlock_is_negative_byte();

and adds the trivial implementation for x86.  We have a generic
non-optimized fallback (that just does a "clear_bit()"+"test_bit(7)"
combination) which can be overridden by any architecture that can do
better.  According to Nick, Power has the same hickup x86 has, for
example, but some other architectures may not even care.

All these optimizations mean that my page locking stress-test (which is
just executing a lot of small short-lived shell scripts: "make test" in
the git source tree) no longer makes our page locking look horribly bad.
Before all these optimizations, just the unlock_page() costs were just
over 3% of all CPU overhead on "make test".  After this, it's down to
0.66%, so just a quarter of the cost it used to be.

(The difference on NUMA is bigger, but there this micro-optimization is
likely less noticeable, since the big issue on NUMA was not the accesses
to 'struct page', but the waitqueue accesses that were already removed
by Nick's earlier commit).

Acked-by: Nick Piggin <npiggin@gmail.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Bob Peterson <rpeterso@redhat.com>
Cc: Steven Whitehouse <swhiteho@redhat.com>
Cc: Andrew Lutomirski <luto@kernel.org>
Cc: Andreas Gruenbacher <agruenba@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Mel Gorman <mgorman@techsingularity.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-12-29 11:03:15 -08:00
..
crypto crypto: glue_helper - Add skcipher xts helpers 2016-11-28 21:23:20 +08:00
fpu x86/fpu: Remove irq_ts_save() and irq_ts_restore() 2016-11-01 07:47:54 +01:00
numachip x86/numachip: Introduce Numachip2 timer mechanisms 2015-09-22 22:25:33 +02:00
trace This release has a few updates: 2016-12-15 13:49:34 -08:00
uv x86/platform/uv/BAU: Add UV4-specific functions 2016-09-22 11:16:15 +02:00
xen Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
a.out-core.h
acenv.h
acpi.h x86/amd: Simplify AMD E400 aware idle routine 2016-12-09 21:23:21 +01:00
agp.h
alternative-asm.h x86/alternatives: Document macros 2015-05-06 11:25:31 +02:00
alternative.h x86/alternatives: Add stack frame dependency to alternative_call_2() 2016-09-24 09:30:03 +02:00
amd_nb.h x86/amd_nb: Add SMN and Indirect Data Fabric access for AMD Fam17h 2016-11-16 20:46:38 +01:00
apb_timer.h
apic_flat_64.h
apic.h Merge branch 'x86-idle-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 14:55:04 -08:00
apicdef.h
apm.h x86, asm: use bool for bitops and other assembly outputs 2016-06-08 12:41:20 -07:00
arch_hweight.h x86/hweight: Get rid of the special calling convention 2016-06-08 15:01:02 +02:00
archrandom.h x86, asm: Use CC_SET()/CC_OUT() and static_cpu_has() in archrandom.h 2016-06-08 12:41:20 -07:00
asm-offsets.h
asm-prototypes.h Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
asm.h x86, asm: define CC_SET() and CC_OUT() macros 2016-06-08 12:41:20 -07:00
atomic64_32.h locking/atomic, arch/x86: Implement atomic{,64}_fetch_{add,sub,and,or,xor}() 2016-06-16 10:48:31 +02:00
atomic64_64.h Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 15:34:18 -07:00
atomic.h Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 15:34:18 -07:00
barrier.h locking/x86: Tweak the comment about use of wmb() for IO 2016-01-29 09:40:10 +01:00
bios_ebda.h x86/boot: Reorganize and clean up the BIOS area reservation code 2016-07-21 10:11:57 +02:00
bitops.h mm: optimize PageWaiters bit use for unlock_page() 2016-12-29 11:03:15 -08:00
boot.h x86/KASLR: Build identity mappings on demand 2016-05-07 07:38:39 +02:00
bootparam_utils.h
bug.h
bugs.h x86/mm/mpx: Work around MPX erratum SKD046 2016-05-20 09:07:40 +02:00
cache.h
cacheflush.h remove stray include of asm/uaccess.h from cacheflush.h 2016-09-27 21:15:22 -04:00
calgary.h x86/platform/calgary: Constify cal_chipset_ops structures 2015-11-29 08:50:58 +01:00
ce4100.h
checksum_32.h x86/uaccess: Move thread_info::addr_limit to thread_struct 2016-07-15 10:26:30 +02:00
checksum_64.h Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
checksum.h
clocksource.h x86/vdso: Remove direct HPET access through the vDSO 2016-04-13 10:28:34 +02:00
cmdline.h
cmpxchg_32.h x86/cpufeature: Remove unused and seldomly used cpu_has_xx macros 2015-12-19 11:49:55 +01:00
cmpxchg_64.h x86/cpufeature: Remove unused and seldomly used cpu_has_xx macros 2015-12-19 11:49:55 +01:00
cmpxchg.h x86/cmpxchg, locking/atomics: Remove superfluous definitions 2016-09-30 10:56:01 +02:00
compat.h x86/coredump: Always use user_regs_struct for compat_elf_gregset_t 2016-11-24 06:01:05 +01:00
cpu_device_id.h
cpu.h xen: features and fixes for 4.8-rc0 2016-07-27 11:35:37 -07:00
cpufeature.h x86/cpufeature: Provide helper to set bugs bits 2016-12-09 21:23:20 +01:00
cpufeatures.h Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-22 09:25:45 -08:00
cpumask.h
crash.h
current.h
debugreg.h
delay.h x86/asm/delay: Introduce an MWAITX-based delay with a configurable timer 2015-08-22 14:52:16 +02:00
desc_defs.h x86/signal/64: Fix SS if needed when delivering a 64-bit signal 2016-02-17 08:32:11 +01:00
desc.h x86: Apply more __ro_after_init and const 2016-08-10 14:55:05 +02:00
device.h x86/PCI: Allow DMA ops specific to a PCI domain 2016-01-15 13:54:55 -06:00
disabled-features.h x86/cpufeature: Make sure DISABLED/REQUIRED macros are updated 2016-06-30 09:11:32 +02:00
div64.h
dma-mapping.h dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
dma.h x86/mm: Fix zone ranges boot printout 2014-12-11 11:35:02 +01:00
dmi.h x86/dmi: Switch dmi_remap() from ioremap() [uncached] to ioremap_cache() 2016-02-09 14:36:43 +01:00
dwarf2.h x86/asm: Remove the xyz_cfi macros from dwarf2.h 2015-10-14 16:56:28 +02:00
e820.h x86: Make E820_X_MAX unconditionally larger than E820MAX 2016-12-09 10:59:04 +01:00
edac.h EDAC: Cleanup atomic_scrub mess 2015-05-28 15:31:53 +02:00
efi.h efi: Allow bitness-agnostic protocol calls 2016-11-13 08:23:16 +01:00
elf.h tree-wide: replace config_enabled() with IS_ENABLED() 2016-08-04 08:50:07 -04:00
emergency-restart.h
entry_arch.h Merge branch 'x86/ras' into x86/core, to fix conflicts 2015-06-07 15:35:27 +02:00
espfix.h x86/espfix: Add 'cpu' parameter to init_espfix_ap() 2015-07-06 15:00:33 +02:00
exec.h
export.h x86: move exports to actual definitions 2016-08-07 23:47:15 -04:00
extable.h x86: separate extable.h, switch sections.h to it 2016-09-27 21:15:23 -04:00
fb.h
fixmap.h x86/mm: Make kmap_prot into a #define 2016-01-20 11:39:14 +01:00
floppy.h x86/floppy: Use designated initializers 2016-12-18 09:25:38 +01:00
frame.h x86/asm: Add C versions of frame pointer macros 2016-01-19 12:59:07 +01:00
ftrace.h ftrace/x86: Implement HAVE_FUNCTION_GRAPH_RET_ADDR_PTR 2016-08-24 12:15:15 +02:00
futex.h
gart.h
genapic.h
geode.h
hardirq.h x86/irq: Do not substract irq_tlb_count from irq_call_count 2016-08-11 11:14:59 +02:00
highmem.h kmap_atomic_to_page() has no users, remove it 2015-11-09 15:11:24 -08:00
hpet.h timers/x86/hpet: Type adjustments 2015-10-21 11:17:32 +02:00
hugetlb.h Merge branch 'x86/urgent' into x86/asm, to fix semantic conflict 2016-04-22 10:13:53 +02:00
hw_breakpoint.h
hw_irq.h x86/irq: Cure live lock in fixup_irqs() 2016-03-18 14:51:06 +01:00
hypertransport.h
hypervisor.h virt, sched: Add generic vCPU pinning support 2016-09-05 13:52:38 +02:00
i8259.h x86/irq: Probe for PIC presence before allocating descs for legacy IRQs 2015-11-07 10:37:37 +01:00
ia32_unistd.h
ia32.h x86/headers: Remove <asm/sigcontext.h> references on the kernel side 2015-09-08 10:06:05 +02:00
imr.h x86/platform/intel/quark: Drop IMR lock bit support 2016-02-23 07:37:23 +01:00
inat_types.h
inat.h x86/insn: Add AVX-512 support to the instruction decoder 2016-07-21 09:37:11 -03:00
init.h x86/power/64: Always create temporary identity mapping correctly 2016-08-08 22:04:30 +02:00
insn.h x86/insn: Add AVX-512 support to the instruction decoder 2016-07-21 09:37:11 -03:00
inst.h
intel_mid_vrtc.h
intel_pmc_ipc.h intel_pmc_ipc: Update kerneldoc formatting 2015-07-09 11:23:15 -07:00
intel_pt.h perf/x86/intel/pt: Add interface to stop Intel PT logging 2015-11-23 09:58:26 +01:00
intel_punit_ipc.h platform:x86: add Intel P-Unit mailbox IPC driver 2016-01-19 15:49:36 -08:00
intel_rdt_common.h x86/cqm: Share PQR_ASSOC related data between CQM and CAT 2016-10-26 23:12:39 +02:00
intel_rdt.h x86/intel_rdt: Call intel_rdt_sched_in() with preemption disabled 2016-12-02 01:13:02 +01:00
intel_scu_ipc.h x86/platform/intel-mid: Implement power off sequence 2016-09-08 08:03:58 +02:00
intel_telemetry.h intel_telemetry: Constify telemetry_core_ops structures 2016-05-05 13:58:55 -07:00
intel-family.h x86/cpu/intel: Add Knights Mill to Intel family 2016-10-17 10:45:08 +02:00
intel-mid.h x86/platform/intel-mid: Retrofit pci_platform_pm_ops ->get_state hook 2016-11-07 13:06:59 +01:00
io_apic.h x86: Cleanup irq_domain ops 2015-04-24 15:36:55 +02:00
io.h x86/io: add interface to reserve io memtype for a resource range. (v1.1) 2016-10-26 15:45:38 +10:00
iomap.h
iommu_table.h x86/iommu: Fix header comments regarding standard and _FINISH macros 2015-04-09 10:56:31 +02:00
iommu.h
iosf_mbi.h ACPI / LPSS: override power state for LPSS DMA device 2016-01-07 14:11:32 +01:00
ipi.h x86/apic: Deinline __default_send_IPI_*, save ~200 bytes 2016-03-08 12:26:41 +01:00
irq_regs.h
irq_remapping.h irq_remapping: move structs outside #ifdef 2015-10-01 15:06:42 +02:00
irq_vectors.h x86/vm86: Move the vm86 IRQ definitions to vm86.h 2015-07-31 13:31:10 +02:00
irq_work.h x86/cpufeature: Replace cpu_has_apic with boot_cpu_has() usage 2016-04-13 11:37:41 +02:00
irq.h nmi_backtrace: add more trigger_*_cpu_backtrace() methods 2016-10-07 18:46:30 -07:00
irqdomain.h x86/irq: Move irqdomain specific code into asm/irqdomain.h 2015-04-24 15:36:55 +02:00
irqflags.h nmi_backtrace: generate one-line reports for idle cpus 2016-10-07 18:46:30 -07:00
ist.h
jump_label.h x86/asm: Add asm macros for static keys/jump labels 2015-11-24 09:56:44 +01:00
kasan.h x86/kasan: Define KASAN_SHADOW_OFFSET per architecture 2015-08-22 14:54:55 +02:00
kaslr.h x86/mm/64: Enable KASLR for vmemmap memory region 2016-08-10 16:10:06 +02:00
kbdleds.h
Kbuild x86/build: Remove three unneeded genhdr-y entries 2016-11-28 07:49:17 +01:00
kdebug.h x86/dumpstack: Remove kernel text addresses from stack dump 2016-10-25 18:40:37 +02:00
kexec-bzimage64.h
kexec.h x86/panic: replace smp_send_stop() with kdump friendly version in panic path 2016-10-11 15:06:32 -07:00
kgdb.h x86/asm: Stop depending on ptrace.h in alternative.h 2016-04-29 11:56:40 +02:00
kmap_types.h
kmemcheck.h
kprobes.h x86: fix up a few misc stack pointer vs thread_info confusions 2016-06-24 16:55:53 -07:00
kvm_emulate.h KVM: x86: add read_phys to x86_emulate_ops 2015-11-04 16:24:31 +01:00
kvm_guest.h
kvm_host.h clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
kvm_page_track.h kvm/page_track: call notifiers with kvm_page_track_notifier_node 2016-11-04 12:13:20 +01:00
kvm_para.h x86/mm: Always enable CONFIG_DEBUG_RODATA and remove the Kconfig option 2016-02-22 08:51:38 +01:00
lguest_hcall.h x86/fpu, lguest: Remove CR0.TS support 2016-11-01 07:47:54 +01:00
lguest.h lguest: Map switcher text R/O 2016-01-12 12:17:28 +01:00
linkage.h x86/entry/32: Remove asmlinkage_protect() 2016-05-05 08:37:31 +02:00
livepatch.h x86: Audit and remove any remaining unnecessary uses of module.h 2016-07-14 15:07:00 +02:00
local64.h
local.h x86, asm: change the GEN_*_RMWcc() macros to not quote the condition 2016-06-08 12:41:20 -07:00
mach_timer.h
mach_traps.h
math_emu.h x86/vm86: Clean up vm86.h includes 2015-07-31 13:31:10 +02:00
mc146818rtc.h rtc: cmos: move mc146818rtc code out of asm-generic/rtc.h 2016-06-04 00:20:00 +02:00
mce.h Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 19:25:04 -08:00
microcode_amd.h x86/microcode/amd: Move private inlines to .c and mark local functions static 2016-10-25 12:28:59 +02:00
microcode_intel.h x86/microcode/intel: Remove intel_lib.c 2016-10-25 12:28:59 +02:00
microcode.h x86/microcode: Rework microcode loading 2016-10-25 12:28:59 +02:00
misc.h
mmconfig.h
mmu_context.h x86/ldt: Make all size computations unsigned 2016-12-10 00:24:39 +01:00
mmu.h x86/mpx: Move bd_addr to mm_context_t 2016-12-17 12:29:56 +01:00
mmx.h
mmzone_32.h
mmzone_64.h
mmzone.h
module.h
mpspec_def.h
mpspec.h x86/acpi: Introduce persistent storage for cpuid <-> apicid mapping 2016-09-21 21:18:38 +02:00
mpx.h x86/mpx: Move bd_addr to mm_context_t 2016-12-17 12:29:56 +01:00
mshyperv.h mshyperv: fix recognition of Hyper-V guest crash MSR's 2015-08-04 22:30:44 -07:00
msi.h x86/irq: Export functions to allow MSI domains in modules 2015-12-20 12:40:49 +01:00
msidef.h
msr-index.h x86/mce: Include the PPIN in MCE records when available 2016-11-23 16:51:52 +01:00
msr-trace.h x86, tracing, perf: Add trace point for MSR accesses 2015-12-06 12:56:10 +01:00
msr.h x86/msr: Cleanup/streamline MSR helpers 2016-11-16 10:23:02 +01:00
mtrr.h x86/mtrr: Fix Xorg crashes in Qemu sessions 2016-03-29 12:23:26 +02:00
mwait.h x86/cpu: Add workaround for MONITOR instruction erratum on Goldmont based CPUs 2016-07-20 09:48:40 +02:00
nmi.h
nops.h
numa_32.h
numa.h
olpc_ofw.h
olpc.h
page_32_types.h x86/asm, x86/microcode: Add __PAGE_OFFSET_BASE define on 32-bit 2016-07-27 14:59:59 +02:00
page_32.h
page_64_types.h x86/mm: Enable KASLR for physical mapping memory regions 2016-07-08 17:35:15 +02:00
page_64.h
page_types.h x86/mm: Align macro defines 2015-12-19 11:53:40 +01:00
page.h x86/boot: Split out kernel_ident_mapping_init() 2016-05-07 07:38:39 +02:00
paravirt_types.h Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 14:27:49 -08:00
paravirt.h Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 14:27:49 -08:00
parport.h
pat.h x86/xen, pat: Remove PAT table init code from Xen 2016-03-29 12:23:27 +02:00
pci_64.h
pci_x86.h Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()" 2016-02-27 08:52:20 -06:00
pci-direct.h
pci-functions.h
pci.h x86/PCI: VMD: Request userspace control of PCIe hotplug indicators 2016-09-23 08:41:08 -05:00
percpu.h x86: Remove x86_test_and_clear_bit_percpu() 2016-11-18 12:07:57 +01:00
perf_event_p4.h
perf_event.h perf/x86/intel/pt: Don't die on VMXON 2016-04-28 10:32:42 +02:00
pgalloc.h arch: x86: charge page tables to kmemcg 2016-07-26 16:19:19 -07:00
pgtable_32_types.h
pgtable_32.h
pgtable_64_types.h x86/mm/64: Enable KASLR for vmemmap memory region 2016-08-10 16:10:06 +02:00
pgtable_64.h x86/mm: Drop unused argument 'removed' from sync_global_pgds() 2016-12-15 12:46:07 +01:00
pgtable_types.h mm: move phys_mem_access_prot_allowed() declaration to pgtable.h 2016-10-07 18:46:29 -07:00
pgtable-2level_types.h x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00
pgtable-2level.h x86: drop _PAGE_FILE and pte_file()-related helpers 2015-02-10 14:30:33 -08:00
pgtable-3level_types.h x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00
pgtable-3level.h x86: drop _PAGE_FILE and pte_file()-related helpers 2015-02-10 14:30:33 -08:00
pgtable.h Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 17:32:28 -07:00
pkeys.h x86/pkeys: Default to a restrictive init PKRU 2016-09-09 13:02:28 +02:00
platform_sst_audio.h ASoc: Intel: Atom: add deep buffer definitions for atom platforms 2015-12-19 11:49:56 +00:00
pm-trace.h PM / sleep: add pm-trace support for suspending phase 2015-03-18 15:54:27 +01:00
pmc_atom.h x86/platform/intel/pmc_atom: Add Cherrytrail PMC interface 2015-07-06 18:39:38 +02:00
pmc_core.h platform/x86: Add PMC Driver for Intel Core SoC 2016-05-27 11:47:56 -07:00
pmem.h x86/mce: Improve memcpy_mcsafe() 2016-09-05 11:47:31 +02:00
posix_types.h
preempt.h sched/x86: Do not clear PREEMPT_NEED_RESCHED on preempt count reset 2016-11-16 10:29:04 +01:00
probe_roms.h
processor-cyrix.h
processor-flags.h
processor.h x86/asm: Rewrite sync_core() to use IRET-to-self 2016-12-19 11:54:21 +01:00
prom.h
proto.h x86/entry: Vastly simplify SYSENTER TF (single-step) handling 2016-03-10 09:48:13 +01:00
ptrace.h x86/entry: Get rid of two-phase syscall entry work 2016-06-14 10:54:39 -07:00
pvclock-abi.h Revert "KVM: x86: zero kvmclock_offset when vcpu0 initializes kvmclock system MSR" 2015-09-28 13:06:37 +02:00
pvclock.h clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
qrwlock.h locking/qrwlock: Implement queue_write_unlock() using smp_store_release() 2015-08-12 11:59:05 +02:00
qspinlock_paravirt.h x86/locking: Create stack frame in PV unlock 2016-02-24 08:35:44 +01:00
qspinlock.h x86/paravirt: Optimize native pv_lock_ops.vcpu_is_preempted() 2016-11-22 12:48:11 +01:00
realmode.h x86/asm/head: Rename 'stack_start' -> 'initial_stack' 2016-08-18 18:41:29 +02:00
reboot_fixups.h
reboot.h x86/nmi: Save regs in crash dump on external NMI 2015-12-19 11:07:01 +01:00
required-features.h x86/cpufeature: Make sure DISABLED/REQUIRED macros are updated 2016-06-30 09:11:32 +02:00
rio.h
rmwcc.h x86, asm: change GEN_*_RMWcc() to use CC_SET()/CC_OUT() 2016-06-08 12:41:20 -07:00
rwsem.h locking/rwsem/x86: Add stack frame dependency for ____down_write() 2016-10-18 12:21:16 +02:00
seccomp.h x86: switch to using asm-generic for seccomp.h 2015-04-17 09:04:10 -04:00
sections.h x86: separate extable.h, switch sections.h to it 2016-09-27 21:15:23 -04:00
segment.h x86/arch_prctl/64: Remove FSBASE/GSBASE < 4G optimization 2016-04-29 11:56:41 +02:00
serial.h serial: 8250: remove Kconfig indirection 2015-05-06 22:27:00 +02:00
setup_arch.h
setup.h x86/asm: Stop depending on ptrace.h in alternative.h 2016-04-29 11:56:40 +02:00
shmparam.h
sigcontext.h x86/headers: Remove <asm/sigcontext.h> references on the kernel side 2015-09-08 10:06:05 +02:00
sigframe.h x86/headers: Remove <asm/sigcontext.h> references on the kernel side 2015-09-08 10:06:05 +02:00
sighandling.h x86/signal/64: Re-add support for SS in the 64-bit signal context 2016-02-17 08:32:11 +01:00
signal.h x86/signal: Add SA_{X32,IA32}_ABI sa_flags 2016-09-14 21:28:11 +02:00
simd.h x86/fpu: Rename i387.h to fpu/api.h 2015-05-19 15:47:30 +02:00
smap.h x86/cpufeature: Carve out X86_FEATURE_* 2016-01-30 11:22:17 +01:00
smp.h x86/panic: replace smp_send_stop() with kdump friendly version in panic path 2016-10-11 15:06:32 -07:00
sparsemem.h
special_insns.h x86/fpu: Remove clts() 2016-11-01 07:47:55 +01:00
spinlock_types.h x86, locking/spinlocks: Remove ticket (spin)lock implementation 2016-09-30 10:56:00 +02:00
spinlock.h x86/paravirt: Optimize native pv_lock_ops.vcpu_is_preempted() 2016-11-22 12:48:11 +01:00
sta2x11.h
stackprotector.h x86/asm/tsc: Rename native_read_tsc() to rdtsc() 2015-07-06 15:23:28 +02:00
stacktrace.h x86/dumpstack: Make stack name tags more comprehensible 2016-11-21 13:00:42 +01:00
string_32.h
string_64.h x86/mce: Improve memcpy_mcsafe() 2016-09-05 11:47:31 +02:00
string.h
suspend_32.h x86/pm: Introduce quirk framework to save/restore extra MSR registers around suspend/resume 2015-11-26 10:04:53 +01:00
suspend_64.h x86/pm: Introduce quirk framework to save/restore extra MSR registers around suspend/resume 2015-11-26 10:04:53 +01:00
suspend.h
svm.h x86/kvm/svm: Simplify cpu_has_svm() 2016-06-16 00:04:31 +02:00
swiotlb.h dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
switch_to.h sched/x86: Pass kernel thread parameters in 'struct fork_frame' 2016-08-24 12:31:50 +02:00
sync_bitops.h x86, bitops: remove use of "sbb" to return CF 2016-06-08 12:41:20 -07:00
sys_ia32.h
syscall.h x86/asm: Move the thread_info::status field to thread_struct 2016-09-15 08:25:12 +02:00
syscalls.h x86/vm86: Clean up vm86.h includes 2015-07-31 13:31:10 +02:00
sysfb.h
tce.h
text-patching.h x86/asm: Stop depending on ptrace.h in alternative.h 2016-04-29 11:56:40 +02:00
thread_info.h sched/core, x86: Make struct thread_info arch specific again 2016-10-20 13:27:47 +02:00
time.h
timer.h
timex.h
tlb.h
tlbflush.h x86/asm: Get rid of __read_cr4_safe() 2016-09-30 12:40:12 +02:00
topology.h sched/x86: Change CONFIG_SCHED_ITMT to CONFIG_SCHED_MC_PRIO 2016-11-30 08:27:08 +01:00
trace_clock.h
traps.h x86/mm: Improve stack-overflow #PF handling 2016-09-08 08:47:20 +02:00
tsc.h clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
uaccess_32.h x86/uaccess: Enable hardened usercopy 2016-07-26 14:41:48 -07:00
uaccess_64.h x86/uaccess: Enable hardened usercopy 2016-07-26 14:41:48 -07:00
uaccess.h x86/uaccess, sched/preempt: Verify access_ok() context 2016-12-06 10:32:40 +01:00
unaligned.h
unistd.h x86/syscalls: Add compat_sys_preadv64v2/compat_sys_pwritev64v2 2016-07-15 10:30:26 +02:00
unwind.h x86/unwind: Dump stack data on warnings 2016-12-19 11:47:05 +01:00
uprobes.h
user32.h
user_32.h
user_64.h
user.h x86/fpu: Rename xsave.header::xstate_bv to 'xfeatures' 2015-05-19 15:47:35 +02:00
vdso.h x86/arch_prctl/vdso: Add ARCH_MAP_VDSO_* 2016-09-14 21:28:09 +02:00
vga.h
vgtod.h clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
virtext.h x86/kvm/svm: Simplify cpu_has_svm() 2016-06-16 00:04:31 +02:00
vm86.h x86/vm86: Rename vm86->v86flags and v86mask 2015-07-31 13:31:11 +02:00
vmx.h KVM: nVMX: support restore of VMX capability MSRs 2016-12-08 15:31:07 +01:00
vsyscall.h
vvar.h
word-at-a-time.h
x2apic.h
x86_init.h x86/init: Fix a couple of comment typos 2016-12-19 11:34:16 +01:00
xor_32.h x86/cpufeature: Replace cpu_has_xmm with boot_cpu_has() usage 2016-04-13 11:37:40 +02:00
xor_64.h
xor_avx.h x86/cpufeature: Replace cpu_has_avx with boot_cpu_has() usage 2016-04-13 11:37:40 +02:00
xor.h x86/fpu: Rename i387.h to fpu/api.h 2015-05-19 15:47:30 +02:00