On Tue, Jan 25, 2011 at 1:47 AM, Tony Lindgren <tony@xxxxxxxxxxx> wrote: > * Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> [110123 09:47]: >> On Sun, Jan 23, 2011 at 05:13:44PM +0000, Russell King - ARM Linux wrote: >> > Move non-mapping and non-irq initialization code out of .map_io and >> > .init_irq respectively into the new init_early hook. >> > >> > Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> >> > --- >> > I think I've updated this patch correctly for the new platforms merged >> > into mainline. >> >> Grr, this breaks on OMAP because some of this stuff wants to do ioremap() >> and therefore wants the kmem allocators initialized. That's rather >> annoying... > > So far tested on zoom3 only, but the following gets it booting > on top of your patch. > > Want to take this one into your series? > > Meanwhile, I'll add these both into our omap-testing branch > for some more testing. > > Regards, > > Tony > > > From: Tony Lindgren <tony@xxxxxxxxxxx> > Date: Mon, 24 Jan 2011 11:56:37 -0800 > Subject: [PATCH] omap2+: Fix omap_serial_early_init to work with init_early hook > > The new init_early hook happens at the end of setup_arch, > which is too early for kzalloc. However, there's no need > to call omap_serial_early_init that early, so fix this > by setting it up as a subsys_initcall. > > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> > > --- a/arch/arm/mach-omap2/io.c > +++ b/arch/arm/mach-omap2/io.c > @@ -400,8 +400,6 @@ void __init omap2_init_common_infrastructure(void) > void __init omap2_init_common_devices(struct omap_sdrc_params *sdrc_cs0, > struct omap_sdrc_params *sdrc_cs1) > { > - omap_serial_early_init(); > - > omap_hwmod_late_init(); > > if (cpu_is_omap24xx() || cpu_is_omap34xx()) { > --- a/arch/arm/mach-omap2/serial.c > +++ b/arch/arm/mach-omap2/serial.c > @@ -655,7 +655,7 @@ static void serial_out_override(struct uart_port *up, int offset, int value) > } > #endif > > -void __init omap_serial_early_init(void) > +static int __init omap_serial_early_init(void) > { > int i = 0; > > @@ -691,7 +691,10 @@ void __init omap_serial_early_init(void) > */ > uart->oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET; > } while (1); > + > + return 0; > } > +subsys_initcall(omap_serial_early_init); > > /** > * omap_serial_init_port() - initialize single serial port > --- a/arch/arm/plat-omap/include/plat/serial.h > +++ b/arch/arm/plat-omap/include/plat/serial.h > @@ -96,7 +96,6 @@ > > struct omap_board_data; > > -extern void __init omap_serial_early_init(void); > extern void omap_serial_init(void); > extern void omap_serial_init_port(struct omap_board_data *bdata); > extern int omap_uart_can_sleep(void); > -- Just FYI, I observed similar results on OMAP4 for these patches. For OMAP2420, OMAP2430 and OMAP3430 SDPs, you can add my boot Tested-by: Sourav Poddar<sourav.poddar@xxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html