linux_dsm_epyc7002/arch/mips/kernel
Paul Burton 0f02cfbc3d
MIPS: VDSO: Match data page cache colouring when D$ aliases
When a system suffers from dcache aliasing a user program may observe
stale VDSO data from an aliased cache line. Notably this can break the
expectation that clock_gettime(CLOCK_MONOTONIC, ...) is, as its name
suggests, monotonic.

In order to ensure that users observe updates to the VDSO data page as
intended, align the user mappings of the VDSO data page such that their
cache colouring matches that of the virtual address range which the
kernel will use to update the data page - typically its unmapped address
within kseg0.

This ensures that we don't introduce aliasing cache lines for the VDSO
data page, and therefore that userland will observe updates without
requiring cache invalidation.

Signed-off-by: Paul Burton <paul.burton@mips.com>
Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
Reported-by: Rene Nielsen <rene.nielsen@microsemi.com>
Reported-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Fixes: ebb5e78cc6 ("MIPS: Initial implementation of a VDSO")
Patchwork: https://patchwork.linux-mips.org/patch/20344/
Tested-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@linux-mips.org
Cc: stable@vger.kernel.org # v4.4+
2018-08-31 10:07:21 -07:00
..
.gitignore
8250-platform.c
asm-offsets.c
binfmt_elfn32.c
binfmt_elfo32.c
bmips_5xxx_init.S
bmips_vec.S
branch.c
cacheinfo.c
cevt-bcm1480.c
cevt-ds1287.c
cevt-gt641xx.c
cevt-r4k.c
cevt-sb1250.c
cevt-txx9.c
cmpxchg.c
cps-vec-ns16550.S
cps-vec.S
cpu-bugs64.c
cpu-probe.c
crash_dump.c
crash.c
csrc-bcm1480.c
csrc-ioasic.c
csrc-r4k.c
csrc-sb1250.c
early_printk_8250.c
early_printk.c
elf.c
entry.S
ftrace.c
genex.S
gpio_txx9.c
head.S
i8253.c
idle.c
irq_txx9.c
irq-gt641xx.c
irq-msc01.c
irq-rm7000.c
irq.c
jump_label.c
kgdb.c
kprobes.c
linux32.c MIPS: Delete unused code in linux32.c 2018-08-01 13:20:27 -07:00
machine_kexec.c
Makefile
mcount.S
mips_machine.c
mips-cm.c
mips-cpc.c
mips-mt-fpaff.c
mips-mt.c
mips-r2-to-r6-emul.c
module.c
octeon_switch.S
perf_event_mipsxx.c
perf_event.c
pm-cps.c
pm.c
probes-common.h
proc.c
process.c Here are the main MIPS changes for 4.19. 2018-08-13 19:24:32 -07:00
prom.c
ptrace32.c
ptrace.c
r4k_fpu.S
r4k_switch.S
r2300_fpu.S
r2300_switch.S
relocate_kernel.S
relocate.c
reset.c
rtlx-cmp.c
rtlx-mt.c
rtlx.c
scall32-o32.S
scall64-64.S
scall64-n32.S
scall64-o32.S
segment.c
setup.c MIPS: Allow auto-dection of ARCH_PFN_OFFSET & PHYS_OFFSET 2018-07-30 10:27:32 -07:00
signal32.c
signal_n32.c MIPS: Remove nabi_no_regargs 2018-08-01 13:20:15 -07:00
signal_o32.c MIPS: Remove nabi_no_regargs 2018-08-01 13:20:15 -07:00
signal-common.h
signal.c Here are the main MIPS changes for 4.19. 2018-08-13 19:24:32 -07:00
smp-bmips.c
smp-cmp.c
smp-cps.c
smp-mt.c
smp-up.c
smp.c
spinlock_test.c
spram.c
stacktrace.c
sync-r4k.c
syscall.c
sysrq.c
time.c
topology.c
traps.c A few MIPS fixes for 4.19: 2018-08-23 14:23:08 -07:00
unaligned.c
uprobes.c Uprobe: Additional argument arch_uprobe to uprobe_write_opcode() 2018-08-13 20:08:33 -04:00
vdso.c MIPS: VDSO: Match data page cache colouring when D$ aliases 2018-08-31 10:07:21 -07:00
vmlinux.lds.S
vpe-cmp.c
vpe-mt.c
vpe.c
watch.c