All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
To: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org
Cc: len.brown@intel.com, bvanassche@acm.org,
	linux-pm@vger.kernel.org, alexander.h.duyck@linux.intel.com,
	rafael@kernel.org, jiangshanlai@gmail.com,
	linux-nvdimm@lists.01.org, pavel@ucw.cz, zwisler@kernel.org,
	tj@kernel.org, akpm@linux-foundation.org
Subject: [driver-core PATCH v6 0/9] Add NUMA aware async_schedule calls
Date: Thu, 08 Nov 2018 10:06:40 -0800	[thread overview]
Message-ID: <154170028986.12967.2108024712555179678.stgit@ahduyck-desk1.jf.intel.com> (raw)

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

--
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

WARNING: multiple messages have this Message-ID (diff)
From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
To: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org
Cc: linux-nvdimm@lists.01.org, tj@kernel.org,
	akpm@linux-foundation.org, linux-pm@vger.kernel.org,
	jiangshanlai@gmail.com, rafael@kernel.org, len.brown@intel.com,
	pavel@ucw.cz, zwisler@kernel.org, dan.j.williams@intel.com,
	dave.jiang@intel.com, bvanassche@acm.org,
	alexander.h.duyck@linux.intel.com
Subject: [driver-core PATCH v6 0/9] Add NUMA aware async_schedule calls
Date: Thu, 08 Nov 2018 10:06:40 -0800	[thread overview]
Message-ID: <154170028986.12967.2108024712555179678.stgit@ahduyck-desk1.jf.intel.com> (raw)

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

--

             reply	other threads:[~2018-11-08 18:06 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-08 18:06 Alexander Duyck [this message]
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-08 18:06   ` Alexander Duyck
2018-11-27  1:01   ` Dan Williams
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
2018-11-08 18:06   ` Alexander Duyck
2018-11-08 23:36   ` Bart Van Assche
2018-11-08 23:36     ` Bart Van Assche
2018-11-08 23:36     ` Bart Van Assche
2018-11-11 19:32   ` Greg KH
2018-11-11 19:32     ` Greg KH
2018-11-11 19:32     ` Greg KH
2018-11-11 19:53     ` Dan Williams
2018-11-11 19:53       ` Dan Williams
2018-11-11 19:53       ` Dan Williams
2018-11-11 20:35       ` Greg KH
2018-11-11 20:35         ` Greg KH
2018-11-11 20:35         ` Greg KH
2018-11-11 22:17         ` Dan Williams
2018-11-11 22:17           ` Dan Williams
2018-11-11 22:17           ` Dan Williams
2018-11-11 23:27         ` Alexander Duyck
2018-11-11 23:27           ` Alexander Duyck
2018-11-11 23:27           ` Alexander Duyck
2018-11-11 19:59     ` Pavel Machek
2018-11-11 20:33       ` Greg KH
2018-11-11 20:33         ` Greg KH
2018-11-11 21:24         ` Bart Van Assche
2018-11-11 21:24           ` Bart Van Assche
2018-11-13 22:10         ` Pavel Machek
2018-11-27  1:10   ` Dan Williams
2018-11-27  1:10     ` Dan Williams
2018-11-27  1:10     ` Dan Williams
2018-11-08 18:06 ` [driver-core PATCH v6 3/9] device core: Consolidate locking and unlocking of parent and device Alexander Duyck
2018-11-08 18:06   ` Alexander Duyck
2018-11-08 18:06   ` Alexander Duyck
2018-11-08 22:43   ` jane.chu
2018-11-08 22:43     ` jane.chu-QHcLZuEGTsvQT0dZR+AlfA
2018-11-08 22:43     ` jane.chu
2018-11-08 22:48     ` Alexander Duyck
2018-11-08 22:48       ` Alexander Duyck
2018-11-27  1:44   ` Dan Williams
2018-11-27  1:44     ` Dan Williams
2018-11-08 18:07 ` [driver-core PATCH v6 4/9] driver core: Move async_synchronize_full call Alexander Duyck
2018-11-08 18:07   ` Alexander Duyck
2018-11-27  2:11   ` Dan Williams
2018-11-27  2:11     ` Dan Williams
2018-11-27 17:38     ` Alexander Duyck
2018-11-27 17:38       ` Alexander Duyck
2018-11-27 20:35       ` Dan Williams
2018-11-27 20:35         ` Dan Williams
2018-11-27 21:36         ` Alexander Duyck
2018-11-27 21:36           ` Alexander Duyck
2018-11-27 22:26           ` Dan Williams
2018-11-27 22:26             ` Dan Williams
2018-11-27 22:26             ` 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
2018-11-08 18:07   ` Alexander Duyck
2018-11-08 18:07   ` Alexander Duyck
2018-11-08 23:47   ` Bart Van Assche
2018-11-08 23:47     ` Bart Van Assche
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 18:07   ` Alexander Duyck
2018-11-08 18:07   ` Alexander Duyck
2018-11-08 23:59   ` Bart Van Assche
2018-11-08 23:59     ` Bart Van Assche
2018-11-27  2:48   ` Dan Williams
2018-11-27  2:48     ` Dan Williams
2018-11-27  2:48     ` Dan Williams
2018-11-27 17:57     ` Alexander Duyck
2018-11-27 17:57       ` Alexander Duyck
2018-11-27 18:32       ` Dan Williams
2018-11-27 18:32         ` 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
2018-11-08 18:07   ` Alexander Duyck
2018-11-27  4:50   ` Dan Williams
2018-11-27  4:50     ` Dan Williams
2018-11-27  4:50     ` Dan Williams
2018-11-08 18:07 ` [driver-core PATCH v6 8/9] PM core: Use new async_schedule_dev command Alexander Duyck
2018-11-08 18:07   ` Alexander Duyck
2018-11-08 18:07   ` Alexander Duyck
2018-11-27  4:52   ` Dan Williams
2018-11-27  4:52     ` Dan Williams
2018-11-27  4:52     ` 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
2018-11-08 18:07   ` Alexander Duyck
2018-11-27  2:21   ` Dan Williams
2018-11-27  2:21     ` Dan Williams
2018-11-27  2:21     ` Dan Williams
2018-11-27 18:04     ` Alexander Duyck
2018-11-27 19:34       ` Dan Williams
2018-11-27 19:34         ` Dan Williams
2018-11-27 20:33         ` Bart Van Assche
2018-11-27 20:33           ` Bart Van Assche
2018-11-27 20:33           ` Bart Van Assche
2018-11-27 20:50           ` Dan Williams
2018-11-27 20:50             ` Dan Williams
2018-11-27 20:50             ` Dan Williams
2018-11-27 21:22             ` Bart Van Assche
2018-11-27 21:22               ` Bart Van Assche
2018-11-27 21:22               ` Bart Van Assche
2018-11-27 22:34               ` Dan Williams
2018-11-27 22:34                 ` Dan Williams
2018-11-27 22:34                 ` Dan Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=154170028986.12967.2108024712555179678.stgit@ahduyck-desk1.jf.intel.com \
    --to=alexander.h.duyck@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=bvanassche@acm.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jiangshanlai@gmail.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rafael@kernel.org \
    --cc=tj@kernel.org \
    --cc=zwisler@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.