|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [PATCH v2 02/16] Save/Restore Support: Refactor trap_init() and setup vector callbacks
Currently the setup of the IDT and the request to set the HVM vector callbacks
are performed both in the trap_init function.
As part of the post-suspend operation, the HVM vector callback needs to be setup
again while the IDT does not. Thus, the trap_init function is split into two
separate functions: trap_init (sets up IDT) and xen_callback_vector (sets the
HVM vector callback). During the post-suspend operations the xen_callback_vector
function will be invoked.
Signed-off-by: Bruno Alvisio <bruno.alvisio@xxxxxxxxx>
Reviewed-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
---
arch/x86/traps.c | 17 +++++++++++------
include/x86/os.h | 3 +++
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/arch/x86/traps.c b/arch/x86/traps.c
index aa17da3..a7388a5 100644
--- a/arch/x86/traps.c
+++ b/arch/x86/traps.c
@@ -389,6 +389,16 @@ static void setup_gate(unsigned int entry, void *addr,
unsigned int dpl)
#endif
}
+void xen_callback_vector(void)
+{
+ if (hvm_set_parameter(HVM_PARAM_CALLBACK_IRQ,
+ (2ULL << 56) | TRAP_xen_callback))
+ {
+ xprintk("Request for Xen HVM callback vector failed\n");
+ do_exit();
+ }
+}
+
void trap_init(void)
{
setup_gate(TRAP_divide_error, ÷_error, 0);
@@ -415,12 +425,7 @@ void trap_init(void)
gdt[GDTE_TSS] = (typeof(*gdt))INIT_GDTE((unsigned long)&tss, 0x67, 0x89);
asm volatile ("ltr %w0" :: "rm" (GDTE_TSS * 8));
- if ( hvm_set_parameter(HVM_PARAM_CALLBACK_IRQ,
- (2ULL << 56) | TRAP_xen_callback) )
- {
- xprintk("Request for Xen HVM callback vector failed\n");
- do_exit();
- }
+ xen_callback_vector();
}
void trap_fini(void)
diff --git a/include/x86/os.h b/include/x86/os.h
index fbc2eeb..d155914 100644
--- a/include/x86/os.h
+++ b/include/x86/os.h
@@ -67,6 +67,9 @@ extern shared_info_t *HYPERVISOR_shared_info;
void trap_init(void);
void trap_fini(void);
+#ifndef CONFIG_PARAVIRT
+void xen_callback_vector(void);
+#endif
void arch_fini(void);
--
2.3.2 (Apple Git-55)
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |