Re: Unexpected Behavior of post-indexed LDR/STR to unmapped addresses

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

 



On Mon, 14 Jan 2019 at 10:32, Jan Bolke <jan.bolke@xxxxxxxxxxxx> wrote:
> Then I observed some strange behavior:
>
> When accessing unmapped address with str instructions they lead
> to an KVM_EXIT_MMIO as expected.
>
> However, if the str instruction is post-indexed, KVM exits with
> KVM_EXIT_UNKNOWN.

Yes, that's expected. KVM only supports performing MMIO operations
with instructions which report an ESR on data aborts with a valid
instruction syndrome, which is to say:
 * loads and stores of a single general-purpose register,
   including those with acquire/release semantics but excluding
   load/store exclusive and excluding insns using writeback

Loads and stores in that category can be easily emulated by
the kernel, so it dos a KVM_EXIT_MMIO to userspace to get/set
the actual data. Other loads and stores are easily emulated,
so the kernel does a KVM_EXIT_UNKNOWN, which typically results
in the userspace component (QEMU, etc) saying "can't handle
this" and shutting down the VM. In theory a sufficiently
capable userspace component could read the offending guest
insn and do full instruction emulation of it, but in practice
we don't do that, because sensible guests don't use these
insns to do device IO.

thanks
-- PMM
_______________________________________________
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