[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.
Thanks
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