linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [driver-core PATCH v5 0/9] Add NUMA aware async_schedule calls
@ 2018-11-05 21:11 Alexander Duyck
  2018-11-05 21:11 ` [driver-core PATCH v5 4/9] driver core: Move async_synchronize_full call Alexander Duyck
                   ` (2 more replies)
  0 siblings, 3 replies; 33+ messages in thread
From: Alexander Duyck @ 2018-11-05 21:11 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

---

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(-)

--

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

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

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-05 21:11 [driver-core PATCH v5 0/9] Add NUMA aware async_schedule calls Alexander Duyck
2018-11-05 21:11 ` [driver-core PATCH v5 4/9] driver core: Move async_synchronize_full call Alexander Duyck
     [not found]   ` <154145231976.29224.39638353241256116.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-06  1:04     ` Bart Van Assche
     [not found]       ` <1541466289.196084.176.camel-HInyCGIudOg@public.gmane.org>
2018-11-06 16:18         ` Alexander Duyck
     [not found]           ` <e2fec0e159757f31abbd258e284a844d0d8a2859.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-11-06 17:22             ` Bart Van Assche
     [not found] ` <154145223352.29224.8912797012647157172.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-05 21:11   ` [driver-core PATCH v5 1/9] workqueue: Provide queue_work_node to queue work near a given NUMA node Alexander Duyck
     [not found]     ` <154145230445.29224.14651284855380723028.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-06  0:42       ` Bart Van Assche
     [not found]         ` <1541464948.196084.168.camel-HInyCGIudOg@public.gmane.org>
2018-11-06 16:27           ` Alexander Duyck
2018-11-05 21:11   ` [driver-core PATCH v5 2/9] async: Add support for queueing on specific " Alexander Duyck
     [not found]     ` <154145230954.29224.13087735653265580553.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-07  0:50       ` Bart Van Assche
2018-11-05 21:11   ` [driver-core PATCH v5 3/9] device core: Consolidate locking and unlocking of parent and device Alexander Duyck
2018-11-05 21:12   ` [driver-core PATCH v5 5/9] driver core: Establish clear order of operations for deferred probe and remove Alexander Duyck
     [not found]     ` <154145232484.29224.1635232599636954462.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-06  4:10       ` kbuild test robot
     [not found]         ` <201811061228.iteFLO2p%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-11-06 23:51           ` Bart Van Assche
2018-11-07  0:52             ` Alexander Duyck
     [not found]             ` <1541548274.196084.197.camel-HInyCGIudOg@public.gmane.org>
2018-11-23  1:23               ` Rong Chen
2018-11-23 14:19                 ` Bart Van Assche
2018-11-06 23:48       ` Bart Van Assche
     [not found]         ` <1541548114.196084.195.camel-HInyCGIudOg@public.gmane.org>
2018-11-07  1:34           ` Joe Perches
     [not found]             ` <499e4358e72fca510fa6fcfb76ea3ac3792db08f.camel-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
2018-11-08 23:42               ` Bart Van Assche
2018-11-11 14:31         ` Pavel Machek
2018-11-27  2:35     ` Dan Williams
2018-11-27 16:49       ` Alexander Duyck
2018-11-05 21:12   ` [driver-core PATCH v5 6/9] driver core: Probe devices asynchronously instead of the driver Alexander Duyck
     [not found]     ` <154145232994.29224.4383053368766089653.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-07  0:22       ` Bart Van Assche
2018-11-05 21:12   ` [driver-core PATCH v5 7/9] driver core: Attach devices on CPU local to device node Alexander Duyck
     [not found]     ` <154145233508.29224.9891071445860629874.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-07  0:24       ` Bart Van Assche
2018-11-05 21:12   ` [driver-core PATCH v5 8/9] PM core: Use new async_schedule_dev command Alexander Duyck
     [not found]     ` <154145234017.29224.9183571187943571535.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-07  0:24       ` Bart Van Assche
2018-11-06  0:50   ` [driver-core PATCH v5 0/9] Add NUMA aware async_schedule calls Bart Van Assche
     [not found]     ` <1541465425.196084.170.camel-HInyCGIudOg@public.gmane.org>
2018-11-06 16:25       ` Alexander Duyck
2018-11-05 21:12 ` [driver-core PATCH v5 9/9] libnvdimm: Schedule device registration on node local to the device Alexander Duyck
     [not found]   ` <154145234526.29224.2575533246153120029.stgit-+uVpp3jiz/RcxmDmkzA3yGt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2018-11-07  0:26     ` Bart Van Assche

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).