* [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
@ 2018-08-23 6:36 Mahesh J Salgaonkar
2018-08-23 6:44 ` Michael Ellerman
2018-08-23 7:02 ` Nicholas Piggin
0 siblings, 2 replies; 7+ messages in thread
From: Mahesh J Salgaonkar @ 2018-08-23 6:36 UTC (permalink / raw)
To: linuxppc-dev, Michael Ellerman
Cc: Nicholas Piggin, Nicholas Piggin, Aneesh Kumar K.V,
Nicholas Piggin
From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
during MCE recovery path.), the SLB error recovery is broken. The new
change now does not add index value to RB[52-63] that selects the SLB
entry while rebolting, instead it assumes that the shadow save area
already have index embeded correctly in esid field. While all valid bolted
save areas do contain index value set correctly, there is a case where
3rd (KSTACK_INDEX) entry for kernel stack does not embed index for NULL
esid entry. This patch fixes that.
Without this patch the SLB rebolt code overwrites the 1st entry of kernel
linear mapping and causes SLB recovery to fail.
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
---
arch/powerpc/mm/slb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
index 0b095fa54049..9f574e59d178 100644
--- a/arch/powerpc/mm/slb.c
+++ b/arch/powerpc/mm/slb.c
@@ -70,7 +70,7 @@ static inline void slb_shadow_update(unsigned long ea, int ssize,
static inline void slb_shadow_clear(enum slb_index index)
{
- WRITE_ONCE(get_slb_shadow()->save_area[index].esid, 0);
+ WRITE_ONCE(get_slb_shadow()->save_area[index].esid, cpu_to_be64(index));
}
static inline void create_shadowed_slbe(unsigned long ea, int ssize,
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
2018-08-23 6:36 [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path Mahesh J Salgaonkar
@ 2018-08-23 6:44 ` Michael Ellerman
2018-08-23 8:01 ` Mahesh Jagannath Salgaonkar
2018-08-23 7:02 ` Nicholas Piggin
1 sibling, 1 reply; 7+ messages in thread
From: Michael Ellerman @ 2018-08-23 6:44 UTC (permalink / raw)
To: Mahesh J Salgaonkar, linuxppc-dev
Cc: Nicholas Piggin, Nicholas Piggin, Aneesh Kumar K.V,
Nicholas Piggin
Mahesh J Salgaonkar <mahesh@linux.vnet.ibm.com> writes:
> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>
> With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
> during MCE recovery path.),
That commit description is wrong, I'll fix it up.
cheers
> the SLB error recovery is broken. The new
> change now does not add index value to RB[52-63] that selects the SLB
> entry while rebolting, instead it assumes that the shadow save area
> already have index embeded correctly in esid field. While all valid bolted
> save areas do contain index value set correctly, there is a case where
> 3rd (KSTACK_INDEX) entry for kernel stack does not embed index for NULL
> esid entry. This patch fixes that.
>
> Without this patch the SLB rebolt code overwrites the 1st entry of kernel
> linear mapping and causes SLB recovery to fail.
>
> Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> arch/powerpc/mm/slb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
> index 0b095fa54049..9f574e59d178 100644
> --- a/arch/powerpc/mm/slb.c
> +++ b/arch/powerpc/mm/slb.c
> @@ -70,7 +70,7 @@ static inline void slb_shadow_update(unsigned long ea, int ssize,
>
> static inline void slb_shadow_clear(enum slb_index index)
> {
> - WRITE_ONCE(get_slb_shadow()->save_area[index].esid, 0);
> + WRITE_ONCE(get_slb_shadow()->save_area[index].esid, cpu_to_be64(index));
> }
>
> static inline void create_shadowed_slbe(unsigned long ea, int ssize,
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
2018-08-23 6:36 [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path Mahesh J Salgaonkar
2018-08-23 6:44 ` Michael Ellerman
@ 2018-08-23 7:02 ` Nicholas Piggin
2018-08-23 11:59 ` Michael Ellerman
1 sibling, 1 reply; 7+ messages in thread
From: Nicholas Piggin @ 2018-08-23 7:02 UTC (permalink / raw)
To: Mahesh J Salgaonkar; +Cc: linuxppc-dev, Michael Ellerman, Aneesh Kumar K.V
On Thu, 23 Aug 2018 12:06:53 +0530
Mahesh J Salgaonkar <mahesh@linux.vnet.ibm.com> wrote:
> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>
> With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
> during MCE recovery path.), the SLB error recovery is broken. The new
> change now does not add index value to RB[52-63] that selects the SLB
> entry while rebolting, instead it assumes that the shadow save area
> already have index embeded correctly in esid field. While all valid bolted
> save areas do contain index value set correctly, there is a case where
> 3rd (KSTACK_INDEX) entry for kernel stack does not embed index for NULL
> esid entry. This patch fixes that.
>
> Without this patch the SLB rebolt code overwrites the 1st entry of kernel
> linear mapping and causes SLB recovery to fail.
>
> Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Changelog just needs a little more work, maybe this?
The commit e7e81847478 ("powerpc/64s: move machine check SLB flushing
to mm/slb.c") introduced a bug in reloading bolted SLB entries. Unused
bolted entries are stored with .esid=0 in the slb_shadow area, and
that value is now used directly as the RB input to slbmte, which means
the RB[52:63] index field is set to 0, which causes SLB entry 0 to be
cleared.
Fix this by storing the index bits in the unused bolted entries, which
directs the slbmte to the right place.
The SLB shadow area is also used by the hypervisor, but PAPR is okay
with that, from LoPAPR v1.1, 14.11.1.3 SLB Shadow Buffer:
Note: SLB is filled sequentially starting at index 0
from the shadow buffer ignoring the contents of
RB field bits 52-63
Fixes: e7e81847478 ("powerpc/64s: move machine check SLB flushing to
mm/slb.c")
Thanks,
Nick
> ---
> arch/powerpc/mm/slb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
> index 0b095fa54049..9f574e59d178 100644
> --- a/arch/powerpc/mm/slb.c
> +++ b/arch/powerpc/mm/slb.c
> @@ -70,7 +70,7 @@ static inline void slb_shadow_update(unsigned long ea, int ssize,
>
> static inline void slb_shadow_clear(enum slb_index index)
> {
> - WRITE_ONCE(get_slb_shadow()->save_area[index].esid, 0);
> + WRITE_ONCE(get_slb_shadow()->save_area[index].esid, cpu_to_be64(index));
> }
>
> static inline void create_shadowed_slbe(unsigned long ea, int ssize,
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
2018-08-23 6:44 ` Michael Ellerman
@ 2018-08-23 8:01 ` Mahesh Jagannath Salgaonkar
2018-08-23 12:05 ` Michael Ellerman
0 siblings, 1 reply; 7+ messages in thread
From: Mahesh Jagannath Salgaonkar @ 2018-08-23 8:01 UTC (permalink / raw)
To: Michael Ellerman, linuxppc-dev; +Cc: Nicholas Piggin, Aneesh Kumar K.V
On 08/23/2018 12:14 PM, Michael Ellerman wrote:
> Mahesh J Salgaonkar <mahesh@linux.vnet.ibm.com> writes:
>
>> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>>
>> With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
>> during MCE recovery path.),
>
> That commit description is wrong, I'll fix it up.
Ouch.. My bad.. :-(
>
> cheers
>
>> the SLB error recovery is broken. The new
>> change now does not add index value to RB[52-63] that selects the SLB
>> entry while rebolting, instead it assumes that the shadow save area
>> already have index embeded correctly in esid field. While all valid bolted
>> save areas do contain index value set correctly, there is a case where
>> 3rd (KSTACK_INDEX) entry for kernel stack does not embed index for NULL
>> esid entry. This patch fixes that.
>>
>> Without this patch the SLB rebolt code overwrites the 1st entry of kernel
>> linear mapping and causes SLB recovery to fail.
>>
>> Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>> Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
>> ---
>> arch/powerpc/mm/slb.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
>> index 0b095fa54049..9f574e59d178 100644
>> --- a/arch/powerpc/mm/slb.c
>> +++ b/arch/powerpc/mm/slb.c
>> @@ -70,7 +70,7 @@ static inline void slb_shadow_update(unsigned long ea, int ssize,
>>
>> static inline void slb_shadow_clear(enum slb_index index)
>> {
>> - WRITE_ONCE(get_slb_shadow()->save_area[index].esid, 0);
>> + WRITE_ONCE(get_slb_shadow()->save_area[index].esid, cpu_to_be64(index));
>> }
>>
>> static inline void create_shadowed_slbe(unsigned long ea, int ssize,
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
2018-08-23 7:02 ` Nicholas Piggin
@ 2018-08-23 11:59 ` Michael Ellerman
0 siblings, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2018-08-23 11:59 UTC (permalink / raw)
To: Nicholas Piggin, Mahesh J Salgaonkar; +Cc: linuxppc-dev, Aneesh Kumar K.V
Nicholas Piggin <npiggin@gmail.com> writes:
> On Thu, 23 Aug 2018 12:06:53 +0530
> Mahesh J Salgaonkar <mahesh@linux.vnet.ibm.com> wrote:
>> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>>
>> With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
>> during MCE recovery path.), the SLB error recovery is broken. The new
>> change now does not add index value to RB[52-63] that selects the SLB
>> entry while rebolting, instead it assumes that the shadow save area
>> already have index embeded correctly in esid field. While all valid bolted
>> save areas do contain index value set correctly, there is a case where
>> 3rd (KSTACK_INDEX) entry for kernel stack does not embed index for NULL
>> esid entry. This patch fixes that.
>>
>> Without this patch the SLB rebolt code overwrites the 1st entry of kernel
>> linear mapping and causes SLB recovery to fail.
>>
>> Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>> Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
>
> Changelog just needs a little more work, maybe this?
>
>
> The commit e7e81847478 ("powerpc/64s: move machine check SLB flushing
> to mm/slb.c") introduced a bug in reloading bolted SLB entries. Unused
> bolted entries are stored with .esid=0 in the slb_shadow area, and
> that value is now used directly as the RB input to slbmte, which means
> the RB[52:63] index field is set to 0, which causes SLB entry 0 to be
> cleared.
>
> Fix this by storing the index bits in the unused bolted entries, which
> directs the slbmte to the right place.
>
> The SLB shadow area is also used by the hypervisor, but PAPR is okay
> with that, from LoPAPR v1.1, 14.11.1.3 SLB Shadow Buffer:
>
> Note: SLB is filled sequentially starting at index 0
> from the shadow buffer ignoring the contents of
> RB field bits 52-63
>
> Fixes: e7e81847478 ("powerpc/64s: move machine check SLB flushing to
> mm/slb.c")
Yep I'll take that, thanks.
cheers
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
2018-08-23 8:01 ` Mahesh Jagannath Salgaonkar
@ 2018-08-23 12:05 ` Michael Ellerman
2018-08-23 14:05 ` Mahesh Jagannath Salgaonkar
0 siblings, 1 reply; 7+ messages in thread
From: Michael Ellerman @ 2018-08-23 12:05 UTC (permalink / raw)
To: Mahesh Jagannath Salgaonkar, linuxppc-dev
Cc: Nicholas Piggin, Aneesh Kumar K.V
Mahesh Jagannath Salgaonkar <mahesh@linux.vnet.ibm.com> writes:
> On 08/23/2018 12:14 PM, Michael Ellerman wrote:
>> Mahesh J Salgaonkar <mahesh@linux.vnet.ibm.com> writes:
>>
>>> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>>>
>>> With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
>>> during MCE recovery path.),
>>
>> That commit description is wrong, I'll fix it up.
>
> Ouch.. My bad.. :-(
To make it easier to get right, if you don't already, add these to your
~/.gitconfig:
[pretty]
fixes = Fixes: %h (\"%s\")
quote = %h (\"%s\")
And then you can do:
$ git log -1 --pretty=quote e7e81847478
e7e81847478b ("powerpc/64s: move machine check SLB flushing to mm/slb.c")
$ git log -1 --pretty=fixes e7e81847478
Fixes: e7e81847478b ("powerpc/64s: move machine check SLB flushing to mm/slb.c")
I then have a shell alias that pipes that into xclip, so I can just
paste it directly into the change log.
cheers
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
2018-08-23 12:05 ` Michael Ellerman
@ 2018-08-23 14:05 ` Mahesh Jagannath Salgaonkar
0 siblings, 0 replies; 7+ messages in thread
From: Mahesh Jagannath Salgaonkar @ 2018-08-23 14:05 UTC (permalink / raw)
To: Michael Ellerman, linuxppc-dev; +Cc: Nicholas Piggin, Aneesh Kumar K.V
On 08/23/2018 05:35 PM, Michael Ellerman wrote:
> Mahesh Jagannath Salgaonkar <mahesh@linux.vnet.ibm.com> writes:
>
>> On 08/23/2018 12:14 PM, Michael Ellerman wrote:
>>> Mahesh J Salgaonkar <mahesh@linux.vnet.ibm.com> writes:
>>>
>>>> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>>>>
>>>> With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
>>>> during MCE recovery path.),
>>>
>>> That commit description is wrong, I'll fix it up.
>>
>> Ouch.. My bad.. :-(
>
> To make it easier to get right, if you don't already, add these to your
> ~/.gitconfig:
>
> [pretty]
> fixes = Fixes: %h (\"%s\")
> quote = %h (\"%s\")
>
>
> And then you can do:
>
> $ git log -1 --pretty=quote e7e81847478
> e7e81847478b ("powerpc/64s: move machine check SLB flushing to mm/slb.c")
>
> $ git log -1 --pretty=fixes e7e81847478
> Fixes: e7e81847478b ("powerpc/64s: move machine check SLB flushing to mm/slb.c")
Thank you very much :-) This is going to be very handy...
-Mahesh.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-08-23 14:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-23 6:36 [RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path Mahesh J Salgaonkar
2018-08-23 6:44 ` Michael Ellerman
2018-08-23 8:01 ` Mahesh Jagannath Salgaonkar
2018-08-23 12:05 ` Michael Ellerman
2018-08-23 14:05 ` Mahesh Jagannath Salgaonkar
2018-08-23 7:02 ` Nicholas Piggin
2018-08-23 11:59 ` Michael Ellerman
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).