Skip to content
  • Linus Walleij's avatar
    ARM: integrator: fix section mismatch problem · e1318391
    Linus Walleij authored
    
    
    This addresses a section mismatch problem in the IM-PD1
    driver in the Integrator/AP.
    
    The IM-PD1 contains a VIC interrupt controller and therefore
    the driver calls vic_init_cascaded() which is marked __init as
    irqchips are simply not hot-pluggable and specifically the VIC
    is assumed to initiate only on boot.
    
    However the module driver model of the Integrator LM bus
    assumes that logic tile drivers can be probed at runtime. This
    is not really the case for IM-PD1: these tiles are detected at
    boot and they cannot be plugged into a running system. Before
    this patch it is of course possible to modprobe them later.
    
    By first forcing the IM-PD1 to bool we make sure this driver
    gets compiled into the kernel, and we know it will be probed
    only at boot time when the tiles are detected, so we can tag
    its probe function __init_refok as we know it won't be called
    after boot now, and the section mismatch problem goes away.
    
    As a side effect, sysfs binding from userspace becomes
    impossible, so we tag the driver to suppress the bind/unbind
    sysfs attributes.
    
    Cc: Russell King <linux@arm.linux.org.uk>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    e1318391