On Wed, Feb 21, 2024 at 6:35 PM Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote: > > On Tue, Feb 20, 2024 at 07:44:14PM +1300, Barry Song wrote: > > From: Barry Song <v-songbaohua@xxxxxxxx> > > > > 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 <v-songbaohua@xxxxxxxx> > > Tested-by: Chengming Zhou <zhouchengming@xxxxxxxxxxxxx> > > --- > > crypto/scompress.c | 36 +++++++++++++++++++++++++++++------- > > 1 file changed, 29 insertions(+), 7 deletions(-) > > This patch is independent of the other two. Please split it > out so I can apply it directly. Ok. OTOH, patch 3/3 has no dependency with other patches. so patch 3/3 should be perfectly applicable to crypto :-) Hi Andrew, Would you please handle patch 1/3 and 2/3 in mm-tree given Herbert's ack on 1/3? > > > @@ -134,13 +135,25 @@ 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; > > What if the SG entry is longer than PAGE_SIZE (or indeed crosses a > page boundary)? I think the test needs to be strengthened. I don't understand what is the problem for a nents to cross two pages as anyway they are contiguous in both physical and virtual addresses. if they are not contiguous, they will be two nents. > > Thanks, > -- > Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Home Page: http://gondor.apana.org.au/~herbert/ > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt Thanks Barry