On Mon, Feb 07, 2011 at 07:12:52AM -0600, Anthony Liguori wrote: > On 02/07/2011 05:03 AM, Alon Levy wrote: > >Hi, > > > > I have a v19 waiting to be sent, but it's basically the same just > >with patches folded were appropriate, and the fixes Markus pointed > >out for the Enumeration property type. > > > > I guess I'll wait a little longer for more feedback? Should I split > >the enum property separately? it's only used by ccid-card-emualted atm. > > The only non-cosmetic concern I have about your series is the enum > property so I would strongly suggest splitting it. If you did that > for v19, it will be pretty close to merge ready. >
Eric, How does this affect libvirt? could you assume a default set of backends if "-device ccid-card-emulated,?" returns "backend=string" instead of "backend=A/B" ? Alon > Regards, > > Anthony Liguori > > >Alon > > > >On Fri, Feb 04, 2011 at 12:45:36AM +0200, Alon Levy wrote: > >>This patchset adds three new devices, usb-ccid, ccid-card-passthru and > >>ccid-card-emulated, providing a CCID bus, a simple passthru protocol > >>implementing card requiring a client, and a standalone emulated card. > >> > >>It also introduces a new directory libcaccard with CAC card emulation, > >>CAC is a type of ISO 7816 smart card. > >> > >>Tree for pull: git://anongit.freedesktop.org/~alon/qemu usb_ccid.v18 > >> > >>v17-v18 changes: > >> * merge vscard_common.h patches. > >> * actually provide a tree to pull. > >> > >>v16-v17 changes: > >> * merged all the "v15->v16" patches > >> * merged some more wherever it was easy (all same file commits). > >> * added signed off by to first four patches > >> * ccid.h: added copyright, removed underscore in defines, and replaced > >> non C89 comments > >> > >>v15-v16 changes: > >> * split vscard_common introducing patch for ease of review > >> * sum of commit logs for the v15-v16 commits: (whitespace fixes > >> removed for space, see original commit messages in later patches) > >> * usb-ccid: > >> * fix abort on client answer after card remove > >> * enable migration > >> * remove side affect code from asserts > >> * return consistent self-powered state > >> * mask out reserved bits in ccid_set_parameters > >> * add missing abRFU in SetParameters (no affect on linux guest) > >> * vscard_common.h protocol change: > >> * VSCMsgInit capabilities and magic > >> * removed ReaderResponse, will use Error instead with code==VSC_SUCCESS. > >> * added Flush and FlushComplete, remove Reconnect. > >> * define VSCARD_MAGIC > >> * added error code VSC_SUCCESS. > >> * ccid-card-passthru > >> * return correct size > >> * return error instead of assert if client sent too large ATR > >> * don't assert if client sent too large a size, but add asserts for > >> indices to buffer > >> * reset vscard_in indices on chardev disconnect > >> * handle init from client > >> * error if no chardev supplied > >> * use ntoh, hton > >> * eradicate reader_id_t > >> * remove Reconnect usage (removed from VSCARD protocol) > >> * send VSC_SUCCESS on card insert/remove and reader add/remove > >> * ccid-card-emulated > >> * fix error reporting in initfn > >> > >>v14-v15 changes: > >> * add patch with --enable-smartcard and --disable-smartcard and only > >> disable ccid-card-emulated if nss not found. > >> * add patch with description strings > >> * s/libcaccard/libcacard/ in docs/ccid.txt > >> > >>v13-v14 changes: > >> - support device_del/device_add on ccid-card-* and usb-ccid > >> * usb-ccid: > >> * lose card reference when card device deleted > >> * check slot number and deny adding a slot if one is already added. > >> * ccid-card-*: use qdev_simple_unplug_cb in both emulated and passthru > >> ccid cards, > >> the exitfn already takes care of triggering card removal in the usb dev. > >> * libcacard: > >> * remove double include of config-host.mak > >> * add replay of card events to libcacard to support second and more > >> emulation > >> * don't initialize more then once (doesn't support it right now, so one > >> thread, NSS thread, is left when device_del is done) > >> * add VCARD_EMUL_INIT_ALREADY_INITED > >> * ccid-card-emulated: > >> * take correct mutexes on signaling to fix deadlocks on device_del > >> * allow card insertion/removal event without proper reader insertion > >> event > >> > >>v12-v13 changes: > >> * libcacard: > >> * fix Makefile clean to remove vscclient > >> * fix double include of config-host in Makefile > >> * usb-ccid: remove attach/detach logic, usb is always attached. Guest > >> doesn't care if there is a reader attached with no card anyway. > >> * ccid-card-passthru: don't close chr_dev on removal, makes it possible > >> to use device_del/device_add to create remove/insertion for debugging. > >> > >>v11-v12 changes: > >> * fix out of tree build > >> > >>v10-v11 changes: > >> * fix last patch that removed one of the doc files. > >> * updated flow table in docs/ccid.txt > >> > >>v8-v10 changes: > >> * usb-ccid: > >> * add slot for future use (Gerd) > >> * ifdef ENABLE_MIGRATION for migration support on account of usb > >> migration not being ready in general. (Gerd) > >> * verbosified commit messages. (Gerd) > >> * put libcacard docs in libcacard commit. (Gerd) > >> > >>v8-v9 changes: > >> * Blue Swirl comments: > >> * white space fixes > >> * enabled by default, disabled only if missing nss > >> * forgotten fix from v8 (don't build libcacard.so) > >> * added a note about device being little endian > >> * library renamed from libcaccard to libcacard > >> * squashed both of libcacard patches, they touched different files anyway. > >> > >>v7-v8 changes: > >> * Blue Swirl comments: > >> * usb-ccid: deannonymize some structs > >> * usb-ccid: coding style change - answer_t and bulk_in_t fixed > >> * usb-ccid: handle endianess conversion between guest and host > >> * usb-ccid: s/ccid_bulk_in_copy_out/ccid_bulk_in_copy_to_guest/ > >> * ccid-card-emulated: fix segfault if backend not specified > >> * ccid-card-emulated: let last reader inserted win > >> * libcaccard: remove double vscard_common.h > >> > >>v6->v7 changes: > >> * external libcaccard became internal directory libcaccard > >> * statically link object files into qemu > >> * produce libcaccard.so for usage by external projects > >> * applied coding style to new code (please check me) > >> - did not use the qemu options parsing for libcaccard, since > >> it seems to draw large amounts of qemu code (monitor for instance). > >> > >>v5->v6 changes: > >> * really remove static debug (I apologize for claiming to have done so > >> before) > >> > >>v4->v5 changes: > >> * rebased to latest > >> * remove static debug in card devices > >> * fix --enable-smartcard to link > >> * stall instead of assert when exceeding BULK_OUT_DATA_SIZE > >> * make ccid_reserve_recv_buf for too large len discard message, not exit > >> * make ccid_reserve_recv_buf return void* > >> * fix typo > >> * remove commented code in VMState > >> > >>v3->v4: > >> * remove ccid field in CCIDBus > >> * remove static debug in bus > >> * add back docs > >> > >>v2->v3: > >> * split into bus (usb-ccid.c, uses ccid.h) and card > >> (ccid-card-passthru.c). > >> * removed documentation (being revised). > >> > >>v1->v2: > >> * 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. > >> > >>Alon Levy (15): > >> qdev: add print_options callback > >> qdev: add data pointer to Property > >> qdev-properties: add PROP_TYPE_ENUM > >> qdev-properties: parse_enum: don't cast a void* > >> usb-ccid: add CCID bus > >> introduce libcacard/vscard_common.h > >> ccid: add passthru card device > >> ccid: add ccid-card-emulated device (v2) > >> ccid: add docs > >> ccid: configure: add --enable/disable and nss only disable > >> ccid: add qdev description strings > >> smartcard,configure: add --enable-smartcard-nss, report only nss > >> smartcard,configure: report only nss > >> ccid-card-emulated: don't link with NSS if --disable-smartcard-nss > >> ccid.h: add copyright, fix define and remove non C89 comments > >> > >>Robert Relyea (1): > >> libcacard: initial commit > >> > >> Makefile | 6 +- > >> Makefile.objs | 7 + > >> Makefile.target | 2 + > >> configure | 60 ++ > >> docs/ccid.txt | 135 +++++ > >> docs/libcacard.txt | 483 +++++++++++++++ > >> hw/ccid-card-emulated.c | 551 ++++++++++++++++++ > >> hw/ccid-card-passthru.c | 329 +++++++++++ > >> hw/ccid.h | 51 ++ > >> hw/qdev-properties.c | 60 ++ > >> hw/qdev.c | 10 +- > >> hw/qdev.h | 17 + > >> hw/usb-ccid.c | 1353 > >> +++++++++++++++++++++++++++++++++++++++++++ > >> libcacard/Makefile | 14 + > >> libcacard/cac.c | 411 +++++++++++++ > >> libcacard/cac.h | 20 + > >> libcacard/card_7816.c | 780 +++++++++++++++++++++++++ > >> libcacard/card_7816.h | 60 ++ > >> libcacard/card_7816t.h | 163 ++++++ > >> libcacard/event.c | 112 ++++ > >> libcacard/eventt.h | 28 + > >> libcacard/link_test.c | 20 + > >> libcacard/mutex.h | 59 ++ > >> libcacard/passthru.c | 612 +++++++++++++++++++ > >> libcacard/passthru.h | 50 ++ > >> libcacard/vcard.c | 350 +++++++++++ > >> libcacard/vcard.h | 85 +++ > >> libcacard/vcard_emul.h | 62 ++ > >> libcacard/vcard_emul_nss.c | 1192 +++++++++++++++++++++++++++++++++++++ > >> libcacard/vcard_emul_type.c | 60 ++ > >> libcacard/vcard_emul_type.h | 29 + > >> libcacard/vcardt.h | 66 +++ > >> libcacard/vevent.h | 26 + > >> libcacard/vreader.c | 526 +++++++++++++++++ > >> libcacard/vreader.h | 54 ++ > >> libcacard/vreadert.h | 23 + > >> libcacard/vscard_common.h | 167 ++++++ > >> libcacard/vscclient.c | 743 ++++++++++++++++++++++++ > >> 38 files changed, 8773 insertions(+), 3 deletions(-) > >> create mode 100644 docs/ccid.txt > >> create mode 100644 docs/libcacard.txt > >> create mode 100644 hw/ccid-card-emulated.c > >> create mode 100644 hw/ccid-card-passthru.c > >> create mode 100644 hw/ccid.h > >> create mode 100644 hw/usb-ccid.c > >> create mode 100644 libcacard/Makefile > >> create mode 100644 libcacard/cac.c > >> create mode 100644 libcacard/cac.h > >> create mode 100644 libcacard/card_7816.c > >> create mode 100644 libcacard/card_7816.h > >> create mode 100644 libcacard/card_7816t.h > >> create mode 100644 libcacard/event.c > >> create mode 100644 libcacard/eventt.h > >> create mode 100644 libcacard/link_test.c > >> create mode 100644 libcacard/mutex.h > >> create mode 100644 libcacard/passthru.c > >> create mode 100644 libcacard/passthru.h > >> create mode 100644 libcacard/vcard.c > >> create mode 100644 libcacard/vcard.h > >> create mode 100644 libcacard/vcard_emul.h > >> create mode 100644 libcacard/vcard_emul_nss.c > >> create mode 100644 libcacard/vcard_emul_type.c > >> create mode 100644 libcacard/vcard_emul_type.h > >> create mode 100644 libcacard/vcardt.h > >> create mode 100644 libcacard/vevent.h > >> create mode 100644 libcacard/vreader.c > >> create mode 100644 libcacard/vreader.h > >> create mode 100644 libcacard/vreadert.h > >> create mode 100644 libcacard/vscard_common.h > >> create mode 100644 libcacard/vscclient.c > >> > >>-- > >>1.7.4 > >> > >> > >