s390: remove compat vdso code
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 18 Nov 2019 12:59:25 +0000 (13:59 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Sun, 1 Dec 2019 11:48:49 +0000 (12:48 +0100)
Remove compat vdso code, since there is hardly any compat user space
left. Still existing compat user space will have to use system calls
instead.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
13 files changed:
arch/s390/Kconfig
arch/s390/Makefile
arch/s390/kernel/Makefile
arch/s390/kernel/vdso.c
arch/s390/kernel/vdso32/.gitignore [deleted file]
arch/s390/kernel/vdso32/Makefile [deleted file]
arch/s390/kernel/vdso32/clock_getres.S [deleted file]
arch/s390/kernel/vdso32/clock_gettime.S [deleted file]
arch/s390/kernel/vdso32/getcpu.S [deleted file]
arch/s390/kernel/vdso32/gettimeofday.S [deleted file]
arch/s390/kernel/vdso32/note.S [deleted file]
arch/s390/kernel/vdso32/vdso32.lds.S [deleted file]
arch/s390/kernel/vdso32/vdso32_wrapper.S [deleted file]

index 367a87c..d4051e8 100644 (file)
@@ -427,9 +427,6 @@ config COMPAT
          (and some other stuff like libraries and such) is needed for
          executing 31 bit applications.  It is safe to say "Y".
 
-config COMPAT_VDSO
-       def_bool COMPAT && !CC_IS_CLANG
-
 config SYSVIPC_COMPAT
        def_bool y if COMPAT && SYSVIPC
 
index 478b645..ba8556b 100644 (file)
@@ -157,7 +157,6 @@ zfcpdump:
 
 vdso_install:
        $(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso64 $@
-       $(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso32 $@
 
 archclean:
        $(Q)$(MAKE) $(clean)=$(boot)
index 7edbbcd..2b1203c 100644 (file)
@@ -81,4 +81,3 @@ obj-$(CONFIG_TRACEPOINTS)     += trace.o
 
 # vdso
 obj-y                          += vdso64/
-obj-$(CONFIG_COMPAT_VDSO)      += vdso32/
index ed1fc08..bcc9bdb 100644 (file)
 #include <asm/vdso.h>
 #include <asm/facility.h>
 
-#ifdef CONFIG_COMPAT_VDSO
-extern char vdso32_start, vdso32_end;
-static void *vdso32_kbase = &vdso32_start;
-static unsigned int vdso32_pages;
-static struct page **vdso32_pagelist;
-#endif
-
 extern char vdso64_start, vdso64_end;
 static void *vdso64_kbase = &vdso64_start;
 static unsigned int vdso64_pages;
@@ -55,12 +48,6 @@ static vm_fault_t vdso_fault(const struct vm_special_mapping *sm,
 
        vdso_pagelist = vdso64_pagelist;
        vdso_pages = vdso64_pages;
-#ifdef CONFIG_COMPAT_VDSO
-       if (vma->vm_mm->context.compat_mm) {
-               vdso_pagelist = vdso32_pagelist;
-               vdso_pages = vdso32_pages;
-       }
-#endif
 
        if (vmf->pgoff >= vdso_pages)
                return VM_FAULT_SIGBUS;
@@ -76,10 +63,6 @@ static int vdso_mremap(const struct vm_special_mapping *sm,
        unsigned long vdso_pages;
 
        vdso_pages = vdso64_pages;
-#ifdef CONFIG_COMPAT_VDSO
-       if (vma->vm_mm->context.compat_mm)
-               vdso_pages = vdso32_pages;
-#endif
 
        if ((vdso_pages << PAGE_SHIFT) != vma->vm_end - vma->vm_start)
                return -EINVAL;
@@ -209,12 +192,10 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
        if (!vdso_enabled)
                return 0;
 
+       if (is_compat_task())
+               return 0;
+
        vdso_pages = vdso64_pages;
-#ifdef CONFIG_COMPAT_VDSO
-       mm->context.compat_mm = is_compat_task();
-       if (mm->context.compat_mm)
-               vdso_pages = vdso32_pages;
-#endif
        /*
         * vDSO has a problem and was disabled, just don't "enable" it for
         * the process
@@ -267,23 +248,6 @@ static int __init vdso_init(void)
        int i;
 
        vdso_init_data(vdso_data);
-#ifdef CONFIG_COMPAT_VDSO
-       /* Calculate the size of the 32 bit vDSO */
-       vdso32_pages = ((&vdso32_end - &vdso32_start
-                        + PAGE_SIZE - 1) >> PAGE_SHIFT) + 1;
-
-       /* Make sure pages are in the correct state */
-       vdso32_pagelist = kcalloc(vdso32_pages + 1, sizeof(struct page *),
-                                 GFP_KERNEL);
-       BUG_ON(vdso32_pagelist == NULL);
-       for (i = 0; i < vdso32_pages - 1; i++) {
-               struct page *pg = virt_to_page(vdso32_kbase + i*PAGE_SIZE);
-               get_page(pg);
-               vdso32_pagelist[i] = pg;
-       }
-       vdso32_pagelist[vdso32_pages - 1] = virt_to_page(vdso_data);
-       vdso32_pagelist[vdso32_pages] = NULL;
-#endif
 
        /* Calculate the size of the 64 bit vDSO */
        vdso64_pages = ((&vdso64_end - &vdso64_start
diff --git a/arch/s390/kernel/vdso32/.gitignore b/arch/s390/kernel/vdso32/.gitignore
deleted file mode 100644 (file)
index e45fba9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-vdso32.lds
diff --git a/arch/s390/kernel/vdso32/Makefile b/arch/s390/kernel/vdso32/Makefile
deleted file mode 100644 (file)
index aee9ffb..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# List of files in the vdso, has to be asm only for now
-
-KCOV_INSTRUMENT := n
-
-obj-vdso32 = gettimeofday.o clock_getres.o clock_gettime.o note.o getcpu.o
-
-# Build rules
-
-targets := $(obj-vdso32) vdso32.so vdso32.so.dbg
-obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32))
-
-KBUILD_AFLAGS += -DBUILD_VDSO
-KBUILD_CFLAGS += -DBUILD_VDSO
-
-KBUILD_AFLAGS_31 := $(filter-out -m64,$(KBUILD_AFLAGS))
-KBUILD_AFLAGS_31 += -m31 -s
-
-KBUILD_CFLAGS_31 := $(filter-out -m64,$(KBUILD_CFLAGS))
-KBUILD_CFLAGS_31 += -m31 -fPIC -shared -fno-common -fno-builtin
-KBUILD_CFLAGS_31 += -nostdlib -Wl,-soname=linux-vdso32.so.1 \
-                   -Wl,--hash-style=both
-
-$(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_31)
-$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_31)
-
-obj-y += vdso32_wrapper.o
-extra-y += vdso32.lds
-CPPFLAGS_vdso32.lds += -P -C -U$(ARCH)
-
-# Disable gcov profiling, ubsan and kasan for VDSO code
-GCOV_PROFILE := n
-UBSAN_SANITIZE := n
-KASAN_SANITIZE := n
-
-# Force dependency (incbin is bad)
-$(obj)/vdso32_wrapper.o : $(obj)/vdso32.so
-
-# link rule for the .so file, .lds has to be first
-$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) FORCE
-       $(call if_changed,vdso32ld)
-
-# strip rule for the .so file
-$(obj)/%.so: OBJCOPYFLAGS := -S
-$(obj)/%.so: $(obj)/%.so.dbg FORCE
-       $(call if_changed,objcopy)
-
-# assembly rules for the .S files
-$(obj-vdso32): %.o: %.S FORCE
-       $(call if_changed_dep,vdso32as)
-
-# actual build commands
-quiet_cmd_vdso32ld = VDSO32L $@
-      cmd_vdso32ld = $(CC) $(c_flags) -Wl,-T $(filter %.lds %.o,$^) -o $@
-quiet_cmd_vdso32as = VDSO32A $@
-      cmd_vdso32as = $(CC) $(a_flags) -c -o $@ $<
-
-# install commands for the unstripped file
-quiet_cmd_vdso_install = INSTALL $@
-      cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@
-
-vdso32.so: $(obj)/vdso32.so.dbg
-       @mkdir -p $(MODLIB)/vdso
-       $(call cmd,vdso_install)
-
-vdso_install: vdso32.so
diff --git a/arch/s390/kernel/vdso32/clock_getres.S b/arch/s390/kernel/vdso32/clock_getres.S
deleted file mode 100644 (file)
index eaf9cf1..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Userland implementation of clock_getres() for 32 bits processes in a
- * s390 kernel for use in the vDSO
- *
- *  Copyright IBM Corp. 2008
- *  Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
- */
-#include <asm/vdso.h>
-#include <asm/asm-offsets.h>
-#include <asm/unistd.h>
-#include <asm/dwarf.h>
-
-       .text
-       .align 4
-       .globl __kernel_clock_getres
-       .type  __kernel_clock_getres,@function
-__kernel_clock_getres:
-       CFI_STARTPROC
-       basr    %r1,0
-       la      %r1,4f-.(%r1)
-       chi     %r2,__CLOCK_REALTIME
-       je      0f
-       chi     %r2,__CLOCK_MONOTONIC
-       je      0f
-       la      %r1,5f-4f(%r1)
-       chi     %r2,__CLOCK_REALTIME_COARSE
-       je      0f
-       chi     %r2,__CLOCK_MONOTONIC_COARSE
-       jne     3f
-0:     ltr     %r3,%r3
-       jz      2f                              /* res == NULL */
-1:     l       %r0,0(%r1)
-       xc      0(4,%r3),0(%r3)                 /* set tp->tv_sec to zero */
-       st      %r0,4(%r3)                      /* store tp->tv_usec */
-2:     lhi     %r2,0
-       br      %r14
-3:     lhi     %r1,__NR_clock_getres           /* fallback to svc */
-       svc     0
-       br      %r14
-       CFI_ENDPROC
-4:     .long   __CLOCK_REALTIME_RES
-5:     .long   __CLOCK_COARSE_RES
-       .size   __kernel_clock_getres,.-__kernel_clock_getres
diff --git a/arch/s390/kernel/vdso32/clock_gettime.S b/arch/s390/kernel/vdso32/clock_gettime.S
deleted file mode 100644 (file)
index ada5c11..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Userland implementation of clock_gettime() for 32 bits processes in a
- * s390 kernel for use in the vDSO
- *
- *  Copyright IBM Corp. 2008
- *  Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
- */
-#include <asm/vdso.h>
-#include <asm/asm-offsets.h>
-#include <asm/unistd.h>
-#include <asm/dwarf.h>
-#include <asm/ptrace.h>
-
-       .text
-       .align 4
-       .globl __kernel_clock_gettime
-       .type  __kernel_clock_gettime,@function
-__kernel_clock_gettime:
-       CFI_STARTPROC
-       ahi     %r15,-16
-       CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
-       CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
-       basr    %r5,0
-0:     al      %r5,21f-0b(%r5)                 /* get &_vdso_data */
-       chi     %r2,__CLOCK_REALTIME_COARSE
-       je      10f
-       chi     %r2,__CLOCK_REALTIME
-       je      11f
-       chi     %r2,__CLOCK_MONOTONIC_COARSE
-       je      9f
-       chi     %r2,__CLOCK_MONOTONIC
-       jne     19f
-
-       /* CLOCK_MONOTONIC */
-1:     l       %r4,__VDSO_UPD_COUNT+4(%r5)     /* load update counter */
-       tml     %r4,0x0001                      /* pending update ? loop */
-       jnz     1b
-       stcke   0(%r15)                         /* Store TOD clock */
-       lm      %r0,%r1,1(%r15)
-       s       %r0,__VDSO_XTIME_STAMP(%r5)     /* TOD - cycle_last */
-       sl      %r1,__VDSO_XTIME_STAMP+4(%r5)
-       brc     3,2f
-       ahi     %r0,-1
-2:     ms      %r0,__VDSO_TK_MULT(%r5)         /*  * tk->mult */
-       lr      %r2,%r0
-       l       %r0,__VDSO_TK_MULT(%r5)
-       ltr     %r1,%r1
-       mr      %r0,%r0
-       jnm     3f
-       a       %r0,__VDSO_TK_MULT(%r5)
-3:     alr     %r0,%r2
-       al      %r0,__VDSO_WTOM_NSEC(%r5)
-       al      %r1,__VDSO_WTOM_NSEC+4(%r5)
-       brc     12,5f
-       ahi     %r0,1
-5:     l       %r2,__VDSO_TK_SHIFT(%r5)        /* Timekeeper shift */
-       srdl    %r0,0(%r2)                      /*  >> tk->shift */
-       l       %r2,__VDSO_WTOM_SEC+4(%r5)
-       cl      %r4,__VDSO_UPD_COUNT+4(%r5)     /* check update counter */
-       jne     1b
-       basr    %r5,0
-6:     ltr     %r0,%r0
-       jnz     7f
-       cl      %r1,20f-6b(%r5)
-       jl      8f
-7:     ahi     %r2,1
-       sl      %r1,20f-6b(%r5)
-       brc     3,6b
-       ahi     %r0,-1
-       j       6b
-8:     st      %r2,0(%r3)                      /* store tp->tv_sec */
-       st      %r1,4(%r3)                      /* store tp->tv_nsec */
-       lhi     %r2,0
-       ahi     %r15,16
-       CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
-       CFI_RESTORE 15
-       br      %r14
-
-       /* CLOCK_MONOTONIC_COARSE */
-       CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
-       CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
-9:     l       %r4,__VDSO_UPD_COUNT+4(%r5)     /* load update counter */
-       tml     %r4,0x0001                      /* pending update ? loop */
-       jnz     9b
-       l       %r2,__VDSO_WTOM_CRS_SEC+4(%r5)
-       l       %r1,__VDSO_WTOM_CRS_NSEC+4(%r5)
-       cl      %r4,__VDSO_UPD_COUNT+4(%r5)     /* check update counter */
-       jne     9b
-       j       8b
-
-       /* CLOCK_REALTIME_COARSE */
-10:    l       %r4,__VDSO_UPD_COUNT+4(%r5)     /* load update counter */
-       tml     %r4,0x0001                      /* pending update ? loop */
-       jnz     10b
-       l       %r2,__VDSO_XTIME_CRS_SEC+4(%r5)
-       l       %r1,__VDSO_XTIME_CRS_NSEC+4(%r5)
-       cl      %r4,__VDSO_UPD_COUNT+4(%r5)     /* check update counter */
-       jne     10b
-       j       17f
-
-       /* CLOCK_REALTIME */
-11:    l       %r4,__VDSO_UPD_COUNT+4(%r5)     /* load update counter */
-       tml     %r4,0x0001                      /* pending update ? loop */
-       jnz     11b
-       stcke   0(%r15)                         /* Store TOD clock */
-       lm      %r0,%r1,__VDSO_TS_END(%r5)      /* TOD steering end time */
-       s       %r0,1(%r15)                     /* no - ts_steering_end */
-       sl      %r1,5(%r15)
-       brc     3,22f
-       ahi     %r0,-1
-22:    ltr     %r0,%r0                         /* past end of steering? */
-       jm      24f
-       srdl    %r0,15                          /* 1 per 2^16 */
-       tm      __VDSO_TS_DIR+3(%r5),0x01       /* steering direction? */
-       jz      23f
-       lcr     %r0,%r0                         /* negative TOD offset */
-       lcr     %r1,%r1
-       je      23f
-       ahi     %r0,-1
-23:    a       %r0,1(%r15)                     /* add TOD timestamp */
-       al      %r1,5(%r15)
-       brc     12,25f
-       ahi     %r0,1
-       j       25f
-24:    lm      %r0,%r1,1(%r15)                 /* load TOD timestamp */
-25:    s       %r0,__VDSO_XTIME_STAMP(%r5)     /* TOD - cycle_last */
-       sl      %r1,__VDSO_XTIME_STAMP+4(%r5)
-       brc     3,12f
-       ahi     %r0,-1
-12:    ms      %r0,__VDSO_TK_MULT(%r5)         /*  * tk->mult */
-       lr      %r2,%r0
-       l       %r0,__VDSO_TK_MULT(%r5)
-       ltr     %r1,%r1
-       mr      %r0,%r0
-       jnm     13f
-       a       %r0,__VDSO_TK_MULT(%r5)
-13:    alr     %r0,%r2
-       al      %r0,__VDSO_XTIME_NSEC(%r5)      /*  + tk->xtime_nsec */
-       al      %r1,__VDSO_XTIME_NSEC+4(%r5)
-       brc     12,14f
-       ahi     %r0,1
-14:    l       %r2,__VDSO_TK_SHIFT(%r5)        /* Timekeeper shift */
-       srdl    %r0,0(%r2)                      /*  >> tk->shift */
-       l       %r2,__VDSO_XTIME_SEC+4(%r5)
-       cl      %r4,__VDSO_UPD_COUNT+4(%r5)     /* check update counter */
-       jne     11b
-       basr    %r5,0
-15:    ltr     %r0,%r0
-       jnz     16f
-       cl      %r1,20f-15b(%r5)
-       jl      17f
-16:    ahi     %r2,1
-       sl      %r1,20f-15b(%r5)
-       brc     3,15b
-       ahi     %r0,-1
-       j       15b
-17:    st      %r2,0(%r3)                      /* store tp->tv_sec */
-       st      %r1,4(%r3)                      /* store tp->tv_nsec */
-       lhi     %r2,0
-       ahi     %r15,16
-       CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
-       CFI_RESTORE 15
-       br      %r14
-
-       /* Fallback to system call */
-       CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD+16
-       CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
-19:    lhi     %r1,__NR_clock_gettime
-       svc     0
-       ahi     %r15,16
-       CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
-       CFI_RESTORE 15
-       br      %r14
-       CFI_ENDPROC
-
-20:    .long   1000000000
-21:    .long   _vdso_data - 0b
-       .size   __kernel_clock_gettime,.-__kernel_clock_gettime
diff --git a/arch/s390/kernel/vdso32/getcpu.S b/arch/s390/kernel/vdso32/getcpu.S
deleted file mode 100644 (file)
index dc79e16..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Userland implementation of getcpu() for 32 bits processes in a
- * s390 kernel for use in the vDSO
- *
- *  Copyright IBM Corp. 2016
- *  Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
- */
-#include <asm/vdso.h>
-#include <asm/asm-offsets.h>
-#include <asm/dwarf.h>
-
-       .text
-       .align 4
-       .globl __kernel_getcpu
-       .type  __kernel_getcpu,@function
-__kernel_getcpu:
-       CFI_STARTPROC
-       sacf    256
-       lm      %r4,%r5,__VDSO_GETCPU_VAL(%r0)
-       sacf    0
-       ltr     %r2,%r2
-       jz      2f
-       st      %r5,0(%r2)
-2:     ltr     %r3,%r3
-       jz      3f
-       st      %r4,0(%r3)
-3:     lhi     %r2,0
-       br      %r14
-       CFI_ENDPROC
-       .size   __kernel_getcpu,.-__kernel_getcpu
diff --git a/arch/s390/kernel/vdso32/gettimeofday.S b/arch/s390/kernel/vdso32/gettimeofday.S
deleted file mode 100644 (file)
index b23063f..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Userland implementation of gettimeofday() for 32 bits processes in a
- * s390 kernel for use in the vDSO
- *
- *  Copyright IBM Corp. 2008
- *  Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
- */
-#include <asm/vdso.h>
-#include <asm/asm-offsets.h>
-#include <asm/unistd.h>
-#include <asm/dwarf.h>
-#include <asm/ptrace.h>
-
-       .text
-       .align 4
-       .globl __kernel_gettimeofday
-       .type  __kernel_gettimeofday,@function
-__kernel_gettimeofday:
-       CFI_STARTPROC
-       ahi     %r15,-16
-       CFI_ADJUST_CFA_OFFSET 16
-       CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
-       basr    %r5,0
-0:     al      %r5,13f-0b(%r5)                 /* get &_vdso_data */
-1:     ltr     %r3,%r3                         /* check if tz is NULL */
-       je      2f
-       mvc     0(8,%r3),__VDSO_TIMEZONE(%r5)
-2:     ltr     %r2,%r2                         /* check if tv is NULL */
-       je      10f
-       l       %r4,__VDSO_UPD_COUNT+4(%r5)     /* load update counter */
-       tml     %r4,0x0001                      /* pending update ? loop */
-       jnz     1b
-       stcke   0(%r15)                         /* Store TOD clock */
-       lm      %r0,%r1,__VDSO_TS_END(%r5)      /* TOD steering end time */
-       s       %r0,1(%r15)
-       sl      %r1,5(%r15)
-       brc     3,14f
-       ahi     %r0,-1
-14:    ltr     %r0,%r0                         /* past end of steering? */
-       jm      16f
-       srdl    %r0,15                          /* 1 per 2^16 */
-       tm      __VDSO_TS_DIR+3(%r5),0x01       /* steering direction? */
-       jz      15f
-       lcr     %r0,%r0                         /* negative TOD offset */
-       lcr     %r1,%r1
-       je      15f
-       ahi     %r0,-1
-15:    a       %r0,1(%r15)                     /* add TOD timestamp */
-       al      %r1,5(%r15)
-       brc     12,17f
-       ahi     %r0,1
-       j       17f
-16:    lm      %r0,%r1,1(%r15)                 /* load TOD timestamp */
-17:    s       %r0,__VDSO_XTIME_STAMP(%r5)     /* TOD - cycle_last */
-       sl      %r1,__VDSO_XTIME_STAMP+4(%r5)
-       brc     3,3f
-       ahi     %r0,-1
-3:     ms      %r0,__VDSO_TK_MULT(%r5)         /*  * tk->mult */
-       st      %r0,0(%r15)
-       l       %r0,__VDSO_TK_MULT(%r5)
-       ltr     %r1,%r1
-       mr      %r0,%r0
-       jnm     4f
-       a       %r0,__VDSO_TK_MULT(%r5)
-4:     al      %r0,0(%r15)
-       al      %r0,__VDSO_XTIME_NSEC(%r5)      /*  + xtime */
-       al      %r1,__VDSO_XTIME_NSEC+4(%r5)
-       brc     12,5f
-       ahi     %r0,1
-5:     mvc     0(4,%r15),__VDSO_XTIME_SEC+4(%r5)
-       cl      %r4,__VDSO_UPD_COUNT+4(%r5)     /* check update counter */
-       jne     1b
-       l       %r4,__VDSO_TK_SHIFT(%r5)        /* Timekeeper shift */
-       srdl    %r0,0(%r4)                      /*  >> tk->shift */
-       l       %r4,0(%r15)                     /* get tv_sec from stack */
-       basr    %r5,0
-6:     ltr     %r0,%r0
-       jnz     7f
-       cl      %r1,11f-6b(%r5)
-       jl      8f
-7:     ahi     %r4,1
-       sl      %r1,11f-6b(%r5)
-       brc     3,6b
-       ahi     %r0,-1
-       j       6b
-8:     st      %r4,0(%r2)                      /* store tv->tv_sec */
-       ltr     %r1,%r1
-       m       %r0,12f-6b(%r5)
-       jnm     9f
-       al      %r0,12f-6b(%r5)
-9:     srl     %r0,6
-       st      %r0,4(%r2)                      /* store tv->tv_usec */
-10:    slr     %r2,%r2
-       ahi     %r15,16
-       CFI_ADJUST_CFA_OFFSET -16
-       CFI_RESTORE 15
-       br      %r14
-       CFI_ENDPROC
-11:    .long   1000000000
-12:    .long   274877907
-13:    .long   _vdso_data - 0b
-       .size   __kernel_gettimeofday,.-__kernel_gettimeofday
diff --git a/arch/s390/kernel/vdso32/note.S b/arch/s390/kernel/vdso32/note.S
deleted file mode 100644 (file)
index db19d06..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
- * Here we can supply some information useful to userland.
- */
-
-#include <linux/uts.h>
-#include <linux/version.h>
-#include <linux/elfnote.h>
-
-ELFNOTE_START(Linux, 0, "a")
-       .long LINUX_VERSION_CODE
-ELFNOTE_END
diff --git a/arch/s390/kernel/vdso32/vdso32.lds.S b/arch/s390/kernel/vdso32/vdso32.lds.S
deleted file mode 100644 (file)
index 721c495..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * This is the infamous ld script for the 32 bits vdso
- * library
- */
-
-#include <asm/page.h>
-#include <asm/vdso.h>
-
-OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390")
-OUTPUT_ARCH(s390:31-bit)
-ENTRY(_start)
-
-SECTIONS
-{
-       . = VDSO32_LBASE + SIZEOF_HEADERS;
-
-       .hash           : { *(.hash) }                  :text
-       .gnu.hash       : { *(.gnu.hash) }
-       .dynsym         : { *(.dynsym) }
-       .dynstr         : { *(.dynstr) }
-       .gnu.version    : { *(.gnu.version) }
-       .gnu.version_d  : { *(.gnu.version_d) }
-       .gnu.version_r  : { *(.gnu.version_r) }
-
-       .note           : { *(.note.*) }                :text   :note
-
-       . = ALIGN(16);
-       .text           : {
-               *(.text .stub .text.* .gnu.linkonce.t.*)
-       } :text
-       PROVIDE(__etext = .);
-       PROVIDE(_etext = .);
-       PROVIDE(etext = .);
-
-       /*
-        * Other stuff is appended to the text segment:
-        */
-       .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
-       .rodata1        : { *(.rodata1) }
-
-       .dynamic        : { *(.dynamic) }               :text   :dynamic
-
-       .eh_frame_hdr   : { *(.eh_frame_hdr) }          :text   :eh_frame_hdr
-       .eh_frame       : { KEEP (*(.eh_frame)) }       :text
-       .gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) }
-
-       .rela.dyn ALIGN(8) : { *(.rela.dyn) }
-       .got ALIGN(8)   : { *(.got .toc) }
-
-       _end = .;
-       PROVIDE(end = .);
-
-       /*
-        * Stabs debugging sections are here too.
-        */
-       .stab          0 : { *(.stab) }
-       .stabstr       0 : { *(.stabstr) }
-       .stab.excl     0 : { *(.stab.excl) }
-       .stab.exclstr  0 : { *(.stab.exclstr) }
-       .stab.index    0 : { *(.stab.index) }
-       .stab.indexstr 0 : { *(.stab.indexstr) }
-       .comment       0 : { *(.comment) }
-
-       /*
-        * DWARF debug sections.
-        * Symbols in the DWARF debugging sections are relative to the
-        * beginning of the section so we begin them at 0.
-        */
-       /* DWARF 1 */
-       .debug          0 : { *(.debug) }
-       .line           0 : { *(.line) }
-       /* GNU DWARF 1 extensions */
-       .debug_srcinfo  0 : { *(.debug_srcinfo) }
-       .debug_sfnames  0 : { *(.debug_sfnames) }
-       /* DWARF 1.1 and DWARF 2 */
-       .debug_aranges  0 : { *(.debug_aranges) }
-       .debug_pubnames 0 : { *(.debug_pubnames) }
-       /* DWARF 2 */
-       .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
-       .debug_abbrev   0 : { *(.debug_abbrev) }
-       .debug_line     0 : { *(.debug_line) }
-       .debug_frame    0 : { *(.debug_frame) }
-       .debug_str      0 : { *(.debug_str) }
-       .debug_loc      0 : { *(.debug_loc) }
-       .debug_macinfo  0 : { *(.debug_macinfo) }
-       /* SGI/MIPS DWARF 2 extensions */
-       .debug_weaknames 0 : { *(.debug_weaknames) }
-       .debug_funcnames 0 : { *(.debug_funcnames) }
-       .debug_typenames 0 : { *(.debug_typenames) }
-       .debug_varnames  0 : { *(.debug_varnames) }
-       /* DWARF 3 */
-       .debug_pubtypes 0 : { *(.debug_pubtypes) }
-       .debug_ranges   0 : { *(.debug_ranges) }
-       .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
-
-       . = ALIGN(PAGE_SIZE);
-       PROVIDE(_vdso_data = .);
-
-       /DISCARD/       : {
-               *(.note.GNU-stack)
-               *(.branch_lt)
-               *(.data .data.* .gnu.linkonce.d.* .sdata*)
-               *(.bss .sbss .dynbss .dynsbss)
-       }
-}
-
-/*
- * Very old versions of ld do not recognize this name token; use the constant.
- */
-#define PT_GNU_EH_FRAME        0x6474e550
-
-/*
- * We must supply the ELF program headers explicitly to get just one
- * PT_LOAD segment, and set the flags explicitly to make segments read-only.
- */
-PHDRS
-{
-       text            PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */
-       dynamic         PT_DYNAMIC FLAGS(4);            /* PF_R */
-       note            PT_NOTE FLAGS(4);               /* PF_R */
-       eh_frame_hdr    PT_GNU_EH_FRAME;
-}
-
-/*
- * This controls what symbols we export from the DSO.
- */
-VERSION
-{
-       VDSO_VERSION_STRING {
-       global:
-               /*
-                * Has to be there for the kernel to find
-                */
-               __kernel_gettimeofday;
-               __kernel_clock_gettime;
-               __kernel_clock_getres;
-               __kernel_getcpu;
-
-       local: *;
-       };
-}
diff --git a/arch/s390/kernel/vdso32/vdso32_wrapper.S b/arch/s390/kernel/vdso32/vdso32_wrapper.S
deleted file mode 100644 (file)
index de2fb93..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#include <linux/init.h>
-#include <linux/linkage.h>
-#include <asm/page.h>
-
-       __PAGE_ALIGNED_DATA
-
-       .globl vdso32_start, vdso32_end
-       .balign PAGE_SIZE
-vdso32_start:
-       .incbin "arch/s390/kernel/vdso32/vdso32.so"
-       .balign PAGE_SIZE
-vdso32_end:
-
-       .previous