Messages in this thread | | | From | Linus Torvalds <> | Date | Wed, 19 Oct 2022 10:40:40 -0700 | Subject | Re: [PATCH v14 08/14] mm: multi-gen LRU: support page table walks |
| |
On Tue, Oct 18, 2022 at 10:51 PM Yu Zhao <yuzhao@google.com> wrote: > > pmd_read_atomic() should have a built-in READ_ONCE() in the first > place.
I really think that is the right thing to do. Let's just move the barrier in *there* instead.
It really should use 'READ_ONCE()', but it sadly cannot do that portably, because 'pmd_t' may be a multi-word structure.
Of course, the x86-32 code does this all *almost* right, and implements its own version of pmd_read_atomic(), but then sadly does it _without_ actually using READ_ONCE() there.
So even when we could do it right, we don't.
But the x86-32 implementation of pmd_read_atomic() would be trivial to fix to just use READ_ATOMIC, and the generic implementation should just have a "barrier()" in it so that we wouldn't need crazy barriers in the users.
Because as you say, the function is already called "read_atomic", and it should damn well *act* that way then.
Hmm?
Linus
| |