The NetBSD Project

CVS log for src/sys/arch/arm/cortex/gic.c

[BACK] Up to [cvs.NetBSD.org] / src / sys / arch / arm / cortex

Request diff between arbitrary revisions


Default branch: MAIN
Current tag: pgoyette-compat-0330


Revision 1.32 / (download) - annotate - [select for diffs], Wed Feb 7 20:42:17 2018 UTC (6 years, 2 months ago) by jmcneill
Branch: MAIN
CVS Tags: pgoyette-compat-base, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315
Branch point for: pgoyette-compat
Changes since 1.31: +5 -6 lines
Diff to previous 1.31 (colored)

PR# port-evbarm/49468: Cortex GIC assertion triggered on Allwinner A80 SoC

The priority level is changed by writing to GICC_PMR with interrupts
disabled. However, interrupts are enabled/disabled downstream of the GICC
at the CPU. When raising priority level, there is a window between the time
that interrupts are disabled and the GICC_PMR register is written. If an
interrupt occurs at a previously allowed priority before GICC_PMR is
changed, the CPU will receive the signal when interrupts are re-enabled.
At this time, GICC_PMR is now the new priority level, so reads of
GICC_IAR will report a spurious IRQ.

Move the "old_ipl != IPL_HIGH" test until after we have confirmed that
there is at least one pending IRQ.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>