From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: Re: [PATCH] sysctl: adjust XEN_SYSCTL_cputopoinfo behavior Date: Mon, 13 Jul 2015 13:43:32 -0400 Message-ID: <55A3F8C4.2020509@oracle.com> References: <55A3FB110200007800090488@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZEhlq-00086e-Nz for xen-devel@lists.xenproject.org; Mon, 13 Jul 2015 17:44:02 +0000 In-Reply-To: <55A3FB110200007800090488@mail.emea.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich , xen-devel Cc: Ian Campbell , Ian Jackson , Keir Fraser , Tim Deegan List-Id: xen-devel@lists.xenproject.org On 07/13/2015 11:53 AM, Jan Beulich wrote: > The new function's implementation, other than the original one of > XEN_SYSCTL_topologyinfo, didn't allow the caller to get what it needs > (if e.g. it's after the data for just one specific CPU) with just one > hypercall, without caring about the total number of CPUs in the system. Reviewed-by: Boris Ostrovsky Would we want a similar update for XEN_SYSCTL_numainfo? -boris > > Signed-off-by: Jan Beulich > > --- a/xen/common/sysctl.c > +++ b/xen/common/sysctl.c > @@ -358,15 +358,9 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xe > { > xen_sysctl_cputopo_t cputopo = { 0 }; > > - if ( ti->num_cpus < num_cpus ) > - { > - ret = -ENOBUFS; > - i = num_cpus; > - } > - else > - i = 0; > - > - for ( ; i < num_cpus; i++ ) > + if ( num_cpus > ti->num_cpus ) > + num_cpus = ti->num_cpus; > + for ( i = 0; i < num_cpus; ++i ) > { > if ( cpu_present(i) ) > { > @@ -393,7 +387,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xe > else > i = num_cpus; > > - if ( (!ret || (ret == -ENOBUFS)) && (ti->num_cpus != i) ) > + if ( !ret && (ti->num_cpus != i) ) > { > ti->num_cpus = i; > if ( __copy_field_to_guest(u_sysctl, op, > --- a/xen/include/public/sysctl.h > +++ b/xen/include/public/sysctl.h > @@ -482,10 +482,11 @@ DEFINE_XEN_GUEST_HANDLE(xen_sysctl_cputo > * - otherwise it's the number of entries in 'cputopo' > * > * OUT: > - * - If 'num_cpus' is less than the number Xen needs to write, -ENOBUFS shall > - * be returned and 'num_cpus' updated to reflect the intended number. > - * - On success, 'num_cpus' shall indicate the number of entries written, which > - * may be less than the maximum. > + * - If 'num_cpus' is less than the number Xen wants to write but the handle > + * handle is not a NULL one, partial data gets returned and 'num_cpus' gets > + * updated to reflect the intended number. > + * - Otherwise, 'num_cpus' shall indicate the number of entries written, which > + * may be less than the input value. > */ > struct xen_sysctl_cputopoinfo { > uint32_t num_cpus; > > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel