• Tejun Heo's avatar
    workqueue: reimplement work_on_cpu() using system_wq · ed48ece2
    Tejun Heo authored
    The existing work_on_cpu() implementation is hugely inefficient.  It
    creates a new kthread, execute that single function and then let the
    kthread die on each invocation.
    
    Now that system_wq can handle concurrent executions, there's no
    advantage of doing this.  Reimplement work_on_cpu() using system_wq
    which makes it simpler and way more efficient.
    
    stable: While this isn't a fix in itself, it's needed to fix a
            workqueue related bug in cpufreq/powernow-k8.  AFAICS, this
            shouldn't break other existing users.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarJiri Kosina <jkosina@suse.cz>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Rafael J. Wysocki <rjw@sisk.pl>
    Cc: stable@vger.kernel.org
    ed48ece2
workqueue.c 105 KB