• Tony Lindgren's avatar
    ARM: OMAP: Fix kernel panic with HSMMC when twl4030_gpio is a module · 97899e55
    Tony Lindgren authored
    On some omaps twl4030_gpio has a callback to try to initialize
    the MMC controller. If twl4030_gpio is compiled as a module,
    bad things can happen because the callback function starts
    calling functions that are supposed to be marked __init:
    
    Kernel panic - not syncing: Attempted to kill the idle task!
    twl4030_gpio twl4030_gpio: can't dispatch IRQs from modules
    gpiochip_add: registered GPIOs 192 to 209 on device: twl4030
    Unable to handle kernel paging request at virtual address b82a4c74
    ...
    
    Additionally if this does not fail, warnings are produced
    about trying to register the MMC multiple times.
    
    Fix this by removing __init from omap_mux_get_by_name,
    and add checks if omap2_hsmmc_init() is getting called more
    than once.
    
    Note that this will get fixed properly later on by splitting
    omap2_hsmmc_init into two functions.
    Reported-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    97899e55
hsmmc.c 14.1 KB