From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Byrne Subject: Re: xen-unstable on HP dc7800 simply reboots Date: Wed, 24 Oct 2007 09:15:34 -0700 Message-ID: <471F6FA6.4080105@hp.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: xen-devel List-Id: xen-devel@lists.xenproject.org Keir Fraser wrote: > On 24/10/07 08:12, "Keir Fraser" wrote: > >>> Littering the early boot code with putc() and comparing the code's >>> behavior on a machine that actually boots, I've found that the call to >>> get_memory_map from trampoline.S is the root of all evil. If that is >>> called, then the trampoline fails to make it back to protected mode from >>> real mode. I am still working to identify the specific problem. >> So if you remove that call, so Xen falls back to using the GRUB-supplied >> memory map, then Xen boots okay? Is tghat tru on current tip of xen-unstable >> too? > > Thinking some more my guess is that any BIOS call is causing you to crash, > so removing just teh call to get_memory_map will be insufficient on tip -- > you'll have to remove calls to set video mode and get edd information too. > Perhaps the IDT is either corrupted or not actually at address 0x0, like > it's supposed to be? What happens if you remove the 'lidt' instruction from > arch/x86/boot/trampoline.S? Once I identified the problem revision, I went back to the tip to try to debug it. (Sorry for any ambiguity.) Taking out get_memory_map is sufficient; get_edd and video don't seem to cause any problems. Removing the lidt changes nothing. Adding a "ret" after the .Lmem88 in mem.S confirms that the problem is in the e820 call. I'm currently trying to see if the descriptor table is getting corrupted during the BIOS calls. John