[libvirt] [PATCH] Add flag to BaselineCPU API to return detailed CPU features
Daniel P. Berrange
berrange at redhat.com
Tue Jul 30 09:43:39 UTC 2013
On Mon, Jul 29, 2013 at 05:31:19PM -0600, Don Dugger wrote:
>
> Currently the virConnectBaselineCPU API does not expose the CPU features
> that are part of the CPU's model. This patch adds a new flag,
> VIR_CONNECT_BASELINE_SHOW_MODEL, that causes the API to explictly
> list all features that are part of that model.
Nit-pick: I'd prefer the constant to be named
VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURE
so that it is more precisely describing what it is doing,
and includes the word "CPU" there to match the API name.
> +static void
> +x86AddFeatures(virCPUDefPtr cpu,
> + struct x86_map *map)
> +{
> + const struct x86_model *candidate;
> + const struct x86_feature *feature = map->features;
> +
> + candidate = map->models;
> + while (candidate != NULL) {
> + if (STREQ(cpu->model, candidate->name))
> + break;
> + candidate = candidate->next;
> + }
> + if (!candidate) {
> + VIR_WARN("Odd, %s not a known CPU model\n", cpu->model);
VIR_WARN shouldn't be used for errors which can occur in public API call
paths. It should virReportError() and return an error code '-1' to the
caller of the API
> + return;
> + }
> + while (feature != NULL) {
> + if (x86DataIsSubset(candidate->data, feature->data)) {
> + if (virCPUDefAddFeature(cpu, feature->name, VIR_CPU_FEATURE_REQUIRE) < 0) {
> + VIR_WARN("CPU model %s, no room for feature %s", cpu->model, feature->name);
> + return;
Again this should be reporting an error & propagating it back to the
caller
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list