This is the only patch for the second half of Chapter Memory Ordering. Please take a look. Thanks. Signed-off-by: Junchang Wang <junchangwang@xxxxxxxxx> --- memorder/memorder.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/memorder/memorder.tex b/memorder/memorder.tex index 8e11e92..7f80612 100644 --- a/memorder/memorder.tex +++ b/memorder/memorder.tex @@ -2899,11 +2899,11 @@ shows a three-step release-acquire chain, but where \co{P3()}'s final access is a \co{READ_ONCE()} from \co{x0}, which is accessed via \co{WRITE_ONCE()} by \co{P0()}, forming a non-temporal load-to-store link between these two processes. -However, because \co{P0()}'s \co{smp_store_release()} (line~12) +However, because \co{P0()}'s \co{smp_store_release()} (line~8) is cumulative, if \co{P3()}'s \co{READ_ONCE()} returns zero, this cumulativity will force the \co{READ_ONCE()} to be ordered before \co{P0()}'s \co{smp_store_release()}. -In addition, the release-acquire chain (lines~12, 20, 21, 28, 29, and~37) +In addition, the release-acquire chain (lines~8, 16, 17, 24, 25, and~33) forces \co{P3()}'s \co{READ_ONCE()} to be ordered after \co{P0()}'s \co{smp_store_release()}. Because \co{P3()}'s \co{READ_ONCE()} cannot be both before and after -- 2.7.4