diff options
author | Alastair D'Silva <alastair@d-silva.org> | 2019-11-04 13:32:53 +1100 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2020-02-11 20:03:34 +0000 |
commit | 0a823bbf75f9e0327df3d89877e917bd38fafa64 (patch) | |
tree | 317b563a6129fadce2a6d400d4fcc2d904271e6b /arch/powerpc | |
parent | b2a8a434fd5b05e3b35514f935bf5944c6362b80 (diff) | |
download | linux-stable-0a823bbf75f9e0327df3d89877e917bd38fafa64.tar.gz linux-stable-0a823bbf75f9e0327df3d89877e917bd38fafa64.tar.bz2 linux-stable-0a823bbf75f9e0327df3d89877e917bd38fafa64.zip |
powerpc: Allow flush_icache_range to work across ranges >4GB
commit 29430fae82073d39b1b881a3cd507416a56a363f upstream.
When calling flush_icache_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>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20191104023305.9581-2-alastair@au1.ibm.com
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/kernel/misc_64.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S index 2b57cd9c8d6a..c77551859d7b 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -84,7 +84,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE) subf r8,r6,r4 /* compute length */ add r8,r8,r5 /* ensure we get enough */ lwz r9,DCACHEL1LOGLINESIZE(r10) /* Get log-2 of cache line size */ - srw. r8,r8,r9 /* compute line count */ + srd. r8,r8,r9 /* compute line count */ beqlr /* nothing to do? */ mtctr r8 1: dcbst 0,r6 @@ -100,7 +100,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE) subf r8,r6,r4 /* compute length */ add r8,r8,r5 lwz r9,ICACHEL1LOGLINESIZE(r10) /* Get log-2 of Icache line size */ - srw. r8,r8,r9 /* compute line count */ + srd. r8,r8,r9 /* compute line count */ beqlr /* nothing to do? */ mtctr r8 2: icbi 0,r6 |