linux_dsm_epyc7002/arch/powerpc
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
..
boot Kbuild updates for v4.21 2018-12-29 12:03:17 -08:00
configs powerpc/configs: Add PPC4xx_OCM to ppc40x_defconfig 2018-12-30 14:00:47 +11:00
crypto powerpc updates for 4.19 2018-08-17 11:32:50 -07:00
include KVM: Call kvm_arch_memslots_updated() before updating memslots 2019-02-20 22:48:32 +01:00
kernel powerpc/syscalls: Fix syscall tracing 2019-01-15 21:32:25 +11:00
kvm Merge branch 'master' into fixes 2019-01-04 22:07:47 +11:00
lib Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
math-emu License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mm powerpc/radix: Fix kernel crash with mremap() 2019-01-31 20:10:15 +11:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2018-12-10 18:00:43 -08:00
oprofile Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
perf powerpc/perf: Update perf_regs structure to include MMCRA 2019-01-08 19:22:47 +11:00
platforms powerpc fixes for 5.0 #4 2019-02-08 16:04:12 -08:00
purgatory powerpc updates for 4.19 2018-08-17 11:32:50 -07:00
sysdev cross-tree: phase out dma_zalloc_coherent() 2019-01-08 07:58:37 -05:00
tools powerpc/tools/checkpatch: Ignore DT_SPLIT_BINDING_PATCH 2018-12-04 19:45:01 +11:00
xmon powerpc/xmon: fix dump_segments() 2018-12-19 18:56:32 +11:00
Kbuild powerpc: Add -Werror at arch/powerpc level 2018-10-19 00:56:17 +11:00
Kconfig Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
Kconfig.debug powerpc: remove redundant 'default n' from Kconfig-s 2018-10-13 22:21:25 +11:00
Makefile powerpc updates for 4.21 2018-12-27 10:43:24 -08:00
Makefile.postlink License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00