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

[Xen-changelog] [xen-unstable] [IA64] ia64 softirq clean ups.



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID f24993f27cc40216b48e585bb33038dc0b950441
# Parent  3041cac985d62f6b2a5b2bdf45a17b95f43f6d7c
[IA64] ia64 softirq clean ups.

This is the counter part of the C/S
10565:53f552ad404234c457fdd62560c9e8b0ea976674
Xen softirq is only checked only before returning to domain context.
So that it's non-sense to check in_interrupt() and add/sub SOFTIRQ_OFFSET.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/arch/ia64/linux-xen/entry.S |    2 +-
 xen/arch/ia64/vmx/vmx_process.c |    3 +--
 xen/arch/ia64/xen/domain.c      |    8 ++------
 xen/arch/ia64/xen/irq.c         |   13 -------------
 4 files changed, 4 insertions(+), 22 deletions(-)

diff -r 3041cac985d6 -r f24993f27cc4 xen/arch/ia64/linux-xen/entry.S
--- a/xen/arch/ia64/linux-xen/entry.S   Thu Jul 06 08:27:04 2006 -0600
+++ b/xen/arch/ia64/linux-xen/entry.S   Thu Jul 06 08:30:17 2006 -0600
@@ -892,7 +892,7 @@ GLOBAL_ENTRY(ia64_leave_kernel)
 #ifdef XEN
        ;;
 (pUStk) ssm psr.i
-(pUStk)    br.call.sptk.many b0=process_soft_irq
+(pUStk)    br.call.sptk.many b0=do_softirq
 (pUStk) rsm psr.i
     ;;
        alloc loc0=ar.pfs,0,1,1,0
diff -r 3041cac985d6 -r f24993f27cc4 xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c   Thu Jul 06 08:27:04 2006 -0600
+++ b/xen/arch/ia64/vmx/vmx_process.c   Thu Jul 06 08:30:17 2006 -0600
@@ -190,8 +190,7 @@ void leave_hypervisor_tail(struct pt_reg
     if (!is_idle_domain(d) ) { // always comes from guest
         extern void vmx_dorfirfi(void);
         struct pt_regs *user_regs = vcpu_regs(current);
-        if (local_softirq_pending())
-            do_softirq();
+        do_softirq();
         local_irq_disable();
 
         if (user_regs != regs)
diff -r 3041cac985d6 -r f24993f27cc4 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Thu Jul 06 08:27:04 2006 -0600
+++ b/xen/arch/ia64/xen/domain.c        Thu Jul 06 08:30:17 2006 -0600
@@ -217,16 +217,14 @@ void continue_running(struct vcpu *same)
 
 static void default_idle(void)
 {
-       int cpu = smp_processor_id();
        local_irq_disable();
-       if ( !softirq_pending(cpu))
+       if ( !softirq_pending(smp_processor_id()) )
                safe_halt();
        local_irq_enable();
 }
 
 static void continue_cpu_idle_loop(void)
 {
-       int cpu = smp_processor_id();
        for ( ; ; )
        {
 #ifdef IA64
@@ -234,12 +232,10 @@ static void continue_cpu_idle_loop(void)
 #else
            irq_stat[cpu].idle_timestamp = jiffies;
 #endif
-           while ( !softirq_pending(cpu) )
+           while ( !softirq_pending(smp_processor_id()) )
                default_idle();
-           add_preempt_count(SOFTIRQ_OFFSET);
            raise_softirq(SCHEDULE_SOFTIRQ);
            do_softirq();
-           sub_preempt_count(SOFTIRQ_OFFSET);
        }
 }
 
diff -r 3041cac985d6 -r f24993f27cc4 xen/arch/ia64/xen/irq.c
--- a/xen/arch/ia64/xen/irq.c   Thu Jul 06 08:27:04 2006 -0600
+++ b/xen/arch/ia64/xen/irq.c   Thu Jul 06 08:30:17 2006 -0600
@@ -499,19 +499,6 @@ void irq_exit(void)
        sub_preempt_count(IRQ_EXIT_OFFSET);
 }
 
-/*
- * ONLY gets called from ia64_leave_kernel
- * ONLY call with interrupts enabled
- */
-void process_soft_irq(void)
-{
-       if (!in_interrupt() && local_softirq_pending()) {
-               add_preempt_count(SOFTIRQ_OFFSET);
-               do_softirq();
-               sub_preempt_count(SOFTIRQ_OFFSET);
-       }
-}
-
 // this is a temporary hack until real console input is implemented
 void guest_forward_keyboard_input(int irq, void *nada, struct pt_regs *regs)
 {

_______________________________________________
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®.