lkml.org 
[lkml]   [2023]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: sched/core] cpuidle, intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE *again*
    The following commit has been merged into the sched/core branch of tip:

    Commit-ID: 6d9c7f51b1d9179bf7c3542267c656a934e8af23
    Gitweb: https://git.kernel.org/tip/6d9c7f51b1d9179bf7c3542267c656a934e8af23
    Author: Peter Zijlstra <peterz@infradead.org>
    AuthorDate: Thu, 12 Jan 2023 20:43:32 +01:00
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitterDate: Fri, 13 Jan 2023 11:48:15 +01:00

    cpuidle, intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE *again*

    So objtool found this bug:

    vmlinux.o: warning: objtool: intel_idle_irq+0x10c: call to trace_hardirqs_off() leaves .noinstr.text section

    As per commit 32d4fd5751ea ("cpuidle,intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE"):

    "must not have tracing in idle functions"

    Clearly people can't read and tinker along until splat dissapears.
    This straight up reverts commit d295ad34f236 ("intel_idle: Fix false
    positive RCU splats due to incorrect hardirqs state").

    It doesn't re-introduce the problem because preceding patches fixed it
    properly.

    Fixes: d295ad34f236 ("intel_idle: Fix false positive RCU splats due to incorrect hardirqs state")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Tested-by: Ulf Hansson <ulf.hansson@linaro.org>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Frederic Weisbecker <frederic@kernel.org>
    Link: https://lore.kernel.org/r/20230112195540.434302128@infradead.org
    ---
    drivers/idle/intel_idle.c | 8 +-------
    1 file changed, 1 insertion(+), 7 deletions(-)

    diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
    index cfeb24d..f060ac7 100644
    --- a/drivers/idle/intel_idle.c
    +++ b/drivers/idle/intel_idle.c
    @@ -168,13 +168,7 @@ static __cpuidle int intel_idle_irq(struct cpuidle_device *dev,

    raw_local_irq_enable();
    ret = __intel_idle(dev, drv, index);
    -
    - /*
    - * The lockdep hardirqs state may be changed to 'on' with timer
    - * tick interrupt followed by __do_softirq(). Use local_irq_disable()
    - * to keep the hardirqs state correct.
    - */
    - local_irq_disable();
    + raw_local_irq_disable();

    return ret;
    }
    \
     
     \ /
      Last update: 2023-03-26 23:39    [W:4.063 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site