linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] powerpc: Allow flush_(inval_)dcache_range to work across ranges >4GB
@ 2019-08-15  4:55 Alastair D'Silva
  2019-08-15  7:19 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Alastair D'Silva @ 2019-08-15  4:55 UTC (permalink / raw)
  To: alastair, mpe
  Cc: stable, Benjamin Herrenschmidt, Paul Mackerras, Allison Randal,
	Thomas Gleixner, Greg Kroah-Hartman, linuxppc-dev, linux-kernel

From: Alastair D'Silva <alastair@d-silva.org>

Heads Up: This patch cannot be submitted to Linus's tree, as the affected
assembler functions have already been converted to C.

When calling flush_(inval_)dcache_range with a size >4GB, we were masking
off the upper 32 bits, so we would incorrectly flush a range smaller
than intended.

This patch replaces the 32 bit shifts with 64 bit ones, so that
the full size is accounted for.

Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
---
 arch/powerpc/kernel/misc_64.S | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index 1ad4089dd110..d4d096f80f4b 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -130,7 +130,7 @@ _GLOBAL_TOC(flush_dcache_range)
 	subf	r8,r6,r4		/* compute length */
 	add	r8,r8,r5		/* ensure we get enough */
 	lwz	r9,DCACHEL1LOGBLOCKSIZE(r10)	/* Get log-2 of dcache block size */
-	srw.	r8,r8,r9		/* compute line count */
+	srd.	r8,r8,r9		/* compute line count */
 	beqlr				/* nothing to do? */
 	mtctr	r8
 0:	dcbst	0,r6
@@ -148,7 +148,7 @@ _GLOBAL(flush_inval_dcache_range)
 	subf	r8,r6,r4		/* compute length */
 	add	r8,r8,r5		/* ensure we get enough */
 	lwz	r9,DCACHEL1LOGBLOCKSIZE(r10)/* Get log-2 of dcache block size */
-	srw.	r8,r8,r9		/* compute line count */
+	srd.	r8,r8,r9		/* compute line count */
 	beqlr				/* nothing to do? */
 	sync
 	isync
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] powerpc: Allow flush_(inval_)dcache_range to work across ranges >4GB
  2019-08-15  4:55 [PATCH] powerpc: Allow flush_(inval_)dcache_range to work across ranges >4GB Alastair D'Silva
@ 2019-08-15  7:19 ` Greg Kroah-Hartman
  2019-08-16  1:42   ` Michael Ellerman
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2019-08-15  7:19 UTC (permalink / raw)
  To: Alastair D'Silva
  Cc: alastair, mpe, stable, Benjamin Herrenschmidt, Paul Mackerras,
	Allison Randal, Thomas Gleixner, linuxppc-dev, linux-kernel

On Thu, Aug 15, 2019 at 02:55:42PM +1000, Alastair D'Silva wrote:
> From: Alastair D'Silva <alastair@d-silva.org>
> 
> Heads Up: This patch cannot be submitted to Linus's tree, as the affected
> assembler functions have already been converted to C.
> 
> When calling flush_(inval_)dcache_range with a size >4GB, we were masking
> off the upper 32 bits, so we would incorrectly flush a range smaller
> than intended.
> 
> This patch replaces the 32 bit shifts with 64 bit ones, so that
> the full size is accounted for.
> 
> Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
> ---
>  arch/powerpc/kernel/misc_64.S | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read:
    https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.

</formletter>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] powerpc: Allow flush_(inval_)dcache_range to work across ranges >4GB
  2019-08-15  7:19 ` Greg Kroah-Hartman
@ 2019-08-16  1:42   ` Michael Ellerman
  2019-08-16  7:14     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Ellerman @ 2019-08-16  1:42 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Alastair D'Silva
  Cc: alastair, stable, Benjamin Herrenschmidt, Paul Mackerras,
	Allison Randal, Thomas Gleixner, linuxppc-dev, linux-kernel

Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes:
> On Thu, Aug 15, 2019 at 02:55:42PM +1000, Alastair D'Silva wrote:
>> From: Alastair D'Silva <alastair@d-silva.org>
>> 
>> Heads Up: This patch cannot be submitted to Linus's tree, as the affected
>> assembler functions have already been converted to C.

That was done in upstream commit:

22e9c88d486a ("powerpc/64: reuse PPC32 static inline flush_dcache_range()")

Which is a larger change that we don't want to backport. This patch is a
minimal fix for stable trees.


>> When calling flush_(inval_)dcache_range with a size >4GB, we were masking
>> off the upper 32 bits, so we would incorrectly flush a range smaller
>> than intended.
>> 
>> This patch replaces the 32 bit shifts with 64 bit ones, so that
>> the full size is accounted for.
>> 
>> Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
>> ---
>>  arch/powerpc/kernel/misc_64.S | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)

Acked-by: Michael Ellerman <mpe@ellerman.id.au>

> <formletter>
>
> This is not the correct way to submit patches for inclusion in the
> stable kernel tree.  Please read:
>     https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
> for how to do this properly.
>
> </formletter>

Hi Greg,

This is "option 3", submit the patch directly, and the patch "deviates
from the original upstream patch" because the upstream patch was a
wholesale conversion from asm to C.

This patch applies cleanly to v4.14 and v4.19.

The change log should have mentioned which upstream patch it is not a
backport of, is there anything else we should have done differently to
avoid the formletter bot :)

