Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp1604017ybg; Thu, 11 Jun 2020 14:23:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9J2qS4rv0hoBUCXsTdEEjCO6MICFg6/VOFuWYp8163eg8FzGyIvIskvzQbzKHC2oFwns5 X-Received: by 2002:a17:906:fa92:: with SMTP id lt18mr10803752ejb.423.1591910617914; Thu, 11 Jun 2020 14:23:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591910617; cv=none; d=google.com; s=arc-20160816; b=0kUzyD6G2BvaE9L989gWV11sL6IQ1ABZ5CJvMqYwug0fqu1OWgAbFRnBqThk6Okpua eASjXzZb/kv2MoD7Yv4bgY3hoU8U1b0PRnitBc0/cJQpB2jTN6s99JkZqe+cucjMN2xh 4FPet1PfoNJgyaSUg3T3nUBbuZoLr4/UcZxgA/i+R7Oi9G8EbBOFZeSOjQQbo//m/6si t6aiIWCNOoJFUhv/0/1PmU0YZEznidG9YBvb2a0IBM+UsFTZj0XIvQRkPrqz+5l++Iec 50T+KGZ6Ipk0w8YpXa+PI4Y/0CoTZ4BGyNOukMIxSwHokPwYflhOohzaGUMglkQyXvXP nClw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=PRwqfzBJR3wQNUkPwMFlnmgsh4zJ2PJmSiMDSCMvoQg=; b=fxpY8AyHtzWc2NvIAktDcvSh84SqXG0sJVrcWrzxXipCQWegOjSJ+oNBrIATIYAb0V u1Dqhig1TedZVtyveIOWxAF/bb6leRnL+uYYuQ6sLr2YknaR/nqFmC0ej3460stbzFfK mvDPdyZ1gryGQCvZZ0gCcnWib/n9w9NBv1QKcfcRIIm314XCXyrVKWP7S515Kz+oY1R4 1CmS2igt66nkwvX67qkJFvBkr0QuOqhRqaIVFFzVc3DqC/0V7Mm/C9GSlkbAjLjG+0zL C/rAQVygdyC4aggREBS4cBhaRyy3goaVNsqMPV4svNbVVgibb8y92OlDFf1tyAjNfUvS fgdQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w19si2224378edt.402.2020.06.11.14.23.13; Thu, 11 Jun 2020 14:23:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726364AbgFKVWF (ORCPT + 99 others); Thu, 11 Jun 2020 17:22:05 -0400 Received: from mga04.intel.com ([192.55.52.120]:17090 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726153AbgFKVWF (ORCPT ); Thu, 11 Jun 2020 17:22:05 -0400 IronPort-SDR: aVXfT0g4FwV0zV4BpVVO31zLNZzQ/iLYlHvna3CtzRrf6lqdm0m03D8NkVKa0Wg3rB+TJA756T kO9hCN8ZEMYA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2020 14:22:04 -0700 IronPort-SDR: d4cAU04gFWhTVPJqJdCuYnE/tam7EzMyg/MqRU/SL0hlUp2MxdTzoOWv8BQc0YPLoThyXyslE/ zRMZa5C9Avdw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,501,1583222400"; d="scan'208";a="314926411" Received: from silpixa00400314.ir.intel.com (HELO silpixa00400314.ger.corp.intel.com) ([10.237.222.51]) by FMSMGA003.fm.intel.com with ESMTP; 11 Jun 2020 14:22:02 -0700 From: Giovanni Cabiddu To: herbert@gondor.apana.org.au Cc: linux-crypto@vger.kernel.org, Wojciech Ziemba , Giovanni Cabiddu Subject: [PATCH 3/3] crypto: qat - update timeout logic in put admin msg Date: Thu, 11 Jun 2020 22:14:49 +0100 Message-Id: <20200611211449.76144-4-giovanni.cabiddu@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200611211449.76144-1-giovanni.cabiddu@intel.com> References: <20200611211449.76144-1-giovanni.cabiddu@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org From: Wojciech Ziemba Replace timeout logic in adf_put_admin_msg_sync() with existing macro readl_poll_timeout(). Signed-off-by: Wojciech Ziemba Signed-off-by: Giovanni Cabiddu --- drivers/crypto/qat/qat_common/adf_admin.c | 34 +++++++++++++---------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/crypto/qat/qat_common/adf_admin.c b/drivers/crypto/qat/qat_common/adf_admin.c index aa610f80296d..1c8ca151a963 100644 --- a/drivers/crypto/qat/qat_common/adf_admin.c +++ b/drivers/crypto/qat/qat_common/adf_admin.c @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include "adf_accel_devices.h" @@ -17,6 +17,8 @@ #define ADF_DH895XCC_MAILBOX_STRIDE 0x1000 #define ADF_ADMINMSG_LEN 32 #define ADF_CONST_TABLE_SIZE 1024 +#define ADF_ADMIN_POLL_DELAY_US 20 +#define ADF_ADMIN_POLL_TIMEOUT_US (5 * USEC_PER_SEC) static const u8 const_tab[1024] __aligned(1024) = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -111,12 +113,13 @@ struct adf_admin_comms { static int adf_put_admin_msg_sync(struct adf_accel_dev *accel_dev, u32 ae, void *in, void *out) { + int ret; + u32 status; struct adf_admin_comms *admin = accel_dev->admin; int offset = ae * ADF_ADMINMSG_LEN * 2; void __iomem *mailbox = admin->mailbox_addr; int mb_offset = ae * ADF_DH895XCC_MAILBOX_STRIDE; struct icp_qat_fw_init_admin_req *request = in; - int times, received; mutex_lock(&admin->lock); @@ -127,24 +130,25 @@ static int adf_put_admin_msg_sync(struct adf_accel_dev *accel_dev, u32 ae, memcpy(admin->virt_addr + offset, in, ADF_ADMINMSG_LEN); ADF_CSR_WR(mailbox, mb_offset, 1); - received = 0; - for (times = 0; times < 50; times++) { - msleep(20); - if (ADF_CSR_RD(mailbox, mb_offset) == 0) { - received = 1; - break; - } - } - if (received) - memcpy(out, admin->virt_addr + offset + - ADF_ADMINMSG_LEN, ADF_ADMINMSG_LEN); - else + + ret = readl_poll_timeout(mailbox + mb_offset, status, + status == 0, ADF_ADMIN_POLL_DELAY_US, + ADF_ADMIN_POLL_TIMEOUT_US); + if (ret < 0) { + /* Response timeout */ dev_err(&GET_DEV(accel_dev), "Failed to send admin msg %d to accelerator %d\n", request->cmd_id, ae); + } else { + /* Response received from admin message, we can now + * make response data available in "out" parameter. + */ + memcpy(out, admin->virt_addr + offset + + ADF_ADMINMSG_LEN, ADF_ADMINMSG_LEN); + } mutex_unlock(&admin->lock); - return received ? 0 : -EFAULT; + return ret; } static int adf_send_admin(struct adf_accel_dev *accel_dev, -- 2.26.2