[libvirt] [PATCH] cpu: break out when a right cpuCandidate found
Jiri Denemark
jdenemar at redhat.com
Mon Feb 24 16:29:24 UTC 2014
On Thu, Feb 13, 2014 at 07:44:20 +0000, Wangyufei (James) wrote:
> >From 8123c5d64f940fa0fb0de32fc5e68035980b6b01 Mon Sep 17 00:00:00 2001
> From: WangYufei <james.wangyufei at huawei.com>
> Date: Thu, 13 Feb 2014 07:17:11 +0000
> Subject: [PATCH] cpu: break out when a right cpuCandidate found
>
> In function x86Decode there's a code segment in while cycle like this:
> if (cpuModel == NULL
> || cpuModel->nfeatures > cpuCandidate->nfeatures) {
> virCPUDefFree(cpuModel);
> cpuModel = cpuCandidate;
> cpuData = candidate->data;
> } else {
> virCPUDefFree(cpuCandidate);
> }
> when it finds the right cpuCandidate, it doesn't break out the cycle, but continues
> run in it, and cpuModel will never get a new value, it's meaningless. It should
> break out when a right cpuCndidate found.
That's mainly because we don't know we already have the right candidate.
The next one may actually be better. On other words, the cpuCandidate we
get in later iterations may satisfy the
cpuModel->nfeatures > cpuCandidate->nfeatures
and thus it may be better than cpuModel stored in earlier iterations.
What are you trying to fix here? Are you just trying to optimize the
code or do you see a wrong CPU model to be selected in some situations?
Jirka
More information about the libvir-list
mailing list