[Libvir] PATCH: support Xen 3.0.5

Atsushi SAKAI sakaia at jp.fujitsu.com
Thu Apr 12 01:56:32 UTC 2007

Hi, Dan

Thank you for submitting patch!
I am eased to see this. Since I can test on current xen-unstable.
Anyway I will test on with this patch.

Atsushi SAKAI

"Daniel P. Berrange" <berrange at redhat.com> wrote:

> I've been doing some testing with current xen-unstable (ie what will very
> shortly be 3.0.5) and came across a whole bunch of things which needed
> fixing - some expected, others not expected. The attached patch addresses
> the following issues:
>   - Many of the hypercalls have their structs changed so that int64_t
>     or 'foo *' members are always 64-bit aligned even on 32-bit platforms.
>     This is part of the work to allow 32-bit Dom0/DomU to work on 64-bit
>     hypervisor. 
>     For the int64_t types I had to annotate with __attribute__((aligned(8))).
>     This did not work for pointer data types, so I for those I had to do
>     a more complex hack with
>         union {
>            foo *v;
>            int64_t pad __attribute__((aligned(8)))
>         }
>     This matches what is done in the public (BSD licensed) Xen HV header
>     files.
>     We already had ways to deal with v0  vs v2  hypercalls structs. This
>     change is still techincally v2, but just a minor revision of the
>     domctl or sysctl interfaces. Thus I have named the extra structs
>     v2d5 or v2s3  to indicated hypercall version 2, domctl version 5
>     or hypercall version 2, sysctl version 3 respectively.
>   - The 'flags' field in the getdomaininfo hypercall now has an extra flag
>     defined '(1<<1)' which was previously not used, is now used to indicate
>     that the guest is HVM. Thus when fetching domain state, we have to mask
>     out that flag, otherwise we'll never match the correct paused/running/
>     blocked/etc states.
>   - In the xenHypervisorNumOfDomains method, under certain scenarios we
>     will re-try the hypercall, allocating a bigger memory buffer. Well
>     due to the ABI alignment changes we hit that scenario everytime, and
>     ended up allocating a multi-GB buffer :-) The fixed structs sort this
>     out, but as a preventative measure for any future HV changes the patch
>     will break out of the loop at the 10,000 guest mark to avoid allocating
>     GB of memory.
>   - The unified Xen driver broke the GetVCPUs method - it was mistakenly
>     checking for return value == 0, instead of > 0. Trivial fix.
>   - The method to open the XenD connection was calling xenDaemonGetVersion
>     to test if the connection succeeded. But then also calling the
>     xend_detect_config_version which does pretty much same thing. So I
>     removed the former, and now we only do the latter as a 'ping' test 
>     when opening. This removes 1 HTTP GET which is worthwhile performance
>     boost given how horrifically slow XenD is.
>   - The HVM SEXPR for configuring the VNC / SDL graphics is no longere
>     part of the (image) block. it now matches the PVFB graphics config
>     and is an explicit  (vfb)  block within the (devices) block.
>     So if xend_config_format >= 4 we use the new style config - this
>     is assuming upstream XenD is patched to increment xend_config_format
>     from 3 to 4 - I send a patch & am confident it will be applied
>     very shortly.
>   - The QEMU device model allows a user to specify multiple devices
>     for the boot order, eg  'andc' to indicated 'floppy', 'network'
>     'cdrom', 'disk'. We assumed it was a single letter only. I now
>     serialize this into multiple <boot dev='XXX'/> elements, ordered
>     according to priority. The XML -> SEXPR conversion allows the
>     same.
> I've tested all this on a 32-bit Dom0 running on 32-bit HV, and 64-bit HV,
> but not tested a 64-bit Dom0 on 64-bit HV. I'm pretty sure it'll work,but
> if anyone is runnning 64-on-64 please test this patch.
> Regards,
> Dan.
> -- 
> |=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
> |=-           Perl modules: http://search.cpan.org/~danberr/              -=|
> |=-               Projects: http://freshmeat.net/~danielpb/               -=|
> |=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

More information about the libvir-list mailing list