]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: Support arch_irq_work_raise() via self IPIs
authorLarry Bassel <larry.bassel@linaro.org>
Mon, 12 May 2014 15:48:51 +0000 (16:48 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 16 May 2014 16:42:21 +0000 (17:42 +0100)
commite504b0ddc017284fd9f24f63aa46350f4eed4204
tree542dc533d37983180b36512b00e5d8e01627d96c
parent7c5616bf7889bdbf9f6b2d034dece96fcb8eb699
arm64: Support arch_irq_work_raise() via self IPIs

Support for arch_irq_work_raise() was missing from
arm64 (a prerequisite for FULL_NOHZ).

This patch is based on the arm32 patch ARM 7872/1.

commit ba23a6e297593a0f6909044eccd886847cc338d9
Author: Stephen Boyd <sboyd@codeaurora.org>
Date:   Tue Oct 29 20:32:56 2013 +0100

    ARM: 7872/1: Support arch_irq_work_raise() via self IPIs

    By default, IRQ work is run from the tick interrupt (see
    irq_work_run() in update_process_times()). When we're in full
    NOHZ mode, restarting the tick requires the use of IRQ work and
    if the only place we run IRQ work is in the tick interrupt we
    have an unbreakable cycle. Implement arch_irq_work_raise() via
    self IPIs to break this cycle and get the tick started again.
    Note that we implement this via IPIs which are only available on
    SMP builds. This shouldn't be a problem because full NOHZ is only
    supported on SMP builds anyway.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Reviewed-by: Kevin Hilman <khilman@linaro.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Larry Bassel <larry.bassel@linaro.org>
Reviewed-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/hardirq.h
arch/arm64/kernel/smp.c