From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfZZi-0003rU-Iz for qemu-devel@nongnu.org; Thu, 23 May 2013 13:45:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfZZg-0006lM-I0 for qemu-devel@nongnu.org; Thu, 23 May 2013 13:45:14 -0400 Received: from e9.ny.us.ibm.com ([32.97.182.139]:49788) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfZZg-0006PQ-Bv for qemu-devel@nongnu.org; Thu, 23 May 2013 13:45:12 -0400 Received: from /spool/local by e9.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 23 May 2013 13:44:53 -0400 Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by d01dlp01.pok.ibm.com (Postfix) with ESMTP id EDAAC38C8042 for ; Thu, 23 May 2013 13:44:50 -0400 (EDT) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r4NHipKL29032518 for ; Thu, 23 May 2013 13:44:51 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r4NHiocb015526 for ; Thu, 23 May 2013 14:44:51 -0300 From: Corey Bryant Date: Thu, 23 May 2013 13:44:40 -0400 Message-Id: <1369331087-22345-1-git-send-email-coreyb@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 0/7] VNVRAM persistent storage List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, aliguori@us.ibm.com, stefanb@linux.vnet.ibm.com, Corey Bryant , mdroth@linux.vnet.ibm.com, lcapitulino@redhat.com, jschopp@linux.vnet.ibm.com, stefanha@redhat.com This patch series provides VNVRAM persistent storage support that QEMU can use internally. The initial target user will be a software vTPM 1.2 backend that needs to store keys in VNVRAM and be able to reboot/migrate and retain the keys. This support uses QEMU's block driver to provide persistent storage by reading/writing VNVRAM data from/to a drive image. The VNVRAM drive image is provided with the -drive command line option just like any other drive image and the vnvram_create() API will find it. The APIs allow for VNVRAM entries to be registered, one at a time, each with a maximum blob size. Entry blobs can then be read/written from/to an entry on the drive. Here's an example of usage: VNVRAM *vnvram; int errcode const VNVRAMEntryName entry_name; const char *blob_w = "blob data"; char *blob_r; uint32_t blob_r_size; vnvram = vnvram_create("drive-ide0-0-0", false, &errcode); strcpy((char *)entry_name, "first-entry"); vnvram_register_entry(vnvram, &entry_name, 1024); vnvram_write_entry(vnvram, &entry_name, (char *)blob_w, strlen(blob_w)+1); vnvram_read_entry(vnvram, &entry_name, &blob_r, &blob_r_size); vnvram_delete(vnvram); Thanks, Corey Corey Bryant (7): vnvram: VNVRAM bdrv support vnvram: VNVRAM in-memory support vnvram: VNVRAM bottom-half r/w scheduling support vnvram: VNVRAM internal APIs vnvram: VNVRAM additional debug support main: Initialize VNVRAM monitor: QMP/HMP support for retrieving VNVRAM details Makefile.objs | 2 + hmp.c | 32 ++ hmp.h | 1 + monitor.c | 7 + qapi-schema.json | 47 ++ qmp-commands.hx | 41 ++ vl.c | 6 + vnvram.c | 1254 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ vnvram.h | 36 ++ 9 files changed, 1426 insertions(+), 0 deletions(-) create mode 100644 vnvram.c create mode 100644 vnvram.h