This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
ARM Spurious Interrupts & Scheduler locking
- From: <ecos-dev at bcsw dot net>
- To: <ecos-discuss at sources dot redhat dot com>
- Date: Fri, 9 Apr 2004 17:12:10 -0500
- Subject: [ECOS] ARM Spurious Interrupts & Scheduler locking
- Organization: BCS
- Reply-to: <cboling at hiwaay dot net>
I have found what appears to be a bug in the handling of spurious interrupts
on the ARM architecture with kernel support enabled.
The problem is in vectors.s. The scheduler gets locked before running
hal_IRQ_handler() (which deciphers the active interrupt) and gets unlocked
in interrupt_end(). The problem is that the scheduler always gets locked,
but interrupt_end() doesn't get called in the case of a spurious interrupt
which leaves the scheduler locked forever. Perhaps that is the intended
behavior, but there is no documentation to warn the user of this 'feature'.
This is particularly frustrating if you assert
CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS because you don't believe
spurious interrupts are problem, then find that your system hangs whenever
one occurs.
Looking at the discussion list, it appears the problem was introduced back
in 2001 at the recommendation of Thomas Faehnle. It also appears that this
is the problem that Mahesh Patil was struggling with several months ago.
Thanks.
- Chip Boling
bcsw.net
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss