History log of /netbsd/sys/arch/arm/pic/pic.c (Results 1 – 25 of 84)
Revision Date Author Comments
# d4969906 30-Oct-2022 riastradh <riastradh@NetBSD.org>

arm/pic: Sprinkle dtrace probes on interrupt handlers like x86.


# 7424180e 29-Oct-2022 riastradh <riastradh@NetBSD.org>

arm/pic: Use a local variable to reduce #ifdef scope.

Avoids straddling a conditional this way.


# d0680dde 28-Jul-2022 riastradh <riastradh@NetBSD.org>

arm/pic: Mark definitions static to match declarations.


# e826da55 28-Jul-2022 riastradh <riastradh@NetBSD.org>

arm/pic: Assert ci_cpl doesn't lower across interrupt handler.


# ea5c005d 28-Jul-2022 skrll <skrll@NetBSD.org>

Catch up with the per lwp astpending (rather than per cpu) flag in the
preemption code. NFC as preemption (still) isn't enabled.


# 4bece3da 25-Jun-2022 jmcneill <jmcneill@NetBSD.org>

pic: Update ci_cpl in pic_set_priority callback.

Not all ICs need interrupts disabled to update the priority. DAIF accesses
are not cheap, so push the update of ci_cpl from pic_set_priority to the
I

pic: Update ci_cpl in pic_set_priority callback.

Not all ICs need interrupts disabled to update the priority. DAIF accesses
are not cheap, so push the update of ci_cpl from pic_set_priority to the
IC's pic_set_priority callback, and let the IC driver determine whether
or not it needs interrupts disabled.

show more ...


# b2151db1 02-Jan-2022 riastradh <riastradh@NetBSD.org>

arm: No #if DIAGNOSTIC needed any more.

Compiler can (and gcc does) flush call to strlen when the result is
unused, so no performance impact here.


# 79ff7f4d 21-Dec-2021 skrll <skrll@NetBSD.org>

Fix a bug where pic_establish_intr would fail to call pic_establish_irq
if a free pic__iplsources slot was found, i.e. an interrupt handler at
the same ipl had been disestablished previously.


# 616067dd 21-Dec-2021 skrll <skrll@NetBSD.org>

G/C pic_iplsource


# 8a1499a7 21-Dec-2021 skrll <skrll@NetBSD.org>

KNF


# 3ae90dc5 31-Oct-2021 skrll <skrll@NetBSD.org>

Only perform pic_unblock_percpu if all of the following are true
- mp_online, i.e. APs are running.
- is_mpsafe, i.e. the interrupt handler is MP safe
- is_percpu, i.e. the interrupt actually require

Only perform pic_unblock_percpu if all of the following are true
- mp_online, i.e. APs are running.
- is_mpsafe, i.e. the interrupt handler is MP safe
- is_percpu, i.e. the interrupt actually requires it!

The last one (is_percpu) is true for GIC PPI+SGI only.

show more ...


# f8f20872 31-Oct-2021 skrll <skrll@NetBSD.org>

Assert we can sleep in pic_add


# 0ab152a3 31-Oct-2021 skrll <skrll@NetBSD.org>

Rework Arm (32bit and 64bit) AP startup so that cpu_hatch doesn't sleep.

The AP initialisation code in cpu_init_secondary_processor will read and
initialise the required system registers and state f

Rework Arm (32bit and 64bit) AP startup so that cpu_hatch doesn't sleep.

The AP initialisation code in cpu_init_secondary_processor will read and
initialise the required system registers and state for the BP to attach
and report.

Rework the interrupt handler code for this new sequence. Thankfully,
this removes a bunch of code for bcm2836mp.

The VFP detection handler on <= armv7 relies on the global undefined
handler being in place until the BP attaches vfp. That is, after the
APs have been spun up.

gicv3_its.c has a serialisation issue which is protected against in
the gicv3_its_cpu_init, which is called from cpu_hatch, with a spin
lock. The serialisation issue needs addressing more completely.

Tested on RPI3, Apple M1, QEMU, and lx2k

Fixes PR port-arm/56264:
diagnostic assertion "l->l_stat == LSONPROC" failed on RPI3

show more ...


# af81d8d0 26-Sep-2021 jmcneill <jmcneill@NetBSD.org>

If an SGI or PPI is established after interrupts are enabled, make sure
we unblock the source on _all_ CPUs and not just the CPU that is
establishing the interrupt.


# ce3779c5 08-Aug-2021 skrll <skrll@NetBSD.org>

Re-apply

Move 'struct pic_pending' from percpu to struct cpu_info. Saves a few
instructions in splx.

There is(/was) no need to use atomic operations on the percpu / cpu_info
members, so don't.

Fin

Re-apply

Move 'struct pic_pending' from percpu to struct cpu_info. Saves a few
instructions in splx.

There is(/was) no need to use atomic operations on the percpu / cpu_info
members, so don't.

Finally removng the use of percpu should help avoid problems with "late"
attaching cpus.

show more ...


# bb4115e5 27-Mar-2021 jmcneill <jmcneill@NetBSD.org>

Revert recent pic optimizations until I have more time to work on this.


# ec6a20c7 21-Feb-2021 jmcneill <jmcneill@NetBSD.org>

Inline pic_set_priority and use cpu_dosoftints_ci when available.


# c4f3d436 21-Feb-2021 skrll <skrll@NetBSD.org>

Fixup with __HAVE_PREEMPTION code which is currently unused


# 974c06ee 20-Feb-2021 jmcneill <jmcneill@NetBSD.org>

Inline "pic_do_pending_ints" in splx and check ci_pending_ipls to optimize
the common case (hw priority, no cascaded interrupts pending).

This also removes the need for the "pic_pending_used" flag,

Inline "pic_do_pending_ints" in splx and check ci_pending_ipls to optimize
the common case (hw priority, no cascaded interrupts pending).

This also removes the need for the "pic_pending_used" flag, and should fix
booting on Raspberry Pi 3.

show more ...


# bc5e3d07 20-Feb-2021 jmcneill <jmcneill@NetBSD.org>

Move 'struct pic_pending' from percpu to struct cpu_info. Saves a few
instructions in splx.


# cd4f5843 16-Feb-2021 jmcneill <jmcneill@NetBSD.org>

pic: avoid pic_do_pending_ints if pic_mark_pending_* has never been called


# ce4c81a6 15-Feb-2021 jmcneill <jmcneill@NetBSD.org>

splx: use pic_set_priority_psw in interrupts disabled case to skip a few
more daif accesses.


# 50952816 15-Feb-2021 jmcneill <jmcneill@NetBSD.org>

pic: reduce the number of daif accesses in pic_do_pending_ints

The caller has already provided daif state. No need to keep updating
daif via pic_set_priority if it's already in the state we need (in

pic: reduce the number of daif accesses in pic_do_pending_ints

The caller has already provided daif state. No need to keep updating
daif via pic_set_priority if it's already in the state we need (interrupts
disabled).

show more ...


# d30c389e 07-Feb-2021 jmcneill <jmcneill@NetBSD.org>

Use ENABLE_INTERRUPT() / DISABLE_INTERRUPT() instead of cpsie()/cpsid() in
places where we don't care about the cpsie() return value.


# 272e1bec 01-Nov-2020 jmcneill <jmcneill@NetBSD.org>

intr_ipi_send: assert that kcp is either NULL or contains exactly one CPU


1234