1999-08-28 01:08:13 +00:00
|
|
|
# $FreeBSD$
|
1998-03-10 15:55:38 +00:00
|
|
|
#
|
1999-11-06 23:51:29 +00:00
|
|
|
# On the handling of kernel options
|
1999-11-22 02:45:11 +00:00
|
|
|
#
|
2001-07-08 01:02:37 +00:00
|
|
|
# All kernel options should be listed in NOTES, with suitable
|
1998-03-10 15:55:38 +00:00
|
|
|
# descriptions. Negative options (options that make some code not
|
2001-07-08 01:04:10 +00:00
|
|
|
# compile) should be commented out; LINT (generated from NOTES) should
|
|
|
|
# compile as much code as possible. Try to structure option-using
|
|
|
|
# code so that a single option only switch code on, or only switch
|
|
|
|
# code off, to make it possible to have a full compile-test. If
|
|
|
|
# necessary, you can check for COMPILING_LINT to get maximum code
|
|
|
|
# coverage.
|
1999-11-22 02:45:11 +00:00
|
|
|
#
|
1998-03-10 15:55:38 +00:00
|
|
|
# All new options shall also be listed in either "conf/options" or
|
2001-07-08 01:04:10 +00:00
|
|
|
# "conf/options.<machine>". Options that affect a single source-file
|
|
|
|
# <xxx>.[c|s] should be directed into "opt_<xxx>.h", while options
|
|
|
|
# that affect multiple files should either go in "opt_global.h" if
|
|
|
|
# this is a kernel-wide option (used just about everywhere), or in
|
2006-12-18 05:42:33 +00:00
|
|
|
# "opt_<option-name-in-lower-case>.h" if it affects only some files.
|
2001-07-08 01:04:10 +00:00
|
|
|
# Note that the effect of listing only an option without a
|
|
|
|
# header-file-name in conf/options (and cousins) is that the last
|
|
|
|
# convention is followed.
|
1999-11-22 02:45:11 +00:00
|
|
|
#
|
1998-03-10 15:55:38 +00:00
|
|
|
# This handling scheme is not yet fully implemented.
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Format of this file:
|
1996-03-02 18:24:13 +00:00
|
|
|
# Option name filename
|
1998-03-10 15:55:38 +00:00
|
|
|
#
|
|
|
|
# If filename is missing, the default is
|
|
|
|
# opt_<name-of-option-in-lower-case>.h
|
1996-03-29 13:51:30 +00:00
|
|
|
|
2004-03-31 08:22:09 +00:00
|
|
|
AAC_DEBUG opt_aac.h
|
2013-05-24 09:22:43 +00:00
|
|
|
AACRAID_DEBUG opt_aacraid.h
|
2004-03-31 08:22:09 +00:00
|
|
|
AHC_ALLOW_MEMIO opt_aic7xxx.h
|
|
|
|
AHC_TMODE_ENABLE opt_aic7xxx.h
|
|
|
|
AHC_DUMP_EEPROM opt_aic7xxx.h
|
|
|
|
AHC_DEBUG opt_aic7xxx.h
|
|
|
|
AHC_DEBUG_OPTS opt_aic7xxx.h
|
2009-02-06 10:30:46 +00:00
|
|
|
AHC_REG_PRETTY_PRINT opt_aic7xxx.h
|
2004-03-31 08:22:09 +00:00
|
|
|
AHD_DEBUG opt_aic79xx.h
|
|
|
|
AHD_DEBUG_OPTS opt_aic79xx.h
|
|
|
|
AHD_TMODE_ENABLE opt_aic79xx.h
|
|
|
|
AHD_REG_PRETTY_PRINT opt_aic79xx.h
|
|
|
|
ADW_ALLOW_MEMIO opt_adw.h
|
1998-10-07 03:30:55 +00:00
|
|
|
|
2004-03-31 18:46:13 +00:00
|
|
|
TWA_DEBUG opt_twa.h
|
|
|
|
TWA_FLASH_FIRMWARE opt_twa.h
|
2004-03-30 18:53:18 +00:00
|
|
|
|
2004-07-11 01:44:07 +00:00
|
|
|
# Debugging options.
|
2011-08-27 14:24:27 +00:00
|
|
|
ALT_BREAK_TO_DEBUGGER opt_kdb.h
|
|
|
|
BREAK_TO_DEBUGGER opt_kdb.h
|
2004-07-11 01:44:07 +00:00
|
|
|
DDB
|
2008-08-18 16:48:09 +00:00
|
|
|
DDB_BUFR_SIZE opt_ddb.h
|
2008-01-26 22:32:23 +00:00
|
|
|
DDB_CAPTURE_DEFAULTBUFSIZE opt_ddb.h
|
|
|
|
DDB_CAPTURE_MAXBUFSIZE opt_ddb.h
|
2008-05-18 19:28:51 +00:00
|
|
|
DDB_CTF opt_ddb.h
|
2004-07-11 01:44:07 +00:00
|
|
|
DDB_NUMSYM opt_ddb.h
|
|
|
|
GDB
|
|
|
|
KDB opt_global.h
|
|
|
|
KDB_TRACE opt_kdb.h
|
|
|
|
KDB_UNATTENDED opt_kdb.h
|
2011-11-06 08:10:41 +00:00
|
|
|
KLD_DEBUG opt_kld.h
|
2004-10-27 19:26:01 +00:00
|
|
|
SYSCTL_DEBUG opt_sysctl.h
|
2014-01-22 21:20:08 +00:00
|
|
|
EARLY_PRINTF opt_global.h
|
2012-11-01 04:07:08 +00:00
|
|
|
TEXTDUMP_PREFERRED opt_ddb.h
|
|
|
|
TEXTDUMP_VERBOSE opt_ddb.h
|
2016-07-27 03:21:02 +00:00
|
|
|
NUM_CORE_FILES opt_global.h
|
2004-07-11 01:44:07 +00:00
|
|
|
|
1996-12-23 18:42:02 +00:00
|
|
|
# Miscellaneous options.
|
Introduce support for adaptive spinning in lockmgr.
Actually, as it did receive few tuning, the support is disabled by
default, but it can opt-in with the option ADAPTIVE_LOCKMGRS.
Due to the nature of lockmgrs, adaptive spinning needs to be
selectively enabled for any interested lockmgr.
The support is bi-directional, or, in other ways, it will work in both
cases if the lock is held in read or write way. In particular, the
read path is passible of further tunning using the sysctls
debug.lockmgr.retries and debug.lockmgr.loops . Ideally, such sysctls
should be axed or compiled out before release.
Addictionally note that adaptive spinning doesn't cope well with
LK_SLEEPFAIL. The reason is that many (and probabilly all) consumers
of LK_SLEEPFAIL are mainly interested in knowing if the interlock was
dropped or not in order to reacquire it and re-test initial conditions.
This directly interacts with adaptive spinning because lockmgr needs
to drop the interlock while spinning in order to avoid a deadlock
(further details in the comments inside the patch).
Final note: finding someone willing to help on tuning this with
relevant workloads would be either very important and appreciated.
Tested by: jeff, pho
Requested by: many
2009-06-17 01:55:42 +00:00
|
|
|
ADAPTIVE_LOCKMGRS
|
2003-04-15 19:43:52 +00:00
|
|
|
ALQ
|
2013-10-18 15:27:11 +00:00
|
|
|
ALTERA_SDCARD_FAST_SIM opt_altera_sdcard.h
|
2013-10-18 20:52:42 +00:00
|
|
|
ATSE_CFI_HACK opt_cfi.h
|
2006-02-01 21:00:16 +00:00
|
|
|
AUDIT opt_global.h
|
2013-04-03 22:24:36 +00:00
|
|
|
BOOTHOWTO opt_global.h
|
|
|
|
BOOTVERBOSE opt_global.h
|
- Make callout(9) tickless, relying on eventtimers(4) as backend for
precise time event generation. This greatly improves granularity of
callouts which are not anymore constrained to wait next tick to be
scheduled.
- Extend the callout KPI introducing a set of callout_reset_sbt* functions,
which take a sbintime_t as timeout argument. The new KPI also offers a
way for consumers to specify precision tolerance they allow, so that
callout can coalesce events and reduce number of interrupts as well as
potentially avoid scheduling a SWI thread.
- Introduce support for dispatching callouts directly from hardware
interrupt context, specifying an additional flag. This feature should be
used carefully, as long as interrupt context has some limitations
(e.g. no sleeping locks can be held).
- Enhance mechanisms to gather informations about callwheel, introducing
a new sysctl to obtain stats.
This change breaks the KBI. struct callout fields has been changed, in
particular 'int ticks' (4 bytes) has been replaced with 'sbintime_t'
(8 bytes) and another 'sbintime_t' field was added for precision.
Together with: mav
Reviewed by: attilio, bde, luigi, phk
Sponsored by: Google Summer of Code 2012, iXsystems inc.
Tested by: flo (amd64, sparc64), marius (sparc64), ian (arm),
markj (amd64), mav, Fabian Keil
2013-03-04 11:09:56 +00:00
|
|
|
CALLOUT_PROFILING
|
2011-07-02 15:41:22 +00:00
|
|
|
CAPABILITIES opt_capsicum.h
|
2011-06-29 13:03:05 +00:00
|
|
|
CAPABILITY_MODE opt_capsicum.h
|
1998-01-25 04:13:25 +00:00
|
|
|
COMPAT_43 opt_compat.h
|
2006-01-10 09:19:10 +00:00
|
|
|
COMPAT_43TTY opt_compat.h
|
2002-07-12 06:38:34 +00:00
|
|
|
COMPAT_FREEBSD4 opt_compat.h
|
2005-06-30 00:09:18 +00:00
|
|
|
COMPAT_FREEBSD5 opt_compat.h
|
2006-09-26 12:36:34 +00:00
|
|
|
COMPAT_FREEBSD6 opt_compat.h
|
2008-01-07 21:40:11 +00:00
|
|
|
COMPAT_FREEBSD7 opt_compat.h
|
2014-10-24 19:58:24 +00:00
|
|
|
COMPAT_FREEBSD9 opt_compat.h
|
|
|
|
COMPAT_FREEBSD10 opt_compat.h
|
2016-08-21 16:01:30 +00:00
|
|
|
COMPAT_CLOUDABI32 opt_dontuse.h
|
2015-07-09 07:20:15 +00:00
|
|
|
COMPAT_CLOUDABI64 opt_dontuse.h
|
2015-10-22 09:50:45 +00:00
|
|
|
COMPAT_LINUXKPI opt_compat.h
|
2000-09-16 18:55:05 +00:00
|
|
|
COMPILING_LINT opt_global.h
|
2003-04-15 19:43:52 +00:00
|
|
|
CY_PCI_FASTINTR
|
2010-01-09 01:46:38 +00:00
|
|
|
DEADLKRES opt_watchdog.h
|
2016-04-09 13:58:04 +00:00
|
|
|
DEVICE_NUMA
|
2016-01-24 11:00:38 +00:00
|
|
|
EXT_RESOURCES opt_global.h
|
2005-12-12 10:15:11 +00:00
|
|
|
DIRECTIO
|
2013-07-03 20:22:12 +00:00
|
|
|
FILEMON opt_dontuse.h
|
2011-11-19 14:10:16 +00:00
|
|
|
FFCLOCK
|
2004-09-02 18:59:15 +00:00
|
|
|
FULL_PREEMPTION opt_sched.h
|
2015-03-09 03:50:53 +00:00
|
|
|
GZIO opt_gzio.h
|
2014-05-22 05:04:40 +00:00
|
|
|
IMAGACT_BINMISC opt_dontuse.h
|
2005-06-09 18:23:54 +00:00
|
|
|
IPI_PREEMPTION opt_sched.h
|
2002-10-05 16:35:33 +00:00
|
|
|
GEOM_AES opt_geom.h
|
2002-10-19 17:02:17 +00:00
|
|
|
GEOM_BDE opt_geom.h
|
2002-10-05 16:35:33 +00:00
|
|
|
GEOM_BSD opt_geom.h
|
2006-10-06 10:43:42 +00:00
|
|
|
GEOM_CACHE opt_geom.h
|
2004-05-03 21:18:56 +00:00
|
|
|
GEOM_CONCAT opt_geom.h
|
2005-07-27 21:47:55 +00:00
|
|
|
GEOM_ELI opt_geom.h
|
2003-06-18 09:29:28 +00:00
|
|
|
GEOM_FOX opt_geom.h
|
2004-05-03 21:18:56 +00:00
|
|
|
GEOM_GATE opt_geom.h
|
2006-10-31 22:22:30 +00:00
|
|
|
GEOM_JOURNAL opt_geom.h
|
Introduce GEOM_LABEL class.
This class is used for detecting volume labels on file systems:
UFS, MSDOSFS (FAT12, FAT16, FAT32) and ISO9660.
It also provide native labelization (there is no need for file system).
g_label_ufs.c is based on geom_vol_ffs from Gordon Tetlow.
g_label_msdos.c and g_label_iso9660.c are probably hacks, I just found
where volume labels are stored and I use those offsets here,
but with this class it should be easy to do it as it should be done by
someone who know how.
Implementing volume labels detection for other file systems also should
be trivial.
New providers are created in those directories:
/dev/ufs/ (UFS1, UFS2)
/dev/msdosfs/ (FAT12, FAT16, FAT32)
/dev/iso9660/ (ISO9660)
/dev/label/ (native labels, configured with glabel(8))
Manual page cleanups and some comments inside were submitted by
Simon L. Nielsen, who was, as always, very helpful. Thanks!
2004-07-02 19:40:36 +00:00
|
|
|
GEOM_LABEL opt_geom.h
|
2014-04-06 02:44:37 +00:00
|
|
|
GEOM_LABEL_GPT opt_geom.h
|
2008-02-20 07:50:13 +00:00
|
|
|
GEOM_LINUX_LVM opt_geom.h
|
2015-06-08 13:23:56 +00:00
|
|
|
GEOM_MAP opt_geom.h
|
2002-10-05 16:35:33 +00:00
|
|
|
GEOM_MBR opt_geom.h
|
2004-07-30 23:18:53 +00:00
|
|
|
GEOM_MIRROR opt_geom.h
|
2015-12-14 13:51:14 +00:00
|
|
|
GEOM_MOUNTVER opt_geom.h
|
2007-02-27 12:05:25 +00:00
|
|
|
GEOM_MULTIPATH opt_geom.h
|
2004-05-20 10:37:13 +00:00
|
|
|
GEOM_NOP opt_geom.h
|
2007-02-07 18:55:31 +00:00
|
|
|
GEOM_PART_APM opt_geom.h
|
2007-12-06 02:32:42 +00:00
|
|
|
GEOM_PART_BSD opt_geom.h
|
2014-06-11 10:48:11 +00:00
|
|
|
GEOM_PART_BSD64 opt_geom.h
|
2009-02-10 00:08:39 +00:00
|
|
|
GEOM_PART_EBR opt_geom.h
|
2009-04-15 22:38:22 +00:00
|
|
|
GEOM_PART_EBR_COMPAT opt_geom.h
|
2007-02-07 18:55:31 +00:00
|
|
|
GEOM_PART_GPT opt_geom.h
|
2012-03-19 13:16:46 +00:00
|
|
|
GEOM_PART_LDM opt_geom.h
|
2007-06-13 04:27:36 +00:00
|
|
|
GEOM_PART_MBR opt_geom.h
|
2008-03-28 17:58:55 +00:00
|
|
|
GEOM_PART_PC98 opt_geom.h
|
2008-03-02 00:52:49 +00:00
|
|
|
GEOM_PART_VTOC8 opt_geom.h
|
2002-10-05 16:35:33 +00:00
|
|
|
GEOM_PC98 opt_geom.h
|
MFgraid/head:
Add new RAID GEOM class, that is going to replace ataraid(4) in supporting
various BIOS-based software RAIDs. Unlike ataraid(4) this implementation
does not depend on legacy ata(4) subsystem and can be used with any disk
drivers, including new CAM-based ones (ahci(4), siis(4), mvs(4), ata(4)
with `options ATA_CAM`). To make code more readable and extensible, this
implementation follows modular design, including core part and two sets
of modules, implementing support for different metadata formats and RAID
levels.
Support for such popular metadata formats is now implemented:
Intel, JMicron, NVIDIA, Promise (also used by AMD/ATI) and SiliconImage.
Such RAID levels are now supported:
RAID0, RAID1, RAID1E, RAID10, SINGLE, CONCAT.
For any all of these RAID levels and metadata formats this class supports
full cycle of volume operations: reading, writing, creation, deletion,
disk removal and insertion, rebuilding, dirty shutdown detection
and resynchronization, bad sector recovery, faulty disks tracking,
hot-spare disks. For Intel and Promise formats there is support multiple
volumes per disk set.
Look graid(8) manual page for additional details.
Co-authored by: imp
Sponsored by: Cisco Systems, Inc. and iXsystems, Inc.
2011-03-24 21:31:32 +00:00
|
|
|
GEOM_RAID opt_geom.h
|
2004-08-16 06:36:21 +00:00
|
|
|
GEOM_RAID3 opt_geom.h
|
2005-01-11 18:18:40 +00:00
|
|
|
GEOM_SHSEC opt_geom.h
|
2004-05-20 10:37:13 +00:00
|
|
|
GEOM_STRIPE opt_geom.h
|
2002-10-05 16:35:33 +00:00
|
|
|
GEOM_SUNLABEL opt_geom.h
|
2004-08-13 09:40:58 +00:00
|
|
|
GEOM_UZIP opt_geom.h
|
2016-02-24 05:17:52 +00:00
|
|
|
GEOM_UZIP_DEBUG opt_geom.h
|
2014-05-02 23:23:18 +00:00
|
|
|
GEOM_VINUM opt_geom.h
|
2007-09-23 07:34:23 +00:00
|
|
|
GEOM_VIRSTOR opt_geom.h
|
2003-02-03 17:35:54 +00:00
|
|
|
GEOM_VOL opt_geom.h
|
2005-07-25 10:49:05 +00:00
|
|
|
GEOM_ZERO opt_geom.h
|
2016-05-18 04:35:58 +00:00
|
|
|
IFLIB opt_iflib.h
|
2013-11-25 07:38:45 +00:00
|
|
|
KDTRACE_HOOKS opt_global.h
|
2013-11-29 07:28:59 +00:00
|
|
|
KDTRACE_FRAME opt_kdtrace.h
|
2014-01-07 01:17:27 +00:00
|
|
|
KN_HASHSIZE opt_kqueue.h
|
2002-10-02 07:44:29 +00:00
|
|
|
KSTACK_MAX_PAGES
|
2004-02-25 09:35:35 +00:00
|
|
|
KSTACK_PAGES
|
2014-10-04 18:38:14 +00:00
|
|
|
KSTACK_USAGE_PROF
|
1996-03-02 18:24:13 +00:00
|
|
|
KTRACE
|
2002-06-07 14:33:23 +00:00
|
|
|
KTRACE_REQUEST_POOL opt_ktrace.h
|
2001-04-09 09:39:29 +00:00
|
|
|
LIBICONV
|
2009-06-05 14:55:22 +00:00
|
|
|
MAC opt_global.h
|
2003-04-15 19:43:52 +00:00
|
|
|
MAC_BIBA opt_dontuse.h
|
|
|
|
MAC_BSDEXTENDED opt_dontuse.h
|
|
|
|
MAC_IFOFF opt_dontuse.h
|
|
|
|
MAC_LOMAC opt_dontuse.h
|
|
|
|
MAC_MLS opt_dontuse.h
|
|
|
|
MAC_NONE opt_dontuse.h
|
|
|
|
MAC_PARTITION opt_dontuse.h
|
|
|
|
MAC_PORTACL opt_dontuse.h
|
|
|
|
MAC_SEEOTHERUIDS opt_dontuse.h
|
2004-05-03 20:53:05 +00:00
|
|
|
MAC_STATIC opt_mac.h
|
2003-08-21 16:48:39 +00:00
|
|
|
MAC_STUB opt_dontuse.h
|
2003-04-15 19:43:52 +00:00
|
|
|
MAC_TEST opt_dontuse.h
|
1999-11-26 20:08:44 +00:00
|
|
|
MD_ROOT opt_md.h
|
2012-11-03 21:20:55 +00:00
|
|
|
MD_ROOT_FSTYPE opt_md.h
|
1999-11-26 20:08:44 +00:00
|
|
|
MD_ROOT_SIZE opt_md.h
|
2006-03-29 09:57:22 +00:00
|
|
|
MFI_DEBUG opt_mfi.h
|
2006-05-18 23:30:48 +00:00
|
|
|
MFI_DECODE_LOG opt_mfi.h
|
2004-08-19 06:38:26 +00:00
|
|
|
MPROF_BUFFERS opt_mprof.h
|
|
|
|
MPROF_HASH_SIZE opt_mprof.h
|
2011-05-03 17:37:24 +00:00
|
|
|
NEW_PCIB opt_global.h
|
2007-03-27 19:32:40 +00:00
|
|
|
NO_ADAPTIVE_MUTEXES opt_adaptive_mutexes.h
|
2007-03-22 16:09:23 +00:00
|
|
|
NO_ADAPTIVE_RWLOCKS
|
2009-05-29 01:49:27 +00:00
|
|
|
NO_ADAPTIVE_SX
|
2014-04-02 19:51:29 +00:00
|
|
|
NO_EVENTTIMERS opt_timer.h
|
2008-08-27 01:31:42 +00:00
|
|
|
NO_SYSCTL_DESCR opt_global.h
|
2003-03-26 23:40:42 +00:00
|
|
|
NSWBUF_MIN opt_swap.h
|
2007-04-14 20:16:03 +00:00
|
|
|
MBUF_PACKET_ZONE_DISABLE opt_global.h
|
2002-11-18 06:17:07 +00:00
|
|
|
PANIC_REBOOT_WAIT_TIME opt_panic.h
|
Native PCI-express HotPlug support.
PCI-express HotPlug support is implemented via bits in the slot
registers of the PCI-express capability of the downstream port along
with an interrupt that triggers when bits in the slot status register
change.
This is implemented for FreeBSD by adding HotPlug support to the
PCI-PCI bridge driver which attaches to the virtual PCI-PCI bridges
representing downstream ports on HotPlug slots. The PCI-PCI bridge
driver registers an interrupt handler to receive HotPlug events. It
also uses the slot registers to determine the current HotPlug state
and drive an internal HotPlug state machine. For simplicty of
implementation, the PCI-PCI bridge device detaches and deletes the
child PCI device when a card is removed from a slot and creates and
attaches a PCI child device when a card is inserted into the slot.
The PCI-PCI bridge driver provides a bus_child_present which claims
that child devices are present on HotPlug-capable slots only when a
card is inserted. Rather than requiring a timeout in the RC for
config accesses to not-present children, the pcib_read/write_config
methods fail all requests when a card is not present (or not yet
ready).
These changes include support for various optional HotPlug
capabilities such as a power controller, mechanical latch,
electro-mechanical interlock, indicators, and an attention button.
It also includes support for devices which require waiting for
command completion events before initiating a subsequent HotPlug
command. However, it has only been tested on ExpressCard systems
which support surprise removal and have none of these optional
capabilities.
PCI-express HotPlug support is conditional on the PCI_HP option
which is enabled by default on arm64, x86, and powerpc.
Reviewed by: adrian, imp, vangyzen (older versions)
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D6136
2016-05-05 22:26:23 +00:00
|
|
|
PCI_HP opt_pci.h
|
2015-03-01 00:40:09 +00:00
|
|
|
PCI_IOV opt_global.h
|
2006-04-24 23:31:51 +00:00
|
|
|
PPC_DEBUG opt_ppc.h
|
2009-02-06 10:30:46 +00:00
|
|
|
PPC_PROBE_CHIPSET opt_ppc.h
|
1998-01-31 05:00:21 +00:00
|
|
|
PPS_SYNC opt_ntp.h
|
2005-11-23 18:11:24 +00:00
|
|
|
PREEMPTION opt_sched.h
|
1996-12-23 18:42:02 +00:00
|
|
|
QUOTA
|
2003-01-26 05:29:12 +00:00
|
|
|
SCHED_4BSD opt_sched.h
|
2008-03-20 01:30:49 +00:00
|
|
|
SCHED_STATS opt_sched.h
|
2003-01-26 05:29:12 +00:00
|
|
|
SCHED_ULE opt_sched.h
|
2004-06-29 02:30:12 +00:00
|
|
|
SLEEPQUEUE_PROFILING
|
2005-07-15 05:12:49 +00:00
|
|
|
SLHCI_DEBUG opt_slhci.h
|
1998-02-04 04:12:29 +00:00
|
|
|
SPX_HACK
|
Break out stack(9) from ddb(4):
- Introduce per-architecture stack_machdep.c to hold stack_save(9).
- Introduce per-architecture machine/stack.h to capture any common
definitions required between db_trace.c and stack_machdep.c.
- Add new kernel option "options STACK"; we will build in stack(9) if it is
defined, or also if "options DDB" is defined to provide compatibility
with existing users of stack(9).
Add new stack_save_td(9) function, which allows the capture of a stacktrace
of another thread rather than the current thread, which the existing
stack_save(9) was limited to. It requires that the thread be neither
swapped out nor running, which is the responsibility of the consumer to
enforce.
Update stack(9) man page.
Build tested: amd64, arm, i386, ia64, powerpc, sparc64, sun4v
Runtime tested: amd64 (rwatson), arm (cognet), i386 (rwatson)
2007-12-02 20:40:35 +00:00
|
|
|
STACK opt_stack.h
|
2005-12-12 10:15:11 +00:00
|
|
|
SUIDDIR
|
2002-07-15 15:28:16 +00:00
|
|
|
MSGMNB opt_sysvipc.h
|
|
|
|
MSGMNI opt_sysvipc.h
|
|
|
|
MSGSEG opt_sysvipc.h
|
|
|
|
MSGSSZ opt_sysvipc.h
|
|
|
|
MSGTQL opt_sysvipc.h
|
2000-05-01 13:33:56 +00:00
|
|
|
SEMMNI opt_sysvipc.h
|
|
|
|
SEMMNS opt_sysvipc.h
|
|
|
|
SEMMNU opt_sysvipc.h
|
|
|
|
SEMMSL opt_sysvipc.h
|
|
|
|
SEMOPM opt_sysvipc.h
|
|
|
|
SEMUME opt_sysvipc.h
|
2002-07-15 15:28:16 +00:00
|
|
|
SHMALL opt_sysvipc.h
|
|
|
|
SHMMAX opt_sysvipc.h
|
|
|
|
SHMMAXPGS opt_sysvipc.h
|
|
|
|
SHMMIN opt_sysvipc.h
|
|
|
|
SHMMNI opt_sysvipc.h
|
|
|
|
SHMSEG opt_sysvipc.h
|
|
|
|
SYSVMSG opt_sysvipc.h
|
|
|
|
SYSVSEM opt_sysvipc.h
|
|
|
|
SYSVSHM opt_sysvipc.h
|
2004-02-28 20:56:35 +00:00
|
|
|
SW_WATCHDOG opt_watchdog.h
|
2004-06-29 02:30:12 +00:00
|
|
|
TURNSTILE_PROFILING
|
2012-03-16 20:32:11 +00:00
|
|
|
UMTX_PROFILING
|
2015-02-05 07:51:38 +00:00
|
|
|
VERBOSE_SYSINIT
|
1996-05-11 04:39:53 +00:00
|
|
|
|
1998-03-28 11:51:01 +00:00
|
|
|
# POSIX kernel options
|
2005-12-03 01:40:38 +00:00
|
|
|
P1003_1B_MQUEUE opt_posix.h
|
2002-09-19 00:48:57 +00:00
|
|
|
P1003_1B_SEMAPHORES opt_posix.h
|
2004-02-25 09:35:35 +00:00
|
|
|
_KPOSIX_PRIORITY_SCHEDULING opt_posix.h
|
1998-03-04 10:27:00 +00:00
|
|
|
|
1996-12-26 23:38:17 +00:00
|
|
|
# Do we want the config file compiled into the kernel?
|
|
|
|
INCLUDE_CONFIG_FILE opt_config.h
|
|
|
|
|
2002-05-16 21:28:32 +00:00
|
|
|
# Options for static filesystems. These should only be used at config
|
1996-05-11 04:39:53 +00:00
|
|
|
# time, since the corresponding lkms cannot work if there are any static
|
|
|
|
# dependencies. Unusability is enforced by hiding the defines for the
|
|
|
|
# options in a never-included header.
|
2014-08-17 09:44:42 +00:00
|
|
|
AUTOFS opt_dontuse.h
|
2001-02-04 15:35:10 +00:00
|
|
|
CD9660 opt_dontuse.h
|
1997-12-16 23:59:37 +00:00
|
|
|
EXT2FS opt_dontuse.h
|
2001-05-23 09:42:29 +00:00
|
|
|
FDESCFS opt_dontuse.h
|
2011-03-20 21:05:09 +00:00
|
|
|
FFS opt_dontuse.h
|
2012-10-13 23:54:26 +00:00
|
|
|
FUSE opt_dontuse.h
|
1997-12-16 23:59:37 +00:00
|
|
|
MSDOSFS opt_dontuse.h
|
2012-05-17 10:11:18 +00:00
|
|
|
NANDFS opt_dontuse.h
|
1996-05-11 04:39:53 +00:00
|
|
|
NULLFS opt_dontuse.h
|
|
|
|
PROCFS opt_dontuse.h
|
2001-06-11 10:58:07 +00:00
|
|
|
PSEUDOFS opt_dontuse.h
|
2013-06-28 21:00:08 +00:00
|
|
|
SMBFS opt_dontuse.h
|
2007-06-16 01:56:05 +00:00
|
|
|
TMPFS opt_dontuse.h
|
2002-04-14 16:36:49 +00:00
|
|
|
UDF opt_dontuse.h
|
2003-04-15 19:43:52 +00:00
|
|
|
UNIONFS opt_dontuse.h
|
2013-07-03 20:21:39 +00:00
|
|
|
ZFS opt_dontuse.h
|
1996-05-11 04:39:53 +00:00
|
|
|
|
2005-03-14 16:04:27 +00:00
|
|
|
# Pseudofs debugging
|
|
|
|
PSEUDOFS_TRACE opt_pseudofs.h
|
|
|
|
|
Implement support for RPCSEC_GSS authentication to both the NFS client
and server. This replaces the RPC implementation of the NFS client and
server with the newer RPC implementation originally developed
(actually ported from the userland sunrpc code) to support the NFS
Lock Manager. I have tested this code extensively and I believe it is
stable and that performance is at least equal to the legacy RPC
implementation.
The NFS code currently contains support for both the new RPC
implementation and the older legacy implementation inherited from the
original NFS codebase. The default is to use the new implementation -
add the NFS_LEGACYRPC option to fall back to the old code. When I
merge this support back to RELENG_7, I will probably change this so
that users have to 'opt in' to get the new code.
To use RPCSEC_GSS on either client or server, you must build a kernel
which includes the KGSSAPI option and the crypto device. On the
userland side, you must build at least a new libc, mountd, mount_nfs
and gssd. You must install new versions of /etc/rc.d/gssd and
/etc/rc.d/nfsd and add 'gssd_enable=YES' to /etc/rc.conf.
As long as gssd is running, you should be able to mount an NFS
filesystem from a server that requires RPCSEC_GSS authentication. The
mount itself can happen without any kerberos credentials but all
access to the filesystem will be denied unless the accessing user has
a valid ticket file in the standard place (/tmp/krb5cc_<uid>). There
is currently no support for situations where the ticket file is in a
different place, such as when the user logged in via SSH and has
delegated credentials from that login. This restriction is also
present in Solaris and Linux. In theory, we could improve this in
future, possibly using Brooks Davis' implementation of variant
symlinks.
Supporting RPCSEC_GSS on a server is nearly as simple. You must create
service creds for the server in the form 'nfs/<fqdn>@<REALM>' and
install them in /etc/krb5.keytab. The standard heimdal utility ktutil
makes this fairly easy. After the service creds have been created, you
can add a '-sec=krb5' option to /etc/exports and restart both mountd
and nfsd.
The only other difference an administrator should notice is that nfsd
doesn't fork to create service threads any more. In normal operation,
there will be two nfsd processes, one in userland waiting for TCP
connections and one in the kernel handling requests. The latter
process will create as many kthreads as required - these should be
visible via 'top -H'. The code has some support for varying the number
of service threads according to load but initially at least, nfsd uses
a fixed number of threads according to the value supplied to its '-n'
option.
Sponsored by: Isilon Systems
MFC after: 1 month
2008-11-03 10:38:00 +00:00
|
|
|
# In-kernel GSS-API
|
|
|
|
KGSSAPI opt_kgssapi.h
|
|
|
|
KGSSAPI_DEBUG opt_kgssapi.h
|
|
|
|
|
2003-04-15 19:43:52 +00:00
|
|
|
# These static filesystems have one slightly bogus static dependency in
|
1998-01-24 02:54:56 +00:00
|
|
|
# sys/i386/i386/autoconf.c. If any of these filesystems are
|
|
|
|
# statically compiled into the kernel, code for mounting them as root
|
2001-02-04 15:35:10 +00:00
|
|
|
# filesystems will be enabled - but look below.
|
2009-05-28 19:45:11 +00:00
|
|
|
# NFSCL - client
|
|
|
|
# NFSD - server
|
|
|
|
NFSCL opt_nfs.h
|
|
|
|
NFSD opt_nfs.h
|
|
|
|
|
2003-09-26 20:26:25 +00:00
|
|
|
# filesystems and libiconv bridge
|
|
|
|
CD9660_ICONV opt_dontuse.h
|
|
|
|
MSDOSFS_ICONV opt_dontuse.h
|
2003-11-05 06:38:14 +00:00
|
|
|
UDF_ICONV opt_dontuse.h
|
2003-09-26 20:26:25 +00:00
|
|
|
|
1999-11-22 02:45:11 +00:00
|
|
|
# If you are following the conditions in the copyright,
|
|
|
|
# you can enable soft-updates which will speed up a lot of thigs
|
1998-03-08 09:59:44 +00:00
|
|
|
# and make the system safer from crashes at the same time.
|
|
|
|
# otherwise a STUB module will be compiled in.
|
|
|
|
SOFTUPDATES opt_ffs.h
|
|
|
|
|
2006-01-06 04:44:09 +00:00
|
|
|
# On small, embedded systems, it can be useful to turn off support for
|
|
|
|
# snapshots. It saves about 30-40k for a feature that would be lightly
|
|
|
|
# used, if it is used at all.
|
|
|
|
NO_FFS_SNAPSHOT opt_ffs.h
|
|
|
|
|
Introduce support for POSIX.1e ACLs on UFS-based file systems. This
implementation is still experimental, and while fairly broadly tested,
is not yet intended for production use. Support for POSIX.1e ACLs on
UFS will not be MFC'd to RELENG_4.
This implementation works by providing implementations of VOP_[GS]ETACL()
for FFS, as well as modifying the appropriate access control and file
creation routines. In this implementation, ACLs are backed into extended
attributes; the base ACL (owner, group, other) permissions remain in the
inode for performance and compatibility reasons, so only the extended and
default ACLs are placed in extended attributes. The logic for ACL
evaluation is provided by the fs-independent kern/kern_acl.c.
o Introduce UFS_ACL, a compile-time configuration option that enables
support for ACLs on FFS (and potentially other UFS-based file systems).
o Introduce ufs_getacl(), ufs_setacl(), ufs_aclcheck(), which
respectively get, set, and check the ACLs on the passed vnode.
o Introduce ufs_sync_acl_from_inode(), ufs_sync_inode_from_acl() to
maintain access control information between inode permissions and
extended attribute data.
o Modify ufs_access() to load a file access ACL and invoke
vaccess_acl_posix1e() if ACLs are available on the file system
o Modify ufs_mkdir() and ufs_makeinode() to associate ACLs with newly
created directories and files, inheriting from the parent directory's
default ACL.
o Enable these new vnode operations and conditionally compiled code
paths if UFS_ACL is defined.
A few notes:
o This implementation is fairly widely tested, but still should be
considered experimental.
o Currently, ACLs are not exported via NFS, instead, the summarizing
file mode/etc from the inode is. This results in conservative
protection behavior, similar to the behavior of ACL-nonaware programs
acting locally.
o It is possible that underlying binary data formats associated with
this implementation may change. Consumers of the implementation
should expect to find their local configuration obsoleted in the
next few months, resulting in possible loss of ACL data during an
upgrade.
o The extended attributes interface and implementation is still
undergoing modification to address portable interface concerns, as
well as performance.
o Many applications do not yet correctly handle ACLs. In general,
due to the POSIX.1e ACL model, behavior of ACL-unaware applications
will be conservative with respects to file protection; some caution
is recommended.
o Instructions for configuring and maintaining ACLs on UFS will be
committed in the near future; in the mean time it is possible to
reference the README included in the last UFS ACL distribution
placed in the TrustedBSD web site:
http://www.TrustedBSD.org/downloads/
Substantial debugging, hardware, travel, or connectivity support for this
project was provided by: BSDi, Safeport Network Services, and NAI Labs.
Significant coding contributions were made by Chris Faulhaber. Additional
support was provided by Brian Feldman, Thomas Moestl, and Ilmar Habibulin.
Reviewed by: jedgar, keichii, mckusick, trustedbsd-discuss, freebsd-fs
Obtained from: TrustedBSD Project
2001-03-26 17:53:19 +00:00
|
|
|
# Enabling this option turns on support for Access Control Lists in UFS,
|
|
|
|
# which can be used to support high security configurations. Depends on
|
|
|
|
# UFS_EXTATTR.
|
|
|
|
UFS_ACL opt_ufs.h
|
|
|
|
|
2001-03-19 04:35:40 +00:00
|
|
|
# Enabling this option turns on support for extended attributes in UFS-based
|
2002-05-16 21:28:32 +00:00
|
|
|
# filesystems, which can be used to support high security configurations
|
|
|
|
# as well as new filesystem features.
|
2001-03-19 04:35:40 +00:00
|
|
|
UFS_EXTATTR opt_ufs.h
|
|
|
|
UFS_EXTATTR_AUTOSTART opt_ufs.h
|
Introduce extended attribute support for FFS, allowing arbitrary
(name, value) pairs to be associated with inodes. This support is
used for ACLs, MAC labels, and Capabilities in the TrustedBSD
security extensions, which are currently under development.
In this implementation, attributes are backed to data vnodes in the
style of the quota support in FFS. Support for FFS extended
attributes may be enabled using the FFS_EXTATTR kernel option
(disabled by default). Userland utilities and man pages will be
committed in the next batch. VFS interfaces and man pages have
been in the repo since 4.0-RELEASE and are unchanged.
o ufs/ufs/extattr.h: UFS-specific extattr defines
o ufs/ufs/ufs_extattr.c: bulk of support routines
o ufs/{ufs,ffs,mfs}/*.[ch]: hooks and extattr.h includes
o contrib/softupdates/ffs_softdep.c: extattr.h includes
o conf/options, conf/files, i386/conf/LINT: added FFS_EXTATTR
o coda/coda_vfsops.c: XXX required extattr.h due to ufsmount.h
(This should not be the case, and will be fixed in a future commit)
Currently attributes are not supported in MFS. This will be fixed.
Reviewed by: adrian, bp, freebsd-fs, other unthanked souls
Obtained from: TrustedBSD Project
2000-04-15 03:34:27 +00:00
|
|
|
|
2001-07-10 21:21:29 +00:00
|
|
|
# Enable fast hash lookups for large directories on UFS-based filesystems.
|
|
|
|
UFS_DIRHASH opt_ufs.h
|
|
|
|
|
2006-10-31 22:22:30 +00:00
|
|
|
# Enable gjournal-based UFS journal.
|
|
|
|
UFS_GJOURNAL opt_ufs.h
|
|
|
|
|
2003-04-15 19:43:52 +00:00
|
|
|
# The below sentence is not in English, and neither is this one.
|
|
|
|
# We plan to remove the static dependences above, with a
|
1998-01-24 02:54:56 +00:00
|
|
|
# <filesystem>_ROOT option to control if it usable as root. This list
|
|
|
|
# allows these options to be present in config files already (though
|
|
|
|
# they won't make any difference yet).
|
1998-06-30 03:01:37 +00:00
|
|
|
NFS_ROOT opt_nfsroot.h
|
1998-01-24 02:54:56 +00:00
|
|
|
|
2013-06-28 21:00:08 +00:00
|
|
|
# SMB/CIFS requester
|
|
|
|
NETSMB opt_netsmb.h
|
|
|
|
|
2001-07-26 23:05:35 +00:00
|
|
|
# Options used only in subr_param.c.
|
1999-01-14 03:30:48 +00:00
|
|
|
HZ opt_param.h
|
1999-04-09 16:28:11 +00:00
|
|
|
MAXFILES opt_param.h
|
1996-12-23 18:42:02 +00:00
|
|
|
NBUF opt_param.h
|
1998-11-05 14:28:26 +00:00
|
|
|
NSFBUFS opt_param.h
|
2001-08-20 00:41:12 +00:00
|
|
|
VM_BCACHE_SIZE_MAX opt_param.h
|
|
|
|
VM_SWZONE_SIZE_MAX opt_param.h
|
2001-07-26 23:05:35 +00:00
|
|
|
MAXUSERS
|
2001-10-10 23:06:54 +00:00
|
|
|
DFLDSIZ opt_param.h
|
|
|
|
MAXDSIZ opt_param.h
|
|
|
|
MAXSSIZ opt_param.h
|
1996-03-29 13:51:30 +00:00
|
|
|
|
|
|
|
# Generic SCSI options.
|
1998-09-15 09:59:15 +00:00
|
|
|
CAM_MAX_HIGHPOWER opt_cam.h
|
|
|
|
CAMDEBUG opt_cam.h
|
2012-06-07 10:05:51 +00:00
|
|
|
CAM_DEBUG_COMPILE opt_cam.h
|
1999-08-16 22:39:53 +00:00
|
|
|
CAM_DEBUG_DELAY opt_cam.h
|
1998-09-15 09:59:15 +00:00
|
|
|
CAM_DEBUG_BUS opt_cam.h
|
|
|
|
CAM_DEBUG_TARGET opt_cam.h
|
|
|
|
CAM_DEBUG_LUN opt_cam.h
|
|
|
|
CAM_DEBUG_FLAGS opt_cam.h
|
2013-04-20 00:33:37 +00:00
|
|
|
CAM_BOOT_DELAY opt_cam.h
|
2016-06-23 23:20:58 +00:00
|
|
|
CAM_IOSCHED_DYNAMIC opt_cam.h
|
1996-12-23 18:42:02 +00:00
|
|
|
SCSI_DELAY opt_scsi.h
|
1998-09-15 09:59:15 +00:00
|
|
|
SCSI_NO_SENSE_STRINGS opt_scsi.h
|
|
|
|
SCSI_NO_OP_STRINGS opt_scsi.h
|
|
|
|
|
2011-04-08 14:42:29 +00:00
|
|
|
# Options used only in cam/ata/ata_da.c
|
2013-04-06 19:12:49 +00:00
|
|
|
ADA_TEST_FAILURE opt_ada.h
|
|
|
|
ATA_STATIC_ID opt_ada.h
|
2011-04-08 14:42:29 +00:00
|
|
|
|
1998-09-15 09:59:15 +00:00
|
|
|
# Options used only in cam/scsi/scsi_cd.c
|
|
|
|
CHANGER_MIN_BUSY_SECONDS opt_cd.h
|
|
|
|
CHANGER_MAX_BUSY_SECONDS opt_cd.h
|
1996-03-29 13:51:30 +00:00
|
|
|
|
1999-08-20 03:48:11 +00:00
|
|
|
# Options used only in cam/scsi/scsi_sa.c.
|
2001-07-02 17:48:59 +00:00
|
|
|
SA_IO_TIMEOUT opt_sa.h
|
1998-10-02 05:15:51 +00:00
|
|
|
SA_SPACE_TIMEOUT opt_sa.h
|
|
|
|
SA_REWIND_TIMEOUT opt_sa.h
|
|
|
|
SA_ERASE_TIMEOUT opt_sa.h
|
1999-10-02 20:23:52 +00:00
|
|
|
SA_1FM_AT_EOD opt_sa.h
|
1996-06-16 19:58:24 +00:00
|
|
|
|
1999-08-20 03:48:11 +00:00
|
|
|
# Options used only in cam/scsi/scsi_pt.c
|
|
|
|
SCSI_PT_DEFAULT_TIMEOUT opt_pt.h
|
|
|
|
|
2000-01-15 07:12:09 +00:00
|
|
|
# Options used only in cam/scsi/scsi_ses.c
|
|
|
|
SES_ENABLE_PASSTHROUGH opt_ses.h
|
|
|
|
|
1999-12-16 16:09:57 +00:00
|
|
|
# Options used in dev/sym/ (Symbios SCSI driver).
|
|
|
|
SYM_SETUP_LP_PROBE_MAP opt_sym.h #-Low Priority Probe Map (bits)
|
|
|
|
# Allows the ncr to take precedence
|
|
|
|
# 1 (1<<0) -> 810a, 860
|
|
|
|
# 2 (1<<1) -> 825a, 875, 885, 895
|
|
|
|
# 4 (1<<2) -> 895a, 896, 1510d
|
|
|
|
SYM_SETUP_SCSI_DIFF opt_sym.h #-HVD support for 825a, 875, 885
|
|
|
|
# disabled:0 (default), enabled:1
|
|
|
|
SYM_SETUP_PCI_PARITY opt_sym.h #-PCI parity checking
|
|
|
|
# disabled:0, enabled:1 (default)
|
|
|
|
SYM_SETUP_MAX_LUN opt_sym.h #-Number of LUNs supported
|
|
|
|
# default:8, range:[1..64]
|
|
|
|
|
2014-09-23 05:37:17 +00:00
|
|
|
# Options used only in dev/ncr/*
|
1996-12-23 18:42:02 +00:00
|
|
|
SCSI_NCR_DEBUG opt_ncr.h
|
1996-12-23 18:40:40 +00:00
|
|
|
SCSI_NCR_MAX_SYNC opt_ncr.h
|
|
|
|
SCSI_NCR_MAX_WIDE opt_ncr.h
|
1996-12-23 18:42:02 +00:00
|
|
|
SCSI_NCR_MYADDR opt_ncr.h
|
1996-12-15 16:35:54 +00:00
|
|
|
|
2002-04-04 23:54:58 +00:00
|
|
|
# Options used only in dev/isp/*
|
1999-11-21 03:00:19 +00:00
|
|
|
ISP_TARGET_MODE opt_isp.h
|
2002-04-04 23:54:58 +00:00
|
|
|
ISP_FW_CRASH_DUMP opt_isp.h
|
2006-04-18 22:24:55 +00:00
|
|
|
ISP_DEFAULT_ROLES opt_isp.h
|
2010-11-27 20:38:26 +00:00
|
|
|
ISP_INTERNAL_TARGET opt_isp.h
|
1999-02-09 01:02:37 +00:00
|
|
|
|
2007-07-24 15:35:02 +00:00
|
|
|
# Options used only in dev/iscsi
|
|
|
|
ISCSI_INITIATOR_DEBUG opt_iscsi_initiator.h
|
|
|
|
|
1996-03-29 13:51:30 +00:00
|
|
|
# Net stuff.
|
2000-06-20 01:09:23 +00:00
|
|
|
ACCEPT_FILTER_DATA
|
2008-07-18 14:44:51 +00:00
|
|
|
ACCEPT_FILTER_DNS
|
2000-06-20 01:09:23 +00:00
|
|
|
ACCEPT_FILTER_HTTP
|
2004-06-13 17:29:10 +00:00
|
|
|
ALTQ opt_global.h
|
|
|
|
ALTQ_CBQ opt_altq.h
|
|
|
|
ALTQ_CDNR opt_altq.h
|
2015-08-21 22:02:22 +00:00
|
|
|
ALTQ_CODEL opt_altq.h
|
2004-06-13 17:29:10 +00:00
|
|
|
ALTQ_DEBUG opt_altq.h
|
2008-08-27 01:31:42 +00:00
|
|
|
ALTQ_HFSC opt_altq.h
|
2015-06-24 19:16:41 +00:00
|
|
|
ALTQ_FAIRQ opt_altq.h
|
2008-08-27 01:31:42 +00:00
|
|
|
ALTQ_NOPCC opt_altq.h
|
|
|
|
ALTQ_PRIQ opt_altq.h
|
|
|
|
ALTQ_RED opt_altq.h
|
|
|
|
ALTQ_RIO opt_altq.h
|
2004-07-08 22:35:36 +00:00
|
|
|
BOOTP opt_bootp.h
|
2008-05-16 06:27:03 +00:00
|
|
|
BOOTP_BLOCKSIZE opt_bootp.h
|
2004-07-08 22:35:36 +00:00
|
|
|
BOOTP_COMPAT opt_bootp.h
|
|
|
|
BOOTP_NFSROOT opt_bootp.h
|
|
|
|
BOOTP_NFSV3 opt_bootp.h
|
|
|
|
BOOTP_WIRED_TO opt_bootp.h
|
2005-10-05 10:09:17 +00:00
|
|
|
DEVICE_POLLING
|
2008-08-27 01:31:42 +00:00
|
|
|
DUMMYNET opt_ipdn.h
|
1998-01-08 23:42:31 +00:00
|
|
|
INET opt_inet.h
|
1999-12-07 17:39:16 +00:00
|
|
|
INET6 opt_inet6.h
|
1997-11-05 20:17:23 +00:00
|
|
|
IPDIVERT
|
1999-11-23 21:44:59 +00:00
|
|
|
IPFILTER opt_ipfilter.h
|
2008-08-27 01:31:42 +00:00
|
|
|
IPFILTER_DEFAULT_BLOCK opt_ipfilter.h
|
1999-11-23 21:44:59 +00:00
|
|
|
IPFILTER_LOG opt_ipfilter.h
|
2005-04-28 16:33:15 +00:00
|
|
|
IPFILTER_LOOKUP opt_ipfilter.h
|
1996-06-12 19:34:33 +00:00
|
|
|
IPFIREWALL opt_ipfw.h
|
1997-09-10 03:07:14 +00:00
|
|
|
IPFIREWALL_DEFAULT_TO_ACCEPT opt_ipfw.h
|
2007-01-03 11:12:54 +00:00
|
|
|
IPFIREWALL_NAT opt_ipfw.h
|
2016-08-15 04:59:38 +00:00
|
|
|
IPFIREWALL_NAT64 opt_ipfw.h
|
2016-08-13 16:09:49 +00:00
|
|
|
IPFIREWALL_NAT64_DIRECT_OUTPUT opt_ipfw.h
|
2016-07-18 19:46:31 +00:00
|
|
|
IPFIREWALL_NPTV6 opt_ipfw.h
|
2008-08-27 01:31:42 +00:00
|
|
|
IPFIREWALL_VERBOSE opt_ipfw.h
|
|
|
|
IPFIREWALL_VERBOSE_LIMIT opt_ipfw.h
|
|
|
|
IPSEC opt_ipsec.h
|
|
|
|
IPSEC_DEBUG opt_ipsec.h
|
Added support for NAT-Traversal (RFC 3948) in IPsec stack.
Thanks to (no special order) Emmanuel Dreyfus (manu@netbsd.org), Larry
Baird (lab@gta.com), gnn, bz, and other FreeBSD devs, Julien Vanherzeele
(julien.vanherzeele@netasq.com, for years of bug reporting), the PFSense
team, and all people who used / tried the NAT-T patch for years and
reported bugs, patches, etc...
X-MFC: never
Reviewed by: bz
Approved by: gnn(mentor)
Obtained from: NETASQ
2009-06-12 15:44:35 +00:00
|
|
|
IPSEC_NAT_T opt_ipsec.h
|
1999-02-22 18:19:57 +00:00
|
|
|
IPSTEALTH
|
2008-08-27 01:31:42 +00:00
|
|
|
KRPC
|
|
|
|
LIBALIAS
|
2003-07-15 08:59:38 +00:00
|
|
|
LIBMBPOOL
|
2001-02-24 15:44:30 +00:00
|
|
|
LIBMCHAIN
|
2008-04-29 21:23:21 +00:00
|
|
|
MBUF_PROFILING
|
2008-08-27 01:31:42 +00:00
|
|
|
MBUF_STRESS_TEST
|
|
|
|
MROUTING opt_mrouting.h
|
|
|
|
NFSLOCKD
|
Implement a CPU-affine TCP and UDP connection lookup data structure,
struct inpcbgroup. pcbgroups, or "connection groups", supplement the
existing inpcbinfo connection hash table, which when pcbgroups are
enabled, might now be thought of more usefully as a per-protocol
4-tuple reservation table.
Connections are assigned to connection groups base on a hash of their
4-tuple; wildcard sockets require special handling, and are members
of all connection groups. During a connection lookup, a
per-connection group lock is employed rather than the global pcbinfo
lock. By aligning connection groups with input path processing,
connection groups take on an effective CPU affinity, especially when
aligned with RSS work placement (see a forthcoming commit for
details). This eliminates cache line migration associated with
global, protocol-layer data structures in steady state TCP and UDP
processing (with the exception of protocol-layer statistics; further
commit to follow).
Elements of this approach were inspired by Willman, Rixner, and Cox's
2006 USENIX paper, "An Evaluation of Network Stack Parallelization
Strategies in Modern Operating Systems". However, there are also
significant differences: we maintain the inpcb lock, rather than using
the connection group lock for per-connection state.
Likewise, the focus of this implementation is alignment with NIC
packet distribution strategies such as RSS, rather than pure software
strategies. Despite that focus, software distribution is supported
through the parallel netisr implementation, and works well in
configurations where the number of hardware threads is greater than
the number of NIC input queues, such as in the RMI XLR threaded MIPS
architecture.
Another important difference is the continued maintenance of existing
hash tables as "reservation tables" -- these are useful both to
distinguish the resource allocation aspect of protocol name management
and the more common-case lookup aspect. In configurations where
connection tables are aligned with hardware hashes, it is desirable to
use the traditional lookup tables for loopback or encapsulated traffic
rather than take the expense of hardware hashes that are hard to
implement efficiently in software (such as RSS Toeplitz).
Connection group support is enabled by compiling "options PCBGROUP"
into your kernel configuration; for the time being, this is an
experimental feature, and hence is not enabled by default.
Subject to the limited MFCability of change dependencies in inpcb,
and its change to the inpcbinfo init function signature, this change
in principle could be merged to FreeBSD 8.x.
Reviewed by: bz
Sponsored by: Juniper Networks, Inc.
2011-06-06 12:55:02 +00:00
|
|
|
PCBGROUP opt_pcbgroup.h
|
2012-09-18 11:07:19 +00:00
|
|
|
PF_DEFAULT_TO_DROP opt_pf.h
|
This patch provides the back end support for equal-cost multi-path
(ECMP) for both IPv4 and IPv6. Previously, multipath route insertion
is disallowed. For example,
route add -net 192.103.54.0/24 10.9.44.1
route add -net 192.103.54.0/24 10.9.44.2
The second route insertion will trigger an error message of
"add net 192.103.54.0/24: gateway 10.2.5.2: route already in table"
Multiple default routes can also be inserted. Here is the netstat
output:
default 10.2.5.1 UGS 0 3074 bge0 =>
default 10.2.5.2 UGS 0 0 bge0
When multipath routes exist, the "route delete" command requires
a specific gateway to be specified or else an error message would
be displayed. For example,
route delete default
would fail and trigger the following error message:
"route: writing to routing socket: No such process"
"delete net default: not in table"
On the other hand,
route delete default 10.2.5.2
would be successful: "delete net default: gateway 10.2.5.2"
One does not have to specify a gateway if there is only a single
route for a particular destination.
I need to perform more testings on address aliases and multiple
interfaces that have the same IP prefixes. This patch as it
stands today is not yet ready for prime time. Therefore, the ECMP
code fragments are fully guarded by the RADIX_MPATH macro.
Include the "options RADIX_MPATH" in the kernel configuration
to enable this feature.
Reviewed by: robert, sam, gnn, julian, kmacy
2008-04-13 05:45:14 +00:00
|
|
|
RADIX_MPATH opt_mpath.h
|
2008-08-27 01:31:42 +00:00
|
|
|
ROUTETABLES opt_route.h
|
Several years after initial development, merge prototype support for
linking NIC Receive Side Scaling (RSS) to the network stack's
connection-group implementation. This prototype (and derived patches)
are in use at Juniper and several other FreeBSD-using companies, so
despite some reservations about its maturity, merge the patch to the
base tree so that it can be iteratively refined in collaboration rather
than maintained as a set of gradually diverging patch sets.
(1) Merge a software implementation of the Toeplitz hash specified in
RSS implemented by David Malone. This is used to allow suitable
pcbgroup placement of connections before the first packet is
received from the NIC. Software hashing is generally avoided,
however, due to high cost of the hash on general-purpose CPUs.
(2) In in_rss.c, maintain authoritative versions of RSS state intended
to be pushed to each NIC, including keying material, hash
algorithm/ configuration, and buckets. Provide software-facing
interfaces to hash 2- and 4-tuples for IPv4 and IPv6 using both
the RSS standardised Toeplitz and a 'naive' variation with a hash
efficient in software but with poor distribution properties.
Implement rss_m2cpuid()to be used by netisr and other load
balancing code to look up the CPU on which an mbuf should be
processed.
(3) In the Ethernet link layer, allow netisr distribution using RSS as
a source of policy as an alternative to source ordering; continue
to default to direct dispatch (i.e., don't try and requeue packets
for processing on the 'right' CPU if they arrive in a directly
dispatchable context).
(4) Allow RSS to control tuning of connection groups in order to align
groups with RSS buckets. If a packet arrives on a protocol using
connection groups, and contains a suitable hardware-generated
hash, use that hash value to select the connection group for pcb
lookup for both IPv4 and IPv6. If no hardware-generated Toeplitz
hash is available, we fall back on regular PCB lookup risking
contention rather than pay the cost of Toeplitz in software --
this is a less scalable but, at my last measurement, faster
approach. As core counts go up, we may want to revise this
strategy despite CPU overhead.
Where device drivers suitably configure NICs, and connection groups /
RSS are enabled, this should avoid both lock and line contention during
connection lookup for TCP. This commit does not modify any device
drivers to tune device RSS configuration to the global RSS
configuration; patches are in circulation to do this for at least
Chelsio T3 and Intel 1G/10G drivers. Currently, the KPI for device
drivers is not particularly robust, nor aware of more advanced features
such as runtime reconfiguration/rebalancing. This will hopefully prove
a useful starting point for refinement.
No MFC is scheduled as we will first want to nail down a more mature
and maintainable KPI/KBI for device drivers.
Sponsored by: Juniper Networks (original work)
Sponsored by: EMC/Isilon (patch update and merge)
2014-03-15 00:57:50 +00:00
|
|
|
RSS opt_rss.h
|
1999-08-10 09:42:32 +00:00
|
|
|
SLIP_IFF_OPTS opt_slip.h
|
1997-09-16 18:36:06 +00:00
|
|
|
TCPDEBUG
|
There are times when it would be really nice to have a record of the last few
packets and/or state transitions from each TCP socket. That would help with
narrowing down certain problems we see in the field that are hard to reproduce
without understanding the history of how we got into a certain state. This
change provides just that.
It saves copies of the last N packets in a list in the tcpcb. When the tcpcb is
destroyed, the list is freed. I thought this was likely to be more
performance-friendly than saving copies of the tcpcb. Plus, with the packets,
you should be able to reverse-engineer what happened to the tcpcb.
To enable the feature, you will need to compile a kernel with the TCPPCAP
option. Even then, the feature defaults to being deactivated. You can activate
it by setting a positive value for the number of captured packets. You can do
that on either a global basis or on a per-socket basis (via a setsockopt call).
There is no way to get the packets out of the kernel other than using kmem or
getting a coredump. I thought that would help some of the legal/privacy concerns
regarding such a feature. However, it should be possible to add a future effort
to export them in PCAP format.
I tested this at low scale, and found that there were no mbuf leaks and the peak
mbuf usage appeared to be unchanged with and without the feature.
The main performance concern I can envision is the number of mbufs that would be
used on systems with a large number of sockets. If you save five packets per
direction per socket and have 3,000 sockets, that will consume at least 30,000
mbufs just to keep these packets. I tried to reduce the concerns associated with
this by limiting the number of clusters (not mbufs) that could be used for this
feature. Again, in my testing, that appears to work correctly.
Differential Revision: D3100
Submitted by: Jonathan Looney <jlooney at juniper dot net>
Reviewed by: gnn, hiren
2015-10-14 00:35:37 +00:00
|
|
|
TCPPCAP opt_global.h
|
2015-04-29 12:37:45 +00:00
|
|
|
SIFTR
|
In the TCP stack, the hhook(9) framework provides hooks for kernel modules
to add actions that run when a TCP frame is sent or received on a TCP
session in the ESTABLISHED state. In the base tree, this functionality is
only used for the h_ertt module, which is used by the cc_cdg, cc_chd, cc_hd,
and cc_vegas congestion control modules.
Presently, we incur overhead to check for hooks each time a TCP frame is
sent or received on an ESTABLISHED TCP session.
This change adds a new compile-time option (TCP_HHOOK) to determine whether
to include the hhook(9) framework for TCP. To retain backwards
compatibility, I added the TCP_HHOOK option to every configuration file that
already defined "options INET". (Therefore, this patch introduces no
functional change. In order to see a functional difference, you need to
compile a custom kernel without the TCP_HHOOK option.) This change will
allow users to easily exclude this functionality from their kernel, should
they wish to do so.
Note that any users who use a custom kernel configuration and use one of the
congestion control modules listed above will need to add the TCP_HHOOK
option to their kernel configuration.
Reviewed by: rrs, lstewart, hiren (previous version), sjg (makefiles only)
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D8185
2016-10-12 02:16:42 +00:00
|
|
|
TCP_HHOOK opt_inet.h
|
2012-06-19 07:34:13 +00:00
|
|
|
TCP_OFFLOAD opt_inet.h # Enable code to dispatch TCP offloading
|
2015-12-24 19:09:48 +00:00
|
|
|
TCP_RFC7413 opt_inet.h
|
|
|
|
TCP_RFC7413_MAX_KEYS opt_inet.h
|
Initial import of RFC 2385 (TCP-MD5) digest support.
This is the first of two commits; bringing in the kernel support first.
This can be enabled by compiling a kernel with options TCP_SIGNATURE
and FAST_IPSEC.
For the uninitiated, this is a TCP option which provides for a means of
authenticating TCP sessions which came into being before IPSEC. It is
still relevant today, however, as it is used by many commercial router
vendors, particularly with BGP, and as such has become a requirement for
interconnect at many major Internet points of presence.
Several parts of the TCP and IP headers, including the segment payload,
are digested with MD5, including a shared secret. The PF_KEY interface
is used to manage the secrets using security associations in the SADB.
There is a limitation here in that as there is no way to map a TCP flow
per-port back to an SPI without polluting tcpcb or using the SPD; the
code to do the latter is unstable at this time. Therefore this code only
supports per-host keying granularity.
Whilst FAST_IPSEC is mutually exclusive with KAME IPSEC (and thus IPv6),
TCP_SIGNATURE applies only to IPv4. For the vast majority of prospective
users of this feature, this will not pose any problem.
This implementation is output-only; that is, the option is honoured when
responding to a host initiating a TCP session, but no effort is made
[yet] to authenticate inbound traffic. This is, however, sufficient to
interwork with Cisco equipment.
Tested with a Cisco 2501 running IOS 12.0(27), and Quagga 0.96.4 with
local patches. Patches for tcpdump to validate TCP-MD5 sessions are also
available from me upon request.
Sponsored by: sentex.net
2004-02-11 04:26:04 +00:00
|
|
|
TCP_SIGNATURE opt_inet.h
|
Merge the //depot/user/yar/vlan branch into CVS. It contains some collective
work by yar, thompsa and myself. The checksum offloading part also involves
work done by Mihail Balikov.
The most important changes:
o Instead of global linked list of all vlan softc use a per-trunk
hash. The size of hash is dynamically adjusted, depending on
number of entries. This changes struct ifnet, replacing counter
of vlans with a pointer to trunk structure. This change is an
improvement for setups with big number of VLANs, several interfaces
and several CPUs. It is a small regression for a setup with a single
VLAN interface.
An alternative to dynamic hash is a per-trunk static array with
4096 entries, which is a compile time option - VLAN_ARRAY. In my
experiments the array is not an improvement, probably because such
a big trunk structure doesn't fit into CPU cache.
o Introduce an UMA zone for VLAN tags. Since drivers depend on it,
the zone is declared in kern_mbuf.c, not in optional vlan(4) driver.
This change is a big improvement for any setup utilizing vlan(4).
o Use rwlock(9) instead of mutex(9) for locking. We are the first
ones to do this! :)
o Some drivers can do hardware VLAN tagging + hardware checksum
offloading. Add an infrastructure for this. Whenever vlan(4) is
attached to a parent or parent configuration is changed, the flags
on vlan(4) interface are updated.
In collaboration with: yar, thompsa
In collaboration with: Mihail Balikov <mihail.balikov interbgc.com>
2006-01-30 13:45:15 +00:00
|
|
|
VLAN_ARRAY opt_vlan.h
|
2000-07-20 00:35:37 +00:00
|
|
|
XBONEHACK
|
2009-06-09 21:55:28 +00:00
|
|
|
FLOWTABLE opt_route.h
|
2014-02-17 11:50:56 +00:00
|
|
|
FLOWTABLE_HASH_ALL opt_route.h
|
1998-01-26 18:31:18 +00:00
|
|
|
|
2006-11-03 15:23:16 +00:00
|
|
|
#
|
|
|
|
# SCTP
|
|
|
|
#
|
|
|
|
SCTP opt_sctp.h
|
2007-06-14 22:59:04 +00:00
|
|
|
SCTP_DEBUG opt_sctp.h # Enable debug printfs
|
2009-02-06 10:30:46 +00:00
|
|
|
SCTP_WITH_NO_CSUM opt_sctp.h # Use this at your peril
|
|
|
|
SCTP_LOCK_LOGGING opt_sctp.h # Log to KTR lock activity
|
|
|
|
SCTP_MBUF_LOGGING opt_sctp.h # Log to KTR general mbuf aloc/free
|
2007-06-14 22:59:04 +00:00
|
|
|
SCTP_MBCNT_LOGGING opt_sctp.h # Log to KTR mbcnt activity
|
2009-02-06 10:30:46 +00:00
|
|
|
SCTP_PACKET_LOGGING opt_sctp.h # Log to a packet buffer last N packets
|
|
|
|
SCTP_LTRACE_CHUNKS opt_sctp.h # Log to KTR chunks processed
|
|
|
|
SCTP_LTRACE_ERRORS opt_sctp.h # Log to KTR error returns.
|
2014-06-10 16:11:20 +00:00
|
|
|
SCTP_USE_PERCPU_STAT opt_sctp.h # Use per cpu stats.
|
|
|
|
SCTP_MCORE_INPUT opt_sctp.h # Have multiple input threads for input mbufs
|
|
|
|
SCTP_LOCAL_TRACE_BUF opt_sctp.h # Use tracebuffer exported via sysctl
|
2014-08-13 15:50:16 +00:00
|
|
|
SCTP_DETAILED_STR_STATS opt_sctp.h # Use per PR-SCTP policy stream stats
|
2007-06-14 22:59:04 +00:00
|
|
|
#
|
|
|
|
#
|
|
|
|
#
|
2006-11-03 15:23:16 +00:00
|
|
|
|
1999-10-21 09:06:11 +00:00
|
|
|
# Netgraph(4). Use option NETGRAPH to enable the base netgraph code.
|
|
|
|
# Each netgraph node type can be either be compiled into the kernel
|
|
|
|
# or loaded dynamically. To get the former, include the corresponding
|
2000-09-01 01:37:13 +00:00
|
|
|
# option below. Each type has its own man page, e.g. ng_async(4).
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH
|
2005-05-16 08:25:55 +00:00
|
|
|
NETGRAPH_DEBUG opt_netgraph.h
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH_ASYNC opt_netgraph.h
|
2004-03-08 10:54:35 +00:00
|
|
|
NETGRAPH_ATMLLC opt_netgraph.h
|
2004-04-27 16:38:15 +00:00
|
|
|
NETGRAPH_ATM_ATMPIF opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH_BT3C opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH_H4 opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH_HCI opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH_L2CAP opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH_SOCKET opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH_UBT opt_netgraph.h
|
|
|
|
NETGRAPH_BLUETOOTH_UBTBCMFW opt_netgraph.h
|
1999-12-03 21:21:49 +00:00
|
|
|
NETGRAPH_BPF opt_netgraph.h
|
2000-09-01 01:37:13 +00:00
|
|
|
NETGRAPH_BRIDGE opt_netgraph.h
|
2007-05-15 16:43:01 +00:00
|
|
|
NETGRAPH_CAR opt_netgraph.h
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH_CISCO opt_netgraph.h
|
2006-12-29 13:16:43 +00:00
|
|
|
NETGRAPH_DEFLATE opt_netgraph.h
|
2004-07-20 12:42:54 +00:00
|
|
|
NETGRAPH_DEVICE opt_netgraph.h
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH_ECHO opt_netgraph.h
|
2004-06-27 02:25:38 +00:00
|
|
|
NETGRAPH_EIFACE opt_netgraph.h
|
2000-06-26 23:34:54 +00:00
|
|
|
NETGRAPH_ETHER opt_netgraph.h
|
2008-12-25 07:34:14 +00:00
|
|
|
NETGRAPH_ETHER_ECHO opt_netgraph.h
|
2004-06-27 02:36:33 +00:00
|
|
|
NETGRAPH_FEC opt_netgraph.h
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH_FRAME_RELAY opt_netgraph.h
|
2001-09-26 23:50:17 +00:00
|
|
|
NETGRAPH_GIF opt_netgraph.h
|
|
|
|
NETGRAPH_GIF_DEMUX opt_netgraph.h
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH_HOLE opt_netgraph.h
|
|
|
|
NETGRAPH_IFACE opt_netgraph.h
|
2001-09-27 21:54:27 +00:00
|
|
|
NETGRAPH_IP_INPUT opt_netgraph.h
|
2005-02-05 12:15:56 +00:00
|
|
|
NETGRAPH_IPFW opt_netgraph.h
|
1999-11-16 23:49:07 +00:00
|
|
|
NETGRAPH_KSOCKET opt_netgraph.h
|
2002-08-20 21:59:50 +00:00
|
|
|
NETGRAPH_L2TP opt_netgraph.h
|
2003-04-15 19:43:52 +00:00
|
|
|
NETGRAPH_LMI opt_netgraph.h
|
2000-04-09 21:15:23 +00:00
|
|
|
# MPPC compression requires proprietary files (not included)
|
|
|
|
NETGRAPH_MPPC_COMPRESSION opt_netgraph.h
|
|
|
|
NETGRAPH_MPPC_ENCRYPTION opt_netgraph.h
|
2005-05-05 23:41:21 +00:00
|
|
|
NETGRAPH_NAT opt_netgraph.h
|
2004-09-16 20:35:28 +00:00
|
|
|
NETGRAPH_NETFLOW opt_netgraph.h
|
2000-11-16 16:59:26 +00:00
|
|
|
NETGRAPH_ONE2MANY opt_netgraph.h
|
New netgraph node ng_patch(4). It performs data modification of packets
passing through. Modifications are restricted to a subset of C language
operations on unsigned integers of 8, 16, 32 or 64 bit size.
These are: set to new value (=), addition (+=), subtraction (-=),
multiplication (*=), division (/=), negation (= -), bitwise AND (&=),
bitwise OR (|=), bitwise eXclusive OR (^=), shift left (<<=),
shift right (>>=). Several operations are all applied to a packet
sequentially in order they were specified by user.
Submitted by: Maxim Ignatenko <gelraen.ua at gmail.com>
Vadim Goncharov <vadimnuclight at tpu.ru>
Discussed with: net@
Approved by: mav (mentor)
MFC after: 1 month
2010-06-09 12:25:57 +00:00
|
|
|
NETGRAPH_PATCH opt_netgraph.h
|
2009-06-23 06:11:04 +00:00
|
|
|
NETGRAPH_PIPE opt_netgraph.h
|
1999-11-02 22:36:09 +00:00
|
|
|
NETGRAPH_PPP opt_netgraph.h
|
|
|
|
NETGRAPH_PPPOE opt_netgraph.h
|
1999-12-08 18:55:39 +00:00
|
|
|
NETGRAPH_PPTPGRE opt_netgraph.h
|
2006-12-29 13:16:43 +00:00
|
|
|
NETGRAPH_PRED1 opt_netgraph.h
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH_RFC1490 opt_netgraph.h
|
|
|
|
NETGRAPH_SOCKET opt_netgraph.h
|
2001-07-25 00:15:02 +00:00
|
|
|
NETGRAPH_SPLIT opt_netgraph.h
|
2004-04-24 22:03:02 +00:00
|
|
|
NETGRAPH_SPPP opt_netgraph.h
|
2006-06-27 12:45:28 +00:00
|
|
|
NETGRAPH_TAG opt_netgraph.h
|
2005-06-10 08:05:13 +00:00
|
|
|
NETGRAPH_TCPMSS opt_netgraph.h
|
1999-10-21 09:06:11 +00:00
|
|
|
NETGRAPH_TEE opt_netgraph.h
|
|
|
|
NETGRAPH_TTY opt_netgraph.h
|
|
|
|
NETGRAPH_UI opt_netgraph.h
|
1999-10-25 22:07:30 +00:00
|
|
|
NETGRAPH_VJC opt_netgraph.h
|
2009-11-11 11:07:30 +00:00
|
|
|
NETGRAPH_VLAN opt_netgraph.h
|
2004-04-23 19:48:43 +00:00
|
|
|
|
2003-06-25 13:21:04 +00:00
|
|
|
# NgATM options
|
|
|
|
NGATM_ATM opt_netgraph.h
|
2003-10-27 11:19:08 +00:00
|
|
|
NGATM_ATMBASE opt_netgraph.h
|
|
|
|
NGATM_SSCOP opt_netgraph.h
|
|
|
|
NGATM_SSCFU opt_netgraph.h
|
2003-11-07 09:18:53 +00:00
|
|
|
NGATM_UNI opt_netgraph.h
|
2004-08-12 15:01:59 +00:00
|
|
|
NGATM_CCATM opt_netgraph.h
|
2003-06-25 13:21:04 +00:00
|
|
|
|
2002-04-28 04:58:40 +00:00
|
|
|
# DRM options
|
|
|
|
DRM_DEBUG opt_drm.h
|
|
|
|
|
2011-11-08 18:23:02 +00:00
|
|
|
TI_SF_BUF_JUMBO opt_ti.h
|
At long last, commit the zero copy sockets code.
MAKEDEV: Add MAKEDEV glue for the ti(4) device nodes.
ti.4: Update the ti(4) man page to include information on the
TI_JUMBO_HDRSPLIT and TI_PRIVATE_JUMBOS kernel options,
and also include information about the new character
device interface and the associated ioctls.
man9/Makefile: Add jumbo.9 and zero_copy.9 man pages and associated
links.
jumbo.9: New man page describing the jumbo buffer allocator
interface and operation.
zero_copy.9: New man page describing the general characteristics of
the zero copy send and receive code, and what an
application author should do to take advantage of the
zero copy functionality.
NOTES: Add entries for ZERO_COPY_SOCKETS, TI_PRIVATE_JUMBOS,
TI_JUMBO_HDRSPLIT, MSIZE, and MCLSHIFT.
conf/files: Add uipc_jumbo.c and uipc_cow.c.
conf/options: Add the 5 options mentioned above.
kern_subr.c: Receive side zero copy implementation. This takes
"disposable" pages attached to an mbuf, gives them to
a user process, and then recycles the user's page.
This is only active when ZERO_COPY_SOCKETS is turned on
and the kern.ipc.zero_copy.receive sysctl variable is
set to 1.
uipc_cow.c: Send side zero copy functions. Takes a page written
by the user and maps it copy on write and assigns it
kernel virtual address space. Removes copy on write
mapping once the buffer has been freed by the network
stack.
uipc_jumbo.c: Jumbo disposable page allocator code. This allocates
(optionally) disposable pages for network drivers that
want to give the user the option of doing zero copy
receive.
uipc_socket.c: Add kern.ipc.zero_copy.{send,receive} sysctls that are
enabled if ZERO_COPY_SOCKETS is turned on.
Add zero copy send support to sosend() -- pages get
mapped into the kernel instead of getting copied if
they meet size and alignment restrictions.
uipc_syscalls.c:Un-staticize some of the sf* functions so that they
can be used elsewhere. (uipc_cow.c)
if_media.c: In the SIOCGIFMEDIA ioctl in ifmedia_ioctl(), avoid
calling malloc() with M_WAITOK. Return an error if
the M_NOWAIT malloc fails.
The ti(4) driver and the wi(4) driver, at least, call
this with a mutex held. This causes witness warnings
for 'ifconfig -a' with a wi(4) or ti(4) board in the
system. (I've only verified for ti(4)).
ip_output.c: Fragment large datagrams so that each segment contains
a multiple of PAGE_SIZE amount of data plus headers.
This allows the receiver to potentially do page
flipping on receives.
if_ti.c: Add zero copy receive support to the ti(4) driver. If
TI_PRIVATE_JUMBOS is not defined, it now uses the
jumbo(9) buffer allocator for jumbo receive buffers.
Add a new character device interface for the ti(4)
driver for the new debugging interface. This allows
(a patched version of) gdb to talk to the Tigon board
and debug the firmware. There are also a few additional
debugging ioctls available through this interface.
Add header splitting support to the ti(4) driver.
Tweak some of the default interrupt coalescing
parameters to more useful defaults.
Add hooks for supporting transmit flow control, but
leave it turned off with a comment describing why it
is turned off.
if_tireg.h: Change the firmware rev to 12.4.11, since we're really
at 12.4.11 plus fixes from 12.4.13.
Add defines needed for debugging.
Remove the ti_stats structure, it is now defined in
sys/tiio.h.
ti_fw.h: 12.4.11 firmware.
ti_fw2.h: 12.4.11 firmware, plus selected fixes from 12.4.13,
and my header splitting patches. Revision 12.4.13
doesn't handle 10/100 negotiation properly. (This
firmware is the same as what was in the tree previously,
with the addition of header splitting support.)
sys/jumbo.h: Jumbo buffer allocator interface.
sys/mbuf.h: Add a new external mbuf type, EXT_DISPOSABLE, to
indicate that the payload buffer can be thrown away /
flipped to a userland process.
socketvar.h: Add prototype for socow_setup.
tiio.h: ioctl interface to the character portion of the ti(4)
driver, plus associated structure/type definitions.
uio.h: Change prototype for uiomoveco() so that we'll know
whether the source page is disposable.
ufs_readwrite.c:Update for new prototype of uiomoveco().
vm_fault.c: In vm_fault(), check to see whether we need to do a page
based copy on write fault.
vm_object.c: Add a new function, vm_object_allocate_wait(). This
does the same thing that vm_object allocate does, except
that it gives the caller the opportunity to specify whether
it should wait on the uma_zalloc() of the object structre.
This allows vm objects to be allocated while holding a
mutex. (Without generating WITNESS warnings.)
vm_object_allocate() is implemented as a call to
vm_object_allocate_wait() with the malloc flag set to
M_WAITOK.
vm_object.h: Add prototype for vm_object_allocate_wait().
vm_page.c: Add page-based copy on write setup, clear and fault
routines.
vm_page.h: Add page based COW function prototypes and variable in
the vm_page structure.
Many thanks to Drew Gallatin, who wrote the zero copy send and receive
code, and to all the other folks who have tested and reviewed this code
over the years.
2002-06-26 03:37:47 +00:00
|
|
|
TI_JUMBO_HDRSPLIT opt_ti.h
|
|
|
|
|
1998-01-31 05:00:21 +00:00
|
|
|
# XXX Conflict: # of devices vs network protocol (Native ATM).
|
|
|
|
# This makes "atm.h" unusable.
|
2003-04-12 09:40:37 +00:00
|
|
|
NATM
|
1998-01-31 05:00:21 +00:00
|
|
|
|
1998-01-26 18:31:18 +00:00
|
|
|
# DPT driver debug flags
|
1998-08-05 00:54:38 +00:00
|
|
|
DPT_MEASURE_PERFORMANCE opt_dpt.h
|
|
|
|
DPT_RESET_HBA opt_dpt.h
|
1998-01-31 07:23:16 +00:00
|
|
|
|
|
|
|
# Misc debug flags. Most of these should probably be replaced with
|
|
|
|
# 'DEBUG', and then let people recompile just the interesting modules
|
1999-02-14 12:00:00 +00:00
|
|
|
# with 'make CC="cc -DDEBUG"'.
|
1998-01-31 07:23:16 +00:00
|
|
|
CLUSTERDEBUG opt_debug_cluster.h
|
1999-01-10 17:41:33 +00:00
|
|
|
DEBUG_1284 opt_ppb_1284.h
|
|
|
|
VP0_DEBUG opt_vpo.h
|
1999-02-14 12:00:00 +00:00
|
|
|
LPT_DEBUG opt_lpt.h
|
1999-01-23 17:07:49 +00:00
|
|
|
PLIP_DEBUG opt_plip.h
|
1998-01-31 07:23:16 +00:00
|
|
|
LOCKF_DEBUG opt_debug_lockf.h
|
|
|
|
SI_DEBUG opt_debug_si.h
|
2015-04-21 10:35:23 +00:00
|
|
|
IFMEDIA_DEBUG opt_ifmedia.h
|
1998-01-31 07:23:16 +00:00
|
|
|
|
1999-11-06 23:41:10 +00:00
|
|
|
# Fb options
|
|
|
|
FB_DEBUG opt_fb.h
|
|
|
|
FB_INSTALL_CDEV opt_fb.h
|
|
|
|
|
1999-01-25 19:34:27 +00:00
|
|
|
# ppbus related options
|
|
|
|
PERIPH_1284 opt_ppb_1284.h
|
|
|
|
DONTPROBE_1284 opt_ppb_1284.h
|
|
|
|
|
|
|
|
# smbus related options
|
|
|
|
ENABLE_ALART opt_intpm.h
|
1998-01-31 07:23:16 +00:00
|
|
|
|
1998-02-06 12:41:39 +00:00
|
|
|
# These cause changes all over the kernel
|
1999-11-06 23:41:10 +00:00
|
|
|
BLKDEV_IOSIZE opt_global.h
|
2003-07-11 17:04:37 +00:00
|
|
|
BURN_BRIDGES opt_global.h
|
1998-02-06 12:41:39 +00:00
|
|
|
DEBUG opt_global.h
|
1999-01-20 14:49:12 +00:00
|
|
|
DEBUG_LOCKS opt_global.h
|
1999-01-08 17:31:30 +00:00
|
|
|
DEBUG_VFS_LOCKS opt_global.h
|
2008-08-26 07:28:27 +00:00
|
|
|
DFLTPHYS opt_global.h
|
1998-02-06 12:41:39 +00:00
|
|
|
DIAGNOSTIC opt_global.h
|
2001-02-24 19:03:18 +00:00
|
|
|
INVARIANT_SUPPORT opt_global.h
|
1999-01-08 17:31:30 +00:00
|
|
|
INVARIANTS opt_global.h
|
2011-07-19 00:37:24 +00:00
|
|
|
MAXCPU opt_global.h
|
2013-05-07 22:46:24 +00:00
|
|
|
MAXMEMDOM opt_global.h
|
2008-08-26 07:28:27 +00:00
|
|
|
MAXPHYS opt_global.h
|
2002-07-11 04:15:53 +00:00
|
|
|
MCLSHIFT opt_global.h
|
2004-02-25 09:35:35 +00:00
|
|
|
MUTEX_NOINLINE opt_global.h
|
2006-11-11 03:18:07 +00:00
|
|
|
LOCK_PROFILING opt_global.h
|
2007-02-27 06:42:05 +00:00
|
|
|
LOCK_PROFILING_FAST opt_global.h
|
2002-07-11 04:15:53 +00:00
|
|
|
MSIZE opt_global.h
|
2001-04-11 19:29:24 +00:00
|
|
|
REGRESSION opt_global.h
|
2006-01-27 23:13:26 +00:00
|
|
|
RWLOCK_NOINLINE opt_global.h
|
2007-03-31 23:23:42 +00:00
|
|
|
SX_NOINLINE opt_global.h
|
1999-01-08 17:31:30 +00:00
|
|
|
VFS_BIO_DEBUG opt_global.h
|
1998-02-23 07:42:43 +00:00
|
|
|
|
|
|
|
# These are VM related options
|
1999-11-06 23:51:29 +00:00
|
|
|
VM_KMEM_SIZE opt_vm.h
|
|
|
|
VM_KMEM_SIZE_SCALE opt_vm.h
|
1998-02-23 07:42:43 +00:00
|
|
|
VM_KMEM_SIZE_MAX opt_vm.h
|
2007-12-27 16:45:39 +00:00
|
|
|
VM_NRESERVLEVEL opt_vm.h
|
2016-04-09 13:58:04 +00:00
|
|
|
VM_NUMA_ALLOC opt_vm.h
|
2007-12-27 16:45:39 +00:00
|
|
|
VM_LEVEL_0_ORDER opt_vm.h
|
1999-11-06 23:51:29 +00:00
|
|
|
NO_SWAPPING opt_vm.h
|
2003-03-26 20:18:40 +00:00
|
|
|
MALLOC_MAKE_FAILURES opt_vm.h
|
2002-04-09 05:14:17 +00:00
|
|
|
MALLOC_PROFILE opt_vm.h
|
2010-07-28 15:36:12 +00:00
|
|
|
MALLOC_DEBUG_MAXZONES opt_vm.h
|
1998-06-30 08:01:30 +00:00
|
|
|
|
2005-01-21 18:09:17 +00:00
|
|
|
# The MemGuard replacement allocator used for tamper-after-free detection
|
|
|
|
DEBUG_MEMGUARD opt_vm.h
|
|
|
|
|
2006-01-31 11:09:21 +00:00
|
|
|
# The RedZone malloc(9) protection
|
|
|
|
DEBUG_REDZONE opt_vm.h
|
|
|
|
|
1998-12-19 23:07:16 +00:00
|
|
|
# Standard SMP options
|
Add an EARLY_AP_STARTUP option to start APs earlier during boot.
Currently, Application Processors (non-boot CPUs) are started by
MD code at SI_SUB_CPU, but they are kept waiting in a "pen" until
SI_SUB_SMP at which point they are released to run kernel threads.
SI_SUB_SMP is one of the last SYSINIT levels, so APs don't enter
the scheduler and start running threads until fairly late in the
boot.
This change moves SI_SUB_SMP up to just before software interrupt
threads are created allowing the APs to start executing kernel
threads much sooner (before any devices are probed). This allows
several initialization routines that need to perform initialization
on all CPUs to now perform that initialization in one step rather
than having to defer the AP initialization to a second SYSINIT run
at SI_SUB_SMP. It also permits all CPUs to be available for
handling interrupts before any devices are probed.
This last feature fixes a problem on with interrupt vector exhaustion.
Specifically, in the old model all device interrupts were routed
onto the boot CPU during boot. Later after the APs were released at
SI_SUB_SMP, interrupts were redistributed across all CPUs.
However, several drivers for multiqueue hardware allocate N interrupts
per CPU in the system. In a system with many CPUs, just a few drivers
doing this could exhaust the available pool of interrupt vectors on
the boot CPU as each driver was allocating N * mp_ncpu vectors on the
boot CPU. Now, drivers will allocate interrupts on their desired CPUs
during boot meaning that only N interrupts are allocated from the boot
CPU instead of N * mp_ncpu.
Some other bits of code can also be simplified as smp_started is
now true much earlier and will now always be true for these bits of
code. This removes the need to treat the single-CPU boot environment
as a special case.
As a transition aid, the new behavior is available under a new kernel
option (EARLY_AP_STARTUP). This will allow the option to be turned off
if need be during initial testing. I plan to enable this on x86 by
default in a followup commit in the next few days and to have all
platforms moved over before 11.0. Once the transition is complete,
the option will be removed along with the !EARLY_AP_STARTUP code.
These changes have only been tested on x86. Other platform maintainers
are encouraged to port their architectures over as well. The main
things to check for are any uses of smp_started in MD code that can be
simplified and SI_SUB_SMP SYSINITs in MD code that can be removed in
the EARLY_AP_STARTUP case (e.g. the interrupt shuffling).
PR: kern/199321
Reviewed by: markj, gnn, kib
Sponsored by: Netflix
2016-05-14 18:22:52 +00:00
|
|
|
EARLY_AP_STARTUP opt_global.h
|
1998-12-19 23:07:16 +00:00
|
|
|
SMP opt_global.h
|
1998-02-27 10:02:49 +00:00
|
|
|
|
1998-05-19 08:58:53 +00:00
|
|
|
# Size of the kernel message buffer
|
|
|
|
MSGBUF_SIZE opt_msgbuf.h
|
1998-06-07 17:13:14 +00:00
|
|
|
|
1998-06-30 03:01:37 +00:00
|
|
|
# NFS options
|
|
|
|
NFS_MINATTRTIMO opt_nfs.h
|
|
|
|
NFS_MAXATTRTIMO opt_nfs.h
|
|
|
|
NFS_MINDIRATTRTIMO opt_nfs.h
|
|
|
|
NFS_MAXDIRATTRTIMO opt_nfs.h
|
|
|
|
NFS_DEBUG opt_nfs.h
|
|
|
|
|
1999-05-26 13:24:35 +00:00
|
|
|
# For the Bt848/Bt848A/Bt849/Bt878/Bt879 driver
|
1999-11-06 23:51:29 +00:00
|
|
|
OVERRIDE_CARD opt_bktr.h
|
|
|
|
OVERRIDE_TUNER opt_bktr.h
|
|
|
|
OVERRIDE_DBX opt_bktr.h
|
|
|
|
OVERRIDE_MSP opt_bktr.h
|
|
|
|
BROOKTREE_SYSTEM_DEFAULT opt_bktr.h
|
2000-10-17 07:59:56 +00:00
|
|
|
BROOKTREE_ALLOC_PAGES opt_bktr.h
|
|
|
|
BKTR_OVERRIDE_CARD opt_bktr.h
|
|
|
|
BKTR_OVERRIDE_TUNER opt_bktr.h
|
|
|
|
BKTR_OVERRIDE_DBX opt_bktr.h
|
|
|
|
BKTR_OVERRIDE_MSP opt_bktr.h
|
|
|
|
BKTR_SYSTEM_DEFAULT opt_bktr.h
|
|
|
|
BKTR_ALLOC_PAGES opt_bktr.h
|
1999-11-06 23:51:29 +00:00
|
|
|
BKTR_USE_PLL opt_bktr.h
|
|
|
|
BKTR_GPIO_ACCESS opt_bktr.h
|
|
|
|
BKTR_NO_MSP_RESET opt_bktr.h
|
|
|
|
BKTR_430_FX_MODE opt_bktr.h
|
|
|
|
BKTR_SIS_VIA_MODE opt_bktr.h
|
2002-03-23 15:49:15 +00:00
|
|
|
BKTR_USE_FREEBSD_SMBUS opt_bktr.h
|
Add a overhaul of the soundchip initialization for the MSP34xx chipsets
found only many tv-cards.
We currently use more ore less evil hacks (slow_msp_audio sysctl) to
configure the various variants of these chips in order to have
stereo autodetection work. Nevertheless, this doesn't always work
even though it _should_, according to the specs.
This is, for example, the case for some popular Hauppauge models sold
sold in Germany.
However, the Linux driver always worked for me and others. Looking at
the sourcecode you will find that the linux-driver uses a very much
enhanced approach to program the various msp34xx chipset variants,
which is also found in the specs for these chips.
This is a port of the Linux MSP34xx code, written by Gerd Knorr
<kraxel@bytesex.org>, who agreed to re-release his code under a
BSD license for this port.
A new config option "BKTR_NEW_MSP34XX_DRIVER" is added, which is required
to enable the new driver. Otherwise the old code is used.
The msp34xx.c file is diff-reduced to the linux-driver to make later
modifications easier, thus it doesn't follow style(9) in most cases.
Approved by: roger (committing this, no time to test/review),
keichii (code review)
2003-08-12 09:45:34 +00:00
|
|
|
BKTR_NEW_MSP34XX_DRIVER opt_bktr.h
|
1998-08-31 18:35:06 +00:00
|
|
|
|
2013-08-19 15:51:30 +00:00
|
|
|
# Options for uart(4)
|
2003-09-11 23:06:42 +00:00
|
|
|
UART_PPS_ON_CTS opt_uart.h
|
2013-08-19 15:51:30 +00:00
|
|
|
UART_POLL_FREQ opt_uart.h
|
2015-11-18 06:24:21 +00:00
|
|
|
UART_DEV_TOLERANCE_PCT opt_uart.h
|
2003-09-11 23:06:42 +00:00
|
|
|
|
1998-10-28 08:37:10 +00:00
|
|
|
# options for bus/device framework
|
|
|
|
BUS_DEBUG opt_bus.h
|
1998-11-26 23:13:13 +00:00
|
|
|
|
|
|
|
# options for USB support
|
|
|
|
USB_DEBUG opt_usb.h
|
2011-02-12 21:17:38 +00:00
|
|
|
USB_HOST_ALIGN opt_usb.h
|
2010-05-13 20:48:39 +00:00
|
|
|
USB_REQ_DEBUG opt_usb.h
|
2013-05-03 08:19:09 +00:00
|
|
|
USB_TEMPLATE opt_usb.h
|
2009-07-12 04:48:47 +00:00
|
|
|
USB_VERBOSE opt_usb.h
|
2015-02-02 11:32:15 +00:00
|
|
|
USB_DMA_SINGLE_ALLOC opt_usb.h
|
2008-12-20 03:02:32 +00:00
|
|
|
USB_EHCI_BIG_ENDIAN_DESC opt_usb.h
|
2008-10-24 07:16:13 +00:00
|
|
|
U3G_DEBUG opt_u3g.h
|
2000-05-09 18:23:38 +00:00
|
|
|
UKBD_DFLT_KEYMAP opt_ukbd.h
|
2003-11-16 12:26:10 +00:00
|
|
|
UPLCOM_INTR_INTERVAL opt_uplcom.h
|
2003-03-09 11:50:27 +00:00
|
|
|
UVSCOM_DEFAULT_OPKTSIZE opt_uvscom.h
|
2003-11-16 12:26:10 +00:00
|
|
|
UVSCOM_INTR_INTERVAL opt_uvscom.h
|
1998-12-28 16:31:26 +00:00
|
|
|
|
2016-02-22 00:48:53 +00:00
|
|
|
# options for the Realtek RTL8188*U/RTL8192CU driver (urtwn)
|
|
|
|
URTWN_WITHOUT_UCODE opt_urtwn.h
|
|
|
|
|
1999-05-05 11:24:15 +00:00
|
|
|
# Embedded system options
|
2005-12-12 10:15:11 +00:00
|
|
|
INIT_PATH
|
1999-05-09 16:46:01 +00:00
|
|
|
|
2005-12-12 10:15:11 +00:00
|
|
|
ROOTDEVNAME
|
1999-06-05 13:57:10 +00:00
|
|
|
|
|
|
|
FDC_DEBUG opt_fdc.h
|
2000-01-19 18:17:25 +00:00
|
|
|
PCFCLOCK_VERBOSE opt_pcfclock.h
|
|
|
|
PCFCLOCK_MAX_RETRIES opt_pcfclock.h
|
2002-10-20 08:17:39 +00:00
|
|
|
|
2000-09-07 01:33:02 +00:00
|
|
|
KTR opt_global.h
|
2002-09-22 07:14:27 +00:00
|
|
|
KTR_ALQ opt_ktr.h
|
2000-11-07 01:49:48 +00:00
|
|
|
KTR_MASK opt_ktr.h
|
|
|
|
KTR_CPUMASK opt_ktr.h
|
2000-09-07 01:33:02 +00:00
|
|
|
KTR_COMPILE opt_global.h
|
2013-02-03 09:57:39 +00:00
|
|
|
KTR_BOOT_ENTRIES opt_global.h
|
2000-09-07 01:33:02 +00:00
|
|
|
KTR_ENTRIES opt_global.h
|
2000-11-07 01:49:48 +00:00
|
|
|
KTR_VERBOSE opt_ktr.h
|
2000-09-07 01:33:02 +00:00
|
|
|
WITNESS opt_global.h
|
2004-07-11 01:44:07 +00:00
|
|
|
WITNESS_KDB opt_witness.h
|
2013-05-09 16:28:18 +00:00
|
|
|
WITNESS_NO_VNODE opt_witness.h
|
2000-10-27 03:00:28 +00:00
|
|
|
WITNESS_SKIPSPIN opt_witness.h
|
2014-08-03 05:00:43 +00:00
|
|
|
WITNESS_COUNT opt_witness.h
|
2013-08-06 15:51:56 +00:00
|
|
|
OPENSOLARIS_WITNESS opt_global.h
|
2000-09-07 01:33:02 +00:00
|
|
|
|
2000-08-31 15:34:54 +00:00
|
|
|
# options for ACPI support
|
|
|
|
ACPI_DEBUG opt_acpi.h
|
2009-06-10 22:54:20 +00:00
|
|
|
ACPI_MAX_TASKS opt_acpi.h
|
2001-12-22 16:05:41 +00:00
|
|
|
ACPI_MAX_THREADS opt_acpi.h
|
Import the driver for VT-d DMAR hardware, as specified in the revision
1.3 of Intelб╝ Virtualization Technology for Directed I/O Architecture
Specification. The Extended Context and PASIDs from the rev. 2.2 are
not supported, but I am not aware of any released hardware which
implements them. Code does not use queued invalidation, see comments
for the reason, and does not provide interrupt remapping services.
Code implements the management of the guest address space per domain
and allows to establish and tear down arbitrary mappings, but not
partial unmapping. The superpages are created as needed, but not
promoted. Faults are recorded, fault records could be obtained
programmatically, and printed on the console.
Implement the busdma(9) using DMARs. This busdma backend avoids
bouncing and provides security against misbehaving hardware and driver
bad programming, preventing leaks and corruption of the memory by wild
DMA accesses.
By default, the implementation is compiled into amd64 GENERIC kernel
but disabled; to enable, set hw.dmar.enable=1 loader tunable. Code is
written to work on i386, but testing there was low priority, and
driver is not enabled in GENERIC. Even with the DMAR turned on,
individual devices could be directed to use the bounce busdma with the
hw.busdma.pci<domain>:<bus>:<device>:<function>.bounce=1 tunable. If
DMARs are capable of the pass-through translations, it is used,
otherwise, an identity-mapping page table is constructed.
The driver was tested on Xeon 5400/5500 chipset legacy machine,
Haswell desktop and E5 SandyBridge dual-socket boxes, with ahci(4),
ata(4), bce(4), ehci(4), mfi(4), uhci(4), xhci(4) devices. It also
works with em(4) and igb(4), but there some fixes are needed for
drivers, which are not committed yet. Intel GPUs do not work with
DMAR (yet).
Many thanks to John Baldwin, who explained me the newbus integration;
Peter Holm, who did all testing and helped me to discover and
understand several incredible bugs; and to Jim Harris for the access
to the EDS and BWG and for listening when I have to explain my
findings to somebody.
Sponsored by: The FreeBSD Foundation
MFC after: 1 month
2013-10-28 13:33:29 +00:00
|
|
|
ACPI_DMAR opt_acpi.h
|
2015-05-05 14:19:22 +00:00
|
|
|
DEV_ACPI opt_acpi.h
|
2000-09-06 11:26:43 +00:00
|
|
|
|
2006-06-12 21:07:13 +00:00
|
|
|
# ISA support
|
|
|
|
DEV_ISA opt_isa.h
|
|
|
|
ISAPNP opt_isa.h
|
|
|
|
|
2001-01-29 09:43:36 +00:00
|
|
|
# various 'device presence' options.
|
2004-02-25 09:35:35 +00:00
|
|
|
DEV_BPF opt_bpf.h
|
2005-02-22 13:04:05 +00:00
|
|
|
DEV_CARP opt_carp.h
|
2015-01-17 02:17:57 +00:00
|
|
|
DEV_MCA opt_mca.h
|
|
|
|
DEV_NETMAP opt_global.h
|
|
|
|
DEV_PCI opt_pci.h
|
|
|
|
DEV_PF opt_pf.h
|
|
|
|
DEV_PFLOG opt_pf.h
|
|
|
|
DEV_PFSYNC opt_pf.h
|
2015-08-17 07:36:12 +00:00
|
|
|
DEV_RANDOM opt_global.h
|
2003-06-18 15:25:01 +00:00
|
|
|
DEV_SPLASH opt_splash.h
|
2015-01-17 02:17:57 +00:00
|
|
|
DEV_VLAN opt_vlan.h
|
2001-09-29 22:32:03 +00:00
|
|
|
|
2007-01-18 13:33:36 +00:00
|
|
|
# EISA support
|
|
|
|
DEV_EISA opt_eisa.h
|
2003-07-22 11:42:45 +00:00
|
|
|
EISA_SLOTS opt_eisa.h
|
|
|
|
|
2001-09-29 22:32:03 +00:00
|
|
|
# ed driver
|
2005-02-09 20:03:40 +00:00
|
|
|
ED_HPP opt_ed.h
|
|
|
|
ED_3C503 opt_ed.h
|
|
|
|
ED_SIC opt_ed.h
|
2002-02-12 00:26:06 +00:00
|
|
|
|
2006-04-10 20:04:22 +00:00
|
|
|
# bce driver
|
|
|
|
BCE_DEBUG opt_bce.h
|
2010-10-06 18:36:50 +00:00
|
|
|
BCE_NVRAM_WRITE_SUPPORT opt_bce.h
|
2006-04-10 20:04:22 +00:00
|
|
|
|
2003-10-28 05:47:40 +00:00
|
|
|
SOCKBUF_DEBUG opt_global.h
|
|
|
|
|
2011-03-14 22:42:41 +00:00
|
|
|
|
2003-03-11 22:47:06 +00:00
|
|
|
# options for ubsec driver
|
|
|
|
UBSEC_DEBUG opt_ubsec.h
|
|
|
|
UBSEC_RNDTEST opt_ubsec.h
|
2003-06-25 14:49:24 +00:00
|
|
|
UBSEC_NO_RNG opt_ubsec.h
|
2003-03-11 22:47:06 +00:00
|
|
|
|
|
|
|
# options for hifn driver
|
|
|
|
HIFN_DEBUG opt_hifn.h
|
|
|
|
HIFN_RNDTEST opt_hifn.h
|
2003-06-18 15:25:01 +00:00
|
|
|
|
2003-07-21 21:50:41 +00:00
|
|
|
# options for safenet driver
|
|
|
|
SAFE_DEBUG opt_safe.h
|
|
|
|
SAFE_NO_RNG opt_safe.h
|
|
|
|
SAFE_RNDTEST opt_safe.h
|
|
|
|
|
2013-12-05 22:38:53 +00:00
|
|
|
# syscons/vt options
|
2003-06-18 15:25:01 +00:00
|
|
|
MAXCONS opt_syscons.h
|
|
|
|
SC_ALT_MOUSE_IMAGE opt_syscons.h
|
|
|
|
SC_CUT_SPACES2TABS opt_syscons.h
|
|
|
|
SC_CUT_SEPCHARS opt_syscons.h
|
|
|
|
SC_DEBUG_LEVEL opt_syscons.h
|
|
|
|
SC_DFLT_FONT opt_syscons.h
|
2004-07-11 01:44:07 +00:00
|
|
|
SC_DISABLE_KDBKEY opt_syscons.h
|
2003-06-18 15:25:01 +00:00
|
|
|
SC_DISABLE_REBOOT opt_syscons.h
|
|
|
|
SC_HISTORY_SIZE opt_syscons.h
|
|
|
|
SC_KERNEL_CONS_ATTR opt_syscons.h
|
|
|
|
SC_KERNEL_CONS_REV_ATTR opt_syscons.h
|
|
|
|
SC_MOUSE_CHAR opt_syscons.h
|
|
|
|
SC_NO_CUTPASTE opt_syscons.h
|
|
|
|
SC_NO_FONT_LOADING opt_syscons.h
|
|
|
|
SC_NO_HISTORY opt_syscons.h
|
2007-01-10 18:45:18 +00:00
|
|
|
SC_NO_MODE_CHANGE opt_syscons.h
|
2004-02-25 09:35:35 +00:00
|
|
|
SC_NO_SUSPEND_VTYSWITCH opt_syscons.h
|
2003-06-18 15:25:01 +00:00
|
|
|
SC_NO_SYSMOUSE opt_syscons.h
|
|
|
|
SC_NORM_ATTR opt_syscons.h
|
|
|
|
SC_NORM_REV_ATTR opt_syscons.h
|
|
|
|
SC_PIXEL_MODE opt_syscons.h
|
|
|
|
SC_RENDER_DEBUG opt_syscons.h
|
|
|
|
SC_TWOBUTTON_MOUSE opt_syscons.h
|
2014-06-30 19:34:16 +00:00
|
|
|
VT_ALT_TO_ESC_HACK opt_syscons.h
|
|
|
|
VT_FB_DEFAULT_WIDTH opt_syscons.h
|
|
|
|
VT_FB_DEFAULT_HEIGHT opt_syscons.h
|
|
|
|
VT_MAXWINDOWS opt_syscons.h
|
|
|
|
VT_TWOBUTTON_MOUSE opt_syscons.h
|
2013-12-10 15:36:29 +00:00
|
|
|
DEV_SC opt_syscons.h
|
|
|
|
DEV_VT opt_syscons.h
|
|
|
|
|
2009-01-17 16:37:13 +00:00
|
|
|
# teken terminal emulator options
|
2009-11-13 05:54:55 +00:00
|
|
|
TEKEN_CONS25 opt_teken.h
|
2009-01-17 16:37:13 +00:00
|
|
|
TEKEN_UTF8 opt_teken.h
|
2014-06-27 19:57:57 +00:00
|
|
|
TERMINAL_KERN_ATTR opt_teken.h
|
|
|
|
TERMINAL_NORM_ATTR opt_teken.h
|
2009-01-17 16:37:13 +00:00
|
|
|
|
2006-11-30 04:17:05 +00:00
|
|
|
# options for printf
|
|
|
|
PRINTF_BUFR_SIZE opt_printf.h
|
|
|
|
|
2003-06-18 15:25:01 +00:00
|
|
|
# kbd options
|
|
|
|
KBD_DISABLE_KEYMAP_LOAD opt_kbd.h
|
|
|
|
KBD_INSTALL_CDEV opt_kbd.h
|
|
|
|
KBD_MAXRETRY opt_kbd.h
|
|
|
|
KBD_MAXWAIT opt_kbd.h
|
|
|
|
KBD_RESETDELAY opt_kbd.h
|
|
|
|
KBDIO_DEBUG opt_kbd.h
|
2003-06-25 14:51:20 +00:00
|
|
|
|
2016-04-07 20:12:45 +00:00
|
|
|
KBDMUX_DFLT_KEYMAP opt_kbdmux.h
|
|
|
|
|
2006-04-03 18:14:02 +00:00
|
|
|
# options for the Atheros driver
|
|
|
|
ATH_DEBUG opt_ath.h
|
|
|
|
ATH_TXBUF opt_ath.h
|
|
|
|
ATH_RXBUF opt_ath.h
|
|
|
|
ATH_DIAGAPI opt_ath.h
|
|
|
|
ATH_TX99_DIAG opt_ath.h
|
2011-06-26 13:43:15 +00:00
|
|
|
ATH_ENABLE_11N opt_ath.h
|
|
|
|
ATH_ENABLE_DFS opt_ath.h
|
2012-04-13 18:00:48 +00:00
|
|
|
ATH_EEPROM_FIRMWARE opt_ath.h
|
2012-06-24 07:01:49 +00:00
|
|
|
ATH_ENABLE_RADIOTAP_VENDOR_EXT opt_ath.h
|
2013-01-15 18:04:15 +00:00
|
|
|
ATH_DEBUG_ALQ opt_ath.h
|
|
|
|
ATH_KTR_INTR_DEBUG opt_ath.h
|
2006-04-03 18:14:02 +00:00
|
|
|
|
2008-12-01 16:53:01 +00:00
|
|
|
# options for the Atheros hal
|
|
|
|
AH_SUPPORT_AR5416 opt_ah.h
|
2011-05-02 05:39:43 +00:00
|
|
|
# XXX For now, this breaks non-AR9130 chipsets, so only use it
|
2016-05-03 22:01:48 +00:00
|
|
|
# XXX when actually targeting AR9130.
|
2011-04-29 18:26:17 +00:00
|
|
|
AH_SUPPORT_AR9130 opt_ah.h
|
2008-12-01 16:53:01 +00:00
|
|
|
|
2013-06-26 05:01:50 +00:00
|
|
|
# This is required for AR933x SoC support
|
|
|
|
AH_SUPPORT_AR9330 opt_ah.h
|
|
|
|
AH_SUPPORT_AR9340 opt_ah.h
|
2015-11-28 01:09:30 +00:00
|
|
|
AH_SUPPORT_QCA9530 opt_ah.h
|
2015-01-06 07:51:46 +00:00
|
|
|
AH_SUPPORT_QCA9550 opt_ah.h
|
2013-06-26 05:01:50 +00:00
|
|
|
|
2008-12-01 16:53:01 +00:00
|
|
|
AH_DEBUG opt_ah.h
|
|
|
|
AH_ASSERT opt_ah.h
|
|
|
|
AH_DEBUG_ALQ opt_ah.h
|
|
|
|
AH_REGOPS_FUNC opt_ah.h
|
|
|
|
AH_WRITE_REGDOMAIN opt_ah.h
|
|
|
|
AH_DEBUG_COUNTRY opt_ah.h
|
|
|
|
AH_WRITE_EEPROM opt_ah.h
|
|
|
|
AH_PRIVATE_DIAG opt_ah.h
|
|
|
|
AH_NEED_DESC_SWAP opt_ah.h
|
|
|
|
AH_USE_INIPDGAIN opt_ah.h
|
2009-01-28 18:00:22 +00:00
|
|
|
AH_MAXCHAN opt_ah.h
|
The Atheros AR71xx CPUs, when paired with the AR5212 parts, has a bug
that generates a fatal bus trap. Normally, the chips are setup to do
128 byte DMA bursts, but when on this CPU, they can only safely due
4-byte DMA bursts due to this bug. Details of the exact nature of the
bug are sketchy, but some can be found at
https://forum.openwrt.org/viewtopic.php?pid=70060 on pages 4, 5 and 6.
There's a small performance penalty associated with this workaround,
so it is only enabled when needed on the Atheros AR71xx platforms.
Unfortunately, this condition is impossible to detect at runtime
without MIPS specific ifdefs. Rather than cast an overly-broad net
like Linux/OpenWRT dues (which enables this workaround all the time on
MIPS32 platforms), we put this option in the kernel for just the
affected machines. Sam didn't like this aspect of the patch when he
reviewed it, and I'd love to hear sane proposals on how to fix it :)
Reviewed by: sam@
2010-05-01 16:36:14 +00:00
|
|
|
AH_RXCFG_SDMAMW_4BYTES opt_ah.h
|
2013-01-15 18:04:15 +00:00
|
|
|
AH_INTERRUPT_DEBUGGING opt_ah.h
|
2011-03-31 08:48:05 +00:00
|
|
|
# AR5416 and later interrupt mitigation
|
2011-05-02 05:39:43 +00:00
|
|
|
# XXX do not use this for AR9130
|
2011-03-31 08:48:05 +00:00
|
|
|
AH_AR5416_INTERRUPT_MITIGATION opt_ah.h
|
|
|
|
|
Bring in Andrew Thompson's port of Sepherosa Ziehau's bwi driver for
Broadcom BCM43xx chipsets. This driver uses the v3 firmware that
needs to be fetched separately. A port will be committed to create
the bwi firmware module.
The driver matches the following chips: Broadcom BCM4301, BCM4307,
BCM4306, BCM4309, BCM4311, BCM4312, BCM4318, BCM4319
The driver works for 802.11b and 802.11g.
Limitations:
This doesn't support the 802.11a or 802.11n portion of radios.
Some BCM4306 and BCM4309 cards don't work with Channel 1, 2 or 3.
Documenation for this firmware is reverse engineered from
http://bcm.sipsolutions.net/
V4 of the firmware is needed for 11a or 11n support
http://bcm-v4.sipsolutions.net/
Firmware needs to be fetched from a third party, port to be committed
# I've tested this with a BCM4319 mini-pci and a BCM4318 CardBus card, and
# not connected it to the build until the firmware port is committed.
Obtained from: DragonFlyBSD, //depot/projects/vap
Reviewed by: sam@, thompsa@
2009-05-03 04:01:43 +00:00
|
|
|
# options for the Broadcom BCM43xx driver (bwi)
|
|
|
|
BWI_DEBUG opt_bwi.h
|
|
|
|
BWI_DEBUG_VERBOSE opt_bwi.h
|
|
|
|
|
2016-05-09 05:59:21 +00:00
|
|
|
# options for the Brodacom BCM43xx driver (bwn)
|
2016-05-09 06:02:57 +00:00
|
|
|
BWN_DEBUG opt_bwn.h
|
2016-05-17 07:10:30 +00:00
|
|
|
BWN_GPL_PHY opt_bwn.h
|
2016-05-09 05:59:21 +00:00
|
|
|
|
2016-05-16 20:18:54 +00:00
|
|
|
# Options for the SIBA driver
|
|
|
|
SIBA_DEBUG opt_siba.h
|
|
|
|
|
2008-04-20 20:35:46 +00:00
|
|
|
# options for the Marvell 8335 wireless driver
|
|
|
|
MALO_DEBUG opt_malo.h
|
|
|
|
MALO_TXBUF opt_malo.h
|
|
|
|
MALO_RXBUF opt_malo.h
|
|
|
|
|
2009-06-01 18:07:01 +00:00
|
|
|
# options for the Marvell wireless driver
|
|
|
|
MWL_DEBUG opt_mwl.h
|
|
|
|
MWL_TXBUF opt_mwl.h
|
|
|
|
MWL_RXBUF opt_mwl.h
|
|
|
|
MWL_DIAGAPI opt_mwl.h
|
|
|
|
MWL_AGGR_SIZE opt_mwl.h
|
|
|
|
MWL_TX_NODROP opt_mwl.h
|
|
|
|
|
2015-08-10 16:32:47 +00:00
|
|
|
# Options for the Intel 802.11ac wireless driver
|
2015-08-08 20:45:12 +00:00
|
|
|
IWM_DEBUG opt_iwm.h
|
|
|
|
|
2013-08-01 21:50:13 +00:00
|
|
|
# Options for the Intel 802.11n wireless driver
|
|
|
|
IWN_DEBUG opt_iwn.h
|
|
|
|
|
2015-02-07 23:09:03 +00:00
|
|
|
# Options for the Intel 3945ABG wireless driver
|
|
|
|
WPI_DEBUG opt_wpi.h
|
|
|
|
|
2003-10-24 15:44:10 +00:00
|
|
|
# dcons options
|
|
|
|
DCONS_BUF_SIZE opt_dcons.h
|
|
|
|
DCONS_POLL_HZ opt_dcons.h
|
|
|
|
DCONS_FORCE_CONSOLE opt_dcons.h
|
|
|
|
DCONS_FORCE_GDB opt_dcons.h
|
2004-08-30 23:03:58 +00:00
|
|
|
|
2005-04-19 04:01:25 +00:00
|
|
|
# HWPMC options
|
2015-05-08 15:57:23 +00:00
|
|
|
HWPMC_DEBUG opt_global.h
|
2005-06-24 00:16:57 +00:00
|
|
|
HWPMC_HOOKS
|
2012-03-22 18:01:23 +00:00
|
|
|
HWPMC_MIPS_BACKTRACE opt_hwpmc_hooks.h
|
2005-12-12 01:14:59 +00:00
|
|
|
|
2006-03-03 18:09:37 +00:00
|
|
|
# XBOX options for FreeBSD/i386, but some files are MI
|
|
|
|
XBOX opt_xbox.h
|
|
|
|
|
2007-05-06 17:04:34 +00:00
|
|
|
# Interrupt filtering
|
2008-04-05 20:13:15 +00:00
|
|
|
INTR_FILTER
|
2007-12-15 19:53:35 +00:00
|
|
|
|
2008-04-20 20:35:46 +00:00
|
|
|
# 802.11 support layer
|
|
|
|
IEEE80211_DEBUG opt_wlan.h
|
|
|
|
IEEE80211_DEBUG_REFCNT opt_wlan.h
|
|
|
|
IEEE80211_AMPDU_AGE opt_wlan.h
|
Implementation of the upcoming Wireless Mesh standard, 802.11s, on the
net80211 wireless stack. This work is based on the March 2009 D3.0 draft
standard. This standard is expected to become final next year.
This includes two main net80211 modules, ieee80211_mesh.c
which deals with peer link management, link metric calculation,
routing table control and mesh configuration and ieee80211_hwmp.c
which deals with the actually routing process on the mesh network.
HWMP is the mandatory routing protocol on by the mesh standard, but
others, such as RA-OLSR, can be implemented.
Authentication and encryption are not implemented.
There are several scripts under tools/tools/net80211/scripts that can be
used to test different mesh network topologies and they also teach you
how to setup a mesh vap (for the impatient: ifconfig wlan0 create
wlandev ... wlanmode mesh).
A new build option is available: IEEE80211_SUPPORT_MESH and it's enabled
by default on GENERIC kernels for i386, amd64, sparc64 and pc98.
Drivers that support mesh networks right now are: ath, ral and mwl.
More information at: http://wiki.freebsd.org/WifiMesh
Please note that this work is experimental. Also, please note that
bridging a mesh vap with another network interface is not yet supported.
Many thanks to the FreeBSD Foundation for sponsoring this project and to
Sam Leffler for his support.
Also, I would like to thank Gateworks Corporation for sending me a
Cambria board which was used during the development of this project.
Reviewed by: sam
Approved by: re (kensmith)
Obtained from: projects/mesh11s
2009-07-11 15:02:45 +00:00
|
|
|
IEEE80211_SUPPORT_MESH opt_wlan.h
|
2009-03-24 20:39:08 +00:00
|
|
|
IEEE80211_SUPPORT_SUPERG opt_wlan.h
|
2009-01-08 17:12:47 +00:00
|
|
|
IEEE80211_SUPPORT_TDMA opt_wlan.h
|
2011-04-21 03:59:37 +00:00
|
|
|
IEEE80211_ALQ opt_wlan.h
|
2012-01-31 00:03:49 +00:00
|
|
|
IEEE80211_DFS_DEBUG opt_wlan.h
|
2009-01-08 17:12:47 +00:00
|
|
|
|
|
|
|
# 802.11 TDMA support
|
|
|
|
TDMA_SLOTLEN_DEFAULT opt_tdma.h
|
|
|
|
TDMA_SLOTCNT_DEFAULT opt_tdma.h
|
|
|
|
TDMA_BINTVAL_DEFAULT opt_tdma.h
|
|
|
|
TDMA_TXRATE_11B_DEFAULT opt_tdma.h
|
|
|
|
TDMA_TXRATE_11G_DEFAULT opt_tdma.h
|
|
|
|
TDMA_TXRATE_11A_DEFAULT opt_tdma.h
|
2009-05-01 17:18:45 +00:00
|
|
|
TDMA_TXRATE_TURBO_DEFAULT opt_tdma.h
|
|
|
|
TDMA_TXRATE_HALF_DEFAULT opt_tdma.h
|
|
|
|
TDMA_TXRATE_QUARTER_DEFAULT opt_tdma.h
|
|
|
|
TDMA_TXRATE_11NA_DEFAULT opt_tdma.h
|
|
|
|
TDMA_TXRATE_11NG_DEFAULT opt_tdma.h
|
2008-04-20 20:35:46 +00:00
|
|
|
|
2015-02-15 11:37:40 +00:00
|
|
|
# VideoMode
|
|
|
|
PICKMODE_DEBUG opt_videomode.h
|
|
|
|
|
2009-08-14 22:41:39 +00:00
|
|
|
# Network stack virtualization options
|
2008-08-24 21:33:10 +00:00
|
|
|
VIMAGE opt_global.h
|
2009-08-14 22:41:39 +00:00
|
|
|
VNET_DEBUG opt_global.h
|
2009-02-05 18:12:07 +00:00
|
|
|
|
|
|
|
# Common Flash Interface (CFI) options
|
|
|
|
CFI_SUPPORT_STRATAFLASH opt_cfi.h
|
|
|
|
CFI_ARMEDANDDANGEROUS opt_cfi.h
|
2016-02-04 22:39:27 +00:00
|
|
|
CFI_HARDWAREBYTESWAP opt_cfi.h
|
Sound Mega-commit. Expect further cleanup until code freeze.
For a slightly thorough explaination, please refer to
[1] http://people.freebsd.org/~ariff/SOUND_4.TXT.html .
Summary of changes includes:
1 Volume Per-Channel (vpc). Provides private / standalone volume control
unique per-stream pcm channel without touching master volume / pcm.
Applications can directly use SNDCTL_DSP_[GET|SET][PLAY|REC]VOL, or for
backwards compatibility, SOUND_MIXER_PCM through the opened dsp device
instead of /dev/mixer. Special "bypass" mode is enabled through
/dev/mixer which will automatically detect if the adjustment is made
through /dev/mixer and forward its request to this private volume
controller. Changes to this volume object will not interfere with
other channels.
Requirements:
- SNDCTL_DSP_[GET|SET][PLAY|REC]_VOL are newer ioctls (OSSv4) which
require specific application modifications (preferred).
- No modifications required for using bypass mode, so applications
like mplayer or xmms should work out of the box.
Kernel hints:
- hint.pcm.%d.vpc (0 = disable vpc).
Kernel sysctls:
- hw.snd.vpc_mixer_bypass (default: 1). Enable or disable /dev/mixer
bypass mode.
- hw.snd.vpc_autoreset (default: 1). By default, closing/opening
/dev/dsp will reset the volume back to 0 db gain/attenuation.
Setting this to 0 will preserve its settings across device
closing/opening.
- hw.snd.vpc_reset (default: 0). Panic/reset button to reset all
volume settings back to 0 db.
- hw.snd.vpc_0db (default: 45). 0 db relative to linear mixer value.
2 High quality fixed-point Bandlimited SINC sampling rate converter,
based on Julius O'Smith's Digital Audio Resampling -
http://ccrma.stanford.edu/~jos/resample/. It includes a filter design
script written in awk (the clumsiest joke I've ever written)
- 100% 32bit fixed-point, 64bit accumulator.
- Possibly among the fastest (if not fastest) of its kind.
- Resampling quality is tunable, either runtime or during kernel
compilation (FEEDER_RATE_PRESETS).
- Quality can be further customized during kernel compilation by
defining FEEDER_RATE_PRESETS in /etc/make.conf.
Kernel sysctls:
- hw.snd.feeder_rate_quality.
0 - Zero-order Hold (ZOH). Fastest, bad quality.
1 - Linear Interpolation (LINEAR). Slightly slower than ZOH,
better quality but still does not eliminate aliasing.
2 - (and above) - Sinc Interpolation(SINC). Best quality. SINC
quality always start from 2 and above.
Rough quality comparisons:
- http://people.freebsd.org/~ariff/z_comparison/
3 Bit-perfect mode. Bypasses all feeder/dsp effects. Pure sound will be
directly fed into the hardware.
4 Parametric (compile time) Software Equalizer (Bass/Treble mixer). Can
be customized by defining FEEDER_EQ_PRESETS in /etc/make.conf.
5 Transparent/Adaptive Virtual Channel. Now you don't have to disable
vchans in order to make digital format pass through. It also makes
vchans more dynamic by choosing a better format/rate among all the
concurrent streams, which means that dev.pcm.X.play.vchanformat/rate
becomes sort of optional.
6 Exclusive Stream, with special open() mode O_EXCL. This will "mute"
other concurrent vchan streams and only allow a single channel with
O_EXCL set to keep producing sound.
Other Changes:
* most feeder_* stuffs are compilable in userland. Let's not
speculate whether we should go all out for it (save that for
FreeBSD 16.0-RELEASE).
* kobj signature fixups, thanks to Andriy Gapon <avg@freebsd.org>
* pull out channel mixing logic out of vchan.c and create its own
feeder_mixer for world justice.
* various refactoring here and there, for good or bad.
* activation of few more OSSv4 ioctls() (see [1] above).
* opt_snd.h for possible compile time configuration:
(mostly for debugging purposes, don't try these at home)
SND_DEBUG
SND_DIAGNOSTIC
SND_FEEDER_MULTIFORMAT
SND_FEEDER_FULL_MULTIFORMAT
SND_FEEDER_RATE_HP
SND_PCM_64
SND_OLDSTEREO
Manual page updates are on the way.
Tested by: joel, Olivier SMEDTS <olivier at gid0 d org>, too many
unsung / unnamed heroes.
2009-06-07 19:12:08 +00:00
|
|
|
|
|
|
|
# Sound options
|
|
|
|
SND_DEBUG opt_snd.h
|
|
|
|
SND_DIAGNOSTIC opt_snd.h
|
|
|
|
SND_FEEDER_MULTIFORMAT opt_snd.h
|
|
|
|
SND_FEEDER_FULL_MULTIFORMAT opt_snd.h
|
|
|
|
SND_FEEDER_RATE_HP opt_snd.h
|
|
|
|
SND_PCM_64 opt_snd.h
|
|
|
|
SND_OLDSTEREO opt_snd.h
|
2009-09-09 05:53:26 +00:00
|
|
|
|
2009-09-21 08:17:57 +00:00
|
|
|
X86BIOS
|
2010-05-28 10:35:44 +00:00
|
|
|
|
|
|
|
# Flattened device tree options
|
|
|
|
FDT opt_platform.h
|
|
|
|
FDT_DTB_STATIC opt_platform.h
|
2011-03-21 09:40:01 +00:00
|
|
|
|
|
|
|
# OFED Infiniband stack
|
2015-01-18 01:28:08 +00:00
|
|
|
OFED opt_ofed.h
|
2011-03-21 09:40:01 +00:00
|
|
|
OFED_DEBUG_INIT opt_ofed.h
|
|
|
|
SDP opt_ofed.h
|
|
|
|
SDP_DEBUG opt_ofed.h
|
2012-03-14 22:44:56 +00:00
|
|
|
IPOIB opt_ofed.h
|
2011-03-21 09:40:01 +00:00
|
|
|
IPOIB_DEBUG opt_ofed.h
|
|
|
|
IPOIB_CM opt_ofed.h
|
2011-03-27 08:44:27 +00:00
|
|
|
|
2011-03-29 17:47:25 +00:00
|
|
|
# Resource Accounting
|
|
|
|
RACCT opt_global.h
|
2015-05-14 14:03:55 +00:00
|
|
|
RACCT_DEFAULT_TO_DISABLED opt_global.h
|
2011-03-29 17:47:25 +00:00
|
|
|
|
2011-03-30 17:48:15 +00:00
|
|
|
# Resource Limits
|
|
|
|
RCTL opt_global.h
|
2013-10-08 11:05:26 +00:00
|
|
|
|
|
|
|
# Random number generator(s)
|
2015-08-22 12:59:05 +00:00
|
|
|
# Which CSPRNG hash we get.
|
2015-08-17 07:36:12 +00:00
|
|
|
# If Yarrow is not chosen, Fortuna is selected.
|
2015-09-08 08:50:28 +00:00
|
|
|
RANDOM_YARROW opt_global.h
|
2015-08-17 07:36:12 +00:00
|
|
|
# With this, no entropy processor is loaded, but the entropy
|
|
|
|
# harvesting infrastructure is present. This means an entropy
|
|
|
|
# processor may be loaded as a module.
|
2015-09-08 08:50:28 +00:00
|
|
|
RANDOM_LOADABLE opt_global.h
|
2015-08-22 12:59:05 +00:00
|
|
|
# This turns on high-rate and potentially expensive harvesting in
|
|
|
|
# the uma slab allocator.
|
|
|
|
RANDOM_ENABLE_UMA opt_global.h
|
Change EM_MULTIQUEUE to a real kernconf entry and enable support for
up to 2 rx/tx queues for the 82574.
Program the 82574 to enable 5 msix vectors, assign 1 to each rx queue,
1 to each tx queue and 1 to the link handler.
Inspired by DragonFlyBSD, enable some RSS logic for handling tx queue
handling/processing.
Move multiqueue handler functions so that they line up better in a diff
review to if_igb.c
Always enqueue tx work to be done in em_mq_start, if unable to acquire
the TX lock, then this will be processed in the background later by the
taskqueue. Remove mbuf argument from em_start_mq_locked() as the work
is always enqueued. (stolen from igb)
Setup TARC, TXDCTL and RXDCTL registers for better performance and stability
in multiqueue and singlequeue implementations. Handle Intel errata 3 and
generic multiqueue behavior with the initialization of TARC(0) and TARC(1)
Bind interrupt threads to cpus in order. (stolen from igb)
Add 2 new DDB functions, one to display the queue(s) and their settings and
one to reset the adapter. Primarily used for debugging.
In the multiqueue configuration, bump RXD and TXD ring size to max for the
adapter (4096). Setup an RDTR of 64 and an RADV of 128 in multiqueue configuration
to cut down on the number of interrupts. RADV was arbitrarily set to 2x RDTR
and can be adjusted as needed.
Cleanup the display in top a bit to make it clearer where the taskqueue threads
are running and what they should be doing.
Ensure that both queues are processed by em_local_timer() by writing them both
to the IMS register to generate soft interrupts.
Ensure that an soft interrupt is generated when em_msix_link() is run so that
any races between assertion of the link/status interrupt and a rx/tx interrupt
are handled.
Document existing tuneables: hw.em.eee_setting, hw.em.msix, hw.em.smart_pwr_down, hw.em.sbp
Document use of hw.em.num_queues and the new kernel option EM_MULTIQUEUE
Thanks to Intel for their continued support of FreeBSD.
Reviewed by: erj jfv hiren gnn wblock
Obtained from: Intel Corporation
MFC after: 2 weeks
Relnotes: Yes
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D1994
2015-06-03 18:01:09 +00:00
|
|
|
|
|
|
|
# Intel em(4) driver
|
|
|
|
EM_MULTIQUEUE opt_em.h
|
2016-05-16 23:40:32 +00:00
|
|
|
|
|
|
|
# BHND(4) driver
|
|
|
|
BHND_LOGLEVEL opt_global.h
|
2016-05-27 01:36:29 +00:00
|
|
|
|
|
|
|
# GPIO and child devices
|
|
|
|
GPIO_SPI_DEBUG opt_gpio.h
|
2016-09-11 18:56:38 +00:00
|
|
|
|
|
|
|
# evdev protocol support
|
2016-10-02 03:20:31 +00:00
|
|
|
EVDEV_SUPPORT opt_evdev.h
|
2016-09-11 18:56:38 +00:00
|
|
|
EVDEV_DEBUG opt_evdev.h
|
|
|
|
UINPUT_DEBUG opt_evdev.h
|