lkml.org 
[lkml]   [2023]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v3 03/51] cpuidle/poll: Ensure IRQ state is invariant
    cpuidle_state::enter() methods should be IRQ invariant.

    Additionally make sure to use raw_local_irq_*() methods since this
    cpuidle callback will be called with RCU already disabled.

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Tested-by: Ulf Hansson <ulf.hansson@linaro.org>
    ---
    drivers/cpuidle/poll_state.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/drivers/cpuidle/poll_state.c
    +++ b/drivers/cpuidle/poll_state.c
    @@ -17,7 +17,7 @@ static int __cpuidle poll_idle(struct cp

    dev->poll_time_limit = false;

    - local_irq_enable();
    + raw_local_irq_enable();
    if (!current_set_polling_and_test()) {
    unsigned int loop_count = 0;
    u64 limit;
    @@ -36,6 +36,8 @@ static int __cpuidle poll_idle(struct cp
    }
    }
    }
    + raw_local_irq_disable();
    +
    current_clr_polling();

    return index;

    \
     
     \ /
      Last update: 2023-03-26 23:38    [W:2.359 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site