[libvirt] [PATCH] Enable support for nested SVM

Daniel Veillard veillard at redhat.com
Wed Oct 13 12:43:36 UTC 2010


On Tue, Oct 12, 2010 at 08:23:21AM -0600, Eric Blake wrote:
> On 10/12/2010 04:46 AM, Daniel P. Berrange wrote:
> >This enables support for nested SVM using the regular CPU
> >model/features block. If the CPU model or features include
> >'svm', then the '-enable-nesting' flag will be added to the
> >QEMU command line. Latest out of tree patches for nested
> >'vmx', no longer require the '-enable-nesting' flag. They
> >instead just look at the cpu features. Several of the models
> >already include svm support, but QEMU was just masking out
> >the svm bit silently. So this will enable SVM on such
> >models
> >
> >+
> >+bool
> >+cpuHasFeature(const char *arch,
> >+              const union cpuData *data,
> >+              const char *feature)
> >+{
> >+    struct cpuArchDriver *driver;
> >+
> >+    VIR_DEBUG("arch=%s, data=%p, feature=%s",
> >+              arch, data, feature);
> >+
> >+    if ((driver = cpuGetSubDriver(arch)) == NULL)
> >+        return -1;
> 
> Ouch.  -1 promotes to true.
> 
> >+
> >+    if (driver->hasFeature == NULL) {
> >+        virCPUReportError(VIR_ERR_NO_SUPPORT,
> >+                _("cannot check guest CPU data for %s architecture"),
> >+                          arch);
> >+        return -1;
> 
> Likewise.
> 
> >+    }
> >+
> >+    return driver->hasFeature(data, feature);
> >+}
> 
> You either need to change the return type to int and take a bool*
> parameter (return -1 on failure, 0 on success when *param was
> written to), or return an int value rather than a bool; since the
> caller needs to distinguish between feature-not-present and
> error-message-reported.

  Yup, that's why I'm always a bit suspicious when a function returns
a boolean, that said for an internal API it's less of a problem

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list