**************************************************************************
* Copyright 1990-1998, Silicon Graphics, Inc. 
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
* the contents of this file may not be disclosed to third parties, copied or 
* duplicated in any form, in whole or in part, without the prior written 
* permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to restrictions 
* as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
* and Computer Software clause at DFARS 252.227-7013, and/or in similar or 
* successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - 
* rights reserved under the Copyright Laws of the United States.
**************************************************************************
*
*#ident "$Revision: 1.278 $"

* This is a read-only file. User-specified tunables are stored
* in var/sysgen/stune file.
*
* kernel
*



* tunables that turn on/off features
*
* nosuidshells: to allow setuid shells set to 0
* restricted_chown = 1   bsd style chown(2), only super-user can give away files
* restricted_chown = 0 sysV style chown(2), non super-user can give away files
* posix_tty_default = 0 ==> run our default line discipline and settings
* posix_tty_default = 1 ==> match tty parameters/POSIX test assumptions
* use_old_serialnum = 1 ==> Force the kernel to use the old method of
*			calculating a 32-bit serial number for sysinfo -s.
*			This variable only affects Onyx/Challenge L/XL systems.
* reboot_on_panic = -1 ==> Use machine dependent reboot after panic semantics.
* reboot_on_panic =  0 ==> Do not reboot the system after a panic (wait for
*			user to hit the system reset button).
* reboot_on_panic =  1 ==> Automatically reboot the system after a panic.
* restrict_fastprof = 1 ==> Don't allow users to do fast (1ms) user level
*			profiling.
* restrict_fastprof = 0 ==> Allow users to do fast (1ms) user level profiling.
* ip26_allow_ucmem = 0 ==> Accessing system memory uncached on Power Indigo2
*			and Indigo2 10000 is illegal and will cause a
*			system crash.
* ip26_allow_ucmem = 1 ==> Accessing system memory on Power Indigo2 and
*			Indigo2 10000 is always legal.  This comes at a
*			large memory access performance hit.
* reset_limits_on_exec = 1 ==> Reset rlimits on exec of processes that are
*			setuid to root to prevent unprivileged processes from
*			enforcing resource limitations on setuid/setgid procs.
* reset_limits_on_exec = 0 ==> Don't reset limits on execs of setuid procs.
*			Warning: Allowing non-root user to enforce
*			resource limitations on setuid/setgid to root
*			program can compromise system security. Do
*			not set this option to zero unless you are
*			sure all setuid/setgid to root programs on
*			your system can recover from problem caused
*			by resource limit.
* tty_auto_strhold = 1 ==> automatically sets STRHOLD on ttys/ptys whenever
*			the line discipline is in canonical & echo mode and
*			automatically clears STRHOLD otherwise.
* tty_auto_strhold = 0 ==> STRHOLD on ptys/ttys is entirely under user control.
* add_kthread_stack = 0 ==> no additional kthread stack for kernel daemons
* add_kthread_stack != 0 ==> add add_kthread_stack bytes to kernel daemon stack
* xpg4_sticky_dir = 1 ==> write access to a file does not imply it is
*			  removable in a directory with the sticky bit set
* xpg4_sticky_dir = 0 ==> write access to a file implies that it is
*			  removable in a directory  with the sticky bit set
* mload_auto_rtsyms = 0 ==> Disable auto-loading of kernel's run-time symbol
*                           table for dynamic driver/module loading.
* disable_ip25_check = 1 ==> Disable boot time checking for valid (SUPPORTED)
*			SCC/R10k configurations.
* disable_r10k_log = 0 ==> Disable boot time logging of R10k config params.
*			such as clk divisors etc.
* spec_udma_war_on = 1  ==> speculative store userdma workaround
* async_udma_copy = 1 ==> proactively copy shared userdma pages
* enable_pci_BIST = 0	==> Causes the Built In Self Test on PCI boards to
*			be run if the board supports it. Default is not to
*			run tests.
* ip32_pci_enable_prefetch = 0 ==> Do not enable the PCI prefetch buffers
*                                  in MACE.
* ip32_pci_enable_prefetch = 1 ==> Enable the PCI prefetch buffers in MACE.
* ip32_pci_flush_prefetch = 0 ==> If prefetch is disabled, then
*                                 pciio_flush_buffers() is disabled.
* ip32_pci_flush_prefetch = 1 ==> If prefetch is disabled,
*                                 pciio_flush_buffers() will still flush the
*                                 prefetch buffers.
* ignore_sysctlr_intr = 1 ==> Completely ignore system controller (O200/O2000)
* powerfail_cleanio = 1 ==> Reset all hub I/O immediately at AC power loss
*			Should be enabled for database apps (O200/O2000)
* intr_revive_dealy ==>  seconds until the MSC interrupts are reenabled 
* xbox_sysctlr_poll_interval ==> seconds between consecutive polls of the
*				 xbox system controller status
* clean_shutdown_time ==> Max seconds allowed for clean shutdown (init 0)
*			  after system power-off is requested
* ignore_xsc => Ignore the xbox system controller
* snerrste_pages_per_cube ==> number of pages allocated for error state at
*				system reset per cube. A cube is 16 nodes
* xpc_override = 0 ==> 	Default.
*		 1 ==>	Override restrictions required for XPC.
* origin_use_hardware_bzero = 0 ==> Default
*	0 ==> Use the processor to zero pages.
*	1 ==> Use the Origin hardware block transfer engine to zero pages. 
* use_old_flock = 0 ==> Default
*       0 ==> Use new flock implementation which wakes up only those
*             waiting for a file-and-record lock which actually can 
*             get the lock being awaited.  This rewritten flock
*             substantially improves performance when file and 
*             record locks have high contention
*       1 ==> Use the old flock implmentation which awakes all
*             waiters.  This is to allow a fall back in case problems
*             are suspected in the new flock implementation.  This
*             systune variable and the old flock implementation will
*             be removed in a subsequent 6.5.x release
* ensure_no_rawio_conflicts = 1 ==> Default
*	0 ==> Allow the kernel to concurrently perform user space DMA for
*		network sends and user space DMA for other raw I/O on the same
*		page.  Running in this mode can possibly cause the system to
*		panic if this scenario is exercised by applications.
*	1 ==> Prevent the kernel from concurrently performing user space DMA
*		for network sends and user space DMA for other raw I/O on the
*		same page.  This ensures that this scenario will be performed
*		safely when encountered.
* dbe_recovery = 1 ==> Default
*	0 ==> Do not attempt to recover from double bit errors during page_zero.
*	1 ==> Attempt to recover from double bit errors during page_zero.
*

