From: Mahesh Jagannath Salgaonkar <mahesh@linux.vnet.ibm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
linuxppc-dev <linuxppc-dev@ozlabs.org>,
Michael Ellerman <mpe@ellerman.id.au>
Cc: "Gautham R. Shenoy" <ego@linux.vnet.ibm.com>,
Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH] powernv: Load correct TOC pointer while waking up from winkle.
Date: Sat, 6 Aug 2016 08:30:06 +0530 [thread overview]
Message-ID: <604967a6-9a17-dae1-b6b3-2aa02f32b3b4@linux.vnet.ibm.com> (raw)
In-Reply-To: <1470436733.12584.164.camel@kernel.crashing.org>
On 08/06/2016 04:08 AM, Benjamin Herrenschmidt wrote:
> On Fri, 2016-08-05 at 19:13 +0530, Mahesh J Salgaonkar wrote:
>> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>>
>> The function pnv_restore_hyp_resource() loads the TOC into r2 from
>> the invalid PACA pointer before fixing r13 value. This do not affect
>> POWER ISA 3.0 but it does have an impact on POWER ISA 2.07 or less
>> leading CPU to get stuck forever.
>
> When was this broken ? Should this get backported to stable ?
This is broken with recent Power9 cpu idle changes (commit bcef83a00)
that gone in Linus' master after V4.7. We are fine with v4.7
-Mahesh.
>
>> login: [ 471.830433] Processor 120 is stuck.
>>
>>
>> This can be easily reproducible using following steps:
>> - Turn off SMT
>> $ ppc64_cpu --smt=off
>> - offline/online any online cpu (Thread 0 of any core which is
>> online)
>> $ echo 0 > /sys/devices/system/cpu/cpu<num>/online
>> $ echo 1 > /sys/devices/system/cpu/cpu<num>/online
>>
>> For POWER ISA 2.07 or less, the last bit of HSPRG0 is set indicating
>> that thread is waking up from winkle. Hence, the last bit of
>> HSPRG0(r13)
>> needs to be clear before accessing it as PACA to avoid loading
>> invalid
>> values from invalid PACA pointer.
>>
>> Fix this by loading TOC after r13 register is corrected.
>>
>> Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>> ---
>> arch/powerpc/kernel/idle_book3s.S | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/kernel/idle_book3s.S
>> b/arch/powerpc/kernel/idle_book3s.S
>> index 8a56a51..45784ec 100644
>> --- a/arch/powerpc/kernel/idle_book3s.S
>> +++ b/arch/powerpc/kernel/idle_book3s.S
>> @@ -363,8 +363,8 @@ _GLOBAL(power9_idle_stop)
>> * cr3 - set to gt if waking up with partial/complete hypervisor
>> state loss
>> */
>> _GLOBAL(pnv_restore_hyp_resource)
>> - ld r2,PACATOC(r13);
>> BEGIN_FTR_SECTION
>> + ld r2,PACATOC(r13);
>> /*
>> * POWER ISA 3. Use PSSCR to determine if we
>> * are waking up from deep idle state
>> @@ -395,6 +395,9 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
>> */
>> clrldi r5,r13,63
>> clrrdi r13,r13,1
>> +
>> + /* Now that we are sure r13 is corrected, load TOC */
>> + ld r2,PACATOC(r13);
>> cmpwi cr4,r5,1
>> mtspr SPRN_HSPRG0,r13
>>
>
next prev parent reply other threads:[~2016-08-06 3:00 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-05 13:43 [PATCH] powernv: Load correct TOC pointer while waking up from winkle Mahesh J Salgaonkar
2016-08-05 22:38 ` Benjamin Herrenschmidt
2016-08-06 3:00 ` Mahesh Jagannath Salgaonkar [this message]
2016-08-08 7:00 ` Vaidyanathan Srinivasan
2016-08-08 6:39 ` Vaidyanathan Srinivasan
2016-08-09 11:26 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=604967a6-9a17-dae1-b6b3-2aa02f32b3b4@linux.vnet.ibm.com \
--to=mahesh@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=ego@linux.vnet.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).