On 24/02/15 12:47, Christoffer Dall wrote: > 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. Here's my theory: userspace is accessing something it should never access (outside of RAM, basically), and doing so via a kernel interface. Is this process accessing /dev/mem by any chance? dmidecode anyone? M. -- Jazz is not dead. It just smells funny... _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm