Home | History | Annotate | Download | only in include
History log of /src/sys/arch/amiga/include/vmparam.h
RevisionDateAuthorComments
 1.48  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.47  27-Mar-2019  christos branches: 1.47.4; 1.47.6;
- expose vmparams to userland on arm, like other archs do.
- remove unneeded includes
 1.46  30-Sep-2015  phx branches: 1.46.18;
Reduce MAXDSIZ from 416MB back to 224MB.
Due to limitations by the current pmap implementation our virtual address
space is limited to 512MB. A MAXDSIZ of 416MB would leave only a little bit
more than 30MB for shared objects and heap allocations, so 224MB seems like
a good compromise.
 1.45  19-Jun-2015  mlelstv remove obsolete comments
 1.44  13-Jun-2015  phx Use all the changes from
http://ftp.netbsd.org/pub/NetBSD/misc/mlelstv/vmparam.diff
after a discussion on port-m68k. I tested them on several Amiga models
and they seem to work fine.
This gives us the maximum virtual memory space for a process under the
current 512MB pmap limitation.
Also bump VM_KERNEL_PT_PAGES to allow up to 2 GB RAM.
 1.43  01-Jun-2015  phx Remove unused KUSER_AREA, SYSPTSIZE, USRPTSIZE.
Bump MAXTSIZ and MAXDSIZ to the same values atari is using.
This makes gcc 4.8 (/usr/libexec/cc1) load and execute.
 1.42  08-Feb-2011  rmind branches: 1.42.14; 1.42.30; 1.42.32;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.41  28-Dec-2010  mhitch branches: 1.41.2; 1.41.4;
Raise address of user stack to the highest safe (for 68040 mmu) address,
which increases available user address space by 256MB. One file in
pkgsrc/lang/php53 was too large for the amiga. Also remove an old
presumably outdated comment.
 1.40  06-Nov-2010  uebayasi Remove incomplete, never worked dynamic run-time memory registration
(uvm_page_physload(9)). This functionality will be re-added later.
 1.39  08-Dec-2009  tsutsui branches: 1.39.2; 1.39.4;
Use PGSHIFT from <machine/param.h> for PAGE_SHIFT.
We can assume PGSHIFT is always constant on current
m68k pmap_motorola implementation.
Also fix some leftover HP300 comments on some ports.
 1.38  26-Aug-2009  thorpej Minor tweak to the pv_table management in the Hibler-derived m68k pmaps:
The head of the list is now a pv_header, which contains the first pv_entry
as well as a 16-bit attributes field (replaces the pmap_attributes array
plus the pv_entry::pv_flags field) as a 16-bit count of caller-specified
cache-inhibited mappings.

Tested on hp300 (shared pmap_motorola.c), changes to atari and amiga copies
are purely mechanical.
 1.37  06-Mar-2009  joerg Remove SHMMAXPGS from all kernel configs. Dynamically compute the
initial limit as 1/4 of the physical memory. Ensure the limit is at
least 1024 pages, the old default on most platforms.
 1.36  17-Oct-2007  garbled branches: 1.36.20; 1.36.28; 1.36.30; 1.36.34;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.35  12-May-2007  mhitch branches: 1.35.10;
Final changes to amiga kernel address space layout to match almost all the
other m68k ports (initially from the yamt-km branch a long time ago).

- move Sysmap to the end of address space.
- move Amiga hardware mapping to immediately after Sysptmap.
- tweak virtual_avail/end accordingly.

A DEBUG kernel should now boot without panicing. Also, kernel address space
layout is now compatible with m68k/m68k/pmap_motorola.c.
 1.34  11-Dec-2005  christos branches: 1.34.24; 1.34.26; 1.34.30; 1.34.32; 1.34.38; 1.34.40;
merge ktrace-lwp.
 1.33  07-Aug-2003  agc branches: 1.33.16;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.32  02-Apr-2003  thorpej branches: 1.32.2;
Use PAGE_SIZE rather than NBPG.
 1.31  10-Dec-2002  thorpej Use __LDPGSZ (which must be == USRTEXT) as the text address for a.out
executables, and eliminate the USRTEXT constant, which was only used
by the a.out exec code.
 1.30  15-Nov-2001  soren MAXSLP is defined to be a machine-independent scheduling parameter,
so move it into sys/param.h.
 1.29  01-May-2001  thorpej branches: 1.29.2; 1.29.8;
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  14-Nov-2000  thorpej branches: 1.27.2;
We use 8K pages on the Amiga. Make PAGE_SIZE and friends into
compile-time constants.
 1.26  14-Feb-2000  is enlarge the initial kernel page table - needed for some 128 MB machine
 1.25  11-Feb-2000  thorpej Update for the NKMEMPAGES changes.
 1.24  26-Jan-2000  tsutsui Remove obsoleted macros.
 1.23  04-Dec-1999  ragge CL* discarding.
 1.22  25-Sep-1999  is branches: 1.22.2; 1.22.8;
vm_offset_t -> vaddr_t/paddr_t
 1.21  26-Apr-1999  thorpej Garbage-collect the VM_MBUF_SIZE constant. Instead, use the size
(nmbclusters * mclbytes), so that the right amount of KVA space is
allocated if those variables are patched.
 1.20  02-Oct-1998  is branches: 1.20.6; 1.20.8;
Yet another workaround for pmap bugs. Several reports on the port-amiga
list claim this helps with some big-machine situations.
 1.19  10-Jul-1998  mhitch Support two free memory lists; second list will be 16-bit Zorro II memory.
 1.18  22-Mar-1998  is MACHINE_NEW_NONCONTIG for NetBSD/Amiga. The older contiguous and
MACHINE_NONCONTIG stuff isn't supported anymore.
 1.17  11-Sep-1997  chopps branches: 1.17.2;
VM_MAX_ADDRESS is the user max address -- adjust
 1.16  12-Jul-1997  perry branches: 1.16.2;
update comment from 1981 on memory and disk prices -- pr-2754 from Curt Sampson
 1.15  12-Jun-1997  mrg bring mrg-vm-swap2 onto mainilne.
 1.14  21-Apr-1996  veego branches: 1.14.6; 1.14.10;
- Cleanup for -Wall and -Wstrict-prototypes
 1.13  26-Oct-1994  cgd new RCS ID format.
 1.12  02-Jul-1994  chopps increase SYSPTSIZE to 2 to accommodate zthreebus devices.
 1.11  13-Jun-1994  chopps some cleanup and various fixes for new fs code. plus some general
fixes from from osymh@gemini.oscs.montana.edu (Michael L. Hitch)
 1.10  04-Jun-1994  chopps fix long standing "bug" with pmap. Basically logic/misunderstanding
error commited when it was ported from hp300 (mach?). All
8M + amigas now gain ~1M of physical ram (4M hack removed).
Some minor cleanup. HAVEVAC code removed as it is for the hp300.
 1.9  10-Apr-1994  chopps also conform to standard style
 1.8  10-Apr-1994  chopps protect against multiple inclusion (and be consitent)
 1.7  23-Feb-1994  chopps added KUSER_AREA for gdb like things. removed HIGHPAGES
 1.6  17-Feb-1994  chopps amiga now has USRSTACK at 0x0e000000 for further sun compat.
 1.5  11-Feb-1994  chopps Add missing Id's
 1.4  26-Jan-1994  mw Updated headers from current amiga branch.
 1.3  30-Oct-1993  mw new tree for amiga, replacing the bogous previous one.
SunOS support works for a lot of executables now (static and dynamic).
 1.2  01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1  05-Jul-1993  mw branches: 1.1.1;
Initial revision
 1.1.1.1  05-Jul-1993  mw sys/arch/amiga tree. This is the machdep part required to get the kernel
up on an A3000. There are still (very) few changes required outside the
arch/amiga tree, so you can't recompile the kernel yet. Support for
third party SCSI controllers for the A2000 is on its way. The kernel is
fully functional (except for a missing ethernet-driver ...). This
tree is based on my version #390.
 1.14.10.1  04-May-1997  mrg re-merge mrg-vm-swap into -current, and call it mrg-vm-swap2.
 1.14.6.1  12-Feb-1997  mrg initial work for dynamic swap additions.
 1.16.2.1  16-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.17.2.1  03-Oct-1998  cgd pull up rev 1.20 from trunk (is)
 1.20.8.2  06-Aug-1999  chs take an initial guess at UBC parameters.
 1.20.8.1  21-Jun-1999  thorpej Sync w/ -current.
 1.20.6.1  15-Feb-2000  he Pull up revision 1.26 (requested by is):
Enlarge initial kernel page table. needed to boot some 128 MB
machines.
 1.22.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.22.2.2  22-Nov-2000  bouyer Sync with HEAD.
 1.22.2.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.

I updated the amiga SCSI drivers, but completely untested yet (may not even
compile)
 1.27.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.29.8.3  11-Dec-2002  thorpej Sync with HEAD.
 1.29.8.2  08-Jan-2002  nathanw Catch up to -current.
 1.29.8.1  01-May-2001  nathanw file vmparam.h was added on branch nathanw_sa on 2002-01-08 00:22:59 +0000
 1.29.2.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.32.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.32.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.32.2.1  03-Aug-2004  skrll Sync with HEAD
 1.33.16.1  03-Sep-2007  yamt sync with head.
 1.34.40.1  04-Jun-2007  wrstuden Update to today's netbsd-4.
 1.34.38.1  22-May-2007  matt Update to HEAD.
 1.34.32.1  11-Jul-2007  mjf Sync with head.
 1.34.30.1  27-May-2007  ad Sync with head.
 1.34.26.1  17-May-2007  yamt sync with head.
 1.34.24.2  16-Jan-2011  bouyer Pull up following revision(s) (requested by mhitch in ticket #1416):
sys/arch/amiga/include/vmparam.h: revision 1.41
Raise address of user stack to the highest safe (for 68040 mmu) address,
which increases available user address space by 256MB. One file in
pkgsrc/lang/php53 was too large for the amiga. Also remove an old
presumably outdated comment.
 1.34.24.1  23-May-2007  riz Pull up following revision(s) (requested by mhitch in ticket #659):
sys/arch/amiga/amiga/amiga_init.c: revision 1.95
sys/arch/amiga/include/vmparam.h: revision 1.35
sys/arch/amiga/amiga/pmap.c: revision 1.123
Final changes to amiga kernel address space layout to match almost all the
other m68k ports (initially from the yamt-km branch a long time ago).
- move Sysmap to the end of address space.
- move Amiga hardware mapping to immediately after Sysptmap.
- tweak virtual_avail/end accordingly.
A DEBUG kernel should now boot without panicing. Also, kernel address space
layout is now compatible with m68k/m68k/pmap_motorola.c.
 1.35.10.1  06-Nov-2007  matt sync with HEAD
 1.36.34.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.36.30.1  16-Jan-2011  bouyer Pull up following revision(s) (requested by mhitch in ticket #1518):
sys/arch/amiga/include/vmparam.h: revision 1.41
Raise address of user stack to the highest safe (for 68040 mmu) address,
which increases available user address space by 256MB. One file in
pkgsrc/lang/php53 was too large for the amiga. Also remove an old
presumably outdated comment.
 1.36.28.1  28-Apr-2009  skrll Sync with HEAD.
 1.36.20.3  11-Mar-2010  yamt sync with head
 1.36.20.2  16-Sep-2009  yamt sync with head
 1.36.20.1  04-May-2009  yamt sync with head.
 1.39.4.1  05-Mar-2011  rmind sync with head
 1.39.2.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.41.4.1  17-Feb-2011  bouyer Sync with HEAD
 1.41.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.42.32.3  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.42.32.2  22-Sep-2015  skrll Sync with HEAD
 1.42.32.1  06-Jun-2015  skrll Sync with HEAD
 1.42.30.3  06-Nov-2015  riz Pull up following revision(s) (requested by phx in ticket #989):
sys/arch/amiga/include/vmparam.h: revision 1.46
Reduce MAXDSIZ from 416MB back to 224MB.
Due to limitations by the current pmap implementation our virtual address
space is limited to 512MB. A MAXDSIZ of 416MB would leave only a little bit
more than 30MB for shared objects and heap allocations, so 224MB seems like
a good compromise.
 1.42.30.2  06-Nov-2015  riz Pull up following revision(s) (requested by phx in ticket #986):
sys/arch/amiga/include/vmparam.h: revision 1.44
Use all the changes from
http://ftp.netbsd.org/pub/NetBSD/misc/mlelstv/vmparam.diff
after a discussion on port-m68k. I tested them on several Amiga models
and they seem to work fine.
This gives us the maximum virtual memory space for a process under the
current 512MB pmap limitation.
Also bump VM_KERNEL_PT_PAGES to allow up to 2 GB RAM.
 1.42.30.1  29-Jun-2015  snj Pull up following revision(s) (requested by phx in ticket #841):
sys/arch/amiga/include/vmparam.h: revision 1.43
Remove unused KUSER_AREA, SYSPTSIZE, USRPTSIZE.
Bump MAXTSIZ and MAXDSIZ to the same values atari is using.
This makes gcc 4.8 (/usr/libexec/cc1) load and execute.
 1.42.14.1  03-Dec-2017  jdolecek update from HEAD
 1.46.18.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.46.18.1  10-Jun-2019  christos Sync with HEAD
 1.47.6.1  29-Feb-2020  ad Sync with head.
 1.47.4.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.

RSS XML Feed