[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Do_softirq is invoked at the path of ia64_leave_kernel instead of
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |