[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 12/18] x86/traps: move send_guest_trap to pv/traps.c
Fixed some coding style issues while moving. No functional change. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- xen/arch/x86/pv/traps.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ xen/arch/x86/traps.c | 47 ---------------------------------------------- 2 files changed, 50 insertions(+), 47 deletions(-) diff --git a/xen/arch/x86/pv/traps.c b/xen/arch/x86/pv/traps.c index 4e9a376000..f2627b4215 100644 --- a/xen/arch/x86/pv/traps.c +++ b/xen/arch/x86/pv/traps.c @@ -273,6 +273,56 @@ int guest_has_trap_callback(struct domain *d, uint16_t vcpuid, return (t->address != 0); } +int send_guest_trap(struct domain *d, uint16_t vcpuid, unsigned int trap_nr) +{ + struct vcpu *v; + struct softirq_trap *st = &per_cpu(softirq_trap, smp_processor_id()); + + BUG_ON(d == NULL); + BUG_ON(vcpuid >= d->max_vcpus); + v = d->vcpu[vcpuid]; + + switch (trap_nr) + { + case TRAP_nmi: + if ( cmpxchgptr(&st->vcpu, NULL, v) ) + return -EBUSY; + if ( !test_and_set_bool(v->nmi_pending) ) + { + st->domain = d; + st->processor = v->processor; + + /* not safe to wake up a vcpu here */ + raise_softirq(NMI_MCE_SOFTIRQ); + return 0; + } + st->vcpu = NULL; + break; + + case TRAP_machine_check: + if ( cmpxchgptr(&st->vcpu, NULL, v) ) + return -EBUSY; + + /* We are called by the machine check (exception or polling) handlers + * on the physical CPU that reported a machine check error. */ + + if ( !test_and_set_bool(v->mce_pending) ) + { + st->domain = d; + st->processor = v->processor; + + /* not safe to wake up a vcpu here */ + raise_softirq(NMI_MCE_SOFTIRQ); + return 0; + } + st->vcpu = NULL; + break; + } + + /* delivery failed */ + return -EIO; +} + /* * Local variables: * mode: C diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 2517b10ddf..c0d5b89b13 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -1905,53 +1905,6 @@ void __init trap_init(void) open_softirq(PCI_SERR_SOFTIRQ, pci_serr_softirq); } -int send_guest_trap(struct domain *d, uint16_t vcpuid, unsigned int trap_nr) -{ - struct vcpu *v; - struct softirq_trap *st = &per_cpu(softirq_trap, smp_processor_id()); - - BUG_ON(d == NULL); - BUG_ON(vcpuid >= d->max_vcpus); - v = d->vcpu[vcpuid]; - - switch (trap_nr) { - case TRAP_nmi: - if ( cmpxchgptr(&st->vcpu, NULL, v) ) - return -EBUSY; - if ( !test_and_set_bool(v->nmi_pending) ) { - st->domain = d; - st->processor = v->processor; - - /* not safe to wake up a vcpu here */ - raise_softirq(NMI_MCE_SOFTIRQ); - return 0; - } - st->vcpu = NULL; - break; - - case TRAP_machine_check: - if ( cmpxchgptr(&st->vcpu, NULL, v) ) - return -EBUSY; - - /* We are called by the machine check (exception or polling) handlers - * on the physical CPU that reported a machine check error. */ - - if ( !test_and_set_bool(v->mce_pending) ) { - st->domain = d; - st->processor = v->processor; - - /* not safe to wake up a vcpu here */ - raise_softirq(NMI_MCE_SOFTIRQ); - return 0; - } - st->vcpu = NULL; - break; - } - - /* delivery failed */ - return -EIO; -} - void activate_debugregs(const struct vcpu *curr) { ASSERT(curr == current); -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |