From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB75D7A for ; Fri, 15 Apr 2022 04:54:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Sender:Reply-To:Content-ID:Content-Description; bh=JEp+Ydky4hX/95I7Lm2zDDRxFAsMkADcWxP2d9kmm+k=; b=qsTDfotmtIWHWraU2dgGVjIKy/ C8gTlmi51yWMclX54ORFg7Xna22avP3VcyiXLYBC6nR19lbVENNopVJ9tQGKgQy04iWEaJit4uDtN KQhTJamDnRgtj1KkFNuR9gefCo+gNrgNnOWwTkGS9hkFTQu7vnpYzsSyXBC1wEK5I+vUB41wYHdql 4XWbh8XjCfzVsn8dXva3n3BSPwQT7BQDgyMt4id2YqsEF5oM+pQUbkIbjwYtgr1GpPU7BSmSRTPF+ FYEjAb9JYAnCoiewCCJgGkFfvJ0Vto4uuR3qScpniY79wd9YisLWyxKpjL/zI/YKfvEqQHCtRnFM/ wD74URHg==; Received: from [2a02:1205:504b:4280:f5dd:42a4:896c:d877] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfDyJ-008PkB-3y; Fri, 15 Apr 2022 04:54:15 +0000 From: Christoph Hellwig To: Jens Axboe Cc: dm-devel@redhat.com, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-um@lists.infradead.org, linux-block@vger.kernel.org, drbd-dev@lists.linbit.com, nbd@other.debian.org, ceph-devel@vger.kernel.org, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-bcache@vger.kernel.org, linux-raid@vger.kernel.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, jfs-discussion@lists.sourceforge.net, linux-nilfs@vger.kernel.org, ntfs3@lists.linux.dev, ocfs2-devel@oss.oracle.com, linux-mm@kvack.org, "Martin K . Petersen" , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , =?UTF-8?q?Jan=20H=C3=B6ppner?= , Coly Li , David Sterba Subject: [PATCH 24/27] block: remove QUEUE_FLAG_DISCARD Date: Fri, 15 Apr 2022 06:52:55 +0200 Message-Id: <20220415045258.199825-25-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220415045258.199825-1-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> Precedence: bulk X-Mailing-List: ntfs3@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Just use a non-zero max_discard_sectors as an indicator for discard support, similar to what is done for write zeroes. The only places where needs special attention is the RAID5 driver, which must clear discard support for security reasons by default, even if the default stacking rules would allow for it. Signed-off-by: Christoph Hellwig Reviewed-by: Martin K. Petersen Acked-by: Christoph Böhmwalder [drbd] Acked-by: Jan Höppner [s390] Acked-by: Coly Li [bcache] Acked-by: David Sterba [btrfs] --- arch/um/drivers/ubd_kern.c | 2 -- block/blk-core.c | 2 +- block/blk-lib.c | 2 +- block/blk-mq-debugfs.c | 1 - block/ioctl.c | 3 +-- drivers/block/drbd/drbd_main.c | 2 +- drivers/block/drbd/drbd_nl.c | 19 ++----------------- drivers/block/drbd/drbd_receiver.c | 3 +-- drivers/block/loop.c | 11 +++-------- drivers/block/nbd.c | 5 +---- drivers/block/null_blk/main.c | 1 - drivers/block/rbd.c | 1 - drivers/block/rnbd/rnbd-clt.c | 2 -- drivers/block/rnbd/rnbd-srv-dev.h | 3 --- drivers/block/virtio_blk.c | 2 -- drivers/block/xen-blkback/xenbus.c | 2 +- drivers/block/xen-blkfront.c | 3 +-- drivers/block/zram/zram_drv.c | 1 - drivers/md/bcache/request.c | 4 ++-- drivers/md/bcache/super.c | 3 +-- drivers/md/bcache/sysfs.c | 2 +- drivers/md/dm-cache-target.c | 9 +-------- drivers/md/dm-clone-target.c | 9 +-------- drivers/md/dm-log-writes.c | 3 +-- drivers/md/dm-raid.c | 9 ++------- drivers/md/dm-table.c | 9 ++------- drivers/md/dm-thin.c | 11 +---------- drivers/md/dm.c | 3 +-- drivers/md/md-linear.c | 11 +---------- drivers/md/raid0.c | 7 ------- drivers/md/raid1.c | 16 +--------------- drivers/md/raid10.c | 18 ++---------------- drivers/md/raid5-cache.c | 2 +- drivers/md/raid5.c | 12 ++++-------- drivers/mmc/core/queue.c | 1 - drivers/mtd/mtd_blkdevs.c | 1 - drivers/nvme/host/core.c | 4 ++-- drivers/s390/block/dasd_fba.c | 1 - drivers/scsi/sd.c | 2 -- drivers/target/target_core_device.c | 2 +- fs/btrfs/extent-tree.c | 4 ++-- fs/btrfs/ioctl.c | 2 +- fs/exfat/file.c | 2 +- fs/exfat/super.c | 10 +++------- fs/ext4/ioctl.c | 10 +++------- fs/ext4/super.c | 10 +++------- fs/f2fs/f2fs.h | 3 +-- fs/fat/file.c | 2 +- fs/fat/inode.c | 10 +++------- fs/gfs2/rgrp.c | 2 +- fs/jbd2/journal.c | 7 ++----- fs/jfs/ioctl.c | 2 +- fs/jfs/super.c | 8 ++------ fs/nilfs2/ioctl.c | 2 +- fs/ntfs3/file.c | 2 +- fs/ntfs3/super.c | 2 +- fs/ocfs2/ioctl.c | 2 +- fs/xfs/xfs_discard.c | 2 +- fs/xfs/xfs_super.c | 12 ++++-------- include/linux/blkdev.h | 2 -- mm/swapfile.c | 17 ++--------------- 61 files changed, 73 insertions(+), 244 deletions(-) diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index b03269faef714..085ffdf98e57e 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -483,7 +483,6 @@ static void ubd_handler(void) if ((io_req->error == BLK_STS_NOTSUPP) && (req_op(io_req->req) == REQ_OP_DISCARD)) { blk_queue_max_discard_sectors(io_req->req->q, 0); blk_queue_max_write_zeroes_sectors(io_req->req->q, 0); - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, io_req->req->q); } blk_mq_end_request(io_req->req, io_req->error); kfree(io_req); @@ -803,7 +802,6 @@ static int ubd_open_dev(struct ubd *ubd_dev) ubd_dev->queue->limits.discard_alignment = SECTOR_SIZE; blk_queue_max_discard_sectors(ubd_dev->queue, UBD_MAX_REQUEST); blk_queue_max_write_zeroes_sectors(ubd_dev->queue, UBD_MAX_REQUEST); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, ubd_dev->queue); } blk_queue_flag_set(QUEUE_FLAG_NONROT, ubd_dev->queue); return 0; diff --git a/block/blk-core.c b/block/blk-core.c index 937bb6b863317..b5c3a8049134c 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -820,7 +820,7 @@ void submit_bio_noacct(struct bio *bio) switch (bio_op(bio)) { case REQ_OP_DISCARD: - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(bdev)) goto not_supported; break; case REQ_OP_SECURE_ERASE: diff --git a/block/blk-lib.c b/block/blk-lib.c index 2ae32a722851c..8b4b66d3a9bfc 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -53,7 +53,7 @@ int __blkdev_issue_discard(struct block_device *bdev, sector_t sector, return -EOPNOTSUPP; op = REQ_OP_SECURE_ERASE; } else { - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(bdev)) return -EOPNOTSUPP; op = REQ_OP_DISCARD; } diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c index aa0349e9f083b..fd111c5001256 100644 --- a/block/blk-mq-debugfs.c +++ b/block/blk-mq-debugfs.c @@ -113,7 +113,6 @@ static const char *const blk_queue_flag_name[] = { QUEUE_FLAG_NAME(FAIL_IO), QUEUE_FLAG_NAME(NONROT), QUEUE_FLAG_NAME(IO_STAT), - QUEUE_FLAG_NAME(DISCARD), QUEUE_FLAG_NAME(NOXMERGES), QUEUE_FLAG_NAME(ADD_RANDOM), QUEUE_FLAG_NAME(SECERASE), diff --git a/block/ioctl.c b/block/ioctl.c index ad3771b268b81..c2cd3ba5290ce 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -87,14 +87,13 @@ static int blk_ioctl_discard(struct block_device *bdev, fmode_t mode, { uint64_t range[2]; uint64_t start, len; - struct request_queue *q = bdev_get_queue(bdev); struct inode *inode = bdev->bd_inode; int err; if (!(mode & FMODE_WRITE)) return -EBADF; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(bdev)) return -EOPNOTSUPP; if (copy_from_user(range, (void __user *)arg, sizeof(range))) diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 7b501c8d59928..912560f611c35 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -942,7 +942,7 @@ int drbd_send_sizes(struct drbd_peer_device *peer_device, int trigger_reply, enu cpu_to_be32(bdev_alignment_offset(bdev)); p->qlim->io_min = cpu_to_be32(bdev_io_min(bdev)); p->qlim->io_opt = cpu_to_be32(bdev_io_opt(bdev)); - p->qlim->discard_enabled = blk_queue_discard(q); + p->qlim->discard_enabled = !!bdev_max_discard_sectors(bdev); put_ldev(device); } else { struct request_queue *q = device->rq_queue; diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c index a0a06e238e917..0678ceb505799 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c @@ -1210,7 +1210,7 @@ static void decide_on_discard_support(struct drbd_device *device, first_peer_device(device)->connection; struct request_queue *q = device->rq_queue; - if (bdev && !blk_queue_discard(bdev->backing_bdev->bd_disk->queue)) + if (bdev && !bdev_max_discard_sectors(bdev->backing_bdev)) goto not_supported; if (connection->cstate >= C_CONNECTED && @@ -1230,30 +1230,16 @@ static void decide_on_discard_support(struct drbd_device *device, */ blk_queue_discard_granularity(q, 512); q->limits.max_discard_sectors = drbd_max_discard_sectors(connection); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); q->limits.max_write_zeroes_sectors = drbd_max_discard_sectors(connection); return; not_supported: - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q); blk_queue_discard_granularity(q, 0); q->limits.max_discard_sectors = 0; q->limits.max_write_zeroes_sectors = 0; } -static void fixup_discard_if_not_supported(struct request_queue *q) -{ - /* To avoid confusion, if this queue does not support discard, clear - * max_discard_sectors, which is what lsblk -D reports to the user. - * Older kernels got this wrong in "stack limits". - * */ - if (!blk_queue_discard(q)) { - blk_queue_max_discard_sectors(q, 0); - blk_queue_discard_granularity(q, 0); - } -} - static void fixup_write_zeroes(struct drbd_device *device, struct request_queue *q) { /* Fixup max_write_zeroes_sectors after blk_stack_limits(): @@ -1300,7 +1286,6 @@ static void drbd_setup_queue_param(struct drbd_device *device, struct drbd_backi blk_stack_limits(&q->limits, &b->limits, 0); disk_update_readahead(device->vdisk); } - fixup_discard_if_not_supported(q); fixup_write_zeroes(device, q); } @@ -1447,7 +1432,7 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis if (disk_conf->al_extents > drbd_al_extents_max(nbc)) disk_conf->al_extents = drbd_al_extents_max(nbc); - if (!blk_queue_discard(q)) { + if (!bdev_max_discard_sectors(bdev)) { if (disk_conf->rs_discard_granularity) { disk_conf->rs_discard_granularity = 0; /* disable feature */ drbd_info(device, "rs_discard_granularity feature disabled\n"); diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 0b4c7de463989..8a4a47da56fe9 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -1575,11 +1575,10 @@ int drbd_issue_discard_or_zero_out(struct drbd_device *device, sector_t start, u static bool can_do_reliable_discards(struct drbd_device *device) { - struct request_queue *q = bdev_get_queue(device->ldev->backing_bdev); struct disk_conf *dc; bool can_do; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(device->ldev->backing_bdev)) return false; rcu_read_lock(); diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 8d800d46e4985..0e061c9896eff 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -314,15 +314,12 @@ static int lo_fallocate(struct loop_device *lo, struct request *rq, loff_t pos, mode |= FALLOC_FL_KEEP_SIZE; - if (!blk_queue_discard(lo->lo_queue)) { - ret = -EOPNOTSUPP; - goto out; - } + if (!bdev_max_discard_sectors(lo->lo_device)) + return -EOPNOTSUPP; ret = file->f_op->fallocate(file, mode, pos, blk_rq_bytes(rq)); if (unlikely(ret && ret != -EINVAL && ret != -EOPNOTSUPP)) - ret = -EIO; - out: + return -EIO; return ret; } @@ -787,12 +784,10 @@ static void loop_config_discard(struct loop_device *lo) q->limits.discard_granularity = granularity; blk_queue_max_discard_sectors(q, max_discard_sectors); blk_queue_max_write_zeroes_sectors(q, max_discard_sectors); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); } else { q->limits.discard_granularity = 0; blk_queue_max_discard_sectors(q, 0); blk_queue_max_write_zeroes_sectors(q, 0); - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q); } q->limits.discard_alignment = 0; } diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 5a1f98494dddf..4729aef8c6462 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -1231,8 +1231,6 @@ static void nbd_parse_flags(struct nbd_device *nbd) set_disk_ro(nbd->disk, true); else set_disk_ro(nbd->disk, false); - if (config->flags & NBD_FLAG_SEND_TRIM) - blk_queue_flag_set(QUEUE_FLAG_DISCARD, nbd->disk->queue); if (config->flags & NBD_FLAG_SEND_FLUSH) { if (config->flags & NBD_FLAG_SEND_FUA) blk_queue_write_cache(nbd->disk->queue, true, true); @@ -1319,8 +1317,7 @@ static void nbd_config_put(struct nbd_device *nbd) nbd->tag_set.timeout = 0; nbd->disk->queue->limits.discard_granularity = 0; nbd->disk->queue->limits.discard_alignment = 0; - blk_queue_max_discard_sectors(nbd->disk->queue, UINT_MAX); - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, nbd->disk->queue); + blk_queue_max_discard_sectors(nbd->disk->queue, 0); mutex_unlock(&nbd->config_lock); nbd_put(nbd); diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c index 05b1120e66234..f6493a9e85ed3 100644 --- a/drivers/block/null_blk/main.c +++ b/drivers/block/null_blk/main.c @@ -1767,7 +1767,6 @@ static void null_config_discard(struct nullb *nullb) nullb->q->limits.discard_granularity = nullb->dev->blocksize; nullb->q->limits.discard_alignment = nullb->dev->blocksize; blk_queue_max_discard_sectors(nullb->q, UINT_MAX >> 9); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, nullb->q); } static const struct block_device_operations null_bio_ops = { diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index b844432bad20b..2b21f717cce1a 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -4942,7 +4942,6 @@ static int rbd_init_disk(struct rbd_device *rbd_dev) blk_queue_io_opt(q, rbd_dev->opts->alloc_size); if (rbd_dev->opts->trim) { - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); q->limits.discard_granularity = rbd_dev->opts->alloc_size; blk_queue_max_discard_sectors(q, objset_bytes >> SECTOR_SHIFT); blk_queue_max_write_zeroes_sectors(q, objset_bytes >> SECTOR_SHIFT); diff --git a/drivers/block/rnbd/rnbd-clt.c b/drivers/block/rnbd/rnbd-clt.c index b66e8840b94b8..efa99a3884507 100644 --- a/drivers/block/rnbd/rnbd-clt.c +++ b/drivers/block/rnbd/rnbd-clt.c @@ -1364,8 +1364,6 @@ static void setup_request_queue(struct rnbd_clt_dev *dev) blk_queue_max_discard_sectors(dev->queue, dev->max_discard_sectors); dev->queue->limits.discard_granularity = dev->discard_granularity; dev->queue->limits.discard_alignment = dev->discard_alignment; - if (dev->max_discard_sectors) - blk_queue_flag_set(QUEUE_FLAG_DISCARD, dev->queue); if (dev->secure_discard) blk_queue_flag_set(QUEUE_FLAG_SECERASE, dev->queue); diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h index f82fbb4bbda8e..1f7e1c8fd4d9b 100644 --- a/drivers/block/rnbd/rnbd-srv-dev.h +++ b/drivers/block/rnbd/rnbd-srv-dev.h @@ -49,9 +49,6 @@ static inline int rnbd_dev_get_secure_discard(const struct rnbd_dev *dev) static inline int rnbd_dev_get_max_discard_sects(const struct rnbd_dev *dev) { - if (!blk_queue_discard(bdev_get_queue(dev->bdev))) - return 0; - return bdev_max_discard_sectors(dev->bdev); } diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index a8bcf3f664af1..6ccf15253dee1 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -888,8 +888,6 @@ static int virtblk_probe(struct virtio_device *vdev) v = sg_elems; blk_queue_max_discard_segments(q, min(v, MAX_DISCARD_SEGMENTS)); - - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); } if (virtio_has_feature(vdev, VIRTIO_BLK_F_WRITE_ZEROES)) { diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index 8b691fe50475f..83cd08041e6b3 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -583,7 +583,7 @@ static void xen_blkbk_discard(struct xenbus_transaction xbt, struct backend_info if (!xenbus_read_unsigned(dev->nodename, "discard-enable", 1)) return; - if (blk_queue_discard(q)) { + if (bdev_max_discard_sectors(bdev)) { err = xenbus_printf(xbt, dev->nodename, "discard-granularity", "%u", q->limits.discard_granularity); diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c index 003056d4f7f5f..e13cb4d48f1ea 100644 --- a/drivers/block/xen-blkfront.c +++ b/drivers/block/xen-blkfront.c @@ -944,7 +944,6 @@ static void blkif_set_queue_limits(struct blkfront_info *info) blk_queue_flag_set(QUEUE_FLAG_VIRT, rq); if (info->feature_discard) { - blk_queue_flag_set(QUEUE_FLAG_DISCARD, rq); blk_queue_max_discard_sectors(rq, get_capacity(gd)); rq->limits.discard_granularity = info->discard_granularity ?: info->physical_sector_size; @@ -1606,7 +1605,7 @@ static irqreturn_t blkif_interrupt(int irq, void *dev_id) blkif_req(req)->error = BLK_STS_NOTSUPP; info->feature_discard = 0; info->feature_secdiscard = 0; - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, rq); + blk_queue_max_discard_sectors(rq, 0); blk_queue_flag_clear(QUEUE_FLAG_SECERASE, rq); } break; diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index e9474b02012de..59ff444bf6c76 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1952,7 +1952,6 @@ static int zram_add(void) blk_queue_io_opt(zram->disk->queue, PAGE_SIZE); zram->disk->queue->limits.discard_granularity = PAGE_SIZE; blk_queue_max_discard_sectors(zram->disk->queue, UINT_MAX); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, zram->disk->queue); /* * zram_bio_discard() will clear all logical blocks if logical block diff --git a/drivers/md/bcache/request.c b/drivers/md/bcache/request.c index fdd0194f84dd0..e27f67f06a428 100644 --- a/drivers/md/bcache/request.c +++ b/drivers/md/bcache/request.c @@ -1005,7 +1005,7 @@ static void cached_dev_write(struct cached_dev *dc, struct search *s) bio_get(s->iop.bio); if (bio_op(bio) == REQ_OP_DISCARD && - !blk_queue_discard(bdev_get_queue(dc->bdev))) + !bdev_max_discard_sectors(dc->bdev)) goto insert_data; /* I/O request sent to backing device */ @@ -1115,7 +1115,7 @@ static void detached_dev_do_request(struct bcache_device *d, struct bio *bio, bio->bi_private = ddip; if ((bio_op(bio) == REQ_OP_DISCARD) && - !blk_queue_discard(bdev_get_queue(dc->bdev))) + !bdev_max_discard_sectors(dc->bdev)) bio->bi_end_io(bio); else submit_bio_noacct(bio); diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c index bf3de149d3c9f..2f49e31142f62 100644 --- a/drivers/md/bcache/super.c +++ b/drivers/md/bcache/super.c @@ -973,7 +973,6 @@ static int bcache_device_init(struct bcache_device *d, unsigned int block_size, blk_queue_flag_set(QUEUE_FLAG_NONROT, d->disk->queue); blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, d->disk->queue); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, d->disk->queue); blk_queue_write_cache(q, true, true); @@ -2350,7 +2349,7 @@ static int register_cache(struct cache_sb *sb, struct cache_sb_disk *sb_disk, ca->bdev->bd_holder = ca; ca->sb_disk = sb_disk; - if (blk_queue_discard(bdev_get_queue(bdev))) + if (bdev_max_discard_sectors((bdev))) ca->discard = CACHE_DISCARD(&ca->sb); ret = cache_alloc(ca); diff --git a/drivers/md/bcache/sysfs.c b/drivers/md/bcache/sysfs.c index d1029d71ff3bc..c6f677059214d 100644 --- a/drivers/md/bcache/sysfs.c +++ b/drivers/md/bcache/sysfs.c @@ -1151,7 +1151,7 @@ STORE(__bch_cache) if (attr == &sysfs_discard) { bool v = strtoul_or_return(buf); - if (blk_queue_discard(bdev_get_queue(ca->bdev))) + if (bdev_max_discard_sectors(ca->bdev)) ca->discard = v; if (v != CACHE_DISCARD(&ca->sb)) { diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c index 780a61bc6cc03..28c5de8eca4a0 100644 --- a/drivers/md/dm-cache-target.c +++ b/drivers/md/dm-cache-target.c @@ -3329,13 +3329,6 @@ static int cache_iterate_devices(struct dm_target *ti, return r; } -static bool origin_dev_supports_discard(struct block_device *origin_bdev) -{ - struct request_queue *q = bdev_get_queue(origin_bdev); - - return blk_queue_discard(q); -} - /* * If discard_passdown was enabled verify that the origin device * supports discards. Disable discard_passdown if not. @@ -3349,7 +3342,7 @@ static void disable_passdown_if_not_supported(struct cache *cache) if (!cache->features.discard_passdown) return; - if (!origin_dev_supports_discard(origin_bdev)) + if (!bdev_max_discard_sectors(origin_bdev)) reason = "discard unsupported"; else if (origin_limits->max_discard_sectors < cache->sectors_per_block) diff --git a/drivers/md/dm-clone-target.c b/drivers/md/dm-clone-target.c index 128316a73d016..811b0a5379d03 100644 --- a/drivers/md/dm-clone-target.c +++ b/drivers/md/dm-clone-target.c @@ -2016,13 +2016,6 @@ static void clone_resume(struct dm_target *ti) do_waker(&clone->waker.work); } -static bool bdev_supports_discards(struct block_device *bdev) -{ - struct request_queue *q = bdev_get_queue(bdev); - - return (q && blk_queue_discard(q)); -} - /* * If discard_passdown was enabled verify that the destination device supports * discards. Disable discard_passdown if not. @@ -2036,7 +2029,7 @@ static void disable_passdown_if_not_supported(struct clone *clone) if (!test_bit(DM_CLONE_DISCARD_PASSDOWN, &clone->flags)) return; - if (!bdev_supports_discards(dest_dev)) + if (!bdev_max_discard_sectors(dest_dev)) reason = "discard unsupported"; else if (dest_limits->max_discard_sectors < clone->region_size) reason = "max discard sectors smaller than a region"; diff --git a/drivers/md/dm-log-writes.c b/drivers/md/dm-log-writes.c index c9d036d6bb2ee..e194226c89e54 100644 --- a/drivers/md/dm-log-writes.c +++ b/drivers/md/dm-log-writes.c @@ -866,9 +866,8 @@ static int log_writes_message(struct dm_target *ti, unsigned argc, char **argv, static void log_writes_io_hints(struct dm_target *ti, struct queue_limits *limits) { struct log_writes_c *lc = ti->private; - struct request_queue *q = bdev_get_queue(lc->dev->bdev); - if (!q || !blk_queue_discard(q)) { + if (!bdev_max_discard_sectors(lc->dev->bdev)) { lc->device_supports_discard = false; limits->discard_granularity = lc->sectorsize; limits->max_discard_sectors = (UINT_MAX >> SECTOR_SHIFT); diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 2b26435a6946e..9526ccbedafba 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c @@ -2963,13 +2963,8 @@ static void configure_discard_support(struct raid_set *rs) raid456 = rs_is_raid456(rs); for (i = 0; i < rs->raid_disks; i++) { - struct request_queue *q; - - if (!rs->dev[i].rdev.bdev) - continue; - - q = bdev_get_queue(rs->dev[i].rdev.bdev); - if (!q || !blk_queue_discard(q)) + if (!rs->dev[i].rdev.bdev || + !bdev_max_discard_sectors(rs->dev[i].rdev.bdev)) return; if (raid456) { diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index d46839faa0ca5..0dff6907fd00d 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c @@ -1888,9 +1888,7 @@ static bool dm_table_supports_nowait(struct dm_table *t) static int device_not_discard_capable(struct dm_target *ti, struct dm_dev *dev, sector_t start, sector_t len, void *data) { - struct request_queue *q = bdev_get_queue(dev->bdev); - - return !blk_queue_discard(q); + return !bdev_max_discard_sectors(dev->bdev); } static bool dm_table_supports_discards(struct dm_table *t) @@ -1970,15 +1968,12 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q, blk_queue_flag_clear(QUEUE_FLAG_NOWAIT, q); if (!dm_table_supports_discards(t)) { - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q); - /* Must also clear discard limits... */ q->limits.max_discard_sectors = 0; q->limits.max_hw_discard_sectors = 0; q->limits.discard_granularity = 0; q->limits.discard_alignment = 0; q->limits.discard_misaligned = 0; - } else - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); + } if (dm_table_supports_secure_erase(t)) blk_queue_flag_set(QUEUE_FLAG_SECERASE, q); diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 4d25d0e270313..eded4bcc4545f 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -2802,13 +2802,6 @@ static void requeue_bios(struct pool *pool) /*---------------------------------------------------------------- * Binding of control targets to a pool object *--------------------------------------------------------------*/ -static bool data_dev_supports_discard(struct pool_c *pt) -{ - struct request_queue *q = bdev_get_queue(pt->data_dev->bdev); - - return blk_queue_discard(q); -} - static bool is_factor(sector_t block_size, uint32_t n) { return !sector_div(block_size, n); @@ -2828,7 +2821,7 @@ static void disable_passdown_if_not_supported(struct pool_c *pt) if (!pt->adjusted_pf.discard_passdown) return; - if (!data_dev_supports_discard(pt)) + if (!bdev_max_discard_sectors(pt->data_dev->bdev)) reason = "discard unsupported"; else if (data_limits->max_discard_sectors < pool->sectors_per_block) @@ -4057,8 +4050,6 @@ static void pool_io_hints(struct dm_target *ti, struct queue_limits *limits) /* * Must explicitly disallow stacking discard limits otherwise the * block layer will stack them if pool's data device has support. - * QUEUE_FLAG_DISCARD wouldn't be set but there is no way for the - * user to see that, so make sure to set all discard limits to 0. */ limits->discard_granularity = 0; return; diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 3c5fad7c4ee68..dbbf64ce7e927 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -955,7 +955,6 @@ void disable_discard(struct mapped_device *md) /* device doesn't really support DISCARD, disable it */ limits->max_discard_sectors = 0; - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, md->queue); } void disable_write_zeroes(struct mapped_device *md) @@ -982,7 +981,7 @@ static void clone_endio(struct bio *bio) if (unlikely(error == BLK_STS_TARGET)) { if (bio_op(bio) == REQ_OP_DISCARD && - !q->limits.max_discard_sectors) + !bdev_max_discard_sectors(bio->bi_bdev)) disable_discard(md); else if (bio_op(bio) == REQ_OP_WRITE_ZEROES && !q->limits.max_write_zeroes_sectors) diff --git a/drivers/md/md-linear.c b/drivers/md/md-linear.c index 0f55b079371b1..138a3b25c5c82 100644 --- a/drivers/md/md-linear.c +++ b/drivers/md/md-linear.c @@ -64,7 +64,6 @@ static struct linear_conf *linear_conf(struct mddev *mddev, int raid_disks) struct linear_conf *conf; struct md_rdev *rdev; int i, cnt; - bool discard_supported = false; conf = kzalloc(struct_size(conf, disks, raid_disks), GFP_KERNEL); if (!conf) @@ -96,9 +95,6 @@ static struct linear_conf *linear_conf(struct mddev *mddev, int raid_disks) conf->array_sectors += rdev->sectors; cnt++; - - if (blk_queue_discard(bdev_get_queue(rdev->bdev))) - discard_supported = true; } if (cnt != raid_disks) { pr_warn("md/linear:%s: not enough drives present. Aborting!\n", @@ -106,11 +102,6 @@ static struct linear_conf *linear_conf(struct mddev *mddev, int raid_disks) goto out; } - if (!discard_supported) - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, mddev->queue); - else - blk_queue_flag_set(QUEUE_FLAG_DISCARD, mddev->queue); - /* * Here we calculate the device offsets. */ @@ -252,7 +243,7 @@ static bool linear_make_request(struct mddev *mddev, struct bio *bio) start_sector + data_offset; if (unlikely((bio_op(bio) == REQ_OP_DISCARD) && - !blk_queue_discard(bio->bi_bdev->bd_disk->queue))) { + !bdev_max_discard_sectors(bio->bi_bdev))) { /* Just ignore it */ bio_endio(bio); } else { diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index b21e101183f44..7231f5e1eaa73 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -399,7 +399,6 @@ static int raid0_run(struct mddev *mddev) conf = mddev->private; if (mddev->queue) { struct md_rdev *rdev; - bool discard_supported = false; blk_queue_max_hw_sectors(mddev->queue, mddev->chunk_sectors); blk_queue_max_write_zeroes_sectors(mddev->queue, mddev->chunk_sectors); @@ -412,13 +411,7 @@ static int raid0_run(struct mddev *mddev) rdev_for_each(rdev, mddev) { disk_stack_limits(mddev->gendisk, rdev->bdev, rdev->data_offset << 9); - if (blk_queue_discard(bdev_get_queue(rdev->bdev))) - discard_supported = true; } - if (!discard_supported) - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, mddev->queue); - else - blk_queue_flag_set(QUEUE_FLAG_DISCARD, mddev->queue); } /* calculate array device size */ diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index d81b896855f9f..3da749d150a17 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -802,7 +802,7 @@ static void flush_bio_list(struct r1conf *conf, struct bio *bio) if (test_bit(Faulty, &rdev->flags)) { bio_io_error(bio); } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) && - !blk_queue_discard(bio->bi_bdev->bd_disk->queue))) + !bdev_max_discard_sectors(bio->bi_bdev))) /* Just ignore it */ bio_endio(bio); else @@ -1826,8 +1826,6 @@ static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev) break; } } - if (mddev->queue && blk_queue_discard(bdev_get_queue(rdev->bdev))) - blk_queue_flag_set(QUEUE_FLAG_DISCARD, mddev->queue); print_conf(conf); return err; } @@ -3106,7 +3104,6 @@ static int raid1_run(struct mddev *mddev) int i; struct md_rdev *rdev; int ret; - bool discard_supported = false; if (mddev->level != 1) { pr_warn("md/raid1:%s: raid level not set to mirroring (%d)\n", @@ -3141,8 +3138,6 @@ static int raid1_run(struct mddev *mddev) continue; disk_stack_limits(mddev->gendisk, rdev->bdev, rdev->data_offset << 9); - if (blk_queue_discard(bdev_get_queue(rdev->bdev))) - discard_supported = true; } mddev->degraded = 0; @@ -3179,15 +3174,6 @@ static int raid1_run(struct mddev *mddev) md_set_array_sectors(mddev, raid1_size(mddev, 0, 0)); - if (mddev->queue) { - if (discard_supported) - blk_queue_flag_set(QUEUE_FLAG_DISCARD, - mddev->queue); - else - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, - mddev->queue); - } - ret = md_integrity_register(mddev); if (ret) { md_unregister_thread(&mddev->thread); diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 7816c8b2e8087..36a460015cf58 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -888,7 +888,7 @@ static void flush_pending_writes(struct r10conf *conf) if (test_bit(Faulty, &rdev->flags)) { bio_io_error(bio); } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) && - !blk_queue_discard(bio->bi_bdev->bd_disk->queue))) + !bdev_max_discard_sectors(bio->bi_bdev))) /* Just ignore it */ bio_endio(bio); else @@ -1083,7 +1083,7 @@ static void raid10_unplug(struct blk_plug_cb *cb, bool from_schedule) if (test_bit(Faulty, &rdev->flags)) { bio_io_error(bio); } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) && - !blk_queue_discard(bio->bi_bdev->bd_disk->queue))) + !bdev_max_discard_sectors(bio->bi_bdev))) /* Just ignore it */ bio_endio(bio); else @@ -2144,8 +2144,6 @@ static int raid10_add_disk(struct mddev *mddev, struct md_rdev *rdev) rcu_assign_pointer(p->rdev, rdev); break; } - if (mddev->queue && blk_queue_discard(bdev_get_queue(rdev->bdev))) - blk_queue_flag_set(QUEUE_FLAG_DISCARD, mddev->queue); print_conf(conf); return err; @@ -4069,7 +4067,6 @@ static int raid10_run(struct mddev *mddev) sector_t size; sector_t min_offset_diff = 0; int first = 1; - bool discard_supported = false; if (mddev_init_writes_pending(mddev) < 0) return -ENOMEM; @@ -4140,20 +4137,9 @@ static int raid10_run(struct mddev *mddev) rdev->data_offset << 9); disk->head_position = 0; - - if (blk_queue_discard(bdev_get_queue(rdev->bdev))) - discard_supported = true; first = 0; } - if (mddev->queue) { - if (discard_supported) - blk_queue_flag_set(QUEUE_FLAG_DISCARD, - mddev->queue); - else - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, - mddev->queue); - } /* need to check that every block has at least one working mirror */ if (!enough(conf, -1)) { pr_err("md/raid10:%s: not enough operational mirrors.\n", diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c index a7d50ff9020a8..c3cbf9a574a39 100644 --- a/drivers/md/raid5-cache.c +++ b/drivers/md/raid5-cache.c @@ -1318,7 +1318,7 @@ static void r5l_write_super_and_discard_space(struct r5l_log *log, r5l_write_super(log, end); - if (!blk_queue_discard(bdev_get_queue(bdev))) + if (!bdev_max_discard_sectors(bdev)) return; mddev = log->rdev->mddev; diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 0bbae0e638666..59f91e392a2ae 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -7776,14 +7776,10 @@ static int raid5_run(struct mddev *mddev) * A better idea might be to turn DISCARD into WRITE_ZEROES * requests, as that is required to be safe. */ - if (devices_handle_discard_safely && - mddev->queue->limits.max_discard_sectors >= (stripe >> 9) && - mddev->queue->limits.discard_granularity >= stripe) - blk_queue_flag_set(QUEUE_FLAG_DISCARD, - mddev->queue); - else - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, - mddev->queue); + if (!devices_handle_discard_safely || + mddev->queue->limits.max_discard_sectors < (stripe >> 9) || + mddev->queue->limits.discard_granularity < stripe) + blk_queue_max_discard_sectors(mddev->queue, 0); blk_queue_max_hw_sectors(mddev->queue, UINT_MAX); } diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index c69b2d9df6f16..cac6315010a3d 100644 --- a/drivers/mmc/core/queue.c +++ b/drivers/mmc/core/queue.c @@ -183,7 +183,6 @@ static void mmc_queue_setup_discard(struct request_queue *q, if (!max_discard) return; - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); blk_queue_max_discard_sectors(q, max_discard); q->limits.discard_granularity = card->pref_erase << 9; /* granularity must not be greater than max. discard */ diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c index 64d2b093f114b..f731721114655 100644 --- a/drivers/mtd/mtd_blkdevs.c +++ b/drivers/mtd/mtd_blkdevs.c @@ -377,7 +377,6 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new) blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, new->rq); if (tr->discard) { - blk_queue_flag_set(QUEUE_FLAG_DISCARD, new->rq); blk_queue_max_discard_sectors(new->rq, UINT_MAX); new->rq->limits.discard_granularity = tr->blksize; } diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index efb85c6d8e2d5..b01300d9cd372 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1608,7 +1608,7 @@ static void nvme_config_discard(struct gendisk *disk, struct nvme_ns *ns) u32 size = queue_logical_block_size(queue); if (ctrl->max_discard_sectors == 0) { - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, queue); + blk_queue_max_discard_sectors(queue, 0); return; } @@ -1619,7 +1619,7 @@ static void nvme_config_discard(struct gendisk *disk, struct nvme_ns *ns) queue->limits.discard_granularity = size; /* If discard is already enabled, don't reset queue limits */ - if (blk_queue_flag_test_and_set(QUEUE_FLAG_DISCARD, queue)) + if (queue->limits.max_discard_sectors) return; blk_queue_max_discard_sectors(queue, ctrl->max_discard_sectors); diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c index e084f4deddddd..8bd5665db9198 100644 --- a/drivers/s390/block/dasd_fba.c +++ b/drivers/s390/block/dasd_fba.c @@ -791,7 +791,6 @@ static void dasd_fba_setup_blk_queue(struct dasd_block *block) blk_queue_max_discard_sectors(q, max_discard_sectors); blk_queue_max_write_zeroes_sectors(q, max_discard_sectors); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); } static int dasd_fba_pe_handler(struct dasd_device *device, diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index dc6e55761fd1f..9694e2cfaf9a6 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -797,7 +797,6 @@ static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode) case SD_LBP_FULL: case SD_LBP_DISABLE: blk_queue_max_discard_sectors(q, 0); - blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q); return; case SD_LBP_UNMAP: @@ -830,7 +829,6 @@ static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode) } blk_queue_max_discard_sectors(q, max_blocks * (logical_block_size >> 9)); - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); } static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd) diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c index c3e25bac90d59..6cb9f87843278 100644 --- a/drivers/target/target_core_device.c +++ b/drivers/target/target_core_device.c @@ -838,7 +838,7 @@ bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib, struct request_queue *q = bdev_get_queue(bdev); int block_size = bdev_logical_block_size(bdev); - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(bdev)) return false; attrib->max_unmap_lba_count = diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index f477035a2ac23..efd8deb3ab7e8 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -1291,7 +1291,7 @@ static int do_discard_extent(struct btrfs_io_stripe *stripe, u64 *bytes) ret = btrfs_reset_device_zone(dev_replace->tgtdev, phys, len, &discarded); discarded += src_disc; - } else if (blk_queue_discard(bdev_get_queue(stripe->dev->bdev))) { + } else if (bdev_max_discard_sectors(stripe->dev->bdev)) { ret = btrfs_issue_discard(dev->bdev, phys, len, &discarded); } else { ret = 0; @@ -5987,7 +5987,7 @@ static int btrfs_trim_free_extents(struct btrfs_device *device, u64 *trimmed) *trimmed = 0; /* Discard not supported = nothing to do. */ - if (!blk_queue_discard(bdev_get_queue(device->bdev))) + if (!bdev_max_discard_sectors(device->bdev)) return 0; /* Not writable = nothing to do. */ diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index f46e71061942d..096bb0da03f1c 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -501,7 +501,7 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info, if (!device->bdev) continue; q = bdev_get_queue(device->bdev); - if (blk_queue_discard(q)) { + if (bdev_max_discard_sectors(device->bdev)) { num_devices++; minlen = min_t(u64, q->limits.discard_granularity, minlen); diff --git a/fs/exfat/file.c b/fs/exfat/file.c index 2f51300592366..765e4f63dd18d 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -358,7 +358,7 @@ static int exfat_ioctl_fitrim(struct inode *inode, unsigned long arg) if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(inode->i_sb->s_bdev)) return -EOPNOTSUPP; if (copy_from_user(&range, (struct fstrim_range __user *)arg, sizeof(range))) diff --git a/fs/exfat/super.c b/fs/exfat/super.c index 8ca21e7917d16..be0788ecaf20e 100644 --- a/fs/exfat/super.c +++ b/fs/exfat/super.c @@ -627,13 +627,9 @@ static int exfat_fill_super(struct super_block *sb, struct fs_context *fc) if (opts->allow_utime == (unsigned short)-1) opts->allow_utime = ~opts->fs_dmask & 0022; - if (opts->discard) { - struct request_queue *q = bdev_get_queue(sb->s_bdev); - - if (!blk_queue_discard(q)) { - exfat_warn(sb, "mounting with \"discard\" option, but the device does not support discard"); - opts->discard = 0; - } + if (opts->discard && !bdev_max_discard_sectors(sb->s_bdev)) { + exfat_warn(sb, "mounting with \"discard\" option, but the device does not support discard"); + opts->discard = 0; } sb->s_flags |= SB_NODIRATIME; diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 992229ca2d830..6e3b9eea126f4 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -1044,7 +1044,6 @@ static int ext4_ioctl_checkpoint(struct file *filp, unsigned long arg) __u32 flags = 0; unsigned int flush_flags = 0; struct super_block *sb = file_inode(filp)->i_sb; - struct request_queue *q; if (copy_from_user(&flags, (__u32 __user *)arg, sizeof(__u32))) @@ -1065,10 +1064,8 @@ static int ext4_ioctl_checkpoint(struct file *filp, unsigned long arg) if (flags & ~EXT4_IOC_CHECKPOINT_FLAG_VALID) return -EINVAL; - q = bdev_get_queue(EXT4_SB(sb)->s_journal->j_dev); - if (!q) - return -ENXIO; - if ((flags & JBD2_JOURNAL_FLUSH_DISCARD) && !blk_queue_discard(q)) + if ((flags & JBD2_JOURNAL_FLUSH_DISCARD) && + !bdev_max_discard_sectors(EXT4_SB(sb)->s_journal->j_dev)) return -EOPNOTSUPP; if (flags & EXT4_IOC_CHECKPOINT_FLAG_DRY_RUN) @@ -1393,14 +1390,13 @@ static long __ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) case FITRIM: { - struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; int ret = 0; if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(sb->s_bdev)) return -EOPNOTSUPP; /* diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 81749eaddf4c1..93f4e4e9e2631 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -5458,13 +5458,9 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb) goto failed_mount9; } - if (test_opt(sb, DISCARD)) { - struct request_queue *q = bdev_get_queue(sb->s_bdev); - if (!blk_queue_discard(q)) - ext4_msg(sb, KERN_WARNING, - "mounting with \"discard\" option, but " - "the device does not support discard"); - } + if (test_opt(sb, DISCARD) && !bdev_max_discard_sectors(sb->s_bdev)) + ext4_msg(sb, KERN_WARNING, + "mounting with \"discard\" option, but the device does not support discard"); if (es->s_error_count) mod_timer(&sbi->s_err_report, jiffies + 300*HZ); /* 5 minutes */ diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index cd1e65bcf0b04..0ea9a5fa7c1dd 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -4381,8 +4381,7 @@ static inline bool f2fs_hw_should_discard(struct f2fs_sb_info *sbi) static inline bool f2fs_bdev_support_discard(struct block_device *bdev) { - return blk_queue_discard(bdev_get_queue(bdev)) || - bdev_is_zoned(bdev); + return bdev_max_discard_sectors(bdev) || bdev_is_zoned(bdev); } static inline bool f2fs_hw_support_discard(struct f2fs_sb_info *sbi) diff --git a/fs/fat/file.c b/fs/fat/file.c index a5a309fcc7faf..e4c7d10e80129 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@ -133,7 +133,7 @@ static int fat_ioctl_fitrim(struct inode *inode, unsigned long arg) if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(sb->s_bdev)) return -EOPNOTSUPP; user_range = (struct fstrim_range __user *)arg; diff --git a/fs/fat/inode.c b/fs/fat/inode.c index bf6051bdf1d1d..3d1afb95a925a 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -1872,13 +1872,9 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, goto out_fail; } - if (sbi->options.discard) { - struct request_queue *q = bdev_get_queue(sb->s_bdev); - if (!blk_queue_discard(q)) - fat_msg(sb, KERN_WARNING, - "mounting with \"discard\" option, but " - "the device does not support discard"); - } + if (sbi->options.discard && !bdev_max_discard_sectors(sb->s_bdev)) + fat_msg(sb, KERN_WARNING, + "mounting with \"discard\" option, but the device does not support discard"); fat_set_state(sb, 1, 0); return 0; diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 801ad9f4f2bef..7f20ac9133bc6 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c @@ -1405,7 +1405,7 @@ int gfs2_fitrim(struct file *filp, void __user *argp) if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) return -EROFS; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(sdp->sd_vfs->s_bdev)) return -EOPNOTSUPP; if (copy_from_user(&r, argp, sizeof(r))) diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index fcacafa4510d1..19d226cd4ff4d 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -1762,7 +1762,6 @@ static int __jbd2_journal_erase(journal_t *journal, unsigned int flags) unsigned long block, log_offset; /* logical */ unsigned long long phys_block, block_start, block_stop; /* physical */ loff_t byte_start, byte_stop, byte_count; - struct request_queue *q = bdev_get_queue(journal->j_dev); /* flags must be set to either discard or zeroout */ if ((flags & ~JBD2_JOURNAL_FLUSH_VALID) || !flags || @@ -1770,10 +1769,8 @@ static int __jbd2_journal_erase(journal_t *journal, unsigned int flags) (flags & JBD2_JOURNAL_FLUSH_ZEROOUT))) return -EINVAL; - if (!q) - return -ENXIO; - - if ((flags & JBD2_JOURNAL_FLUSH_DISCARD) && !blk_queue_discard(q)) + if ((flags & JBD2_JOURNAL_FLUSH_DISCARD) && + !bdev_max_discard_sectors(journal->j_dev)) return -EOPNOTSUPP; /* diff --git a/fs/jfs/ioctl.c b/fs/jfs/ioctl.c index 03a845ab4f009..357ae6e5c36ec 100644 --- a/fs/jfs/ioctl.c +++ b/fs/jfs/ioctl.c @@ -117,7 +117,7 @@ long jfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) { + if (!bdev_max_discard_sectors(sb->s_bdev)) { jfs_warn("FITRIM not supported on device"); return -EOPNOTSUPP; } diff --git a/fs/jfs/super.c b/fs/jfs/super.c index f1a13a74cddf3..85d4f44f2ac4d 100644 --- a/fs/jfs/super.c +++ b/fs/jfs/super.c @@ -372,19 +372,16 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize, } case Opt_discard: - { - struct request_queue *q = bdev_get_queue(sb->s_bdev); /* if set to 1, even copying files will cause * trimming :O * -> user has more control over the online trimming */ sbi->minblks_trim = 64; - if (blk_queue_discard(q)) + if (bdev_max_discard_sectors(sb->s_bdev)) *flag |= JFS_DISCARD; else pr_err("JFS: discard option not supported on device\n"); break; - } case Opt_nodiscard: *flag &= ~JFS_DISCARD; @@ -392,10 +389,9 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize, case Opt_discard_minblk: { - struct request_queue *q = bdev_get_queue(sb->s_bdev); char *minblks_trim = args[0].from; int rc; - if (blk_queue_discard(q)) { + if (bdev_max_discard_sectors(sb->s_bdev)) { *flag |= JFS_DISCARD; rc = kstrtouint(minblks_trim, 0, &sbi->minblks_trim); diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c index fec194a666f4b..52b73f558fcb1 100644 --- a/fs/nilfs2/ioctl.c +++ b/fs/nilfs2/ioctl.c @@ -1059,7 +1059,7 @@ static int nilfs_ioctl_trim_fs(struct inode *inode, void __user *argp) if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(nilfs->ns_bdev)) return -EOPNOTSUPP; if (copy_from_user(&range, argp, sizeof(range))) diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c index 787b53b984ee1..e763236169331 100644 --- a/fs/ntfs3/file.c +++ b/fs/ntfs3/file.c @@ -28,7 +28,7 @@ static int ntfs_ioctl_fitrim(struct ntfs_sb_info *sbi, unsigned long arg) if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(sbi->sb->s_bdev)) return -EOPNOTSUPP; user_range = (struct fstrim_range __user *)arg; diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c index cd30e81abbce0..c734085bcce4a 100644 --- a/fs/ntfs3/super.c +++ b/fs/ntfs3/super.c @@ -913,7 +913,7 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc) } rq = bdev_get_queue(bdev); - if (blk_queue_discard(rq) && rq->limits.discard_granularity) { + if (bdev_max_discard_sectors(bdev) && rq->limits.discard_granularity) { sbi->discard_granularity = rq->limits.discard_granularity; sbi->discard_granularity_mask_inv = ~(u64)(sbi->discard_granularity - 1); diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c index f59461d85da45..9b78ef103ada6 100644 --- a/fs/ocfs2/ioctl.c +++ b/fs/ocfs2/ioctl.c @@ -910,7 +910,7 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(sb->s_bdev)) return -EOPNOTSUPP; if (copy_from_user(&range, argp, sizeof(range))) diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c index 0191de8ce9ced..a4e6609d616b7 100644 --- a/fs/xfs/xfs_discard.c +++ b/fs/xfs/xfs_discard.c @@ -162,7 +162,7 @@ xfs_ioc_trim( if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!blk_queue_discard(q)) + if (!bdev_max_discard_sectors(mp->m_ddev_targp->bt_bdev)) return -EOPNOTSUPP; /* diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 54be9d64093ed..a276b8111f636 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1608,14 +1608,10 @@ xfs_fs_fill_super( goto out_filestream_unmount; } - if (xfs_has_discard(mp)) { - struct request_queue *q = bdev_get_queue(sb->s_bdev); - - if (!blk_queue_discard(q)) { - xfs_warn(mp, "mounting with \"discard\" option, but " - "the device does not support discard"); - mp->m_features &= ~XFS_FEAT_DISCARD; - } + if (xfs_has_discard(mp) && !bdev_max_discard_sectors(sb->s_bdev)) { + xfs_warn(mp, + "mounting with \"discard\" option, but the device does not support discard"); + mp->m_features &= ~XFS_FEAT_DISCARD; } if (xfs_has_reflink(mp)) { diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index ce16247d3afab..767ab22e1052a 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -540,7 +540,6 @@ struct request_queue { #define QUEUE_FLAG_NONROT 6 /* non-rotational device (SSD) */ #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ #define QUEUE_FLAG_IO_STAT 7 /* do disk/partitions IO accounting */ -#define QUEUE_FLAG_DISCARD 8 /* supports DISCARD */ #define QUEUE_FLAG_NOXMERGES 9 /* No extended merges */ #define QUEUE_FLAG_ADD_RANDOM 10 /* Contributes to random pool */ #define QUEUE_FLAG_SECERASE 11 /* supports secure erase */ @@ -582,7 +581,6 @@ bool blk_queue_flag_test_and_set(unsigned int flag, struct request_queue *q); test_bit(QUEUE_FLAG_STABLE_WRITES, &(q)->queue_flags) #define blk_queue_io_stat(q) test_bit(QUEUE_FLAG_IO_STAT, &(q)->queue_flags) #define blk_queue_add_random(q) test_bit(QUEUE_FLAG_ADD_RANDOM, &(q)->queue_flags) -#define blk_queue_discard(q) test_bit(QUEUE_FLAG_DISCARD, &(q)->queue_flags) #define blk_queue_zone_resetall(q) \ test_bit(QUEUE_FLAG_ZONE_RESETALL, &(q)->queue_flags) #define blk_queue_secure_erase(q) \ diff --git a/mm/swapfile.c b/mm/swapfile.c index 4069f17a82c8e..5d9cedf9e7b84 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2957,20 +2957,6 @@ static int setup_swap_map_and_extents(struct swap_info_struct *p, return nr_extents; } -/* - * Helper to sys_swapon determining if a given swap - * backing device queue supports DISCARD operations. - */ -static bool swap_discardable(struct swap_info_struct *si) -{ - struct request_queue *q = bdev_get_queue(si->bdev); - - if (!blk_queue_discard(q)) - return false; - - return true; -} - SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) { struct swap_info_struct *p; @@ -3132,7 +3118,8 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) sizeof(long), GFP_KERNEL); - if (p->bdev && (swap_flags & SWAP_FLAG_DISCARD) && swap_discardable(p)) { + if ((swap_flags & SWAP_FLAG_DISCARD) && + p->bdev && bdev_max_discard_sectors(p->bdev)) { /* * When discard is enabled for swap with no particular * policy flagged, we set all swap discard flags here in -- 2.30.2 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 Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7471AC352AA for ; Fri, 15 Apr 2022 04:54:43 +0000 (UTC) Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.94.2) (envelope-from ) id 1nfDyj-00035Z-Nq; Fri, 15 Apr 2022 04:54:42 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1nfDyi-00034S-7L; Fri, 15 Apr 2022 04:54:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:MIME-Version :References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=JEp+Ydky4hX/95I7Lm2zDDRxFAsMkADcWxP2d9kmm+k=; b=fd8Z+JBsgo/zs125V8VW8BylG4 KnmNkShYJqklBgtnyHtFasNIbetJxVHblarmPIOzoMv46Tia1LxjOsHUwzB8uy0iFpHs6G/AWcGjB hYZ5QTkHJPbDciimjq16G7xSJHNg1kAEX5WqlP+uAVe8KIkbgONq3zI7aMdMHF1KVV9o=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=JEp+Ydky4hX/95I7Lm2zDDRxFAsMkADcWxP2d9kmm+k=; b=Q9YBC08F7cx4vtE3XQRRy4J8J9 tcYLNglBf/56Oj3KMRDRCcKpu5eyKRqLPsNMvjN7+x9NlW1ISsOHMTpeoePrcUeRIvIxTV/TNI2Cb aF44MLJYGs5sAz81E+aJf7dvWE3AXRTCQep0BUAvnDc5pFLH5V/TdwB1hgrIXDDtz3JQ=; Received: from bombadil.infradead.org ([198.137.202.133]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.94.2) id 1nfDyh-0001tl-3f; Fri, 15 Apr 2022 04:54:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Sender:Reply-To:Content-ID:Content-Description; bh=JEp+Ydky4hX/95I7Lm2zDDRxFAsMkADcWxP2d9kmm+k=; b=qsTDfotmtIWHWraU2dgGVjIKy/ C8gTlmi51yWMclX54ORFg7Xna22avP3VcyiXLYBC6nR19lbVENNopVJ9tQGKgQy04iWEaJit4uDtN KQhTJamDnRgtj1KkFNuR9gefCo+gNrgNnOWwTkGS9hkFTQu7vnpYzsSyXBC1wEK5I+vUB41wYHdql 4XWbh8XjCfzVsn8dXva3n3BSPwQT7BQDgyMt4id2YqsEF5oM+pQUbkIbjwYtgr1GpPU7BSmSRTPF+ FYEjAb9JYAnCoiewCCJgGkFfvJ0Vto4uuR3qScpniY79wd9YisLWyxKpjL/zI/YKfvEqQHCtRnFM/ wD74URHg==; Received: from [2a02:1205:504b:4280:f5dd:42a4:896c:d877] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfDyJ-008PkB-3y; Fri, 15 Apr 2022 04:54:15 +0000 From: Christoph Hellwig To: Jens Axboe Date: Fri, 15 Apr 2022 06:52:55 +0200 Message-Id: <20220415045258.199825-25-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220415045258.199825-1-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Headers-End: 1nfDyh-0001tl-3f Subject: [f2fs-dev] [PATCH 24/27] block: remove QUEUE_FLAG_DISCARD X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jfs-discussion@lists.sourceforge.net, =?UTF-8?q?Jan=20H=C3=B6ppner?= , linux-nvme@lists.infradead.org, virtualization@lists.linux-foundation.org, linux-mm@kvack.org, dm-devel@redhat.com, target-devel@vger.kernel.org, linux-mtd@lists.infradead.org, drbd-dev@lists.linbit.com, linux-s390@vger.kernel.org, linux-nilfs@vger.kernel.org, linux-scsi@vger.kernel.org, cluster-devel@redhat.com, xen-devel@lists.xenproject.org, linux-ext4@vger.kernel.org, linux-um@lists.infradead.org, nbd@other.debian.org, linux-block@vger.kernel.org, linux-bcache@vger.kernel.org, David Sterba , ceph-devel@vger.kernel.org, Coly Li , linux-raid@vger.kernel.org, "Martin K . Petersen" , linux-mmc@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org, =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , ocfs2-devel@oss.oracle.com, linux-fsdevel@vger.kernel.org, ntfs3@lists.linux.dev, linux-btrfs@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net SnVzdCB1c2UgYSBub24temVybyBtYXhfZGlzY2FyZF9zZWN0b3JzIGFzIGFuIGluZGljYXRvciBm b3IgZGlzY2FyZApzdXBwb3J0LCBzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBmb3Igd3JpdGUgemVy b2VzLgoKVGhlIG9ubHkgcGxhY2VzIHdoZXJlIG5lZWRzIHNwZWNpYWwgYXR0ZW50aW9uIGlzIHRo ZSBSQUlENSBkcml2ZXIsCndoaWNoIG11c3QgY2xlYXIgZGlzY2FyZCBzdXBwb3J0IGZvciBzZWN1 cml0eSByZWFzb25zIGJ5IGRlZmF1bHQsCmV2ZW4gaWYgdGhlIGRlZmF1bHQgc3RhY2tpbmcgcnVs ZXMgd291bGQgYWxsb3cgZm9yIGl0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhlbGx3aWcg PGhjaEBsc3QuZGU+ClJldmlld2VkLWJ5OiBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRl cnNlbkBvcmFjbGUuY29tPgpBY2tlZC1ieTogQ2hyaXN0b3BoIELDtmhtd2FsZGVyIDxjaHJpc3Rv cGguYm9laG13YWxkZXJAbGluYml0LmNvbT4gW2RyYmRdCkFja2VkLWJ5OiBKYW4gSMO2cHBuZXIg PGhvZXBwbmVyQGxpbnV4LmlibS5jb20+IFtzMzkwXQpBY2tlZC1ieTogQ29seSBMaSA8Y29seWxp QHN1c2UuZGU+IFtiY2FjaGVdCkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5j b20+IFtidHJmc10KLS0tCiBhcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYyAgICAgICAgICB8ICAy IC0tCiBibG9jay9ibGstY29yZS5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9i bGstbGliLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9ibGstbXEtZGVidWdm cy5jICAgICAgICAgICAgICB8ICAxIC0KIGJsb2NrL2lvY3RsLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMgICAgICB8ICAyICst CiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8IDE5ICsrLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgIHwgIDMgKy0tCiBkcml2 ZXJzL2Jsb2NrL2xvb3AuYyAgICAgICAgICAgICAgICB8IDExICsrKy0tLS0tLS0tCiBkcml2ZXJz L2Jsb2NrL25iZC5jICAgICAgICAgICAgICAgICB8ICA1ICstLS0tCiBkcml2ZXJzL2Jsb2NrL251 bGxfYmxrL21haW4uYyAgICAgICB8ICAxIC0KIGRyaXZlcnMvYmxvY2svcmJkLmMgICAgICAgICAg ICAgICAgIHwgIDEgLQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgICAgICAgfCAgMiAt LQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oICAgfCAgMyAtLS0KIGRyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jICAgICAgICAgIHwgIDIgLS0KIGRyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2sveGVuYnVzLmMgIHwgIDIgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyAgICAgICB8ICAxIC0K IGRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYyAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9t ZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvYmNhY2hlL3N5 c2ZzLmMgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMgICAg ICAgIHwgIDkgKy0tLS0tLS0tCiBkcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jICAgICAgICB8 ICA5ICstLS0tLS0tLQogZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMgICAgICAgICAgfCAgMyAr LS0KIGRyaXZlcnMvbWQvZG0tcmFpZC5jICAgICAgICAgICAgICAgIHwgIDkgKystLS0tLS0tCiBk cml2ZXJzL21kL2RtLXRhYmxlLmMgICAgICAgICAgICAgICB8ICA5ICsrLS0tLS0tLQogZHJpdmVy cy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgfCAxMSArLS0tLS0tLS0tLQogZHJpdmVycy9t ZC9kbS5jICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvbWQtbGluZWFy LmMgICAgICAgICAgICAgIHwgMTEgKy0tLS0tLS0tLS0KIGRyaXZlcnMvbWQvcmFpZDAuYyAgICAg ICAgICAgICAgICAgIHwgIDcgLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkMS5jICAgICAgICAgICAg ICAgICAgfCAxNiArLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQxMC5jICAgICAgICAg ICAgICAgICB8IDE4ICsrLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5j ICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9yYWlkNS5jICAgICAgICAgICAgICAgICAg fCAxMiArKysrLS0tLS0tLS0KIGRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyAgICAgICAgICAgIHwg IDEgLQogZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYyAgICAgICAgICAgfCAgMSAtCiBkcml2ZXJz L252bWUvaG9zdC9jb3JlLmMgICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvczM5MC9ibG9j ay9kYXNkX2ZiYS5jICAgICAgIHwgIDEgLQogZHJpdmVycy9zY3NpL3NkLmMgICAgICAgICAgICAg ICAgICAgfCAgMiAtLQogZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMiAr LQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyAgICAgICAgICAgICAgfCAgNCArKy0tCiBmcy9idHJm cy9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9maWxlLmMgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9zdXBlci5jICAgICAgICAgICAgICAg ICAgICB8IDEwICsrKy0tLS0tLS0KIGZzL2V4dDQvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAg IHwgMTAgKysrLS0tLS0tLQogZnMvZXh0NC9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgfCAx MCArKystLS0tLS0tCiBmcy9mMmZzL2YyZnMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZmF0L2lu b2RlLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tLS0tCiBmcy9nZnMyL3JncnAu YyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9qYmQyL2pvdXJuYWwuYyAgICAgICAg ICAgICAgICAgICB8ICA3ICsrLS0tLS0KIGZzL2pmcy9pb2N0bC5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGZzL2pmcy9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDggKyst LS0tLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250 ZnMzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250ZnMzL3N1cGVyLmMg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL29jZnMyL2lvY3RsLmMgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGZzL3hmcy94ZnNfc3VwZXIuYyAgICAgICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0t CiBpbmNsdWRlL2xpbnV4L2Jsa2Rldi5oICAgICAgICAgICAgICB8ICAyIC0tCiBtbS9zd2FwZmls ZS5jICAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrLS0tLS0tLS0tLS0tLS0tCiA2MSBmaWxl cyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAyNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC91bS9kcml2ZXJzL3ViZF9rZXJuLmMgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4u YwppbmRleCBiMDMyNjlmYWVmNzE0Li4wODVmZmRmOThlNTdlIDEwMDY0NAotLS0gYS9hcmNoL3Vt L2RyaXZlcnMvdWJkX2tlcm4uYworKysgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYwpAQCAt NDgzLDcgKzQ4Myw2IEBAIHN0YXRpYyB2b2lkIHViZF9oYW5kbGVyKHZvaWQpCiAJCQlpZiAoKGlv X3JlcS0+ZXJyb3IgPT0gQkxLX1NUU19OT1RTVVBQKSAmJiAocmVxX29wKGlvX3JlcS0+cmVxKSA9 PSBSRVFfT1BfRElTQ0FSRCkpIHsKIAkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhp b19yZXEtPnJlcS0+cSwgMCk7CiAJCQkJYmxrX3F1ZXVlX21heF93cml0ZV96ZXJvZXNfc2VjdG9y cyhpb19yZXEtPnJlcS0+cSwgMCk7Ci0JCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxB R19ESVNDQVJELCBpb19yZXEtPnJlcS0+cSk7CiAJCQl9CiAJCQlibGtfbXFfZW5kX3JlcXVlc3Qo aW9fcmVxLT5yZXEsIGlvX3JlcS0+ZXJyb3IpOwogCQkJa2ZyZWUoaW9fcmVxKTsKQEAgLTgwMyw3 ICs4MDIsNiBAQCBzdGF0aWMgaW50IHViZF9vcGVuX2RldihzdHJ1Y3QgdWJkICp1YmRfZGV2KQog CQl1YmRfZGV2LT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gU0VDVE9SX1NJWkU7 CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHViZF9kZXYtPnF1ZXVlLCBVQkRfTUFY X1JFUVVFU1QpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHViZF9kZXYt PnF1ZXVlLCBVQkRfTUFYX1JFUVVFU1QpOwotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxB R19ESVNDQVJELCB1YmRfZGV2LT5xdWV1ZSk7CiAJfQogCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX05PTlJPVCwgdWJkX2Rldi0+cXVldWUpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEv YmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggOTM3YmI2Yjg2MzMxNy4u YjVjM2E4MDQ5MTM0YyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLWNvcmUuYworKysgYi9ibG9jay9i bGstY29yZS5jCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBzdWJtaXRfYmlvX25vYWNjdChzdHJ1 Y3QgYmlvICpiaW8pCiAKIAlzd2l0Y2ggKGJpb19vcChiaW8pKSB7CiAJY2FzZSBSRVFfT1BfRElT Q0FSRDoKLQkJaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikpCiAJCQlnb3RvIG5vdF9zdXBwb3J0ZWQ7CiAJCWJyZWFrOwogCWNh c2UgUkVRX09QX1NFQ1VSRV9FUkFTRToKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1saWIuYyBiL2Js b2NrL2Jsay1saWIuYwppbmRleCAyYWUzMmE3MjI4NTFjLi44YjRiNjZkM2E5YmZjIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbGliLmMKKysrIGIvYmxvY2svYmxrLWxpYi5jCkBAIC01Myw3ICs1Myw3 IEBAIGludCBfX2Jsa2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYs IHNlY3Rvcl90IHNlY3RvciwKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJb3AgPSBSRVFfT1Bf U0VDVVJFX0VSQVNFOwogCX0gZWxzZSB7Ci0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJ CWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQogCQkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCQlvcCA9IFJFUV9PUF9ESVNDQVJEOwogCX0KZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1t cS1kZWJ1Z2ZzLmMgYi9ibG9jay9ibGstbXEtZGVidWdmcy5jCmluZGV4IGFhMDM0OWU5ZjA4M2Iu LmZkMTExYzUwMDEyNTYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKKysrIGIv YmxvY2svYmxrLW1xLWRlYnVnZnMuYwpAQCAtMTEzLDcgKzExMyw2IEBAIHN0YXRpYyBjb25zdCBj aGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7CiAJUVVFVUVfRkxBR19OQU1FKEZB SUxfSU8pLAogCVFVRVVFX0ZMQUdfTkFNRShOT05ST1QpLAogCVFVRVVFX0ZMQUdfTkFNRShJT19T VEFUKSwKLQlRVUVVRV9GTEFHX05BTUUoRElTQ0FSRCksCiAJUVVFVUVfRkxBR19OQU1FKE5PWE1F UkdFUyksCiAJUVVFVUVfRkxBR19OQU1FKEFERF9SQU5ET00pLAogCVFVRVVFX0ZMQUdfTkFNRShT RUNFUkFTRSksCmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuYwppbmRl eCBhZDM3NzFiMjY4YjgxLi5jMmNkM2JhNTI5MGNlIDEwMDY0NAotLS0gYS9ibG9jay9pb2N0bC5j CisrKyBiL2Jsb2NrL2lvY3RsLmMKQEAgLTg3LDE0ICs4NywxMyBAQCBzdGF0aWMgaW50IGJsa19p b2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwKIHsK IAl1aW50NjRfdCByYW5nZVsyXTsKIAl1aW50NjRfdCBzdGFydCwgbGVuOwotCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoYmRldik7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGJkZXYtPmJkX2lub2RlOwogCWludCBlcnI7CiAKIAlpZiAoIShtb2RlICYgRk1PREVfV1JJ VEUpKQogCQlyZXR1cm4gLUVCQURGOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlp ZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKHJhbmdlLCAodm9pZCBfX3VzZXIgKilhcmcsIHNpemVv ZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCmluZGV4IDdiNTAxYzhkNTk5MjguLjkxMjU2 MGY2MTFjMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYworKysg Yi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKQEAgLTk0Miw3ICs5NDIsNyBAQCBpbnQg ZHJiZF9zZW5kX3NpemVzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgaW50 IHRyaWdnZXJfcmVwbHksIGVudQogCQkJY3B1X3RvX2JlMzIoYmRldl9hbGlnbm1lbnRfb2Zmc2V0 KGJkZXYpKTsKIAkJcC0+cWxpbS0+aW9fbWluID0gY3B1X3RvX2JlMzIoYmRldl9pb19taW4oYmRl dikpOwogCQlwLT5xbGltLT5pb19vcHQgPSBjcHVfdG9fYmUzMihiZGV2X2lvX29wdChiZGV2KSk7 Ci0JCXAtPnFsaW0tPmRpc2NhcmRfZW5hYmxlZCA9IGJsa19xdWV1ZV9kaXNjYXJkKHEpOworCQlw LT5xbGltLT5kaXNjYXJkX2VuYWJsZWQgPSAhIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2 KTsKIAkJcHV0X2xkZXYoZGV2aWNlKTsKIAl9IGVsc2UgewogCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGRldmljZS0+cnFfcXVldWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQv ZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCBhMGEwNmUyMzhl OTE3Li4wNjc4Y2ViNTA1Nzk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9u bC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTEyMTAsNyArMTIxMCw3 IEBAIHN0YXRpYyB2b2lkIGRlY2lkZV9vbl9kaXNjYXJkX3N1cHBvcnQoc3RydWN0IGRyYmRfZGV2 aWNlICpkZXZpY2UsCiAJCWZpcnN0X3BlZXJfZGV2aWNlKGRldmljZSktPmNvbm5lY3Rpb247CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBkZXZpY2UtPnJxX3F1ZXVlOwogCi0JaWYgKGJkZXYg JiYgIWJsa19xdWV1ZV9kaXNjYXJkKGJkZXYtPmJhY2tpbmdfYmRldi0+YmRfZGlzay0+cXVldWUp KQorCWlmIChiZGV2ICYmICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldi0+YmFja2luZ19i ZGV2KSkKIAkJZ290byBub3Rfc3VwcG9ydGVkOwogCiAJaWYgKGNvbm5lY3Rpb24tPmNzdGF0ZSA+ PSBDX0NPTk5FQ1RFRCAmJgpAQCAtMTIzMCwzMCArMTIzMCwxNiBAQCBzdGF0aWMgdm9pZCBkZWNp ZGVfb25fZGlzY2FyZF9zdXBwb3J0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCSAqLwog CWJsa19xdWV1ZV9kaXNjYXJkX2dyYW51bGFyaXR5KHEsIDUxMik7CiAJcS0+bGltaXRzLm1heF9k aXNjYXJkX3NlY3RvcnMgPSBkcmJkX21heF9kaXNjYXJkX3NlY3RvcnMoY29ubmVjdGlvbik7Ci0J YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJcS0+bGltaXRzLm1h eF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9CiAJCWRyYmRfbWF4X2Rpc2NhcmRfc2VjdG9ycyhjb25u ZWN0aW9uKTsKIAlyZXR1cm47CiAKIG5vdF9zdXBwb3J0ZWQ6Ci0JYmxrX3F1ZXVlX2ZsYWdfY2xl YXIoUVVFVUVfRkxBR19ESVNDQVJELCBxKTsKIAlibGtfcXVldWVfZGlzY2FyZF9ncmFudWxhcml0 eShxLCAwKTsKIAlxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJcS0+bGltaXRz Lm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9IDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZpeHVwX2Rp c2NhcmRfaWZfbm90X3N1cHBvcnRlZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKLXsKLQkvKiBU byBhdm9pZCBjb25mdXNpb24sIGlmIHRoaXMgcXVldWUgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJk LCBjbGVhcgotCSAqIG1heF9kaXNjYXJkX3NlY3RvcnMsIHdoaWNoIGlzIHdoYXQgbHNibGsgLUQg cmVwb3J0cyB0byB0aGUgdXNlci4KLQkgKiBPbGRlciBrZXJuZWxzIGdvdCB0aGlzIHdyb25nIGlu ICJzdGFjayBsaW1pdHMiLgotCSAqICovCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkgewot CQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxLCAwKTsKLQkJYmxrX3F1ZXVlX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkocSwgMCk7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBmaXh1cF93cml0ZV96 ZXJvZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx KQogewogCS8qIEZpeHVwIG1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyBhZnRlciBibGtfc3RhY2tf bGltaXRzKCk6CkBAIC0xMzAwLDcgKzEyODYsNiBAQCBzdGF0aWMgdm9pZCBkcmJkX3NldHVwX3F1 ZXVlX3BhcmFtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraQog CQlibGtfc3RhY2tfbGltaXRzKCZxLT5saW1pdHMsICZiLT5saW1pdHMsIDApOwogCQlkaXNrX3Vw ZGF0ZV9yZWFkYWhlYWQoZGV2aWNlLT52ZGlzayk7CiAJfQotCWZpeHVwX2Rpc2NhcmRfaWZfbm90 X3N1cHBvcnRlZChxKTsKIAlmaXh1cF93cml0ZV96ZXJvZXMoZGV2aWNlLCBxKTsKIH0KIApAQCAt MTQ0Nyw3ICsxNDMyLDcgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVjdCBk cmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19jb25m LT5hbF9leHRlbnRzID4gZHJiZF9hbF9leHRlbnRzX21heChuYmMpKQogCQlkaXNrX2NvbmYtPmFs X2V4dGVudHMgPSBkcmJkX2FsX2V4dGVudHNfbWF4KG5iYyk7CiAKLQlpZiAoIWJsa19xdWV1ZV9k aXNjYXJkKHEpKSB7CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpIHsKIAkJ aWYgKGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSkgewogCQkJZGlza19jb25mLT5y c19kaXNjYXJkX2dyYW51bGFyaXR5ID0gMDsgLyogZGlzYWJsZSBmZWF0dXJlICovCiAJCQlkcmJk X2luZm8oZGV2aWNlLCAicnNfZGlzY2FyZF9ncmFudWxhcml0eSBmZWF0dXJlIGRpc2FibGVkXG4i KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCmluZGV4IDBiNGM3ZGU0NjM5ODkuLjhhNGE0 N2RhNTZmZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMK KysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTU3NSwxMSArMTU3 NSwxMCBAQCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2Rl dmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCiBzdGF0aWMgYm9vbCBjYW5fZG9fcmVs aWFibGVfZGlzY2FyZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiB7Ci0Jc3RydWN0IHJl cXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShkZXZpY2UtPmxkZXYtPmJhY2tpbmdfYmRl dik7CiAJc3RydWN0IGRpc2tfY29uZiAqZGM7CiAJYm9vbCBjYW5fZG87CiAKLQlpZiAoIWJsa19x dWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+ bGRldi0+YmFja2luZ19iZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJcmN1X3JlYWRfbG9jaygp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3Au YwppbmRleCA4ZDgwMGQ0NmU0OTg1Li4wZTA2MWM5ODk2ZWZmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2Jsb2NrL2xvb3AuYworKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtMzE0LDE1ICszMTQs MTIgQEAgc3RhdGljIGludCBsb19mYWxsb2NhdGUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3Ry dWN0IHJlcXVlc3QgKnJxLCBsb2ZmX3QgcG9zLAogCiAJbW9kZSB8PSBGQUxMT0NfRkxfS0VFUF9T SVpFOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChsby0+bG9fcXVldWUpKSB7Ci0JCXJldCA9 IC1FT1BOT1RTVVBQOwotCQlnb3RvIG91dDsKLQl9CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMobG8tPmxvX2RldmljZSkpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCXJldCA9IGZp bGUtPmZfb3AtPmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsIGJsa19ycV9ieXRlcyhycSkpOwog CWlmICh1bmxpa2VseShyZXQgJiYgcmV0ICE9IC1FSU5WQUwgJiYgcmV0ICE9IC1FT1BOT1RTVVBQ KSkKLQkJcmV0ID0gLUVJTzsKLSBvdXQ6CisJCXJldHVybiAtRUlPOwogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTc4NywxMiArNzg0LDEwIEBAIHN0YXRpYyB2b2lkIGxvb3BfY29uZmlnX2Rpc2NhcmQo c3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBncmFudWxhcml0eTsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgbWF4X2Rp c2NhcmRfc2VjdG9ycyk7CiAJCWJsa19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwg bWF4X2Rpc2NhcmRfc2VjdG9ycyk7Ci0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJ U0NBUkQsIHEpOwogCX0gZWxzZSB7CiAJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0g MDsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgMCk7CiAJCWJsa19xdWV1ZV9t YXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgMCk7Ci0JCWJsa19xdWV1ZV9mbGFnX2NsZWFyKFFV RVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJfQogCXEtPmxpbWl0cy5kaXNjYXJkX2FsaWdubWVudCA9 IDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9u YmQuYwppbmRleCA1YTFmOTg0OTRkZGRmLi40NzI5YWVmOGM2NDYyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2Jsb2NrL25iZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTEyMzEsOCArMTIz MSw2IEBAIHN0YXRpYyB2b2lkIG5iZF9wYXJzZV9mbGFncyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJk KQogCQlzZXRfZGlza19ybyhuYmQtPmRpc2ssIHRydWUpOwogCWVsc2UKIAkJc2V0X2Rpc2tfcm8o bmJkLT5kaXNrLCBmYWxzZSk7Ci0JaWYgKGNvbmZpZy0+ZmxhZ3MgJiBOQkRfRkxBR19TRU5EX1RS SU0pCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG5iZC0+ZGlzay0+ cXVldWUpOwogCWlmIChjb25maWctPmZsYWdzICYgTkJEX0ZMQUdfU0VORF9GTFVTSCkgewogCQlp ZiAoY29uZmlnLT5mbGFncyAmIE5CRF9GTEFHX1NFTkRfRlVBKQogCQkJYmxrX3F1ZXVlX3dyaXRl X2NhY2hlKG5iZC0+ZGlzay0+cXVldWUsIHRydWUsIHRydWUpOwpAQCAtMTMxOSw4ICsxMzE3LDcg QEAgc3RhdGljIHZvaWQgbmJkX2NvbmZpZ19wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKIAkJ bmJkLT50YWdfc2V0LnRpbWVvdXQgPSAwOwogCQluYmQtPmRpc2stPnF1ZXVlLT5saW1pdHMuZGlz Y2FyZF9ncmFudWxhcml0eSA9IDA7CiAJCW5iZC0+ZGlzay0+cXVldWUtPmxpbWl0cy5kaXNjYXJk X2FsaWdubWVudCA9IDA7Ci0JCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5iZC0+ZGlz ay0+cXVldWUsIFVJTlRfTUFYKTsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19E SVNDQVJELCBuYmQtPmRpc2stPnF1ZXVlKTsKKwkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3Rv cnMobmJkLT5kaXNrLT5xdWV1ZSwgMCk7CiAKIAkJbXV0ZXhfdW5sb2NrKCZuYmQtPmNvbmZpZ19s b2NrKTsKIAkJbmJkX3B1dChuYmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Js ay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCAwNWIxMTIwZTY2 MjM0Li5mNjQ5M2E5ZTg1ZWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21h aW4uYworKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtMTc2Nyw3ICsxNzY3 LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxi KQogCW51bGxiLT5xLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IG51bGxiLT5kZXYtPmJs b2Nrc2l6ZTsKIAludWxsYi0+cS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gbnVsbGItPmRl di0+YmxvY2tzaXplOwogCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG51bGxiLT5xLCBV SU5UX01BWCA+PiA5KTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBu dWxsYi0+cSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlv bnMgbnVsbF9iaW9fb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yYmQuYyBiL2Ry aXZlcnMvYmxvY2svcmJkLmMKaW5kZXggYjg0NDQzMmJhZDIwYi4uMmIyMWY3MTdjY2UxYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9yYmQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JiZC5jCkBA IC00OTQyLDcgKzQ5NDIsNiBAQCBzdGF0aWMgaW50IHJiZF9pbml0X2Rpc2soc3RydWN0IHJiZF9k ZXZpY2UgKnJiZF9kZXYpCiAJYmxrX3F1ZXVlX2lvX29wdChxLCByYmRfZGV2LT5vcHRzLT5hbGxv Y19zaXplKTsKIAogCWlmIChyYmRfZGV2LT5vcHRzLT50cmltKSB7Ci0JCWJsa19xdWV1ZV9mbGFn X3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwogCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA9IHJiZF9kZXYtPm9wdHMtPmFsbG9jX3NpemU7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQpOwogCQlibGtfcXVldWVf bWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwppbmRleCBiNjZlODg0MGI5NGI4Li5lZmE5OWEzODg0NTA3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1jbHQuYworKysgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwpAQCAtMTM2NCw4ICsxMzY0LDYgQEAgc3RhdGljIHZvaWQgc2V0 dXBfcmVxdWVzdF9xdWV1ZShzdHJ1Y3Qgcm5iZF9jbHRfZGV2ICpkZXYpCiAJYmxrX3F1ZXVlX21h eF9kaXNjYXJkX3NlY3RvcnMoZGV2LT5xdWV1ZSwgZGV2LT5tYXhfZGlzY2FyZF9zZWN0b3JzKTsK IAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eQk9IGRldi0+ZGlzY2FyZF9n cmFudWxhcml0eTsKIAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9hbGlnbm1lbnQJPSBkZXYt PmRpc2NhcmRfYWxpZ25tZW50OwotCWlmIChkZXYtPm1heF9kaXNjYXJkX3NlY3RvcnMpCi0JCWJs a19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIGRldi0+cXVldWUpOwogCWlmIChk ZXYtPnNlY3VyZV9kaXNjYXJkKQogCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19TRUNF UkFTRSwgZGV2LT5xdWV1ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJk LXNydi1kZXYuaCBiL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi1kZXYuaAppbmRleCBmODJm YmI0YmJkYThlLi4xZjdlMWM4ZmQ0ZDliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQv cm5iZC1zcnYtZGV2LmgKKysrIGIvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oCkBA IC00OSw5ICs0OSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJuYmRfZGV2X2dldF9zZWN1cmVfZGlz Y2FyZChjb25zdCBzdHJ1Y3Qgcm5iZF9kZXYgKmRldikKIAogc3RhdGljIGlubGluZSBpbnQgcm5i ZF9kZXZfZ2V0X21heF9kaXNjYXJkX3NlY3RzKGNvbnN0IHN0cnVjdCBybmJkX2RldiAqZGV2KQog ewotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGV2LT5iZGV2KSkpCi0J CXJldHVybiAwOwotCiAJcmV0dXJuIGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXYtPmJkZXYp OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jCmluZGV4IGE4YmNmM2Y2NjRhZjEuLjZjY2YxNTI1M2RlZTEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCisrKyBiL2RyaXZlcnMvYmxvY2sv dmlydGlvX2Jsay5jCkBAIC04ODgsOCArODg4LDYgQEAgc3RhdGljIGludCB2aXJ0YmxrX3Byb2Jl KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCQkJdiA9IHNnX2VsZW1zOwogCQlibGtfcXVl dWVfbWF4X2Rpc2NhcmRfc2VnbWVudHMocSwKIAkJCQkJICAgICAgIG1pbih2LCBNQVhfRElTQ0FS RF9TRUdNRU5UUykpOwotCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IHEpOwogCX0KIAogCWlmICh2aXJ0aW9faGFzX2ZlYXR1cmUodmRldiwgVklSVElPX0JMS19GX1dS SVRFX1pFUk9FUykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVu YnVzLmMgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jCmluZGV4IDhiNjkxZmU1 MDQ3NWYuLjgzY2QwODA0MWU2YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Jh Y2sveGVuYnVzLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYwpAQCAt NTgzLDcgKzU4Myw3IEBAIHN0YXRpYyB2b2lkIHhlbl9ibGtia19kaXNjYXJkKHN0cnVjdCB4ZW5i dXNfdHJhbnNhY3Rpb24geGJ0LCBzdHJ1Y3QgYmFja2VuZF9pbmZvCiAJaWYgKCF4ZW5idXNfcmVh ZF91bnNpZ25lZChkZXYtPm5vZGVuYW1lLCAiZGlzY2FyZC1lbmFibGUiLCAxKSkKIAkJcmV0dXJu OwogCi0JaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhiZGV2KSkgewogCQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFt ZSwKIAkJCSJkaXNjYXJkLWdyYW51bGFyaXR5IiwgIiV1IiwKIAkJCXEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMg Yi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jCmluZGV4IDAwMzA1NmQ0ZjdmNWYuLmUxM2Ni NGQ0OGYxZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKKysrIGIv ZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwpAQCAtOTQ0LDcgKzk0NCw2IEBAIHN0YXRpYyB2 b2lkIGJsa2lmX3NldF9xdWV1ZV9saW1pdHMoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJ YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfVklSVCwgcnEpOwogCiAJaWYgKGluZm8tPmZl YXR1cmVfZGlzY2FyZCkgewotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCBycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHJxLCBnZXRfY2FwYWNpdHko Z2QpKTsKIAkJcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0gaW5mby0+ZGlzY2FyZF9n cmFudWxhcml0eSA/OgogCQkJCQkJIGluZm8tPnBoeXNpY2FsX3NlY3Rvcl9zaXplOwpAQCAtMTYw Niw3ICsxNjA1LDcgQEAgc3RhdGljIGlycXJldHVybl90IGJsa2lmX2ludGVycnVwdChpbnQgaXJx LCB2b2lkICpkZXZfaWQpCiAJCQkJYmxraWZfcmVxKHJlcSktPmVycm9yID0gQkxLX1NUU19OT1RT VVBQOwogCQkJCWluZm8tPmZlYXR1cmVfZGlzY2FyZCA9IDA7CiAJCQkJaW5mby0+ZmVhdHVyZV9z ZWNkaXNjYXJkID0gMDsKLQkJCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NB UkQsIHJxKTsKKwkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhycSwgMCk7CiAJCQkJ YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19TRUNFUkFTRSwgcnEpOwogCQkJfQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGU5NDc0YjAyMDEyZGUuLjU5ZmY0NDRiZjZj NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCisrKyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCkBAIC0xOTUyLDcgKzE5NTIsNiBAQCBzdGF0aWMgaW50 IHpyYW1fYWRkKHZvaWQpCiAJYmxrX3F1ZXVlX2lvX29wdCh6cmFtLT5kaXNrLT5xdWV1ZSwgUEFH RV9TSVpFKTsKIAl6cmFtLT5kaXNrLT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBQQUdFX1NJWkU7CiAJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMoenJhbS0+ZGlzay0+ cXVldWUsIFVJTlRfTUFYKTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCB6cmFtLT5kaXNrLT5xdWV1ZSk7CiAKIAkvKgogCSAqIHpyYW1fYmlvX2Rpc2NhcmQoKSB3aWxs IGNsZWFyIGFsbCBsb2dpY2FsIGJsb2NrcyBpZiBsb2dpY2FsIGJsb2NrCmRpZmYgLS1naXQgYS9k cml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMgYi9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMK aW5kZXggZmRkMDE5NGY4NGRkMC4uZTI3ZjY3ZjA2YTQyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9iY2FjaGUvcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwpAQCAt MTAwNSw3ICsxMDA1LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVkX2Rldl93cml0ZShzdHJ1Y3QgY2Fj aGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJCWJpb19nZXQocy0+aW9wLmJpbyk7CiAK IAkJaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEICYmCi0JCSAgICAhYmxrX3F1ZXVl X2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkJICAgICFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoZGMtPmJkZXYpKQogCQkJZ290byBpbnNlcnRfZGF0YTsKIAogCQkvKiBJL08g cmVxdWVzdCBzZW50IHRvIGJhY2tpbmcgZGV2aWNlICovCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBz dGF0aWMgdm9pZCBkZXRhY2hlZF9kZXZfZG9fcmVxdWVzdChzdHJ1Y3QgYmNhY2hlX2RldmljZSAq ZCwgc3RydWN0IGJpbyAqYmlvLAogCWJpby0+YmlfcHJpdmF0ZSA9IGRkaXA7CiAKIAlpZiAoKGJp b19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEKSAmJgotCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQo YmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhkYy0+YmRldikpCiAJCWJpby0+YmlfZW5kX2lvKGJpbyk7CiAJZWxzZQogCQlzdWJtaXRfYmlv X25vYWNjdChiaW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyBiL2Ry aXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKaW5kZXggYmYzZGUxNDlkM2M5Zi4uMmY0OWUzMTE0MmY2 MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYworKysgYi9kcml2ZXJzL21k L2JjYWNoZS9zdXBlci5jCkBAIC05NzMsNyArOTczLDYgQEAgc3RhdGljIGludCBiY2FjaGVfZGV2 aWNlX2luaXQoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsIHVuc2lnbmVkIGludCBibG9ja19zaXpl LAogCiAJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfTk9OUk9ULCBkLT5kaXNrLT5xdWV1 ZSk7CiAJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19BRERfUkFORE9NLCBkLT5kaXNr LT5xdWV1ZSk7Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgZC0+ZGlz ay0+cXVldWUpOwogCiAJYmxrX3F1ZXVlX3dyaXRlX2NhY2hlKHEsIHRydWUsIHRydWUpOwogCkBA IC0yMzUwLDcgKzIzNDksNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2NhY2hlKHN0cnVjdCBjYWNo ZV9zYiAqc2IsIHN0cnVjdCBjYWNoZV9zYl9kaXNrICpzYl9kaXNrLAogCWNhLT5iZGV2LT5iZF9o b2xkZXIgPSBjYTsKIAljYS0+c2JfZGlzayA9IHNiX2Rpc2s7CiAKLQlpZiAoYmxrX3F1ZXVlX2Rp c2NhcmQoYmRldl9nZXRfcXVldWUoYmRldikpKQorCWlmIChiZGV2X21heF9kaXNjYXJkX3NlY3Rv cnMoKGJkZXYpKSkKIAkJY2EtPmRpc2NhcmQgPSBDQUNIRV9ESVNDQVJEKCZjYS0+c2IpOwogCiAJ cmV0ID0gY2FjaGVfYWxsb2MoY2EpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3lz ZnMuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3N5c2ZzLmMKaW5kZXggZDEwMjlkNzFmZjNiYy4uYzZm Njc3MDU5MjE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3lzZnMuYworKysgYi9k cml2ZXJzL21kL2JjYWNoZS9zeXNmcy5jCkBAIC0xMTUxLDcgKzExNTEsNyBAQCBTVE9SRShfX2Jj aF9jYWNoZSkKIAlpZiAoYXR0ciA9PSAmc3lzZnNfZGlzY2FyZCkgewogCQlib29sIHYgPSBzdHJ0 b3VsX29yX3JldHVybihidWYpOwogCi0JCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9x dWV1ZShjYS0+YmRldikpKQorCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGNhLT5iZGV2 KSkKIAkJCWNhLT5kaXNjYXJkID0gdjsKIAogCQlpZiAodiAhPSBDQUNIRV9ESVNDQVJEKCZjYS0+ c2IpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jIGIvZHJpdmVy cy9tZC9kbS1jYWNoZS10YXJnZXQuYwppbmRleCA3ODBhNjFiYzZjYzAzLi4yOGM1ZGU4ZWNhNGEw IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jCisrKyBiL2RyaXZlcnMv bWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTMzMjksMTMgKzMzMjksNiBAQCBzdGF0aWMgaW50IGNh Y2hlX2l0ZXJhdGVfZGV2aWNlcyhzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwKIAlyZXR1cm4gcjsKIH0K IAotc3RhdGljIGJvb2wgb3JpZ2luX2Rldl9zdXBwb3J0c19kaXNjYXJkKHN0cnVjdCBibG9ja19k ZXZpY2UgKm9yaWdpbl9iZGV2KQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUob3JpZ2luX2JkZXYpOwotCi0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKHEpOwot fQotCiAvKgogICogSWYgZGlzY2FyZF9wYXNzZG93biB3YXMgZW5hYmxlZCB2ZXJpZnkgdGhhdCB0 aGUgb3JpZ2luIGRldmljZQogICogc3VwcG9ydHMgZGlzY2FyZHMuICBEaXNhYmxlIGRpc2NhcmRf cGFzc2Rvd24gaWYgbm90LgpAQCAtMzM0OSw3ICszMzQyLDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs ZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBjYWNoZSAqY2FjaGUpCiAJaWYgKCFj YWNoZS0+ZmVhdHVyZXMuZGlzY2FyZF9wYXNzZG93bikKIAkJcmV0dXJuOwogCi0JaWYgKCFvcmln aW5fZGV2X3N1cHBvcnRzX2Rpc2NhcmQob3JpZ2luX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlz Y2FyZF9zZWN0b3JzKG9yaWdpbl9iZGV2KSkKIAkJcmVhc29uID0gImRpc2NhcmQgdW5zdXBwb3J0 ZWQiOwogCiAJZWxzZSBpZiAob3JpZ2luX2xpbWl0cy0+bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNh Y2hlLT5zZWN0b3JzX3Blcl9ibG9jaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY2xvbmUt dGFyZ2V0LmMgYi9kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jCmluZGV4IDEyODMxNmE3M2Qw MTYuLjgxMWIwYTUzNzlkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0 LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYwpAQCAtMjAxNiwxMyArMjAxNiw2 IEBAIHN0YXRpYyB2b2lkIGNsb25lX3Jlc3VtZShzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSkKIAlkb193 YWtlcigmY2xvbmUtPndha2VyLndvcmspOwogfQogCi1zdGF0aWMgYm9vbCBiZGV2X3N1cHBvcnRz X2Rpc2NhcmRzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCi17Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLQotCXJldHVybiAocSAmJiBibGtfcXVl dWVfZGlzY2FyZChxKSk7Ci19Ci0KIC8qCiAgKiBJZiBkaXNjYXJkX3Bhc3Nkb3duIHdhcyBlbmFi bGVkIHZlcmlmeSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBkZXZpY2Ugc3VwcG9ydHMKICAqIGRpc2Nh cmRzLiBEaXNhYmxlIGRpc2NhcmRfcGFzc2Rvd24gaWYgbm90LgpAQCAtMjAzNiw3ICsyMDI5LDcg QEAgc3RhdGljIHZvaWQgZGlzYWJsZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBj bG9uZSAqY2xvbmUpCiAJaWYgKCF0ZXN0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCAm Y2xvbmUtPmZsYWdzKSkKIAkJcmV0dXJuOwogCi0JaWYgKCFiZGV2X3N1cHBvcnRzX2Rpc2NhcmRz KGRlc3RfZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXN0X2RldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAllbHNlIGlmIChkZXN0X2xpbWl0cy0+ bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNsb25lLT5yZWdpb25fc2l6ZSkKIAkJcmVhc29uID0gIm1h eCBkaXNjYXJkIHNlY3RvcnMgc21hbGxlciB0aGFuIGEgcmVnaW9uIjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKaW5k ZXggYzlkMDM2ZDZiYjJlZS4uZTE5NDIyNmM4OWU1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9k bS1sb2ctd3JpdGVzLmMKKysrIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKQEAgLTg2Niw5 ICs4NjYsOCBAQCBzdGF0aWMgaW50IGxvZ193cml0ZXNfbWVzc2FnZShzdHJ1Y3QgZG1fdGFyZ2V0 ICp0aSwgdW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YsCiBzdGF0aWMgdm9pZCBsb2dfd3JpdGVz X2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1p dHMpCiB7CiAJc3RydWN0IGxvZ193cml0ZXNfYyAqbGMgPSB0aS0+cHJpdmF0ZTsKLQlzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGxjLT5kZXYtPmJkZXYpOwogCi0JaWYg KCFxIHx8ICFibGtfcXVldWVfZGlzY2FyZChxKSkgeworCWlmICghYmRldl9tYXhfZGlzY2FyZF9z ZWN0b3JzKGxjLT5kZXYtPmJkZXYpKSB7CiAJCWxjLT5kZXZpY2Vfc3VwcG9ydHNfZGlzY2FyZCA9 IGZhbHNlOwogCQlsaW1pdHMtPmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSBsYy0+c2VjdG9yc2l6ZTsK IAkJbGltaXRzLT5tYXhfZGlzY2FyZF9zZWN0b3JzID0gKFVJTlRfTUFYID4+IFNFQ1RPUl9TSElG VCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJhaWQuYyBiL2RyaXZlcnMvbWQvZG0tcmFp ZC5jCmluZGV4IDJiMjY0MzVhNjk0NmUuLjk1MjZjY2JlZGFmYmEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvZG0tcmFpZC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmFpZC5jCkBAIC0yOTYzLDEzICsy OTYzLDggQEAgc3RhdGljIHZvaWQgY29uZmlndXJlX2Rpc2NhcmRfc3VwcG9ydChzdHJ1Y3QgcmFp ZF9zZXQgKnJzKQogCXJhaWQ0NTYgPSByc19pc19yYWlkNDU2KHJzKTsKIAogCWZvciAoaSA9IDA7 IGkgPCBycy0+cmFpZF9kaXNrczsgaSsrKSB7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOwot Ci0JCWlmICghcnMtPmRldltpXS5yZGV2LmJkZXYpCi0JCQljb250aW51ZTsKLQotCQlxID0gYmRl dl9nZXRfcXVldWUocnMtPmRldltpXS5yZGV2LmJkZXYpOwotCQlpZiAoIXEgfHwgIWJsa19xdWV1 ZV9kaXNjYXJkKHEpKQorCQlpZiAoIXJzLT5kZXZbaV0ucmRldi5iZGV2IHx8CisJCSAgICAhYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHJzLT5kZXZbaV0ucmRldi5iZGV2KSkKIAkJCXJldHVybjsK IAogCQlpZiAocmFpZDQ1NikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS10YWJsZS5jIGIv ZHJpdmVycy9tZC9kbS10YWJsZS5jCmluZGV4IGQ0NjgzOWZhYTBjYTUuLjBkZmY2OTA3ZmQwMGQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tdGFibGUuYworKysgYi9kcml2ZXJzL21kL2RtLXRh YmxlLmMKQEAgLTE4ODgsOSArMTg4OCw3IEBAIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRz X25vd2FpdChzdHJ1Y3QgZG1fdGFibGUgKnQpCiBzdGF0aWMgaW50IGRldmljZV9ub3RfZGlzY2Fy ZF9jYXBhYmxlKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgZG1fZGV2ICpkZXYsCiAJCQkJ ICAgICAgc2VjdG9yX3Qgc3RhcnQsIHNlY3Rvcl90IGxlbiwgdm9pZCAqZGF0YSkKIHsKLQlzdHJ1 Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGRldi0+YmRldik7Ci0KLQlyZXR1 cm4gIWJsa19xdWV1ZV9kaXNjYXJkKHEpOworCXJldHVybiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0 b3JzKGRldi0+YmRldik7CiB9CiAKIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRzX2Rpc2Nh cmRzKHN0cnVjdCBkbV90YWJsZSAqdCkKQEAgLTE5NzAsMTUgKzE5NjgsMTIgQEAgaW50IGRtX3Rh YmxlX3NldF9yZXN0cmljdGlvbnMoc3RydWN0IGRtX3RhYmxlICp0LCBzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwKIAkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19OT1dBSVQsIHEpOwog CiAJaWYgKCFkbV90YWJsZV9zdXBwb3J0c19kaXNjYXJkcyh0KSkgewotCQlibGtfcXVldWVfZmxh Z19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwotCQkvKiBNdXN0IGFsc28gY2xlYXIgZGlz Y2FyZCBsaW1pdHMuLi4gKi8KIAkJcS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwog CQlxLT5saW1pdHMubWF4X2h3X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJCXEtPmxpbWl0cy5kaXNj YXJkX2dyYW51bGFyaXR5ID0gMDsKIAkJcS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gMDsK IAkJcS0+bGltaXRzLmRpc2NhcmRfbWlzYWxpZ25lZCA9IDA7Ci0JfSBlbHNlCi0JCWJsa19xdWV1 ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOworCX0KIAogCWlmIChkbV90YWJsZV9z dXBwb3J0c19zZWN1cmVfZXJhc2UodCkpCiAJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFH X1NFQ0VSQVNFLCBxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVy cy9tZC9kbS10aGluLmMKaW5kZXggNGQyNWQwZTI3MDMxMy4uZWRlZDRiY2M0NTQ1ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMKKysrIGIvZHJpdmVycy9tZC9kbS10aGluLmMKQEAg LTI4MDIsMTMgKzI4MDIsNiBAQCBzdGF0aWMgdm9pZCByZXF1ZXVlX2Jpb3Moc3RydWN0IHBvb2wg KnBvb2wpCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqIEJpbmRpbmcgb2YgY29udHJvbCB0YXJnZXRzIHRvIGEgcG9v bCBvYmplY3QKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwotc3RhdGljIGJvb2wgZGF0YV9kZXZfc3VwcG9ydHNfZGlzY2Fy ZChzdHJ1Y3QgcG9vbF9jICpwdCkKLXsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKHB0LT5kYXRhX2Rldi0+YmRldik7Ci0KLQlyZXR1cm4gYmxrX3F1ZXVlX2Rpc2Nh cmQocSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzX2ZhY3RvcihzZWN0b3JfdCBibG9ja19zaXplLCB1 aW50MzJfdCBuKQogewogCXJldHVybiAhc2VjdG9yX2RpdihibG9ja19zaXplLCBuKTsKQEAgLTI4 MjgsNyArMjgyMSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcGFzc2Rvd25faWZfbm90X3N1cHBv cnRlZChzdHJ1Y3QgcG9vbF9jICpwdCkKIAlpZiAoIXB0LT5hZGp1c3RlZF9wZi5kaXNjYXJkX3Bh c3Nkb3duKQogCQlyZXR1cm47CiAKLQlpZiAoIWRhdGFfZGV2X3N1cHBvcnRzX2Rpc2NhcmQocHQp KQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHB0LT5kYXRhX2Rldi0+YmRldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAogCWVsc2UgaWYgKGRhdGFfbGltaXRz LT5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgcG9vbC0+c2VjdG9yc19wZXJfYmxvY2spCkBAIC00MDU3 LDggKzQwNTAsNiBAQCBzdGF0aWMgdm9pZCBwb29sX2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQg KnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1pdHMpCiAJCS8qCiAJCSAqIE11c3QgZXhwbGlj aXRseSBkaXNhbGxvdyBzdGFja2luZyBkaXNjYXJkIGxpbWl0cyBvdGhlcndpc2UgdGhlCiAJCSAq IGJsb2NrIGxheWVyIHdpbGwgc3RhY2sgdGhlbSBpZiBwb29sJ3MgZGF0YSBkZXZpY2UgaGFzIHN1 cHBvcnQuCi0JCSAqIFFVRVVFX0ZMQUdfRElTQ0FSRCB3b3VsZG4ndCBiZSBzZXQgYnV0IHRoZXJl IGlzIG5vIHdheSBmb3IgdGhlCi0JCSAqIHVzZXIgdG8gc2VlIHRoYXQsIHNvIG1ha2Ugc3VyZSB0 byBzZXQgYWxsIGRpc2NhcmQgbGltaXRzIHRvIDAuCiAJCSAqLwogCQlsaW1pdHMtPmRpc2NhcmRf Z3JhbnVsYXJpdHkgPSAwOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLmMg Yi9kcml2ZXJzL21kL2RtLmMKaW5kZXggM2M1ZmFkN2M0ZWU2OC4uZGJiZjY0Y2U3ZTkyNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZC9kbS5jCisrKyBiL2RyaXZlcnMvbWQvZG0uYwpAQCAtOTU1LDcg Kzk1NSw2IEBAIHZvaWQgZGlzYWJsZV9kaXNjYXJkKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCkK IAogCS8qIGRldmljZSBkb2Vzbid0IHJlYWxseSBzdXBwb3J0IERJU0NBUkQsIGRpc2FibGUgaXQg Ki8KIAlsaW1pdHMtPm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwotCWJsa19xdWV1ZV9mbGFnX2Ns ZWFyKFFVRVVFX0ZMQUdfRElTQ0FSRCwgbWQtPnF1ZXVlKTsKIH0KIAogdm9pZCBkaXNhYmxlX3dy aXRlX3plcm9lcyhzdHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQpCkBAIC05ODIsNyArOTgxLDcgQEAg c3RhdGljIHZvaWQgY2xvbmVfZW5kaW8oc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKHVubGlrZWx5 KGVycm9yID09IEJMS19TVFNfVEFSR0VUKSkgewogCQlpZiAoYmlvX29wKGJpbykgPT0gUkVRX09Q X0RJU0NBUkQgJiYKLQkJICAgICFxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycykKKwkJICAg ICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5iaV9iZGV2KSkKIAkJCWRpc2FibGVfZGlz Y2FyZChtZCk7CiAJCWVsc2UgaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9XUklURV9aRVJPRVMg JiYKIAkJCSAhcS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWQvbWQtbGluZWFyLmMgYi9kcml2ZXJzL21kL21kLWxpbmVhci5jCmluZGV4IDBm NTViMDc5MzcxYjEuLjEzOGEzYjI1YzVjODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQtbGlu ZWFyLmMKKysrIGIvZHJpdmVycy9tZC9tZC1saW5lYXIuYwpAQCAtNjQsNyArNjQsNiBAQCBzdGF0 aWMgc3RydWN0IGxpbmVhcl9jb25mICpsaW5lYXJfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBp bnQgcmFpZF9kaXNrcykKIAlzdHJ1Y3QgbGluZWFyX2NvbmYgKmNvbmY7CiAJc3RydWN0IG1kX3Jk ZXYgKnJkZXY7CiAJaW50IGksIGNudDsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFsc2U7 CiAKIAljb25mID0ga3phbGxvYyhzdHJ1Y3Rfc2l6ZShjb25mLCBkaXNrcywgcmFpZF9kaXNrcyks IEdGUF9LRVJORUwpOwogCWlmICghY29uZikKQEAgLTk2LDkgKzk1LDYgQEAgc3RhdGljIHN0cnVj dCBsaW5lYXJfY29uZiAqbGluZWFyX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IHJhaWRf ZGlza3MpCiAKIAkJY29uZi0+YXJyYXlfc2VjdG9ycyArPSByZGV2LT5zZWN0b3JzOwogCQljbnQr KzsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikp KQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCX0KIAlpZiAoY250ICE9IHJhaWRfZGlz a3MpIHsKIAkJcHJfd2FybigibWQvbGluZWFyOiVzOiBub3QgZW5vdWdoIGRyaXZlcyBwcmVzZW50 LiBBYm9ydGluZyFcbiIsCkBAIC0xMDYsMTEgKzEwMiw2IEBAIHN0YXRpYyBzdHJ1Y3QgbGluZWFy X2NvbmYgKmxpbmVhcl9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYsIGludCByYWlkX2Rpc2tzKQog CQlnb3RvIG91dDsKIAl9CiAKLQlpZiAoIWRpc2NhcmRfc3VwcG9ydGVkKQotCQlibGtfcXVldWVf ZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7Ci0JZWxzZQotCQli bGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBtZGRldi0+cXVldWUpOwotCiAJ LyoKIAkgKiBIZXJlIHdlIGNhbGN1bGF0ZSB0aGUgZGV2aWNlIG9mZnNldHMuCiAJICovCkBAIC0y NTIsNyArMjQzLDcgQEAgc3RhdGljIGJvb2wgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRk ZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXN0YXJ0X3NlY3RvciArIGRhdGFfb2Zmc2V0 OwogCiAJaWYgKHVubGlrZWx5KChiaW9fb3AoYmlvKSA9PSBSRVFfT1BfRElTQ0FSRCkgJiYKLQkJ ICAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKSB7 CisJCSAgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiaW8tPmJpX2JkZXYpKSkgewogCQkv KiBKdXN0IGlnbm9yZSBpdCAqLwogCQliaW9fZW5kaW8oYmlvKTsKIAl9IGVsc2UgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkMC5jIGIvZHJpdmVycy9tZC9yYWlkMC5jCmluZGV4IGIyMWUx MDExODNmNDQuLjcyMzFmNWUxZWFhNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAuYwor KysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTM5OSw3ICszOTksNiBAQCBzdGF0aWMgaW50IHJh aWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQogCWNvbmYgPSBtZGRldi0+cHJpdmF0ZTsKIAlp ZiAobWRkZXYtPnF1ZXVlKSB7CiAJCXN0cnVjdCBtZF9yZGV2ICpyZGV2OwotCQlib29sIGRpc2Nh cmRfc3VwcG9ydGVkID0gZmFsc2U7CiAKIAkJYmxrX3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2 LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3pl cm9lc19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwpAQCAtNDEy LDEzICs0MTEsNyBAQCBzdGF0aWMgaW50IHJhaWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQog CQlyZGV2X2Zvcl9lYWNoKHJkZXYsIG1kZGV2KSB7CiAJCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRl di0+Z2VuZGlzaywgcmRldi0+YmRldiwKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsK LQkJCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0J CQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCQl9Ci0JCWlmICghZGlzY2FyZF9zdXBwb3J0 ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5x dWV1ZSk7Ci0JCWVsc2UKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IG1kZGV2LT5xdWV1ZSk7CiAJfQogCiAJLyogY2FsY3VsYXRlIGFycmF5IGRldmljZSBzaXplICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxLmMgYi9kcml2ZXJzL21kL3JhaWQxLmMKaW5k ZXggZDgxYjg5Njg1NWY5Zi4uM2RhNzQ5ZDE1MGExNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9y YWlkMS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEuYwpAQCAtODAyLDcgKzgwMiw3IEBAIHN0YXRp YyB2b2lkIGZsdXNoX2Jpb19saXN0KHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVjdCBiaW8gKmJp bykKIAkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJYmlvX2lvX2Vy cm9yKGJpbyk7CiAJCX0gZWxzZSBpZiAodW5saWtlbHkoKGJpb19vcChiaW8pID09IFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9k aXNrLT5xdWV1ZSkpKQorCQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+Ymlf YmRldikpKQogCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQll bHNlCkBAIC0xODI2LDggKzE4MjYsNiBAQCBzdGF0aWMgaW50IHJhaWQxX2FkZF9kaXNrKHN0cnVj dCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KQogCQkJYnJlYWs7CiAJCX0KIAl9 Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShy ZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG1k ZGV2LT5xdWV1ZSk7CiAJcHJpbnRfY29uZihjb25mKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzEw Niw3ICszMTA0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikK IAlpbnQgaTsKIAlzdHJ1Y3QgbWRfcmRldiAqcmRldjsKIAlpbnQgcmV0OwotCWJvb2wgZGlzY2Fy ZF9zdXBwb3J0ZWQgPSBmYWxzZTsKIAogCWlmIChtZGRldi0+bGV2ZWwgIT0gMSkgewogCQlwcl93 YXJuKCJtZC9yYWlkMTolczogcmFpZCBsZXZlbCBub3Qgc2V0IHRvIG1pcnJvcmluZyAoJWQpXG4i LApAQCAtMzE0MSw4ICszMTM4LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2 ICptZGRldikKIAkJCWNvbnRpbnVlOwogCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRldi0+Z2VuZGlz aywgcmRldi0+YmRldiwKIAkJCQkgIHJkZXYtPmRhdGFfb2Zmc2V0IDw8IDkpOwotCQlpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9z dXBwb3J0ZWQgPSB0cnVlOwogCX0KIAogCW1kZGV2LT5kZWdyYWRlZCA9IDA7CkBAIC0zMTc5LDE1 ICszMTc0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAog CW1kX3NldF9hcnJheV9zZWN0b3JzKG1kZGV2LCByYWlkMV9zaXplKG1kZGV2LCAwLCAwKSk7CiAK LQlpZiAobWRkZXYtPnF1ZXVlKSB7Ci0JCWlmIChkaXNjYXJkX3N1cHBvcnRlZCkKLQkJCWJsa19x dWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwot CQllbHNlCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJ CQkgIG1kZGV2LT5xdWV1ZSk7Ci0JfQotCiAJcmV0ID0gbWRfaW50ZWdyaXR5X3JlZ2lzdGVyKG1k ZGV2KTsKIAlpZiAocmV0KSB7CiAJCW1kX3VucmVnaXN0ZXJfdGhyZWFkKCZtZGRldi0+dGhyZWFk KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5j CmluZGV4IDc4MTZjOGIyZTgwODcuLjM2YTQ2MDAxNWNmNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAtODg4LDcgKzg4OCw3IEBA IHN0YXRpYyB2b2lkIGZsdXNoX3BlbmRpbmdfd3JpdGVzKHN0cnVjdCByMTBjb25mICpjb25mKQog CQkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJCWJpb19pb19lcnJv cihiaW8pOwogCQkJfSBlbHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCQkgICAgIWJsa19xdWV1ZV9kaXNjYXJkKGJpby0+YmlfYmRldi0+YmRf ZGlzay0+cXVldWUpKSkKKwkJCQkJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5i aV9iZGV2KSkpCiAJCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCQliaW9fZW5kaW8oYmlvKTsK IAkJCWVsc2UKQEAgLTEwODMsNyArMTA4Myw3IEBAIHN0YXRpYyB2b2lkIHJhaWQxMF91bnBsdWco c3RydWN0IGJsa19wbHVnX2NiICpjYiwgYm9vbCBmcm9tX3NjaGVkdWxlKQogCQlpZiAodGVzdF9i aXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpKSB7CiAJCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJfSBl bHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9ESVNDQVJEKSAmJgotCQkJ CSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKQor CQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+YmlfYmRldikpKQogCQkJLyog SnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQllbHNlCkBAIC0yMTQ0LDgg KzIxNDQsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9hZGRfZGlzayhzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzdHJ1Y3QgbWRfcmRldiAqcmRldikKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKHAtPnJkZXYsIHJk ZXYpOwogCQlicmVhazsKIAl9Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2Fy ZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7CiAKIAlwcmludF9jb25mKGNvbmYpOwogCXJl dHVybiBlcnI7CkBAIC00MDY5LDcgKzQwNjcsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4oc3Ry dWN0IG1kZGV2ICptZGRldikKIAlzZWN0b3JfdCBzaXplOwogCXNlY3Rvcl90IG1pbl9vZmZzZXRf ZGlmZiA9IDA7CiAJaW50IGZpcnN0ID0gMTsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFs c2U7CiAKIAlpZiAobWRkZXZfaW5pdF93cml0ZXNfcGVuZGluZyhtZGRldikgPCAwKQogCQlyZXR1 cm4gLUVOT01FTTsKQEAgLTQxNDAsMjAgKzQxMzcsOSBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4o c3RydWN0IG1kZGV2ICptZGRldikKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsKIAog CQlkaXNrLT5oZWFkX3Bvc2l0aW9uID0gMDsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRl dl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwog CQlmaXJzdCA9IDA7CiAJfQogCi0JaWYgKG1kZGV2LT5xdWV1ZSkgewotCQlpZiAoZGlzY2FyZF9z dXBwb3J0ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELAotCQkJ CQkJbWRkZXYtPnF1ZXVlKTsKLQkJZWxzZQotCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVf RkxBR19ESVNDQVJELAotCQkJCQkJICBtZGRldi0+cXVldWUpOwotCX0KIAkvKiBuZWVkIHRvIGNo ZWNrIHRoYXQgZXZlcnkgYmxvY2sgaGFzIGF0IGxlYXN0IG9uZSB3b3JraW5nIG1pcnJvciAqLwog CWlmICghZW5vdWdoKGNvbmYsIC0xKSkgewogCQlwcl9lcnIoIm1kL3JhaWQxMDolczogbm90IGVu b3VnaCBvcGVyYXRpb25hbCBtaXJyb3JzLlxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFp ZDUtY2FjaGUuYyBiL2RyaXZlcnMvbWQvcmFpZDUtY2FjaGUuYwppbmRleCBhN2Q1MGZmOTAyMGE4 Li5jM2NiZjlhNTc0YTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQ1LWNhY2hlLmMKKysr IGIvZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5jCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBzdGF0aWMg dm9pZCByNWxfd3JpdGVfc3VwZXJfYW5kX2Rpc2NhcmRfc3BhY2Uoc3RydWN0IHI1bF9sb2cgKmxv ZywKIAogCXI1bF93cml0ZV9zdXBlcihsb2csIGVuZCk7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNj YXJkKGJkZXZfZ2V0X3F1ZXVlKGJkZXYpKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhiZGV2KSkKIAkJcmV0dXJuOwogCiAJbWRkZXYgPSBsb2ctPnJkZXYtPm1kZGV2OwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDBiYmFl MGU2Mzg2NjYuLjU5ZjkxZTM5MmEyYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYwor KysgYi9kcml2ZXJzL21kL3JhaWQ1LmMKQEAgLTc3NzYsMTQgKzc3NzYsMTAgQEAgc3RhdGljIGlu dCByYWlkNV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAkJICogQSBiZXR0ZXIgaWRlYSBtaWdo dCBiZSB0byB0dXJuIERJU0NBUkQgaW50byBXUklURV9aRVJPRVMKIAkJICogcmVxdWVzdHMsIGFz IHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgc2FmZS4KIAkJICovCi0JCWlmIChkZXZpY2VzX2hhbmRs ZV9kaXNjYXJkX3NhZmVseSAmJgotCQkgICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMubWF4X2Rpc2Nh cmRfc2VjdG9ycyA+PSAoc3RyaXBlID4+IDkpICYmCi0JCSAgICBtZGRldi0+cXVldWUtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5ID49IHN0cmlwZSkKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChR VUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwotCQllbHNlCi0JCQlibGtf cXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUp OworCQlpZiAoIWRldmljZXNfaGFuZGxlX2Rpc2NhcmRfc2FmZWx5IHx8CisJCSAgICBtZGRldi0+ cXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgKHN0cmlwZSA+PiA5KSB8fAorCQkg ICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA8IHN0cmlwZSkKKwkJ CWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgMCk7CiAKIAkJYmxr X3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgVUlOVF9NQVgpOwogCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUu YwppbmRleCBjNjliMmQ5ZGY2ZjE2Li5jYWM2MzE1MDEwYTNkIDEwMDY0NAotLS0gYS9kcml2ZXJz L21tYy9jb3JlL3F1ZXVlLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jCkBAIC0xODMs NyArMTgzLDYgQEAgc3RhdGljIHZvaWQgbW1jX3F1ZXVlX3NldHVwX2Rpc2NhcmQoc3RydWN0IHJl cXVlc3RfcXVldWUgKnEsCiAJaWYgKCFtYXhfZGlzY2FyZCkKIAkJcmV0dXJuOwogCi0JYmxrX3F1 ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJYmxrX3F1ZXVlX21heF9kaXNj YXJkX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmQpOwogCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5ID0gY2FyZC0+cHJlZl9lcmFzZSA8PCA5OwogCS8qIGdyYW51bGFyaXR5IG11c3Qgbm90IGJl IGdyZWF0ZXIgdGhhbiBtYXguIGRpc2NhcmQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210 ZF9ibGtkZXZzLmMgYi9kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jCmluZGV4IDY0ZDJiMDkzZjEx NGIuLmY3MzE3MjExMTQ2NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMK KysrIGIvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwpAQCAtMzc3LDcgKzM3Nyw2IEBAIGludCBh ZGRfbXRkX2Jsa3RyYW5zX2RldihzdHJ1Y3QgbXRkX2Jsa3RyYW5zX2RldiAqbmV3KQogCWJsa19x dWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfQUREX1JBTkRPTSwgbmV3LT5ycSk7CiAKIAlpZiAo dHItPmRpc2NhcmQpIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwg bmV3LT5ycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5ldy0+cnEsIFVJTlRf TUFYKTsKIAkJbmV3LT5ycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSB0ci0+Ymxrc2l6 ZTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMgYi9kcml2ZXJzL252 bWUvaG9zdC9jb3JlLmMKaW5kZXggZWZiODVjNmQ4ZTJkNS4uYjAxMzAwZDljZDM3MiAxMDA2NDQK LS0tIGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2Nv cmUuYwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9jb25maWdfZGlzY2Fy ZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQogCXUzMiBzaXplID0g cXVldWVfbG9naWNhbF9ibG9ja19zaXplKHF1ZXVlKTsKIAogCWlmIChjdHJsLT5tYXhfZGlzY2Fy ZF9zZWN0b3JzID09IDApIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19ESVND QVJELCBxdWV1ZSk7CisJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHF1ZXVlLCAwKTsK IAkJcmV0dXJuOwogCX0KIApAQCAtMTYxOSw3ICsxNjE5LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9j b25maWdfZGlzY2FyZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQog CXF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IHNpemU7CiAKIAkvKiBJZiBkaXNj YXJkIGlzIGFscmVhZHkgZW5hYmxlZCwgZG9uJ3QgcmVzZXQgcXVldWUgbGltaXRzICovCi0JaWYg KGJsa19xdWV1ZV9mbGFnX3Rlc3RfYW5kX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHF1ZXVlKSkK KwlpZiAocXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzKQogCQlyZXR1cm47CiAKIAli bGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxdWV1ZSwgY3RybC0+bWF4X2Rpc2NhcmRfc2Vj dG9ycyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9mYmEuYyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCmluZGV4IGUwODRmNGRlZGRkZGQuLjhiZDU2NjVkYjkx OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCisrKyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCkBAIC03OTEsNyArNzkxLDYgQEAgc3RhdGljIHZvaWQg ZGFzZF9mYmFfc2V0dXBfYmxrX3F1ZXVlKHN0cnVjdCBkYXNkX2Jsb2NrICpibG9jaykKIAogCWJs a19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIG1heF9kaXNjYXJkX3NlY3RvcnMpOwogCWJs a19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmRfc2VjdG9ycyk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBpbnQgZGFzZF9mYmFfcGVfaGFuZGxlcihzdHJ1Y3QgZGFzZF9kZXZpY2UgKmRldmljZSwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggZGM2 ZTU1NzYxZmQxZi4uOTY5NGUyY2ZhZjlhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmMK KysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTc5Nyw3ICs3OTcsNiBAQCBzdGF0aWMgdm9pZCBz ZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9k ZSkKIAljYXNlIFNEX0xCUF9GVUxMOgogCWNhc2UgU0RfTEJQX0RJU0FCTEU6CiAJCWJsa19xdWV1 ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIDApOwotCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVV RV9GTEFHX0RJU0NBUkQsIHEpOwogCQlyZXR1cm47CiAKIAljYXNlIFNEX0xCUF9VTk1BUDoKQEAg LTgzMCw3ICs4MjksNiBAQCBzdGF0aWMgdm9pZCBzZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2Nz aV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9kZSkKIAl9CiAKIAlibGtfcXVldWVfbWF4X2Rp c2NhcmRfc2VjdG9ycyhxLCBtYXhfYmxvY2tzICogKGxvZ2ljYWxfYmxvY2tfc2l6ZSA+PiA5KSk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBibGtfc3RhdHVzX3Qgc2Rfc2V0dXBfdW5tYXBfY21uZChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQp CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYyBiL2RyaXZl cnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCmluZGV4IGMzZTI1YmFjOTBkNTkuLjZjYjlm ODc4NDMyNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5j CisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCkBAIC04MzgsNyArODM4 LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3RydWN0IHNlX2Rl dl9hdHRyaWIgKmF0dHJpYiwKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3NpemUoYmRl dik7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKGJkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlhdHRyaWItPm1heF91bm1hcF9s YmFfY291bnQgPQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyBiL2ZzL2J0cmZz L2V4dGVudC10cmVlLmMKaW5kZXggZjQ3NzAzNWEyYWMyMy4uZWZkOGRlYjNhYjdlOCAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5j CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBzdGF0aWMgaW50IGRvX2Rpc2NhcmRfZXh0ZW50KHN0cnVj dCBidHJmc19pb19zdHJpcGUgKnN0cmlwZSwgdTY0ICpieXRlcykKIAkJcmV0ID0gYnRyZnNfcmVz ZXRfZGV2aWNlX3pvbmUoZGV2X3JlcGxhY2UtPnRndGRldiwgcGh5cywgbGVuLAogCQkJCQkgICAg ICAmZGlzY2FyZGVkKTsKIAkJZGlzY2FyZGVkICs9IHNyY19kaXNjOwotCX0gZWxzZSBpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoc3RyaXBlLT5kZXYtPmJkZXYpKSkgeworCX0g ZWxzZSBpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHN0cmlwZS0+ZGV2LT5iZGV2KSkgewog CQlyZXQgPSBidHJmc19pc3N1ZV9kaXNjYXJkKGRldi0+YmRldiwgcGh5cywgbGVuLCAmZGlzY2Fy ZGVkKTsKIAl9IGVsc2UgewogCQlyZXQgPSAwOwpAQCAtNTk4Nyw3ICs1OTg3LDcgQEAgc3RhdGlj IGludCBidHJmc190cmltX2ZyZWVfZXh0ZW50cyhzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2Us IHU2NCAqdHJpbW1lZCkKIAkqdHJpbW1lZCA9IDA7CiAKIAkvKiBEaXNjYXJkIG5vdCBzdXBwb3J0 ZWQgPSBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRf cXVldWUoZGV2aWNlLT5iZGV2KSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoZGV2 aWNlLT5iZGV2KSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBOb3Qgd3JpdGFibGUgPSBub3RoaW5nIHRv IGRvLiAqLwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMK aW5kZXggZjQ2ZTcxMDYxOTQyZC4uMDk2YmIwZGEwM2YxYyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv aW9jdGwuYworKysgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGlj IG5vaW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sCiAJCWlmICghZGV2aWNlLT5iZGV2KQogCQkJY29udGludWU7CiAJCXEgPSBiZGV2X2dl dF9xdWV1ZShkZXZpY2UtPmJkZXYpOwotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKKwkJ aWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJkZXYpKSB7CiAJCQludW1fZGV2 aWNlcysrOwogCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSwKIAkJCQkgICAgIG1pbmxlbik7CmRpZmYgLS1naXQgYS9mcy9leGZhdC9maWxlLmMgYi9m cy9leGZhdC9maWxlLmMKaW5kZXggMmY1MTMwMDU5MjM2Ni4uNzY1ZTRmNjNkZDE4ZCAxMDA2NDQK LS0tIGEvZnMvZXhmYXQvZmlsZS5jCisrKyBiL2ZzL2V4ZmF0L2ZpbGUuYwpAQCAtMzU4LDcgKzM1 OCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJcmV0 dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoaW5vZGUtPmlfc2ItPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAogCWlmIChjb3B5X2Zyb21fdXNlcigmcmFuZ2UsIChzdHJ1Y3QgZnN0cmltX3Jhbmdl IF9fdXNlciAqKWFyZywgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBl ci5jIGIvZnMvZXhmYXQvc3VwZXIuYwppbmRleCA4Y2EyMWU3OTE3ZDE2Li5iZTA3ODhlY2FmMjBl IDEwMDY0NAotLS0gYS9mcy9leGZhdC9zdXBlci5jCisrKyBiL2ZzL2V4ZmF0L3N1cGVyLmMKQEAg LTYyNywxMyArNjI3LDkgQEAgc3RhdGljIGludCBleGZhdF9maWxsX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpZiAob3B0cy0+YWxsb3dfdXRp bWUgPT0gKHVuc2lnbmVkIHNob3J0KS0xKQogCQlvcHRzLT5hbGxvd191dGltZSA9IH5vcHRzLT5m c19kbWFzayAmIDAwMjI7CiAKLQlpZiAob3B0cy0+ZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpIHsKLQkJCWV4ZmF0X3dhcm4oc2IsICJtb3VudGluZyB3aXRoIFwiZGlz Y2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7 Ci0JCQlvcHRzLT5kaXNjYXJkID0gMDsKLQkJfQorCWlmIChvcHRzLT5kaXNjYXJkICYmICFiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoc2ItPnNfYmRldikpIHsKKwkJZXhmYXRfd2FybihzYiwgIm1v dW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBkb2VzIG5vdCBz dXBwb3J0IGRpc2NhcmQiKTsKKwkJb3B0cy0+ZGlzY2FyZCA9IDA7CiAJfQogCiAJc2ItPnNfZmxh Z3MgfD0gU0JfTk9ESVJBVElNRTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW9jdGwuYyBiL2ZzL2V4 dDQvaW9jdGwuYwppbmRleCA5OTIyMjljYTJkODMwLi42ZTNiOWVlYTEyNmY0IDEwMDY0NAotLS0g YS9mcy9leHQ0L2lvY3RsLmMKKysrIGIvZnMvZXh0NC9pb2N0bC5jCkBAIC0xMDQ0LDcgKzEwNDQs NiBAQCBzdGF0aWMgaW50IGV4dDRfaW9jdGxfY2hlY2twb2ludChzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJX191MzIgZmxhZ3MgPSAwOwogCXVuc2lnbmVkIGludCBmbHVz aF9mbGFncyA9IDA7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGZpbGVfaW5vZGUoZmlscCkt Pmlfc2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnE7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIo JmZsYWdzLCAoX191MzIgX191c2VyICopYXJnLAogCQkJCXNpemVvZihfX3UzMikpKQpAQCAtMTA2 NSwxMCArMTA2NCw4IEBAIHN0YXRpYyBpbnQgZXh0NF9pb2N0bF9jaGVja3BvaW50KHN0cnVjdCBm aWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIAlpZiAoZmxhZ3MgJiB+RVhUNF9JT0NfQ0hF Q0tQT0lOVF9GTEFHX1ZBTElEKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXEgPSBiZGV2X2dldF9x dWV1ZShFWFQ0X1NCKHNiKS0+c19qb3VybmFsLT5qX2Rldik7Ci0JaWYgKCFxKQotCQlyZXR1cm4g LUVOWElPOwotCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElTQ0FSRCkgJiYgIWJs a19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElT Q0FSRCkgJiYKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhFWFQ0X1NCKHNiKS0+c19q b3VybmFsLT5qX2RldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChmbGFncyAmIEVY VDRfSU9DX0NIRUNLUE9JTlRfRkxBR19EUllfUlVOKQpAQCAtMTM5MywxNCArMTM5MCwxMyBAQCBz dGF0aWMgbG9uZyBfX2V4dDRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBj bWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCiAJY2FzZSBGSVRSSU06CiAJewotCQlzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0 cmltX3JhbmdlIHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIAogCQlpZiAoIWNhcGFibGUoQ0FQX1NZ U19BRE1JTikpCiAJCQlyZXR1cm4gLUVQRVJNOwogCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQo cSkpCisJCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCiAJCS8qCmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9m cy9leHQ0L3N1cGVyLmMKaW5kZXggODE3NDllYWRkZjRjMS4uOTNmNGU0ZTllMjYzMSAxMDA2NDQK LS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNTQ1OCwxMyAr NTQ1OCw5IEBAIHN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQg KmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCQkJZ290byBmYWlsZWRfbW91bnQ5OwogCX0K IAotCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkpIHsKLQkJc3RydWN0IHJlcXVlc3RfcXVldWUg KnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKLQkJaWYgKCFibGtfcXVldWVfZGlzY2Fy ZChxKSkKLQkJCWV4dDRfbXNnKHNiLCBLRVJOX1dBUk5JTkcsCi0JCQkJICJtb3VudGluZyB3aXRo IFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0ICIKLQkJCQkgInRoZSBkZXZpY2UgZG9lcyBub3Qgc3Vw cG9ydCBkaXNjYXJkIik7Ci0JfQorCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkgJiYgIWJkZXZf bWF4X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZXh0NF9tc2coc2IsIEtFUk5fV0FS TklORywKKwkJCSAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCB0aGUgZGV2 aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwogCiAJaWYgKGVzLT5zX2Vycm9yX2NvdW50 KQogCQltb2RfdGltZXIoJnNiaS0+c19lcnJfcmVwb3J0LCBqaWZmaWVzICsgMzAwKkhaKTsgLyog NSBtaW51dGVzICovCmRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5o CmluZGV4IGNkMWU2NWJjZjBiMDQuLjBlYTlhNWZhN2MxZGQgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMv ZjJmcy5oCisrKyBiL2ZzL2YyZnMvZjJmcy5oCkBAIC00MzgxLDggKzQzODEsNyBAQCBzdGF0aWMg aW5saW5lIGJvb2wgZjJmc19od19zaG91bGRfZGlzY2FyZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmkpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2JkZXZfc3VwcG9ydF9kaXNjYXJkKHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKGJkZXZf Z2V0X3F1ZXVlKGJkZXYpKSB8fAotCSAgICAgICBiZGV2X2lzX3pvbmVkKGJkZXYpOworCXJldHVy biBiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgfHwgYmRldl9pc196b25lZChiZGV2KTsK IH0KIAogc3RhdGljIGlubGluZSBib29sIGYyZnNfaHdfc3VwcG9ydF9kaXNjYXJkKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9mcy9mYXQvZmls ZS5jCmluZGV4IGE1YTMwOWZjYzdmYWYuLmU0YzdkMTBlODAxMjkgMTAwNjQ0Ci0tLSBhL2ZzL2Zh dC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBp bnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGFy ZykKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCiAJCXJldHVybiAtRVBFUk07CiAKLQlp ZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3Jz KHNiLT5zX2JkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAl1c2VyX3JhbmdlID0gKHN0 cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICopYXJnOwpkaWZmIC0tZ2l0IGEvZnMvZmF0L2lub2Rl LmMgYi9mcy9mYXQvaW5vZGUuYwppbmRleCBiZjYwNTFiZGYxZDFkLi4zZDFhZmI5NWE5MjVhIDEw MDY0NAotLS0gYS9mcy9mYXQvaW5vZGUuYworKysgYi9mcy9mYXQvaW5vZGUuYwpAQCAtMTg3Miwx MyArMTg3Miw5IEBAIGludCBmYXRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2 b2lkICpkYXRhLCBpbnQgc2lsZW50LCBpbnQgaXN2ZmF0LAogCQlnb3RvIG91dF9mYWlsOwogCX0K IAotCWlmIChzYmktPm9wdGlvbnMuZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJk KHEpKQotCQkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5HLAotCQkJCQkibW91bnRpbmcgd2l0aCBc ImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0JCQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBv cnQgZGlzY2FyZCIpOwotCX0KKwlpZiAoc2JpLT5vcHRpb25zLmRpc2NhcmQgJiYgIWJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5H LAorCQkJIm1vdW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IGRpc2NhcmQiKTsKIAogCWZhdF9zZXRfc3RhdGUoc2IsIDEsIDApOwog CXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA4MDFhZDlmNGYyYmVmLi43ZjIwYWM5MTMzYmM2IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoIXRlc3Rf Yml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkKIAkJcmV0dXJuIC1FUk9GUzsK IAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoc2RwLT5zZF92ZnMtPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlm IChjb3B5X2Zyb21fdXNlcigmciwgYXJncCwgc2l6ZW9mKHIpKSkKZGlmZiAtLWdpdCBhL2ZzL2pi ZDIvam91cm5hbC5jIGIvZnMvamJkMi9qb3VybmFsLmMKaW5kZXggZmNhY2FmYTQ1MTBkMS4uMTlk MjI2Y2Q0ZmY0ZCAxMDA2NDQKLS0tIGEvZnMvamJkMi9qb3VybmFsLmMKKysrIGIvZnMvamJkMi9q b3VybmFsLmMKQEAgLTE3NjIsNyArMTc2Miw2IEBAIHN0YXRpYyBpbnQgX19qYmQyX2pvdXJuYWxf ZXJhc2Uoam91cm5hbF90ICpqb3VybmFsLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJdW5zaWduZWQg bG9uZyBibG9jaywgbG9nX29mZnNldDsgLyogbG9naWNhbCAqLwogCXVuc2lnbmVkIGxvbmcgbG9u ZyBwaHlzX2Jsb2NrLCBibG9ja19zdGFydCwgYmxvY2tfc3RvcDsgLyogcGh5c2ljYWwgKi8KIAls b2ZmX3QgYnl0ZV9zdGFydCwgYnl0ZV9zdG9wLCBieXRlX2NvdW50OwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoam91cm5hbC0+al9kZXYpOwogCiAJLyogZmxhZ3Mg bXVzdCBiZSBzZXQgdG8gZWl0aGVyIGRpc2NhcmQgb3IgemVyb291dCAqLwogCWlmICgoZmxhZ3Mg JiB+SkJEMl9KT1VSTkFMX0ZMVVNIX1ZBTElEKSB8fCAhZmxhZ3MgfHwKQEAgLTE3NzAsMTAgKzE3 NjksOCBAQCBzdGF0aWMgaW50IF9famJkMl9qb3VybmFsX2VyYXNlKGpvdXJuYWxfdCAqam91cm5h bCwgdW5zaWduZWQgaW50IGZsYWdzKQogCQkJKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX1pF Uk9PVVQpKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoIXEpCi0JCXJldHVybiAtRU5YSU87 Ci0KLQlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQpICYmICFibGtfcXVl dWVfZGlzY2FyZChxKSkKKwlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQp ICYmCisJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoam91cm5hbC0+al9kZXYpKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvamZzL2lvY3RsLmMgYi9m cy9qZnMvaW9jdGwuYwppbmRleCAwM2E4NDVhYjRmMDA5Li4zNTdhZTZlNWMzNmVjIDEwMDY0NAot LS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpAQCAtMTE3LDcgKzExNyw3 IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQkJcmV0 dXJuIC1FUEVSTTsKIAotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCWlmICghYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQlqZnNfd2FybigiRklUUklN IG5vdCBzdXBwb3J0ZWQgb24gZGV2aWNlIik7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0K ZGlmZiAtLWdpdCBhL2ZzL2pmcy9zdXBlci5jIGIvZnMvamZzL3N1cGVyLmMKaW5kZXggZjFhMTNh NzRjZGRmMy4uODVkNGY0NGYyYWM0ZCAxMDA2NDQKLS0tIGEvZnMvamZzL3N1cGVyLmMKKysrIGIv ZnMvamZzL3N1cGVyLmMKQEAgLTM3MiwxOSArMzcyLDE2IEBAIHN0YXRpYyBpbnQgcGFyc2Vfb3B0 aW9ucyhjaGFyICpvcHRpb25zLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzNjQgKm5ld0xWU2l6 ZSwKIAkJfQogCiAJCWNhc2UgT3B0X2Rpc2NhcmQ6Ci0JCXsKLQkJCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCQkvKiBpZiBzZXQgdG8gMSwg ZXZlbiBjb3B5aW5nIGZpbGVzIHdpbGwgY2F1c2UKIAkJCSAqIHRyaW1taW5nIDpPCiAJCQkgKiAt PiB1c2VyIGhhcyBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgb25saW5lIHRyaW1taW5nCiAJCQkgKi8K IAkJCXNiaS0+bWluYmxrc190cmltID0gNjQ7Ci0JCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkp CisJCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJCSpmbGFn IHw9IEpGU19ESVNDQVJEOwogCQkJZWxzZQogCQkJCXByX2VycigiSkZTOiBkaXNjYXJkIG9wdGlv biBub3Qgc3VwcG9ydGVkIG9uIGRldmljZVxuIik7CiAJCQlicmVhazsKLQkJfQogCiAJCWNhc2Ug T3B0X25vZGlzY2FyZDoKIAkJCSpmbGFnICY9IH5KRlNfRElTQ0FSRDsKQEAgLTM5MiwxMCArMzg5 LDkgQEAgc3RhdGljIGludCBwYXJzZV9vcHRpb25zKGNoYXIgKm9wdGlvbnMsIHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHM2NCAqbmV3TFZTaXplLAogCiAJCWNhc2UgT3B0X2Rpc2NhcmRfbWluYmxr OgogCQl7Ci0JCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCQkJY2hhciAqbWluYmxrc190cmltID0gYXJnc1swXS5mcm9tOwogCQkJaW50IHJj OwotCQkJaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCQlpZiAoYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQkJKmZsYWcgfD0gSkZTX0RJU0NBUkQ7CiAJCQkJ cmMgPSBrc3RydG91aW50KG1pbmJsa3NfdHJpbSwgMCwKIAkJCQkJCSZzYmktPm1pbmJsa3NfdHJp bSk7CmRpZmYgLS1naXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmlu ZGV4IGZlYzE5NGE2NjZmNGIuLjUyYjczZjU1OGZjYjEgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9p b2N0bC5jCisrKyBiL2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDU5LDcgKzEwNTksNyBAQCBzdGF0 aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCBfX3Vz ZXIgKmFyZ3ApCiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJN OwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhuaWxmcy0+bnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChj b3B5X2Zyb21fdXNlcigmcmFuZ2UsIGFyZ3AsIHNpemVvZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEv ZnMvbnRmczMvZmlsZS5jIGIvZnMvbnRmczMvZmlsZS5jCmluZGV4IDc4N2I1M2I5ODRlZTEuLmU3 NjMyMzYxNjkzMzEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9m aWxlLmMKQEAgLTI4LDcgKzI4LDcgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1 Y3QgbnRmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShD QVBfU1lTX0FETUlOKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2Nh cmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoc2JpLT5zYi0+c19iZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJdXNlcl9yYW5nZSA9IChzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlciAqKWFyZzsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9mcy9udGZz My9zdXBlci5jCmluZGV4IGNkMzBlODFhYmJjZTAuLmM3MzQwODViY2NlNGEgMTAwNjQ0Ci0tLSBh L2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtOTEzLDcgKzkxMyw3 IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0 cnVjdCBmc19jb250ZXh0ICpmYykKIAl9CiAKIAlycSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwot CWlmIChibGtfcXVldWVfZGlzY2FyZChycSkgJiYgcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5KSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBycS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gcnEt PmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlf bWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwpkaWZm IC0tZ2l0IGEvZnMvb2NmczIvaW9jdGwuYyBiL2ZzL29jZnMyL2lvY3RsLmMKaW5kZXggZjU5NDYx ZDg1ZGE0NS4uOWI3OGVmMTAzYWRhNiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvaW9jdGwuYworKysg Yi9mcy9vY2ZzMi9pb2N0bC5jCkBAIC05MTAsNyArOTEwLDcgQEAgbG9uZyBvY2ZzMl9pb2N0bChz dHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJ CWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJCXJldHVybiAtRVBFUk07CiAKLQkJaWYg KCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMo c2ItPnNfYmRldikpCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkJaWYgKGNvcHlfZnJvbV91 c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZz X2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmluZGV4IDAxOTFkZThjZTljZWQuLmE0 ZTY2MDlkNjE2YjcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCisrKyBiL2ZzL3hm cy94ZnNfZGlzY2FyZC5jCkBAIC0xNjIsNyArMTYyLDcgQEAgeGZzX2lvY190cmltKAogCiAJaWYg KCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJNOwotCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMobXAtPm1fZGRl dl90YXJncC0+YnRfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCS8qCmRpZmYgLS1n aXQgYS9mcy94ZnMveGZzX3N1cGVyLmMgYi9mcy94ZnMveGZzX3N1cGVyLmMKaW5kZXggNTRiZTlk NjQwOTNlZC4uYTI3NmI4MTExZjYzNiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19zdXBlci5jCisr KyBiL2ZzL3hmcy94ZnNfc3VwZXIuYwpAQCAtMTYwOCwxNCArMTYwOCwxMCBAQCB4ZnNfZnNfZmls bF9zdXBlcigKIAkJCWdvdG8gb3V0X2ZpbGVzdHJlYW1fdW5tb3VudDsKIAl9CiAKLQlpZiAoeGZz X2hhc19kaXNjYXJkKG1wKSkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0 X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKLQkJ CXhmc193YXJuKG1wLCAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0J CQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwotCQkJbXAtPm1fZmVh dHVyZXMgJj0gflhGU19GRUFUX0RJU0NBUkQ7Ci0JCX0KKwlpZiAoeGZzX2hhc19kaXNjYXJkKG1w KSAmJiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CisJCXhmc193YXJu KG1wLAorCSJtb3VudGluZyB3aXRoIFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2Ug ZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7CisJCW1wLT5tX2ZlYXR1cmVzICY9IH5YRlNfRkVB VF9ESVNDQVJEOwogCX0KIAogCWlmICh4ZnNfaGFzX3JlZmxpbmsobXApKSB7CmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaAppbmRleCBj ZTE2MjQ3ZDNhZmFiLi43NjdhYjIyZTEwNTJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Js a2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKQEAgLTU0MCw3ICs1NDAsNiBAQCBz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSB7CiAjZGVmaW5lIFFVRVVFX0ZMQUdfTk9OUk9UCTYJLyogbm9u LXJvdGF0aW9uYWwgZGV2aWNlIChTU0QpICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdfVklSVAkJUVVF VUVfRkxBR19OT05ST1QgLyogcGFyYXZpcnQgZGV2aWNlICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdf SU9fU1RBVAk3CS8qIGRvIGRpc2svcGFydGl0aW9ucyBJTyBhY2NvdW50aW5nICovCi0jZGVmaW5l IFFVRVVFX0ZMQUdfRElTQ0FSRAk4CS8qIHN1cHBvcnRzIERJU0NBUkQgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19OT1hNRVJHRVMJOQkvKiBObyBleHRlbmRlZCBtZXJnZXMgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19BRERfUkFORE9NCTEwCS8qIENvbnRyaWJ1dGVzIHRvIHJhbmRvbSBwb29sICovCiAj ZGVmaW5lIFFVRVVFX0ZMQUdfU0VDRVJBU0UJMTEJLyogc3VwcG9ydHMgc2VjdXJlIGVyYXNlICov CkBAIC01ODIsNyArNTgxLDYgQEAgYm9vbCBibGtfcXVldWVfZmxhZ190ZXN0X2FuZF9zZXQodW5z aWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTsKIAl0ZXN0X2JpdChRVUVV RV9GTEFHX1NUQUJMRV9XUklURVMsICYocSktPnF1ZXVlX2ZsYWdzKQogI2RlZmluZSBibGtfcXVl dWVfaW9fc3RhdChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0lPX1NUQVQsICYocSktPnF1ZXVlX2Zs YWdzKQogI2RlZmluZSBibGtfcXVldWVfYWRkX3JhbmRvbShxKQl0ZXN0X2JpdChRVUVVRV9GTEFH X0FERF9SQU5ET00sICYocSktPnF1ZXVlX2ZsYWdzKQotI2RlZmluZSBibGtfcXVldWVfZGlzY2Fy ZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0RJU0NBUkQsICYocSktPnF1ZXVlX2ZsYWdzKQogI2Rl ZmluZSBibGtfcXVldWVfem9uZV9yZXNldGFsbChxKQlcCiAJdGVzdF9iaXQoUVVFVUVfRkxBR19a T05FX1JFU0VUQUxMLCAmKHEpLT5xdWV1ZV9mbGFncykKICNkZWZpbmUgYmxrX3F1ZXVlX3NlY3Vy ZV9lcmFzZShxKSBcCmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuYwpp bmRleCA0MDY5ZjE3YTgyYzhlLi41ZDljZWRmOWU3Yjg0IDEwMDY0NAotLS0gYS9tbS9zd2FwZmls ZS5jCisrKyBiL21tL3N3YXBmaWxlLmMKQEAgLTI5NTcsMjAgKzI5NTcsNiBAQCBzdGF0aWMgaW50 IHNldHVwX3N3YXBfbWFwX2FuZF9leHRlbnRzKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpwLAog CXJldHVybiBucl9leHRlbnRzOwogfQogCi0vKgotICogSGVscGVyIHRvIHN5c19zd2Fwb24gZGV0 ZXJtaW5pbmcgaWYgYSBnaXZlbiBzd2FwCi0gKiBiYWNraW5nIGRldmljZSBxdWV1ZSBzdXBwb3J0 cyBESVNDQVJEIG9wZXJhdGlvbnMuCi0gKi8KLXN0YXRpYyBib29sIHN3YXBfZGlzY2FyZGFibGUo c3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpKQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx ID0gYmRldl9nZXRfcXVldWUoc2ktPmJkZXYpOwotCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChx KSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIHRydWU7Ci19Ci0KIFNZU0NBTExfREVGSU5F Mihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxh Z3MpCiB7CiAJc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnA7CkBAIC0zMTMyLDcgKzMxMTgsOCBA QCBTWVNDQUxMX0RFRklORTIoc3dhcG9uLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzcGVjaWFsZmls ZSwgaW50LCBzd2FwX2ZsYWdzKQogCQkJCQkgc2l6ZW9mKGxvbmcpLAogCQkJCQkgR0ZQX0tFUk5F TCk7CiAKLQlpZiAocC0+YmRldiAmJiAoc3dhcF9mbGFncyAmIFNXQVBfRkxBR19ESVNDQVJEKSAm JiBzd2FwX2Rpc2NhcmRhYmxlKHApKSB7CisJaWYgKChzd2FwX2ZsYWdzICYgU1dBUF9GTEFHX0RJ U0NBUkQpICYmCisJICAgIHAtPmJkZXYgJiYgYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHAtPmJk ZXYpKSB7CiAJCS8qCiAJCSAqIFdoZW4gZGlzY2FyZCBpcyBlbmFibGVkIGZvciBzd2FwIHdpdGgg bm8gcGFydGljdWxhcgogCQkgKiBwb2xpY3kgZmxhZ2dlZCwgd2Ugc2V0IGFsbCBzd2FwIGRpc2Nh cmQgZmxhZ3MgaGVyZSBpbgotLSAKMi4zMC4yCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4 LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9y Z2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK 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 Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 31851C352A1 for ; Fri, 15 Apr 2022 04:54:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id CCF9F61026; Fri, 15 Apr 2022 04:54:42 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wuklEoFgsVqW; Fri, 15 Apr 2022 04:54:40 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 6F9DA61073; Fri, 15 Apr 2022 04:54:39 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id ECB49C0086; Fri, 15 Apr 2022 04:54:38 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id E661AC002C for ; Fri, 15 Apr 2022 04:54:35 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id CADCE6107E for ; Fri, 15 Apr 2022 04:54:35 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id niBZt95qJyR3 for ; Fri, 15 Apr 2022 04:54:33 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by smtp3.osuosl.org (Postfix) with ESMTPS id 2B89D61047 for ; Fri, 15 Apr 2022 04:54:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Sender:Reply-To:Content-ID:Content-Description; bh=JEp+Ydky4hX/95I7Lm2zDDRxFAsMkADcWxP2d9kmm+k=; b=qsTDfotmtIWHWraU2dgGVjIKy/ C8gTlmi51yWMclX54ORFg7Xna22avP3VcyiXLYBC6nR19lbVENNopVJ9tQGKgQy04iWEaJit4uDtN KQhTJamDnRgtj1KkFNuR9gefCo+gNrgNnOWwTkGS9hkFTQu7vnpYzsSyXBC1wEK5I+vUB41wYHdql 4XWbh8XjCfzVsn8dXva3n3BSPwQT7BQDgyMt4id2YqsEF5oM+pQUbkIbjwYtgr1GpPU7BSmSRTPF+ FYEjAb9JYAnCoiewCCJgGkFfvJ0Vto4uuR3qScpniY79wd9YisLWyxKpjL/zI/YKfvEqQHCtRnFM/ wD74URHg==; Received: from [2a02:1205:504b:4280:f5dd:42a4:896c:d877] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfDyJ-008PkB-3y; Fri, 15 Apr 2022 04:54:15 +0000 From: Christoph Hellwig To: Jens Axboe Subject: [PATCH 24/27] block: remove QUEUE_FLAG_DISCARD Date: Fri, 15 Apr 2022 06:52:55 +0200 Message-Id: <20220415045258.199825-25-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220415045258.199825-1-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Cc: jfs-discussion@lists.sourceforge.net, =?UTF-8?q?Jan=20H=C3=B6ppner?= , linux-nvme@lists.infradead.org, virtualization@lists.linux-foundation.org, linux-mm@kvack.org, dm-devel@redhat.com, target-devel@vger.kernel.org, linux-mtd@lists.infradead.org, drbd-dev@lists.linbit.com, linux-s390@vger.kernel.org, linux-nilfs@vger.kernel.org, linux-scsi@vger.kernel.org, cluster-devel@redhat.com, xen-devel@lists.xenproject.org, linux-ext4@vger.kernel.org, linux-um@lists.infradead.org, nbd@other.debian.org, linux-block@vger.kernel.org, linux-bcache@vger.kernel.org, David Sterba , ceph-devel@vger.kernel.org, Coly Li , linux-raid@vger.kernel.org, "Martin K . Petersen" , linux-mmc@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org, =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , ocfs2-devel@oss.oracle.com, linux-fsdevel@vger.kernel.org, ntfs3@lists.linux.dev, linux-btrfs@vger.kernel.org X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" SnVzdCB1c2UgYSBub24temVybyBtYXhfZGlzY2FyZF9zZWN0b3JzIGFzIGFuIGluZGljYXRvciBm b3IgZGlzY2FyZApzdXBwb3J0LCBzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBmb3Igd3JpdGUgemVy b2VzLgoKVGhlIG9ubHkgcGxhY2VzIHdoZXJlIG5lZWRzIHNwZWNpYWwgYXR0ZW50aW9uIGlzIHRo ZSBSQUlENSBkcml2ZXIsCndoaWNoIG11c3QgY2xlYXIgZGlzY2FyZCBzdXBwb3J0IGZvciBzZWN1 cml0eSByZWFzb25zIGJ5IGRlZmF1bHQsCmV2ZW4gaWYgdGhlIGRlZmF1bHQgc3RhY2tpbmcgcnVs ZXMgd291bGQgYWxsb3cgZm9yIGl0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhlbGx3aWcg PGhjaEBsc3QuZGU+ClJldmlld2VkLWJ5OiBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRl cnNlbkBvcmFjbGUuY29tPgpBY2tlZC1ieTogQ2hyaXN0b3BoIELDtmhtd2FsZGVyIDxjaHJpc3Rv cGguYm9laG13YWxkZXJAbGluYml0LmNvbT4gW2RyYmRdCkFja2VkLWJ5OiBKYW4gSMO2cHBuZXIg PGhvZXBwbmVyQGxpbnV4LmlibS5jb20+IFtzMzkwXQpBY2tlZC1ieTogQ29seSBMaSA8Y29seWxp QHN1c2UuZGU+IFtiY2FjaGVdCkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5j b20+IFtidHJmc10KLS0tCiBhcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYyAgICAgICAgICB8ICAy IC0tCiBibG9jay9ibGstY29yZS5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9i bGstbGliLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9ibGstbXEtZGVidWdm cy5jICAgICAgICAgICAgICB8ICAxIC0KIGJsb2NrL2lvY3RsLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMgICAgICB8ICAyICst CiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8IDE5ICsrLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgIHwgIDMgKy0tCiBkcml2 ZXJzL2Jsb2NrL2xvb3AuYyAgICAgICAgICAgICAgICB8IDExICsrKy0tLS0tLS0tCiBkcml2ZXJz L2Jsb2NrL25iZC5jICAgICAgICAgICAgICAgICB8ICA1ICstLS0tCiBkcml2ZXJzL2Jsb2NrL251 bGxfYmxrL21haW4uYyAgICAgICB8ICAxIC0KIGRyaXZlcnMvYmxvY2svcmJkLmMgICAgICAgICAg ICAgICAgIHwgIDEgLQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgICAgICAgfCAgMiAt LQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oICAgfCAgMyAtLS0KIGRyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jICAgICAgICAgIHwgIDIgLS0KIGRyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2sveGVuYnVzLmMgIHwgIDIgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyAgICAgICB8ICAxIC0K IGRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYyAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9t ZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvYmNhY2hlL3N5 c2ZzLmMgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMgICAg ICAgIHwgIDkgKy0tLS0tLS0tCiBkcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jICAgICAgICB8 ICA5ICstLS0tLS0tLQogZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMgICAgICAgICAgfCAgMyAr LS0KIGRyaXZlcnMvbWQvZG0tcmFpZC5jICAgICAgICAgICAgICAgIHwgIDkgKystLS0tLS0tCiBk cml2ZXJzL21kL2RtLXRhYmxlLmMgICAgICAgICAgICAgICB8ICA5ICsrLS0tLS0tLQogZHJpdmVy cy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgfCAxMSArLS0tLS0tLS0tLQogZHJpdmVycy9t ZC9kbS5jICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvbWQtbGluZWFy LmMgICAgICAgICAgICAgIHwgMTEgKy0tLS0tLS0tLS0KIGRyaXZlcnMvbWQvcmFpZDAuYyAgICAg ICAgICAgICAgICAgIHwgIDcgLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkMS5jICAgICAgICAgICAg ICAgICAgfCAxNiArLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQxMC5jICAgICAgICAg ICAgICAgICB8IDE4ICsrLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5j ICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9yYWlkNS5jICAgICAgICAgICAgICAgICAg fCAxMiArKysrLS0tLS0tLS0KIGRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyAgICAgICAgICAgIHwg IDEgLQogZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYyAgICAgICAgICAgfCAgMSAtCiBkcml2ZXJz L252bWUvaG9zdC9jb3JlLmMgICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvczM5MC9ibG9j ay9kYXNkX2ZiYS5jICAgICAgIHwgIDEgLQogZHJpdmVycy9zY3NpL3NkLmMgICAgICAgICAgICAg ICAgICAgfCAgMiAtLQogZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMiAr LQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyAgICAgICAgICAgICAgfCAgNCArKy0tCiBmcy9idHJm cy9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9maWxlLmMgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9zdXBlci5jICAgICAgICAgICAgICAg ICAgICB8IDEwICsrKy0tLS0tLS0KIGZzL2V4dDQvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAg IHwgMTAgKysrLS0tLS0tLQogZnMvZXh0NC9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgfCAx MCArKystLS0tLS0tCiBmcy9mMmZzL2YyZnMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZmF0L2lu b2RlLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tLS0tCiBmcy9nZnMyL3JncnAu YyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9qYmQyL2pvdXJuYWwuYyAgICAgICAg ICAgICAgICAgICB8ICA3ICsrLS0tLS0KIGZzL2pmcy9pb2N0bC5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGZzL2pmcy9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDggKyst LS0tLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250 ZnMzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250ZnMzL3N1cGVyLmMg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL29jZnMyL2lvY3RsLmMgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGZzL3hmcy94ZnNfc3VwZXIuYyAgICAgICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0t CiBpbmNsdWRlL2xpbnV4L2Jsa2Rldi5oICAgICAgICAgICAgICB8ICAyIC0tCiBtbS9zd2FwZmls ZS5jICAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrLS0tLS0tLS0tLS0tLS0tCiA2MSBmaWxl cyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAyNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC91bS9kcml2ZXJzL3ViZF9rZXJuLmMgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4u YwppbmRleCBiMDMyNjlmYWVmNzE0Li4wODVmZmRmOThlNTdlIDEwMDY0NAotLS0gYS9hcmNoL3Vt L2RyaXZlcnMvdWJkX2tlcm4uYworKysgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYwpAQCAt NDgzLDcgKzQ4Myw2IEBAIHN0YXRpYyB2b2lkIHViZF9oYW5kbGVyKHZvaWQpCiAJCQlpZiAoKGlv X3JlcS0+ZXJyb3IgPT0gQkxLX1NUU19OT1RTVVBQKSAmJiAocmVxX29wKGlvX3JlcS0+cmVxKSA9 PSBSRVFfT1BfRElTQ0FSRCkpIHsKIAkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhp b19yZXEtPnJlcS0+cSwgMCk7CiAJCQkJYmxrX3F1ZXVlX21heF93cml0ZV96ZXJvZXNfc2VjdG9y cyhpb19yZXEtPnJlcS0+cSwgMCk7Ci0JCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxB R19ESVNDQVJELCBpb19yZXEtPnJlcS0+cSk7CiAJCQl9CiAJCQlibGtfbXFfZW5kX3JlcXVlc3Qo aW9fcmVxLT5yZXEsIGlvX3JlcS0+ZXJyb3IpOwogCQkJa2ZyZWUoaW9fcmVxKTsKQEAgLTgwMyw3 ICs4MDIsNiBAQCBzdGF0aWMgaW50IHViZF9vcGVuX2RldihzdHJ1Y3QgdWJkICp1YmRfZGV2KQog CQl1YmRfZGV2LT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gU0VDVE9SX1NJWkU7 CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHViZF9kZXYtPnF1ZXVlLCBVQkRfTUFY X1JFUVVFU1QpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHViZF9kZXYt PnF1ZXVlLCBVQkRfTUFYX1JFUVVFU1QpOwotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxB R19ESVNDQVJELCB1YmRfZGV2LT5xdWV1ZSk7CiAJfQogCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX05PTlJPVCwgdWJkX2Rldi0+cXVldWUpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEv YmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggOTM3YmI2Yjg2MzMxNy4u YjVjM2E4MDQ5MTM0YyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLWNvcmUuYworKysgYi9ibG9jay9i bGstY29yZS5jCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBzdWJtaXRfYmlvX25vYWNjdChzdHJ1 Y3QgYmlvICpiaW8pCiAKIAlzd2l0Y2ggKGJpb19vcChiaW8pKSB7CiAJY2FzZSBSRVFfT1BfRElT Q0FSRDoKLQkJaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikpCiAJCQlnb3RvIG5vdF9zdXBwb3J0ZWQ7CiAJCWJyZWFrOwogCWNh c2UgUkVRX09QX1NFQ1VSRV9FUkFTRToKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1saWIuYyBiL2Js b2NrL2Jsay1saWIuYwppbmRleCAyYWUzMmE3MjI4NTFjLi44YjRiNjZkM2E5YmZjIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbGliLmMKKysrIGIvYmxvY2svYmxrLWxpYi5jCkBAIC01Myw3ICs1Myw3 IEBAIGludCBfX2Jsa2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYs IHNlY3Rvcl90IHNlY3RvciwKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJb3AgPSBSRVFfT1Bf U0VDVVJFX0VSQVNFOwogCX0gZWxzZSB7Ci0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJ CWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQogCQkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCQlvcCA9IFJFUV9PUF9ESVNDQVJEOwogCX0KZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1t cS1kZWJ1Z2ZzLmMgYi9ibG9jay9ibGstbXEtZGVidWdmcy5jCmluZGV4IGFhMDM0OWU5ZjA4M2Iu LmZkMTExYzUwMDEyNTYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKKysrIGIv YmxvY2svYmxrLW1xLWRlYnVnZnMuYwpAQCAtMTEzLDcgKzExMyw2IEBAIHN0YXRpYyBjb25zdCBj aGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7CiAJUVVFVUVfRkxBR19OQU1FKEZB SUxfSU8pLAogCVFVRVVFX0ZMQUdfTkFNRShOT05ST1QpLAogCVFVRVVFX0ZMQUdfTkFNRShJT19T VEFUKSwKLQlRVUVVRV9GTEFHX05BTUUoRElTQ0FSRCksCiAJUVVFVUVfRkxBR19OQU1FKE5PWE1F UkdFUyksCiAJUVVFVUVfRkxBR19OQU1FKEFERF9SQU5ET00pLAogCVFVRVVFX0ZMQUdfTkFNRShT RUNFUkFTRSksCmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuYwppbmRl eCBhZDM3NzFiMjY4YjgxLi5jMmNkM2JhNTI5MGNlIDEwMDY0NAotLS0gYS9ibG9jay9pb2N0bC5j CisrKyBiL2Jsb2NrL2lvY3RsLmMKQEAgLTg3LDE0ICs4NywxMyBAQCBzdGF0aWMgaW50IGJsa19p b2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwKIHsK IAl1aW50NjRfdCByYW5nZVsyXTsKIAl1aW50NjRfdCBzdGFydCwgbGVuOwotCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoYmRldik7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGJkZXYtPmJkX2lub2RlOwogCWludCBlcnI7CiAKIAlpZiAoIShtb2RlICYgRk1PREVfV1JJ VEUpKQogCQlyZXR1cm4gLUVCQURGOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlp ZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKHJhbmdlLCAodm9pZCBfX3VzZXIgKilhcmcsIHNpemVv ZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCmluZGV4IDdiNTAxYzhkNTk5MjguLjkxMjU2 MGY2MTFjMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYworKysg Yi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKQEAgLTk0Miw3ICs5NDIsNyBAQCBpbnQg ZHJiZF9zZW5kX3NpemVzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgaW50 IHRyaWdnZXJfcmVwbHksIGVudQogCQkJY3B1X3RvX2JlMzIoYmRldl9hbGlnbm1lbnRfb2Zmc2V0 KGJkZXYpKTsKIAkJcC0+cWxpbS0+aW9fbWluID0gY3B1X3RvX2JlMzIoYmRldl9pb19taW4oYmRl dikpOwogCQlwLT5xbGltLT5pb19vcHQgPSBjcHVfdG9fYmUzMihiZGV2X2lvX29wdChiZGV2KSk7 Ci0JCXAtPnFsaW0tPmRpc2NhcmRfZW5hYmxlZCA9IGJsa19xdWV1ZV9kaXNjYXJkKHEpOworCQlw LT5xbGltLT5kaXNjYXJkX2VuYWJsZWQgPSAhIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2 KTsKIAkJcHV0X2xkZXYoZGV2aWNlKTsKIAl9IGVsc2UgewogCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGRldmljZS0+cnFfcXVldWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQv ZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCBhMGEwNmUyMzhl OTE3Li4wNjc4Y2ViNTA1Nzk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9u bC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTEyMTAsNyArMTIxMCw3 IEBAIHN0YXRpYyB2b2lkIGRlY2lkZV9vbl9kaXNjYXJkX3N1cHBvcnQoc3RydWN0IGRyYmRfZGV2 aWNlICpkZXZpY2UsCiAJCWZpcnN0X3BlZXJfZGV2aWNlKGRldmljZSktPmNvbm5lY3Rpb247CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBkZXZpY2UtPnJxX3F1ZXVlOwogCi0JaWYgKGJkZXYg JiYgIWJsa19xdWV1ZV9kaXNjYXJkKGJkZXYtPmJhY2tpbmdfYmRldi0+YmRfZGlzay0+cXVldWUp KQorCWlmIChiZGV2ICYmICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldi0+YmFja2luZ19i ZGV2KSkKIAkJZ290byBub3Rfc3VwcG9ydGVkOwogCiAJaWYgKGNvbm5lY3Rpb24tPmNzdGF0ZSA+ PSBDX0NPTk5FQ1RFRCAmJgpAQCAtMTIzMCwzMCArMTIzMCwxNiBAQCBzdGF0aWMgdm9pZCBkZWNp ZGVfb25fZGlzY2FyZF9zdXBwb3J0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCSAqLwog CWJsa19xdWV1ZV9kaXNjYXJkX2dyYW51bGFyaXR5KHEsIDUxMik7CiAJcS0+bGltaXRzLm1heF9k aXNjYXJkX3NlY3RvcnMgPSBkcmJkX21heF9kaXNjYXJkX3NlY3RvcnMoY29ubmVjdGlvbik7Ci0J YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJcS0+bGltaXRzLm1h eF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9CiAJCWRyYmRfbWF4X2Rpc2NhcmRfc2VjdG9ycyhjb25u ZWN0aW9uKTsKIAlyZXR1cm47CiAKIG5vdF9zdXBwb3J0ZWQ6Ci0JYmxrX3F1ZXVlX2ZsYWdfY2xl YXIoUVVFVUVfRkxBR19ESVNDQVJELCBxKTsKIAlibGtfcXVldWVfZGlzY2FyZF9ncmFudWxhcml0 eShxLCAwKTsKIAlxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJcS0+bGltaXRz Lm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9IDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZpeHVwX2Rp c2NhcmRfaWZfbm90X3N1cHBvcnRlZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKLXsKLQkvKiBU byBhdm9pZCBjb25mdXNpb24sIGlmIHRoaXMgcXVldWUgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJk LCBjbGVhcgotCSAqIG1heF9kaXNjYXJkX3NlY3RvcnMsIHdoaWNoIGlzIHdoYXQgbHNibGsgLUQg cmVwb3J0cyB0byB0aGUgdXNlci4KLQkgKiBPbGRlciBrZXJuZWxzIGdvdCB0aGlzIHdyb25nIGlu ICJzdGFjayBsaW1pdHMiLgotCSAqICovCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkgewot CQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxLCAwKTsKLQkJYmxrX3F1ZXVlX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkocSwgMCk7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBmaXh1cF93cml0ZV96 ZXJvZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx KQogewogCS8qIEZpeHVwIG1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyBhZnRlciBibGtfc3RhY2tf bGltaXRzKCk6CkBAIC0xMzAwLDcgKzEyODYsNiBAQCBzdGF0aWMgdm9pZCBkcmJkX3NldHVwX3F1 ZXVlX3BhcmFtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraQog CQlibGtfc3RhY2tfbGltaXRzKCZxLT5saW1pdHMsICZiLT5saW1pdHMsIDApOwogCQlkaXNrX3Vw ZGF0ZV9yZWFkYWhlYWQoZGV2aWNlLT52ZGlzayk7CiAJfQotCWZpeHVwX2Rpc2NhcmRfaWZfbm90 X3N1cHBvcnRlZChxKTsKIAlmaXh1cF93cml0ZV96ZXJvZXMoZGV2aWNlLCBxKTsKIH0KIApAQCAt MTQ0Nyw3ICsxNDMyLDcgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVjdCBk cmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19jb25m LT5hbF9leHRlbnRzID4gZHJiZF9hbF9leHRlbnRzX21heChuYmMpKQogCQlkaXNrX2NvbmYtPmFs X2V4dGVudHMgPSBkcmJkX2FsX2V4dGVudHNfbWF4KG5iYyk7CiAKLQlpZiAoIWJsa19xdWV1ZV9k aXNjYXJkKHEpKSB7CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpIHsKIAkJ aWYgKGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSkgewogCQkJZGlza19jb25mLT5y c19kaXNjYXJkX2dyYW51bGFyaXR5ID0gMDsgLyogZGlzYWJsZSBmZWF0dXJlICovCiAJCQlkcmJk X2luZm8oZGV2aWNlLCAicnNfZGlzY2FyZF9ncmFudWxhcml0eSBmZWF0dXJlIGRpc2FibGVkXG4i KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCmluZGV4IDBiNGM3ZGU0NjM5ODkuLjhhNGE0 N2RhNTZmZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMK KysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTU3NSwxMSArMTU3 NSwxMCBAQCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2Rl dmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCiBzdGF0aWMgYm9vbCBjYW5fZG9fcmVs aWFibGVfZGlzY2FyZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiB7Ci0Jc3RydWN0IHJl cXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShkZXZpY2UtPmxkZXYtPmJhY2tpbmdfYmRl dik7CiAJc3RydWN0IGRpc2tfY29uZiAqZGM7CiAJYm9vbCBjYW5fZG87CiAKLQlpZiAoIWJsa19x dWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+ bGRldi0+YmFja2luZ19iZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJcmN1X3JlYWRfbG9jaygp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3Au YwppbmRleCA4ZDgwMGQ0NmU0OTg1Li4wZTA2MWM5ODk2ZWZmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2Jsb2NrL2xvb3AuYworKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtMzE0LDE1ICszMTQs MTIgQEAgc3RhdGljIGludCBsb19mYWxsb2NhdGUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3Ry dWN0IHJlcXVlc3QgKnJxLCBsb2ZmX3QgcG9zLAogCiAJbW9kZSB8PSBGQUxMT0NfRkxfS0VFUF9T SVpFOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChsby0+bG9fcXVldWUpKSB7Ci0JCXJldCA9 IC1FT1BOT1RTVVBQOwotCQlnb3RvIG91dDsKLQl9CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMobG8tPmxvX2RldmljZSkpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCXJldCA9IGZp bGUtPmZfb3AtPmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsIGJsa19ycV9ieXRlcyhycSkpOwog CWlmICh1bmxpa2VseShyZXQgJiYgcmV0ICE9IC1FSU5WQUwgJiYgcmV0ICE9IC1FT1BOT1RTVVBQ KSkKLQkJcmV0ID0gLUVJTzsKLSBvdXQ6CisJCXJldHVybiAtRUlPOwogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTc4NywxMiArNzg0LDEwIEBAIHN0YXRpYyB2b2lkIGxvb3BfY29uZmlnX2Rpc2NhcmQo c3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBncmFudWxhcml0eTsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgbWF4X2Rp c2NhcmRfc2VjdG9ycyk7CiAJCWJsa19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwg bWF4X2Rpc2NhcmRfc2VjdG9ycyk7Ci0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJ U0NBUkQsIHEpOwogCX0gZWxzZSB7CiAJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0g MDsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgMCk7CiAJCWJsa19xdWV1ZV9t YXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgMCk7Ci0JCWJsa19xdWV1ZV9mbGFnX2NsZWFyKFFV RVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJfQogCXEtPmxpbWl0cy5kaXNjYXJkX2FsaWdubWVudCA9 IDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9u YmQuYwppbmRleCA1YTFmOTg0OTRkZGRmLi40NzI5YWVmOGM2NDYyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2Jsb2NrL25iZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTEyMzEsOCArMTIz MSw2IEBAIHN0YXRpYyB2b2lkIG5iZF9wYXJzZV9mbGFncyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJk KQogCQlzZXRfZGlza19ybyhuYmQtPmRpc2ssIHRydWUpOwogCWVsc2UKIAkJc2V0X2Rpc2tfcm8o bmJkLT5kaXNrLCBmYWxzZSk7Ci0JaWYgKGNvbmZpZy0+ZmxhZ3MgJiBOQkRfRkxBR19TRU5EX1RS SU0pCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG5iZC0+ZGlzay0+ cXVldWUpOwogCWlmIChjb25maWctPmZsYWdzICYgTkJEX0ZMQUdfU0VORF9GTFVTSCkgewogCQlp ZiAoY29uZmlnLT5mbGFncyAmIE5CRF9GTEFHX1NFTkRfRlVBKQogCQkJYmxrX3F1ZXVlX3dyaXRl X2NhY2hlKG5iZC0+ZGlzay0+cXVldWUsIHRydWUsIHRydWUpOwpAQCAtMTMxOSw4ICsxMzE3LDcg QEAgc3RhdGljIHZvaWQgbmJkX2NvbmZpZ19wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKIAkJ bmJkLT50YWdfc2V0LnRpbWVvdXQgPSAwOwogCQluYmQtPmRpc2stPnF1ZXVlLT5saW1pdHMuZGlz Y2FyZF9ncmFudWxhcml0eSA9IDA7CiAJCW5iZC0+ZGlzay0+cXVldWUtPmxpbWl0cy5kaXNjYXJk X2FsaWdubWVudCA9IDA7Ci0JCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5iZC0+ZGlz ay0+cXVldWUsIFVJTlRfTUFYKTsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19E SVNDQVJELCBuYmQtPmRpc2stPnF1ZXVlKTsKKwkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3Rv cnMobmJkLT5kaXNrLT5xdWV1ZSwgMCk7CiAKIAkJbXV0ZXhfdW5sb2NrKCZuYmQtPmNvbmZpZ19s b2NrKTsKIAkJbmJkX3B1dChuYmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Js ay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCAwNWIxMTIwZTY2 MjM0Li5mNjQ5M2E5ZTg1ZWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21h aW4uYworKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtMTc2Nyw3ICsxNzY3 LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxi KQogCW51bGxiLT5xLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IG51bGxiLT5kZXYtPmJs b2Nrc2l6ZTsKIAludWxsYi0+cS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gbnVsbGItPmRl di0+YmxvY2tzaXplOwogCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG51bGxiLT5xLCBV SU5UX01BWCA+PiA5KTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBu dWxsYi0+cSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlv bnMgbnVsbF9iaW9fb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yYmQuYyBiL2Ry aXZlcnMvYmxvY2svcmJkLmMKaW5kZXggYjg0NDQzMmJhZDIwYi4uMmIyMWY3MTdjY2UxYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9yYmQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JiZC5jCkBA IC00OTQyLDcgKzQ5NDIsNiBAQCBzdGF0aWMgaW50IHJiZF9pbml0X2Rpc2soc3RydWN0IHJiZF9k ZXZpY2UgKnJiZF9kZXYpCiAJYmxrX3F1ZXVlX2lvX29wdChxLCByYmRfZGV2LT5vcHRzLT5hbGxv Y19zaXplKTsKIAogCWlmIChyYmRfZGV2LT5vcHRzLT50cmltKSB7Ci0JCWJsa19xdWV1ZV9mbGFn X3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwogCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA9IHJiZF9kZXYtPm9wdHMtPmFsbG9jX3NpemU7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQpOwogCQlibGtfcXVldWVf bWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwppbmRleCBiNjZlODg0MGI5NGI4Li5lZmE5OWEzODg0NTA3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1jbHQuYworKysgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwpAQCAtMTM2NCw4ICsxMzY0LDYgQEAgc3RhdGljIHZvaWQgc2V0 dXBfcmVxdWVzdF9xdWV1ZShzdHJ1Y3Qgcm5iZF9jbHRfZGV2ICpkZXYpCiAJYmxrX3F1ZXVlX21h eF9kaXNjYXJkX3NlY3RvcnMoZGV2LT5xdWV1ZSwgZGV2LT5tYXhfZGlzY2FyZF9zZWN0b3JzKTsK IAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eQk9IGRldi0+ZGlzY2FyZF9n cmFudWxhcml0eTsKIAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9hbGlnbm1lbnQJPSBkZXYt PmRpc2NhcmRfYWxpZ25tZW50OwotCWlmIChkZXYtPm1heF9kaXNjYXJkX3NlY3RvcnMpCi0JCWJs a19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIGRldi0+cXVldWUpOwogCWlmIChk ZXYtPnNlY3VyZV9kaXNjYXJkKQogCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19TRUNF UkFTRSwgZGV2LT5xdWV1ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJk LXNydi1kZXYuaCBiL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi1kZXYuaAppbmRleCBmODJm YmI0YmJkYThlLi4xZjdlMWM4ZmQ0ZDliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQv cm5iZC1zcnYtZGV2LmgKKysrIGIvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oCkBA IC00OSw5ICs0OSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJuYmRfZGV2X2dldF9zZWN1cmVfZGlz Y2FyZChjb25zdCBzdHJ1Y3Qgcm5iZF9kZXYgKmRldikKIAogc3RhdGljIGlubGluZSBpbnQgcm5i ZF9kZXZfZ2V0X21heF9kaXNjYXJkX3NlY3RzKGNvbnN0IHN0cnVjdCBybmJkX2RldiAqZGV2KQog ewotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGV2LT5iZGV2KSkpCi0J CXJldHVybiAwOwotCiAJcmV0dXJuIGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXYtPmJkZXYp OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jCmluZGV4IGE4YmNmM2Y2NjRhZjEuLjZjY2YxNTI1M2RlZTEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCisrKyBiL2RyaXZlcnMvYmxvY2sv dmlydGlvX2Jsay5jCkBAIC04ODgsOCArODg4LDYgQEAgc3RhdGljIGludCB2aXJ0YmxrX3Byb2Jl KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCQkJdiA9IHNnX2VsZW1zOwogCQlibGtfcXVl dWVfbWF4X2Rpc2NhcmRfc2VnbWVudHMocSwKIAkJCQkJICAgICAgIG1pbih2LCBNQVhfRElTQ0FS RF9TRUdNRU5UUykpOwotCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IHEpOwogCX0KIAogCWlmICh2aXJ0aW9faGFzX2ZlYXR1cmUodmRldiwgVklSVElPX0JMS19GX1dS SVRFX1pFUk9FUykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVu YnVzLmMgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jCmluZGV4IDhiNjkxZmU1 MDQ3NWYuLjgzY2QwODA0MWU2YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Jh Y2sveGVuYnVzLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYwpAQCAt NTgzLDcgKzU4Myw3IEBAIHN0YXRpYyB2b2lkIHhlbl9ibGtia19kaXNjYXJkKHN0cnVjdCB4ZW5i dXNfdHJhbnNhY3Rpb24geGJ0LCBzdHJ1Y3QgYmFja2VuZF9pbmZvCiAJaWYgKCF4ZW5idXNfcmVh ZF91bnNpZ25lZChkZXYtPm5vZGVuYW1lLCAiZGlzY2FyZC1lbmFibGUiLCAxKSkKIAkJcmV0dXJu OwogCi0JaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhiZGV2KSkgewogCQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFt ZSwKIAkJCSJkaXNjYXJkLWdyYW51bGFyaXR5IiwgIiV1IiwKIAkJCXEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMg Yi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jCmluZGV4IDAwMzA1NmQ0ZjdmNWYuLmUxM2Ni NGQ0OGYxZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKKysrIGIv ZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwpAQCAtOTQ0LDcgKzk0NCw2IEBAIHN0YXRpYyB2 b2lkIGJsa2lmX3NldF9xdWV1ZV9saW1pdHMoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJ YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfVklSVCwgcnEpOwogCiAJaWYgKGluZm8tPmZl YXR1cmVfZGlzY2FyZCkgewotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCBycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHJxLCBnZXRfY2FwYWNpdHko Z2QpKTsKIAkJcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0gaW5mby0+ZGlzY2FyZF9n cmFudWxhcml0eSA/OgogCQkJCQkJIGluZm8tPnBoeXNpY2FsX3NlY3Rvcl9zaXplOwpAQCAtMTYw Niw3ICsxNjA1LDcgQEAgc3RhdGljIGlycXJldHVybl90IGJsa2lmX2ludGVycnVwdChpbnQgaXJx LCB2b2lkICpkZXZfaWQpCiAJCQkJYmxraWZfcmVxKHJlcSktPmVycm9yID0gQkxLX1NUU19OT1RT VVBQOwogCQkJCWluZm8tPmZlYXR1cmVfZGlzY2FyZCA9IDA7CiAJCQkJaW5mby0+ZmVhdHVyZV9z ZWNkaXNjYXJkID0gMDsKLQkJCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NB UkQsIHJxKTsKKwkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhycSwgMCk7CiAJCQkJ YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19TRUNFUkFTRSwgcnEpOwogCQkJfQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGU5NDc0YjAyMDEyZGUuLjU5ZmY0NDRiZjZj NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCisrKyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCkBAIC0xOTUyLDcgKzE5NTIsNiBAQCBzdGF0aWMgaW50 IHpyYW1fYWRkKHZvaWQpCiAJYmxrX3F1ZXVlX2lvX29wdCh6cmFtLT5kaXNrLT5xdWV1ZSwgUEFH RV9TSVpFKTsKIAl6cmFtLT5kaXNrLT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBQQUdFX1NJWkU7CiAJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMoenJhbS0+ZGlzay0+ cXVldWUsIFVJTlRfTUFYKTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCB6cmFtLT5kaXNrLT5xdWV1ZSk7CiAKIAkvKgogCSAqIHpyYW1fYmlvX2Rpc2NhcmQoKSB3aWxs IGNsZWFyIGFsbCBsb2dpY2FsIGJsb2NrcyBpZiBsb2dpY2FsIGJsb2NrCmRpZmYgLS1naXQgYS9k cml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMgYi9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMK aW5kZXggZmRkMDE5NGY4NGRkMC4uZTI3ZjY3ZjA2YTQyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9iY2FjaGUvcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwpAQCAt MTAwNSw3ICsxMDA1LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVkX2Rldl93cml0ZShzdHJ1Y3QgY2Fj aGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJCWJpb19nZXQocy0+aW9wLmJpbyk7CiAK IAkJaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEICYmCi0JCSAgICAhYmxrX3F1ZXVl X2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkJICAgICFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoZGMtPmJkZXYpKQogCQkJZ290byBpbnNlcnRfZGF0YTsKIAogCQkvKiBJL08g cmVxdWVzdCBzZW50IHRvIGJhY2tpbmcgZGV2aWNlICovCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBz dGF0aWMgdm9pZCBkZXRhY2hlZF9kZXZfZG9fcmVxdWVzdChzdHJ1Y3QgYmNhY2hlX2RldmljZSAq ZCwgc3RydWN0IGJpbyAqYmlvLAogCWJpby0+YmlfcHJpdmF0ZSA9IGRkaXA7CiAKIAlpZiAoKGJp b19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEKSAmJgotCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQo YmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhkYy0+YmRldikpCiAJCWJpby0+YmlfZW5kX2lvKGJpbyk7CiAJZWxzZQogCQlzdWJtaXRfYmlv X25vYWNjdChiaW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyBiL2Ry aXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKaW5kZXggYmYzZGUxNDlkM2M5Zi4uMmY0OWUzMTE0MmY2 MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYworKysgYi9kcml2ZXJzL21k L2JjYWNoZS9zdXBlci5jCkBAIC05NzMsNyArOTczLDYgQEAgc3RhdGljIGludCBiY2FjaGVfZGV2 aWNlX2luaXQoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsIHVuc2lnbmVkIGludCBibG9ja19zaXpl LAogCiAJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfTk9OUk9ULCBkLT5kaXNrLT5xdWV1 ZSk7CiAJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19BRERfUkFORE9NLCBkLT5kaXNr LT5xdWV1ZSk7Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgZC0+ZGlz ay0+cXVldWUpOwogCiAJYmxrX3F1ZXVlX3dyaXRlX2NhY2hlKHEsIHRydWUsIHRydWUpOwogCkBA IC0yMzUwLDcgKzIzNDksNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2NhY2hlKHN0cnVjdCBjYWNo ZV9zYiAqc2IsIHN0cnVjdCBjYWNoZV9zYl9kaXNrICpzYl9kaXNrLAogCWNhLT5iZGV2LT5iZF9o b2xkZXIgPSBjYTsKIAljYS0+c2JfZGlzayA9IHNiX2Rpc2s7CiAKLQlpZiAoYmxrX3F1ZXVlX2Rp c2NhcmQoYmRldl9nZXRfcXVldWUoYmRldikpKQorCWlmIChiZGV2X21heF9kaXNjYXJkX3NlY3Rv cnMoKGJkZXYpKSkKIAkJY2EtPmRpc2NhcmQgPSBDQUNIRV9ESVNDQVJEKCZjYS0+c2IpOwogCiAJ cmV0ID0gY2FjaGVfYWxsb2MoY2EpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3lz ZnMuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3N5c2ZzLmMKaW5kZXggZDEwMjlkNzFmZjNiYy4uYzZm Njc3MDU5MjE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3lzZnMuYworKysgYi9k cml2ZXJzL21kL2JjYWNoZS9zeXNmcy5jCkBAIC0xMTUxLDcgKzExNTEsNyBAQCBTVE9SRShfX2Jj aF9jYWNoZSkKIAlpZiAoYXR0ciA9PSAmc3lzZnNfZGlzY2FyZCkgewogCQlib29sIHYgPSBzdHJ0 b3VsX29yX3JldHVybihidWYpOwogCi0JCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9x dWV1ZShjYS0+YmRldikpKQorCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGNhLT5iZGV2 KSkKIAkJCWNhLT5kaXNjYXJkID0gdjsKIAogCQlpZiAodiAhPSBDQUNIRV9ESVNDQVJEKCZjYS0+ c2IpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jIGIvZHJpdmVy cy9tZC9kbS1jYWNoZS10YXJnZXQuYwppbmRleCA3ODBhNjFiYzZjYzAzLi4yOGM1ZGU4ZWNhNGEw IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jCisrKyBiL2RyaXZlcnMv bWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTMzMjksMTMgKzMzMjksNiBAQCBzdGF0aWMgaW50IGNh Y2hlX2l0ZXJhdGVfZGV2aWNlcyhzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwKIAlyZXR1cm4gcjsKIH0K IAotc3RhdGljIGJvb2wgb3JpZ2luX2Rldl9zdXBwb3J0c19kaXNjYXJkKHN0cnVjdCBibG9ja19k ZXZpY2UgKm9yaWdpbl9iZGV2KQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUob3JpZ2luX2JkZXYpOwotCi0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKHEpOwot fQotCiAvKgogICogSWYgZGlzY2FyZF9wYXNzZG93biB3YXMgZW5hYmxlZCB2ZXJpZnkgdGhhdCB0 aGUgb3JpZ2luIGRldmljZQogICogc3VwcG9ydHMgZGlzY2FyZHMuICBEaXNhYmxlIGRpc2NhcmRf cGFzc2Rvd24gaWYgbm90LgpAQCAtMzM0OSw3ICszMzQyLDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs ZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBjYWNoZSAqY2FjaGUpCiAJaWYgKCFj YWNoZS0+ZmVhdHVyZXMuZGlzY2FyZF9wYXNzZG93bikKIAkJcmV0dXJuOwogCi0JaWYgKCFvcmln aW5fZGV2X3N1cHBvcnRzX2Rpc2NhcmQob3JpZ2luX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlz Y2FyZF9zZWN0b3JzKG9yaWdpbl9iZGV2KSkKIAkJcmVhc29uID0gImRpc2NhcmQgdW5zdXBwb3J0 ZWQiOwogCiAJZWxzZSBpZiAob3JpZ2luX2xpbWl0cy0+bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNh Y2hlLT5zZWN0b3JzX3Blcl9ibG9jaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY2xvbmUt dGFyZ2V0LmMgYi9kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jCmluZGV4IDEyODMxNmE3M2Qw MTYuLjgxMWIwYTUzNzlkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0 LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYwpAQCAtMjAxNiwxMyArMjAxNiw2 IEBAIHN0YXRpYyB2b2lkIGNsb25lX3Jlc3VtZShzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSkKIAlkb193 YWtlcigmY2xvbmUtPndha2VyLndvcmspOwogfQogCi1zdGF0aWMgYm9vbCBiZGV2X3N1cHBvcnRz X2Rpc2NhcmRzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCi17Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLQotCXJldHVybiAocSAmJiBibGtfcXVl dWVfZGlzY2FyZChxKSk7Ci19Ci0KIC8qCiAgKiBJZiBkaXNjYXJkX3Bhc3Nkb3duIHdhcyBlbmFi bGVkIHZlcmlmeSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBkZXZpY2Ugc3VwcG9ydHMKICAqIGRpc2Nh cmRzLiBEaXNhYmxlIGRpc2NhcmRfcGFzc2Rvd24gaWYgbm90LgpAQCAtMjAzNiw3ICsyMDI5LDcg QEAgc3RhdGljIHZvaWQgZGlzYWJsZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBj bG9uZSAqY2xvbmUpCiAJaWYgKCF0ZXN0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCAm Y2xvbmUtPmZsYWdzKSkKIAkJcmV0dXJuOwogCi0JaWYgKCFiZGV2X3N1cHBvcnRzX2Rpc2NhcmRz KGRlc3RfZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXN0X2RldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAllbHNlIGlmIChkZXN0X2xpbWl0cy0+ bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNsb25lLT5yZWdpb25fc2l6ZSkKIAkJcmVhc29uID0gIm1h eCBkaXNjYXJkIHNlY3RvcnMgc21hbGxlciB0aGFuIGEgcmVnaW9uIjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKaW5k ZXggYzlkMDM2ZDZiYjJlZS4uZTE5NDIyNmM4OWU1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9k bS1sb2ctd3JpdGVzLmMKKysrIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKQEAgLTg2Niw5 ICs4NjYsOCBAQCBzdGF0aWMgaW50IGxvZ193cml0ZXNfbWVzc2FnZShzdHJ1Y3QgZG1fdGFyZ2V0 ICp0aSwgdW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YsCiBzdGF0aWMgdm9pZCBsb2dfd3JpdGVz X2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1p dHMpCiB7CiAJc3RydWN0IGxvZ193cml0ZXNfYyAqbGMgPSB0aS0+cHJpdmF0ZTsKLQlzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGxjLT5kZXYtPmJkZXYpOwogCi0JaWYg KCFxIHx8ICFibGtfcXVldWVfZGlzY2FyZChxKSkgeworCWlmICghYmRldl9tYXhfZGlzY2FyZF9z ZWN0b3JzKGxjLT5kZXYtPmJkZXYpKSB7CiAJCWxjLT5kZXZpY2Vfc3VwcG9ydHNfZGlzY2FyZCA9 IGZhbHNlOwogCQlsaW1pdHMtPmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSBsYy0+c2VjdG9yc2l6ZTsK IAkJbGltaXRzLT5tYXhfZGlzY2FyZF9zZWN0b3JzID0gKFVJTlRfTUFYID4+IFNFQ1RPUl9TSElG VCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJhaWQuYyBiL2RyaXZlcnMvbWQvZG0tcmFp ZC5jCmluZGV4IDJiMjY0MzVhNjk0NmUuLjk1MjZjY2JlZGFmYmEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvZG0tcmFpZC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmFpZC5jCkBAIC0yOTYzLDEzICsy OTYzLDggQEAgc3RhdGljIHZvaWQgY29uZmlndXJlX2Rpc2NhcmRfc3VwcG9ydChzdHJ1Y3QgcmFp ZF9zZXQgKnJzKQogCXJhaWQ0NTYgPSByc19pc19yYWlkNDU2KHJzKTsKIAogCWZvciAoaSA9IDA7 IGkgPCBycy0+cmFpZF9kaXNrczsgaSsrKSB7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOwot Ci0JCWlmICghcnMtPmRldltpXS5yZGV2LmJkZXYpCi0JCQljb250aW51ZTsKLQotCQlxID0gYmRl dl9nZXRfcXVldWUocnMtPmRldltpXS5yZGV2LmJkZXYpOwotCQlpZiAoIXEgfHwgIWJsa19xdWV1 ZV9kaXNjYXJkKHEpKQorCQlpZiAoIXJzLT5kZXZbaV0ucmRldi5iZGV2IHx8CisJCSAgICAhYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHJzLT5kZXZbaV0ucmRldi5iZGV2KSkKIAkJCXJldHVybjsK IAogCQlpZiAocmFpZDQ1NikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS10YWJsZS5jIGIv ZHJpdmVycy9tZC9kbS10YWJsZS5jCmluZGV4IGQ0NjgzOWZhYTBjYTUuLjBkZmY2OTA3ZmQwMGQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tdGFibGUuYworKysgYi9kcml2ZXJzL21kL2RtLXRh YmxlLmMKQEAgLTE4ODgsOSArMTg4OCw3IEBAIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRz X25vd2FpdChzdHJ1Y3QgZG1fdGFibGUgKnQpCiBzdGF0aWMgaW50IGRldmljZV9ub3RfZGlzY2Fy ZF9jYXBhYmxlKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgZG1fZGV2ICpkZXYsCiAJCQkJ ICAgICAgc2VjdG9yX3Qgc3RhcnQsIHNlY3Rvcl90IGxlbiwgdm9pZCAqZGF0YSkKIHsKLQlzdHJ1 Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGRldi0+YmRldik7Ci0KLQlyZXR1 cm4gIWJsa19xdWV1ZV9kaXNjYXJkKHEpOworCXJldHVybiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0 b3JzKGRldi0+YmRldik7CiB9CiAKIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRzX2Rpc2Nh cmRzKHN0cnVjdCBkbV90YWJsZSAqdCkKQEAgLTE5NzAsMTUgKzE5NjgsMTIgQEAgaW50IGRtX3Rh YmxlX3NldF9yZXN0cmljdGlvbnMoc3RydWN0IGRtX3RhYmxlICp0LCBzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwKIAkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19OT1dBSVQsIHEpOwog CiAJaWYgKCFkbV90YWJsZV9zdXBwb3J0c19kaXNjYXJkcyh0KSkgewotCQlibGtfcXVldWVfZmxh Z19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwotCQkvKiBNdXN0IGFsc28gY2xlYXIgZGlz Y2FyZCBsaW1pdHMuLi4gKi8KIAkJcS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwog CQlxLT5saW1pdHMubWF4X2h3X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJCXEtPmxpbWl0cy5kaXNj YXJkX2dyYW51bGFyaXR5ID0gMDsKIAkJcS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gMDsK IAkJcS0+bGltaXRzLmRpc2NhcmRfbWlzYWxpZ25lZCA9IDA7Ci0JfSBlbHNlCi0JCWJsa19xdWV1 ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOworCX0KIAogCWlmIChkbV90YWJsZV9z dXBwb3J0c19zZWN1cmVfZXJhc2UodCkpCiAJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFH X1NFQ0VSQVNFLCBxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVy cy9tZC9kbS10aGluLmMKaW5kZXggNGQyNWQwZTI3MDMxMy4uZWRlZDRiY2M0NTQ1ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMKKysrIGIvZHJpdmVycy9tZC9kbS10aGluLmMKQEAg LTI4MDIsMTMgKzI4MDIsNiBAQCBzdGF0aWMgdm9pZCByZXF1ZXVlX2Jpb3Moc3RydWN0IHBvb2wg KnBvb2wpCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqIEJpbmRpbmcgb2YgY29udHJvbCB0YXJnZXRzIHRvIGEgcG9v bCBvYmplY3QKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwotc3RhdGljIGJvb2wgZGF0YV9kZXZfc3VwcG9ydHNfZGlzY2Fy ZChzdHJ1Y3QgcG9vbF9jICpwdCkKLXsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKHB0LT5kYXRhX2Rldi0+YmRldik7Ci0KLQlyZXR1cm4gYmxrX3F1ZXVlX2Rpc2Nh cmQocSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzX2ZhY3RvcihzZWN0b3JfdCBibG9ja19zaXplLCB1 aW50MzJfdCBuKQogewogCXJldHVybiAhc2VjdG9yX2RpdihibG9ja19zaXplLCBuKTsKQEAgLTI4 MjgsNyArMjgyMSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcGFzc2Rvd25faWZfbm90X3N1cHBv cnRlZChzdHJ1Y3QgcG9vbF9jICpwdCkKIAlpZiAoIXB0LT5hZGp1c3RlZF9wZi5kaXNjYXJkX3Bh c3Nkb3duKQogCQlyZXR1cm47CiAKLQlpZiAoIWRhdGFfZGV2X3N1cHBvcnRzX2Rpc2NhcmQocHQp KQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHB0LT5kYXRhX2Rldi0+YmRldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAogCWVsc2UgaWYgKGRhdGFfbGltaXRz LT5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgcG9vbC0+c2VjdG9yc19wZXJfYmxvY2spCkBAIC00MDU3 LDggKzQwNTAsNiBAQCBzdGF0aWMgdm9pZCBwb29sX2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQg KnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1pdHMpCiAJCS8qCiAJCSAqIE11c3QgZXhwbGlj aXRseSBkaXNhbGxvdyBzdGFja2luZyBkaXNjYXJkIGxpbWl0cyBvdGhlcndpc2UgdGhlCiAJCSAq IGJsb2NrIGxheWVyIHdpbGwgc3RhY2sgdGhlbSBpZiBwb29sJ3MgZGF0YSBkZXZpY2UgaGFzIHN1 cHBvcnQuCi0JCSAqIFFVRVVFX0ZMQUdfRElTQ0FSRCB3b3VsZG4ndCBiZSBzZXQgYnV0IHRoZXJl IGlzIG5vIHdheSBmb3IgdGhlCi0JCSAqIHVzZXIgdG8gc2VlIHRoYXQsIHNvIG1ha2Ugc3VyZSB0 byBzZXQgYWxsIGRpc2NhcmQgbGltaXRzIHRvIDAuCiAJCSAqLwogCQlsaW1pdHMtPmRpc2NhcmRf Z3JhbnVsYXJpdHkgPSAwOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLmMg Yi9kcml2ZXJzL21kL2RtLmMKaW5kZXggM2M1ZmFkN2M0ZWU2OC4uZGJiZjY0Y2U3ZTkyNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZC9kbS5jCisrKyBiL2RyaXZlcnMvbWQvZG0uYwpAQCAtOTU1LDcg Kzk1NSw2IEBAIHZvaWQgZGlzYWJsZV9kaXNjYXJkKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCkK IAogCS8qIGRldmljZSBkb2Vzbid0IHJlYWxseSBzdXBwb3J0IERJU0NBUkQsIGRpc2FibGUgaXQg Ki8KIAlsaW1pdHMtPm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwotCWJsa19xdWV1ZV9mbGFnX2Ns ZWFyKFFVRVVFX0ZMQUdfRElTQ0FSRCwgbWQtPnF1ZXVlKTsKIH0KIAogdm9pZCBkaXNhYmxlX3dy aXRlX3plcm9lcyhzdHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQpCkBAIC05ODIsNyArOTgxLDcgQEAg c3RhdGljIHZvaWQgY2xvbmVfZW5kaW8oc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKHVubGlrZWx5 KGVycm9yID09IEJMS19TVFNfVEFSR0VUKSkgewogCQlpZiAoYmlvX29wKGJpbykgPT0gUkVRX09Q X0RJU0NBUkQgJiYKLQkJICAgICFxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycykKKwkJICAg ICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5iaV9iZGV2KSkKIAkJCWRpc2FibGVfZGlz Y2FyZChtZCk7CiAJCWVsc2UgaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9XUklURV9aRVJPRVMg JiYKIAkJCSAhcS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWQvbWQtbGluZWFyLmMgYi9kcml2ZXJzL21kL21kLWxpbmVhci5jCmluZGV4IDBm NTViMDc5MzcxYjEuLjEzOGEzYjI1YzVjODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQtbGlu ZWFyLmMKKysrIGIvZHJpdmVycy9tZC9tZC1saW5lYXIuYwpAQCAtNjQsNyArNjQsNiBAQCBzdGF0 aWMgc3RydWN0IGxpbmVhcl9jb25mICpsaW5lYXJfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBp bnQgcmFpZF9kaXNrcykKIAlzdHJ1Y3QgbGluZWFyX2NvbmYgKmNvbmY7CiAJc3RydWN0IG1kX3Jk ZXYgKnJkZXY7CiAJaW50IGksIGNudDsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFsc2U7 CiAKIAljb25mID0ga3phbGxvYyhzdHJ1Y3Rfc2l6ZShjb25mLCBkaXNrcywgcmFpZF9kaXNrcyks IEdGUF9LRVJORUwpOwogCWlmICghY29uZikKQEAgLTk2LDkgKzk1LDYgQEAgc3RhdGljIHN0cnVj dCBsaW5lYXJfY29uZiAqbGluZWFyX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IHJhaWRf ZGlza3MpCiAKIAkJY29uZi0+YXJyYXlfc2VjdG9ycyArPSByZGV2LT5zZWN0b3JzOwogCQljbnQr KzsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikp KQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCX0KIAlpZiAoY250ICE9IHJhaWRfZGlz a3MpIHsKIAkJcHJfd2FybigibWQvbGluZWFyOiVzOiBub3QgZW5vdWdoIGRyaXZlcyBwcmVzZW50 LiBBYm9ydGluZyFcbiIsCkBAIC0xMDYsMTEgKzEwMiw2IEBAIHN0YXRpYyBzdHJ1Y3QgbGluZWFy X2NvbmYgKmxpbmVhcl9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYsIGludCByYWlkX2Rpc2tzKQog CQlnb3RvIG91dDsKIAl9CiAKLQlpZiAoIWRpc2NhcmRfc3VwcG9ydGVkKQotCQlibGtfcXVldWVf ZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7Ci0JZWxzZQotCQli bGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBtZGRldi0+cXVldWUpOwotCiAJ LyoKIAkgKiBIZXJlIHdlIGNhbGN1bGF0ZSB0aGUgZGV2aWNlIG9mZnNldHMuCiAJICovCkBAIC0y NTIsNyArMjQzLDcgQEAgc3RhdGljIGJvb2wgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRk ZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXN0YXJ0X3NlY3RvciArIGRhdGFfb2Zmc2V0 OwogCiAJaWYgKHVubGlrZWx5KChiaW9fb3AoYmlvKSA9PSBSRVFfT1BfRElTQ0FSRCkgJiYKLQkJ ICAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKSB7 CisJCSAgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiaW8tPmJpX2JkZXYpKSkgewogCQkv KiBKdXN0IGlnbm9yZSBpdCAqLwogCQliaW9fZW5kaW8oYmlvKTsKIAl9IGVsc2UgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkMC5jIGIvZHJpdmVycy9tZC9yYWlkMC5jCmluZGV4IGIyMWUx MDExODNmNDQuLjcyMzFmNWUxZWFhNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAuYwor KysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTM5OSw3ICszOTksNiBAQCBzdGF0aWMgaW50IHJh aWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQogCWNvbmYgPSBtZGRldi0+cHJpdmF0ZTsKIAlp ZiAobWRkZXYtPnF1ZXVlKSB7CiAJCXN0cnVjdCBtZF9yZGV2ICpyZGV2OwotCQlib29sIGRpc2Nh cmRfc3VwcG9ydGVkID0gZmFsc2U7CiAKIAkJYmxrX3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2 LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3pl cm9lc19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwpAQCAtNDEy LDEzICs0MTEsNyBAQCBzdGF0aWMgaW50IHJhaWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQog CQlyZGV2X2Zvcl9lYWNoKHJkZXYsIG1kZGV2KSB7CiAJCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRl di0+Z2VuZGlzaywgcmRldi0+YmRldiwKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsK LQkJCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0J CQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCQl9Ci0JCWlmICghZGlzY2FyZF9zdXBwb3J0 ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5x dWV1ZSk7Ci0JCWVsc2UKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IG1kZGV2LT5xdWV1ZSk7CiAJfQogCiAJLyogY2FsY3VsYXRlIGFycmF5IGRldmljZSBzaXplICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxLmMgYi9kcml2ZXJzL21kL3JhaWQxLmMKaW5k ZXggZDgxYjg5Njg1NWY5Zi4uM2RhNzQ5ZDE1MGExNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9y YWlkMS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEuYwpAQCAtODAyLDcgKzgwMiw3IEBAIHN0YXRp YyB2b2lkIGZsdXNoX2Jpb19saXN0KHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVjdCBiaW8gKmJp bykKIAkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJYmlvX2lvX2Vy cm9yKGJpbyk7CiAJCX0gZWxzZSBpZiAodW5saWtlbHkoKGJpb19vcChiaW8pID09IFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9k aXNrLT5xdWV1ZSkpKQorCQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+Ymlf YmRldikpKQogCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQll bHNlCkBAIC0xODI2LDggKzE4MjYsNiBAQCBzdGF0aWMgaW50IHJhaWQxX2FkZF9kaXNrKHN0cnVj dCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KQogCQkJYnJlYWs7CiAJCX0KIAl9 Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShy ZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG1k ZGV2LT5xdWV1ZSk7CiAJcHJpbnRfY29uZihjb25mKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzEw Niw3ICszMTA0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikK IAlpbnQgaTsKIAlzdHJ1Y3QgbWRfcmRldiAqcmRldjsKIAlpbnQgcmV0OwotCWJvb2wgZGlzY2Fy ZF9zdXBwb3J0ZWQgPSBmYWxzZTsKIAogCWlmIChtZGRldi0+bGV2ZWwgIT0gMSkgewogCQlwcl93 YXJuKCJtZC9yYWlkMTolczogcmFpZCBsZXZlbCBub3Qgc2V0IHRvIG1pcnJvcmluZyAoJWQpXG4i LApAQCAtMzE0MSw4ICszMTM4LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2 ICptZGRldikKIAkJCWNvbnRpbnVlOwogCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRldi0+Z2VuZGlz aywgcmRldi0+YmRldiwKIAkJCQkgIHJkZXYtPmRhdGFfb2Zmc2V0IDw8IDkpOwotCQlpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9z dXBwb3J0ZWQgPSB0cnVlOwogCX0KIAogCW1kZGV2LT5kZWdyYWRlZCA9IDA7CkBAIC0zMTc5LDE1 ICszMTc0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAog CW1kX3NldF9hcnJheV9zZWN0b3JzKG1kZGV2LCByYWlkMV9zaXplKG1kZGV2LCAwLCAwKSk7CiAK LQlpZiAobWRkZXYtPnF1ZXVlKSB7Ci0JCWlmIChkaXNjYXJkX3N1cHBvcnRlZCkKLQkJCWJsa19x dWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwot CQllbHNlCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJ CQkgIG1kZGV2LT5xdWV1ZSk7Ci0JfQotCiAJcmV0ID0gbWRfaW50ZWdyaXR5X3JlZ2lzdGVyKG1k ZGV2KTsKIAlpZiAocmV0KSB7CiAJCW1kX3VucmVnaXN0ZXJfdGhyZWFkKCZtZGRldi0+dGhyZWFk KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5j CmluZGV4IDc4MTZjOGIyZTgwODcuLjM2YTQ2MDAxNWNmNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAtODg4LDcgKzg4OCw3IEBA IHN0YXRpYyB2b2lkIGZsdXNoX3BlbmRpbmdfd3JpdGVzKHN0cnVjdCByMTBjb25mICpjb25mKQog CQkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJCWJpb19pb19lcnJv cihiaW8pOwogCQkJfSBlbHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCQkgICAgIWJsa19xdWV1ZV9kaXNjYXJkKGJpby0+YmlfYmRldi0+YmRf ZGlzay0+cXVldWUpKSkKKwkJCQkJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5i aV9iZGV2KSkpCiAJCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCQliaW9fZW5kaW8oYmlvKTsK IAkJCWVsc2UKQEAgLTEwODMsNyArMTA4Myw3IEBAIHN0YXRpYyB2b2lkIHJhaWQxMF91bnBsdWco c3RydWN0IGJsa19wbHVnX2NiICpjYiwgYm9vbCBmcm9tX3NjaGVkdWxlKQogCQlpZiAodGVzdF9i aXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpKSB7CiAJCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJfSBl bHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9ESVNDQVJEKSAmJgotCQkJ CSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKQor CQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+YmlfYmRldikpKQogCQkJLyog SnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQllbHNlCkBAIC0yMTQ0LDgg KzIxNDQsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9hZGRfZGlzayhzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzdHJ1Y3QgbWRfcmRldiAqcmRldikKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKHAtPnJkZXYsIHJk ZXYpOwogCQlicmVhazsKIAl9Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2Fy ZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7CiAKIAlwcmludF9jb25mKGNvbmYpOwogCXJl dHVybiBlcnI7CkBAIC00MDY5LDcgKzQwNjcsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4oc3Ry dWN0IG1kZGV2ICptZGRldikKIAlzZWN0b3JfdCBzaXplOwogCXNlY3Rvcl90IG1pbl9vZmZzZXRf ZGlmZiA9IDA7CiAJaW50IGZpcnN0ID0gMTsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFs c2U7CiAKIAlpZiAobWRkZXZfaW5pdF93cml0ZXNfcGVuZGluZyhtZGRldikgPCAwKQogCQlyZXR1 cm4gLUVOT01FTTsKQEAgLTQxNDAsMjAgKzQxMzcsOSBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4o c3RydWN0IG1kZGV2ICptZGRldikKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsKIAog CQlkaXNrLT5oZWFkX3Bvc2l0aW9uID0gMDsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRl dl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwog CQlmaXJzdCA9IDA7CiAJfQogCi0JaWYgKG1kZGV2LT5xdWV1ZSkgewotCQlpZiAoZGlzY2FyZF9z dXBwb3J0ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELAotCQkJ CQkJbWRkZXYtPnF1ZXVlKTsKLQkJZWxzZQotCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVf RkxBR19ESVNDQVJELAotCQkJCQkJICBtZGRldi0+cXVldWUpOwotCX0KIAkvKiBuZWVkIHRvIGNo ZWNrIHRoYXQgZXZlcnkgYmxvY2sgaGFzIGF0IGxlYXN0IG9uZSB3b3JraW5nIG1pcnJvciAqLwog CWlmICghZW5vdWdoKGNvbmYsIC0xKSkgewogCQlwcl9lcnIoIm1kL3JhaWQxMDolczogbm90IGVu b3VnaCBvcGVyYXRpb25hbCBtaXJyb3JzLlxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFp ZDUtY2FjaGUuYyBiL2RyaXZlcnMvbWQvcmFpZDUtY2FjaGUuYwppbmRleCBhN2Q1MGZmOTAyMGE4 Li5jM2NiZjlhNTc0YTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQ1LWNhY2hlLmMKKysr IGIvZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5jCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBzdGF0aWMg dm9pZCByNWxfd3JpdGVfc3VwZXJfYW5kX2Rpc2NhcmRfc3BhY2Uoc3RydWN0IHI1bF9sb2cgKmxv ZywKIAogCXI1bF93cml0ZV9zdXBlcihsb2csIGVuZCk7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNj YXJkKGJkZXZfZ2V0X3F1ZXVlKGJkZXYpKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhiZGV2KSkKIAkJcmV0dXJuOwogCiAJbWRkZXYgPSBsb2ctPnJkZXYtPm1kZGV2OwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDBiYmFl MGU2Mzg2NjYuLjU5ZjkxZTM5MmEyYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYwor KysgYi9kcml2ZXJzL21kL3JhaWQ1LmMKQEAgLTc3NzYsMTQgKzc3NzYsMTAgQEAgc3RhdGljIGlu dCByYWlkNV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAkJICogQSBiZXR0ZXIgaWRlYSBtaWdo dCBiZSB0byB0dXJuIERJU0NBUkQgaW50byBXUklURV9aRVJPRVMKIAkJICogcmVxdWVzdHMsIGFz IHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgc2FmZS4KIAkJICovCi0JCWlmIChkZXZpY2VzX2hhbmRs ZV9kaXNjYXJkX3NhZmVseSAmJgotCQkgICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMubWF4X2Rpc2Nh cmRfc2VjdG9ycyA+PSAoc3RyaXBlID4+IDkpICYmCi0JCSAgICBtZGRldi0+cXVldWUtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5ID49IHN0cmlwZSkKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChR VUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwotCQllbHNlCi0JCQlibGtf cXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUp OworCQlpZiAoIWRldmljZXNfaGFuZGxlX2Rpc2NhcmRfc2FmZWx5IHx8CisJCSAgICBtZGRldi0+ cXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgKHN0cmlwZSA+PiA5KSB8fAorCQkg ICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA8IHN0cmlwZSkKKwkJ CWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgMCk7CiAKIAkJYmxr X3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgVUlOVF9NQVgpOwogCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUu YwppbmRleCBjNjliMmQ5ZGY2ZjE2Li5jYWM2MzE1MDEwYTNkIDEwMDY0NAotLS0gYS9kcml2ZXJz L21tYy9jb3JlL3F1ZXVlLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jCkBAIC0xODMs NyArMTgzLDYgQEAgc3RhdGljIHZvaWQgbW1jX3F1ZXVlX3NldHVwX2Rpc2NhcmQoc3RydWN0IHJl cXVlc3RfcXVldWUgKnEsCiAJaWYgKCFtYXhfZGlzY2FyZCkKIAkJcmV0dXJuOwogCi0JYmxrX3F1 ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJYmxrX3F1ZXVlX21heF9kaXNj YXJkX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmQpOwogCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5ID0gY2FyZC0+cHJlZl9lcmFzZSA8PCA5OwogCS8qIGdyYW51bGFyaXR5IG11c3Qgbm90IGJl IGdyZWF0ZXIgdGhhbiBtYXguIGRpc2NhcmQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210 ZF9ibGtkZXZzLmMgYi9kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jCmluZGV4IDY0ZDJiMDkzZjEx NGIuLmY3MzE3MjExMTQ2NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMK KysrIGIvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwpAQCAtMzc3LDcgKzM3Nyw2IEBAIGludCBh ZGRfbXRkX2Jsa3RyYW5zX2RldihzdHJ1Y3QgbXRkX2Jsa3RyYW5zX2RldiAqbmV3KQogCWJsa19x dWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfQUREX1JBTkRPTSwgbmV3LT5ycSk7CiAKIAlpZiAo dHItPmRpc2NhcmQpIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwg bmV3LT5ycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5ldy0+cnEsIFVJTlRf TUFYKTsKIAkJbmV3LT5ycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSB0ci0+Ymxrc2l6 ZTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMgYi9kcml2ZXJzL252 bWUvaG9zdC9jb3JlLmMKaW5kZXggZWZiODVjNmQ4ZTJkNS4uYjAxMzAwZDljZDM3MiAxMDA2NDQK LS0tIGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2Nv cmUuYwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9jb25maWdfZGlzY2Fy ZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQogCXUzMiBzaXplID0g cXVldWVfbG9naWNhbF9ibG9ja19zaXplKHF1ZXVlKTsKIAogCWlmIChjdHJsLT5tYXhfZGlzY2Fy ZF9zZWN0b3JzID09IDApIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19ESVND QVJELCBxdWV1ZSk7CisJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHF1ZXVlLCAwKTsK IAkJcmV0dXJuOwogCX0KIApAQCAtMTYxOSw3ICsxNjE5LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9j b25maWdfZGlzY2FyZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQog CXF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IHNpemU7CiAKIAkvKiBJZiBkaXNj YXJkIGlzIGFscmVhZHkgZW5hYmxlZCwgZG9uJ3QgcmVzZXQgcXVldWUgbGltaXRzICovCi0JaWYg KGJsa19xdWV1ZV9mbGFnX3Rlc3RfYW5kX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHF1ZXVlKSkK KwlpZiAocXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzKQogCQlyZXR1cm47CiAKIAli bGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxdWV1ZSwgY3RybC0+bWF4X2Rpc2NhcmRfc2Vj dG9ycyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9mYmEuYyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCmluZGV4IGUwODRmNGRlZGRkZGQuLjhiZDU2NjVkYjkx OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCisrKyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCkBAIC03OTEsNyArNzkxLDYgQEAgc3RhdGljIHZvaWQg ZGFzZF9mYmFfc2V0dXBfYmxrX3F1ZXVlKHN0cnVjdCBkYXNkX2Jsb2NrICpibG9jaykKIAogCWJs a19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIG1heF9kaXNjYXJkX3NlY3RvcnMpOwogCWJs a19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmRfc2VjdG9ycyk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBpbnQgZGFzZF9mYmFfcGVfaGFuZGxlcihzdHJ1Y3QgZGFzZF9kZXZpY2UgKmRldmljZSwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggZGM2 ZTU1NzYxZmQxZi4uOTY5NGUyY2ZhZjlhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmMK KysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTc5Nyw3ICs3OTcsNiBAQCBzdGF0aWMgdm9pZCBz ZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9k ZSkKIAljYXNlIFNEX0xCUF9GVUxMOgogCWNhc2UgU0RfTEJQX0RJU0FCTEU6CiAJCWJsa19xdWV1 ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIDApOwotCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVV RV9GTEFHX0RJU0NBUkQsIHEpOwogCQlyZXR1cm47CiAKIAljYXNlIFNEX0xCUF9VTk1BUDoKQEAg LTgzMCw3ICs4MjksNiBAQCBzdGF0aWMgdm9pZCBzZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2Nz aV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9kZSkKIAl9CiAKIAlibGtfcXVldWVfbWF4X2Rp c2NhcmRfc2VjdG9ycyhxLCBtYXhfYmxvY2tzICogKGxvZ2ljYWxfYmxvY2tfc2l6ZSA+PiA5KSk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBibGtfc3RhdHVzX3Qgc2Rfc2V0dXBfdW5tYXBfY21uZChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQp CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYyBiL2RyaXZl cnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCmluZGV4IGMzZTI1YmFjOTBkNTkuLjZjYjlm ODc4NDMyNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5j CisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCkBAIC04MzgsNyArODM4 LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3RydWN0IHNlX2Rl dl9hdHRyaWIgKmF0dHJpYiwKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3NpemUoYmRl dik7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKGJkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlhdHRyaWItPm1heF91bm1hcF9s YmFfY291bnQgPQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyBiL2ZzL2J0cmZz L2V4dGVudC10cmVlLmMKaW5kZXggZjQ3NzAzNWEyYWMyMy4uZWZkOGRlYjNhYjdlOCAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5j CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBzdGF0aWMgaW50IGRvX2Rpc2NhcmRfZXh0ZW50KHN0cnVj dCBidHJmc19pb19zdHJpcGUgKnN0cmlwZSwgdTY0ICpieXRlcykKIAkJcmV0ID0gYnRyZnNfcmVz ZXRfZGV2aWNlX3pvbmUoZGV2X3JlcGxhY2UtPnRndGRldiwgcGh5cywgbGVuLAogCQkJCQkgICAg ICAmZGlzY2FyZGVkKTsKIAkJZGlzY2FyZGVkICs9IHNyY19kaXNjOwotCX0gZWxzZSBpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoc3RyaXBlLT5kZXYtPmJkZXYpKSkgeworCX0g ZWxzZSBpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHN0cmlwZS0+ZGV2LT5iZGV2KSkgewog CQlyZXQgPSBidHJmc19pc3N1ZV9kaXNjYXJkKGRldi0+YmRldiwgcGh5cywgbGVuLCAmZGlzY2Fy ZGVkKTsKIAl9IGVsc2UgewogCQlyZXQgPSAwOwpAQCAtNTk4Nyw3ICs1OTg3LDcgQEAgc3RhdGlj IGludCBidHJmc190cmltX2ZyZWVfZXh0ZW50cyhzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2Us IHU2NCAqdHJpbW1lZCkKIAkqdHJpbW1lZCA9IDA7CiAKIAkvKiBEaXNjYXJkIG5vdCBzdXBwb3J0 ZWQgPSBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRf cXVldWUoZGV2aWNlLT5iZGV2KSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoZGV2 aWNlLT5iZGV2KSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBOb3Qgd3JpdGFibGUgPSBub3RoaW5nIHRv IGRvLiAqLwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMK aW5kZXggZjQ2ZTcxMDYxOTQyZC4uMDk2YmIwZGEwM2YxYyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv aW9jdGwuYworKysgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGlj IG5vaW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sCiAJCWlmICghZGV2aWNlLT5iZGV2KQogCQkJY29udGludWU7CiAJCXEgPSBiZGV2X2dl dF9xdWV1ZShkZXZpY2UtPmJkZXYpOwotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKKwkJ aWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJkZXYpKSB7CiAJCQludW1fZGV2 aWNlcysrOwogCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSwKIAkJCQkgICAgIG1pbmxlbik7CmRpZmYgLS1naXQgYS9mcy9leGZhdC9maWxlLmMgYi9m cy9leGZhdC9maWxlLmMKaW5kZXggMmY1MTMwMDU5MjM2Ni4uNzY1ZTRmNjNkZDE4ZCAxMDA2NDQK LS0tIGEvZnMvZXhmYXQvZmlsZS5jCisrKyBiL2ZzL2V4ZmF0L2ZpbGUuYwpAQCAtMzU4LDcgKzM1 OCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJcmV0 dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoaW5vZGUtPmlfc2ItPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAogCWlmIChjb3B5X2Zyb21fdXNlcigmcmFuZ2UsIChzdHJ1Y3QgZnN0cmltX3Jhbmdl IF9fdXNlciAqKWFyZywgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBl ci5jIGIvZnMvZXhmYXQvc3VwZXIuYwppbmRleCA4Y2EyMWU3OTE3ZDE2Li5iZTA3ODhlY2FmMjBl IDEwMDY0NAotLS0gYS9mcy9leGZhdC9zdXBlci5jCisrKyBiL2ZzL2V4ZmF0L3N1cGVyLmMKQEAg LTYyNywxMyArNjI3LDkgQEAgc3RhdGljIGludCBleGZhdF9maWxsX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpZiAob3B0cy0+YWxsb3dfdXRp bWUgPT0gKHVuc2lnbmVkIHNob3J0KS0xKQogCQlvcHRzLT5hbGxvd191dGltZSA9IH5vcHRzLT5m c19kbWFzayAmIDAwMjI7CiAKLQlpZiAob3B0cy0+ZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpIHsKLQkJCWV4ZmF0X3dhcm4oc2IsICJtb3VudGluZyB3aXRoIFwiZGlz Y2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7 Ci0JCQlvcHRzLT5kaXNjYXJkID0gMDsKLQkJfQorCWlmIChvcHRzLT5kaXNjYXJkICYmICFiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoc2ItPnNfYmRldikpIHsKKwkJZXhmYXRfd2FybihzYiwgIm1v dW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBkb2VzIG5vdCBz dXBwb3J0IGRpc2NhcmQiKTsKKwkJb3B0cy0+ZGlzY2FyZCA9IDA7CiAJfQogCiAJc2ItPnNfZmxh Z3MgfD0gU0JfTk9ESVJBVElNRTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW9jdGwuYyBiL2ZzL2V4 dDQvaW9jdGwuYwppbmRleCA5OTIyMjljYTJkODMwLi42ZTNiOWVlYTEyNmY0IDEwMDY0NAotLS0g YS9mcy9leHQ0L2lvY3RsLmMKKysrIGIvZnMvZXh0NC9pb2N0bC5jCkBAIC0xMDQ0LDcgKzEwNDQs NiBAQCBzdGF0aWMgaW50IGV4dDRfaW9jdGxfY2hlY2twb2ludChzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJX191MzIgZmxhZ3MgPSAwOwogCXVuc2lnbmVkIGludCBmbHVz aF9mbGFncyA9IDA7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGZpbGVfaW5vZGUoZmlscCkt Pmlfc2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnE7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIo JmZsYWdzLCAoX191MzIgX191c2VyICopYXJnLAogCQkJCXNpemVvZihfX3UzMikpKQpAQCAtMTA2 NSwxMCArMTA2NCw4IEBAIHN0YXRpYyBpbnQgZXh0NF9pb2N0bF9jaGVja3BvaW50KHN0cnVjdCBm aWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIAlpZiAoZmxhZ3MgJiB+RVhUNF9JT0NfQ0hF Q0tQT0lOVF9GTEFHX1ZBTElEKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXEgPSBiZGV2X2dldF9x dWV1ZShFWFQ0X1NCKHNiKS0+c19qb3VybmFsLT5qX2Rldik7Ci0JaWYgKCFxKQotCQlyZXR1cm4g LUVOWElPOwotCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElTQ0FSRCkgJiYgIWJs a19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElT Q0FSRCkgJiYKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhFWFQ0X1NCKHNiKS0+c19q b3VybmFsLT5qX2RldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChmbGFncyAmIEVY VDRfSU9DX0NIRUNLUE9JTlRfRkxBR19EUllfUlVOKQpAQCAtMTM5MywxNCArMTM5MCwxMyBAQCBz dGF0aWMgbG9uZyBfX2V4dDRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBj bWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCiAJY2FzZSBGSVRSSU06CiAJewotCQlzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0 cmltX3JhbmdlIHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIAogCQlpZiAoIWNhcGFibGUoQ0FQX1NZ U19BRE1JTikpCiAJCQlyZXR1cm4gLUVQRVJNOwogCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQo cSkpCisJCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCiAJCS8qCmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9m cy9leHQ0L3N1cGVyLmMKaW5kZXggODE3NDllYWRkZjRjMS4uOTNmNGU0ZTllMjYzMSAxMDA2NDQK LS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNTQ1OCwxMyAr NTQ1OCw5IEBAIHN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQg KmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCQkJZ290byBmYWlsZWRfbW91bnQ5OwogCX0K IAotCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkpIHsKLQkJc3RydWN0IHJlcXVlc3RfcXVldWUg KnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKLQkJaWYgKCFibGtfcXVldWVfZGlzY2Fy ZChxKSkKLQkJCWV4dDRfbXNnKHNiLCBLRVJOX1dBUk5JTkcsCi0JCQkJICJtb3VudGluZyB3aXRo IFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0ICIKLQkJCQkgInRoZSBkZXZpY2UgZG9lcyBub3Qgc3Vw cG9ydCBkaXNjYXJkIik7Ci0JfQorCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkgJiYgIWJkZXZf bWF4X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZXh0NF9tc2coc2IsIEtFUk5fV0FS TklORywKKwkJCSAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCB0aGUgZGV2 aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwogCiAJaWYgKGVzLT5zX2Vycm9yX2NvdW50 KQogCQltb2RfdGltZXIoJnNiaS0+c19lcnJfcmVwb3J0LCBqaWZmaWVzICsgMzAwKkhaKTsgLyog NSBtaW51dGVzICovCmRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5o CmluZGV4IGNkMWU2NWJjZjBiMDQuLjBlYTlhNWZhN2MxZGQgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMv ZjJmcy5oCisrKyBiL2ZzL2YyZnMvZjJmcy5oCkBAIC00MzgxLDggKzQzODEsNyBAQCBzdGF0aWMg aW5saW5lIGJvb2wgZjJmc19od19zaG91bGRfZGlzY2FyZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmkpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2JkZXZfc3VwcG9ydF9kaXNjYXJkKHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKGJkZXZf Z2V0X3F1ZXVlKGJkZXYpKSB8fAotCSAgICAgICBiZGV2X2lzX3pvbmVkKGJkZXYpOworCXJldHVy biBiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgfHwgYmRldl9pc196b25lZChiZGV2KTsK IH0KIAogc3RhdGljIGlubGluZSBib29sIGYyZnNfaHdfc3VwcG9ydF9kaXNjYXJkKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9mcy9mYXQvZmls ZS5jCmluZGV4IGE1YTMwOWZjYzdmYWYuLmU0YzdkMTBlODAxMjkgMTAwNjQ0Ci0tLSBhL2ZzL2Zh dC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBp bnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGFy ZykKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCiAJCXJldHVybiAtRVBFUk07CiAKLQlp ZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3Jz KHNiLT5zX2JkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAl1c2VyX3JhbmdlID0gKHN0 cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICopYXJnOwpkaWZmIC0tZ2l0IGEvZnMvZmF0L2lub2Rl LmMgYi9mcy9mYXQvaW5vZGUuYwppbmRleCBiZjYwNTFiZGYxZDFkLi4zZDFhZmI5NWE5MjVhIDEw MDY0NAotLS0gYS9mcy9mYXQvaW5vZGUuYworKysgYi9mcy9mYXQvaW5vZGUuYwpAQCAtMTg3Miwx MyArMTg3Miw5IEBAIGludCBmYXRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2 b2lkICpkYXRhLCBpbnQgc2lsZW50LCBpbnQgaXN2ZmF0LAogCQlnb3RvIG91dF9mYWlsOwogCX0K IAotCWlmIChzYmktPm9wdGlvbnMuZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJk KHEpKQotCQkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5HLAotCQkJCQkibW91bnRpbmcgd2l0aCBc ImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0JCQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBv cnQgZGlzY2FyZCIpOwotCX0KKwlpZiAoc2JpLT5vcHRpb25zLmRpc2NhcmQgJiYgIWJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5H LAorCQkJIm1vdW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IGRpc2NhcmQiKTsKIAogCWZhdF9zZXRfc3RhdGUoc2IsIDEsIDApOwog CXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA4MDFhZDlmNGYyYmVmLi43ZjIwYWM5MTMzYmM2IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoIXRlc3Rf Yml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkKIAkJcmV0dXJuIC1FUk9GUzsK IAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoc2RwLT5zZF92ZnMtPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlm IChjb3B5X2Zyb21fdXNlcigmciwgYXJncCwgc2l6ZW9mKHIpKSkKZGlmZiAtLWdpdCBhL2ZzL2pi ZDIvam91cm5hbC5jIGIvZnMvamJkMi9qb3VybmFsLmMKaW5kZXggZmNhY2FmYTQ1MTBkMS4uMTlk MjI2Y2Q0ZmY0ZCAxMDA2NDQKLS0tIGEvZnMvamJkMi9qb3VybmFsLmMKKysrIGIvZnMvamJkMi9q b3VybmFsLmMKQEAgLTE3NjIsNyArMTc2Miw2IEBAIHN0YXRpYyBpbnQgX19qYmQyX2pvdXJuYWxf ZXJhc2Uoam91cm5hbF90ICpqb3VybmFsLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJdW5zaWduZWQg bG9uZyBibG9jaywgbG9nX29mZnNldDsgLyogbG9naWNhbCAqLwogCXVuc2lnbmVkIGxvbmcgbG9u ZyBwaHlzX2Jsb2NrLCBibG9ja19zdGFydCwgYmxvY2tfc3RvcDsgLyogcGh5c2ljYWwgKi8KIAls b2ZmX3QgYnl0ZV9zdGFydCwgYnl0ZV9zdG9wLCBieXRlX2NvdW50OwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoam91cm5hbC0+al9kZXYpOwogCiAJLyogZmxhZ3Mg bXVzdCBiZSBzZXQgdG8gZWl0aGVyIGRpc2NhcmQgb3IgemVyb291dCAqLwogCWlmICgoZmxhZ3Mg JiB+SkJEMl9KT1VSTkFMX0ZMVVNIX1ZBTElEKSB8fCAhZmxhZ3MgfHwKQEAgLTE3NzAsMTAgKzE3 NjksOCBAQCBzdGF0aWMgaW50IF9famJkMl9qb3VybmFsX2VyYXNlKGpvdXJuYWxfdCAqam91cm5h bCwgdW5zaWduZWQgaW50IGZsYWdzKQogCQkJKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX1pF Uk9PVVQpKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoIXEpCi0JCXJldHVybiAtRU5YSU87 Ci0KLQlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQpICYmICFibGtfcXVl dWVfZGlzY2FyZChxKSkKKwlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQp ICYmCisJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoam91cm5hbC0+al9kZXYpKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvamZzL2lvY3RsLmMgYi9m cy9qZnMvaW9jdGwuYwppbmRleCAwM2E4NDVhYjRmMDA5Li4zNTdhZTZlNWMzNmVjIDEwMDY0NAot LS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpAQCAtMTE3LDcgKzExNyw3 IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQkJcmV0 dXJuIC1FUEVSTTsKIAotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCWlmICghYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQlqZnNfd2FybigiRklUUklN IG5vdCBzdXBwb3J0ZWQgb24gZGV2aWNlIik7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0K ZGlmZiAtLWdpdCBhL2ZzL2pmcy9zdXBlci5jIGIvZnMvamZzL3N1cGVyLmMKaW5kZXggZjFhMTNh NzRjZGRmMy4uODVkNGY0NGYyYWM0ZCAxMDA2NDQKLS0tIGEvZnMvamZzL3N1cGVyLmMKKysrIGIv ZnMvamZzL3N1cGVyLmMKQEAgLTM3MiwxOSArMzcyLDE2IEBAIHN0YXRpYyBpbnQgcGFyc2Vfb3B0 aW9ucyhjaGFyICpvcHRpb25zLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzNjQgKm5ld0xWU2l6 ZSwKIAkJfQogCiAJCWNhc2UgT3B0X2Rpc2NhcmQ6Ci0JCXsKLQkJCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCQkvKiBpZiBzZXQgdG8gMSwg ZXZlbiBjb3B5aW5nIGZpbGVzIHdpbGwgY2F1c2UKIAkJCSAqIHRyaW1taW5nIDpPCiAJCQkgKiAt PiB1c2VyIGhhcyBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgb25saW5lIHRyaW1taW5nCiAJCQkgKi8K IAkJCXNiaS0+bWluYmxrc190cmltID0gNjQ7Ci0JCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkp CisJCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJCSpmbGFn IHw9IEpGU19ESVNDQVJEOwogCQkJZWxzZQogCQkJCXByX2VycigiSkZTOiBkaXNjYXJkIG9wdGlv biBub3Qgc3VwcG9ydGVkIG9uIGRldmljZVxuIik7CiAJCQlicmVhazsKLQkJfQogCiAJCWNhc2Ug T3B0X25vZGlzY2FyZDoKIAkJCSpmbGFnICY9IH5KRlNfRElTQ0FSRDsKQEAgLTM5MiwxMCArMzg5 LDkgQEAgc3RhdGljIGludCBwYXJzZV9vcHRpb25zKGNoYXIgKm9wdGlvbnMsIHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHM2NCAqbmV3TFZTaXplLAogCiAJCWNhc2UgT3B0X2Rpc2NhcmRfbWluYmxr OgogCQl7Ci0JCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCQkJY2hhciAqbWluYmxrc190cmltID0gYXJnc1swXS5mcm9tOwogCQkJaW50IHJj OwotCQkJaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCQlpZiAoYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQkJKmZsYWcgfD0gSkZTX0RJU0NBUkQ7CiAJCQkJ cmMgPSBrc3RydG91aW50KG1pbmJsa3NfdHJpbSwgMCwKIAkJCQkJCSZzYmktPm1pbmJsa3NfdHJp bSk7CmRpZmYgLS1naXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmlu ZGV4IGZlYzE5NGE2NjZmNGIuLjUyYjczZjU1OGZjYjEgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9p b2N0bC5jCisrKyBiL2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDU5LDcgKzEwNTksNyBAQCBzdGF0 aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCBfX3Vz ZXIgKmFyZ3ApCiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJN OwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhuaWxmcy0+bnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChj b3B5X2Zyb21fdXNlcigmcmFuZ2UsIGFyZ3AsIHNpemVvZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEv ZnMvbnRmczMvZmlsZS5jIGIvZnMvbnRmczMvZmlsZS5jCmluZGV4IDc4N2I1M2I5ODRlZTEuLmU3 NjMyMzYxNjkzMzEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9m aWxlLmMKQEAgLTI4LDcgKzI4LDcgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1 Y3QgbnRmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShD QVBfU1lTX0FETUlOKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2Nh cmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoc2JpLT5zYi0+c19iZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJdXNlcl9yYW5nZSA9IChzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlciAqKWFyZzsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9mcy9udGZz My9zdXBlci5jCmluZGV4IGNkMzBlODFhYmJjZTAuLmM3MzQwODViY2NlNGEgMTAwNjQ0Ci0tLSBh L2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtOTEzLDcgKzkxMyw3 IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0 cnVjdCBmc19jb250ZXh0ICpmYykKIAl9CiAKIAlycSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwot CWlmIChibGtfcXVldWVfZGlzY2FyZChycSkgJiYgcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5KSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBycS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gcnEt PmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlf bWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwpkaWZm IC0tZ2l0IGEvZnMvb2NmczIvaW9jdGwuYyBiL2ZzL29jZnMyL2lvY3RsLmMKaW5kZXggZjU5NDYx ZDg1ZGE0NS4uOWI3OGVmMTAzYWRhNiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvaW9jdGwuYworKysg Yi9mcy9vY2ZzMi9pb2N0bC5jCkBAIC05MTAsNyArOTEwLDcgQEAgbG9uZyBvY2ZzMl9pb2N0bChz dHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJ CWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJCXJldHVybiAtRVBFUk07CiAKLQkJaWYg KCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMo c2ItPnNfYmRldikpCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkJaWYgKGNvcHlfZnJvbV91 c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZz X2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmluZGV4IDAxOTFkZThjZTljZWQuLmE0 ZTY2MDlkNjE2YjcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCisrKyBiL2ZzL3hm cy94ZnNfZGlzY2FyZC5jCkBAIC0xNjIsNyArMTYyLDcgQEAgeGZzX2lvY190cmltKAogCiAJaWYg KCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJNOwotCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMobXAtPm1fZGRl dl90YXJncC0+YnRfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCS8qCmRpZmYgLS1n aXQgYS9mcy94ZnMveGZzX3N1cGVyLmMgYi9mcy94ZnMveGZzX3N1cGVyLmMKaW5kZXggNTRiZTlk NjQwOTNlZC4uYTI3NmI4MTExZjYzNiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19zdXBlci5jCisr KyBiL2ZzL3hmcy94ZnNfc3VwZXIuYwpAQCAtMTYwOCwxNCArMTYwOCwxMCBAQCB4ZnNfZnNfZmls bF9zdXBlcigKIAkJCWdvdG8gb3V0X2ZpbGVzdHJlYW1fdW5tb3VudDsKIAl9CiAKLQlpZiAoeGZz X2hhc19kaXNjYXJkKG1wKSkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0 X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKLQkJ CXhmc193YXJuKG1wLCAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0J CQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwotCQkJbXAtPm1fZmVh dHVyZXMgJj0gflhGU19GRUFUX0RJU0NBUkQ7Ci0JCX0KKwlpZiAoeGZzX2hhc19kaXNjYXJkKG1w KSAmJiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CisJCXhmc193YXJu KG1wLAorCSJtb3VudGluZyB3aXRoIFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2Ug ZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7CisJCW1wLT5tX2ZlYXR1cmVzICY9IH5YRlNfRkVB VF9ESVNDQVJEOwogCX0KIAogCWlmICh4ZnNfaGFzX3JlZmxpbmsobXApKSB7CmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaAppbmRleCBj ZTE2MjQ3ZDNhZmFiLi43NjdhYjIyZTEwNTJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Js a2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKQEAgLTU0MCw3ICs1NDAsNiBAQCBz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSB7CiAjZGVmaW5lIFFVRVVFX0ZMQUdfTk9OUk9UCTYJLyogbm9u LXJvdGF0aW9uYWwgZGV2aWNlIChTU0QpICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdfVklSVAkJUVVF VUVfRkxBR19OT05ST1QgLyogcGFyYXZpcnQgZGV2aWNlICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdf SU9fU1RBVAk3CS8qIGRvIGRpc2svcGFydGl0aW9ucyBJTyBhY2NvdW50aW5nICovCi0jZGVmaW5l IFFVRVVFX0ZMQUdfRElTQ0FSRAk4CS8qIHN1cHBvcnRzIERJU0NBUkQgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19OT1hNRVJHRVMJOQkvKiBObyBleHRlbmRlZCBtZXJnZXMgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19BRERfUkFORE9NCTEwCS8qIENvbnRyaWJ1dGVzIHRvIHJhbmRvbSBwb29sICovCiAj ZGVmaW5lIFFVRVVFX0ZMQUdfU0VDRVJBU0UJMTEJLyogc3VwcG9ydHMgc2VjdXJlIGVyYXNlICov CkBAIC01ODIsNyArNTgxLDYgQEAgYm9vbCBibGtfcXVldWVfZmxhZ190ZXN0X2FuZF9zZXQodW5z aWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTsKIAl0ZXN0X2JpdChRVUVV RV9GTEFHX1NUQUJMRV9XUklURVMsICYocSktPnF1ZXVlX2ZsYWdzKQogI2RlZmluZSBibGtfcXVl dWVfaW9fc3RhdChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0lPX1NUQVQsICYocSktPnF1ZXVlX2Zs YWdzKQogI2RlZmluZSBibGtfcXVldWVfYWRkX3JhbmRvbShxKQl0ZXN0X2JpdChRVUVVRV9GTEFH X0FERF9SQU5ET00sICYocSktPnF1ZXVlX2ZsYWdzKQotI2RlZmluZSBibGtfcXVldWVfZGlzY2Fy ZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0RJU0NBUkQsICYocSktPnF1ZXVlX2ZsYWdzKQogI2Rl ZmluZSBibGtfcXVldWVfem9uZV9yZXNldGFsbChxKQlcCiAJdGVzdF9iaXQoUVVFVUVfRkxBR19a T05FX1JFU0VUQUxMLCAmKHEpLT5xdWV1ZV9mbGFncykKICNkZWZpbmUgYmxrX3F1ZXVlX3NlY3Vy ZV9lcmFzZShxKSBcCmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuYwpp bmRleCA0MDY5ZjE3YTgyYzhlLi41ZDljZWRmOWU3Yjg0IDEwMDY0NAotLS0gYS9tbS9zd2FwZmls ZS5jCisrKyBiL21tL3N3YXBmaWxlLmMKQEAgLTI5NTcsMjAgKzI5NTcsNiBAQCBzdGF0aWMgaW50 IHNldHVwX3N3YXBfbWFwX2FuZF9leHRlbnRzKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpwLAog CXJldHVybiBucl9leHRlbnRzOwogfQogCi0vKgotICogSGVscGVyIHRvIHN5c19zd2Fwb24gZGV0 ZXJtaW5pbmcgaWYgYSBnaXZlbiBzd2FwCi0gKiBiYWNraW5nIGRldmljZSBxdWV1ZSBzdXBwb3J0 cyBESVNDQVJEIG9wZXJhdGlvbnMuCi0gKi8KLXN0YXRpYyBib29sIHN3YXBfZGlzY2FyZGFibGUo c3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpKQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx ID0gYmRldl9nZXRfcXVldWUoc2ktPmJkZXYpOwotCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChx KSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIHRydWU7Ci19Ci0KIFNZU0NBTExfREVGSU5F Mihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxh Z3MpCiB7CiAJc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnA7CkBAIC0zMTMyLDcgKzMxMTgsOCBA QCBTWVNDQUxMX0RFRklORTIoc3dhcG9uLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzcGVjaWFsZmls ZSwgaW50LCBzd2FwX2ZsYWdzKQogCQkJCQkgc2l6ZW9mKGxvbmcpLAogCQkJCQkgR0ZQX0tFUk5F TCk7CiAKLQlpZiAocC0+YmRldiAmJiAoc3dhcF9mbGFncyAmIFNXQVBfRkxBR19ESVNDQVJEKSAm JiBzd2FwX2Rpc2NhcmRhYmxlKHApKSB7CisJaWYgKChzd2FwX2ZsYWdzICYgU1dBUF9GTEFHX0RJ U0NBUkQpICYmCisJICAgIHAtPmJkZXYgJiYgYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHAtPmJk ZXYpKSB7CiAJCS8qCiAJCSAqIFdoZW4gZGlzY2FyZCBpcyBlbmFibGVkIGZvciBzd2FwIHdpdGgg bm8gcGFydGljdWxhcgogCQkgKiBwb2xpY3kgZmxhZ2dlZCwgd2Ugc2V0IGFsbCBzd2FwIGRpc2Nh cmQgZmxhZ3MgaGVyZSBpbgotLSAKMi4zMC4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6 YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5k YXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24= 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 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D7880C3527E for ; Fri, 15 Apr 2022 04:54:38 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-411-tZJ_a2s6OjOwSf_CSmn15Q-1; Fri, 15 Apr 2022 00:54:34 -0400 X-MC-Unique: tZJ_a2s6OjOwSf_CSmn15Q-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EF50B296A62C; Fri, 15 Apr 2022 04:54:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D7F50C53524; Fri, 15 Apr 2022 04:54:32 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A3120194034C; Fri, 15 Apr 2022 04:54:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A2ED1194034F for ; Fri, 15 Apr 2022 04:54:30 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 96ED79E69; Fri, 15 Apr 2022 04:54:30 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 924029E64 for ; Fri, 15 Apr 2022 04:54:24 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7FD10185A794 for ; Fri, 15 Apr 2022 04:54:24 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-266-T8JR4QaLNw-91QhGOSYxrw-1; Fri, 15 Apr 2022 00:54:21 -0400 X-MC-Unique: T8JR4QaLNw-91QhGOSYxrw-1 Received: from [2a02:1205:504b:4280:f5dd:42a4:896c:d877] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfDyJ-008PkB-3y; Fri, 15 Apr 2022 04:54:15 +0000 From: Christoph Hellwig To: Jens Axboe Date: Fri, 15 Apr 2022 06:52:55 +0200 Message-Id: <20220415045258.199825-25-hch@lst.de> In-Reply-To: <20220415045258.199825-1-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 Subject: [dm-devel] [PATCH 24/27] block: remove QUEUE_FLAG_DISCARD X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jfs-discussion@lists.sourceforge.net, =?UTF-8?q?Jan=20H=C3=B6ppner?= , linux-nvme@lists.infradead.org, virtualization@lists.linux-foundation.org, linux-mm@kvack.org, dm-devel@redhat.com, target-devel@vger.kernel.org, linux-mtd@lists.infradead.org, drbd-dev@lists.linbit.com, linux-s390@vger.kernel.org, linux-nilfs@vger.kernel.org, linux-scsi@vger.kernel.org, cluster-devel@redhat.com, xen-devel@lists.xenproject.org, linux-ext4@vger.kernel.org, linux-um@lists.infradead.org, nbd@other.debian.org, linux-block@vger.kernel.org, linux-bcache@vger.kernel.org, David Sterba , ceph-devel@vger.kernel.org, Coly Li , linux-raid@vger.kernel.org, "Martin K . Petersen" , linux-mmc@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-xfs@vger.kernel.org, =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , ocfs2-devel@oss.oracle.com, linux-fsdevel@vger.kernel.org, ntfs3@lists.linux.dev, linux-btrfs@vger.kernel.org Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SnVzdCB1c2UgYSBub24temVybyBtYXhfZGlzY2FyZF9zZWN0b3JzIGFzIGFuIGluZGljYXRvciBm b3IgZGlzY2FyZApzdXBwb3J0LCBzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBmb3Igd3JpdGUgemVy b2VzLgoKVGhlIG9ubHkgcGxhY2VzIHdoZXJlIG5lZWRzIHNwZWNpYWwgYXR0ZW50aW9uIGlzIHRo ZSBSQUlENSBkcml2ZXIsCndoaWNoIG11c3QgY2xlYXIgZGlzY2FyZCBzdXBwb3J0IGZvciBzZWN1 cml0eSByZWFzb25zIGJ5IGRlZmF1bHQsCmV2ZW4gaWYgdGhlIGRlZmF1bHQgc3RhY2tpbmcgcnVs ZXMgd291bGQgYWxsb3cgZm9yIGl0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhlbGx3aWcg PGhjaEBsc3QuZGU+ClJldmlld2VkLWJ5OiBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRl cnNlbkBvcmFjbGUuY29tPgpBY2tlZC1ieTogQ2hyaXN0b3BoIELDtmhtd2FsZGVyIDxjaHJpc3Rv cGguYm9laG13YWxkZXJAbGluYml0LmNvbT4gW2RyYmRdCkFja2VkLWJ5OiBKYW4gSMO2cHBuZXIg PGhvZXBwbmVyQGxpbnV4LmlibS5jb20+IFtzMzkwXQpBY2tlZC1ieTogQ29seSBMaSA8Y29seWxp QHN1c2UuZGU+IFtiY2FjaGVdCkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5j b20+IFtidHJmc10KLS0tCiBhcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYyAgICAgICAgICB8ICAy IC0tCiBibG9jay9ibGstY29yZS5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9i bGstbGliLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9ibGstbXEtZGVidWdm cy5jICAgICAgICAgICAgICB8ICAxIC0KIGJsb2NrL2lvY3RsLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMgICAgICB8ICAyICst CiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8IDE5ICsrLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgIHwgIDMgKy0tCiBkcml2 ZXJzL2Jsb2NrL2xvb3AuYyAgICAgICAgICAgICAgICB8IDExICsrKy0tLS0tLS0tCiBkcml2ZXJz L2Jsb2NrL25iZC5jICAgICAgICAgICAgICAgICB8ICA1ICstLS0tCiBkcml2ZXJzL2Jsb2NrL251 bGxfYmxrL21haW4uYyAgICAgICB8ICAxIC0KIGRyaXZlcnMvYmxvY2svcmJkLmMgICAgICAgICAg ICAgICAgIHwgIDEgLQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgICAgICAgfCAgMiAt LQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oICAgfCAgMyAtLS0KIGRyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jICAgICAgICAgIHwgIDIgLS0KIGRyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2sveGVuYnVzLmMgIHwgIDIgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyAgICAgICB8ICAxIC0K IGRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYyAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9t ZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvYmNhY2hlL3N5 c2ZzLmMgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMgICAg ICAgIHwgIDkgKy0tLS0tLS0tCiBkcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jICAgICAgICB8 ICA5ICstLS0tLS0tLQogZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMgICAgICAgICAgfCAgMyAr LS0KIGRyaXZlcnMvbWQvZG0tcmFpZC5jICAgICAgICAgICAgICAgIHwgIDkgKystLS0tLS0tCiBk cml2ZXJzL21kL2RtLXRhYmxlLmMgICAgICAgICAgICAgICB8ICA5ICsrLS0tLS0tLQogZHJpdmVy cy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgfCAxMSArLS0tLS0tLS0tLQogZHJpdmVycy9t ZC9kbS5jICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvbWQtbGluZWFy LmMgICAgICAgICAgICAgIHwgMTEgKy0tLS0tLS0tLS0KIGRyaXZlcnMvbWQvcmFpZDAuYyAgICAg ICAgICAgICAgICAgIHwgIDcgLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkMS5jICAgICAgICAgICAg ICAgICAgfCAxNiArLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQxMC5jICAgICAgICAg ICAgICAgICB8IDE4ICsrLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5j ICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9yYWlkNS5jICAgICAgICAgICAgICAgICAg fCAxMiArKysrLS0tLS0tLS0KIGRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyAgICAgICAgICAgIHwg IDEgLQogZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYyAgICAgICAgICAgfCAgMSAtCiBkcml2ZXJz L252bWUvaG9zdC9jb3JlLmMgICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvczM5MC9ibG9j ay9kYXNkX2ZiYS5jICAgICAgIHwgIDEgLQogZHJpdmVycy9zY3NpL3NkLmMgICAgICAgICAgICAg ICAgICAgfCAgMiAtLQogZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMiAr LQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyAgICAgICAgICAgICAgfCAgNCArKy0tCiBmcy9idHJm cy9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9maWxlLmMgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9zdXBlci5jICAgICAgICAgICAgICAg ICAgICB8IDEwICsrKy0tLS0tLS0KIGZzL2V4dDQvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAg IHwgMTAgKysrLS0tLS0tLQogZnMvZXh0NC9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgfCAx MCArKystLS0tLS0tCiBmcy9mMmZzL2YyZnMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZmF0L2lu b2RlLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tLS0tCiBmcy9nZnMyL3JncnAu YyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9qYmQyL2pvdXJuYWwuYyAgICAgICAg ICAgICAgICAgICB8ICA3ICsrLS0tLS0KIGZzL2pmcy9pb2N0bC5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGZzL2pmcy9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDggKyst LS0tLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250 ZnMzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250ZnMzL3N1cGVyLmMg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL29jZnMyL2lvY3RsLmMgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGZzL3hmcy94ZnNfc3VwZXIuYyAgICAgICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0t CiBpbmNsdWRlL2xpbnV4L2Jsa2Rldi5oICAgICAgICAgICAgICB8ICAyIC0tCiBtbS9zd2FwZmls ZS5jICAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrLS0tLS0tLS0tLS0tLS0tCiA2MSBmaWxl cyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAyNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC91bS9kcml2ZXJzL3ViZF9rZXJuLmMgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4u YwppbmRleCBiMDMyNjlmYWVmNzE0Li4wODVmZmRmOThlNTdlIDEwMDY0NAotLS0gYS9hcmNoL3Vt L2RyaXZlcnMvdWJkX2tlcm4uYworKysgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYwpAQCAt NDgzLDcgKzQ4Myw2IEBAIHN0YXRpYyB2b2lkIHViZF9oYW5kbGVyKHZvaWQpCiAJCQlpZiAoKGlv X3JlcS0+ZXJyb3IgPT0gQkxLX1NUU19OT1RTVVBQKSAmJiAocmVxX29wKGlvX3JlcS0+cmVxKSA9 PSBSRVFfT1BfRElTQ0FSRCkpIHsKIAkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhp b19yZXEtPnJlcS0+cSwgMCk7CiAJCQkJYmxrX3F1ZXVlX21heF93cml0ZV96ZXJvZXNfc2VjdG9y cyhpb19yZXEtPnJlcS0+cSwgMCk7Ci0JCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxB R19ESVNDQVJELCBpb19yZXEtPnJlcS0+cSk7CiAJCQl9CiAJCQlibGtfbXFfZW5kX3JlcXVlc3Qo aW9fcmVxLT5yZXEsIGlvX3JlcS0+ZXJyb3IpOwogCQkJa2ZyZWUoaW9fcmVxKTsKQEAgLTgwMyw3 ICs4MDIsNiBAQCBzdGF0aWMgaW50IHViZF9vcGVuX2RldihzdHJ1Y3QgdWJkICp1YmRfZGV2KQog CQl1YmRfZGV2LT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gU0VDVE9SX1NJWkU7 CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHViZF9kZXYtPnF1ZXVlLCBVQkRfTUFY X1JFUVVFU1QpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHViZF9kZXYt PnF1ZXVlLCBVQkRfTUFYX1JFUVVFU1QpOwotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxB R19ESVNDQVJELCB1YmRfZGV2LT5xdWV1ZSk7CiAJfQogCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX05PTlJPVCwgdWJkX2Rldi0+cXVldWUpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEv YmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggOTM3YmI2Yjg2MzMxNy4u YjVjM2E4MDQ5MTM0YyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLWNvcmUuYworKysgYi9ibG9jay9i bGstY29yZS5jCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBzdWJtaXRfYmlvX25vYWNjdChzdHJ1 Y3QgYmlvICpiaW8pCiAKIAlzd2l0Y2ggKGJpb19vcChiaW8pKSB7CiAJY2FzZSBSRVFfT1BfRElT Q0FSRDoKLQkJaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikpCiAJCQlnb3RvIG5vdF9zdXBwb3J0ZWQ7CiAJCWJyZWFrOwogCWNh c2UgUkVRX09QX1NFQ1VSRV9FUkFTRToKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1saWIuYyBiL2Js b2NrL2Jsay1saWIuYwppbmRleCAyYWUzMmE3MjI4NTFjLi44YjRiNjZkM2E5YmZjIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbGliLmMKKysrIGIvYmxvY2svYmxrLWxpYi5jCkBAIC01Myw3ICs1Myw3 IEBAIGludCBfX2Jsa2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYs IHNlY3Rvcl90IHNlY3RvciwKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJb3AgPSBSRVFfT1Bf U0VDVVJFX0VSQVNFOwogCX0gZWxzZSB7Ci0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJ CWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQogCQkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCQlvcCA9IFJFUV9PUF9ESVNDQVJEOwogCX0KZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1t cS1kZWJ1Z2ZzLmMgYi9ibG9jay9ibGstbXEtZGVidWdmcy5jCmluZGV4IGFhMDM0OWU5ZjA4M2Iu LmZkMTExYzUwMDEyNTYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKKysrIGIv YmxvY2svYmxrLW1xLWRlYnVnZnMuYwpAQCAtMTEzLDcgKzExMyw2IEBAIHN0YXRpYyBjb25zdCBj aGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7CiAJUVVFVUVfRkxBR19OQU1FKEZB SUxfSU8pLAogCVFVRVVFX0ZMQUdfTkFNRShOT05ST1QpLAogCVFVRVVFX0ZMQUdfTkFNRShJT19T VEFUKSwKLQlRVUVVRV9GTEFHX05BTUUoRElTQ0FSRCksCiAJUVVFVUVfRkxBR19OQU1FKE5PWE1F UkdFUyksCiAJUVVFVUVfRkxBR19OQU1FKEFERF9SQU5ET00pLAogCVFVRVVFX0ZMQUdfTkFNRShT RUNFUkFTRSksCmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuYwppbmRl eCBhZDM3NzFiMjY4YjgxLi5jMmNkM2JhNTI5MGNlIDEwMDY0NAotLS0gYS9ibG9jay9pb2N0bC5j CisrKyBiL2Jsb2NrL2lvY3RsLmMKQEAgLTg3LDE0ICs4NywxMyBAQCBzdGF0aWMgaW50IGJsa19p b2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwKIHsK IAl1aW50NjRfdCByYW5nZVsyXTsKIAl1aW50NjRfdCBzdGFydCwgbGVuOwotCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoYmRldik7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGJkZXYtPmJkX2lub2RlOwogCWludCBlcnI7CiAKIAlpZiAoIShtb2RlICYgRk1PREVfV1JJ VEUpKQogCQlyZXR1cm4gLUVCQURGOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlp ZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKHJhbmdlLCAodm9pZCBfX3VzZXIgKilhcmcsIHNpemVv ZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCmluZGV4IDdiNTAxYzhkNTk5MjguLjkxMjU2 MGY2MTFjMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYworKysg Yi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKQEAgLTk0Miw3ICs5NDIsNyBAQCBpbnQg ZHJiZF9zZW5kX3NpemVzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgaW50 IHRyaWdnZXJfcmVwbHksIGVudQogCQkJY3B1X3RvX2JlMzIoYmRldl9hbGlnbm1lbnRfb2Zmc2V0 KGJkZXYpKTsKIAkJcC0+cWxpbS0+aW9fbWluID0gY3B1X3RvX2JlMzIoYmRldl9pb19taW4oYmRl dikpOwogCQlwLT5xbGltLT5pb19vcHQgPSBjcHVfdG9fYmUzMihiZGV2X2lvX29wdChiZGV2KSk7 Ci0JCXAtPnFsaW0tPmRpc2NhcmRfZW5hYmxlZCA9IGJsa19xdWV1ZV9kaXNjYXJkKHEpOworCQlw LT5xbGltLT5kaXNjYXJkX2VuYWJsZWQgPSAhIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2 KTsKIAkJcHV0X2xkZXYoZGV2aWNlKTsKIAl9IGVsc2UgewogCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGRldmljZS0+cnFfcXVldWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQv ZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCBhMGEwNmUyMzhl OTE3Li4wNjc4Y2ViNTA1Nzk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9u bC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTEyMTAsNyArMTIxMCw3 IEBAIHN0YXRpYyB2b2lkIGRlY2lkZV9vbl9kaXNjYXJkX3N1cHBvcnQoc3RydWN0IGRyYmRfZGV2 aWNlICpkZXZpY2UsCiAJCWZpcnN0X3BlZXJfZGV2aWNlKGRldmljZSktPmNvbm5lY3Rpb247CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBkZXZpY2UtPnJxX3F1ZXVlOwogCi0JaWYgKGJkZXYg JiYgIWJsa19xdWV1ZV9kaXNjYXJkKGJkZXYtPmJhY2tpbmdfYmRldi0+YmRfZGlzay0+cXVldWUp KQorCWlmIChiZGV2ICYmICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldi0+YmFja2luZ19i ZGV2KSkKIAkJZ290byBub3Rfc3VwcG9ydGVkOwogCiAJaWYgKGNvbm5lY3Rpb24tPmNzdGF0ZSA+ PSBDX0NPTk5FQ1RFRCAmJgpAQCAtMTIzMCwzMCArMTIzMCwxNiBAQCBzdGF0aWMgdm9pZCBkZWNp ZGVfb25fZGlzY2FyZF9zdXBwb3J0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCSAqLwog CWJsa19xdWV1ZV9kaXNjYXJkX2dyYW51bGFyaXR5KHEsIDUxMik7CiAJcS0+bGltaXRzLm1heF9k aXNjYXJkX3NlY3RvcnMgPSBkcmJkX21heF9kaXNjYXJkX3NlY3RvcnMoY29ubmVjdGlvbik7Ci0J YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJcS0+bGltaXRzLm1h eF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9CiAJCWRyYmRfbWF4X2Rpc2NhcmRfc2VjdG9ycyhjb25u ZWN0aW9uKTsKIAlyZXR1cm47CiAKIG5vdF9zdXBwb3J0ZWQ6Ci0JYmxrX3F1ZXVlX2ZsYWdfY2xl YXIoUVVFVUVfRkxBR19ESVNDQVJELCBxKTsKIAlibGtfcXVldWVfZGlzY2FyZF9ncmFudWxhcml0 eShxLCAwKTsKIAlxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJcS0+bGltaXRz Lm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9IDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZpeHVwX2Rp c2NhcmRfaWZfbm90X3N1cHBvcnRlZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKLXsKLQkvKiBU byBhdm9pZCBjb25mdXNpb24sIGlmIHRoaXMgcXVldWUgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJk LCBjbGVhcgotCSAqIG1heF9kaXNjYXJkX3NlY3RvcnMsIHdoaWNoIGlzIHdoYXQgbHNibGsgLUQg cmVwb3J0cyB0byB0aGUgdXNlci4KLQkgKiBPbGRlciBrZXJuZWxzIGdvdCB0aGlzIHdyb25nIGlu ICJzdGFjayBsaW1pdHMiLgotCSAqICovCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkgewot CQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxLCAwKTsKLQkJYmxrX3F1ZXVlX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkocSwgMCk7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBmaXh1cF93cml0ZV96 ZXJvZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx KQogewogCS8qIEZpeHVwIG1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyBhZnRlciBibGtfc3RhY2tf bGltaXRzKCk6CkBAIC0xMzAwLDcgKzEyODYsNiBAQCBzdGF0aWMgdm9pZCBkcmJkX3NldHVwX3F1 ZXVlX3BhcmFtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraQog CQlibGtfc3RhY2tfbGltaXRzKCZxLT5saW1pdHMsICZiLT5saW1pdHMsIDApOwogCQlkaXNrX3Vw ZGF0ZV9yZWFkYWhlYWQoZGV2aWNlLT52ZGlzayk7CiAJfQotCWZpeHVwX2Rpc2NhcmRfaWZfbm90 X3N1cHBvcnRlZChxKTsKIAlmaXh1cF93cml0ZV96ZXJvZXMoZGV2aWNlLCBxKTsKIH0KIApAQCAt MTQ0Nyw3ICsxNDMyLDcgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVjdCBk cmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19jb25m LT5hbF9leHRlbnRzID4gZHJiZF9hbF9leHRlbnRzX21heChuYmMpKQogCQlkaXNrX2NvbmYtPmFs X2V4dGVudHMgPSBkcmJkX2FsX2V4dGVudHNfbWF4KG5iYyk7CiAKLQlpZiAoIWJsa19xdWV1ZV9k aXNjYXJkKHEpKSB7CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpIHsKIAkJ aWYgKGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSkgewogCQkJZGlza19jb25mLT5y c19kaXNjYXJkX2dyYW51bGFyaXR5ID0gMDsgLyogZGlzYWJsZSBmZWF0dXJlICovCiAJCQlkcmJk X2luZm8oZGV2aWNlLCAicnNfZGlzY2FyZF9ncmFudWxhcml0eSBmZWF0dXJlIGRpc2FibGVkXG4i KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCmluZGV4IDBiNGM3ZGU0NjM5ODkuLjhhNGE0 N2RhNTZmZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMK KysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTU3NSwxMSArMTU3 NSwxMCBAQCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2Rl dmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCiBzdGF0aWMgYm9vbCBjYW5fZG9fcmVs aWFibGVfZGlzY2FyZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiB7Ci0Jc3RydWN0IHJl cXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShkZXZpY2UtPmxkZXYtPmJhY2tpbmdfYmRl dik7CiAJc3RydWN0IGRpc2tfY29uZiAqZGM7CiAJYm9vbCBjYW5fZG87CiAKLQlpZiAoIWJsa19x dWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+ bGRldi0+YmFja2luZ19iZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJcmN1X3JlYWRfbG9jaygp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3Au YwppbmRleCA4ZDgwMGQ0NmU0OTg1Li4wZTA2MWM5ODk2ZWZmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2Jsb2NrL2xvb3AuYworKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtMzE0LDE1ICszMTQs MTIgQEAgc3RhdGljIGludCBsb19mYWxsb2NhdGUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3Ry dWN0IHJlcXVlc3QgKnJxLCBsb2ZmX3QgcG9zLAogCiAJbW9kZSB8PSBGQUxMT0NfRkxfS0VFUF9T SVpFOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChsby0+bG9fcXVldWUpKSB7Ci0JCXJldCA9 IC1FT1BOT1RTVVBQOwotCQlnb3RvIG91dDsKLQl9CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMobG8tPmxvX2RldmljZSkpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCXJldCA9IGZp bGUtPmZfb3AtPmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsIGJsa19ycV9ieXRlcyhycSkpOwog CWlmICh1bmxpa2VseShyZXQgJiYgcmV0ICE9IC1FSU5WQUwgJiYgcmV0ICE9IC1FT1BOT1RTVVBQ KSkKLQkJcmV0ID0gLUVJTzsKLSBvdXQ6CisJCXJldHVybiAtRUlPOwogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTc4NywxMiArNzg0LDEwIEBAIHN0YXRpYyB2b2lkIGxvb3BfY29uZmlnX2Rpc2NhcmQo c3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBncmFudWxhcml0eTsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgbWF4X2Rp c2NhcmRfc2VjdG9ycyk7CiAJCWJsa19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwg bWF4X2Rpc2NhcmRfc2VjdG9ycyk7Ci0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJ U0NBUkQsIHEpOwogCX0gZWxzZSB7CiAJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0g MDsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgMCk7CiAJCWJsa19xdWV1ZV9t YXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgMCk7Ci0JCWJsa19xdWV1ZV9mbGFnX2NsZWFyKFFV RVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJfQogCXEtPmxpbWl0cy5kaXNjYXJkX2FsaWdubWVudCA9 IDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9u YmQuYwppbmRleCA1YTFmOTg0OTRkZGRmLi40NzI5YWVmOGM2NDYyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2Jsb2NrL25iZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTEyMzEsOCArMTIz MSw2IEBAIHN0YXRpYyB2b2lkIG5iZF9wYXJzZV9mbGFncyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJk KQogCQlzZXRfZGlza19ybyhuYmQtPmRpc2ssIHRydWUpOwogCWVsc2UKIAkJc2V0X2Rpc2tfcm8o bmJkLT5kaXNrLCBmYWxzZSk7Ci0JaWYgKGNvbmZpZy0+ZmxhZ3MgJiBOQkRfRkxBR19TRU5EX1RS SU0pCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG5iZC0+ZGlzay0+ cXVldWUpOwogCWlmIChjb25maWctPmZsYWdzICYgTkJEX0ZMQUdfU0VORF9GTFVTSCkgewogCQlp ZiAoY29uZmlnLT5mbGFncyAmIE5CRF9GTEFHX1NFTkRfRlVBKQogCQkJYmxrX3F1ZXVlX3dyaXRl X2NhY2hlKG5iZC0+ZGlzay0+cXVldWUsIHRydWUsIHRydWUpOwpAQCAtMTMxOSw4ICsxMzE3LDcg QEAgc3RhdGljIHZvaWQgbmJkX2NvbmZpZ19wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKIAkJ bmJkLT50YWdfc2V0LnRpbWVvdXQgPSAwOwogCQluYmQtPmRpc2stPnF1ZXVlLT5saW1pdHMuZGlz Y2FyZF9ncmFudWxhcml0eSA9IDA7CiAJCW5iZC0+ZGlzay0+cXVldWUtPmxpbWl0cy5kaXNjYXJk X2FsaWdubWVudCA9IDA7Ci0JCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5iZC0+ZGlz ay0+cXVldWUsIFVJTlRfTUFYKTsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19E SVNDQVJELCBuYmQtPmRpc2stPnF1ZXVlKTsKKwkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3Rv cnMobmJkLT5kaXNrLT5xdWV1ZSwgMCk7CiAKIAkJbXV0ZXhfdW5sb2NrKCZuYmQtPmNvbmZpZ19s b2NrKTsKIAkJbmJkX3B1dChuYmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Js ay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCAwNWIxMTIwZTY2 MjM0Li5mNjQ5M2E5ZTg1ZWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21h aW4uYworKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtMTc2Nyw3ICsxNzY3 LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxi KQogCW51bGxiLT5xLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IG51bGxiLT5kZXYtPmJs b2Nrc2l6ZTsKIAludWxsYi0+cS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gbnVsbGItPmRl di0+YmxvY2tzaXplOwogCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG51bGxiLT5xLCBV SU5UX01BWCA+PiA5KTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBu dWxsYi0+cSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlv bnMgbnVsbF9iaW9fb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yYmQuYyBiL2Ry aXZlcnMvYmxvY2svcmJkLmMKaW5kZXggYjg0NDQzMmJhZDIwYi4uMmIyMWY3MTdjY2UxYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9yYmQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JiZC5jCkBA IC00OTQyLDcgKzQ5NDIsNiBAQCBzdGF0aWMgaW50IHJiZF9pbml0X2Rpc2soc3RydWN0IHJiZF9k ZXZpY2UgKnJiZF9kZXYpCiAJYmxrX3F1ZXVlX2lvX29wdChxLCByYmRfZGV2LT5vcHRzLT5hbGxv Y19zaXplKTsKIAogCWlmIChyYmRfZGV2LT5vcHRzLT50cmltKSB7Ci0JCWJsa19xdWV1ZV9mbGFn X3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwogCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA9IHJiZF9kZXYtPm9wdHMtPmFsbG9jX3NpemU7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQpOwogCQlibGtfcXVldWVf bWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwppbmRleCBiNjZlODg0MGI5NGI4Li5lZmE5OWEzODg0NTA3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1jbHQuYworKysgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwpAQCAtMTM2NCw4ICsxMzY0LDYgQEAgc3RhdGljIHZvaWQgc2V0 dXBfcmVxdWVzdF9xdWV1ZShzdHJ1Y3Qgcm5iZF9jbHRfZGV2ICpkZXYpCiAJYmxrX3F1ZXVlX21h eF9kaXNjYXJkX3NlY3RvcnMoZGV2LT5xdWV1ZSwgZGV2LT5tYXhfZGlzY2FyZF9zZWN0b3JzKTsK IAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eQk9IGRldi0+ZGlzY2FyZF9n cmFudWxhcml0eTsKIAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9hbGlnbm1lbnQJPSBkZXYt PmRpc2NhcmRfYWxpZ25tZW50OwotCWlmIChkZXYtPm1heF9kaXNjYXJkX3NlY3RvcnMpCi0JCWJs a19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIGRldi0+cXVldWUpOwogCWlmIChk ZXYtPnNlY3VyZV9kaXNjYXJkKQogCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19TRUNF UkFTRSwgZGV2LT5xdWV1ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJk LXNydi1kZXYuaCBiL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi1kZXYuaAppbmRleCBmODJm YmI0YmJkYThlLi4xZjdlMWM4ZmQ0ZDliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQv cm5iZC1zcnYtZGV2LmgKKysrIGIvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oCkBA IC00OSw5ICs0OSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJuYmRfZGV2X2dldF9zZWN1cmVfZGlz Y2FyZChjb25zdCBzdHJ1Y3Qgcm5iZF9kZXYgKmRldikKIAogc3RhdGljIGlubGluZSBpbnQgcm5i ZF9kZXZfZ2V0X21heF9kaXNjYXJkX3NlY3RzKGNvbnN0IHN0cnVjdCBybmJkX2RldiAqZGV2KQog ewotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGV2LT5iZGV2KSkpCi0J CXJldHVybiAwOwotCiAJcmV0dXJuIGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXYtPmJkZXYp OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jCmluZGV4IGE4YmNmM2Y2NjRhZjEuLjZjY2YxNTI1M2RlZTEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCisrKyBiL2RyaXZlcnMvYmxvY2sv dmlydGlvX2Jsay5jCkBAIC04ODgsOCArODg4LDYgQEAgc3RhdGljIGludCB2aXJ0YmxrX3Byb2Jl KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCQkJdiA9IHNnX2VsZW1zOwogCQlibGtfcXVl dWVfbWF4X2Rpc2NhcmRfc2VnbWVudHMocSwKIAkJCQkJICAgICAgIG1pbih2LCBNQVhfRElTQ0FS RF9TRUdNRU5UUykpOwotCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IHEpOwogCX0KIAogCWlmICh2aXJ0aW9faGFzX2ZlYXR1cmUodmRldiwgVklSVElPX0JMS19GX1dS SVRFX1pFUk9FUykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVu YnVzLmMgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jCmluZGV4IDhiNjkxZmU1 MDQ3NWYuLjgzY2QwODA0MWU2YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Jh Y2sveGVuYnVzLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYwpAQCAt NTgzLDcgKzU4Myw3IEBAIHN0YXRpYyB2b2lkIHhlbl9ibGtia19kaXNjYXJkKHN0cnVjdCB4ZW5i dXNfdHJhbnNhY3Rpb24geGJ0LCBzdHJ1Y3QgYmFja2VuZF9pbmZvCiAJaWYgKCF4ZW5idXNfcmVh ZF91bnNpZ25lZChkZXYtPm5vZGVuYW1lLCAiZGlzY2FyZC1lbmFibGUiLCAxKSkKIAkJcmV0dXJu OwogCi0JaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhiZGV2KSkgewogCQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFt ZSwKIAkJCSJkaXNjYXJkLWdyYW51bGFyaXR5IiwgIiV1IiwKIAkJCXEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMg Yi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jCmluZGV4IDAwMzA1NmQ0ZjdmNWYuLmUxM2Ni NGQ0OGYxZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKKysrIGIv ZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwpAQCAtOTQ0LDcgKzk0NCw2IEBAIHN0YXRpYyB2 b2lkIGJsa2lmX3NldF9xdWV1ZV9saW1pdHMoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJ YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfVklSVCwgcnEpOwogCiAJaWYgKGluZm8tPmZl YXR1cmVfZGlzY2FyZCkgewotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCBycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHJxLCBnZXRfY2FwYWNpdHko Z2QpKTsKIAkJcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0gaW5mby0+ZGlzY2FyZF9n cmFudWxhcml0eSA/OgogCQkJCQkJIGluZm8tPnBoeXNpY2FsX3NlY3Rvcl9zaXplOwpAQCAtMTYw Niw3ICsxNjA1LDcgQEAgc3RhdGljIGlycXJldHVybl90IGJsa2lmX2ludGVycnVwdChpbnQgaXJx LCB2b2lkICpkZXZfaWQpCiAJCQkJYmxraWZfcmVxKHJlcSktPmVycm9yID0gQkxLX1NUU19OT1RT VVBQOwogCQkJCWluZm8tPmZlYXR1cmVfZGlzY2FyZCA9IDA7CiAJCQkJaW5mby0+ZmVhdHVyZV9z ZWNkaXNjYXJkID0gMDsKLQkJCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NB UkQsIHJxKTsKKwkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhycSwgMCk7CiAJCQkJ YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19TRUNFUkFTRSwgcnEpOwogCQkJfQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGU5NDc0YjAyMDEyZGUuLjU5ZmY0NDRiZjZj NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCisrKyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCkBAIC0xOTUyLDcgKzE5NTIsNiBAQCBzdGF0aWMgaW50 IHpyYW1fYWRkKHZvaWQpCiAJYmxrX3F1ZXVlX2lvX29wdCh6cmFtLT5kaXNrLT5xdWV1ZSwgUEFH RV9TSVpFKTsKIAl6cmFtLT5kaXNrLT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBQQUdFX1NJWkU7CiAJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMoenJhbS0+ZGlzay0+ cXVldWUsIFVJTlRfTUFYKTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCB6cmFtLT5kaXNrLT5xdWV1ZSk7CiAKIAkvKgogCSAqIHpyYW1fYmlvX2Rpc2NhcmQoKSB3aWxs IGNsZWFyIGFsbCBsb2dpY2FsIGJsb2NrcyBpZiBsb2dpY2FsIGJsb2NrCmRpZmYgLS1naXQgYS9k cml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMgYi9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMK aW5kZXggZmRkMDE5NGY4NGRkMC4uZTI3ZjY3ZjA2YTQyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9iY2FjaGUvcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwpAQCAt MTAwNSw3ICsxMDA1LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVkX2Rldl93cml0ZShzdHJ1Y3QgY2Fj aGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJCWJpb19nZXQocy0+aW9wLmJpbyk7CiAK IAkJaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEICYmCi0JCSAgICAhYmxrX3F1ZXVl X2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkJICAgICFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoZGMtPmJkZXYpKQogCQkJZ290byBpbnNlcnRfZGF0YTsKIAogCQkvKiBJL08g cmVxdWVzdCBzZW50IHRvIGJhY2tpbmcgZGV2aWNlICovCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBz dGF0aWMgdm9pZCBkZXRhY2hlZF9kZXZfZG9fcmVxdWVzdChzdHJ1Y3QgYmNhY2hlX2RldmljZSAq ZCwgc3RydWN0IGJpbyAqYmlvLAogCWJpby0+YmlfcHJpdmF0ZSA9IGRkaXA7CiAKIAlpZiAoKGJp b19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEKSAmJgotCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQo YmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhkYy0+YmRldikpCiAJCWJpby0+YmlfZW5kX2lvKGJpbyk7CiAJZWxzZQogCQlzdWJtaXRfYmlv X25vYWNjdChiaW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyBiL2Ry aXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKaW5kZXggYmYzZGUxNDlkM2M5Zi4uMmY0OWUzMTE0MmY2 MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYworKysgYi9kcml2ZXJzL21k L2JjYWNoZS9zdXBlci5jCkBAIC05NzMsNyArOTczLDYgQEAgc3RhdGljIGludCBiY2FjaGVfZGV2 aWNlX2luaXQoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsIHVuc2lnbmVkIGludCBibG9ja19zaXpl LAogCiAJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfTk9OUk9ULCBkLT5kaXNrLT5xdWV1 ZSk7CiAJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19BRERfUkFORE9NLCBkLT5kaXNr LT5xdWV1ZSk7Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgZC0+ZGlz ay0+cXVldWUpOwogCiAJYmxrX3F1ZXVlX3dyaXRlX2NhY2hlKHEsIHRydWUsIHRydWUpOwogCkBA IC0yMzUwLDcgKzIzNDksNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2NhY2hlKHN0cnVjdCBjYWNo ZV9zYiAqc2IsIHN0cnVjdCBjYWNoZV9zYl9kaXNrICpzYl9kaXNrLAogCWNhLT5iZGV2LT5iZF9o b2xkZXIgPSBjYTsKIAljYS0+c2JfZGlzayA9IHNiX2Rpc2s7CiAKLQlpZiAoYmxrX3F1ZXVlX2Rp c2NhcmQoYmRldl9nZXRfcXVldWUoYmRldikpKQorCWlmIChiZGV2X21heF9kaXNjYXJkX3NlY3Rv cnMoKGJkZXYpKSkKIAkJY2EtPmRpc2NhcmQgPSBDQUNIRV9ESVNDQVJEKCZjYS0+c2IpOwogCiAJ cmV0ID0gY2FjaGVfYWxsb2MoY2EpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3lz ZnMuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3N5c2ZzLmMKaW5kZXggZDEwMjlkNzFmZjNiYy4uYzZm Njc3MDU5MjE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3lzZnMuYworKysgYi9k cml2ZXJzL21kL2JjYWNoZS9zeXNmcy5jCkBAIC0xMTUxLDcgKzExNTEsNyBAQCBTVE9SRShfX2Jj aF9jYWNoZSkKIAlpZiAoYXR0ciA9PSAmc3lzZnNfZGlzY2FyZCkgewogCQlib29sIHYgPSBzdHJ0 b3VsX29yX3JldHVybihidWYpOwogCi0JCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9x dWV1ZShjYS0+YmRldikpKQorCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGNhLT5iZGV2 KSkKIAkJCWNhLT5kaXNjYXJkID0gdjsKIAogCQlpZiAodiAhPSBDQUNIRV9ESVNDQVJEKCZjYS0+ c2IpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jIGIvZHJpdmVy cy9tZC9kbS1jYWNoZS10YXJnZXQuYwppbmRleCA3ODBhNjFiYzZjYzAzLi4yOGM1ZGU4ZWNhNGEw IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jCisrKyBiL2RyaXZlcnMv bWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTMzMjksMTMgKzMzMjksNiBAQCBzdGF0aWMgaW50IGNh Y2hlX2l0ZXJhdGVfZGV2aWNlcyhzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwKIAlyZXR1cm4gcjsKIH0K IAotc3RhdGljIGJvb2wgb3JpZ2luX2Rldl9zdXBwb3J0c19kaXNjYXJkKHN0cnVjdCBibG9ja19k ZXZpY2UgKm9yaWdpbl9iZGV2KQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUob3JpZ2luX2JkZXYpOwotCi0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKHEpOwot fQotCiAvKgogICogSWYgZGlzY2FyZF9wYXNzZG93biB3YXMgZW5hYmxlZCB2ZXJpZnkgdGhhdCB0 aGUgb3JpZ2luIGRldmljZQogICogc3VwcG9ydHMgZGlzY2FyZHMuICBEaXNhYmxlIGRpc2NhcmRf cGFzc2Rvd24gaWYgbm90LgpAQCAtMzM0OSw3ICszMzQyLDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs ZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBjYWNoZSAqY2FjaGUpCiAJaWYgKCFj YWNoZS0+ZmVhdHVyZXMuZGlzY2FyZF9wYXNzZG93bikKIAkJcmV0dXJuOwogCi0JaWYgKCFvcmln aW5fZGV2X3N1cHBvcnRzX2Rpc2NhcmQob3JpZ2luX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlz Y2FyZF9zZWN0b3JzKG9yaWdpbl9iZGV2KSkKIAkJcmVhc29uID0gImRpc2NhcmQgdW5zdXBwb3J0 ZWQiOwogCiAJZWxzZSBpZiAob3JpZ2luX2xpbWl0cy0+bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNh Y2hlLT5zZWN0b3JzX3Blcl9ibG9jaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY2xvbmUt dGFyZ2V0LmMgYi9kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jCmluZGV4IDEyODMxNmE3M2Qw MTYuLjgxMWIwYTUzNzlkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0 LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYwpAQCAtMjAxNiwxMyArMjAxNiw2 IEBAIHN0YXRpYyB2b2lkIGNsb25lX3Jlc3VtZShzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSkKIAlkb193 YWtlcigmY2xvbmUtPndha2VyLndvcmspOwogfQogCi1zdGF0aWMgYm9vbCBiZGV2X3N1cHBvcnRz X2Rpc2NhcmRzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCi17Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLQotCXJldHVybiAocSAmJiBibGtfcXVl dWVfZGlzY2FyZChxKSk7Ci19Ci0KIC8qCiAgKiBJZiBkaXNjYXJkX3Bhc3Nkb3duIHdhcyBlbmFi bGVkIHZlcmlmeSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBkZXZpY2Ugc3VwcG9ydHMKICAqIGRpc2Nh cmRzLiBEaXNhYmxlIGRpc2NhcmRfcGFzc2Rvd24gaWYgbm90LgpAQCAtMjAzNiw3ICsyMDI5LDcg QEAgc3RhdGljIHZvaWQgZGlzYWJsZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBj bG9uZSAqY2xvbmUpCiAJaWYgKCF0ZXN0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCAm Y2xvbmUtPmZsYWdzKSkKIAkJcmV0dXJuOwogCi0JaWYgKCFiZGV2X3N1cHBvcnRzX2Rpc2NhcmRz KGRlc3RfZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXN0X2RldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAllbHNlIGlmIChkZXN0X2xpbWl0cy0+ bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNsb25lLT5yZWdpb25fc2l6ZSkKIAkJcmVhc29uID0gIm1h eCBkaXNjYXJkIHNlY3RvcnMgc21hbGxlciB0aGFuIGEgcmVnaW9uIjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKaW5k ZXggYzlkMDM2ZDZiYjJlZS4uZTE5NDIyNmM4OWU1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9k bS1sb2ctd3JpdGVzLmMKKysrIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKQEAgLTg2Niw5 ICs4NjYsOCBAQCBzdGF0aWMgaW50IGxvZ193cml0ZXNfbWVzc2FnZShzdHJ1Y3QgZG1fdGFyZ2V0 ICp0aSwgdW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YsCiBzdGF0aWMgdm9pZCBsb2dfd3JpdGVz X2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1p dHMpCiB7CiAJc3RydWN0IGxvZ193cml0ZXNfYyAqbGMgPSB0aS0+cHJpdmF0ZTsKLQlzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGxjLT5kZXYtPmJkZXYpOwogCi0JaWYg KCFxIHx8ICFibGtfcXVldWVfZGlzY2FyZChxKSkgeworCWlmICghYmRldl9tYXhfZGlzY2FyZF9z ZWN0b3JzKGxjLT5kZXYtPmJkZXYpKSB7CiAJCWxjLT5kZXZpY2Vfc3VwcG9ydHNfZGlzY2FyZCA9 IGZhbHNlOwogCQlsaW1pdHMtPmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSBsYy0+c2VjdG9yc2l6ZTsK IAkJbGltaXRzLT5tYXhfZGlzY2FyZF9zZWN0b3JzID0gKFVJTlRfTUFYID4+IFNFQ1RPUl9TSElG VCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJhaWQuYyBiL2RyaXZlcnMvbWQvZG0tcmFp ZC5jCmluZGV4IDJiMjY0MzVhNjk0NmUuLjk1MjZjY2JlZGFmYmEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvZG0tcmFpZC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmFpZC5jCkBAIC0yOTYzLDEzICsy OTYzLDggQEAgc3RhdGljIHZvaWQgY29uZmlndXJlX2Rpc2NhcmRfc3VwcG9ydChzdHJ1Y3QgcmFp ZF9zZXQgKnJzKQogCXJhaWQ0NTYgPSByc19pc19yYWlkNDU2KHJzKTsKIAogCWZvciAoaSA9IDA7 IGkgPCBycy0+cmFpZF9kaXNrczsgaSsrKSB7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOwot Ci0JCWlmICghcnMtPmRldltpXS5yZGV2LmJkZXYpCi0JCQljb250aW51ZTsKLQotCQlxID0gYmRl dl9nZXRfcXVldWUocnMtPmRldltpXS5yZGV2LmJkZXYpOwotCQlpZiAoIXEgfHwgIWJsa19xdWV1 ZV9kaXNjYXJkKHEpKQorCQlpZiAoIXJzLT5kZXZbaV0ucmRldi5iZGV2IHx8CisJCSAgICAhYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHJzLT5kZXZbaV0ucmRldi5iZGV2KSkKIAkJCXJldHVybjsK IAogCQlpZiAocmFpZDQ1NikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS10YWJsZS5jIGIv ZHJpdmVycy9tZC9kbS10YWJsZS5jCmluZGV4IGQ0NjgzOWZhYTBjYTUuLjBkZmY2OTA3ZmQwMGQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tdGFibGUuYworKysgYi9kcml2ZXJzL21kL2RtLXRh YmxlLmMKQEAgLTE4ODgsOSArMTg4OCw3IEBAIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRz X25vd2FpdChzdHJ1Y3QgZG1fdGFibGUgKnQpCiBzdGF0aWMgaW50IGRldmljZV9ub3RfZGlzY2Fy ZF9jYXBhYmxlKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgZG1fZGV2ICpkZXYsCiAJCQkJ ICAgICAgc2VjdG9yX3Qgc3RhcnQsIHNlY3Rvcl90IGxlbiwgdm9pZCAqZGF0YSkKIHsKLQlzdHJ1 Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGRldi0+YmRldik7Ci0KLQlyZXR1 cm4gIWJsa19xdWV1ZV9kaXNjYXJkKHEpOworCXJldHVybiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0 b3JzKGRldi0+YmRldik7CiB9CiAKIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRzX2Rpc2Nh cmRzKHN0cnVjdCBkbV90YWJsZSAqdCkKQEAgLTE5NzAsMTUgKzE5NjgsMTIgQEAgaW50IGRtX3Rh YmxlX3NldF9yZXN0cmljdGlvbnMoc3RydWN0IGRtX3RhYmxlICp0LCBzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwKIAkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19OT1dBSVQsIHEpOwog CiAJaWYgKCFkbV90YWJsZV9zdXBwb3J0c19kaXNjYXJkcyh0KSkgewotCQlibGtfcXVldWVfZmxh Z19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwotCQkvKiBNdXN0IGFsc28gY2xlYXIgZGlz Y2FyZCBsaW1pdHMuLi4gKi8KIAkJcS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwog CQlxLT5saW1pdHMubWF4X2h3X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJCXEtPmxpbWl0cy5kaXNj YXJkX2dyYW51bGFyaXR5ID0gMDsKIAkJcS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gMDsK IAkJcS0+bGltaXRzLmRpc2NhcmRfbWlzYWxpZ25lZCA9IDA7Ci0JfSBlbHNlCi0JCWJsa19xdWV1 ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOworCX0KIAogCWlmIChkbV90YWJsZV9z dXBwb3J0c19zZWN1cmVfZXJhc2UodCkpCiAJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFH X1NFQ0VSQVNFLCBxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVy cy9tZC9kbS10aGluLmMKaW5kZXggNGQyNWQwZTI3MDMxMy4uZWRlZDRiY2M0NTQ1ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMKKysrIGIvZHJpdmVycy9tZC9kbS10aGluLmMKQEAg LTI4MDIsMTMgKzI4MDIsNiBAQCBzdGF0aWMgdm9pZCByZXF1ZXVlX2Jpb3Moc3RydWN0IHBvb2wg KnBvb2wpCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqIEJpbmRpbmcgb2YgY29udHJvbCB0YXJnZXRzIHRvIGEgcG9v bCBvYmplY3QKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwotc3RhdGljIGJvb2wgZGF0YV9kZXZfc3VwcG9ydHNfZGlzY2Fy ZChzdHJ1Y3QgcG9vbF9jICpwdCkKLXsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKHB0LT5kYXRhX2Rldi0+YmRldik7Ci0KLQlyZXR1cm4gYmxrX3F1ZXVlX2Rpc2Nh cmQocSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzX2ZhY3RvcihzZWN0b3JfdCBibG9ja19zaXplLCB1 aW50MzJfdCBuKQogewogCXJldHVybiAhc2VjdG9yX2RpdihibG9ja19zaXplLCBuKTsKQEAgLTI4 MjgsNyArMjgyMSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcGFzc2Rvd25faWZfbm90X3N1cHBv cnRlZChzdHJ1Y3QgcG9vbF9jICpwdCkKIAlpZiAoIXB0LT5hZGp1c3RlZF9wZi5kaXNjYXJkX3Bh c3Nkb3duKQogCQlyZXR1cm47CiAKLQlpZiAoIWRhdGFfZGV2X3N1cHBvcnRzX2Rpc2NhcmQocHQp KQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHB0LT5kYXRhX2Rldi0+YmRldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAogCWVsc2UgaWYgKGRhdGFfbGltaXRz LT5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgcG9vbC0+c2VjdG9yc19wZXJfYmxvY2spCkBAIC00MDU3 LDggKzQwNTAsNiBAQCBzdGF0aWMgdm9pZCBwb29sX2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQg KnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1pdHMpCiAJCS8qCiAJCSAqIE11c3QgZXhwbGlj aXRseSBkaXNhbGxvdyBzdGFja2luZyBkaXNjYXJkIGxpbWl0cyBvdGhlcndpc2UgdGhlCiAJCSAq IGJsb2NrIGxheWVyIHdpbGwgc3RhY2sgdGhlbSBpZiBwb29sJ3MgZGF0YSBkZXZpY2UgaGFzIHN1 cHBvcnQuCi0JCSAqIFFVRVVFX0ZMQUdfRElTQ0FSRCB3b3VsZG4ndCBiZSBzZXQgYnV0IHRoZXJl IGlzIG5vIHdheSBmb3IgdGhlCi0JCSAqIHVzZXIgdG8gc2VlIHRoYXQsIHNvIG1ha2Ugc3VyZSB0 byBzZXQgYWxsIGRpc2NhcmQgbGltaXRzIHRvIDAuCiAJCSAqLwogCQlsaW1pdHMtPmRpc2NhcmRf Z3JhbnVsYXJpdHkgPSAwOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLmMg Yi9kcml2ZXJzL21kL2RtLmMKaW5kZXggM2M1ZmFkN2M0ZWU2OC4uZGJiZjY0Y2U3ZTkyNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZC9kbS5jCisrKyBiL2RyaXZlcnMvbWQvZG0uYwpAQCAtOTU1LDcg Kzk1NSw2IEBAIHZvaWQgZGlzYWJsZV9kaXNjYXJkKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCkK IAogCS8qIGRldmljZSBkb2Vzbid0IHJlYWxseSBzdXBwb3J0IERJU0NBUkQsIGRpc2FibGUgaXQg Ki8KIAlsaW1pdHMtPm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwotCWJsa19xdWV1ZV9mbGFnX2Ns ZWFyKFFVRVVFX0ZMQUdfRElTQ0FSRCwgbWQtPnF1ZXVlKTsKIH0KIAogdm9pZCBkaXNhYmxlX3dy aXRlX3plcm9lcyhzdHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQpCkBAIC05ODIsNyArOTgxLDcgQEAg c3RhdGljIHZvaWQgY2xvbmVfZW5kaW8oc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKHVubGlrZWx5 KGVycm9yID09IEJMS19TVFNfVEFSR0VUKSkgewogCQlpZiAoYmlvX29wKGJpbykgPT0gUkVRX09Q X0RJU0NBUkQgJiYKLQkJICAgICFxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycykKKwkJICAg ICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5iaV9iZGV2KSkKIAkJCWRpc2FibGVfZGlz Y2FyZChtZCk7CiAJCWVsc2UgaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9XUklURV9aRVJPRVMg JiYKIAkJCSAhcS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWQvbWQtbGluZWFyLmMgYi9kcml2ZXJzL21kL21kLWxpbmVhci5jCmluZGV4IDBm NTViMDc5MzcxYjEuLjEzOGEzYjI1YzVjODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQtbGlu ZWFyLmMKKysrIGIvZHJpdmVycy9tZC9tZC1saW5lYXIuYwpAQCAtNjQsNyArNjQsNiBAQCBzdGF0 aWMgc3RydWN0IGxpbmVhcl9jb25mICpsaW5lYXJfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBp bnQgcmFpZF9kaXNrcykKIAlzdHJ1Y3QgbGluZWFyX2NvbmYgKmNvbmY7CiAJc3RydWN0IG1kX3Jk ZXYgKnJkZXY7CiAJaW50IGksIGNudDsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFsc2U7 CiAKIAljb25mID0ga3phbGxvYyhzdHJ1Y3Rfc2l6ZShjb25mLCBkaXNrcywgcmFpZF9kaXNrcyks IEdGUF9LRVJORUwpOwogCWlmICghY29uZikKQEAgLTk2LDkgKzk1LDYgQEAgc3RhdGljIHN0cnVj dCBsaW5lYXJfY29uZiAqbGluZWFyX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IHJhaWRf ZGlza3MpCiAKIAkJY29uZi0+YXJyYXlfc2VjdG9ycyArPSByZGV2LT5zZWN0b3JzOwogCQljbnQr KzsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikp KQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCX0KIAlpZiAoY250ICE9IHJhaWRfZGlz a3MpIHsKIAkJcHJfd2FybigibWQvbGluZWFyOiVzOiBub3QgZW5vdWdoIGRyaXZlcyBwcmVzZW50 LiBBYm9ydGluZyFcbiIsCkBAIC0xMDYsMTEgKzEwMiw2IEBAIHN0YXRpYyBzdHJ1Y3QgbGluZWFy X2NvbmYgKmxpbmVhcl9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYsIGludCByYWlkX2Rpc2tzKQog CQlnb3RvIG91dDsKIAl9CiAKLQlpZiAoIWRpc2NhcmRfc3VwcG9ydGVkKQotCQlibGtfcXVldWVf ZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7Ci0JZWxzZQotCQli bGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBtZGRldi0+cXVldWUpOwotCiAJ LyoKIAkgKiBIZXJlIHdlIGNhbGN1bGF0ZSB0aGUgZGV2aWNlIG9mZnNldHMuCiAJICovCkBAIC0y NTIsNyArMjQzLDcgQEAgc3RhdGljIGJvb2wgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRk ZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXN0YXJ0X3NlY3RvciArIGRhdGFfb2Zmc2V0 OwogCiAJaWYgKHVubGlrZWx5KChiaW9fb3AoYmlvKSA9PSBSRVFfT1BfRElTQ0FSRCkgJiYKLQkJ ICAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKSB7 CisJCSAgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiaW8tPmJpX2JkZXYpKSkgewogCQkv KiBKdXN0IGlnbm9yZSBpdCAqLwogCQliaW9fZW5kaW8oYmlvKTsKIAl9IGVsc2UgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkMC5jIGIvZHJpdmVycy9tZC9yYWlkMC5jCmluZGV4IGIyMWUx MDExODNmNDQuLjcyMzFmNWUxZWFhNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAuYwor KysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTM5OSw3ICszOTksNiBAQCBzdGF0aWMgaW50IHJh aWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQogCWNvbmYgPSBtZGRldi0+cHJpdmF0ZTsKIAlp ZiAobWRkZXYtPnF1ZXVlKSB7CiAJCXN0cnVjdCBtZF9yZGV2ICpyZGV2OwotCQlib29sIGRpc2Nh cmRfc3VwcG9ydGVkID0gZmFsc2U7CiAKIAkJYmxrX3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2 LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3pl cm9lc19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwpAQCAtNDEy LDEzICs0MTEsNyBAQCBzdGF0aWMgaW50IHJhaWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQog CQlyZGV2X2Zvcl9lYWNoKHJkZXYsIG1kZGV2KSB7CiAJCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRl di0+Z2VuZGlzaywgcmRldi0+YmRldiwKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsK LQkJCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0J CQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCQl9Ci0JCWlmICghZGlzY2FyZF9zdXBwb3J0 ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5x dWV1ZSk7Ci0JCWVsc2UKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IG1kZGV2LT5xdWV1ZSk7CiAJfQogCiAJLyogY2FsY3VsYXRlIGFycmF5IGRldmljZSBzaXplICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxLmMgYi9kcml2ZXJzL21kL3JhaWQxLmMKaW5k ZXggZDgxYjg5Njg1NWY5Zi4uM2RhNzQ5ZDE1MGExNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9y YWlkMS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEuYwpAQCAtODAyLDcgKzgwMiw3IEBAIHN0YXRp YyB2b2lkIGZsdXNoX2Jpb19saXN0KHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVjdCBiaW8gKmJp bykKIAkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJYmlvX2lvX2Vy cm9yKGJpbyk7CiAJCX0gZWxzZSBpZiAodW5saWtlbHkoKGJpb19vcChiaW8pID09IFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9k aXNrLT5xdWV1ZSkpKQorCQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+Ymlf YmRldikpKQogCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQll bHNlCkBAIC0xODI2LDggKzE4MjYsNiBAQCBzdGF0aWMgaW50IHJhaWQxX2FkZF9kaXNrKHN0cnVj dCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KQogCQkJYnJlYWs7CiAJCX0KIAl9 Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShy ZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG1k ZGV2LT5xdWV1ZSk7CiAJcHJpbnRfY29uZihjb25mKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzEw Niw3ICszMTA0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikK IAlpbnQgaTsKIAlzdHJ1Y3QgbWRfcmRldiAqcmRldjsKIAlpbnQgcmV0OwotCWJvb2wgZGlzY2Fy ZF9zdXBwb3J0ZWQgPSBmYWxzZTsKIAogCWlmIChtZGRldi0+bGV2ZWwgIT0gMSkgewogCQlwcl93 YXJuKCJtZC9yYWlkMTolczogcmFpZCBsZXZlbCBub3Qgc2V0IHRvIG1pcnJvcmluZyAoJWQpXG4i LApAQCAtMzE0MSw4ICszMTM4LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2 ICptZGRldikKIAkJCWNvbnRpbnVlOwogCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRldi0+Z2VuZGlz aywgcmRldi0+YmRldiwKIAkJCQkgIHJkZXYtPmRhdGFfb2Zmc2V0IDw8IDkpOwotCQlpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9z dXBwb3J0ZWQgPSB0cnVlOwogCX0KIAogCW1kZGV2LT5kZWdyYWRlZCA9IDA7CkBAIC0zMTc5LDE1 ICszMTc0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAog CW1kX3NldF9hcnJheV9zZWN0b3JzKG1kZGV2LCByYWlkMV9zaXplKG1kZGV2LCAwLCAwKSk7CiAK LQlpZiAobWRkZXYtPnF1ZXVlKSB7Ci0JCWlmIChkaXNjYXJkX3N1cHBvcnRlZCkKLQkJCWJsa19x dWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwot CQllbHNlCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJ CQkgIG1kZGV2LT5xdWV1ZSk7Ci0JfQotCiAJcmV0ID0gbWRfaW50ZWdyaXR5X3JlZ2lzdGVyKG1k ZGV2KTsKIAlpZiAocmV0KSB7CiAJCW1kX3VucmVnaXN0ZXJfdGhyZWFkKCZtZGRldi0+dGhyZWFk KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5j CmluZGV4IDc4MTZjOGIyZTgwODcuLjM2YTQ2MDAxNWNmNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAtODg4LDcgKzg4OCw3IEBA IHN0YXRpYyB2b2lkIGZsdXNoX3BlbmRpbmdfd3JpdGVzKHN0cnVjdCByMTBjb25mICpjb25mKQog CQkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJCWJpb19pb19lcnJv cihiaW8pOwogCQkJfSBlbHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCQkgICAgIWJsa19xdWV1ZV9kaXNjYXJkKGJpby0+YmlfYmRldi0+YmRf ZGlzay0+cXVldWUpKSkKKwkJCQkJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5i aV9iZGV2KSkpCiAJCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCQliaW9fZW5kaW8oYmlvKTsK IAkJCWVsc2UKQEAgLTEwODMsNyArMTA4Myw3IEBAIHN0YXRpYyB2b2lkIHJhaWQxMF91bnBsdWco c3RydWN0IGJsa19wbHVnX2NiICpjYiwgYm9vbCBmcm9tX3NjaGVkdWxlKQogCQlpZiAodGVzdF9i aXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpKSB7CiAJCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJfSBl bHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9ESVNDQVJEKSAmJgotCQkJ CSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKQor CQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+YmlfYmRldikpKQogCQkJLyog SnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQllbHNlCkBAIC0yMTQ0LDgg KzIxNDQsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9hZGRfZGlzayhzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzdHJ1Y3QgbWRfcmRldiAqcmRldikKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKHAtPnJkZXYsIHJk ZXYpOwogCQlicmVhazsKIAl9Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2Fy ZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7CiAKIAlwcmludF9jb25mKGNvbmYpOwogCXJl dHVybiBlcnI7CkBAIC00MDY5LDcgKzQwNjcsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4oc3Ry dWN0IG1kZGV2ICptZGRldikKIAlzZWN0b3JfdCBzaXplOwogCXNlY3Rvcl90IG1pbl9vZmZzZXRf ZGlmZiA9IDA7CiAJaW50IGZpcnN0ID0gMTsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFs c2U7CiAKIAlpZiAobWRkZXZfaW5pdF93cml0ZXNfcGVuZGluZyhtZGRldikgPCAwKQogCQlyZXR1 cm4gLUVOT01FTTsKQEAgLTQxNDAsMjAgKzQxMzcsOSBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4o c3RydWN0IG1kZGV2ICptZGRldikKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsKIAog CQlkaXNrLT5oZWFkX3Bvc2l0aW9uID0gMDsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRl dl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwog CQlmaXJzdCA9IDA7CiAJfQogCi0JaWYgKG1kZGV2LT5xdWV1ZSkgewotCQlpZiAoZGlzY2FyZF9z dXBwb3J0ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELAotCQkJ CQkJbWRkZXYtPnF1ZXVlKTsKLQkJZWxzZQotCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVf RkxBR19ESVNDQVJELAotCQkJCQkJICBtZGRldi0+cXVldWUpOwotCX0KIAkvKiBuZWVkIHRvIGNo ZWNrIHRoYXQgZXZlcnkgYmxvY2sgaGFzIGF0IGxlYXN0IG9uZSB3b3JraW5nIG1pcnJvciAqLwog CWlmICghZW5vdWdoKGNvbmYsIC0xKSkgewogCQlwcl9lcnIoIm1kL3JhaWQxMDolczogbm90IGVu b3VnaCBvcGVyYXRpb25hbCBtaXJyb3JzLlxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFp ZDUtY2FjaGUuYyBiL2RyaXZlcnMvbWQvcmFpZDUtY2FjaGUuYwppbmRleCBhN2Q1MGZmOTAyMGE4 Li5jM2NiZjlhNTc0YTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQ1LWNhY2hlLmMKKysr IGIvZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5jCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBzdGF0aWMg dm9pZCByNWxfd3JpdGVfc3VwZXJfYW5kX2Rpc2NhcmRfc3BhY2Uoc3RydWN0IHI1bF9sb2cgKmxv ZywKIAogCXI1bF93cml0ZV9zdXBlcihsb2csIGVuZCk7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNj YXJkKGJkZXZfZ2V0X3F1ZXVlKGJkZXYpKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhiZGV2KSkKIAkJcmV0dXJuOwogCiAJbWRkZXYgPSBsb2ctPnJkZXYtPm1kZGV2OwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDBiYmFl MGU2Mzg2NjYuLjU5ZjkxZTM5MmEyYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYwor KysgYi9kcml2ZXJzL21kL3JhaWQ1LmMKQEAgLTc3NzYsMTQgKzc3NzYsMTAgQEAgc3RhdGljIGlu dCByYWlkNV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAkJICogQSBiZXR0ZXIgaWRlYSBtaWdo dCBiZSB0byB0dXJuIERJU0NBUkQgaW50byBXUklURV9aRVJPRVMKIAkJICogcmVxdWVzdHMsIGFz IHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgc2FmZS4KIAkJICovCi0JCWlmIChkZXZpY2VzX2hhbmRs ZV9kaXNjYXJkX3NhZmVseSAmJgotCQkgICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMubWF4X2Rpc2Nh cmRfc2VjdG9ycyA+PSAoc3RyaXBlID4+IDkpICYmCi0JCSAgICBtZGRldi0+cXVldWUtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5ID49IHN0cmlwZSkKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChR VUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwotCQllbHNlCi0JCQlibGtf cXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUp OworCQlpZiAoIWRldmljZXNfaGFuZGxlX2Rpc2NhcmRfc2FmZWx5IHx8CisJCSAgICBtZGRldi0+ cXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgKHN0cmlwZSA+PiA5KSB8fAorCQkg ICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA8IHN0cmlwZSkKKwkJ CWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgMCk7CiAKIAkJYmxr X3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgVUlOVF9NQVgpOwogCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUu YwppbmRleCBjNjliMmQ5ZGY2ZjE2Li5jYWM2MzE1MDEwYTNkIDEwMDY0NAotLS0gYS9kcml2ZXJz L21tYy9jb3JlL3F1ZXVlLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jCkBAIC0xODMs NyArMTgzLDYgQEAgc3RhdGljIHZvaWQgbW1jX3F1ZXVlX3NldHVwX2Rpc2NhcmQoc3RydWN0IHJl cXVlc3RfcXVldWUgKnEsCiAJaWYgKCFtYXhfZGlzY2FyZCkKIAkJcmV0dXJuOwogCi0JYmxrX3F1 ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJYmxrX3F1ZXVlX21heF9kaXNj YXJkX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmQpOwogCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5ID0gY2FyZC0+cHJlZl9lcmFzZSA8PCA5OwogCS8qIGdyYW51bGFyaXR5IG11c3Qgbm90IGJl IGdyZWF0ZXIgdGhhbiBtYXguIGRpc2NhcmQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210 ZF9ibGtkZXZzLmMgYi9kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jCmluZGV4IDY0ZDJiMDkzZjEx NGIuLmY3MzE3MjExMTQ2NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMK KysrIGIvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwpAQCAtMzc3LDcgKzM3Nyw2IEBAIGludCBh ZGRfbXRkX2Jsa3RyYW5zX2RldihzdHJ1Y3QgbXRkX2Jsa3RyYW5zX2RldiAqbmV3KQogCWJsa19x dWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfQUREX1JBTkRPTSwgbmV3LT5ycSk7CiAKIAlpZiAo dHItPmRpc2NhcmQpIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwg bmV3LT5ycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5ldy0+cnEsIFVJTlRf TUFYKTsKIAkJbmV3LT5ycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSB0ci0+Ymxrc2l6 ZTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMgYi9kcml2ZXJzL252 bWUvaG9zdC9jb3JlLmMKaW5kZXggZWZiODVjNmQ4ZTJkNS4uYjAxMzAwZDljZDM3MiAxMDA2NDQK LS0tIGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2Nv cmUuYwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9jb25maWdfZGlzY2Fy ZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQogCXUzMiBzaXplID0g cXVldWVfbG9naWNhbF9ibG9ja19zaXplKHF1ZXVlKTsKIAogCWlmIChjdHJsLT5tYXhfZGlzY2Fy ZF9zZWN0b3JzID09IDApIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19ESVND QVJELCBxdWV1ZSk7CisJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHF1ZXVlLCAwKTsK IAkJcmV0dXJuOwogCX0KIApAQCAtMTYxOSw3ICsxNjE5LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9j b25maWdfZGlzY2FyZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQog CXF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IHNpemU7CiAKIAkvKiBJZiBkaXNj YXJkIGlzIGFscmVhZHkgZW5hYmxlZCwgZG9uJ3QgcmVzZXQgcXVldWUgbGltaXRzICovCi0JaWYg KGJsa19xdWV1ZV9mbGFnX3Rlc3RfYW5kX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHF1ZXVlKSkK KwlpZiAocXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzKQogCQlyZXR1cm47CiAKIAli bGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxdWV1ZSwgY3RybC0+bWF4X2Rpc2NhcmRfc2Vj dG9ycyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9mYmEuYyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCmluZGV4IGUwODRmNGRlZGRkZGQuLjhiZDU2NjVkYjkx OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCisrKyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCkBAIC03OTEsNyArNzkxLDYgQEAgc3RhdGljIHZvaWQg ZGFzZF9mYmFfc2V0dXBfYmxrX3F1ZXVlKHN0cnVjdCBkYXNkX2Jsb2NrICpibG9jaykKIAogCWJs a19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIG1heF9kaXNjYXJkX3NlY3RvcnMpOwogCWJs a19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmRfc2VjdG9ycyk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBpbnQgZGFzZF9mYmFfcGVfaGFuZGxlcihzdHJ1Y3QgZGFzZF9kZXZpY2UgKmRldmljZSwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggZGM2 ZTU1NzYxZmQxZi4uOTY5NGUyY2ZhZjlhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmMK KysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTc5Nyw3ICs3OTcsNiBAQCBzdGF0aWMgdm9pZCBz ZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9k ZSkKIAljYXNlIFNEX0xCUF9GVUxMOgogCWNhc2UgU0RfTEJQX0RJU0FCTEU6CiAJCWJsa19xdWV1 ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIDApOwotCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVV RV9GTEFHX0RJU0NBUkQsIHEpOwogCQlyZXR1cm47CiAKIAljYXNlIFNEX0xCUF9VTk1BUDoKQEAg LTgzMCw3ICs4MjksNiBAQCBzdGF0aWMgdm9pZCBzZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2Nz aV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9kZSkKIAl9CiAKIAlibGtfcXVldWVfbWF4X2Rp c2NhcmRfc2VjdG9ycyhxLCBtYXhfYmxvY2tzICogKGxvZ2ljYWxfYmxvY2tfc2l6ZSA+PiA5KSk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBibGtfc3RhdHVzX3Qgc2Rfc2V0dXBfdW5tYXBfY21uZChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQp CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYyBiL2RyaXZl cnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCmluZGV4IGMzZTI1YmFjOTBkNTkuLjZjYjlm ODc4NDMyNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5j CisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCkBAIC04MzgsNyArODM4 LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3RydWN0IHNlX2Rl dl9hdHRyaWIgKmF0dHJpYiwKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3NpemUoYmRl dik7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKGJkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlhdHRyaWItPm1heF91bm1hcF9s YmFfY291bnQgPQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyBiL2ZzL2J0cmZz L2V4dGVudC10cmVlLmMKaW5kZXggZjQ3NzAzNWEyYWMyMy4uZWZkOGRlYjNhYjdlOCAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5j CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBzdGF0aWMgaW50IGRvX2Rpc2NhcmRfZXh0ZW50KHN0cnVj dCBidHJmc19pb19zdHJpcGUgKnN0cmlwZSwgdTY0ICpieXRlcykKIAkJcmV0ID0gYnRyZnNfcmVz ZXRfZGV2aWNlX3pvbmUoZGV2X3JlcGxhY2UtPnRndGRldiwgcGh5cywgbGVuLAogCQkJCQkgICAg ICAmZGlzY2FyZGVkKTsKIAkJZGlzY2FyZGVkICs9IHNyY19kaXNjOwotCX0gZWxzZSBpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoc3RyaXBlLT5kZXYtPmJkZXYpKSkgeworCX0g ZWxzZSBpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHN0cmlwZS0+ZGV2LT5iZGV2KSkgewog CQlyZXQgPSBidHJmc19pc3N1ZV9kaXNjYXJkKGRldi0+YmRldiwgcGh5cywgbGVuLCAmZGlzY2Fy ZGVkKTsKIAl9IGVsc2UgewogCQlyZXQgPSAwOwpAQCAtNTk4Nyw3ICs1OTg3LDcgQEAgc3RhdGlj IGludCBidHJmc190cmltX2ZyZWVfZXh0ZW50cyhzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2Us IHU2NCAqdHJpbW1lZCkKIAkqdHJpbW1lZCA9IDA7CiAKIAkvKiBEaXNjYXJkIG5vdCBzdXBwb3J0 ZWQgPSBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRf cXVldWUoZGV2aWNlLT5iZGV2KSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoZGV2 aWNlLT5iZGV2KSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBOb3Qgd3JpdGFibGUgPSBub3RoaW5nIHRv IGRvLiAqLwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMK aW5kZXggZjQ2ZTcxMDYxOTQyZC4uMDk2YmIwZGEwM2YxYyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv aW9jdGwuYworKysgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGlj IG5vaW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sCiAJCWlmICghZGV2aWNlLT5iZGV2KQogCQkJY29udGludWU7CiAJCXEgPSBiZGV2X2dl dF9xdWV1ZShkZXZpY2UtPmJkZXYpOwotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKKwkJ aWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJkZXYpKSB7CiAJCQludW1fZGV2 aWNlcysrOwogCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSwKIAkJCQkgICAgIG1pbmxlbik7CmRpZmYgLS1naXQgYS9mcy9leGZhdC9maWxlLmMgYi9m cy9leGZhdC9maWxlLmMKaW5kZXggMmY1MTMwMDU5MjM2Ni4uNzY1ZTRmNjNkZDE4ZCAxMDA2NDQK LS0tIGEvZnMvZXhmYXQvZmlsZS5jCisrKyBiL2ZzL2V4ZmF0L2ZpbGUuYwpAQCAtMzU4LDcgKzM1 OCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJcmV0 dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoaW5vZGUtPmlfc2ItPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAogCWlmIChjb3B5X2Zyb21fdXNlcigmcmFuZ2UsIChzdHJ1Y3QgZnN0cmltX3Jhbmdl IF9fdXNlciAqKWFyZywgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBl ci5jIGIvZnMvZXhmYXQvc3VwZXIuYwppbmRleCA4Y2EyMWU3OTE3ZDE2Li5iZTA3ODhlY2FmMjBl IDEwMDY0NAotLS0gYS9mcy9leGZhdC9zdXBlci5jCisrKyBiL2ZzL2V4ZmF0L3N1cGVyLmMKQEAg LTYyNywxMyArNjI3LDkgQEAgc3RhdGljIGludCBleGZhdF9maWxsX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpZiAob3B0cy0+YWxsb3dfdXRp bWUgPT0gKHVuc2lnbmVkIHNob3J0KS0xKQogCQlvcHRzLT5hbGxvd191dGltZSA9IH5vcHRzLT5m c19kbWFzayAmIDAwMjI7CiAKLQlpZiAob3B0cy0+ZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpIHsKLQkJCWV4ZmF0X3dhcm4oc2IsICJtb3VudGluZyB3aXRoIFwiZGlz Y2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7 Ci0JCQlvcHRzLT5kaXNjYXJkID0gMDsKLQkJfQorCWlmIChvcHRzLT5kaXNjYXJkICYmICFiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoc2ItPnNfYmRldikpIHsKKwkJZXhmYXRfd2FybihzYiwgIm1v dW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBkb2VzIG5vdCBz dXBwb3J0IGRpc2NhcmQiKTsKKwkJb3B0cy0+ZGlzY2FyZCA9IDA7CiAJfQogCiAJc2ItPnNfZmxh Z3MgfD0gU0JfTk9ESVJBVElNRTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW9jdGwuYyBiL2ZzL2V4 dDQvaW9jdGwuYwppbmRleCA5OTIyMjljYTJkODMwLi42ZTNiOWVlYTEyNmY0IDEwMDY0NAotLS0g YS9mcy9leHQ0L2lvY3RsLmMKKysrIGIvZnMvZXh0NC9pb2N0bC5jCkBAIC0xMDQ0LDcgKzEwNDQs NiBAQCBzdGF0aWMgaW50IGV4dDRfaW9jdGxfY2hlY2twb2ludChzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJX191MzIgZmxhZ3MgPSAwOwogCXVuc2lnbmVkIGludCBmbHVz aF9mbGFncyA9IDA7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGZpbGVfaW5vZGUoZmlscCkt Pmlfc2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnE7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIo JmZsYWdzLCAoX191MzIgX191c2VyICopYXJnLAogCQkJCXNpemVvZihfX3UzMikpKQpAQCAtMTA2 NSwxMCArMTA2NCw4IEBAIHN0YXRpYyBpbnQgZXh0NF9pb2N0bF9jaGVja3BvaW50KHN0cnVjdCBm aWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIAlpZiAoZmxhZ3MgJiB+RVhUNF9JT0NfQ0hF Q0tQT0lOVF9GTEFHX1ZBTElEKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXEgPSBiZGV2X2dldF9x dWV1ZShFWFQ0X1NCKHNiKS0+c19qb3VybmFsLT5qX2Rldik7Ci0JaWYgKCFxKQotCQlyZXR1cm4g LUVOWElPOwotCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElTQ0FSRCkgJiYgIWJs a19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElT Q0FSRCkgJiYKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhFWFQ0X1NCKHNiKS0+c19q b3VybmFsLT5qX2RldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChmbGFncyAmIEVY VDRfSU9DX0NIRUNLUE9JTlRfRkxBR19EUllfUlVOKQpAQCAtMTM5MywxNCArMTM5MCwxMyBAQCBz dGF0aWMgbG9uZyBfX2V4dDRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBj bWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCiAJY2FzZSBGSVRSSU06CiAJewotCQlzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0 cmltX3JhbmdlIHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIAogCQlpZiAoIWNhcGFibGUoQ0FQX1NZ U19BRE1JTikpCiAJCQlyZXR1cm4gLUVQRVJNOwogCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQo cSkpCisJCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCiAJCS8qCmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9m cy9leHQ0L3N1cGVyLmMKaW5kZXggODE3NDllYWRkZjRjMS4uOTNmNGU0ZTllMjYzMSAxMDA2NDQK LS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNTQ1OCwxMyAr NTQ1OCw5IEBAIHN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQg KmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCQkJZ290byBmYWlsZWRfbW91bnQ5OwogCX0K IAotCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkpIHsKLQkJc3RydWN0IHJlcXVlc3RfcXVldWUg KnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKLQkJaWYgKCFibGtfcXVldWVfZGlzY2Fy ZChxKSkKLQkJCWV4dDRfbXNnKHNiLCBLRVJOX1dBUk5JTkcsCi0JCQkJICJtb3VudGluZyB3aXRo IFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0ICIKLQkJCQkgInRoZSBkZXZpY2UgZG9lcyBub3Qgc3Vw cG9ydCBkaXNjYXJkIik7Ci0JfQorCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkgJiYgIWJkZXZf bWF4X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZXh0NF9tc2coc2IsIEtFUk5fV0FS TklORywKKwkJCSAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCB0aGUgZGV2 aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwogCiAJaWYgKGVzLT5zX2Vycm9yX2NvdW50 KQogCQltb2RfdGltZXIoJnNiaS0+c19lcnJfcmVwb3J0LCBqaWZmaWVzICsgMzAwKkhaKTsgLyog NSBtaW51dGVzICovCmRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5o CmluZGV4IGNkMWU2NWJjZjBiMDQuLjBlYTlhNWZhN2MxZGQgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMv ZjJmcy5oCisrKyBiL2ZzL2YyZnMvZjJmcy5oCkBAIC00MzgxLDggKzQzODEsNyBAQCBzdGF0aWMg aW5saW5lIGJvb2wgZjJmc19od19zaG91bGRfZGlzY2FyZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmkpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2JkZXZfc3VwcG9ydF9kaXNjYXJkKHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKGJkZXZf Z2V0X3F1ZXVlKGJkZXYpKSB8fAotCSAgICAgICBiZGV2X2lzX3pvbmVkKGJkZXYpOworCXJldHVy biBiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgfHwgYmRldl9pc196b25lZChiZGV2KTsK IH0KIAogc3RhdGljIGlubGluZSBib29sIGYyZnNfaHdfc3VwcG9ydF9kaXNjYXJkKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9mcy9mYXQvZmls ZS5jCmluZGV4IGE1YTMwOWZjYzdmYWYuLmU0YzdkMTBlODAxMjkgMTAwNjQ0Ci0tLSBhL2ZzL2Zh dC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBp bnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGFy ZykKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCiAJCXJldHVybiAtRVBFUk07CiAKLQlp ZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3Jz KHNiLT5zX2JkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAl1c2VyX3JhbmdlID0gKHN0 cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICopYXJnOwpkaWZmIC0tZ2l0IGEvZnMvZmF0L2lub2Rl LmMgYi9mcy9mYXQvaW5vZGUuYwppbmRleCBiZjYwNTFiZGYxZDFkLi4zZDFhZmI5NWE5MjVhIDEw MDY0NAotLS0gYS9mcy9mYXQvaW5vZGUuYworKysgYi9mcy9mYXQvaW5vZGUuYwpAQCAtMTg3Miwx MyArMTg3Miw5IEBAIGludCBmYXRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2 b2lkICpkYXRhLCBpbnQgc2lsZW50LCBpbnQgaXN2ZmF0LAogCQlnb3RvIG91dF9mYWlsOwogCX0K IAotCWlmIChzYmktPm9wdGlvbnMuZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJk KHEpKQotCQkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5HLAotCQkJCQkibW91bnRpbmcgd2l0aCBc ImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0JCQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBv cnQgZGlzY2FyZCIpOwotCX0KKwlpZiAoc2JpLT5vcHRpb25zLmRpc2NhcmQgJiYgIWJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5H LAorCQkJIm1vdW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IGRpc2NhcmQiKTsKIAogCWZhdF9zZXRfc3RhdGUoc2IsIDEsIDApOwog CXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA4MDFhZDlmNGYyYmVmLi43ZjIwYWM5MTMzYmM2IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoIXRlc3Rf Yml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkKIAkJcmV0dXJuIC1FUk9GUzsK IAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoc2RwLT5zZF92ZnMtPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlm IChjb3B5X2Zyb21fdXNlcigmciwgYXJncCwgc2l6ZW9mKHIpKSkKZGlmZiAtLWdpdCBhL2ZzL2pi ZDIvam91cm5hbC5jIGIvZnMvamJkMi9qb3VybmFsLmMKaW5kZXggZmNhY2FmYTQ1MTBkMS4uMTlk MjI2Y2Q0ZmY0ZCAxMDA2NDQKLS0tIGEvZnMvamJkMi9qb3VybmFsLmMKKysrIGIvZnMvamJkMi9q b3VybmFsLmMKQEAgLTE3NjIsNyArMTc2Miw2IEBAIHN0YXRpYyBpbnQgX19qYmQyX2pvdXJuYWxf ZXJhc2Uoam91cm5hbF90ICpqb3VybmFsLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJdW5zaWduZWQg bG9uZyBibG9jaywgbG9nX29mZnNldDsgLyogbG9naWNhbCAqLwogCXVuc2lnbmVkIGxvbmcgbG9u ZyBwaHlzX2Jsb2NrLCBibG9ja19zdGFydCwgYmxvY2tfc3RvcDsgLyogcGh5c2ljYWwgKi8KIAls b2ZmX3QgYnl0ZV9zdGFydCwgYnl0ZV9zdG9wLCBieXRlX2NvdW50OwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoam91cm5hbC0+al9kZXYpOwogCiAJLyogZmxhZ3Mg bXVzdCBiZSBzZXQgdG8gZWl0aGVyIGRpc2NhcmQgb3IgemVyb291dCAqLwogCWlmICgoZmxhZ3Mg JiB+SkJEMl9KT1VSTkFMX0ZMVVNIX1ZBTElEKSB8fCAhZmxhZ3MgfHwKQEAgLTE3NzAsMTAgKzE3 NjksOCBAQCBzdGF0aWMgaW50IF9famJkMl9qb3VybmFsX2VyYXNlKGpvdXJuYWxfdCAqam91cm5h bCwgdW5zaWduZWQgaW50IGZsYWdzKQogCQkJKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX1pF Uk9PVVQpKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoIXEpCi0JCXJldHVybiAtRU5YSU87 Ci0KLQlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQpICYmICFibGtfcXVl dWVfZGlzY2FyZChxKSkKKwlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQp ICYmCisJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoam91cm5hbC0+al9kZXYpKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvamZzL2lvY3RsLmMgYi9m cy9qZnMvaW9jdGwuYwppbmRleCAwM2E4NDVhYjRmMDA5Li4zNTdhZTZlNWMzNmVjIDEwMDY0NAot LS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpAQCAtMTE3LDcgKzExNyw3 IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQkJcmV0 dXJuIC1FUEVSTTsKIAotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCWlmICghYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQlqZnNfd2FybigiRklUUklN IG5vdCBzdXBwb3J0ZWQgb24gZGV2aWNlIik7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0K ZGlmZiAtLWdpdCBhL2ZzL2pmcy9zdXBlci5jIGIvZnMvamZzL3N1cGVyLmMKaW5kZXggZjFhMTNh NzRjZGRmMy4uODVkNGY0NGYyYWM0ZCAxMDA2NDQKLS0tIGEvZnMvamZzL3N1cGVyLmMKKysrIGIv ZnMvamZzL3N1cGVyLmMKQEAgLTM3MiwxOSArMzcyLDE2IEBAIHN0YXRpYyBpbnQgcGFyc2Vfb3B0 aW9ucyhjaGFyICpvcHRpb25zLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzNjQgKm5ld0xWU2l6 ZSwKIAkJfQogCiAJCWNhc2UgT3B0X2Rpc2NhcmQ6Ci0JCXsKLQkJCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCQkvKiBpZiBzZXQgdG8gMSwg ZXZlbiBjb3B5aW5nIGZpbGVzIHdpbGwgY2F1c2UKIAkJCSAqIHRyaW1taW5nIDpPCiAJCQkgKiAt PiB1c2VyIGhhcyBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgb25saW5lIHRyaW1taW5nCiAJCQkgKi8K IAkJCXNiaS0+bWluYmxrc190cmltID0gNjQ7Ci0JCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkp CisJCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJCSpmbGFn IHw9IEpGU19ESVNDQVJEOwogCQkJZWxzZQogCQkJCXByX2VycigiSkZTOiBkaXNjYXJkIG9wdGlv biBub3Qgc3VwcG9ydGVkIG9uIGRldmljZVxuIik7CiAJCQlicmVhazsKLQkJfQogCiAJCWNhc2Ug T3B0X25vZGlzY2FyZDoKIAkJCSpmbGFnICY9IH5KRlNfRElTQ0FSRDsKQEAgLTM5MiwxMCArMzg5 LDkgQEAgc3RhdGljIGludCBwYXJzZV9vcHRpb25zKGNoYXIgKm9wdGlvbnMsIHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHM2NCAqbmV3TFZTaXplLAogCiAJCWNhc2UgT3B0X2Rpc2NhcmRfbWluYmxr OgogCQl7Ci0JCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCQkJY2hhciAqbWluYmxrc190cmltID0gYXJnc1swXS5mcm9tOwogCQkJaW50IHJj OwotCQkJaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCQlpZiAoYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQkJKmZsYWcgfD0gSkZTX0RJU0NBUkQ7CiAJCQkJ cmMgPSBrc3RydG91aW50KG1pbmJsa3NfdHJpbSwgMCwKIAkJCQkJCSZzYmktPm1pbmJsa3NfdHJp bSk7CmRpZmYgLS1naXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmlu ZGV4IGZlYzE5NGE2NjZmNGIuLjUyYjczZjU1OGZjYjEgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9p b2N0bC5jCisrKyBiL2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDU5LDcgKzEwNTksNyBAQCBzdGF0 aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCBfX3Vz ZXIgKmFyZ3ApCiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJN OwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhuaWxmcy0+bnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChj b3B5X2Zyb21fdXNlcigmcmFuZ2UsIGFyZ3AsIHNpemVvZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEv ZnMvbnRmczMvZmlsZS5jIGIvZnMvbnRmczMvZmlsZS5jCmluZGV4IDc4N2I1M2I5ODRlZTEuLmU3 NjMyMzYxNjkzMzEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9m aWxlLmMKQEAgLTI4LDcgKzI4LDcgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1 Y3QgbnRmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShD QVBfU1lTX0FETUlOKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2Nh cmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoc2JpLT5zYi0+c19iZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJdXNlcl9yYW5nZSA9IChzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlciAqKWFyZzsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9mcy9udGZz My9zdXBlci5jCmluZGV4IGNkMzBlODFhYmJjZTAuLmM3MzQwODViY2NlNGEgMTAwNjQ0Ci0tLSBh L2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtOTEzLDcgKzkxMyw3 IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0 cnVjdCBmc19jb250ZXh0ICpmYykKIAl9CiAKIAlycSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwot CWlmIChibGtfcXVldWVfZGlzY2FyZChycSkgJiYgcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5KSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBycS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gcnEt PmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlf bWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwpkaWZm IC0tZ2l0IGEvZnMvb2NmczIvaW9jdGwuYyBiL2ZzL29jZnMyL2lvY3RsLmMKaW5kZXggZjU5NDYx ZDg1ZGE0NS4uOWI3OGVmMTAzYWRhNiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvaW9jdGwuYworKysg Yi9mcy9vY2ZzMi9pb2N0bC5jCkBAIC05MTAsNyArOTEwLDcgQEAgbG9uZyBvY2ZzMl9pb2N0bChz dHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJ CWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJCXJldHVybiAtRVBFUk07CiAKLQkJaWYg KCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMo c2ItPnNfYmRldikpCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkJaWYgKGNvcHlfZnJvbV91 c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZz X2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmluZGV4IDAxOTFkZThjZTljZWQuLmE0 ZTY2MDlkNjE2YjcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCisrKyBiL2ZzL3hm cy94ZnNfZGlzY2FyZC5jCkBAIC0xNjIsNyArMTYyLDcgQEAgeGZzX2lvY190cmltKAogCiAJaWYg KCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJNOwotCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMobXAtPm1fZGRl dl90YXJncC0+YnRfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCS8qCmRpZmYgLS1n aXQgYS9mcy94ZnMveGZzX3N1cGVyLmMgYi9mcy94ZnMveGZzX3N1cGVyLmMKaW5kZXggNTRiZTlk NjQwOTNlZC4uYTI3NmI4MTExZjYzNiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19zdXBlci5jCisr KyBiL2ZzL3hmcy94ZnNfc3VwZXIuYwpAQCAtMTYwOCwxNCArMTYwOCwxMCBAQCB4ZnNfZnNfZmls bF9zdXBlcigKIAkJCWdvdG8gb3V0X2ZpbGVzdHJlYW1fdW5tb3VudDsKIAl9CiAKLQlpZiAoeGZz X2hhc19kaXNjYXJkKG1wKSkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0 X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKLQkJ CXhmc193YXJuKG1wLCAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0J CQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwotCQkJbXAtPm1fZmVh dHVyZXMgJj0gflhGU19GRUFUX0RJU0NBUkQ7Ci0JCX0KKwlpZiAoeGZzX2hhc19kaXNjYXJkKG1w KSAmJiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CisJCXhmc193YXJu KG1wLAorCSJtb3VudGluZyB3aXRoIFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2Ug ZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7CisJCW1wLT5tX2ZlYXR1cmVzICY9IH5YRlNfRkVB VF9ESVNDQVJEOwogCX0KIAogCWlmICh4ZnNfaGFzX3JlZmxpbmsobXApKSB7CmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaAppbmRleCBj ZTE2MjQ3ZDNhZmFiLi43NjdhYjIyZTEwNTJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Js a2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKQEAgLTU0MCw3ICs1NDAsNiBAQCBz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSB7CiAjZGVmaW5lIFFVRVVFX0ZMQUdfTk9OUk9UCTYJLyogbm9u LXJvdGF0aW9uYWwgZGV2aWNlIChTU0QpICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdfVklSVAkJUVVF VUVfRkxBR19OT05ST1QgLyogcGFyYXZpcnQgZGV2aWNlICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdf SU9fU1RBVAk3CS8qIGRvIGRpc2svcGFydGl0aW9ucyBJTyBhY2NvdW50aW5nICovCi0jZGVmaW5l IFFVRVVFX0ZMQUdfRElTQ0FSRAk4CS8qIHN1cHBvcnRzIERJU0NBUkQgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19OT1hNRVJHRVMJOQkvKiBObyBleHRlbmRlZCBtZXJnZXMgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19BRERfUkFORE9NCTEwCS8qIENvbnRyaWJ1dGVzIHRvIHJhbmRvbSBwb29sICovCiAj ZGVmaW5lIFFVRVVFX0ZMQUdfU0VDRVJBU0UJMTEJLyogc3VwcG9ydHMgc2VjdXJlIGVyYXNlICov CkBAIC01ODIsNyArNTgxLDYgQEAgYm9vbCBibGtfcXVldWVfZmxhZ190ZXN0X2FuZF9zZXQodW5z aWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTsKIAl0ZXN0X2JpdChRVUVV RV9GTEFHX1NUQUJMRV9XUklURVMsICYocSktPnF1ZXVlX2ZsYWdzKQogI2RlZmluZSBibGtfcXVl dWVfaW9fc3RhdChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0lPX1NUQVQsICYocSktPnF1ZXVlX2Zs YWdzKQogI2RlZmluZSBibGtfcXVldWVfYWRkX3JhbmRvbShxKQl0ZXN0X2JpdChRVUVVRV9GTEFH X0FERF9SQU5ET00sICYocSktPnF1ZXVlX2ZsYWdzKQotI2RlZmluZSBibGtfcXVldWVfZGlzY2Fy ZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0RJU0NBUkQsICYocSktPnF1ZXVlX2ZsYWdzKQogI2Rl ZmluZSBibGtfcXVldWVfem9uZV9yZXNldGFsbChxKQlcCiAJdGVzdF9iaXQoUVVFVUVfRkxBR19a T05FX1JFU0VUQUxMLCAmKHEpLT5xdWV1ZV9mbGFncykKICNkZWZpbmUgYmxrX3F1ZXVlX3NlY3Vy ZV9lcmFzZShxKSBcCmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuYwpp bmRleCA0MDY5ZjE3YTgyYzhlLi41ZDljZWRmOWU3Yjg0IDEwMDY0NAotLS0gYS9tbS9zd2FwZmls ZS5jCisrKyBiL21tL3N3YXBmaWxlLmMKQEAgLTI5NTcsMjAgKzI5NTcsNiBAQCBzdGF0aWMgaW50 IHNldHVwX3N3YXBfbWFwX2FuZF9leHRlbnRzKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpwLAog CXJldHVybiBucl9leHRlbnRzOwogfQogCi0vKgotICogSGVscGVyIHRvIHN5c19zd2Fwb24gZGV0 ZXJtaW5pbmcgaWYgYSBnaXZlbiBzd2FwCi0gKiBiYWNraW5nIGRldmljZSBxdWV1ZSBzdXBwb3J0 cyBESVNDQVJEIG9wZXJhdGlvbnMuCi0gKi8KLXN0YXRpYyBib29sIHN3YXBfZGlzY2FyZGFibGUo c3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpKQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx ID0gYmRldl9nZXRfcXVldWUoc2ktPmJkZXYpOwotCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChx KSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIHRydWU7Ci19Ci0KIFNZU0NBTExfREVGSU5F Mihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxh Z3MpCiB7CiAJc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnA7CkBAIC0zMTMyLDcgKzMxMTgsOCBA QCBTWVNDQUxMX0RFRklORTIoc3dhcG9uLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzcGVjaWFsZmls ZSwgaW50LCBzd2FwX2ZsYWdzKQogCQkJCQkgc2l6ZW9mKGxvbmcpLAogCQkJCQkgR0ZQX0tFUk5F TCk7CiAKLQlpZiAocC0+YmRldiAmJiAoc3dhcF9mbGFncyAmIFNXQVBfRkxBR19ESVNDQVJEKSAm JiBzd2FwX2Rpc2NhcmRhYmxlKHApKSB7CisJaWYgKChzd2FwX2ZsYWdzICYgU1dBUF9GTEFHX0RJ U0NBUkQpICYmCisJICAgIHAtPmJkZXYgJiYgYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHAtPmJk ZXYpKSB7CiAJCS8qCiAJCSAqIFdoZW4gZGlzY2FyZCBpcyBlbmFibGVkIGZvciBzd2FwIHdpdGgg bm8gcGFydGljdWxhcgogCQkgKiBwb2xpY3kgZmxhZ2dlZCwgd2Ugc2V0IGFsbCBzd2FwIGRpc2Nh cmQgZmxhZ3MgaGVyZSBpbgotLSAKMi4zMC4yCgotLQpkbS1kZXZlbCBtYWlsaW5nIGxpc3QKZG0t ZGV2ZWxAcmVkaGF0LmNvbQpodHRwczovL2xpc3RtYW4ucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3Rp bmZvL2RtLWRldmVsCg== 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5BCF7C433F5 for ; Fri, 15 Apr 2022 05:03:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=0MevOBUsQ5n0ca+QGlEP3rvDYSHdRXNfb5hgKIeqvRI=; b=MdAPcJaOhI90HU 3HWOJSVCoMLWGCKZNzwecL28qx8yNGVrBUEfz8ZswbBL4ja8NN038jEWdrST7H/rgzEEgyr3lziOC pW+JKDyQu6iLVMuPDW5i2YXt+K9e/iHS0+BWXS+tM9ogNkQok6t+aCM8Yz2SKnkpreZUnwfq2EkCH BhxwJzggawvEq1GQ1lDndbqZkhOwSGqXkdBQshM6fn0Yj1bsYyJyP+9w4zgyZfya5GcIfsh6UOIte b3jfQIQGP8QStPYVJqp4a4124JfDqIZAqIMO5KF7wfDrq5FCvDVoyAN/tSlyeNJgMtw94+5XLTdKy jkrWsTkkPJqPhXqE/oiw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfE6b-008WjY-7w; Fri, 15 Apr 2022 05:02:49 +0000 Received: from [2a02:1205:504b:4280:f5dd:42a4:896c:d877] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfDyJ-008PkB-3y; Fri, 15 Apr 2022 04:54:15 +0000 From: Christoph Hellwig To: Jens Axboe Cc: dm-devel@redhat.com, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-um@lists.infradead.org, linux-block@vger.kernel.org, drbd-dev@lists.linbit.com, nbd@other.debian.org, ceph-devel@vger.kernel.org, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-bcache@vger.kernel.org, linux-raid@vger.kernel.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, jfs-discussion@lists.sourceforge.net, linux-nilfs@vger.kernel.org, ntfs3@lists.linux.dev, ocfs2-devel@oss.oracle.com, linux-mm@kvack.org, "Martin K . Petersen" , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , =?UTF-8?q?Jan=20H=C3=B6ppner?= , Coly Li , David Sterba Subject: [PATCH 24/27] block: remove QUEUE_FLAG_DISCARD Date: Fri, 15 Apr 2022 06:52:55 +0200 Message-Id: <20220415045258.199825-25-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220415045258.199825-1-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> MIME-Version: 1.0 X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SnVzdCB1c2UgYSBub24temVybyBtYXhfZGlzY2FyZF9zZWN0b3JzIGFzIGFuIGluZGljYXRvciBm b3IgZGlzY2FyZApzdXBwb3J0LCBzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBmb3Igd3JpdGUgemVy b2VzLgoKVGhlIG9ubHkgcGxhY2VzIHdoZXJlIG5lZWRzIHNwZWNpYWwgYXR0ZW50aW9uIGlzIHRo ZSBSQUlENSBkcml2ZXIsCndoaWNoIG11c3QgY2xlYXIgZGlzY2FyZCBzdXBwb3J0IGZvciBzZWN1 cml0eSByZWFzb25zIGJ5IGRlZmF1bHQsCmV2ZW4gaWYgdGhlIGRlZmF1bHQgc3RhY2tpbmcgcnVs ZXMgd291bGQgYWxsb3cgZm9yIGl0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhlbGx3aWcg PGhjaEBsc3QuZGU+ClJldmlld2VkLWJ5OiBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRl cnNlbkBvcmFjbGUuY29tPgpBY2tlZC1ieTogQ2hyaXN0b3BoIELDtmhtd2FsZGVyIDxjaHJpc3Rv cGguYm9laG13YWxkZXJAbGluYml0LmNvbT4gW2RyYmRdCkFja2VkLWJ5OiBKYW4gSMO2cHBuZXIg PGhvZXBwbmVyQGxpbnV4LmlibS5jb20+IFtzMzkwXQpBY2tlZC1ieTogQ29seSBMaSA8Y29seWxp QHN1c2UuZGU+IFtiY2FjaGVdCkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5j b20+IFtidHJmc10KLS0tCiBhcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYyAgICAgICAgICB8ICAy IC0tCiBibG9jay9ibGstY29yZS5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9i bGstbGliLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBibG9jay9ibGstbXEtZGVidWdm cy5jICAgICAgICAgICAgICB8ICAxIC0KIGJsb2NrL2lvY3RsLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMgICAgICB8ICAyICst CiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8IDE5ICsrLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgIHwgIDMgKy0tCiBkcml2 ZXJzL2Jsb2NrL2xvb3AuYyAgICAgICAgICAgICAgICB8IDExICsrKy0tLS0tLS0tCiBkcml2ZXJz L2Jsb2NrL25iZC5jICAgICAgICAgICAgICAgICB8ICA1ICstLS0tCiBkcml2ZXJzL2Jsb2NrL251 bGxfYmxrL21haW4uYyAgICAgICB8ICAxIC0KIGRyaXZlcnMvYmxvY2svcmJkLmMgICAgICAgICAg ICAgICAgIHwgIDEgLQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgICAgICAgfCAgMiAt LQogZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oICAgfCAgMyAtLS0KIGRyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jICAgICAgICAgIHwgIDIgLS0KIGRyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2sveGVuYnVzLmMgIHwgIDIgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAg ICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyAgICAgICB8ICAxIC0K IGRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYyAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9t ZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvYmNhY2hlL3N5 c2ZzLmMgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMgICAg ICAgIHwgIDkgKy0tLS0tLS0tCiBkcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jICAgICAgICB8 ICA5ICstLS0tLS0tLQogZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMgICAgICAgICAgfCAgMyAr LS0KIGRyaXZlcnMvbWQvZG0tcmFpZC5jICAgICAgICAgICAgICAgIHwgIDkgKystLS0tLS0tCiBk cml2ZXJzL21kL2RtLXRhYmxlLmMgICAgICAgICAgICAgICB8ICA5ICsrLS0tLS0tLQogZHJpdmVy cy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgfCAxMSArLS0tLS0tLS0tLQogZHJpdmVycy9t ZC9kbS5jICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvbWQvbWQtbGluZWFy LmMgICAgICAgICAgICAgIHwgMTEgKy0tLS0tLS0tLS0KIGRyaXZlcnMvbWQvcmFpZDAuYyAgICAg ICAgICAgICAgICAgIHwgIDcgLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkMS5jICAgICAgICAgICAg ICAgICAgfCAxNiArLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQxMC5jICAgICAgICAg ICAgICAgICB8IDE4ICsrLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5j ICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9yYWlkNS5jICAgICAgICAgICAgICAgICAg fCAxMiArKysrLS0tLS0tLS0KIGRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyAgICAgICAgICAgIHwg IDEgLQogZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYyAgICAgICAgICAgfCAgMSAtCiBkcml2ZXJz L252bWUvaG9zdC9jb3JlLmMgICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvczM5MC9ibG9j ay9kYXNkX2ZiYS5jICAgICAgIHwgIDEgLQogZHJpdmVycy9zY3NpL3NkLmMgICAgICAgICAgICAg ICAgICAgfCAgMiAtLQogZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMiAr LQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyAgICAgICAgICAgICAgfCAgNCArKy0tCiBmcy9idHJm cy9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9maWxlLmMgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leGZhdC9zdXBlci5jICAgICAgICAgICAgICAg ICAgICB8IDEwICsrKy0tLS0tLS0KIGZzL2V4dDQvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAg IHwgMTAgKysrLS0tLS0tLQogZnMvZXh0NC9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgfCAx MCArKystLS0tLS0tCiBmcy9mMmZzL2YyZnMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZmF0L2lu b2RlLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tLS0tCiBmcy9nZnMyL3JncnAu YyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9qYmQyL2pvdXJuYWwuYyAgICAgICAg ICAgICAgICAgICB8ICA3ICsrLS0tLS0KIGZzL2pmcy9pb2N0bC5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGZzL2pmcy9zdXBlci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDggKyst LS0tLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250 ZnMzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250ZnMzL3N1cGVyLmMg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL29jZnMyL2lvY3RsLmMgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGZzL3hmcy94ZnNfc3VwZXIuYyAgICAgICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0t CiBpbmNsdWRlL2xpbnV4L2Jsa2Rldi5oICAgICAgICAgICAgICB8ICAyIC0tCiBtbS9zd2FwZmls ZS5jICAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrLS0tLS0tLS0tLS0tLS0tCiA2MSBmaWxl cyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAyNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC91bS9kcml2ZXJzL3ViZF9rZXJuLmMgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4u YwppbmRleCBiMDMyNjlmYWVmNzE0Li4wODVmZmRmOThlNTdlIDEwMDY0NAotLS0gYS9hcmNoL3Vt L2RyaXZlcnMvdWJkX2tlcm4uYworKysgYi9hcmNoL3VtL2RyaXZlcnMvdWJkX2tlcm4uYwpAQCAt NDgzLDcgKzQ4Myw2IEBAIHN0YXRpYyB2b2lkIHViZF9oYW5kbGVyKHZvaWQpCiAJCQlpZiAoKGlv X3JlcS0+ZXJyb3IgPT0gQkxLX1NUU19OT1RTVVBQKSAmJiAocmVxX29wKGlvX3JlcS0+cmVxKSA9 PSBSRVFfT1BfRElTQ0FSRCkpIHsKIAkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhp b19yZXEtPnJlcS0+cSwgMCk7CiAJCQkJYmxrX3F1ZXVlX21heF93cml0ZV96ZXJvZXNfc2VjdG9y cyhpb19yZXEtPnJlcS0+cSwgMCk7Ci0JCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxB R19ESVNDQVJELCBpb19yZXEtPnJlcS0+cSk7CiAJCQl9CiAJCQlibGtfbXFfZW5kX3JlcXVlc3Qo aW9fcmVxLT5yZXEsIGlvX3JlcS0+ZXJyb3IpOwogCQkJa2ZyZWUoaW9fcmVxKTsKQEAgLTgwMyw3 ICs4MDIsNiBAQCBzdGF0aWMgaW50IHViZF9vcGVuX2RldihzdHJ1Y3QgdWJkICp1YmRfZGV2KQog CQl1YmRfZGV2LT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gU0VDVE9SX1NJWkU7 CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHViZF9kZXYtPnF1ZXVlLCBVQkRfTUFY X1JFUVVFU1QpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHViZF9kZXYt PnF1ZXVlLCBVQkRfTUFYX1JFUVVFU1QpOwotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxB R19ESVNDQVJELCB1YmRfZGV2LT5xdWV1ZSk7CiAJfQogCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX05PTlJPVCwgdWJkX2Rldi0+cXVldWUpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEv YmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggOTM3YmI2Yjg2MzMxNy4u YjVjM2E4MDQ5MTM0YyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLWNvcmUuYworKysgYi9ibG9jay9i bGstY29yZS5jCkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBzdWJtaXRfYmlvX25vYWNjdChzdHJ1 Y3QgYmlvICpiaW8pCiAKIAlzd2l0Y2ggKGJpb19vcChiaW8pKSB7CiAJY2FzZSBSRVFfT1BfRElT Q0FSRDoKLQkJaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikpCiAJCQlnb3RvIG5vdF9zdXBwb3J0ZWQ7CiAJCWJyZWFrOwogCWNh c2UgUkVRX09QX1NFQ1VSRV9FUkFTRToKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1saWIuYyBiL2Js b2NrL2Jsay1saWIuYwppbmRleCAyYWUzMmE3MjI4NTFjLi44YjRiNjZkM2E5YmZjIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbGliLmMKKysrIGIvYmxvY2svYmxrLWxpYi5jCkBAIC01Myw3ICs1Myw3 IEBAIGludCBfX2Jsa2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYs IHNlY3Rvcl90IHNlY3RvciwKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJb3AgPSBSRVFfT1Bf U0VDVVJFX0VSQVNFOwogCX0gZWxzZSB7Ci0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJ CWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQogCQkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCQlvcCA9IFJFUV9PUF9ESVNDQVJEOwogCX0KZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1t cS1kZWJ1Z2ZzLmMgYi9ibG9jay9ibGstbXEtZGVidWdmcy5jCmluZGV4IGFhMDM0OWU5ZjA4M2Iu LmZkMTExYzUwMDEyNTYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKKysrIGIv YmxvY2svYmxrLW1xLWRlYnVnZnMuYwpAQCAtMTEzLDcgKzExMyw2IEBAIHN0YXRpYyBjb25zdCBj aGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7CiAJUVVFVUVfRkxBR19OQU1FKEZB SUxfSU8pLAogCVFVRVVFX0ZMQUdfTkFNRShOT05ST1QpLAogCVFVRVVFX0ZMQUdfTkFNRShJT19T VEFUKSwKLQlRVUVVRV9GTEFHX05BTUUoRElTQ0FSRCksCiAJUVVFVUVfRkxBR19OQU1FKE5PWE1F UkdFUyksCiAJUVVFVUVfRkxBR19OQU1FKEFERF9SQU5ET00pLAogCVFVRVVFX0ZMQUdfTkFNRShT RUNFUkFTRSksCmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuYwppbmRl eCBhZDM3NzFiMjY4YjgxLi5jMmNkM2JhNTI5MGNlIDEwMDY0NAotLS0gYS9ibG9jay9pb2N0bC5j CisrKyBiL2Jsb2NrL2lvY3RsLmMKQEAgLTg3LDE0ICs4NywxMyBAQCBzdGF0aWMgaW50IGJsa19p b2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwKIHsK IAl1aW50NjRfdCByYW5nZVsyXTsKIAl1aW50NjRfdCBzdGFydCwgbGVuOwotCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoYmRldik7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGJkZXYtPmJkX2lub2RlOwogCWludCBlcnI7CiAKIAlpZiAoIShtb2RlICYgRk1PREVfV1JJ VEUpKQogCQlyZXR1cm4gLUVCQURGOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlp ZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKHJhbmdlLCAodm9pZCBfX3VzZXIgKilhcmcsIHNpemVv ZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCmluZGV4IDdiNTAxYzhkNTk5MjguLjkxMjU2 MGY2MTFjMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYworKysg Yi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKQEAgLTk0Miw3ICs5NDIsNyBAQCBpbnQg ZHJiZF9zZW5kX3NpemVzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgaW50 IHRyaWdnZXJfcmVwbHksIGVudQogCQkJY3B1X3RvX2JlMzIoYmRldl9hbGlnbm1lbnRfb2Zmc2V0 KGJkZXYpKTsKIAkJcC0+cWxpbS0+aW9fbWluID0gY3B1X3RvX2JlMzIoYmRldl9pb19taW4oYmRl dikpOwogCQlwLT5xbGltLT5pb19vcHQgPSBjcHVfdG9fYmUzMihiZGV2X2lvX29wdChiZGV2KSk7 Ci0JCXAtPnFsaW0tPmRpc2NhcmRfZW5hYmxlZCA9IGJsa19xdWV1ZV9kaXNjYXJkKHEpOworCQlw LT5xbGltLT5kaXNjYXJkX2VuYWJsZWQgPSAhIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2 KTsKIAkJcHV0X2xkZXYoZGV2aWNlKTsKIAl9IGVsc2UgewogCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGRldmljZS0+cnFfcXVldWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQv ZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCBhMGEwNmUyMzhl OTE3Li4wNjc4Y2ViNTA1Nzk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9u bC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTEyMTAsNyArMTIxMCw3 IEBAIHN0YXRpYyB2b2lkIGRlY2lkZV9vbl9kaXNjYXJkX3N1cHBvcnQoc3RydWN0IGRyYmRfZGV2 aWNlICpkZXZpY2UsCiAJCWZpcnN0X3BlZXJfZGV2aWNlKGRldmljZSktPmNvbm5lY3Rpb247CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBkZXZpY2UtPnJxX3F1ZXVlOwogCi0JaWYgKGJkZXYg JiYgIWJsa19xdWV1ZV9kaXNjYXJkKGJkZXYtPmJhY2tpbmdfYmRldi0+YmRfZGlzay0+cXVldWUp KQorCWlmIChiZGV2ICYmICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldi0+YmFja2luZ19i ZGV2KSkKIAkJZ290byBub3Rfc3VwcG9ydGVkOwogCiAJaWYgKGNvbm5lY3Rpb24tPmNzdGF0ZSA+ PSBDX0NPTk5FQ1RFRCAmJgpAQCAtMTIzMCwzMCArMTIzMCwxNiBAQCBzdGF0aWMgdm9pZCBkZWNp ZGVfb25fZGlzY2FyZF9zdXBwb3J0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCSAqLwog CWJsa19xdWV1ZV9kaXNjYXJkX2dyYW51bGFyaXR5KHEsIDUxMik7CiAJcS0+bGltaXRzLm1heF9k aXNjYXJkX3NlY3RvcnMgPSBkcmJkX21heF9kaXNjYXJkX3NlY3RvcnMoY29ubmVjdGlvbik7Ci0J YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJcS0+bGltaXRzLm1h eF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9CiAJCWRyYmRfbWF4X2Rpc2NhcmRfc2VjdG9ycyhjb25u ZWN0aW9uKTsKIAlyZXR1cm47CiAKIG5vdF9zdXBwb3J0ZWQ6Ci0JYmxrX3F1ZXVlX2ZsYWdfY2xl YXIoUVVFVUVfRkxBR19ESVNDQVJELCBxKTsKIAlibGtfcXVldWVfZGlzY2FyZF9ncmFudWxhcml0 eShxLCAwKTsKIAlxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJcS0+bGltaXRz Lm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9IDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZpeHVwX2Rp c2NhcmRfaWZfbm90X3N1cHBvcnRlZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKLXsKLQkvKiBU byBhdm9pZCBjb25mdXNpb24sIGlmIHRoaXMgcXVldWUgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJk LCBjbGVhcgotCSAqIG1heF9kaXNjYXJkX3NlY3RvcnMsIHdoaWNoIGlzIHdoYXQgbHNibGsgLUQg cmVwb3J0cyB0byB0aGUgdXNlci4KLQkgKiBPbGRlciBrZXJuZWxzIGdvdCB0aGlzIHdyb25nIGlu ICJzdGFjayBsaW1pdHMiLgotCSAqICovCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkgewot CQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxLCAwKTsKLQkJYmxrX3F1ZXVlX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkocSwgMCk7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBmaXh1cF93cml0ZV96 ZXJvZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx KQogewogCS8qIEZpeHVwIG1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyBhZnRlciBibGtfc3RhY2tf bGltaXRzKCk6CkBAIC0xMzAwLDcgKzEyODYsNiBAQCBzdGF0aWMgdm9pZCBkcmJkX3NldHVwX3F1 ZXVlX3BhcmFtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraQog CQlibGtfc3RhY2tfbGltaXRzKCZxLT5saW1pdHMsICZiLT5saW1pdHMsIDApOwogCQlkaXNrX3Vw ZGF0ZV9yZWFkYWhlYWQoZGV2aWNlLT52ZGlzayk7CiAJfQotCWZpeHVwX2Rpc2NhcmRfaWZfbm90 X3N1cHBvcnRlZChxKTsKIAlmaXh1cF93cml0ZV96ZXJvZXMoZGV2aWNlLCBxKTsKIH0KIApAQCAt MTQ0Nyw3ICsxNDMyLDcgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVjdCBk cmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19jb25m LT5hbF9leHRlbnRzID4gZHJiZF9hbF9leHRlbnRzX21heChuYmMpKQogCQlkaXNrX2NvbmYtPmFs X2V4dGVudHMgPSBkcmJkX2FsX2V4dGVudHNfbWF4KG5iYyk7CiAKLQlpZiAoIWJsa19xdWV1ZV9k aXNjYXJkKHEpKSB7CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpIHsKIAkJ aWYgKGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSkgewogCQkJZGlza19jb25mLT5y c19kaXNjYXJkX2dyYW51bGFyaXR5ID0gMDsgLyogZGlzYWJsZSBmZWF0dXJlICovCiAJCQlkcmJk X2luZm8oZGV2aWNlLCAicnNfZGlzY2FyZF9ncmFudWxhcml0eSBmZWF0dXJlIGRpc2FibGVkXG4i KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCmluZGV4IDBiNGM3ZGU0NjM5ODkuLjhhNGE0 N2RhNTZmZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMK KysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTU3NSwxMSArMTU3 NSwxMCBAQCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2Rl dmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCiBzdGF0aWMgYm9vbCBjYW5fZG9fcmVs aWFibGVfZGlzY2FyZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiB7Ci0Jc3RydWN0IHJl cXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShkZXZpY2UtPmxkZXYtPmJhY2tpbmdfYmRl dik7CiAJc3RydWN0IGRpc2tfY29uZiAqZGM7CiAJYm9vbCBjYW5fZG87CiAKLQlpZiAoIWJsa19x dWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+ bGRldi0+YmFja2luZ19iZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJcmN1X3JlYWRfbG9jaygp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3Au YwppbmRleCA4ZDgwMGQ0NmU0OTg1Li4wZTA2MWM5ODk2ZWZmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2Jsb2NrL2xvb3AuYworKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtMzE0LDE1ICszMTQs MTIgQEAgc3RhdGljIGludCBsb19mYWxsb2NhdGUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3Ry dWN0IHJlcXVlc3QgKnJxLCBsb2ZmX3QgcG9zLAogCiAJbW9kZSB8PSBGQUxMT0NfRkxfS0VFUF9T SVpFOwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChsby0+bG9fcXVldWUpKSB7Ci0JCXJldCA9 IC1FT1BOT1RTVVBQOwotCQlnb3RvIG91dDsKLQl9CisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMobG8tPmxvX2RldmljZSkpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCXJldCA9IGZp bGUtPmZfb3AtPmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsIGJsa19ycV9ieXRlcyhycSkpOwog CWlmICh1bmxpa2VseShyZXQgJiYgcmV0ICE9IC1FSU5WQUwgJiYgcmV0ICE9IC1FT1BOT1RTVVBQ KSkKLQkJcmV0ID0gLUVJTzsKLSBvdXQ6CisJCXJldHVybiAtRUlPOwogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTc4NywxMiArNzg0LDEwIEBAIHN0YXRpYyB2b2lkIGxvb3BfY29uZmlnX2Rpc2NhcmQo c3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBncmFudWxhcml0eTsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgbWF4X2Rp c2NhcmRfc2VjdG9ycyk7CiAJCWJsa19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwg bWF4X2Rpc2NhcmRfc2VjdG9ycyk7Ci0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJ U0NBUkQsIHEpOwogCX0gZWxzZSB7CiAJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0g MDsKIAkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMocSwgMCk7CiAJCWJsa19xdWV1ZV9t YXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgMCk7Ci0JCWJsa19xdWV1ZV9mbGFnX2NsZWFyKFFV RVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJfQogCXEtPmxpbWl0cy5kaXNjYXJkX2FsaWdubWVudCA9 IDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9u YmQuYwppbmRleCA1YTFmOTg0OTRkZGRmLi40NzI5YWVmOGM2NDYyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2Jsb2NrL25iZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTEyMzEsOCArMTIz MSw2IEBAIHN0YXRpYyB2b2lkIG5iZF9wYXJzZV9mbGFncyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJk KQogCQlzZXRfZGlza19ybyhuYmQtPmRpc2ssIHRydWUpOwogCWVsc2UKIAkJc2V0X2Rpc2tfcm8o bmJkLT5kaXNrLCBmYWxzZSk7Ci0JaWYgKGNvbmZpZy0+ZmxhZ3MgJiBOQkRfRkxBR19TRU5EX1RS SU0pCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG5iZC0+ZGlzay0+ cXVldWUpOwogCWlmIChjb25maWctPmZsYWdzICYgTkJEX0ZMQUdfU0VORF9GTFVTSCkgewogCQlp ZiAoY29uZmlnLT5mbGFncyAmIE5CRF9GTEFHX1NFTkRfRlVBKQogCQkJYmxrX3F1ZXVlX3dyaXRl X2NhY2hlKG5iZC0+ZGlzay0+cXVldWUsIHRydWUsIHRydWUpOwpAQCAtMTMxOSw4ICsxMzE3LDcg QEAgc3RhdGljIHZvaWQgbmJkX2NvbmZpZ19wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCkKIAkJ bmJkLT50YWdfc2V0LnRpbWVvdXQgPSAwOwogCQluYmQtPmRpc2stPnF1ZXVlLT5saW1pdHMuZGlz Y2FyZF9ncmFudWxhcml0eSA9IDA7CiAJCW5iZC0+ZGlzay0+cXVldWUtPmxpbWl0cy5kaXNjYXJk X2FsaWdubWVudCA9IDA7Ci0JCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5iZC0+ZGlz ay0+cXVldWUsIFVJTlRfTUFYKTsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19E SVNDQVJELCBuYmQtPmRpc2stPnF1ZXVlKTsKKwkJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3Rv cnMobmJkLT5kaXNrLT5xdWV1ZSwgMCk7CiAKIAkJbXV0ZXhfdW5sb2NrKCZuYmQtPmNvbmZpZ19s b2NrKTsKIAkJbmJkX3B1dChuYmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Js ay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCAwNWIxMTIwZTY2 MjM0Li5mNjQ5M2E5ZTg1ZWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21h aW4uYworKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtMTc2Nyw3ICsxNzY3 LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxi KQogCW51bGxiLT5xLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IG51bGxiLT5kZXYtPmJs b2Nrc2l6ZTsKIAludWxsYi0+cS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gbnVsbGItPmRl di0+YmxvY2tzaXplOwogCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG51bGxiLT5xLCBV SU5UX01BWCA+PiA5KTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBu dWxsYi0+cSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlv bnMgbnVsbF9iaW9fb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yYmQuYyBiL2Ry aXZlcnMvYmxvY2svcmJkLmMKaW5kZXggYjg0NDQzMmJhZDIwYi4uMmIyMWY3MTdjY2UxYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9yYmQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JiZC5jCkBA IC00OTQyLDcgKzQ5NDIsNiBAQCBzdGF0aWMgaW50IHJiZF9pbml0X2Rpc2soc3RydWN0IHJiZF9k ZXZpY2UgKnJiZF9kZXYpCiAJYmxrX3F1ZXVlX2lvX29wdChxLCByYmRfZGV2LT5vcHRzLT5hbGxv Y19zaXplKTsKIAogCWlmIChyYmRfZGV2LT5vcHRzLT50cmltKSB7Ci0JCWJsa19xdWV1ZV9mbGFn X3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwogCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA9IHJiZF9kZXYtPm9wdHMtPmFsbG9jX3NpemU7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQpOwogCQlibGtfcXVldWVf bWF4X3dyaXRlX3plcm9lc19zZWN0b3JzKHEsIG9ianNldF9ieXRlcyA+PiBTRUNUT1JfU0hJRlQp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtY2x0LmMgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwppbmRleCBiNjZlODg0MGI5NGI4Li5lZmE5OWEzODg0NTA3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1jbHQuYworKysgYi9kcml2ZXJzL2Js b2NrL3JuYmQvcm5iZC1jbHQuYwpAQCAtMTM2NCw4ICsxMzY0LDYgQEAgc3RhdGljIHZvaWQgc2V0 dXBfcmVxdWVzdF9xdWV1ZShzdHJ1Y3Qgcm5iZF9jbHRfZGV2ICpkZXYpCiAJYmxrX3F1ZXVlX21h eF9kaXNjYXJkX3NlY3RvcnMoZGV2LT5xdWV1ZSwgZGV2LT5tYXhfZGlzY2FyZF9zZWN0b3JzKTsK IAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eQk9IGRldi0+ZGlzY2FyZF9n cmFudWxhcml0eTsKIAlkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9hbGlnbm1lbnQJPSBkZXYt PmRpc2NhcmRfYWxpZ25tZW50OwotCWlmIChkZXYtPm1heF9kaXNjYXJkX3NlY3RvcnMpCi0JCWJs a19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIGRldi0+cXVldWUpOwogCWlmIChk ZXYtPnNlY3VyZV9kaXNjYXJkKQogCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19TRUNF UkFTRSwgZGV2LT5xdWV1ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJk LXNydi1kZXYuaCBiL2RyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi1kZXYuaAppbmRleCBmODJm YmI0YmJkYThlLi4xZjdlMWM4ZmQ0ZDliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JuYmQv cm5iZC1zcnYtZGV2LmgKKysrIGIvZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LWRldi5oCkBA IC00OSw5ICs0OSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJuYmRfZGV2X2dldF9zZWN1cmVfZGlz Y2FyZChjb25zdCBzdHJ1Y3Qgcm5iZF9kZXYgKmRldikKIAogc3RhdGljIGlubGluZSBpbnQgcm5i ZF9kZXZfZ2V0X21heF9kaXNjYXJkX3NlY3RzKGNvbnN0IHN0cnVjdCBybmJkX2RldiAqZGV2KQog ewotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGV2LT5iZGV2KSkpCi0J CXJldHVybiAwOwotCiAJcmV0dXJuIGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXYtPmJkZXYp OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMv YmxvY2svdmlydGlvX2Jsay5jCmluZGV4IGE4YmNmM2Y2NjRhZjEuLjZjY2YxNTI1M2RlZTEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCisrKyBiL2RyaXZlcnMvYmxvY2sv dmlydGlvX2Jsay5jCkBAIC04ODgsOCArODg4LDYgQEAgc3RhdGljIGludCB2aXJ0YmxrX3Byb2Jl KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQogCQkJdiA9IHNnX2VsZW1zOwogCQlibGtfcXVl dWVfbWF4X2Rpc2NhcmRfc2VnbWVudHMocSwKIAkJCQkJICAgICAgIG1pbih2LCBNQVhfRElTQ0FS RF9TRUdNRU5UUykpOwotCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IHEpOwogCX0KIAogCWlmICh2aXJ0aW9faGFzX2ZlYXR1cmUodmRldiwgVklSVElPX0JMS19GX1dS SVRFX1pFUk9FUykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVu YnVzLmMgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jCmluZGV4IDhiNjkxZmU1 MDQ3NWYuLjgzY2QwODA0MWU2YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Jh Y2sveGVuYnVzLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYwpAQCAt NTgzLDcgKzU4Myw3IEBAIHN0YXRpYyB2b2lkIHhlbl9ibGtia19kaXNjYXJkKHN0cnVjdCB4ZW5i dXNfdHJhbnNhY3Rpb24geGJ0LCBzdHJ1Y3QgYmFja2VuZF9pbmZvCiAJaWYgKCF4ZW5idXNfcmVh ZF91bnNpZ25lZChkZXYtPm5vZGVuYW1lLCAiZGlzY2FyZC1lbmFibGUiLCAxKSkKIAkJcmV0dXJu OwogCi0JaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhiZGV2KSkgewogCQllcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFt ZSwKIAkJCSJkaXNjYXJkLWdyYW51bGFyaXR5IiwgIiV1IiwKIAkJCXEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMg Yi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jCmluZGV4IDAwMzA1NmQ0ZjdmNWYuLmUxM2Ni NGQ0OGYxZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKKysrIGIv ZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwpAQCAtOTQ0LDcgKzk0NCw2IEBAIHN0YXRpYyB2 b2lkIGJsa2lmX3NldF9xdWV1ZV9saW1pdHMoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJ YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfVklSVCwgcnEpOwogCiAJaWYgKGluZm8tPmZl YXR1cmVfZGlzY2FyZCkgewotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCBycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHJxLCBnZXRfY2FwYWNpdHko Z2QpKTsKIAkJcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID0gaW5mby0+ZGlzY2FyZF9n cmFudWxhcml0eSA/OgogCQkJCQkJIGluZm8tPnBoeXNpY2FsX3NlY3Rvcl9zaXplOwpAQCAtMTYw Niw3ICsxNjA1LDcgQEAgc3RhdGljIGlycXJldHVybl90IGJsa2lmX2ludGVycnVwdChpbnQgaXJx LCB2b2lkICpkZXZfaWQpCiAJCQkJYmxraWZfcmVxKHJlcSktPmVycm9yID0gQkxLX1NUU19OT1RT VVBQOwogCQkJCWluZm8tPmZlYXR1cmVfZGlzY2FyZCA9IDA7CiAJCQkJaW5mby0+ZmVhdHVyZV9z ZWNkaXNjYXJkID0gMDsKLQkJCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NB UkQsIHJxKTsKKwkJCQlibGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhycSwgMCk7CiAJCQkJ YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19TRUNFUkFTRSwgcnEpOwogCQkJfQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGU5NDc0YjAyMDEyZGUuLjU5ZmY0NDRiZjZj NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCisrKyBiL2RyaXZl cnMvYmxvY2svenJhbS96cmFtX2Rydi5jCkBAIC0xOTUyLDcgKzE5NTIsNiBAQCBzdGF0aWMgaW50 IHpyYW1fYWRkKHZvaWQpCiAJYmxrX3F1ZXVlX2lvX29wdCh6cmFtLT5kaXNrLT5xdWV1ZSwgUEFH RV9TSVpFKTsKIAl6cmFtLT5kaXNrLT5xdWV1ZS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg PSBQQUdFX1NJWkU7CiAJYmxrX3F1ZXVlX21heF9kaXNjYXJkX3NlY3RvcnMoenJhbS0+ZGlzay0+ cXVldWUsIFVJTlRfTUFYKTsKLQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJE LCB6cmFtLT5kaXNrLT5xdWV1ZSk7CiAKIAkvKgogCSAqIHpyYW1fYmlvX2Rpc2NhcmQoKSB3aWxs IGNsZWFyIGFsbCBsb2dpY2FsIGJsb2NrcyBpZiBsb2dpY2FsIGJsb2NrCmRpZmYgLS1naXQgYS9k cml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMgYi9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMK aW5kZXggZmRkMDE5NGY4NGRkMC4uZTI3ZjY3ZjA2YTQyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9iY2FjaGUvcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwpAQCAt MTAwNSw3ICsxMDA1LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVkX2Rldl93cml0ZShzdHJ1Y3QgY2Fj aGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJCWJpb19nZXQocy0+aW9wLmJpbyk7CiAK IAkJaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEICYmCi0JCSAgICAhYmxrX3F1ZXVl X2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkJICAgICFiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoZGMtPmJkZXYpKQogCQkJZ290byBpbnNlcnRfZGF0YTsKIAogCQkvKiBJL08g cmVxdWVzdCBzZW50IHRvIGJhY2tpbmcgZGV2aWNlICovCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBz dGF0aWMgdm9pZCBkZXRhY2hlZF9kZXZfZG9fcmVxdWVzdChzdHJ1Y3QgYmNhY2hlX2RldmljZSAq ZCwgc3RydWN0IGJpbyAqYmlvLAogCWJpby0+YmlfcHJpdmF0ZSA9IGRkaXA7CiAKIAlpZiAoKGJp b19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEKSAmJgotCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQo YmRldl9nZXRfcXVldWUoZGMtPmJkZXYpKSkKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhkYy0+YmRldikpCiAJCWJpby0+YmlfZW5kX2lvKGJpbyk7CiAJZWxzZQogCQlzdWJtaXRfYmlv X25vYWNjdChiaW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyBiL2Ry aXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKaW5kZXggYmYzZGUxNDlkM2M5Zi4uMmY0OWUzMTE0MmY2 MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYworKysgYi9kcml2ZXJzL21k L2JjYWNoZS9zdXBlci5jCkBAIC05NzMsNyArOTczLDYgQEAgc3RhdGljIGludCBiY2FjaGVfZGV2 aWNlX2luaXQoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsIHVuc2lnbmVkIGludCBibG9ja19zaXpl LAogCiAJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfTk9OUk9ULCBkLT5kaXNrLT5xdWV1 ZSk7CiAJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19BRERfUkFORE9NLCBkLT5kaXNr LT5xdWV1ZSk7Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgZC0+ZGlz ay0+cXVldWUpOwogCiAJYmxrX3F1ZXVlX3dyaXRlX2NhY2hlKHEsIHRydWUsIHRydWUpOwogCkBA IC0yMzUwLDcgKzIzNDksNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2NhY2hlKHN0cnVjdCBjYWNo ZV9zYiAqc2IsIHN0cnVjdCBjYWNoZV9zYl9kaXNrICpzYl9kaXNrLAogCWNhLT5iZGV2LT5iZF9o b2xkZXIgPSBjYTsKIAljYS0+c2JfZGlzayA9IHNiX2Rpc2s7CiAKLQlpZiAoYmxrX3F1ZXVlX2Rp c2NhcmQoYmRldl9nZXRfcXVldWUoYmRldikpKQorCWlmIChiZGV2X21heF9kaXNjYXJkX3NlY3Rv cnMoKGJkZXYpKSkKIAkJY2EtPmRpc2NhcmQgPSBDQUNIRV9ESVNDQVJEKCZjYS0+c2IpOwogCiAJ cmV0ID0gY2FjaGVfYWxsb2MoY2EpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3lz ZnMuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3N5c2ZzLmMKaW5kZXggZDEwMjlkNzFmZjNiYy4uYzZm Njc3MDU5MjE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvc3lzZnMuYworKysgYi9k cml2ZXJzL21kL2JjYWNoZS9zeXNmcy5jCkBAIC0xMTUxLDcgKzExNTEsNyBAQCBTVE9SRShfX2Jj aF9jYWNoZSkKIAlpZiAoYXR0ciA9PSAmc3lzZnNfZGlzY2FyZCkgewogCQlib29sIHYgPSBzdHJ0 b3VsX29yX3JldHVybihidWYpOwogCi0JCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9x dWV1ZShjYS0+YmRldikpKQorCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGNhLT5iZGV2 KSkKIAkJCWNhLT5kaXNjYXJkID0gdjsKIAogCQlpZiAodiAhPSBDQUNIRV9ESVNDQVJEKCZjYS0+ c2IpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jIGIvZHJpdmVy cy9tZC9kbS1jYWNoZS10YXJnZXQuYwppbmRleCA3ODBhNjFiYzZjYzAzLi4yOGM1ZGU4ZWNhNGEw IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jCisrKyBiL2RyaXZlcnMv bWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTMzMjksMTMgKzMzMjksNiBAQCBzdGF0aWMgaW50IGNh Y2hlX2l0ZXJhdGVfZGV2aWNlcyhzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwKIAlyZXR1cm4gcjsKIH0K IAotc3RhdGljIGJvb2wgb3JpZ2luX2Rldl9zdXBwb3J0c19kaXNjYXJkKHN0cnVjdCBibG9ja19k ZXZpY2UgKm9yaWdpbl9iZGV2KQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUob3JpZ2luX2JkZXYpOwotCi0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKHEpOwot fQotCiAvKgogICogSWYgZGlzY2FyZF9wYXNzZG93biB3YXMgZW5hYmxlZCB2ZXJpZnkgdGhhdCB0 aGUgb3JpZ2luIGRldmljZQogICogc3VwcG9ydHMgZGlzY2FyZHMuICBEaXNhYmxlIGRpc2NhcmRf cGFzc2Rvd24gaWYgbm90LgpAQCAtMzM0OSw3ICszMzQyLDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs ZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBjYWNoZSAqY2FjaGUpCiAJaWYgKCFj YWNoZS0+ZmVhdHVyZXMuZGlzY2FyZF9wYXNzZG93bikKIAkJcmV0dXJuOwogCi0JaWYgKCFvcmln aW5fZGV2X3N1cHBvcnRzX2Rpc2NhcmQob3JpZ2luX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlz Y2FyZF9zZWN0b3JzKG9yaWdpbl9iZGV2KSkKIAkJcmVhc29uID0gImRpc2NhcmQgdW5zdXBwb3J0 ZWQiOwogCiAJZWxzZSBpZiAob3JpZ2luX2xpbWl0cy0+bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNh Y2hlLT5zZWN0b3JzX3Blcl9ibG9jaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY2xvbmUt dGFyZ2V0LmMgYi9kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jCmluZGV4IDEyODMxNmE3M2Qw MTYuLjgxMWIwYTUzNzlkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0 LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYwpAQCAtMjAxNiwxMyArMjAxNiw2 IEBAIHN0YXRpYyB2b2lkIGNsb25lX3Jlc3VtZShzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSkKIAlkb193 YWtlcigmY2xvbmUtPndha2VyLndvcmspOwogfQogCi1zdGF0aWMgYm9vbCBiZGV2X3N1cHBvcnRz X2Rpc2NhcmRzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCi17Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLQotCXJldHVybiAocSAmJiBibGtfcXVl dWVfZGlzY2FyZChxKSk7Ci19Ci0KIC8qCiAgKiBJZiBkaXNjYXJkX3Bhc3Nkb3duIHdhcyBlbmFi bGVkIHZlcmlmeSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBkZXZpY2Ugc3VwcG9ydHMKICAqIGRpc2Nh cmRzLiBEaXNhYmxlIGRpc2NhcmRfcGFzc2Rvd24gaWYgbm90LgpAQCAtMjAzNiw3ICsyMDI5LDcg QEAgc3RhdGljIHZvaWQgZGlzYWJsZV9wYXNzZG93bl9pZl9ub3Rfc3VwcG9ydGVkKHN0cnVjdCBj bG9uZSAqY2xvbmUpCiAJaWYgKCF0ZXN0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCAm Y2xvbmUtPmZsYWdzKSkKIAkJcmV0dXJuOwogCi0JaWYgKCFiZGV2X3N1cHBvcnRzX2Rpc2NhcmRz KGRlc3RfZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXN0X2RldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAllbHNlIGlmIChkZXN0X2xpbWl0cy0+ bWF4X2Rpc2NhcmRfc2VjdG9ycyA8IGNsb25lLT5yZWdpb25fc2l6ZSkKIAkJcmVhc29uID0gIm1h eCBkaXNjYXJkIHNlY3RvcnMgc21hbGxlciB0aGFuIGEgcmVnaW9uIjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKaW5k ZXggYzlkMDM2ZDZiYjJlZS4uZTE5NDIyNmM4OWU1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9k bS1sb2ctd3JpdGVzLmMKKysrIGIvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMKQEAgLTg2Niw5 ICs4NjYsOCBAQCBzdGF0aWMgaW50IGxvZ193cml0ZXNfbWVzc2FnZShzdHJ1Y3QgZG1fdGFyZ2V0 ICp0aSwgdW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YsCiBzdGF0aWMgdm9pZCBsb2dfd3JpdGVz X2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1p dHMpCiB7CiAJc3RydWN0IGxvZ193cml0ZXNfYyAqbGMgPSB0aS0+cHJpdmF0ZTsKLQlzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGxjLT5kZXYtPmJkZXYpOwogCi0JaWYg KCFxIHx8ICFibGtfcXVldWVfZGlzY2FyZChxKSkgeworCWlmICghYmRldl9tYXhfZGlzY2FyZF9z ZWN0b3JzKGxjLT5kZXYtPmJkZXYpKSB7CiAJCWxjLT5kZXZpY2Vfc3VwcG9ydHNfZGlzY2FyZCA9 IGZhbHNlOwogCQlsaW1pdHMtPmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSBsYy0+c2VjdG9yc2l6ZTsK IAkJbGltaXRzLT5tYXhfZGlzY2FyZF9zZWN0b3JzID0gKFVJTlRfTUFYID4+IFNFQ1RPUl9TSElG VCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJhaWQuYyBiL2RyaXZlcnMvbWQvZG0tcmFp ZC5jCmluZGV4IDJiMjY0MzVhNjk0NmUuLjk1MjZjY2JlZGFmYmEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvZG0tcmFpZC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmFpZC5jCkBAIC0yOTYzLDEzICsy OTYzLDggQEAgc3RhdGljIHZvaWQgY29uZmlndXJlX2Rpc2NhcmRfc3VwcG9ydChzdHJ1Y3QgcmFp ZF9zZXQgKnJzKQogCXJhaWQ0NTYgPSByc19pc19yYWlkNDU2KHJzKTsKIAogCWZvciAoaSA9IDA7 IGkgPCBycy0+cmFpZF9kaXNrczsgaSsrKSB7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOwot Ci0JCWlmICghcnMtPmRldltpXS5yZGV2LmJkZXYpCi0JCQljb250aW51ZTsKLQotCQlxID0gYmRl dl9nZXRfcXVldWUocnMtPmRldltpXS5yZGV2LmJkZXYpOwotCQlpZiAoIXEgfHwgIWJsa19xdWV1 ZV9kaXNjYXJkKHEpKQorCQlpZiAoIXJzLT5kZXZbaV0ucmRldi5iZGV2IHx8CisJCSAgICAhYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHJzLT5kZXZbaV0ucmRldi5iZGV2KSkKIAkJCXJldHVybjsK IAogCQlpZiAocmFpZDQ1NikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS10YWJsZS5jIGIv ZHJpdmVycy9tZC9kbS10YWJsZS5jCmluZGV4IGQ0NjgzOWZhYTBjYTUuLjBkZmY2OTA3ZmQwMGQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tdGFibGUuYworKysgYi9kcml2ZXJzL21kL2RtLXRh YmxlLmMKQEAgLTE4ODgsOSArMTg4OCw3IEBAIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRz X25vd2FpdChzdHJ1Y3QgZG1fdGFibGUgKnQpCiBzdGF0aWMgaW50IGRldmljZV9ub3RfZGlzY2Fy ZF9jYXBhYmxlKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgZG1fZGV2ICpkZXYsCiAJCQkJ ICAgICAgc2VjdG9yX3Qgc3RhcnQsIHNlY3Rvcl90IGxlbiwgdm9pZCAqZGF0YSkKIHsKLQlzdHJ1 Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGRldi0+YmRldik7Ci0KLQlyZXR1 cm4gIWJsa19xdWV1ZV9kaXNjYXJkKHEpOworCXJldHVybiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0 b3JzKGRldi0+YmRldik7CiB9CiAKIHN0YXRpYyBib29sIGRtX3RhYmxlX3N1cHBvcnRzX2Rpc2Nh cmRzKHN0cnVjdCBkbV90YWJsZSAqdCkKQEAgLTE5NzAsMTUgKzE5NjgsMTIgQEAgaW50IGRtX3Rh YmxlX3NldF9yZXN0cmljdGlvbnMoc3RydWN0IGRtX3RhYmxlICp0LCBzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwKIAkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19OT1dBSVQsIHEpOwog CiAJaWYgKCFkbV90YWJsZV9zdXBwb3J0c19kaXNjYXJkcyh0KSkgewotCQlibGtfcXVldWVfZmxh Z19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOwotCQkvKiBNdXN0IGFsc28gY2xlYXIgZGlz Y2FyZCBsaW1pdHMuLi4gKi8KIAkJcS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwog CQlxLT5saW1pdHMubWF4X2h3X2Rpc2NhcmRfc2VjdG9ycyA9IDA7CiAJCXEtPmxpbWl0cy5kaXNj YXJkX2dyYW51bGFyaXR5ID0gMDsKIAkJcS0+bGltaXRzLmRpc2NhcmRfYWxpZ25tZW50ID0gMDsK IAkJcS0+bGltaXRzLmRpc2NhcmRfbWlzYWxpZ25lZCA9IDA7Ci0JfSBlbHNlCi0JCWJsa19xdWV1 ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHEpOworCX0KIAogCWlmIChkbV90YWJsZV9z dXBwb3J0c19zZWN1cmVfZXJhc2UodCkpCiAJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFH X1NFQ0VSQVNFLCBxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVy cy9tZC9kbS10aGluLmMKaW5kZXggNGQyNWQwZTI3MDMxMy4uZWRlZDRiY2M0NTQ1ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMKKysrIGIvZHJpdmVycy9tZC9kbS10aGluLmMKQEAg LTI4MDIsMTMgKzI4MDIsNiBAQCBzdGF0aWMgdm9pZCByZXF1ZXVlX2Jpb3Moc3RydWN0IHBvb2wg KnBvb2wpCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqIEJpbmRpbmcgb2YgY29udHJvbCB0YXJnZXRzIHRvIGEgcG9v bCBvYmplY3QKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwotc3RhdGljIGJvb2wgZGF0YV9kZXZfc3VwcG9ydHNfZGlzY2Fy ZChzdHJ1Y3QgcG9vbF9jICpwdCkKLXsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKHB0LT5kYXRhX2Rldi0+YmRldik7Ci0KLQlyZXR1cm4gYmxrX3F1ZXVlX2Rpc2Nh cmQocSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzX2ZhY3RvcihzZWN0b3JfdCBibG9ja19zaXplLCB1 aW50MzJfdCBuKQogewogCXJldHVybiAhc2VjdG9yX2RpdihibG9ja19zaXplLCBuKTsKQEAgLTI4 MjgsNyArMjgyMSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcGFzc2Rvd25faWZfbm90X3N1cHBv cnRlZChzdHJ1Y3QgcG9vbF9jICpwdCkKIAlpZiAoIXB0LT5hZGp1c3RlZF9wZi5kaXNjYXJkX3Bh c3Nkb3duKQogCQlyZXR1cm47CiAKLQlpZiAoIWRhdGFfZGV2X3N1cHBvcnRzX2Rpc2NhcmQocHQp KQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHB0LT5kYXRhX2Rldi0+YmRldikpCiAJ CXJlYXNvbiA9ICJkaXNjYXJkIHVuc3VwcG9ydGVkIjsKIAogCWVsc2UgaWYgKGRhdGFfbGltaXRz LT5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgcG9vbC0+c2VjdG9yc19wZXJfYmxvY2spCkBAIC00MDU3 LDggKzQwNTAsNiBAQCBzdGF0aWMgdm9pZCBwb29sX2lvX2hpbnRzKHN0cnVjdCBkbV90YXJnZXQg KnRpLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW1pdHMpCiAJCS8qCiAJCSAqIE11c3QgZXhwbGlj aXRseSBkaXNhbGxvdyBzdGFja2luZyBkaXNjYXJkIGxpbWl0cyBvdGhlcndpc2UgdGhlCiAJCSAq IGJsb2NrIGxheWVyIHdpbGwgc3RhY2sgdGhlbSBpZiBwb29sJ3MgZGF0YSBkZXZpY2UgaGFzIHN1 cHBvcnQuCi0JCSAqIFFVRVVFX0ZMQUdfRElTQ0FSRCB3b3VsZG4ndCBiZSBzZXQgYnV0IHRoZXJl IGlzIG5vIHdheSBmb3IgdGhlCi0JCSAqIHVzZXIgdG8gc2VlIHRoYXQsIHNvIG1ha2Ugc3VyZSB0 byBzZXQgYWxsIGRpc2NhcmQgbGltaXRzIHRvIDAuCiAJCSAqLwogCQlsaW1pdHMtPmRpc2NhcmRf Z3JhbnVsYXJpdHkgPSAwOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLmMg Yi9kcml2ZXJzL21kL2RtLmMKaW5kZXggM2M1ZmFkN2M0ZWU2OC4uZGJiZjY0Y2U3ZTkyNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZC9kbS5jCisrKyBiL2RyaXZlcnMvbWQvZG0uYwpAQCAtOTU1LDcg Kzk1NSw2IEBAIHZvaWQgZGlzYWJsZV9kaXNjYXJkKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCkK IAogCS8qIGRldmljZSBkb2Vzbid0IHJlYWxseSBzdXBwb3J0IERJU0NBUkQsIGRpc2FibGUgaXQg Ki8KIAlsaW1pdHMtPm1heF9kaXNjYXJkX3NlY3RvcnMgPSAwOwotCWJsa19xdWV1ZV9mbGFnX2Ns ZWFyKFFVRVVFX0ZMQUdfRElTQ0FSRCwgbWQtPnF1ZXVlKTsKIH0KIAogdm9pZCBkaXNhYmxlX3dy aXRlX3plcm9lcyhzdHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQpCkBAIC05ODIsNyArOTgxLDcgQEAg c3RhdGljIHZvaWQgY2xvbmVfZW5kaW8oc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKHVubGlrZWx5 KGVycm9yID09IEJMS19TVFNfVEFSR0VUKSkgewogCQlpZiAoYmlvX29wKGJpbykgPT0gUkVRX09Q X0RJU0NBUkQgJiYKLQkJICAgICFxLT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycykKKwkJICAg ICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5iaV9iZGV2KSkKIAkJCWRpc2FibGVfZGlz Y2FyZChtZCk7CiAJCWVsc2UgaWYgKGJpb19vcChiaW8pID09IFJFUV9PUF9XUklURV9aRVJPRVMg JiYKIAkJCSAhcS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWQvbWQtbGluZWFyLmMgYi9kcml2ZXJzL21kL21kLWxpbmVhci5jCmluZGV4IDBm NTViMDc5MzcxYjEuLjEzOGEzYjI1YzVjODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQtbGlu ZWFyLmMKKysrIGIvZHJpdmVycy9tZC9tZC1saW5lYXIuYwpAQCAtNjQsNyArNjQsNiBAQCBzdGF0 aWMgc3RydWN0IGxpbmVhcl9jb25mICpsaW5lYXJfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBp bnQgcmFpZF9kaXNrcykKIAlzdHJ1Y3QgbGluZWFyX2NvbmYgKmNvbmY7CiAJc3RydWN0IG1kX3Jk ZXYgKnJkZXY7CiAJaW50IGksIGNudDsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFsc2U7 CiAKIAljb25mID0ga3phbGxvYyhzdHJ1Y3Rfc2l6ZShjb25mLCBkaXNrcywgcmFpZF9kaXNrcyks IEdGUF9LRVJORUwpOwogCWlmICghY29uZikKQEAgLTk2LDkgKzk1LDYgQEAgc3RhdGljIHN0cnVj dCBsaW5lYXJfY29uZiAqbGluZWFyX2NvbmYoc3RydWN0IG1kZGV2ICptZGRldiwgaW50IHJhaWRf ZGlza3MpCiAKIAkJY29uZi0+YXJyYXlfc2VjdG9ycyArPSByZGV2LT5zZWN0b3JzOwogCQljbnQr KzsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikp KQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCX0KIAlpZiAoY250ICE9IHJhaWRfZGlz a3MpIHsKIAkJcHJfd2FybigibWQvbGluZWFyOiVzOiBub3QgZW5vdWdoIGRyaXZlcyBwcmVzZW50 LiBBYm9ydGluZyFcbiIsCkBAIC0xMDYsMTEgKzEwMiw2IEBAIHN0YXRpYyBzdHJ1Y3QgbGluZWFy X2NvbmYgKmxpbmVhcl9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYsIGludCByYWlkX2Rpc2tzKQog CQlnb3RvIG91dDsKIAl9CiAKLQlpZiAoIWRpc2NhcmRfc3VwcG9ydGVkKQotCQlibGtfcXVldWVf ZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7Ci0JZWxzZQotCQli bGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELCBtZGRldi0+cXVldWUpOwotCiAJ LyoKIAkgKiBIZXJlIHdlIGNhbGN1bGF0ZSB0aGUgZGV2aWNlIG9mZnNldHMuCiAJICovCkBAIC0y NTIsNyArMjQzLDcgQEAgc3RhdGljIGJvb2wgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRk ZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXN0YXJ0X3NlY3RvciArIGRhdGFfb2Zmc2V0 OwogCiAJaWYgKHVubGlrZWx5KChiaW9fb3AoYmlvKSA9PSBSRVFfT1BfRElTQ0FSRCkgJiYKLQkJ ICAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKSB7 CisJCSAgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiaW8tPmJpX2JkZXYpKSkgewogCQkv KiBKdXN0IGlnbm9yZSBpdCAqLwogCQliaW9fZW5kaW8oYmlvKTsKIAl9IGVsc2UgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkMC5jIGIvZHJpdmVycy9tZC9yYWlkMC5jCmluZGV4IGIyMWUx MDExODNmNDQuLjcyMzFmNWUxZWFhNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAuYwor KysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTM5OSw3ICszOTksNiBAQCBzdGF0aWMgaW50IHJh aWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQogCWNvbmYgPSBtZGRldi0+cHJpdmF0ZTsKIAlp ZiAobWRkZXYtPnF1ZXVlKSB7CiAJCXN0cnVjdCBtZF9yZGV2ICpyZGV2OwotCQlib29sIGRpc2Nh cmRfc3VwcG9ydGVkID0gZmFsc2U7CiAKIAkJYmxrX3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2 LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwogCQlibGtfcXVldWVfbWF4X3dyaXRlX3pl cm9lc19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgbWRkZXYtPmNodW5rX3NlY3RvcnMpOwpAQCAtNDEy LDEzICs0MTEsNyBAQCBzdGF0aWMgaW50IHJhaWQwX3J1bihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQog CQlyZGV2X2Zvcl9lYWNoKHJkZXYsIG1kZGV2KSB7CiAJCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRl di0+Z2VuZGlzaywgcmRldi0+YmRldiwKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsK LQkJCWlmIChibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0J CQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwogCQl9Ci0JCWlmICghZGlzY2FyZF9zdXBwb3J0 ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5x dWV1ZSk7Ci0JCWVsc2UKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQs IG1kZGV2LT5xdWV1ZSk7CiAJfQogCiAJLyogY2FsY3VsYXRlIGFycmF5IGRldmljZSBzaXplICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxLmMgYi9kcml2ZXJzL21kL3JhaWQxLmMKaW5k ZXggZDgxYjg5Njg1NWY5Zi4uM2RhNzQ5ZDE1MGExNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9y YWlkMS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEuYwpAQCAtODAyLDcgKzgwMiw3IEBAIHN0YXRp YyB2b2lkIGZsdXNoX2Jpb19saXN0KHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVjdCBiaW8gKmJp bykKIAkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJYmlvX2lvX2Vy cm9yKGJpbyk7CiAJCX0gZWxzZSBpZiAodW5saWtlbHkoKGJpb19vcChiaW8pID09IFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9k aXNrLT5xdWV1ZSkpKQorCQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+Ymlf YmRldikpKQogCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQll bHNlCkBAIC0xODI2LDggKzE4MjYsNiBAQCBzdGF0aWMgaW50IHJhaWQxX2FkZF9kaXNrKHN0cnVj dCBtZGRldiAqbWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2KQogCQkJYnJlYWs7CiAJCX0KIAl9 Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShy ZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIG1k ZGV2LT5xdWV1ZSk7CiAJcHJpbnRfY29uZihjb25mKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzEw Niw3ICszMTA0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikK IAlpbnQgaTsKIAlzdHJ1Y3QgbWRfcmRldiAqcmRldjsKIAlpbnQgcmV0OwotCWJvb2wgZGlzY2Fy ZF9zdXBwb3J0ZWQgPSBmYWxzZTsKIAogCWlmIChtZGRldi0+bGV2ZWwgIT0gMSkgewogCQlwcl93 YXJuKCJtZC9yYWlkMTolczogcmFpZCBsZXZlbCBub3Qgc2V0IHRvIG1pcnJvcmluZyAoJWQpXG4i LApAQCAtMzE0MSw4ICszMTM4LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2 ICptZGRldikKIAkJCWNvbnRpbnVlOwogCQlkaXNrX3N0YWNrX2xpbWl0cyhtZGRldi0+Z2VuZGlz aywgcmRldi0+YmRldiwKIAkJCQkgIHJkZXYtPmRhdGFfb2Zmc2V0IDw8IDkpOwotCQlpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9z dXBwb3J0ZWQgPSB0cnVlOwogCX0KIAogCW1kZGV2LT5kZWdyYWRlZCA9IDA7CkBAIC0zMTc5LDE1 ICszMTc0LDYgQEAgc3RhdGljIGludCByYWlkMV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAog CW1kX3NldF9hcnJheV9zZWN0b3JzKG1kZGV2LCByYWlkMV9zaXplKG1kZGV2LCAwLCAwKSk7CiAK LQlpZiAobWRkZXYtPnF1ZXVlKSB7Ci0JCWlmIChkaXNjYXJkX3N1cHBvcnRlZCkKLQkJCWJsa19x dWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwot CQllbHNlCi0JCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJ CQkgIG1kZGV2LT5xdWV1ZSk7Ci0JfQotCiAJcmV0ID0gbWRfaW50ZWdyaXR5X3JlZ2lzdGVyKG1k ZGV2KTsKIAlpZiAocmV0KSB7CiAJCW1kX3VucmVnaXN0ZXJfdGhyZWFkKCZtZGRldi0+dGhyZWFk KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5j CmluZGV4IDc4MTZjOGIyZTgwODcuLjM2YTQ2MDAxNWNmNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAtODg4LDcgKzg4OCw3IEBA IHN0YXRpYyB2b2lkIGZsdXNoX3BlbmRpbmdfd3JpdGVzKHN0cnVjdCByMTBjb25mICpjb25mKQog CQkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnJkZXYtPmZsYWdzKSkgewogCQkJCWJpb19pb19lcnJv cihiaW8pOwogCQkJfSBlbHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9E SVNDQVJEKSAmJgotCQkJCQkgICAgIWJsa19xdWV1ZV9kaXNjYXJkKGJpby0+YmlfYmRldi0+YmRf ZGlzay0+cXVldWUpKSkKKwkJCQkJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmlvLT5i aV9iZGV2KSkpCiAJCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCQliaW9fZW5kaW8oYmlvKTsK IAkJCWVsc2UKQEAgLTEwODMsNyArMTA4Myw3IEBAIHN0YXRpYyB2b2lkIHJhaWQxMF91bnBsdWco c3RydWN0IGJsa19wbHVnX2NiICpjYiwgYm9vbCBmcm9tX3NjaGVkdWxlKQogCQlpZiAodGVzdF9i aXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpKSB7CiAJCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJfSBl bHNlIGlmICh1bmxpa2VseSgoYmlvX29wKGJpbykgPT0gIFJFUV9PUF9ESVNDQVJEKSAmJgotCQkJ CSAgICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSkpKQor CQkJCSAgICAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJpby0+YmlfYmRldikpKQogCQkJLyog SnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwogCQllbHNlCkBAIC0yMTQ0LDgg KzIxNDQsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9hZGRfZGlzayhzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzdHJ1Y3QgbWRfcmRldiAqcmRldikKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKHAtPnJkZXYsIHJk ZXYpOwogCQlicmVhazsKIAl9Ci0JaWYgKG1kZGV2LT5xdWV1ZSAmJiBibGtfcXVldWVfZGlzY2Fy ZChiZGV2X2dldF9xdWV1ZShyZGV2LT5iZGV2KSkpCi0JCWJsa19xdWV1ZV9mbGFnX3NldChRVUVV RV9GTEFHX0RJU0NBUkQsIG1kZGV2LT5xdWV1ZSk7CiAKIAlwcmludF9jb25mKGNvbmYpOwogCXJl dHVybiBlcnI7CkBAIC00MDY5LDcgKzQwNjcsNiBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4oc3Ry dWN0IG1kZGV2ICptZGRldikKIAlzZWN0b3JfdCBzaXplOwogCXNlY3Rvcl90IG1pbl9vZmZzZXRf ZGlmZiA9IDA7CiAJaW50IGZpcnN0ID0gMTsKLQlib29sIGRpc2NhcmRfc3VwcG9ydGVkID0gZmFs c2U7CiAKIAlpZiAobWRkZXZfaW5pdF93cml0ZXNfcGVuZGluZyhtZGRldikgPCAwKQogCQlyZXR1 cm4gLUVOT01FTTsKQEAgLTQxNDAsMjAgKzQxMzcsOSBAQCBzdGF0aWMgaW50IHJhaWQxMF9ydW4o c3RydWN0IG1kZGV2ICptZGRldikKIAkJCQkJICByZGV2LT5kYXRhX29mZnNldCA8PCA5KTsKIAog CQlkaXNrLT5oZWFkX3Bvc2l0aW9uID0gMDsKLQotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQoYmRl dl9nZXRfcXVldWUocmRldi0+YmRldikpKQotCQkJZGlzY2FyZF9zdXBwb3J0ZWQgPSB0cnVlOwog CQlmaXJzdCA9IDA7CiAJfQogCi0JaWYgKG1kZGV2LT5xdWV1ZSkgewotCQlpZiAoZGlzY2FyZF9z dXBwb3J0ZWQpCi0JCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19ESVNDQVJELAotCQkJ CQkJbWRkZXYtPnF1ZXVlKTsKLQkJZWxzZQotCQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVf RkxBR19ESVNDQVJELAotCQkJCQkJICBtZGRldi0+cXVldWUpOwotCX0KIAkvKiBuZWVkIHRvIGNo ZWNrIHRoYXQgZXZlcnkgYmxvY2sgaGFzIGF0IGxlYXN0IG9uZSB3b3JraW5nIG1pcnJvciAqLwog CWlmICghZW5vdWdoKGNvbmYsIC0xKSkgewogCQlwcl9lcnIoIm1kL3JhaWQxMDolczogbm90IGVu b3VnaCBvcGVyYXRpb25hbCBtaXJyb3JzLlxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFp ZDUtY2FjaGUuYyBiL2RyaXZlcnMvbWQvcmFpZDUtY2FjaGUuYwppbmRleCBhN2Q1MGZmOTAyMGE4 Li5jM2NiZjlhNTc0YTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQ1LWNhY2hlLmMKKysr IGIvZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5jCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBzdGF0aWMg dm9pZCByNWxfd3JpdGVfc3VwZXJfYW5kX2Rpc2NhcmRfc3BhY2Uoc3RydWN0IHI1bF9sb2cgKmxv ZywKIAogCXI1bF93cml0ZV9zdXBlcihsb2csIGVuZCk7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNj YXJkKGJkZXZfZ2V0X3F1ZXVlKGJkZXYpKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9y cyhiZGV2KSkKIAkJcmV0dXJuOwogCiAJbWRkZXYgPSBsb2ctPnJkZXYtPm1kZGV2OwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDBiYmFl MGU2Mzg2NjYuLjU5ZjkxZTM5MmEyYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYwor KysgYi9kcml2ZXJzL21kL3JhaWQ1LmMKQEAgLTc3NzYsMTQgKzc3NzYsMTAgQEAgc3RhdGljIGlu dCByYWlkNV9ydW4oc3RydWN0IG1kZGV2ICptZGRldikKIAkJICogQSBiZXR0ZXIgaWRlYSBtaWdo dCBiZSB0byB0dXJuIERJU0NBUkQgaW50byBXUklURV9aRVJPRVMKIAkJICogcmVxdWVzdHMsIGFz IHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgc2FmZS4KIAkJICovCi0JCWlmIChkZXZpY2VzX2hhbmRs ZV9kaXNjYXJkX3NhZmVseSAmJgotCQkgICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMubWF4X2Rpc2Nh cmRfc2VjdG9ycyA+PSAoc3RyaXBlID4+IDkpICYmCi0JCSAgICBtZGRldi0+cXVldWUtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5ID49IHN0cmlwZSkKLQkJCWJsa19xdWV1ZV9mbGFnX3NldChR VUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUpOwotCQllbHNlCi0JCQlibGtf cXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX0RJU0NBUkQsCi0JCQkJCQltZGRldi0+cXVldWUp OworCQlpZiAoIWRldmljZXNfaGFuZGxlX2Rpc2NhcmRfc2FmZWx5IHx8CisJCSAgICBtZGRldi0+ cXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzIDwgKHN0cmlwZSA+PiA5KSB8fAorCQkg ICAgbWRkZXYtPnF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA8IHN0cmlwZSkKKwkJ CWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgMCk7CiAKIAkJYmxr X3F1ZXVlX21heF9od19zZWN0b3JzKG1kZGV2LT5xdWV1ZSwgVUlOVF9NQVgpOwogCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUuYyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUu YwppbmRleCBjNjliMmQ5ZGY2ZjE2Li5jYWM2MzE1MDEwYTNkIDEwMDY0NAotLS0gYS9kcml2ZXJz L21tYy9jb3JlL3F1ZXVlLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jCkBAIC0xODMs NyArMTgzLDYgQEAgc3RhdGljIHZvaWQgbW1jX3F1ZXVlX3NldHVwX2Rpc2NhcmQoc3RydWN0IHJl cXVlc3RfcXVldWUgKnEsCiAJaWYgKCFtYXhfZGlzY2FyZCkKIAkJcmV0dXJuOwogCi0JYmxrX3F1 ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiAJYmxrX3F1ZXVlX21heF9kaXNj YXJkX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmQpOwogCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5ID0gY2FyZC0+cHJlZl9lcmFzZSA8PCA5OwogCS8qIGdyYW51bGFyaXR5IG11c3Qgbm90IGJl IGdyZWF0ZXIgdGhhbiBtYXguIGRpc2NhcmQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210 ZF9ibGtkZXZzLmMgYi9kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jCmluZGV4IDY0ZDJiMDkzZjEx NGIuLmY3MzE3MjExMTQ2NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMK KysrIGIvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwpAQCAtMzc3LDcgKzM3Nyw2IEBAIGludCBh ZGRfbXRkX2Jsa3RyYW5zX2RldihzdHJ1Y3QgbXRkX2Jsa3RyYW5zX2RldiAqbmV3KQogCWJsa19x dWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfQUREX1JBTkRPTSwgbmV3LT5ycSk7CiAKIAlpZiAo dHItPmRpc2NhcmQpIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwg bmV3LT5ycSk7CiAJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKG5ldy0+cnEsIFVJTlRf TUFYKTsKIAkJbmV3LT5ycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSB0ci0+Ymxrc2l6 ZTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMgYi9kcml2ZXJzL252 bWUvaG9zdC9jb3JlLmMKaW5kZXggZWZiODVjNmQ4ZTJkNS4uYjAxMzAwZDljZDM3MiAxMDA2NDQK LS0tIGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2Nv cmUuYwpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9jb25maWdfZGlzY2Fy ZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQogCXUzMiBzaXplID0g cXVldWVfbG9naWNhbF9ibG9ja19zaXplKHF1ZXVlKTsKIAogCWlmIChjdHJsLT5tYXhfZGlzY2Fy ZF9zZWN0b3JzID09IDApIHsKLQkJYmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19ESVND QVJELCBxdWV1ZSk7CisJCWJsa19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHF1ZXVlLCAwKTsK IAkJcmV0dXJuOwogCX0KIApAQCAtMTYxOSw3ICsxNjE5LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9j b25maWdfZGlzY2FyZChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IG52bWVfbnMgKm5zKQog CXF1ZXVlLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA9IHNpemU7CiAKIAkvKiBJZiBkaXNj YXJkIGlzIGFscmVhZHkgZW5hYmxlZCwgZG9uJ3QgcmVzZXQgcXVldWUgbGltaXRzICovCi0JaWYg KGJsa19xdWV1ZV9mbGFnX3Rlc3RfYW5kX3NldChRVUVVRV9GTEFHX0RJU0NBUkQsIHF1ZXVlKSkK KwlpZiAocXVldWUtPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzKQogCQlyZXR1cm47CiAKIAli bGtfcXVldWVfbWF4X2Rpc2NhcmRfc2VjdG9ycyhxdWV1ZSwgY3RybC0+bWF4X2Rpc2NhcmRfc2Vj dG9ycyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9mYmEuYyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCmluZGV4IGUwODRmNGRlZGRkZGQuLjhiZDU2NjVkYjkx OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCisrKyBiL2RyaXZl cnMvczM5MC9ibG9jay9kYXNkX2ZiYS5jCkBAIC03OTEsNyArNzkxLDYgQEAgc3RhdGljIHZvaWQg ZGFzZF9mYmFfc2V0dXBfYmxrX3F1ZXVlKHN0cnVjdCBkYXNkX2Jsb2NrICpibG9jaykKIAogCWJs a19xdWV1ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIG1heF9kaXNjYXJkX3NlY3RvcnMpOwogCWJs a19xdWV1ZV9tYXhfd3JpdGVfemVyb2VzX3NlY3RvcnMocSwgbWF4X2Rpc2NhcmRfc2VjdG9ycyk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBpbnQgZGFzZF9mYmFfcGVfaGFuZGxlcihzdHJ1Y3QgZGFzZF9kZXZpY2UgKmRldmljZSwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggZGM2 ZTU1NzYxZmQxZi4uOTY5NGUyY2ZhZjlhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmMK KysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTc5Nyw3ICs3OTcsNiBAQCBzdGF0aWMgdm9pZCBz ZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9k ZSkKIAljYXNlIFNEX0xCUF9GVUxMOgogCWNhc2UgU0RfTEJQX0RJU0FCTEU6CiAJCWJsa19xdWV1 ZV9tYXhfZGlzY2FyZF9zZWN0b3JzKHEsIDApOwotCQlibGtfcXVldWVfZmxhZ19jbGVhcihRVUVV RV9GTEFHX0RJU0NBUkQsIHEpOwogCQlyZXR1cm47CiAKIAljYXNlIFNEX0xCUF9VTk1BUDoKQEAg LTgzMCw3ICs4MjksNiBAQCBzdGF0aWMgdm9pZCBzZF9jb25maWdfZGlzY2FyZChzdHJ1Y3Qgc2Nz aV9kaXNrICpzZGtwLCB1bnNpZ25lZCBpbnQgbW9kZSkKIAl9CiAKIAlibGtfcXVldWVfbWF4X2Rp c2NhcmRfc2VjdG9ycyhxLCBtYXhfYmxvY2tzICogKGxvZ2ljYWxfYmxvY2tfc2l6ZSA+PiA5KSk7 Ci0JYmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfRElTQ0FSRCwgcSk7CiB9CiAKIHN0YXRp YyBibGtfc3RhdHVzX3Qgc2Rfc2V0dXBfdW5tYXBfY21uZChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQp CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYyBiL2RyaXZl cnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCmluZGV4IGMzZTI1YmFjOTBkNTkuLjZjYjlm ODc4NDMyNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5j CisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCkBAIC04MzgsNyArODM4 LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3RydWN0IHNlX2Rl dl9hdHRyaWIgKmF0dHJpYiwKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3NpemUoYmRl dik7CiAKLQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKGJkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlhdHRyaWItPm1heF91bm1hcF9s YmFfY291bnQgPQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyBiL2ZzL2J0cmZz L2V4dGVudC10cmVlLmMKaW5kZXggZjQ3NzAzNWEyYWMyMy4uZWZkOGRlYjNhYjdlOCAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5j CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBzdGF0aWMgaW50IGRvX2Rpc2NhcmRfZXh0ZW50KHN0cnVj dCBidHJmc19pb19zdHJpcGUgKnN0cmlwZSwgdTY0ICpieXRlcykKIAkJcmV0ID0gYnRyZnNfcmVz ZXRfZGV2aWNlX3pvbmUoZGV2X3JlcGxhY2UtPnRndGRldiwgcGh5cywgbGVuLAogCQkJCQkgICAg ICAmZGlzY2FyZGVkKTsKIAkJZGlzY2FyZGVkICs9IHNyY19kaXNjOwotCX0gZWxzZSBpZiAoYmxr X3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoc3RyaXBlLT5kZXYtPmJkZXYpKSkgeworCX0g ZWxzZSBpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHN0cmlwZS0+ZGV2LT5iZGV2KSkgewog CQlyZXQgPSBidHJmc19pc3N1ZV9kaXNjYXJkKGRldi0+YmRldiwgcGh5cywgbGVuLCAmZGlzY2Fy ZGVkKTsKIAl9IGVsc2UgewogCQlyZXQgPSAwOwpAQCAtNTk4Nyw3ICs1OTg3LDcgQEAgc3RhdGlj IGludCBidHJmc190cmltX2ZyZWVfZXh0ZW50cyhzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2Us IHU2NCAqdHJpbW1lZCkKIAkqdHJpbW1lZCA9IDA7CiAKIAkvKiBEaXNjYXJkIG5vdCBzdXBwb3J0 ZWQgPSBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRf cXVldWUoZGV2aWNlLT5iZGV2KSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoZGV2 aWNlLT5iZGV2KSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBOb3Qgd3JpdGFibGUgPSBub3RoaW5nIHRv IGRvLiAqLwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMK aW5kZXggZjQ2ZTcxMDYxOTQyZC4uMDk2YmIwZGEwM2YxYyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv aW9jdGwuYworKysgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGlj IG5vaW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sCiAJCWlmICghZGV2aWNlLT5iZGV2KQogCQkJY29udGludWU7CiAJCXEgPSBiZGV2X2dl dF9xdWV1ZShkZXZpY2UtPmJkZXYpOwotCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKKwkJ aWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJkZXYpKSB7CiAJCQludW1fZGV2 aWNlcysrOwogCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSwKIAkJCQkgICAgIG1pbmxlbik7CmRpZmYgLS1naXQgYS9mcy9leGZhdC9maWxlLmMgYi9m cy9leGZhdC9maWxlLmMKaW5kZXggMmY1MTMwMDU5MjM2Ni4uNzY1ZTRmNjNkZDE4ZCAxMDA2NDQK LS0tIGEvZnMvZXhmYXQvZmlsZS5jCisrKyBiL2ZzL2V4ZmF0L2ZpbGUuYwpAQCAtMzU4LDcgKzM1 OCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJcmV0 dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoaW5vZGUtPmlfc2ItPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAogCWlmIChjb3B5X2Zyb21fdXNlcigmcmFuZ2UsIChzdHJ1Y3QgZnN0cmltX3Jhbmdl IF9fdXNlciAqKWFyZywgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy9leGZhdC9zdXBl ci5jIGIvZnMvZXhmYXQvc3VwZXIuYwppbmRleCA4Y2EyMWU3OTE3ZDE2Li5iZTA3ODhlY2FmMjBl IDEwMDY0NAotLS0gYS9mcy9leGZhdC9zdXBlci5jCisrKyBiL2ZzL2V4ZmF0L3N1cGVyLmMKQEAg LTYyNywxMyArNjI3LDkgQEAgc3RhdGljIGludCBleGZhdF9maWxsX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpZiAob3B0cy0+YWxsb3dfdXRp bWUgPT0gKHVuc2lnbmVkIHNob3J0KS0xKQogCQlvcHRzLT5hbGxvd191dGltZSA9IH5vcHRzLT5m c19kbWFzayAmIDAwMjI7CiAKLQlpZiAob3B0cy0+ZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpIHsKLQkJCWV4ZmF0X3dhcm4oc2IsICJtb3VudGluZyB3aXRoIFwiZGlz Y2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7 Ci0JCQlvcHRzLT5kaXNjYXJkID0gMDsKLQkJfQorCWlmIChvcHRzLT5kaXNjYXJkICYmICFiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoc2ItPnNfYmRldikpIHsKKwkJZXhmYXRfd2FybihzYiwgIm1v dW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBkb2VzIG5vdCBz dXBwb3J0IGRpc2NhcmQiKTsKKwkJb3B0cy0+ZGlzY2FyZCA9IDA7CiAJfQogCiAJc2ItPnNfZmxh Z3MgfD0gU0JfTk9ESVJBVElNRTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW9jdGwuYyBiL2ZzL2V4 dDQvaW9jdGwuYwppbmRleCA5OTIyMjljYTJkODMwLi42ZTNiOWVlYTEyNmY0IDEwMDY0NAotLS0g YS9mcy9leHQ0L2lvY3RsLmMKKysrIGIvZnMvZXh0NC9pb2N0bC5jCkBAIC0xMDQ0LDcgKzEwNDQs NiBAQCBzdGF0aWMgaW50IGV4dDRfaW9jdGxfY2hlY2twb2ludChzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJX191MzIgZmxhZ3MgPSAwOwogCXVuc2lnbmVkIGludCBmbHVz aF9mbGFncyA9IDA7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGZpbGVfaW5vZGUoZmlscCkt Pmlfc2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnE7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIo JmZsYWdzLCAoX191MzIgX191c2VyICopYXJnLAogCQkJCXNpemVvZihfX3UzMikpKQpAQCAtMTA2 NSwxMCArMTA2NCw4IEBAIHN0YXRpYyBpbnQgZXh0NF9pb2N0bF9jaGVja3BvaW50KHN0cnVjdCBm aWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIAlpZiAoZmxhZ3MgJiB+RVhUNF9JT0NfQ0hF Q0tQT0lOVF9GTEFHX1ZBTElEKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXEgPSBiZGV2X2dldF9x dWV1ZShFWFQ0X1NCKHNiKS0+c19qb3VybmFsLT5qX2Rldik7Ci0JaWYgKCFxKQotCQlyZXR1cm4g LUVOWElPOwotCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElTQ0FSRCkgJiYgIWJs a19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICgoZmxhZ3MgJiBKQkQyX0pPVVJOQUxfRkxVU0hfRElT Q0FSRCkgJiYKKwkgICAgIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhFWFQ0X1NCKHNiKS0+c19q b3VybmFsLT5qX2RldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChmbGFncyAmIEVY VDRfSU9DX0NIRUNLUE9JTlRfRkxBR19EUllfUlVOKQpAQCAtMTM5MywxNCArMTM5MCwxMyBAQCBz dGF0aWMgbG9uZyBfX2V4dDRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBj bWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCiAJY2FzZSBGSVRSSU06CiAJewotCQlzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0 cmltX3JhbmdlIHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIAogCQlpZiAoIWNhcGFibGUoQ0FQX1NZ U19BRE1JTikpCiAJCQlyZXR1cm4gLUVQRVJNOwogCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQo cSkpCisJCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCiAJCS8qCmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9m cy9leHQ0L3N1cGVyLmMKaW5kZXggODE3NDllYWRkZjRjMS4uOTNmNGU0ZTllMjYzMSAxMDA2NDQK LS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNTQ1OCwxMyAr NTQ1OCw5IEBAIHN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQg KmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCQkJZ290byBmYWlsZWRfbW91bnQ5OwogCX0K IAotCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkpIHsKLQkJc3RydWN0IHJlcXVlc3RfcXVldWUg KnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKLQkJaWYgKCFibGtfcXVldWVfZGlzY2Fy ZChxKSkKLQkJCWV4dDRfbXNnKHNiLCBLRVJOX1dBUk5JTkcsCi0JCQkJICJtb3VudGluZyB3aXRo IFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0ICIKLQkJCQkgInRoZSBkZXZpY2UgZG9lcyBub3Qgc3Vw cG9ydCBkaXNjYXJkIik7Ci0JfQorCWlmICh0ZXN0X29wdChzYiwgRElTQ0FSRCkgJiYgIWJkZXZf bWF4X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZXh0NF9tc2coc2IsIEtFUk5fV0FS TklORywKKwkJCSAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCB0aGUgZGV2 aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwogCiAJaWYgKGVzLT5zX2Vycm9yX2NvdW50 KQogCQltb2RfdGltZXIoJnNiaS0+c19lcnJfcmVwb3J0LCBqaWZmaWVzICsgMzAwKkhaKTsgLyog NSBtaW51dGVzICovCmRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5o CmluZGV4IGNkMWU2NWJjZjBiMDQuLjBlYTlhNWZhN2MxZGQgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMv ZjJmcy5oCisrKyBiL2ZzL2YyZnMvZjJmcy5oCkBAIC00MzgxLDggKzQzODEsNyBAQCBzdGF0aWMg aW5saW5lIGJvb2wgZjJmc19od19zaG91bGRfZGlzY2FyZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmkpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2JkZXZfc3VwcG9ydF9kaXNjYXJkKHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0JcmV0dXJuIGJsa19xdWV1ZV9kaXNjYXJkKGJkZXZf Z2V0X3F1ZXVlKGJkZXYpKSB8fAotCSAgICAgICBiZGV2X2lzX3pvbmVkKGJkZXYpOworCXJldHVy biBiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgfHwgYmRldl9pc196b25lZChiZGV2KTsK IH0KIAogc3RhdGljIGlubGluZSBib29sIGYyZnNfaHdfc3VwcG9ydF9kaXNjYXJkKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9mcy9mYXQvZmls ZS5jCmluZGV4IGE1YTMwOWZjYzdmYWYuLmU0YzdkMTBlODAxMjkgMTAwNjQ0Ci0tLSBhL2ZzL2Zh dC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBp bnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGFy ZykKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCiAJCXJldHVybiAtRVBFUk07CiAKLQlp ZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3Jz KHNiLT5zX2JkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAl1c2VyX3JhbmdlID0gKHN0 cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICopYXJnOwpkaWZmIC0tZ2l0IGEvZnMvZmF0L2lub2Rl LmMgYi9mcy9mYXQvaW5vZGUuYwppbmRleCBiZjYwNTFiZGYxZDFkLi4zZDFhZmI5NWE5MjVhIDEw MDY0NAotLS0gYS9mcy9mYXQvaW5vZGUuYworKysgYi9mcy9mYXQvaW5vZGUuYwpAQCAtMTg3Miwx MyArMTg3Miw5IEBAIGludCBmYXRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2 b2lkICpkYXRhLCBpbnQgc2lsZW50LCBpbnQgaXN2ZmF0LAogCQlnb3RvIG91dF9mYWlsOwogCX0K IAotCWlmIChzYmktPm9wdGlvbnMuZGlzY2FyZCkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJk KHEpKQotCQkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5HLAotCQkJCQkibW91bnRpbmcgd2l0aCBc ImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0JCQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBv cnQgZGlzY2FyZCIpOwotCX0KKwlpZiAoc2JpLT5vcHRpb25zLmRpc2NhcmQgJiYgIWJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzYi0+c19iZGV2KSkKKwkJZmF0X21zZyhzYiwgS0VSTl9XQVJOSU5H LAorCQkJIm1vdW50aW5nIHdpdGggXCJkaXNjYXJkXCIgb3B0aW9uLCBidXQgdGhlIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IGRpc2NhcmQiKTsKIAogCWZhdF9zZXRfc3RhdGUoc2IsIDEsIDApOwog CXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA4MDFhZDlmNGYyYmVmLi43ZjIwYWM5MTMzYmM2IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoIXRlc3Rf Yml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkKIAkJcmV0dXJuIC1FUk9GUzsK IAotCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoc2RwLT5zZF92ZnMtPnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlm IChjb3B5X2Zyb21fdXNlcigmciwgYXJncCwgc2l6ZW9mKHIpKSkKZGlmZiAtLWdpdCBhL2ZzL2pi ZDIvam91cm5hbC5jIGIvZnMvamJkMi9qb3VybmFsLmMKaW5kZXggZmNhY2FmYTQ1MTBkMS4uMTlk MjI2Y2Q0ZmY0ZCAxMDA2NDQKLS0tIGEvZnMvamJkMi9qb3VybmFsLmMKKysrIGIvZnMvamJkMi9q b3VybmFsLmMKQEAgLTE3NjIsNyArMTc2Miw2IEBAIHN0YXRpYyBpbnQgX19qYmQyX2pvdXJuYWxf ZXJhc2Uoam91cm5hbF90ICpqb3VybmFsLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJdW5zaWduZWQg bG9uZyBibG9jaywgbG9nX29mZnNldDsgLyogbG9naWNhbCAqLwogCXVuc2lnbmVkIGxvbmcgbG9u ZyBwaHlzX2Jsb2NrLCBibG9ja19zdGFydCwgYmxvY2tfc3RvcDsgLyogcGh5c2ljYWwgKi8KIAls b2ZmX3QgYnl0ZV9zdGFydCwgYnl0ZV9zdG9wLCBieXRlX2NvdW50OwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoam91cm5hbC0+al9kZXYpOwogCiAJLyogZmxhZ3Mg bXVzdCBiZSBzZXQgdG8gZWl0aGVyIGRpc2NhcmQgb3IgemVyb291dCAqLwogCWlmICgoZmxhZ3Mg JiB+SkJEMl9KT1VSTkFMX0ZMVVNIX1ZBTElEKSB8fCAhZmxhZ3MgfHwKQEAgLTE3NzAsMTAgKzE3 NjksOCBAQCBzdGF0aWMgaW50IF9famJkMl9qb3VybmFsX2VyYXNlKGpvdXJuYWxfdCAqam91cm5h bCwgdW5zaWduZWQgaW50IGZsYWdzKQogCQkJKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX1pF Uk9PVVQpKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoIXEpCi0JCXJldHVybiAtRU5YSU87 Ci0KLQlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQpICYmICFibGtfcXVl dWVfZGlzY2FyZChxKSkKKwlpZiAoKGZsYWdzICYgSkJEMl9KT1VSTkFMX0ZMVVNIX0RJU0NBUkQp ICYmCisJICAgICFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoam91cm5hbC0+al9kZXYpKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvamZzL2lvY3RsLmMgYi9m cy9qZnMvaW9jdGwuYwppbmRleCAwM2E4NDVhYjRmMDA5Li4zNTdhZTZlNWMzNmVjIDEwMDY0NAot LS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpAQCAtMTE3LDcgKzExNyw3 IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQkJcmV0 dXJuIC1FUEVSTTsKIAotCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCWlmICghYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQlqZnNfd2FybigiRklUUklN IG5vdCBzdXBwb3J0ZWQgb24gZGV2aWNlIik7CiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCX0K ZGlmZiAtLWdpdCBhL2ZzL2pmcy9zdXBlci5jIGIvZnMvamZzL3N1cGVyLmMKaW5kZXggZjFhMTNh NzRjZGRmMy4uODVkNGY0NGYyYWM0ZCAxMDA2NDQKLS0tIGEvZnMvamZzL3N1cGVyLmMKKysrIGIv ZnMvamZzL3N1cGVyLmMKQEAgLTM3MiwxOSArMzcyLDE2IEBAIHN0YXRpYyBpbnQgcGFyc2Vfb3B0 aW9ucyhjaGFyICpvcHRpb25zLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzNjQgKm5ld0xWU2l6 ZSwKIAkJfQogCiAJCWNhc2UgT3B0X2Rpc2NhcmQ6Ci0JCXsKLQkJCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCQkvKiBpZiBzZXQgdG8gMSwg ZXZlbiBjb3B5aW5nIGZpbGVzIHdpbGwgY2F1c2UKIAkJCSAqIHRyaW1taW5nIDpPCiAJCQkgKiAt PiB1c2VyIGhhcyBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgb25saW5lIHRyaW1taW5nCiAJCQkgKi8K IAkJCXNiaS0+bWluYmxrc190cmltID0gNjQ7Ci0JCQlpZiAoYmxrX3F1ZXVlX2Rpc2NhcmQocSkp CisJCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKQogCQkJCSpmbGFn IHw9IEpGU19ESVNDQVJEOwogCQkJZWxzZQogCQkJCXByX2VycigiSkZTOiBkaXNjYXJkIG9wdGlv biBub3Qgc3VwcG9ydGVkIG9uIGRldmljZVxuIik7CiAJCQlicmVhazsKLQkJfQogCiAJCWNhc2Ug T3B0X25vZGlzY2FyZDoKIAkJCSpmbGFnICY9IH5KRlNfRElTQ0FSRDsKQEAgLTM5MiwxMCArMzg5 LDkgQEAgc3RhdGljIGludCBwYXJzZV9vcHRpb25zKGNoYXIgKm9wdGlvbnMsIHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHM2NCAqbmV3TFZTaXplLAogCiAJCWNhc2UgT3B0X2Rpc2NhcmRfbWluYmxr OgogCQl7Ci0JCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCQkJY2hhciAqbWluYmxrc190cmltID0gYXJnc1swXS5mcm9tOwogCQkJaW50IHJj OwotCQkJaWYgKGJsa19xdWV1ZV9kaXNjYXJkKHEpKSB7CisJCQlpZiAoYmRldl9tYXhfZGlzY2Fy ZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CiAJCQkJKmZsYWcgfD0gSkZTX0RJU0NBUkQ7CiAJCQkJ cmMgPSBrc3RydG91aW50KG1pbmJsa3NfdHJpbSwgMCwKIAkJCQkJCSZzYmktPm1pbmJsa3NfdHJp bSk7CmRpZmYgLS1naXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmlu ZGV4IGZlYzE5NGE2NjZmNGIuLjUyYjczZjU1OGZjYjEgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9p b2N0bC5jCisrKyBiL2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDU5LDcgKzEwNTksNyBAQCBzdGF0 aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCBfX3Vz ZXIgKmFyZ3ApCiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJN OwogCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRf c2VjdG9ycyhuaWxmcy0+bnNfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChj b3B5X2Zyb21fdXNlcigmcmFuZ2UsIGFyZ3AsIHNpemVvZihyYW5nZSkpKQpkaWZmIC0tZ2l0IGEv ZnMvbnRmczMvZmlsZS5jIGIvZnMvbnRmczMvZmlsZS5jCmluZGV4IDc4N2I1M2I5ODRlZTEuLmU3 NjMyMzYxNjkzMzEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9m aWxlLmMKQEAgLTI4LDcgKzI4LDcgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1 Y3QgbnRmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGxvbmcgYXJnKQogCWlmICghY2FwYWJsZShD QVBfU1lTX0FETUlOKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAotCWlmICghYmxrX3F1ZXVlX2Rpc2Nh cmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoc2JpLT5zYi0+c19iZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJdXNlcl9yYW5nZSA9IChzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlciAqKWFyZzsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9mcy9udGZz My9zdXBlci5jCmluZGV4IGNkMzBlODFhYmJjZTAuLmM3MzQwODViY2NlNGEgMTAwNjQ0Ci0tLSBh L2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtOTEzLDcgKzkxMyw3 IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0 cnVjdCBmc19jb250ZXh0ICpmYykKIAl9CiAKIAlycSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwot CWlmIChibGtfcXVldWVfZGlzY2FyZChycSkgJiYgcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFy aXR5KSB7CisJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBycS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gcnEt PmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlf bWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwpkaWZm IC0tZ2l0IGEvZnMvb2NmczIvaW9jdGwuYyBiL2ZzL29jZnMyL2lvY3RsLmMKaW5kZXggZjU5NDYx ZDg1ZGE0NS4uOWI3OGVmMTAzYWRhNiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvaW9jdGwuYworKysg Yi9mcy9vY2ZzMi9pb2N0bC5jCkBAIC05MTAsNyArOTEwLDcgQEAgbG9uZyBvY2ZzMl9pb2N0bChz dHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJ CWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJCXJldHVybiAtRVBFUk07CiAKLQkJaWYg KCFibGtfcXVldWVfZGlzY2FyZChxKSkKKwkJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMo c2ItPnNfYmRldikpCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkJaWYgKGNvcHlfZnJvbV91 c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZz X2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmluZGV4IDAxOTFkZThjZTljZWQuLmE0 ZTY2MDlkNjE2YjcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCisrKyBiL2ZzL3hm cy94ZnNfZGlzY2FyZC5jCkBAIC0xNjIsNyArMTYyLDcgQEAgeGZzX2lvY190cmltKAogCiAJaWYg KCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQlyZXR1cm4gLUVQRVJNOwotCWlmICghYmxrX3F1 ZXVlX2Rpc2NhcmQocSkpCisJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMobXAtPm1fZGRl dl90YXJncC0+YnRfYmRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCS8qCmRpZmYgLS1n aXQgYS9mcy94ZnMveGZzX3N1cGVyLmMgYi9mcy94ZnMveGZzX3N1cGVyLmMKaW5kZXggNTRiZTlk NjQwOTNlZC4uYTI3NmI4MTExZjYzNiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19zdXBlci5jCisr KyBiL2ZzL3hmcy94ZnNfc3VwZXIuYwpAQCAtMTYwOCwxNCArMTYwOCwxMCBAQCB4ZnNfZnNfZmls bF9zdXBlcigKIAkJCWdvdG8gb3V0X2ZpbGVzdHJlYW1fdW5tb3VudDsKIAl9CiAKLQlpZiAoeGZz X2hhc19kaXNjYXJkKG1wKSkgewotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0 X3F1ZXVlKHNiLT5zX2JkZXYpOwotCi0JCWlmICghYmxrX3F1ZXVlX2Rpc2NhcmQocSkpIHsKLQkJ CXhmc193YXJuKG1wLCAibW91bnRpbmcgd2l0aCBcImRpc2NhcmRcIiBvcHRpb24sIGJ1dCAiCi0J CQkJCSJ0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCIpOwotCQkJbXAtPm1fZmVh dHVyZXMgJj0gflhGU19GRUFUX0RJU0NBUkQ7Ci0JCX0KKwlpZiAoeGZzX2hhc19kaXNjYXJkKG1w KSAmJiAhYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNiLT5zX2JkZXYpKSB7CisJCXhmc193YXJu KG1wLAorCSJtb3VudGluZyB3aXRoIFwiZGlzY2FyZFwiIG9wdGlvbiwgYnV0IHRoZSBkZXZpY2Ug ZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIik7CisJCW1wLT5tX2ZlYXR1cmVzICY9IH5YRlNfRkVB VF9ESVNDQVJEOwogCX0KIAogCWlmICh4ZnNfaGFzX3JlZmxpbmsobXApKSB7CmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaAppbmRleCBj ZTE2MjQ3ZDNhZmFiLi43NjdhYjIyZTEwNTJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Js a2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKQEAgLTU0MCw3ICs1NDAsNiBAQCBz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSB7CiAjZGVmaW5lIFFVRVVFX0ZMQUdfTk9OUk9UCTYJLyogbm9u LXJvdGF0aW9uYWwgZGV2aWNlIChTU0QpICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdfVklSVAkJUVVF VUVfRkxBR19OT05ST1QgLyogcGFyYXZpcnQgZGV2aWNlICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdf SU9fU1RBVAk3CS8qIGRvIGRpc2svcGFydGl0aW9ucyBJTyBhY2NvdW50aW5nICovCi0jZGVmaW5l IFFVRVVFX0ZMQUdfRElTQ0FSRAk4CS8qIHN1cHBvcnRzIERJU0NBUkQgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19OT1hNRVJHRVMJOQkvKiBObyBleHRlbmRlZCBtZXJnZXMgKi8KICNkZWZpbmUgUVVF VUVfRkxBR19BRERfUkFORE9NCTEwCS8qIENvbnRyaWJ1dGVzIHRvIHJhbmRvbSBwb29sICovCiAj ZGVmaW5lIFFVRVVFX0ZMQUdfU0VDRVJBU0UJMTEJLyogc3VwcG9ydHMgc2VjdXJlIGVyYXNlICov CkBAIC01ODIsNyArNTgxLDYgQEAgYm9vbCBibGtfcXVldWVfZmxhZ190ZXN0X2FuZF9zZXQodW5z aWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTsKIAl0ZXN0X2JpdChRVUVV RV9GTEFHX1NUQUJMRV9XUklURVMsICYocSktPnF1ZXVlX2ZsYWdzKQogI2RlZmluZSBibGtfcXVl dWVfaW9fc3RhdChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0lPX1NUQVQsICYocSktPnF1ZXVlX2Zs YWdzKQogI2RlZmluZSBibGtfcXVldWVfYWRkX3JhbmRvbShxKQl0ZXN0X2JpdChRVUVVRV9GTEFH X0FERF9SQU5ET00sICYocSktPnF1ZXVlX2ZsYWdzKQotI2RlZmluZSBibGtfcXVldWVfZGlzY2Fy ZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX0RJU0NBUkQsICYocSktPnF1ZXVlX2ZsYWdzKQogI2Rl ZmluZSBibGtfcXVldWVfem9uZV9yZXNldGFsbChxKQlcCiAJdGVzdF9iaXQoUVVFVUVfRkxBR19a T05FX1JFU0VUQUxMLCAmKHEpLT5xdWV1ZV9mbGFncykKICNkZWZpbmUgYmxrX3F1ZXVlX3NlY3Vy ZV9lcmFzZShxKSBcCmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuYwpp bmRleCA0MDY5ZjE3YTgyYzhlLi41ZDljZWRmOWU3Yjg0IDEwMDY0NAotLS0gYS9tbS9zd2FwZmls ZS5jCisrKyBiL21tL3N3YXBmaWxlLmMKQEAgLTI5NTcsMjAgKzI5NTcsNiBAQCBzdGF0aWMgaW50 IHNldHVwX3N3YXBfbWFwX2FuZF9leHRlbnRzKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpwLAog CXJldHVybiBucl9leHRlbnRzOwogfQogCi0vKgotICogSGVscGVyIHRvIHN5c19zd2Fwb24gZGV0 ZXJtaW5pbmcgaWYgYSBnaXZlbiBzd2FwCi0gKiBiYWNraW5nIGRldmljZSBxdWV1ZSBzdXBwb3J0 cyBESVNDQVJEIG9wZXJhdGlvbnMuCi0gKi8KLXN0YXRpYyBib29sIHN3YXBfZGlzY2FyZGFibGUo c3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpKQotewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx ID0gYmRldl9nZXRfcXVldWUoc2ktPmJkZXYpOwotCi0JaWYgKCFibGtfcXVldWVfZGlzY2FyZChx KSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIHRydWU7Ci19Ci0KIFNZU0NBTExfREVGSU5F Mihzd2Fwb24sIGNvbnN0IGNoYXIgX191c2VyICosIHNwZWNpYWxmaWxlLCBpbnQsIHN3YXBfZmxh Z3MpCiB7CiAJc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnA7CkBAIC0zMTMyLDcgKzMxMTgsOCBA QCBTWVNDQUxMX0RFRklORTIoc3dhcG9uLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzcGVjaWFsZmls ZSwgaW50LCBzd2FwX2ZsYWdzKQogCQkJCQkgc2l6ZW9mKGxvbmcpLAogCQkJCQkgR0ZQX0tFUk5F TCk7CiAKLQlpZiAocC0+YmRldiAmJiAoc3dhcF9mbGFncyAmIFNXQVBfRkxBR19ESVNDQVJEKSAm JiBzd2FwX2Rpc2NhcmRhYmxlKHApKSB7CisJaWYgKChzd2FwX2ZsYWdzICYgU1dBUF9GTEFHX0RJ U0NBUkQpICYmCisJICAgIHAtPmJkZXYgJiYgYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHAtPmJk ZXYpKSB7CiAJCS8qCiAJCSAqIFdoZW4gZGlzY2FyZCBpcyBlbmFibGVkIGZvciBzd2FwIHdpdGgg bm8gcGFydGljdWxhcgogCQkgKiBwb2xpY3kgZmxhZ2dlZCwgd2Ugc2V0IGFsbCBzd2FwIGRpc2Nh cmQgZmxhZ3MgaGVyZSBpbgotLSAKMi4zMC4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcg bGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10 ZC8K