linux/arch/s390/include/asm
Sven Schnelle 4bff8cb545 s390: convert to GENERIC_VDSO
Convert s390 to generic vDSO. There are a few special things on s390:

- vDSO can be called without a stack frame - glibc did this in the past.
  So we need to allocate a stackframe on our own.

- The former assembly code used stcke to get the TOD clock and applied
  time steering to it. We need to do the same in the new code. This is done
  in the architecture specific __arch_get_hw_counter function. The steering
  information is stored in an architecure specific area in the vDSO data.

- CPUCLOCK_VIRT is now handled with a syscall fallback, which might
  be slower/less accurate than the old implementation.

The getcpu() function stays as an assembly function because there is no
generic implementation and the code is just a few lines.

Performance number from my system do 100 mio gettimeofday() calls:

Plain syscall: 8.6s
Generic VDSO:  1.3s
old ASM VDSO:  1s

So it's a bit slower but still much faster than syscalls.

Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-08-26 18:47:21 +02:00
..
fpu
trace
vdso s390: convert to GENERIC_VDSO 2020-08-26 18:47:21 +02:00
airq.h s390/airq: use DMA memory for adapter interrupts 2019-06-15 12:25:05 +02:00
alternative-asm.h
alternative.h s390/alternatives: make use of asm_inline 2019-10-31 17:20:51 +01:00
ap.h s390/zcrypt: Fix wrong dispatching for control domain CPRBs 2019-05-28 14:49:38 +02:00
appldata.h
archrandom.h s390x: Mark archrandom.h functions __must_check 2020-01-25 12:18:51 -05:00
asm-const.h s390/kernel: unify EX_TABLE* implementations 2020-07-20 10:55:45 +02:00
asm-prototypes.h
atomic_ops.h s390/atomic,bitops: mark function(s) __always_inline 2019-10-04 16:37:33 +02:00
atomic.h s390/atomic: circumvent gcc 10 build regression 2020-08-11 18:16:08 +02:00
barrier.h
bitops.h kasan: support instrumented bitops combined with generic bitops 2019-11-07 13:15:39 +11:00
boot_data.h s390/ipl: read IPL report at early boot 2019-04-26 12:34:05 +02:00
bug.h printk: Make linux/printk.h self-contained 2020-07-27 17:46:24 +09:00
bugs.h
cache.h
ccwdev.h s390/cio, s390/qeth: cleanup PNSO CHSC 2020-05-28 12:21:55 +02:00
ccwgroup.h s390/net: remove pm ops from ccwgroup drivers 2020-05-19 12:48:39 -07:00
checksum.h s390/checksum: coding style changes 2020-08-26 18:47:20 +02:00
chpid.h
chsc.h s390/cio, s390/qeth: cleanup PNSO CHSC 2020-05-28 12:21:55 +02:00
cio.h s390/cio: move struct node_descriptor to cio.h 2019-06-19 17:54:27 +02:00
clocksource.h s390: convert to GENERIC_VDSO 2020-08-26 18:47:21 +02:00
clp.h
cmb.h
cmpxchg.h
compat.h compat: provide compat_ptr() on all architectures 2020-01-03 09:32:51 +01:00
cpacf.h s390: mark __cpacf_query() as __always_inline 2019-10-04 16:37:33 +02:00
cpcmd.h
cpu_mcf.h s390/cpum_cf_diag: Add support for s390 counter facility diagnostic trace 2019-02-22 09:19:56 +01:00
cpu_mf-insn.h s390/cpu_mf: add store cpu counter multiple instruction support 2019-02-22 09:19:52 +01:00
cpu_mf.h s390/cpum_sf: Replace function name in debug statements 2019-11-30 10:52:46 +01:00
cpu.h
cpufeature.h
cputime.h
crw.h
css_chars.h
ctl_reg.h s390/early: move control registers setup in C code 2019-11-20 12:58:12 +01:00
current.h
debug.h s390/debug: debug feature version 3 2020-08-11 18:16:43 +02:00
delay.h
diag.h s390/setup: diag 318: refactor struct 2020-06-23 09:16:48 +02:00
dis.h
dma.h
dwarf.h
eadm.h
ebcdic.h s390: fix clang -Wpointer-sign warnigns in boot code 2019-05-03 17:17:58 +02:00
elf.h s390: report new CPU capabilities 2019-04-25 15:34:10 +02:00
exec.h
extable.h s390/kernel: expand exception table logic to allow new handling options 2020-07-20 10:55:50 +02:00
extmem.h
facility.h s390: fix stfle zero padding 2019-06-19 17:54:27 +02:00
fcx.h
ftrace.h s390/ftrace: use HAVE_FUNCTION_GRAPH_RET_ADDR_PTR 2019-05-02 13:54:11 +02:00
futex.h [parisc, s390, sparc64] no need for access_ok() in futex handling 2020-03-27 23:58:52 -04:00
gmap.h KVM: s390/mm: Make pages accessible before destroying the guest 2020-02-27 19:47:11 +01:00
hardirq.h
hugetlb.h mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
hw_irq.h s390/irq: make init_ext_interrupts static 2020-03-11 14:18:44 +01:00
idals.h s390/idal: use struct_size() in kmalloc() 2019-06-04 15:03:18 +02:00
idle.h
io.h s390/pci: ioremap() align with generic code 2020-05-20 10:22:52 +02:00
ipl.h s390: nvme ipl 2020-05-06 15:19:35 +02:00
irq.h s390/pci: gather statistics for floating vs directed irqs 2019-04-29 10:47:01 +02:00
irqflags.h
isc.h
itcw.h
jump_label.h s390/jump_label: use "i" constraint for clang 2020-01-22 13:05:35 +01:00
kasan.h mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
Kbuild KVM: Move x86's version of struct kvm_mmu_memory_cache to common code 2020-07-09 13:29:42 -04:00
kdebug.h
kexec.h s390/kernel: build a relocatable kernel 2019-04-29 10:47:10 +02:00
kprobes.h s390: support KPROBES_ON_FTRACE 2020-01-30 13:07:55 +01:00
kvm_host.h KVM: s390: Enhancement for 5.9 2020-08-03 14:19:13 -04:00
kvm_para.h
linkage.h s390/kernel: expand exception table logic to allow new handling options 2020-07-20 10:55:50 +02:00
livepatch.h livepatch: Remove klp_check_compiler_support() 2019-05-10 17:53:29 -04:00
lowcore.h s390: prevent leaking kernel address in BEAR 2020-03-10 15:16:25 +01:00
mem_detect.h s390/mem_detect: provide single get_mem_detect_end 2019-08-26 12:51:18 +02:00
mem_encrypt.h s390/mm: Remove sev_active() function 2019-08-09 22:52:11 +10:00
mmu_context.h s390 updates for the 5.7 merge window 2020-04-04 09:45:50 -07:00
mmu.h s390 updates for the 5.7 merge window 2020-04-04 09:45:50 -07:00
mmzone.h
module.h
nmi.h s390: remove critical section cleanup from entry.S 2020-05-28 12:21:54 +02:00
nospec-branch.h
nospec-insn.h s390/nospec: rename assembler generated expoline thunks 2019-05-02 13:54:11 +02:00
numa.h s390/mm: remove fake numa support 2020-02-27 16:02:21 +01:00
os_info.h
page-states.h
page.h mm/vma: define a default value for VM_DATA_DEFAULT_FLAGS 2020-04-10 15:36:21 -07:00
pci_clp.h s390/pci: create links between PFs and VFs 2020-05-20 10:22:51 +02:00
pci_debug.h
pci_dma.h s390/pci: remove unused functions 2020-06-29 16:32:09 +02:00
pci_insn.h s390: fix setting of mio addressing control 2019-07-11 20:40:02 +02:00
pci_io.h s390/pci: Fix s390_mmio_read/write with MIO 2020-05-14 23:21:37 +02:00
pci.h s390/pci: create links between PFs and VFs 2020-05-20 10:22:51 +02:00
percpu.h s390: enforce CONFIG_SMP 2019-06-07 10:09:37 +02:00
perf_event.h s390: implement perf_arch_fetch_caller_regs 2019-11-30 10:52:44 +01:00
pgalloc.h s390/mm: cleanup init_new_context() callback 2020-03-28 12:46:12 +01:00
pgtable.h s390/vmem: get rid of memory segment list 2020-07-01 20:00:49 +02:00
pkey.h s390/pkey: pkey cleanup: narrow in-kernel API, fix some variable types 2019-08-21 12:58:53 +02:00
pnet.h
preempt.h sched/rt, s390: Use CONFIG_PREEMPTION 2019-12-08 14:37:35 +01:00
processor.h s390: remove critical section cleanup from entry.S 2020-05-28 12:21:54 +02:00
ptrace.h s390: enable HAVE_FUNCTION_ERROR_INJECTION 2020-07-27 10:33:28 +02:00
purgatory.h
qdio.h s390/cio, s390/qeth: cleanup PNSO CHSC 2020-05-28 12:21:55 +02:00
runtime_instr.h
schid.h
sclp.h s390/ipl: Fix detection of has_secure attribute 2019-07-11 20:40:02 +02:00
scsw.h
seccomp.h
sections.h locking/lockdep: check for freed initmem in static_obj() 2019-04-29 10:47:10 +02:00
serial.h
set_memory.h
setup.h s390: prevent leaking kernel address in BEAR 2020-03-10 15:16:25 +01:00
shmparam.h
signal.h
sigp.h
smp.h These were the main changes in this cycle: 2020-08-03 14:39:35 -07:00
sparsemem.h
spinlock_types.h
spinlock.h s390/alternatives: make use of asm_inline 2019-10-31 17:20:51 +01:00
stacktrace.h s390: fix register clobbering in CALL_ON_STACK 2019-11-30 10:52:47 +01:00
stp.h
string.h s390/kasan: provide uninstrumented __strlen 2019-08-21 12:58:52 +02:00
switch_to.h
syscall_wrapper.h s390: enable HAVE_FUNCTION_ERROR_INJECTION 2020-07-27 10:33:28 +02:00
syscall.h s390: fix syscall_get_error for compat processes 2020-06-17 23:05:05 +02:00
sysinfo.h
termios.h
thread_info.h s390: Break cyclic percpu include 2020-07-10 12:00:02 +02:00
timex.h s390/time: remove unused function 2020-06-29 16:32:14 +02:00
tlb.h mm: remove unneeded includes of <asm/pgalloc.h> 2020-08-07 11:33:26 -07:00
tlbflush.h mm: remove unneeded includes of <asm/pgalloc.h> 2020-08-07 11:33:26 -07:00
topology.h s390/numa: set node distance to LOCAL_DISTANCE 2020-08-11 18:16:35 +02:00
uaccess.h uaccess: remove segment_eq 2020-08-12 10:57:58 -07:00
unistd.h s390: wire up clone3 system call 2019-07-23 10:45:53 +02:00
unwind.h s390/unwind: start unwinding from reliable state 2019-11-30 10:52:48 +01:00
uprobes.h
user.h
uv.h KVM: s390: protvirt: Add UV cpu reset calls 2020-02-27 19:47:12 +01:00
vdso.h s390: convert to GENERIC_VDSO 2020-08-26 18:47:21 +02:00
vga.h
vmalloc.h mm/vmalloc: Add empty <asm/vmalloc.h> headers and use them from <linux/vmalloc.h> 2019-12-10 10:12:55 +01:00
vmlinux.lds.h s390: introduce .boot.preserved.data section 2019-04-10 17:47:09 +02:00
vtime.h
vtimer.h
vx-insn.h
xor.h