From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: [timer/ticks related] dom0 hang during boot on large 1TB system Date: Mon, 21 Dec 2009 15:13:36 -0800 Message-ID: <4B300120.4040405@goop.org> References: <20091221115252.2c3a64ea@mantra.us.oracle.com> <4B2FD29D.1010807@goop.org> <20091221144757.1e0f0930@mantra.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20091221144757.1e0f0930@mantra.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Mukesh Rathor Cc: "kurt.hackel@oracle.com" , Dan Magenheimer , "Xen-devel@lists.xensource.com" , Keir Fraser , Jan Beulich List-Id: xen-devel@lists.xenproject.org On 12/21/2009 02:47 PM, Mukesh Rathor wrote: > delta comes from: > > timer_inetrrupt() in time-xen.c : > ... > do { > get_time_values_from_xen(cpu); > > /* Obtain a consistent snapshot of elapsed wallclock cycles. */ > ---> delta = delta_cpu = > shadow->system_timestamp + get_nsec_offset(shadow); > ---> delta -= processed_system_time; > delta_cpu -= per_cpu(processed_system_time, cpu); > > /* > * Obtain a consistent snapshot of stolen/blocked cycles. We > * can use state_entry_time to detect if we get preempted here. > */ > do { > sched_time = runstate->state_entry_time; > barrier(); > stolen = runstate->time[RUNSTATE_runnable] + > runstate->time[RUNSTATE_offline] - > per_cpu(processed_stolen_time, cpu); > blocked = runstate->time[RUNSTATE_blocked] - > per_cpu(processed_blocked_time, cpu); > barrier(); > } while (sched_time != runstate->state_entry_time); > } while (!time_values_up_to_date(cpu)); > ... > > > At first glance, i don't understand the above algorithm. Since you've > the same code, I assumed you could also compute delta to be a large > value when dom0 starts, in which case you may observe dom0 hang. > There's some code in the pvops kernel which looks vaguely like that, but it has nothing to do with timer interrupts. Could you be more specific about what you're referring to? J