[libvirt] [PATCH v2 3/5] Implement VIR_CONNECT_BASELINE_CPU_MIGRATABLE in the x86 cpu driver
Jiri Denemark
jdenemar at redhat.com
Fri Feb 27 09:46:31 UTC 2015
Oops, I started looking at this patch the moment you sent it but got
distracted and never finished the review. Sorry about this.
On Thu, Feb 19, 2015 at 16:22:38 +0100, Ján Tomko wrote:
> Filter out non-migratable features if
> VIR_CONNECT_BASELINE_CPU_MIGRATABLE was specified.
> ---
> v2: use the existing migrate_blocker field
> This removes the need for patch 1/5.
...
> diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
> index 45be262..2a568aa 100644
> --- a/src/cpu/cpu_x86.c
> +++ b/src/cpu/cpu_x86.c
...
> @@ -1633,6 +1634,21 @@ x86Decode(virCPUDefPtr cpu,
> goto out;
> }
>
> + /* Remove non-migratable features by default
Well, the features are removed on request rather than by default.
> + * Note: this only works as long as no CPU model contains non-migratable
> + * features directly */
> + if (flags & VIR_CONNECT_BASELINE_CPU_MIGRATABLE) {
> + for (i = 0; i < cpuModel->nfeatures; i++) {
> + const struct x86_feature *feat;
> + for (feat = map->migrate_blockers; feat; feat = feat->next) {
> + if (STREQ(feat->name, cpuModel->features[i].name)) {
> + VIR_FREE(cpuModel->features[i].name);
> + VIR_DELETE_ELEMENT_INPLACE(cpuModel->features, i, cpuModel->nfeatures);
> + }
> + }
> + }
> + }
> +
> if (flags & VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES) {
> if (!(copy = x86DataCopy(cpuData)) ||
> !(features = x86DataFromCPUFeatures(cpuModel, map)))
> @@ -1915,6 +1931,9 @@ x86Baseline(virCPUDefPtr *cpus,
> const char *modelName;
> bool matchingNames = true;
>
> + virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES |
> + VIR_CONNECT_BASELINE_CPU_MIGRATABLE, NULL);
> +
> if (!(map = virCPUx86GetMap()))
> goto error;
>
> @@ -1996,7 +2015,9 @@ x86Baseline(virCPUDefPtr *cpus,
> if (vendor && virCPUx86DataAddCPUID(base_model->data, &vendor->cpuid) < 0)
> goto error;
>
> - if (x86Decode(cpu, base_model->data, models, nmodels, modelName, flags) < 0)
> + if (x86Decode(cpu, base_model->data, models, nmodels, modelName,
> + flags & (VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES |
> + VIR_CONNECT_BASELINE_CPU_MIGRATABLE)) < 0)
No need to filter the features as x86Baseline does not support any
additional feature. Looks like a leftover from v1.
> goto error;
>
> if (STREQ_NULLABLE(cpu->model, modelName))
ACK with the nits fixed.
Jirka
More information about the libvir-list
mailing list