From: Andrew Cooper Date: Tue, 23 Jul 2019 19:46:35 +0000 (+0100) Subject: x86/pv: Move async_exception_cleanup() into pv/iret.c X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=094796affb7c87f6b2daccdbe192208af715e088;p=people%2Fdwmw2%2Fxen.git x86/pv: Move async_exception_cleanup() into pv/iret.c All callers are in pv/iret.c. Move the function and make it static. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Juergen Gross Acked-by: Jan Beulich --- diff --git a/xen/arch/x86/pv/iret.c b/xen/arch/x86/pv/iret.c index c359a1dbfd..16b449ff64 100644 --- a/xen/arch/x86/pv/iret.c +++ b/xen/arch/x86/pv/iret.c @@ -22,7 +22,30 @@ #include #include -#include + +static void async_exception_cleanup(struct vcpu *curr) +{ + unsigned int trap; + + if ( !curr->async_exception_mask ) + return; + + if ( !(curr->async_exception_mask & (curr->async_exception_mask - 1)) ) + trap = __scanbit(curr->async_exception_mask, VCPU_TRAP_NONE); + else + for ( trap = VCPU_TRAP_NONE + 1; trap <= VCPU_TRAP_LAST; ++trap ) + if ( (curr->async_exception_mask ^ + curr->async_exception_state(trap).old_mask) == (1u << trap) ) + break; + if ( unlikely(trap > VCPU_TRAP_LAST) ) + { + ASSERT_UNREACHABLE(); + return; + } + + /* Restore previous asynchronous exception mask. */ + curr->async_exception_mask = curr->async_exception_state(trap).old_mask; +} unsigned long do_iret(void) { diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 08d7edc568..38d12013db 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -1593,30 +1593,6 @@ static void pci_serr_softirq(void) outb(inb(0x61) & 0x0b, 0x61); /* re-enable the PCI SERR error line. */ } -void async_exception_cleanup(struct vcpu *curr) -{ - int trap; - - if ( !curr->async_exception_mask ) - return; - - if ( !(curr->async_exception_mask & (curr->async_exception_mask - 1)) ) - trap = __scanbit(curr->async_exception_mask, VCPU_TRAP_NONE); - else - for ( trap = VCPU_TRAP_NONE + 1; trap <= VCPU_TRAP_LAST; ++trap ) - if ( (curr->async_exception_mask ^ - curr->async_exception_state(trap).old_mask) == (1 << trap) ) - break; - if ( unlikely(trap > VCPU_TRAP_LAST) ) - { - ASSERT_UNREACHABLE(); - return; - } - - /* Restore previous asynchronous exception mask. */ - curr->async_exception_mask = curr->async_exception_state(trap).old_mask; -} - static void nmi_hwdom_report(unsigned int reason_idx) { struct domain *d = hardware_domain; diff --git a/xen/include/asm-x86/traps.h b/xen/include/asm-x86/traps.h index b88f2a4f2f..ec23d3a70b 100644 --- a/xen/include/asm-x86/traps.h +++ b/xen/include/asm-x86/traps.h @@ -19,8 +19,6 @@ #ifndef ASM_TRAP_H #define ASM_TRAP_H -void async_exception_cleanup(struct vcpu *); - const char *trapstr(unsigned int trapnr); #endif /* ASM_TRAP_H */