From patchwork Wed Jan 3 09:50:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Barry Song <21cnbao@gmail.com> X-Patchwork-Id: 13509816 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 4914BC3DA6E for ; Wed, 3 Jan 2024 09:50:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C91ED8D005D; Wed, 3 Jan 2024 04:50:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C3F298D0053; Wed, 3 Jan 2024 04:50:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AB8148D005D; Wed, 3 Jan 2024 04:50:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 92DDC8D0053 for ; Wed, 3 Jan 2024 04:50:36 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 6AB85402EF for ; Wed, 3 Jan 2024 09:50:36 +0000 (UTC) X-FDA: 81637530072.23.28062EB Received: from mail-yb1-f174.google.com (mail-yb1-f174.google.com [209.85.219.174]) by imf28.hostedemail.com (Postfix) with ESMTP id A6A35C000C for ; Wed, 3 Jan 2024 09:50:34 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="aj1St0G/"; spf=pass (imf28.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.219.174 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704275434; 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=HwysZAJ6ghv3K37MmkiHDv50fMbQAcaQTVa/Nper+78=; b=VCYKURuDL+UhHL+/StWU4ULBIUTWrNfjXf436EaVr2QXoQUVCypBEPkCxMz9PCCdkvj2Io o0w5mRIbA+Lx5OZBg8mG5/DbOLO2zNH1BhxrrSrNeFMnm6V/pmZ5wAkrBqOUpFKO/iwzwS EqOg2aZfC4m/0swAdpj0ozUq93IiV5U= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="aj1St0G/"; spf=pass (imf28.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.219.174 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704275434; a=rsa-sha256; cv=none; b=kvrODMcy80xjBUWCjU5ppbcFcuL6oeeP+iTjmprEwyf5wsIzlDQ2+C35j30DYbZ6BJD3DJ iRGV0gi1XB/35s3JhnmQlVfCzXmrLFsE3YVpCtwhFxgIzozE5YIiDWmdvGLi0UXSa0Lfqh b1qU22R9GKKrCnmAkxDRbl8B63rcEv0= Received: by mail-yb1-f174.google.com with SMTP id 3f1490d57ef6-dbdc52f2359so6298844276.3 for ; Wed, 03 Jan 2024 01:50:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704275434; x=1704880234; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HwysZAJ6ghv3K37MmkiHDv50fMbQAcaQTVa/Nper+78=; b=aj1St0G/AOOoWvejimT4eGzvAtG/XwQ97ODDZ2fROYJalSN9ZJdX6UodEQr3yZzrFh I27yRArnqWsrJaHAQl5CMQ1VFvdYL3EnkR8koKmjJ/7jRSBnHosjRaq+jTuDlX3QY3Mr 8q9UlQois/0zDvKw1IOIHdm5wUVEVVXWDzYZqDlemoTJ1qi/TP8X4N4cUI8JS1FuCLBg e6ukdGHrw8E9bo+jJ4U/Oc6K5PrjXyV2jEV/e++CP3z/M0GbnnakyuGlEGLb7P9uo88q Wy5QE7P1tW7V8iPoyU/va2LJYV5Feru6DEVBT9d81K16dplLclXt+YCPSWFGvEWXLSr/ 8Gwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704275434; x=1704880234; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HwysZAJ6ghv3K37MmkiHDv50fMbQAcaQTVa/Nper+78=; b=RPzRuQ95ICqXDk7+YfLWapcHuMqVO5UILHlWwvRfl0aE8QAiqDwmuDlmZurW4xvI66 i9dvwZajmVFbE0z/KqMKbKOCVykE0otwV2I3j2xHEjuO7Lo7lwXxXL4YCvUoxRJuWmK1 nqf7truo92YzolxMOPt/vpab/Es/xyT5SKCx9l8bWbLIzo1/zE5toc4pgt7uY30RvMrg JdKPNdykKSZgbqmI7HGoa/oTvEEoZlFnx3T7n3GZ06R6Lxw3MVYVb/KfIGkuhbYuN8B/ bfw3tiOmmZQqr4y2wGnwPhqj66nWxGnChs77xjpxjoWCN5jV6rT/0npKzZAVhrnJ1vJp U/Og== X-Gm-Message-State: AOJu0YwFLs3P7tg0sScoT2E1pH3gCPDfdk1lNjFmkk2kBbaqiB0bCT8j pydde9C8OeHZKhhACKSfqPo= X-Google-Smtp-Source: AGHT+IH42YZIV6OEBL93QwLYO40q0ASQ2KNUbZP1KhhoeQJlaCT6y4cGhqSERL4Av/vp/qrwoEL/nA== X-Received: by 2002:a25:b8b:0:b0:db5:4ece:ad01 with SMTP id 133-20020a250b8b000000b00db54ecead01mr8579026ybl.25.1704275433672; Wed, 03 Jan 2024 01:50:33 -0800 (PST) Received: from barry-desktop.hub ([2407:7000:8942:5500:a7d6:f37a:9130:cd96]) by smtp.gmail.com with ESMTPSA id a34-20020a631a22000000b005c65e82a0cbsm21823483pga.17.2024.01.03.01.50.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 01:50:33 -0800 (PST) From: Barry Song <21cnbao@gmail.com> To: herbert@gondor.apana.org.au, davem@davemloft.net, akpm@linux-foundation.org, ddstreet@ieee.org, sjenning@redhat.com, vitaly.wool@konsulko.com, linux-crypto@vger.kernel.org Cc: chriscli@google.com, chrisl@kernel.org, hannes@cmpxchg.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, nphamcs@gmail.com, yosryahmed@google.com, zhouchengming@bytedance.com, Barry Song Subject: [PATCH 1/3] crypto: introduce acomp_is_async to expose if a acomp has a scomp backend Date: Wed, 3 Jan 2024 22:50:04 +1300 Message-Id: <20240103095006.608744-2-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240103095006.608744-1-21cnbao@gmail.com> References: <20240103095006.608744-1-21cnbao@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: A6A35C000C X-Rspam-User: X-Stat-Signature: bayr7mu7riic1tqkyuqfme61ig1dkbuw X-Rspamd-Server: rspam01 X-HE-Tag: 1704275434-953079 X-HE-Meta: U2FsdGVkX18Mo9GF021+KawjF6an9p1CrRYB6bGwOE4fQch2X69ijQs4bW8Sv08IKQ3DfzIOzi4KxKtmNnC69LITg8dQW6ZQBpquT8k/o9a2j8VigER43bmt6kXLGzfkZv2cfi0qwIbI6+ugFysgHFD1zF1NI6orZI0CedA8hPGe2RqCHqn2QPpJOBO3ftgCaE+/+k2HnXy1wm0takacWESWFs7mzyBhDEi1JjcJZfp6Fwx8q3cceCfHm9L8YsxOLpQzmY4BE/u+PkD5InZLH6hvKfQ0UMxZChXP6MXWPdtlAF4GcWAEbKkuqzEJvlJ9lE/n0zLG9qJFOZF1O848qsBDGHBbO2WiDJakg/K2OzM/CeHjL1qORFwdnCIaRupPM22wGMC5rWwXBylk6N8btRo3yOUe24FTh4NJHz/O/pEUvX/XMpnIwkZmz75wHWKnYUMXVH6hWlqYz95kQ3f8W1DX0RR9hzRP+MzzjHiPpgPmWjfFcqqQ+SfI2JjRxxKNU6ujd5hYsvA06VEHnth8NCXhV5CLbuMPjz1FAo09G8cbNCreU3THQZKJ/oX+9mW3+2QnEhGHzJp58elfXrI0KERK01R1A1TwGjRBE+2CGXy2UKFmEJWZJgVVhi9MWT2cBzcE9mr6VqnO9o9DnkM7paU+UtD11HZHtt7NSVmip/jlZge/GhkX4hBh7M94Pb3LkyCwdQlQsok5aYLDrrgDKNpsPNeauKsrSVFsK9nbM0ety9vR6PQApdrO5TV9sbYdVpdHTrG5oKj44ZIptdxvgzgVXN+BJD+bdWQMyLH+KZjQmBVRIBRQSAxj7p/Fk3nIpW5RIKBdsmJMVBaEpz30c2tj62lH5CkGz8yoGFqclphj6TdCPBObU292haFUB9sHPf7glqKsMOh+19lLodNDyWrtwwqJAIx0f/f/05W2hXj0+UWfpNYILc8zuXG5kpIeaXxnofmMEsP5usarOiG G7mwLMbL ySokpHBMUKH6Tc+BgS55dB0MLQ6DCAwpT79sXbrIRwl07EMI+eTkufm//vMV07SuIXOUjJRusCCgfuPfeQKn5NGBmVP/Fysk+SkR8ffRq/HKnhPmvrXItTweVP1L9UROdwt77f9LAGxDOKwJ3aIJn/uT5sCIJP0l/p8/94KgQ2krFQ1T5o+ZkSLdGNsB+FoYWantWEvz7AoFe+PYQ6aouMAnUngnUUQ/HyAhFeEMsr2MDSPXlJgfDXAIz+hjrIHwsq9C+iTMaOmUFxtbfrmkNOOpAuJ2iKwsTa+27lUI2BZbUJN0/SbXd0N/nPpjDfayNRgakQzqscEyZrM5jNAS0tjTpL1fps5A06M7n2RjUi6+DWmfBWaGyPjPwV49i4m37wSWjMxPOwmKZbU5FbLMfi6e4n9vLtBbmFUSAJ25H6A31a3OXFMIa90gCQpMQbRYPaAbbZyTiMFB+H/UiZZOCfP17Djv7uD3xENsxazzkPKu8nx1JgEi7N5EwdmDWuXpztjaoZe5cvg4Giyxgf3TCOvh+MM43QkrGkNYckch/csx+mG8AXQ+heKX88eTcfwm3ZEDqP63nUGwk4VnQKk9OsdLc3clW4Q+Z65jplzOYLzfZNv6/LfSnh/EXTHc6Vwb9V/X9UnDPs2Rg1Q7V+rnHuZmm9Rac6m/yIFQi 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: From: Barry Song Almost all CPU-based compressors/decompressors are actually synchronous though they support acomp APIs. While some hardware has hardware-based accelerators to offload CPU's work such as hisilicon and intel/qat/, their drivers are working in async mode. Letting acomp's users know exactly if the acomp is really async will help users know if the compression and decompression procedure can sleep. Signed-off-by: Barry Song Tested-by: Chengming Zhou --- crypto/acompress.c | 8 ++++++++ include/crypto/acompress.h | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/crypto/acompress.c b/crypto/acompress.c index 1c682810a484..99118e879a4a 100644 --- a/crypto/acompress.c +++ b/crypto/acompress.c @@ -152,6 +152,14 @@ struct crypto_acomp *crypto_alloc_acomp_node(const char *alg_name, u32 type, } EXPORT_SYMBOL_GPL(crypto_alloc_acomp_node); +bool acomp_is_async(struct crypto_acomp *acomp) +{ + struct crypto_tfm *tfm = crypto_acomp_tfm(acomp); + + return tfm->__crt_alg->cra_type == &crypto_acomp_type; +} +EXPORT_SYMBOL_GPL(acomp_is_async); + struct acomp_req *acomp_request_alloc(struct crypto_acomp *acomp) { struct crypto_tfm *tfm = crypto_acomp_tfm(acomp); diff --git a/include/crypto/acompress.h b/include/crypto/acompress.h index 574cffc90730..d91830c2d442 100644 --- a/include/crypto/acompress.h +++ b/include/crypto/acompress.h @@ -204,6 +204,15 @@ struct acomp_req *acomp_request_alloc(struct crypto_acomp *tfm); */ void acomp_request_free(struct acomp_req *req); +/** + * acomp_is_async() -- check if an acomp is asynchronous(can sleep) + * + * @tfm: ACOMPRESS tfm handle allocated with crypto_alloc_acomp() + * + * Return: true if the acomp is asynchronous, otherwise, false + */ +bool acomp_is_async(struct crypto_acomp *tfm); + /** * acomp_request_set_callback() -- Sets an asynchronous callback * From patchwork Wed Jan 3 09:50:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Barry Song <21cnbao@gmail.com> X-Patchwork-Id: 13509817 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 60A96C3DA6E for ; Wed, 3 Jan 2024 09:50:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DA1118D005E; Wed, 3 Jan 2024 04:50:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D50A78D0053; Wed, 3 Jan 2024 04:50:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BF0C78D005E; Wed, 3 Jan 2024 04:50:43 -0500 (EST) 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 AB5198D0053 for ; Wed, 3 Jan 2024 04:50:43 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 829011401B8 for ; Wed, 3 Jan 2024 09:50:43 +0000 (UTC) X-FDA: 81637530366.16.7AA1C31 Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by imf26.hostedemail.com (Postfix) with ESMTP id ABF78140006 for ; Wed, 3 Jan 2024 09:50:41 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XEmvYvgS; spf=pass (imf26.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704275441; 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=HF2P2SEmq7vRAtkf5d5h6lFP1PY7Yzig5CUd/10AwIg=; b=ztcVnnj1BXaCzBXCggzMY3oN5XeK4CpCgN2Xkdt8V/wFeyLgfRjqwYIZjPjUjdOgKhTT/A DzmfMeoXses6BSVsdZEwMjroY/J1hPqqz67/iuNZkXm+wVgRV2Yp/a64hj0lwu2uzpdn0n rZ9kazyD47ctZ71v9pzfzl/yNsBQEYY= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XEmvYvgS; spf=pass (imf26.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704275441; a=rsa-sha256; cv=none; b=zVvwjG5c4QvB5NDM44VUb1Tb7ICvGM3DRzI3SxFB0ZwN7QAEKyJLq+8DNGBFdhK8NsgdVe /0sb0KCtN+0o193IwXQbf+6C1XdJ1bz8/e+bHIHP3roOplGZlYaE8BXOQmewlpNUBVEKxC mOpgbFn9x76XP4pYvcq4a+Vt8RuGEXk= Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-5ce2aada130so1792242a12.1 for ; Wed, 03 Jan 2024 01:50:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704275440; x=1704880240; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HF2P2SEmq7vRAtkf5d5h6lFP1PY7Yzig5CUd/10AwIg=; b=XEmvYvgSOEGK29w8i4yQoL0SJpk6bsU0KDOVgfZCrNlx2btGpJPNLaKA62kqMKXgpB 1CUGD0MLvvkb0GtaTs5f7O/i6n3Ez7dCO/OT/gvDW5Cx6bqJBUPy6nqCxfrC06DJb/Sr DsqSKoy+Kih+SA+kiP1IsK0HASxNyJaVtioP2AYVB5IwYaIqlpbtBjSjDZhTTjxoWX8x HFpu9+F8t5W9DG4JEwfTRQx+BdRV2L33n3Rqo+ytOJZS0ZWVKFwG6g2+ID6FFFqFRGAY PI5oGW7mXMgPpOT1I6MMV7KF0UjiTKx6KfOG8SBuCzl5o27OpHDSVR82KOiWQUGiS7ip t3uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704275440; x=1704880240; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HF2P2SEmq7vRAtkf5d5h6lFP1PY7Yzig5CUd/10AwIg=; b=wTjuPF2QWO6g22VNzhgnAOXpzUbI9ARy3uMa1Pc3f9Pw3vqFEFM1p3AXC54p6hhx7M qItUNfXIiIF+qleRF/yLLFODgZwFow3lAhlMlPePhpZ6FR/n+A4CwoKQoc/7MXV+NlAI q6d8nuEayNUhBwcUHpd8UTFWxDJNW/kz9rGtOOdNDfxIXBHloG38THWV3SDGV8Z9J0nu Qo/tJqek6uKqPOKR42/PelvfjCfcI3uvnDovTTQ+j/Pb1MF3lw1zupR8KH18/UxkYnfz uLAAGNfcBVnJ/jPWGs1le/CEGshcVOxYZ7Z3M2CO8ca+XSgujvU4Pu06ciszWuTWGIQ8 TRhA== X-Gm-Message-State: AOJu0Yyrc0Q96N8fgSCduue0F+/RR7cHM4JH5Q0CKiitPv+BFBr3p8JB SBLwp5TlTLqIaoB89CiM1eM= X-Google-Smtp-Source: AGHT+IFhQWnb8yS8UAuFwFy8vb78sg6hucpOXjJ6Kq+ulrOpwt7NgLV10YadMn0i2Bik7OAWQ2a24g== X-Received: by 2002:a05:6a21:a585:b0:197:7997:b69 with SMTP id gd5-20020a056a21a58500b0019779970b69mr296409pzc.69.1704275440398; Wed, 03 Jan 2024 01:50:40 -0800 (PST) Received: from barry-desktop.hub ([2407:7000:8942:5500:a7d6:f37a:9130:cd96]) by smtp.gmail.com with ESMTPSA id a34-20020a631a22000000b005c65e82a0cbsm21823483pga.17.2024.01.03.01.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 01:50:40 -0800 (PST) From: Barry Song <21cnbao@gmail.com> To: herbert@gondor.apana.org.au, davem@davemloft.net, akpm@linux-foundation.org, ddstreet@ieee.org, sjenning@redhat.com, vitaly.wool@konsulko.com, linux-crypto@vger.kernel.org Cc: chriscli@google.com, chrisl@kernel.org, hannes@cmpxchg.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, nphamcs@gmail.com, yosryahmed@google.com, zhouchengming@bytedance.com, Barry Song Subject: [PATCH 2/3] mm/zswap: remove the memcpy if acomp is not asynchronous Date: Wed, 3 Jan 2024 22:50:05 +1300 Message-Id: <20240103095006.608744-3-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240103095006.608744-1-21cnbao@gmail.com> References: <20240103095006.608744-1-21cnbao@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: ABF78140006 X-Rspam-User: X-Stat-Signature: z3o11yn3nnm5nf9ma6iguxugxkooyiuu X-Rspamd-Server: rspam01 X-HE-Tag: 1704275441-175269 X-HE-Meta: U2FsdGVkX1/GnyUlqSxobWGsVhN6Czq/Xo7MLF/4j7tSw1NH543n04kzE3mCaJS1eeEXN432xn0bqvIjQO0yWsFmORSWO9CIJVe+iyQt7iSjQZmb4ckEuMaUVMAiUV4FwRBcXT7MwUcXHcHJ5JyJmKuvR3vdx1hnbjBPPg1xBT/t/GA5B+uHzq0NkTSDH5OSqABlR99zP07bvcpG+/wDd9s9/vvPe15DnlbJhG8090/3WsK7hI9BitXRsHGzxuxu1DW/ZOJnxIEeJY/QBpPE9jeFWd9q4dhtymFBWiXHVQbypP2BEPfx38Z9Mv8fNxvR3g01pr2Nwrt7PWoeCnhMwx2886dyb4xLaq2KlB7q/vOvB7uwgvukK9y/IPzOrO3o/Z5XA2Ebu/lAeHpanr0HaS6YVtAYYt5lwmqt0X5GDDloSd4st7PmnIhUkLxLclN5+qwz/FTrNYyzbYSrBqrmhtzvPcQgZpwxMe7i7o1hbFbYL4M4uQk/oSykJycL9luH6j8CU2jGKc9K81IzrnxK6hm4XF7oDywSwZvDPDgJni0By8wjK5fx9UbjjyT+0c6L/lhqBA4gjGlf+Wmlh9dUphni8eEPHIj0UQkSK/zw+HsVnRzBmJAsUuHxZzDdTx0MU6Totdb/FFfCTnC+xkcLzQwqUyRBoDnJKt7xLvic+ImFhwNJHhFLeHVSU0EOQNHZ3A6nnHkS5Rccj33NYHVIiQfSP9RWmVcc5l/oay5TtdW/lxFQc6zYhTiLmTaxK0y2fR7tb7p+9LSKBepAbVh2y7aPqMGg9IVyo8aZD62po0HpMKBtyy1RqG70CsJPZc1oPiuF/cQIXpao3fRX2lNqWWsBABQpR98QTeXvSertjSJMvwKTY+NFCMHlUWAMd6BQNz6y6t0cAQoJ7cxsZSuT0Q908LuqVabU4T6EGvCxh9N/EzjkXSuyN5lNaQzdhFuKIdC32tv/U7QVrfXJtNl x52XIoRM 9GoEXfcEhg7entI8NhR4EwuFHs/bGEb1KDNWHYsznw1vEyFm0oxPPDzhf075GahvHRy3vNOvfsWg1+3IsdIkPnKdQ8emDvwz01G9SNVnRObDj+MGGDeNfGwzzFxHTWX0z+rXk3VMG74B7ggw36evkBIYYt5jwPtkTgc0mrBljFafW9Pt7U2QmSElzxW+qbvyJoJs0Via8z0XQ1RenkSimb5+h0hw6H7QHWKmoj9Bl/UVhWUAql2zghH1wiL9ZXYu6K5RTQ+6jM/wo9VtVErf7HoTUtGOg0DgDTcLqhWVGZ+MzwRUXdZHz+ZapgC48Gr4bBe0zi9RtfnqiFdTYDzh7lmM/6ZdybG1EvqJ9TUzbY6tXO8/QhvF8+sXBjAKWmMJ2RmLoWUnpzFrB8L81h6yhVBF/zxLS34qc3snpnrpYg48vE0++d8MWjEANxBmcBdvg0rhk5Zdiu+o0BhkbXFP7otJ5Ohwys1AXSsSx4L3OznUH+9YD8dEqjD0ENAkLbhQ7A8t5XR08KekDqYncbJdGtWjoDHgVCaSfqFmM8WshiDRpltPXH0WC2LRUeo2QaGoyDhfNBBVE2O1ydjM= 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: From: Barry Song Most compressors are actually CPU-based and won't sleep during compression and decompression. We should remove the redundant memcpy for them. Signed-off-by: Barry Song Tested-by: Chengming Zhou Reviewed-by: Nhat Pham --- mm/zswap.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/zswap.c b/mm/zswap.c index ca25b676048e..36898614ebcc 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -168,6 +168,7 @@ struct crypto_acomp_ctx { struct crypto_wait wait; u8 *buffer; struct mutex mutex; + bool is_async; /* if acomp can sleep */ }; /* @@ -716,6 +717,7 @@ static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node) goto acomp_fail; } acomp_ctx->acomp = acomp; + acomp_ctx->is_async = acomp_is_async(acomp); req = acomp_request_alloc(acomp_ctx->acomp); if (!req) { @@ -1370,7 +1372,7 @@ static void __zswap_load(struct zswap_entry *entry, struct page *page) mutex_lock(&acomp_ctx->mutex); src = zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); - if (!zpool_can_sleep_mapped(zpool)) { + if (acomp_ctx->is_async && !zpool_can_sleep_mapped(zpool)) { memcpy(acomp_ctx->buffer, src, entry->length); src = acomp_ctx->buffer; zpool_unmap_handle(zpool, entry->handle); @@ -1384,7 +1386,7 @@ static void __zswap_load(struct zswap_entry *entry, struct page *page) BUG_ON(acomp_ctx->req->dlen != PAGE_SIZE); mutex_unlock(&acomp_ctx->mutex); - if (zpool_can_sleep_mapped(zpool)) + if (!acomp_ctx->is_async || zpool_can_sleep_mapped(zpool)) zpool_unmap_handle(zpool, entry->handle); } From patchwork Wed Jan 3 09:50:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Barry Song <21cnbao@gmail.com> X-Patchwork-Id: 13509818 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 74DA3C3DA6E for ; Wed, 3 Jan 2024 09:50:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ED9648D005F; Wed, 3 Jan 2024 04:50:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E87228D0053; Wed, 3 Jan 2024 04:50:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D2B248D005F; Wed, 3 Jan 2024 04:50:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id BCEF78D0053 for ; Wed, 3 Jan 2024 04:50:49 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 9F7C21A01CE for ; Wed, 3 Jan 2024 09:50:49 +0000 (UTC) X-FDA: 81637530618.04.A312F7E Received: from mail-oo1-f54.google.com (mail-oo1-f54.google.com [209.85.161.54]) by imf17.hostedemail.com (Postfix) with ESMTP id DA84740011 for ; Wed, 3 Jan 2024 09:50:47 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IHBlwAC2; spf=pass (imf17.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.161.54 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704275447; 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=Spb8sXhq6BQgZHawgszBp/yoNsRKTOzDWAXTsmTatzQ=; b=VGIfY0fgZszSIyVHbcOoawobyCm9j/XHdLLVIjH0KuSWeyRsjB0w09w7k4a/hOc6/RlcO4 6ZcV+09y3i5BgQezODhb9t9IBz7HIlmBgBvQB1DkhfbgEb0B0tJgDbnTkttiedtxHAEpEZ Io54CJ6ffOXYXeSoAjjQQsVIb6rjnM4= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IHBlwAC2; spf=pass (imf17.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.161.54 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704275447; a=rsa-sha256; cv=none; b=lNB0dPuTtn+zrmLSTlQv0RPCRxjPN5+X4FlR+AwkgYXDoXj+fuhEjS5XaxTQZlAiwjA7L1 rtW07LzPnMhse6JGMhGpW3SH5JUEOLiyiaG2NncBKzkKXBvN1zQY7S26VgN8oi3TdbhBB/ vhIB+m3iTvpI3YHFdY5rKAYgZsng32c= Received: by mail-oo1-f54.google.com with SMTP id 006d021491bc7-59502aa878aso2410372eaf.1 for ; Wed, 03 Jan 2024 01:50:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704275447; x=1704880247; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Spb8sXhq6BQgZHawgszBp/yoNsRKTOzDWAXTsmTatzQ=; b=IHBlwAC2aGdO/wXTyDPOlsZPuKblOWxAGM4o3OVUid1xWIPeDmu0iXv9FLTB+rb45W 7v1eBYdrIle+ca+Pk4wSA6Y7g9zzh1NJeA5UH9T32DPwg7WvP1N9KEK9HIrmrY6fQ0z0 jn+ynCNVz11V4Xv3GT40VzeJOsqiBhe9KTm5Wqfu6Uh1Esol1DLtbZwTMvvHXMP98sxm gBsK/LunlwynwqzxXiGOgoZs2P7j9zZRXLku1R4PaD8quOyF+EszdLCj9CfvdNKY0Tdy od7TT8KlEN/DVVLqKRLLzo02dKs5Pn6dm3vNlAvC1R17z7r7b85evbKeBZ1fUN3EgDiZ GVaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704275447; x=1704880247; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Spb8sXhq6BQgZHawgszBp/yoNsRKTOzDWAXTsmTatzQ=; b=CLjZtexewXmNWtBzbl7MAw1BXRgMaKPSRyLLBXxe3C91Wd6HZEvGmAqzr8aoE/b1Jh ZTnjKT1B0UY9IPOgDvDwOvwzpTp0j7VlH6liCGfY79CVfauA5YAgvwJi5LLYwfWvpDm3 9HrZnKDR5AyKq34pX3ZhFZ4DeL98+RkoZ8mQTgIVch/VC1K/3wZDs6/LCS6XLczXY8P5 JG8kruoqK8XuBMIHhYsFuApzDJK5n4dTuyWQoMWg9JUX8j6A9h/5Y5mSJN2uVwq0ERTK 6ZVAwnnN3MUMvXHwHzZFeA86PUDvhMR/WiOAeYyVu/GCLKo1BBtrHN4EB5hLfSlJzzn0 RVsw== X-Gm-Message-State: AOJu0Yxh5r/mYQX1L8TOdMM6acwn0rcNyLhGCRVw9WomDzxPk2icVNEc GYLmGBzxupIeDXmEXCdaik0= X-Google-Smtp-Source: AGHT+IGWL4R/FI9TYmsj+r7+/K6fqa31rQlyfEGBvFn+SUDBIfMJqSQf7Q/5XUbHS6iSKuuDD2GKeA== X-Received: by 2002:a05:6358:7f1e:b0:172:e3f6:12c0 with SMTP id p30-20020a0563587f1e00b00172e3f612c0mr17022730rwn.46.1704275446906; Wed, 03 Jan 2024 01:50:46 -0800 (PST) Received: from barry-desktop.hub ([2407:7000:8942:5500:a7d6:f37a:9130:cd96]) by smtp.gmail.com with ESMTPSA id a34-20020a631a22000000b005c65e82a0cbsm21823483pga.17.2024.01.03.01.50.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 01:50:46 -0800 (PST) From: Barry Song <21cnbao@gmail.com> To: herbert@gondor.apana.org.au, davem@davemloft.net, akpm@linux-foundation.org, ddstreet@ieee.org, sjenning@redhat.com, vitaly.wool@konsulko.com, linux-crypto@vger.kernel.org Cc: chriscli@google.com, chrisl@kernel.org, hannes@cmpxchg.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, nphamcs@gmail.com, yosryahmed@google.com, zhouchengming@bytedance.com, Barry Song Subject: [PATCH 3/3] crypto: scompress: remove memcpy if sg_nents is 1 Date: Wed, 3 Jan 2024 22:50:06 +1300 Message-Id: <20240103095006.608744-4-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240103095006.608744-1-21cnbao@gmail.com> References: <20240103095006.608744-1-21cnbao@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: DA84740011 X-Rspam-User: X-Stat-Signature: biomdyggndowq3t8ugp5195oz16ohdjb X-Rspamd-Server: rspam01 X-HE-Tag: 1704275447-262023 X-HE-Meta: U2FsdGVkX1+BRwIQL10QtnNR2Ev8NA/ePHncHpRQk5mv0RIM2fRqWpEsDtnZ3n0XHyVCYAQWUJJMzjGKqp+X4A7LuHCBe2YS+o5xcS7CMsEE6Hu0r100JR0FvHhTEsl+4jmDCwx8mb1MQeL2m+TseZ3OozvaZ4AFlwSzb0DWDuCmq9KwV2d1AyMD41yYtY++IYY0NjWgSUo5ds63JUZVW5bLae3qiiYXqtQ12VTNSkNxSKVkgEn54L/WC1ruh+qGF6cIZxbWPq/nWpXvPq9yZZYXf58tJ7wa4/3mI61YyMZMPkIMWtkIBzgyEQAgQZ48sN2ulqKkQ5TDa7eUKNWSLmcZzTeDZlrS5qjWYpQEA5tu8tEqGBioE3EfGqY1DhzQSOqnUWsSbRy8KFhHYEIzFni2zL1zcxWYNcA0YbuQYWUbERmZ9KCfJq05dN5P1QoL+9qDHKjOKu9ufL8x43IxQq2elYz+HaIz0BpICoKmmVuzXl2gHw2YTGgvoA8Hfv97A8k2stoVczehjE4II7XliAmZrUfkFia+tdp/ZfvuD8zc6pjywhB4TZeA8ge+OlRrirBlGT9kTksxSKcWb0KqKF4PBV5B94p2BlO8tfFxbvmKGqHzfbZJ5EXfwrWBILGUa0lNN6ea21IJlDApLnlBMZ1HhQWm8ejy0FY8XwcVNb3FWuui3ecuyweA9NCAECQ3R6Bon/YoZy9Hc3lZrGpL46oSTk8pEMGx/J8wXvoUKUJwRLMvIyXvtLrByL/4+MM8ne13NYQF6HUAs44jq6wPjTavNx3NAjVJ4jkqW/l5yQuElNx2ew1wjvDXRQaUeuKGARcFl18kVfFAi2N9CwcXtUsEaGwWqtjJ5HsngkjfKFgCfb8a2W03z3EaWD1foyz+1Po+m3JNXAfyD5whrKXpRk/6ZiZtoNKTlGqBSB2amZUXcDhN/b31pXb4F+KqjqG3jUAlg9p/UT/B8YiLxZ1 uT9J+fjw O5iScyqa36sp9to3JhT5p39A585pKNPQbs7b7U1V7QtDBRnnsPEgZT+bY+DQCz9prwK45MTTBI6H0SMfwP1oiK289zkd3Y3CCknHjMxAuMabMmG/dp1gm4nROQyKr/4cCeZMES925+dkaNDCuqAabLu+Xs2UtmPTXH2yQ6Ad7TZY27F4uoZnP5osVz5zQbQG+tBKtQWO6f3dYuVQwOQLTiqehNowofx267wXoVEiRa918lAHvJ9TQT8Yl4qA9zc/EcCtxTTW8pKYJA7sFYGCx1YWMbqYPRT7IhgtQGuRpK2/Ndc89EZwi7VxXvtrERelGJBSQi6iUCnb8EH5uY9aseuV5wqjl8CNWdDIolLKWwd23DnPElJz1OqDwisb7W6Ql991BoQfty2TbyfdqmsHSTdiiPQDZvH6wq3D2fyRkBtoM7KQN9kGy+NCmtB7EX135gYx2JQg5R30ShtNjePdeX634mZh0voC4DAJp1jq5vTTIU9Jb4agaUEvFQtlc3ZjuZQzuBn8bv8am6nDSbpb9QpiHQwmofyJugdKTsERIY75vjWyox8ExgDNNnzDDH4pTV7XtTg03tZrk6q/TUL0dBCi7CjGpBxkvnFpcr069C9rRnbTJSqCEHIGyc8PQ4DDCXKie 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: From: Barry Song while sg_nents is 1 which is always true for the current kernel as the only user - zswap is the case, we should remove two big memcpy. Signed-off-by: Barry Song Tested-by: Chengming Zhou --- crypto/scompress.c | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/crypto/scompress.c b/crypto/scompress.c index 442a82c9de7d..d1bb40ef83a2 100644 --- a/crypto/scompress.c +++ b/crypto/scompress.c @@ -117,6 +117,7 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) struct crypto_scomp *scomp = *tfm_ctx; void **ctx = acomp_request_ctx(req); struct scomp_scratch *scratch; + void *src, *dst; int ret; if (!req->src || !req->slen || req->slen > SCOMP_SCRATCH_SIZE) @@ -131,13 +132,26 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) scratch = raw_cpu_ptr(&scomp_scratch); spin_lock(&scratch->lock); - scatterwalk_map_and_copy(scratch->src, req->src, 0, req->slen, 0); + if (sg_nents(req->src) == 1) { + src = kmap_local_page(sg_page(req->src)) + req->src->offset; + } else { + scatterwalk_map_and_copy(scratch->src, req->src, 0, + req->slen, 0); + src = scratch->src; + } + + if (req->dst && sg_nents(req->dst) == 1) { + dst = kmap_local_page(sg_page(req->dst)) + req->dst->offset; + } else { + dst = scratch->dst; + } + if (dir) - ret = crypto_scomp_compress(scomp, scratch->src, req->slen, - scratch->dst, &req->dlen, *ctx); + ret = crypto_scomp_compress(scomp, src, req->slen, + dst, &req->dlen, *ctx); else - ret = crypto_scomp_decompress(scomp, scratch->src, req->slen, - scratch->dst, &req->dlen, *ctx); + ret = crypto_scomp_decompress(scomp, src, req->slen, + dst, &req->dlen, *ctx); if (!ret) { if (!req->dst) { req->dst = sgl_alloc(req->dlen, GFP_ATOMIC, NULL); @@ -146,10 +160,17 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) goto out; } } - scatterwalk_map_and_copy(scratch->dst, req->dst, 0, req->dlen, - 1); + if (dst == scratch->dst) { + scatterwalk_map_and_copy(scratch->dst, req->dst, 0, + req->dlen, 1); + } } out: + if (src != scratch->src) + kunmap_local(src); + if (dst != scratch->dst) + kunmap_local(dst); + spin_unlock(&scratch->lock); return ret; }