Home | History | Annotate | Download | only in include
History log of /src/sys/arch/sun3/include/vmparam.h
RevisionDateAuthorComments
 1.38  01-Feb-2020  tsutsui Add MAX/MIN PAGE_SIZE and PAGE_SHIFT definitions of m68k for jemalloc(3).

Background:
- All m68k ports have fixed PAGE_SIZE value in their kernels,
but each port uses different PAGE_SIZE value (4096 or 8192)
due to historical reasons.
- Currently module(7) binaries are built per each port so
all m68k kernel sources don't support run-time variable PAGE_SIZE.
- MI <uvm/uvm_param.h> assumes that the port supports a variable
PAGE_SIZE on module(7) builds if both MAX_PAGE_SIZE and MIN_PAGE_SIZE
are defined and they have different values.
- On the other hand, jemalloc(3) checks MAX_PAGE_SHIFT in
src/external/bsd/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h
for internal optimization.
- m68k ports share userland binaries (especially pkgsrc binaries)
among all ports, so we need to define MAX_PAGE_SHIFT as 13 to
support m68k ports where PAGE_SIZE==8192.
(though this would affect only if static binaries built on
4k page hosts are executed on 8k page hosts)

To solve these inconsistency on PAGE_SIZE definitions,
we should have an independent PAGE_SIZE related definitions
for userland, but it requires major reorganization.
For now (especially for netbsd-9) we define MAX/MIN PAGE_SIZE and
PAGE_SHIFT values in <m68k/vmparam.h> only in !defined(_KERNEL) case.

Discussed on source-changes-d@ and tech-kern@ with christos@ and thorpej@:
https://mail-index.netbsd.org/source-changes-d/2020/01/thread1.html#012035
https://mail-index.netbsd.org/tech-kern/2020/01/thread1.html#025954

Should be pulled up to netbsd-9.
 1.37  07-Jan-2013  chs branches: 1.37.38; 1.37.42; 1.37.44;
switch to __USE_TOPDOWN_VM.
 1.36  06-Nov-2010  uebayasi branches: 1.36.8; 1.36.18;
Remove incomplete, never worked dynamic run-time memory registration
(uvm_page_physload(9)). This functionality will be re-added later.
 1.35  15-Oct-2010  tsutsui Make common kernel module binaries work on both sun3 and sun3x.
Tested on 3/160 (on TME) and (real) 3/80.

XXX: module files can be loaded only on single user?
 1.34  30-Apr-2010  pooka Raise the blade, make the change, don't quite rearrange to where
it's sane. But improves the non-monolithic kernel case anyway.
 1.33  28-Apr-2008  martin branches: 1.33.20; 1.33.22;
Remove clause 3 and 4 from TNF licenses
 1.32  02-Apr-2003  thorpej branches: 1.32.104; 1.32.106; 1.32.108;
Use PAGE_SIZE rather than NBPG.
 1.31  15-Nov-2001  soren MAXSLP is defined to be a machine-independent scheduling parameter,
so move it into sys/param.h.
 1.30  03-Jul-2001  chs branches: 1.30.2; 1.30.8;
move parts that are the same from vmparam3{,x}.h to vmparam.h.
 1.29  01-May-2001  thorpej Per discussion w/ chuck and chuck, restructure the md page stuff
to use a structure called "vm_page_md", and use __HAVE_VM_PAGE_MD
and __HAVE_PMAP_PHYSSEG.
 1.28  29-Apr-2001  thorpej Add a VM_MDPAGE_MEMBERS macro that defines pmap-specific data for
each vm_page structure. Add a VM_MDPAGE_INIT() macro to init this
data when pages are initialized by UVM. These macros are mandatory,
but ports may #define them to nothing if they are not needed/used.

This deprecates struct pmap_physseg. As a transitional measure,
allow a port to #define PMAP_PHYSSEG so that it can continue to
use it until its pmap is converted to use VM_MDPAGE_MEMBERS.

Use all this stuff to eliminate a lot of extra work in the Alpha
pmap module (it's smaller and faster now). Changes to other pmap
modules will follow.
 1.27  04-Feb-2001  jmc branches: 1.27.2;
In the LKM section add some things the LKM's need (since they aren't
defining _SUN3_ or _SUN3X_ generally to pickup the full vmparam.h

Added MAXDSIZ (set to sun3's limit) and VM_NFREELIST
 1.26  14-Nov-2000  thorpej Sun3 and Sun3x both use 8K pages. Make PAGE_* and friends into
compile-time constants.
 1.25  26-Jan-2000  tsutsui Remove obsoleted macros.
 1.24  04-Dec-1999  ragge CL* discarding.
 1.23  10-Apr-1999  gwr branches: 1.23.2; 1.23.8; 1.23.14;
Fix compile error in: sys/lkm/vfs/miscfs/procfs
 1.22  05-Apr-1999  gwr Move VM_PHYSSEG_MAX to the common vmparam.h (needed by LKMs).
 1.21  18-Feb-1999  gwr It appears that pmap_physseg is now required in userland. Too bad.
 1.20  05-Feb-1998  gwr Merge arch/sun3x into arch/sun3
 1.19  12-Jul-1997  perry branches: 1.19.8;
update comment from 1981 on memory and disk prices -- pr-2754 from Curt Sampson
 1.18  12-Jun-1997  mrg bring mrg-vm-swap2 onto mainilne.
 1.17  29-May-1997  gwr Increase the default datasize limit to 16MB (enough to build libc).
 1.16  27-Feb-1997  gwr branches: 1.16.2;
Define VM_MAX_KERNEL_ADDRESS using KERN_END instead of a constant.
 1.15  18-Jan-1997  gwr branches: 1.15.2; 1.15.4;
Define MACHINE_NONCONTIG here instead of in conf/std.sun3.
 1.14  26-Sep-1995  gwr New DVMA interface, and various cleanup.
 1.13  08-Aug-1995  gwr Add default value for SHMMAXPGS (from Jason Thorpe - fixes PR#1220)
 1.12  24-May-1995  gwr Update cpu_fork() to eliminate double mapping of kernel stacks.
 1.11  13-Feb-1995  gwr DVMA slave mapping support.
 1.10  21-Nov-1994  gwr Lots of changes. Fairly stable now.
 1.9  26-Oct-1994  cgd new RCS ID format.
 1.8  12-Dec-1993  glass snapshot of my private sources
 1.7  28-Aug-1993  glass last snapshot before uploading. we still have serious clock problems
 1.6  21-Aug-1993  glass snapshot. for uploading. gets lost in swtch after enablertclock()
 1.5  15-Aug-1993  glass runs up to and including configure().
todo: exceptions, interrupt support, make isrs affect vector table
kernel/user stacks
 1.4  13-Aug-1993  glass snapshot. ready to call configure(), partial integration of torek's config
stuff, i.e it looks to do the right thing but we haven't written any code
yet :)
 1.3  02-Aug-1993  glass stupid cleanup; fixes to mon.h; rewrote asm.h based on old asm.h
and the i386 one from jolitz
cleaned up ending of virtaul addr space.
 1.2  27-Jul-1993  glass new pmap module
 1.1  25-Jun-1993  glass adding include files...not much of this works
 1.15.4.1  12-Mar-1997  is Merge in changes from The Trunk
 1.15.2.1  12-Feb-1997  mrg initial work for dynamic swap additions.
 1.16.2.2  01-Jun-1997  mrg update to trunk.
 1.16.2.1  04-May-1997  mrg re-merge mrg-vm-swap into -current, and call it mrg-vm-swap2.
 1.19.8.3  05-Feb-1998  gwr OK, move some stuff back to the kernel-only part.
 1.19.8.2  04-Feb-1998  gwr Move a few things to the common file:
USRTEXT, MAXSLP, SAFERSS, VM_*
 1.19.8.1  27-Jan-1998  gwr Conditionally include *3.h or *3x.h as appropriate.
 1.23.14.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.23.8.3  11-Feb-2001  bouyer Sync with HEAD.
 1.23.8.2  22-Nov-2000  bouyer Sync with HEAD.
 1.23.8.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.23.2.2  10-Apr-1999  gwr Fix compile error in: sys/lkm/vfs/miscfs/procfs
 1.23.2.1  10-Apr-1999  gwr file vmparam.h was added on branch netbsd-1-4 on 1999-04-10 02:15:47 +0000
 1.27.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.30.8.2  08-Jan-2002  nathanw Catch up to -current.
 1.30.8.1  03-Jul-2001  nathanw file vmparam.h was added on branch nathanw_sa on 2002-01-08 00:28:19 +0000
 1.30.2.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.32.108.2  11-Aug-2010  yamt sync with head.
 1.32.108.1  16-May-2008  yamt sync with head.
 1.32.106.1  18-May-2008  yamt sync with head.
 1.32.104.1  02-Jun-2008  mjf Sync with HEAD.
 1.33.22.2  05-Mar-2011  rmind sync with head
 1.33.22.1  30-May-2010  rmind sync with head
 1.33.20.3  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.33.20.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.33.20.1  26-Apr-2010  uebayasi Remove the unfinished code to add a memory segment after uvm_page_init().
It doesn't even compile.

(In the future, we should allocate struct vm_page [] on the added memory
segment for NUMA's sake.)
 1.36.18.1  25-Feb-2013  tls resync with head
 1.36.8.1  23-Jan-2013  yamt sync with head
 1.37.44.1  29-Feb-2020  ad Sync with head.
 1.37.42.1  10-Feb-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #682):

sys/arch/next68k/include/vmparam.h: revision 1.27
sys/arch/mac68k/include/vmparam.h: revision 1.46
sys/arch/sun3/include/vmparam.h: revision 1.38
sys/arch/m68k/include/vmparam.h: revision 1.1
sys/arch/hp300/include/vmparam.h: revision 1.41
sys/arch/m68k/include/Makefile: revision 1.32
sys/arch/amiga/include/vmparam.h: revision 1.48
distrib/sets/lists/comp/ad.m68k: revision 1.63
sys/arch/x68k/include/vmparam.h: revision 1.40
sys/arch/mvme68k/include/vmparam.h: revision 1.38
sys/arch/luna68k/include/vmparam.h: revision 1.23
sys/arch/news68k/include/vmparam.h: revision 1.23
sys/arch/atari/include/vmparam.h: revision 1.34
sys/arch/cesfic/include/vmparam.h: revision 1.19

Add MAX/MIN PAGE_SIZE and PAGE_SHIFT definitions of m68k for jemalloc(3).

Background:
- All m68k ports have fixed PAGE_SIZE value in their kernels,
but each port uses different PAGE_SIZE value (4096 or 8192)
due to historical reasons.
- Currently module(7) binaries are built per each port so
all m68k kernel sources don't support run-time variable PAGE_SIZE.
- MI <uvm/uvm_param.h> assumes that the port supports a variable
PAGE_SIZE on module(7) builds if both MAX_PAGE_SIZE and MIN_PAGE_SIZE
are defined and they have different values.
- On the other hand, jemalloc(3) checks MAX_PAGE_SHIFT in
src/external/bsd/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h
for internal optimization.
- m68k ports share userland binaries (especially pkgsrc binaries)
among all ports, so we need to define MAX_PAGE_SHIFT as 13 to
support m68k ports where PAGE_SIZE==8192.
(though this would affect only if static binaries built on
4k page hosts are executed on 8k page hosts)

To solve these inconsistency on PAGE_SIZE definitions,
we should have an independent PAGE_SIZE related definitions
for userland, but it requires major reorganization.

For now (especially for netbsd-9) we define MAX/MIN PAGE_SIZE and
PAGE_SHIFT values in <m68k/vmparam.h> only in !defined(_KERNEL) case.

Discussed on source-changes-d@ and tech-kern@ with christos@ and thorpej@:
https://mail-index.netbsd.org/source-changes-d/2020/01/thread1.html#012035
https://mail-index.netbsd.org/tech-kern/2020/01/thread1.html#025954

Should be pulled up to netbsd-9.
 1.37.38.1  08-Apr-2020  martin Merge changes from current as of 20200406

RSS XML Feed