[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [PATCH RFC 02/16] Save/Restore Support: Refactor trap_init() and setup vector callbacks
Bruno Alvisio, on mar. 19 déc. 2017 15:41:57 -0800, wrote: > 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@xxxxxxxxxx> 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 -- Samuel <O> Ça peut être une madeleine à sous munitions (avec des composants, par exemple) -+- #runtime -+- _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |