freebsd-skq/sys/dev/acpica
jhb 6bae79f884 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.

Compared to the r298933, this version uses 'struct _cpuset' in
<sys/bus.h> instead of 'cpuset_t' to avoid requiring <sys/param.h>
(<sys/_cpuset.h> still requires <sys/param.h> for MAXCPU even though
<sys/_bitset.h> does not after recent changes).
2016-05-09 20:50:21 +00:00
..
Osd Merge ACPICA 20160422. 2016-04-27 19:09:21 +00:00
acpi_acad.c
acpi_battery.c
acpi_button.c
acpi_cmbat.c
acpi_cpu.c sys/dev: minor spelling fixes. 2016-05-03 03:41:25 +00:00
acpi_dock.c
acpi_ec.c Silence PVS-Studio warning (V595). 2016-02-23 23:09:45 +00:00
acpi_hpet.c Use uintmax_t (typedef'd to rman_res_t type) for rman ranges. 2016-03-18 01:28:41 +00:00
acpi_hpet.h
acpi_if.m
acpi_isab.c
acpi_lid.c
acpi_package.c Remove a bogus bzero() call. 2016-02-18 23:32:11 +00:00
acpi_pci_link.c
acpi_pci.c Add a new bus method to fetch device-specific CPU sets. 2016-05-09 20:50:21 +00:00
acpi_pcib_acpi.c Add a new bus method to fetch device-specific CPU sets. 2016-05-09 20:50:21 +00:00
acpi_pcib_pci.c Add a new bus method to fetch device-specific CPU sets. 2016-05-09 20:50:21 +00:00
acpi_pcib.c Add a new bus method to fetch device-specific CPU sets. 2016-05-09 20:50:21 +00:00
acpi_pcibvar.h Add a new bus method to fetch device-specific CPU sets. 2016-05-09 20:50:21 +00:00
acpi_pcivar.h Associate device_t objects with ACPI handles via PCI_CHILD_ADDED(). 2016-04-07 17:15:16 +00:00
acpi_perf.c
acpi_powerres.c Remove not needed initialisation code. 2014-06-26 10:48:01 +00:00
acpi_quirk.c
acpi_quirks
acpi_resource.c Convert rman to use rman_res_t instead of u_long 2016-01-27 02:23:54 +00:00
acpi_smbat.c Remove instances of variables that were set, but never used. gcc 4.9 2014-03-30 23:43:36 +00:00
acpi_smbus.h
acpi_thermal.c Fix intmax_t to uintptr_t casting on 32-bit platforms. Found by GCC. 2016-05-05 18:43:31 +00:00
acpi_throttle.c Do not probe Intel PIIX4 south bridge quirks on amd64. These quirky south 2015-05-21 19:31:10 +00:00
acpi_timer.c Use uintmax_t (typedef'd to rman_res_t type) for rman ranges. 2016-03-18 01:28:41 +00:00
acpi_video.c Silence PVS-Studio warning (V595). 2016-02-23 22:55:44 +00:00
acpi.c Add a new bus method to fetch device-specific CPU sets. 2016-05-09 20:50:21 +00:00
acpiio.h sys/dev: minor spelling fixes. 2016-05-03 03:41:25 +00:00
acpivar.h Add a new bus method to fetch device-specific CPU sets. 2016-05-09 20:50:21 +00:00