On 02/08/2018 06:31 PM, Paolo Bonzini wrote:
On 08/02/2018 09:57, Xiao Guangrong wrote:
Maybe it should return RET_PF_EMULATE, which would cause an emulation
failure and then an exit with KVM_EXIT_INTERNAL_ERROR.
So the root cause is that a running vCPU accessing the memory whose memslot
is being updated (met the condition KVM_MEMSLOT_INVALID is set on the its
memslot).
The normal #PF handler breaks KVM_RUN and returns -EFAULT to userspace,
we'd better to make ept-misconfig's handler follow this style as well.
Why return -EFAULT and not attempt emulation (which will fail)?
That is a good question... :)
This case (with KVM_MEMSLOT_INVALID is set) can be easily constructed,
userspace should avoid this case by itself (avoiding vCPU accessing the
memslot which is being updated). If it happens, it's a operation issue
rather than INTERNAL ERROR.
Maybe treat it as MMIO accessing and return to userspace with MMIO_EXIT
is a better solution...