switch:	static

* name			default      	minimum		maximum
nosuidshells 		1
restricted_chown 	0
posix_tty_default	0
use_old_serialnum	0
reboot_on_panic		-1
restrict_fastprof	0
reset_limits_on_exec	1
ip26_allow_ucmem	0
add_kthread_stack	0
xpg4_sticky_dir		1
mload_auto_rtsyms	1
disable_ip25_check	0
prod_assertion_level	0		0		100
disable_r10k_log	0
r10k_halt_1st_cache_err 0
r10k_cache_debug	0
perfcnt_arch_swtch_sig	0
perfcnt_arch_swtch_msg  0
enable_upanic           0
spec_udma_war_on	1
warbits_override	-1
enable_pci_BIST		0
ip32_pci_enable_prefetch 0
ip32_pci_flush_prefetch 1
ignore_sysctlr_intr	0
powerfail_cleanio	0
intr_revive_delay	300
powerfail_routerwar	1
xbox_sysctlr_poll_interval 60		5		3600
clean_shutdown_time	120
ignore_xsc		0		0		1
snerrste_pages_per_cube	1		1		4
xpc_override		0
origin_use_hardware_bzero	0
use_old_flock		0
cpulimit_gracetime	0		0		86400

switch: run
* name			default      	minimum		maximum
tty_auto_strhold	0
async_udma_copy		1
ensure_no_rawio_conflicts	1
dbe_recovery		1

* miscellaneous static tuneables
*
* io4ia_userdma_war	enable the error checking for concurrent user
*			dma operations into the same physical memory
*
* ignore_conveyor_override override the code that ignores directives
*			   to put the io in conveyor belt mode on SN0
*
misc: static

* name			default		minimum		maximum
io4ia_userdma_war	1
ignore_conveyor_override	0	0		1

* 
* io4ia_war_enable	Enable io4ia_war on all configurations (without
*			checking if this configuration needs this).
*			To be used ONLY for testing purposes. It should 
*			be used only to enable io4ia_war on systems for
*			testing. Useful only on Challenge/Onyx platforms.
*
* name                  default         minimum         maximum
io4ia_war_enable	0

* tuneables for potential IO devices causing Bpush problems
*			default		minimum		maximum
* Enable/disable Bpush WAR. 
bpush_war_enable	1		0		1
*	value 0x26 corresponds to PCI Shoebox.
bpush_source1		0x26		0x26		0x26
* Following are place-holders for future devices that could require bpush war
bpush_source2		0		0		0
bpush_source3		0		0		0
bpush_source4		0		0		0

