qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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
>>>
>>>
>>>        

  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 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).