• P
    cpu-exec: tighten barrier on TCG_EXIT_REQUESTED · a70fe14b
    Paolo Bonzini 提交于
    This seems to have worked just fine so far on weakly-ordered
    architectures, but I don't see anything that prevents the
    reordering from:
    
        store 1 to exit_request
        store 1 to tcg_exit_req
                                     load tcg_exit_req
                                     store 0 to tcg_exit_req
                                     load exit_request
                                     store 0 to exit_request
        store 1 to exit_request
        store 1 to tcg_exit_req
    
    to this:
    
        store 1 to exit_request
        store 1 to tcg_exit_req
                                     load tcg_exit_req
                                     load exit_request
        store 1 to exit_request
        store 1 to tcg_exit_req
                                     store 0 to tcg_exit_req
                                     store 0 to exit_request
    
    therefore losing a request.  It's possible that other memory barriers
    (e.g. in rcu_read_unlock) are hiding it, but better safe than
    sorry.
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    a70fe14b
cpu-exec.c 20.8 KB