110a0ea59f
Xen will "latch" the guest's 32-bit or 64-bit ("long mode") setting when the guest writes the MSR to fill in the hypercall page, or when the guest sets the event channel callback in HVM_PARAM_CALLBACK_IRQ. KVM handles the former and sets the kernel's long_mode flag accordingly. The latter will be handled in userspace. Keep them in sync by noticing when a hypercall is made in a mode that doesn't match qemu's idea of the guest mode, and resyncing from the kernel. Do that same sync right before serialization too, in case the guest has set the hypercall page but hasn't yet made a system call. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Paul Durrant <paul@xen.org>
25 lines
632 B
C
25 lines
632 B
C
/*
|
|
* QEMU Xen emulation: Shared/overlay pages support
|
|
*
|
|
* Copyright © 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
*
|
|
* Authors: David Woodhouse <dwmw2@infradead.org>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#ifndef QEMU_XEN_OVERLAY_H
|
|
#define QEMU_XEN_OVERLAY_H
|
|
|
|
void xen_overlay_create(void);
|
|
|
|
int xen_overlay_map_shinfo_page(uint64_t gpa);
|
|
void *xen_overlay_get_shinfo_ptr(void);
|
|
|
|
int xen_sync_long_mode(void);
|
|
int xen_set_long_mode(bool long_mode);
|
|
bool xen_is_long_mode(void);
|
|
|
|
#endif /* QEMU_XEN_OVERLAY_H */
|