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

[Xen-devel] A suggestion about processing irq



Hello,
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?
Here goes the simple patch:
 
Signed-off-by: Jaemin Kim <jmkim.kim@xxxxxxxxxxx>
---
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) {
--- 
Thanks.
Best Regards.
Jaemin Kim
_______________________________________________
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®.