This functionality is obsolete. It was introduced by c/s
39407bed9c0 into
Xend, but never exposed in libxl.
While not explicitly limited to PV guests, this is PV-only by virtue of its
position in the pagefault handler.
Looking though the XenServer templates, this was used to work around bugs in
the 32bit RHEL/CentOS 4.{5..7} kernels (fixed in 4.8). RHEL 4 as a major
version when out if support in 2017.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Acked-by: Wei Liu <wl@xen.org>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
int xc_domain_get_machine_address_size(xc_interface *xch,
uint32_t domid);
-int xc_domain_suppress_spurious_page_faults(xc_interface *xch,
- uint32_t domid);
-
/* Set the target domain */
int xc_domain_set_target(xc_interface *xch,
uint32_t domid,
return rc == 0 ? domctl.u.address_size.size : rc;
}
-int xc_domain_suppress_spurious_page_faults(xc_interface *xc, uint32_t domid)
-{
- DECLARE_DOMCTL;
-
- memset(&domctl, 0, sizeof(domctl));
- domctl.domain = domid;
- domctl.cmd = XEN_DOMCTL_suppress_spurious_page_faults;
-
- return do_domctl(xc, &domctl);
-
-}
-
int xc_domain_debug_control(xc_interface *xc, uint32_t domid, uint32_t sop, uint32_t vcpu)
{
DECLARE_DOMCTL;
Py_INCREF(zero);
return zero;
}
-
-static PyObject *pyxc_dom_suppress_spurious_page_faults(XcObject *self,
- PyObject *args,
- PyObject *kwds)
-{
- uint32_t dom;
-
- if (!PyArg_ParseTuple(args, "i", &dom))
- return NULL;
-
- if (xc_domain_suppress_spurious_page_faults(self->xc_handle, dom) != 0)
- return pyxc_error_to_exception(self->xc_handle);
-
- Py_INCREF(zero);
- return zero;
-}
#endif /* __i386__ || __x86_64__ */
static PyObject *pyxc_gnttab_hvm_seed(XcObject *self,
"Set maximum machine address size for this domain.\n"
" dom [int]: Identifier of domain.\n"
" width [int]: Maximum machine address width.\n" },
-
- { "domain_suppress_spurious_page_faults",
- (PyCFunction)pyxc_dom_suppress_spurious_page_faults,
- METH_VARARGS, "\n"
- "Do not propagate spurious page faults to this guest.\n"
- " dom [int]: Identifier of domain.\n" },
#endif
{ "dom_set_memshr",
}
break;
- case XEN_DOMCTL_suppress_spurious_page_faults:
- d->arch.suppress_spurious_page_faults = 1;
- break;
-
#ifdef CONFIG_HVM
case XEN_DOMCTL_debug_op:
{
{
unsigned long addr, fixup;
unsigned int error_code;
- enum pf_type pf_type;
addr = read_cr2();
if ( unlikely(!guest_mode(regs)) )
{
- pf_type = spurious_page_fault(addr, regs);
+ enum pf_type pf_type = spurious_page_fault(addr, regs);
+
if ( (pf_type == smep_fault) || (pf_type == smap_fault) )
{
console_start_sync();
error_code, _p(addr));
}
- if ( unlikely(current->domain->arch.suppress_spurious_page_faults) )
- {
- pf_type = spurious_page_fault(addr, regs);
- if ( (pf_type == smep_fault) || (pf_type == smap_fault))
- {
- printk(XENLOG_G_ERR "%pv fatal SM%cP violation\n",
- current, (pf_type == smep_fault) ? 'E' : 'A');
-
- domain_crash(current->domain);
- }
- if ( pf_type != real_fault )
- return;
- }
-
if ( unlikely(regs->error_code & PFEC_reserved_bit) )
reserved_bit_page_fault(addr, regs);
/* Is shared-info page in 32-bit format? */
bool_t has_32bit_shinfo;
- /* Domain cannot handle spurious page faults? */
- bool_t suppress_spurious_page_faults;
-
/* Is PHYSDEVOP_eoi to automatically unmask the event channel? */
bool_t auto_unmask;
/* XEN_DOMCTL_set_machine_address_size */
/* XEN_DOMCTL_get_machine_address_size */
-/*
- * Do not inject spurious page faults into this domain.
- */
-/* XEN_DOMCTL_suppress_spurious_page_faults */
-
/* XEN_DOMCTL_debug_op */
#define XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_OFF 0
#define XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_ON 1
#define XEN_DOMCTL_get_device_group 50
#define XEN_DOMCTL_set_machine_address_size 51
#define XEN_DOMCTL_get_machine_address_size 52
-#define XEN_DOMCTL_suppress_spurious_page_faults 53
+/* #define XEN_DOMCTL_suppress_spurious_page_faults 53 - Obsolete */
#define XEN_DOMCTL_debug_op 54
#define XEN_DOMCTL_gethvmcontext_partial 55
#define XEN_DOMCTL_vm_event_op 56
case XEN_DOMCTL_subscribe:
case XEN_DOMCTL_disable_migrate:
- case XEN_DOMCTL_suppress_spurious_page_faults:
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_suppress_spurious_page_faults
+# XEN_DOMCTL_subscribe, XEN_DOMCTL_disable_migrate
set_misc_info
# XEN_DOMCTL_set_virq_handler
set_virq_handler