All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] staging: rts5208: Convert kmap() to kmap_local_page()
@ 2022-03-29  5:55 Fabio M. De Francesco
  2022-03-29  9:18 ` Dan Carpenter
  0 siblings, 1 reply; 3+ messages in thread
From: Fabio M. De Francesco @ 2022-03-29  5:55 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Benjamin Philip, Bart Van Assche,
	Martin K. Petersen, Eric W. Biederman, Colin Ian King,
	Samuel Sjöberg, Charlie Sands, linux-staging, linux-kernel,
	outreachy, ira.weiny
  Cc: Fabio M. De Francesco

The use of kmap() is being deprecated in favor of kmap_local_page()
where it is feasible.

With kmap_local_page(), the mapping is per thread, CPU local and not
globally visible. Therefore rtsx_stor_access_xfer_buf() is a function
where the use of kmap_local_page() in place of kmap() is correctly
suited.

Convert to kmap_local_page() but, instead of open coding it, use the
helpers memcpy_to_page() and memcpy_from_page().

Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
---

v1 -> v2: Rework the commit message and use the appropriate helpers
instead of open coding the use of kmap_local_page()/kunmap_local_page().
(Many thanks to Ira Weiny <ira.weiny@intel.com>).

 drivers/staging/rts5208/rtsx_transport.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/rts5208/rtsx_transport.c b/drivers/staging/rts5208/rtsx_transport.c
index 805dc18fac0a..56b6cc845619 100644
--- a/drivers/staging/rts5208/rtsx_transport.c
+++ b/drivers/staging/rts5208/rtsx_transport.c
@@ -92,13 +92,11 @@ 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);
 
 				if (dir == TO_XFER_BUF)
-					memcpy(ptr + poff, buffer + cnt, plen);
+					memcpy_to_page(page + poff, 0, buffer + cnt, plen);
 				else
-					memcpy(buffer + cnt, ptr + poff, plen);
-				kunmap(page);
+					memcpy_from_page(buffer + cnt, page + poff, 0, plen);
 
 				/* Start at the beginning of the next page */
 				poff = 0;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] staging: rts5208: Convert kmap() to kmap_local_page()
  2022-03-29  5:55 [PATCH v2] staging: rts5208: Convert kmap() to kmap_local_page() Fabio M. De Francesco
@ 2022-03-29  9:18 ` Dan Carpenter
  2022-03-29 15:02   ` Fabio M. De Francesco
  0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2022-03-29  9:18 UTC (permalink / raw)
  To: Fabio M. De Francesco
  Cc: Greg Kroah-Hartman, Benjamin Philip, Bart Van Assche,
	Martin K. Petersen, Eric W. Biederman, Colin Ian King,
	Samuel Sjöberg, Charlie Sands, linux-staging, linux-kernel,
	outreachy, ira.weiny

On Tue, Mar 29, 2022 at 07:55:39AM +0200, Fabio M. De Francesco wrote:
> diff --git a/drivers/staging/rts5208/rtsx_transport.c b/drivers/staging/rts5208/rtsx_transport.c
> index 805dc18fac0a..56b6cc845619 100644
> --- a/drivers/staging/rts5208/rtsx_transport.c
> +++ b/drivers/staging/rts5208/rtsx_transport.c
> @@ -92,13 +92,11 @@ 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);
>  
>  				if (dir == TO_XFER_BUF)
> -					memcpy(ptr + poff, buffer + cnt, plen);
> +					memcpy_to_page(page + poff, 0, buffer + cnt, plen);

You meant:

	memcpy_to_page(page, poff, buffer + cnt, plen);

>  				else
> -					memcpy(buffer + cnt, ptr + poff, plen);
> -				kunmap(page);
> +					memcpy_from_page(buffer + cnt, page + poff, 0, plen);

Same.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] staging: rts5208: Convert kmap() to kmap_local_page()
  2022-03-29  9:18 ` Dan Carpenter
@ 2022-03-29 15:02   ` Fabio M. De Francesco
  0 siblings, 0 replies; 3+ messages in thread
From: Fabio M. De Francesco @ 2022-03-29 15:02 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Greg Kroah-Hartman, Benjamin Philip, Bart Van Assche,
	Martin K. Petersen, Eric W. Biederman, Colin Ian King,
	Samuel Sjöberg, Charlie Sands, linux-staging, linux-kernel,
	outreachy, ira.weiny

On marted? 29 marzo 2022 11:18:27 CEST Dan Carpenter wrote:
> On Tue, Mar 29, 2022 at 07:55:39AM +0200, Fabio M. De Francesco wrote:
> > diff --git a/drivers/staging/rts5208/rtsx_transport.c b/drivers/staging/rts5208/rtsx_transport.c
> > index 805dc18fac0a..56b6cc845619 100644
> > --- a/drivers/staging/rts5208/rtsx_transport.c
> > +++ b/drivers/staging/rts5208/rtsx_transport.c
> > @@ -92,13 +92,11 @@ 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);
> >  
> >  				if (dir == TO_XFER_BUF)
> > -					memcpy(ptr + poff, buffer + cnt, plen);
> > +					memcpy_to_page(page + poff, 0, buffer + cnt, plen);
> 
> You meant:
> 
> 	memcpy_to_page(page, poff, buffer + cnt, plen);
> 

Yes, correct. I meant exactly what you wrote.

It's the first time that I use these API and, after 30 seconds look at their 
prototypes, I thought that either have the same semantics.

I don't yet know if I'm wrong. However, even if either were correct, yours 
would be more consistent and elegant. Therefore, I am going to change these
calls and submit a v3.

Thanks for your review,

Fabio M. De Francesco

> >  				else
> > -					memcpy(buffer + cnt, ptr + poff, plen);
> > -				kunmap(page);
> > +					memcpy_from_page(buffer + cnt, page + poff, 0, plen);
> 
> Same.
> 
> regards,
> dan carpenter
> 
> 





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-03-29 15:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-29  5:55 [PATCH v2] staging: rts5208: Convert kmap() to kmap_local_page() Fabio M. De Francesco
2022-03-29  9:18 ` Dan Carpenter
2022-03-29 15:02   ` Fabio M. De Francesco

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.