mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
[Blackfin] arch: fix bug - trap_tests fails to recover on some tests.
http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_item_id=3719 When the CPLBs get a miss, we do: - find a victim in the HW table - remove the victim - find the replacement in the software table - put it into the HW table. If we can't find a replacement in the software table, we accidently leave a duplicate in the HW table. This patch ensures that duplicate is marked as not valid. What we should do is find the replacement in the software table, before we find a victim in the HW table - but its too late in the release cycle to do that much restructuring of this code. Rather that duplicate code, connect Hardware Errors (irq5) into trap_c, so user space processes get killed properly. The rest of irq_panic() can be moved into traps.c (later) There is still a small corner case that causes problems when a pheriperal interrupt goes off a single cycle before a user space hardware error. This causes a kernel panic, rather than the user space process being killed. But, this checkin makes things work in 99.9% of the cases, and is a vast improvement from what is there today (which fails 100% of the time). Signed-off-by: Robin Getz <[email protected]> Signed-off-by: Bryan Wu <[email protected]>
This commit is contained in:
parent
f53e86760e
commit
13fe24f37d
5 changed files with 99 additions and 71 deletions
|
|
@ -45,6 +45,10 @@
|
|||
#define VEC_CPLB_I_M (44)
|
||||
#define VEC_CPLB_I_MHIT (45)
|
||||
#define VEC_ILL_RES (46) /* including unvalid supervisor mode insn */
|
||||
/* The hardware reserves (63) for future use - we use it to tell our
|
||||
* normal exception handling code we have a hardware error
|
||||
*/
|
||||
#define VEC_HWERR (63)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue