*/
#define LIBXL_HAVE_DOMINFO_NEVER_STOP 1
+/*
+ * LIBXL_HAVE_DOMINFO_GPADDR_BITS
+ *
+ * If this is defined, libxl_dominfo will contain an uint8 field called
+ * gpaddr_bits, containing the guest physical address space size.
+ */
+#define LIBXL_HAVE_DOMINFO_GPADDR_BITS 1
+
/*
* LIBXL_HAVE_QXL
*
unsigned int max_vcpu_id;
xen_domain_handle_t handle;
unsigned int cpupool;
+ uint8_t gpaddr_bits;
struct xen_arch_domainconfig arch_config;
} xc_dominfo_t;
info->nr_online_vcpus = domctl.u.getdomaininfo.nr_online_vcpus;
info->max_vcpu_id = domctl.u.getdomaininfo.max_vcpu_id;
info->cpupool = domctl.u.getdomaininfo.cpupool;
+ info->gpaddr_bits = domctl.u.getdomaininfo.gpaddr_bits;
info->arch_config = domctl.u.getdomaininfo.arch_config;
memcpy(info->handle, domctl.u.getdomaininfo.handle,
xlinfo->vcpu_max_id = xcinfo->max_vcpu_id;
xlinfo->vcpu_online = xcinfo->nr_online_vcpus;
xlinfo->cpupool = xcinfo->cpupool;
+ xlinfo->gpaddr_bits = xcinfo->gpaddr_bits;
xlinfo->domain_type = (xcinfo->flags & XEN_DOMINF_hvm_guest) ?
LIBXL_DOMAIN_TYPE_HVM : LIBXL_DOMAIN_TYPE_PV;
}
("vcpu_max_id", uint32),
("vcpu_online", uint32),
("cpupool", uint32),
+ ("gpaddr_bits", uint8),
("domain_type", libxl_domain_type),
], dir=DIR_OUT)
{
/* All ARM domains use hardware assisted paging. */
info->flags |= XEN_DOMINF_hap;
+
+ info->gpaddr_bits = p2m_ipa_bits;
}
static int handle_vuart_init(struct domain *d,
info->flags |= XEN_DOMINF_hap;
info->arch_config.emulation_flags = d->arch.emulation_flags;
+ info->gpaddr_bits = hap_paddr_bits;
}
static int do_vmtrace_op(struct domain *d, struct xen_domctl_vmtrace_op *op,
int flags = XEN_DOMINF_blocked;
struct vcpu_runstate_info runstate;
+ memset(info, 0, sizeof(*info));
+
info->domain = d->domain_id;
info->max_vcpu_id = XEN_INVALID_MAX_VCPU_ID;
- info->nr_online_vcpus = 0;
- info->ssidref = 0;
/*
* - domain is marked as blocked only if all its vcpus are blocked
case XEN_SYSCTL_getdomaininfolist:
{
struct domain *d;
- struct xen_domctl_getdomaininfo info = { 0 };
+ struct xen_domctl_getdomaininfo info;
u32 num_domains = 0;
rcu_read_lock(&domlist_read_lock);
struct xen_domctl_getdomaininfo {
/* OUT variables. */
domid_t domain; /* Also echoed in domctl.domain */
+ uint16_t pad1;
/* Domain is scheduled to die. */
#define _XEN_DOMINF_dying 0
#define XEN_DOMINF_dying (1U<<_XEN_DOMINF_dying)
uint32_t ssidref;
xen_domain_handle_t handle;
uint32_t cpupool;
+ uint8_t gpaddr_bits; /* Guest physical address space size. */
+ uint8_t pad2[7];
struct xen_arch_domainconfig arch_config;
};
typedef struct xen_domctl_getdomaininfo xen_domctl_getdomaininfo_t;
#include "domctl.h"
#include "physdev.h"
-#define XEN_SYSCTL_INTERFACE_VERSION 0x00000013
+#define XEN_SYSCTL_INTERFACE_VERSION 0x00000014
/*
* Read console content from Xen buffer ring.