[PATCH] cpuidle/powernv : Restore different PSSCR for idle and hotplug
mpe at ellerman.id.au
Thu Mar 1 12:37:02 AEDT 2018
Akshay Adiga <akshay.adiga at linux.vnet.ibm.com> writes:
> On Mon, Feb 26, 2018 at 03:47:12PM +1100, Stewart Smith wrote:
>> Akshay Adiga <akshay.adiga at linux.vnet.ibm.com> writes:
>> > commit 1e1601b38e6e ("powerpc/powernv/idle: Restore SPRs for deep idle
>> > states via stop API.") uses stop-api provided by the firmware to restore
>> > PSSCR. PSSCR restore is required for handling special wakeup. When special
>> > wakeup is completed, the core enters stop state based on restored PSSCR.
>> > Currently PSSCR is restored to deepest available stop state, causing
>> > a idle cpu to enter deeper stop state on a special wakeup, which causes
>> > the cpu to hang on wakeup.
>> > A "sensors" command which reads temperature (through DTS sensors) on idle
>> > cpu can trigger special wakeup.
>> > Failed Scenario :
>> > Request restore of PSSCR with RL = 11
>> > cpu enters idle state (stop5)
>> > user triggers "sensors" command
>> > Assert special wakeup on cpu
>> > Restores PSSCR with RL = 11 <---- Done by firmware
>> > Read DTS sensor
>> > Deassert special wakeup
>> > cpu enters idle state (stop11) <-- Instead of stop5
>> > Cpu hang is caused because cpu ended up in a deeper state than it requested
>> > This patch fixes instability caused by special wakeup when stop11 is
>> > enabled. Requests restore of PSSCR to deepest stop state used by cpuidle.
>> > Only when offlining cpu, request restore of PSSCR to deepest stop state.
>> > On onlining cpu, request restore of PSSCR to deepest stop state used by
>> > cpuidle.
>> > Fixes : 1e1601b38e6e ("powerpc/powernv/idle: Restore SPRs for deep idle
>> > states via stop API.")
>> This should CC stable ?
>> We'll need this to enable stop11 in firmware and not break things, right?
> Yes I will resend and CC it to stable.
That's not how patches get to stable.
You tag it with "Cc: stable at vger ...", you don't actually email it to
stable at vger.kernel.org.
More information about the Linuxppc-dev