[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PING] [PATCH 2/2] xen: Drop DOMCTL_getmemlist and xc_get_pfn_list()
On 19/01/18 19:19, Andrew Cooper wrote: > c/s 4ddf474e2 "tools/xen-mceinj: Pass in GPA when injecting through > MSR_MCI_ADDR" removed the remaining user of hypercall. > > It has been listed as broken, deprecated and wont-fix since XSA-74, so take > this opportunity to remove it completely. > > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > --- > CC: Jan Beulich <JBeulich@xxxxxxxx> > CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> > CC: Wei Liu <wei.liu2@xxxxxxxxxx> > CC: Christian Lindig <christian.lindig@xxxxxxxxxx> > --- > tools/libxc/include/xenctrl.h | 7 ----- > tools/libxc/xc_private.c | 27 ------------------ > tools/ocaml/libs/xc/xenctrl.ml | 3 -- > tools/ocaml/libs/xc/xenctrl.mli | 3 -- > tools/ocaml/libs/xc/xenctrl_stubs.c | 32 --------------------- > xen/arch/x86/domctl.c | 56 > ------------------------------------- > xen/include/public/domctl.h | 2 +- > 7 files changed, 1 insertion(+), 129 deletions(-) > > diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h > index ecb0312..30171a2 100644 > --- a/tools/libxc/include/xenctrl.h > +++ b/tools/libxc/include/xenctrl.h > @@ -1520,13 +1520,6 @@ unsigned long > xc_translate_foreign_address(xc_interface *xch, uint32_t dom, > int vcpu, unsigned long long > virt); > > > -/** > - * DEPRECATED. Avoid using this, as it does not correctly account for PFNs > - * without a backing MFN. > - */ > -int xc_get_pfn_list(xc_interface *xch, uint32_t domid, uint64_t *pfn_buf, > - unsigned long max_pfns); > - > int xc_copy_to_domain_page(xc_interface *xch, uint32_t domid, > unsigned long dst_pfn, const char *src_page); > > diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c > index 36ead5f..fcda981 100644 > --- a/tools/libxc/xc_private.c > +++ b/tools/libxc/xc_private.c > @@ -387,33 +387,6 @@ int xc_machphys_mfn_list(xc_interface *xch, > return rc; > } > > -int xc_get_pfn_list(xc_interface *xch, > - uint32_t domid, > - uint64_t *pfn_buf, > - unsigned long max_pfns) > -{ > - DECLARE_DOMCTL; > - DECLARE_HYPERCALL_BOUNCE(pfn_buf, max_pfns * sizeof(*pfn_buf), > XC_HYPERCALL_BUFFER_BOUNCE_OUT); > - int ret; > - > - if ( xc_hypercall_bounce_pre(xch, pfn_buf) ) > - { > - PERROR("xc_get_pfn_list: pfn_buf bounce failed"); > - return -1; > - } > - > - domctl.cmd = XEN_DOMCTL_getmemlist; > - domctl.domain = domid; > - domctl.u.getmemlist.max_pfns = max_pfns; > - set_xen_guest_handle(domctl.u.getmemlist.buffer, pfn_buf); > - > - ret = do_domctl(xch, &domctl); > - > - xc_hypercall_bounce_post(xch, pfn_buf); > - > - return (ret < 0) ? -1 : domctl.u.getmemlist.num_pfns; > -} > - > long xc_get_tot_pages(xc_interface *xch, uint32_t domid) > { > xc_dominfo_t info; > diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml > index a3ba488..1a01faa 100644 > --- a/tools/ocaml/libs/xc/xenctrl.ml > +++ b/tools/ocaml/libs/xc/xenctrl.ml > @@ -244,9 +244,6 @@ external map_foreign_range: handle -> domid -> int > -> nativeint -> Xenmmap.mmap_interface > = "stub_map_foreign_range" > > -external domain_get_pfn_list: handle -> domid -> nativeint -> nativeint array > - = "stub_xc_domain_get_pfn_list" > - > external domain_assign_device: handle -> domid -> (int * int * int * int) -> > unit > = "stub_xc_domain_assign_device" > external domain_deassign_device: handle -> domid -> (int * int * int * int) > -> unit > diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.mli > index ed02124..7d2e6f0 100644 > --- a/tools/ocaml/libs/xc/xenctrl.mli > +++ b/tools/ocaml/libs/xc/xenctrl.mli > @@ -154,9 +154,6 @@ external domain_memory_increase_reservation : > external map_foreign_range : > handle -> domid -> int -> nativeint -> Xenmmap.mmap_interface > = "stub_map_foreign_range" > -external domain_get_pfn_list : > - handle -> domid -> nativeint -> nativeint array > - = "stub_xc_domain_get_pfn_list" > > external domain_assign_device: handle -> domid -> (int * int * int * int) -> > unit > = "stub_xc_domain_assign_device" > diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c > b/tools/ocaml/libs/xc/xenctrl_stubs.c > index d1801e1..f97070c 100644 > --- a/tools/ocaml/libs/xc/xenctrl_stubs.c > +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c > @@ -1009,38 +1009,6 @@ CAMLprim value stub_shadow_allocation_set(value xch, > value domid, > CAMLreturn(Val_unit); > } > > -CAMLprim value stub_xc_domain_get_pfn_list(value xch, value domid, > - value nr_pfns) > -{ > - CAMLparam3(xch, domid, nr_pfns); > - CAMLlocal2(array, v); > - unsigned long c_nr_pfns; > - long ret, i; > - uint64_t *c_array; > - > - c_nr_pfns = Nativeint_val(nr_pfns); > - > - c_array = malloc(sizeof(uint64_t) * c_nr_pfns); > - if (!c_array) > - caml_raise_out_of_memory(); > - > - ret = xc_get_pfn_list(_H(xch), _D(domid), > - c_array, c_nr_pfns); > - if (ret < 0) { > - free(c_array); > - failwith_xc(_H(xch)); > - } > - > - array = caml_alloc(ret, 0); > - for (i = 0; i < ret; i++) { > - v = caml_copy_nativeint(c_array[i]); > - Store_field(array, i, v); > - } > - free(c_array); > - > - CAMLreturn(array); > -} > - > CAMLprim value stub_xc_domain_ioport_permission(value xch, value domid, > value start_port, value nr_ports, > value allow) > diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c > index 2585d4e..129c24e 100644 > --- a/xen/arch/x86/domctl.c > +++ b/xen/arch/x86/domctl.c > @@ -395,62 +395,6 @@ long arch_do_domctl( > break; > } > > - case XEN_DOMCTL_getmemlist: > - { > - unsigned long max_pfns = domctl->u.getmemlist.max_pfns; > - uint64_t mfn; > - struct page_info *page; > - > - if ( unlikely(d->is_dying) ) > - { > - ret = -EINVAL; > - break; > - } > - > - /* > - * XSA-74: This sub-hypercall is broken in several ways: > - * - lock order inversion (p2m locks inside page_alloc_lock) > - * - no preemption on huge max_pfns input > - * - not (re-)checking d->is_dying with page_alloc_lock held > - * - not honoring start_pfn input (which libxc also doesn't set) > - * Additionally it is rather useless, as the result is stale by the > - * time the caller gets to look at it. > - * As it only has a single, non-production consumer (xen-mceinj), > - * rather than trying to fix it we restrict it for the time being. > - */ > - if ( /* No nested locks inside copy_to_guest_offset(). */ > - paging_mode_external(currd) || > - /* Arbitrary limit capping processing time. */ > - max_pfns > GB(4) / PAGE_SIZE ) > - { > - ret = -EOPNOTSUPP; > - break; > - } > - > - spin_lock(&d->page_alloc_lock); > - > - ret = i = 0; > - page_list_for_each(page, &d->page_list) > - { > - if ( i >= max_pfns ) > - break; > - mfn = page_to_mfn(page); > - if ( copy_to_guest_offset(domctl->u.getmemlist.buffer, > - i, &mfn, 1) ) > - { > - ret = -EFAULT; > - break; > - } > - ++i; > - } > - > - spin_unlock(&d->page_alloc_lock); > - > - domctl->u.getmemlist.num_pfns = i; > - copyback = true; > - break; > - } > - > case XEN_DOMCTL_getpageframeinfo3: > { > unsigned int num = domctl->u.getpageframeinfo3.num; > diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h > index a8921dd..7f99d1b 100644 > --- a/xen/include/public/domctl.h > +++ b/xen/include/public/domctl.h > @@ -1117,7 +1117,7 @@ struct xen_domctl { > #define XEN_DOMCTL_pausedomain 3 > #define XEN_DOMCTL_unpausedomain 4 > #define XEN_DOMCTL_getdomaininfo 5 > -#define XEN_DOMCTL_getmemlist 6 > +/* #define XEN_DOMCTL_getmemlist 6 Obsolete */ > /* #define XEN_DOMCTL_getpageframeinfo 7 Obsolete - use > getpageframeinfo3 */ > /* #define XEN_DOMCTL_getpageframeinfo2 8 Obsolete - use > getpageframeinfo3 */ > #define XEN_DOMCTL_setvcpuaffinity 9 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |