uint32_t *gtsc_khz,
uint32_t *incarnation);
-int xc_domain_disable_migrate(xc_interface *xch, uint32_t domid);
-
int xc_domain_maximum_gpfn(xc_interface *xch, uint32_t domid, xen_pfn_t *gpfns);
int xc_domain_nr_gpfns(xc_interface *xch, uint32_t domid, xen_pfn_t *gpfns);
return do_domctl(xch, &domctl);
}
-int xc_domain_disable_migrate(xc_interface *xch, uint32_t domid)
-{
- DECLARE_DOMCTL;
- domctl.cmd = XEN_DOMCTL_disable_migrate;
- domctl.domain = domid;
- domctl.u.disable_migrate.disable = 1;
- return do_domctl(xch, &domctl);
-}
-
int xc_domain_set_tsc_info(xc_interface *xch,
uint32_t domid,
uint32_t tsc_mode,
return ERROR_FAIL;
}
- if (libxl_defbool_val(d_config->b_info.disable_migrate) &&
- xc_domain_disable_migrate(ctx->xch, domid) != 0) {
- LOG(ERROR, "Couldn't set nomigrate");
- return ERROR_FAIL;
- }
-
/*
* Check if the domain has any CPU or node affinity already. If not, try
* to build up the latter via automatic NUMA placement. In fact, in case
return zero;
}
-static PyObject *pyxc_domain_disable_migrate(XcObject *self, PyObject *args)
-{
- uint32_t dom;
-
- if (!PyArg_ParseTuple(args, "i", &dom))
- return NULL;
-
- if (xc_domain_disable_migrate(self->xc_handle, dom) != 0)
- return pyxc_error_to_exception(self->xc_handle);
-
- Py_INCREF(zero);
- return zero;
-}
-
static PyObject *pyxc_domain_send_trigger(XcObject *self,
PyObject *args,
PyObject *kwds)
" 1=always emulate 2=never emulate\n"
"Returns: [int] 0 on success; -1 on error.\n" },
- { "domain_disable_migrate",
- (PyCFunction)pyxc_domain_disable_migrate,
- METH_VARARGS, "\n"
- "Marks domain as non-migratable AND non-restoreable\n"
- " dom [int]: Domain whose TSC mode is being set.\n"
- "Returns: [int] 0 on success; -1 on error.\n" },
-
{ "domain_send_trigger",
(PyCFunction)pyxc_domain_send_trigger,
METH_VARARGS | METH_KEYWORDS, "\n"
return 0;
}
- case XEN_DOMCTL_disable_migrate:
- d->disable_migrate = domctl->u.disable_migrate.disable;
- return 0;
-
case XEN_DOMCTL_vuart_op:
{
int rc;
if ( !p )
return -ENOMEM;
- if ( d->disable_migrate )
+ /* The hardware domain can't migrate. Give it ITSC if available. */
+ if ( is_hardware_domain(d) )
p->extd.itsc = cpu_has_itsc;
/*
break;
- case XEN_DOMCTL_disable_migrate:
- d->disable_migrate = domctl->u.disable_migrate.disable;
- recalculate_cpuid_policy(d);
- break;
-
case XEN_DOMCTL_get_cpu_policy:
/* Process the CPUID leaves. */
if ( guest_handle_is_null(domctl->u.cpu_policy.cpuid_policy) )
if ( hardware_domid < 0 || hardware_domid >= DOMID_FIRST_RESERVED )
panic("The value of hardware_dom must be a valid domain ID\n");
- d->disable_migrate = true;
old_hwdom = hardware_domain;
hardware_domain = d;
}
watchdog_domain_init(d);
init_status |= INIT_watchdog;
- if ( is_xenstore_domain(d) )
- d->disable_migrate = true;
-
d->iomem_caps = rangeset_new(d, "I/O Memory", RANGESETF_prettyprint_hex);
d->irq_caps = rangeset_new(d, "Interrupts", 0);
if ( !d->iomem_caps || !d->irq_caps )
#include "hvm/save.h"
#include "memory.h"
-#define XEN_DOMCTL_INTERFACE_VERSION 0x00000012
+#define XEN_DOMCTL_INTERFACE_VERSION 0x00000013
/*
* NB. xen_domctl.domain is an IN/OUT parameter for this operation.
XEN_GUEST_HANDLE_64(uint8) buffer; /* OUT: buffer to write record into */
};
-/* XEN_DOMCTL_disable_migrate */
-struct xen_domctl_disable_migrate {
- uint32_t disable; /* IN: 1: disable migration and restore */
-};
-
/* XEN_DOMCTL_gettscinfo */
/* XEN_DOMCTL_settscinfo */
#define XEN_DOMCTL_gethvmcontext_partial 55
#define XEN_DOMCTL_vm_event_op 56
#define XEN_DOMCTL_mem_sharing_op 57
-#define XEN_DOMCTL_disable_migrate 58
+/* #define XEN_DOMCTL_disable_migrate 58 - Obsolete */
#define XEN_DOMCTL_gettscinfo 59
#define XEN_DOMCTL_settscinfo 60
#define XEN_DOMCTL_getpageframeinfo3 61
struct xen_domctl_ioport_permission ioport_permission;
struct xen_domctl_hypercall_init hypercall_init;
struct xen_domctl_settimeoffset settimeoffset;
- struct xen_domctl_disable_migrate disable_migrate;
struct xen_domctl_tsc_info tsc_info;
struct xen_domctl_hvmcontext hvmcontext;
struct xen_domctl_hvmcontext_partial hvmcontext_partial;
bool is_privileged;
/* Can this guest access the Xen console? */
bool is_console;
- /* Non-migratable and non-restoreable? */
- bool disable_migrate;
/* Is this guest being debugged by dom0? */
bool debugger_attached;
/*
return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__SETDEBUGGING);
case XEN_DOMCTL_subscribe:
- case XEN_DOMCTL_disable_migrate:
return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__SET_MISC_INFO);
case XEN_DOMCTL_set_virq_handler:
getpodtarget
# XENMEM_set_pod_target
setpodtarget
-# XEN_DOMCTL_subscribe, XEN_DOMCTL_disable_migrate
+# XEN_DOMCTL_subscribe
set_misc_info
# XEN_DOMCTL_set_virq_handler
set_virq_handler