On Tue, Jul 05, 2011 at 12:29:43PM +0200, Michal Privoznik wrote:
This patch creates new attribute 'sga' for <serial>
element. Serial Graphics
Adapter allows users to see BIOS messages from the very first moment
domain boots up. Therefore, users can choose boot medium, set PXE, etc.
However, to be able to use this, one need SGABIOS, which is accessible
here:
http://code.google.com/p/sgabios/
---
diff to v1:
-move from <video> to <serial> as Dan suggested:
https://www.redhat.com/archives/libvir-list/2011-July/msg00134.html
docs/formatdomain.html.in | 10 ++++--
docs/schemas/domain.rng | 20 +++++++++---
src/conf/domain_conf.c | 34 ++++++++++++++++++-
src/conf/domain_conf.h | 10 ++++++
src/qemu/qemu_capabilities.c | 3 ++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 5 +++
.../qemuxml2argv-serial-pty-chardev.args | 3 +-
.../qemuxml2argv-serial-pty-chardev.xml | 2 +-
tests/qemuxml2argvtest.c | 3 +-
10 files changed, 78 insertions(+), 13 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index fe8d74c..1e9eee5 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -2040,7 +2040,7 @@ qemu-kvm -net nic,model=? /dev/null
<source path='/dev/pts/2'/>
<target port='0'/>
</parallel>
- <serial type='pty'>
+ <serial type='pty' sga='on'>
<source path='/dev/pts/3'/>
<target port='0'/>
</serial>
@@ -2105,7 +2105,7 @@ qemu-kvm -net nic,model=? /dev/null
<pre>
...
<devices>
- <serial type='pty'>
+ <serial type='pty' sga='on'>
<source path='/dev/pts/3'/>
<target port='0'/>
</serial>
@@ -2115,7 +2115,11 @@ qemu-kvm -net nic,model=? /dev/null
<p>
<code>target</code> can have a <code>port</code>
attribute, which
specifies the port number. Ports are numbered starting from 0. There are
- usually 0, 1 or 2 serial ports.
+ usually 0, 1 or 2 serial ports. The <code>sga</code> attribute
enables
+ or disables Serial Graphics Adapter. Accepted values are
<code>on</code>
+ and <code>off</code>. To be able to use this feature, you need to
install
+ <a
href="http://code.google.com/p/sgabios/">SGABios</a>.
SGA
+ <span class="since">Since 0.9.4</span>
This is describing a private implementation detail of QEMU. The libvirt
XML should be documented in a more general fashion.
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 6e4480e..29936a6 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3884,6 +3884,11 @@ qemuBuildCommandLine(virConnectPtr conn,
virCommandAddArg(cmd, "-device");
virCommandAddArgFormat(cmd,
"isa-serial,chardev=char%s,id=%s",
serial->info.alias, serial->info.alias);
+
+ if (serial->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL
&&
+ serial->source.sga == VIR_DOMAIN_CHR_SGA_ON &&
+ qemuCapsGet(qemuCaps, QEMU_CAPS_SGA))
+ virCommandAddArgList(cmd, "-device", "sga",
NULL);
} else {
virCommandAddArg(cmd, "-serial");
if (!(devstr = qemuBuildChrArgStr(&serial->source, NULL)))
Looking at this makes me see a flaw in my suggestion to add an
attribute to <serial>. The SGA option ROM isn't associated with
a particular serial port, nor can you add it multiple times for
each serial port. It just uses the "primary" serial port. So I think
we might be better off putting it in the same place as the other
BIOS options.
It is regretable that we have <bootmenu enable='no'/>, when it
really should have been <bios bootmenu=yes|no>, to which we could
have added other attributes :-(
What do people think about adding a new element for this
<bios useserial='yes|no'/>
???
Also, agree with Eric that whatever we use in XML, we should raise an
error if it is requested in the XML, but not supported in QEMU
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|