* miscellaneous dynamic tuneables 
*
* r4k_div_patch = 1	turn on exec patch code for binaries that have been
*			processed with r4kpp for divide in branch delay slot
*			problem that occurs on R4000 SC rev 2.2 and 3.0 parts.
* corepluspid = 1	name core file as "core.pid"
* panic_on_sbe = 1	special factory debugging mode
* sbe_log_errors = 1    log single bit errors to SYSLOG (logging is turned
*                       off by default in Irix 6.5.5+)
* sbe_mem_verbose	set verbosity of sbe reporting; see flag definitions
*			in sys/SN/SN0/memerror.h
* sbe_mfr_override = 1 	overrides default action of disabling sbe's 
*			if rate of sbe's exceeds predetermined limit
* sbe_report_cons = 1   report single bit errors to console also
* sbe_maxout 		maximum number of single bit errors before
*			sbe monitoring is disabled
* sbe_max_per_page	maximum number of single bit errors before offending
*			page is marked bad
* ecc_recover_enable = 0  ==> don't attempt to recover from multibit errors
*		     > 0  ==> attempt to recover from some cases of multibit
*				errors, but no more than 32 errors every
*				"ecc_recover_enable" seconds (default 60 secs)
* munlddelay = 5	timeout for auto-unload for loadable modules
* dump_level = 0	dump only putbuf during panic
*              1	also dump static kernel pages
*              2	also dump dynamic kernel pages
*              3	also dump buffer cache pages
*              4	also dump free pages
*
*
*                       dump_hub_info is only effective on SN0 platforms and
*                       accepts the following values:
*
* dump_hub_info	= 0	do not dump information from the hub;
*		= 1	dump the register information that is contained within
*			the hub;
*		= 2	dump information from the hub: directory words high
*			and low and the protection and reference counter word,
*			associated with each page which is dumped.
*
* heartbeat_enable = 0  ==> No heartbeat monitoring (avail. O200/O2000)
*                  = 1  ==> Send hbt to MSCs once a minute.  On missed hbt,
*			MSC sends NMI to force dump, and then resets system.
*
* mmap_async_write =
*		0 ==>	don't allow kernel to take references to read-only
*			MAP_SHARED non-anonymous memory in the write path.
*			This is the default and reflects standard UNIX
*			semantics.
*		1 ==>	allow kernel to take references to read-only MAP_SHARED
*			non-anonymous memory in order to avoid having to copy
*			data in the write path.  Normally this only happens for
*			anonymous memory (/dev/zero, bss, stack, etc.) which
*			is safe to do because we mark that as copy-on-write and
*			no one outside the share group can get at anonymous
*			memory.  The extension of this semantic to read-only
*			MAP_SHARED memory should be used with caution and
*			knowledge of it's potential effects.  Normally, once
*			write() has returned UNIX semantics guarantee that
*			whatever data was written has now been scheduled for
*			delivery and nothing can change that data.  With this
*			option, a write() will return immediately after
*			scheduling the referenced file data for delivery.  If
*			the file is then modified before the file data has
*			been transfered, then the *modified* data will be
*			written instead of the file data at the time of the
*			write() call ...   The advantage of using this
*			semantic is that it enormously reduces the amount of
*			data copying in applications like web serving, etc.
*			which can result in fairly substantial savings.
* gather_craylink_routerstats =
*                       Gather craylink router statistics (like sequence
*                       number errors, checkbit errors etc).
*                       This variable is off by default.
*
*                       This should be turned on, for output from 'linkstat'
*                       to be useful.
*
*                       This variable can be turned on at runtime.
* r4k_corrupt_scache_data = 0	factory test code option, may corrupt data
* ip32_pio_predelay = 5	Delay in microseconds before pio read on IP32.
* ip32_pio_postdelay = 5  Delay in microseconds after pio read on IP32.
* 
* crime_rev		Variable set by system based on crime rev
*	                The min/max are set to make this variable Readonly.
*
* cpu_prid		The processor id of the CPU (IP32 only).
* 			The min/max are set to make this variable Readonly.
*
* max_shared_reg_refcnt Maximum reference count on shared regions.  MAP_SHARED
*			regions are normally shared on fork, however if a
*			process has too many children, then there can be
*			contention for the region lock.  The tradeoff is
*			the extra overhead needed to duplicate the region
*			if it's not going to be shared.  A value of 1 causes
*			the MAP_SHARED regions to never be shared on fork.
* peer_peer_dma         This tunable SHOULDNOT BE TURNED ON unless the user
*                       has a pci card in the o2 pci slot from which a
*                       dma is needed to another io device bypassing the
*                       host memory.
* hub_intr_wakeup_cnt   Default value is 1, which will work for most drivers.
*                       Some unusual drivers may depend on the interrupt
*                       routine being called once for every interrupt.
*                       This behavior is never guaranteed, but these drivers
*                       may work better if you set this to a larger value,
*                       but never more than 0x7000.
* pci_user_dma_max_pages Allow the user to specify maximum dma area
*
* mrlock_starve_threshold Number of times to attempt to acquire an mrlock 
*			before falling back to a guaranteed locking
*			algorithm. A value of 0 results in the original
*			locking algorithm. Non-zero values normally give
*			better performance by reducing the average delay
*			on contended locks, although the maximum delay may be
*			larger.

misc: run

* name			default		minimum		maximum
r4k_div_patch		0
corepluspid		0
panic_on_sbe		0
sbe_log_errors		0
sbe_mem_verbose		0
sbe_mfr_override	0
sbe_report_cons		0
sbe_maxout		600
sbe_max_per_page	60
ecc_recover_enable	60
module_unld_delay	5		0
dump_level		4
dump_hub_info		2		0		2
heartbeat_enable	0
craylnk_bypass_disable	0
disable_sbe_polling	0		0		1
rpparm_maxburst_val	0x24		0x1		0x3ff
mmap_async_write	0		0		1
r10k_intervene		1
r10k_progress_nmi	0
r10k_check_count	30000
r10k_progress_diff	200000000	0		0x7fffffffffffffff ll
gather_craylink_routerstats     1       0               1
ip32_pio_predelay	5		0
ip32_pio_postdelay	5		0
crime_rev		0		0x100		0xff
cpu_prid		0		0x100		0xff
max_shared_reg_refcnt	4		1
peer_peer_dma           0
counter_intr_panic 	0
hub_intr_wakeup_cnt	1		1		0x7000
pci_user_dma_max_pages  128		1
fpcsr_fs_bit		1		0		1
mrlock_starve_threshold	3		0		10

*
* 
* Tuneables to enable hardware specific parameter on Origin200/Origin2000.
*
* Rev of bridge supporting prefetch.
pcibr_prefetch_enable_rev	3

* Rev of bridge supporting write gathering.
pcibr_wg_enable_rev		4

* Turn off panic for Rev B bridge on LLP retry
* (which was put in to control silent data corruption)
bridge_rev_b_data_check_disable		0

* This is used only by O200/O2000 kernels
full_fru_analysis	1
* Minimum confidence required for disabling a fru
fru_disable_confidence	90

* Disable specific BTE operations depending on CPU count. 
* 0 count enables
disable_bte                 0
disable_bte_pbcopy         64
disable_bte_pbzero         64
disable_bte_poison_range    0 

* SN0 specific, should not be changed !
*
iio_icmr_precise        1
iio_icmr_c_cnt          6
iio_bte_crb_count       2
iio_ictp                0x800
iio_icto                0xff
la_trigger_nasid1       -1
la_trigger_nasid2       -1
la_trigger_val          0xdeadbeefbeefcafe      0       0xffffffffffffffff ll

misc: static
r4k_corrupt_scache_data	0

l2_sbe_reset_sec        60
* systune l2_sbe_check
*
* 0x0000       no test
* 0x0001       R10K
* 0x0002       R12K
* 0x0004       R12KS
* 0x0008       R14K
* 0x0010       reserved CPU type
* 0x0020       reserved CPU type
* 0x0040       reserved CPU type
* 0x0080       reserved CPU type
*
* 0x0100       verbose output
l2_sbe_check          0x0000


* debug enable/disable static tunables
*
* utrace_bufsize	Utraces are a lightweight tracing mechanism used to
*			collect kernel debugging information.Selects the number
*			of 48-byte utrace entries stored for each CPU.  Setting
*			utrace_bufsize to zero disables trace collection.
*			Note: currently, only buffer sizes of zero and 2048
*			(NUMB_KERNEL_TSTAMPS in sys/rtmon.h) entries are
*			supported.
debug: static

* name			default		minimum		maximum
utrace_bufsize		0		0		0x7fffffff

* debug enable/disable dynamic tunables
*
* kmem_do_poison	This tunable is always present, but has no effect
*			unless the kernel memory allocator debugging module
*			has been installed and configured into the running
*			kernel.
*
*			Since the purpose of the facility is to immediately
*			halt the system upon detection of certain types of
*			errors involving allocated memory, SGI strongly
*			suggests that memory poisoning only be used with
*			the assistance of your SGI customer support
*			representative.
*
*                       Turning this option on will affect performance.  The
*                       extent to which performance is degraded will depend
*                       on the application load.  Currently the maximum
*                       observed degradation has been 15%.
*
*			To install and configure kernel memory debugging,
*			the eoe.sw.kdebug package must be installed if it
*			hasn't already.  In the irix.sm file, the kmem_debug
*			module is substituted for the kmem module as described
*			by the comments in that file.  Lastly, build a new
*			kernel using autoconfig.
*
*			Errors involving allocated memory, for example using
*			a pointer to a previously allocated memory block after
*			the block has been freed, are notoriously hard to debug.
*			Often the first symptom arises long after the event and
*			in a totally unrelated areas.  Memory poisoning attempts
*			to detect these sorts of errors closer to their source
*			by writing over free()'ed memory and allocations of
*			small memory chunks with the return address of the
*			caller with a 1 or'ed in the lower bit (in order to
*			cause BUS errors if one of the words is used as a
*			pointer).  The point of this is to try to catch
*			accesses to freed memory and code that assume that
*			newly allocated memory is zero'ed.
*
* kmem_make_zones_private_min
* kmem_make_zones_private_max
*
*			As with the kmem_do_poison tunables above
*			these two tunables are always present, but
*			have not effect unless the kernel memory
*			allocator debugging module has been installed
*			and configured into the running kernel.
*
*			The kernel memory allocator debugging module
*			is installed with eoe.sw.kdebug.  To configure
*			the module into the kernel see the notes in
*			irix.sm for kmem.a and kmem_debug.a.
*
*			These two tunables may be set to the size
*			in bytes of the range of zones to be split.
*			The size of the zone to be split for debugging
*			will usually be known from a stack trace, or
*			from the output of the idbg or icrash zone
*			commands.  If an entire zone is split, the
*			bounds tunables must be set to the upper
*			and lower range of the zone.  For example, if
*			you have determined that a problem is ocurring
*			with some user of the 48 byte zone, you will need
*			to specify the range 33 to 48.
*
*			The range split may be extended accross multiple
*			zones, but there is limited table space for zones.
*			Depending on the configuration there will be
*			space for ~20-30 new zones.  The number of new
*			zones created by splitting can be determined from
*			the output of the idbg zone command.
*
* utrace_mask		Each bit controls the collection of a particular
*			category of information.  See the RTMON_xxx macros in
*			sys/rtmon.h.
*
* power_button_changed_to_crash_dump	change the power button to
*                       take crash dump in case the system 'hangs'.
*                       The soft-power intr condition that the RTC on
*			IP32 and IP22 platforms provide is polled,
*			when this variable is enabled, from the
*			r4kcounter_intr (SR_IP7) handler.
*
debug: run

* name			default		minimum		maximum
kmem_do_poison		1		0		1
kmem_make_zones_private_min 0		0		16384
kmem_make_zones_private_max 0		0		16384
utrace_mask		0xfff3f		0		0x7fffffffffffffff ll
power_button_changed_to_crash_dump 0

* r12k_bdiag		bits <26:23> defines ghistory in R12K
*			bit  <27> disables the branch target address cache
r12k_bdiag		0		0		0x0f800000

*
* tunables that set the limit
*
* ncargs is max # bytes of arguments passed during an exec(2)
* shlbmax :  Maximum number of libraries that can be
*            attached to a process at one time.
* maxwatchpoints:  maximum watchpoints per process
* nprofile: number of disjoint text spaces to be profiled 
* maxsymlinks is the maximum number of symlinks expanded in an pathname.
* reserve_ncallout: number of reserved callouts 
* maxup: the maximum number of processes per user, should always smaller than
*	 nproc
*
* reserve_ncallout auto-config: max(5,numcpus)
* maxup limit: nproc - 20
* idbgmaxfuncs = 1200   maximum number of dynamically loaded idbg functions

limits:	run

* name			default      	minimum		maximum
ncargs 			20480		5120		262144
shlbmax 		8		3		32
maxwatchpoints 		100		1		1000
nprofile 		100		100		10000
maxsymlinks 		30		0		50
maxup			0		15		30000
idbgmaxfuncs		1200

*
* tunables for resource limit
* 'cur' may be changed via any shell or setrlimit
* Limits specified as 0x7fffffffffffffff implies no limit.
*
* Note: rlimit_nofile_max must not be set to an unreasonably large value
* since many daemons/programs use rlimit_nofile_max as an indication
* of how many file descriptors to close when they want to close them all.
*

resource:	static

