[libvirt] [PATCH v2] qemu: Default hwclock source for sPAPR to RTC

Cole Robinson crobinso at redhat.com
Fri Jul 14 22:18:59 UTC 2017


On 07/14/2017 06:55 AM, Kothapally Madhu Pavan wrote:
> QEMU fails to launch a sPAPR guest with clock sources other that RTC.
> Internally qemu only uses RTC timer for hwclock. This patch reports
> the right error message instead of qemu erroring out when any other
> timer other than RTC is used.
> 
> Signed-off-by: Kothapally Madhu Pavan <kmp at linux.vnet.ibm.com>
> ---
>  src/qemu/qemu_domain.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 8e7404d..b74800d 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -3025,6 +3025,7 @@ qemuDomainDefValidate(const virDomainDef *def,
>      virQEMUCapsPtr qemuCaps = NULL;
>      unsigned int topologycpus;
>      int ret = -1;
> +    size_t i;
>  
>      if (!(qemuCaps = virQEMUCapsCacheLookup(caps,
>                                              driver->qemuCapsCache,
> @@ -3037,6 +3038,18 @@ qemuDomainDefValidate(const virDomainDef *def,
>          goto cleanup;
>      }
>  
> +    /* Only RTC timer is supported as hwclock for sPAPR machines */
> +    for (i = 0; i < def->clock.ntimers; i++) {
> +        virDomainTimerDefPtr timer = def->clock.timers[i];
> +        if (ARCH_IS_PPC64(def->os.arch) && timer->name != VIR_DOMAIN_TIMER_NAME_RTC) {
> +            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                           _("unsupported clock timer '%s' for %s architecture"),
> +                             virDomainTimerNameTypeToString(def->clock.timers[i]->name),
> +                             virArchToString(def->os.arch));
> +            goto cleanup;
> +        }
> +    }
> +
>      /* On x86, UEFI requires ACPI */
>      if (def->os.loader &&
>          def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
> 

Rather than enforce this for only PPC64, you can reject hpet if the
QEMU_CAPS_NO_HPET flag isn't available, and pit if QEMU_CAPS_NO_KVM_PIT aren't
available (this is effectively non-x86, see virQEMUCapsInitQMPBasicArch, but I
think it's better this way)

- Cole




More information about the libvir-list mailing list