[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [mini-os master] Save/Restore Support: Refactor trap_init() and setup vector callbacks
commit 29a343da9f9ec0723b74015234869a00df18db27 Author: Bruno Alvisio <bruno.alvisio@xxxxxxxxx> AuthorDate: Wed Dec 13 16:30:10 2017 -0800 Commit: Wei Liu <wei.liu2@xxxxxxxxxx> CommitDate: Wed Mar 21 09:16:49 2018 +0000 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); -- generated by git-patchbot for /home/xen/git/mini-os.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |