[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/hvm: add more callback/upcall info to 'I' debug key
Include the type of the callback via and the per-VCPU upcall vector. Signed-off-by: David Vrabel <dvrabel@xxxxxxxxxxxx> --- xen/arch/x86/hvm/irq.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index 52aae4565f..6a1edb99f2 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -598,7 +598,9 @@ int hvm_local_events_need_delivery(struct vcpu *v) static void irq_dump(struct domain *d) { struct hvm_irq *hvm_irq = hvm_domain_irq(d); - int i; + int i; + struct vcpu *v; + printk("Domain %d:\n", d->domain_id); printk("PCI 0x%16.16"PRIx64"%16.16"PRIx64 " ISA 0x%8.8"PRIx32" ROUTE %u %u %u %u\n", @@ -630,9 +632,30 @@ static void irq_dump(struct domain *d) hvm_irq->pci_link_assert_count[1], hvm_irq->pci_link_assert_count[2], hvm_irq->pci_link_assert_count[3]); - printk("Callback via %i:%#"PRIx32",%s asserted\n", - hvm_irq->callback_via_type, hvm_irq->callback_via.gsi, - hvm_irq->callback_via_asserted ? "" : " not"); + for_each_vcpu( d, v ) + { + if ( v->arch.hvm.evtchn_upcall_vector ) + printk("%pv: upcall vector: %u\n", + v, v->arch.hvm.evtchn_upcall_vector); + } + switch( hvm_irq->callback_via_type ) + { + case HVMIRQ_callback_none: + printk("Callback via none\n"); + break; + case HVMIRQ_callback_gsi: + printk("Callback via GSI %u\n", hvm_irq->callback_via.gsi); + break; + case HVMIRQ_callback_pci_intx: + printk("Callback via PCI dev %u INTx %u\n", + hvm_irq->callback_via.pci.dev, + hvm_irq->callback_via.pci.intx); + break; + case HVMIRQ_callback_vector: + printk("Callback via vector %u\n", hvm_irq->callback_via.vector); + break; + } + printk(" %s asserted\n", hvm_irq->callback_via_asserted ? "" : " not"); } static void dump_irq_info(unsigned char key) -- 2.30.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |