• Kevin Hilman's avatar
    ARM: OMAP2+: omap_device: use late_initcall_sync · e7e17c53
    Kevin Hilman authored
    If DEBUG_LL and earlyprintk are enabled, and omap-serial.c is compiled
    as a module, the kernel boot hangs early as the clocks for serial port
    are cut while earlyprintk still uses the port.
    
    The problem is a race between the late_initcall for omap_device (which
    idles devices that have no drivers) and the late_initcall in
    kernel/printk.c which turns off the earlyconsole.   Any printks
    that happen between this omap_device late initcall and the earlyconsole
    late initcall will crash when accessing the UART.
    
    The fix is to ensure the omap_device initcall happens after the
    earlyconsole initcall.
    Reported-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarKevin Hilman <khilman@linaro.org>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    e7e17c53
omap_device.c 23 KB