* name			default      		minimum	  maximum
rlimit_cpu_cur  	 0x7fffffffffffffff 	0	0x7fffffffffffffff ll
rlimit_cpu_max 		 0x7fffffffffffffff 	0	0x7fffffffffffffff ll
rlimit_fsize_cur 	 0x7fffffffffffffff 	0	0x7fffffffffffffff ll
rlimit_fsize_max 	 0x7fffffffffffffff 	0	0x7fffffffffffffff ll
rlimit_data_cur 	 0			0	0x7fffffffffffffff ll
rlimit_data_max 	 0			0	0x7fffffffffffffff ll
rlimit_stack_cur 	 0x04000000		0	0x7fffffffffffffff ll
rlimit_stack_max 	 0x20000000		0	0x7fffffffffffffff ll
rlimit_core_cur 	 0x7fffffffffffffff 	0	0x7fffffffffffffff ll
rlimit_core_max 	 0x7fffffffffffffff 	0	0x7fffffffffffffff ll
rlimit_vmem_cur 	 0			0	0x7fffffffffffffff ll
rlimit_vmem_max 	 0			0	0x7fffffffffffffff ll
rlimit_rss_cur 		 0			0	0x7fffffffffffffff ll
rlimit_rss_max 		 0x20000000		0	0x7fffffffffffffff ll
rlimit_nofile_cur 	 200			40	0x7fffffffffffffff ll
rlimit_nofile_max 	 2500			0	0x7fffffffffffffff ll
rlimit_pthread_cur	 0x400			1	0xffff ll
rlimit_pthread_max	 0x400			1	0xffff ll

*
* tunables that depend on nproc
*
* nproc: maximum number of processes
* ndquot: maximum number of file system quota structures
* ncallout: initial # of callouts -- used to implement timeout calls
* ncsize: directory-name lookup cache size
* nclrus: number of dnlc name lists
* ngroups_max: maximum number of groups to which user can belong
*
* Current nproc auto-config calculation: 40 plus
*	4 processes per MB for the 1st GB
*	2 processes per MB for the next GB
*	1 process per MB for 2-4 GB,
*	1 process per 2 MB for 4-8 GB,
*	1 process per 4 MB for 8-16 GB,
*   maximum nproc: 32767
* ndquot auto-config: 200 + 2*nproc
* ncsize auto-config: 200 + 2*nproc
* ncallout auto-config: nproc/2
*
* NOTE: Even though nproc can be set to a value greater than the auto-
* configuration value, the amount of physical memory and and swap space
* may be insufficent to support that value.
*
numproc:	static

* name			default      	minimum	  maximum
nproc			0		30	32767	/* auto-config */
ndquot			0		268	6200	/* auto-config */
ncallout 		0		20	5000	/* auto-config */
ncsize 			0               268     1000000 /* auto-config */
ngroups_max 		16		0	32
nclrus 			0               1       128	/* auto-config */
nlog			0		1	1000000	/* auto-config */

*
* The following is for STREAMS.
*
streams:	static

* name			default      	minimum	  maximum
nstrpush 		 8		5	   10
nstrintr		 1024		32	   4096
strmsgsz 		 0x8000
strctlsz 		 1024
strpmonmax		 4		0	   1024

streams:	run

* name			default      	minimum	  maximum
strholdtime		50		0	  1000

*
* cpu actions -- interprocessor communication blocks
* nactions: number of action block, autoconfigure if 0
*
* nactions auto-config: max((maxcpus+60), (maxcpus*(maxcpus/2)))
*

actions:	static

* name			default      	minimum	  maximum
nactions 		0		60	   200	/* auto-config */

*
* tunables for queued signals
*
* maxsigq: used by sigqsetup()  - Posix.4 required at least 32
* since svr4 SA_SIGINFO signals also share this, make maxsigq >= NSIG+32
* results in
* sysconf(SIGQUEUE_MAX) = maxsigq - NSIG
*
signals:	run

* name			default      	minimum
maxsigq 		128		32

*
* tunables for timer
*
* fasthz: profiling/fast itimer clock speed. 
*
* itimer_on_clkcpu = 1 10 ms itimer request is queued on the clock processoro
* itimer_on_clkcpu = 0 0 ms itimer request is queued on the runing processor
* If a process does a setitimer then uses gettimeofday() to compare the
* accuracy of the itimer delivery then itimer_on_clkcpu should be set.
* If on the otherhand, itimer request is used to implement a user frequency
* based scheduler then itimer_on_clkcpu should be 0.
*
* timetrim: The clock is adjusted by this signed number of nanoseconds 
*	    every second. It is limited to 3 milliseconds or 0.3% in clock.c.
*	Timed(1M) and timeslave(1M) put suggested values in /usr/adm/SYSLOG.
*
timer:	static

* name			default      	minimum	  maximum
fasthz 			1000		500	   2500	
itimer_on_clkcpu 	0
timetrim 		0

*
* tunables for memory size
*
* maxpmem: the maximum physical memory to use, if maxpmem = 0,
*	   then use all available physical memory.
* syssegsz: max pages of dynamic system memory,
* maxdmasz: max dma transfer (in pages), must be no more than syssegsz / 2
* 	    and less than maxpmem  It is set to what it would be plus 1
*	    so that file system direct I/O can report a reasonably aligned
*	    maximum I/O size (maxdmasz - 1).
* maxpglst: maximum number of pages that can be held in each
*	    of the pager's pageout queues
*
* syssegsz auto-config: min(max(KB(mem)/2,0x2000),KSEGSIZE)
*
* Note: KSEGSIZE is system-specific, and defined (in bytes) in
*	<sys/mips_addrs.h>.  Thus, the maximum value given here
*	is just a WAG.
*
* maxdmasz auto-config: syssegsz/2
* maxpglst auto-config: min(max(KB(mem)/2048,100)+(numcpus-1)*16,1000)
*
* scache_pool_size: 	Amount of memory always kept in reserve for use by the
*			paging daemon.  The value is the number of Kbytes 
*			reserved which is always rounded up to next page
*			boundary.  WARNING: this parameter should not be 
*			changed lightly.  Setting it too low will result in
*			memory deadlocks.  Setting it too high wastes memory.
*			If the system panics with the message 
*				"scache... out of memory", 
*			then this tuneable should be increased.  Otherwise,
*			it should be left alone.
*
memsize:	static

* name			default      	minimum	  maximum
maxpmem			0		1024
syssegsz,32		0		0x2000	  0x20000   /* auto-config */
syssegsz,64		0		0x2000	  0x10000000 /* auto-config */
maxdmasz,32		1025		1024	  syssegsz  /* auto-config */
maxdmasz,64		257		256	  syssegsz  /* auto-config */
maxpglst		0		50	  1000	    /* auto-config */
scache_pool_size	32		8		    /* in Kbytes   */

*
* Tuneable Paging parameters	
*
* gpgslo: If freemem < gpgslo, then start to steal pages from processes.
* gpgshi: Once we start to steal pages, don't stop until freemem > gtpgshi.    
*	  gpgshi defaults to 1/12 of memory; gphslo defaults to gpgshi/2.
* gpgsmsk: Mask used by getpages to determine whether a page is stealable.
* maxsc: The maximum number of pages which will be swapped out in a single
*   	 operation.
* maxfc: The maximum number of pages which will be saved up and freed at once.
* maxdc: The maximum number of pages which will be saved up and written to
*	 disk (mappd files) at once.
* maxumem: Obsolete - see RLIMIT_VMEM
* minarmem: The minimum available resident (not swapable) memory to maintain in
*	    order to avoid deadlock.
* minasmem: The minimum available swapable memory to maintain in order to avoid
*	    deadlock.
* maxlkmem: The maximum amount of lockable pages per process
* tlbdrop: Number of ticks before a procs wired entries are flushed
* rsshogfrac: Fraction of memory RSS hogs can use
* rsshogslop: # pages excess of RSS before slow down process
* dwcluster: Maximum number of delayed write pages to cluster in each push.
* bdflushr: bdflushr is used to compute what fraction (nbuf/bdflushr) of the 
*           buffers are examined by bdflush when it wakes up 
*           determine whether the delayed-write, aged buffers should to be 
*           flushed to disk. 
* bdflush_interval: Interval at which bdflush runs, in 10ms ticks.
* autoup: The age a delayed-write buffer must be, in seconds,
*	  before bdflush will write it out.
* vfs_syncr: The rate at which vfs_syncr is run, in seconds.
* min_file_pages: The minimum number of file pages to keep in the cache
*                 when memory gets low.  It is autoconfigured to
*                 3% of the system's memory if it is 0.  When setting,
*		  remember that the page size is 4k in 32 bit kernels
*                 and 16k in 64 bit kernels.
* min_free_pages: When the number of file pages is above min_file_pages,
*		  this is the minumum number of free pages.
*		  The default value for min_free_pages is gpgshi * 2 for
*		  systems with less than 600M of memory. For larger memory
*		  systems, the default is gpgshi * 4.
* min_bufmem: The minimum number of metadata pages to keep in the cache 
*	      when memory gets low. It is autoconfigured to 2% of the 
*	      system's memory if it is 0. 
* shaked_interval: The number of seconds between runs of the shaked
*                  daemon when memory is low.
*
* zone_accum_limit: Percentage of memory (in a node on a NUMA system) that can
* 		be accumulated before shaked is kicked off to shake the zone
* 		to free memory back into the global pool. It is set to 30%.
*		which means if amount of free memory kept in zones exceed 
*		30% we kick shaked.
*
* cwcluster: Maximum number of commit write pages to cluster in each push

paging:		run

* name			default      	minimum	  maximum
gpgslo			0
gpgshi			0		30
gpgsmsk			2		0	   7
maxsc			0		8	  maxpglst
maxfc			0		50	  maxpglst
maxdc			0		1	  maxpglst
bdflushr		5		1	  31536000
bdflush_interval	100		10
vfs_syncr		30		1	  31536000
minarmem		0
minasmem		0
maxlkmem		2000
tlbdrop			100
rsshogfrac		75		0	  100
rsshogslop		20
dwcluster		64
autoup			10		1  	   30
min_file_pages,32	0		0	   500000
min_file_pages,64	0		0	   1000000
min_free_pages		0		0  	   50000000
min_bufmem,32	        0		0	   500000
min_bufmem,64	        0		0	   1000000
shaked_interval		1		1	   3600
zone_accum_limit	30		0	   100	
cwcluster		64

*
* Enables an optimization for mmap() of /dev/zero. This allows adjacent
* mmap invokations to just grow the previous address space segment instead 
* creating a new one. This is useful for X servers. This can be turned off
* if a large parallel application wants to initialize adjacent mmap /dev/zero
* segments in parallel.
* 
enable_devzero_opt	1


*
* This tuneable enables a fast path in the kernel async io.
* The fast path ensures that we use k0seg address for aiocb buffers
* that lie fully within a page.
*
enable_kaio_fast_path   1


*
* tunables for buffer cache
*
* nbuf: number of  buffers in disk buffer cache. autoconfigure if 0
*
* nbuf auto-config:
*	32-bit kernels: min(100+KB(mem)/160,6000)
*	64-bit kernels: min(100+KB(mem)/160,600000)

bufcache:	static

* name			default      	minimum	  maximum
nbuf,32			0		  75	   6000
nbuf,64			0		  75	   600000 

*
* tunables for module loader
*
* bdevsw_extra: number of extra entries for bdevsw
* cdevsw_extra: number of extra entries for cdevsw
* fmodsw_extra: number of extra entries for fmodsw
* vfssw_extra: number of extra entries for vfssw
*
mload:		static

