ia64 softirq clean ups. This is the counter part of the C/S
10565:53f552ad404234c457fdd62560c9e8b0ea976674 of xen-unstable.hg.
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.


This patch depends on the C/S
10565:53f552ad404234c457fdd62560c9e8b0ea976674 of xen-unstable.hg.
The C/S isn't included in xen-ia64-unstable.hg yet.

-- 
yamahata
# HG changeset patch
# User [EMAIL PROTECTED]
# Node ID a3566a161a4744416c044770e105c2f5b053878d
# Parent  4b51d081378d6783cce48255ffb7655931f26d63
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.
PATCHNAME: clean_up_do_softirq

Signed-off-by: Isaku Yamahata <[EMAIL PROTECTED]>

diff -r 4b51d081378d -r a3566a161a47 xen/arch/ia64/linux-xen/entry.S
--- a/xen/arch/ia64/linux-xen/entry.S   Wed Jun 28 07:52:21 2006 -0600
+++ b/xen/arch/ia64/linux-xen/entry.S   Mon Jul 03 13:14:13 2006 +0900
@@ -901,7 +901,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 4b51d081378d -r a3566a161a47 xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c   Wed Jun 28 07:52:21 2006 -0600
+++ b/xen/arch/ia64/vmx/vmx_process.c   Mon Jul 03 13:14:13 2006 +0900
@@ -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 4b51d081378d -r a3566a161a47 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Wed Jun 28 07:52:21 2006 -0600
+++ b/xen/arch/ia64/xen/domain.c        Mon Jul 03 13:14:13 2006 +0900
@@ -187,16 +187,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
@@ -204,12 +202,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 4b51d081378d -r a3566a161a47 xen/arch/ia64/xen/irq.c
--- a/xen/arch/ia64/xen/irq.c   Wed Jun 28 07:52:21 2006 -0600
+++ b/xen/arch/ia64/xen/irq.c   Mon Jul 03 13:14:13 2006 +0900
@@ -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-ia64-devel mailing list
[email protected]
http://lists.xensource.com/xen-ia64-devel

Reply via email to