Thread (9 messages) 9 messages, 3 authors, 2017-09-06

[PATCH v2 1/3] arm: npcm: add basic support for Nuvoton BMCs

From: Brendan Higgins <hidden>
Date: 2017-09-06 00:42:52
Also in: linux-devicetree, lkml, openbmc

With the exception of one comment, which I have responded to
below, I have addressed your comments in my new version of
this patch: https://patchwork.kernel.org/patch/9914153/

On Mon, Sep 4, 2017 at 7:47 PM, Florian Fainelli [off-list ref] wrote:
...
quoted
+
+ENTRY(v7_invalidate_l1_npcmX50)
+     mov     r0, #0
+     mcr     p15, 0, r0, c7, c5, 0 /* invalidate I cache */
+     mcr     p15, 2, r0, c0, c0, 0
+     mrc     p15, 1, r0, c0, c0, 0
+
+     ldr     r1, =0x7fff
+     and     r2, r1, r0, lsr #13
+
+     ldr     r1, =0x3ff
+
+     and     r3, r1, r0, lsr #3 /* NumWays - 1 */
+     add     r2, r2, #1         /* NumSets */
+
+     and     r0, r0, #0x7
+     add     r0, r0, #4 /* SetShift */
+
+     clz     r1, r3     /* WayShift */
+     add     r4, r3, #1 /* NumWays */
+1:   sub     r2, r2, #1 /* NumSets-- */
+     mov     r3, r4     /* Temp = NumWays */
+2:   subs    r3, r3, #1 /* Temp-- */
+     mov     r5, r3, lsl r1
+     mov     r6, r2, lsl r0
+     /* Reg = (Temp << WayShift) | (NumSets << SetShift) */
+     orr     r5, r5, r6
+     mcr     p15, 0, r5, c7, c6, 2
+     bgt     2b
+     cmp     r2, #0
+     bgt     1b
+     dsb
+     isb
+     mov     pc, lr
+ENDPROC(v7_invalidate_l1_npcmX50)
This looks a lot, if not nearly the same thing as v7_invalidate_l1 which
is already called by secondary_startup, can you see if you can re-use it
directly?
quoted
+
+/*
+ * MSM specific entry point for secondary CPUs.  This provides
+ * a "holding pen" into which all secondary cores are held until we're
+ * ready for them to initialise.
+ */
Assuming this was copied from a Qualcomm MSM routine, you may want to
fix the comment, typo on "initialis.
quoted
+ENTRY(npcm7xx_secondary_startup)
+     msr     CPSR_c, #(SVC_MODE)
Is there a BootROM or something that would not make the secondary cores
start in supervisor mode?
Unfortunately, yes; however, I was able to cut all of the other code out of
npcm7xx_secondary_startup, so now it just puts the core in SVC mode and
relies on secondary_startup to do all of the L1 cache invalidation.
quoted
+
+     bl      v7_invalidate_l1_npcmX50
+     /* disable vector table remapping */
+     mrc     p15, 0,r0, c1, c0, 0
+     and     r0, #0xffffdfff
+     mcr     p15, 0,r0, c1, c0, 0
+
+#ifdef CONFIG_CACHE_L2X0
+     /* Enable L1 & L2 prefetch + Zero line */
+     mrc     p15, 0, r0, c1, c0, 1
+     orr     r0, r0, #(7 << 1)
+     mcr     p15, 0, r0, c1, c0, 1
+#endif /* CONFIG_CACHE_L2X0 */
+
+     mrc     p15, 0, r0, c0, c0, 5
+     and     r0, r0, #15
+     adr     r4, 1f
+     ldmia   r4, {r5, r6}
+     sub     r4, r4, r5
+     add     r6, r6, r4
+     str r3,[r2]
+
+pen: ldr     r7, [r6]
+     cmp     r7, r0
+     bne     pen
+
...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help