From: Anthony Liguori <anthony@codemonkey.ws>
To: Amit Shah <amit.shah@redhat.com>
Cc: agraf@suse.de, qemu-devel@nongnu.org, armbru@redhat.com,
kraxel@redhat.com
Subject: Re: [Qemu-devel] [PATCH 2/8] virtio-console: qdev conversion, new virtio-serial-bus
Date: Mon, 04 Jan 2010 14:46:58 -0600 [thread overview]
Message-ID: <4B4253C2.6080508@codemonkey.ws> (raw)
In-Reply-To: <20091224052532.GB25261@amit-x200.redhat.com>
On 12/23/2009 11:25 PM, Amit Shah wrote:
> On (Wed) Dec 23 2009 [17:12:22], Anthony Liguori wrote:
>>> +struct VirtIOSerial {
>>> + VirtIODevice vdev;
>>> +
>>> + VirtQueue *c_ivq, *c_ovq;
>>> + /* Arrays of ivqs and ovqs: one per port */
>>> + VirtQueue **ivqs, **ovqs;
>>> +
>>> + VirtIOSerialBus *bus;
>>> +
>>> + QTAILQ_HEAD(, VirtIOSerialPort) ports;
>>> + struct virtio_console_config config;
>>> +
>>> + /*
>>> + * This lock serialises writes to the guest via the ivq
>>> + */
>>> + pthread_mutex_t ivq_lock;
>>
>> This indicates some thing is wrong. You should never need a mutex in a
>> device.
>
> You mean in the no locking needed sense, or not using a mutex sense? If
> the latter, what's the recommended way to do the locking?
There's a big global lock so this level of locking in the device is
unnecessary. Since we don't know what our re-entrance points are going
to be, it's also incorrect because it makes assumptions that may not be
true in the future.
>>> + int header_len;
>>> +
>>> + vq = port->ivq;
>>> + if (!virtio_queue_ready(vq)) {
>>> + return 0;
>>> + }
>>> + if (!size) {
>>> + return 0;
>>> + }
>>> + header.flags = 0;
>>> + header_len = use_multiport(port->vser) ? sizeof(header) : 0;
>>> +
>>> + pthread_mutex_lock(&port->vser->ivq_lock);
>>> + while (offset< size) {
>>
>> CodingStyle seems consistently off in a curious way. Always add spaces
>> after arithmetic operators.
>
> Curious case of patches getting modified for whitespace somewhere? (Or
> the mail client doing it?)
>
> I see the patch is fine in the copy I got CC'ed on; I deleted the one I
> got for the qemu-devel list so I can't verify that...
>
> http://article.gmane.org/gmane.comp.emulators.qemu/60257
>
> shows it made it fine to the list, so guess it's your mail client doing
> something funny.
Yup. It's a thunderbird bug. I upgraded and now it looks right. Sorry
for the noise.
>> The pthread_mutex_lock() can't be right. qemu already runs with a
>> single global lock. Even if you had another thread, there's no easy way
>> you could safely hold this lock without grabbing the global qemu lock.
>
> I know my current locking scheme is inadequate; but what's the
> preference here? I can remove the locking for now but we'll definitely
> want qemu to have more fine-grained locking, so when that happens,
> revisit all the code to ensure they're safe?
> on on this structure.
Definitely remove it. Untested code is broken code and it will break
the build on Windows.
> I'll annotate and read/write using the le format.
Just use ldl_p and stl_p. (or ldw/stw as appropriate).
>>> +static void virtser_bus_dev_print(Monitor *mon, DeviceState *qdev, int indent)
>>> +{
>>> + VirtIOSerialDevice *dev = DO_UPCAST(VirtIOSerialDevice, qdev, qdev);
>>> + VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev,&dev->qdev);
>>> +
>>> + monitor_printf(mon, "%*s dev-prop-int: id: %u\n",
>>> + indent, "", port->id);
>>> + monitor_printf(mon, "%*s dev-prop-int: is_console: %d\n",
>>> + indent, "", port->is_console);
>>> +}
>>
>>
>> This doesn't look used to me.
>
> It's helpful for debugging purposes, mostly: 'info qtree' on the monitor
> will print this out and one can examine port state.
Unused static functions will cause the build to fail with -Werror.
> Amit
next parent reply other threads:[~2010-01-05 20:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1261597948-24293-1-git-send-email-amit.shah@redhat.com>
[not found] ` <1261597948-24293-2-git-send-email-amit.shah@redhat.com>
[not found] ` <1261597948-24293-3-git-send-email-amit.shah@redhat.com>
[not found] ` <4B32A3D6.2010509@codemonkey.ws>
[not found] ` <20091224052532.GB25261@amit-x200.redhat.com>
2010-01-04 20:46 ` Anthony Liguori [this message]
2010-01-05 12:01 ` [Qemu-devel] [PATCH 2/8] virtio-console: qdev conversion, new virtio-serial-bus Amit Shah
2010-01-19 19:06 [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports Amit Shah
2010-01-19 19:06 ` [Qemu-devel] [PATCH 1/8] virtio: Remove duplicate macro definition for max. virtqueues, bump up the max Amit Shah
2010-01-19 19:06 ` [Qemu-devel] [PATCH 2/8] virtio-console: qdev conversion, new virtio-serial-bus Amit Shah
-- strict thread matches above, loose matches on Subject: below --
2010-01-14 13:17 [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports Amit Shah
2010-01-14 13:17 ` [Qemu-devel] [PATCH 1/8] virtio: Remove duplicate macro definition for max. virtqueues, bump up the max Amit Shah
2010-01-14 13:17 ` [Qemu-devel] [PATCH 2/8] virtio-console: qdev conversion, new virtio-serial-bus Amit Shah
2010-01-07 7:31 [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports Amit Shah
2010-01-07 7:31 ` [Qemu-devel] [PATCH 1/8] virtio: Remove duplicate macro definition for max. virtqueues, bump up the max Amit Shah
2010-01-07 7:31 ` [Qemu-devel] [PATCH 2/8] virtio-console: qdev conversion, new virtio-serial-bus Amit Shah
2010-01-04 17:34 [Qemu-devel] [PATCH 0/8] virtio-console: Move to qdev, multiple devices, generic ports Amit Shah
2010-01-04 17:34 ` [Qemu-devel] [PATCH 1/8] virtio: Remove duplicate macro definition for max. virtqueues, bump up the max Amit Shah
2010-01-04 17:34 ` [Qemu-devel] [PATCH 2/8] virtio-console: qdev conversion, new virtio-serial-bus Amit Shah
2010-01-05 16:42 ` Anthony Liguori
2010-01-05 17:04 ` Gerd Hoffmann
2010-01-05 17:08 ` Anthony Liguori
2010-01-05 17:16 ` Amit Shah
2010-01-05 17:25 ` Anthony Liguori
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=4B4253C2.6080508@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=agraf@suse.de \
--cc=amit.shah@redhat.com \
--cc=armbru@redhat.com \
--cc=kraxel@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).