tools/memory-model: Document LKMM test procedure
authorPaul E. McKenney <paulmck@kernel.org>
Thu, 26 Jan 2023 23:41:00 +0000 (15:41 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Fri, 24 Mar 2023 17:24:15 +0000 (10:24 -0700)
This commit documents how to run the various scripts in order to test
a potentially pervasive change to the memory model.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/memory-model/scripts/README

index cc2c4e5be9ec163e6da01ce6a28f88fc684876c7..fb39bd0fd1b9d2f8e099f83e8da36e8d63774e68 100644 (file)
@@ -76,3 +76,35 @@ runlitmushist.sh
 README
 
        This file
+
+Testing a change to LKMM might go as follows:
+
+       # Populate expected results without that change, and
+       # runs for about an hour on an 8-CPU x86 system:
+       scripts/initlitmushist.sh --timeout 10m --procs 10
+       # Incorporate the change:
+       git am -s -3 /path/to/patch # Or whatever it takes.
+
+       # Test the new version of LKMM as follows...
+
+       # Runs in seconds, good smoke test:
+       scripts/checkalllitmus.sh
+
+       # Compares results to those produced by initlitmushist.sh,
+       # and runs for about an hour on an 8-CPU x86 system:
+       scripts/checklitmushist.sh --timeout 10m --procs 10
+
+       # Checks results against Result tags, runs in minutes:
+       scripts/checkghlitmus.sh --timeout 10m --procs 10
+
+The checkghlitmus.sh should not report errors in cases where the
+checklitmushist.sh script did not also report a change.  However,
+this check is nevertheless valuable because it can find errors in the
+original version of LKMM.  Note however, that given the above procedure,
+an error in the original LKMM version that is fixed by the patch will
+be reported both as a mismatch by checklitmushist.sh and as an error
+by checkghlitmus.sh.  One exception to this rule of thumb is when the
+test fails completely on the original version of LKMM and passes on the
+new version.  In this case, checklitmushist.sh will report a mismatch
+and checkghlitmus.sh will report success.  This happens when the change
+to LKMM introduces a new primitive for which litmus tests already existed.