git: 0486986ad81d - stable/13 - vm_kern: Avoid sign extension in the KVA_QUANTUM definition

Mark Johnston markj at FreeBSD.org
Thu Feb 25 14:04:37 UTC 2021


The branch stable/13 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=0486986ad81dbbfca291acf5b15f94d67d8a61bd

commit 0486986ad81dbbfca291acf5b15f94d67d8a61bd
Author:     Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-02-22 20:50:09 +0000
Commit:     Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-02-25 13:56:54 +0000

    vm_kern: Avoid sign extension in the KVA_QUANTUM definition
    
    Otherwise, on a powerpc64 NUMA system with hashed page tables, the
    first-level superpage reservation size is large enough that the value of
    the kernel KVA arena import quantum, KVA_NUMA_IMPORT_QUANTUM, is
    negative and gets sign-extended when passed to vmem_set_import().  This
    results in a boot-time hang on such platforms.
    
    Reported by:    bdragon
    
    (cherry picked from commit 23e875fd97fb9f17b3f5dc2b26082f25e1a86b6f)
---
 sys/vm/vm_kern.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c
index f1704f834157..0677d901d408 100644
--- a/sys/vm/vm_kern.c
+++ b/sys/vm/vm_kern.c
@@ -127,7 +127,7 @@ SYSCTL_ULONG(_vm, OID_AUTO, max_kernel_address, CTLFLAG_RD,
 /* On non-superpage architectures we want large import sizes. */
 #define	KVA_QUANTUM_SHIFT	(8 + PAGE_SHIFT)
 #endif
-#define	KVA_QUANTUM		(1 << KVA_QUANTUM_SHIFT)
+#define	KVA_QUANTUM		(1ul << KVA_QUANTUM_SHIFT)
 #define	KVA_NUMA_IMPORT_QUANTUM	(KVA_QUANTUM * 128)
 
 extern void     uma_startup2(void);


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