|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] tools/libxc: Fix error handling in get_cpuid_domain_info()
commit 82855aba5bf91e50c81526167c11d4aeaf665e66
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Thu Nov 29 18:17:01 2018 +0000
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Fri Nov 30 14:21:12 2018 +0000
tools/libxc: Fix error handling in get_cpuid_domain_info()
get_cpuid_domain_info() has two conflicting return styles - either -error
for
local failures, or -1/errno for hypercall failures. Switch to consistently
use -error.
While fixing the xc_get_cpu_featureset(), take the opportunity to remove the
redundancy and move it to be adjacent to the other featureset handling.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/libxc/xc_cpuid_x86.c | 33 +++++++++++++--------------------
1 file changed, 13 insertions(+), 20 deletions(-)
diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c
index 13862b9761..098affe3c6 100644
--- a/tools/libxc/xc_cpuid_x86.c
+++ b/tools/libxc/xc_cpuid_x86.c
@@ -336,13 +336,22 @@ static int get_cpuid_domain_info(xc_interface *xch,
uint32_t domid,
if ( featureset[i] != 0 )
return -EOPNOTSUPP;
}
+ else
+ {
+ rc = xc_get_cpu_featureset(xch, (info->hvm
+ ? XEN_SYSCTL_cpu_featureset_hvm
+ : XEN_SYSCTL_cpu_featureset_pv),
+ &host_nr_features, info->featureset);
+ if ( rc )
+ return -errno;
+ }
/* Get xstate information. */
domctl.cmd = XEN_DOMCTL_getvcpuextstate;
domctl.domain = domid;
rc = do_domctl(xch, &domctl);
if ( rc )
- return rc;
+ return -errno;
info->xfeature_mask = domctl.u.vcpuextstate.xfeature_mask;
@@ -352,23 +361,15 @@ static int get_cpuid_domain_info(xc_interface *xch,
uint32_t domid,
rc = xc_hvm_param_get(xch, domid, HVM_PARAM_PAE_ENABLED, &val);
if ( rc )
- return rc;
+ return -errno;
info->pae = !!val;
rc = xc_hvm_param_get(xch, domid, HVM_PARAM_NESTEDHVM, &val);
if ( rc )
- return rc;
+ return -errno;
info->nestedhvm = !!val;
-
- if ( !featureset )
- {
- rc = xc_get_cpu_featureset(xch, XEN_SYSCTL_cpu_featureset_hvm,
- &host_nr_features, info->featureset);
- if ( rc )
- return rc;
- }
}
else
{
@@ -376,17 +377,9 @@ static int get_cpuid_domain_info(xc_interface *xch,
uint32_t domid,
rc = xc_domain_get_guest_width(xch, domid, &width);
if ( rc )
- return rc;
+ return -errno;
info->pv64 = (width == 8);
-
- if ( !featureset )
- {
- rc = xc_get_cpu_featureset(xch, XEN_SYSCTL_cpu_featureset_pv,
- &host_nr_features, info->featureset);
- if ( rc )
- return rc;
- }
}
return 0;
--
generated by git-patchbot for /home/xen/git/xen.git#staging
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |