From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=36455 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PcZkQ-0000QY-SQ for qemu-devel@nongnu.org; Tue, 11 Jan 2011 03:38:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PcZkP-0000ld-6H for qemu-devel@nongnu.org; Tue, 11 Jan 2011 03:38:34 -0500 Received: from mx1.redhat.com ([209.132.183.28]:22554) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PcZkO-0000lF-Sj for qemu-devel@nongnu.org; Tue, 11 Jan 2011 03:38:33 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id p0B8cVVE010103 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 11 Jan 2011 03:38:31 -0500 Received: from playa.redhat.com ([10.3.112.19]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p0B8cMTT028757 for ; Tue, 11 Jan 2011 03:38:26 -0500 From: Alon Levy Date: Tue, 11 Jan 2011 10:38:06 +0200 Message-Id: <1294735094-3636-1-git-send-email-alevy@redhat.com> Subject: [Qemu-devel] [PATCH 0/7] usb-ccid (v14) List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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.v14 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 (6): usb-ccid: add CCID bus 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 Robert Relyea (1): libcacard: initial commit after coding style fixes Makefile | 6 +- Makefile.objs | 7 + Makefile.target | 2 + configure | 48 ++ docs/ccid.txt | 135 +++++ docs/libcacard.txt | 483 +++++++++++++++ hw/ccid-card-emulated.c | 535 +++++++++++++++++ hw/ccid-card-passthru.c | 273 +++++++++ hw/ccid.h | 35 ++ hw/usb-ccid.c | 1356 +++++++++++++++++++++++++++++++++++++++++++ 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/config.h | 81 +++ 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 | 1171 +++++++++++++++++++++++++++++++++++++ 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 | 130 ++++ libcacard/vscclient.c | 710 ++++++++++++++++++++++ 36 files changed, 8580 insertions(+), 2 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/config.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.3.4