Thread (6 messages) flat view 6 messages, 3 authors, 2015-09-14

Re: [PATCH v2] powerpc32: memcpy/memset: only use dcbz once cache is enabled

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2015-09-14 09:59:15
Also in: lkml

On Sat, 2015-09-12 at 11:57 +0200, christophe leroy wrote:
Le 11/09/2015 03:24, Michael Ellerman a écrit :
quoted
On Thu, 2015-09-10 at 17:05 -0500, Scott Wood wrote:
quoted
I don't think this duplication is what Michael meant by "the normal cpu
feature sections".  What else is going to use this very specific
infrastructure?
Yeah, sorry, I was hoping you could do it with the existing cpu feature
mechanism.

It looks like the timing doesn't work, ie. you need to patch this stuff in
machine_init(), which is later than the regular patching which gets done in
early_init().

This is one of the festering differences we have between the 32 and 64-bit
initialisation code, ie. on 64-bit we do the patching much later.
I've just thought about maybe another alternative.
Is there any issue with calling do_feature_fixups() twice for the same
features ?
Not that I can think of, but you never know.
If not, we could define a MMU_CACHE_NOW_ON dummy MMU feature, then
call again do_feature_fixups() in machine_init() to patch memcpy/memset 
stuff, something like:

In arch/powerpc/include/asm/mmu.h:
+#define MMU_CACHE_NOW_ON                ASM_CONST(0x00008000)

In arch/powerpc/kernel/setup_32.c: @machine_init()

         udbg_early_init();

+        spec = identify_cpu(0, mfspr(SPRN_PVR));
+        do_feature_fixups(spec->mmu_features | MMU_CACHE_NOW_ON,
+                          &__start___mmu_ftr_fixup,
+                          &__stop___mmu_ftr_fixup);

Did you try that? It would be cleaner, especially now that you have to do memset as well.

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help