freebsd-nq/share
John Baldwin bc153c692f Add a new bus method to fetch device-specific CPU sets.
bus_get_cpus() returns a specified set of CPUs for a device.  It accepts
an enum for the second parameter that indicates the type of cpuset to
request.  Currently two valus are supported:

 - LOCAL_CPUS (on x86 this returns all the CPUs in the package closest to
   the device when DEVICE_NUMA is enabled)
 - INTR_CPUS (like LOCAL_CPUS but only returns 1 SMT thread for each core)

For systems that do not support NUMA (or if it is not enabled in the kernel
config), LOCAL_CPUS fails with EINVAL.  INTR_CPUS is mapped to 'all_cpus'
by default.  The idea is that INTR_CPUS should always return a valid set.

Device drivers which want to use per-CPU interrupts should start using
INTR_CPUS instead of simply assigning interrupts to all available CPUs.
In the future we may wish to add tunables to control the policy of
INTR_CPUS (e.g. should it be local-only or global, should it ignore
SMT threads or not).

The x86 nexus driver exposes the internal set of interrupt CPUs from the
the x86 interrupt code via INTR_CPUS.

The ACPI bus driver and PCI bridge drivers use _PXM to return a suitable
LOCAL_CPUS set when _PXM exists and DEVICE_NUMA is enabled.  They also and
the global INTR_CPUS set from the nexus driver with the per-domain set from
_PXM to generate a local INTR_CPUS set for child devices.

Reviewed by:	wblock (manpage)
Differential Revision:	https://reviews.freebsd.org/D5519
2016-05-02 18:00:38 +00:00
..
colldef Regenerate the Makefile so that actually the new generated collation are 2016-04-16 19:39:51 +00:00
ctypedef Regenerates locales Makefiles and locales 2016-04-16 17:55:11 +00:00
dict Add META_MODE support. 2015-06-13 19:20:56 +00:00
doc Rename the /usr/share/doc/legal files to driver.LICENSE to work around 2015-10-16 00:38:05 +00:00
dtrace Add the address at which the routine returned. 2016-04-21 03:17:53 +00:00
examples share: minor spelling fixes. 2016-05-01 16:29:02 +00:00
i18n Remove exists() checks so normal out-of-date handling can be used. 2016-03-11 23:45:36 +00:00
keys META MODE: Update dependencies with 'the-lot' and add missing directories. 2015-12-01 05:23:19 +00:00
locale-links Regenerates locales Makefiles and locales 2016-04-16 17:55:11 +00:00
man Add a new bus method to fetch device-specific CPU sets. 2016-05-02 18:00:38 +00:00
me Add META_MODE support. 2015-06-13 19:20:56 +00:00
misc Add myself (finally) to the port committer's dot file. 2016-04-24 21:19:00 +00:00
mk share: minor spelling fixes. 2016-05-01 16:29:02 +00:00
monetdef Regenerates locales Makefiles and locales 2016-04-16 17:55:11 +00:00
msgdef Regenerates locales Makefiles and locales 2016-04-16 17:55:11 +00:00
numericdef Regenerates locales Makefiles and locales 2016-04-16 17:55:11 +00:00
security META MODE: These need object directories to handle staging. 2015-11-26 01:14:27 +00:00
sendmail MFH 2016-04-16 02:32:12 +00:00
skel Use more appropriate ${SHAREDIR} rather than /usr/share. 2015-10-27 23:35:02 +00:00
snmp Add META_MODE support. 2015-06-13 19:20:56 +00:00
syscons MFH 2016-04-16 02:32:12 +00:00
tabset Add META_MODE support. 2015-06-13 19:20:56 +00:00
termcap Replace ln -s calls with INSTALL_SYMLINK 2015-12-04 03:17:14 +00:00
tests Fix including Kyuafile in packaged base system. 2016-04-29 05:28:40 +00:00
timedef Regenerates locales Makefiles and locales 2016-04-16 17:55:11 +00:00
vt Remove uudecode make rule for vt fonts 2016-02-29 18:35:16 +00:00
zoneinfo Rework META_TARGETS so that it automatically adds META_DEPS to the targets. 2016-04-14 21:04:42 +00:00
Makefile Merge from head 2015-10-19 11:51:10 +00:00
Makefile.inc