|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 5/5] xen/cpupool: make per-cpupool sched-gran hypfs node writable
On 18.01.2021 12:55, Juergen Gross wrote:
> Make /cpupool/<id>/sched-gran in hypfs writable. This will enable per
> cpupool selectable scheduling granularity.
>
> Writing this node is allowed only with no cpu assigned to the cpupool.
> Allowed are values "cpu", "core" and "socket".
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
with two small adjustment requests:
> @@ -85,36 +85,43 @@ static int __init sched_select_granularity(const char
> *str)
> {
> if ( strcmp(sg_name[i].name, str) == 0 )
> {
> - opt_sched_granularity = sg_name[i].mode;
> + *mode = sg_name[i].mode;
> return 0;
> }
> }
>
> return -EINVAL;
> }
> +
> +static int __init sched_select_granularity(const char *str)
> +{
> + return sched_gran_get(str, &opt_sched_granularity);
> +}
> custom_param("sched-gran", sched_select_granularity);
> +#elif CONFIG_HYPFS
Missing defined().
> @@ -1126,17 +1136,55 @@ static unsigned int hypfs_gran_getsize(const struct
> hypfs_entry *entry)
> return strlen(gran) + 1;
> }
>
> +static int cpupool_gran_write(struct hypfs_entry_leaf *leaf,
> + XEN_GUEST_HANDLE_PARAM(const_void) uaddr,
> + unsigned int ulen)
> +{
> + const struct hypfs_dyndir_id *data;
> + struct cpupool *cpupool;
> + enum sched_gran gran;
> + unsigned int sched_gran = 0;
> + char name[SCHED_GRAN_NAME_LEN];
> + int ret = 0;
> +
> + if ( ulen > SCHED_GRAN_NAME_LEN )
> + return -ENOSPC;
> +
> + if ( copy_from_guest(name, uaddr, ulen) )
> + return -EFAULT;
> +
> + if ( memchr(name, 0, ulen) == (name + ulen - 1) )
> + sched_gran = sched_gran_get(name, &gran) ?
> + 0 : cpupool_check_granularity(gran);
> + if ( sched_gran == 0 )
> + return -EINVAL;
> +
> + data = hypfs_get_dyndata();
> + cpupool = data->data;
> + ASSERT(cpupool);
> +
> + if ( !cpumask_empty(cpupool->cpu_valid) )
> + ret = -EBUSY;
> + else
> + {
> + cpupool->gran = gran;
> + cpupool->sched_gran = sched_gran;
> + }
I think this could do with a comment clarifying what lock this
is protected by, as the function itself has no sign of any
locking, not even an assertion that a certain lock is being held.
If you were to suggest some text, this as well as the minor issue
above could likely be taken care of while committing.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |