[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.