ia64/xen-unstable
changeset 7382:bb22622a15fc
Merged.
author | emellor@leeni.uk.xensource.com |
---|---|
date | Thu Oct 13 17:51:35 2005 +0100 (2005-10-13) |
parents | cd6f7b548218 5a97ee0633e8 |
children | 3fd239d8b640 |
files | tools/python/xen/xend/server/event.py xen/Rules.mk |
line diff
1.1 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c Thu Oct 13 17:49:56 2005 +0100 1.2 +++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c Thu Oct 13 17:51:35 2005 +0100 1.3 @@ -112,44 +112,6 @@ void xen_idle(void) 1.4 } 1.5 } 1.6 1.7 -#ifdef CONFIG_HOTPLUG_CPU 1.8 -#include <asm/nmi.h> 1.9 -#ifdef CONFIG_SMP 1.10 -extern void smp_suspend(void); 1.11 -extern void smp_resume(void); 1.12 -#endif 1.13 -/* We don't actually take CPU down, just spin without interrupts. */ 1.14 -static inline void play_dead(void) 1.15 -{ 1.16 - /* Death loop */ 1.17 - while (__get_cpu_var(cpu_state) != CPU_UP_PREPARE) 1.18 - HYPERVISOR_sched_op(SCHEDOP_yield, 0); 1.19 - 1.20 - __flush_tlb_all(); 1.21 - /* 1.22 - * Restore IPI/IRQ mappings before marking online to prevent 1.23 - * race between pending interrupts and restoration of handler. 1.24 - */ 1.25 -#ifdef CONFIG_SMP 1.26 - local_irq_enable(); /* XXX Needed for smp_resume(). Clean me up. */ 1.27 - smp_resume(); 1.28 -#endif 1.29 - cpu_set(smp_processor_id(), cpu_online_map); 1.30 -} 1.31 -#else 1.32 -static inline void play_dead(void) 1.33 -{ 1.34 - BUG(); 1.35 -} 1.36 -#endif /* CONFIG_HOTPLUG_CPU */ 1.37 - 1.38 -void cpu_restore(void) 1.39 -{ 1.40 - play_dead(); 1.41 - local_irq_enable(); 1.42 - cpu_idle(); 1.43 -} 1.44 - 1.45 /* 1.46 * The idle thread. There's no useful work to be 1.47 * done, so just try to conserve power and have a 1.48 @@ -158,7 +120,9 @@ void cpu_restore(void) 1.49 */ 1.50 void cpu_idle (void) 1.51 { 1.52 +#if defined(CONFIG_HOTPLUG_CPU) 1.53 int cpu = _smp_processor_id(); 1.54 +#endif 1.55 1.56 /* endless idle loop with no priority at all */ 1.57 while (1) { 1.58 @@ -168,23 +132,12 @@ void cpu_idle (void) 1.59 __get_cpu_var(cpu_idle_state) = 0; 1.60 rmb(); 1.61 1.62 +#if defined(CONFIG_HOTPLUG_CPU) 1.63 if (cpu_is_offline(cpu)) { 1.64 - local_irq_disable(); 1.65 -#ifdef CONFIG_SMP 1.66 - smp_suspend(); 1.67 -#endif 1.68 -#if defined(CONFIG_XEN) && defined(CONFIG_HOTPLUG_CPU) 1.69 - /* Ack it. From this point on until 1.70 - we get woken up, we're not allowed 1.71 - to take any locks. In particular, 1.72 - don't printk. */ 1.73 - __get_cpu_var(cpu_state) = CPU_DEAD; 1.74 - /* Tell hypervisor to take vcpu down. */ 1.75 HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL); 1.76 -#endif 1.77 - play_dead(); 1.78 local_irq_enable(); 1.79 } 1.80 +#endif 1.81 1.82 __get_cpu_var(irq_stat).idle_timestamp = jiffies; 1.83 xen_idle();
2.1 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/smpboot.c Thu Oct 13 17:49:56 2005 +0100 2.2 +++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/smpboot.c Thu Oct 13 17:51:35 2005 +0100 2.3 @@ -66,6 +66,9 @@ 2.4 #include <asm-xen/xen-public/vcpu.h> 2.5 #include <asm-xen/xenbus.h> 2.6 2.7 +static void xen_smp_intr_init(unsigned int cpu); 2.8 +static void xen_smp_intr_exit(unsigned int cpu); 2.9 + 2.10 /* Set if we find a B stepping CPU */ 2.11 static int __initdata smp_b_stepping; 2.12 2.13 @@ -352,9 +355,9 @@ static atomic_t init_deasserted; 2.14 static void __init smp_callin(void) 2.15 { 2.16 int cpuid, phys_id; 2.17 +#if 0 2.18 unsigned long timeout; 2.19 2.20 -#if 0 2.21 /* 2.22 * If waken up by an INIT in an 82489DX configuration 2.23 * we may get here before an INIT-deassert IPI reaches 2.24 @@ -376,6 +379,7 @@ static void __init smp_callin(void) 2.25 } 2.26 Dprintk("CPU#%d (phys ID: %d) waiting for CALLOUT\n", cpuid, phys_id); 2.27 2.28 +#if 0 2.29 /* 2.30 * STARTUP IPIs are fragile beasts as they might sometimes 2.31 * trigger some glue motherboard logic. Complete APIC bus 2.32 @@ -403,7 +407,6 @@ static void __init smp_callin(void) 2.33 BUG(); 2.34 } 2.35 2.36 -#if 0 2.37 /* 2.38 * the boot CPU has finished the init stage and is spinning 2.39 * on callin_map until we finish. We are free to set up this 2.40 @@ -448,8 +451,6 @@ static void __init smp_callin(void) 2.41 2.42 static int cpucount; 2.43 2.44 -extern void local_setup_timer(void); 2.45 - 2.46 /* 2.47 * Activate a secondary processor. 2.48 */ 2.49 @@ -464,8 +465,6 @@ static void __init start_secondary(void 2.50 smp_callin(); 2.51 while (!cpu_isset(smp_processor_id(), smp_commenced_mask)) 2.52 rep_nop(); 2.53 - local_setup_timer(); 2.54 - smp_intr_init(); 2.55 local_irq_enable(); 2.56 /* 2.57 * low-memory mappings have been cleared, flush them from 2.58 @@ -1133,7 +1132,7 @@ static void __init smp_boot_cpus(unsigne 2.59 return; 2.60 } 2.61 2.62 - smp_intr_init(); 2.63 + xen_smp_intr_init(0); 2.64 2.65 #if 0 2.66 connect_bsp_APIC(); 2.67 @@ -1340,29 +1339,6 @@ static int __init setup_vcpu_hotplug_eve 2.68 2.69 subsys_initcall(setup_vcpu_hotplug_event); 2.70 2.71 -/* must be called with the cpucontrol mutex held */ 2.72 -static int __devinit cpu_enable(unsigned int cpu) 2.73 -{ 2.74 -#ifdef CONFIG_SMP_ALTERNATIVES 2.75 - if (num_online_cpus() == 1) 2.76 - prepare_for_smp(); 2.77 -#endif 2.78 - 2.79 - /* get the target out of its holding state */ 2.80 - per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; 2.81 - wmb(); 2.82 - 2.83 - /* wait for the processor to ack it. timeout? */ 2.84 - while (!cpu_online(cpu)) 2.85 - cpu_relax(); 2.86 - 2.87 - fixup_irqs(cpu_online_map); 2.88 - 2.89 - /* counter the disable in fixup_irqs() */ 2.90 - local_irq_enable(); 2.91 - return 0; 2.92 -} 2.93 - 2.94 int __cpu_disable(void) 2.95 { 2.96 cpumask_t map = cpu_online_map; 2.97 @@ -1385,27 +1361,22 @@ int __cpu_disable(void) 2.98 /* It's now safe to remove this processor from the online map */ 2.99 cpu_clear(cpu, cpu_online_map); 2.100 2.101 -#ifdef CONFIG_SMP_ALTERNATIVES 2.102 - if (num_online_cpus() == 1) 2.103 - unprepare_for_smp(); 2.104 -#endif 2.105 - 2.106 return 0; 2.107 } 2.108 2.109 void __cpu_die(unsigned int cpu) 2.110 { 2.111 - /* We don't do anything here: idle task is faking death itself. */ 2.112 - unsigned int i; 2.113 - 2.114 - for (i = 0; i < 10; i++) { 2.115 - /* They ack this in play_dead by setting CPU_DEAD */ 2.116 - if (per_cpu(cpu_state, cpu) == CPU_DEAD) 2.117 - return; 2.118 + while (HYPERVISOR_vcpu_op(VCPUOP_is_up, cpu, NULL)) { 2.119 current->state = TASK_UNINTERRUPTIBLE; 2.120 schedule_timeout(HZ/10); 2.121 } 2.122 - printk(KERN_ERR "CPU %u didn't die...\n", cpu); 2.123 + 2.124 + xen_smp_intr_exit(cpu); 2.125 + 2.126 +#ifdef CONFIG_SMP_ALTERNATIVES 2.127 + if (num_online_cpus() == 1) 2.128 + unprepare_for_smp(); 2.129 +#endif 2.130 } 2.131 2.132 #else /* ... !CONFIG_HOTPLUG_CPU */ 2.133 @@ -1430,23 +1401,16 @@ int __devinit __cpu_up(unsigned int cpu) 2.134 return -EIO; 2.135 } 2.136 2.137 -#ifdef CONFIG_HOTPLUG_CPU 2.138 -#ifdef CONFIG_XEN 2.139 - /* Tell hypervisor to bring vcpu up. */ 2.140 - HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL); 2.141 -#endif 2.142 - /* Already up, and in cpu_quiescent now? */ 2.143 - if (cpu_isset(cpu, smp_commenced_mask)) { 2.144 - cpu_enable(cpu); 2.145 - return 0; 2.146 - } 2.147 +#ifdef CONFIG_SMP_ALTERNATIVES 2.148 + if (num_online_cpus() == 1) 2.149 + prepare_for_smp(); 2.150 #endif 2.151 2.152 - local_irq_enable(); 2.153 - /* Unleash the CPU! */ 2.154 + xen_smp_intr_init(cpu); 2.155 cpu_set(cpu, smp_commenced_mask); 2.156 - while (!cpu_isset(cpu, cpu_online_map)) 2.157 - mb(); 2.158 + cpu_set(cpu, cpu_online_map); 2.159 + HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL); 2.160 + 2.161 return 0; 2.162 } 2.163 2.164 @@ -1468,48 +1432,38 @@ void __init smp_cpus_done(unsigned int m 2.165 extern irqreturn_t smp_reschedule_interrupt(int, void *, struct pt_regs *); 2.166 extern irqreturn_t smp_call_function_interrupt(int, void *, struct pt_regs *); 2.167 2.168 -void smp_intr_init(void) 2.169 +extern void local_setup_timer(unsigned int cpu); 2.170 +extern void local_teardown_timer(unsigned int cpu); 2.171 + 2.172 +static void xen_smp_intr_init(unsigned int cpu) 2.173 { 2.174 - int cpu = smp_processor_id(); 2.175 - 2.176 per_cpu(resched_irq, cpu) = 2.177 - bind_ipi_to_irq(RESCHEDULE_VECTOR); 2.178 + bind_ipi_to_irq(RESCHEDULE_VECTOR, cpu); 2.179 sprintf(resched_name[cpu], "resched%d", cpu); 2.180 BUG_ON(request_irq(per_cpu(resched_irq, cpu), smp_reschedule_interrupt, 2.181 SA_INTERRUPT, resched_name[cpu], NULL)); 2.182 2.183 per_cpu(callfunc_irq, cpu) = 2.184 - bind_ipi_to_irq(CALL_FUNCTION_VECTOR); 2.185 + bind_ipi_to_irq(CALL_FUNCTION_VECTOR, cpu); 2.186 sprintf(callfunc_name[cpu], "callfunc%d", cpu); 2.187 BUG_ON(request_irq(per_cpu(callfunc_irq, cpu), 2.188 smp_call_function_interrupt, 2.189 SA_INTERRUPT, callfunc_name[cpu], NULL)); 2.190 -} 2.191 2.192 -static void smp_intr_exit(void) 2.193 -{ 2.194 - int cpu = smp_processor_id(); 2.195 - 2.196 - free_irq(per_cpu(resched_irq, cpu), NULL); 2.197 - unbind_ipi_from_irq(RESCHEDULE_VECTOR); 2.198 - 2.199 - free_irq(per_cpu(callfunc_irq, cpu), NULL); 2.200 - unbind_ipi_from_irq(CALL_FUNCTION_VECTOR); 2.201 + if (cpu != 0) 2.202 + local_setup_timer(cpu); 2.203 } 2.204 2.205 -extern void local_setup_timer_irq(void); 2.206 -extern void local_teardown_timer_irq(void); 2.207 - 2.208 -void smp_suspend(void) 2.209 +static void xen_smp_intr_exit(unsigned int cpu) 2.210 { 2.211 - local_teardown_timer_irq(); 2.212 - smp_intr_exit(); 2.213 -} 2.214 + if (cpu != 0) 2.215 + local_teardown_timer(cpu); 2.216 2.217 -void smp_resume(void) 2.218 -{ 2.219 - smp_intr_init(); 2.220 - local_setup_timer(); 2.221 + free_irq(per_cpu(resched_irq, cpu), NULL); 2.222 + unbind_ipi_from_irq(RESCHEDULE_VECTOR, cpu); 2.223 + 2.224 + free_irq(per_cpu(callfunc_irq, cpu), NULL); 2.225 + unbind_ipi_from_irq(CALL_FUNCTION_VECTOR, cpu); 2.226 } 2.227 2.228 void vcpu_prepare(int vcpu) 2.229 @@ -1517,7 +1471,6 @@ void vcpu_prepare(int vcpu) 2.230 extern void hypervisor_callback(void); 2.231 extern void failsafe_callback(void); 2.232 extern void smp_trap_init(trap_info_t *); 2.233 - extern void cpu_restore(void); 2.234 vcpu_guest_context_t ctxt; 2.235 struct task_struct *idle = idle_task(vcpu); 2.236 2.237 @@ -1532,7 +1485,7 @@ void vcpu_prepare(int vcpu) 2.238 ctxt.user_regs.gs = 0; 2.239 ctxt.user_regs.ss = __KERNEL_DS; 2.240 ctxt.user_regs.cs = __KERNEL_CS; 2.241 - ctxt.user_regs.eip = (unsigned long)cpu_restore; 2.242 + ctxt.user_regs.eip = (unsigned long)cpu_idle; 2.243 ctxt.user_regs.esp = idle->thread.esp; 2.244 ctxt.user_regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_IOPL_RING1; 2.245 2.246 @@ -1556,7 +1509,6 @@ void vcpu_prepare(int vcpu) 2.247 ctxt.ctrlreg[3] = virt_to_mfn(swapper_pg_dir) << PAGE_SHIFT; 2.248 2.249 (void)HYPERVISOR_vcpu_op(VCPUOP_initialise, vcpu, &ctxt); 2.250 - (void)HYPERVISOR_vcpu_op(VCPUOP_up, vcpu, NULL); 2.251 } 2.252 2.253 /*
3.1 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c Thu Oct 13 17:49:56 2005 +0100 3.2 +++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c Thu Oct 13 17:51:35 2005 +0100 3.3 @@ -785,7 +785,7 @@ void __init time_init(void) 3.4 rdtscll(vxtime.last_tsc); 3.5 #endif 3.6 3.7 - per_cpu(timer_irq, 0) = bind_virq_to_irq(VIRQ_TIMER); 3.8 + per_cpu(timer_irq, 0) = bind_virq_to_irq(VIRQ_TIMER, 0); 3.9 (void)setup_irq(per_cpu(timer_irq, 0), &irq_timer); 3.10 } 3.11 3.12 @@ -852,21 +852,12 @@ void time_resume(void) 3.13 3.14 #ifdef CONFIG_SMP 3.15 static char timer_name[NR_CPUS][15]; 3.16 -void local_setup_timer_irq(void) 3.17 -{ 3.18 - int cpu = smp_processor_id(); 3.19 3.20 - if (cpu == 0) 3.21 - return; 3.22 - per_cpu(timer_irq, cpu) = bind_virq_to_irq(VIRQ_TIMER); 3.23 - sprintf(timer_name[cpu], "timer%d", cpu); 3.24 - BUG_ON(request_irq(per_cpu(timer_irq, cpu), timer_interrupt, 3.25 - SA_INTERRUPT, timer_name[cpu], NULL)); 3.26 -} 3.27 +void local_setup_timer(unsigned int cpu) 3.28 +{ 3.29 + int seq; 3.30 3.31 -void local_setup_timer(void) 3.32 -{ 3.33 - int seq, cpu = smp_processor_id(); 3.34 + BUG_ON(cpu == 0); 3.35 3.36 do { 3.37 seq = read_seqbegin(&xtime_lock); 3.38 @@ -874,17 +865,17 @@ void local_setup_timer(void) 3.39 per_cpu(shadow_time, cpu).system_timestamp; 3.40 } while (read_seqretry(&xtime_lock, seq)); 3.41 3.42 - local_setup_timer_irq(); 3.43 + per_cpu(timer_irq, cpu) = bind_virq_to_irq(VIRQ_TIMER, cpu); 3.44 + sprintf(timer_name[cpu], "timer%d", cpu); 3.45 + BUG_ON(request_irq(per_cpu(timer_irq, cpu), timer_interrupt, 3.46 + SA_INTERRUPT, timer_name[cpu], NULL)); 3.47 } 3.48 3.49 -void local_teardown_timer_irq(void) 3.50 +void local_teardown_timer(unsigned int cpu) 3.51 { 3.52 - int cpu = smp_processor_id(); 3.53 - 3.54 - if (cpu == 0) 3.55 - return; 3.56 + BUG_ON(cpu == 0); 3.57 free_irq(per_cpu(timer_irq, cpu), NULL); 3.58 - unbind_virq_from_irq(VIRQ_TIMER); 3.59 + unbind_virq_from_irq(VIRQ_TIMER, cpu); 3.60 } 3.61 #endif 3.62
4.1 --- a/linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c Thu Oct 13 17:49:56 2005 +0100 4.2 +++ b/linux-2.6-xen-sparse/arch/xen/kernel/evtchn.c Thu Oct 13 17:51:35 2005 +0100 4.3 @@ -178,11 +178,10 @@ static int find_unbound_irq(void) 4.4 return irq; 4.5 } 4.6 4.7 -int bind_virq_to_irq(int virq) 4.8 +int bind_virq_to_irq(int virq, int cpu) 4.9 { 4.10 evtchn_op_t op = { .cmd = EVTCHNOP_bind_virq }; 4.11 int evtchn, irq; 4.12 - int cpu = smp_processor_id(); 4.13 4.14 spin_lock(&irq_mapping_update_lock); 4.15 4.16 @@ -209,10 +208,9 @@ int bind_virq_to_irq(int virq) 4.17 } 4.18 EXPORT_SYMBOL(bind_virq_to_irq); 4.19 4.20 -void unbind_virq_from_irq(int virq) 4.21 +void unbind_virq_from_irq(int virq, int cpu) 4.22 { 4.23 evtchn_op_t op = { .cmd = EVTCHNOP_close }; 4.24 - int cpu = smp_processor_id(); 4.25 int irq = per_cpu(virq_to_irq, cpu)[virq]; 4.26 int evtchn = irq_to_evtchn[irq]; 4.27 4.28 @@ -240,11 +238,10 @@ void unbind_virq_from_irq(int virq) 4.29 } 4.30 EXPORT_SYMBOL(unbind_virq_from_irq); 4.31 4.32 -int bind_ipi_to_irq(int ipi) 4.33 +int bind_ipi_to_irq(int ipi, int cpu) 4.34 { 4.35 evtchn_op_t op = { .cmd = EVTCHNOP_bind_ipi }; 4.36 int evtchn, irq; 4.37 - int cpu = smp_processor_id(); 4.38 4.39 spin_lock(&irq_mapping_update_lock); 4.40 4.41 @@ -272,10 +269,9 @@ int bind_ipi_to_irq(int ipi) 4.42 } 4.43 EXPORT_SYMBOL(bind_ipi_to_irq); 4.44 4.45 -void unbind_ipi_from_irq(int ipi) 4.46 +void unbind_ipi_from_irq(int ipi, int cpu) 4.47 { 4.48 evtchn_op_t op = { .cmd = EVTCHNOP_close }; 4.49 - int cpu = smp_processor_id(); 4.50 int evtchn = per_cpu(ipi_to_evtchn, cpu)[ipi]; 4.51 int irq = evtchn_to_irq[evtchn]; 4.52
5.1 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c Thu Oct 13 17:49:56 2005 +0100 5.2 +++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c Thu Oct 13 17:51:35 2005 +0100 5.3 @@ -1224,13 +1224,13 @@ void smp_intr_init(void) 5.4 int cpu = smp_processor_id(); 5.5 5.6 per_cpu(resched_irq, cpu) = 5.7 - bind_ipi_to_irq(RESCHEDULE_VECTOR); 5.8 + bind_ipi_to_irq(RESCHEDULE_VECTOR, cpu); 5.9 sprintf(resched_name[cpu], "resched%d", cpu); 5.10 BUG_ON(request_irq(per_cpu(resched_irq, cpu), smp_reschedule_interrupt, 5.11 SA_INTERRUPT, resched_name[cpu], NULL)); 5.12 5.13 per_cpu(callfunc_irq, cpu) = 5.14 - bind_ipi_to_irq(CALL_FUNCTION_VECTOR); 5.15 + bind_ipi_to_irq(CALL_FUNCTION_VECTOR, cpu); 5.16 sprintf(callfunc_name[cpu], "callfunc%d", cpu); 5.17 BUG_ON(request_irq(per_cpu(callfunc_irq, cpu), 5.18 smp_call_function_interrupt, 5.19 @@ -1242,10 +1242,10 @@ static void smp_intr_exit(void) 5.20 int cpu = smp_processor_id(); 5.21 5.22 free_irq(per_cpu(resched_irq, cpu), NULL); 5.23 - unbind_ipi_from_irq(RESCHEDULE_VECTOR); 5.24 + unbind_ipi_from_irq(RESCHEDULE_VECTOR, cpu); 5.25 5.26 free_irq(per_cpu(callfunc_irq, cpu), NULL); 5.27 - unbind_ipi_from_irq(CALL_FUNCTION_VECTOR); 5.28 + unbind_ipi_from_irq(CALL_FUNCTION_VECTOR, cpu); 5.29 } 5.30 5.31 extern void local_setup_timer_irq(void);
6.1 --- a/linux-2.6-xen-sparse/drivers/xen/console/console.c Thu Oct 13 17:49:56 2005 +0100 6.2 +++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c Thu Oct 13 17:51:35 2005 +0100 6.3 @@ -768,7 +768,7 @@ static int __init xencons_init(void) 6.4 #endif 6.5 6.6 if (xen_start_info->flags & SIF_INITDOMAIN) { 6.7 - xencons_priv_irq = bind_virq_to_irq(VIRQ_CONSOLE); 6.8 + xencons_priv_irq = bind_virq_to_irq(VIRQ_CONSOLE, 0); 6.9 (void)request_irq(xencons_priv_irq, 6.10 xencons_priv_interrupt, 0, "console", NULL); 6.11 } else {
7.1 --- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Thu Oct 13 17:49:56 2005 +0100 7.2 +++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Thu Oct 13 17:51:35 2005 +0100 7.3 @@ -817,7 +817,7 @@ static int __init netback_init(void) 7.4 7.5 netif_xenbus_init(); 7.6 7.7 - (void)request_irq(bind_virq_to_irq(VIRQ_DEBUG), 7.8 + (void)request_irq(bind_virq_to_irq(VIRQ_DEBUG, 0), 7.9 netif_be_dbg, SA_SHIRQ, 7.10 "net-be-dbg", &netif_be_dbg); 7.11
8.1 --- a/linux-2.6-xen-sparse/include/asm-xen/evtchn.h Thu Oct 13 17:49:56 2005 +0100 8.2 +++ b/linux-2.6-xen-sparse/include/asm-xen/evtchn.h Thu Oct 13 17:51:35 2005 +0100 8.3 @@ -44,12 +44,12 @@ 8.4 */ 8.5 8.6 /* Dynamically bind a VIRQ source to Linux IRQ space. */ 8.7 -extern int bind_virq_to_irq(int virq); 8.8 -extern void unbind_virq_from_irq(int virq); 8.9 +extern int bind_virq_to_irq(int virq, int cpu); 8.10 +extern void unbind_virq_from_irq(int virq, int cpu); 8.11 8.12 /* Dynamically bind an IPI source to Linux IRQ space. */ 8.13 -extern int bind_ipi_to_irq(int ipi); 8.14 -extern void unbind_ipi_from_irq(int ipi); 8.15 +extern int bind_ipi_to_irq(int ipi, int cpu); 8.16 +extern void unbind_ipi_from_irq(int ipi, int cpu); 8.17 8.18 /* 8.19 * Dynamically bind an event-channel port to an IRQ-like callback handler.
9.1 --- a/tools/python/xen/xend/server/event.py Thu Oct 13 17:49:56 2005 +0100 9.2 +++ b/tools/python/xen/xend/server/event.py Thu Oct 13 17:51:35 2005 +0100 9.3 @@ -185,11 +185,13 @@ class EventFactory(protocol.ServerFactor 9.4 return EventProtocol(self.daemon) 9.5 9.6 def listenEvent(daemon): 9.7 - factory = EventFactory(daemon) 9.8 - if xroot.get_xend_unix_server(): 9.9 - path = '/var/lib/xend/event-socket' 9.10 - unix.listenUNIX(path, factory) 9.11 - if xroot.get_xend_http_server(): 9.12 - port = xroot.get_xend_event_port() 9.13 - interface = xroot.get_xend_address() 9.14 - tcp.listenTCP(port, factory, interface=interface) 9.15 + pass 9.16 + 9.17 +# factory = EventFactory(daemon) 9.18 +# if xroot.get_xend_unix_server(): 9.19 +# path = '/var/lib/xend/event-socket' 9.20 +# unix.listenUNIX(path, factory) 9.21 +# if xroot.get_xend_http_server(): 9.22 +# port = xroot.get_xend_event_port() 9.23 +# interface = xroot.get_xend_address() 9.24 +# tcp.listenTCP(port, factory, interface=interface)