linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] xen: xenbus: Remove create_workqueue
@ 2016-05-31 16:56 Bhaktipriya Shridhar
  2016-05-31 17:29 ` Tejun Heo
  2016-06-29 12:50 ` [Xen-devel] " David Vrabel
  0 siblings, 2 replies; 4+ messages in thread
From: Bhaktipriya Shridhar @ 2016-05-31 16:56 UTC (permalink / raw)
  To: Boris Ostrovsky, David Vrabel, Juergen Gross
  Cc: Tejun Heo, xen-devel, linux-kernel

System workqueues have been able to handle high level of concurrency
for a long time now and there's no reason to use dedicated workqueues
just to gain concurrency.  Replace dedicated xenbus_frontend_wq with the
use of system_wq.

Unlike a dedicated per-cpu workqueue created with create_workqueue(),
system_wq allows multiple work items to overlap executions even on
the same CPU; however, a per-cpu workqueue doesn't have any CPU
locality or global ordering guarantees unless the target CPU is
explicitly specified and the increase of local concurrency shouldn't
make any difference.

In this case, there is only a single work item, increase of concurrency
level by switching to system_wq should not make any difference.

Signed-off-by: Bhaktipriya Shridhar <bhaktipriya96@gmail.com>
---
 drivers/xen/xenbus/xenbus_probe_frontend.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/drivers/xen/xenbus/xenbus_probe_frontend.c b/drivers/xen/xenbus/xenbus_probe_frontend.c
index bcb53bd..611a231 100644
--- a/drivers/xen/xenbus/xenbus_probe_frontend.c
+++ b/drivers/xen/xenbus/xenbus_probe_frontend.c
@@ -31,7 +31,6 @@
 #include "xenbus_probe.h"


-static struct workqueue_struct *xenbus_frontend_wq;

 /* device/<type>/<id> => <type>-<id> */
 static int frontend_bus_id(char bus_id[XEN_BUS_ID_SIZE], const char *nodename)
@@ -109,13 +108,7 @@ static int xenbus_frontend_dev_resume(struct device *dev)
 	if (xen_store_domain_type == XS_LOCAL) {
 		struct xenbus_device *xdev = to_xenbus_device(dev);

-		if (!xenbus_frontend_wq) {
-			pr_err("%s: no workqueue to process delayed resume\n",
-			       xdev->nodename);
-			return -EFAULT;
-		}
-
-		queue_work(xenbus_frontend_wq, &xdev->work);
+		schedule_work(&xdev->work);

 		return 0;
 	}
@@ -485,12 +478,6 @@ static int __init xenbus_probe_frontend_init(void)

 	register_xenstore_notifier(&xenstore_notifier);

-	if (xen_store_domain_type == XS_LOCAL) {
-		xenbus_frontend_wq = create_workqueue("xenbus_frontend");
-		if (!xenbus_frontend_wq)
-			pr_warn("create xenbus frontend workqueue failed, S3 resume is likely to fail\n");
-	}
-
 	return 0;
 }
 subsys_initcall(xenbus_probe_frontend_init);
--
2.1.4

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

* Re: [PATCH v2] xen: xenbus: Remove create_workqueue
  2016-05-31 16:56 [PATCH v2] xen: xenbus: Remove create_workqueue Bhaktipriya Shridhar
@ 2016-05-31 17:29 ` Tejun Heo
  2016-06-28 16:47   ` Bhaktipriya Shridhar
  2016-06-29 12:50 ` [Xen-devel] " David Vrabel
  1 sibling, 1 reply; 4+ messages in thread
From: Tejun Heo @ 2016-05-31 17:29 UTC (permalink / raw)
  To: Bhaktipriya Shridhar
  Cc: Boris Ostrovsky, David Vrabel, Juergen Gross, xen-devel, linux-kernel

On Tue, May 31, 2016 at 10:26:30PM +0530, Bhaktipriya Shridhar wrote:
> System workqueues have been able to handle high level of concurrency
> for a long time now and there's no reason to use dedicated workqueues
> just to gain concurrency.  Replace dedicated xenbus_frontend_wq with the
> use of system_wq.
> 
> Unlike a dedicated per-cpu workqueue created with create_workqueue(),
> system_wq allows multiple work items to overlap executions even on
> the same CPU; however, a per-cpu workqueue doesn't have any CPU
> locality or global ordering guarantees unless the target CPU is
> explicitly specified and the increase of local concurrency shouldn't
> make any difference.
> 
> In this case, there is only a single work item, increase of concurrency
> level by switching to system_wq should not make any difference.
> 
> Signed-off-by: Bhaktipriya Shridhar <bhaktipriya96@gmail.com>

Acked-by: Tejun Heo <tj@kernel.org>

Thanks.

-- 
tejun

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

* Re: [PATCH v2] xen: xenbus: Remove create_workqueue
  2016-05-31 17:29 ` Tejun Heo