cheers

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] powerpc: Allow flush_(inval_)dcache_range to work across ranges >4GB
  2019-08-16  1:42   ` Michael Ellerman
@ 2019-08-16  7:14     ` Greg Kroah-Hartman
  2019-08-20 16:30       ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2019-08-16  7:14 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Alastair D'Silva, alastair, stable, Benjamin Herrenschmidt,
	Paul Mackerras, Allison Randal, Thomas Gleixner, linuxppc-dev,
	linux-kernel

On Fri, Aug 16, 2019 at 11:42:22AM +1000, Michael Ellerman wrote:
> Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes:
> > On Thu, Aug 15, 2019 at 02:55:42PM +1000, Alastair D'Silva wrote:
> >> From: Alastair D'Silva <alastair@d-silva.org>
> >> 
> >> Heads Up: This patch cannot be submitted to Linus's tree, as the affected
> >> assembler functions have already been converted to C.
> 
> That was done in upstream commit:
> 
> 22e9c88d486a ("powerpc/64: reuse PPC32 static inline flush_dcache_range()")
> 
> Which is a larger change that we don't want to backport. This patch is a
> minimal fix for stable trees.
> 
> 
> >> When calling flush_(inval_)dcache_range with a size >4GB, we were masking
> >> off the upper 32 bits, so we would incorrectly flush a range smaller
> >> than intended.
> >> 
> >> This patch replaces the 32 bit shifts with 64 bit ones, so that
> >> the full size is accounted for.
> >> 
> >> Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
> >> ---
> >>  arch/powerpc/kernel/misc_64.S | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> Acked-by: Michael Ellerman <mpe@ellerman.id.au>
> 
> > <formletter>
> >
> > This is not the correct way to submit patches for inclusion in the
> > stable kernel tree.  Please read:
> >     https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
> > for how to do this properly.
> >
> > </formletter>
> 
> Hi Greg,
> 
> This is "option 3", submit the patch directly, and the patch "deviates
> from the original upstream patch" because the upstream patch was a
> wholesale conversion from asm to C.
> 
> This patch applies cleanly to v4.14 and v4.19.
> 
> The change log should have mentioned which upstream patch it is not a
> backport of, is there anything else we should have done differently to
> avoid the formletter bot :)

That is exactly what you should have done.  It needs to be VERY explicit
as to why this is being submitted different from what upstream did, and
to what trees it needs to go to and who is going to be responsible for
when it breaks.  And it will break :)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] powerpc: Allow flush_(inval_)dcache_range to work across ranges >4GB
  2019-08-16  7:14     ` Greg Kroah-Hartman
@ 2019-08-20 16:30       ` Greg Kroah-Hartman
  0 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2019-08-20 16:30 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Alastair D'Silva, alastair, stable, Benjamin Herrenschmidt,
	Paul Mackerras, Allison Randal, Thomas Gleixner, linuxppc-dev,
	linux-kernel

On Fri, Aug 16, 2019 at 09:14:12AM +0200, Greg Kroah-Hartman wrote:
> On Fri, Aug 16, 2019 at 11:42:22AM +1000, Michael Ellerman wrote:
> > Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes:
> > > On Thu, Aug 15, 2019 at 02:55:42PM +1000, Alastair D'Silva wrote:
> > >> From: Alastair D'Silva <alastair@d-silva.org>
> > >> 
> > >> Heads Up: This patch cannot be submitted to Linus's tree, as the affected
> > >> assembler functions have already been converted to C.
> > 
> > That was done in upstream commit:
> > 
> > 22e9c88d486a ("powerpc/64: reuse PPC32 static inline flush_dcache_range()")
> > 
> > Which is a larger change that we don't want to backport. This patch is a
> > minimal fix for stable trees.
> > 
> > 
> > >> When calling flush_(inval_)dcache_range with a size >4GB, we were masking
> > >> off the upper 32 bits, so we would incorrectly flush a range smaller
> > >> than intended.
> > >> 
> > >> This patch replaces the 32 bit shifts with 64 bit ones, so that
> > >> the full size is accounted for.
> > >> 
> > >> Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
> > >> ---
> > >>  arch/powerpc/kernel/misc_64.S | 4 ++--
> > >>  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > Acked-by: Michael Ellerman <mpe@ellerman.id.au>
> > 
> > > <formletter>
> > >
> > > This is not the correct way to submit patches for inclusion in the
> > > stable kernel tree.  Please read:
> > >     https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
> > > for how to do this properly.
> > >
> > > </formletter>
> > 
> > Hi Greg,
> > 
> > This is "option 3", submit the patch directly, and the patch "deviates
> > from the original upstream patch" because the upstream patch was a
> > wholesale conversion from asm to C.
> > 
> > This patch applies cleanly to v4.14 and v4.19.
> > 
> > The change log should have mentioned which upstream patch it is not a
> > backport of, is there anything else we should have done differently to
> > avoid the formletter bot :)
> 
> That is exactly what you should have done.  It needs to be VERY explicit
> as to why this is being submitted different from what upstream did, and
> to what trees it needs to go to and who is going to be responsible for
> when it breaks.  And it will break :)

And it needs to be done before I can apply it, I've dropped this thread
from my queue now.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-08-20 16:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-15  4:55 [PATCH] powerpc: Allow flush_(inval_)dcache_range to work across ranges >4GB Alastair D'Silva
2019-08-15  7:19 ` Greg Kroah-Hartman
2019-08-16  1:42   ` Michael Ellerman
2019-08-16  7:14     ` Greg Kroah-Hartman
2019-08-20 16:30       ` Greg Kroah-Hartman

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).