1. 09 11月, 2011 1 次提交
    • A
      MIPS: Kernel hangs occasionally during boot. · 4f1a1eb5
      Al Cooper 提交于
      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.
      Signed-off-by: NAl Cooper <alcooperx@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/2911/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      4f1a1eb5
  2. 08 11月, 2011 32 次提交
  3. 07 11月, 2011 7 次提交
新手
引导
客服 返回
顶部