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 6F801C48BF6 for ; Sat, 24 Feb 2024 16:54:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C35E36B009A; Sat, 24 Feb 2024 11:54:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BE6756B009B; Sat, 24 Feb 2024 11:54:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AAE966B009C; Sat, 24 Feb 2024 11:54:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 9C05C6B009A for ; Sat, 24 Feb 2024 11:54:01 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 7BB271A0272 for ; Sat, 24 Feb 2024 16:54:01 +0000 (UTC) X-FDA: 81827294682.28.EF650CF Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf15.hostedemail.com (Postfix) with ESMTP id 8E305A000C for ; Sat, 24 Feb 2024 16:53:59 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZkROrc93; spf=pass (imf15.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chrisl@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708793639; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=M7sAyNhnzKfrLl5iZR/YcIb69ymmulA1x3BROrJDvPE=; b=kMQJMDq13C471YXX/Mk/fYY0rUNs5TL3N0w4qQ6FdBMp9mBNehnG+huEFsvpM9MT8/vC6u rWJlqZpOBgXV2lnHG391SZtsXZJeXJemPm0HBQGZX7v3qHSldrRJpyvm3SvEETKfRU7L1a lVNLsPOvojknhLgN7k9s3cL0s59y3aI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708793639; a=rsa-sha256; cv=none; b=myFnuQZkBgKDonI4n4BMNeS+GQc8SpnC4NqPtUG8100Dt1u4xyEyOTg39frIZh8f+PNojl M/aiE4DMcZesWPK9GN/lnCLFDDGe8lgz7nRbJ9ZQLUymm5v83L0c9ktTdfJbzRS/wg3SZY g+Zn+mCBhneJGrWfSErrubgrDQ6uNe8= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZkROrc93; spf=pass (imf15.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chrisl@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 6DFF460AC5 for ; Sat, 24 Feb 2024 16:53:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1EE35C433F1 for ; Sat, 24 Feb 2024 16:53:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708793638; bh=z9zQiP3XZXSgVaP4ozx7WT6lEl1K4J/Q7eJNF6Jv8m4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=ZkROrc934Ipl6NHNHnwyToE+bfGW2rDvuPc10PLblBYpyiIUfBtjCM/UKTmYgLi92 IpFtO4qVJ74Xj80R2YdjzwNQFVgyRzzdu33qzbm3DVDhqLFlWcAtbgaNm8lfg4KFji 8ZlZ9C/SesV25q2gtHiyZ77V+j43Sk+I0HGA1tFsV0Ltj7a0+9GYRKIsqcmd3iflvz bwXLa1b1sTsOureqC71dSHIr2MKD6Srk1nml67bDQnBDCtOZgW1mF/v+FYgtGrOn0a cXAPnRHzXJ8FoyzC1bW5nZYR4vyYbZNZOxy7ccUo3CcU+JMGxjwZNEw4MpX1XcjgUI GBplIvhVzToFA== Received: by mail-il1-f172.google.com with SMTP id e9e14a558f8ab-36576cf5fe0so5242645ab.0 for ; Sat, 24 Feb 2024 08:53:58 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCXHN1VBrvXI5WY2+uSx73dUp74DudKnroh9oGBYpurnzSsF4S9NQk6D09qAnCELHt1jylovOwVGfg3oJs9oJGlt46w= X-Gm-Message-State: AOJu0YxdsQXqUpbdNnJIDhYaQ+mpdHVImgbBQKE5XaUmbvaBARA5ClQ8 ZlWaxn8VKrxx9TMT7gOjoCiHhHbw3koPBDChbe1/BtEZPgKO2teUYHQ1cLtB17oa8tUsCVO8Y/e AkZEB5Yheeip72D4iC6tT+3DqA/6StzeWYuFE X-Google-Smtp-Source: AGHT+IFyT5hm/6XLvoYvExLY1LoEhxSoh4Cw8lHR+VE6pVCsWW9ltPb45mVeXnwzbDPYLbix+0vPxhd9zRAUxAGnWUg= X-Received: by 2002:a05:6e02:13e5:b0:363:e99e:42e0 with SMTP id w5-20020a056e0213e500b00363e99e42e0mr3109696ilj.15.1708793637472; Sat, 24 Feb 2024 08:53:57 -0800 (PST) MIME-Version: 1.0 References: <20240222081135.173040-1-21cnbao@gmail.com> <20240222081135.173040-3-21cnbao@gmail.com> In-Reply-To: <20240222081135.173040-3-21cnbao@gmail.com> From: Chris Li Date: Sat, 24 Feb 2024 08:53:46 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 2/2] mm/zswap: remove the memcpy if acomp is not sleepable To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, davem@davemloft.net, hannes@cmpxchg.org, herbert@gondor.apana.org.au, linux-crypto@vger.kernel.org, linux-mm@kvack.org, nphamcs@gmail.com, yosryahmed@google.com, zhouchengming@bytedance.com, ddstreet@ieee.org, linux-kernel@vger.kernel.org, sjenning@redhat.com, vitaly.wool@konsulko.com, Barry Song Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 463owbcj1so8c8xx8jfu714ehimrzwdo X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 8E305A000C X-Rspam-User: X-HE-Tag: 1708793639-717130 X-HE-Meta: U2FsdGVkX1/1m2Jt6m0bmEyqWt6YIqNoKBesLiSING7e90cep0g7ccZX+N2mIAuPN5KNzuo5kr7eyMY8HsjeL0U00raIyLK3W+yVJOkUWSH8/vumFijDlff2yGgAZvkORhMX8PQra2BXkziVWkcX1bZXP64HRAj6NwaRYX5jQJNiplWX9XSuI+YXNMYABlTPYXXWT9p/N6QpvZO1c0Lxh37+gEc/IP3e0lm4yO8wrq9cssysz05Ld3EVh1+oDOQ+VE8Hl60jptaHh9EMUYYGphC1uWZCwjL5fpcYUaKWBjk+obzultsWNgBTWqRda8LOuIrqiq5YcUfXryjn2+Q3GuIu9T4Nud2GdZRNqXTmb6GH4mdTvqawAk7oZky0opsbGiHqxraFzeoa71EsCbD9Tcn0565AcA1iWyIThaqD2I8T1ZJDqiLQXvQBcefwLgjMIi7dRRZzQWGMqf1Nf1DoJYOY/h4DW596CSE0GD22U5kRKPvaQ+8zQlbwl8xzUCa5trZRGfnm7UDeF11vk/OTv95ujr4bpbR8m1rnDJAX8vw5fi3hY/GwW2Ekv5fyd6N3KCFooB6GJqoyEpWwVMKt/QtZTxmPqd9AM5I/3xtfFrAl0bof0g6QYc3UfeSr5uTpJbgnS1J/ydI4/iV96wr161yOsReClxHJIomnmsd9fZhEsYEcts9vmnp1PZVRoLjPkVcFOkK34z9H6dTgswOZgiQeV3WpTEj40FK8c16XnAMphcds+JE0dcv8dIpOW9xDILoV7pczdMvsCAt+2mKi7geGd90ZeVWCd8+hmfDNhotvln2vAYuzaCdoxitWqj0uUoQVTE66ZeUJHNnmYSji+HOSTDUwophBQ7qsWrRAAqHA4HpIc4vCDcBOe9rZQ6FWOnxiQI/645sQE/Mhz7ijZIIVKKVhXR+0wo/OPAzzO0+0Lry9lkJMfBhj4cz3tSY+eSemOnfVJNRCy0FiCGB bVlpsO5T 9SbmVRjcW5TnEBPRW1Mr2nhic2uGw0COak4pt4iKUIy+/s3K75jcTuBby6HE2VH6F6PKFlJOgeUOHtAkWSt2pWYqsYaWf2M9GYTXGNJeyD4tVb1ABmhsWRJC95rY63972hkmrsH/9/C5aWcCrfk1U4OPgXuuIhReBdlluIrpXjcvVJqGSSk6hBeMjidS+mYVVzmPCPQI1lOyiYu/N/waxzjJEetetzeTf0J0Gm/DqzAA3tRveJGySHqqm18G4Kju0J7ntrgcIqMHPWqOsDf8xPiHRKQXR/7jBr7oQa0bBECjgxRpfaYHYiJdymNe6TG+ObmS3KqOmi4qvTF6lRpSyaWDPt6ynii2OW9YpF20oO1J1OCOkshJTgCWxvBLtwPGrpwiZWMV7MV5P8wBa7iCuyI//kYBa3iU60N6HWlsx9bDKbC0kCpABeoH91I9XTYFcWdUG 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: Acked-by: Chris Li Chris On Thu, Feb 22, 2024 at 12:12=E2=80=AFAM Barry Song <21cnbao@gmail.com> wro= te: > > 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. > This patch checks if the algorithm is sleepable by testing the > CRYPTO_ALG_ASYNC algorithm flag. > Generally speaking, async and sleepable are semantically similar > but not equal. But for compress drivers, they are basically equal > at least due to the below facts. > Firstly, scompress drivers - crypto/deflate.c, lz4.c, zstd.c, > lzo.c etc have no sleep. Secondly, zRAM has been using these > scompress drivers for years in atomic contexts, and never > worried those drivers going to sleep. > One exception is that an async driver can sometimes still return > synchronously per Herbert's clarification. In this case, we are > still having a redundant memcpy. But we can't know if one > particular acomp request will sleep or not unless crypto can > expose more details for each specific request from offload > drivers. > > Signed-off-by: Barry Song > Tested-by: Chengming Zhou > Reviewed-by: Nhat Pham > Acked-by: Yosry Ahmed > Reviewed-by: Chengming Zhou > --- > mm/zswap.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 011e068eb355..de3c9e30bed7 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -162,6 +162,7 @@ struct crypto_acomp_ctx { > struct crypto_wait wait; > u8 *buffer; > struct mutex mutex; > + bool is_sleepable; > }; > > /* > @@ -950,6 +951,7 @@ static int zswap_cpu_comp_prepare(unsigned int cpu, s= truct hlist_node *node) > goto acomp_fail; > } > acomp_ctx->acomp =3D acomp; > + acomp_ctx->is_sleepable =3D acomp_is_async(acomp); > > req =3D acomp_request_alloc(acomp_ctx->acomp); > if (!req) { > @@ -1077,7 +1079,7 @@ static void zswap_decompress(struct zswap_entry *en= try, struct page *page) > mutex_lock(&acomp_ctx->mutex); > > src =3D zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); > - if (!zpool_can_sleep_mapped(zpool)) { > + if (acomp_ctx->is_sleepable && !zpool_can_sleep_mapped(zpool)) { > memcpy(acomp_ctx->buffer, src, entry->length); > src =3D acomp_ctx->buffer; > zpool_unmap_handle(zpool, entry->handle); > @@ -1091,7 +1093,7 @@ static void zswap_decompress(struct zswap_entry *en= try, struct page *page) > BUG_ON(acomp_ctx->req->dlen !=3D PAGE_SIZE); > mutex_unlock(&acomp_ctx->mutex); > > - if (zpool_can_sleep_mapped(zpool)) > + if (!acomp_ctx->is_sleepable || zpool_can_sleep_mapped(zpool)) > zpool_unmap_handle(zpool, entry->handle); > } > > -- > 2.34.1 >