On 05/15/2012 08:20 PM, Benjamin Herrenschmidt wrote:
On Tue, 2012-05-15 at 19:54 -0500, Anthony Liguori wrote:

You certainly could do that but it may get a little weird dealing with the
return path.  You'd have to return something like -EWOULDBLOCK and make sure you
handle that in the dispatch code appropriately.

Hrm, our implementation of kvm_arch_handle_exit() always return "1"
after a hypercall, forcing kvm_cpu_exec() to return back to the thread
loop, so we should be ok to just set env->halted and return no ?

I meant, if you wanted to have a synchronous hypercall function to dispatch, and then later call "hypercall_finish()", you would need a way to return an error in the synchronous hypercall to identify that something else would eventually call "hypercall_finish()." The sync hypercall would need to return something like -EWOULDBLOC.

Setting env->halted=1 ought to be enough to delay returning to the guest although i'd have to go through the code to verify.

Regards,

Anthony Liguori


Cheers,
Ben.




Reply via email to