[PATCH v2 0/6] Clean up and unify the vDSO

From: Andy Lutomirski
Date: Thu Apr 24 2014 - 18:09:23 EST


This rewrites a bunch of the vdso code. After these patches, the vvar
and hpet pages are mapped directly after the vdso text on all five vdso
variants. The fixmaps are gone on 64-bit systems.

It would be possible to build the x32 vdso the normal way on top of
these patches.

I haven't touched the pvclock code. I'd want to understand why it
exists, why it isn't using rdtsc, and why it has two rdtsc_barrier calls
before rearranging it. In a discussion with Marcello Tosatti, I think
we concluded that the kvmclock code could be significantly simplified
and sped up without breaking anything, but I want to save that for
later.

This should apply to -linus or to tip/x86/vdso. It's also here:

https://git.kernel.org/cgit/linux/kernel/git/luto/linux.git/log/?h=vdso/cleanups

and it has survived the build bot for a day.

Changes from v1:
- Rebased
- I think Gold is working (this is a side effect of the rebase)

Andy Lutomirski (6):
x86: Clean up 32-bit vs 64-bit vdso params
x86: Move syscall and sysenter setup into kernel/cpu/common.c
x86: Reimplement vdso.so preparation in build-time C
x86: Move the 32-bit vdso special pages after the text
x86: Move the vvar and hpet mappings next to the 64-bit vDSO
x86: Remove vestiges of VDSO_PRELINK and some outdated comments

arch/x86/ia32/ia32_signal.c | 8 +-
arch/x86/include/asm/elf.h | 35 +++---
arch/x86/include/asm/fixmap.h | 10 +-
arch/x86/include/asm/mmu.h | 2 +-
arch/x86/include/asm/proto.h | 2 -
arch/x86/include/asm/vdso.h | 74 +++++-------
arch/x86/include/asm/vdso32.h | 11 --
arch/x86/include/asm/vvar.h | 20 +---
arch/x86/include/uapi/asm/vsyscall.h | 7 +-
arch/x86/kernel/cpu/common.c | 33 ++++++
arch/x86/kernel/hpet.c | 3 -
arch/x86/kernel/signal.c | 6 +-
arch/x86/kernel/vsyscall_64.c | 15 +--
arch/x86/mm/fault.c | 5 +-
arch/x86/mm/init_64.c | 13 +-
arch/x86/um/vdso/vma.c | 2 +-
arch/x86/vdso/.gitignore | 5 +-
arch/x86/vdso/Makefile | 90 +++++---------
arch/x86/vdso/vclock_gettime.c | 26 ++--
arch/x86/vdso/vdso-layout.lds.S | 40 ++++---
arch/x86/vdso/vdso.S | 3 -
arch/x86/vdso/vdso.lds.S | 7 +-
arch/x86/vdso/vdso2c.c | 156 ++++++++++++++++++++++++
arch/x86/vdso/vdso2c.h | 154 ++++++++++++++++++++++++
arch/x86/vdso/vdso32-setup.c | 195 ++++--------------------------
arch/x86/vdso/vdso32.S | 9 --
arch/x86/vdso/vdso32/vdso32.lds.S | 15 +--
arch/x86/vdso/vdsox32.S | 3 -
arch/x86/vdso/vdsox32.lds.S | 7 +-
arch/x86/vdso/vma.c | 222 +++++++++++++++++++----------------
arch/x86/xen/mmu.c | 8 +-
arch/x86/xen/setup.c | 11 +-
kernel/sysctl.c | 5 +
33 files changed, 646 insertions(+), 556 deletions(-)
delete mode 100644 arch/x86/include/asm/vdso32.h
delete mode 100644 arch/x86/vdso/vdso.S
create mode 100644 arch/x86/vdso/vdso2c.c
create mode 100644 arch/x86/vdso/vdso2c.h
delete mode 100644 arch/x86/vdso/vdso32.S
delete mode 100644 arch/x86/vdso/vdsox32.S

--
1.9.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/