[libvirt] [PATCH 1/2] xen: parse and generate hpet item in sxpr

Eric Blake eblake at redhat.com
Tue May 10 22:25:15 UTC 2011


On 05/10/2011 05:24 AM, Paolo Bonzini wrote:
> Recent versions of Xen disable the virtual HPET by default.  This is
> usually more precise because tick policies are not implemented for
> the HPET in Xen.  However, there may be several reasons to control
> the HPET manually: 1) to test the emulation; 2) because distros may
> provide the knob while leaving the default to "enabled" for compatibility
> reasons.
> 
> This patch provides support for the hpet item in both sexpr and xm
> formats, and translates it to a <timer> element.
> 
> Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>

> 
> diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c
> index 3a412a6..d8a18f7 100644
> --- a/src/xenxs/xen_sxpr.c
> +++ b/src/xenxs/xen_sxpr.c
> @@ -1174,6 +1174,23 @@ xenParseSxpr(const struct sexpr *root,
>          /* Old XenD only allows localtime here for HVM */
>          if (sexpr_int(root, "domain/image/hvm/localtime"))
>              def->clock.offset = VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME;
> +
> +        if (sexpr_lookup(root, "domain/image/hvm/hpet")) {
> +            virDomainTimerDefPtr timer;
> +
> +            if (VIR_ALLOC_N(def->clock.timers, 1) < 0 ||
> +		VIR_ALLOC(timer) < 0) {

TAB character.  'make syntax-check' would have caught it.

> +        /* look for HPET in order to override the hypervisor/xend default */
> +        for (i = 0; i < def->clock.ntimers; i++) {
> +            if (def->clock.timers[i]->name == VIR_DOMAIN_TIMER_NAME_HPET &&
> +                def->clock.timers[i]->present != -1) {
> +                virBufferVSprintf(&buf, "(hpet %d)",

This patch was written before commit 68ea80c renaming things to
virBufferAsprint.

> +++ b/src/xenxs/xen_xm.c
> @@ -367,6 +367,25 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
>              goto cleanup;
>          else if (val)
>              def->features |= (1 << VIR_DOMAIN_FEATURE_HAP);
> +
> +        if (xenXMConfigGetBool(conf, "hpet", &val, -1) < 0)
> +            goto cleanup;
> +        else if (val != -1) {
> +            virDomainTimerDefPtr timer;
> +
> +            if (VIR_ALLOC_N(def->clock.timers, 1) < 0 ||
> +		VIR_ALLOC(timer) < 0) {

Another TAB.

ACK with those nits fixed, so I pushed this.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110510/af8915b9/attachment-0001.sig>


More information about the libvir-list mailing list