On Tue, Feb 24, 2015 at 01:47:10PM +0100, Christoffer Dall wrote:
> On Tue, Feb 24, 2015 at 12:29:25PM +0000, Richard W.M. Jones wrote:
> > 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;
> }
Sorry for the delay - I had to compile and install a new kernel with
your change.
The output is:
kvm [1568]: load/store instruction decoding not implemented (HSR: 0x92000046,
IPA: 0x3c000020)
I'm not clear on what the "HSR" and "IPA" are, so I don't know what
other debug information could be valuable here, but the same guest
under gdb:
Program received signal SIGABRT, Aborted.
__copy_to_user () at arch/arm64/lib/copy_to_user.S:43
43 USER(9f, str w3, [x0], #4 )
(gdb) info registers
x0 0xfffffdfffaa20020 -2199113301984
x1 0xfffffe0028343c20 -2198348743648
x2 0xfffffffffffffffc -4
x3 0xd503201f 3573751839
x4 0xfffffdfffaa20024 -2199113301980
x5 0xffffffffffffffff -1
x6 0xfffffe0000a1b5b0 -2199012657744
x7 0xfffffe0000a1b598 -2199012657768
x8 0xfffffe0000a1b580 -2199012657792
x9 0xfffffdfee01a4440 -2203853372352
x10 0x101010101010101 72340172838076673
x11 0x6 6
x12 0x0 0
x13 0xffffffffffffffff -1
x14 0xffff000000000000 -281474976710656
x15 0xffffffffffffffff -1
x16 0xfffffe000013a5e8 -2199021967896
x17 0x1 1
x18 0x0 0
x19 0x40000000000 4398046511104
x20 0xfffffdfffc000020 -2199090364384
x21 0x140 320
x22 0x0 0
x23 0xfffffe0000dc17d8 -2199008831528
x24 0xfffffe000009c5b0 -2199022615120
x25 0xfffffe0000f65000 -2199007113216
x26 0x0 0
x27 0x0 0
x28 0xfffffe0029110000 -2198334275584
x29 0xfffffe0028343bc0 -2198348743744
x30 0xfffffe00001a6560 -2199021525664
sp 0xfffffe0028343bc0 0xfffffe0028343bc0
pc 0xfffffe00003e306c 0xfffffe00003e306c <__copy_to_user+44>
cpsr 0x600001c5 1610613189
fpsr 0x0 0
fpcr 0x0 0
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm