linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: jeyr@codeaurora.org
To: Greg KH <gregkh@linuxfoundation.org>
Cc: linux-arm-msm@vger.kernel.org, srinivas.kandagatla@linaro.org,
	linux-kernel@vger.kernel.org, fastrpc.upstream@qti.qualcomm.com
Subject: Re: [PATCH] misc: fastrpc: copy to user only for non-DMA-BUF heap buffers
Date: Thu, 23 Sep 2021 15:54:15 +0530	[thread overview]
Message-ID: <f3333ba748b0b7aacfa6ec87888ccb6c@codeaurora.org> (raw)
In-Reply-To: <YUw/k1PdjfYmufQP@kroah.com>

On 2021-09-23 14:19, Greg KH wrote:
> On Thu, Sep 23, 2021 at 02:07:52PM +0530, Jeya R wrote:
>> fastrpc_put_args is copying all the output buffers to user. For large
>> number of output context buffers, this might cause performance
>> degradation. Copying is not needed for DMA-BUF heap buffers.
> 
> What does "performance degradation" really mean?

Unnecessary copying for large number of buffers would cause some
additional time which would get added to overall fastrpc call cost.

> 
>> 
>> Signed-off-by: Jeya R <jeyr@codeaurora.org>
>> ---
>>  drivers/misc/fastrpc.c | 18 ++++++++++--------
>>  1 file changed, 10 insertions(+), 8 deletions(-)
>> 
>> diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
>> index beda610..536eabf 100644
>> --- a/drivers/misc/fastrpc.c
>> +++ b/drivers/misc/fastrpc.c
>> @@ -890,15 +890,17 @@ static int fastrpc_put_args(struct 
>> fastrpc_invoke_ctx *ctx,
>>  	inbufs = REMOTE_SCALARS_INBUFS(ctx->sc);
>> 
>>  	for (i = inbufs; i < ctx->nbufs; ++i) {
>> -		void *src = (void *)(uintptr_t)rpra[i].pv;
>> -		void *dst = (void *)(uintptr_t)ctx->args[i].ptr;
>> -		u64 len = rpra[i].len;
>> +		if (!ctx->maps[i]) {
>> +			void *src = (void *)(uintptr_t)rpra[i].pv;
>> +			void *dst = (void *)(uintptr_t)ctx->args[i].ptr;
> 
> uintptr_t is not a kernel variable type.  Please use the real kernel
> type for this as you are touching these lines.
> 

Sure, thanks for pointing this. Will update this in the next patch.

>> +			u64 len = rpra[i].len;
>> 
>> -		if (!kernel) {
>> -			if (copy_to_user((void __user *)dst, src, len))
>> -				return -EFAULT;
>> -		} else {
>> -			memcpy(dst, src, len);
>> +			if (!kernel) {
>> +				if (copy_to_user((void __user *)dst, src, len))
>> +					return -EFAULT;
>> +			} else {
>> +				memcpy(dst, src, len);
>> +			}
> 
> So you were copying buffers that didn't need to be copied?  So you are
> now doing less work?  Or is this fixing a bug where you were copying
> things that you should not have been copying?
> 
> What commit does this fix?  Does this need to go to the stable kernel
> trees?
> 

Yes, not all buffer needs to be copied. This change would avoid 
unnecessary
copying of buffers. Not adding fix tag as it's not exactly fixing any 
bug.
This should go to stable kernel trees.

Thanks

> thanks,
> 
> greg k-h

  reply	other threads:[~2021-09-23 10:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-23  8:37 [PATCH] misc: fastrpc: copy to user only for non-DMA-BUF heap buffers Jeya R
2021-09-23  8:49 ` Greg KH
2021-09-23 10:24   ` jeyr [this message]
2021-09-23 17:43     ` Greg KH
2021-09-24  6:25       ` jeyr
2021-09-24  6:55         ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f3333ba748b0b7aacfa6ec87888ccb6c@codeaurora.org \
    --to=jeyr@codeaurora.org \
    --cc=fastrpc.upstream@qti.qualcomm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=srinivas.kandagatla@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).