Module Name:    src
Committed By:   martin
Date:           Sun Sep 24 09:33:27 UTC 2023

Modified Files:
        src/lib/librumpuser: rumpuser.c
        src/sys/rump/include/rump: rumpuser.h
        src/sys/rump/librump/rumpkern: vm.c

Log Message:
PR kern/57626: instead of an (arbitrary) FAKE_PAGE_SHIFT (and always
using 4k pages), query the hypervisor for the real page size of the host
kernel and use that for architectures that do not have compile time
constant page sizes.


To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/lib/librumpuser/rumpuser.c
cvs rdiff -u -r1.116 -r1.117 src/sys/rump/include/rump/rumpuser.h
cvs rdiff -u -r1.196 -r1.197 src/sys/rump/librump/rumpkern/vm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/librumpuser/rumpuser.c
diff -u src/lib/librumpuser/rumpuser.c:1.67 src/lib/librumpuser/rumpuser.c:1.68
--- src/lib/librumpuser/rumpuser.c:1.67	Sun Aug 16 11:05:06 2015
+++ src/lib/librumpuser/rumpuser.c	Sun Sep 24 09:33:26 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpuser.c,v 1.67 2015/08/16 11:05:06 pooka Exp $	*/
+/*	$NetBSD: rumpuser.c,v 1.68 2023/09/24 09:33:26 martin Exp $	*/
 
 /*
  * Copyright (c) 2007-2010 Antti Kantee.  All Rights Reserved.
@@ -28,7 +28,7 @@
 #include "rumpuser_port.h"
 
 #if !defined(lint)
-__RCSID("$NetBSD: rumpuser.c,v 1.67 2015/08/16 11:05:06 pooka Exp $");
+__RCSID("$NetBSD: rumpuser.c,v 1.68 2023/09/24 09:33:26 martin Exp $");
 #endif /* !lint */
 
 #include <sys/stat.h>
@@ -268,3 +268,9 @@ rumpuser_kill(int64_t pid, int rumpsig)
 		raise(sig);
 	return 0;
 }
+
+unsigned long
+rumpuser_getpagesize(void)
+{
+	return sysconf(_SC_PAGESIZE);
+}

Index: src/sys/rump/include/rump/rumpuser.h
diff -u src/sys/rump/include/rump/rumpuser.h:1.116 src/sys/rump/include/rump/rumpuser.h:1.117
--- src/sys/rump/include/rump/rumpuser.h:1.116	Sun Mar 22 13:30:10 2020
+++ src/sys/rump/include/rump/rumpuser.h	Sun Sep 24 09:33:26 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpuser.h,v 1.116 2020/03/22 13:30:10 pgoyette Exp $	*/
+/*	$NetBSD: rumpuser.h,v 1.117 2023/09/24 09:33:26 martin Exp $	*/
 
 /*
  * Copyright (c) 2007-2013 Antti Kantee.  All Rights Reserved.
@@ -168,6 +168,11 @@ void rumpuser_dprintf(const char *, ...)
 int rumpuser_getrandom(void *, size_t, int, size_t *);
 
 /*
+ * for architectures with non-constant page size
+ */
+unsigned long rumpuser_getpagesize(void);
+
+/*
  * threads, scheduling (host) and synchronization
  */
 int  rumpuser_thread_create(void *(*f)(void *), void *, const char *, int,

Index: src/sys/rump/librump/rumpkern/vm.c
diff -u src/sys/rump/librump/rumpkern/vm.c:1.196 src/sys/rump/librump/rumpkern/vm.c:1.197
--- src/sys/rump/librump/rumpkern/vm.c:1.196	Sat Apr 22 13:53:53 2023
+++ src/sys/rump/librump/rumpkern/vm.c	Sun Sep 24 09:33:26 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm.c,v 1.196 2023/04/22 13:53:53 riastradh Exp $	*/
+/*	$NetBSD: vm.c,v 1.197 2023/09/24 09:33:26 martin Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.196 2023/04/22 13:53:53 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.197 2023/09/24 09:33:26 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -375,11 +375,9 @@ uvm_init(void)
 	uvmexp.pagemask = PAGE_MASK;
 	uvmexp.pageshift = PAGE_SHIFT;
 #else
-#define FAKE_PAGE_SHIFT 12
-	uvmexp.pageshift = FAKE_PAGE_SHIFT;
-	uvmexp.pagesize = 1<<FAKE_PAGE_SHIFT;
-	uvmexp.pagemask = (1<<FAKE_PAGE_SHIFT)-1;
-#undef FAKE_PAGE_SHIFT
+	uvmexp.pagesize = rumpuser_getpagesize();
+	uvmexp.pagemask = uvmexp.pagesize-1;
+	uvmexp.pageshift = ffs(uvmexp.pagesize)-1;
 #endif
 
 	mutex_init(&pagermtx, MUTEX_DEFAULT, IPL_NONE);

Reply via email to