Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Oct 2009 18:54:26 +0000 (UTC)
From:      Alan Cox <alc@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r198728 - in stable/8/sys: . amd64/include amd64/include/xen arm/include cddl/contrib/opensolaris contrib/dev/acpica contrib/pf dev/xen/xenpci i386/include ia64/include kern mips/includ...
Message-ID:  <200910311854.n9VIsQYQ099590@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: alc
Date: Sat Oct 31 18:54:26 2009
New Revision: 198728
URL: http://svn.freebsd.org/changeset/base/198728

Log:
  MFC r197316
    Add a new sysctl for reporting all of the supported page sizes.

Modified:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/param.h
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/arm/include/param.h
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/i386/include/param.h
  stable/8/sys/ia64/include/param.h
  stable/8/sys/kern/kern_mib.c
  stable/8/sys/mips/include/param.h
  stable/8/sys/powerpc/include/param.h
  stable/8/sys/sparc64/include/param.h
  stable/8/sys/sun4v/include/param.h
  stable/8/sys/sys/systm.h

Modified: stable/8/sys/amd64/include/param.h
==============================================================================
--- stable/8/sys/amd64/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/amd64/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -118,6 +118,8 @@
 #define	NBPML4		(1ul<<PML4SHIFT)/* bytes/page map lev4 table */
 #define	PML4MASK	(NBPML4-1)
 
+#define	MAXPAGESIZES	3	/* maximum number of supported page sizes */
+
 #define IOPAGES	2		/* pages of i/o permission bitmap */
 
 #ifndef	KSTACK_PAGES

Modified: stable/8/sys/arm/include/param.h
==============================================================================
--- stable/8/sys/arm/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/arm/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -104,6 +104,8 @@
 #define NBPDR		(1 << PDR_SHIFT)
 #define NPDEPG          (1 << (32 - PDR_SHIFT))
 
+#define	MAXPAGESIZES	1		/* maximum number of supported page sizes */
+
 #ifndef KSTACK_PAGES
 #define KSTACK_PAGES    2
 #endif /* !KSTACK_PAGES */

Modified: stable/8/sys/i386/include/param.h
==============================================================================
--- stable/8/sys/i386/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/i386/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -109,6 +109,8 @@
 #define NBPDR		(1<<PDRSHIFT)	/* bytes/page dir */
 #define PDRMASK		(NBPDR-1)
 
+#define	MAXPAGESIZES	2	/* maximum number of supported page sizes */
+
 #define IOPAGES	2		/* pages of i/o permission bitmap */
 
 #ifndef KSTACK_PAGES

Modified: stable/8/sys/ia64/include/param.h
==============================================================================
--- stable/8/sys/ia64/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/ia64/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -100,6 +100,8 @@
 #define PAGE_MASK	(PAGE_SIZE-1)
 #define NPTEPG		(PAGE_SIZE/(sizeof (pt_entry_t)))
 
+#define	MAXPAGESIZES	1		/* maximum number of supported page sizes */
+
 #ifndef	KSTACK_PAGES
 #define	KSTACK_PAGES	4		/* pages of kernel stack */
 #endif

