John Baldwin
8d791e5af1
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
..
2016-05-09 20:50:21 +00:00
2015-01-23 21:07:08 +00:00
2015-01-08 21:46:28 +00:00
2015-08-14 22:57:13 +00:00
2016-01-09 20:18:53 +00:00
2016-04-29 22:15:33 +00:00
2016-04-21 19:57:40 +00:00
2015-06-10 10:48:12 +00:00
2014-09-04 21:31:25 +00:00
2016-04-29 22:15:33 +00:00
2016-04-21 19:57:40 +00:00
2016-03-21 21:38:35 +00:00
2016-03-11 23:18:06 +00:00
2016-04-26 15:38:17 +00:00
2015-07-20 09:37:42 +00:00
2016-04-29 22:15:33 +00:00
2016-01-07 20:08:02 +00:00
2015-05-22 17:05:21 +00:00
2016-04-09 13:58:04 +00:00
2015-02-20 20:49:00 +00:00
2016-05-08 03:26:12 +00:00
2016-04-19 23:48:27 +00:00
2016-04-15 03:09:55 +00:00
2015-03-16 19:29:19 +00:00
2016-03-12 23:02:53 +00:00
2016-04-29 22:15:33 +00:00
2016-01-20 23:33:58 +00:00
2016-03-17 01:05:53 +00:00
2016-04-19 23:48:27 +00:00
2016-04-29 22:15:33 +00:00
2015-04-22 14:38:58 +00:00
2015-11-25 07:14:58 +00:00
2015-07-21 14:39:34 +00:00
2016-04-29 22:15:33 +00:00
2016-04-15 16:10:11 +00:00
2016-01-31 17:32:20 +00:00
2016-04-19 23:48:27 +00:00
2016-04-29 22:15:33 +00:00
2016-04-29 22:15:33 +00:00
2016-04-29 22:15:33 +00:00
2015-07-19 22:24:33 +00:00
2015-11-15 12:10:51 +00:00
2016-02-09 20:22:35 +00:00
2016-04-29 22:15:33 +00:00
2016-02-23 23:37:10 +00:00
2015-10-10 09:21:55 +00:00
2016-04-29 22:15:33 +00:00
2015-08-02 00:03:08 +00:00
2015-07-12 18:38:17 +00:00
2015-07-11 15:21:37 +00:00
2016-04-26 19:57:35 +00:00
2016-04-07 04:23:25 +00:00
2015-04-14 14:22:34 +00:00
2016-04-17 23:22:32 +00:00
2015-08-20 22:44:26 +00:00
2016-04-29 22:15:33 +00:00
2016-04-21 16:22:52 +00:00
2016-04-29 22:15:33 +00:00
2016-02-28 17:52:33 +00:00
2016-04-29 22:15:33 +00:00
2015-08-02 00:03:08 +00:00
2016-03-29 19:57:11 +00:00
2015-11-23 07:09:35 +00:00
2016-04-15 17:45:12 +00:00
2015-12-29 23:25:26 +00:00
2015-01-22 11:12:42 +00:00
2015-08-02 00:03:08 +00:00
2016-04-26 15:38:17 +00:00
2015-06-10 10:48:12 +00:00
2016-04-29 22:15:33 +00:00
2016-04-29 22:15:33 +00:00
2015-12-29 23:25:26 +00:00
2015-12-29 23:16:20 +00:00
2016-04-26 15:38:17 +00:00
2016-04-29 22:15:33 +00:00
2016-04-19 11:37:43 +00:00
2015-08-30 18:02:57 +00:00
2016-04-29 22:15:33 +00:00
2016-04-15 16:10:11 +00:00
2016-04-29 22:15:33 +00:00
2015-10-27 22:59:24 +00:00
2016-03-12 22:53:46 +00:00
2015-05-24 14:44:06 +00:00
2016-04-04 09:15:25 +00:00
2016-04-27 00:10:32 +00:00
2016-04-29 22:15:33 +00:00
2016-04-17 11:04:27 +00:00
2015-06-16 20:19:00 +00:00
2015-09-04 00:14:20 +00:00
2016-04-29 22:15:33 +00:00
2016-01-11 20:38:39 +00:00
2016-05-09 20:50:21 +00:00
2015-10-20 03:25:17 +00:00
2015-12-01 02:48:42 +00:00
2014-12-12 09:37:18 +00:00
2016-03-15 00:21:32 +00:00
2016-04-26 12:29:47 +00:00
2016-04-29 22:15:33 +00:00
2015-01-20 03:54:30 +00:00
2014-12-21 05:07:11 +00:00
2015-07-11 16:22:48 +00:00
2016-05-04 03:07:52 +00:00
2015-02-06 16:09:01 +00:00
2016-05-09 12:24:39 +00:00
2014-10-21 07:31:21 +00:00
2014-12-13 21:00:10 +00:00
2016-04-29 22:15:33 +00:00
2016-04-29 22:15:33 +00:00
2015-08-21 15:57:57 +00:00
2016-04-29 22:15:33 +00:00
2015-09-21 15:02:59 +00:00
2016-04-26 15:38:17 +00:00
2015-11-19 05:50:22 +00:00
2016-04-29 22:15:33 +00:00
2016-05-04 23:31:52 +00:00
2016-05-04 13:48:59 +00:00
2015-10-02 09:23:14 +00:00
2016-04-29 22:15:33 +00:00
2014-08-11 15:06:07 +00:00
2015-01-26 16:26:28 +00:00
2016-03-31 18:10:29 +00:00
2016-04-08 11:59:11 +00:00
2015-11-19 05:56:59 +00:00
2015-12-17 00:00:27 +00:00
2016-03-01 17:47:32 +00:00
2014-11-01 17:05:15 +00:00
2016-04-07 04:23:25 +00:00
2016-02-10 21:16:37 +00:00
2016-04-29 22:15:33 +00:00
2016-05-05 15:21:33 +00:00
2015-05-22 17:05:21 +00:00
2016-04-29 22:15:33 +00:00
2015-08-11 08:43:50 +00:00
2016-04-01 18:29:38 +00:00
2016-04-26 15:38:17 +00:00
2015-07-18 09:02:50 +00:00
2015-12-29 23:25:26 +00:00
2016-04-29 20:12:45 +00:00
2016-03-21 21:38:35 +00:00
2016-03-21 21:37:33 +00:00
2016-03-21 21:38:35 +00:00
2016-04-26 19:57:35 +00:00
2016-04-29 22:15:33 +00:00
2016-04-26 19:57:35 +00:00
2016-04-29 22:15:33 +00:00
2015-07-06 18:53:56 +00:00
2016-01-26 14:46:39 +00:00
2016-04-29 22:15:33 +00:00
2014-07-26 19:27:34 +00:00
2016-03-01 18:12:14 +00:00
2016-04-29 20:11:09 +00:00
2016-04-29 22:15:33 +00:00
2016-04-15 16:10:11 +00:00
2015-03-17 14:16:50 +00:00
2016-04-25 04:36:54 +00:00
2016-04-14 17:07:26 +00:00
2016-04-26 15:38:17 +00:00
2016-04-15 16:10:11 +00:00
2016-04-29 22:15:33 +00:00
2016-04-15 16:10:11 +00:00
2016-04-19 23:48:27 +00:00
2015-06-16 13:09:18 +00:00
2016-03-31 17:27:30 +00:00
2016-04-29 21:54:28 +00:00
2016-04-29 22:15:33 +00:00
2016-04-29 22:15:33 +00:00
2016-03-09 19:05:11 +00:00
2016-04-15 16:10:11 +00:00
2015-06-16 13:09:18 +00:00
2015-09-06 05:50:51 +00:00
2015-09-15 23:06:56 +00:00
2016-04-29 22:15:33 +00:00
2016-02-04 16:32:21 +00:00
2016-04-29 22:15:33 +00:00
2016-05-03 15:17:43 +00:00
2016-03-09 19:05:11 +00:00
2016-04-29 21:54:28 +00:00
2016-05-03 15:17:43 +00:00