From patchwork Mon Nov 13 14:45:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gilad Ben-Yossef X-Patchwork-Id: 118807 Delivered-To: patch@linaro.org Received: by 10.80.225.132 with SMTP id k4csp1132743edl; Mon, 13 Nov 2017 06:48:38 -0800 (PST) X-Google-Smtp-Source: AGs4zMbcFQPWrxub/JQl9jNO9fjVw8V1KvO/sxLO6DgkPqXbI9/1/olVZ3p+XdEm479TzOs8uj7J X-Received: by 10.84.216.29 with SMTP id m29mr672421pli.243.1510584518786; Mon, 13 Nov 2017 06:48:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510584518; cv=none; d=google.com; s=arc-20160816; b=KWYqQTYNpqxMhY7//EJE0+ujM0eQ8to3CRv+m0nSWg5PjCnk3I8F1bve6s3FMs76Dc RyI5rIQrcewTSPlMJqfR2M29haIqkz/Rj6U5R2OxIbCQc+p4gksEBO0GLK3HYUfk9A3E U5VpT8VluJIjGfMBePiurk8jx6K2QDOW1jwheU8800entngRR69RC0k++fB/P//BWyZN 5cACnDXN20WCk4iBgTKRwST+tI96enN4Rs6Tbr5szol83H+JzL1/x8L9+xSLglgEuWTG dV+DFrWeIXU3rVnKxzPZ/qd1L/S4dZhFvruE2OO4IHiA+a3A+VcQpN2tE3El346TqaGC yVEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=9JQCO8zGsjP6B+M//KC3eUFacwZ8mdAyHb+gD7op7ws=; b=zGpocll8WAjuadV/bWgKEVbdIngdKEOfyMCnj79AlyJfHgM7J5e84o98DLWfBMU3AR 9FW1XJRIS/K7PslNjG5WGRaE0lVS0qqktDhTlkUZJJkny5FRLWGPn0Ko3mOTXmmfUKsP VQUpMrXR63VTdYuiRnsjLCvTn+EvQ7h5Su3f/6c1B4I25V8IZDKIrqGlBbqBXYSzoFKF 3cBcHrWyNtMhLGLAQc1LsYdc52BnYL5YUORppDrGpfwMYjB2eysQz9fNpzpDbQz/Dvq6 zUR4dxdbNbq+BrDG4u5dXIDqQEwUEWbSIO1GjSrmejRg47yKyOZtE3Z4+3hHnLI3KI/v xuVg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n12si13465717pgq.423.2017.11.13.06.48.38; Mon, 13 Nov 2017 06:48:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753619AbdKMOsh (ORCPT + 27 others); Mon, 13 Nov 2017 09:48:37 -0500 Received: from foss.arm.com ([217.140.101.70]:47478 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753580AbdKMOse (ORCPT ); Mon, 13 Nov 2017 09:48:34 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5B9221435; Mon, 13 Nov 2017 06:48:34 -0800 (PST) Received: from sugar.kfn.arm.com (unknown [10.45.48.133]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BE03D3F318; Mon, 13 Nov 2017 06:48:32 -0800 (PST) From: Gilad Ben-Yossef To: Greg Kroah-Hartman Cc: Ofir Drang , linux-crypto@vger.kernel.org, driverdev-devel@linuxdriverproject.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH 22/24] staging: ccree: replace msleep with a completion Date: Mon, 13 Nov 2017 14:45:50 +0000 Message-Id: <1510584358-29473-23-git-send-email-gilad@benyossef.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1510584358-29473-1-git-send-email-gilad@benyossef.com> References: <1510584358-29473-1-git-send-email-gilad@benyossef.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When the driver would try to queue commands to the HW FIFO but ran out of slots it would use msleep as a delay until the FIFO would clear. This is messy and not accurate. Replace the msleep with a proper completion on the event of command completion which should indicate at least one slot is free. Signed-off-by: Gilad Ben-Yossef --- drivers/staging/ccree/ssi_driver.c | 2 ++ drivers/staging/ccree/ssi_driver.h | 1 + drivers/staging/ccree/ssi_request_mgr.c | 7 +++++-- 3 files changed, 8 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/drivers/staging/ccree/ssi_driver.c b/drivers/staging/ccree/ssi_driver.c index b17b811..3cb2296 100644 --- a/drivers/staging/ccree/ssi_driver.c +++ b/drivers/staging/ccree/ssi_driver.c @@ -251,6 +251,8 @@ static int init_cc_resources(struct platform_device *plat_dev) } dev_dbg(dev, "Registered to IRQ: %d\n", new_drvdata->irq); + init_completion(&new_drvdata->hw_queue_avail); + if (!plat_dev->dev.dma_mask) plat_dev->dev.dma_mask = &plat_dev->dev.coherent_dma_mask; diff --git a/drivers/staging/ccree/ssi_driver.h b/drivers/staging/ccree/ssi_driver.h index ff9f5aa..f92867b 100644 --- a/drivers/staging/ccree/ssi_driver.h +++ b/drivers/staging/ccree/ssi_driver.h @@ -125,6 +125,7 @@ struct ssi_drvdata { int irq; u32 irq_mask; u32 fw_ver; + struct completion hw_queue_avail; /* wait for HW queue availability */ struct platform_device *plat_dev; ssi_sram_addr_t mlli_sram_addr; void *buff_mgr_handle; diff --git a/drivers/staging/ccree/ssi_request_mgr.c b/drivers/staging/ccree/ssi_request_mgr.c index a2a82ef..0882efd 100644 --- a/drivers/staging/ccree/ssi_request_mgr.c +++ b/drivers/staging/ccree/ssi_request_mgr.c @@ -312,8 +312,9 @@ int send_request( return rc; } - /* HW queue is full - short sleep */ - msleep(1); + /* HW queue is full - wait for it to clear up */ + wait_for_completion_interruptible(&drvdata->hw_queue_avail); + reinit_completion(&drvdata->hw_queue_avail); } while (1); /* Additional completion descriptor is needed incase caller did not @@ -452,6 +453,8 @@ void complete_request(struct ssi_drvdata *drvdata) { struct ssi_request_mgr_handle *request_mgr_handle = drvdata->request_mgr_handle; + + complete(&drvdata->hw_queue_avail); #ifdef COMP_IN_WQ queue_delayed_work(request_mgr_handle->workq, &request_mgr_handle->compwork, 0);