From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=36801 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q1f9p-0006fR-6P for qemu-devel@nongnu.org; Mon, 21 Mar 2011 09:28:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q1f9m-0002K5-Rr for qemu-devel@nongnu.org; Mon, 21 Mar 2011 09:28:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:12581) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q1f9m-0002K0-5j for qemu-devel@nongnu.org; Mon, 21 Mar 2011 09:28:26 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p2LDSOga001752 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 21 Mar 2011 09:28:24 -0400 Message-ID: <4D875316.8060804@redhat.com> Date: Mon, 21 Mar 2011 14:31:02 +0100 From: Hans de Goede MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v21 00/11] usb-ccid References: <1300373376-13890-1-git-send-email-alevy@redhat.com> In-Reply-To: <1300373376-13890-1-git-send-email-alevy@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alon Levy Cc: Jes.Sorensen@redhat.com, qemu-devel@nongnu.org Ack series Acked-by: Hans de Goede On 03/17/2011 03:49 PM, 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.v20 > > v20->v21 changes: > * all: cosmetics > * libcacard, ccid-card-passthru: > * use qemu-{malloc,free} and qemu-thread, error_report > * libcacard: > * split to multiple patches > > v19->v20 changes: > * checkpatch.pl. Here are the remaining errors with explanation: > * ignored 5 macro errors of the type > "ERROR: Macros with complex values should be enclosed in parenthesis" > because fixing them breaks current code, if it really bothers someone > I can fix it. > * four of them are in libcacard/card_7816t.h: > /* give the subfields a unified look */ > .. > #define a_cla a_header->ah_cla /* class */ > #define a_ins a_header->ah_ins /* instruction */ > #define a_p1 a_header->ah_p1 /* parameter 1 */ > #define a_p2 a_header->ah_p2 /* parameter 2 */ > * and the fifth: > #4946: FILE: libcacard/vcardt.h:31: > +#define VCARD_ATR_PREFIX(size) 0x3b, 0x66+(size), 0x00, 0xff, \ > + 'V', 'C', 'A', 'R', 'D', '_' > * Ignored this warning since I couldn't figure it out, and it's a test > file: > WARNING: externs should be avoided in .c files > #2343: FILE: libcacard/link_test.c:7: > +VCardStatus cac_card_init(const char *flags, VCard *card, > > v18-v19 changes: > * more merges, down to a single digit number of patches. > * drop enumeration property, use string. > * rebased (trivial) > > 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 (7): > trace: move trace objects from Makefile to Makefile.objs > qemu-thread.h: include inttypes.h > usb-ccid: add CCID bus > introduce libcacard/vscard_common.h > ccid: add passthru card device > ccid: add ccid-card-emulated device > ccid: add docs > > Robert Relyea (4): > libcacard: initial commit > libcacard: add vscclient > libcacard: add passthru > libcacard: add docs > > Makefile | 38 +- > Makefile.objs | 39 ++ > Makefile.target | 2 + > configure | 60 ++ > docs/ccid.txt | 135 ++++ > docs/libcacard.txt | 483 +++++++++++++++ > hw/ccid-card-emulated.c | 595 ++++++++++++++++++ > hw/ccid-card-passthru.c | 341 +++++++++++ > hw/ccid.h | 59 ++ > hw/usb-ccid.c | 1419 +++++++++++++++++++++++++++++++++++++++++++ > libcacard/Makefile | 22 + > libcacard/cac.c | 406 ++++++++++++ > libcacard/cac.h | 23 + > libcacard/card_7816.c | 763 +++++++++++++++++++++++ > libcacard/card_7816.h | 62 ++ > libcacard/card_7816t.h | 165 +++++ > libcacard/event.c | 108 ++++ > libcacard/eventt.h | 29 + > libcacard/link_test.c | 21 + > libcacard/passthru.c | 609 +++++++++++++++++++ > libcacard/passthru.h | 53 ++ > libcacard/vcard.c | 341 +++++++++++ > libcacard/vcard.h | 86 +++ > libcacard/vcard_emul.h | 65 ++ > libcacard/vcard_emul_nss.c | 1159 +++++++++++++++++++++++++++++++++++ > libcacard/vcard_emul_type.c | 63 ++ > libcacard/vcard_emul_type.h | 32 + > libcacard/vcardt.h | 64 ++ > libcacard/vevent.h | 27 + > libcacard/vreader.c | 519 ++++++++++++++++ > libcacard/vreader.h | 55 ++ > libcacard/vreadert.h | 24 + > libcacard/vscard_common.h | 178 ++++++ > libcacard/vscclient.c | 746 +++++++++++++++++++++++ > qemu-thread.h | 2 + > 35 files changed, 8759 insertions(+), 34 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/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 >