From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v9 0/4] Display IO topology when PXM data is available (plus some cleanup) Date: Mon, 11 May 2015 12:31:26 -0400 Message-ID: <1431361890-3466-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: ian.jackson@eu.citrix.com, ian.campbell@citrix.com, wei.liu2@citrix.com, stefano.stabellini@eu.citrix.com Cc: boris.ostrovsky@oracle.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org Changes in v9: * Re-work patch 3 to make set_xen_guest_handle_offset() take buffer offset in number of elements, not bytes * Update error printing in patch 4. Changes in v8: * Change sysctl's pcitopo interface such that if device is not found then XEN_INVALID_DEV is returned in nodes array. Changes to patches 1 and 5. * Get rid of first_dev and use num_devs in xen_sysctl_pcitopoinfo as an OUT argument that reports how many devices have been processed. Changes to patches 1 and 5. -- Add set_xen_guest_handle_offset macro to help toolstack handle this (new patch 4) * Replace LOGEV with LOGE (patches 2, 3, 5) Changes in v7: * Allow one of arguments to NUMA info sysctls to be NULL, in which case only the non-NULL buffer will be filled in by hypervisor (patches 1 and 4) * Properly handle -ENODEVS in PCI topology sysctl (patch 2) * Error handling changes in patch 5 Changes in v6: * PCI topology interface changes: no continuations, userspace will be dealing with "unfinished" sysctl (patches 2 and 5) * Unknown device will cause ENODEV in sysctl * No NULL tests in libxc * Loop control initialization fix (similar to commit 26da081ac91a) * Other minor changes (see per-patch notes) Changes in v5: * Make CPU topology and NUMA info sysctls behave more like XEN_DOMCTL_get_vcpu_msrs when passed NULL buffers. This required toolstack changes as well * Don't use 8-bit data types in interfaces * Fold interface version update into patch#3 Changes in v4: * Split cputopology and NUMA info changes into separate patches * Added patch#1 (partly because patch#4 needs to know when when distance is invalid, i.e. NUMA_NO_DISTANCE) * Split sysctl version update into a separate patch * Other changes are listed in each patch * NOTE: I did not test python's xc changes since I don't think I know how. Changes in v3: * Added patch #1 to more consistently define nodes as a u8 and properly use NUMA_NO_NODE. * Make changes to xen_sysctl_numainfo, similar to those made to xen_sysctl_topologyinfo. (Q: I kept both sets of changes in the same patch #3 to avoid bumping interface version twice. Perhaps it's better to split it into two?) * Instead of copying data for each loop index allocate a buffer and copy once for all three queries in sysctl.c. * Move hypercall buffer management from libxl to libxc (as requested by Dario, patches #5 and #6). * Report topology info for offlined CPUs as well * Added LIBXL_HAVE_PCITOPO macro Changes in v2: * Split topology sysctls into two --- one for CPU topology and the other for devices * Avoid long loops in the hypervisor by using continuations. (I am not particularly happy about using first_dev in the interface, suggestions for a better interface would be appreciated) * Use proper libxl conventions for interfaces * Avoid hypervisor stack corruption when copying PXM data from guest A few patches that add interface for querying hypervisor about device topology and allow 'xl info -n' display this information if PXM object is provided by ACPI. This series also makes some optimizations and cleanup of current CPU topology and NUMA sysctl queries. Boris Ostrovsky (4): libxl/libxc: Move libxl_get_cpu_topology()'s hypercall buffer management to libxc libxl/libxc: Move libxl_get_numainfo()'s hypercall buffer management to libxc libxc: Provide set_xen_guest_handle_offset macro libxl: Add interface for querying hypervisor about PCI topology tools/libxc/include/xenctrl.h | 26 ++++++-- tools/libxc/xc_misc.c | 92 ++++++++++++++++++++++---- tools/libxl/libxl.c | 131 ++++++++++++++++++++---------------- tools/libxl/libxl.h | 12 ++++ tools/libxl/libxl_freebsd.c | 12 ++++ tools/libxl/libxl_internal.h | 5 ++ tools/libxl/libxl_linux.c | 70 ++++++++++++++++++++ tools/libxl/libxl_netbsd.c | 12 ++++ tools/libxl/libxl_types.idl | 7 ++ tools/libxl/libxl_utils.c | 8 ++ tools/libxl/xl_cmdimpl.c | 40 +++++++++-- tools/misc/xenpm.c | 51 ++++++-------- tools/python/xen/lowlevel/xc/xc.c | 58 ++++++---------- 13 files changed, 374 insertions(+), 150 deletions(-)