Avi Kivity wrote:
On x86 we avoid emulating instructions in userspace. Instead the kernel
requests userspace to do something (triggered by the instruction), and
the kernel does anything which might be implied by the instruction (like
copying the result into a register, or updating pc).
An example is port I/O. instead of userspace reading %edx to query the
port number and setting %eax to indicate the result, userspace reads a
port number struct field and writes an I/O result struct field. Only
the kernel accesses registers.
I don't know whether that model makes sense or not for s390, but please
consider it.
We do the same for many instructions (arch/s390/kvm/instruction.c). User
exits
are only performed for isntructions that cannot be handled in kernel.
Also, we do exit with requests to userspace, see the s390_reset exit
reason. I think in this regard, our implementation is very similar to
x86. Btw: this is something I did copycat from your implementation on
integration into kvm. The original zlive code did handle all
instructions in userland.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html