Modified: stable/8/sys/kern/kern_mib.c
==============================================================================
--- stable/8/sys/kern/kern_mib.c	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/kern/kern_mib.c	Sat Oct 31 18:54:26 2009	(r198728)
@@ -204,6 +204,33 @@ SYSCTL_PROC(_hw, HW_USERMEM, usermem, CT
 
 SYSCTL_ULONG(_hw, OID_AUTO, availpages, CTLFLAG_RD, &physmem, 0, "");
 
+u_long pagesizes[MAXPAGESIZES] = { PAGE_SIZE };
+
+static int
+sysctl_hw_pagesizes(SYSCTL_HANDLER_ARGS)
+{
+	int error;
+#ifdef SCTL_MASK32
+	int i;
+	uint32_t pagesizes32[MAXPAGESIZES];
+
+	if (req->flags & SCTL_MASK32) {
+		/*
+		 * Recreate the "pagesizes" array with 32-bit elements.  Truncate
+		 * any page size greater than UINT32_MAX to zero.
+		 */
+		for (i = 0; i < MAXPAGESIZES; i++)
+			pagesizes32[i] = (uint32_t)pagesizes[i];
+
+		error = SYSCTL_OUT(req, pagesizes32, sizeof(pagesizes32));
+	} else
+#endif
+		error = SYSCTL_OUT(req, pagesizes, sizeof(pagesizes));
+	return (error);
+}
+SYSCTL_PROC(_hw, OID_AUTO, pagesizes, CTLTYPE_ULONG | CTLFLAG_RD,
+    NULL, 0, sysctl_hw_pagesizes, "LU", "Supported page sizes");
+
 static char	machine_arch[] = MACHINE_ARCH;
 SYSCTL_STRING(_hw, HW_MACHINE_ARCH, machine_arch, CTLFLAG_RD,
     machine_arch, 0, "System architecture");

Modified: stable/8/sys/mips/include/param.h
==============================================================================
--- stable/8/sys/mips/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/mips/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -115,6 +115,8 @@
 #define	SEGOFSET	(NBSEG-1)	/* byte offset into segment */
 #define	SEGSHIFT	22		/* LOG2(NBSEG) */
 
+#define	MAXPAGESIZES	1		/* maximum number of supported page sizes */
+
 /* XXXimp: This has moved to vmparam.h */
 /* Also, this differs from the mips2 definition, but likely is better */
 /* since this means the kernel won't chew up TLBs when it is executing */

Modified: stable/8/sys/powerpc/include/param.h
==============================================================================
--- stable/8/sys/powerpc/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/powerpc/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -98,6 +98,8 @@
 #define	PAGE_MASK	(PAGE_SIZE - 1)
 #define	NPTEPG		(PAGE_SIZE/(sizeof (pt_entry_t)))
 
+#define	MAXPAGESIZES	1		/* maximum number of supported page sizes */
+
 #ifndef KSTACK_PAGES
 #define	KSTACK_PAGES		4		/* includes pcb */
 #endif

Modified: stable/8/sys/sparc64/include/param.h
==============================================================================
--- stable/8/sys/sparc64/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/sparc64/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -121,6 +121,8 @@
 #define PAGE_SIZE_MAX	PAGE_SIZE_4M
 #define PAGE_MASK_MAX	PAGE_MASK_4M
 
+#define	MAXPAGESIZES	1		/* maximum number of supported page sizes */
+
 #ifndef KSTACK_PAGES
 #define KSTACK_PAGES		4	/* pages of kernel stack (with pcb) */
 #endif

Modified: stable/8/sys/sun4v/include/param.h
==============================================================================
--- stable/8/sys/sun4v/include/param.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/sun4v/include/param.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -116,6 +116,8 @@
 #define PAGE_SIZE_MAX	PAGE_SIZE_4M
 #define PAGE_MASK_MAX	PAGE_MASK_4M
 
+#define	MAXPAGESIZES	1		/* maximum number of supported page sizes */
+
 #ifndef KSTACK_PAGES
 #define KSTACK_PAGES		4	/* pages of kernel stack (with pcb) */
 #endif

Modified: stable/8/sys/sys/systm.h
==============================================================================
--- stable/8/sys/sys/systm.h	Sat Oct 31 18:46:55 2009	(r198727)
+++ stable/8/sys/sys/systm.h	Sat Oct 31 18:54:26 2009	(r198728)
@@ -54,6 +54,7 @@ extern int kstack_pages;	/* number of ke
 
 extern int nswap;		/* size of swap space */
 
+extern u_long pagesizes[];	/* supported page sizes */
 extern long physmem;		/* physical memory */
 extern long realmem;		/* 'real' memory */
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910311854.n9VIsQYQ099590>