@ 2016-06-28 16:47   ` Bhaktipriya Shridhar
  0 siblings, 0 replies; 4+ messages in thread
From: Bhaktipriya Shridhar @ 2016-06-28 16:47 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Boris Ostrovsky, David Vrabel, Juergen Gross, xen-devel,
	Linux-Kernel@Vger. Kernel. Org

Ping!
Thanks,
Bhaktipriya


On Tue, May 31, 2016 at 10:59 PM, Tejun Heo <tj@kernel.org> wrote:
> On Tue, May 31, 2016 at 10:26:30PM +0530, Bhaktipriya Shridhar wrote:
>> System workqueues have been able to handle high level of concurrency
>> for a long time now and there's no reason to use dedicated workqueues
>> just to gain concurrency.  Replace dedicated xenbus_frontend_wq with the
>> use of system_wq.
>>
>> Unlike a dedicated per-cpu workqueue created with create_workqueue(),
>> system_wq allows multiple work items to overlap executions even on
>> the same CPU; however, a per-cpu workqueue doesn't have any CPU
>> locality or global ordering guarantees unless the target CPU is
>> explicitly specified and the increase of local concurrency shouldn't
>> make any difference.
>>
>> In this case, there is only a single work item, increase of concurrency
>> level by switching to system_wq should not make any difference.
>>
>> Signed-off-by: Bhaktipriya Shridhar <bhaktipriya96@gmail.com>
>
> Acked-by: Tejun Heo <tj@kernel.org>
>
> Thanks.
>
> --
> tejun

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

* Re: [Xen-devel] [PATCH v2] xen: xenbus: Remove create_workqueue
  2016-05-31 16:56 [PATCH v2] xen: xenbus: Remove create_workqueue Bhaktipriya Shridhar
  2016-05-31 17:29 ` Tejun Heo
@ 2016-06-29 12:50 ` David Vrabel
  1 sibling, 0 replies; 4+ messages in thread
From: David Vrabel @ 2016-06-29 12:50 UTC (permalink / raw)
  To: Bhaktipriya Shridhar, Boris Ostrovsky, David Vrabel, Juergen Gross
  Cc: Tejun Heo, xen-devel, linux-kernel

On 31/05/16 17:56, Bhaktipriya Shridhar wrote:
> System workqueues have been able to handle high level of concurrency
> for a long time now and there's no reason to use dedicated workqueues
> just to gain concurrency.  Replace dedicated xenbus_frontend_wq with the
> use of system_wq.
> 
> Unlike a dedicated per-cpu workqueue created with create_workqueue(),
> system_wq allows multiple work items to overlap executions even on
> the same CPU; however, a per-cpu workqueue doesn't have any CPU
> locality or global ordering guarantees unless the target CPU is
> explicitly specified and the increase of local concurrency shouldn't
> make any difference.
> 
> In this case, there is only a single work item, increase of concurrency
> level by switching to system_wq should not make any difference.

Applied to for-linus-4.8, thanks.

David

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

end of thread, other threads:[~2016-06-29 12:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-31 16:56 [PATCH v2] xen: xenbus: Remove create_workqueue Bhaktipriya Shridhar
2016-05-31 17:29 ` Tejun Heo
2016-06-28 16:47   ` Bhaktipriya Shridhar
2016-06-29 12:50 ` [Xen-devel] " David Vrabel

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