Oh I just looked at the arm64 definition and assumed ptep_get_lockless()
== READ_ONCE() :) Now this makes sense. So I am guessing that we can
still get away with a *vmf.pmd on 64-bit arches?
A separate question: When taking the create_huge_pmd() path with a read
fault and after taking the pmd lock, why shouldn't we check with
pmd_none(pmdp_get_lockless(vmf.pmd)) instead of plain *vmf.pmd...surely
now we must load the actual correct value from memory since we are
committing into mapping the huge zero folio?
And after looking somewhat more, why even is a pmd_none(*pmd) there in
set_huge_zero_folio()...it should be the responsibility of the caller to
verify this? Any caller will just assume that it got the huge zero folio
mapped so this check should be redundant.