[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [IA64] Followup to xen time cleanup
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID 29dfadcc5029738ad0c2a8934a51afcc834ecae5 # Parent 2e81aba147ebdb2a2dc7e39565ecd1faa7117eea [IA64] Followup to xen time cleanup Clean up to xen time handler. Tristan #if 0 some code because it seems redundant, which however is actually problematic logic as a reason for an intermittent timer oops issue of dom0. So delete it now. Also remove vcpu_wake, since wakeup current has nothing meaningful and simply waste cpu cycle. Signed-off-by: Kevin Tian <kevin.tian@xxxxxxxxx> diff -r 2e81aba147eb -r 29dfadcc5029 xen/arch/ia64/xen/xentime.c --- a/xen/arch/ia64/xen/xentime.c Fri Mar 24 11:36:22 2006 -0700 +++ b/xen/arch/ia64/xen/xentime.c Mon Mar 27 15:32:08 2006 -0700 @@ -118,41 +118,17 @@ xen_timer_interrupt (int irq, void *dev_ #endif #endif -#if 0 - /* Nobody seems to be able to explain this code. - It seems to be accumulated tricks, which are not required anymore. - Also I have made many tests, I'd like to get confirmation from - other site (TG). */ - if (current->domain == dom0) { - // FIXME: there's gotta be a better way of doing this... - // We have to ensure that domain0 is launched before we - // call vcpu_timer_expired on it - //domain0_ready = 1; // moved to xensetup.c - VCPU(current,pending_interruption) = 1; - } - if (domain0_ready && current->domain != dom0) { - if(vcpu_timer_expired(dom0->vcpu[0])) { - vcpu_pend_timer(dom0->vcpu[0]); - //vcpu_set_next_timer(dom0->vcpu[0]); - vcpu_wake(dom0->vcpu[0]); - } - } -#endif - if (!is_idle_domain(current->domain)) { + if (!is_idle_domain(current->domain)) if (vcpu_timer_expired(current)) { vcpu_pend_timer(current); // ensure another timer interrupt happens even if domain doesn't vcpu_set_next_timer(current); - vcpu_wake(current); } - } + new_itm = local_cpu_data->itm_next; if (!VMX_DOMAIN(current) && !time_after(ia64_get_itc(), new_itm)) return IRQ_HANDLED; - - if (VMX_DOMAIN(current)) - vcpu_wake(current); while (1) { new_itm += local_cpu_data->itm_delta; @@ -199,12 +175,7 @@ xen_timer_interrupt (int irq, void *dev_ */ while (!time_after(new_itm, ia64_get_itc() + local_cpu_data->itm_delta/2)) new_itm += local_cpu_data->itm_delta; -//#ifdef XEN -// vcpu_set_next_timer(current); -//#else -//printf("***** timer_interrupt: Setting itm to %lx\n",new_itm); ia64_set_itm(new_itm); -//#endif /* double check, in case we got hit by a (slow) PMI: */ } while (time_after_eq(ia64_get_itc(), new_itm)); raise_softirq(TIMER_SOFTIRQ); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |