On 05/02/16 15:52, John Baldwin wrote:
On Monday, May 02, 2016 11:45:41 AM Ngie Cooper wrote:

On May 2, 2016, at 11:00, John Baldwin <j...@freebsd.org> wrote:

Author: jhb
Date: Mon May  2 18:00:38 2016
New Revision: 298933
URL: https://svnweb.freebsd.org/changeset/base/298933

Log:
 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

Added:
 head/share/man/man9/BUS_GET_CPUS.9   (contents, props changed)
Modified:
 head/share/man/man9/Makefile
 head/sys/amd64/include/intr_machdep.h
 head/sys/dev/acpica/acpi.c
 head/sys/dev/acpica/acpi_pci.c
 head/sys/dev/acpica/acpi_pcib.c
 head/sys/dev/acpica/acpi_pcib_acpi.c
 head/sys/dev/acpica/acpi_pcib_pci.c
 head/sys/dev/acpica/acpi_pcibvar.h
 head/sys/dev/acpica/acpivar.h
 head/sys/dev/drm2/drm_dp_iic_helper.c
 head/sys/dev/drm2/i915/dvo.h
 head/sys/kern/bus_if.m
 head/sys/kern/subr_bus.c
 head/sys/sys/bus.h
 head/sys/x86/acpica/OsdEnvironment.c
 head/sys/x86/x86/intr_machdep.c
 head/sys/x86/x86/nexus.c

This broke the build with gcc: 
https://jenkins.freebsd.org/job/FreeBSD_HEAD_amd64_gcc/1211/

I saw.  What is odd though is that my tinderbox builds all passed.  This might
be due to the recent howmany() changes since _bitset.h only needed <sys/types.h>
before but now needs <sys/param.h> (which is borderline to being pointless for
a _foo.h header).


TBH, I thought so too, but I avoided applying such changes to headers,
and I haven't touched _bitset.h,

Pedro.
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to