[Libvir] big-endian support for libvirt - introduce GUEST_HANDLE infrastructure ?
Daniel Veillard
veillard at redhat.com
Tue Jul 10 12:38:39 UTC 2007
On Tue, Jul 10, 2007 at 02:02:19PM +0200, Christian Ehrhardt wrote:
>
> > Really ? I did a quick scan in xen_internal.c , that's the only place
> > where
> >the problem might be raised, and found only 3 structure where the problem
> >was likely to occur: xen_v2s3_getdomaininfolistop, xen_v2d5_cpumap, and
> >xen_v2_setschedinfo, the two first ones clearly the last one is less clear.
> >Detecting big-endian vs. little can easilly be done in configure or
> >inherited
> >from a system include and a couple of
> >
> >
> Thats right - after looking around more in detail I also see not more
> than the listed places at the moment.
> I did not expect that it is only such a small subset, but it is good
> that way in reference to the current issue ;-)
yeah, the scope of the troubles is limited. Future needs to use the hypercall
could be for example for more fine grained monitoring/profiling, but I don't
expect to add much in a near future. Next step in term of functionality is
clearly migration but that will go though xend, not the hypervisor.
> >struct xen_v2d5_cpumap {
> >#ifdef LITTLE_ENDIAN
> > union {
> > uint8_t *v;
> > uint64_t pad ALIGN_64;
> > } bitmap;
> >#else
> > struct {
> > uint8_t *pad;
> > uint8_t *v;
> > } bitmap;
> >#endif
> > uint32_t nr_cpus;
> >};
> >
> > Might be easier to understand than the GUEST_HANDLE complex macros.
> >
> >
> [...]
> > How many places in libvirt are really affected ? I count 3, we use a
> >very small subset of the hypercalls, but I may be wrong. If there is really
> >more places then maybe a macro based mechanism is better maintainance wise
> >but in any case it would have to be rewritten from scratch to avoid
> >nervosity
> >from our Xensource friends.
> >
> You are right, for the moment it is really sufficient to fix
> xen_v2s3_getdomaininfolistop and xen_v2d5_cpumap.
Good :-)
> I'll do something that way dependent on configure&ifdef and send a patch
> (low prio since we have a workaround in the kernel)
That would be perfect ! Maybe we don't even need to hook in configure
I'm sure endianness info can come from standard headers, then combined
with a processor check that should be sufficient I guess.
> BTW here is a short status which libvirt functions are working on xenppc
> as seen on my first sniff test:
> working
> *monitor load
> *remove network interface
> *remove hard disk
> *access serial console
> *define existing xen domains from/to xml file
> *run/shutdown domains
okay
> partially working
> *add network device (work but cause a libvirt trace&hang afterwards)
> *add hard disk (work but cause a libvirt trace&hang afterwards)
weird, we are actually calling xend for this, that should not be platform
specific, could be an hidden generic bug
> not working
> *sometimes xend hangs and only /etc/init.d/xend restart helps,
> there are related tracebacks in xend.log
that's libvirt related ?
> *change number of cpu's
hum, we do lot of bitfield operations there, there is certainly some cleanups
needed, so that's not surprizing
> *create virtual network
could be the calls to brctl or the iptable interfaces, some debugging
certainly needed.
Thanks a lot for the feedback, and don't hesitate to ask !
Daniel
--
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard | virtualization library http://libvirt.org/
veillard at redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
More information about the libvir-list
mailing list