uint32_t ssidref;
unsigned int dying:1, crashed:1, shutdown:1,
paused:1, blocked:1, running:1,
- hvm:1, debugged:1, pvh:1, xenstore:1;
+ hvm:1, debugged:1, pvh:1, xenstore:1, hap:1;
unsigned int shutdown_reason; /* only meaningful if shutdown==1 */
unsigned long nr_pages; /* current number, not maximum */
unsigned long nr_outstanding_pages;
info->debugged = !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_debugged);
info->pvh = !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_pvh_guest);
info->xenstore = !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_xs_domain);
+ info->hap = !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_hap);
info->shutdown_reason =
(domctl.u.getdomaininfo.flags>>XEN_DOMINF_shutdownshift) &
#include <xsm/xsm.h>
#include <public/domctl.h>
+void arch_get_domain_info(const struct domain *d,
+ struct xen_domctl_getdomaininfo *info)
+{
+ /* All ARM domains use hardware assisted paging. */
+ info->flags |= XEN_DOMINF_hap;
+}
+
long arch_do_domctl(struct xen_domctl *domctl, struct domain *d,
XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
{
}
}
+void arch_get_domain_info(const struct domain *d,
+ struct xen_domctl_getdomaininfo *info)
+{
+ if ( paging_mode_hap(d) )
+ info->flags |= XEN_DOMINF_hap;
+}
+
#define MAX_IOPORTS 0x10000
long arch_do_domctl(
info->cpupool = d->cpupool ? d->cpupool->cpupool_id : CPUPOOLID_NONE;
memcpy(info->handle, d->handle, sizeof(xen_domain_handle_t));
+
+ arch_get_domain_info(d, info);
}
bool_t domctl_lock_acquire(void)
/* domain is a xenstore domain */
#define _XEN_DOMINF_xs_domain 8
#define XEN_DOMINF_xs_domain (1U<<_XEN_DOMINF_xs_domain)
+/* domain has hardware assisted paging */
+#define _XEN_DOMINF_hap 9
+#define XEN_DOMINF_hap (1U<<_XEN_DOMINF_hap)
/* XEN_DOMINF_shutdown guest-supplied code. */
#define XEN_DOMINF_shutdownmask 255
#define XEN_DOMINF_shutdownshift 16
struct xen_domctl_getdomaininfo;
void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info);
+void arch_get_domain_info(const struct domain *d,
+ struct xen_domctl_getdomaininfo *info);
/*
* Arch-specifics.