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 45B3917D1 for ; Fri, 15 Apr 2022 04:54:38 +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=kNp/brlkIe235G5uL2MrVnIRtgqb7cDd/DmZFPBWIBU=; b=Co/TUtYjxXhBannRnRPPMzniSz KzMOTkfBm1/hatrRCsXat8xvCYh5GhThX4mzrGtKHb6LAYG+sPH3KwWtVY3xSHJr/UXxKAr/c8lOd 9nzEDK8J1+urJnRHTt8OvyyB9riUUShlfJxQQc5tl17Aeq2Ob83x7bFSyDRg1kFsMfBGYCbDiai4T MmRIecJu05pH8quQ4Da7LC0ahNKk3viQlUZsK3kTx8GJB07Ab+tCpvf4TxuQJg0Ur8EB4xfyeBW86 w/cFJ63yhIzxe5o3O4E4JugMkp6nxsaFU/g8r/FsjvJTzkEcJyR5P45yJBFH2vwfQ5gqACkXysc+F Z7/+X18g==; 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 1nfDyL-008Pnr-T3; Fri, 15 Apr 2022 04:54:18 +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?= , Ryusuke Konishi , David Sterba Subject: [PATCH 25/27] block: add a bdev_discard_granularity helper Date: Fri, 15 Apr 2022 06:52:56 +0200 Message-Id: <20220415045258.199825-26-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 Abstract away implementation details from file systems by providing a block_device based helper to retrieve the discard granularity. Signed-off-by: Christoph Hellwig Reviewed-by: Martin K. Petersen Acked-by: Christoph Böhmwalder [drbd] Acked-by: Ryusuke Konishi Acked-by: David Sterba [btrfs] --- block/blk-lib.c | 5 ++--- drivers/block/drbd/drbd_nl.c | 9 +++++---- drivers/block/drbd/drbd_receiver.c | 3 +-- drivers/block/loop.c | 2 +- drivers/target/target_core_device.c | 3 +-- fs/btrfs/ioctl.c | 12 ++++-------- fs/exfat/file.c | 3 +-- fs/ext4/mballoc.c | 6 +++--- fs/f2fs/file.c | 3 +-- fs/fat/file.c | 3 +-- fs/gfs2/rgrp.c | 7 +++---- fs/jfs/ioctl.c | 3 +-- fs/nilfs2/ioctl.c | 4 ++-- fs/ntfs3/file.c | 4 ++-- fs/ntfs3/super.c | 6 ++---- fs/ocfs2/ioctl.c | 3 +-- fs/xfs/xfs_discard.c | 4 ++-- include/linux/blkdev.h | 5 +++++ 18 files changed, 38 insertions(+), 47 deletions(-) diff --git a/block/blk-lib.c b/block/blk-lib.c index 8b4b66d3a9bfc..43aa4d7fe859f 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -12,8 +12,7 @@ static sector_t bio_discard_limit(struct block_device *bdev, sector_t sector) { - unsigned int discard_granularity = - bdev_get_queue(bdev)->limits.discard_granularity; + unsigned int discard_granularity = bdev_discard_granularity(bdev); sector_t granularity_aligned_sector; if (bdev_is_partition(bdev)) @@ -59,7 +58,7 @@ int __blkdev_issue_discard(struct block_device *bdev, sector_t sector, } /* In case the discard granularity isn't set by buggy device driver */ - if (WARN_ON_ONCE(!q->limits.discard_granularity)) { + if (WARN_ON_ONCE(!bdev_discard_granularity(bdev))) { char dev_name[BDEVNAME_SIZE]; bdevname(bdev, dev_name); diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c index 0678ceb505799..a6280dcb37679 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c @@ -1425,7 +1425,6 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis struct drbd_backing_dev *nbc) { struct block_device *bdev = nbc->backing_bdev; - struct request_queue *q = bdev->bd_disk->queue; if (disk_conf->al_extents < DRBD_AL_EXTENTS_MIN) disk_conf->al_extents = DRBD_AL_EXTENTS_MIN; @@ -1442,12 +1441,14 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis if (disk_conf->rs_discard_granularity) { int orig_value = disk_conf->rs_discard_granularity; sector_t discard_size = bdev_max_discard_sectors(bdev) << 9; + unsigned int discard_granularity = bdev_discard_granularity(bdev); int remainder; - if (q->limits.discard_granularity > disk_conf->rs_discard_granularity) - disk_conf->rs_discard_granularity = q->limits.discard_granularity; + if (discard_granularity > disk_conf->rs_discard_granularity) + disk_conf->rs_discard_granularity = discard_granularity; - remainder = disk_conf->rs_discard_granularity % q->limits.discard_granularity; + remainder = disk_conf->rs_discard_granularity % + discard_granularity; disk_conf->rs_discard_granularity += remainder; if (disk_conf->rs_discard_granularity > discard_size) diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 8a4a47da56fe9..275c53c7b629e 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -1511,7 +1511,6 @@ void drbd_bump_write_ordering(struct drbd_resource *resource, struct drbd_backin int drbd_issue_discard_or_zero_out(struct drbd_device *device, sector_t start, unsigned int nr_sectors, int flags) { struct block_device *bdev = device->ldev->backing_bdev; - struct request_queue *q = bdev_get_queue(bdev); sector_t tmp, nr; unsigned int max_discard_sectors, granularity; int alignment; @@ -1521,7 +1520,7 @@ int drbd_issue_discard_or_zero_out(struct drbd_device *device, sector_t start, u goto zero_out; /* Zero-sector (unknown) and one-sector granularities are the same. */ - granularity = max(q->limits.discard_granularity >> 9, 1U); + granularity = max(bdev_discard_granularity(bdev) >> 9, 1U); alignment = (bdev_discard_alignment(bdev) >> 9) % granularity; max_discard_sectors = min(bdev_max_discard_sectors(bdev), (1U << 22)); diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 0e061c9896eff..976cf987b3920 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -759,7 +759,7 @@ static void loop_config_discard(struct loop_device *lo) struct request_queue *backingq = bdev_get_queue(I_BDEV(inode)); max_discard_sectors = backingq->limits.max_write_zeroes_sectors; - granularity = backingq->limits.discard_granularity ?: + granularity = bdev_discard_granularity(I_BDEV(inode)) ?: queue_physical_block_size(backingq); /* diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c index 6cb9f87843278..25f33eb25337c 100644 --- a/drivers/target/target_core_device.c +++ b/drivers/target/target_core_device.c @@ -835,7 +835,6 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib, struct block_device *bdev) { - struct request_queue *q = bdev_get_queue(bdev); int block_size = bdev_logical_block_size(bdev); if (!bdev_max_discard_sectors(bdev)) @@ -847,7 +846,7 @@ bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib, * Currently hardcoded to 1 in Linux/SCSI code.. */ attrib->max_unmap_block_desc_count = 1; - attrib->unmap_granularity = q->limits.discard_granularity / block_size; + attrib->unmap_granularity = bdev_discard_granularity(bdev) / block_size; attrib->unmap_granularity_alignment = bdev_discard_alignment(bdev) / block_size; return true; diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 096bb0da03f1c..70765d59616a5 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -468,7 +468,6 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info, void __user *arg) { struct btrfs_device *device; - struct request_queue *q; struct fstrim_range range; u64 minlen = ULLONG_MAX; u64 num_devices = 0; @@ -498,14 +497,11 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info, rcu_read_lock(); list_for_each_entry_rcu(device, &fs_info->fs_devices->devices, dev_list) { - if (!device->bdev) + if (!device->bdev || !bdev_max_discard_sectors(device->bdev)) continue; - q = bdev_get_queue(device->bdev); - if (bdev_max_discard_sectors(device->bdev)) { - num_devices++; - minlen = min_t(u64, q->limits.discard_granularity, - minlen); - } + num_devices++; + minlen = min_t(u64, bdev_discard_granularity(device->bdev), + minlen); } rcu_read_unlock(); diff --git a/fs/exfat/file.c b/fs/exfat/file.c index 765e4f63dd18d..20d4e47f57ab2 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -351,7 +351,6 @@ int exfat_setattr(struct user_namespace *mnt_userns, struct dentry *dentry, static int exfat_ioctl_fitrim(struct inode *inode, unsigned long arg) { - struct request_queue *q = bdev_get_queue(inode->i_sb->s_bdev); struct fstrim_range range; int ret = 0; @@ -365,7 +364,7 @@ static int exfat_ioctl_fitrim(struct inode *inode, unsigned long arg) return -EFAULT; range.minlen = max_t(unsigned int, range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(inode->i_sb->s_bdev)); ret = exfat_trim_fs(inode, &range); if (ret < 0) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index c3668c977cd99..6d1820536d88d 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -6455,7 +6455,7 @@ ext4_trim_all_free(struct super_block *sb, ext4_group_t group, */ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range) { - struct request_queue *q = bdev_get_queue(sb->s_bdev); + unsigned int discard_granularity = bdev_discard_granularity(sb->s_bdev); struct ext4_group_info *grp; ext4_group_t group, first_group, last_group; ext4_grpblk_t cnt = 0, first_cluster, last_cluster; @@ -6475,9 +6475,9 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range) range->len < sb->s_blocksize) return -EINVAL; /* No point to try to trim less than discard granularity */ - if (range->minlen < q->limits.discard_granularity) { + if (range->minlen < discard_granularity) { minlen = EXT4_NUM_B2C(EXT4_SB(sb), - q->limits.discard_granularity >> sb->s_blocksize_bits); + discard_granularity >> sb->s_blocksize_bits); if (minlen > EXT4_CLUSTERS_PER_GROUP(sb)) goto out; } diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 5b89af0f27f05..8053d99f3920b 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -2285,7 +2285,6 @@ static int f2fs_ioc_fitrim(struct file *filp, unsigned long arg) { struct inode *inode = file_inode(filp); struct super_block *sb = inode->i_sb; - struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; int ret; @@ -2304,7 +2303,7 @@ static int f2fs_ioc_fitrim(struct file *filp, unsigned long arg) return ret; range.minlen = max((unsigned int)range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(sb->s_bdev)); ret = f2fs_trim_fs(F2FS_SB(sb), &range); mnt_drop_write_file(filp); if (ret < 0) diff --git a/fs/fat/file.c b/fs/fat/file.c index e4c7d10e80129..bf91f977debea 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@ -127,7 +127,6 @@ static int fat_ioctl_fitrim(struct inode *inode, unsigned long arg) struct super_block *sb = inode->i_sb; struct fstrim_range __user *user_range; struct fstrim_range range; - struct request_queue *q = bdev_get_queue(sb->s_bdev); int err; if (!capable(CAP_SYS_ADMIN)) @@ -141,7 +140,7 @@ static int fat_ioctl_fitrim(struct inode *inode, unsigned long arg) return -EFAULT; range.minlen = max_t(unsigned int, range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(sb->s_bdev)); err = fat_trim_fs(inode, &range); if (err < 0) diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 7f20ac9133bc6..6d26bb5254844 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c @@ -1386,7 +1386,7 @@ int gfs2_fitrim(struct file *filp, void __user *argp) { struct inode *inode = file_inode(filp); struct gfs2_sbd *sdp = GFS2_SB(inode); - struct request_queue *q = bdev_get_queue(sdp->sd_vfs->s_bdev); + struct block_device *bdev = sdp->sd_vfs->s_bdev; struct buffer_head *bh; struct gfs2_rgrpd *rgd; struct gfs2_rgrpd *rgd_end; @@ -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 (!bdev_max_discard_sectors(sdp->sd_vfs->s_bdev)) + if (!bdev_max_discard_sectors(bdev)) return -EOPNOTSUPP; if (copy_from_user(&r, argp, sizeof(r))) @@ -1418,8 +1418,7 @@ int gfs2_fitrim(struct file *filp, void __user *argp) start = r.start >> bs_shift; end = start + (r.len >> bs_shift); minlen = max_t(u64, r.minlen, sdp->sd_sb.sb_bsize); - minlen = max_t(u64, minlen, - q->limits.discard_granularity) >> bs_shift; + minlen = max_t(u64, minlen, bdev_discard_granularity(bdev)) >> bs_shift; if (end <= start || minlen > sdp->sd_max_rg_data) return -EINVAL; diff --git a/fs/jfs/ioctl.c b/fs/jfs/ioctl.c index 357ae6e5c36ec..1e7b177ece605 100644 --- a/fs/jfs/ioctl.c +++ b/fs/jfs/ioctl.c @@ -110,7 +110,6 @@ long jfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) case FITRIM: { struct super_block *sb = inode->i_sb; - struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; s64 ret = 0; @@ -127,7 +126,7 @@ long jfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) return -EFAULT; range.minlen = max_t(unsigned int, range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(sb->s_bdev)); ret = jfs_ioc_trim(inode, &range); if (ret < 0) diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c index 52b73f558fcb1..87e1004b606d2 100644 --- a/fs/nilfs2/ioctl.c +++ b/fs/nilfs2/ioctl.c @@ -1052,7 +1052,6 @@ static int nilfs_ioctl_resize(struct inode *inode, struct file *filp, static int nilfs_ioctl_trim_fs(struct inode *inode, void __user *argp) { struct the_nilfs *nilfs = inode->i_sb->s_fs_info; - struct request_queue *q = bdev_get_queue(nilfs->ns_bdev); struct fstrim_range range; int ret; @@ -1065,7 +1064,8 @@ static int nilfs_ioctl_trim_fs(struct inode *inode, void __user *argp) if (copy_from_user(&range, argp, sizeof(range))) return -EFAULT; - range.minlen = max_t(u64, range.minlen, q->limits.discard_granularity); + range.minlen = max_t(u64, range.minlen, + bdev_discard_granularity(nilfs->ns_bdev)); down_read(&nilfs->ns_segctor_sem); ret = nilfs_sufile_trim_fs(nilfs->ns_sufile, &range); diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c index e763236169331..15806eeae217a 100644 --- a/fs/ntfs3/file.c +++ b/fs/ntfs3/file.c @@ -22,7 +22,6 @@ static int ntfs_ioctl_fitrim(struct ntfs_sb_info *sbi, unsigned long arg) { struct fstrim_range __user *user_range; struct fstrim_range range; - struct request_queue *q = bdev_get_queue(sbi->sb->s_bdev); int err; if (!capable(CAP_SYS_ADMIN)) @@ -35,7 +34,8 @@ static int ntfs_ioctl_fitrim(struct ntfs_sb_info *sbi, unsigned long arg) if (copy_from_user(&range, user_range, sizeof(range))) return -EFAULT; - range.minlen = max_t(u32, range.minlen, q->limits.discard_granularity); + range.minlen = max_t(u32, range.minlen, + bdev_discard_granularity(sbi->sb->s_bdev)); err = ntfs_trim_fs(sbi, &range); if (err < 0) diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c index c734085bcce4a..5f2e414cfa79b 100644 --- a/fs/ntfs3/super.c +++ b/fs/ntfs3/super.c @@ -882,7 +882,6 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc) int err; struct ntfs_sb_info *sbi = sb->s_fs_info; struct block_device *bdev = sb->s_bdev; - struct request_queue *rq; struct inode *inode; struct ntfs_inode *ni; size_t i, tt; @@ -912,9 +911,8 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc) goto out; } - rq = bdev_get_queue(bdev); - if (bdev_max_discard_sectors(bdev) && rq->limits.discard_granularity) { - sbi->discard_granularity = rq->limits.discard_granularity; + if (bdev_max_discard_sectors(bdev) && bdev_discard_granularity(bdev)) { + sbi->discard_granularity = bdev_discard_granularity(bdev); sbi->discard_granularity_mask_inv = ~(u64)(sbi->discard_granularity - 1); } diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c index 9b78ef103ada6..afd54ec661030 100644 --- a/fs/ocfs2/ioctl.c +++ b/fs/ocfs2/ioctl.c @@ -903,7 +903,6 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) case FITRIM: { struct super_block *sb = inode->i_sb; - struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; int ret = 0; @@ -916,7 +915,7 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) if (copy_from_user(&range, argp, sizeof(range))) return -EFAULT; - range.minlen = max_t(u64, q->limits.discard_granularity, + range.minlen = max_t(u64, bdev_discard_granularity(sb->s_bdev), range.minlen); ret = ocfs2_trim_fs(sb, &range); if (ret < 0) diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c index a4e6609d616b7..e2ada115c23f9 100644 --- a/fs/xfs/xfs_discard.c +++ b/fs/xfs/xfs_discard.c @@ -152,8 +152,8 @@ xfs_ioc_trim( struct xfs_mount *mp, struct fstrim_range __user *urange) { - struct request_queue *q = bdev_get_queue(mp->m_ddev_targp->bt_bdev); - unsigned int granularity = q->limits.discard_granularity; + unsigned int granularity = + bdev_discard_granularity(mp->m_ddev_targp->bt_bdev); struct fstrim_range range; xfs_daddr_t start, end, minlen; xfs_agnumber_t start_agno, end_agno, agno; diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 767ab22e1052a..f1cf557ea20ef 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1257,6 +1257,11 @@ static inline unsigned int bdev_max_discard_sectors(struct block_device *bdev) return bdev_get_queue(bdev)->limits.max_discard_sectors; } +static inline unsigned int bdev_discard_granularity(struct block_device *bdev) +{ + return bdev_get_queue(bdev)->limits.discard_granularity; +} + static inline unsigned int bdev_write_zeroes_sectors(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); -- 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 229A3C47080 for ; Fri, 15 Apr 2022 04:54:42 +0000 (UTC) Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.94.2) (envelope-from ) id 1nfDyk-00019a-RJ; Fri, 15 Apr 2022 04:54:41 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1nfDyj-00019E-FR; Fri, 15 Apr 2022 04:54:40 +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=kNp/brlkIe235G5uL2MrVnIRtgqb7cDd/DmZFPBWIBU=; b=A1TqcReFxQle4tg8t3Pq5UaT06 uHHIB24liK5wwCjHZoaU3qRlipZvyHJcPGpspGt8N+G3i5ZfO9j92+jNIbS+gDXl3HjvVxMaO3DX3 z12mVSivkWQIo2kPwGACwy7PLChB//cc7n2sQ49PJhtSpQyOsIbXmKxA6pWTOTRrBKOI=; 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=kNp/brlkIe235G5uL2MrVnIRtgqb7cDd/DmZFPBWIBU=; b=NB5YCM+ZQ7iqH4ySDtfUnIqt2b ezdUjVKsym2VZ4OJwttvOSXDXv1VEJcNi0dp1pZHlQd8VsxlghzAeSRcWFRnFCJXiWg6DbobC/4ZF 9w9i0bPGezy3/DZifUOzcstJyYNzkazRen7Sb/yNHblJ80Ob6B+qnSOlDi8+kt39k8/o=; Received: from bombadil.infradead.org ([198.137.202.133]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.94.2) id 1nfDyg-00087h-RB; Fri, 15 Apr 2022 04:54:39 +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=kNp/brlkIe235G5uL2MrVnIRtgqb7cDd/DmZFPBWIBU=; b=Co/TUtYjxXhBannRnRPPMzniSz KzMOTkfBm1/hatrRCsXat8xvCYh5GhThX4mzrGtKHb6LAYG+sPH3KwWtVY3xSHJr/UXxKAr/c8lOd 9nzEDK8J1+urJnRHTt8OvyyB9riUUShlfJxQQc5tl17Aeq2Ob83x7bFSyDRg1kFsMfBGYCbDiai4T MmRIecJu05pH8quQ4Da7LC0ahNKk3viQlUZsK3kTx8GJB07Ab+tCpvf4TxuQJg0Ur8EB4xfyeBW86 w/cFJ63yhIzxe5o3O4E4JugMkp6nxsaFU/g8r/FsjvJTzkEcJyR5P45yJBFH2vwfQ5gqACkXysc+F Z7/+X18g==; 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 1nfDyL-008Pnr-T3; Fri, 15 Apr 2022 04:54:18 +0000 From: Christoph Hellwig To: Jens Axboe Date: Fri, 15 Apr 2022 06:52:56 +0200 Message-Id: <20220415045258.199825-26-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: 1nfDyg-00087h-RB Subject: [f2fs-dev] [PATCH 25/27] block: add a bdev_discard_granularity helper 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, 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, Ryusuke Konishi , 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 QWJzdHJhY3QgYXdheSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZmlsZSBzeXN0ZW1zIGJ5 IHByb3ZpZGluZyBhCmJsb2NrX2RldmljZSBiYXNlZCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRp c2NhcmQgZ3JhbnVsYXJpdHkuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNo QGxzdC5kZT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2Vu QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlzdG9waC5i b2VobXdhbGRlckBsaW5iaXQuY29tPiBbZHJiZF0KQWNrZWQtYnk6IFJ5dXN1a2UgS29uaXNoaSA8 a29uaXNoaS5yeXVzdWtlQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJi YUBzdXNlLmNvbT4gW2J0cmZzXQotLS0KIGJsb2NrL2Jsay1saWIuYyAgICAgICAgICAgICAgICAg ICAgIHwgIDUgKystLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgICAgICAgIHwgIDkg KysrKystLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jICB8ICAzICstLQog ZHJpdmVycy9ibG9jay9sb29wLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMyArLS0KIGZzL2J0cmZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0tCiBmcy9leGZhdC9maWxlLmMgICAgICAgICAg ICAgICAgICAgICB8ICAzICstLQogZnMvZXh0NC9tYmFsbG9jLmMgICAgICAgICAgICAgICAgICAg fCAgNiArKystLS0KIGZzL2YyZnMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0t CiBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvZ2ZzMi9y Z3JwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiBmcy9qZnMvaW9jdGwuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvbmlsZnMyL2lvY3RsLmMgICAgICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBmcy9udGZzMy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KIGZzL250ZnMzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLS0t CiBmcy9vY2ZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMveGZzL3hm c19kaXNjYXJkLmMgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBpbmNsdWRlL2xpbnV4L2Jsa2Rl di5oICAgICAgICAgICAgICB8ICA1ICsrKysrCiAxOCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9i bG9jay9ibGstbGliLmMKaW5kZXggOGI0YjY2ZDNhOWJmYy4uNDNhYTRkN2ZlODU5ZiAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTIsOCArMTIs NyBAQAogCiBzdGF0aWMgc2VjdG9yX3QgYmlvX2Rpc2NhcmRfbGltaXQoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yKQogewotCXVuc2lnbmVkIGludCBkaXNjYXJkX2dy YW51bGFyaXR5ID0KLQkJYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJk X2dyYW51bGFyaXR5KGJkZXYpOwogCXNlY3Rvcl90IGdyYW51bGFyaXR5X2FsaWduZWRfc2VjdG9y OwogCiAJaWYgKGJkZXZfaXNfcGFydGl0aW9uKGJkZXYpKQpAQCAtNTksNyArNTgsNyBAQCBpbnQg X19ibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3Jf dCBzZWN0b3IsCiAJfQogCiAJLyogSW4gY2FzZSB0aGUgZGlzY2FyZCBncmFudWxhcml0eSBpc24n dCBzZXQgYnkgYnVnZ3kgZGV2aWNlIGRyaXZlciAqLwotCWlmIChXQVJOX09OX09OQ0UoIXEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KSkgeworCWlmIChXQVJOX09OX09OQ0UoIWJkZXZfZGlz Y2FyZF9ncmFudWxhcml0eShiZGV2KSkpIHsKIAkJY2hhciBkZXZfbmFtZVtCREVWTkFNRV9TSVpF XTsKIAogCQliZGV2bmFtZShiZGV2LCBkZXZfbmFtZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Js b2NrL2RyYmQvZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCAw Njc4Y2ViNTA1Nzk5Li5hNjI4MGRjYjM3Njc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9ubC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTE0MjUs NyArMTQyNSw2IEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX2Rpc2tfY29uZihzdHJ1Y3QgZHJiZF9k ZXZpY2UgKmRldmljZSwgc3RydWN0IGRpc2tfY29uZiAqZGlzCiAJCQkgICAgICAgc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKm5iYykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gbmJj LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2LT5iZF9kaXNr LT5xdWV1ZTsKIAogCWlmIChkaXNrX2NvbmYtPmFsX2V4dGVudHMgPCBEUkJEX0FMX0VYVEVOVFNf TUlOKQogCQlkaXNrX2NvbmYtPmFsX2V4dGVudHMgPSBEUkJEX0FMX0VYVEVOVFNfTUlOOwpAQCAt MTQ0MiwxMiArMTQ0MSwxNCBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0 IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCWlmIChkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJaW50IG9yaWdfdmFsdWUgPSBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCXNlY3Rvcl90IGRpc2NhcmRfc2l6ZSA9IGJk ZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSA8PCA5OworCQl1bnNpZ25lZCBpbnQgZGlzY2Fy ZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KTsKIAkJaW50IHJl bWFpbmRlcjsKIAotCQlpZiAocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCi0JCQlkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJaWYgKGRpc2NhcmRf Z3JhbnVsYXJpdHkgPiBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCisJCQlkaXNr X2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPSBkaXNjYXJkX2dyYW51bGFyaXR5OwogCi0J CXJlbWFpbmRlciA9IGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSAlIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkgJQorCQkJCWRpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCWRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSArPSByZW1haW5kZXI7CiAKIAkJaWYgKGRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSA+IGRpc2NhcmRfc2l6ZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9y ZWNlaXZlci5jCmluZGV4IDhhNGE0N2RhNTZmZTkuLjI3NWM1M2M3YjYyOWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKKysrIGIvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTUxMSw3ICsxNTExLDYgQEAgdm9pZCBkcmJkX2J1bXBf d3JpdGVfb3JkZXJpbmcoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgZHJi ZF9iYWNraW4KIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywg aW50IGZsYWdzKQogewogCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBkZXZpY2UtPmxkZXYt PmJhY2tpbmdfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVl KGJkZXYpOwogCXNlY3Rvcl90IHRtcCwgbnI7CiAJdW5zaWduZWQgaW50IG1heF9kaXNjYXJkX3Nl Y3RvcnMsIGdyYW51bGFyaXR5OwogCWludCBhbGlnbm1lbnQ7CkBAIC0xNTIxLDcgKzE1MjAsNyBA QCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAq ZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCQlnb3RvIHplcm9fb3V0OwogCiAJLyogWmVyby1z ZWN0b3IgKHVua25vd24pIGFuZCBvbmUtc2VjdG9yIGdyYW51bGFyaXRpZXMgYXJlIHRoZSBzYW1l LiAgKi8KLQlncmFudWxhcml0eSA9IG1heChxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA+ PiA5LCAxVSk7CisJZ3JhbnVsYXJpdHkgPSBtYXgoYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJk ZXYpID4+IDksIDFVKTsKIAlhbGlnbm1lbnQgPSAoYmRldl9kaXNjYXJkX2FsaWdubWVudChiZGV2 KSA+PiA5KSAlIGdyYW51bGFyaXR5OwogCiAJbWF4X2Rpc2NhcmRfc2VjdG9ycyA9IG1pbihiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldiksICgxVSA8PCAyMikpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAwZTA2MWM5ODk2 ZWZmLi45NzZjZjk4N2IzOTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNzU5LDcgKzc1OSw3IEBAIHN0YXRpYyB2b2lkIGxv b3BfY29uZmlnX2Rpc2NhcmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJc3RydWN0IHJlcXVl c3RfcXVldWUgKmJhY2tpbmdxID0gYmRldl9nZXRfcXVldWUoSV9CREVWKGlub2RlKSk7CiAKIAkJ bWF4X2Rpc2NhcmRfc2VjdG9ycyA9IGJhY2tpbmdxLT5saW1pdHMubWF4X3dyaXRlX3plcm9lc19z ZWN0b3JzOwotCQlncmFudWxhcml0eSA9IGJhY2tpbmdxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA/OgorCQlncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShJX0JERVYo aW5vZGUpKSA/OgogCQkJcXVldWVfcGh5c2ljYWxfYmxvY2tfc2l6ZShiYWNraW5ncSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgYi9kcml2 ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwppbmRleCA2Y2I5Zjg3ODQzMjc4Li4yNWYz M2ViMjUzMzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2Uu YworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwpAQCAtODM1LDcgKzgz NSw2IEBAIHN0cnVjdCBzZV9kZXZpY2UgKnRhcmdldF9hbGxvY19kZXZpY2Uoc3RydWN0IHNlX2hi YSAqaGJhLCBjb25zdCBjaGFyICpuYW1lKQogYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zy b21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkJCQkgICAgICAgc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldikKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3Np emUoYmRldik7CiAKIAlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKQEAgLTg0 Nyw3ICs4NDYsNyBAQCBib29sIHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZShzdHJ1 Y3Qgc2VfZGV2X2F0dHJpYiAqYXR0cmliLAogCSAqIEN1cnJlbnRseSBoYXJkY29kZWQgdG8gMSBp biBMaW51eC9TQ1NJIGNvZGUuLgogCSAqLwogCWF0dHJpYi0+bWF4X3VubWFwX2Jsb2NrX2Rlc2Nf Y291bnQgPSAxOwotCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSAvIGJsb2NrX3NpemU7CisJYXR0cmliLT51bm1hcF9ncmFudWxhcml0eSA9 IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KSAvIGJsb2NrX3NpemU7CiAJYXR0cmliLT51 bm1hcF9ncmFudWxhcml0eV9hbGlnbm1lbnQgPQogCQliZGV2X2Rpc2NhcmRfYWxpZ25tZW50KGJk ZXYpIC8gYmxvY2tfc2l6ZTsKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lv Y3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jCmluZGV4IDA5NmJiMGRhMDNmMWMuLjcwNzY1ZDU5NjE2 YTUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpA QCAtNDY4LDcgKzQ2OCw2IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfZml0cmlt KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQkJCQl2b2lkIF9fdXNlciAqYXJnKQog ewogCXN0cnVjdCBidHJmc19kZXZpY2UgKmRldmljZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCXU2NCBtaW5sZW4gPSBVTExPTkdfTUFY OwogCXU2NCBudW1fZGV2aWNlcyA9IDA7CkBAIC00OTgsMTQgKzQ5NywxMSBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5m bywKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2aWNlLCAm ZnNfaW5mby0+ZnNfZGV2aWNlcy0+ZGV2aWNlcywKIAkJCQlkZXZfbGlzdCkgewotCQlpZiAoIWRl dmljZS0+YmRldikKKwkJaWYgKCFkZXZpY2UtPmJkZXYgfHwgIWJkZXZfbWF4X2Rpc2NhcmRfc2Vj dG9ycyhkZXZpY2UtPmJkZXYpKQogCQkJY29udGludWU7Ci0JCXEgPSBiZGV2X2dldF9xdWV1ZShk ZXZpY2UtPmJkZXYpOwotCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+YmRl dikpIHsKLQkJCW51bV9kZXZpY2VzKys7Ci0JCQltaW5sZW4gPSBtaW5fdCh1NjQsIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5LAotCQkJCSAgICAgbWlubGVuKTsKLQkJfQorCQludW1fZGV2 aWNlcysrOworCQltaW5sZW4gPSBtaW5fdCh1NjQsIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShk ZXZpY2UtPmJkZXYpLAorCQkJCSAgICBtaW5sZW4pOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsK IApkaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jCmluZGV4IDc2 NWU0ZjYzZGQxOGQuLjIwZDRlNDdmNTdhYjIgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2ZpbGUuYwor KysgYi9mcy9leGZhdC9maWxlLmMKQEAgLTM1MSw3ICszNTEsNiBAQCBpbnQgZXhmYXRfc2V0YXR0 cihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwKIAogc3RhdGljIGludCBleGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwg dW5zaWduZWQgbG9uZyBhcmcpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShpbm9kZS0+aV9zYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdl OwogCWludCByZXQgPSAwOwogCkBAIC0zNjUsNyArMzY0LDcgQEAgc3RhdGljIGludCBleGZhdF9p b2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJl dHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5n ZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCQkJCWJkZXZf ZGlzY2FyZF9ncmFudWxhcml0eShpbm9kZS0+aV9zYi0+c19iZGV2KSk7CiAKIAlyZXQgPSBleGZh dF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCBjMzY2OGM5NzdjZDk5Li42 ZDE4MjA1MzZkODhkIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0 L21iYWxsb2MuYwpAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgZXh0NF90cmltX2FsbF9mcmVlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncm91cCwKICAqLwogaW50IGV4dDRfdHJp bV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmltX3JhbmdlICpyYW5nZSkK IHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYp OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51 bGFyaXR5KHNiLT5zX2JkZXYpOwogCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycDsKIAlleHQ0 X2dyb3VwX3QgZ3JvdXAsIGZpcnN0X2dyb3VwLCBsYXN0X2dyb3VwOwogCWV4dDRfZ3JwYmxrX3Qg Y250ID0gMCwgZmlyc3RfY2x1c3RlciwgbGFzdF9jbHVzdGVyOwpAQCAtNjQ3NSw5ICs2NDc1LDkg QEAgaW50IGV4dDRfdHJpbV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmlt X3JhbmdlICpyYW5nZSkKIAkgICAgcmFuZ2UtPmxlbiA8IHNiLT5zX2Jsb2Nrc2l6ZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJLyogTm8gcG9pbnQgdG8gdHJ5IHRvIHRyaW0gbGVzcyB0aGFuIGRpc2Nh cmQgZ3JhbnVsYXJpdHkgKi8KLQlpZiAocmFuZ2UtPm1pbmxlbiA8IHEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KSB7CisJaWYgKHJhbmdlLT5taW5sZW4gPCBkaXNjYXJkX2dyYW51bGFyaXR5 KSB7CiAJCW1pbmxlbiA9IEVYVDRfTlVNX0IyQyhFWFQ0X1NCKHNiKSwKLQkJCXEtPmxpbWl0cy5k aXNjYXJkX2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKKwkJCQlkaXNjYXJk X2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKIAkJaWYgKG1pbmxlbiA+IEVY VDRfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZmlsZS5jIGIvZnMvZjJmcy9maWxlLmMKaW5kZXggNWI4OWFmMGYyN2YwNS4uODA1 M2Q5OWYzOTIwYiAxMDA2NDQKLS0tIGEvZnMvZjJmcy9maWxlLmMKKysrIGIvZnMvZjJmcy9maWxl LmMKQEAgLTIyODUsNyArMjI4NSw2IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVj dCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf c2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAgLTIzMDQsNyAr MjMwMyw3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJcmV0dXJuIHJldDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heCgo dW5zaWduZWQgaW50KXJhbmdlLm1pbmxlbiwKLQkJCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSk7CisJCQkgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCXJl dCA9IGYyZnNfdHJpbV9mcyhGMkZTX1NCKHNiKSwgJnJhbmdlKTsKIAltbnRfZHJvcF93cml0ZV9m aWxlKGZpbHApOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZmF0L2ZpbGUuYyBiL2Zz L2ZhdC9maWxlLmMKaW5kZXggZTRjN2QxMGU4MDEyOS4uYmY5MWY5NzdkZWJlYSAxMDA2NDQKLS0t IGEvZnMvZmF0L2ZpbGUuYworKysgYi9mcy9mYXQvZmlsZS5jCkBAIC0xMjcsNyArMTI3LDYgQEAg c3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGxvbmcgYXJnKQogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKIAlzdHJ1 Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAqdXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNf YmRldik7CiAJaW50IGVycjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTE0 MSw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlu bGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQkgICAgIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5 KHNiLT5zX2JkZXYpKTsKIAogCWVyciA9IGZhdF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlm IChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA3ZjIwYWM5MTMzYmM2Li42ZDI2YmI1MjU0ODQ0IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIHsKIAlzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9 IEdGUzJfU0IoaW5vZGUpOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVl dWUoc2RwLT5zZF92ZnMtPnNfYmRldik7CisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNk cC0+c2RfdmZzLT5zX2JkZXY7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKIAlzdHJ1Y3QgZ2Zz Ml9yZ3JwZCAqcmdkOwogCXN0cnVjdCBnZnMyX3JncnBkICpyZ2RfZW5kOwpAQCAtMTQwNSw3ICsx NDA1LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAq YXJncCkKIAlpZiAoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkK IAkJcmV0dXJuIC1FUk9GUzsKIAotCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNkcC0+ c2RfdmZzLT5zX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIoJnIsIGFyZ3AsIHNp emVvZihyKSkpCkBAIC0xNDE4LDggKzE0MTgsNyBAQCBpbnQgZ2ZzMl9maXRyaW0oc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgX191c2VyICphcmdwKQogCXN0YXJ0ID0gci5zdGFydCA+PiBic19zaGlm dDsKIAllbmQgPSBzdGFydCArIChyLmxlbiA+PiBic19zaGlmdCk7CiAJbWlubGVuID0gbWF4X3Qo dTY0LCByLm1pbmxlbiwgc2RwLT5zZF9zYi5zYl9ic2l6ZSk7Ci0JbWlubGVuID0gbWF4X3QodTY0 LCBtaW5sZW4sCi0JCSAgICAgICBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgPj4gYnNf c2hpZnQ7CisJbWlubGVuID0gbWF4X3QodTY0LCBtaW5sZW4sIGJkZXZfZGlzY2FyZF9ncmFudWxh cml0eShiZGV2KSkgPj4gYnNfc2hpZnQ7CiAKIAlpZiAoZW5kIDw9IHN0YXJ0IHx8IG1pbmxlbiA+ IHNkcC0+c2RfbWF4X3JnX2RhdGEpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZnMv amZzL2lvY3RsLmMgYi9mcy9qZnMvaW9jdGwuYwppbmRleCAzNTdhZTZlNWMzNmVjLi4xZTdiMTc3 ZWNlNjA1IDEwMDY0NAotLS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpA QCAtMTEwLDcgKzExMCw2IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJczY0IHJldCA9IDA7CiAKQEAgLTEyNyw3ICsxMjYsNyBAQCBsb25nIGpmc19p b2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1bnNpZ25l ZCBpbnQsIHJhbmdlLm1pbmxlbiwKLQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsK KwkJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSk7CiAKIAkJcmV0 ID0gamZzX2lvY190cmltKGlub2RlLCAmcmFuZ2UpOwogCQlpZiAocmV0IDwgMCkKZGlmZiAtLWdp dCBhL2ZzL25pbGZzMi9pb2N0bC5jIGIvZnMvbmlsZnMyL2lvY3RsLmMKaW5kZXggNTJiNzNmNTU4 ZmNiMS4uODdlMTAwNGI2MDZkMiAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2lvY3RsLmMKKysrIGIv ZnMvbmlsZnMyL2lvY3RsLmMKQEAgLTEwNTIsNyArMTA1Miw2IEBAIHN0YXRpYyBpbnQgbmlsZnNf aW9jdGxfcmVzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwLAogc3Rh dGljIGludCBuaWxmc19pb2N0bF90cmltX2ZzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgX191 c2VyICphcmdwKQogewogCXN0cnVjdCB0aGVfbmlsZnMgKm5pbGZzID0gaW5vZGUtPmlfc2ItPnNf ZnNfaW5mbzsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKG5pbGZz LT5uc19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAg LTEwNjUsNyArMTA2NCw4IEBAIHN0YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJh bmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcmFuZ2UubWlubGVuLAorCQkJICAg ICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobmlsZnMtPm5zX2JkZXYpKTsKIAogCWRvd25fcmVh ZCgmbmlsZnMtPm5zX3NlZ2N0b3Jfc2VtKTsKIAlyZXQgPSBuaWxmc19zdWZpbGVfdHJpbV9mcyhu aWxmcy0+bnNfc3VmaWxlLCAmcmFuZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvZmlsZS5jIGIv ZnMvbnRmczMvZmlsZS5jCmluZGV4IGU3NjMyMzYxNjkzMzEuLjE1ODA2ZWVhZTIxN2EgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9maWxlLmMKQEAgLTIyLDcgKzIy LDYgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgbnRmc19zYl9pbmZvICpz YmksIHVuc2lnbmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICp1 c2VyX3JhbmdlOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgcmFuZ2U7Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYmktPnNiLT5zX2JkZXYpOwogCWludCBlcnI7CiAK IAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0zNSw3ICszNCw4IEBAIHN0YXRpYyBp bnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBs b25nIGFyZykKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCB1c2VyX3JhbmdlLCBzaXplb2Yo cmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1MzIs IHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCXJhbmdlLm1p bmxlbiA9IG1heF90KHUzMiwgcmFuZ2UubWlubGVuLAorCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3Jh bnVsYXJpdHkoc2JpLT5zYi0+c19iZGV2KSk7CiAKIAllcnIgPSBudGZzX3RyaW1fZnMoc2JpLCAm cmFuZ2UpOwogCWlmIChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvc3VwZXIuYyBiL2Zz L250ZnMzL3N1cGVyLmMKaW5kZXggYzczNDA4NWJjY2U0YS4uNWYyZTQxNGNmYTc5YiAxMDA2NDQK LS0tIGEvZnMvbnRmczMvc3VwZXIuYworKysgYi9mcy9udGZzMy9zdXBlci5jCkBAIC04ODIsNyAr ODgyLDYgQEAgc3RhdGljIGludCBudGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWludCBlcnI7CiAJc3RydWN0IG50ZnNfc2JfaW5m byAqc2JpID0gc2ItPnNfZnNfaW5mbzsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2It PnNfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcnE7CiAJc3RydWN0IGlub2RlICppbm9k ZTsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmk7CiAJc2l6ZV90IGksIHR0OwpAQCAtOTEyLDkgKzkx MSw4IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAkJZ290byBvdXQ7CiAJfQogCi0JcnEgPSBiZGV2X2dl dF9xdWV1ZShiZGV2KTsKLQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpICYmIHJx LT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgewotCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJp dHkgPSBycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJaWYgKGJkZXZfbWF4X2Rpc2Nh cmRfc2VjdG9ycyhiZGV2KSAmJiBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpIHsKKwkJ c2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYp OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlfbWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwogCX0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2lvY3Rs LmMgYi9mcy9vY2ZzMi9pb2N0bC5jCmluZGV4IDliNzhlZjEwM2FkYTYuLmFmZDU0ZWM2NjEwMzAg MTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2lvY3RsLmMKKysrIGIvZnMvb2NmczIvaW9jdGwuYwpAQCAt OTAzLDcgKzkwMyw2IEBAIGxvbmcgb2NmczJfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCWNhc2UgRklUUklNOgogCXsKIAkJc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOwotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIApAQCAtOTE2LDcgKzkxNSw3IEBAIGxvbmcgb2NmczJf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkK IAkJCXJldHVybiAtRUZBVUxUOwogCi0JCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcS0+bGlt aXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHksCisJCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgYmRl dl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpLAogCQkJCSAgICAgcmFuZ2UubWlubGVu KTsKIAkJcmV0ID0gb2NmczJfdHJpbV9mcyhzYiwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRp ZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmlu ZGV4IGE0ZTY2MDlkNjE2YjcuLmUyYWRhMTE1YzIzZjkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNf ZGlzY2FyZC5jCisrKyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCkBAIC0xNTIsOCArMTUyLDggQEAg eGZzX2lvY190cmltKAogCXN0cnVjdCB4ZnNfbW91bnQJCSptcCwKIAlzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlcgkqdXJhbmdlKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpxID0gYmRldl9n ZXRfcXVldWUobXAtPm1fZGRldl90YXJncC0+YnRfYmRldik7Ci0JdW5zaWduZWQgaW50CQlncmFu dWxhcml0eSA9IHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCXVuc2lnbmVkIGludAkJ Z3JhbnVsYXJpdHkgPQorCQliZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobXAtPm1fZGRldl90YXJn cC0+YnRfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZQlyYW5nZTsKIAl4ZnNfZGFkZHJfdAkJ c3RhcnQsIGVuZCwgbWlubGVuOwogCXhmc19hZ251bWJlcl90CQlzdGFydF9hZ25vLCBlbmRfYWdu bywgYWdubzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xp bnV4L2Jsa2Rldi5oCmluZGV4IDc2N2FiMjJlMTA1MmEuLmYxY2Y1NTdlYTIwZWYgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApA QCAtMTI1Nyw2ICsxMjU3LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCXJldHVybiBiZGV2 X2dldF9xdWV1ZShiZGV2KS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnM7CiB9CiAKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2KQoreworCXJldHVybiBiZGV2X2dldF9xdWV1ZShiZGV2KS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJk ZXZfd3JpdGVfemVyb2VzX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIHsKIAlz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotLSAKMi4zMC4y CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9y Z2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4 LWYyZnMtZGV2ZWwK 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 smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.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 5454CC433EF for ; Fri, 15 Apr 2022 04:54:38 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id D5CA84051D; Fri, 15 Apr 2022 04:54:37 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sXZYh5FgAYaS; Fri, 15 Apr 2022 04:54:36 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 04F65405C5; Fri, 15 Apr 2022 04:54:36 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 676BAC0086; Fri, 15 Apr 2022 04:54:35 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5E815C002C for ; Fri, 15 Apr 2022 04:54:34 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 3C3A741983 for ; Fri, 15 Apr 2022 04:54:34 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp4.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=infradead.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fm3oYTc4AJlg for ; Fri, 15 Apr 2022 04:54:32 +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 smtp4.osuosl.org (Postfix) with ESMTPS id 3E4EA41982 for ; Fri, 15 Apr 2022 04:54:32 +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=kNp/brlkIe235G5uL2MrVnIRtgqb7cDd/DmZFPBWIBU=; b=Co/TUtYjxXhBannRnRPPMzniSz KzMOTkfBm1/hatrRCsXat8xvCYh5GhThX4mzrGtKHb6LAYG+sPH3KwWtVY3xSHJr/UXxKAr/c8lOd 9nzEDK8J1+urJnRHTt8OvyyB9riUUShlfJxQQc5tl17Aeq2Ob83x7bFSyDRg1kFsMfBGYCbDiai4T MmRIecJu05pH8quQ4Da7LC0ahNKk3viQlUZsK3kTx8GJB07Ab+tCpvf4TxuQJg0Ur8EB4xfyeBW86 w/cFJ63yhIzxe5o3O4E4JugMkp6nxsaFU/g8r/FsjvJTzkEcJyR5P45yJBFH2vwfQ5gqACkXysc+F Z7/+X18g==; 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 1nfDyL-008Pnr-T3; Fri, 15 Apr 2022 04:54:18 +0000 From: Christoph Hellwig To: Jens Axboe Subject: [PATCH 25/27] block: add a bdev_discard_granularity helper Date: Fri, 15 Apr 2022 06:52:56 +0200 Message-Id: <20220415045258.199825-26-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, 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, Ryusuke Konishi , 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" QWJzdHJhY3QgYXdheSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZmlsZSBzeXN0ZW1zIGJ5 IHByb3ZpZGluZyBhCmJsb2NrX2RldmljZSBiYXNlZCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRp c2NhcmQgZ3JhbnVsYXJpdHkuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNo QGxzdC5kZT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2Vu QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlzdG9waC5i b2VobXdhbGRlckBsaW5iaXQuY29tPiBbZHJiZF0KQWNrZWQtYnk6IFJ5dXN1a2UgS29uaXNoaSA8 a29uaXNoaS5yeXVzdWtlQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJi YUBzdXNlLmNvbT4gW2J0cmZzXQotLS0KIGJsb2NrL2Jsay1saWIuYyAgICAgICAgICAgICAgICAg ICAgIHwgIDUgKystLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgICAgICAgIHwgIDkg KysrKystLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jICB8ICAzICstLQog ZHJpdmVycy9ibG9jay9sb29wLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMyArLS0KIGZzL2J0cmZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0tCiBmcy9leGZhdC9maWxlLmMgICAgICAgICAg ICAgICAgICAgICB8ICAzICstLQogZnMvZXh0NC9tYmFsbG9jLmMgICAgICAgICAgICAgICAgICAg fCAgNiArKystLS0KIGZzL2YyZnMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0t CiBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvZ2ZzMi9y Z3JwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiBmcy9qZnMvaW9jdGwuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvbmlsZnMyL2lvY3RsLmMgICAgICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBmcy9udGZzMy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KIGZzL250ZnMzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLS0t CiBmcy9vY2ZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMveGZzL3hm c19kaXNjYXJkLmMgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBpbmNsdWRlL2xpbnV4L2Jsa2Rl di5oICAgICAgICAgICAgICB8ICA1ICsrKysrCiAxOCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9i bG9jay9ibGstbGliLmMKaW5kZXggOGI0YjY2ZDNhOWJmYy4uNDNhYTRkN2ZlODU5ZiAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTIsOCArMTIs NyBAQAogCiBzdGF0aWMgc2VjdG9yX3QgYmlvX2Rpc2NhcmRfbGltaXQoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yKQogewotCXVuc2lnbmVkIGludCBkaXNjYXJkX2dy YW51bGFyaXR5ID0KLQkJYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJk X2dyYW51bGFyaXR5KGJkZXYpOwogCXNlY3Rvcl90IGdyYW51bGFyaXR5X2FsaWduZWRfc2VjdG9y OwogCiAJaWYgKGJkZXZfaXNfcGFydGl0aW9uKGJkZXYpKQpAQCAtNTksNyArNTgsNyBAQCBpbnQg X19ibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3Jf dCBzZWN0b3IsCiAJfQogCiAJLyogSW4gY2FzZSB0aGUgZGlzY2FyZCBncmFudWxhcml0eSBpc24n dCBzZXQgYnkgYnVnZ3kgZGV2aWNlIGRyaXZlciAqLwotCWlmIChXQVJOX09OX09OQ0UoIXEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KSkgeworCWlmIChXQVJOX09OX09OQ0UoIWJkZXZfZGlz Y2FyZF9ncmFudWxhcml0eShiZGV2KSkpIHsKIAkJY2hhciBkZXZfbmFtZVtCREVWTkFNRV9TSVpF XTsKIAogCQliZGV2bmFtZShiZGV2LCBkZXZfbmFtZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Js b2NrL2RyYmQvZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCAw Njc4Y2ViNTA1Nzk5Li5hNjI4MGRjYjM3Njc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9ubC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTE0MjUs NyArMTQyNSw2IEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX2Rpc2tfY29uZihzdHJ1Y3QgZHJiZF9k ZXZpY2UgKmRldmljZSwgc3RydWN0IGRpc2tfY29uZiAqZGlzCiAJCQkgICAgICAgc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKm5iYykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gbmJj LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2LT5iZF9kaXNr LT5xdWV1ZTsKIAogCWlmIChkaXNrX2NvbmYtPmFsX2V4dGVudHMgPCBEUkJEX0FMX0VYVEVOVFNf TUlOKQogCQlkaXNrX2NvbmYtPmFsX2V4dGVudHMgPSBEUkJEX0FMX0VYVEVOVFNfTUlOOwpAQCAt MTQ0MiwxMiArMTQ0MSwxNCBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0 IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCWlmIChkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJaW50IG9yaWdfdmFsdWUgPSBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCXNlY3Rvcl90IGRpc2NhcmRfc2l6ZSA9IGJk ZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSA8PCA5OworCQl1bnNpZ25lZCBpbnQgZGlzY2Fy ZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KTsKIAkJaW50IHJl bWFpbmRlcjsKIAotCQlpZiAocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCi0JCQlkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJaWYgKGRpc2NhcmRf Z3JhbnVsYXJpdHkgPiBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCisJCQlkaXNr X2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPSBkaXNjYXJkX2dyYW51bGFyaXR5OwogCi0J CXJlbWFpbmRlciA9IGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSAlIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkgJQorCQkJCWRpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCWRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSArPSByZW1haW5kZXI7CiAKIAkJaWYgKGRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSA+IGRpc2NhcmRfc2l6ZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9y ZWNlaXZlci5jCmluZGV4IDhhNGE0N2RhNTZmZTkuLjI3NWM1M2M3YjYyOWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKKysrIGIvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTUxMSw3ICsxNTExLDYgQEAgdm9pZCBkcmJkX2J1bXBf d3JpdGVfb3JkZXJpbmcoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgZHJi ZF9iYWNraW4KIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywg aW50IGZsYWdzKQogewogCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBkZXZpY2UtPmxkZXYt PmJhY2tpbmdfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVl KGJkZXYpOwogCXNlY3Rvcl90IHRtcCwgbnI7CiAJdW5zaWduZWQgaW50IG1heF9kaXNjYXJkX3Nl Y3RvcnMsIGdyYW51bGFyaXR5OwogCWludCBhbGlnbm1lbnQ7CkBAIC0xNTIxLDcgKzE1MjAsNyBA QCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAq ZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCQlnb3RvIHplcm9fb3V0OwogCiAJLyogWmVyby1z ZWN0b3IgKHVua25vd24pIGFuZCBvbmUtc2VjdG9yIGdyYW51bGFyaXRpZXMgYXJlIHRoZSBzYW1l LiAgKi8KLQlncmFudWxhcml0eSA9IG1heChxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA+ PiA5LCAxVSk7CisJZ3JhbnVsYXJpdHkgPSBtYXgoYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJk ZXYpID4+IDksIDFVKTsKIAlhbGlnbm1lbnQgPSAoYmRldl9kaXNjYXJkX2FsaWdubWVudChiZGV2 KSA+PiA5KSAlIGdyYW51bGFyaXR5OwogCiAJbWF4X2Rpc2NhcmRfc2VjdG9ycyA9IG1pbihiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldiksICgxVSA8PCAyMikpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAwZTA2MWM5ODk2 ZWZmLi45NzZjZjk4N2IzOTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNzU5LDcgKzc1OSw3IEBAIHN0YXRpYyB2b2lkIGxv b3BfY29uZmlnX2Rpc2NhcmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJc3RydWN0IHJlcXVl c3RfcXVldWUgKmJhY2tpbmdxID0gYmRldl9nZXRfcXVldWUoSV9CREVWKGlub2RlKSk7CiAKIAkJ bWF4X2Rpc2NhcmRfc2VjdG9ycyA9IGJhY2tpbmdxLT5saW1pdHMubWF4X3dyaXRlX3plcm9lc19z ZWN0b3JzOwotCQlncmFudWxhcml0eSA9IGJhY2tpbmdxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA/OgorCQlncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShJX0JERVYo aW5vZGUpKSA/OgogCQkJcXVldWVfcGh5c2ljYWxfYmxvY2tfc2l6ZShiYWNraW5ncSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgYi9kcml2 ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwppbmRleCA2Y2I5Zjg3ODQzMjc4Li4yNWYz M2ViMjUzMzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2Uu YworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwpAQCAtODM1LDcgKzgz NSw2IEBAIHN0cnVjdCBzZV9kZXZpY2UgKnRhcmdldF9hbGxvY19kZXZpY2Uoc3RydWN0IHNlX2hi YSAqaGJhLCBjb25zdCBjaGFyICpuYW1lKQogYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zy b21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkJCQkgICAgICAgc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldikKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3Np emUoYmRldik7CiAKIAlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKQEAgLTg0 Nyw3ICs4NDYsNyBAQCBib29sIHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZShzdHJ1 Y3Qgc2VfZGV2X2F0dHJpYiAqYXR0cmliLAogCSAqIEN1cnJlbnRseSBoYXJkY29kZWQgdG8gMSBp biBMaW51eC9TQ1NJIGNvZGUuLgogCSAqLwogCWF0dHJpYi0+bWF4X3VubWFwX2Jsb2NrX2Rlc2Nf Y291bnQgPSAxOwotCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSAvIGJsb2NrX3NpemU7CisJYXR0cmliLT51bm1hcF9ncmFudWxhcml0eSA9 IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KSAvIGJsb2NrX3NpemU7CiAJYXR0cmliLT51 bm1hcF9ncmFudWxhcml0eV9hbGlnbm1lbnQgPQogCQliZGV2X2Rpc2NhcmRfYWxpZ25tZW50KGJk ZXYpIC8gYmxvY2tfc2l6ZTsKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lv Y3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jCmluZGV4IDA5NmJiMGRhMDNmMWMuLjcwNzY1ZDU5NjE2 YTUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpA QCAtNDY4LDcgKzQ2OCw2IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfZml0cmlt KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQkJCQl2b2lkIF9fdXNlciAqYXJnKQog ewogCXN0cnVjdCBidHJmc19kZXZpY2UgKmRldmljZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCXU2NCBtaW5sZW4gPSBVTExPTkdfTUFY OwogCXU2NCBudW1fZGV2aWNlcyA9IDA7CkBAIC00OTgsMTQgKzQ5NywxMSBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5m bywKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2aWNlLCAm ZnNfaW5mby0+ZnNfZGV2aWNlcy0+ZGV2aWNlcywKIAkJCQlkZXZfbGlzdCkgewotCQlpZiAoIWRl dmljZS0+YmRldikKKwkJaWYgKCFkZXZpY2UtPmJkZXYgfHwgIWJkZXZfbWF4X2Rpc2NhcmRfc2Vj dG9ycyhkZXZpY2UtPmJkZXYpKQogCQkJY29udGludWU7Ci0JCXEgPSBiZGV2X2dldF9xdWV1ZShk ZXZpY2UtPmJkZXYpOwotCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+YmRl dikpIHsKLQkJCW51bV9kZXZpY2VzKys7Ci0JCQltaW5sZW4gPSBtaW5fdCh1NjQsIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5LAotCQkJCSAgICAgbWlubGVuKTsKLQkJfQorCQludW1fZGV2 aWNlcysrOworCQltaW5sZW4gPSBtaW5fdCh1NjQsIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShk ZXZpY2UtPmJkZXYpLAorCQkJCSAgICBtaW5sZW4pOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsK IApkaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jCmluZGV4IDc2 NWU0ZjYzZGQxOGQuLjIwZDRlNDdmNTdhYjIgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2ZpbGUuYwor KysgYi9mcy9leGZhdC9maWxlLmMKQEAgLTM1MSw3ICszNTEsNiBAQCBpbnQgZXhmYXRfc2V0YXR0 cihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwKIAogc3RhdGljIGludCBleGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwg dW5zaWduZWQgbG9uZyBhcmcpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShpbm9kZS0+aV9zYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdl OwogCWludCByZXQgPSAwOwogCkBAIC0zNjUsNyArMzY0LDcgQEAgc3RhdGljIGludCBleGZhdF9p b2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJl dHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5n ZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCQkJCWJkZXZf ZGlzY2FyZF9ncmFudWxhcml0eShpbm9kZS0+aV9zYi0+c19iZGV2KSk7CiAKIAlyZXQgPSBleGZh dF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCBjMzY2OGM5NzdjZDk5Li42 ZDE4MjA1MzZkODhkIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0 L21iYWxsb2MuYwpAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgZXh0NF90cmltX2FsbF9mcmVlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncm91cCwKICAqLwogaW50IGV4dDRfdHJp bV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmltX3JhbmdlICpyYW5nZSkK IHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYp OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51 bGFyaXR5KHNiLT5zX2JkZXYpOwogCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycDsKIAlleHQ0 X2dyb3VwX3QgZ3JvdXAsIGZpcnN0X2dyb3VwLCBsYXN0X2dyb3VwOwogCWV4dDRfZ3JwYmxrX3Qg Y250ID0gMCwgZmlyc3RfY2x1c3RlciwgbGFzdF9jbHVzdGVyOwpAQCAtNjQ3NSw5ICs2NDc1LDkg QEAgaW50IGV4dDRfdHJpbV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmlt X3JhbmdlICpyYW5nZSkKIAkgICAgcmFuZ2UtPmxlbiA8IHNiLT5zX2Jsb2Nrc2l6ZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJLyogTm8gcG9pbnQgdG8gdHJ5IHRvIHRyaW0gbGVzcyB0aGFuIGRpc2Nh cmQgZ3JhbnVsYXJpdHkgKi8KLQlpZiAocmFuZ2UtPm1pbmxlbiA8IHEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KSB7CisJaWYgKHJhbmdlLT5taW5sZW4gPCBkaXNjYXJkX2dyYW51bGFyaXR5 KSB7CiAJCW1pbmxlbiA9IEVYVDRfTlVNX0IyQyhFWFQ0X1NCKHNiKSwKLQkJCXEtPmxpbWl0cy5k aXNjYXJkX2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKKwkJCQlkaXNjYXJk X2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKIAkJaWYgKG1pbmxlbiA+IEVY VDRfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZmlsZS5jIGIvZnMvZjJmcy9maWxlLmMKaW5kZXggNWI4OWFmMGYyN2YwNS4uODA1 M2Q5OWYzOTIwYiAxMDA2NDQKLS0tIGEvZnMvZjJmcy9maWxlLmMKKysrIGIvZnMvZjJmcy9maWxl LmMKQEAgLTIyODUsNyArMjI4NSw2IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVj dCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf c2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAgLTIzMDQsNyAr MjMwMyw3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJcmV0dXJuIHJldDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heCgo dW5zaWduZWQgaW50KXJhbmdlLm1pbmxlbiwKLQkJCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSk7CisJCQkgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCXJl dCA9IGYyZnNfdHJpbV9mcyhGMkZTX1NCKHNiKSwgJnJhbmdlKTsKIAltbnRfZHJvcF93cml0ZV9m aWxlKGZpbHApOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZmF0L2ZpbGUuYyBiL2Zz L2ZhdC9maWxlLmMKaW5kZXggZTRjN2QxMGU4MDEyOS4uYmY5MWY5NzdkZWJlYSAxMDA2NDQKLS0t IGEvZnMvZmF0L2ZpbGUuYworKysgYi9mcy9mYXQvZmlsZS5jCkBAIC0xMjcsNyArMTI3LDYgQEAg c3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGxvbmcgYXJnKQogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKIAlzdHJ1 Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAqdXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNf YmRldik7CiAJaW50IGVycjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTE0 MSw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlu bGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQkgICAgIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5 KHNiLT5zX2JkZXYpKTsKIAogCWVyciA9IGZhdF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlm IChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA3ZjIwYWM5MTMzYmM2Li42ZDI2YmI1MjU0ODQ0IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIHsKIAlzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9 IEdGUzJfU0IoaW5vZGUpOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVl dWUoc2RwLT5zZF92ZnMtPnNfYmRldik7CisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNk cC0+c2RfdmZzLT5zX2JkZXY7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKIAlzdHJ1Y3QgZ2Zz Ml9yZ3JwZCAqcmdkOwogCXN0cnVjdCBnZnMyX3JncnBkICpyZ2RfZW5kOwpAQCAtMTQwNSw3ICsx NDA1LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAq YXJncCkKIAlpZiAoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkK IAkJcmV0dXJuIC1FUk9GUzsKIAotCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNkcC0+ c2RfdmZzLT5zX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIoJnIsIGFyZ3AsIHNp emVvZihyKSkpCkBAIC0xNDE4LDggKzE0MTgsNyBAQCBpbnQgZ2ZzMl9maXRyaW0oc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgX191c2VyICphcmdwKQogCXN0YXJ0ID0gci5zdGFydCA+PiBic19zaGlm dDsKIAllbmQgPSBzdGFydCArIChyLmxlbiA+PiBic19zaGlmdCk7CiAJbWlubGVuID0gbWF4X3Qo dTY0LCByLm1pbmxlbiwgc2RwLT5zZF9zYi5zYl9ic2l6ZSk7Ci0JbWlubGVuID0gbWF4X3QodTY0 LCBtaW5sZW4sCi0JCSAgICAgICBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgPj4gYnNf c2hpZnQ7CisJbWlubGVuID0gbWF4X3QodTY0LCBtaW5sZW4sIGJkZXZfZGlzY2FyZF9ncmFudWxh cml0eShiZGV2KSkgPj4gYnNfc2hpZnQ7CiAKIAlpZiAoZW5kIDw9IHN0YXJ0IHx8IG1pbmxlbiA+ IHNkcC0+c2RfbWF4X3JnX2RhdGEpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZnMv amZzL2lvY3RsLmMgYi9mcy9qZnMvaW9jdGwuYwppbmRleCAzNTdhZTZlNWMzNmVjLi4xZTdiMTc3 ZWNlNjA1IDEwMDY0NAotLS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpA QCAtMTEwLDcgKzExMCw2IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJczY0IHJldCA9IDA7CiAKQEAgLTEyNyw3ICsxMjYsNyBAQCBsb25nIGpmc19p b2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1bnNpZ25l ZCBpbnQsIHJhbmdlLm1pbmxlbiwKLQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsK KwkJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSk7CiAKIAkJcmV0 ID0gamZzX2lvY190cmltKGlub2RlLCAmcmFuZ2UpOwogCQlpZiAocmV0IDwgMCkKZGlmZiAtLWdp dCBhL2ZzL25pbGZzMi9pb2N0bC5jIGIvZnMvbmlsZnMyL2lvY3RsLmMKaW5kZXggNTJiNzNmNTU4 ZmNiMS4uODdlMTAwNGI2MDZkMiAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2lvY3RsLmMKKysrIGIv ZnMvbmlsZnMyL2lvY3RsLmMKQEAgLTEwNTIsNyArMTA1Miw2IEBAIHN0YXRpYyBpbnQgbmlsZnNf aW9jdGxfcmVzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwLAogc3Rh dGljIGludCBuaWxmc19pb2N0bF90cmltX2ZzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgX191 c2VyICphcmdwKQogewogCXN0cnVjdCB0aGVfbmlsZnMgKm5pbGZzID0gaW5vZGUtPmlfc2ItPnNf ZnNfaW5mbzsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKG5pbGZz LT5uc19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAg LTEwNjUsNyArMTA2NCw4IEBAIHN0YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJh bmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcmFuZ2UubWlubGVuLAorCQkJICAg ICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobmlsZnMtPm5zX2JkZXYpKTsKIAogCWRvd25fcmVh ZCgmbmlsZnMtPm5zX3NlZ2N0b3Jfc2VtKTsKIAlyZXQgPSBuaWxmc19zdWZpbGVfdHJpbV9mcyhu aWxmcy0+bnNfc3VmaWxlLCAmcmFuZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvZmlsZS5jIGIv ZnMvbnRmczMvZmlsZS5jCmluZGV4IGU3NjMyMzYxNjkzMzEuLjE1ODA2ZWVhZTIxN2EgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9maWxlLmMKQEAgLTIyLDcgKzIy LDYgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgbnRmc19zYl9pbmZvICpz YmksIHVuc2lnbmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICp1 c2VyX3JhbmdlOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgcmFuZ2U7Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYmktPnNiLT5zX2JkZXYpOwogCWludCBlcnI7CiAK IAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0zNSw3ICszNCw4IEBAIHN0YXRpYyBp bnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBs b25nIGFyZykKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCB1c2VyX3JhbmdlLCBzaXplb2Yo cmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1MzIs IHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCXJhbmdlLm1p bmxlbiA9IG1heF90KHUzMiwgcmFuZ2UubWlubGVuLAorCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3Jh bnVsYXJpdHkoc2JpLT5zYi0+c19iZGV2KSk7CiAKIAllcnIgPSBudGZzX3RyaW1fZnMoc2JpLCAm cmFuZ2UpOwogCWlmIChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvc3VwZXIuYyBiL2Zz L250ZnMzL3N1cGVyLmMKaW5kZXggYzczNDA4NWJjY2U0YS4uNWYyZTQxNGNmYTc5YiAxMDA2NDQK LS0tIGEvZnMvbnRmczMvc3VwZXIuYworKysgYi9mcy9udGZzMy9zdXBlci5jCkBAIC04ODIsNyAr ODgyLDYgQEAgc3RhdGljIGludCBudGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWludCBlcnI7CiAJc3RydWN0IG50ZnNfc2JfaW5m byAqc2JpID0gc2ItPnNfZnNfaW5mbzsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2It PnNfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcnE7CiAJc3RydWN0IGlub2RlICppbm9k ZTsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmk7CiAJc2l6ZV90IGksIHR0OwpAQCAtOTEyLDkgKzkx MSw4IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAkJZ290byBvdXQ7CiAJfQogCi0JcnEgPSBiZGV2X2dl dF9xdWV1ZShiZGV2KTsKLQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpICYmIHJx LT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgewotCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJp dHkgPSBycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJaWYgKGJkZXZfbWF4X2Rpc2Nh cmRfc2VjdG9ycyhiZGV2KSAmJiBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpIHsKKwkJ c2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYp OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlfbWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwogCX0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2lvY3Rs LmMgYi9mcy9vY2ZzMi9pb2N0bC5jCmluZGV4IDliNzhlZjEwM2FkYTYuLmFmZDU0ZWM2NjEwMzAg MTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2lvY3RsLmMKKysrIGIvZnMvb2NmczIvaW9jdGwuYwpAQCAt OTAzLDcgKzkwMyw2IEBAIGxvbmcgb2NmczJfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCWNhc2UgRklUUklNOgogCXsKIAkJc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOwotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIApAQCAtOTE2LDcgKzkxNSw3IEBAIGxvbmcgb2NmczJf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkK IAkJCXJldHVybiAtRUZBVUxUOwogCi0JCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcS0+bGlt aXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHksCisJCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgYmRl dl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpLAogCQkJCSAgICAgcmFuZ2UubWlubGVu KTsKIAkJcmV0ID0gb2NmczJfdHJpbV9mcyhzYiwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRp ZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmlu ZGV4IGE0ZTY2MDlkNjE2YjcuLmUyYWRhMTE1YzIzZjkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNf ZGlzY2FyZC5jCisrKyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCkBAIC0xNTIsOCArMTUyLDggQEAg eGZzX2lvY190cmltKAogCXN0cnVjdCB4ZnNfbW91bnQJCSptcCwKIAlzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlcgkqdXJhbmdlKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpxID0gYmRldl9n ZXRfcXVldWUobXAtPm1fZGRldl90YXJncC0+YnRfYmRldik7Ci0JdW5zaWduZWQgaW50CQlncmFu dWxhcml0eSA9IHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCXVuc2lnbmVkIGludAkJ Z3JhbnVsYXJpdHkgPQorCQliZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobXAtPm1fZGRldl90YXJn cC0+YnRfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZQlyYW5nZTsKIAl4ZnNfZGFkZHJfdAkJ c3RhcnQsIGVuZCwgbWlubGVuOwogCXhmc19hZ251bWJlcl90CQlzdGFydF9hZ25vLCBlbmRfYWdu bywgYWdubzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xp bnV4L2Jsa2Rldi5oCmluZGV4IDc2N2FiMjJlMTA1MmEuLmYxY2Y1NTdlYTIwZWYgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApA QCAtMTI1Nyw2ICsxMjU3LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCXJldHVybiBiZGV2 X2dldF9xdWV1ZShiZGV2KS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnM7CiB9CiAKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2KQoreworCXJldHVybiBiZGV2X2dldF9xdWV1ZShiZGV2KS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJk ZXZfd3JpdGVfemVyb2VzX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIHsKIAlz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotLSAKMi4zMC4y CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFs aXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlv bi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8v dmlydHVhbGl6YXRpb24= 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.133.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 9B3FEC35280 for ; Fri, 15 Apr 2022 04:54:35 +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-558-5gE_f77FOoSH38RytXjgMA-1; Fri, 15 Apr 2022 00:54:31 -0400 X-MC-Unique: 5gE_f77FOoSH38RytXjgMA-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EC74A1C068EE; Fri, 15 Apr 2022 04:54:29 +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 D734E40EC010; Fri, 15 Apr 2022 04:54:29 +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 7AF81194034B; Fri, 15 Apr 2022 04:54:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8963F19451EC for ; Fri, 15 Apr 2022 04:54:28 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 663FD442CBB; Fri, 15 Apr 2022 04:54:28 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 60CFC442CBC for ; Fri, 15 Apr 2022 04:54:28 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (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 4466486B8A4 for ; Fri, 15 Apr 2022 04:54:28 +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-622-j0Cexvk_O2-sni3NWZgONw-1; Fri, 15 Apr 2022 00:54:26 -0400 X-MC-Unique: j0Cexvk_O2-sni3NWZgONw-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 1nfDyL-008Pnr-T3; Fri, 15 Apr 2022 04:54:18 +0000 From: Christoph Hellwig To: Jens Axboe Date: Fri, 15 Apr 2022 06:52:56 +0200 Message-Id: <20220415045258.199825-26-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.85 on 10.11.54.9 Subject: [dm-devel] [PATCH 25/27] block: add a bdev_discard_granularity helper 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, 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, Ryusuke Konishi , 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.84 on 10.11.54.2 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 QWJzdHJhY3QgYXdheSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZmlsZSBzeXN0ZW1zIGJ5 IHByb3ZpZGluZyBhCmJsb2NrX2RldmljZSBiYXNlZCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRp c2NhcmQgZ3JhbnVsYXJpdHkuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNo QGxzdC5kZT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2Vu QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlzdG9waC5i b2VobXdhbGRlckBsaW5iaXQuY29tPiBbZHJiZF0KQWNrZWQtYnk6IFJ5dXN1a2UgS29uaXNoaSA8 a29uaXNoaS5yeXVzdWtlQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJi YUBzdXNlLmNvbT4gW2J0cmZzXQotLS0KIGJsb2NrL2Jsay1saWIuYyAgICAgICAgICAgICAgICAg ICAgIHwgIDUgKystLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgICAgICAgIHwgIDkg KysrKystLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jICB8ICAzICstLQog ZHJpdmVycy9ibG9jay9sb29wLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMyArLS0KIGZzL2J0cmZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0tCiBmcy9leGZhdC9maWxlLmMgICAgICAgICAg ICAgICAgICAgICB8ICAzICstLQogZnMvZXh0NC9tYmFsbG9jLmMgICAgICAgICAgICAgICAgICAg fCAgNiArKystLS0KIGZzL2YyZnMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0t CiBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvZ2ZzMi9y Z3JwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiBmcy9qZnMvaW9jdGwuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvbmlsZnMyL2lvY3RsLmMgICAgICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBmcy9udGZzMy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KIGZzL250ZnMzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLS0t CiBmcy9vY2ZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMveGZzL3hm c19kaXNjYXJkLmMgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBpbmNsdWRlL2xpbnV4L2Jsa2Rl di5oICAgICAgICAgICAgICB8ICA1ICsrKysrCiAxOCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9i bG9jay9ibGstbGliLmMKaW5kZXggOGI0YjY2ZDNhOWJmYy4uNDNhYTRkN2ZlODU5ZiAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTIsOCArMTIs NyBAQAogCiBzdGF0aWMgc2VjdG9yX3QgYmlvX2Rpc2NhcmRfbGltaXQoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yKQogewotCXVuc2lnbmVkIGludCBkaXNjYXJkX2dy YW51bGFyaXR5ID0KLQkJYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJk X2dyYW51bGFyaXR5KGJkZXYpOwogCXNlY3Rvcl90IGdyYW51bGFyaXR5X2FsaWduZWRfc2VjdG9y OwogCiAJaWYgKGJkZXZfaXNfcGFydGl0aW9uKGJkZXYpKQpAQCAtNTksNyArNTgsNyBAQCBpbnQg X19ibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3Jf dCBzZWN0b3IsCiAJfQogCiAJLyogSW4gY2FzZSB0aGUgZGlzY2FyZCBncmFudWxhcml0eSBpc24n dCBzZXQgYnkgYnVnZ3kgZGV2aWNlIGRyaXZlciAqLwotCWlmIChXQVJOX09OX09OQ0UoIXEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KSkgeworCWlmIChXQVJOX09OX09OQ0UoIWJkZXZfZGlz Y2FyZF9ncmFudWxhcml0eShiZGV2KSkpIHsKIAkJY2hhciBkZXZfbmFtZVtCREVWTkFNRV9TSVpF XTsKIAogCQliZGV2bmFtZShiZGV2LCBkZXZfbmFtZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Js b2NrL2RyYmQvZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCAw Njc4Y2ViNTA1Nzk5Li5hNjI4MGRjYjM3Njc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9ubC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTE0MjUs NyArMTQyNSw2IEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX2Rpc2tfY29uZihzdHJ1Y3QgZHJiZF9k ZXZpY2UgKmRldmljZSwgc3RydWN0IGRpc2tfY29uZiAqZGlzCiAJCQkgICAgICAgc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKm5iYykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gbmJj LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2LT5iZF9kaXNr LT5xdWV1ZTsKIAogCWlmIChkaXNrX2NvbmYtPmFsX2V4dGVudHMgPCBEUkJEX0FMX0VYVEVOVFNf TUlOKQogCQlkaXNrX2NvbmYtPmFsX2V4dGVudHMgPSBEUkJEX0FMX0VYVEVOVFNfTUlOOwpAQCAt MTQ0MiwxMiArMTQ0MSwxNCBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0 IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCWlmIChkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJaW50IG9yaWdfdmFsdWUgPSBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCXNlY3Rvcl90IGRpc2NhcmRfc2l6ZSA9IGJk ZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSA8PCA5OworCQl1bnNpZ25lZCBpbnQgZGlzY2Fy ZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KTsKIAkJaW50IHJl bWFpbmRlcjsKIAotCQlpZiAocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCi0JCQlkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJaWYgKGRpc2NhcmRf Z3JhbnVsYXJpdHkgPiBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCisJCQlkaXNr X2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPSBkaXNjYXJkX2dyYW51bGFyaXR5OwogCi0J CXJlbWFpbmRlciA9IGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSAlIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkgJQorCQkJCWRpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCWRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSArPSByZW1haW5kZXI7CiAKIAkJaWYgKGRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSA+IGRpc2NhcmRfc2l6ZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9y ZWNlaXZlci5jCmluZGV4IDhhNGE0N2RhNTZmZTkuLjI3NWM1M2M3YjYyOWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKKysrIGIvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTUxMSw3ICsxNTExLDYgQEAgdm9pZCBkcmJkX2J1bXBf d3JpdGVfb3JkZXJpbmcoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgZHJi ZF9iYWNraW4KIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywg aW50IGZsYWdzKQogewogCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBkZXZpY2UtPmxkZXYt PmJhY2tpbmdfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVl KGJkZXYpOwogCXNlY3Rvcl90IHRtcCwgbnI7CiAJdW5zaWduZWQgaW50IG1heF9kaXNjYXJkX3Nl Y3RvcnMsIGdyYW51bGFyaXR5OwogCWludCBhbGlnbm1lbnQ7CkBAIC0xNTIxLDcgKzE1MjAsNyBA QCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAq ZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCQlnb3RvIHplcm9fb3V0OwogCiAJLyogWmVyby1z ZWN0b3IgKHVua25vd24pIGFuZCBvbmUtc2VjdG9yIGdyYW51bGFyaXRpZXMgYXJlIHRoZSBzYW1l LiAgKi8KLQlncmFudWxhcml0eSA9IG1heChxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA+ PiA5LCAxVSk7CisJZ3JhbnVsYXJpdHkgPSBtYXgoYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJk ZXYpID4+IDksIDFVKTsKIAlhbGlnbm1lbnQgPSAoYmRldl9kaXNjYXJkX2FsaWdubWVudChiZGV2 KSA+PiA5KSAlIGdyYW51bGFyaXR5OwogCiAJbWF4X2Rpc2NhcmRfc2VjdG9ycyA9IG1pbihiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldiksICgxVSA8PCAyMikpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAwZTA2MWM5ODk2 ZWZmLi45NzZjZjk4N2IzOTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNzU5LDcgKzc1OSw3IEBAIHN0YXRpYyB2b2lkIGxv b3BfY29uZmlnX2Rpc2NhcmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJc3RydWN0IHJlcXVl c3RfcXVldWUgKmJhY2tpbmdxID0gYmRldl9nZXRfcXVldWUoSV9CREVWKGlub2RlKSk7CiAKIAkJ bWF4X2Rpc2NhcmRfc2VjdG9ycyA9IGJhY2tpbmdxLT5saW1pdHMubWF4X3dyaXRlX3plcm9lc19z ZWN0b3JzOwotCQlncmFudWxhcml0eSA9IGJhY2tpbmdxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA/OgorCQlncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShJX0JERVYo aW5vZGUpKSA/OgogCQkJcXVldWVfcGh5c2ljYWxfYmxvY2tfc2l6ZShiYWNraW5ncSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgYi9kcml2 ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwppbmRleCA2Y2I5Zjg3ODQzMjc4Li4yNWYz M2ViMjUzMzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2Uu YworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwpAQCAtODM1LDcgKzgz NSw2IEBAIHN0cnVjdCBzZV9kZXZpY2UgKnRhcmdldF9hbGxvY19kZXZpY2Uoc3RydWN0IHNlX2hi YSAqaGJhLCBjb25zdCBjaGFyICpuYW1lKQogYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zy b21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkJCQkgICAgICAgc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldikKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3Np emUoYmRldik7CiAKIAlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKQEAgLTg0 Nyw3ICs4NDYsNyBAQCBib29sIHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZShzdHJ1 Y3Qgc2VfZGV2X2F0dHJpYiAqYXR0cmliLAogCSAqIEN1cnJlbnRseSBoYXJkY29kZWQgdG8gMSBp biBMaW51eC9TQ1NJIGNvZGUuLgogCSAqLwogCWF0dHJpYi0+bWF4X3VubWFwX2Jsb2NrX2Rlc2Nf Y291bnQgPSAxOwotCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSAvIGJsb2NrX3NpemU7CisJYXR0cmliLT51bm1hcF9ncmFudWxhcml0eSA9 IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KSAvIGJsb2NrX3NpemU7CiAJYXR0cmliLT51 bm1hcF9ncmFudWxhcml0eV9hbGlnbm1lbnQgPQogCQliZGV2X2Rpc2NhcmRfYWxpZ25tZW50KGJk ZXYpIC8gYmxvY2tfc2l6ZTsKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lv Y3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jCmluZGV4IDA5NmJiMGRhMDNmMWMuLjcwNzY1ZDU5NjE2 YTUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpA QCAtNDY4LDcgKzQ2OCw2IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfZml0cmlt KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQkJCQl2b2lkIF9fdXNlciAqYXJnKQog ewogCXN0cnVjdCBidHJmc19kZXZpY2UgKmRldmljZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCXU2NCBtaW5sZW4gPSBVTExPTkdfTUFY OwogCXU2NCBudW1fZGV2aWNlcyA9IDA7CkBAIC00OTgsMTQgKzQ5NywxMSBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5m bywKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2aWNlLCAm ZnNfaW5mby0+ZnNfZGV2aWNlcy0+ZGV2aWNlcywKIAkJCQlkZXZfbGlzdCkgewotCQlpZiAoIWRl dmljZS0+YmRldikKKwkJaWYgKCFkZXZpY2UtPmJkZXYgfHwgIWJkZXZfbWF4X2Rpc2NhcmRfc2Vj dG9ycyhkZXZpY2UtPmJkZXYpKQogCQkJY29udGludWU7Ci0JCXEgPSBiZGV2X2dldF9xdWV1ZShk ZXZpY2UtPmJkZXYpOwotCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+YmRl dikpIHsKLQkJCW51bV9kZXZpY2VzKys7Ci0JCQltaW5sZW4gPSBtaW5fdCh1NjQsIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5LAotCQkJCSAgICAgbWlubGVuKTsKLQkJfQorCQludW1fZGV2 aWNlcysrOworCQltaW5sZW4gPSBtaW5fdCh1NjQsIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShk ZXZpY2UtPmJkZXYpLAorCQkJCSAgICBtaW5sZW4pOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsK IApkaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jCmluZGV4IDc2 NWU0ZjYzZGQxOGQuLjIwZDRlNDdmNTdhYjIgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2ZpbGUuYwor KysgYi9mcy9leGZhdC9maWxlLmMKQEAgLTM1MSw3ICszNTEsNiBAQCBpbnQgZXhmYXRfc2V0YXR0 cihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwKIAogc3RhdGljIGludCBleGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwg dW5zaWduZWQgbG9uZyBhcmcpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShpbm9kZS0+aV9zYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdl OwogCWludCByZXQgPSAwOwogCkBAIC0zNjUsNyArMzY0LDcgQEAgc3RhdGljIGludCBleGZhdF9p b2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJl dHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5n ZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCQkJCWJkZXZf ZGlzY2FyZF9ncmFudWxhcml0eShpbm9kZS0+aV9zYi0+c19iZGV2KSk7CiAKIAlyZXQgPSBleGZh dF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCBjMzY2OGM5NzdjZDk5Li42 ZDE4MjA1MzZkODhkIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0 L21iYWxsb2MuYwpAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgZXh0NF90cmltX2FsbF9mcmVlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncm91cCwKICAqLwogaW50IGV4dDRfdHJp bV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmltX3JhbmdlICpyYW5nZSkK IHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYp OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51 bGFyaXR5KHNiLT5zX2JkZXYpOwogCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycDsKIAlleHQ0 X2dyb3VwX3QgZ3JvdXAsIGZpcnN0X2dyb3VwLCBsYXN0X2dyb3VwOwogCWV4dDRfZ3JwYmxrX3Qg Y250ID0gMCwgZmlyc3RfY2x1c3RlciwgbGFzdF9jbHVzdGVyOwpAQCAtNjQ3NSw5ICs2NDc1LDkg QEAgaW50IGV4dDRfdHJpbV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmlt X3JhbmdlICpyYW5nZSkKIAkgICAgcmFuZ2UtPmxlbiA8IHNiLT5zX2Jsb2Nrc2l6ZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJLyogTm8gcG9pbnQgdG8gdHJ5IHRvIHRyaW0gbGVzcyB0aGFuIGRpc2Nh cmQgZ3JhbnVsYXJpdHkgKi8KLQlpZiAocmFuZ2UtPm1pbmxlbiA8IHEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KSB7CisJaWYgKHJhbmdlLT5taW5sZW4gPCBkaXNjYXJkX2dyYW51bGFyaXR5 KSB7CiAJCW1pbmxlbiA9IEVYVDRfTlVNX0IyQyhFWFQ0X1NCKHNiKSwKLQkJCXEtPmxpbWl0cy5k aXNjYXJkX2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKKwkJCQlkaXNjYXJk X2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKIAkJaWYgKG1pbmxlbiA+IEVY VDRfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZmlsZS5jIGIvZnMvZjJmcy9maWxlLmMKaW5kZXggNWI4OWFmMGYyN2YwNS4uODA1 M2Q5OWYzOTIwYiAxMDA2NDQKLS0tIGEvZnMvZjJmcy9maWxlLmMKKysrIGIvZnMvZjJmcy9maWxl LmMKQEAgLTIyODUsNyArMjI4NSw2IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVj dCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf c2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAgLTIzMDQsNyAr MjMwMyw3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJcmV0dXJuIHJldDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heCgo dW5zaWduZWQgaW50KXJhbmdlLm1pbmxlbiwKLQkJCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSk7CisJCQkgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCXJl dCA9IGYyZnNfdHJpbV9mcyhGMkZTX1NCKHNiKSwgJnJhbmdlKTsKIAltbnRfZHJvcF93cml0ZV9m aWxlKGZpbHApOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZmF0L2ZpbGUuYyBiL2Zz L2ZhdC9maWxlLmMKaW5kZXggZTRjN2QxMGU4MDEyOS4uYmY5MWY5NzdkZWJlYSAxMDA2NDQKLS0t IGEvZnMvZmF0L2ZpbGUuYworKysgYi9mcy9mYXQvZmlsZS5jCkBAIC0xMjcsNyArMTI3LDYgQEAg c3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGxvbmcgYXJnKQogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKIAlzdHJ1 Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAqdXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNf YmRldik7CiAJaW50IGVycjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTE0 MSw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlu bGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQkgICAgIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5 KHNiLT5zX2JkZXYpKTsKIAogCWVyciA9IGZhdF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlm IChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA3ZjIwYWM5MTMzYmM2Li42ZDI2YmI1MjU0ODQ0IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIHsKIAlzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9 IEdGUzJfU0IoaW5vZGUpOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVl dWUoc2RwLT5zZF92ZnMtPnNfYmRldik7CisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNk cC0+c2RfdmZzLT5zX2JkZXY7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKIAlzdHJ1Y3QgZ2Zz Ml9yZ3JwZCAqcmdkOwogCXN0cnVjdCBnZnMyX3JncnBkICpyZ2RfZW5kOwpAQCAtMTQwNSw3ICsx NDA1LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAq YXJncCkKIAlpZiAoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkK IAkJcmV0dXJuIC1FUk9GUzsKIAotCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNkcC0+ c2RfdmZzLT5zX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIoJnIsIGFyZ3AsIHNp emVvZihyKSkpCkBAIC0xNDE4LDggKzE0MTgsNyBAQCBpbnQgZ2ZzMl9maXRyaW0oc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgX191c2VyICphcmdwKQogCXN0YXJ0ID0gci5zdGFydCA+PiBic19zaGlm dDsKIAllbmQgPSBzdGFydCArIChyLmxlbiA+PiBic19zaGlmdCk7CiAJbWlubGVuID0gbWF4X3Qo dTY0LCByLm1pbmxlbiwgc2RwLT5zZF9zYi5zYl9ic2l6ZSk7Ci0JbWlubGVuID0gbWF4X3QodTY0 LCBtaW5sZW4sCi0JCSAgICAgICBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgPj4gYnNf c2hpZnQ7CisJbWlubGVuID0gbWF4X3QodTY0LCBtaW5sZW4sIGJkZXZfZGlzY2FyZF9ncmFudWxh cml0eShiZGV2KSkgPj4gYnNfc2hpZnQ7CiAKIAlpZiAoZW5kIDw9IHN0YXJ0IHx8IG1pbmxlbiA+ IHNkcC0+c2RfbWF4X3JnX2RhdGEpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZnMv amZzL2lvY3RsLmMgYi9mcy9qZnMvaW9jdGwuYwppbmRleCAzNTdhZTZlNWMzNmVjLi4xZTdiMTc3 ZWNlNjA1IDEwMDY0NAotLS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpA QCAtMTEwLDcgKzExMCw2IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJczY0IHJldCA9IDA7CiAKQEAgLTEyNyw3ICsxMjYsNyBAQCBsb25nIGpmc19p b2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1bnNpZ25l ZCBpbnQsIHJhbmdlLm1pbmxlbiwKLQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsK KwkJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSk7CiAKIAkJcmV0 ID0gamZzX2lvY190cmltKGlub2RlLCAmcmFuZ2UpOwogCQlpZiAocmV0IDwgMCkKZGlmZiAtLWdp dCBhL2ZzL25pbGZzMi9pb2N0bC5jIGIvZnMvbmlsZnMyL2lvY3RsLmMKaW5kZXggNTJiNzNmNTU4 ZmNiMS4uODdlMTAwNGI2MDZkMiAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2lvY3RsLmMKKysrIGIv ZnMvbmlsZnMyL2lvY3RsLmMKQEAgLTEwNTIsNyArMTA1Miw2IEBAIHN0YXRpYyBpbnQgbmlsZnNf aW9jdGxfcmVzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwLAogc3Rh dGljIGludCBuaWxmc19pb2N0bF90cmltX2ZzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgX191 c2VyICphcmdwKQogewogCXN0cnVjdCB0aGVfbmlsZnMgKm5pbGZzID0gaW5vZGUtPmlfc2ItPnNf ZnNfaW5mbzsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKG5pbGZz LT5uc19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAg LTEwNjUsNyArMTA2NCw4IEBAIHN0YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJh bmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcmFuZ2UubWlubGVuLAorCQkJICAg ICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobmlsZnMtPm5zX2JkZXYpKTsKIAogCWRvd25fcmVh ZCgmbmlsZnMtPm5zX3NlZ2N0b3Jfc2VtKTsKIAlyZXQgPSBuaWxmc19zdWZpbGVfdHJpbV9mcyhu aWxmcy0+bnNfc3VmaWxlLCAmcmFuZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvZmlsZS5jIGIv ZnMvbnRmczMvZmlsZS5jCmluZGV4IGU3NjMyMzYxNjkzMzEuLjE1ODA2ZWVhZTIxN2EgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9maWxlLmMKQEAgLTIyLDcgKzIy LDYgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgbnRmc19zYl9pbmZvICpz YmksIHVuc2lnbmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICp1 c2VyX3JhbmdlOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgcmFuZ2U7Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYmktPnNiLT5zX2JkZXYpOwogCWludCBlcnI7CiAK IAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0zNSw3ICszNCw4IEBAIHN0YXRpYyBp bnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBs b25nIGFyZykKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCB1c2VyX3JhbmdlLCBzaXplb2Yo cmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1MzIs IHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCXJhbmdlLm1p bmxlbiA9IG1heF90KHUzMiwgcmFuZ2UubWlubGVuLAorCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3Jh bnVsYXJpdHkoc2JpLT5zYi0+c19iZGV2KSk7CiAKIAllcnIgPSBudGZzX3RyaW1fZnMoc2JpLCAm cmFuZ2UpOwogCWlmIChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvc3VwZXIuYyBiL2Zz L250ZnMzL3N1cGVyLmMKaW5kZXggYzczNDA4NWJjY2U0YS4uNWYyZTQxNGNmYTc5YiAxMDA2NDQK LS0tIGEvZnMvbnRmczMvc3VwZXIuYworKysgYi9mcy9udGZzMy9zdXBlci5jCkBAIC04ODIsNyAr ODgyLDYgQEAgc3RhdGljIGludCBudGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWludCBlcnI7CiAJc3RydWN0IG50ZnNfc2JfaW5m byAqc2JpID0gc2ItPnNfZnNfaW5mbzsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2It PnNfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcnE7CiAJc3RydWN0IGlub2RlICppbm9k ZTsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmk7CiAJc2l6ZV90IGksIHR0OwpAQCAtOTEyLDkgKzkx MSw4IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAkJZ290byBvdXQ7CiAJfQogCi0JcnEgPSBiZGV2X2dl dF9xdWV1ZShiZGV2KTsKLQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpICYmIHJx LT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgewotCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJp dHkgPSBycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJaWYgKGJkZXZfbWF4X2Rpc2Nh cmRfc2VjdG9ycyhiZGV2KSAmJiBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpIHsKKwkJ c2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYp OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlfbWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwogCX0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2lvY3Rs LmMgYi9mcy9vY2ZzMi9pb2N0bC5jCmluZGV4IDliNzhlZjEwM2FkYTYuLmFmZDU0ZWM2NjEwMzAg MTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2lvY3RsLmMKKysrIGIvZnMvb2NmczIvaW9jdGwuYwpAQCAt OTAzLDcgKzkwMyw2IEBAIGxvbmcgb2NmczJfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCWNhc2UgRklUUklNOgogCXsKIAkJc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOwotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIApAQCAtOTE2LDcgKzkxNSw3IEBAIGxvbmcgb2NmczJf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkK IAkJCXJldHVybiAtRUZBVUxUOwogCi0JCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcS0+bGlt aXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHksCisJCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgYmRl dl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpLAogCQkJCSAgICAgcmFuZ2UubWlubGVu KTsKIAkJcmV0ID0gb2NmczJfdHJpbV9mcyhzYiwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRp ZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmlu ZGV4IGE0ZTY2MDlkNjE2YjcuLmUyYWRhMTE1YzIzZjkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNf ZGlzY2FyZC5jCisrKyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCkBAIC0xNTIsOCArMTUyLDggQEAg eGZzX2lvY190cmltKAogCXN0cnVjdCB4ZnNfbW91bnQJCSptcCwKIAlzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlcgkqdXJhbmdlKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpxID0gYmRldl9n ZXRfcXVldWUobXAtPm1fZGRldl90YXJncC0+YnRfYmRldik7Ci0JdW5zaWduZWQgaW50CQlncmFu dWxhcml0eSA9IHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCXVuc2lnbmVkIGludAkJ Z3JhbnVsYXJpdHkgPQorCQliZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobXAtPm1fZGRldl90YXJn cC0+YnRfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZQlyYW5nZTsKIAl4ZnNfZGFkZHJfdAkJ c3RhcnQsIGVuZCwgbWlubGVuOwogCXhmc19hZ251bWJlcl90CQlzdGFydF9hZ25vLCBlbmRfYWdu bywgYWdubzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xp bnV4L2Jsa2Rldi5oCmluZGV4IDc2N2FiMjJlMTA1MmEuLmYxY2Y1NTdlYTIwZWYgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApA QCAtMTI1Nyw2ICsxMjU3LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCXJldHVybiBiZGV2 X2dldF9xdWV1ZShiZGV2KS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnM7CiB9CiAKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2KQoreworCXJldHVybiBiZGV2X2dldF9xdWV1ZShiZGV2KS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJk ZXZfd3JpdGVfemVyb2VzX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIHsKIAlz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotLSAKMi4zMC4y CgotLQpkbS1kZXZlbCBtYWlsaW5nIGxpc3QKZG0tZGV2ZWxAcmVkaGF0LmNvbQpodHRwczovL2xp c3RtYW4ucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3RpbmZvL2RtLWRldmVsCg== 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 9B88DC433EF for ; Fri, 15 Apr 2022 05:03:25 +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=MOGO4j7J2lJWjsQAsgUQ3kquHDCxgbTYQOK4m1zggKg=; b=uUUgb25nH0JdYv yukvJoSlju2tOqXQwTgrLOWSubaxQubJl8Pt8JSwVOBhS+yf7OXwtQC0kYsXUXCbier5xshA452mh iNgE3lWicuxAJfwgrBxlzAbjVXHZWdoLbfHdtsshtkwmwpwmc9u/opkXwMMldzrI586DCSqS8aeTv 1Nv+mbcRhdMV+ll7ob02afQ98525AuppbW7P5ON62KEOHk8kIRwupOmyeh4exZArvAUdeDeujVC7t TBlz1mhqAxTZOuOdQjFWlWzZeDewDltKVhLLc2etBd1KOJJYKUOXKXN57OGTz7nZfP9LWj5thdHLd BcnbXBnRpTpX4+m2UEhw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nfE70-008Wzl-8i; Fri, 15 Apr 2022 05:03:14 +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 1nfDyL-008Pnr-T3; Fri, 15 Apr 2022 04:54:18 +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?= , Ryusuke Konishi , David Sterba Subject: [PATCH 25/27] block: add a bdev_discard_granularity helper Date: Fri, 15 Apr 2022 06:52:56 +0200 Message-Id: <20220415045258.199825-26-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 QWJzdHJhY3QgYXdheSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZmlsZSBzeXN0ZW1zIGJ5 IHByb3ZpZGluZyBhCmJsb2NrX2RldmljZSBiYXNlZCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRp c2NhcmQgZ3JhbnVsYXJpdHkuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNo QGxzdC5kZT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2Vu QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlzdG9waC5i b2VobXdhbGRlckBsaW5iaXQuY29tPiBbZHJiZF0KQWNrZWQtYnk6IFJ5dXN1a2UgS29uaXNoaSA8 a29uaXNoaS5yeXVzdWtlQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJi YUBzdXNlLmNvbT4gW2J0cmZzXQotLS0KIGJsb2NrL2Jsay1saWIuYyAgICAgICAgICAgICAgICAg ICAgIHwgIDUgKystLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgICAgICAgIHwgIDkg KysrKystLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jICB8ICAzICstLQog ZHJpdmVycy9ibG9jay9sb29wLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMyArLS0KIGZzL2J0cmZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0tCiBmcy9leGZhdC9maWxlLmMgICAgICAgICAg ICAgICAgICAgICB8ICAzICstLQogZnMvZXh0NC9tYmFsbG9jLmMgICAgICAgICAgICAgICAgICAg fCAgNiArKystLS0KIGZzL2YyZnMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0t CiBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvZ2ZzMi9y Z3JwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiBmcy9qZnMvaW9jdGwuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvbmlsZnMyL2lvY3RsLmMgICAgICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBmcy9udGZzMy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KIGZzL250ZnMzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLS0t CiBmcy9vY2ZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMveGZzL3hm c19kaXNjYXJkLmMgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBpbmNsdWRlL2xpbnV4L2Jsa2Rl di5oICAgICAgICAgICAgICB8ICA1ICsrKysrCiAxOCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9i bG9jay9ibGstbGliLmMKaW5kZXggOGI0YjY2ZDNhOWJmYy4uNDNhYTRkN2ZlODU5ZiAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTIsOCArMTIs NyBAQAogCiBzdGF0aWMgc2VjdG9yX3QgYmlvX2Rpc2NhcmRfbGltaXQoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yKQogewotCXVuc2lnbmVkIGludCBkaXNjYXJkX2dy YW51bGFyaXR5ID0KLQkJYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJk X2dyYW51bGFyaXR5KGJkZXYpOwogCXNlY3Rvcl90IGdyYW51bGFyaXR5X2FsaWduZWRfc2VjdG9y OwogCiAJaWYgKGJkZXZfaXNfcGFydGl0aW9uKGJkZXYpKQpAQCAtNTksNyArNTgsNyBAQCBpbnQg X19ibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3Jf dCBzZWN0b3IsCiAJfQogCiAJLyogSW4gY2FzZSB0aGUgZGlzY2FyZCBncmFudWxhcml0eSBpc24n dCBzZXQgYnkgYnVnZ3kgZGV2aWNlIGRyaXZlciAqLwotCWlmIChXQVJOX09OX09OQ0UoIXEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KSkgeworCWlmIChXQVJOX09OX09OQ0UoIWJkZXZfZGlz Y2FyZF9ncmFudWxhcml0eShiZGV2KSkpIHsKIAkJY2hhciBkZXZfbmFtZVtCREVWTkFNRV9TSVpF XTsKIAogCQliZGV2bmFtZShiZGV2LCBkZXZfbmFtZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Js b2NrL2RyYmQvZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCAw Njc4Y2ViNTA1Nzk5Li5hNjI4MGRjYjM3Njc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9ubC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTE0MjUs NyArMTQyNSw2IEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX2Rpc2tfY29uZihzdHJ1Y3QgZHJiZF9k ZXZpY2UgKmRldmljZSwgc3RydWN0IGRpc2tfY29uZiAqZGlzCiAJCQkgICAgICAgc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKm5iYykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gbmJj LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2LT5iZF9kaXNr LT5xdWV1ZTsKIAogCWlmIChkaXNrX2NvbmYtPmFsX2V4dGVudHMgPCBEUkJEX0FMX0VYVEVOVFNf TUlOKQogCQlkaXNrX2NvbmYtPmFsX2V4dGVudHMgPSBEUkJEX0FMX0VYVEVOVFNfTUlOOwpAQCAt MTQ0MiwxMiArMTQ0MSwxNCBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0 IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCWlmIChkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJaW50IG9yaWdfdmFsdWUgPSBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCXNlY3Rvcl90IGRpc2NhcmRfc2l6ZSA9IGJk ZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSA8PCA5OworCQl1bnNpZ25lZCBpbnQgZGlzY2Fy ZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KTsKIAkJaW50IHJl bWFpbmRlcjsKIAotCQlpZiAocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCi0JCQlkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJaWYgKGRpc2NhcmRf Z3JhbnVsYXJpdHkgPiBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCisJCQlkaXNr X2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPSBkaXNjYXJkX2dyYW51bGFyaXR5OwogCi0J CXJlbWFpbmRlciA9IGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSAlIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkgJQorCQkJCWRpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCWRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSArPSByZW1haW5kZXI7CiAKIAkJaWYgKGRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSA+IGRpc2NhcmRfc2l6ZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9y ZWNlaXZlci5jCmluZGV4IDhhNGE0N2RhNTZmZTkuLjI3NWM1M2M3YjYyOWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKKysrIGIvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTUxMSw3ICsxNTExLDYgQEAgdm9pZCBkcmJkX2J1bXBf d3JpdGVfb3JkZXJpbmcoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgZHJi ZF9iYWNraW4KIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywg aW50IGZsYWdzKQogewogCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBkZXZpY2UtPmxkZXYt PmJhY2tpbmdfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVl KGJkZXYpOwogCXNlY3Rvcl90IHRtcCwgbnI7CiAJdW5zaWduZWQgaW50IG1heF9kaXNjYXJkX3Nl Y3RvcnMsIGdyYW51bGFyaXR5OwogCWludCBhbGlnbm1lbnQ7CkBAIC0xNTIxLDcgKzE1MjAsNyBA QCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAq ZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCQlnb3RvIHplcm9fb3V0OwogCiAJLyogWmVyby1z ZWN0b3IgKHVua25vd24pIGFuZCBvbmUtc2VjdG9yIGdyYW51bGFyaXRpZXMgYXJlIHRoZSBzYW1l LiAgKi8KLQlncmFudWxhcml0eSA9IG1heChxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA+ PiA5LCAxVSk7CisJZ3JhbnVsYXJpdHkgPSBtYXgoYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJk ZXYpID4+IDksIDFVKTsKIAlhbGlnbm1lbnQgPSAoYmRldl9kaXNjYXJkX2FsaWdubWVudChiZGV2 KSA+PiA5KSAlIGdyYW51bGFyaXR5OwogCiAJbWF4X2Rpc2NhcmRfc2VjdG9ycyA9IG1pbihiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldiksICgxVSA8PCAyMikpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAwZTA2MWM5ODk2 ZWZmLi45NzZjZjk4N2IzOTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNzU5LDcgKzc1OSw3IEBAIHN0YXRpYyB2b2lkIGxv b3BfY29uZmlnX2Rpc2NhcmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJc3RydWN0IHJlcXVl c3RfcXVldWUgKmJhY2tpbmdxID0gYmRldl9nZXRfcXVldWUoSV9CREVWKGlub2RlKSk7CiAKIAkJ bWF4X2Rpc2NhcmRfc2VjdG9ycyA9IGJhY2tpbmdxLT5saW1pdHMubWF4X3dyaXRlX3plcm9lc19z ZWN0b3JzOwotCQlncmFudWxhcml0eSA9IGJhY2tpbmdxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA/OgorCQlncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShJX0JERVYo aW5vZGUpKSA/OgogCQkJcXVldWVfcGh5c2ljYWxfYmxvY2tfc2l6ZShiYWNraW5ncSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgYi9kcml2 ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwppbmRleCA2Y2I5Zjg3ODQzMjc4Li4yNWYz M2ViMjUzMzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2Uu YworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwpAQCAtODM1LDcgKzgz NSw2IEBAIHN0cnVjdCBzZV9kZXZpY2UgKnRhcmdldF9hbGxvY19kZXZpY2Uoc3RydWN0IHNlX2hi YSAqaGJhLCBjb25zdCBjaGFyICpuYW1lKQogYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zy b21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkJCQkgICAgICAgc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldikKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3Np emUoYmRldik7CiAKIAlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKQEAgLTg0 Nyw3ICs4NDYsNyBAQCBib29sIHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZShzdHJ1 Y3Qgc2VfZGV2X2F0dHJpYiAqYXR0cmliLAogCSAqIEN1cnJlbnRseSBoYXJkY29kZWQgdG8gMSBp biBMaW51eC9TQ1NJIGNvZGUuLgogCSAqLwogCWF0dHJpYi0+bWF4X3VubWFwX2Jsb2NrX2Rlc2Nf Y291bnQgPSAxOwotCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSAvIGJsb2NrX3NpemU7CisJYXR0cmliLT51bm1hcF9ncmFudWxhcml0eSA9 IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KSAvIGJsb2NrX3NpemU7CiAJYXR0cmliLT51 bm1hcF9ncmFudWxhcml0eV9hbGlnbm1lbnQgPQogCQliZGV2X2Rpc2NhcmRfYWxpZ25tZW50KGJk ZXYpIC8gYmxvY2tfc2l6ZTsKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lv Y3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jCmluZGV4IDA5NmJiMGRhMDNmMWMuLjcwNzY1ZDU5NjE2 YTUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpA QCAtNDY4LDcgKzQ2OCw2IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfZml0cmlt KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQkJCQl2b2lkIF9fdXNlciAqYXJnKQog ewogCXN0cnVjdCBidHJmc19kZXZpY2UgKmRldmljZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCXU2NCBtaW5sZW4gPSBVTExPTkdfTUFY OwogCXU2NCBudW1fZGV2aWNlcyA9IDA7CkBAIC00OTgsMTQgKzQ5NywxMSBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5m bywKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2aWNlLCAm ZnNfaW5mby0+ZnNfZGV2aWNlcy0+ZGV2aWNlcywKIAkJCQlkZXZfbGlzdCkgewotCQlpZiAoIWRl dmljZS0+YmRldikKKwkJaWYgKCFkZXZpY2UtPmJkZXYgfHwgIWJkZXZfbWF4X2Rpc2NhcmRfc2Vj dG9ycyhkZXZpY2UtPmJkZXYpKQogCQkJY29udGludWU7Ci0JCXEgPSBiZGV2X2dldF9xdWV1ZShk ZXZpY2UtPmJkZXYpOwotCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+YmRl dikpIHsKLQkJCW51bV9kZXZpY2VzKys7Ci0JCQltaW5sZW4gPSBtaW5fdCh1NjQsIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5LAotCQkJCSAgICAgbWlubGVuKTsKLQkJfQorCQludW1fZGV2 aWNlcysrOworCQltaW5sZW4gPSBtaW5fdCh1NjQsIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShk ZXZpY2UtPmJkZXYpLAorCQkJCSAgICBtaW5sZW4pOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsK IApkaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jCmluZGV4IDc2 NWU0ZjYzZGQxOGQuLjIwZDRlNDdmNTdhYjIgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2ZpbGUuYwor KysgYi9mcy9leGZhdC9maWxlLmMKQEAgLTM1MSw3ICszNTEsNiBAQCBpbnQgZXhmYXRfc2V0YXR0 cihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwKIAogc3RhdGljIGludCBleGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwg dW5zaWduZWQgbG9uZyBhcmcpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShpbm9kZS0+aV9zYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdl OwogCWludCByZXQgPSAwOwogCkBAIC0zNjUsNyArMzY0LDcgQEAgc3RhdGljIGludCBleGZhdF9p b2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJl dHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5n ZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCQkJCWJkZXZf ZGlzY2FyZF9ncmFudWxhcml0eShpbm9kZS0+aV9zYi0+c19iZGV2KSk7CiAKIAlyZXQgPSBleGZh dF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCBjMzY2OGM5NzdjZDk5Li42 ZDE4MjA1MzZkODhkIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0 L21iYWxsb2MuYwpAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgZXh0NF90cmltX2FsbF9mcmVlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncm91cCwKICAqLwogaW50IGV4dDRfdHJp bV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmltX3JhbmdlICpyYW5nZSkK IHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYp OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51 bGFyaXR5KHNiLT5zX2JkZXYpOwogCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycDsKIAlleHQ0 X2dyb3VwX3QgZ3JvdXAsIGZpcnN0X2dyb3VwLCBsYXN0X2dyb3VwOwogCWV4dDRfZ3JwYmxrX3Qg Y250ID0gMCwgZmlyc3RfY2x1c3RlciwgbGFzdF9jbHVzdGVyOwpAQCAtNjQ3NSw5ICs2NDc1LDkg QEAgaW50IGV4dDRfdHJpbV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmlt X3JhbmdlICpyYW5nZSkKIAkgICAgcmFuZ2UtPmxlbiA8IHNiLT5zX2Jsb2Nrc2l6ZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJLyogTm8gcG9pbnQgdG8gdHJ5IHRvIHRyaW0gbGVzcyB0aGFuIGRpc2Nh cmQgZ3JhbnVsYXJpdHkgKi8KLQlpZiAocmFuZ2UtPm1pbmxlbiA8IHEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KSB7CisJaWYgKHJhbmdlLT5taW5sZW4gPCBkaXNjYXJkX2dyYW51bGFyaXR5 KSB7CiAJCW1pbmxlbiA9IEVYVDRfTlVNX0IyQyhFWFQ0X1NCKHNiKSwKLQkJCXEtPmxpbWl0cy5k aXNjYXJkX2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKKwkJCQlkaXNjYXJk X2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKIAkJaWYgKG1pbmxlbiA+IEVY VDRfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZmlsZS5jIGIvZnMvZjJmcy9maWxlLmMKaW5kZXggNWI4OWFmMGYyN2YwNS4uODA1 M2Q5OWYzOTIwYiAxMDA2NDQKLS0tIGEvZnMvZjJmcy9maWxlLmMKKysrIGIvZnMvZjJmcy9maWxl LmMKQEAgLTIyODUsNyArMjI4NSw2IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVj dCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf c2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAgLTIzMDQsNyAr MjMwMyw3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJcmV0dXJuIHJldDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heCgo dW5zaWduZWQgaW50KXJhbmdlLm1pbmxlbiwKLQkJCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSk7CisJCQkgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCXJl dCA9IGYyZnNfdHJpbV9mcyhGMkZTX1NCKHNiKSwgJnJhbmdlKTsKIAltbnRfZHJvcF93cml0ZV9m aWxlKGZpbHApOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZmF0L2ZpbGUuYyBiL2Zz L2ZhdC9maWxlLmMKaW5kZXggZTRjN2QxMGU4MDEyOS4uYmY5MWY5NzdkZWJlYSAxMDA2NDQKLS0t IGEvZnMvZmF0L2ZpbGUuYworKysgYi9mcy9mYXQvZmlsZS5jCkBAIC0xMjcsNyArMTI3LDYgQEAg c3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGxvbmcgYXJnKQogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKIAlzdHJ1 Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAqdXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNf YmRldik7CiAJaW50IGVycjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTE0 MSw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlu bGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQkgICAgIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5 KHNiLT5zX2JkZXYpKTsKIAogCWVyciA9IGZhdF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlm IChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA3ZjIwYWM5MTMzYmM2Li42ZDI2YmI1MjU0ODQ0IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIHsKIAlzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9 IEdGUzJfU0IoaW5vZGUpOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVl dWUoc2RwLT5zZF92ZnMtPnNfYmRldik7CisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNk cC0+c2RfdmZzLT5zX2JkZXY7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKIAlzdHJ1Y3QgZ2Zz Ml9yZ3JwZCAqcmdkOwogCXN0cnVjdCBnZnMyX3JncnBkICpyZ2RfZW5kOwpAQCAtMTQwNSw3ICsx NDA1LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAq YXJncCkKIAlpZiAoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkK IAkJcmV0dXJuIC1FUk9GUzsKIAotCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNkcC0+ c2RfdmZzLT5zX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIoJnIsIGFyZ3AsIHNp emVvZihyKSkpCkBAIC0xNDE4LDggKzE0MTgsNyBAQCBpbnQgZ2ZzMl9maXRyaW0oc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgX191c2VyICphcmdwKQogCXN0YXJ0ID0gci5zdGFydCA+PiBic19zaGlm dDsKIAllbmQgPSBzdGFydCArIChyLmxlbiA+PiBic19zaGlmdCk7CiAJbWlubGVuID0gbWF4X3Qo dTY0LCByLm1pbmxlbiwgc2RwLT5zZF9zYi5zYl9ic2l6ZSk7Ci0JbWlubGVuID0gbWF4X3QodTY0 LCBtaW5sZW4sCi0JCSAgICAgICBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgPj4gYnNf c2hpZnQ7CisJbWlubGVuID0gbWF4X3QodTY0LCBtaW5sZW4sIGJkZXZfZGlzY2FyZF9ncmFudWxh cml0eShiZGV2KSkgPj4gYnNfc2hpZnQ7CiAKIAlpZiAoZW5kIDw9IHN0YXJ0IHx8IG1pbmxlbiA+ IHNkcC0+c2RfbWF4X3JnX2RhdGEpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZnMv amZzL2lvY3RsLmMgYi9mcy9qZnMvaW9jdGwuYwppbmRleCAzNTdhZTZlNWMzNmVjLi4xZTdiMTc3 ZWNlNjA1IDEwMDY0NAotLS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpA QCAtMTEwLDcgKzExMCw2IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJczY0IHJldCA9IDA7CiAKQEAgLTEyNyw3ICsxMjYsNyBAQCBsb25nIGpmc19p b2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1bnNpZ25l ZCBpbnQsIHJhbmdlLm1pbmxlbiwKLQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsK KwkJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSk7CiAKIAkJcmV0 ID0gamZzX2lvY190cmltKGlub2RlLCAmcmFuZ2UpOwogCQlpZiAocmV0IDwgMCkKZGlmZiAtLWdp dCBhL2ZzL25pbGZzMi9pb2N0bC5jIGIvZnMvbmlsZnMyL2lvY3RsLmMKaW5kZXggNTJiNzNmNTU4 ZmNiMS4uODdlMTAwNGI2MDZkMiAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2lvY3RsLmMKKysrIGIv ZnMvbmlsZnMyL2lvY3RsLmMKQEAgLTEwNTIsNyArMTA1Miw2IEBAIHN0YXRpYyBpbnQgbmlsZnNf aW9jdGxfcmVzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwLAogc3Rh dGljIGludCBuaWxmc19pb2N0bF90cmltX2ZzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgX191 c2VyICphcmdwKQogewogCXN0cnVjdCB0aGVfbmlsZnMgKm5pbGZzID0gaW5vZGUtPmlfc2ItPnNf ZnNfaW5mbzsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKG5pbGZz LT5uc19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAg LTEwNjUsNyArMTA2NCw4IEBAIHN0YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJh bmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcmFuZ2UubWlubGVuLAorCQkJICAg ICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobmlsZnMtPm5zX2JkZXYpKTsKIAogCWRvd25fcmVh ZCgmbmlsZnMtPm5zX3NlZ2N0b3Jfc2VtKTsKIAlyZXQgPSBuaWxmc19zdWZpbGVfdHJpbV9mcyhu aWxmcy0+bnNfc3VmaWxlLCAmcmFuZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvZmlsZS5jIGIv ZnMvbnRmczMvZmlsZS5jCmluZGV4IGU3NjMyMzYxNjkzMzEuLjE1ODA2ZWVhZTIxN2EgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9maWxlLmMKQEAgLTIyLDcgKzIy LDYgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgbnRmc19zYl9pbmZvICpz YmksIHVuc2lnbmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICp1 c2VyX3JhbmdlOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgcmFuZ2U7Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYmktPnNiLT5zX2JkZXYpOwogCWludCBlcnI7CiAK IAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0zNSw3ICszNCw4IEBAIHN0YXRpYyBp bnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBs b25nIGFyZykKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCB1c2VyX3JhbmdlLCBzaXplb2Yo cmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1MzIs IHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCXJhbmdlLm1p bmxlbiA9IG1heF90KHUzMiwgcmFuZ2UubWlubGVuLAorCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3Jh bnVsYXJpdHkoc2JpLT5zYi0+c19iZGV2KSk7CiAKIAllcnIgPSBudGZzX3RyaW1fZnMoc2JpLCAm cmFuZ2UpOwogCWlmIChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvc3VwZXIuYyBiL2Zz L250ZnMzL3N1cGVyLmMKaW5kZXggYzczNDA4NWJjY2U0YS4uNWYyZTQxNGNmYTc5YiAxMDA2NDQK LS0tIGEvZnMvbnRmczMvc3VwZXIuYworKysgYi9mcy9udGZzMy9zdXBlci5jCkBAIC04ODIsNyAr ODgyLDYgQEAgc3RhdGljIGludCBudGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWludCBlcnI7CiAJc3RydWN0IG50ZnNfc2JfaW5m byAqc2JpID0gc2ItPnNfZnNfaW5mbzsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2It PnNfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcnE7CiAJc3RydWN0IGlub2RlICppbm9k ZTsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmk7CiAJc2l6ZV90IGksIHR0OwpAQCAtOTEyLDkgKzkx MSw4IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAkJZ290byBvdXQ7CiAJfQogCi0JcnEgPSBiZGV2X2dl dF9xdWV1ZShiZGV2KTsKLQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpICYmIHJx LT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgewotCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJp dHkgPSBycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJaWYgKGJkZXZfbWF4X2Rpc2Nh cmRfc2VjdG9ycyhiZGV2KSAmJiBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpIHsKKwkJ c2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYp OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlfbWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwogCX0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2lvY3Rs LmMgYi9mcy9vY2ZzMi9pb2N0bC5jCmluZGV4IDliNzhlZjEwM2FkYTYuLmFmZDU0ZWM2NjEwMzAg MTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2lvY3RsLmMKKysrIGIvZnMvb2NmczIvaW9jdGwuYwpAQCAt OTAzLDcgKzkwMyw2IEBAIGxvbmcgb2NmczJfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCWNhc2UgRklUUklNOgogCXsKIAkJc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOwotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIApAQCAtOTE2LDcgKzkxNSw3IEBAIGxvbmcgb2NmczJf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkK IAkJCXJldHVybiAtRUZBVUxUOwogCi0JCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcS0+bGlt aXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHksCisJCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgYmRl dl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpLAogCQkJCSAgICAgcmFuZ2UubWlubGVu KTsKIAkJcmV0ID0gb2NmczJfdHJpbV9mcyhzYiwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRp ZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmlu ZGV4IGE0ZTY2MDlkNjE2YjcuLmUyYWRhMTE1YzIzZjkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNf ZGlzY2FyZC5jCisrKyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCkBAIC0xNTIsOCArMTUyLDggQEAg eGZzX2lvY190cmltKAogCXN0cnVjdCB4ZnNfbW91bnQJCSptcCwKIAlzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlcgkqdXJhbmdlKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpxID0gYmRldl9n ZXRfcXVldWUobXAtPm1fZGRldl90YXJncC0+YnRfYmRldik7Ci0JdW5zaWduZWQgaW50CQlncmFu dWxhcml0eSA9IHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCXVuc2lnbmVkIGludAkJ Z3JhbnVsYXJpdHkgPQorCQliZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobXAtPm1fZGRldl90YXJn cC0+YnRfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZQlyYW5nZTsKIAl4ZnNfZGFkZHJfdAkJ c3RhcnQsIGVuZCwgbWlubGVuOwogCXhmc19hZ251bWJlcl90CQlzdGFydF9hZ25vLCBlbmRfYWdu bywgYWdubzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xp bnV4L2Jsa2Rldi5oCmluZGV4IDc2N2FiMjJlMTA1MmEuLmYxY2Y1NTdlYTIwZWYgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApA QCAtMTI1Nyw2ICsxMjU3LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCXJldHVybiBiZGV2 X2dldF9xdWV1ZShiZGV2KS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnM7CiB9CiAKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2KQoreworCXJldHVybiBiZGV2X2dldF9xdWV1ZShiZGV2KS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJk ZXZfd3JpdGVfemVyb2VzX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIHsKIAlz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotLSAKMi4zMC4y CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Christoph Hellwig Subject: [PATCH 25/27] block: add a bdev_discard_granularity helper Date: Fri, 15 Apr 2022 06:52:56 +0200 Message-Id: <20220415045258.199825-26-hch@lst.de> In-Reply-To: <20220415045258.199825-1-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-um" Errors-To: linux-um-bounces+geert=linux-m68k.org@lists.infradead.org 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?= , Ryusuke Konishi , David Sterba QWJzdHJhY3QgYXdheSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZmlsZSBzeXN0ZW1zIGJ5 IHByb3ZpZGluZyBhCmJsb2NrX2RldmljZSBiYXNlZCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRp c2NhcmQgZ3JhbnVsYXJpdHkuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNo QGxzdC5kZT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2Vu QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlzdG9waC5i b2VobXdhbGRlckBsaW5iaXQuY29tPiBbZHJiZF0KQWNrZWQtYnk6IFJ5dXN1a2UgS29uaXNoaSA8 a29uaXNoaS5yeXVzdWtlQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJi YUBzdXNlLmNvbT4gW2J0cmZzXQotLS0KIGJsb2NrL2Jsay1saWIuYyAgICAgICAgICAgICAgICAg ICAgIHwgIDUgKystLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgICAgICAgIHwgIDkg KysrKystLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jICB8ICAzICstLQog ZHJpdmVycy9ibG9jay9sb29wLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMyArLS0KIGZzL2J0cmZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0tCiBmcy9leGZhdC9maWxlLmMgICAgICAgICAg ICAgICAgICAgICB8ICAzICstLQogZnMvZXh0NC9tYmFsbG9jLmMgICAgICAgICAgICAgICAgICAg fCAgNiArKystLS0KIGZzL2YyZnMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0t CiBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvZ2ZzMi9y Z3JwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiBmcy9qZnMvaW9jdGwuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvbmlsZnMyL2lvY3RsLmMgICAgICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBmcy9udGZzMy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KIGZzL250ZnMzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLS0t CiBmcy9vY2ZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMveGZzL3hm c19kaXNjYXJkLmMgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBpbmNsdWRlL2xpbnV4L2Jsa2Rl di5oICAgICAgICAgICAgICB8ICA1ICsrKysrCiAxOCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9i bG9jay9ibGstbGliLmMKaW5kZXggOGI0YjY2ZDNhOWJmYy4uNDNhYTRkN2ZlODU5ZiAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTIsOCArMTIs NyBAQAogCiBzdGF0aWMgc2VjdG9yX3QgYmlvX2Rpc2NhcmRfbGltaXQoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yKQogewotCXVuc2lnbmVkIGludCBkaXNjYXJkX2dy YW51bGFyaXR5ID0KLQkJYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJk X2dyYW51bGFyaXR5KGJkZXYpOwogCXNlY3Rvcl90IGdyYW51bGFyaXR5X2FsaWduZWRfc2VjdG9y OwogCiAJaWYgKGJkZXZfaXNfcGFydGl0aW9uKGJkZXYpKQpAQCAtNTksNyArNTgsNyBAQCBpbnQg X19ibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3Jf dCBzZWN0b3IsCiAJfQogCiAJLyogSW4gY2FzZSB0aGUgZGlzY2FyZCBncmFudWxhcml0eSBpc24n dCBzZXQgYnkgYnVnZ3kgZGV2aWNlIGRyaXZlciAqLwotCWlmIChXQVJOX09OX09OQ0UoIXEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KSkgeworCWlmIChXQVJOX09OX09OQ0UoIWJkZXZfZGlz Y2FyZF9ncmFudWxhcml0eShiZGV2KSkpIHsKIAkJY2hhciBkZXZfbmFtZVtCREVWTkFNRV9TSVpF XTsKIAogCQliZGV2bmFtZShiZGV2LCBkZXZfbmFtZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Js b2NrL2RyYmQvZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCAw Njc4Y2ViNTA1Nzk5Li5hNjI4MGRjYjM3Njc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9ubC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTE0MjUs NyArMTQyNSw2IEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX2Rpc2tfY29uZihzdHJ1Y3QgZHJiZF9k ZXZpY2UgKmRldmljZSwgc3RydWN0IGRpc2tfY29uZiAqZGlzCiAJCQkgICAgICAgc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKm5iYykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gbmJj LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2LT5iZF9kaXNr LT5xdWV1ZTsKIAogCWlmIChkaXNrX2NvbmYtPmFsX2V4dGVudHMgPCBEUkJEX0FMX0VYVEVOVFNf TUlOKQogCQlkaXNrX2NvbmYtPmFsX2V4dGVudHMgPSBEUkJEX0FMX0VYVEVOVFNfTUlOOwpAQCAt MTQ0MiwxMiArMTQ0MSwxNCBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0 IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCWlmIChkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJaW50IG9yaWdfdmFsdWUgPSBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCXNlY3Rvcl90IGRpc2NhcmRfc2l6ZSA9IGJk ZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSA8PCA5OworCQl1bnNpZ25lZCBpbnQgZGlzY2Fy ZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KTsKIAkJaW50IHJl bWFpbmRlcjsKIAotCQlpZiAocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCi0JCQlkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJaWYgKGRpc2NhcmRf Z3JhbnVsYXJpdHkgPiBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCisJCQlkaXNr X2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPSBkaXNjYXJkX2dyYW51bGFyaXR5OwogCi0J CXJlbWFpbmRlciA9IGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSAlIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkgJQorCQkJCWRpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCWRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSArPSByZW1haW5kZXI7CiAKIAkJaWYgKGRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSA+IGRpc2NhcmRfc2l6ZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9y ZWNlaXZlci5jCmluZGV4IDhhNGE0N2RhNTZmZTkuLjI3NWM1M2M3YjYyOWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKKysrIGIvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTUxMSw3ICsxNTExLDYgQEAgdm9pZCBkcmJkX2J1bXBf d3JpdGVfb3JkZXJpbmcoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgZHJi ZF9iYWNraW4KIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywg aW50IGZsYWdzKQogewogCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBkZXZpY2UtPmxkZXYt PmJhY2tpbmdfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVl KGJkZXYpOwogCXNlY3Rvcl90IHRtcCwgbnI7CiAJdW5zaWduZWQgaW50IG1heF9kaXNjYXJkX3Nl Y3RvcnMsIGdyYW51bGFyaXR5OwogCWludCBhbGlnbm1lbnQ7CkBAIC0xNTIxLDcgKzE1MjAsNyBA QCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAq ZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCQlnb3RvIHplcm9fb3V0OwogCiAJLyogWmVyby1z ZWN0b3IgKHVua25vd24pIGFuZCBvbmUtc2VjdG9yIGdyYW51bGFyaXRpZXMgYXJlIHRoZSBzYW1l LiAgKi8KLQlncmFudWxhcml0eSA9IG1heChxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA+ PiA5LCAxVSk7CisJZ3JhbnVsYXJpdHkgPSBtYXgoYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJk ZXYpID4+IDksIDFVKTsKIAlhbGlnbm1lbnQgPSAoYmRldl9kaXNjYXJkX2FsaWdubWVudChiZGV2 KSA+PiA5KSAlIGdyYW51bGFyaXR5OwogCiAJbWF4X2Rpc2NhcmRfc2VjdG9ycyA9IG1pbihiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldiksICgxVSA8PCAyMikpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAwZTA2MWM5ODk2 ZWZmLi45NzZjZjk4N2IzOTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNzU5LDcgKzc1OSw3IEBAIHN0YXRpYyB2b2lkIGxv b3BfY29uZmlnX2Rpc2NhcmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJc3RydWN0IHJlcXVl c3RfcXVldWUgKmJhY2tpbmdxID0gYmRldl9nZXRfcXVldWUoSV9CREVWKGlub2RlKSk7CiAKIAkJ bWF4X2Rpc2NhcmRfc2VjdG9ycyA9IGJhY2tpbmdxLT5saW1pdHMubWF4X3dyaXRlX3plcm9lc19z ZWN0b3JzOwotCQlncmFudWxhcml0eSA9IGJhY2tpbmdxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA/OgorCQlncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShJX0JERVYo aW5vZGUpKSA/OgogCQkJcXVldWVfcGh5c2ljYWxfYmxvY2tfc2l6ZShiYWNraW5ncSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgYi9kcml2 ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwppbmRleCA2Y2I5Zjg3ODQzMjc4Li4yNWYz M2ViMjUzMzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2Uu YworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwpAQCAtODM1LDcgKzgz NSw2IEBAIHN0cnVjdCBzZV9kZXZpY2UgKnRhcmdldF9hbGxvY19kZXZpY2Uoc3RydWN0IHNlX2hi YSAqaGJhLCBjb25zdCBjaGFyICpuYW1lKQogYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zy b21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkJCQkgICAgICAgc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldikKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3Np emUoYmRldik7CiAKIAlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKQEAgLTg0 Nyw3ICs4NDYsNyBAQCBib29sIHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZShzdHJ1 Y3Qgc2VfZGV2X2F0dHJpYiAqYXR0cmliLAogCSAqIEN1cnJlbnRseSBoYXJkY29kZWQgdG8gMSBp biBMaW51eC9TQ1NJIGNvZGUuLgogCSAqLwogCWF0dHJpYi0+bWF4X3VubWFwX2Jsb2NrX2Rlc2Nf Y291bnQgPSAxOwotCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSAvIGJsb2NrX3NpemU7CisJYXR0cmliLT51bm1hcF9ncmFudWxhcml0eSA9 IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KSAvIGJsb2NrX3NpemU7CiAJYXR0cmliLT51 bm1hcF9ncmFudWxhcml0eV9hbGlnbm1lbnQgPQogCQliZGV2X2Rpc2NhcmRfYWxpZ25tZW50KGJk ZXYpIC8gYmxvY2tfc2l6ZTsKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lv Y3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jCmluZGV4IDA5NmJiMGRhMDNmMWMuLjcwNzY1ZDU5NjE2 YTUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpA QCAtNDY4LDcgKzQ2OCw2IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfZml0cmlt KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQkJCQl2b2lkIF9fdXNlciAqYXJnKQog ewogCXN0cnVjdCBidHJmc19kZXZpY2UgKmRldmljZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCXU2NCBtaW5sZW4gPSBVTExPTkdfTUFY OwogCXU2NCBudW1fZGV2aWNlcyA9IDA7CkBAIC00OTgsMTQgKzQ5NywxMSBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5m bywKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2aWNlLCAm ZnNfaW5mby0+ZnNfZGV2aWNlcy0+ZGV2aWNlcywKIAkJCQlkZXZfbGlzdCkgewotCQlpZiAoIWRl dmljZS0+YmRldikKKwkJaWYgKCFkZXZpY2UtPmJkZXYgfHwgIWJkZXZfbWF4X2Rpc2NhcmRfc2Vj dG9ycyhkZXZpY2UtPmJkZXYpKQogCQkJY29udGludWU7Ci0JCXEgPSBiZGV2X2dldF9xdWV1ZShk ZXZpY2UtPmJkZXYpOwotCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+YmRl dikpIHsKLQkJCW51bV9kZXZpY2VzKys7Ci0JCQltaW5sZW4gPSBtaW5fdCh1NjQsIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5LAotCQkJCSAgICAgbWlubGVuKTsKLQkJfQorCQludW1fZGV2 aWNlcysrOworCQltaW5sZW4gPSBtaW5fdCh1NjQsIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShk ZXZpY2UtPmJkZXYpLAorCQkJCSAgICBtaW5sZW4pOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsK IApkaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jCmluZGV4IDc2 NWU0ZjYzZGQxOGQuLjIwZDRlNDdmNTdhYjIgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2ZpbGUuYwor KysgYi9mcy9leGZhdC9maWxlLmMKQEAgLTM1MSw3ICszNTEsNiBAQCBpbnQgZXhmYXRfc2V0YXR0 cihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwKIAogc3RhdGljIGludCBleGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwg dW5zaWduZWQgbG9uZyBhcmcpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShpbm9kZS0+aV9zYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdl OwogCWludCByZXQgPSAwOwogCkBAIC0zNjUsNyArMzY0LDcgQEAgc3RhdGljIGludCBleGZhdF9p b2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJl dHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5n ZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCQkJCWJkZXZf ZGlzY2FyZF9ncmFudWxhcml0eShpbm9kZS0+aV9zYi0+c19iZGV2KSk7CiAKIAlyZXQgPSBleGZh dF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCBjMzY2OGM5NzdjZDk5Li42 ZDE4MjA1MzZkODhkIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0 L21iYWxsb2MuYwpAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgZXh0NF90cmltX2FsbF9mcmVlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncm91cCwKICAqLwogaW50IGV4dDRfdHJp bV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmltX3JhbmdlICpyYW5nZSkK IHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYp OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51 bGFyaXR5KHNiLT5zX2JkZXYpOwogCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycDsKIAlleHQ0 X2dyb3VwX3QgZ3JvdXAsIGZpcnN0X2dyb3VwLCBsYXN0X2dyb3VwOwogCWV4dDRfZ3JwYmxrX3Qg Y250ID0gMCwgZmlyc3RfY2x1c3RlciwgbGFzdF9jbHVzdGVyOwpAQCAtNjQ3NSw5ICs2NDc1LDkg QEAgaW50IGV4dDRfdHJpbV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmlt X3JhbmdlICpyYW5nZSkKIAkgICAgcmFuZ2UtPmxlbiA8IHNiLT5zX2Jsb2Nrc2l6ZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJLyogTm8gcG9pbnQgdG8gdHJ5IHRvIHRyaW0gbGVzcyB0aGFuIGRpc2Nh cmQgZ3JhbnVsYXJpdHkgKi8KLQlpZiAocmFuZ2UtPm1pbmxlbiA8IHEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KSB7CisJaWYgKHJhbmdlLT5taW5sZW4gPCBkaXNjYXJkX2dyYW51bGFyaXR5 KSB7CiAJCW1pbmxlbiA9IEVYVDRfTlVNX0IyQyhFWFQ0X1NCKHNiKSwKLQkJCXEtPmxpbWl0cy5k aXNjYXJkX2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKKwkJCQlkaXNjYXJk X2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKIAkJaWYgKG1pbmxlbiA+IEVY VDRfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZmlsZS5jIGIvZnMvZjJmcy9maWxlLmMKaW5kZXggNWI4OWFmMGYyN2YwNS4uODA1 M2Q5OWYzOTIwYiAxMDA2NDQKLS0tIGEvZnMvZjJmcy9maWxlLmMKKysrIGIvZnMvZjJmcy9maWxl LmMKQEAgLTIyODUsNyArMjI4NSw2IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVj dCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf c2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAgLTIzMDQsNyAr MjMwMyw3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJcmV0dXJuIHJldDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heCgo dW5zaWduZWQgaW50KXJhbmdlLm1pbmxlbiwKLQkJCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSk7CisJCQkgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCXJl dCA9IGYyZnNfdHJpbV9mcyhGMkZTX1NCKHNiKSwgJnJhbmdlKTsKIAltbnRfZHJvcF93cml0ZV9m aWxlKGZpbHApOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZmF0L2ZpbGUuYyBiL2Zz L2ZhdC9maWxlLmMKaW5kZXggZTRjN2QxMGU4MDEyOS4uYmY5MWY5NzdkZWJlYSAxMDA2NDQKLS0t IGEvZnMvZmF0L2ZpbGUuYworKysgYi9mcy9mYXQvZmlsZS5jCkBAIC0xMjcsNyArMTI3LDYgQEAg c3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGxvbmcgYXJnKQogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKIAlzdHJ1 Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAqdXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNf YmRldik7CiAJaW50IGVycjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTE0 MSw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlu bGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQkgICAgIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5 KHNiLT5zX2JkZXYpKTsKIAogCWVyciA9IGZhdF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlm IChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA3ZjIwYWM5MTMzYmM2Li42ZDI2YmI1MjU0ODQ0IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIHsKIAlzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9 IEdGUzJfU0IoaW5vZGUpOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVl dWUoc2RwLT5zZF92ZnMtPnNfYmRldik7CisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNk cC0+c2RfdmZzLT5zX2JkZXY7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKIAlzdHJ1Y3QgZ2Zz Ml9yZ3JwZCAqcmdkOwogCXN0cnVjdCBnZnMyX3JncnBkICpyZ2RfZW5kOwpAQCAtMTQwNSw3ICsx NDA1LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAq YXJncCkKIAlpZiAoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkK IAkJcmV0dXJuIC1FUk9GUzsKIAotCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNkcC0+ c2RfdmZzLT5zX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIoJnIsIGFyZ3AsIHNp emVvZihyKSkpCkBAIC0xNDE4LDggKzE0MTgsNyBAQCBpbnQgZ2ZzMl9maXRyaW0oc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgX191c2VyICphcmdwKQogCXN0YXJ0ID0gci5zdGFydCA+PiBic19zaGlm dDsKIAllbmQgPSBzdGFydCArIChyLmxlbiA+PiBic19zaGlmdCk7CiAJbWlubGVuID0gbWF4X3Qo dTY0LCByLm1pbmxlbiwgc2RwLT5zZF9zYi5zYl9ic2l6ZSk7Ci0JbWlubGVuID0gbWF4X3QodTY0 LCBtaW5sZW4sCi0JCSAgICAgICBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgPj4gYnNf c2hpZnQ7CisJbWlubGVuID0gbWF4X3QodTY0LCBtaW5sZW4sIGJkZXZfZGlzY2FyZF9ncmFudWxh cml0eShiZGV2KSkgPj4gYnNfc2hpZnQ7CiAKIAlpZiAoZW5kIDw9IHN0YXJ0IHx8IG1pbmxlbiA+ IHNkcC0+c2RfbWF4X3JnX2RhdGEpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZnMv amZzL2lvY3RsLmMgYi9mcy9qZnMvaW9jdGwuYwppbmRleCAzNTdhZTZlNWMzNmVjLi4xZTdiMTc3 ZWNlNjA1IDEwMDY0NAotLS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpA QCAtMTEwLDcgKzExMCw2IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJczY0IHJldCA9IDA7CiAKQEAgLTEyNyw3ICsxMjYsNyBAQCBsb25nIGpmc19p b2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1bnNpZ25l ZCBpbnQsIHJhbmdlLm1pbmxlbiwKLQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsK KwkJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSk7CiAKIAkJcmV0 ID0gamZzX2lvY190cmltKGlub2RlLCAmcmFuZ2UpOwogCQlpZiAocmV0IDwgMCkKZGlmZiAtLWdp dCBhL2ZzL25pbGZzMi9pb2N0bC5jIGIvZnMvbmlsZnMyL2lvY3RsLmMKaW5kZXggNTJiNzNmNTU4 ZmNiMS4uODdlMTAwNGI2MDZkMiAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2lvY3RsLmMKKysrIGIv ZnMvbmlsZnMyL2lvY3RsLmMKQEAgLTEwNTIsNyArMTA1Miw2IEBAIHN0YXRpYyBpbnQgbmlsZnNf aW9jdGxfcmVzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwLAogc3Rh dGljIGludCBuaWxmc19pb2N0bF90cmltX2ZzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgX191 c2VyICphcmdwKQogewogCXN0cnVjdCB0aGVfbmlsZnMgKm5pbGZzID0gaW5vZGUtPmlfc2ItPnNf ZnNfaW5mbzsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKG5pbGZz LT5uc19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAg LTEwNjUsNyArMTA2NCw4IEBAIHN0YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJh bmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcmFuZ2UubWlubGVuLAorCQkJICAg ICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobmlsZnMtPm5zX2JkZXYpKTsKIAogCWRvd25fcmVh ZCgmbmlsZnMtPm5zX3NlZ2N0b3Jfc2VtKTsKIAlyZXQgPSBuaWxmc19zdWZpbGVfdHJpbV9mcyhu aWxmcy0+bnNfc3VmaWxlLCAmcmFuZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvZmlsZS5jIGIv ZnMvbnRmczMvZmlsZS5jCmluZGV4IGU3NjMyMzYxNjkzMzEuLjE1ODA2ZWVhZTIxN2EgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9maWxlLmMKQEAgLTIyLDcgKzIy LDYgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgbnRmc19zYl9pbmZvICpz YmksIHVuc2lnbmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICp1 c2VyX3JhbmdlOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgcmFuZ2U7Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYmktPnNiLT5zX2JkZXYpOwogCWludCBlcnI7CiAK IAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0zNSw3ICszNCw4IEBAIHN0YXRpYyBp bnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBs b25nIGFyZykKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCB1c2VyX3JhbmdlLCBzaXplb2Yo cmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1MzIs IHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCXJhbmdlLm1p bmxlbiA9IG1heF90KHUzMiwgcmFuZ2UubWlubGVuLAorCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3Jh bnVsYXJpdHkoc2JpLT5zYi0+c19iZGV2KSk7CiAKIAllcnIgPSBudGZzX3RyaW1fZnMoc2JpLCAm cmFuZ2UpOwogCWlmIChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvc3VwZXIuYyBiL2Zz L250ZnMzL3N1cGVyLmMKaW5kZXggYzczNDA4NWJjY2U0YS4uNWYyZTQxNGNmYTc5YiAxMDA2NDQK LS0tIGEvZnMvbnRmczMvc3VwZXIuYworKysgYi9mcy9udGZzMy9zdXBlci5jCkBAIC04ODIsNyAr ODgyLDYgQEAgc3RhdGljIGludCBudGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWludCBlcnI7CiAJc3RydWN0IG50ZnNfc2JfaW5m byAqc2JpID0gc2ItPnNfZnNfaW5mbzsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2It PnNfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcnE7CiAJc3RydWN0IGlub2RlICppbm9k ZTsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmk7CiAJc2l6ZV90IGksIHR0OwpAQCAtOTEyLDkgKzkx MSw4IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAkJZ290byBvdXQ7CiAJfQogCi0JcnEgPSBiZGV2X2dl dF9xdWV1ZShiZGV2KTsKLQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpICYmIHJx LT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgewotCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJp dHkgPSBycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJaWYgKGJkZXZfbWF4X2Rpc2Nh cmRfc2VjdG9ycyhiZGV2KSAmJiBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpIHsKKwkJ c2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYp OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlfbWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwogCX0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2lvY3Rs LmMgYi9mcy9vY2ZzMi9pb2N0bC5jCmluZGV4IDliNzhlZjEwM2FkYTYuLmFmZDU0ZWM2NjEwMzAg MTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2lvY3RsLmMKKysrIGIvZnMvb2NmczIvaW9jdGwuYwpAQCAt OTAzLDcgKzkwMyw2IEBAIGxvbmcgb2NmczJfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCWNhc2UgRklUUklNOgogCXsKIAkJc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOwotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIApAQCAtOTE2LDcgKzkxNSw3IEBAIGxvbmcgb2NmczJf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkK IAkJCXJldHVybiAtRUZBVUxUOwogCi0JCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcS0+bGlt aXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHksCisJCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgYmRl dl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpLAogCQkJCSAgICAgcmFuZ2UubWlubGVu KTsKIAkJcmV0ID0gb2NmczJfdHJpbV9mcyhzYiwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRp ZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmlu ZGV4IGE0ZTY2MDlkNjE2YjcuLmUyYWRhMTE1YzIzZjkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNf ZGlzY2FyZC5jCisrKyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCkBAIC0xNTIsOCArMTUyLDggQEAg eGZzX2lvY190cmltKAogCXN0cnVjdCB4ZnNfbW91bnQJCSptcCwKIAlzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlcgkqdXJhbmdlKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpxID0gYmRldl9n ZXRfcXVldWUobXAtPm1fZGRldl90YXJncC0+YnRfYmRldik7Ci0JdW5zaWduZWQgaW50CQlncmFu dWxhcml0eSA9IHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCXVuc2lnbmVkIGludAkJ Z3JhbnVsYXJpdHkgPQorCQliZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobXAtPm1fZGRldl90YXJn cC0+YnRfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZQlyYW5nZTsKIAl4ZnNfZGFkZHJfdAkJ c3RhcnQsIGVuZCwgbWlubGVuOwogCXhmc19hZ251bWJlcl90CQlzdGFydF9hZ25vLCBlbmRfYWdu bywgYWdubzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xp bnV4L2Jsa2Rldi5oCmluZGV4IDc2N2FiMjJlMTA1MmEuLmYxY2Y1NTdlYTIwZWYgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApA QCAtMTI1Nyw2ICsxMjU3LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCXJldHVybiBiZGV2 X2dldF9xdWV1ZShiZGV2KS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnM7CiB9CiAKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2KQoreworCXJldHVybiBiZGV2X2dldF9xdWV1ZShiZGV2KS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJk ZXZfd3JpdGVfemVyb2VzX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIHsKIAlz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotLSAKMi4zMC4y CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt dW0gbWFpbGluZyBsaXN0CmxpbnV4LXVtQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC11bQo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Date: Fri, 15 Apr 2022 06:52:56 +0200 Subject: [Cluster-devel] [PATCH 25/27] block: add a bdev_discard_granularity helper In-Reply-To: <20220415045258.199825-1-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> Message-ID: <20220415045258.199825-26-hch@lst.de> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Abstract away implementation details from file systems by providing a block_device based helper to retrieve the discard granularity. Signed-off-by: Christoph Hellwig Reviewed-by: Martin K. Petersen Acked-by: Christoph B?hmwalder [drbd] Acked-by: Ryusuke Konishi Acked-by: David Sterba [btrfs] --- block/blk-lib.c | 5 ++--- drivers/block/drbd/drbd_nl.c | 9 +++++---- drivers/block/drbd/drbd_receiver.c | 3 +-- drivers/block/loop.c | 2 +- drivers/target/target_core_device.c | 3 +-- fs/btrfs/ioctl.c | 12 ++++-------- fs/exfat/file.c | 3 +-- fs/ext4/mballoc.c | 6 +++--- fs/f2fs/file.c | 3 +-- fs/fat/file.c | 3 +-- fs/gfs2/rgrp.c | 7 +++---- fs/jfs/ioctl.c | 3 +-- fs/nilfs2/ioctl.c | 4 ++-- fs/ntfs3/file.c | 4 ++-- fs/ntfs3/super.c | 6 ++---- fs/ocfs2/ioctl.c | 3 +-- fs/xfs/xfs_discard.c | 4 ++-- include/linux/blkdev.h | 5 +++++ 18 files changed, 38 insertions(+), 47 deletions(-) diff --git a/block/blk-lib.c b/block/blk-lib.c index 8b4b66d3a9bfc..43aa4d7fe859f 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -12,8 +12,7 @@ static sector_t bio_discard_limit(struct block_device *bdev, sector_t sector) { - unsigned int discard_granularity = - bdev_get_queue(bdev)->limits.discard_granularity; + unsigned int discard_granularity = bdev_discard_granularity(bdev); sector_t granularity_aligned_sector; if (bdev_is_partition(bdev)) @@ -59,7 +58,7 @@ int __blkdev_issue_discard(struct block_device *bdev, sector_t sector, } /* In case the discard granularity isn't set by buggy device driver */ - if (WARN_ON_ONCE(!q->limits.discard_granularity)) { + if (WARN_ON_ONCE(!bdev_discard_granularity(bdev))) { char dev_name[BDEVNAME_SIZE]; bdevname(bdev, dev_name); diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c index 0678ceb505799..a6280dcb37679 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c @@ -1425,7 +1425,6 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis struct drbd_backing_dev *nbc) { struct block_device *bdev = nbc->backing_bdev; - struct request_queue *q = bdev->bd_disk->queue; if (disk_conf->al_extents < DRBD_AL_EXTENTS_MIN) disk_conf->al_extents = DRBD_AL_EXTENTS_MIN; @@ -1442,12 +1441,14 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis if (disk_conf->rs_discard_granularity) { int orig_value = disk_conf->rs_discard_granularity; sector_t discard_size = bdev_max_discard_sectors(bdev) << 9; + unsigned int discard_granularity = bdev_discard_granularity(bdev); int remainder; - if (q->limits.discard_granularity > disk_conf->rs_discard_granularity) - disk_conf->rs_discard_granularity = q->limits.discard_granularity; + if (discard_granularity > disk_conf->rs_discard_granularity) + disk_conf->rs_discard_granularity = discard_granularity; - remainder = disk_conf->rs_discard_granularity % q->limits.discard_granularity; + remainder = disk_conf->rs_discard_granularity % + discard_granularity; disk_conf->rs_discard_granularity += remainder; if (disk_conf->rs_discard_granularity > discard_size) diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 8a4a47da56fe9..275c53c7b629e 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -1511,7 +1511,6 @@ void drbd_bump_write_ordering(struct drbd_resource *resource, struct drbd_backin int drbd_issue_discard_or_zero_out(struct drbd_device *device, sector_t start, unsigned int nr_sectors, int flags) { struct block_device *bdev = device->ldev->backing_bdev; - struct request_queue *q = bdev_get_queue(bdev); sector_t tmp, nr; unsigned int max_discard_sectors, granularity; int alignment; @@ -1521,7 +1520,7 @@ int drbd_issue_discard_or_zero_out(struct drbd_device *device, sector_t start, u goto zero_out; /* Zero-sector (unknown) and one-sector granularities are the same. */ - granularity = max(q->limits.discard_granularity >> 9, 1U); + granularity = max(bdev_discard_granularity(bdev) >> 9, 1U); alignment = (bdev_discard_alignment(bdev) >> 9) % granularity; max_discard_sectors = min(bdev_max_discard_sectors(bdev), (1U << 22)); diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 0e061c9896eff..976cf987b3920 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -759,7 +759,7 @@ static void loop_config_discard(struct loop_device *lo) struct request_queue *backingq = bdev_get_queue(I_BDEV(inode)); max_discard_sectors = backingq->limits.max_write_zeroes_sectors; - granularity = backingq->limits.discard_granularity ?: + granularity = bdev_discard_granularity(I_BDEV(inode)) ?: queue_physical_block_size(backingq); /* diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c index 6cb9f87843278..25f33eb25337c 100644 --- a/drivers/target/target_core_device.c +++ b/drivers/target/target_core_device.c @@ -835,7 +835,6 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib, struct block_device *bdev) { - struct request_queue *q = bdev_get_queue(bdev); int block_size = bdev_logical_block_size(bdev); if (!bdev_max_discard_sectors(bdev)) @@ -847,7 +846,7 @@ bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib, * Currently hardcoded to 1 in Linux/SCSI code.. */ attrib->max_unmap_block_desc_count = 1; - attrib->unmap_granularity = q->limits.discard_granularity / block_size; + attrib->unmap_granularity = bdev_discard_granularity(bdev) / block_size; attrib->unmap_granularity_alignment = bdev_discard_alignment(bdev) / block_size; return true; diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 096bb0da03f1c..70765d59616a5 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -468,7 +468,6 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info, void __user *arg) { struct btrfs_device *device; - struct request_queue *q; struct fstrim_range range; u64 minlen = ULLONG_MAX; u64 num_devices = 0; @@ -498,14 +497,11 @@ static noinline int btrfs_ioctl_fitrim(struct btrfs_fs_info *fs_info, rcu_read_lock(); list_for_each_entry_rcu(device, &fs_info->fs_devices->devices, dev_list) { - if (!device->bdev) + if (!device->bdev || !bdev_max_discard_sectors(device->bdev)) continue; - q = bdev_get_queue(device->bdev); - if (bdev_max_discard_sectors(device->bdev)) { - num_devices++; - minlen = min_t(u64, q->limits.discard_granularity, - minlen); - } + num_devices++; + minlen = min_t(u64, bdev_discard_granularity(device->bdev), + minlen); } rcu_read_unlock(); diff --git a/fs/exfat/file.c b/fs/exfat/file.c index 765e4f63dd18d..20d4e47f57ab2 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -351,7 +351,6 @@ int exfat_setattr(struct user_namespace *mnt_userns, struct dentry *dentry, static int exfat_ioctl_fitrim(struct inode *inode, unsigned long arg) { - struct request_queue *q = bdev_get_queue(inode->i_sb->s_bdev); struct fstrim_range range; int ret = 0; @@ -365,7 +364,7 @@ static int exfat_ioctl_fitrim(struct inode *inode, unsigned long arg) return -EFAULT; range.minlen = max_t(unsigned int, range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(inode->i_sb->s_bdev)); ret = exfat_trim_fs(inode, &range); if (ret < 0) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index c3668c977cd99..6d1820536d88d 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -6455,7 +6455,7 @@ ext4_trim_all_free(struct super_block *sb, ext4_group_t group, */ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range) { - struct request_queue *q = bdev_get_queue(sb->s_bdev); + unsigned int discard_granularity = bdev_discard_granularity(sb->s_bdev); struct ext4_group_info *grp; ext4_group_t group, first_group, last_group; ext4_grpblk_t cnt = 0, first_cluster, last_cluster; @@ -6475,9 +6475,9 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range) range->len < sb->s_blocksize) return -EINVAL; /* No point to try to trim less than discard granularity */ - if (range->minlen < q->limits.discard_granularity) { + if (range->minlen < discard_granularity) { minlen = EXT4_NUM_B2C(EXT4_SB(sb), - q->limits.discard_granularity >> sb->s_blocksize_bits); + discard_granularity >> sb->s_blocksize_bits); if (minlen > EXT4_CLUSTERS_PER_GROUP(sb)) goto out; } diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 5b89af0f27f05..8053d99f3920b 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -2285,7 +2285,6 @@ static int f2fs_ioc_fitrim(struct file *filp, unsigned long arg) { struct inode *inode = file_inode(filp); struct super_block *sb = inode->i_sb; - struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; int ret; @@ -2304,7 +2303,7 @@ static int f2fs_ioc_fitrim(struct file *filp, unsigned long arg) return ret; range.minlen = max((unsigned int)range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(sb->s_bdev)); ret = f2fs_trim_fs(F2FS_SB(sb), &range); mnt_drop_write_file(filp); if (ret < 0) diff --git a/fs/fat/file.c b/fs/fat/file.c index e4c7d10e80129..bf91f977debea 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@ -127,7 +127,6 @@ static int fat_ioctl_fitrim(struct inode *inode, unsigned long arg) struct super_block *sb = inode->i_sb; struct fstrim_range __user *user_range; struct fstrim_range range; - struct request_queue *q = bdev_get_queue(sb->s_bdev); int err; if (!capable(CAP_SYS_ADMIN)) @@ -141,7 +140,7 @@ static int fat_ioctl_fitrim(struct inode *inode, unsigned long arg) return -EFAULT; range.minlen = max_t(unsigned int, range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(sb->s_bdev)); err = fat_trim_fs(inode, &range); if (err < 0) diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 7f20ac9133bc6..6d26bb5254844 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c @@ -1386,7 +1386,7 @@ int gfs2_fitrim(struct file *filp, void __user *argp) { struct inode *inode = file_inode(filp); struct gfs2_sbd *sdp = GFS2_SB(inode); - struct request_queue *q = bdev_get_queue(sdp->sd_vfs->s_bdev); + struct block_device *bdev = sdp->sd_vfs->s_bdev; struct buffer_head *bh; struct gfs2_rgrpd *rgd; struct gfs2_rgrpd *rgd_end; @@ -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 (!bdev_max_discard_sectors(sdp->sd_vfs->s_bdev)) + if (!bdev_max_discard_sectors(bdev)) return -EOPNOTSUPP; if (copy_from_user(&r, argp, sizeof(r))) @@ -1418,8 +1418,7 @@ int gfs2_fitrim(struct file *filp, void __user *argp) start = r.start >> bs_shift; end = start + (r.len >> bs_shift); minlen = max_t(u64, r.minlen, sdp->sd_sb.sb_bsize); - minlen = max_t(u64, minlen, - q->limits.discard_granularity) >> bs_shift; + minlen = max_t(u64, minlen, bdev_discard_granularity(bdev)) >> bs_shift; if (end <= start || minlen > sdp->sd_max_rg_data) return -EINVAL; diff --git a/fs/jfs/ioctl.c b/fs/jfs/ioctl.c index 357ae6e5c36ec..1e7b177ece605 100644 --- a/fs/jfs/ioctl.c +++ b/fs/jfs/ioctl.c @@ -110,7 +110,6 @@ long jfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) case FITRIM: { struct super_block *sb = inode->i_sb; - struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; s64 ret = 0; @@ -127,7 +126,7 @@ long jfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) return -EFAULT; range.minlen = max_t(unsigned int, range.minlen, - q->limits.discard_granularity); + bdev_discard_granularity(sb->s_bdev)); ret = jfs_ioc_trim(inode, &range); if (ret < 0) diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c index 52b73f558fcb1..87e1004b606d2 100644 --- a/fs/nilfs2/ioctl.c +++ b/fs/nilfs2/ioctl.c @@ -1052,7 +1052,6 @@ static int nilfs_ioctl_resize(struct inode *inode, struct file *filp, static int nilfs_ioctl_trim_fs(struct inode *inode, void __user *argp) { struct the_nilfs *nilfs = inode->i_sb->s_fs_info; - struct request_queue *q = bdev_get_queue(nilfs->ns_bdev); struct fstrim_range range; int ret; @@ -1065,7 +1064,8 @@ static int nilfs_ioctl_trim_fs(struct inode *inode, void __user *argp) if (copy_from_user(&range, argp, sizeof(range))) return -EFAULT; - range.minlen = max_t(u64, range.minlen, q->limits.discard_granularity); + range.minlen = max_t(u64, range.minlen, + bdev_discard_granularity(nilfs->ns_bdev)); down_read(&nilfs->ns_segctor_sem); ret = nilfs_sufile_trim_fs(nilfs->ns_sufile, &range); diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c index e763236169331..15806eeae217a 100644 --- a/fs/ntfs3/file.c +++ b/fs/ntfs3/file.c @@ -22,7 +22,6 @@ static int ntfs_ioctl_fitrim(struct ntfs_sb_info *sbi, unsigned long arg) { struct fstrim_range __user *user_range; struct fstrim_range range; - struct request_queue *q = bdev_get_queue(sbi->sb->s_bdev); int err; if (!capable(CAP_SYS_ADMIN)) @@ -35,7 +34,8 @@ static int ntfs_ioctl_fitrim(struct ntfs_sb_info *sbi, unsigned long arg) if (copy_from_user(&range, user_range, sizeof(range))) return -EFAULT; - range.minlen = max_t(u32, range.minlen, q->limits.discard_granularity); + range.minlen = max_t(u32, range.minlen, + bdev_discard_granularity(sbi->sb->s_bdev)); err = ntfs_trim_fs(sbi, &range); if (err < 0) diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c index c734085bcce4a..5f2e414cfa79b 100644 --- a/fs/ntfs3/super.c +++ b/fs/ntfs3/super.c @@ -882,7 +882,6 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc) int err; struct ntfs_sb_info *sbi = sb->s_fs_info; struct block_device *bdev = sb->s_bdev; - struct request_queue *rq; struct inode *inode; struct ntfs_inode *ni; size_t i, tt; @@ -912,9 +911,8 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc) goto out; } - rq = bdev_get_queue(bdev); - if (bdev_max_discard_sectors(bdev) && rq->limits.discard_granularity) { - sbi->discard_granularity = rq->limits.discard_granularity; + if (bdev_max_discard_sectors(bdev) && bdev_discard_granularity(bdev)) { + sbi->discard_granularity = bdev_discard_granularity(bdev); sbi->discard_granularity_mask_inv = ~(u64)(sbi->discard_granularity - 1); } diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c index 9b78ef103ada6..afd54ec661030 100644 --- a/fs/ocfs2/ioctl.c +++ b/fs/ocfs2/ioctl.c @@ -903,7 +903,6 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) case FITRIM: { struct super_block *sb = inode->i_sb; - struct request_queue *q = bdev_get_queue(sb->s_bdev); struct fstrim_range range; int ret = 0; @@ -916,7 +915,7 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) if (copy_from_user(&range, argp, sizeof(range))) return -EFAULT; - range.minlen = max_t(u64, q->limits.discard_granularity, + range.minlen = max_t(u64, bdev_discard_granularity(sb->s_bdev), range.minlen); ret = ocfs2_trim_fs(sb, &range); if (ret < 0) diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c index a4e6609d616b7..e2ada115c23f9 100644 --- a/fs/xfs/xfs_discard.c +++ b/fs/xfs/xfs_discard.c @@ -152,8 +152,8 @@ xfs_ioc_trim( struct xfs_mount *mp, struct fstrim_range __user *urange) { - struct request_queue *q = bdev_get_queue(mp->m_ddev_targp->bt_bdev); - unsigned int granularity = q->limits.discard_granularity; + unsigned int granularity = + bdev_discard_granularity(mp->m_ddev_targp->bt_bdev); struct fstrim_range range; xfs_daddr_t start, end, minlen; xfs_agnumber_t start_agno, end_agno, agno; diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 767ab22e1052a..f1cf557ea20ef 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1257,6 +1257,11 @@ static inline unsigned int bdev_max_discard_sectors(struct block_device *bdev) return bdev_get_queue(bdev)->limits.max_discard_sectors; } +static inline unsigned int bdev_discard_granularity(struct block_device *bdev) +{ + return bdev_get_queue(bdev)->limits.discard_granularity; +} + static inline unsigned int bdev_write_zeroes_sectors(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); -- 2.30.2 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Subject: [PATCH 25/27] block: add a bdev_discard_granularity helper Date: Fri, 15 Apr 2022 06:52:56 +0200 Message-ID: <20220415045258.199825-26-hch@lst.de> References: <20220415045258.199825-1-hch@lst.de> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: 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=kNp/brlkIe235G5uL2MrVnIRtgqb7cDd/DmZFPBWIBU=; b=Co/TUtYjxXhBannRnRPPMzniSz KzMOTkfBm1/hatrRCsXat8xvCYh5GhThX4mzrGtKHb6LAYG+sPH3KwWtVY3xSHJr/UXxKAr/c8lOd 9nzEDK8J1+urJnRHTt8OvyyB9riUUShlfJxQQc5tl17Aeq2Ob83x7bFSyDRg1kFsMfBGYCbDiai4T MmRIecJu05pH8quQ4Da7LC0ahNKk3viQlUZsK3kTx8GJB07Ab+tCpvf4TxuQJg0Ur8EB4xfyeBW86 w/cFJ63yhIzxe5o3O4E4JugMkp6nxsaFU/g8r/FsjvJTzkEcJyR5P45yJBFH2vwfQ5gqACkXysc+F Z7/+X18g==; In-Reply-To: <20220415045258.199825-1-hch@lst.de> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" Content-Type: text/plain; charset="iso-8859-1" To: Jens Axboe Cc: jfs-discussion@lists.sourceforge.net, 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, Ryusuke Konishi , 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?= , oc QWJzdHJhY3QgYXdheSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZmlsZSBzeXN0ZW1zIGJ5 IHByb3ZpZGluZyBhCmJsb2NrX2RldmljZSBiYXNlZCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRp c2NhcmQgZ3JhbnVsYXJpdHkuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNo QGxzdC5kZT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2Vu QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlzdG9waC5i b2VobXdhbGRlckBsaW5iaXQuY29tPiBbZHJiZF0KQWNrZWQtYnk6IFJ5dXN1a2UgS29uaXNoaSA8 a29uaXNoaS5yeXVzdWtlQGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJi YUBzdXNlLmNvbT4gW2J0cmZzXQotLS0KIGJsb2NrL2Jsay1saWIuYyAgICAgICAgICAgICAgICAg ICAgIHwgIDUgKystLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgICAgICAgIHwgIDkg KysrKystLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jICB8ICAzICstLQog ZHJpdmVycy9ibG9jay9sb29wLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy90YXJn ZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgfCAgMyArLS0KIGZzL2J0cmZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgIHwgMTIgKysrKy0tLS0tLS0tCiBmcy9leGZhdC9maWxlLmMgICAgICAgICAg ICAgICAgICAgICB8ICAzICstLQogZnMvZXh0NC9tYmFsbG9jLmMgICAgICAgICAgICAgICAgICAg fCAgNiArKystLS0KIGZzL2YyZnMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0t CiBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvZ2ZzMi9y Z3JwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiBmcy9qZnMvaW9jdGwuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMvbmlsZnMyL2lvY3RsLmMgICAgICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBmcy9udGZzMy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8 ICA0ICsrLS0KIGZzL250ZnMzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLS0t CiBmcy9vY2ZzMi9pb2N0bC5jICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZnMveGZzL3hm c19kaXNjYXJkLmMgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBpbmNsdWRlL2xpbnV4L2Jsa2Rl di5oICAgICAgICAgICAgICB8ICA1ICsrKysrCiAxOCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9i bG9jay9ibGstbGliLmMKaW5kZXggOGI0YjY2ZDNhOWJmYy4uNDNhYTRkN2ZlODU5ZiAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTIsOCArMTIs NyBAQAogCiBzdGF0aWMgc2VjdG9yX3QgYmlvX2Rpc2NhcmRfbGltaXQoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yKQogewotCXVuc2lnbmVkIGludCBkaXNjYXJkX2dy YW51bGFyaXR5ID0KLQkJYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJk X2dyYW51bGFyaXR5KGJkZXYpOwogCXNlY3Rvcl90IGdyYW51bGFyaXR5X2FsaWduZWRfc2VjdG9y OwogCiAJaWYgKGJkZXZfaXNfcGFydGl0aW9uKGJkZXYpKQpAQCAtNTksNyArNTgsNyBAQCBpbnQg X19ibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3Jf dCBzZWN0b3IsCiAJfQogCiAJLyogSW4gY2FzZSB0aGUgZGlzY2FyZCBncmFudWxhcml0eSBpc24n dCBzZXQgYnkgYnVnZ3kgZGV2aWNlIGRyaXZlciAqLwotCWlmIChXQVJOX09OX09OQ0UoIXEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KSkgeworCWlmIChXQVJOX09OX09OQ0UoIWJkZXZfZGlz Y2FyZF9ncmFudWxhcml0eShiZGV2KSkpIHsKIAkJY2hhciBkZXZfbmFtZVtCREVWTkFNRV9TSVpF XTsKIAogCQliZGV2bmFtZShiZGV2LCBkZXZfbmFtZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Js b2NrL2RyYmQvZHJiZF9ubC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYwppbmRleCAw Njc4Y2ViNTA1Nzk5Li5hNjI4MGRjYjM3Njc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9ubC5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTE0MjUs NyArMTQyNSw2IEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX2Rpc2tfY29uZihzdHJ1Y3QgZHJiZF9k ZXZpY2UgKmRldmljZSwgc3RydWN0IGRpc2tfY29uZiAqZGlzCiAJCQkgICAgICAgc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKm5iYykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gbmJj LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2LT5iZF9kaXNr LT5xdWV1ZTsKIAogCWlmIChkaXNrX2NvbmYtPmFsX2V4dGVudHMgPCBEUkJEX0FMX0VYVEVOVFNf TUlOKQogCQlkaXNrX2NvbmYtPmFsX2V4dGVudHMgPSBEUkJEX0FMX0VYVEVOVFNfTUlOOwpAQCAt MTQ0MiwxMiArMTQ0MSwxNCBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0 IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCWlmIChkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKIAkJaW50IG9yaWdfdmFsdWUgPSBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCXNlY3Rvcl90IGRpc2NhcmRfc2l6ZSA9IGJk ZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSA8PCA5OworCQl1bnNpZ25lZCBpbnQgZGlzY2Fy ZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KTsKIAkJaW50IHJl bWFpbmRlcjsKIAotCQlpZiAocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNrX2Nv bmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCi0JCQlkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJaWYgKGRpc2NhcmRf Z3JhbnVsYXJpdHkgPiBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkpCisJCQlkaXNr X2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPSBkaXNjYXJkX2dyYW51bGFyaXR5OwogCi0J CXJlbWFpbmRlciA9IGRpc2tfY29uZi0+cnNfZGlzY2FyZF9ncmFudWxhcml0eSAlIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2Nh cmRfZ3JhbnVsYXJpdHkgJQorCQkJCWRpc2NhcmRfZ3JhbnVsYXJpdHk7CiAJCWRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSArPSByZW1haW5kZXI7CiAKIAkJaWYgKGRpc2tfY29uZi0+ cnNfZGlzY2FyZF9ncmFudWxhcml0eSA+IGRpc2NhcmRfc2l6ZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9y ZWNlaXZlci5jCmluZGV4IDhhNGE0N2RhNTZmZTkuLjI3NWM1M2M3YjYyOWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKKysrIGIvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtMTUxMSw3ICsxNTExLDYgQEAgdm9pZCBkcmJkX2J1bXBf d3JpdGVfb3JkZXJpbmcoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgZHJi ZF9iYWNraW4KIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywg aW50IGZsYWdzKQogewogCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBkZXZpY2UtPmxkZXYt PmJhY2tpbmdfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVl KGJkZXYpOwogCXNlY3Rvcl90IHRtcCwgbnI7CiAJdW5zaWduZWQgaW50IG1heF9kaXNjYXJkX3Nl Y3RvcnMsIGdyYW51bGFyaXR5OwogCWludCBhbGlnbm1lbnQ7CkBAIC0xNTIxLDcgKzE1MjAsNyBA QCBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAq ZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdQogCQlnb3RvIHplcm9fb3V0OwogCiAJLyogWmVyby1z ZWN0b3IgKHVua25vd24pIGFuZCBvbmUtc2VjdG9yIGdyYW51bGFyaXRpZXMgYXJlIHRoZSBzYW1l LiAgKi8KLQlncmFudWxhcml0eSA9IG1heChxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSA+ PiA5LCAxVSk7CisJZ3JhbnVsYXJpdHkgPSBtYXgoYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJk ZXYpID4+IDksIDFVKTsKIAlhbGlnbm1lbnQgPSAoYmRldl9kaXNjYXJkX2FsaWdubWVudChiZGV2 KSA+PiA5KSAlIGdyYW51bGFyaXR5OwogCiAJbWF4X2Rpc2NhcmRfc2VjdG9ycyA9IG1pbihiZGV2 X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldiksICgxVSA8PCAyMikpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAwZTA2MWM5ODk2 ZWZmLi45NzZjZjk4N2IzOTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNzU5LDcgKzc1OSw3IEBAIHN0YXRpYyB2b2lkIGxv b3BfY29uZmlnX2Rpc2NhcmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbykKIAkJc3RydWN0IHJlcXVl c3RfcXVldWUgKmJhY2tpbmdxID0gYmRldl9nZXRfcXVldWUoSV9CREVWKGlub2RlKSk7CiAKIAkJ bWF4X2Rpc2NhcmRfc2VjdG9ycyA9IGJhY2tpbmdxLT5saW1pdHMubWF4X3dyaXRlX3plcm9lc19z ZWN0b3JzOwotCQlncmFudWxhcml0eSA9IGJhY2tpbmdxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSA/OgorCQlncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShJX0JERVYo aW5vZGUpKSA/OgogCQkJcXVldWVfcGh5c2ljYWxfYmxvY2tfc2l6ZShiYWNraW5ncSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgYi9kcml2 ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwppbmRleCA2Y2I5Zjg3ODQzMjc4Li4yNWYz M2ViMjUzMzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2Uu YworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwpAQCAtODM1LDcgKzgz NSw2IEBAIHN0cnVjdCBzZV9kZXZpY2UgKnRhcmdldF9hbGxvY19kZXZpY2Uoc3RydWN0IHNlX2hi YSAqaGJhLCBjb25zdCBjaGFyICpuYW1lKQogYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zy b21fcXVldWUoc3RydWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkJCQkgICAgICAgc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldikKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZf Z2V0X3F1ZXVlKGJkZXYpOwogCWludCBibG9ja19zaXplID0gYmRldl9sb2dpY2FsX2Jsb2NrX3Np emUoYmRldik7CiAKIAlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkKQEAgLTg0 Nyw3ICs4NDYsNyBAQCBib29sIHRhcmdldF9jb25maWd1cmVfdW5tYXBfZnJvbV9xdWV1ZShzdHJ1 Y3Qgc2VfZGV2X2F0dHJpYiAqYXR0cmliLAogCSAqIEN1cnJlbnRseSBoYXJkY29kZWQgdG8gMSBp biBMaW51eC9TQ1NJIGNvZGUuLgogCSAqLwogCWF0dHJpYi0+bWF4X3VubWFwX2Jsb2NrX2Rlc2Nf Y291bnQgPSAxOwotCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSAvIGJsb2NrX3NpemU7CisJYXR0cmliLT51bm1hcF9ncmFudWxhcml0eSA9 IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2KSAvIGJsb2NrX3NpemU7CiAJYXR0cmliLT51 bm1hcF9ncmFudWxhcml0eV9hbGlnbm1lbnQgPQogCQliZGV2X2Rpc2NhcmRfYWxpZ25tZW50KGJk ZXYpIC8gYmxvY2tfc2l6ZTsKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lv Y3RsLmMgYi9mcy9idHJmcy9pb2N0bC5jCmluZGV4IDA5NmJiMGRhMDNmMWMuLjcwNzY1ZDU5NjE2 YTUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpA QCAtNDY4LDcgKzQ2OCw2IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxfZml0cmlt KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQkJCQl2b2lkIF9fdXNlciAqYXJnKQog ewogCXN0cnVjdCBidHJmc19kZXZpY2UgKmRldmljZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCXU2NCBtaW5sZW4gPSBVTExPTkdfTUFY OwogCXU2NCBudW1fZGV2aWNlcyA9IDA7CkBAIC00OTgsMTQgKzQ5NywxMSBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5m bywKIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGV2aWNlLCAm ZnNfaW5mby0+ZnNfZGV2aWNlcy0+ZGV2aWNlcywKIAkJCQlkZXZfbGlzdCkgewotCQlpZiAoIWRl dmljZS0+YmRldikKKwkJaWYgKCFkZXZpY2UtPmJkZXYgfHwgIWJkZXZfbWF4X2Rpc2NhcmRfc2Vj dG9ycyhkZXZpY2UtPmJkZXYpKQogCQkJY29udGludWU7Ci0JCXEgPSBiZGV2X2dldF9xdWV1ZShk ZXZpY2UtPmJkZXYpOwotCQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGRldmljZS0+YmRl dikpIHsKLQkJCW51bV9kZXZpY2VzKys7Ci0JCQltaW5sZW4gPSBtaW5fdCh1NjQsIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5LAotCQkJCSAgICAgbWlubGVuKTsKLQkJfQorCQludW1fZGV2 aWNlcysrOworCQltaW5sZW4gPSBtaW5fdCh1NjQsIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShk ZXZpY2UtPmJkZXYpLAorCQkJCSAgICBtaW5sZW4pOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsK IApkaWZmIC0tZ2l0IGEvZnMvZXhmYXQvZmlsZS5jIGIvZnMvZXhmYXQvZmlsZS5jCmluZGV4IDc2 NWU0ZjYzZGQxOGQuLjIwZDRlNDdmNTdhYjIgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2ZpbGUuYwor KysgYi9mcy9leGZhdC9maWxlLmMKQEAgLTM1MSw3ICszNTEsNiBAQCBpbnQgZXhmYXRfc2V0YXR0 cihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwKIAogc3RhdGljIGludCBleGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwg dW5zaWduZWQgbG9uZyBhcmcpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dl dF9xdWV1ZShpbm9kZS0+aV9zYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdl OwogCWludCByZXQgPSAwOwogCkBAIC0zNjUsNyArMzY0LDcgQEAgc3RhdGljIGludCBleGZhdF9p b2N0bF9maXRyaW0oc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJl dHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5n ZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCQkJCWJkZXZf ZGlzY2FyZF9ncmFudWxhcml0eShpbm9kZS0+aV9zYi0+c19iZGV2KSk7CiAKIAlyZXQgPSBleGZh dF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCBjMzY2OGM5NzdjZDk5Li42 ZDE4MjA1MzZkODhkIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0 L21iYWxsb2MuYwpAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgZXh0NF90cmltX2FsbF9mcmVlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBncm91cCwKICAqLwogaW50IGV4dDRfdHJp bV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmltX3JhbmdlICpyYW5nZSkK IHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYp OworCXVuc2lnbmVkIGludCBkaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51 bGFyaXR5KHNiLT5zX2JkZXYpOwogCXN0cnVjdCBleHQ0X2dyb3VwX2luZm8gKmdycDsKIAlleHQ0 X2dyb3VwX3QgZ3JvdXAsIGZpcnN0X2dyb3VwLCBsYXN0X2dyb3VwOwogCWV4dDRfZ3JwYmxrX3Qg Y250ID0gMCwgZmlyc3RfY2x1c3RlciwgbGFzdF9jbHVzdGVyOwpAQCAtNjQ3NSw5ICs2NDc1LDkg QEAgaW50IGV4dDRfdHJpbV9mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnN0cmlt X3JhbmdlICpyYW5nZSkKIAkgICAgcmFuZ2UtPmxlbiA8IHNiLT5zX2Jsb2Nrc2l6ZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJLyogTm8gcG9pbnQgdG8gdHJ5IHRvIHRyaW0gbGVzcyB0aGFuIGRpc2Nh cmQgZ3JhbnVsYXJpdHkgKi8KLQlpZiAocmFuZ2UtPm1pbmxlbiA8IHEtPmxpbWl0cy5kaXNjYXJk X2dyYW51bGFyaXR5KSB7CisJaWYgKHJhbmdlLT5taW5sZW4gPCBkaXNjYXJkX2dyYW51bGFyaXR5 KSB7CiAJCW1pbmxlbiA9IEVYVDRfTlVNX0IyQyhFWFQ0X1NCKHNiKSwKLQkJCXEtPmxpbWl0cy5k aXNjYXJkX2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKKwkJCQlkaXNjYXJk X2dyYW51bGFyaXR5ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKIAkJaWYgKG1pbmxlbiA+IEVY VDRfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKSkKIAkJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZmlsZS5jIGIvZnMvZjJmcy9maWxlLmMKaW5kZXggNWI4OWFmMGYyN2YwNS4uODA1 M2Q5OWYzOTIwYiAxMDA2NDQKLS0tIGEvZnMvZjJmcy9maWxlLmMKKysrIGIvZnMvZjJmcy9maWxl LmMKQEAgLTIyODUsNyArMjI4NSw2IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVj dCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf c2I7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAgLTIzMDQsNyAr MjMwMyw3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB1 bnNpZ25lZCBsb25nIGFyZykKIAkJcmV0dXJuIHJldDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heCgo dW5zaWduZWQgaW50KXJhbmdlLm1pbmxlbiwKLQkJCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxh cml0eSk7CisJCQkgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCXJl dCA9IGYyZnNfdHJpbV9mcyhGMkZTX1NCKHNiKSwgJnJhbmdlKTsKIAltbnRfZHJvcF93cml0ZV9m aWxlKGZpbHApOwogCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZmF0L2ZpbGUuYyBiL2Zz L2ZhdC9maWxlLmMKaW5kZXggZTRjN2QxMGU4MDEyOS4uYmY5MWY5NzdkZWJlYSAxMDA2NDQKLS0t IGEvZnMvZmF0L2ZpbGUuYworKysgYi9mcy9mYXQvZmlsZS5jCkBAIC0xMjcsNyArMTI3LDYgQEAg c3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGxvbmcgYXJnKQogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKIAlzdHJ1 Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAqdXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNf YmRldik7CiAJaW50IGVycjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTE0 MSw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IGZhdF9pb2N0bF9maXRyaW0oc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJcmFuZ2UubWlu bGVuID0gbWF4X3QodW5zaWduZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQkgICAgIHEtPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5 KHNiLT5zX2JkZXYpKTsKIAogCWVyciA9IGZhdF90cmltX2ZzKGlub2RlLCAmcmFuZ2UpOwogCWlm IChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9yZ3JwLmMgYi9mcy9nZnMyL3JncnAuYwpp bmRleCA3ZjIwYWM5MTMzYmM2Li42ZDI2YmI1MjU0ODQ0IDEwMDY0NAotLS0gYS9mcy9nZnMyL3Jn cnAuYworKysgYi9mcy9nZnMyL3JncnAuYwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgaW50IGdmczJf Zml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIHsKIAlzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKIAlzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9 IEdGUzJfU0IoaW5vZGUpOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVl dWUoc2RwLT5zZF92ZnMtPnNfYmRldik7CisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNk cC0+c2RfdmZzLT5zX2JkZXY7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKIAlzdHJ1Y3QgZ2Zz Ml9yZ3JwZCAqcmdkOwogCXN0cnVjdCBnZnMyX3JncnBkICpyZ2RfZW5kOwpAQCAtMTQwNSw3ICsx NDA1LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkIF9fdXNlciAq YXJncCkKIAlpZiAoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsICZzZHAtPnNkX2ZsYWdzKSkK IAkJcmV0dXJuIC1FUk9GUzsKIAotCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKHNkcC0+ c2RfdmZzLT5zX2JkZXYpKQorCWlmICghYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIoJnIsIGFyZ3AsIHNp emVvZihyKSkpCkBAIC0xNDE4LDggKzE0MTgsNyBAQCBpbnQgZ2ZzMl9maXRyaW0oc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgX191c2VyICphcmdwKQogCXN0YXJ0ID0gci5zdGFydCA+PiBic19zaGlm dDsKIAllbmQgPSBzdGFydCArIChyLmxlbiA+PiBic19zaGlmdCk7CiAJbWlubGVuID0gbWF4X3Qo dTY0LCByLm1pbmxlbiwgc2RwLT5zZF9zYi5zYl9ic2l6ZSk7Ci0JbWlubGVuID0gbWF4X3QodTY0 LCBtaW5sZW4sCi0JCSAgICAgICBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgPj4gYnNf c2hpZnQ7CisJbWlubGVuID0gbWF4X3QodTY0LCBtaW5sZW4sIGJkZXZfZGlzY2FyZF9ncmFudWxh cml0eShiZGV2KSkgPj4gYnNfc2hpZnQ7CiAKIAlpZiAoZW5kIDw9IHN0YXJ0IHx8IG1pbmxlbiA+ IHNkcC0+c2RfbWF4X3JnX2RhdGEpCiAJCXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZnMv amZzL2lvY3RsLmMgYi9mcy9qZnMvaW9jdGwuYwppbmRleCAzNTdhZTZlNWMzNmVjLi4xZTdiMTc3 ZWNlNjA1IDEwMDY0NAotLS0gYS9mcy9qZnMvaW9jdGwuYworKysgYi9mcy9qZnMvaW9jdGwuYwpA QCAtMTEwLDcgKzExMCw2IEBAIGxvbmcgamZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJczY0IHJldCA9IDA7CiAKQEAgLTEyNyw3ICsxMjYsNyBAQCBsb25nIGpmc19p b2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1bnNpZ25l ZCBpbnQsIHJhbmdlLm1pbmxlbiwKLQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsK KwkJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSk7CiAKIAkJcmV0 ID0gamZzX2lvY190cmltKGlub2RlLCAmcmFuZ2UpOwogCQlpZiAocmV0IDwgMCkKZGlmZiAtLWdp dCBhL2ZzL25pbGZzMi9pb2N0bC5jIGIvZnMvbmlsZnMyL2lvY3RsLmMKaW5kZXggNTJiNzNmNTU4 ZmNiMS4uODdlMTAwNGI2MDZkMiAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2lvY3RsLmMKKysrIGIv ZnMvbmlsZnMyL2lvY3RsLmMKQEAgLTEwNTIsNyArMTA1Miw2IEBAIHN0YXRpYyBpbnQgbmlsZnNf aW9jdGxfcmVzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwLAogc3Rh dGljIGludCBuaWxmc19pb2N0bF90cmltX2ZzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgX191 c2VyICphcmdwKQogewogCXN0cnVjdCB0aGVfbmlsZnMgKm5pbGZzID0gaW5vZGUtPmlfc2ItPnNf ZnNfaW5mbzsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKG5pbGZz LT5uc19iZGV2KTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwogCWludCByZXQ7CiAKQEAg LTEwNjUsNyArMTA2NCw4IEBAIHN0YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB2b2lkIF9fdXNlciAqYXJncCkKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJh bmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcmFuZ2UubWlubGVuLAorCQkJICAg ICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobmlsZnMtPm5zX2JkZXYpKTsKIAogCWRvd25fcmVh ZCgmbmlsZnMtPm5zX3NlZ2N0b3Jfc2VtKTsKIAlyZXQgPSBuaWxmc19zdWZpbGVfdHJpbV9mcyhu aWxmcy0+bnNfc3VmaWxlLCAmcmFuZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvZmlsZS5jIGIv ZnMvbnRmczMvZmlsZS5jCmluZGV4IGU3NjMyMzYxNjkzMzEuLjE1ODA2ZWVhZTIxN2EgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL2ZpbGUuYworKysgYi9mcy9udGZzMy9maWxlLmMKQEAgLTIyLDcgKzIy LDYgQEAgc3RhdGljIGludCBudGZzX2lvY3RsX2ZpdHJpbShzdHJ1Y3QgbnRmc19zYl9pbmZvICpz YmksIHVuc2lnbmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgX191c2VyICp1 c2VyX3JhbmdlOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UgcmFuZ2U7Ci0Jc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYmktPnNiLT5zX2JkZXYpOwogCWludCBlcnI7CiAK IAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0zNSw3ICszNCw4IEBAIHN0YXRpYyBp bnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBs b25nIGFyZykKIAlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCB1c2VyX3JhbmdlLCBzaXplb2Yo cmFuZ2UpKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1MzIs IHJhbmdlLm1pbmxlbiwgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpOworCXJhbmdlLm1p bmxlbiA9IG1heF90KHUzMiwgcmFuZ2UubWlubGVuLAorCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3Jh bnVsYXJpdHkoc2JpLT5zYi0+c19iZGV2KSk7CiAKIAllcnIgPSBudGZzX3RyaW1fZnMoc2JpLCAm cmFuZ2UpOwogCWlmIChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZnMvbnRmczMvc3VwZXIuYyBiL2Zz L250ZnMzL3N1cGVyLmMKaW5kZXggYzczNDA4NWJjY2U0YS4uNWYyZTQxNGNmYTc5YiAxMDA2NDQK LS0tIGEvZnMvbnRmczMvc3VwZXIuYworKysgYi9mcy9udGZzMy9zdXBlci5jCkBAIC04ODIsNyAr ODgyLDYgQEAgc3RhdGljIGludCBudGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCWludCBlcnI7CiAJc3RydWN0IG50ZnNfc2JfaW5m byAqc2JpID0gc2ItPnNfZnNfaW5mbzsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gc2It PnNfYmRldjsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcnE7CiAJc3RydWN0IGlub2RlICppbm9k ZTsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmk7CiAJc2l6ZV90IGksIHR0OwpAQCAtOTEyLDkgKzkx MSw4IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAkJZ290byBvdXQ7CiAJfQogCi0JcnEgPSBiZGV2X2dl dF9xdWV1ZShiZGV2KTsKLQlpZiAoYmRldl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpICYmIHJx LT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkgewotCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJp dHkgPSBycS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJaWYgKGJkZXZfbWF4X2Rpc2Nh cmRfc2VjdG9ycyhiZGV2KSAmJiBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpIHsKKwkJ c2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5ID0gYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYp OwogCQlzYmktPmRpc2NhcmRfZ3JhbnVsYXJpdHlfbWFza19pbnYgPQogCQkJfih1NjQpKHNiaS0+ ZGlzY2FyZF9ncmFudWxhcml0eSAtIDEpOwogCX0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2lvY3Rs LmMgYi9mcy9vY2ZzMi9pb2N0bC5jCmluZGV4IDliNzhlZjEwM2FkYTYuLmFmZDU0ZWM2NjEwMzAg MTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2lvY3RsLmMKKysrIGIvZnMvb2NmczIvaW9jdGwuYwpAQCAt OTAzLDcgKzkwMyw2IEBAIGxvbmcgb2NmczJfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCWNhc2UgRklUUklNOgogCXsKIAkJc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOwotCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5zX2JkZXYpOwogCQlzdHJ1Y3QgZnN0cmltX3Jhbmdl IHJhbmdlOwogCQlpbnQgcmV0ID0gMDsKIApAQCAtOTE2LDcgKzkxNSw3IEBAIGxvbmcgb2NmczJf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkK IAkJCXJldHVybiAtRUZBVUxUOwogCi0JCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgcS0+bGlt aXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHksCisJCXJhbmdlLm1pbmxlbiA9IG1heF90KHU2NCwgYmRl dl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpLAogCQkJCSAgICAgcmFuZ2UubWlubGVu KTsKIAkJcmV0ID0gb2NmczJfdHJpbV9mcyhzYiwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRp ZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpc2NhcmQuYyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCmlu ZGV4IGE0ZTY2MDlkNjE2YjcuLmUyYWRhMTE1YzIzZjkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNf ZGlzY2FyZC5jCisrKyBiL2ZzL3hmcy94ZnNfZGlzY2FyZC5jCkBAIC0xNTIsOCArMTUyLDggQEAg eGZzX2lvY190cmltKAogCXN0cnVjdCB4ZnNfbW91bnQJCSptcCwKIAlzdHJ1Y3QgZnN0cmltX3Jh bmdlIF9fdXNlcgkqdXJhbmdlKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpxID0gYmRldl9n ZXRfcXVldWUobXAtPm1fZGRldl90YXJncC0+YnRfYmRldik7Ci0JdW5zaWduZWQgaW50CQlncmFu dWxhcml0eSA9IHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCXVuc2lnbmVkIGludAkJ Z3JhbnVsYXJpdHkgPQorCQliZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkobXAtPm1fZGRldl90YXJn cC0+YnRfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZQlyYW5nZTsKIAl4ZnNfZGFkZHJfdAkJ c3RhcnQsIGVuZCwgbWlubGVuOwogCXhmc19hZ251bWJlcl90CQlzdGFydF9hZ25vLCBlbmRfYWdu bywgYWdubzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xp bnV4L2Jsa2Rldi5oCmluZGV4IDc2N2FiMjJlMTA1MmEuLmYxY2Y1NTdlYTIwZWYgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApA QCAtMTI1Nyw2ICsxMjU3LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfbWF4 X2Rpc2NhcmRfc2VjdG9ycyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCXJldHVybiBiZGV2 X2dldF9xdWV1ZShiZGV2KS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnM7CiB9CiAKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2KQoreworCXJldHVybiBiZGV2X2dldF9xdWV1ZShiZGV2KS0+bGltaXRz LmRpc2NhcmRfZ3JhbnVsYXJpdHk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJk ZXZfd3JpdGVfemVyb2VzX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIHsKIAlz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotLSAKMi4zMC4y CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFs aXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlv bi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8v dmlydHVhbGl6YXRpb24=