Hi all,
At the moment, Xen doesn't have a formal memory model. Instead, we are
relying on intuitions. This can lead to heated discussion on what can a
processor/compiler do or not.
We also have some helpers that nearly do the same (such as
{read,write}_atomic() vs ACCESS_ONCE()) with no clear understanding
where to use which.
In the past few years, Linux community spent a lot of time to write down
their memory model and make the compiler communities aware of it (see
[1], [2]).
There are a few reasons I can see for adopting LKMM:
- Xen borrows a fair amount of code from Linux;
- There are efforts to standardize it;
- This will allow us to streamline the discussion.
Any thoughts?
Cheers,
[1] https://www.kernel.org/doc/Documentation/memory-barriers.txt
[2] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0124r7.html
--
Julien Grall