From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DC834C433E1 for ; Mon, 29 Jun 2020 19:06:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C298C206F1 for ; Mon, 29 Jun 2020 19:06:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593457610; bh=JUmth+pDiBWP+P3C9nrMBUIQyb4DiHFbp+GhDbhmX3s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=ZJpjQ/SZgjQcKIaSEECdOrP482F3hxNXm4KawiTTiGN8Poj3PXXps9vnqQeE45KsI IFPBnM8Xj54PPB0Ka3z3SxDqUksjxAVif3/Ts6RpW5QWYiH0UnMgcXrtUzWI70aRKw 23l9FEo0UuQmwmRMzhpIkhBMRJxgUkk/wMfJ0/iY= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730789AbgF2TGt (ORCPT ); Mon, 29 Jun 2020 15:06:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:49440 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730257AbgF2TGr (ORCPT ); Mon, 29 Jun 2020 15:06:47 -0400 Received: from dhcp-10-100-145-180.wdl.wdc.com (unknown [199.255.45.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3C3B5206A5; Mon, 29 Jun 2020 19:06:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593457606; bh=JUmth+pDiBWP+P3C9nrMBUIQyb4DiHFbp+GhDbhmX3s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=whB+pnc82GwjgBknMFrZPWuwbY4aNzrrZt4nTJOnQnH1uKcexJrIMvbAcPS7Jaul9 UCVsAmktqMbPhABMPSE8sLpW5O4/CmYWiMWclEXOEh5r50Hk7Tqax/wOBOD/ntYbx6 K3OIb0Qv6+7/6fRePPOX1Cu442oqNbLcXBIDV+9M= From: Keith Busch To: linux-nvme@lists.infradead.org, hch@lst.de, sagi@grimberg.me, linux-block@vger.kernel.org Cc: axboe@kernel.dk, =?UTF-8?q?Matias=20Bj=C3=B8rling?= , Chaitanya Kulkarni , =?UTF-8?q?Javier=20Gonz=C3=A1lez?= , Daniel Wagner , Johannes Thumshirn , "Martin K . Petersen" , Hannes Reinecke Subject: [PATCHv4 1/5] block: add capacity field to zone descriptors Date: Mon, 29 Jun 2020 12:06:37 -0700 Message-Id: <20200629190641.1986462-2-kbusch@kernel.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200629190641.1986462-1-kbusch@kernel.org> References: <20200629190641.1986462-1-kbusch@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org From: Matias Bjørling In the zoned storage model, the sectors within a zone are typically all writeable. With the introduction of the Zoned Namespace (ZNS) Command Set in the NVM Express organization, the model was extended to have a specific writeable capacity. Extend the zone descriptor data structure with a zone capacity field to indicate to the user how many sectors in a zone are writeable. Introduce backward compatibility in the zone report ioctl by extending the zone report header data structure with a flags field to indicate if the capacity field is available. Reviewed-by: Jens Axboe Reviewed-by: Chaitanya Kulkarni Reviewed-by: Javier González Reviewed-by: Daniel Wagner Reviewed-by: Johannes Thumshirn Reviewed-by: Martin K. Petersen Reviewed-by: Hannes Reinecke Signed-off-by: Matias Bjørling --- block/blk-zoned.c | 1 + drivers/block/null_blk_zoned.c | 2 ++ drivers/scsi/sd_zbc.c | 1 + include/uapi/linux/blkzoned.h | 15 +++++++++++++-- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/block/blk-zoned.c b/block/blk-zoned.c index 23831fa8701d..81152a260354 100644 --- a/block/blk-zoned.c +++ b/block/blk-zoned.c @@ -312,6 +312,7 @@ int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, return ret; rep.nr_zones = ret; + rep.flags = BLK_ZONE_REP_CAPACITY; if (copy_to_user(argp, &rep, sizeof(struct blk_zone_report))) return -EFAULT; return 0; diff --git a/drivers/block/null_blk_zoned.c b/drivers/block/null_blk_zoned.c index cc47606d8ffe..624aac09b005 100644 --- a/drivers/block/null_blk_zoned.c +++ b/drivers/block/null_blk_zoned.c @@ -47,6 +47,7 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) zone->start = sector; zone->len = dev->zone_size_sects; + zone->capacity = zone->len; zone->wp = zone->start + zone->len; zone->type = BLK_ZONE_TYPE_CONVENTIONAL; zone->cond = BLK_ZONE_COND_NOT_WP; @@ -59,6 +60,7 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) zone->start = zone->wp = sector; zone->len = dev->zone_size_sects; + zone->capacity = zone->len; zone->type = BLK_ZONE_TYPE_SEQWRITE_REQ; zone->cond = BLK_ZONE_COND_EMPTY; diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c index 6f7eba66687e..183a20720da9 100644 --- a/drivers/scsi/sd_zbc.c +++ b/drivers/scsi/sd_zbc.c @@ -59,6 +59,7 @@ static int sd_zbc_parse_report(struct scsi_disk *sdkp, u8 *buf, zone.non_seq = 1; zone.len = logical_to_sectors(sdp, get_unaligned_be64(&buf[8])); + zone.capacity = zone.len; zone.start = logical_to_sectors(sdp, get_unaligned_be64(&buf[16])); zone.wp = logical_to_sectors(sdp, get_unaligned_be64(&buf[24])); if (zone.type != ZBC_ZONE_TYPE_CONV && diff --git a/include/uapi/linux/blkzoned.h b/include/uapi/linux/blkzoned.h index 0cdef67135f0..42c3366cc25f 100644 --- a/include/uapi/linux/blkzoned.h +++ b/include/uapi/linux/blkzoned.h @@ -73,6 +73,15 @@ enum blk_zone_cond { BLK_ZONE_COND_OFFLINE = 0xF, }; +/** + * enum blk_zone_report_flags - Feature flags of reported zone descriptors. + * + * @BLK_ZONE_REP_CAPACITY: Zone descriptor has capacity field. + */ +enum blk_zone_report_flags { + BLK_ZONE_REP_CAPACITY = (1 << 0), +}; + /** * struct blk_zone - Zone descriptor for BLKREPORTZONE ioctl. * @@ -99,7 +108,9 @@ struct blk_zone { __u8 cond; /* Zone condition */ __u8 non_seq; /* Non-sequential write resources active */ __u8 reset; /* Reset write pointer recommended */ - __u8 reserved[36]; + __u8 resv[4]; + __u64 capacity; /* Zone capacity in number of sectors */ + __u8 reserved[24]; }; /** @@ -115,7 +126,7 @@ struct blk_zone { struct blk_zone_report { __u64 sector; __u32 nr_zones; - __u8 reserved[4]; + __u32 flags; struct blk_zone zones[0]; }; -- 2.24.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B0E9C433E6 for ; Mon, 29 Jun 2020 19:06:58 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 60A6220663 for ; Mon, 29 Jun 2020 19:06:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fdciM6lC"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="whB+pnc8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 60A6220663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ez+fJ/ByBccZFu/9TVnKteUMH5ufkJxr58wB0Qg/dZI=; b=fdciM6lCPhFWHD7xWqKM1Nbdo q55AOjigZcLH2ForJ2DBvPSb4E1PXT9Tl2aCbueq2OCRewhWzqh5y+aSaEhuTJRvEsG7avR7KuCQB GFlzB/+qtu0tvR2ccHYwlVYRI1/ZJKNyK81lLWfhfg+duUpOEIJqjpeTMqLdFvR+TJ6MtzYcDM22T 460PV9aglZ4PR4mdm4k3gs2YzXl7Qhqj9NRjEj2BRWNDJxIoNndy1DezL+EKPhvUXhX9YgOeiFoEK xAli598QM26drp9geWoUCyRTO4E0bpgwx9bUYJhtNw5E9+JsUrj8MDT+2U/dY427oiH0YGFTrMPUX b03Y4crYA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jpz7B-0006q5-0Y; Mon, 29 Jun 2020 19:06:49 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jpz78-0006pX-I6 for linux-nvme@lists.infradead.org; Mon, 29 Jun 2020 19:06:47 +0000 Received: from dhcp-10-100-145-180.wdl.wdc.com (unknown [199.255.45.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3C3B5206A5; Mon, 29 Jun 2020 19:06:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593457606; bh=JUmth+pDiBWP+P3C9nrMBUIQyb4DiHFbp+GhDbhmX3s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=whB+pnc82GwjgBknMFrZPWuwbY4aNzrrZt4nTJOnQnH1uKcexJrIMvbAcPS7Jaul9 UCVsAmktqMbPhABMPSE8sLpW5O4/CmYWiMWclEXOEh5r50Hk7Tqax/wOBOD/ntYbx6 K3OIb0Qv6+7/6fRePPOX1Cu442oqNbLcXBIDV+9M= From: Keith Busch To: linux-nvme@lists.infradead.org, hch@lst.de, sagi@grimberg.me, linux-block@vger.kernel.org Subject: [PATCHv4 1/5] block: add capacity field to zone descriptors Date: Mon, 29 Jun 2020 12:06:37 -0700 Message-Id: <20200629190641.1986462-2-kbusch@kernel.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200629190641.1986462-1-kbusch@kernel.org> References: <20200629190641.1986462-1-kbusch@kernel.org> MIME-Version: 1.0 X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: axboe@kernel.dk, Chaitanya Kulkarni , Daniel Wagner , Johannes Thumshirn , Hannes Reinecke , "Martin K . Petersen" , =?UTF-8?q?Javier=20Gonz=C3=A1lez?= , =?UTF-8?q?Matias=20Bj=C3=B8rling?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org RnJvbTogTWF0aWFzIEJqw7hybGluZyA8bWF0aWFzLmJqb3JsaW5nQHdkYy5jb20+CgpJbiB0aGUg em9uZWQgc3RvcmFnZSBtb2RlbCwgdGhlIHNlY3RvcnMgd2l0aGluIGEgem9uZSBhcmUgdHlwaWNh bGx5IGFsbAp3cml0ZWFibGUuIFdpdGggdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgWm9uZWQgTmFt ZXNwYWNlIChaTlMpIENvbW1hbmQKU2V0IGluIHRoZSBOVk0gRXhwcmVzcyBvcmdhbml6YXRpb24s IHRoZSBtb2RlbCB3YXMgZXh0ZW5kZWQgdG8gaGF2ZSBhCnNwZWNpZmljIHdyaXRlYWJsZSBjYXBh Y2l0eS4KCkV4dGVuZCB0aGUgem9uZSBkZXNjcmlwdG9yIGRhdGEgc3RydWN0dXJlIHdpdGggYSB6 b25lIGNhcGFjaXR5IGZpZWxkIHRvCmluZGljYXRlIHRvIHRoZSB1c2VyIGhvdyBtYW55IHNlY3Rv cnMgaW4gYSB6b25lIGFyZSB3cml0ZWFibGUuCgpJbnRyb2R1Y2UgYmFja3dhcmQgY29tcGF0aWJp bGl0eSBpbiB0aGUgem9uZSByZXBvcnQgaW9jdGwgYnkgZXh0ZW5kaW5nCnRoZSB6b25lIHJlcG9y dCBoZWFkZXIgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBhIGZsYWdzIGZpZWxkIHRvIGluZGljYXRlIGlm CnRoZSBjYXBhY2l0eSBmaWVsZCBpcyBhdmFpbGFibGUuCgpSZXZpZXdlZC1ieTogSmVucyBBeGJv ZSA8YXhib2VAa2VybmVsLmRrPgpSZXZpZXdlZC1ieTogQ2hhaXRhbnlhIEt1bGthcm5pIDxjaGFp dGFueWEua3Vsa2FybmlAd2RjLmNvbT4KUmV2aWV3ZWQtYnk6IEphdmllciBHb256w6FsZXogPGph dmllci5nb256QHNhbXN1bmcuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIFdhZ25lciA8ZHdhZ25l ckBzdXNlLmRlPgpSZXZpZXdlZC1ieTogSm9oYW5uZXMgVGh1bXNoaXJuIDxqb2hhbm5lcy50aHVt c2hpcm5Ad2RjLmNvbT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBl dGVyc2VuQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBIYW5uZXMgUmVpbmVja2UgPGhhcmVAc3Vz ZS5kZT4KU2lnbmVkLW9mZi1ieTogTWF0aWFzIEJqw7hybGluZyA8bWF0aWFzLmJqb3JsaW5nQHdk Yy5jb20+Ci0tLQogYmxvY2svYmxrLXpvbmVkLmMgICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVy cy9ibG9jay9udWxsX2Jsa196b25lZC5jIHwgIDIgKysKIGRyaXZlcnMvc2NzaS9zZF96YmMuYyAg ICAgICAgICB8ICAxICsKIGluY2x1ZGUvdWFwaS9saW51eC9ibGt6b25lZC5oICB8IDE1ICsrKysr KysrKysrKystLQogNCBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay16b25lZC5jIGIvYmxvY2svYmxrLXpvbmVkLmMK aW5kZXggMjM4MzFmYTg3MDFkLi44MTE1MmEyNjAzNTQgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay16 b25lZC5jCisrKyBiL2Jsb2NrL2Jsay16b25lZC5jCkBAIC0zMTIsNiArMzEyLDcgQEAgaW50IGJs a2Rldl9yZXBvcnRfem9uZXNfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgZm1vZGVf dCBtb2RlLAogCQlyZXR1cm4gcmV0OwogCiAJcmVwLm5yX3pvbmVzID0gcmV0OworCXJlcC5mbGFn cyA9IEJMS19aT05FX1JFUF9DQVBBQ0lUWTsKIAlpZiAoY29weV90b191c2VyKGFyZ3AsICZyZXAs IHNpemVvZihzdHJ1Y3QgYmxrX3pvbmVfcmVwb3J0KSkpCiAJCXJldHVybiAtRUZBVUxUOwogCXJl dHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsa196b25lZC5jIGIvZHJp dmVycy9ibG9jay9udWxsX2Jsa196b25lZC5jCmluZGV4IGNjNDc2MDZkOGZmZS4uNjI0YWFjMDli MDA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrX3pvbmVkLmMKKysrIGIvZHJp dmVycy9ibG9jay9udWxsX2Jsa196b25lZC5jCkBAIC00Nyw2ICs0Nyw3IEBAIGludCBudWxsX2lu aXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEpCiAKIAkJem9uZS0+c3RhcnQgPSBzZWN0b3I7CiAJCXpvbmUtPmxlbiA9IGRldi0+em9u ZV9zaXplX3NlY3RzOworCQl6b25lLT5jYXBhY2l0eSA9IHpvbmUtPmxlbjsKIAkJem9uZS0+d3Ag PSB6b25lLT5zdGFydCArIHpvbmUtPmxlbjsKIAkJem9uZS0+dHlwZSA9IEJMS19aT05FX1RZUEVf Q09OVkVOVElPTkFMOwogCQl6b25lLT5jb25kID0gQkxLX1pPTkVfQ09ORF9OT1RfV1A7CkBAIC01 OSw2ICs2MCw3IEBAIGludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2Ug KmRldiwgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpCiAKIAkJem9uZS0+c3RhcnQgPSB6b25lLT53 cCA9IHNlY3RvcjsKIAkJem9uZS0+bGVuID0gZGV2LT56b25lX3NpemVfc2VjdHM7CisJCXpvbmUt PmNhcGFjaXR5ID0gem9uZS0+bGVuOwogCQl6b25lLT50eXBlID0gQkxLX1pPTkVfVFlQRV9TRVFX UklURV9SRVE7CiAJCXpvbmUtPmNvbmQgPSBCTEtfWk9ORV9DT05EX0VNUFRZOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3Njc2kvc2RfemJjLmMgYi9kcml2ZXJzL3Njc2kvc2RfemJjLmMKaW5kZXgg NmY3ZWJhNjY2ODdlLi4xODNhMjA3MjBkYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zZF96 YmMuYworKysgYi9kcml2ZXJzL3Njc2kvc2RfemJjLmMKQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGlj IGludCBzZF96YmNfcGFyc2VfcmVwb3J0KHN0cnVjdCBzY3NpX2Rpc2sgKnNka3AsIHU4ICpidWYs CiAJCXpvbmUubm9uX3NlcSA9IDE7CiAKIAl6b25lLmxlbiA9IGxvZ2ljYWxfdG9fc2VjdG9ycyhz ZHAsIGdldF91bmFsaWduZWRfYmU2NCgmYnVmWzhdKSk7CisJem9uZS5jYXBhY2l0eSA9IHpvbmUu bGVuOwogCXpvbmUuc3RhcnQgPSBsb2dpY2FsX3RvX3NlY3RvcnMoc2RwLCBnZXRfdW5hbGlnbmVk X2JlNjQoJmJ1ZlsxNl0pKTsKIAl6b25lLndwID0gbG9naWNhbF90b19zZWN0b3JzKHNkcCwgZ2V0 X3VuYWxpZ25lZF9iZTY0KCZidWZbMjRdKSk7CiAJaWYgKHpvbmUudHlwZSAhPSBaQkNfWk9ORV9U WVBFX0NPTlYgJiYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ibGt6b25lZC5oIGIv aW5jbHVkZS91YXBpL2xpbnV4L2Jsa3pvbmVkLmgKaW5kZXggMGNkZWY2NzEzNWYwLi40MmMzMzY2 Y2MyNWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ibGt6b25lZC5oCisrKyBiL2lu Y2x1ZGUvdWFwaS9saW51eC9ibGt6b25lZC5oCkBAIC03Myw2ICs3MywxNSBAQCBlbnVtIGJsa196 b25lX2NvbmQgewogCUJMS19aT05FX0NPTkRfT0ZGTElORQk9IDB4RiwKIH07CiAKKy8qKgorICog ZW51bSBibGtfem9uZV9yZXBvcnRfZmxhZ3MgLSBGZWF0dXJlIGZsYWdzIG9mIHJlcG9ydGVkIHpv bmUgZGVzY3JpcHRvcnMuCisgKgorICogQEJMS19aT05FX1JFUF9DQVBBQ0lUWTogWm9uZSBkZXNj cmlwdG9yIGhhcyBjYXBhY2l0eSBmaWVsZC4KKyAqLworZW51bSBibGtfem9uZV9yZXBvcnRfZmxh Z3MgeworCUJMS19aT05FX1JFUF9DQVBBQ0lUWQk9ICgxIDw8IDApLAorfTsKKwogLyoqCiAgKiBz dHJ1Y3QgYmxrX3pvbmUgLSBab25lIGRlc2NyaXB0b3IgZm9yIEJMS1JFUE9SVFpPTkUgaW9jdGwu CiAgKgpAQCAtOTksNyArMTA4LDkgQEAgc3RydWN0IGJsa196b25lIHsKIAlfX3U4CWNvbmQ7CQkv KiBab25lIGNvbmRpdGlvbiAqLwogCV9fdTgJbm9uX3NlcTsJLyogTm9uLXNlcXVlbnRpYWwgd3Jp dGUgcmVzb3VyY2VzIGFjdGl2ZSAqLwogCV9fdTgJcmVzZXQ7CQkvKiBSZXNldCB3cml0ZSBwb2lu dGVyIHJlY29tbWVuZGVkICovCi0JX191OAlyZXNlcnZlZFszNl07CisJX191OAlyZXN2WzRdOwor CV9fdTY0CWNhcGFjaXR5OwkvKiBab25lIGNhcGFjaXR5IGluIG51bWJlciBvZiBzZWN0b3JzICov CisJX191OAlyZXNlcnZlZFsyNF07CiB9OwogCiAvKioKQEAgLTExNSw3ICsxMjYsNyBAQCBzdHJ1 Y3QgYmxrX3pvbmUgewogc3RydWN0IGJsa196b25lX3JlcG9ydCB7CiAJX191NjQJCXNlY3RvcjsK IAlfX3UzMgkJbnJfem9uZXM7Ci0JX191OAkJcmVzZXJ2ZWRbNF07CisJX191MzIJCWZsYWdzOwog CXN0cnVjdCBibGtfem9uZSB6b25lc1swXTsKIH07CiAKLS0gCjIuMjQuMQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LW52bWUgbWFpbGluZyBs aXN0CkxpbnV4LW52bWVAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52bWUK