WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Do_softirq is invoked at the path of ia64_leave_kernel i

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Do_softirq is invoked at the path of ia64_leave_kernel instead of
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 09 Feb 2006 19:22:09 +0000
Delivery-date: Thu, 09 Feb 2006 19:34:32 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID a0e7daa2df33b0b60a5de113e5b4f8eb731866eb
# Parent  4ee359893af453aaaf4fd2e49fef3f134cc54c74
Do_softirq is invoked at the path of ia64_leave_kernel instead of
being invoking in function irq_exit, which is aligned with XEN/X86 and
avoids __enter_schedule being reentered.

Signed-off-by Anthony Xu <anthony.xu@xxxxxxxxx>

diff -r 4ee359893af4 -r a0e7daa2df33 xen/arch/ia64/linux-xen/entry.S
--- a/xen/arch/ia64/linux-xen/entry.S   Thu Feb  9 15:03:17 2006
+++ b/xen/arch/ia64/linux-xen/entry.S   Thu Feb  9 15:09:00 2006
@@ -895,6 +895,10 @@
 #endif
 .work_processed_kernel:
 #ifdef XEN
+(pUStk) ssm psr.i
+(pUStk)    br.call.sptk.many b0=process_soft_irq
+(pUStk) rsm psr.i
+    ;;
        alloc loc0=ar.pfs,0,1,1,0
        adds out0=16,r12
     adds r7 = PT(EML_UNAT)+16,r12
@@ -907,7 +911,7 @@
 (p8) br.sptk.few leave_kernel_self
        ;; 
 #endif
-(p6)   br.call.sptk.many b0=deliver_pending_interrupt
+(pUStk)        br.call.sptk.many b0=deliver_pending_interrupt
     ;;
        mov ar.pfs=loc0
        mov ar.unat=r7  /* load eml_unat  */
diff -r 4ee359893af4 -r a0e7daa2df33 xen/arch/ia64/xen/xenirq.c
--- a/xen/arch/ia64/xen/xenirq.c        Thu Feb  9 15:03:17 2006
+++ b/xen/arch/ia64/xen/xenirq.c        Thu Feb  9 15:09:00 2006
@@ -61,16 +61,20 @@
  */
 void xen_irq_exit(struct pt_regs *regs)
 {
-       //account_system_vtime(current);
        sub_preempt_count(IRQ_EXIT_OFFSET);
-    if((((char *)regs) -(char *) current) != 
(IA64_STK_OFFSET-IA64_PT_REGS_SIZE))
-        return;
+}
 
-       if (!in_interrupt()&&local_softirq_pending()) {
+/*
+ * ONLY gets called from ia64_leave_kernel
+ * ONLY call with interrupts enabled
+ */
+void process_soft_irq()
+{
+       if (!in_interrupt() && local_softirq_pending()) {
                add_preempt_count(SOFTIRQ_OFFSET);
                do_softirq();
                sub_preempt_count(SOFTIRQ_OFFSET);
        }
-       //preempt_enable_no_resched();
 }
+
 /* end from linux/kernel/softirq.c */

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Do_softirq is invoked at the path of ia64_leave_kernel instead of, Xen patchbot -unstable <=