2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-23 04:34:11 +08:00
linux-next/arch/blackfin/include/asm
Robin Getz b9a3899d59 Blackfin: make deferred hardware errors more exact
Hardware errors on the Blackfin architecture are queued by nature of the
hardware design.  Things that could generate a hardware level queue up at
the system interface and might not process until much later, at which
point the system would send a notification back to the core.

As such, it is possible for user space code to do something that would
trigger a hardware error, but have it delay long enough for the process
context to switch.  So when the hardware error does signal, we mistakenly
evaluate it as a different process or as kernel context and panic (erp!).
This makes it pretty difficult to find the offending context.  But wait,
there is good news somewhere.

By forcing a SSYNC in the interrupt entry, we force all pending queues at
the system level to be processed and all hardware errors to be signaled.
Then we check the current interrupt state to see if the hardware error is
now signaled.  If so, we re-queue the current interrupt and return thus
allowing the higher priority hardware error interrupt to process properly.
Since we haven't done any other context processing yet, the right context
will be selected and killed.  There is still the possibility that the
exact offending instruction will be unknown, but at least we'll have a
much better idea of where to look.

The downside of course is that this causes system-wide syncs at every
interrupt point which results in significant performance degradation.
Since this situation should not occur in any properly configured system
(as hardware errors are triggered by things like bad pointers), make it a
debug configuration option and disable it by default.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2009-06-12 06:11:44 -04:00
..
atomic.h Blackfin arch: merge adeos blackfin part to arch/blackfin/ 2009-01-07 23:14:39 +08:00
auxvec.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
bfin5xx_spi.h Blackfin SPI Driver: Make mmc_spi driver work on Blackfin 2009-04-07 08:31:06 -07:00
bfin_sdh.h Blackfin arch: add SDIO host driver platform data 2009-01-07 23:14:38 +08:00
bfin_simple_timer.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
bfin_sport.h Blackfin arch: clean up sports header file 2009-03-28 20:38:17 +08:00
bfin-global.h Blackfin arch: rename cache_lock() to bfin_cache_lock() 2008-11-18 17:48:22 +08:00
bfrom.h Blackfin arch: Update some inline assembly, tweak some register constraints 2009-01-07 23:14:39 +08:00
bitops.h Blackfin arch: merge adeos blackfin part to arch/blackfin/ 2009-01-07 23:14:39 +08:00
blackfin.h Blackfin arch: only define HI/LO macros for assembly files 2008-11-18 17:48:22 +08:00
bug.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
bugs.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code 2009-01-07 23:14:39 +08:00
cacheflush.h Blackfin: fix detection of cached L2 SRAM 2009-06-12 06:11:25 -04:00
cdef_LPBlackfin.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
checksum.h Blackfin arch: Faster Implementation of csum_tcpudp_nofold() 2009-02-04 16:49:45 +08:00
clocks.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
context.S Blackfin arch: Faster C implementation of no-MPU CPLB handler 2009-01-07 23:14:38 +08:00
cplb.h Blackfin: work around anomaly 05000220 2009-06-12 06:11:41 -04:00
cplbinit.h Blackfin arch: Faster C implementation of no-MPU CPLB handler 2009-01-07 23:14:38 +08:00
cpu.h Blackfin arch: delete now unused "cclk" member of blackfin_cpudata 2009-01-07 23:14:38 +08:00
cputime.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
current.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
def_LPBlackfin.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
delay.h Blackfin arch: Remove outdated code 2009-02-04 16:49:45 +08:00
device.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
div64.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
dma-mapping.h Blackfin arch: fix a broken define in dma-mapping 2008-11-18 17:48:22 +08:00
dma.h Blackfin: fix early L1 relocation crash 2009-06-12 06:11:27 -04:00
dpmc.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
early_printk.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
elf.h [PATCH] remove unused ibcs2/PER_SVR4 in SET_PERSONALITY 2008-10-16 15:40:05 +02:00
emergency-restart.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
entry.h Blackfin: make deferred hardware errors more exact 2009-06-12 06:11:44 -04:00
errno.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
fb.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
fcntl.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
fixed_code.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
flat.h flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
ftrace.h tracing: make CALLER_ADDRx overwriteable 2009-03-02 16:49:37 -05:00
futex.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
gpio.h Blackfin arch: convert BF5{18,27,48}_FAMILY to CONFIG_BF{51,52,54}x 2009-03-28 20:32:57 +08:00
gptimers.h Blackfin arch: convert BF5{18,27,48}_FAMILY to CONFIG_BF{51,52,54}x 2009-03-28 20:32:57 +08:00
hardirq.h Blackfin arch: move ack_bad_irq() prototype to hardirq.h to match other arches 2008-11-18 17:48:22 +08:00
hw_irq.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
io.h Blackfin: fix warnings with I/O port macros 2009-06-12 06:03:46 -04:00
ioctl.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
ioctls.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
ipcbuf.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
ipipe_base.h Blackfin arch: Update adeos blackfin arch patch to 1.9-00 2009-03-04 16:52:38 +08:00
ipipe.h Blackfin: merge Philippe's recent ipipe patch 2009-06-12 06:03:46 -04:00
irq_handler.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
irq_regs.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
irq.h Blackfin arch: Update adeos blackfin arch patch to 1.9-00 2009-03-04 16:52:38 +08:00
Kbuild Blackfin arch: cleanup bfin_sport.h header and export it to userspace 2009-03-05 19:42:43 +08:00
kdebug.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
kgdb.h Blackfin arch: scrub comments/whitespace/cvs keywords 2009-02-04 16:49:45 +08:00
kmap_types.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
l1layout.h Blackfin arch: disable pthread stack check for SMP at runtime 2009-01-07 23:14:38 +08:00
linkage.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
local.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
mem_init.h Blackfin arch: Fix Bug - Kernel does not boot if re-program clocks 2009-02-04 16:49:45 +08:00
mem_map.h Blackfin arch: smp patch cleanup from LKML review 2009-01-07 23:14:39 +08:00
mman.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
mmu_context.h Blackfin arch: SMP supporting patchset: Blackfin CPLB related code 2008-11-18 17:48:22 +08:00
mmu.h NOMMU: Make VMAs per MM as for MMU-mode linux 2009-01-08 12:04:47 +00:00
module.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
msgbuf.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
mutex-dec.h Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code 2009-01-07 23:14:39 +08:00
mutex.h Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code 2009-01-07 23:14:39 +08:00
nand.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
page_offset.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
page.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
param.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
pci.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
pda.h Blackfin arch: Add ability to count and display number of NMI interrupts 2009-02-04 16:49:45 +08:00
percpu.h percpu: clean up percpu constants 2009-03-06 14:33:58 +09:00
pgalloc.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
pgtable.h Blackfin arch: stub out pgprot_noncached() like other people seem to do on nommu 2009-01-07 23:14:39 +08:00
poll.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
portmux.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
posix_types.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
processor.h Blackfin: document anomaly 05000234 workaround 2009-06-12 06:11:28 -04:00
ptrace.h Blackfin arch: ptrace - make sure PT_ORIG_R0 and PT_ORIG_P0 offsets are declared 2008-10-09 15:22:56 +08:00
reboot.h Blackfin arch: Fix bug - Run "reboot" hangs bf518-ezbrd 2009-02-04 16:49:45 +08:00
resource.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
rwlock.h Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code 2009-01-07 23:14:39 +08:00
scatterlist.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
sections.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
segment.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
sembuf.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
serial.h Blackfin arch: define BASE_BAUD like everyone else 2008-11-18 17:48:22 +08:00
setup.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
shmbuf.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
shmparam.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
sigcontext.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
siginfo.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
signal.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
smp.h Blackfin arch: smp patch cleanup from LKML review 2009-01-07 23:14:39 +08:00
socket.h net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
sockios.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
spinlock_types.h Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code 2009-01-07 23:14:39 +08:00
spinlock.h Blackfin arch: SMP supporting patchset: Blackfin header files and machine common code 2009-01-07 23:14:39 +08:00
stat.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
statfs.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
string.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
swab.h headers_check fix: blackfin, swab.h 2009-02-01 11:01:23 +05:30
system.h Blackfin arch: merge adeos blackfin part to arch/blackfin/ 2009-01-07 23:14:39 +08:00
termbits.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
termios.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
thread_info.h Blackfin arch: Update adeos blackfin arch patch to 1.9-00 2009-03-04 16:52:38 +08:00
time.h Blackfin: add support for gptimer0 as a tick source 2009-06-12 06:11:37 -04:00
timex.h Blackfin arch: make sure cycles is marked as volatile so gcc doesnt reorder on us 2008-10-16 23:55:41 +08:00
tlb.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
tlbflush.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
topology.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
trace.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
traps.h Blackfin arch: Better error handling of unknown exceptions 2008-10-08 14:43:47 +08:00
types.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
uaccess.h Blackfin arch: add __must_check markings to our user functions like other arches 2009-01-07 23:14:38 +08:00
ucontext.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
unaligned.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
unistd.h Blackfin: hook up preadv/pwritev syscalls 2009-05-27 00:27:00 -04:00
user.h Blackfin arch: move include/asm-blackfin header files to arch/blackfin 2008-08-27 10:51:02 +08:00
xor.h Blackfin arch: use generic xor.h 2008-11-18 17:48:22 +08:00