[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH RFC] suggestion on the inflight irq order



On Fri, 14 Jun 2013, Jaeyong Yoo wrote:
> Since inflight irq is only used for keeping track of on-going irqs, 
> I don't think it should be sorted by priority. (Only used for cleaing 
> all inflight irqs and debug-print all inflight irqs) For IRQ processing 
> at xen, we can save some time by not keeping it in order.
> 
> Signed-off-by: Jaeyong Yoo <jaeyong.yoo@xxxxxxxxxxx>

It's true that at the moment it's not useful to order inflight irqs by
priority but one day when we'll actually support irq priorities properly
and we'll be able to replace an irq in an LR register with an higher
priority irq then it is probably going to be needed.

However we'll likely have to make so many changes to make that work that
we might as well reintroduce the order by priority in the inflight queue
too.


>  xen/arch/arm/vgic.c |   11 +----------
>  1 file changed, 1 insertion(+), 10 deletions(-)
> 
> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
> index 7eaccb7..47cc2a0 100644
> --- a/xen/arch/arm/vgic.c
> +++ b/xen/arch/arm/vgic.c
> @@ -666,7 +666,7 @@ void vgic_vcpu_inject_irq(struct vcpu *v, unsigned int 
> irq, int virtual)
>      int idx = irq >> 2, byte = irq & 0x3;
>      uint8_t priority;
>      struct vgic_irq_rank *rank = vgic_irq_rank(v, 8, idx);
> -    struct pending_irq *iter, *n = irq_to_pending(v, irq);
> +    struct pending_irq *n = irq_to_pending(v, irq);
>      unsigned long flags;
>      bool_t running;
>  
> @@ -692,16 +692,7 @@ void vgic_vcpu_inject_irq(struct vcpu *v, unsigned int 
> irq, int virtual)
>      if ( rank->ienable & (1 << (irq % 32)) )
>          gic_set_guest_irq(v, irq, GICH_LR_PENDING, priority);
>  
> -    list_for_each_entry ( iter, &v->arch.vgic.inflight_irqs, inflight )
> -    {
> -        if ( iter->priority > priority )
> -        {
> -            list_add_tail(&n->inflight, &iter->inflight);
> -            goto out;
> -        }
> -    }
>      list_add_tail(&n->inflight, &v->arch.vgic.inflight_irqs);
> -out:
>      spin_unlock_irqrestore(&v->arch.vgic.lock, flags);
>      /* we have a new higher priority irq, inject it into the guest */
>      running = v->is_running;
> -- 
> 1.7.9.5
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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