On luned? 28 marzo 2022 17:41:53 CEST Ira Weiny wrote: > On Mon, Mar 28, 2022 at 01:24:40PM +0200, Fabio M. De Francesco wrote: > > The use of kmap() is being deprecated and kmap_local_page() is faster. > > Use kmap_local_page() in place of kmap(). > > Thanks for the patch! Thanks for your review! > I have just a couple of comments. > > kmap_local_page() is not necessarily faster than kmap() but it is more correct > in this case. You should mention why. Sure, my mistake. Thomas G. was talking about kmap_atomic() when he wrote that it is "faster". It does not apply to kmap_local_page(). What could justify the use of kmap_local_page() is that "The mapping is per thread, CPU local and not globally visible.". Therefore this code is the right context where to use kmap_local_page() in place of kmap(). At this moment I think that I might change my commit message and write something like the above. However, I'll research more information during the next days. In the meantime I'm also going to take a look at the differences in implementation. > Also to help with kmap_local_page() there are a number of helpers implemented > in highmem.h for things like memcpy, memmove, etc. > > Check out memcpy_page() for this use case. Aren't memcpy_to_page() and memcpy_from_page() better suited for the two different branches of the "if" statement? Thank you, Fabio M. De Francesco > > Thank you! > Ira > > > > > Signed-off-by: Fabio M. De Francesco <fmdefrancesco@xxxxxxxxx> > > --- > > drivers/staging/rts5208/rtsx_transport.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/staging/rts5208/rtsx_transport.c b/drivers/staging/rts5208/rtsx_transport.c > > index 805dc18fac0a..de690d7ee5e3 100644 > > --- a/drivers/staging/rts5208/rtsx_transport.c > > +++ b/drivers/staging/rts5208/rtsx_transport.c > > @@ -92,13 +92,13 @@ unsigned int rtsx_stor_access_xfer_buf(unsigned char *buffer, > > while (sglen > 0) { > > unsigned int plen = min(sglen, (unsigned int) > > PAGE_SIZE - poff); > > - unsigned char *ptr = kmap(page); > > + unsigned char *ptr = kmap_local_page(page); > > > > if (dir == TO_XFER_BUF) > > memcpy(ptr + poff, buffer + cnt, plen); > > else > > memcpy(buffer + cnt, ptr + poff, plen); > > - kunmap(page); > > + kunmap_local(ptr); > > > > /* Start at the beginning of the next page */ > > poff = 0; > > -- > > 2.34.1 > > >