The first 4 patches of v2 already made it to staging. v4 includes a fix
so libxl preserves its previous error handling behaviour and a style change
Original cover letter:
xc_domain_getinfo() returns the list of domains with domid >= first_domid.
It does so by repeatedly invoking XEN_DOMCTL_getdomaininfo, which leads to
unintuitive behaviour (asking for domid=1 might succeed returning domid=2).
Furthermore, N hypercalls are required whereas the equivalent functionality
can be achieved using with XEN_SYSCTL_getdomaininfo.
Ideally, we want a DOMCTL interface that operates over a single precisely
specified domain and a SYSCTL interface that can be used for bulk queries.
All callers of xc_domain_getinfo() that are better off using SYSCTL are
migrated to use that instead. That includes callers performing domain
discovery and those requesting info for more than 1 domain per hypercall.
A new xc_domain_getinfo_single() is introduced with stricter semantics than
xc_domain_getinfo() (failing if domid isn't found) to migrate the rest to.
With no callers left the xc_dominfo_t structure and the xc_domain_getinfo()
call itself can be cleanly removed, and the DOMCTL interface simplified to
only use its fastpath.
With the DOMCTL ammended, the new xc_domain_getinfo_single() drops its
stricter check, becoming a simple wrapper to invoke the hypercall itself.
Alejandro Vallejo (3):
tools: Modify single-domid callers of xc_domain_getinfolist()
tools: Use new xc function for some xc_domain_getinfo() calls
domctl: Modify XEN_DOMCTL_getdomaininfo to fail if domid is not found
tools/console/client/main.c | 7 +--
tools/debugger/kdd/kdd-xen.c | 5 +-
tools/include/xenctrl.h | 43 -------------
tools/libs/ctrl/xc_domain.c | 82 ++-----------------------
tools/libs/ctrl/xc_pagetab.c | 7 +--
tools/libs/ctrl/xc_private.c | 9 +--
tools/libs/ctrl/xc_private.h | 7 ++-
tools/libs/guest/xg_core.c | 23 +++----
tools/libs/guest/xg_core.h | 6 +-
tools/libs/guest/xg_core_arm.c | 10 +--
tools/libs/guest/xg_core_x86.c | 18 +++---
tools/libs/guest/xg_cpuid_x86.c | 40 ++++++------
tools/libs/guest/xg_dom_boot.c | 16 ++---
tools/libs/guest/xg_domain.c | 8 +--
tools/libs/guest/xg_offline_page.c | 12 ++--
tools/libs/guest/xg_private.h | 1 +
tools/libs/guest/xg_resume.c | 20 +++---
tools/libs/guest/xg_sr_common.h | 2 +-
tools/libs/guest/xg_sr_restore.c | 17 ++---
tools/libs/guest/xg_sr_restore_x86_pv.c | 2 +-
tools/libs/guest/xg_sr_save.c | 27 ++++----
tools/libs/guest/xg_sr_save_x86_pv.c | 6 +-
tools/libs/light/libxl_dom.c | 17 ++---
tools/libs/light/libxl_dom_suspend.c | 7 +--
tools/libs/light/libxl_domain.c | 18 +++---
tools/libs/light/libxl_mem.c | 4 +-
tools/libs/light/libxl_sched.c | 30 ++++-----
tools/libs/light/libxl_x86_acpi.c | 6 +-
tools/misc/xen-hvmcrash.c | 6 +-
tools/misc/xen-lowmemd.c | 6 +-
tools/misc/xen-mfndump.c | 22 +++----
tools/misc/xen-vmtrace.c | 6 +-
tools/ocaml/libs/xc/xenctrl_stubs.c | 6 +-
tools/vchan/vchan-socket-proxy.c | 6 +-
tools/xenpaging/xenpaging.c | 10 +--
tools/xenstore/xenstored_domain.c | 15 +++--
tools/xentrace/xenctx.c | 8 +--
xen/common/domctl.c | 32 +---------
38 files changed, 190 insertions(+), 377 deletions(-)
--
2.34.1