linux_dsm_epyc7002/arch/s390
Sean Christopherson 152482580a KVM: Call kvm_arch_memslots_updated() before updating memslots
kvm_arch_memslots_updated() is at this point in time an x86-specific
hook for handling MMIO generation wraparound.  x86 stashes 19 bits of
the memslots generation number in its MMIO sptes in order to avoid
full page fault walks for repeat faults on emulated MMIO addresses.
Because only 19 bits are used, wrapping the MMIO generation number is
possible, if unlikely.  kvm_arch_memslots_updated() alerts x86 that
the generation has changed so that it can invalidate all MMIO sptes in
case the effective MMIO generation has wrapped so as to avoid using a
stale spte, e.g. a (very) old spte that was created with generation==0.

Given that the purpose of kvm_arch_memslots_updated() is to prevent
consuming stale entries, it needs to be called before the new generation
is propagated to memslots.  Invalidating the MMIO sptes after updating
memslots means that there is a window where a vCPU could dereference
the new memslots generation, e.g. 0, and incorrectly reuse an old MMIO
spte that was created with (pre-wrap) generation==0.

Fixes: e59dbe09f8 ("KVM: Introduce kvm_arch_memslots_updated()")
Cc: <stable@vger.kernel.org>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2019-02-20 22:48:32 +01:00
..
appldata sched: loadavg: consolidate LOAD_INT, LOAD_FRAC, CALC_LOAD 2018-10-26 16:26:32 -07:00
boot s390: avoid vmlinux segments overlap 2018-10-26 10:19:40 +02:00
configs s390: update defconfigs 2018-11-05 15:10:27 +01:00
crypto crypto: drop mask=CRYPTO_ALG_ASYNC from 'cipher' tfm allocations 2018-11-20 14:26:55 +08:00
hypfs s390/hypfs: do not use stack buffers for hardware data 2018-10-09 11:20:53 +02:00
include KVM: Call kvm_arch_memslots_updated() before updating memslots 2019-02-20 22:48:32 +01:00
kernel s390/smp: Fix calling smp_call_ipl_cpu() from ipl CPU 2019-01-11 17:12:03 +01:00
kvm Kconfig updates for v4.21 2018-12-29 13:03:29 -08:00
lib s390/kasan: avoid user access code instrumentation 2018-10-09 11:21:21 +02:00
mm s390 updates for the 4.21 merge window 2019-01-02 18:37:01 -08:00
net s390: bpf: implement jitting of BPF_ALU | BPF_ARSH | BPF_* 2018-12-07 13:30:48 -08:00
numa s390 updates for 4.20-rc2 2018-11-09 06:30:44 -06:00
oprofile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci pci-v4.21-changes 2019-01-05 17:57:34 -08:00
purgatory s390: clean up stacks setup 2018-09-20 13:20:29 +02:00
scripts s390/build: add *.o.chkbss files to targets list 2018-07-02 12:32:23 +02:00
tools kbuild: use assignment instead of define ... endef for filechk_* rules 2019-01-06 10:22:35 +09:00
defconfig s390: update defconfigs 2018-11-05 15:10:27 +01:00
Kbuild s390/kexec_file: Add purgatory 2018-04-16 09:10:22 +02:00
Kconfig Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
Kconfig.debug Kconfig: consolidate the "Kernel hacking" menu 2018-08-02 08:06:48 +09:00
Makefile s390/kasan: increase instrumented stack size to 64k 2018-11-02 08:31:57 +01:00