Re: kvm [2087]: load/store instruction decoding not implemented

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 24, 2015 at 12:29:25PM +0000, Richard W.M. Jones wrote:
> On Tue, Feb 24, 2015 at 09:15:18PM +0900, Peter Maydell wrote:
> > On 24 February 2015 at 20:59, Richard W.M. Jones <rjones@xxxxxxxxxx> wrote:
> > >
> > > https://bugzilla.redhat.com/show_bug.cgi?id=1194366
> > >
> > > Has anyone seen this KVM error?  Or have suggestions how to debug it
> > > further?
> > >
> > >   kvm [2028]: load/store instruction decoding not implemented
> > 
> > This is a fairly common thing to run into and google is bound
> > to have references to past discussions. What has happened here
> > is that the guest has attempted a "complex" load/store instruction
> > to an area of RAM which is not mapped (ie not guest RAM).
> > For this class of instructions the hardware doesn't provide
> > syndrome information to allow us to figure out the address/size
> > etc of the access, so we would have to actually decode the
> > offending instruction and emulate it; this emulation isn't
> > implemented.
> > 
> > Complex insns are things like load-multiple (there's a complete
> > list in the ARM ARM somewhere). Generally this indicates a guest
> > bug because you really shouldn't be accessing devices with
> > weird instructions like that (and you shouldn't be accessing
> > unmapped memory at all).
> 
> I'm not super-familiar with the aarch64 instruction set, but
> according to qemu the instruction is:
> 
> b8004403        str     w3, [x0],#4
> 
> (in __copy_to_user).  My interpretation is this is storing the
> lower 32 bits of x3 into the storage pointed to by x0 (+ 4 bytes?)
> Is that one of the complicated ones?

Shouldn't be, I don't think aarch64 does any register write-back here.
This is an aarch64 userspace process, right?

You can try adding some more debugging info to the print to get us the
IPA it is failing on:

diff --git a/arch/arm/kvm/mmio.c b/arch/arm/kvm/mmio.c
index 5d3bfc0..e468937 100644
--- a/arch/arm/kvm/mmio.c
+++ b/arch/arm/kvm/mmio.c
@@ -182,7 +182,8 @@ int io_mem_abort(struct kvm_vcpu *vcpu, struct kvm_run *run,
 		if (ret)
 			return ret;
 	} else {
-		kvm_err("load/store instruction decoding not implemented\n");
+		kvm_err("load/store instruction decoding not implemented (HSR: 0x%x, IPA: 0x%llx)\n",
+			kvm_vcpu_get_hsr(vcpu), fault_ipa);
 		return -ENOSYS;
 	}
 

I wonder why you're faulting on an address that your guest kernel is
doing __copy_to_user() on in the first place though, hmmm.

-Christoffer
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm




[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux