[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |