|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Xen optimization
On Mon, 22 Oct 2018, Milan Boberic wrote:
> Hi,
>
> > I think we want to fully understand how many other interrupts the
> > baremetal guest is receiving. To do that, we can modify my previous
> > patch to suppress any debug messages for virq=68. That way, we should
> > only see the other interrupts. Ideally there would be none.
> > diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
> > index 5a4f082..b7a8e17 100644
> > --- a/xen/arch/arm/vgic.c
> > +++ b/xen/arch/arm/vgic.c
> > @@ -577,7 +577,11 @@ void vgic_inject_irq(struct domain *d, struct vcpu *v,
> > unsigned int virq,
> > /* the irq is enabled */
> > if ( test_bit(GIC_IRQ_GUEST_ENABLED, &n->status) )
> > + {
> > gic_raise_guest_irq(v, virq, priority);
> > + if ( d->domain_id != 0 && virq != 68 )
> > + printk("DEBUG virq=%d local=%d\n",virq,v == current);
> > + }
> > list_for_each_entry ( iter, &v->arch.vgic.inflight_irqs, inflight )
> > {
>
> when I apply this patch there are no prints nor debug messages in xl
> dmesg. So bare-metal receives only interrupt 68, which is good.
Yes, good!
> > Next step would be to verify that there are no other physical interrupts
> > interrupting the vcpu execution other the irq=68. We should be able to
> > check that with the following debug patch:
> >
> > diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
> > index e524ad5..b34c3e4 100644
> > --- a/xen/arch/arm/gic.c
> > +++ b/xen/arch/arm/gic.c
> > @@ -381,6 +381,13 @@ void gic_interrupt(struct cpu_user_regs *regs, int
> > is_fiq)
> > /* Reading IRQ will ACK it */
> > irq = gic_hw_ops->read_irq();
> > + if (current->domain->domain_id > 0 && irq != 68)
> > + {
> > + local_irq_enable();
> > + printk("DEBUG irq=%d\n",irq);
> > + local_irq_disable();
> > + }
> > +
> > if ( likely(irq >= 16 && irq < 1020) )
> > {
> > local_irq_enable();
>
> But when I apply this patch it prints forever:
> (XEN) DEBUG irq=1023
>
> Thanks in advance!
I know why! It's because we always loop around until we read the
spurious interrupt. Just add an && irq != 1023 to the if check.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |