Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp4620627pxu; Tue, 13 Oct 2020 03:04:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxkrGTFrmL5k2gYwAlmUD2/5KROdSFuNXJxXbsAe3TAMbSxeYV43iAfr3l3viufOg62pYXW X-Received: by 2002:a17:906:6d89:: with SMTP id h9mr31378863ejt.152.1602583483405; Tue, 13 Oct 2020 03:04:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602583483; cv=none; d=google.com; s=arc-20160816; b=M8X4lCHYSehZXocKCHrIy9uQNdQr88nGZ+3Xwv4Gnu1GDVtlWVDIUMs1k0y0p7bfgu 6GLgV3l9J/tyrHDPT+eRf64LQoG9PjIqI0a5EzDVgqSBDx8S/UEfXIoLJKpU7Ms2Pbc0 PNnv8n5RPQRMB5vK09/MVtj8r9UxCazlSn5w222un2nvl+k4VdLR5i51nnXioVy1ssXs laJ+fUycWBNYmggzM4Z2H/nYoffR/5vL3IM4oddba9NOOKwoYkyhg2i9+2bSnOPf53y1 V7i4gMc33xFbsB8w2LJgBVrFWDQAaDHT0+vCRm3gSPXAK1Eusrt3RMq+aMRAzNezKp+7 Q22Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=mgSd6pnsUBNBoQ/0SNeK4WMWK2uJjHbD81fATlD06UM=; b=mCBqr0aKFliqsWDpzXMnEI0Kih0f+9Rgs0+0Ph9LlDri0TlNtAgaVMZidREoCTMAoK tG7CNuogDGBnUxsmifJApW5prsu+6c+yGjpWphIkOtAHkVUoRpqV2f4/3d5e/HI6YLCw V2FhJewf/JyqQ5NJEeySBTGDpd5d/EfqbCYQ0gZyGG8SMmJQ8e2JvjLtfUmtUBGBGiXx EvE8bhzBLZYTK3oC/nkSIu+oDDTT+s0+2BQ2AM9YbEhH75fIzis+UsSl/PTHjIcZMk8h /ZlUtgLbMGuCcWc/ZZ8mao31MklGwpyv0Xkxafd8FkVtlVSjC2D1qGIIWZWeh6IUcMiL wzuA== 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 f2si19761655edl.147.2020.10.13.03.04.20; Tue, 13 Oct 2020 03:04:43 -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 S1730674AbgJLUjh (ORCPT + 99 others); Mon, 12 Oct 2020 16:39:37 -0400 Received: from mga09.intel.com ([134.134.136.24]:34024 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730636AbgJLUjh (ORCPT ); Mon, 12 Oct 2020 16:39:37 -0400 IronPort-SDR: 2ZaON1vbzZv1dI5nfrVnpWIvSdzduKzvT65ptWAQbdf7e+NWNq0xYLQKl1yjaDwmQeraWuwk+E /qSJyhbmvx8Q== X-IronPort-AV: E=McAfee;i="6000,8403,9772"; a="165913145" X-IronPort-AV: E=Sophos;i="5.77,367,1596524400"; d="scan'208";a="165913145" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2020 13:39:37 -0700 IronPort-SDR: h+bsIcJOn26VYFu3VUcUYUa1tYBf9ZwwxxHA+IjhHVeAXmTjHe4TshKQsv9E7W1s6IE8D7u5c5 TSmS3VY/oqIw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,367,1596524400"; d="scan'208";a="299328218" Received: from silpixa00400314.ir.intel.com (HELO silpixa00400314.ger.corp.intel.com) ([10.237.222.51]) by fmsmga007.fm.intel.com with ESMTP; 12 Oct 2020 13:39:35 -0700 From: Giovanni Cabiddu To: herbert@gondor.apana.org.au Cc: linux-crypto@vger.kernel.org, qat-linux@intel.com, Giovanni Cabiddu , Wojciech Ziemba , Maksim Lukoshkov , Fiona Trahe , Andy Shevchenko Subject: [PATCH 18/31] crypto: qat - enable ring after pair is programmed Date: Mon, 12 Oct 2020 21:38:34 +0100 Message-Id: <20201012203847.340030-19-giovanni.cabiddu@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201012203847.340030-1-giovanni.cabiddu@intel.com> References: <20201012203847.340030-1-giovanni.cabiddu@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Enable arbitration on the TX ring only after the RX ring is programmed. Before this change, arbitration was enabled on the TX ring before the RX ring was programmed allowing the HW to process a request before having the ring pair configured. With this change, the arbitration logic is programmed only if the TX half of the ring mask matches the RX half. This change does not affect QAT GEN2 devices (c62x, c3xxx and dh895xcc), but it is a must for QAT GEN4 devices since the CSRs of the ring pair are locked after arbitration is enabled on the TX ring. Signed-off-by: Giovanni Cabiddu Reviewed-by: Wojciech Ziemba Reviewed-by: Maksim Lukoshkov Reviewed-by: Fiona Trahe Reviewed-by: Andy Shevchenko --- .../crypto/qat/qat_common/adf_hw_arbiter.c | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/qat/qat_common/adf_hw_arbiter.c b/drivers/crypto/qat/qat_common/adf_hw_arbiter.c index 9dc9d58f6093..bd03c8f54eb4 100644 --- a/drivers/crypto/qat/qat_common/adf_hw_arbiter.c +++ b/drivers/crypto/qat/qat_common/adf_hw_arbiter.c @@ -55,9 +55,27 @@ EXPORT_SYMBOL_GPL(adf_init_arb); void adf_update_ring_arb(struct adf_etr_ring_data *ring) { + struct adf_accel_dev *accel_dev = ring->bank->accel_dev; + struct adf_hw_device_data *hw_data = accel_dev->hw_device; + u32 tx_ring_mask = hw_data->tx_rings_mask; + u32 shift = hw_data->tx_rx_gap; + u32 arben, arben_tx, arben_rx; + u32 rx_ring_mask; + + /* + * Enable arbitration on a ring only if the TX half of the ring mask + * matches the RX part. This results in writes to CSR on both TX and + * RX update - only one is necessary, but both are done for + * simplicity. + */ + rx_ring_mask = tx_ring_mask << shift; + arben_tx = (ring->bank->ring_mask & tx_ring_mask) >> 0; + arben_rx = (ring->bank->ring_mask & rx_ring_mask) >> shift; + arben = arben_tx & arben_rx; + WRITE_CSR_ARB_RINGSRVARBEN(ring->bank->csr_addr, ring->bank->bank_number, - ring->bank->ring_mask & 0xFF); + arben); } void adf_exit_arb(struct adf_accel_dev *accel_dev) -- 2.26.2