summaryrefslogtreecommitdiff
path: root/virt
diff options
context:
space:
mode:
authorTom Zanussi <zanussi@kernel.org>2019-09-23 15:00:45 -0500
committerTom Zanussi <zanussi@kernel.org>2019-09-23 15:00:45 -0500
commit23eb538dca72ec85fb5e4e257aff0a4fdd6750b2 (patch)
treeed569cde01c02463607edaf4394831cc93e76584 /virt
parent9466315c55b1f0396f574ec8fb7ab34305ab95a0 (diff)
parente2cd24b629389b52a31d96d226ed150dacab9cdd (diff)
downloadlinux-rt-23eb538dca72ec85fb5e4e257aff0a4fdd6750b2.tar.gz
Merge tag 'v4.14.143' into v4.14-rt-work
This is the 4.14.143 stable release
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/arm/mmio.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/virt/kvm/arm/mmio.c b/virt/kvm/arm/mmio.c
index 08443a15e6be..3caee91bca08 100644
--- a/virt/kvm/arm/mmio.c
+++ b/virt/kvm/arm/mmio.c
@@ -98,6 +98,12 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run)
unsigned int len;
int mask;
+ /* Detect an already handled MMIO return */
+ if (unlikely(!vcpu->mmio_needed))
+ return 0;
+
+ vcpu->mmio_needed = 0;
+
if (!run->mmio.is_write) {
len = run->mmio.len;
if (len > sizeof(unsigned long))
@@ -200,6 +206,7 @@ int io_mem_abort(struct kvm_vcpu *vcpu, struct kvm_run *run,
run->mmio.is_write = is_write;
run->mmio.phys_addr = fault_ipa;
run->mmio.len = len;
+ vcpu->mmio_needed = 1;
if (!ret) {
/* We handled the access successfully in the kernel. */