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

[Xen-changelog] Various softirq cleanups:



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 3838105ab03b9c8c7f024cc44159d8232b1285c1
# Parent  f6a7f2657ff3d3e5a8e93949c39c632402d5b668
Various softirq cleanups:
 1. Make __softirq_pending a long, since PPC borrows the file
    hardirq.h from us and they only do atomic ops on longs.
 2. do_softirq() explicitly takes a void param list.
 3. Remove idle_timestamp field from irq_cpustat. It's unused
    and lets us simplify the idle loop a little bit.

Part 1 based on a patch from Hollis Blanchard at IBM.

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>

diff -r f6a7f2657ff3 -r 3838105ab03b xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     Fri Mar 31 10:04:42 2006
+++ b/xen/arch/x86/domain.c     Fri Mar 31 11:03:42 2006
@@ -79,15 +79,12 @@
 
     for ( ; ; )
     {
-        irq_stat[cpu].idle_timestamp = jiffies;
-
-        while ( !softirq_pending(cpu) )
-        {
-            page_scrub_schedule_work();
-            default_idle();
-        }
-
-        do_softirq();
+        page_scrub_schedule_work();
+
+        default_idle();
+
+        if ( softirq_pending(cpu) )
+            do_softirq();
     }
 }
 
diff -r f6a7f2657ff3 -r 3838105ab03b xen/common/softirq.c
--- a/xen/common/softirq.c      Fri Mar 31 10:04:42 2006
+++ b/xen/common/softirq.c      Fri Mar 31 11:03:42 2006
@@ -21,9 +21,10 @@
 
 static softirq_handler softirq_handlers[NR_SOFTIRQS];
 
-asmlinkage void do_softirq()
+asmlinkage void do_softirq(void)
 {
-    unsigned int i, pending, cpu = smp_processor_id();
+    unsigned int i, cpu = smp_processor_id();
+    unsigned long pending;
 
     pending = softirq_pending(cpu);
     ASSERT(pending != 0);
diff -r f6a7f2657ff3 -r 3838105ab03b xen/include/asm-x86/hardirq.h
--- a/xen/include/asm-x86/hardirq.h     Fri Mar 31 10:04:42 2006
+++ b/xen/include/asm-x86/hardirq.h     Fri Mar 31 11:03:42 2006
@@ -5,10 +5,9 @@
 #include <xen/cache.h>
 
 typedef struct {
-       unsigned int __softirq_pending;
+       unsigned long __softirq_pending;
        unsigned int __local_irq_count;
        unsigned int __nmi_count;
-       unsigned long idle_timestamp;
 } __cacheline_aligned irq_cpustat_t;
 
 #include <xen/irq_cpustat.h>   /* Standard mappings for irq_cpustat_t above */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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