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=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,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 2A0ABC433E2 for ; Sun, 28 Jun 2020 23:02:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E411520776 for ; Sun, 28 Jun 2020 23:02:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="d1TgNHyT"; dkim=pass (1024-bit key) header.d=sharedspace.onmicrosoft.com header.i=@sharedspace.onmicrosoft.com header.b="hzbcsgQ9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726699AbgF1XCH (ORCPT ); Sun, 28 Jun 2020 19:02:07 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:2007 "EHLO esa3.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726546AbgF1XCA (ORCPT ); Sun, 28 Jun 2020 19:02:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1593385320; x=1624921320; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=VQdZjUpGpzPxTBS+Y1rg+pb4zhbVAOjXX96uDCZCMzU=; b=d1TgNHyTVo8Wdyc4BRMCsrkeMxL6Wu0lQgPNAI/W7ks0nTvr/iK+hb/V 5rNEU3aURI7biLR5chXCVRFVAJUwMMLHjDelcznc+i0GWeZC13X8bfwie Cxw6jt+MlvD36WnzvnvswLStZdvXri60F2xC3VLSLY17WXL3X5tE9O98x JFjgF15plHGqCn+bswMxG7NJwtJSxr21/tYUzo7/SQuW3K15YqkazvkbC Y4FN0TGx42RgXx5bqlHHwrludUVC2saviqOvKbcxpNyoE/QQdlXaZ3nE2 4TLV3GzL6i9FTuGdu+Cl0wIACeSGzmWZdzmuccVrYqqBhGySFVNRObl+o w==; IronPort-SDR: Nxi5Y0bAdsNKzewJ0Qqv+QrTWj4Jt4IvNvOb7EumPX5j6YJrhNFWcU90Gy/vopFoSJnx2aTMdC myOrmfyCrqmLnroHUqvdbr+lh/hrmFkH1v57pYibXEM0kSamm7mGWwFC+9TuL8AAVKVCZWXcVK pPUYUHw70qa9my4wO54tS8A5ozUklDXs6VYEHo6+8TtkjxzXnS7VzfAdAhVxpL80NFSj8Zxhvz 8hDJAVOmd+2R/llOzyXvul51ZXTMn3QRYrAezvB3GSyRQ96cJ4BbBxsEP8Njv06neQN+x5cq7b wZY= X-IronPort-AV: E=Sophos;i="5.75,293,1589212800"; d="scan'208";a="145457407" Received: from mail-mw2nam12lp2046.outbound.protection.outlook.com (HELO NAM12-MW2-obe.outbound.protection.outlook.com) ([104.47.66.46]) by ob1.hgst.iphmx.com with ESMTP; 29 Jun 2020 07:01:59 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ee1pr3cN1X7COfXGZq3OCstTjC6leRU5WaZkH+HvNu6ou0H2kVRkQVfNcqa8O9XhNO2leFqypuhm+oEXqKrXa0y25TPLGjavV/VaUATn+0h5Sfv3NWsRQ/2wlFenanZS8RdfHUi/D4H0yRjEyGKRw38azSX4FqKJx3x5GYYhiPXIbC1vl0+3F9DPclUFxOdrhmvyNYLTx3bSZkXx/5OocN51xW3gjCBZSoXAu6PWmrbNCQPQCFWlvTHOGAUMI+1d2APj/t69m2nSZqVjyPVwBNkIu2YPPgqpJl1GGGmAOd4PtJC2zsMoVpx2VXdxH9Wulq9Xm/HptdDgb345GcwCPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e3IMlmPpP8bNkwD8bNTWv/UTt3aY69ikCOLCRsL+ux4=; b=i2d7ZAG1wKS9S1h5XQDZX3roG7XHiR4jYzqI/jUpCwQwZldnrq/wHd7sO7rj2449oBLlao82BwGYsRgNy7bivoiDuvWGdbwiViUu8Tls/WoR98BeKGyobJ53Uy+Sm8Qk21G9Bq14axJHVT6JkGcxVCAseY5QXqIU5BsyoWTyIYkUnaNF3oArU9xmxvZ8mBl1z/75yARE15AqiCvZSeHUipRrdguwBdGzEg3aFccATA87CQUYgyvcy5WSvHfbFnQ83Lb6XUE6AdpsfUDWab/LNX92qHxXIZgC6dQrLnE+U+mj4f/kNvtqPordMu5KozXcXhOxO6SmEg2uXU/egvhLCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e3IMlmPpP8bNkwD8bNTWv/UTt3aY69ikCOLCRsL+ux4=; b=hzbcsgQ9Q8rWCY5DFWUY8AXb7bPfmVn8zVeMK5FvbMKKtAzuVa3xaFEn9FrxTKM9Mh7+5q22MKswOIzq6MB4DWCPSgCXzPFw8ErnqfJdqPfWI9pRWx0J9MfeTlv+HHUYQYIH+lL/OVJTp/17IC5XD6qWApRSEcFTMmmRt8wd6/c= Authentication-Results: kernel.dk; dkim=none (message not signed) header.d=none;kernel.dk; dmarc=none action=none header.from=wdc.com; Received: from MN2PR04MB6223.namprd04.prod.outlook.com (2603:10b6:208:db::14) by MN2PR04MB5965.namprd04.prod.outlook.com (2603:10b6:208:d9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.20; Sun, 28 Jun 2020 23:01:57 +0000 Received: from MN2PR04MB6223.namprd04.prod.outlook.com ([fe80::899f:1d14:ad80:400e]) by MN2PR04MB6223.namprd04.prod.outlook.com ([fe80::899f:1d14:ad80:400e%4]) with mapi id 15.20.3131.026; Sun, 28 Jun 2020 23:01:57 +0000 From: =?UTF-8?q?Matias=20Bj=C3=B8rling?= To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, martin.petersen@oracle.com, damien.lemoal@wdc.com, niklas.cassel@wdc.com, hans.holmberg@wdc.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-nvme@lists.infradead.org, =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [PATCH 2/2] block: add BLKSETDESCZONE ioctl for Zoned Block Devices Date: Sun, 28 Jun 2020 23:01:02 +0000 Message-Id: <20200628230102.26990-3-matias.bjorling@wdc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200628230102.26990-1-matias.bjorling@wdc.com> References: <20200628230102.26990-1-matias.bjorling@wdc.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: AM5PR0202CA0018.eurprd02.prod.outlook.com (2603:10a6:203:69::28) To MN2PR04MB6223.namprd04.prod.outlook.com (2603:10b6:208:db::14) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ninja.localdomain (87.116.37.42) by AM5PR0202CA0018.eurprd02.prod.outlook.com (2603:10a6:203:69::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.21 via Frontend Transport; Sun, 28 Jun 2020 23:01:55 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [87.116.37.42] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3ea5eda5-a4b0-48e8-ce3f-08d81bb741b1 X-MS-TrafficTypeDiagnostic: MN2PR04MB5965: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: WDCIPOUTBOUND: EOP-TRUE X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-Forefront-PRVS: 0448A97BF2 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ctj47+tfFFkkjPAB2ypCVK8ZsBJ0UR1L0KYsLrhs8Amfzf+dB11qRbJ8T4j0MdFbNVlXtkak16S8UlaSgloVfYfGWDrb7RLf4Ue8VS+QydQngV03piLaoEpUYw/925Q/XeOGFcUIvuVnYeCgBDJdJbsKeCczXtYUbx+c/Y0YY1QdZpO3O8tN98d65F9PnOPV6BMd45sPJBnQf0z2+SqtD/EWwq4wDwNFBmRjA/ZgpplglqBIUnY9kqzhGDqqZvy9Q5jouvGX31gFkj6HtykGeqSLw2pGzpCefJ+01wTOlCXUnIMIozXh5BhJ5HFeyN9PLk/PM5dI055XDqyDF8IM6A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR04MB6223.namprd04.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(346002)(136003)(366004)(396003)(39850400004)(376002)(6486002)(4326008)(2616005)(956004)(1076003)(86362001)(6636002)(66946007)(316002)(66556008)(66476007)(30864003)(186003)(6512007)(26005)(6666004)(66574015)(6506007)(8936002)(2906002)(83380400001)(36756003)(5660300002)(52116002)(16526019)(478600001)(8676002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData: h7teW06JigNX+KSm4554LpriddLUKTHB/qFxKbmkf9DC/ChMO5oNXo5efLhmgnbya/xgcJ1b8LbJI6nXXeNcPr6gPxur9K5/0YrGRDYbHhLWBXWNjRlqEVzqZmyboQM7BBk3paByHoqIVefG074gVuMhRP54Ke0q0KbDGSmm8PtP+uNIy6Opc9UuC5Hy5qxOMlLpXxdQ21o1s/hzKaMYmNyFWKF60jpo6QTMnGrTQlWMo2YmvcJxORjVIXHG3l1S5W81MT4WpUHgXsQqiHqBGh8ETK7oKJtJt8yfqPh9xnQR97d5YzfkS97MXfQhVSNqGHS7iz3FO06f6OB4p/NZ39KiBFHlKW32FpoEBb8xx8A5HY6OpkE0nogizbguKDWXEMvFAErHFfUWUr5R5ezVI0p488vh/m1tLKYFBROFaLURoQT2Pq5S9vIxCptmETWdpyhG3fIlgVih7sSfUcf28Kbju1tyyaCQeLgwjI4BAaY= X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ea5eda5-a4b0-48e8-ce3f-08d81bb741b1 X-MS-Exchange-CrossTenant-AuthSource: MN2PR04MB6223.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2020 23:01:57.2049 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TTjvcw8LB3fy39jTPL5hHZyj0SDWk+hQ94TvLGm20BtChx+G0F50nC4T16H11RRfY1OUENEjuFPPYmO+fD2+KA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR04MB5965 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org The NVMe Zoned Namespace Command Set adds support for associating data to a zone through the Zone Descriptor Extension feature. To allow user-space to associate data to a zone, add support through the BLKSETDESCZONE ioctl. The ioctl requires that it is issued to a zoned block device, and that it supports the Zone Descriptor Extension feature. Support is detected through the the zone_desc_ext_bytes sysfs queue entry for the specific block device. A value larger than zero communicates that the device supports the feature. The ioctl associates data to a zone by issuing a Zone Management Send command with the Zone Send Action set as the Set Zone Descriptor Extension. For the command to complete successfully, the specified zone must be in the Empty state, and active resources must be available. On success, the specified zone is transioned to Closed state by the device. If less data is supplied by user-space then reported by the the Zone Descriptor Extension size, the rest is zero-filled. If more data or no data is supplied by user-space, the ioctl fails. To issue the ioctl, a new blk_zone_set_desc data structure is defined. It has following parameters: * the sector of the specific zone. * the length of the data to be associated to the zone. * any flags be used by the ioctl. None is defined. * data associated to the zone. The data is laid out after the flags parameter, and it is the caller's responsibility to allocate memory for the data that is specified in the length parameter. Signed-off-by: Matias Bjørling --- block/blk-zoned.c | 108 ++++++++++++++++++++++++++++++++++ block/ioctl.c | 2 + drivers/nvme/host/core.c | 3 + drivers/nvme/host/nvme.h | 9 +++ drivers/nvme/host/zns.c | 11 ++++ include/linux/blk_types.h | 2 + include/linux/blkdev.h | 9 ++- include/uapi/linux/blkzoned.h | 20 ++++++- 8 files changed, 162 insertions(+), 2 deletions(-) diff --git a/block/blk-zoned.c b/block/blk-zoned.c index 81152a260354..4dc40ec006a2 100644 --- a/block/blk-zoned.c +++ b/block/blk-zoned.c @@ -259,6 +259,50 @@ int blkdev_zone_mgmt(struct block_device *bdev, enum req_opf op, } EXPORT_SYMBOL_GPL(blkdev_zone_mgmt); +/** + * blkdev_zone_set_desc - Execute a zone management set zone descriptor + * extension operation on a zone + * @bdev: Target block device + * @sector: Start sector of the zone to operate on + * @data: Pointer to the data that is to be associated to the zone + * @gfp_mask: Memory allocation flags (for bio_alloc) + * + * Description: + * Associate zone descriptor extension data to a specified zone. + * The block device must support zone descriptor extensions. + * i.e., by exposing a positive zone descriptor extension size. + */ +int blkdev_zone_set_desc(struct block_device *bdev, sector_t sector, + struct page *data, gfp_t gfp_mask) +{ + struct request_queue *q = bdev_get_queue(bdev); + sector_t zone_sectors = blk_queue_zone_sectors(q); + struct bio_vec bio_vec; + struct bio bio; + + if (!blk_queue_is_zoned(q)) + return -EOPNOTSUPP; + + if (bdev_read_only(bdev)) + return -EPERM; + + /* Check alignment (handle eventual smaller last zone) */ + if (sector & (zone_sectors - 1)) + return -EINVAL; + + bio_init(&bio, &bio_vec, 1); + bio.bi_opf = REQ_OP_ZONE_SET_DESC | REQ_SYNC; + bio.bi_iter.bi_sector = sector; + bio_set_dev(&bio, bdev); + bio_add_page(&bio, data, queue_zone_desc_ext_bytes(q), 0); + + /* This may take a while, so be nice to others */ + cond_resched(); + + return submit_bio_wait(&bio); +} +EXPORT_SYMBOL_GPL(blkdev_zone_set_desc); + struct zone_report_args { struct blk_zone __user *zones; }; @@ -370,6 +414,70 @@ int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode, GFP_KERNEL); } +/* + * BLKSETDESCZONE ioctl processing. + * Called from blkdev_ioctl. + */ +int blkdev_zone_set_desc_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + void __user *argp = (void __user *)arg; + struct request_queue *q; + struct blk_zone_set_desc zsd; + void *zsd_data; + int ret; + + if (!argp) + return -EINVAL; + + q = bdev_get_queue(bdev); + if (!q) + return -ENXIO; + + if (!blk_queue_is_zoned(q)) + return -ENOTTY; + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + + if (!(mode & FMODE_WRITE)) + return -EBADF; + + if (!queue_zone_desc_ext_bytes(q)) + return -EOPNOTSUPP; + + if (copy_from_user(&zsd, argp, sizeof(struct blk_zone_set_desc))) + return -EFAULT; + + /* no flags is currently supported */ + if (zsd.flags) + return -ENOTTY; + + if (!zsd.len || zsd.len > queue_zone_desc_ext_bytes(q)) + return -ENOTTY; + + /* allocate the size of the zone descriptor extension and fill + * with the data in the user data buffer. If the data size is less + * than the zone descriptor extension size, then the rest of the + * zone description extension data buffer is zero-filled. + */ + zsd_data = (void *) get_zeroed_page(GFP_KERNEL); + if (!zsd_data) + return -ENOMEM; + + if (copy_from_user(zsd_data, argp + sizeof(struct blk_zone_set_desc), + zsd.len)) { + ret = -EFAULT; + goto free; + } + + ret = blkdev_zone_set_desc(bdev, zsd.sector, virt_to_page(zsd_data), + GFP_KERNEL); +free: + free_page((unsigned long) zsd_data); + return ret; +} + static inline unsigned long *blk_alloc_zone_bitmap(int node, unsigned int nr_zones) { diff --git a/block/ioctl.c b/block/ioctl.c index bdb3bbb253d9..b9744705835b 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -515,6 +515,8 @@ static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode, case BLKCLOSEZONE: case BLKFINISHZONE: return blkdev_zone_mgmt_ioctl(bdev, mode, cmd, arg); + case BLKSETDESCZONE: + return blkdev_zone_set_desc_ioctl(bdev, mode, cmd, arg); case BLKGETZONESZ: return put_uint(argp, bdev_zone_sectors(bdev)); case BLKGETNRZONES: diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index e961910da4ac..b8f25b0d00ad 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -776,6 +776,9 @@ blk_status_t nvme_setup_cmd(struct nvme_ns *ns, struct request *req, case REQ_OP_ZONE_FINISH: ret = nvme_setup_zone_mgmt_send(ns, req, cmd, NVME_ZONE_FINISH); break; + case REQ_OP_ZONE_SET_DESC: + ret = nvme_setup_zone_set_desc(ns, req, cmd); + break; case REQ_OP_WRITE_ZEROES: ret = nvme_setup_write_zeroes(ns, req, cmd); break; diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index 662f95fbd909..5bd5a437b038 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -708,6 +708,9 @@ int nvme_report_zones(struct gendisk *disk, sector_t sector, blk_status_t nvme_setup_zone_mgmt_send(struct nvme_ns *ns, struct request *req, struct nvme_command *cmnd, enum nvme_zone_mgmt_action action); + +blk_status_t nvme_setup_zone_set_desc(struct nvme_ns *ns, struct request *req, + struct nvme_command *cmnd); #else #define nvme_report_zones NULL @@ -718,6 +721,12 @@ static inline blk_status_t nvme_setup_zone_mgmt_send(struct nvme_ns *ns, return BLK_STS_NOTSUPP; } +static inline blk_status_t nvme_setup_zone_set_desc(struct nvme_ns *ns, + struct request *req, struct nvme_command *cmnd) +{ + return BLK_STS_NOTSUPP; +} + static inline int nvme_update_zone_info(struct gendisk *disk, struct nvme_ns *ns, unsigned lbaf) diff --git a/drivers/nvme/host/zns.c b/drivers/nvme/host/zns.c index 5792d953a8f3..bfa64cc685d3 100644 --- a/drivers/nvme/host/zns.c +++ b/drivers/nvme/host/zns.c @@ -239,3 +239,14 @@ blk_status_t nvme_setup_zone_mgmt_send(struct nvme_ns *ns, struct request *req, return BLK_STS_OK; } + +blk_status_t nvme_setup_zone_set_desc(struct nvme_ns *ns, struct request *req, + struct nvme_command *c) +{ + c->zms.opcode = nvme_cmd_zone_mgmt_send; + c->zms.nsid = cpu_to_le32(ns->head->ns_id); + c->zms.slba = cpu_to_le64(nvme_sect_to_lba(ns, blk_rq_pos(req))); + c->zms.action = NVME_ZONE_SET_DESC_EXT; + + return BLK_STS_OK; +} diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index ccb895f911b1..53b7b05b0004 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -316,6 +316,8 @@ enum req_opf { REQ_OP_ZONE_FINISH = 12, /* write data at the current zone write pointer */ REQ_OP_ZONE_APPEND = 13, + /* associate zone desc extension data to a zone */ + REQ_OP_ZONE_SET_DESC = 14, /* SCSI passthrough using struct scsi_request */ REQ_OP_SCSI_IN = 32, diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 2ed55055f68d..c5f092dd5aa3 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -370,7 +370,8 @@ extern int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg); extern int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg); - +extern int blkdev_zone_set_desc_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg); #else /* CONFIG_BLK_DEV_ZONED */ static inline unsigned int blkdev_nr_zones(struct gendisk *disk) @@ -392,6 +393,12 @@ static inline int blkdev_zone_mgmt_ioctl(struct block_device *bdev, return -ENOTTY; } +static inline int blkdev_zone_set_desc_ioctl(struct block_device *bdev, + fmode_t mode, unsigned int cmd, + unsigned long arg) +{ + return -ENOTTY; +} #endif /* CONFIG_BLK_DEV_ZONED */ struct request_queue { diff --git a/include/uapi/linux/blkzoned.h b/include/uapi/linux/blkzoned.h index 42c3366cc25f..68abda9abf33 100644 --- a/include/uapi/linux/blkzoned.h +++ b/include/uapi/linux/blkzoned.h @@ -142,6 +142,20 @@ struct blk_zone_range { __u64 nr_sectors; }; +/** + * struct blk_zone_set_desc - BLKSETDESCZONE ioctl requests + * @sector: Starting sector of the zone to operate on. + * @flags: Feature flags. + * @len: size, in bytes, of the data to be associated to the zone. + * @data: data to be associated. + */ +struct blk_zone_set_desc { + __u64 sector; + __u32 flags; + __u32 len; + __u8 data[0]; +}; + /** * Zoned block device ioctl's: * @@ -158,6 +172,10 @@ struct blk_zone_range { * The 512 B sector range must be zone aligned. * @BLKFINISHZONE: Mark the zones as full in the specified sector range. * The 512 B sector range must be zone aligned. + * @BLKSETDESCZONE: Set zone description extension data for the zone + * in the specified sector. On success, the zone + * will transition to the closed zone state. + * The 512B sector must be zone aligned. */ #define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report) #define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range) @@ -166,5 +184,5 @@ struct blk_zone_range { #define BLKOPENZONE _IOW(0x12, 134, struct blk_zone_range) #define BLKCLOSEZONE _IOW(0x12, 135, struct blk_zone_range) #define BLKFINISHZONE _IOW(0x12, 136, struct blk_zone_range) - +#define BLKSETDESCZONE _IOW(0x12, 137, struct blk_zone_set_desc) #endif /* _UAPI_BLKZONED_H */ -- 2.17.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,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,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 AB858C433E0 for ; Sun, 28 Jun 2020 23:02:14 +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 69D2C2076E for ; Sun, 28 Jun 2020 23:02:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="pMziE5sd"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="VE7i1lgq"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sharedspace.onmicrosoft.com header.i=@sharedspace.onmicrosoft.com header.b="hzbcsgQ9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 69D2C2076E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com 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=d5eWYv9AFrC9Zxbf7QTUe3AW9744ibS4Y2ElxL703jg=; b=pMziE5sdsJzn289B9NJZnj/gY KfSHuJLSsF3z5AR34eIqbll6Xbk/ET5wsBXl8L3Fag8rar+8V+yXhB8V3fDg5pFU0gz5cL+7EuNPa p8jUOW96ObCSN+6hX+RZZrnlJOtduOd1f2ar6SiUJ5gUfjVBeZeKeKiigM91MZJiHNmvOBkh77i1t uopejnKala/7q8kZpKhk0pUmg3j60cJoi0xd9av4ehYFMiH99sTAornViv0Iq67gd32i0hbovpUtR /uInxuEnoIglb/KHq+Sn6QmtvKm/R3fN71RmQcGacV34QAjfPpFpuBLAbWzQToE1U/Job5+uHGNPS CKv8JzXLg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jpgJL-0008H2-2S; Sun, 28 Jun 2020 23:02:07 +0000 Received: from esa3.hgst.iphmx.com ([216.71.153.141]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jpgJF-0008FU-QZ for linux-nvme@lists.infradead.org; Sun, 28 Jun 2020 23:02:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1593385323; x=1624921323; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=VQdZjUpGpzPxTBS+Y1rg+pb4zhbVAOjXX96uDCZCMzU=; b=VE7i1lgqLepI9YP56WOX021uYuBKp0KYcCF8bsc/vuiIgkhkPHLDcxd1 bJCDeYOZ2KlrK1Y65MYC9pXEMLsydy8e5pi0VS7TkcoN66zjdIAIyfJrA 3Olq0styynMpl7tu97cPwLPMvIAeyBp7yecFnrTIo6zaHtIxzhNfYGK0y lqCuYgNzuwimpFKuTIpa9rXl8G3aqNlj2xKw3VqmHiwo5oVvFUwstqKVA 3i0xbuxfZHdo+ycWXhEBXw64woAUJQj/ujiEYzyu4xx187ddFmHW9F8rq vqM7mxVR6PyeAbdmdBrH0QC5g0d7pXuBivwzuAGJMd69e/5Ile3mN57l9 A==; IronPort-SDR: Nxi5Y0bAdsNKzewJ0Qqv+QrTWj4Jt4IvNvOb7EumPX5j6YJrhNFWcU90Gy/vopFoSJnx2aTMdC myOrmfyCrqmLnroHUqvdbr+lh/hrmFkH1v57pYibXEM0kSamm7mGWwFC+9TuL8AAVKVCZWXcVK pPUYUHw70qa9my4wO54tS8A5ozUklDXs6VYEHo6+8TtkjxzXnS7VzfAdAhVxpL80NFSj8Zxhvz 8hDJAVOmd+2R/llOzyXvul51ZXTMn3QRYrAezvB3GSyRQ96cJ4BbBxsEP8Njv06neQN+x5cq7b wZY= X-IronPort-AV: E=Sophos;i="5.75,293,1589212800"; d="scan'208";a="145457407" Received: from mail-mw2nam12lp2046.outbound.protection.outlook.com (HELO NAM12-MW2-obe.outbound.protection.outlook.com) ([104.47.66.46]) by ob1.hgst.iphmx.com with ESMTP; 29 Jun 2020 07:01:59 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ee1pr3cN1X7COfXGZq3OCstTjC6leRU5WaZkH+HvNu6ou0H2kVRkQVfNcqa8O9XhNO2leFqypuhm+oEXqKrXa0y25TPLGjavV/VaUATn+0h5Sfv3NWsRQ/2wlFenanZS8RdfHUi/D4H0yRjEyGKRw38azSX4FqKJx3x5GYYhiPXIbC1vl0+3F9DPclUFxOdrhmvyNYLTx3bSZkXx/5OocN51xW3gjCBZSoXAu6PWmrbNCQPQCFWlvTHOGAUMI+1d2APj/t69m2nSZqVjyPVwBNkIu2YPPgqpJl1GGGmAOd4PtJC2zsMoVpx2VXdxH9Wulq9Xm/HptdDgb345GcwCPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e3IMlmPpP8bNkwD8bNTWv/UTt3aY69ikCOLCRsL+ux4=; b=i2d7ZAG1wKS9S1h5XQDZX3roG7XHiR4jYzqI/jUpCwQwZldnrq/wHd7sO7rj2449oBLlao82BwGYsRgNy7bivoiDuvWGdbwiViUu8Tls/WoR98BeKGyobJ53Uy+Sm8Qk21G9Bq14axJHVT6JkGcxVCAseY5QXqIU5BsyoWTyIYkUnaNF3oArU9xmxvZ8mBl1z/75yARE15AqiCvZSeHUipRrdguwBdGzEg3aFccATA87CQUYgyvcy5WSvHfbFnQ83Lb6XUE6AdpsfUDWab/LNX92qHxXIZgC6dQrLnE+U+mj4f/kNvtqPordMu5KozXcXhOxO6SmEg2uXU/egvhLCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e3IMlmPpP8bNkwD8bNTWv/UTt3aY69ikCOLCRsL+ux4=; b=hzbcsgQ9Q8rWCY5DFWUY8AXb7bPfmVn8zVeMK5FvbMKKtAzuVa3xaFEn9FrxTKM9Mh7+5q22MKswOIzq6MB4DWCPSgCXzPFw8ErnqfJdqPfWI9pRWx0J9MfeTlv+HHUYQYIH+lL/OVJTp/17IC5XD6qWApRSEcFTMmmRt8wd6/c= Authentication-Results: kernel.dk; dkim=none (message not signed) header.d=none;kernel.dk; dmarc=none action=none header.from=wdc.com; Received: from MN2PR04MB6223.namprd04.prod.outlook.com (2603:10b6:208:db::14) by MN2PR04MB5965.namprd04.prod.outlook.com (2603:10b6:208:d9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.20; Sun, 28 Jun 2020 23:01:57 +0000 Received: from MN2PR04MB6223.namprd04.prod.outlook.com ([fe80::899f:1d14:ad80:400e]) by MN2PR04MB6223.namprd04.prod.outlook.com ([fe80::899f:1d14:ad80:400e%4]) with mapi id 15.20.3131.026; Sun, 28 Jun 2020 23:01:57 +0000 From: =?UTF-8?q?Matias=20Bj=C3=B8rling?= To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, martin.petersen@oracle.com, damien.lemoal@wdc.com, niklas.cassel@wdc.com, hans.holmberg@wdc.com Subject: [PATCH 2/2] block: add BLKSETDESCZONE ioctl for Zoned Block Devices Date: Sun, 28 Jun 2020 23:01:02 +0000 Message-Id: <20200628230102.26990-3-matias.bjorling@wdc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200628230102.26990-1-matias.bjorling@wdc.com> References: <20200628230102.26990-1-matias.bjorling@wdc.com> X-ClientProxiedBy: AM5PR0202CA0018.eurprd02.prod.outlook.com (2603:10a6:203:69::28) To MN2PR04MB6223.namprd04.prod.outlook.com (2603:10b6:208:db::14) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ninja.localdomain (87.116.37.42) by AM5PR0202CA0018.eurprd02.prod.outlook.com (2603:10a6:203:69::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.21 via Frontend Transport; Sun, 28 Jun 2020 23:01:55 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [87.116.37.42] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3ea5eda5-a4b0-48e8-ce3f-08d81bb741b1 X-MS-TrafficTypeDiagnostic: MN2PR04MB5965: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: WDCIPOUTBOUND: EOP-TRUE X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-Forefront-PRVS: 0448A97BF2 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ctj47+tfFFkkjPAB2ypCVK8ZsBJ0UR1L0KYsLrhs8Amfzf+dB11qRbJ8T4j0MdFbNVlXtkak16S8UlaSgloVfYfGWDrb7RLf4Ue8VS+QydQngV03piLaoEpUYw/925Q/XeOGFcUIvuVnYeCgBDJdJbsKeCczXtYUbx+c/Y0YY1QdZpO3O8tN98d65F9PnOPV6BMd45sPJBnQf0z2+SqtD/EWwq4wDwNFBmRjA/ZgpplglqBIUnY9kqzhGDqqZvy9Q5jouvGX31gFkj6HtykGeqSLw2pGzpCefJ+01wTOlCXUnIMIozXh5BhJ5HFeyN9PLk/PM5dI055XDqyDF8IM6A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR04MB6223.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(346002)(136003)(366004)(396003)(39850400004)(376002)(6486002)(4326008)(2616005)(956004)(1076003)(86362001)(6636002)(66946007)(316002)(66556008)(66476007)(30864003)(186003)(6512007)(26005)(6666004)(66574015)(6506007)(8936002)(2906002)(83380400001)(36756003)(5660300002)(52116002)(16526019)(478600001)(8676002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: h7teW06JigNX+KSm4554LpriddLUKTHB/qFxKbmkf9DC/ChMO5oNXo5efLhmgnbya/xgcJ1b8LbJI6nXXeNcPr6gPxur9K5/0YrGRDYbHhLWBXWNjRlqEVzqZmyboQM7BBk3paByHoqIVefG074gVuMhRP54Ke0q0KbDGSmm8PtP+uNIy6Opc9UuC5Hy5qxOMlLpXxdQ21o1s/hzKaMYmNyFWKF60jpo6QTMnGrTQlWMo2YmvcJxORjVIXHG3l1S5W81MT4WpUHgXsQqiHqBGh8ETK7oKJtJt8yfqPh9xnQR97d5YzfkS97MXfQhVSNqGHS7iz3FO06f6OB4p/NZ39KiBFHlKW32FpoEBb8xx8A5HY6OpkE0nogizbguKDWXEMvFAErHFfUWUr5R5ezVI0p488vh/m1tLKYFBROFaLURoQT2Pq5S9vIxCptmETWdpyhG3fIlgVih7sSfUcf28Kbju1tyyaCQeLgwjI4BAaY= X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ea5eda5-a4b0-48e8-ce3f-08d81bb741b1 X-MS-Exchange-CrossTenant-AuthSource: MN2PR04MB6223.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2020 23:01:57.2049 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TTjvcw8LB3fy39jTPL5hHZyj0SDWk+hQ94TvLGm20BtChx+G0F50nC4T16H11RRfY1OUENEjuFPPYmO+fD2+KA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR04MB5965 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: linux-block@vger.kernel.org, linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, =?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 VGhlIE5WTWUgWm9uZWQgTmFtZXNwYWNlIENvbW1hbmQgU2V0IGFkZHMgc3VwcG9ydCBmb3IgYXNz b2NpYXRpbmcKZGF0YSB0byBhIHpvbmUgdGhyb3VnaCB0aGUgWm9uZSBEZXNjcmlwdG9yIEV4dGVu c2lvbiBmZWF0dXJlLgoKVG8gYWxsb3cgdXNlci1zcGFjZSB0byBhc3NvY2lhdGUgZGF0YSB0byBh IHpvbmUsIGFkZCBzdXBwb3J0IHRocm91Z2gKdGhlIEJMS1NFVERFU0NaT05FIGlvY3RsLiBUaGUg aW9jdGwgcmVxdWlyZXMgdGhhdCBpdCBpcyBpc3N1ZWQgdG8KYSB6b25lZCBibG9jayBkZXZpY2Us IGFuZCB0aGF0IGl0IHN1cHBvcnRzIHRoZSBab25lIERlc2NyaXB0b3IKRXh0ZW5zaW9uIGZlYXR1 cmUuIFN1cHBvcnQgaXMgZGV0ZWN0ZWQgdGhyb3VnaCB0aGUKdGhlIHpvbmVfZGVzY19leHRfYnl0 ZXMgc3lzZnMgcXVldWUgZW50cnkgZm9yIHRoZSBzcGVjaWZpYyBibG9jawpkZXZpY2UuIEEgdmFs dWUgbGFyZ2VyIHRoYW4gemVybyBjb21tdW5pY2F0ZXMgdGhhdCB0aGUgZGV2aWNlIHN1cHBvcnRz CnRoZSBmZWF0dXJlLgoKVGhlIGlvY3RsIGFzc29jaWF0ZXMgZGF0YSB0byBhIHpvbmUgYnkgaXNz dWluZyBhIFpvbmUgTWFuYWdlbWVudCBTZW5kCmNvbW1hbmQgd2l0aCB0aGUgWm9uZSBTZW5kIEFj dGlvbiBzZXQgYXMgdGhlIFNldCBab25lIERlc2NyaXB0b3IKRXh0ZW5zaW9uLgoKRm9yIHRoZSBj b21tYW5kIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSwgdGhlIHNwZWNpZmllZCB6b25lIG11c3Qg YmUKaW4gdGhlIEVtcHR5IHN0YXRlLCBhbmQgYWN0aXZlIHJlc291cmNlcyBtdXN0IGJlIGF2YWls YWJsZS4gT24Kc3VjY2VzcywgdGhlIHNwZWNpZmllZCB6b25lIGlzIHRyYW5zaW9uZWQgdG8gQ2xv c2VkIHN0YXRlIGJ5IHRoZQpkZXZpY2UuIElmIGxlc3MgZGF0YSBpcyBzdXBwbGllZCBieSB1c2Vy LXNwYWNlIHRoZW4gcmVwb3J0ZWQgYnkgdGhlCnRoZSBab25lIERlc2NyaXB0b3IgRXh0ZW5zaW9u IHNpemUsIHRoZSByZXN0IGlzIHplcm8tZmlsbGVkLiBJZiBtb3JlCmRhdGEgb3Igbm8gZGF0YSBp cyBzdXBwbGllZCBieSB1c2VyLXNwYWNlLCB0aGUgaW9jdGwgZmFpbHMuCgpUbyBpc3N1ZSB0aGUg aW9jdGwsIGEgbmV3IGJsa196b25lX3NldF9kZXNjIGRhdGEgc3RydWN0dXJlIGlzIGRlZmluZWQu Ckl0IGhhcyBmb2xsb3dpbmcgcGFyYW1ldGVyczoKCiAqIHRoZSBzZWN0b3Igb2YgdGhlIHNwZWNp ZmljIHpvbmUuCiAqIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdG8gYmUgYXNzb2NpYXRlZCB0byB0 aGUgem9uZS4KICogYW55IGZsYWdzIGJlIHVzZWQgYnkgdGhlIGlvY3RsLiBOb25lIGlzIGRlZmlu ZWQuCiAqIGRhdGEgYXNzb2NpYXRlZCB0byB0aGUgem9uZS4KClRoZSBkYXRhIGlzIGxhaWQgb3V0 IGFmdGVyIHRoZSBmbGFncyBwYXJhbWV0ZXIsIGFuZCBpdCBpcyB0aGUgY2FsbGVyJ3MKcmVzcG9u c2liaWxpdHkgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgZGF0YSB0aGF0IGlzIHNwZWNpZmll ZCBpbiB0aGUKbGVuZ3RoIHBhcmFtZXRlci4KClNpZ25lZC1vZmYtYnk6IE1hdGlhcyBCasO4cmxp bmcgPG1hdGlhcy5iam9ybGluZ0B3ZGMuY29tPgotLS0KIGJsb2NrL2Jsay16b25lZC5jICAgICAg ICAgICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGJsb2NrL2lv Y3RsLmMgICAgICAgICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYyAg ICAgIHwgICAzICsKIGRyaXZlcnMvbnZtZS9ob3N0L252bWUuaCAgICAgIHwgICA5ICsrKwogZHJp dmVycy9udm1lL2hvc3Qvem5zLmMgICAgICAgfCAgMTEgKysrKwogaW5jbHVkZS9saW51eC9ibGtf dHlwZXMuaCAgICAgfCAgIDIgKwogaW5jbHVkZS9saW51eC9ibGtkZXYuaCAgICAgICAgfCAgIDkg KystCiBpbmNsdWRlL3VhcGkvbGludXgvYmxrem9uZWQuaCB8ICAyMCArKysrKystCiA4IGZpbGVz IGNoYW5nZWQsIDE2MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2Jsb2NrL2Jsay16b25lZC5jIGIvYmxvY2svYmxrLXpvbmVkLmMKaW5kZXggODExNTJhMjYwMzU0 Li40ZGM0MGVjMDA2YTIgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay16b25lZC5jCisrKyBiL2Jsb2Nr L2Jsay16b25lZC5jCkBAIC0yNTksNiArMjU5LDUwIEBAIGludCBibGtkZXZfem9uZV9tZ210KHN0 cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGVudW0gcmVxX29wZiBvcCwKIH0KIEVYUE9SVF9TWU1C T0xfR1BMKGJsa2Rldl96b25lX21nbXQpOwogCisvKioKKyAqIGJsa2Rldl96b25lX3NldF9kZXNj IC0gRXhlY3V0ZSBhIHpvbmUgbWFuYWdlbWVudCBzZXQgem9uZSBkZXNjcmlwdG9yCisgKiAgICAg ICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiBvcGVyYXRpb24gb24gYSB6b25lCisgKiBAYmRl djoJVGFyZ2V0IGJsb2NrIGRldmljZQorICogQHNlY3RvcjoJU3RhcnQgc2VjdG9yIG9mIHRoZSB6 b25lIHRvIG9wZXJhdGUgb24KKyAqIEBkYXRhOglQb2ludGVyIHRvIHRoZSBkYXRhIHRoYXQgaXMg dG8gYmUgYXNzb2NpYXRlZCB0byB0aGUgem9uZQorICogQGdmcF9tYXNrOglNZW1vcnkgYWxsb2Nh dGlvbiBmbGFncyAoZm9yIGJpb19hbGxvYykKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqICAgIEFz c29jaWF0ZSB6b25lIGRlc2NyaXB0b3IgZXh0ZW5zaW9uIGRhdGEgdG8gYSBzcGVjaWZpZWQgem9u ZS4KKyAqICAgIFRoZSBibG9jayBkZXZpY2UgbXVzdCBzdXBwb3J0IHpvbmUgZGVzY3JpcHRvciBl eHRlbnNpb25zLgorICogICAgaS5lLiwgYnkgZXhwb3NpbmcgYSBwb3NpdGl2ZSB6b25lIGRlc2Ny aXB0b3IgZXh0ZW5zaW9uIHNpemUuCisgKi8KK2ludCBibGtkZXZfem9uZV9zZXRfZGVzYyhzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCisJCQkgc3RydWN0IHBhZ2Ug KmRhdGEsIGdmcF90IGdmcF9tYXNrKQoreworCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRl dl9nZXRfcXVldWUoYmRldik7CisJc2VjdG9yX3Qgem9uZV9zZWN0b3JzID0gYmxrX3F1ZXVlX3pv bmVfc2VjdG9ycyhxKTsKKwlzdHJ1Y3QgYmlvX3ZlYyBiaW9fdmVjOworCXN0cnVjdCBiaW8gYmlv OworCisJaWYgKCFibGtfcXVldWVfaXNfem9uZWQocSkpCisJCXJldHVybiAtRU9QTk9UU1VQUDsK KworCWlmIChiZGV2X3JlYWRfb25seShiZGV2KSkKKwkJcmV0dXJuIC1FUEVSTTsKKworCS8qIENo ZWNrIGFsaWdubWVudCAoaGFuZGxlIGV2ZW50dWFsIHNtYWxsZXIgbGFzdCB6b25lKSAqLworCWlm IChzZWN0b3IgJiAoem9uZV9zZWN0b3JzIC0gMSkpCisJCXJldHVybiAtRUlOVkFMOworCisJYmlv X2luaXQoJmJpbywgJmJpb192ZWMsIDEpOworCWJpby5iaV9vcGYgPSBSRVFfT1BfWk9ORV9TRVRf REVTQyB8IFJFUV9TWU5DOworCWJpby5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW9f c2V0X2RldigmYmlvLCBiZGV2KTsKKwliaW9fYWRkX3BhZ2UoJmJpbywgZGF0YSwgcXVldWVfem9u ZV9kZXNjX2V4dF9ieXRlcyhxKSwgMCk7CisKKwkvKiBUaGlzIG1heSB0YWtlIGEgd2hpbGUsIHNv IGJlIG5pY2UgdG8gb3RoZXJzICovCisJY29uZF9yZXNjaGVkKCk7CisKKwlyZXR1cm4gc3VibWl0 X2Jpb193YWl0KCZiaW8pOworfQorRVhQT1JUX1NZTUJPTF9HUEwoYmxrZGV2X3pvbmVfc2V0X2Rl c2MpOworCiBzdHJ1Y3Qgem9uZV9yZXBvcnRfYXJncyB7CiAJc3RydWN0IGJsa196b25lIF9fdXNl ciAqem9uZXM7CiB9OwpAQCAtMzcwLDYgKzQxNCw3MCBAQCBpbnQgYmxrZGV2X3pvbmVfbWdtdF9p b2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUsCiAJCQkJR0ZQX0tF Uk5FTCk7CiB9CiAKKy8qCisgKiBCTEtTRVRERVNDWk9ORSBpb2N0bCBwcm9jZXNzaW5nLgorICog Q2FsbGVkIGZyb20gYmxrZGV2X2lvY3RsLgorICovCitpbnQgYmxrZGV2X3pvbmVfc2V0X2Rlc2Nf aW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgZm1vZGVfdCBtb2RlLAorCQkJICAgICAg IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQoreworCXZvaWQgX191c2VyICph cmdwID0gKHZvaWQgX191c2VyICopYXJnOworCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOworCXN0 cnVjdCBibGtfem9uZV9zZXRfZGVzYyB6c2Q7CisJdm9pZCAqenNkX2RhdGE7CisJaW50IHJldDsK KworCWlmICghYXJncCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlxID0gYmRldl9nZXRfcXVldWUo YmRldik7CisJaWYgKCFxKQorCQlyZXR1cm4gLUVOWElPOworCisJaWYgKCFibGtfcXVldWVfaXNf em9uZWQocSkpCisJCXJldHVybiAtRU5PVFRZOworCisJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURN SU4pKQorCQlyZXR1cm4gLUVBQ0NFUzsKKworCWlmICghKG1vZGUgJiBGTU9ERV9XUklURSkpCisJ CXJldHVybiAtRUJBREY7CisKKwlpZiAoIXF1ZXVlX3pvbmVfZGVzY19leHRfYnl0ZXMocSkpCisJ CXJldHVybiAtRU9QTk9UU1VQUDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmenNkLCBhcmdwLCBz aXplb2Yoc3RydWN0IGJsa196b25lX3NldF9kZXNjKSkpCisJCXJldHVybiAtRUZBVUxUOworCisJ Lyogbm8gZmxhZ3MgaXMgY3VycmVudGx5IHN1cHBvcnRlZCAqLworCWlmICh6c2QuZmxhZ3MpCisJ CXJldHVybiAtRU5PVFRZOworCisJaWYgKCF6c2QubGVuIHx8IHpzZC5sZW4gPiBxdWV1ZV96b25l X2Rlc2NfZXh0X2J5dGVzKHEpKQorCQlyZXR1cm4gLUVOT1RUWTsKKworCS8qIGFsbG9jYXRlIHRo ZSBzaXplIG9mIHRoZSB6b25lIGRlc2NyaXB0b3IgZXh0ZW5zaW9uIGFuZCBmaWxsCisJICogd2l0 aCB0aGUgZGF0YSBpbiB0aGUgdXNlciBkYXRhIGJ1ZmZlci4gSWYgdGhlIGRhdGEgc2l6ZSBpcyBs ZXNzCisJICogdGhhbiB0aGUgem9uZSBkZXNjcmlwdG9yIGV4dGVuc2lvbiBzaXplLCB0aGVuIHRo ZSByZXN0IG9mIHRoZQorCSAqIHpvbmUgZGVzY3JpcHRpb24gZXh0ZW5zaW9uIGRhdGEgYnVmZmVy IGlzIHplcm8tZmlsbGVkLgorCSAqLworCXpzZF9kYXRhID0gKHZvaWQgKikgZ2V0X3plcm9lZF9w YWdlKEdGUF9LRVJORUwpOworCWlmICghenNkX2RhdGEpCisJCXJldHVybiAtRU5PTUVNOworCisJ aWYgKGNvcHlfZnJvbV91c2VyKHpzZF9kYXRhLCBhcmdwICsgc2l6ZW9mKHN0cnVjdCBibGtfem9u ZV9zZXRfZGVzYyksCisJCQkgICB6c2QubGVuKSkgeworCQlyZXQgPSAtRUZBVUxUOworCQlnb3Rv IGZyZWU7CisJfQorCisJcmV0ID0gYmxrZGV2X3pvbmVfc2V0X2Rlc2MoYmRldiwgenNkLnNlY3Rv ciwgdmlydF90b19wYWdlKHpzZF9kYXRhKSwKKwkgICAgICBHRlBfS0VSTkVMKTsKK2ZyZWU6CisJ ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSB6c2RfZGF0YSk7CisJcmV0dXJuIHJldDsKK30KKwog c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nICpibGtfYWxsb2Nfem9uZV9iaXRtYXAoaW50IG5v ZGUsCiAJCQkJCQkgICB1bnNpZ25lZCBpbnQgbnJfem9uZXMpCiB7CmRpZmYgLS1naXQgYS9ibG9j ay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuYwppbmRleCBiZGIzYmJiMjUzZDkuLmI5NzQ0NzA1ODM1 YiAxMDA2NDQKLS0tIGEvYmxvY2svaW9jdGwuYworKysgYi9ibG9jay9pb2N0bC5jCkBAIC01MTUs NiArNTE1LDggQEAgc3RhdGljIGludCBibGtkZXZfY29tbW9uX2lvY3RsKHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwKIAljYXNlIEJMS0NMT1NFWk9ORToKIAljYXNlIEJM S0ZJTklTSFpPTkU6CiAJCXJldHVybiBibGtkZXZfem9uZV9tZ210X2lvY3RsKGJkZXYsIG1vZGUs IGNtZCwgYXJnKTsKKwljYXNlIEJMS1NFVERFU0NaT05FOgorCQlyZXR1cm4gYmxrZGV2X3pvbmVf c2V0X2Rlc2NfaW9jdGwoYmRldiwgbW9kZSwgY21kLCBhcmcpOwogCWNhc2UgQkxLR0VUWk9ORVNa OgogCQlyZXR1cm4gcHV0X3VpbnQoYXJncCwgYmRldl96b25lX3NlY3RvcnMoYmRldikpOwogCWNh c2UgQkxLR0VUTlJaT05FUzoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYyBi L2RyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYwppbmRleCBlOTYxOTEwZGE0YWMuLmI4ZjI1YjBkMDBh ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCisrKyBiL2RyaXZlcnMvbnZt ZS9ob3N0L2NvcmUuYwpAQCAtNzc2LDYgKzc3Niw5IEBAIGJsa19zdGF0dXNfdCBudm1lX3NldHVw X2NtZChzdHJ1Y3QgbnZtZV9ucyAqbnMsIHN0cnVjdCByZXF1ZXN0ICpyZXEsCiAJY2FzZSBSRVFf T1BfWk9ORV9GSU5JU0g6CiAJCXJldCA9IG52bWVfc2V0dXBfem9uZV9tZ210X3NlbmQobnMsIHJl cSwgY21kLCBOVk1FX1pPTkVfRklOSVNIKTsKIAkJYnJlYWs7CisJY2FzZSBSRVFfT1BfWk9ORV9T RVRfREVTQzoKKwkJcmV0ID0gbnZtZV9zZXR1cF96b25lX3NldF9kZXNjKG5zLCByZXEsIGNtZCk7 CisJCWJyZWFrOwogCWNhc2UgUkVRX09QX1dSSVRFX1pFUk9FUzoKIAkJcmV0ID0gbnZtZV9zZXR1 cF93cml0ZV96ZXJvZXMobnMsIHJlcSwgY21kKTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL252bWUvaG9zdC9udm1lLmggYi9kcml2ZXJzL252bWUvaG9zdC9udm1lLmgKaW5kZXggNjYy Zjk1ZmJkOTA5Li41YmQ1YTQzN2IwMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L252 bWUuaAorKysgYi9kcml2ZXJzL252bWUvaG9zdC9udm1lLmgKQEAgLTcwOCw2ICs3MDgsOSBAQCBp bnQgbnZtZV9yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3Rv ciwKIGJsa19zdGF0dXNfdCBudm1lX3NldHVwX3pvbmVfbWdtdF9zZW5kKHN0cnVjdCBudm1lX25z ICpucywgc3RydWN0IHJlcXVlc3QgKnJlcSwKIAkJCQkgICAgICAgc3RydWN0IG52bWVfY29tbWFu ZCAqY21uZCwKIAkJCQkgICAgICAgZW51bSBudm1lX3pvbmVfbWdtdF9hY3Rpb24gYWN0aW9uKTsK KworYmxrX3N0YXR1c190IG52bWVfc2V0dXBfem9uZV9zZXRfZGVzYyhzdHJ1Y3QgbnZtZV9ucyAq bnMsIHN0cnVjdCByZXF1ZXN0ICpyZXEsCisJCQkJICAgICAgIHN0cnVjdCBudm1lX2NvbW1hbmQg KmNtbmQpOwogI2Vsc2UKICNkZWZpbmUgbnZtZV9yZXBvcnRfem9uZXMgTlVMTAogCkBAIC03MTgs NiArNzIxLDEyIEBAIHN0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG52bWVfc2V0dXBfem9uZV9t Z210X3NlbmQoc3RydWN0IG52bWVfbnMgKm5zLAogCXJldHVybiBCTEtfU1RTX05PVFNVUFA7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG52bWVfc2V0dXBfem9uZV9zZXRfZGVzYyhz dHJ1Y3QgbnZtZV9ucyAqbnMsCisJCXN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBudm1lX2Nv bW1hbmQgKmNtbmQpCit7CisJcmV0dXJuIEJMS19TVFNfTk9UU1VQUDsKK30KKwogc3RhdGljIGlu bGluZSBpbnQgbnZtZV91cGRhdGVfem9uZV9pbmZvKHN0cnVjdCBnZW5kaXNrICpkaXNrLAogCQkJ CQlzdHJ1Y3QgbnZtZV9ucyAqbnMsCiAJCQkJCXVuc2lnbmVkIGxiYWYpCmRpZmYgLS1naXQgYS9k cml2ZXJzL252bWUvaG9zdC96bnMuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3pucy5jCmluZGV4IDU3 OTJkOTUzYThmMy4uYmZhNjRjYzY4NWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvaG9zdC96 bnMuYworKysgYi9kcml2ZXJzL252bWUvaG9zdC96bnMuYwpAQCAtMjM5LDMgKzIzOSwxNCBAQCBi bGtfc3RhdHVzX3QgbnZtZV9zZXR1cF96b25lX21nbXRfc2VuZChzdHJ1Y3QgbnZtZV9ucyAqbnMs IHN0cnVjdCByZXF1ZXN0ICpyZXEsCiAKIAlyZXR1cm4gQkxLX1NUU19PSzsKIH0KKworYmxrX3N0 YXR1c190IG52bWVfc2V0dXBfem9uZV9zZXRfZGVzYyhzdHJ1Y3QgbnZtZV9ucyAqbnMsIHN0cnVj dCByZXF1ZXN0ICpyZXEsCisJCXN0cnVjdCBudm1lX2NvbW1hbmQgKmMpCit7CisJYy0+em1zLm9w Y29kZSA9IG52bWVfY21kX3pvbmVfbWdtdF9zZW5kOworCWMtPnptcy5uc2lkID0gY3B1X3RvX2xl MzIobnMtPmhlYWQtPm5zX2lkKTsKKwljLT56bXMuc2xiYSA9IGNwdV90b19sZTY0KG52bWVfc2Vj dF90b19sYmEobnMsIGJsa19ycV9wb3MocmVxKSkpOworCWMtPnptcy5hY3Rpb24gPSBOVk1FX1pP TkVfU0VUX0RFU0NfRVhUOworCisJcmV0dXJuIEJMS19TVFNfT0s7Cit9CmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAppbmRl eCBjY2I4OTVmOTExYjEuLjUzYjdiMDViMDAwNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9i bGtfdHlwZXMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCkBAIC0zMTYsNiArMzE2 LDggQEAgZW51bSByZXFfb3BmIHsKIAlSRVFfT1BfWk9ORV9GSU5JU0gJPSAxMiwKIAkvKiB3cml0 ZSBkYXRhIGF0IHRoZSBjdXJyZW50IHpvbmUgd3JpdGUgcG9pbnRlciAqLwogCVJFUV9PUF9aT05F X0FQUEVORAk9IDEzLAorCS8qIGFzc29jaWF0ZSB6b25lIGRlc2MgZXh0ZW5zaW9uIGRhdGEgdG8g YSB6b25lICovCisJUkVRX09QX1pPTkVfU0VUX0RFU0MJPSAxNCwKIAogCS8qIFNDU0kgcGFzc3Ro cm91Z2ggdXNpbmcgc3RydWN0IHNjc2lfcmVxdWVzdCAqLwogCVJFUV9PUF9TQ1NJX0lOCQk9IDMy LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaCBiL2luY2x1ZGUvbGludXgvYmxr ZGV2LmgKaW5kZXggMmVkNTUwNTVmNjhkLi5jNWYwOTJkZDVhYTMgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApAQCAtMzcwLDcg KzM3MCw4IEBAIGV4dGVybiBpbnQgYmxrZGV2X3JlcG9ydF96b25lc19pb2N0bChzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUsCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZyk7CiBleHRlcm4gaW50IGJsa2Rldl96b25lX21nbXRfaW9jdGwo c3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgZm1vZGVfdCBtb2RlLAogCQkJCSAgdW5zaWduZWQg aW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwotCitleHRlcm4gaW50IGJsa2Rldl96b25lX3Nl dF9kZXNjX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwKKwkJ CQkgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAjZWxzZSAvKiBD T05GSUdfQkxLX0RFVl9aT05FRCAqLwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBibGtk ZXZfbnJfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2spCkBAIC0zOTIsNiArMzkzLDEyIEBAIHN0 YXRpYyBpbmxpbmUgaW50IGJsa2Rldl96b25lX21nbXRfaW9jdGwoc3RydWN0IGJsb2NrX2Rldmlj ZSAqYmRldiwKIAlyZXR1cm4gLUVOT1RUWTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgYmxrZGV2 X3pvbmVfc2V0X2Rlc2NfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKKwkJCQkJICAg ICBmbW9kZV90IG1vZGUsIHVuc2lnbmVkIGludCBjbWQsCisJCQkJCSAgICAgdW5zaWduZWQgbG9u ZyBhcmcpCit7CisJcmV0dXJuIC1FTk9UVFk7Cit9CiAjZW5kaWYgLyogQ09ORklHX0JMS19ERVZf Wk9ORUQgKi8KIAogc3RydWN0IHJlcXVlc3RfcXVldWUgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91 YXBpL2xpbnV4L2Jsa3pvbmVkLmggYi9pbmNsdWRlL3VhcGkvbGludXgvYmxrem9uZWQuaAppbmRl eCA0MmMzMzY2Y2MyNWYuLjY4YWJkYTlhYmYzMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xp bnV4L2Jsa3pvbmVkLmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2Jsa3pvbmVkLmgKQEAgLTE0 Miw2ICsxNDIsMjAgQEAgc3RydWN0IGJsa196b25lX3JhbmdlIHsKIAlfX3U2NAkJbnJfc2VjdG9y czsKIH07CiAKKy8qKgorICogc3RydWN0IGJsa196b25lX3NldF9kZXNjIC0gQkxLU0VUREVTQ1pP TkUgaW9jdGwgcmVxdWVzdHMKKyAqIEBzZWN0b3I6IFN0YXJ0aW5nIHNlY3RvciBvZiB0aGUgem9u ZSB0byBvcGVyYXRlIG9uLgorICogQGZsYWdzOiBGZWF0dXJlIGZsYWdzLgorICogQGxlbjogc2l6 ZSwgaW4gYnl0ZXMsIG9mIHRoZSBkYXRhIHRvIGJlIGFzc29jaWF0ZWQgdG8gdGhlIHpvbmUuCisg KiBAZGF0YTogZGF0YSB0byBiZSBhc3NvY2lhdGVkLgorICovCitzdHJ1Y3QgYmxrX3pvbmVfc2V0 X2Rlc2MgeworCV9fdTY0CQlzZWN0b3I7CisJX191MzIJCWZsYWdzOworCV9fdTMyCQlsZW47CisJ X191OAkJZGF0YVswXTsKK307CisKIC8qKgogICogWm9uZWQgYmxvY2sgZGV2aWNlIGlvY3RsJ3M6 CiAgKgpAQCAtMTU4LDYgKzE3MiwxMCBAQCBzdHJ1Y3QgYmxrX3pvbmVfcmFuZ2UgewogICogICAg ICAgICAgICAgICAgVGhlIDUxMiBCIHNlY3RvciByYW5nZSBtdXN0IGJlIHpvbmUgYWxpZ25lZC4K ICAqIEBCTEtGSU5JU0haT05FOiBNYXJrIHRoZSB6b25lcyBhcyBmdWxsIGluIHRoZSBzcGVjaWZp ZWQgc2VjdG9yIHJhbmdlLgogICogICAgICAgICAgICAgICAgIFRoZSA1MTIgQiBzZWN0b3IgcmFu Z2UgbXVzdCBiZSB6b25lIGFsaWduZWQuCisgKiBAQkxLU0VUREVTQ1pPTkU6IFNldCB6b25lIGRl c2NyaXB0aW9uIGV4dGVuc2lvbiBkYXRhIGZvciB0aGUgem9uZQorICogICAgICAgICAgICAgICAg ICBpbiB0aGUgc3BlY2lmaWVkIHNlY3Rvci4gT24gc3VjY2VzcywgdGhlIHpvbmUKKyAqICAgICAg ICAgICAgICAgICAgd2lsbCB0cmFuc2l0aW9uIHRvIHRoZSBjbG9zZWQgem9uZSBzdGF0ZS4KKyAq ICAgICAgICAgICAgICAgICAgVGhlIDUxMkIgc2VjdG9yIG11c3QgYmUgem9uZSBhbGlnbmVkLgog ICovCiAjZGVmaW5lIEJMS1JFUE9SVFpPTkUJX0lPV1IoMHgxMiwgMTMwLCBzdHJ1Y3QgYmxrX3pv bmVfcmVwb3J0KQogI2RlZmluZSBCTEtSRVNFVFpPTkUJX0lPVygweDEyLCAxMzEsIHN0cnVjdCBi bGtfem9uZV9yYW5nZSkKQEAgLTE2Niw1ICsxODQsNSBAQCBzdHJ1Y3QgYmxrX3pvbmVfcmFuZ2Ug ewogI2RlZmluZSBCTEtPUEVOWk9ORQlfSU9XKDB4MTIsIDEzNCwgc3RydWN0IGJsa196b25lX3Jh bmdlKQogI2RlZmluZSBCTEtDTE9TRVpPTkUJX0lPVygweDEyLCAxMzUsIHN0cnVjdCBibGtfem9u ZV9yYW5nZSkKICNkZWZpbmUgQkxLRklOSVNIWk9ORQlfSU9XKDB4MTIsIDEzNiwgc3RydWN0IGJs a196b25lX3JhbmdlKQotCisjZGVmaW5lIEJMS1NFVERFU0NaT05FCV9JT1coMHgxMiwgMTM3LCBz dHJ1Y3QgYmxrX3pvbmVfc2V0X2Rlc2MpCiAjZW5kaWYgLyogX1VBUElfQkxLWk9ORURfSCAqLwot LSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTGludXgtbnZtZSBtYWlsaW5nIGxpc3QKTGludXgtbnZtZUBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbnZtZQo=