• Yogesh Lal's avatar
    driver core: Use unbound workqueue for deferred probes · e611f8cd
    Yogesh Lal authored
    Deferred probe usually runs only on pinned kworkers, which might take
    longer time if a device contains multiple sub-devices. One such case
    is of sound card on mobile devices, where we have good number of
    mixers and controls per mixer.
    
    We observed boot up improvement - deferred probes take ~600ms when bound
    to little core kworker and ~200ms when deferred probe is queued on
    unbound wq. This is due to scheduler moving the worker running deferred
    probe work to big CPUs. Without this change, we see the worker is running
    on LITTLE CPU due to affinity.
    
    Since kworker runs deferred probe of several devices, the locality may
    not be important. Also, init thread executing driver initcalls, can
    potentially migrate as it has cpu affinity set to all cpus.In addition
    to this, async probes use unbounded workqueue. So, using unbounded wq for
    deferred probes looks to be similar to these w.r.t. scheduling behavior.
    Signed-off-by: default avatarYogesh Lal <ylal@codeaurora.org>
    Link: https://lore.kernel.org/r/1616583698-6398-1-git-send-email-ylal@codeaurora.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e611f8cd
dd.c 33.6 KB