]> git.proxmox.com Git - mirror_qemu.git/commit
cpu-exec: tighten barrier on TCG_EXIT_REQUESTED
authorPaolo Bonzini <pbonzini@redhat.com>
Sun, 29 Jan 2017 11:15:15 +0000 (12:15 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 16 Feb 2017 13:06:56 +0000 (14:06 +0100)
commita70fe14b7dddcb944fbd6c9f3739cd3a22089af5
tree37ff276d712d82f5e8c46d72cd181c9bd906ecfc
parent43d70ddf9f96b3ad037abe4d5f9f2768196b8c92
cpu-exec: tighten barrier on TCG_EXIT_REQUESTED

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: Paolo Bonzini <pbonzini@redhat.com>
cpu-exec.c