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

Re: [Xen-devel] A suggestion about processing irq



> From: xen-devel-bounces@xxxxxxxxxxxxx [mailto:xen-devel-
> bounces@xxxxxxxxxxxxx] On Behalf Of Julien Grall
> Sent: Tuesday, August 20, 2013 10:16 PM
> To: jmkim.kim@xxxxxxxxxxx
> Cc: Stefano Stabellini; Ian Campbell; xen-devel@xxxxxxxxxxxxx
> Subject: Re: [Xen-devel] A suggestion about processing irq
> 
> On 19 August 2013 03:29, 김재민 wrote:
> > Hello,
> 
> Hi

Hi,

> 
> > While I was reading gic handling part of xen arm, I noticed that, in
> > gic_set_guest_irq function, if lr_pending is not empty, the arrival irq
> is also stored into pending list.
> > I think although lr_pending is not empty, there maybe empty slots in
> > lr, and if so, we can insert IRQ immediately. Since I'd like to keep
> > the IRQ in priority order, how about checking the highest priority in
> lr_pending list rather than emptiness?
> 
> Thanks for this patch. Do you plan to have a full support for priority?
> 
> Cheers,

Does it fix the emulated GICD part for "guest domain" or GICD part for xen ?

As I know, the part of involved in handling irq priority is implemented already 
in xen code.

The meaning of "full support" is ambiguous to me.

Could you tell me the scope of that ?

> 
> > Here goes the simple patch:
> >
> > Signed-off-by: Jaemin Kim 
> > ---
> > diff -urN xen/arch/arm/gic.c xen2/arch/arm/gic.c
> > --- xen/arch/arm/gic.c  2013-07-30 10:16:45.076382483 +0900
> > +++ xen2/arch/arm/gic.c 2013-07-31 11:19:28.094799335 +0900
> > @@ -587,12 +587,17 @@
> >          unsigned int state, unsigned int priority)  {
> >      int i;
> > -    struct pending_irq *iter, *n;
> > +    struct pending_irq *iter, *n, *first_item;
> >      unsigned long flags;
> >      spin_lock_irqsave(&gic.lock, flags);
> > +
> > +   first_item = list_entry( (&v->arch.vgic.lr_pending)->next,
> > +                           typeof(*iter), lr_queue );
> > -    if (( v == current ) &&  (list_empty(&v->arch.vgic.lr_pending) ))
> > +    if ( ( v == current ) &&
> > +         ( list_empty(&v->arch.vgic.lr_pending) ||
> > +           ( priority > first_item->priority ) ) )
> >      {
> >          i = find_first_zero_bit(&this_cpu(lr_mask), nr_lrs);
> >          if (i < nr_lrs) {
> 
> --
> Julien Grall
> 
> _______________________________________________
> 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®.