|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 3/8] ARM: VGIC: split up gic_dump_info() to cover virtual part separately
Currently gic_dump_info() not only dumps the hardware state of the GIC,
but also the VGIC internal virtual IRQ lists.
Split the latter off and move it into gic-vgic.c to observe the abstraction.
Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
xen/arch/arm/domain.c | 1 +
xen/arch/arm/gic-vgic.c | 11 +++++++++++
xen/arch/arm/gic.c | 12 ------------
xen/include/asm-arm/gic.h | 1 +
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index eb8c8f6176..a010443bfd 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -941,6 +941,7 @@ long arch_do_vcpu_op(int cmd, struct vcpu *v,
XEN_GUEST_HANDLE_PARAM(void) arg)
void arch_dump_vcpu_info(struct vcpu *v)
{
gic_dump_info(v);
+ gic_dump_vgic_info(v);
}
void vcpu_mark_events_pending(struct vcpu *v)
diff --git a/xen/arch/arm/gic-vgic.c b/xen/arch/arm/gic-vgic.c
index 263b430075..1d5744ecc8 100644
--- a/xen/arch/arm/gic-vgic.c
+++ b/xen/arch/arm/gic-vgic.c
@@ -386,6 +386,17 @@ void gic_inject(void)
gic_hw_ops->update_hcr_status(GICH_HCR_UIE, true);
}
+void gic_dump_vgic_info(struct vcpu *v)
+{
+ struct pending_irq *p;
+
+ list_for_each_entry ( p, &v->arch.vgic.inflight_irqs, inflight )
+ printk("Inflight irq=%u lr=%u\n", p->irq, p->lr);
+
+ list_for_each_entry( p, &v->arch.vgic.lr_pending, lr_queue )
+ printk("Pending irq=%d\n", p->irq);
+}
+
/*
* Local variables:
* mode: C
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index 04e6d66b69..4cb74d449e 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -443,20 +443,8 @@ static void maintenance_interrupt(int irq, void *dev_id,
struct cpu_user_regs *r
void gic_dump_info(struct vcpu *v)
{
- struct pending_irq *p;
-
printk("GICH_LRs (vcpu %d) mask=%"PRIx64"\n", v->vcpu_id, v->arch.lr_mask);
gic_hw_ops->dump_state(v);
-
- list_for_each_entry ( p, &v->arch.vgic.inflight_irqs, inflight )
- {
- printk("Inflight irq=%u lr=%u\n", p->irq, p->lr);
- }
-
- list_for_each_entry( p, &v->arch.vgic.lr_pending, lr_queue )
- {
- printk("Pending irq=%d\n", p->irq);
- }
}
void init_maintenance_interrupt(void)
diff --git a/xen/include/asm-arm/gic.h b/xen/include/asm-arm/gic.h
index 71e5354427..1a142d6e9f 100644
--- a/xen/include/asm-arm/gic.h
+++ b/xen/include/asm-arm/gic.h
@@ -287,6 +287,7 @@ extern void send_SGI_allbutself(enum gic_sgi sgi);
/* print useful debug info */
extern void gic_dump_info(struct vcpu *v);
+extern void gic_dump_vgic_info(struct vcpu *v);
/* Number of interrupt lines */
extern unsigned int gic_number_lines(void);
--
2.14.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |