[Libvir] Request and proposition about hardware capabilities in virNodeInfo

Daniel Veillard veillard at redhat.com
Wed Nov 15 17:51:56 UTC 2006


On Wed, Nov 15, 2006 at 05:38:54PM +0100, Philippe Berthault wrote:
> Hello,
> 
> To administrate virtual machines by using livbvirt, we need to known if 
> the underlying hardware platform supports hvm (Intel-VT or AMD-V) or 
> not. Currently, this information is returned by the "xm info" command of 
> Xen in the "xen_caps" line but there is no equivalent in libvirt. So we 
> propose to add this information in libvirt API.

  That's reasonnable, yes.

> There is three possibilities for doing that:
> 1) Add one or several fields in the virNodeInfo structure returned by 
> the virNodeGetInfo() function. These fields would be either strings such 
> as strings returned by "xm info" or either bit fields with one bit per 
> hardware capability.

  <grin/> 
  on one hand it makes sense to have a larger _virNodeInfo
on the other hand doing so breaks the ABI (for virNodeGetInfo) in an
horrible way.

> 2) Add one or several specific functions returning a boolean value for 
> each hardware capability we want to test.

  One specific function using a string input for the name of the capability
  int virNodeGetCapability(const char *name, int flags)
would allow simple queries in an ABI compatible way 

> 3) Add a specific function which returns either a bit fields of all the 
> hardware capabilities or a structure such as virNodeInfo but far more 
> complete.

  Good point over 2) is that we can query a lot of parameter in one go.
but we are at risk of hitting 1), so I would use padding in the structure
(and maybe versioning informations within) to allow smooth evolution.

> The problem with the proposition #1 is that the size of the virNodeInfo 
> structure is changed. This implies for all libvirt users to recompile 
> their programs linked with libvirt to avoid a 'core dump' at the 
> execution. This is the reason why propositions 2 and 3 exist.

  yup

> NB: On an IA32 system, we can check flags in /proc/cpuinfo but on an 
> IA64 platform with Montecito processors, there is no information about 
> hardware capabilities in /proc/cpuinfo and the only way to known if the 
> hardware supports hvm is by using the 'xm info' command.
> 
> What is your opinion about these propositions ?

  2 is okay for small things like checking VMX support. 3 potentially allows
to query far more.
  I guess it depends on how much more informations we may want to extract 
in the future, and how structured they may be.

  2) looks a safe option, one may be interested in checking a given capability
quickly without having to create a structure etc ...

  I guess others may have an opinion on this,


Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/




More information about the libvir-list mailing list