mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xen: Simplify TSC domctls by removing double info field
There is no need to have this twice and we can simply inline xen_guest_tsc_info into xen_domctl_tsc_info as well. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Jan Beulich <JBeulich@suse.com>
This commit is contained in:
1 parent
f057af7aad
commit
6b05648d12
3 files changed
+19
-34
No files matched your search
+8
-15
@@ -760,10 +760,10 @@ int xc_domain_set_tsc_info(xc_interface *xch,
|
||||
DECLARE_DOMCTL;
|
||||
domctl.cmd = XEN_DOMCTL_settscinfo;
|
||||
domctl.domain = (domid_t)domid;
|
||||
domctl.u.tsc_info.info.tsc_mode = tsc_mode;
|
||||
domctl.u.tsc_info.info.elapsed_nsec = elapsed_nsec;
|
||||
domctl.u.tsc_info.info.gtsc_khz = gtsc_khz;
|
||||
domctl.u.tsc_info.info.incarnation = incarnation;
|
||||
domctl.u.tsc_info.tsc_mode = tsc_mode;
|
||||
domctl.u.tsc_info.elapsed_nsec = elapsed_nsec;
|
||||
domctl.u.tsc_info.gtsc_khz = gtsc_khz;
|
||||
domctl.u.tsc_info.incarnation = incarnation;
|
||||
return do_domctl(xch, &domctl);
|
||||
}
|
||||
|
||||
@@ -776,24 +776,17 @@ int xc_domain_get_tsc_info(xc_interface *xch,
|
||||
{
|
||||
int rc;
|
||||
DECLARE_DOMCTL;
|
||||
DECLARE_HYPERCALL_BUFFER(xen_guest_tsc_info_t, info);
|
||||
|
||||
info = xc_hypercall_buffer_alloc(xch, info, sizeof(*info));
|
||||
if ( info == NULL )
|
||||
return -1;
|
||||
|
||||
domctl.cmd = XEN_DOMCTL_gettscinfo;
|
||||
domctl.domain = (domid_t)domid;
|
||||
set_xen_guest_handle(domctl.u.tsc_info.out_info, info);
|
||||
rc = do_domctl(xch, &domctl);
|
||||
if ( rc == 0 )
|
||||
{
|
||||
*tsc_mode = info->tsc_mode;
|
||||
*elapsed_nsec = info->elapsed_nsec;
|
||||
*gtsc_khz = info->gtsc_khz;
|
||||
*incarnation = info->incarnation;
|
||||
*tsc_mode = domctl.u.tsc_info.tsc_mode;
|
||||
*elapsed_nsec = domctl.u.tsc_info.elapsed_nsec;
|
||||
*gtsc_khz = domctl.u.tsc_info.gtsc_khz;
|
||||
*incarnation = domctl.u.tsc_info.incarnation;
|
||||
}
|
||||
xc_hypercall_buffer_free(xch, info);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
+9
-12
@@ -703,16 +703,13 @@ long arch_do_domctl(
|
||||
ret = -EINVAL;
|
||||
else
|
||||
{
|
||||
xen_guest_tsc_info_t info = { 0 };
|
||||
|
||||
domain_pause(d);
|
||||
tsc_get_info(d, &info.tsc_mode,
|
||||
&info.elapsed_nsec,
|
||||
&info.gtsc_khz,
|
||||
&info.incarnation);
|
||||
tsc_get_info(d, &domctl->u.tsc_info.tsc_mode,
|
||||
&domctl->u.tsc_info.elapsed_nsec,
|
||||
&domctl->u.tsc_info.gtsc_khz,
|
||||
&domctl->u.tsc_info.incarnation);
|
||||
domain_unpause(d);
|
||||
if ( copy_to_guest(domctl->u.tsc_info.out_info, &info, 1) )
|
||||
ret = -EFAULT;
|
||||
copyback = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -722,10 +719,10 @@ long arch_do_domctl(
|
||||
else
|
||||
{
|
||||
domain_pause(d);
|
||||
tsc_set_info(d, domctl->u.tsc_info.info.tsc_mode,
|
||||
domctl->u.tsc_info.info.elapsed_nsec,
|
||||
domctl->u.tsc_info.info.gtsc_khz,
|
||||
domctl->u.tsc_info.info.incarnation);
|
||||
tsc_set_info(d, domctl->u.tsc_info.tsc_mode,
|
||||
domctl->u.tsc_info.elapsed_nsec,
|
||||
domctl->u.tsc_info.gtsc_khz,
|
||||
domctl->u.tsc_info.incarnation);
|
||||
domain_unpause(d);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -699,18 +699,13 @@ typedef struct xen_domctl_disable_migrate {
|
||||
|
||||
/* XEN_DOMCTL_gettscinfo */
|
||||
/* XEN_DOMCTL_settscinfo */
|
||||
struct xen_guest_tsc_info {
|
||||
typedef struct xen_domctl_tsc_info {
|
||||
/* IN/OUT */
|
||||
uint32_t tsc_mode;
|
||||
uint32_t gtsc_khz;
|
||||
uint32_t incarnation;
|
||||
uint32_t pad;
|
||||
uint64_aligned_t elapsed_nsec;
|
||||
};
|
||||
typedef struct xen_guest_tsc_info xen_guest_tsc_info_t;
|
||||
DEFINE_XEN_GUEST_HANDLE(xen_guest_tsc_info_t);
|
||||
typedef struct xen_domctl_tsc_info {
|
||||
XEN_GUEST_HANDLE_64(xen_guest_tsc_info_t) out_info; /* OUT */
|
||||
xen_guest_tsc_info_t info; /* IN */
|
||||
} xen_domctl_tsc_info_t;
|
||||
|
||||
/* XEN_DOMCTL_gdbsx_guestmemio guest mem io */
|
||||
|
||||