# 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
|