• Tejun Heo's avatar
    workqueue, irq_work: Build fix for !CONFIG_IRQ_WORK · fd0a68a2
    Tejun Heo authored
    2f34d733 ("workqueue: Fix queue_work_on() with BH workqueues") added
    irq_work usage to workqueue; however, it turns out irq_work is actually
    optional and the change breaks build on configuration which doesn't have
    CONFIG_IRQ_WORK enabled.
    
    Fix build by making workqueue use irq_work only when CONFIG_SMP and enabling
    CONFIG_IRQ_WORK when CONFIG_SMP is set. It's reasonable to argue that it may
    be better to just always enable it. However, this still saves a small bit of
    memory for tiny UP configs and also the least amount of change, so, for now,
    let's keep it conditional.
    
    Verified to do the right thing for x86_64 allnoconfig and defconfig, and
    aarch64 allnoconfig, allnoconfig + prink disable (SMP but nothing selects
    IRQ_WORK) and a modified aarch64 Kconfig where !SMP and nothing selects
    IRQ_WORK.
    
    v2: `depends on SMP` leads to Kconfig warnings when CONFIG_IRQ_WORK is
        selected by something else when !CONFIG_SMP. Use `def_bool y if SMP`
        instead.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
    Tested-by: default avatarAnders Roxell <anders.roxell@linaro.org>
    Fixes: 2f34d733 ("workqueue: Fix queue_work_on() with BH workqueues")
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    fd0a68a2
Kconfig 62.6 KB