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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E2924CAC5B5 for ; Fri, 26 Sep 2025 03:35:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 668A28E000C; Thu, 25 Sep 2025 23:35:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5CE508E000E; Thu, 25 Sep 2025 23:35:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3A6F58E000C; Thu, 25 Sep 2025 23:35:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 246F08E000C for ; Thu, 25 Sep 2025 23:35:15 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id E945A11A4AE for ; Fri, 26 Sep 2025 03:35:14 +0000 (UTC) X-FDA: 83929985748.26.459E0D7 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) by imf29.hostedemail.com (Postfix) with ESMTP id CD308120004 for ; Fri, 26 Sep 2025 03:35:12 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=XNX+K3DI; spf=pass (imf29.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 192.198.163.13 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1758857713; 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=+ymkuSA2NY1lj4KvMNeE2mD/OxIFdhpUrh1Czr1cNnU=; b=Tm/HOS/0qboAxYPzJaXYxmSzOfWdMsF7MmvyA26hI76ctffLg5B6XfSKxIYec9+F6toP48 BYg071wIHScRxUM5LnvQovWECBpwz4dTyYdGFVk8YethBdG/NPSNhEuyWOkbr8vZj2Y3uz NQ9FTtacStD/ycaE+vOaSQeSoqfNh64= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=XNX+K3DI; spf=pass (imf29.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 192.198.163.13 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1758857713; a=rsa-sha256; cv=none; b=sZsSPm5avz371qPKOfvH8TtfwElmmG5+bdrqCbpywloAzvzX+t8RM+rwBof1+M5206hSWf kVHccXYeLdK+L/d7xQrOw+Rx2L5Pl21oAGvwXE/EHWt5zJSX0q3Zj2sQ0gibnFAY/9lXfs VvBLwHqdDK1MWCqKqNU8C4F2/kd2oiQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1758857713; x=1790393713; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FALZN5fZ5Gqh9fvIgLNDNXJiGlP/yWDeY85+GzyStiw=; b=XNX+K3DImhPllgPyLbzHcxEDiR2sVwBdIjZYQNvX+9SATkWZMh/A57kq +HOuoA9Nm5mk5yUpFCh71SQhMVQZYb/SjX8AHvXi2zgZxNa+XBTqCh8Rn M7TsGC69Dj5+0cSsNPXpjbcFN420/NUNCvC0uLrBfPAVyyzTi06AhZxpB B4HsdoCdR0Nncmo8VxITY8eLDf7txIYvmpbIFHv4F2HtU5S1hQvlSqZHw 6+E504IqbhU9YEWRkdloaTMcrURVd+qOU8cNPDZpN6U/23EoIz+ppWMIW /IJWq08X1vkD/0QNKqna74qJ18JhwaGdcxrAmtkkiHZu6KZgR8VllTD3F A==; X-CSE-ConnectionGUID: uUhBc6XhSqyWtf03EPTXrg== X-CSE-MsgGUID: HOB2VuhdQ3mu4+dYKRxh+A== X-IronPort-AV: E=McAfee;i="6800,10657,11564"; a="63819492" X-IronPort-AV: E=Sophos;i="6.18,294,1751266800"; d="scan'208";a="63819492" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2025 20:35:05 -0700 X-CSE-ConnectionGUID: eu3Q2VFWT52sG6FeWQnnQA== X-CSE-MsgGUID: 0jC17iSzS8OrUGdUyu9Iew== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.18,294,1751266800"; d="scan'208";a="214636568" Received: from jf5300-b11a338t.jf.intel.com ([10.242.51.115]) by orviesa001.jf.intel.com with ESMTP; 25 Sep 2025 20:35:04 -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, sj@kernel.org, kasong@tencent.com, 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 v12 07/23] crypto: iaa - Refactor hardware descriptor setup into separate procedures. Date: Thu, 25 Sep 2025 20:34:46 -0700 Message-Id: <20250926033502.7486-8-kanchana.p.sridhar@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20250926033502.7486-1-kanchana.p.sridhar@intel.com> References: <20250926033502.7486-1-kanchana.p.sridhar@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: CD308120004 X-Stat-Signature: sj9bokapmi35et983k9q8jbpoz7mbwda X-HE-Tag: 1758857712-308076 X-HE-Meta: U2FsdGVkX1/2ieYurH40TgkFG0j1a1yYmcG5IkjZAbUky4h2ln49cD/QVbGtW4P1AxL9l5E5c3/7RRR7x+/Z4zinhRWbWFqcCCLj01SE8dGjcH9nTYhVntwizQZE/LcCeoayYeGaptvj10jWsj9DOJf34oSBuL8Omc/WGXp74BrYR/itqqQJZ1xgxo+VuWyhmyiJH7zhpgJFbS4C4q62GJ0KasyvhYjaYVlwGD/16Uful5hekX6PWDa+dlwVw4oBN8p5Y0Ufb8ojUDmTN7x3Ev9zi+l9oAV6uxu+CQCu7wGFlijbljjXgt/SADejvqnXBEHP9cGQHWF+vE8I/0MHvjkkfAP7//YeMe1q8KAnE1Ip6ZguueKPJZdGIsojrLSu0wZweF/7YQvZayoSWUSNdrUXB+ugxICVYvw0ke/XVA55fxrcemuOdq+D9uUSyXb3Mb1hTtvracCT4q5bjY2muyZTv6lG0qPRsNcrjfryjpfijqyxN8keKfZK5Sd4mGqaoF/7+ZdLCneKe7m0qE9146UfqOUGLRp/BZCMqxFr0MwWdPC3SgVRVwaDNUDDN71EqYPREWDoSrMPjUswV9hOUHsVWzYXvfF/kxii8YHN3FZSC+EQCd77OMletuhJ/OCI7cH/5lJXgvPzFN/iiwgdREISOsYimx6hTN6DsiF7hQw2McOdSLB07GS8azfep2Z0tx2P3aDvmvC5bx4VLoM3fwNPlcqOgZA9WvskGf+LSGQZpSDL2/NDDIp+zbdNzt+h/a41yqbTgLEwO56H/7rco20ansVWwSOyilObIp6g8+iXrrGx7+RRiH1I8WGZMvq7TZq5I0UPyp7JTGcCWxbZ0O0pvcCuyBth3GMa8Lg6fWtbAvfBar2mOVLaCoH1YaNFHJZMqWhmPd990xkd6A8L8SNYt7PtauV9zvLtMqbH6Hzx8UbSF029B2gUebPt+DXaKkyCQocEmMHylm0MkYk rIO4Av12 w7zsqwPMDNgzhATfT1uL044Z0f05yGB8Grsr2Ng6qY4eX2SNjew9Xik3YehgOYHOBM/l7AAObYVMAx65BXP5bU0hzaZ0iaL45TS5gLWH/2t514BTnd+saf2+2oGPTn93apJwTQx8cjF8NuT+X1d2wa1LWjUhGu5iZ2krlNHzvUN4WtJQLRXKw9sIS+Q== 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 38b4be0c10b0..c94e7abd3909 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