From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44567) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpwhB-0001MZ-BF for qemu-devel@nongnu.org; Fri, 30 Sep 2016 08:13:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bpwhA-0007WX-AR for qemu-devel@nongnu.org; Fri, 30 Sep 2016 08:13:41 -0400 From: Fam Zheng Date: Fri, 30 Sep 2016 20:10:03 +0800 Message-Id: <1475237406-26917-34-git-send-email-famz@redhat.com> In-Reply-To: <1475237406-26917-1-git-send-email-famz@redhat.com> References: <1475237406-26917-1-git-send-email-famz@redhat.com> Subject: [Qemu-devel] [PATCH v8 33/36] nand: Add 'lock-mode' property List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: berrange@redhat.com, John Snow , qemu-block@nongnu.org, Kevin Wolf , rjones@redhat.com, Jeff Cody , Max Reitz , Markus Armbruster , stefanha@redhat.com, den@openvz.org, pbonzini@redhat.com, eblake@redhat.com Signed-off-by: Fam Zheng --- hw/block/nand.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/block/nand.c b/hw/block/nand.c index c69e675..75b5a68 100644 --- a/hw/block/nand.c +++ b/hw/block/nand.c @@ -64,6 +64,7 @@ struct NANDFlashState { int page_shift, oob_shift, erase_shift, addr_shift; uint8_t *storage; BlockBackend *blk; + ImageLockMode lock_mode; int mem_oob; uint8_t cle, ale, ce, wp, gnd; @@ -373,6 +374,7 @@ static void nand_realize(DeviceState *dev, Error **errp) { int pagesize; NANDFlashState *s = NAND(dev); + Error *local_err = NULL; s->buswidth = nand_flash_ids[s->chip_id].width >> 3; s->size = nand_flash_ids[s->chip_id].size << 20; @@ -407,6 +409,11 @@ static void nand_realize(DeviceState *dev, Error **errp) error_setg(errp, "Can't use a read-only drive"); return; } + blk_lock_image(s->blk, s->lock_mode, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } if (blk_getlength(s->blk) >= (s->pages << s->page_shift) + (s->pages << s->oob_shift)) { pagesize = 0; @@ -427,6 +434,7 @@ static Property nand_properties[] = { DEFINE_PROP_UINT8("manufacturer_id", NANDFlashState, manf_id, 0), DEFINE_PROP_UINT8("chip_id", NANDFlashState, chip_id, 0), DEFINE_PROP_DRIVE("drive", NANDFlashState, blk), + DEFINE_PROP_LOCK_MODE("lock-mode", NANDFlashState, lock_mode), DEFINE_PROP_END_OF_LIST(), }; -- 2.7.4