lkml.org 
[lkml]   [2018]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Subject[driver-core PATCH v5 0/9] Add NUMA aware async_schedule calls
    From
    Date
    This patch set provides functionality that will help to improve the
    locality of the async_schedule calls used to provide deferred
    initialization.

    This patch set originally started out with me focused on just the one call
    to async_schedule_domain in the nvdimm tree that was being used to
    defer the device_add call however after doing some digging I realized the
    scope of this was much broader than I had originally planned. As such I
    went through and reworked the underlying infrastructure down to replacing
    the queue_work call itself with a function of my own and opted to try and
    provide a NUMA aware solution that would work for a broader audience.

    RFC->v1:
    Dropped nvdimm patch to submit later.
    It relies on code in libnvdimm development tree.
    Simplified queue_work_near to just convert node into a CPU.
    Split up drivers core and PM core patches.
    v1->v2:
    Renamed queue_work_near to queue_work_node
    Added WARN_ON_ONCE if we use queue_work_node with per-cpu workqueue
    v2->v3:
    Added Acked-by for queue_work_node patch
    Continued rename from _near to _node to be consistent with queue_work_node
    Renamed async_schedule_near_domain to async_schedule_node_domain
    Renamed async_schedule_near to async_schedule_node
    Added kerneldoc for new async_schedule_XXX functions
    Updated patch description for patch 4 to include data on potential gains
    v3->v4
    Added patch to consolidate use of need_parent_lock
    Make asynchronous driver probing explicit about use of drvdata
    v4->v5
    Added patch to move async_synchronize_full to address deadlock
    Added bit async_probe to act as mutex for probe/remove calls
    Added back nvdimm patch as code it relies on is now in Linus's tree
    Incorporated review comments on parent & device locking consolidation
    Rebased on latest linux-next

    ---

    Alexander Duyck (9):
    workqueue: Provide queue_work_node to queue work near a given NUMA node
    async: Add support for queueing on specific NUMA node
    device core: Consolidate locking and unlocking of parent and device
    driver core: Move async_synchronize_full call
    driver core: Establish clear order of operations for deferred probe and remove
    driver core: Probe devices asynchronously instead of the driver
    driver core: Attach devices on CPU local to device node
    PM core: Use new async_schedule_dev command
    libnvdimm: Schedule device registration on node local to the device


    drivers/base/base.h | 2
    drivers/base/bus.c | 46 +-------
    drivers/base/dd.c | 249 +++++++++++++++++++++++++++++++++------------
    drivers/base/power/main.c | 12 +-
    drivers/nvdimm/bus.c | 11 +-
    include/linux/async.h | 84 +++++++++++++++
    include/linux/device.h | 35 +++++-
    include/linux/workqueue.h | 2
    kernel/async.c | 53 +++++-----
    kernel/workqueue.c | 84 +++++++++++++++
    10 files changed, 432 insertions(+), 146 deletions(-)

    --

    \
     
     \ /
      Last update: 2018-11-05 22:12    [W:3.599 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site