diff options
author | marcel <marcel@FreeBSD.org> | 2014-02-16 22:12:13 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2014-02-16 22:12:13 +0000 |
commit | 2aad389c5a78fcbe02bee5cc0544786b677c94bd (patch) | |
tree | 0e7b63b42d5ea2dba2af6372627944cf1035b706 /sys/ia64 | |
parent | 4262006891e6ee2136f01870ae5c095d2eb28eb2 (diff) | |
download | FreeBSD-src-2aad389c5a78fcbe02bee5cc0544786b677c94bd.zip FreeBSD-src-2aad389c5a78fcbe02bee5cc0544786b677c94bd.tar.gz |
MFC r260914:
In pmap_set_pte(), make sure to enforce ordering by inserting a memory fence.
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/pmap.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index 49418cd..7b5eea0 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -1318,6 +1318,8 @@ pmap_set_pte(struct ia64_lpte *pte, vm_offset_t va, vm_offset_t pa, pte->itir = PAGE_SHIFT << 2; + ia64_mf(); + pte->tag = ia64_ttag(va); } @@ -1336,8 +1338,8 @@ pmap_remove_pte(pmap_t pmap, struct ia64_lpte *pte, vm_offset_t va, * First remove from the VHPT. */ error = pmap_remove_vhpt(va); - if (error) - return (error); + KASSERT(error == 0, ("%s: pmap_remove_vhpt returned %d", + __func__, error)); pmap_invalidate_page(va); |