The branch main has been updated by mjg:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=819ed472043c8067d45b5c4608c8a6fb05ff7f04

commit 819ed472043c8067d45b5c4608c8a6fb05ff7f04
Author:     Mateusz Guzik <[email protected]>
AuthorDate: 2023-02-06 22:33:28 +0000
Commit:     Mateusz Guzik <[email protected]>
CommitDate: 2023-02-06 22:33:28 +0000

    amd64 pmap: patch up a comment in pmap_init_pv_table
    
    Requested by:   jhb
---
 sys/amd64/amd64/pmap.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index a86487310aff..a31cdb2a8215 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -2314,9 +2314,13 @@ pmap_init_pv_table(void)
        int domain, i, j, pages;
 
        /*
-        * We strongly depend on the size being a power of two, so the assert
-        * is overzealous. However, should the struct be resized to a
-        * different power of two, the code below needs to be revisited.
+        * For correctness we depend on the size being evenly divisible into a
+        * page. As a tradeoff between performance and total memory use, the
+        * entry is 64 bytes (aka one cacheline) in size. Not being smaller
+        * avoids false-sharing, but not being 128 bytes potentially allows for
+        * avoidable traffic due to adjacent cacheline prefetcher.
+        *
+        * Assert the size so that accidental changes fail to compile.
         */
        CTASSERT((sizeof(*pvd) == 64));
 

Reply via email to