[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] HVM direct boot broken in xen-unstable



On Mon, Jul 21, 2008 at 04:46:17PM +0100, Ian Jackson wrote:
> Daniel P. Berrange writes ("Re: [Xen-devel] HVM direct boot broken in 
> xen-unstable"):
> > On Sat, Jul 19, 2008 at 12:52:07AM +0000, Byrne, John (HP Labs) wrote:
> > > Hi!
> > > 
> > > On x86_64, changeset 18081, running/building on rhel5, trying to use
> > > the HVM direct boot causes the domain to reboot immediately and then
> > > the log says the domain is restarting too rapidly. No obvious hints 
> > > as to where the problem is. If I build the in-tree ioemu code, things
> > > work. Any clues as to where to look or how to get some useful debugging
> > > output?
> 
> Byrne, could you send me a copy of your config file so I can reproduce
> this ?  Also, some idea of how you made (or how you obtained) the
> kernel image and initramfs.  I don't think I've ever done a direct
> kernel boot using this code (which is in patches supplied by Daniel)
> and offhand I can't seem to find the documentation.
> 
> > It appears the code is missing from the external ioemu code. The original
> > changesets for HVM kernel boot were
> 
> I've looked at the code and these changes are ones I did attempt to
> port across to the new qemu.  You'll see for example that the `evil
> helper' is still there, just slightly further down the file in pc.c.
> 
> I haven't ever executed the resulting codepaths and evidently I broke
> something, which is not all that surprising.

I think I've identified the problem. In the load_linux() method, the
line where we copy the header into guest memory:

    /* store the finalized header and load the rest of the kernel */
    cpu_physical_memory_write(real_addr, header, 1024);


Is done before the Xen hook runs:

    xen_relocator_hook(prot_addr, protocol, header, kernel_size,
                       real_addr, setup_size-1024);

The xen_relocator_hook modifies byte 0x214 in the header to point to
its hook, and so this change isn't getting written into memory.

The     cpu_physical_memory_write(real_addr, header, 1024) call just
needs to be moved down to be immediately after the call to the xen
hook.

Regards,
Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.