On Wednesday 26 August 2015 10:38:59 Masahiro Yamada wrote: > > 2015-08-25 4:59 GMT+09:00 Arnd Bergmann <arnd@xxxxxxxx>: > > On Monday 24 August 2015 11:18:10 Masahiro Yamada wrote: > Nothing. > > This outer cache is not a variant of l2x0/pl310. > It was designed only for our SoCs from scratch. Ok, I see. > > Would it make sense to at least share the > > common entry point at l2x0_of_init() so you don't need to call it from > > the platform file? > > I do not think so. > > > l2x0_of_init() checks L2X0_AUX_CTRL register, > but the cache-uniphier does not have such register, > so the boot code crashes. > > > > BTW, what makes l2x0_of_init() so special? > > Only L2x0/L310 and variants can be initialized > directly from init_IRQ(). The only thing that is special about it is that almost everyone uses it because it is often licensed together with the Cortex-A cores from ARM. There are a few variants that are closely related (tauros3 and aurora, both from Marvell. All other outer_cache implementations (feroceon, xscale, tauros2) are for older Marvell (or Intel) cores that have since been replaced with Cortex-A cores in newer products. > Moreover, outer-cache init seems to be unrelated to > IRQ init. Agreed, this is also just a historic artifact, as we don't really have a place to put cache controller initialization, and the irq init callback was already there at the time when people added code to init their outer caches. It often does not matter much where you call it, but doing it early speeds up the boot time. It would be nice to unify the cache initialization a bit further, apparently only a few older platforms still call the l2x0 init manually and we can probably all convert them to the implicit configuration in one way or another. As we now have three kinds of cache controllers (l2x0, tauros2 and uniphier) that we need to support using DT, it would be nice for generalize that init sequence a bit more. A first step would be to add the tauros2 and uniphier outer cache init to the init_IRQ() function, and then have another patch that moves all the outercache initialization into a new place like arch/arm/mm/outercache.c so we don't clutter up irq.c with unrelated stuff. Russell probably also has some ideas on this topic, in doubt just do what he suggests. Arnd -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html