lkml.org 
[lkml]   [2020]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 4/6] arm: Mark the recheduling IPI as raw interrupt
    Date
    Flag the rescheduling IPI as 'raw', making sure such interrupt
    skips both tick management and irqtime accounting.

    Signed-off-by: Marc Zyngier <maz@kernel.org>
    ---
    arch/arm/Kconfig | 1 +
    arch/arm/kernel/smp.c | 4 ++++
    2 files changed, 5 insertions(+)

    diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
    index fe2f17eb2b50..a5e3e9963ba4 100644
    --- a/arch/arm/Kconfig
    +++ b/arch/arm/Kconfig
    @@ -50,6 +50,7 @@ config ARM
    select GENERIC_ATOMIC64 if CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI
    select GENERIC_CLOCKEVENTS_BROADCAST if SMP
    select GENERIC_IRQ_IPI if SMP
    + select ARCH_WANTS_IRQ_RAW if GENERIC_IRQ_IPI
    select GENERIC_CPU_AUTOPROBE
    select GENERIC_EARLY_IOREMAP
    select GENERIC_IDLE_POLL_SETUP
    diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
    index 48099c6e1e4a..0e09c8320caf 100644
    --- a/arch/arm/kernel/smp.c
    +++ b/arch/arm/kernel/smp.c
    @@ -738,6 +738,10 @@ void __init set_smp_ipi_range(int ipi_base, int n)

    ipi_desc[i] = irq_to_desc(ipi_base + i);
    irq_set_status_flags(ipi_base + i, IRQ_HIDDEN);
    +
    + /* The recheduling IPI is special... */
    + if (i == IPI_RESCHEDULE)
    + __irq_modify_status(ipi_base + i, 0, IRQ_RAW, ~0);
    }

    ipi_irq_base = ipi_base;
    --
    2.28.0
    \
     
     \ /
      Last update: 2020-11-24 15:17    [W:3.522 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site