From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: amit.shah@redhat.com
Subject: [Qemu-devel] [PATCH 2/5] virtio-serial: Clean up virtconsole detection
Date: Wed, 25 May 2011 14:21:11 +0200 [thread overview]
Message-ID: <1306326074-22737-3-git-send-email-armbru@redhat.com> (raw)
In-Reply-To: <1306326074-22737-1-git-send-email-armbru@redhat.com>
virtio-serial-bus needs to treat "virtconsole" devices specially. It
uses VirtIOSerialPort member is_console to recognize them. It gets
its value via property initialization. Cute hack, except it lets
users mess with it: "-device virtconsole,is_console=0" isn't plugged
into port 0 as it should.
Move the flag to VirtIOSerialPortInfo. Keep the property for backward
compatibility; its value has no effect.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
hw/virtio-console.c | 5 +++--
hw/virtio-serial-bus.c | 4 ++--
hw/virtio-serial.h | 8 ++++++--
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/hw/virtio-console.c b/hw/virtio-console.c
index de539c4..50b85f8 100644
--- a/hw/virtio-console.c
+++ b/hw/virtio-console.c
@@ -91,7 +91,7 @@ static int virtconsole_initfn(VirtIOSerialPort *port)
{
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
- port->is_console = true;
+ port->is_console_dummy = true;
return generic_port_init(vcon, port);
}
@@ -113,10 +113,11 @@ static int virtconsole_exitfn(VirtIOSerialPort *port)
static VirtIOSerialPortInfo virtconsole_info = {
.qdev.name = "virtconsole",
.qdev.size = sizeof(VirtConsole),
+ .is_console = true,
.init = virtconsole_initfn,
.exit = virtconsole_exitfn,
.qdev.props = (Property[]) {
- DEFINE_PROP_UINT8("is_console", VirtConsole, port.is_console, 1),
+ DEFINE_PROP_UINT8("is_console", VirtConsole, port.is_console_dummy, 1),
DEFINE_PROP_UINT32("nr", VirtConsole, port.id, VIRTIO_CONSOLE_BAD_ID),
DEFINE_PROP_CHR("chardev", VirtConsole, chr),
DEFINE_PROP_STRING("name", VirtConsole, port.name),
diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c
index adbcf6a..d0a4ade 100644
--- a/hw/virtio-serial-bus.c
+++ b/hw/virtio-serial-bus.c
@@ -350,7 +350,7 @@ static void handle_control_message(VirtIOSerial *vser, void *buf, size_t len)
* this port is a console port so that the guest can hook it
* up to hvc.
*/
- if (port->is_console) {
+ if (port->info->is_console) {
send_control_event(port, VIRTIO_CONSOLE_CONSOLE_PORT, 1);
}
@@ -722,7 +722,7 @@ static int virtser_port_qdev_init(DeviceState *qdev, DeviceInfo *base)
* location 0. This is done for backward compatibility (old
* kernel, new qemu).
*/
- plugging_port0 = port->is_console && !find_port_by_id(port->vser, 0);
+ plugging_port0 = info->is_console && !find_port_by_id(port->vser, 0);
if (find_port_by_id(port->vser, port->id)) {
error_report("virtio-serial-bus: A port already exists at id %u\n",
diff --git a/hw/virtio-serial.h b/hw/virtio-serial.h
index 5eb948e..c0d1717 100644
--- a/hw/virtio-serial.h
+++ b/hw/virtio-serial.h
@@ -119,8 +119,8 @@ struct VirtIOSerialPort {
uint32_t iov_idx;
uint64_t iov_offset;
- /* Identify if this is a port that binds with hvc in the guest */
- uint8_t is_console;
+ /* For property backward compatibility, not used otherwise */
+ uint8_t is_console_dummy;
/* Is the corresponding guest device open? */
bool guest_connected;
@@ -132,6 +132,10 @@ struct VirtIOSerialPort {
struct VirtIOSerialPortInfo {
DeviceInfo qdev;
+
+ /* Is this a device that binds with hvc in the guest? */
+ bool is_console;
+
/*
* The per-port (or per-app) init function that's called when a
* new device is found on the bus.
--
1.7.2.3
next prev parent reply other threads:[~2011-05-25 15:26 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-25 12:21 [Qemu-devel] [PATCH 0/5] virtio-serial: Fixes and cleanups Markus Armbruster
2011-05-25 12:21 ` [Qemu-devel] [PATCH 1/5] virtio-serial: Plug memory leak on qdev exit() Markus Armbruster
2011-05-25 12:21 ` Markus Armbruster [this message]
2011-05-25 12:21 ` [Qemu-devel] [PATCH 3/5] virtio-serial: Drop useless property is_console Markus Armbruster
2011-05-25 12:21 ` [Qemu-devel] [PATCH 4/5] virtio-serial: Drop redundant VirtIOSerialPort member info Markus Armbruster
2011-05-25 12:21 ` [Qemu-devel] [PATCH 5/5] virtio-console: Simplify init callbacks Markus Armbruster
2011-05-25 12:29 ` [Qemu-devel] [PATCH 0/5] virtio-serial: Fixes and cleanups Amit Shah
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1306326074-22737-3-git-send-email-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=amit.shah@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).