svn commit: r298933 - in head: share/man/man9 sys/amd64/include sys/dev/acpica sys/dev/drm2 sys/dev/drm2/i915 sys/kern sys/sys sys/x86/acpica sys/x86/x86
Ngie Cooper (yaneurabeya)
yaneurabeya at gmail.com
Mon May 2 18:45:45 UTC 2016
> On May 2, 2016, at 11:00, John Baldwin <jhb at 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/
More information about the svn-src-head
mailing list