mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
x86: use compat hypercall handlers for calls from 32-bit HVM guests
On 64-bit Xen, hypercalls from 32-bit HVM guests are handled as a special case, but not all the hypercalls are corrently redirected to their compat-mode wrappers. Use compat_* for xen_version, sched_op and set_timer_op for consistency. Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com> xen-unstable changeset: 23333:fabdd682420c xen-unstable date: Thu May 12 09:13:18 2011 +0100
This commit is contained in:
1 parent
ae624070a3
commit
e8234cc8ce
2 files changed
+20
-3
No files matched your search
@@ -2679,15 +2679,18 @@ static hvm_hypercall_t *hvm_hypercall64_table[NR_hypercalls] = {
|
||||
HYPERCALL(tmem_op)
|
||||
};
|
||||
|
||||
#define COMPAT_CALL(x) \
|
||||
[ __HYPERVISOR_ ## x ] = (hvm_hypercall_t *) compat_ ## x
|
||||
|
||||
static hvm_hypercall_t *hvm_hypercall32_table[NR_hypercalls] = {
|
||||
[ __HYPERVISOR_memory_op ] = (hvm_hypercall_t *)hvm_memory_op_compat32,
|
||||
[ __HYPERVISOR_grant_table_op ] = (hvm_hypercall_t *)hvm_grant_table_op_compat32,
|
||||
[ __HYPERVISOR_vcpu_op ] = (hvm_hypercall_t *)hvm_vcpu_op_compat32,
|
||||
[ __HYPERVISOR_physdev_op ] = (hvm_hypercall_t *)hvm_physdev_op_compat32,
|
||||
HYPERCALL(xen_version),
|
||||
COMPAT_CALL(xen_version),
|
||||
HYPERCALL(event_channel_op),
|
||||
HYPERCALL(sched_op),
|
||||
HYPERCALL(set_timer_op),
|
||||
COMPAT_CALL(sched_op),
|
||||
COMPAT_CALL(set_timer_op),
|
||||
HYPERCALL(hvm_op),
|
||||
HYPERCALL(sysctl),
|
||||
HYPERCALL(tmem_op)
|
||||
|
||||
@@ -146,6 +146,20 @@ compat_vcpu_op(
|
||||
extern int
|
||||
compat_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg);
|
||||
|
||||
extern int
|
||||
compat_xen_version(
|
||||
int cmd,
|
||||
XEN_GUEST_HANDLE(void) arg);
|
||||
|
||||
extern int
|
||||
compat_sched_op(
|
||||
int cmd,
|
||||
XEN_GUEST_HANDLE(void) arg);
|
||||
|
||||
extern int
|
||||
compat_set_timer_op(
|
||||
s_time_t timeout);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __XEN_HYPERCALL_H__ */
|
||||