* name			default      	minimum	  maximum
bdevsw_extra		21		1	  254
cdevsw_extra		23		3	  254
fmodsw_extra		20		0
vfssw_extra		5		0

*
* tunables for extended accounting features
*
* accounting controls
*   do_procacct	  = 1   perform SVR4 process accounting
*		  = 0	do not perform SVR4 process accounting (this overrides
*			the acct(2) call)
*   do_extpacct   = 1   perform extended process accounting
*		  = 0	do not perform extended process accounting
*   do_sessacct   = 1   perform array session accounting on process exit
*		  = 0   do not perform array session accounting
*   sessaf:		session accounting record format
*   spilen:		length of service provider information
*   miser_rss_account = 1	do proper miser accounting (costs time/space)
*		      = 0   	use inaccurate miser accounting (saves time/space)
*
* process aggregate id settings
*   dflt_paggid:	the default process aggregate id for special system
*			sessions and other sessions that bypass ordinary
*			session handle assignment
*   min_local_paggid:   the first proc. aggregate id that can be assigned
*			by the kernel
*   max_local_paggid:   the largest proc aggregate id that can be assigned
*			by the kernel before wrapping back to min_local_paggid
*   incr_paggid:	default increment for local paggid's (or the local
*			portion of global paggid's)
*   asmachid:		default machine ID for generating global paggid's.
*			In an array/cluster configuration, no two machines
*			should have the same machine ID. If 0 is specified,
*			the kernel will only generate local paggid's.
*   asarrayid:		default array ID for generating global paggid's.
*
* project ID settings
*   dfltprid: the default project ID for special system sessions and other
*	      sessions that bypass ordinary project ID assignment, as well
*	      as for any users that do not have their own default project ID.
*
extacct: static

* name			default		minimum		maximum
do_procacct		1
do_extpacct		0
do_sessacct		0
sessaf			1		1		2
spilen			64		0		1024
dfltprid		0		0		0x7fffffffffffffff ll

dflt_paggid		0		0		0x7fffffffffffffff ll
min_local_paggid	1		1		0xffffff00         ll
max_local_paggid	65535		255		0xffffffff         ll
incr_paggid		1		1		0xffffffffffffffff ll
asmachid		0		0		0x7fff
asarrayid		0xffff		0		0xffff
miser_rss_account	1

*
* SGI internal use
*
* histmax: semaphore history
* conbuf_cpusz: console buffer sizes, per cpu 
* putbuf_cpusz: put buffer sizes, per cpu
* errbuf_cpusz: error dump buffer sizes , per cpu
* conbuf_maxsz: maximum size of console buffer for the system
* putbuf_maxsz: maximum size of put buffer for the system
* errbuf_maxsz: maximum size of error dump buffer for the system
* dumplo: starting default offset in dumpdev to dump kernel when it crashes 
*
internal:	static

* name			default      	minimum	  maximum
histmax 		0
conbuf_maxsz 	        16384
putbuf_maxsz 		16384
errbuf_maxsz		16384
conbuf_cpusz 		2048
putbuf_cpusz 		2048
errbuf_cpusz		2048
dumplo 			0

*
*   SN0 HW settings 
* ** Do not modify **
hub_core_arb_ctrl	0xfe
hub_2_4_iio_icmr_c_cnt  4
hub_2_4_iio_icmr_p_cnt  0
hub_2_4_iio_bte_crb_cnt 2

* tuneables for using very large pages
*
* Large pages must be allocated early on and reserved if they
* are to be used. nlpages_X refer to the number of large
* pages of size X. When these are set the kernel will attempt
* to allocate these counts of pages of the appropriate size.
*
*
large_pages:            static

* name                  default         minimum   maximum
nlpages_64k             0                 0
nlpages_256k            0                 0
nlpages_1m              0                 0
nlpages_4m              0                 0
nlpages_16m             0                 0


* tunables for using large pages.
* These tunables define hi water marks for various page sizes.
* They are specified as percentage of total memory in the system.
* The coalescing daemon will use these values in deciding the number of
* large pages it has to coalesce for a particular page size.
* Thus for example if percent_totalmem_64k_pages is set to 20, the coalescing
* mechanism will try to coalesce 20% of memory into 64k pages.
* percent_totalmem_16k_pages is looked at only if the system is configured to run
* with 4k page size. If the tunables are set to 0, the coalescing
* mechanism will be idle.  The coalescing daemon will be started if
* the tunables are set dynamically on a running system.

* The tuneable large_pages_enable turns on the large page feature.
* To turn on the feature set the value to 1 otherwise set it to 0.
* It is not turned on for workstations by default. It is turned on servers
* by default. Coalesced will not run if large_pages_enable is 0.

* name                  		default         minimum   maximum
large_pages_enable,NEED_LPAGES		1
large_pages_enable,NOT_NEED_LPAGES	0

lpage_watermarks:	run
percent_totalmem_16k_pages		0		0		100
percent_totalmem_64k_pages	        20		0		100
percent_totalmem_256k_pages		0		0		100
percent_totalmem_1m_pages	        0		0		100
percent_totalmem_4m_pages		0		0		100
percent_totalmem_16m_pages		0		0		100

* The number of seconds between runs of coalesced when it cannot coalesce
* enough large pages. It is set to 5 min. Coalesced will run continuosly
* if some process is sleeping waiting for large pages.

coalesced_run_period		     300		60

* Normally coalesced will avoid doing any work until large pages are actually
* in demand, and then it will only do enough work to satisfy that demand.
* Turning on precoalescing will make coalesced put together all the large
* pages it can whenever it runs (when demand cannot be immediately met and
* according to the run period). Precoalescing can be activated by setting
* coalesced_precoalesce to non-zero.

coalesced_precoalesce                   0

* Tuneables for Maximum simultaneous VME DMA transfer size on Challenge.
* Defines the size in Megabytes, of DMA transfer that can be active 
* for each VME bus in the system. E.g. a value of 64 implies, system
* will allocate sufficient resources to have upto 64 Mbytes of DMA
* active on each VME bus in the system. System needs to allocate 
* sufficient number of mapping table entries to support the required 
* transfer size. Each entry in memory is 4 bytes wide, and maps 
* a 4k bytes of contiguous data. With a page size of 16k, one (16k) 
* page is needed for 16M of simultaneous active DMA transfers. 
*
* Value for nvme32_dma should be a proper power of 2. If not, it will be 
* be bumped to next power of 2 before using. It must not exceed 512 or
* else it will be forced to 512. Notice that values larger than 64 may
* impact VME throughput on some systems.
*
vme_dma:		static
* name                  default         minimum   maximum
nvme32_dma		64		32	   512

*
* Tuneables for shm
* shmmax - max size in bytes	
*	If shmmax value is 0, it will be adjusted to be 80% of the 
*	system memory size at boot time. 
*	If the default value specifies a number, kernel will obey that.
* shmmin - min size in bytes
* shmmni - max # active segments in system
*	If shmmni default value is 0,
*	it will be adjusted at boot time to be the same value as nproc.
*	If the default value specifies a number, kernel will obey that.
* sshmseg - max segments per process
*
shm:	static

* name			default      	minimum	        maximum
shmmax,32		0		0x1000		0x7fffffff
shmmin,32		1		1		1
shmmax,64		0		0x1000		0x7fffffffffffffff ll
shmmin,64		1		1		1		   ll
shmmni			0		5		100000
sshmseg			300		1		10000

*
* Tuneables for the I/O subsystem
* hwgraph_num_dev - number of supported devices in the hardware graph
* xxl_hwgraph_num_dev - used on large systems which may have a larger
*   number of devices
* graph_vertex_per_group - number of hardware graph nodes per vertex group.
*   Each group shares a single lock; reducing the count reduces the
*   lock contention, at the expense of 128 bytes per group.
*   graph_vertex_per_group must be a power of two.
* io_init_node_threads - the number of nodes on which to initialize IO at
*   once.  0 means do all nodes at once.
* io_init_async - whether or not to start extra threads to initialize
*   IO devices controlled by a node.  0 = no extra threads, 1 = use
*   extra threads
*
* Certain very large machines can hang due to hardware graph lock
* contention while probing IO devices at boot time, making it
* difficult to boot the machine to change the tuneables to fix the
* problem.  Therefore, on machines with more than 32 processors, if
* io_init_node_threads is zero, these variables are set to the
* following values, which have worked well on large test machines:
*    io_init_node_threads = 16
*    io_init_async = 0
*    graph_vertex_per_group = 16 (only if it had had the default value)
*
io:	static

* name			default      	minimum	        maximum
hwgraph_num_dev		16384		4096		262144
xxl_hwgraph_num_dev	49152		4096		262144
graph_vertex_per_group	128		1		128
io_init_node_threads	0		0		1024
io_init_async		1		0		1

*
* sthread priorities
*
sthread: static

* name			default      	minimum	        maximum
console_pri		255		90		255
du_conpoll_pri		255		90		255
msc_shutdown_pri	109		90		109
msc_heartbeat_pri	109		90		109
reaper_pri		100		90		109
netthread_pri		98		90		109
klogthrd_pri		98		90		109
batchd_pri		98		90		109
pdflush_pri		98		90		109
rmonqd_pri		98		90		109
vhand_pri		98		90		109
shaked_pri		98		90		109
exim_pri		96		90		109
bpsqueue_pri		94		90		109
xlvd_pri		94		90		109
vfs_sync_pri		92		90		109
bdflush_pri		92		90		109
xfsd_pri		92		90		109
onesec_pri		90		90		109
unmountd_pri		90		90		109
async_call_pri		90		90		109
sched_pri		90		90		109
coalesced_pri		90		90		109
tiled_pri		90		90		109
cmsd_pri		90		90		109
recovery_pri		90		90		109
tpisockd_pri		90		90		109
io_init_pri		90		90		109
partition_pri		90		90		109
cdl_attach_pri		90		90		109
munldd_pri		90		90		109
dpipe_pri		90		90		109
xbox_poll_pri		90		90		109
cl_async_pri		90		90		109

*
* interrupt thread default priorities
*
ithread: static

audio_intr_pri		235		200		239
tserialio_intr_pri	235		200		239
video_intr_pri		230		200		239
graphics_intr_pri	225		200		239
external_intr_pri	220		200		239
serial_intr_pri		215		200		239
parallel_intr_pri	215		200		239
network_intr_pri	210		200		239
scsi_intr_pri		205		200		239
disk_intr_pri		205		200		239
tape_intr_pri		205		200		239
default_intr_pri	200		200		239
default_timeout_pri	1		1		255

*
* Kernel Synchronization Package Tunables:
*
* mrlock_num_mria	Number of mria (mrlock inheritance array) in
*			overflow pool.  Each array can record 8 mrlocks.
*			Every thread in the system by default has one mria
*			allocated to it. When the number of mrlocks held by a
*			thread exceeds 8 then an mria is allocated from the
*			overflow pool. Currently, only vhand (the pageing
*			daemon) uses mria's from this pool.
*
ksync: static

* name			default      	minimum	        maximum
mrlock_num_mria		64		64		1024

*
* enable/disable cpr
*
ckpt: run

* name			default		minimum		maximum
ckpt_enabled		1

*
* miser/miser_cpuset control flags
*
* cpuset_nobind:	boolean; if true (1) then processes under the
* 			scheduling control of miser_cpuset are not permitted
*			to bind themselves to any particular CPU.

miser: static

* name                  default         minimum         maximum
cpuset_nobind		0		0		1
