Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
xen.481
54db8052-x86-traps-export-exception_table-to-C....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 54db8052-x86-traps-export-exception_table-to-C.patch of Package xen.481
# Commit d3eb16b8a7c06f0d2a2110948a8477a62b541bbf # Date 2015-02-11 17:16:18 +0100 # Author Andrew Cooper <andrew.cooper3@citrix.com> # Committer Jan Beulich <jbeulich@suse.com> x86/traps: export the exception_table[] function pointer table to C and use it in preference to the direct call to do_nmi() in vmx.c The value 'TRAP_last_reserved' was only used where 'TRAP_nr' would be more appropriate, so is replaced. No functional change Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2585,7 +2585,7 @@ void vmx_vmexit_handler(struct cpu_user_ && ((intr_info & INTR_INFO_INTR_TYPE_MASK) == (X86_EVENTTYPE_NMI << 8)) ) { - do_nmi(regs); + exception_table[TRAP_nmi](regs); enable_nmis(); } break; --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -716,6 +716,7 @@ ENTRY(exception_table) .quad do_alignment_check .quad do_machine_check .quad do_simd_coprocessor_error + .size exception_table, . - exception_table ENTRY(hypercall_table) .quad do_set_trap_table /* 0 */ --- a/xen/include/asm-x86/processor.h +++ b/xen/include/asm-x86/processor.h @@ -113,7 +113,7 @@ #define TRAP_alignment_check 17 #define TRAP_machine_check 18 #define TRAP_simd_error 19 -#define TRAP_last_reserved 31 +#define TRAP_nr 32 /* Set for entry via SYSCALL. Informs return code to use SYSRETQ not IRETQ. */ /* NB. Same as VGCF_in_syscall. No bits in common with any other TRAP_ defn. */ @@ -523,6 +523,9 @@ extern void mtrr_bp_init(void); void mcheck_init(struct cpuinfo_x86 *c, bool_t bsp); +/* Dispatch table for exceptions */ +extern void (* const exception_table[TRAP_nr])(struct cpu_user_regs *regs); + #define DECLARE_TRAP_HANDLER(_name) \ void _name(void); \ void do_ ## _name(struct cpu_user_regs *regs)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor