Re: [PATCH 1/5] powerpc: Remove flush_instruction_cache for book3s/32

2020-08-13 Thread Christophe Leroy




Le 13/08/2020 à 14:14, Christoph Hellwig a écrit :

On Thu, Aug 13, 2020 at 01:13:08PM +0100, Christoph Hellwig wrote:

On Thu, Aug 13, 2020 at 10:12:00AM +, Christophe Leroy wrote:

-#ifndef CONFIG_PPC_8xx
+#if !defined(CONFIG_PPC_8xx) && !defined(CONFIG_PPC_BOOK3S_32)
  _GLOBAL(flush_instruction_cache)
  #if defined(CONFIG_4xx)
lis r3, KERNELBASE@h
@@ -290,18 +289,11 @@ _GLOBAL(flush_instruction_cache)
mfspr   r3,SPRN_L1CSR1
ori r3,r3,L1CSR1_ICFI|L1CSR1_ICLFR
mtspr   SPRN_L1CSR1,r3
-#elif defined(CONFIG_PPC_BOOK3S_601)
-   blr /* for 601, do nothing */
-#else
-   /* 603/604 processor - use invalidate-all bit in HID0 */
-   mfspr   r3,SPRN_HID0
-   ori r3,r3,HID0_ICFI
-   mtspr   SPRN_HID0,r3
  #endif /* CONFIG_4xx */
isync
blr
  EXPORT_SYMBOL(flush_instruction_cache)
-#endif /* CONFIG_PPC_8xx */
+#endif /* CONFIG_PPC_8xx || CONFIG_PPC_BOOK3S_32 */


What about untangling this into entirely separate versions instead
of the ifdef mess?  Also the export does not seem to be needed at all.


Ok, I see that you do that later, sorry.



In v2, I drop the untangling patch, because the series completely 
dismantles flush_instruction_cache() so there is no need for an 
ephemeral untanggled version of it.


Christophe


Re: [PATCH 1/5] powerpc: Remove flush_instruction_cache for book3s/32

2020-08-13 Thread Christoph Hellwig
On Thu, Aug 13, 2020 at 01:13:08PM +0100, Christoph Hellwig wrote:
> On Thu, Aug 13, 2020 at 10:12:00AM +, Christophe Leroy wrote:
> > -#ifndef CONFIG_PPC_8xx
> > +#if !defined(CONFIG_PPC_8xx) && !defined(CONFIG_PPC_BOOK3S_32)
> >  _GLOBAL(flush_instruction_cache)
> >  #if defined(CONFIG_4xx)
> > lis r3, KERNELBASE@h
> > @@ -290,18 +289,11 @@ _GLOBAL(flush_instruction_cache)
> > mfspr   r3,SPRN_L1CSR1
> > ori r3,r3,L1CSR1_ICFI|L1CSR1_ICLFR
> > mtspr   SPRN_L1CSR1,r3
> > -#elif defined(CONFIG_PPC_BOOK3S_601)
> > -   blr /* for 601, do nothing */
> > -#else
> > -   /* 603/604 processor - use invalidate-all bit in HID0 */
> > -   mfspr   r3,SPRN_HID0
> > -   ori r3,r3,HID0_ICFI
> > -   mtspr   SPRN_HID0,r3
> >  #endif /* CONFIG_4xx */
> > isync
> > blr
> >  EXPORT_SYMBOL(flush_instruction_cache)
> > -#endif /* CONFIG_PPC_8xx */
> > +#endif /* CONFIG_PPC_8xx || CONFIG_PPC_BOOK3S_32 */
> 
> What about untangling this into entirely separate versions instead
> of the ifdef mess?  Also the export does not seem to be needed at all.

Ok, I see that you do that later, sorry.


Re: [PATCH 1/5] powerpc: Remove flush_instruction_cache for book3s/32

2020-08-13 Thread Christoph Hellwig
On Thu, Aug 13, 2020 at 10:12:00AM +, Christophe Leroy wrote:
> -#ifndef CONFIG_PPC_8xx
> +#if !defined(CONFIG_PPC_8xx) && !defined(CONFIG_PPC_BOOK3S_32)
>  _GLOBAL(flush_instruction_cache)
>  #if defined(CONFIG_4xx)
>   lis r3, KERNELBASE@h
> @@ -290,18 +289,11 @@ _GLOBAL(flush_instruction_cache)
>   mfspr   r3,SPRN_L1CSR1
>   ori r3,r3,L1CSR1_ICFI|L1CSR1_ICLFR
>   mtspr   SPRN_L1CSR1,r3
> -#elif defined(CONFIG_PPC_BOOK3S_601)
> - blr /* for 601, do nothing */
> -#else
> - /* 603/604 processor - use invalidate-all bit in HID0 */
> - mfspr   r3,SPRN_HID0
> - ori r3,r3,HID0_ICFI
> - mtspr   SPRN_HID0,r3
>  #endif /* CONFIG_4xx */
>   isync
>   blr
>  EXPORT_SYMBOL(flush_instruction_cache)
> -#endif /* CONFIG_PPC_8xx */
> +#endif /* CONFIG_PPC_8xx || CONFIG_PPC_BOOK3S_32 */

What about untangling this into entirely separate versions instead
of the ifdef mess?  Also the export does not seem to be needed at all.


[PATCH 1/5] powerpc: Remove flush_instruction_cache for book3s/32

2020-08-13 Thread Christophe Leroy
The only callers of flush_instruction_cache() are:

arch/powerpc/kernel/swsusp_booke.S: bl flush_instruction_cache
arch/powerpc/mm/nohash/40x.c:   flush_instruction_cache();
arch/powerpc/mm/nohash/44x.c:   flush_instruction_cache();
arch/powerpc/mm/nohash/fsl_booke.c: flush_instruction_cache();
arch/powerpc/platforms/44x/machine_check.c: 
flush_instruction_cache();
arch/powerpc/platforms/44x/machine_check.c: 
flush_instruction_cache();

This function is not used by book3s/32, drop it.

Signed-off-by: Christophe Leroy 
---
 arch/powerpc/kernel/misc_32.S | 12 ++--
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index b24f866fef81..bd870743c06f 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -271,9 +271,8 @@ _ASM_NOKPROBE_SYMBOL(real_writeb)
 
 /*
  * Flush instruction cache.
- * This is a no-op on the 601.
  */
-#ifndef CONFIG_PPC_8xx
+#if !defined(CONFIG_PPC_8xx) && !defined(CONFIG_PPC_BOOK3S_32)
 _GLOBAL(flush_instruction_cache)
 #if defined(CONFIG_4xx)
lis r3, KERNELBASE@h
@@ -290,18 +289,11 @@ _GLOBAL(flush_instruction_cache)
mfspr   r3,SPRN_L1CSR1
ori r3,r3,L1CSR1_ICFI|L1CSR1_ICLFR
mtspr   SPRN_L1CSR1,r3
-#elif defined(CONFIG_PPC_BOOK3S_601)
-   blr /* for 601, do nothing */
-#else
-   /* 603/604 processor - use invalidate-all bit in HID0 */
-   mfspr   r3,SPRN_HID0
-   ori r3,r3,HID0_ICFI
-   mtspr   SPRN_HID0,r3
 #endif /* CONFIG_4xx */
isync
blr
 EXPORT_SYMBOL(flush_instruction_cache)
-#endif /* CONFIG_PPC_8xx */
+#endif /* CONFIG_PPC_8xx || CONFIG_PPC_BOOK3S_32 */
 
 /*
  * Copy a whole page.  We use the dcbz instruction on the destination
-- 
2.25.0