• Rafael J. Wysocki's avatar
    cpuidle: menu: Fix menu_select() for CPUIDLE_DRIVER_STATE_START == 0 · 9c4b2867
    Rafael J. Wysocki authored
    Commit a9ceb78b (cpuidle,menu: use interactivity_req to disable
    polling) exposed a bug in menu_select() causing it to return -1
    on systems with CPUIDLE_DRIVER_STATE_START equal to zero, although
    it should have returned 0.  As a result, idle states are not entered
    by CPUs on those systems.
    
    Namely, on the systems in question data->last_state_idx is initially
    equal to -1 and the above commit modified the condition that would
    have caused it to be changed to 0 to be less likely to trigger which
    exposed the problem.  However, setting data->last_state_idx initially
    to -1 doesn't make sense at all and on the affected systems it should
    always be set to CPUIDLE_DRIVER_STATE_START (ie. 0) unconditionally,
    so make that happen.
    
    Fixes: a9ceb78b (cpuidle,menu: use interactivity_req to disable polling)
    Reported-and-tested-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    9c4b2867
menu.c 14.8 KB