From: Anthony Liguori <anthony@codemonkey.ws>
To: Alon Levy <alevy@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 0/2] usb-ccid device (v2)
Date: Tue, 12 Oct 2010 11:21:24 -0500 [thread overview]
Message-ID: <4CB48B04.6040905@codemonkey.ws> (raw)
In-Reply-To: <1218420653.213741286899380859.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com>
On 10/12/2010 11:03 AM, Alon Levy wrote:
> ----- "Anthony Liguori"<anthony@codemonkey.ws> wrote:
>
>
>> On 10/12/2010 07:58 AM, Alon Levy wrote:
>>
>>> This patch adds a new device, it is described in full in the second
>>>
>> patch
>>
>>> intro and also in the documentation in docs. In brief it provides a
>>>
>> standard
>>
>>> smart card reader device.
>>>
>>> The first patch is the configure change and docs.
>>> The second patch contains the actual device, I couldn't figure out a
>>>
>> good
>>
>>> way to split it to ease review.
>>>
>>> v2 changed:
>>> * all QSIMPLEQ turned into fixed sized rings
>>> * all allocated buffers turned into fixed size buffers
>>> * added migration support
>>> * added a message to tell client qemu has migrated to ip:port
>>> * for lack of monitor commands ip:port are 0:0, which causes the
>>>
>> updated
>>
>>> vscclient to connect to one port higher on the same host. will
>>>
>> add monitor
>>
>>> commands in a separate patch. tested with current setup.
>>>
>>>
>> This is way too much magic to live within a device. Devices manage
>> reconnecting themselves during migration. When you create the
>> destination qemu instance, you specify what to connect to.
>>
>> IOW,
>>
>> On the source:
>>
>> qemu -chardev tcp:localhost:1025,id=foo -usbdevice ccid,chardev=foo
>> ...
>>
>> On the destination:
>>
>> qemu -chardev tcp:localhost:1026,id=foo -usbdevice ccid,chardev=foo
>> -incoming tcp:0.0.0.0:1024 ...
>>
>> A connection happens when the device is created.
>>
>> But now I'm even further confused then when I first reviewed it.. If
>>
>> you're now supporting migration, does that mean that you're relying on
>>
>> the daemon to emulate the device?
>>
>>
> Let me try to clarify this. Nothing has changed since the last patch except
> for what's in the notes, i.e. migration support. The device I'm adding is a
> reader. The reader is just a pipe between smart cards and the guest operating
> system. The smart card logic does live outside of this device, and is available
> in the cac_card sources at http://cgit.freedesktop.org/~alon/cac_card/ (all of
> this is in docs/usb_ccid.txt).
>
> So when I speak of vscclient, I'm talking of an application that emulates a smart
> card and initiates a tcp connection to qemu that connects to the usb-ccid device.
> vscclient is also in the cac_card sources.
>
Okay, let me be clear. We shouldn't be doing device emulation outside
of QEMU's source tree--at least, not in this type of context. External
devices present a great deal of challenges and we shouldn't just
approach it in an ad-hoc fashion.
I'm not opposed to passthrough although I'd prefer QEMU to talk to the
device directly instead of going through a daemon.
There's a lot of delicate integration between QEMU and a device and if a
device lives outside of QEMU, it makes it extremely difficult for us to
influence changes to that device to support QEMU new features.
> Regarding the method of reconnection: You are absolutely right that if I have qemu
> connect to the remote instead of the other way around then I remove the need to inform
> vscclient of the new address. But the way it stands requires the client to know the
> address of the destination qemu. I have to inform it somehow. You are saying that
> devices shouldn't know this information? ok, that's why I talked about monitor commands.
> I come from the world of spice - in spice we use monitor commands for this.
And none of that is upstream.
Regards,
Anthony Liguori
> I could
> change this to have qemu connect to vscclient, but I don't see the logic in general -
> sometimes you do want to have a chardev that is listening (the fact that it is implemented
> suggests someone found it useful), if you then migrate you have the same problem I'm
> solving.
>
>
>> Regards,
>>
>> Anthony Liguori
>>
>>
>>> Alon Levy (2):
>>> usb-ccid: add CCID device. add configure option.
>>> usb-ccid: add CCID device (device itself)
>>>
>>> Makefile.objs | 1 +
>>> configure | 12 +
>>> docs/usb-ccid.txt | 115 +++++
>>> hw/usb-ccid.c | 1376
>>>
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>
>>> hw/vscard_common.h | 131 +++++
>>> 5 files changed, 1635 insertions(+), 0 deletions(-)
>>> create mode 100644 docs/usb-ccid.txt
>>> create mode 100644 hw/usb-ccid.c
>>> create mode 100644 hw/vscard_common.h
>>>
>>>
>>>
next prev parent reply other threads:[~2010-10-12 16:21 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1045788737.212361286898758903.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com>
2010-10-12 16:03 ` [Qemu-devel] [PATCH 0/2] usb-ccid device (v2) Alon Levy
2010-10-12 16:21 ` Anthony Liguori [this message]
2010-10-14 18:37 Robert Relyea
2010-10-14 18:52 ` Anthony Liguori
2010-10-14 22:03 ` Robert Relyea
2010-10-14 22:16 ` Anthony Liguori
2010-10-15 0:16 ` Robert Relyea
[not found] <593949580.216281286900989465.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com>
2010-10-12 16:43 ` Alon Levy
2010-10-12 16:49 ` Anthony Liguori
2010-10-12 17:09 ` Alon Levy
2010-10-12 18:23 ` Anthony Liguori
2010-10-13 11:54 ` Alon Levy
-- strict thread matches above, loose matches on Subject: below --
2010-10-12 12:58 Alon Levy
2010-10-12 13:24 ` 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=4CB48B04.6040905@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=alevy@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.