From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v2 2/4] sysctl: Make XEN_SYSCTL_topologyinfo sysctl a little more efficient Date: Tue, 6 Jan 2015 13:41:39 +0000 Message-ID: <54ABE613.2090608@citrix.com> References: <1420510737-22813-1-git-send-email-boris.ostrovsky@oracle.com> <1420510737-22813-3-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1420510737-22813-3-git-send-email-boris.ostrovsky@oracle.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: Boris Ostrovsky , jbeulich@suse.com, keir@xen.org, ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, ian.campbell@citrix.com, wei.liu2@citrix.com Cc: dario.faggioli@citrix.com, ufimtseva@gmail.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 06/01/15 02:18, Boris Ostrovsky wrote: > Instead of copying data for each field in xen_sysctl_topologyinfo separately > put cpu/socket/node into a single structure and do a single copy for each > processor. > > There is also no need to copy whole op to user at the end, max_cpu_index is > sufficient > > Rename xen_sysctl_topologyinfo and XEN_SYSCTL_topologyinfo to reflect the fact > that these are used for CPU topology. Subsequent patch will add support for > PCI topology sysctl. > > Signed-off-by: Boris Ostrovsky If we are going to change the hypercall, then can we see about making it a stable interface (i.e. not a sysctl/domctl)? There are non-toolstack components which might want/need access to this information. (i.e. I am still looking for a reasonable way to get this information from Xen in hwloc) > > > + if ( cpu_online(i) ) > { > - uint32_t socket = cpu_online(i) ? cpu_to_socket(i) : ~0u; > - if ( copy_to_guest_offset(ti->cpu_to_socket, i, &socket, 1) ) > - break; > + cputopo.core = cpu_to_core(i); > + cputopo.socket = cpu_to_socket(i); > + cputopo.node = cpu_to_node(i); > } > - if ( !guest_handle_is_null(ti->cpu_to_node) ) > + else > + cputopo.core = cputopo.socket = > + cputopo.node = INVALID_TOPOLOGY_ID; > + In particular, can we fix this broken behaviour. The cpu being online or not has no bearing on whether Xen has topology information, and a side effect is that when the cpu governer powers down a cpu, it disappears from the reported topology. ~Andrew