On Fri, Nov 05, 2010 at 04:46:37PM +0100, Daniel Veillard wrote:
The patch is based on the possiblity in the QEmu command line to
add -smbios options allowing to override the default values picked
by QEmu. We need to detect this first from QEmu help output.
If the domain is defined with smbios to be inherited from host
then we pass the values coming from the Host own SMBIOS, but
if the domain is defined with smbios to come from sysinfo, we
use the ones coming from the domain definition.
* src/qemu/qemu_conf.h: add the QEMUD_CMD_FLAG_SMBIOS_TYPE enum
value
* src/qemu/qemu_conf.c: scan the help output for the smbios support,
and if available add support based on the domain definitions,
and host data
* tests/qemuhelptest.c: add the new enum in the outputs
Signed-off-by: Daniel Veillard <veillard(a)redhat.com>
---
src/qemu/qemu_conf.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_conf.h | 3 +-
tests/qemuhelptest.c | 15 ++++--
3 files changed, 135 insertions(+), 6 deletions(-)
@@ -4092,6 +4171,50 @@ int qemudBuildCommandLine(virConnectPtr conn,
}
}
+ if ((def->os.smbios_mode != VIR_DOMAIN_SMBIOS_NONE) &&
+ (def->os.smbios_mode != VIR_DOMAIN_SMBIOS_EMULATE)) {
+ virSysinfoDefPtr source = NULL;
+
+ if (!(qemuCmdFlags & QEMUD_CMD_FLAG_SMBIOS_TYPE)) {
+ qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("the QEMU binary %s does not support smbios settings"),
+ emulator);
+ goto error;
+ }
+
+ /* should we really error out or just warn in those cases ? */
+ if (def->os.smbios_mode == VIR_DOMAIN_SMBIOS_HOST) {
+ if (driver->hostsysinfo == NULL) {
+ qemuReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Host SMBIOS informations are not available"));
+ goto error;
+ }
This one should use VIR_ERR_CONFIG_UNSUPPORTED too, because we're just
saying that this data isn't available with qemu:///session instances
really.
Also s/informations are not/information is not/
+ source = driver->hostsysinfo;
+ } else if (def->os.smbios_mode == VIR_DOMAIN_SMBIOS_SYSINFO) {
+ if (def->sysinfo == NULL) {
+ qemuReportError(VIR_ERR_XML_ERROR,
+ _("Domain '%s' sysinfo are not
available"),
+ def->name);
+ goto error;
+ }
+ source = def->sysinfo;
+ }
ACK with those minor fixes
Regards,
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://deltacloud.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|