[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