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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.