aboutsummaryrefslogtreecommitdiffstats
path: root/Config.in
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2011-11-13 11:26:52 +0000
committerGabor Juhos <juhosg@openwrt.org>2011-11-13 11:26:52 +0000
commit0112153a0eecfd08dfe6aa80d68120d14476fe95 (patch)
tree503bd354f90c2fdd8d33e8bf744defe121bf046c /Config.in
parent1afc76ea130bdfa8991329da124fe966eab4228d (diff)
downloadupstream-0112153a0eecfd08dfe6aa80d68120d14476fe95.tar.gz
upstream-0112153a0eecfd08dfe6aa80d68120d14476fe95.tar.bz2
upstream-0112153a0eecfd08dfe6aa80d68120d14476fe95.zip
ar71xx: fix occasional kernel hangs during boot on AR934x
The patch taken from the linux-mips mailing list. The Kernel hangs occasionally during boot after "Calibrating delay loop..". This is caused by the c0_compare_int_usable() routine in cevt-r4k.c returning false which causes the system to disable the timer and hang later. The false return happens because the routine is using a series of four calls to irq_disable_hazard() as a delay while it waits for the timer changes to propagate to the cp0 cause register. On newer MIPS cores, like the 74K, the series of irq_disable_hazard() calls turn into ehb instructions and can take as little as a few clock ticks for all 4 instructions. This is not enough of a delay, so the routine thinks the timer is not working. This fix uses up to a max number of cycle counter ticks for the delay and uses back_to_back_c0_hazard() instead of irq_disable_hazard() to handle the hazard condition between cp0 writes and cp0 reads. SVN-Revision: 29009
Diffstat (limited to 'Config.in')
0 files changed, 0 insertions, 0 deletions