08 Dec, 2011

1 commit

  • Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
    We run all interrupt handlers with interrupts disabled and we even check
    and yell when an interrupt handler returns with interrupts enabled (see
    commit [b738a50a: genirq: Warn when handler enables interrupts]).

    So now this flag is a NOOP and can be removed.

    [ralf@linux-mips.org: Fixed up conflicts in
    arch/mips/alchemy/common/dbdma.c, arch/mips/cavium-octeon/smp.c and
    arch/mips/kernel/perf_event.c.]

    Signed-off-by: Yong Zhang
    To: linux-kernel@vger.kernel.org
    Cc: tglx@linutronix.de
    linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/2835/
    Signed-off-by: Ralf Baechle

    Yong Zhang
     

09 Nov, 2011

1 commit

  • 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: Al Cooper
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/2911/
    Signed-off-by: Ralf Baechle

    Al Cooper
     

17 Dec, 2010

1 commit

  • Consider the following test case:

    write_c0_compare(read_c0_count());

    Even if the counter doesn't increment during execution, this might not
    generate an interrupt until the counter wraps around. The CPU may
    perform the comparison each time CP0 COUNT increments, not when CP0
    COMPARE is written.

    If mips_next_event() is called with a very small delta, and CP0 COUNT
    increments during the calculation of "cnt += delta", it is possible
    that CP0 COMPARE will be written with the current value of CP0 COUNT.
    If this is detected, the function should return -ETIME, to indicate
    that the interrupt might not have actually gotten scheduled.

    Signed-off-by: Kevin Cernekee
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/1836/
    Signed-off-by: Ralf Baechle

    Kevin Cernekee
     

07 Oct, 2010

1 commit

  • Add missing #inclusions of to a whole bunch of files that should
    really include it. Note that this can replace #inclusions of .

    This is required for the patch to sort out irqflags handling function naming to
    compile on MIPS.

    The problem is that these files require access to things like setup_irq() -
    which isn't available by #including

    Signed-off-by: David Howells
    Acked-by: Ralf Baechle

    David Howells
     

05 Aug, 2010

1 commit

  • The 'mult' element of struct clock_event_device must never be wider
    than 32-bits. If it were, it would get truncated when used by
    clockevent_delta2ns() when this calls do_div().

    We can meet this requirement by using clockevent_set_clock() to set
    the MULT and SHIFT values.

    Signed-off-by: David Daney
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/1253/
    Acked-by: Thomas Gleixner
    Signed-off-by: Ralf Baechle

    David Daney
     

28 Jan, 2010

1 commit

  • The MIPS processor is limited to 64 external interrupt sources. Using a
    greater number without IRQ sharing requires reading platform-specific
    registers. On such platforms, reading the IntCtl register to determine
    which interrupt corresponds to a timer interrupt will not work.

    On MIPSR2 systems there is a solution - the TI bit in the Cause register,
    specifically indicates that a timer interrupt has occured. This patch uses
    that bit to detect interrupts for MIPSR2 processors, which may be expected
    to work regardless of how the timer interrupt may be routed in the hardware.

    Signed-off-by: David VomLehn (dvomlehn@cisco.com)
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/804/
    Signed-off-by: Ralf Baechle

    David VomLehn
     

02 Nov, 2009

1 commit

  • Along the lines of d6c585a4342a2ff627a29f9aea77c5ed4cd76023, add IRQF_TIMER
    flag for all timer interrupts This ensures that timer interrupts won't be
    disabled on suspend and not threaded for PREEMPT_RT.

    Signed-off-by: Wu Zhangjin
    Acked-by: Thomas Gleixner
    Signed-off-by: Ralf Baechle

    Wu Zhangjin
     

25 Jun, 2009

1 commit


11 Jan, 2009

1 commit

  • The current mips clock build infrastructure lets a system only use
    either the MIPS cp0 counter or a SoC specific timer as a clocksource /
    clockevent device.

    This patch renames the core cp0 counter clocksource / clockevent functions
    from mips_* to r4k_* and updates the wrappers in asm-mips/time.h to
    call these renamed functions instead.

    Chips which can detect whether it is safe to use a chip-specific timer
    can now fall back on the cp0 counter if necessary and possible
    (e.g. Alchemy with a follow-on patch).

    Existing behaviour is not changed in any way.

    Signed-off-by: Manuel Lauss
    Signed-off-by: Ralf Baechle

    Manuel Lauss
     

13 Dec, 2008

1 commit


04 Oct, 2008

1 commit

  • Rework of SMTC support to make it work with the new clock event system,
    allowing "tickless" operation, and to make it compatible with the use of
    the "wait_irqoff" idle loop. The new clocking scheme means that the
    previously optional IPI instant replay mechanism is now required, and has
    been made more robust.

    Signed-off-by: Kevin D. Kissell
    Signed-off-by: Ralf Baechle

    Kevin D. Kissell
     

27 Nov, 2007

2 commits

  • The R4000 and R4400 have an errata where if the cp0 count register is read
    in the exact moment when it matches the compare register no interrupt will
    be generated.

    This bug may be triggered if the cp0 count register is being used as
    clocksource and the compare interrupt as clockevent. So a simple
    workaround is to avoid using the compare for both facilities on the
    affected CPUs.

    This is different from the workaround suggested in the old errata documents;
    at some opportunity probably the official version should be implemented
    and tested. Another thing to find out is which processor versions
    exactly are affected. I only have errata documents upto R4400 V3.0
    available so for the moment the code treats all R4000 and R4400 as broken.

    This is potencially a problem for some machines that have no other decent
    clocksource available; this workaround will cause them to fall back to
    another clocksource, worst case the "jiffies" source.

    Ralf Baechle
     
  • Signed-off-by: Ralf Baechle

    Ralf Baechle
     

30 Oct, 2007

4 commits


23 Oct, 2007

1 commit


20 Oct, 2007

1 commit


19 Oct, 2007

1 commit