login
Header Space

 
 

[PATCH 24 of 31] xen: add support for callbackops hypercall

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Ingo Molnar <mingo@...>
Cc: LKML <linux-kernel@...>, Ian Campbell <ijc@...>
Date: Monday, March 17, 2008 - 7:37 pm

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

---
 include/asm-x86/xen/hypercall.h  |    6 ++
 include/asm-x86/xen/interface.h  |    4 +
 include/xen/interface/callback.h |  102 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 112 insertions(+)

diff --git a/include/asm-x86/xen/hypercall.h b/include/asm-x86/xen/hypercall.h
--- a/include/asm-x86/xen/hypercall.h
+++ b/include/asm-x86/xen/hypercall.h
@@ -161,6 +161,12 @@
 	return _hypercall4(int, set_callbacks,
 			   event_selector, event_address,
 			   failsafe_selector, failsafe_address);
+}
+
+static inline int
+HYPERVISOR_callback_op(int cmd, void *arg)
+{
+	return _hypercall2(int, callback_op, cmd, arg);
 }
 
 static inline int
diff --git a/include/asm-x86/xen/interface.h b/include/asm-x86/xen/interface.h
--- a/include/asm-x86/xen/interface.h
+++ b/include/asm-x86/xen/interface.h
@@ -171,6 +171,10 @@
     unsigned long pad[5]; /* sizeof(struct vcpu_info) == 64 */
 };
 
+struct xen_callback {
+	unsigned long cs;
+	unsigned long eip;
+};
 #endif /* !__ASSEMBLY__ */
 
 /*
diff --git a/include/xen/interface/callback.h b/include/xen/interface/callback.h
new file mode 100644
--- /dev/null
+++ b/include/xen/interface/callback.h
@@ -0,0 +1,102 @@
+/******************************************************************************
+ * callback.h
+ *
+ * Register guest OS callbacks with Xen.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Copyright (c) 2006, Ian Campbell
+ */
+
+#ifndef __XEN_PUBLIC_CALLBACK_H__
+#define __XEN_PUBLIC_CALLBACK_H__
+
+#include "xen.h"
+
+/*
+ * Prototype for this hypercall is:
+ *   long callback_op(int cmd, void *extra_args)
+ * @cmd        == CALLBACKOP_??? (callback operation).
+ * @extra_args == Operation-specific extra arguments (NULL if none).
+ */
+
+/* ia64, x86: Callback for event delivery. */
+#define CALLBACKTYPE_event                 0
+
+/* x86: Failsafe callback when guest state cannot be restored by Xen. */
+#define CALLBACKTYPE_failsafe              1
+
+/* x86/64 hypervisor: Syscall by 64-bit guest app ('64-on-64-on-64'). */
+#define CALLBACKTYPE_syscall               2
+
+/*
+ * x86/32 hypervisor: Only available on x86/32 when supervisor_mode_kernel
+ *     feature is enabled. Do not use this callback type in new code.
+ */
+#define CALLBACKTYPE_sysenter_deprecated   3
+
+/* x86: Callback for NMI delivery. */
+#define CALLBACKTYPE_nmi                   4
+
+/*
+ * x86: sysenter is only available as follows:
+ * - 32-bit hypervisor: with the supervisor_mode_kernel feature enabled
+ * - 64-bit hypervisor: 32-bit guest applications on Intel CPUs
+ *                      ('32-on-32-on-64', '32-on-64-on-64')
+ *                      [nb. also 64-bit guest applications on Intel CPUs
+ *                           ('64-on-64-on-64'), but syscall is preferred]
+ */
+#define CALLBACKTYPE_sysenter              5
+
+/*
+ * x86/64 hypervisor: Syscall by 32-bit guest app on AMD CPUs
+ *                    ('32-on-32-on-64', '32-on-64-on-64')
+ */
+#define CALLBACKTYPE_syscall32             7
+
+/*
+ * Disable event deliver during callback? This flag is ignored for event and
+ * NMI callbacks: event delivery is unconditionally disabled.
+ */
+#define _CALLBACKF_mask_events             0
+#define CALLBACKF_mask_events              (1U << _CALLBACKF_mask_events)
+
+/*
+ * Register a callback.
+ */
+#define CALLBACKOP_register                0
+struct callback_register {
+    uint16_t type;
+    uint16_t flags;
+    struct xen_callback address;
+};
+
+/*
+ * Unregister a callback.
+ *
+ * Not all callbacks can be unregistered. -EINVAL will be returned if
+ * you attempt to unregister such a callback.
+ */
+#define CALLBACKOP_unregister              1
+struct callback_unregister {
+    uint16_t type;
+    uint16_t _unused;
+};
+
+#endif /* __XEN_PUBLIC_CALLBACK_H__ */


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 13 of 31] x86/pgtable.h: demacro ptep_test_and_clear_..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 03 of 31] x86: convert pgalloc_64.h from macros to in..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 20 of 31] xen: unify pte operations on machine frames, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 01 of 31] xen: fix RMW when unmasking events, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 31 of 31] xen: jump to iret fixup, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 05 of 31] x86: put paravirt stubs into common asm/pga..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 24 of 31] xen: add support for callbackops hypercall, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 28 of 31] xen: make sure retriggered events are set p..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 18 of 31] xen: unify pte operations, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 25 of 31] x86: only enable interrupts when kernel sta..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 09 of 31] x86: move all the pgd_list handling to one ..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 29 of 31] xen: short-cut for recursive event handling, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 22 of 31] x86: unify KERNEL_PGD_PTRS, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 10 of 31] x86: rename paravirt_alloc_pt etc after the..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 19 of 31] xen: use phys_addr_t when referring to phys..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 02 of 31] xen: fix UP setup of shared_info, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 27 of 31] xen: implement a debug-interrupt handler, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 17 of 31] xen: make use of pte_t union, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 06 of 31] x86: move pte functions into common asm/pga..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 23 of 31] x86: unify pgd ctor/dtor, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 12 of 31] x86/pgtable.h: demacro ptep_set_access_flags, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 21 of 31] xen: make sure iret faults are trapped, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 14 of 31] x86/pgtable.h: demacro ptep_clear_flush_young, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 15 of 31] x86: demacro pgalloc paravirt stubs, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 04 of 31] x86: add common mm/pgtable.c, Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
[PATCH 08 of 31] x86: move pgalloc pud and pgd operations in..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 3:05 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 3:46 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 4:02 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 4:09 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 5:12 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 5:33 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 5:54 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 6:00 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 5:58 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 6:04 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 6:15 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 7:52 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Thu Mar 20, 4:24 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Fri Mar 21, 9:17 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Fri Mar 21, 10:35 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Fri Mar 21, 11:15 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Fri Mar 21, 11:25 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Fri Mar 21, 10:34 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ian Campbell, (Wed Mar 19, 5:22 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 11:11 am)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ingo Molnar, (Wed Mar 19, 3:07 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 3:19 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Ian Campbell, (Wed Mar 19, 12:50 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Wed Mar 19, 2:45 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Zachary Amsden, (Tue Mar 18, 5:33 pm)
Re: [PATCH 00 of 31] x86: unification and xen updates, Jeremy Fitzhardinge, (Tue Mar 18, 5:37 pm)
[PATCH 30 of 31] xen: no need for domU to worry about MCE/MCA, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 26 of 31] xen: support sysenter/sysexit if hypervisor..., Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 11 of 31] x86: add pud_alloc for 4-level pagetables, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 16 of 31] xen: use appropriate pte types, Jeremy Fitzhardinge, (Mon Mar 17, 7:37 pm)
[PATCH 07 of 31] x86: move pmd functions into common asm/pga..., Jeremy Fitzhardinge, (Mon Mar 17, 7:36 pm)
speck-geostationary