From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: Question about Xen reboot on panic Date: Fri, 13 Nov 2015 00:39:49 -0700 Message-ID: <5645A1D502000078000B494F@prv-mh.provo.novell.com> References: <5643C716.1050102@citrix.com> <5643D091.7090503@citrix.com> <56448BA8.6080705@citrix.com> <5644D58002000078000B469D@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Meng Xu Cc: Andrew Cooper , Wei Liu , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org >>> On 12.11.15 at 20:54, wrote: > However, the line after that if statement is: > smp_send_stop(); > > which is not in the if ( get_apic_id() != boot_cpu_physical_apicid ) > statement. > > So P0 may run this code, and from what I read from this > smp_send_stop(), it has the following code: > > local_irq_disable(); > > __stop_this_cpu(); > > disable_IO_APIC(); > > hpet_disable(); > > local_irq_enable(); > > I'm guessing at __stop_this_cpu() when it is on P0, P0 will be > stopped. That's why P0 will never have the chance to proceed to the > rest of logic in the machine_restart(). Therefore, the machine won't > restart. The code is quite clear in this regard - smp_send_stop() stops all other CPUs, but calls only __stop_this_cpu() (not stop_this_cpu()) for itself. I.e. execution is at least supposed to make it back to the caller. Also please don't forget that this is working for most everyone else, so what you're looking for is more likely some oddity on your system, not some general issue. (Btw - are you doing this on master, which is what I'd expect you to? I ask because the sequence of calls you quote above doesn't match with what I see on there. I'd really like to avoid hunting a problem long fixed.) > If I move this smp_send_stop(void) into the if statement, Xen will reboot. > > Do you think this could be a fix? Definitely not. Jan