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>