git: 0add3c9945c8 - main - arm64: Simplify fcmpset failure in pmap_promote_l2()

Alan Cox alc at FreeBSD.org
Wed Jul 7 18:36:20 UTC 2021


The branch main has been updated by alc:

URL: https://cgit.FreeBSD.org/src/commit/?id=0add3c9945c85c7f766f9225866e99e2a805819b

commit 0add3c9945c85c7f766f9225866e99e2a805819b
Author:     Alan Cox <alc at FreeBSD.org>
AuthorDate: 2021-07-07 18:16:03 +0000
Commit:     Alan Cox <alc at FreeBSD.org>
CommitDate: 2021-07-07 18:34:11 +0000

    arm64: Simplify fcmpset failure in pmap_promote_l2()
    
    When the initial fcmpset in pmap_promote_l2() fails, there is no need
    to repeat the check for the physical address being 2MB aligned or for
    the accessed bit being set.  While the pmap is locked the hardware can
    only transition the accessed bit from 0 to 1, and we have already
    determined that it is 1 when the fcmpset fails.
    
    MFC after:      1 week
---
 sys/arm64/arm64/pmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c
index bf476490b6be..7758a84d81d5 100644
--- a/sys/arm64/arm64/pmap.c
+++ b/sys/arm64/arm64/pmap.c
@@ -3502,7 +3502,6 @@ pmap_promote_l2(pmap_t pmap, pd_entry_t *l2, vm_offset_t va,
 	firstl3 = pmap_l2_to_l3(l2, sva);
 	newl2 = pmap_load(firstl3);
 
-setl2:
 	if (((newl2 & (~ATTR_MASK | ATTR_AF)) & L2_OFFSET) != ATTR_AF) {
 		atomic_add_long(&pmap_l2_p_failures, 1);
 		CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx"
@@ -3510,6 +3509,7 @@ setl2:
 		return;
 	}
 
+setl2:
 	if ((newl2 & (ATTR_S1_AP_RW_BIT | ATTR_SW_DBM)) ==
 	    (ATTR_S1_AP(ATTR_S1_AP_RO) | ATTR_SW_DBM)) {
 		/*


More information about the dev-commits-src-main mailing list