This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

ARM Spurious Interrupts & Scheduler locking


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]