
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@redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/