All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Lynch <nathanl@linux.ibm.com>
To: Laurent Dufour <ldufour@linux.ibm.com>
Cc: Tyrel Datwyler <tyreld@linux.ibm.com>, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] powerpc/pseries: add lparctl driver for platform-specific functions
Date: Fri, 12 Aug 2022 14:14:21 -0500	[thread overview]
Message-ID: <87k07dl1f6.fsf@linux.ibm.com> (raw)
In-Reply-To: <0ead0cd1-f6f6-ecf0-65d9-f3d9366e258c@linux.ibm.com>

Laurent Dufour <ldufour@linux.ibm.com> writes:
> Le 30/07/2022 à 02:04, Nathan Lynch a écrit :
>> +static long lparctl_get_sysparm(struct lparctl_get_system_parameter __user *argp)
>> +{
>> +	struct lparctl_get_system_parameter *gsp;
>> +	long ret;
>> +	int fwrc;
>> +
>> +	/*
>> +	 * Special case to allow user space to probe the command.
>> +	 */
>> +	if (argp == NULL)
>> +		return 0;
>> +
>> +	gsp = memdup_user(argp, sizeof(*gsp));
>> +	if (IS_ERR(gsp)) {
>> +		ret = PTR_ERR(gsp);
>> +		goto err_return;
>> +	}
>> +
>> +	ret = -EINVAL;
>> +	if (gsp->rtas_status != 0)
>> +		goto err_free;
>> +
>> +	do {
>> +		static_assert(sizeof(gsp->data) <= sizeof(rtas_data_buf));
>> +
>> +		spin_lock(&rtas_data_buf_lock);
>> +		memset(rtas_data_buf, 0, sizeof(rtas_data_buf));
>> +		memcpy(rtas_data_buf, gsp->data, sizeof(gsp->data));
>> +		fwrc = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
>> +				 NULL, gsp->token, __pa(rtas_data_buf),
>> +				 sizeof(gsp->data));
>> +		if (fwrc == 0)
>> +			memcpy(gsp->data, rtas_data_buf, sizeof(gsp->data));
>
> May be the amount of data copied out to the user space could be
> gsp->length. This would prevent copying 4K bytes all the time.
>
> In a more general way, the size of the RTAS buffer is quite big, and I'm
> wondering if all the data need to be copied back and forth to the kernel.
>
> Unless there are a high frequency of calls this doesn't make sense, and
> keeping the code simple might be the best way. Otherwise limiting the bytes
> copied could help a bit.

This is not intended to be a high-bandwidth interface and I don't think
there's much of a performance concern here, so I'd rather just keep the
copy sizes involved constant.

>> +static long lparctl_set_sysparm(struct lparctl_set_system_parameter __user *argp)
>> +{
>> +	struct lparctl_set_system_parameter *ssp;
>> +	long ret;
>> +	int fwrc;
>> +
>> +	/*
>> +	 * Special case to allow user space to probe the command.
>> +	 */
>> +	if (argp == NULL)
>> +		return 0;
>> +
>> +	ssp = memdup_user(argp, sizeof(*ssp));
>
> As for the get case, would it be nice to limit the amount of bytes copied
> to the interesting "length" ?

No, the intent is to pass the buffer contents straight to RTAS without
any validation by the kernel, which would duplicate work already
performed by firmware.

  reply	other threads:[~2022-08-12 19:15 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-30  0:04 [PATCH] powerpc/pseries: add lparctl driver for platform-specific functions Nathan Lynch
2022-08-01 16:40 ` Laurent Dufour
2022-08-12 19:14   ` Nathan Lynch [this message]
2022-09-13  9:13     ` Michal Suchánek
2022-09-13  9:13       ` Michal Suchánek
2022-09-13 15:59       ` Nathan Lynch
2022-09-13 15:59         ` Nathan Lynch
2022-09-13 16:33         ` Michal Suchánek
2022-09-13 16:33           ` Michal Suchánek
2022-09-13 17:02           ` Nathan Lynch
2022-09-13 17:02             ` Nathan Lynch
2022-09-14  8:14             ` Michal Suchánek
2022-09-14  8:14               ` Michal Suchánek
2022-09-15 13:43               ` Nathan Lynch
2022-09-15 13:43                 ` Nathan Lynch

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=87k07dl1f6.fsf@linux.ibm.com \
    --to=nathanl@linux.ibm.com \
    --cc=ldufour@linux.ibm.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=tyreld@linux.ibm.com \
    /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 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.