diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index ddbfa7a3e4..56ba41b36c 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -1588,7 +1588,8 @@ xenUnifiedDomainSetSchedulerParameters (virDomainPtr dom, GET_PRIVATE(dom->conn); int i, ret; - for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i) { + /* do the hypervisor call last to get better error */ + for (i = XEN_UNIFIED_NR_DRIVERS - 1; i >= 0; i--) { if (priv->opened[i] && drivers[i]->domainSetSchedulerParameters) { ret = drivers[i]->domainSetSchedulerParameters(dom, params, nparams); if (ret == 0) diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c index 67d0f4b9b5..6246513dc4 100644 --- a/src/xen/xen_hypervisor.c +++ b/src/xen/xen_hypervisor.c @@ -1394,8 +1394,8 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain, } else if (STREQ (params[i].field, str_cap) && params[i].type == VIR_DOMAIN_SCHED_FIELD_UINT) { val = params[i].value.ui; - if (val > USHRT_MAX) { - snprintf(buf, sizeof(buf), _("Credit scheduler cap parameter (%d) is out of range (0-65535)"), val); + if (val >= USHRT_MAX) { + snprintf(buf, sizeof(buf), _("Credit scheduler cap parameter (%d) is out of range (0-65534)"), val); virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__, buf, val); return(-1); }