xref: /openbmc/linux/tools/memory-model/Documentation/README (revision cdd38c5f1ce4398ec58fec95904b75824daab7b5)
1ab8bcad6SPaul E. McKenneyIt has been said that successful communication requires first identifying
2ab8bcad6SPaul E. McKenneywhat your audience knows and then building a bridge from their current
3ab8bcad6SPaul E. McKenneyknowledge to what they need to know.  Unfortunately, the expected
4ab8bcad6SPaul E. McKenneyLinux-kernel memory model (LKMM) audience might be anywhere from novice
5ab8bcad6SPaul E. McKenneyto expert both in kernel hacking and in understanding LKMM.
6ab8bcad6SPaul E. McKenney
7ab8bcad6SPaul E. McKenneyThis document therefore points out a number of places to start reading,
8ab8bcad6SPaul E. McKenneydepending on what you know and what you would like to learn.  Please note
9ab8bcad6SPaul E. McKenneythat the documents later in this list assume that the reader understands
10ab8bcad6SPaul E. McKenneythe material provided by documents earlier in this list.
11ab8bcad6SPaul E. McKenney
12ab8bcad6SPaul E. McKenneyo	You are new to Linux-kernel concurrency: simple.txt
13ab8bcad6SPaul E. McKenney
14*ebb477cbSPaul E. McKenneyo	You have some background in Linux-kernel concurrency, and would
15*ebb477cbSPaul E. McKenney	like an overview of the types of low-level concurrency primitives
16*ebb477cbSPaul E. McKenney	that the Linux kernel provides:  ordering.txt
17*ebb477cbSPaul E. McKenney
18*ebb477cbSPaul E. McKenney	Here, "low level" means atomic operations to single variables.
19*ebb477cbSPaul E. McKenney
20ab8bcad6SPaul E. McKenneyo	You are familiar with the Linux-kernel concurrency primitives
21ab8bcad6SPaul E. McKenney	that you need, and just want to get started with LKMM litmus
22ab8bcad6SPaul E. McKenney	tests:  litmus-tests.txt
23ab8bcad6SPaul E. McKenney
24ab8bcad6SPaul E. McKenneyo	You are familiar with Linux-kernel concurrency, and would
25ab8bcad6SPaul E. McKenney	like a detailed intuitive understanding of LKMM, including
26ab8bcad6SPaul E. McKenney	situations involving more than two threads:  recipes.txt
27ab8bcad6SPaul E. McKenney
28*ebb477cbSPaul E. McKenneyo	You would like a detailed understanding of what your compiler can
29*ebb477cbSPaul E. McKenney	and cannot do to control dependencies:  control-dependencies.txt
30*ebb477cbSPaul E. McKenney
31ab8bcad6SPaul E. McKenneyo	You are familiar with Linux-kernel concurrency and the use of
32ab8bcad6SPaul E. McKenney	LKMM, and would like a quick reference:  cheatsheet.txt
33ab8bcad6SPaul E. McKenney
34ab8bcad6SPaul E. McKenneyo	You are familiar with Linux-kernel concurrency and the use
35ab8bcad6SPaul E. McKenney	of LKMM, and would like to learn about LKMM's requirements,
36ab8bcad6SPaul E. McKenney	rationale, and implementation:	explanation.txt
37ab8bcad6SPaul E. McKenney
38ab8bcad6SPaul E. McKenneyo	You are interested in the publications related to LKMM, including
39ab8bcad6SPaul E. McKenney	hardware manuals, academic literature, standards-committee
40ab8bcad6SPaul E. McKenney	working papers, and LWN articles:  references.txt
41ab8bcad6SPaul E. McKenney
42ab8bcad6SPaul E. McKenney
43ab8bcad6SPaul E. McKenney====================
44ab8bcad6SPaul E. McKenneyDESCRIPTION OF FILES
45ab8bcad6SPaul E. McKenney====================
46ab8bcad6SPaul E. McKenney
47ab8bcad6SPaul E. McKenneyREADME
48ab8bcad6SPaul E. McKenney	This file.
49ab8bcad6SPaul E. McKenney
50ab8bcad6SPaul E. McKenneycheatsheet.txt
51ab8bcad6SPaul E. McKenney	Quick-reference guide to the Linux-kernel memory model.
52ab8bcad6SPaul E. McKenney
53*ebb477cbSPaul E. McKenneycontrol-dependencies.txt
54*ebb477cbSPaul E. McKenney	Guide to preventing compiler optimizations from destroying
55*ebb477cbSPaul E. McKenney	your control dependencies.
56*ebb477cbSPaul E. McKenney
57ab8bcad6SPaul E. McKenneyexplanation.txt
58ab8bcad6SPaul E. McKenney	Detailed description of the memory model.
59ab8bcad6SPaul E. McKenney
60ab8bcad6SPaul E. McKenneylitmus-tests.txt
61ab8bcad6SPaul E. McKenney	The format, features, capabilities, and limitations of the litmus
62ab8bcad6SPaul E. McKenney	tests that LKMM can evaluate.
63ab8bcad6SPaul E. McKenney
64*ebb477cbSPaul E. McKenneyordering.txt
65*ebb477cbSPaul E. McKenney	Overview of the Linux kernel's low-level memory-ordering
66*ebb477cbSPaul E. McKenney	primitives by category.
67*ebb477cbSPaul E. McKenney
68ab8bcad6SPaul E. McKenneyrecipes.txt
69ab8bcad6SPaul E. McKenney	Common memory-ordering patterns.
70ab8bcad6SPaul E. McKenney
71ab8bcad6SPaul E. McKenneyreferences.txt
72ab8bcad6SPaul E. McKenney	Background information.
73ab8bcad6SPaul E. McKenney
74ab8bcad6SPaul E. McKenneysimple.txt
75ab8bcad6SPaul E. McKenney	Starting point for someone new to Linux-kernel concurrency.
76ab8bcad6SPaul E. McKenney	And also a reminder of the simpler approaches to concurrency!
77