• Robin Getz's avatar
    [Blackfin] arch: fix bug - trap_tests fails to recover on some tests. · 13fe24f3
    Robin Getz authored
    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: default avatarRobin Getz <robin.getz@analog.com>
    Signed-off-by: default avatarBryan Wu <bryan.wu@analog.com>
    13fe24f3
traps.h 5.02 KB