freebsd-dev/sys/arm
Ian Lepore 686450c898 Import ARM_INTRNG, the "next generation" interrupt architecture for arm
and armv6 architecures.  The primary enhancement over the old design is
support for hierarchical interrupt controllers (such as a gpio driver
which can receive interrupts from a root PIC and act as a PIC itself for
clients interested in handling a change of gpio pin state as an
interrupt).  The new code also provides an infrastructure for mapping
interrupts described in metadata in the form of a "controller reference
plus interrupt number" tuple into the simple "0-n" flat numeric space
understood by rman and the bus resource mechanisms.

Use of the new code is enabled by setting the ARM_INTRNG option, and by
making a few simple changes to the platform's support code.  In addition
each existing PIC driver needs changes to be ready for INTRNG; this commit
contains the changes for the arm/gic driver, which most armv6 SoCs use, but
it does not enable the new code yet on any platform.

This project has been many years in the making, starting as a GSoC project
by Jakub Klama (jceel@) in 2012.  That didn't get committed right away and
the source base evolved out from under it to some degree.  In 2014 I rebased
the diffs to then -current and did some enhancements in the area of mapping
interrupt numbers and storing associated fdt data, then the project went
cold again for a while.  Eventually Svata Kraus took that work in progress
and did another big round of work on it, removing most of the remaining
rough edges.  Finally I took that and made one more pass through it, mostly
disabling the "INTR_SOLO" feature for now, pending further design
discussions on how to most efficiently dispatch a pending interrupt through
more than one layer of PIC.  The current code with the INTR_SOLO feature
disabled uses approximate 100 extra cpu cycles for each cascaded PIC the
interrupt has to be passed to, so what's left to do is about efficiency, not
correct operation.

Differential Revision:	https://reviews.freebsd.org/D2047
2015-10-18 18:26:19 +00:00
..
allwinner Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
altera/socfpga Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
amlogic/aml8726 Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
annapurna/alpine Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
arm Import ARM_INTRNG, the "next generation" interrupt architecture for arm 2015-10-18 18:26:19 +00:00
at91 Make kstack_pages a tunable on arm, x86, and powepc. On i386, the 2015-08-10 17:18:21 +00:00
broadcom/bcm2835 An IPI must be cleared before it is handled otherwise next IPI could be 2015-10-01 12:09:05 +00:00
cavium/cns11xx Make kstack_pages a tunable on arm, x86, and powepc. On i386, the 2015-08-10 17:18:21 +00:00
conf Remove compatibility shims for legacy ATA device names. 2015-10-11 13:01:51 +00:00
freescale Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
include Import ARM_INTRNG, the "next generation" interrupt architecture for arm 2015-10-18 18:26:19 +00:00
lpc Build the cpufunc_asm_* files based on the cpu type, not which config file 2015-03-29 22:43:39 +00:00
mv Fix a strange macro re-definition compile error. If the VM_MAXUSER_ADDRESS 2015-10-18 01:03:43 +00:00
qemu Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
rockchip Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
samsung Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
ti Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
versatile Add domain support to PCI bus allocation 2015-09-16 23:34:51 +00:00
xilinx Rename arm_init_secondary_ic() -> arm_pic_init_secondary(). The latter is 2015-10-18 16:54:34 +00:00
xscale Add domain support to PCI bus allocation 2015-09-16 23:34:51 +00:00