[libvirt PATCH v2 4/8] qemu: Validate configuration for the armvtimer timer

Masayoshi Mizuma msys.mizuma at gmail.com
Mon Feb 10 15:43:58 UTC 2020


On Fri, Feb 07, 2020 at 03:27:04PM +0100, Andrea Bolognani wrote:
> Its use is limited to certain guest types, and it only supports
> a subset of all possible tick policies.
> 
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
> ---
>  src/qemu/qemu_domain.c | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 68348464a8..8036886508 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -5430,6 +5430,39 @@ qemuDomainDefValidateClockTimers(const virDomainDef *def,
>              break;
>  
>          case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
> +            if (def->virtType != VIR_DOMAIN_VIRT_KVM ||
> +                !qemuDomainIsARMVirt(def)) {
> +                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                               _("Configuring the '%s' timer is not supported "
> +                                 "for virtType=%s arch=%s machine=%s guests"),
> +                               virDomainTimerNameTypeToString(timer->name),
> +                               virDomainVirtTypeToString(def->virtType),
> +                               virArchToString(def->os.arch),
> +                               def->os.machine);
> +                return -1;
> +            }
> +            if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_KVM_NO_ADJVTIME)) {
> +                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                               _("Configuring the '%s' timer is not supported "
> +                                 "with this QEMU binary"),
> +                               virDomainTimerNameTypeToString(timer->name));
> +                return -1;
> +            }
> +
> +            switch (timer->tickpolicy) {
> +            case -1:
> +            case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY:
> +            case VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD:
> +                break;
> +            case VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP:
> +            case VIR_DOMAIN_TIMER_TICKPOLICY_MERGE:
> +                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                               _("The '%s' timer does not support "
> +                                 "tickpolicy '%s'"),
> +                               virDomainTimerNameTypeToString(timer->name),
> +                               virDomainTimerTickpolicyTypeToString(timer->tickpolicy));
> +                return -1;
> +            }
>              break;
>          }
>      }
> -- 
> 2.24.1
> 

Reviewed-by: Masayoshi Mizuma <m.mizuma at jp.fujitsu.com>





More information about the libvir-list mailing list