• Waiman Long's avatar
    intel_idle: Fix false positive RCU splats due to incorrect hardirqs state · d295ad34
    Waiman Long authored
    Commit 32d4fd57 ("cpuidle,intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE")
    uses raw_local_irq_enable/local_irq_disable() around call to
    __intel_idle() in intel_idle_irq().
    
    With interrupt enabled, timer tick interrupt can happen and a
    subsequently call to __do_softirq() may change the lockdep hardirqs state
    of a debug kernel back to 'on'. This will result in a mismatch between
    the cpu hardirqs state (off) and the lockdep hardirqs state (on) causing
    a number of false positive "WARNING: suspicious RCU usage" splats.
    
    Fix that by using local_irq_disable() to disable interrupt in
    intel_idle_irq().
    
    Fixes: 32d4fd57 ("cpuidle,intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE")
    Signed-off-by: default avatarWaiman Long <longman@redhat.com>
    Cc: 5.16+ <stable@vger.kernel.org> # 5.16+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    d295ad34
intel_idle.c 55 KB