From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D626C8303D for ; Fri, 4 Jul 2025 04:23:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9A7C3440155; Fri, 4 Jul 2025 00:23:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 95909440154; Fri, 4 Jul 2025 00:23:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F941440155; Fri, 4 Jul 2025 00:23:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 6FBBE440150 for ; Fri, 4 Jul 2025 00:23:35 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 48292815A1 for ; Fri, 4 Jul 2025 04:23:35 +0000 (UTC) X-FDA: 83625288390.05.1D70AFE Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by imf24.hostedemail.com (Postfix) with ESMTP id 40E74180005 for ; Fri, 4 Jul 2025 04:23:33 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=CkhIqpWY; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf24.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 198.175.65.17 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751603013; a=rsa-sha256; cv=none; b=lvfbl4u/sHaLH9MR0VvSGSzgTQ238s2dHngyg3OgiynueoirCd/lNQHIZFwOVkxMLjPUMi tDcQ+84PtYfrOtxCKepvODj3r0fzMeZLZ4b3VBmCQWTh1vlp7wZSL/b7ncPCJU/JACcPck ahQBizezKgrOxJJU/Ivqj6ZDBnSEDyE= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=CkhIqpWY; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf24.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 198.175.65.17 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751603013; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9Q/uLuWcuk8fpV5PywzC0htKTxocgqEi88+XRMs3nBc=; b=WlnAHtKfw/4Pa00oO1xTqrt/3XL8mUUxGD9KG7lzn0jI6w/LV5fV/9pb6SAJJAROB8ORe6 QMJyKy9PfiKuOEUaxWJG3pXRr6aLtXGwtE+Z+cGH73rECAUVVM1Y1marczfmKM5nTvzD8a iN24yq/reHEDheycpq5wt6pS5iAP8tg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1751603014; x=1783139014; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DTSwu6r21wgHvR1J2aR2eu8ycwe2ahVjOld/OEv0FIM=; b=CkhIqpWYi4zX50S/w6hEEuz5/+clfJd+rDT7tdJu74iDfFhecxhcWMXe C/lkJRcW62FrQtKywxRmGjUpT11ltVDfDlCdfA5f+ln+dXvrQKwEGVsUJ /wryXyi3IaPBopR7T1nEggadDLWKYJIlf1/bJzE3gtcVjcEAHRT7/puXw kC3MPVxkhJkuGIBrgtLmwo7F2Pk3EgFoBG9xG98P2BWKbqUF7LqpbTtRi 1vCFzKqCxjTCf/ENqGkq29ZNj1sRmcE4kf+c9NHdVM9mCqrZXraH5Fl+d 9gRuHwhYTsjnkw4/5s7hK02LgQJaYApI6BVM5eM7cD9NE2sdeAoda7mPd w==; X-CSE-ConnectionGUID: pl8iIIo6Ttamz9rQmgNm/Q== X-CSE-MsgGUID: i0z1VWJiRpedggfZZtPBlw== X-IronPort-AV: E=McAfee;i="6800,10657,11483"; a="53909035" X-IronPort-AV: E=Sophos;i="6.16,286,1744095600"; d="scan'208";a="53909035" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jul 2025 21:23:25 -0700 X-CSE-ConnectionGUID: A4jzOf7aTdKz7ShsPQS3YA== X-CSE-MsgGUID: EYRgmvE6QQ6BPBri3fVwKQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,286,1744095600"; d="scan'208";a="153968679" Received: from jf5300-b11a338t.jf.intel.com ([10.242.51.115]) by orviesa006.jf.intel.com with ESMTP; 03 Jul 2025 21:23:25 -0700 From: Kanchana P Sridhar To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, hannes@cmpxchg.org, yosry.ahmed@linux.dev, nphamcs@gmail.com, chengming.zhou@linux.dev, usamaarif642@gmail.com, ryan.roberts@arm.com, 21cnbao@gmail.com, ying.huang@linux.alibaba.com, akpm@linux-foundation.org, senozhatsky@chromium.org, linux-crypto@vger.kernel.org, herbert@gondor.apana.org.au, davem@davemloft.net, clabbe@baylibre.com, ardb@kernel.org, ebiggers@google.com, surenb@google.com, kristen.c.accardi@intel.com, vinicius.gomes@intel.com Cc: wajdi.k.feghali@intel.com, vinodh.gopal@intel.com, kanchana.p.sridhar@intel.com Subject: [PATCH v10 07/25] crypto: iaa - Refactor hardware descriptor setup into separate procedures. Date: Thu, 3 Jul 2025 21:23:05 -0700 Message-Id: <20250704042323.10318-8-kanchana.p.sridhar@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20250704042323.10318-1-kanchana.p.sridhar@intel.com> References: <20250704042323.10318-1-kanchana.p.sridhar@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 40E74180005 X-Stat-Signature: 7ph71mzn5sy4wjc5h69niud7q6phihjn X-Rspam-User: X-HE-Tag: 1751603013-375093 X-HE-Meta: U2FsdGVkX1/lJ7xopnxWR9+JaN1T+tPcGiQb+Cf880RciFbfyYZlw+64/Lk6rm8NdYLo9ScGMqGE6l5eSmD5SjNKzGvLkgBfk9wW3B+NQ3zGL4rX2/S06xx6lKN1VTJOagng9opuFXWFtm2CT6t0Is6gcQPRsQB4dxSrUm6mcPKyxgbM9VTVv0fpENQ18+luyoVYzanltYVFhEDPPF6+rGz63ZdPj0UM2YSPIcmn5jUOd48oUDMEW85RLXC6KL4+Qs/7pH0It6B/wkmojvY5ZTPAgdF3hRSpmM0KXmvbPvenMUeNqYQhSierO9DAeIruZEG8r+c2oZJCc3XIPFiA8F4/fKYjxxVPc2Bfl2P12vkDPH7WA8idFdoiH+bxbWbUS0uNXTkDV2FAMT3GrKMn+97MepsEUqugqniQ3v3pMNaw75f9AwA7topa6k0zE546aNBb3YClCV02xI8CM3xHD48JSWaTmrBYkLF2KaH5miV8Zd6MGdWK8dcKNmaerCP5KoM6cprCmndsfMxZxBtIaWFtP5knxuSpci6cH4R0Bp1bIY+qz1UGeucstUQlFT/FFrxGatS6Tm15eyeSLORhAb+rLDxHB2wojXx1AwlP7P1TTSHkii2kadvmYnVzhKuzrfCNdcpfe3dLDW409gpXOHkKCJEvKnlMXXFs2AxfEJM9WDsr2wSlD/aw1CnGBllnraR+MhfWrchkli404QLo2Ws40GiTcCHKVxLt0H2n79HVPpnSfiQ8I3UXz9cjbkyCYtw8ol+9NW/Q5Zvk5m+hcaeCJe6fHUk+GUyDn7iqWLIaQQfId+5pmoRe8jihNiAx824TdHrBUD8ENYjLNROoDcW95ms5an7uLfHPUM9HzL2Hwx6ksJ5i1IfunsQDGKrB7mIhVe1Vbomkh6m47XqmEoxkRDe/sxexc1pl0/rs2LEozL/RFJAOElQY+MQFQC8A/Hr7wKnXapt8rk/KJHv vPMXU/Ih qB9h4m6/L6ObUsdwSSn2XmZ9tNkU3DDj/5FxixENonaZwrtAs5f8tSvNGSf85YM1nA3K3HiSuGwY0777eqdwrV8TH2MmFr7I4iq2euBmmI9ZIHfeFxv1xvhijpGNbuP9BDmiAAPjvJAIBK3DGgIvrklpYJ+NZ73I+PRTBlR9kfdz660ICfqEKMu6cVg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This patch refactors the code that sets up the "struct iax_hw_desc" for compress/decompress ops, into distinct procedures to make the code more readable. Also, get_iaa_device_compression_mode() is deleted and the compression mode directly accessed from the iaa_device in the calling procedures. Signed-off-by: Kanchana P Sridhar --- drivers/crypto/intel/iaa/iaa_crypto_main.c | 99 ++++++++++++---------- 1 file changed, 56 insertions(+), 43 deletions(-) diff --git a/drivers/crypto/intel/iaa/iaa_crypto_main.c b/drivers/crypto/intel/iaa/iaa_crypto_main.c index 6018d0f43daae..fa23f50a77969 100644 --- a/drivers/crypto/intel/iaa/iaa_crypto_main.c +++ b/drivers/crypto/intel/iaa/iaa_crypto_main.c @@ -483,12 +483,6 @@ int add_iaa_compression_mode(const char *name, } EXPORT_SYMBOL_GPL(add_iaa_compression_mode); -static struct iaa_device_compression_mode * -get_iaa_device_compression_mode(struct iaa_device *iaa_device, int idx) -{ - return iaa_device->compression_modes[idx]; -} - static void free_device_compression_mode(struct iaa_device *iaa_device, struct iaa_device_compression_mode *device_mode) { @@ -1564,7 +1558,6 @@ static int iaa_compress_verify(struct crypto_tfm *tfm, struct acomp_req *req, dma_addr_t src_addr, unsigned int slen, dma_addr_t dst_addr, unsigned int dlen) { - struct iaa_device_compression_mode *active_compression_mode; struct iaa_compression_ctx *ctx = crypto_tfm_ctx(tfm); u32 *compression_crc = acomp_request_ctx(req); struct iaa_device *iaa_device; @@ -1583,8 +1576,6 @@ static int iaa_compress_verify(struct crypto_tfm *tfm, struct acomp_req *req, pdev = idxd->pdev; dev = &pdev->dev; - active_compression_mode = get_iaa_device_compression_mode(iaa_device, ctx->mode); - while ((idxd_desc == ERR_PTR(-EAGAIN)) && (alloc_desc_retries++ < ctx->alloc_decomp_desc_timeout)) { idxd_desc = idxd_alloc_desc(wq, IDXD_OP_NONBLOCK); cpu_relax(); @@ -1660,8 +1651,7 @@ static void iaa_desc_complete(struct idxd_desc *idxd_desc, pdev = idxd->pdev; dev = &pdev->dev; - active_compression_mode = get_iaa_device_compression_mode(iaa_device, - compression_ctx->mode); + active_compression_mode = iaa_device->compression_modes[compression_ctx->mode]; dev_dbg(dev, "%s: compression mode %s," " ctx->src_addr %llx, ctx->dst_addr %llx\n", __func__, active_compression_mode->name, @@ -1740,12 +1730,63 @@ static void iaa_desc_complete(struct idxd_desc *idxd_desc, percpu_ref_put(&iaa_wq->ref); } +static __always_inline struct iax_hw_desc * +iaa_setup_compress_hw_desc(struct idxd_desc *idxd_desc, + dma_addr_t src_addr, + unsigned int slen, + dma_addr_t dst_addr, + unsigned int dlen, + enum iaa_mode mode, + struct iaa_device_compression_mode *active_compression_mode) +{ + struct iax_hw_desc *desc = idxd_desc->iax_hw; + + desc->flags = IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR | IDXD_OP_FLAG_CC; + desc->opcode = IAX_OPCODE_COMPRESS; + desc->compr_flags = IAA_COMP_FLAGS; + desc->priv = 0; + + desc->src1_addr = (u64)src_addr; + desc->src1_size = slen; + desc->dst_addr = (u64)dst_addr; + desc->max_dst_size = dlen; + desc->flags |= IDXD_OP_FLAG_RD_SRC2_AECS; + desc->src2_addr = active_compression_mode->aecs_comp_table_dma_addr; + desc->src2_size = sizeof(struct aecs_comp_table_record); + desc->completion_addr = idxd_desc->compl_dma; + + return desc; +} + +static __always_inline struct iax_hw_desc * +iaa_setup_decompress_hw_desc(struct idxd_desc *idxd_desc, + dma_addr_t src_addr, + unsigned int slen, + dma_addr_t dst_addr, + unsigned int dlen) +{ + struct iax_hw_desc *desc = idxd_desc->iax_hw; + + desc->flags = IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR | IDXD_OP_FLAG_CC; + desc->opcode = IAX_OPCODE_DECOMPRESS; + desc->max_dst_size = PAGE_SIZE; + desc->decompr_flags = IAA_DECOMP_FLAGS; + desc->priv = 0; + + desc->src1_addr = (u64)src_addr; + desc->dst_addr = (u64)dst_addr; + desc->max_dst_size = dlen; + desc->src1_size = slen; + desc->completion_addr = idxd_desc->compl_dma; + + return desc; +} + static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req, struct idxd_wq *wq, dma_addr_t src_addr, unsigned int slen, dma_addr_t dst_addr, unsigned int *dlen) { - struct iaa_device_compression_mode *active_compression_mode; struct iaa_compression_ctx *ctx = crypto_tfm_ctx(tfm); u32 *compression_crc = acomp_request_ctx(req); struct iaa_device *iaa_device; @@ -1764,8 +1805,6 @@ static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req, pdev = idxd->pdev; dev = &pdev->dev; - active_compression_mode = get_iaa_device_compression_mode(iaa_device, ctx->mode); - while ((idxd_desc == ERR_PTR(-EAGAIN)) && (alloc_desc_retries++ < ctx->alloc_comp_desc_timeout)) { idxd_desc = idxd_alloc_desc(wq, IDXD_OP_NONBLOCK); cpu_relax(); @@ -1776,21 +1815,9 @@ static int iaa_compress(struct crypto_tfm *tfm, struct acomp_req *req, PTR_ERR(idxd_desc)); return -ENODEV; } - desc = idxd_desc->iax_hw; - desc->flags = IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR | - IDXD_OP_FLAG_RD_SRC2_AECS | IDXD_OP_FLAG_CC; - desc->opcode = IAX_OPCODE_COMPRESS; - desc->compr_flags = IAA_COMP_FLAGS; - desc->priv = 0; - - desc->src1_addr = (u64)src_addr; - desc->src1_size = slen; - desc->dst_addr = (u64)dst_addr; - desc->max_dst_size = *dlen; - desc->src2_addr = active_compression_mode->aecs_comp_table_dma_addr; - desc->src2_size = sizeof(struct aecs_comp_table_record); - desc->completion_addr = idxd_desc->compl_dma; + desc = iaa_setup_compress_hw_desc(idxd_desc, src_addr, slen, dst_addr, *dlen, + ctx->mode, iaa_device->compression_modes[ctx->mode]); if (likely(!ctx->use_irq)) { ret = idxd_submit_desc(wq, idxd_desc); @@ -1852,7 +1879,6 @@ static int iaa_decompress(struct crypto_tfm *tfm, struct acomp_req *req, dma_addr_t src_addr, unsigned int slen, dma_addr_t dst_addr, unsigned int *dlen) { - struct iaa_device_compression_mode *active_compression_mode; struct iaa_compression_ctx *ctx = crypto_tfm_ctx(tfm); struct iaa_device *iaa_device; struct idxd_desc *idxd_desc = ERR_PTR(-EAGAIN); @@ -1870,8 +1896,6 @@ static int iaa_decompress(struct crypto_tfm *tfm, struct acomp_req *req, pdev = idxd->pdev; dev = &pdev->dev; - active_compression_mode = get_iaa_device_compression_mode(iaa_device, ctx->mode); - while ((idxd_desc == ERR_PTR(-EAGAIN)) && (alloc_desc_retries++ < ctx->alloc_decomp_desc_timeout)) { idxd_desc = idxd_alloc_desc(wq, IDXD_OP_NONBLOCK); cpu_relax(); @@ -1884,19 +1908,8 @@ static int iaa_decompress(struct crypto_tfm *tfm, struct acomp_req *req, idxd_desc = NULL; goto fallback_software_decomp; } - desc = idxd_desc->iax_hw; - desc->flags = IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR | IDXD_OP_FLAG_CC; - desc->opcode = IAX_OPCODE_DECOMPRESS; - desc->max_dst_size = PAGE_SIZE; - desc->decompr_flags = IAA_DECOMP_FLAGS; - desc->priv = 0; - - desc->src1_addr = (u64)src_addr; - desc->dst_addr = (u64)dst_addr; - desc->max_dst_size = *dlen; - desc->src1_size = slen; - desc->completion_addr = idxd_desc->compl_dma; + desc = iaa_setup_decompress_hw_desc(idxd_desc, src_addr, slen, dst_addr, *dlen); if (likely(!ctx->use_irq)) { ret = idxd_submit_desc(wq, idxd_desc); -- 2.27.0