• Rusty Russell's avatar
    Introduce "hcall" pointer to indicate pending hypercall. · cc6d4fbc
    Rusty Russell authored
    Currently we look at the "trapnum" to see if the Guest wants a
    hypercall.  But once the hypercall is done we have to reset trapnum to
    a bogus value, otherwise if we exit to userspace and return, we'd run
    the same hypercall twice (that was a nasty bug to find!).
    
    This has two main effects:
    
    1) When Jes's patch changes the hypercall args to be a generic "struct
       hcall_args" we simply change the type of "lg->hcall".  It's set by
       arch code, so if it has to copy args or something it can do so, and
       point "hcall" into lg->arch somewhere.
    
    2) Async hypercalls only get run when an actual hypercall is pending.
       This simplfies the code a little and is a more logical semantic.
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    cc6d4fbc
core.c 17.7 KB