linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [driver-core PATCH v6 0/9] Add NUMA aware async_schedule calls
@ 2018-11-08 18:06 Alexander Duyck
  2018-11-08 18:06 ` [driver-core PATCH v6 1/9] workqueue: Provide queue_work_node to queue work near a given NUMA node Alexander Duyck
                   ` (5 more replies)
  0 siblings, 6 replies; 44+ messages in thread
From: Alexander Duyck @ 2018-11-08 18:06 UTC (permalink / raw)
  To: linux-kernel, gregkh
  Cc: linux-nvdimm, tj, akpm, linux-pm, jiangshanlai, rafael, len.brown,
	pavel, zwisler, dan.j.williams, dave.jiang, bvanassche,
	alexander.h.duyck

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
v5->v6:
    Drop the "This patch" or "This change" from start of patch descriptions.
    Drop unnecessary parenthesis in first patch
    Use same wording for "selecting a CPU" in comments added in first patch
    Added kernel documentation for async_probe member of device
    Fixed up comments for async_schedule calls in patch 2
    Moved code related setting async driver out of device.h and into dd.c
    Added Reviewed-by for several patches

---

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         |  265 ++++++++++++++++++++++++++++++++++-----------
 drivers/base/power/main.c |   12 +-
 drivers/nvdimm/bus.c      |   11 +-
 include/linux/async.h     |   82 +++++++++++++-
 include/linux/device.h    |   13 ++
 include/linux/workqueue.h |    2 
 kernel/async.c            |   53 +++++----
 kernel/workqueue.c        |   84 ++++++++++++++
 10 files changed, 428 insertions(+), 142 deletions(-)

--

^ permalink raw reply	[flat|nested] 44+ messages in thread

end of thread, other threads:[~2018-11-27 22:34 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-08 18:06 [driver-core PATCH v6 0/9] Add NUMA aware async_schedule calls Alexander Duyck
2018-11-08 18:06 ` [driver-core PATCH v6 1/9] workqueue: Provide queue_work_node to queue work near a given NUMA node Alexander Duyck
2018-11-27  1:01   ` Dan Williams
2018-11-08 18:06 ` [driver-core PATCH v6 2/9] async: Add support for queueing on specific " Alexander Duyck
     [not found]   ` <154170041079.12967.13132220574997822111.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-08 23:36     ` Bart Van Assche
2018-11-11 19:32     ` Greg KH
     [not found]       ` <20181111193208.GB8332-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2018-11-11 19:53         ` Dan Williams
     [not found]           ` <CAPcyv4hofCTYMNN=Ow=o4RRuUPM=GLWajNAT9q6WWkuV47te_w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-11-11 20:35             ` Greg KH
     [not found]               ` <20181111203541.GB16871-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2018-11-11 22:17                 ` Dan Williams
2018-11-11 23:27                 ` Alexander Duyck
2018-11-11 19:59       ` Pavel Machek
2018-11-11 20:33         ` Greg KH
2018-11-11 21:24           ` Bart Van Assche
2018-11-13 22:10           ` Pavel Machek
2018-11-27  1:10     ` Dan Williams
     [not found] ` <154170028986.12967.2108024712555179678.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-08 18:06   ` [driver-core PATCH v6 3/9] device core: Consolidate locking and unlocking of parent and device Alexander Duyck
     [not found]     ` <154170041590.12967.4367086895437513524.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-08 22:43       ` jane.chu-QHcLZuEGTsvQT0dZR+AlfA
2018-11-08 22:48         ` Alexander Duyck
2018-11-27  1:44     ` Dan Williams
2018-11-08 18:07   ` [driver-core PATCH v6 5/9] driver core: Establish clear order of operations for deferred probe and remove Alexander Duyck
     [not found]     ` <154170042611.12967.14256799141542560553.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-08 23:47       ` Bart Van Assche
2018-11-08 18:07   ` [driver-core PATCH v6 6/9] driver core: Probe devices asynchronously instead of the driver Alexander Duyck
2018-11-08 23:59     ` Bart Van Assche
     [not found]     ` <154170043123.12967.3591757325647337726.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-27  2:48       ` Dan Williams
2018-11-27 17:57         ` Alexander Duyck
2018-11-27 18:32           ` Dan Williams
2018-11-08 18:07   ` [driver-core PATCH v6 8/9] PM core: Use new async_schedule_dev command Alexander Duyck
     [not found]     ` <154170044143.12967.7385910787360171117.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-27  4:52       ` Dan Williams
2018-11-08 18:07 ` [driver-core PATCH v6 4/9] driver core: Move async_synchronize_full call Alexander Duyck
2018-11-27  2:11   ` Dan Williams
2018-11-27 17:38     ` Alexander Duyck
2018-11-27 20:35       ` Dan Williams
2018-11-27 21:36         ` Alexander Duyck
     [not found]           ` <e700da0293e8637e56682a4c4c4c37a2929b5efe.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-11-27 22:26             ` Dan Williams
2018-11-08 18:07 ` [driver-core PATCH v6 7/9] driver core: Attach devices on CPU local to device node Alexander Duyck
     [not found]   ` <154170043632.12967.5339750954964165831.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-27  4:50     ` Dan Williams
2018-11-08 18:07 ` [driver-core PATCH v6 9/9] libnvdimm: Schedule device registration on node local to the device Alexander Duyck
     [not found]   ` <154170044652.12967.17419321472770956712.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-27  2:21     ` Dan Williams
2018-11-27 18:04       ` Alexander Duyck
2018-11-27 19:34         ` Dan Williams
     [not found]           ` <CAPcyv4gWwsYOeXVNDoDy4v=SU6bRyBG1fgSu84y64jGApaJ91g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-11-27 20:33             ` Bart Van Assche
     [not found]               ` <1543350780.185366.81.camel-HInyCGIudOg@public.gmane.org>
2018-11-27 20:50                 ` Dan Williams
     [not found]                   ` <CAPcyv4hya0ASfVue6GH3ZXKJOzytQXDqtEWxvrEdCTcb545tYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-11-27 21:22                     ` Bart Van Assche
     [not found]                       ` <1543353746.185366.90.camel-HInyCGIudOg@public.gmane.org>
2018-11-27 22:34                         ` Dan Williams

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).