From patchwork Sun Jul 10 14:12:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bhaktipriya Shridhar X-Patchwork-Id: 9222677 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 3229960572 for ; Sun, 10 Jul 2016 14:12:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 09F5123861 for ; Sun, 10 Jul 2016 14:12:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB4B12705B; Sun, 10 Jul 2016 14:12:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5A90323861 for ; Sun, 10 Jul 2016 14:12:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757163AbcGJOM4 (ORCPT ); Sun, 10 Jul 2016 10:12:56 -0400 Received: from mail-pa0-f68.google.com ([209.85.220.68]:33424 "EHLO mail-pa0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757136AbcGJOMz (ORCPT ); Sun, 10 Jul 2016 10:12:55 -0400 Received: by mail-pa0-f68.google.com with SMTP id q2so438599pap.0; Sun, 10 Jul 2016 07:12:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cUDqRo56bCA34Ynlzz4Svz26gFKiii4LVcctOhlw4QQ=; b=jhVMGK6SdMMFZAYkZ8gXudgjoKyw8aGndafpsUN+xnUd+37LV75Xc7OA0pfLfxEpLx Ri/aASqCsGtRXs2UgeRK3pVZlouHicZhOV9M0Mqg0BP/dfWPZ7FD6ScJMrADiE4IBVb0 L6nNY8B/yF26M5cobrV4xeHs3/8yNAx0wR4hye3Kh5+dgz7bv2AlmFbWZQ5BR3ltoYL+ YYn7ZvE/wPxeFp8/cz3gWCJ0lUBV+5rc3iBW2sfg6lnVyTgug0uJKQW+N4ohxAUtvHJh uVubXsI8TCHmXdComqO6fwEYotyoPwWx4L1G/b7nsj8QSqy974NEHNQltSXCRXDmd+qX S05g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cUDqRo56bCA34Ynlzz4Svz26gFKiii4LVcctOhlw4QQ=; b=bqXSDGkQiusFCBuIG2pj5noaB8BO/+svHRw0Lao/HDOkdjC/H7IsZhUOsyyXJCpcTT ZGPSicHjmdLKJWIZOOpzx9AWXrTWEsoH84Npv5/NXnn5U/fw3uJ39AX3KXbdxCzT4P5B MXxrmET+EKhe3VkwOPHUeIcg556ILosuJG8LgJFi4r2rrGvKFAGrhk3rHhACsU4d1m4c 7sIqh44c2JqWgRKSDk1bG+jev5bD0mKvk2k7nmQct/NBOT6E2KVpgEzRKaC8kELANDMY mVbvv1//KmmkthZnpM9TnIPP/Qq5hELO48w9FdFNikoXNolUs+ftpRipmRDj1N21M8d1 UGEg== X-Gm-Message-State: ALyK8tKu9rv6iSs7AWZU4uOrxYFuTWFt9wWOcfV1MIUQ8076ZW6BcVkPfbQGvFN2X5q9iw== X-Received: by 10.66.232.136 with SMTP id to8mr26935530pac.130.1468159974737; Sun, 10 Jul 2016 07:12:54 -0700 (PDT) Received: from Karyakshetra.iiit.ac.in ([14.139.82.6]) by smtp.googlemail.com with ESMTPSA id o6sm3563004pab.11.2016.07.10.07.12.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 10 Jul 2016 07:12:54 -0700 (PDT) From: Bhaktipriya Shridhar To: Mark Brown Cc: Tejun Heo , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Bhaktipriya Shridhar Subject: [PATCH v2] spi: spi-topcliff-pch: Remove deprecated create_singlethread_workqueue Date: Sun, 10 Jul 2016 19:42:13 +0530 Message-Id: <1468159933-28099-1-git-send-email-bhaktipriya96@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <201607022003.aKXFDba1%fengguang.wu@intel.com> References: <201607022003.aKXFDba1%fengguang.wu@intel.com> Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The workqueue "wk" serves as a queue for carrying out execution of requests. It has a single work item(&drv_data->work) and hence doesn't require ordering. Also, it is not being used on a memory reclaim path. Hence, the singlethreaded workqueue has been replaced with the use of system_wq. System workqueues have been able to handle high level of concurrency for a long time now and hence it's not required to have a singlethreaded workqueue just to gain concurrency. Unlike a dedicated per-cpu workqueue created with create_singlethread_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 guarantee unless the target CPU is explicitly specified and thus the increase of local concurrency shouldn't make any difference. Work item has been flushed in pch_spi_free_resources() to ensure that there are no pending tasks while disconnecting the driver. Also dropped the label 'err_return' since it's not being used anymore. Signed-off-by: Bhaktipriya Shridhar Acked-by: Tejun Heo --- Changes in v2: -Fixed build warning by removing unused label 'err_return' drivers/spi/spi-topcliff-pch.c | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c index 93dfcee..c54ee66 100644 --- a/drivers/spi/spi-topcliff-pch.c +++ b/drivers/spi/spi-topcliff-pch.c @@ -133,8 +133,6 @@ struct pch_spi_dma_ctrl { * @io_remap_addr: The remapped PCI base address * @master: Pointer to the SPI master structure * @work: Reference to work queue handler - * @wk: Workqueue for carrying out execution of the - * requests * @wait: Wait queue for waking up upon receiving an * interrupt. * @transfer_complete: Status of SPI Transfer @@ -169,7 +167,6 @@ struct pch_spi_data { unsigned long io_base_addr; struct spi_master *master; struct work_struct work; - struct workqueue_struct *wk; wait_queue_head_t wait; u8 transfer_complete; u8 bcurrent_msg_processing; @@ -517,8 +514,7 @@ static int pch_spi_transfer(struct spi_device *pspi, struct spi_message *pmsg) dev_dbg(&pspi->dev, "%s - Invoked list_add_tail\n", __func__); - /* schedule work queue to run */ - queue_work(data->wk, &data->work); + schedule_work(&data->work); dev_dbg(&pspi->dev, "%s - Invoked queue work\n", __func__); retval = 0; @@ -674,7 +670,7 @@ static void pch_spi_nomore_transfer(struct pch_spi_data *data) *more messages) */ dev_dbg(&data->master->dev, "%s:Invoke queue_work\n", __func__); - queue_work(data->wk, &data->work); + schedule_work(&data->work); } else if (data->board_dat->suspend_sts || data->status == STATUS_EXITING) { dev_dbg(&data->master->dev, @@ -1266,14 +1262,7 @@ static void pch_spi_free_resources(struct pch_spi_board_data *board_dat, { dev_dbg(&board_dat->pdev->dev, "%s ENTRY\n", __func__); - /* free workqueue */ - if (data->wk != NULL) { - destroy_workqueue(data->wk); - data->wk = NULL; - dev_dbg(&board_dat->pdev->dev, - "%s destroy_workqueue invoked successfully\n", - __func__); - } + flush_work(&data->work); } static int pch_spi_get_resources(struct pch_spi_board_data *board_dat, @@ -1283,14 +1272,6 @@ static int pch_spi_get_resources(struct pch_spi_board_data *board_dat, dev_dbg(&board_dat->pdev->dev, "%s ENTRY\n", __func__); - /* create workqueue */ - data->wk = create_singlethread_workqueue(KBUILD_MODNAME); - if (!data->wk) { - dev_err(&board_dat->pdev->dev, - "%s create_singlet hread_workqueue failed\n", __func__); - retval = -EBUSY; - goto err_return; - } /* reset PCH SPI h/w */ pch_spi_reset(data->master); @@ -1299,7 +1280,6 @@ static int pch_spi_get_resources(struct pch_spi_board_data *board_dat, dev_dbg(&board_dat->pdev->dev, "%s data->irq_reg_sts=true\n", __func__); -err_return: if (retval != 0) { dev_err(&board_dat->pdev->dev, "%s FAIL:invoking pch_spi_free_resources\n", __func__);