[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86: wire up VCPUOP_register_vcpu_time_memory_area for 32-bit guests
commit b726541d94bd0a80b5864d17a2cd2e6d73a3fe0a Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu Sep 29 14:47:45 2022 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Sep 29 14:47:45 2022 +0200 x86: wire up VCPUOP_register_vcpu_time_memory_area for 32-bit guests Forever sinced its introduction VCPUOP_register_vcpu_time_memory_area was available only to native domains. Linux, for example, would attempt to use it irrespective of guest bitness (including in its so called PVHVM mode) as long as it finds XEN_PVCLOCK_TSC_STABLE_BIT set (which we set only for clocksource=tsc, which in turn needs engaging via command line option). Fixes: a5d39947cb89 ("Allow guests to register secondary vcpu_time_info") Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Release-acked-by: Henry Wang <Henry.Wang@xxxxxxx> --- xen/arch/x86/x86_64/domain.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/xen/arch/x86/x86_64/domain.c b/xen/arch/x86/x86_64/domain.c index 9b2f7a7d7a..bfaea17fe7 100644 --- a/xen/arch/x86/x86_64/domain.c +++ b/xen/arch/x86/x86_64/domain.c @@ -58,6 +58,26 @@ compat_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg) break; } + case VCPUOP_register_vcpu_time_memory_area: + { + struct compat_vcpu_register_time_memory_area area = { .addr.p = 0 }; + + rc = -EFAULT; + if ( copy_from_guest(&area.addr.h, arg, 1) ) + break; + + if ( area.addr.h.c != area.addr.p || + !compat_handle_okay(area.addr.h, 1) ) + break; + + rc = 0; + guest_from_compat_handle(v->arch.time_info_guest, area.addr.h); + + force_update_vcpu_system_time(v); + + break; + } + case VCPUOP_send_nmi: case VCPUOP_get_physid: rc = do_vcpu_op(cmd, vcpuid, arg); -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |