Skip to content
  • Alex Bennée's avatar
    e5143e30
    tcg: remove global exit_request · e5143e30
    Alex Bennée authored
    
    
    There are now only two uses of the global exit_request left.
    
    The first ensures we exit the run_loop when we first start to process
    pending work and in the kick handler. This is just as easily done by
    setting the first_cpu->exit_request flag.
    
    The second use is in the round robin kick routine. The global
    exit_request ensured every vCPU would set its local exit_request and
    cause a full exit of the loop. Now the iothread isn't being held while
    running we can just rely on the kick handler to push us out as intended.
    
    We lightly re-factor the main vCPU thread to ensure cpu->exit_requests
    cause us to exit the main loop and process any IO requests that might
    come along. As an cpu->exit_request may legitimately get squashed
    while processing the EXCP_INTERRUPT exception we also check
    cpu->queued_work_first to ensure queued work is expedited as soon as
    possible.
    
    Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
    e5143e30
    tcg: remove global exit_request
    Alex Bennée authored
    
    
    There are now only two uses of the global exit_request left.
    
    The first ensures we exit the run_loop when we first start to process
    pending work and in the kick handler. This is just as easily done by
    setting the first_cpu->exit_request flag.
    
    The second use is in the round robin kick routine. The global
    exit_request ensured every vCPU would set its local exit_request and
    cause a full exit of the loop. Now the iothread isn't being held while
    running we can just rely on the kick handler to push us out as intended.
    
    We lightly re-factor the main vCPU thread to ensure cpu->exit_requests
    cause us to exit the main loop and process any IO requests that might
    come along. As an cpu->exit_request may legitimately get squashed
    while processing the EXCP_INTERRUPT exception we also check
    cpu->queued_work_first to ensure queued work is expedited as soon as
    possible.
    
    Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
Loading