]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Introduce pmap_store(), and use it to replace pmap_load_store() in places
authorAlan Cox <alc@FreeBSD.org>
Sun, 21 Jul 2019 03:26:26 +0000 (03:26 +0000)
committerAlan Cox <alc@FreeBSD.org>
Sun, 21 Jul 2019 03:26:26 +0000 (03:26 +0000)
commit1a4cb969d1172a0faf9d59a0dd26960705cfe71d
tree7aecea1a89147d05669b3d6ee1bf4445d8e2e519
parentb982c7ee204ed5a9229356cfbceefd4ecfba613a
Introduce pmap_store(), and use it to replace pmap_load_store() in places
where the page table entry was previously invalid.  (Note that I did not
replace pmap_load_store() when it was followed by a TLB invalidation, even
if we are not using the return value from pmap_load_store().)

Correct an error in pmap_enter().  A test for determining when to set
PGA_WRITEABLE was always true, even if the mapping was read only.

In pmap_enter_l2(), when replacing an empty kernel page table page by a
superpage mapping, clear the old l2 entry and issue a TLB invalidation.  My
reading of the ARM architecture manual leads me to believe that the TLB
could hold an intermediate entry referencing the empty kernel page table
page even though it contains no valid mappings.

Replace a couple direct uses of atomic_clear_64() by the new
pmap_clear_bits().

In a couple comments, replace the term "paging-structure caches", which is
an Intel-specific term for the caches that hold intermediate entries in the
page table, with wording that is more consistent with the ARM architecture
manual.

Reviewed by: markj
X-MFC after: r350004
Differential Revision: https://reviews.freebsd.org/D20998
sys/arm64/arm64/pmap.c