> +++ b/arch/x86/kvm/x86.c > @@ -4657,25 +4657,18 @@ static int emulator_read_write_onepage(unsigned long addr, void *val, > */ > if (vcpu->arch.gpa_available && > emulator_can_use_gpa(ctxt) && > - vcpu_is_mmio_gpa(vcpu, addr, exception->address, write) && > - (addr & ~PAGE_MASK) == (exception->address & ~PAGE_MASK)) { > - gpa = exception->address; > - goto mmio; > + (addr & ~PAGE_MASK) == (vcpu->arch.gpa_val & ~PAGE_MASK)) { > + gpa = vcpu->arch.gpa_val; > + ret = vcpu_is_mmio_gpa(vcpu, addr, gpa, write); > + } else { > + ret = vcpu_mmio_gva_to_gpa(vcpu, addr, &gpa, exception, write); > } > > - ret = vcpu_mmio_gva_to_gpa(vcpu, addr, &gpa, exception, write); > - > if (ret < 0) > return X86EMUL_PROPAGATE_FAULT; just wondering if it makes sense to move this into the else branch (as it logically only belongs to vcpu_mmio_gva_to_gpa) Reviewed-by: David Hildenbrand <david@xxxxxxxxxx> -- Thanks, David