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 smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (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 7EA6BC4167E for ; Sat, 9 Apr 2022 04:52:39 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 155218472B; Sat, 9 Apr 2022 04:52:39 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dNP8dmU9eMey; Sat, 9 Apr 2022 04:52:37 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 32FC98462E; Sat, 9 Apr 2022 04:52:37 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0548EC0033; Sat, 9 Apr 2022 04:52:37 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 8AE04C002C for ; Sat, 9 Apr 2022 04:52:35 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 68DB860F5C for ; Sat, 9 Apr 2022 04:52:35 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp3.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=infradead.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XGvtbTYJ3ucA for ; Sat, 9 Apr 2022 04:52:34 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by smtp3.osuosl.org (Postfix) with ESMTPS id 183C460E97 for ; Sat, 9 Apr 2022 04:52:34 +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=pVDwXB6PltgVZkC3rRdiaCUdLly1SPIvqpMIXjtbaqw=; b=jqUA+AmRXIWodbokKUQJY0RX0L 3iRxTxojZgoAr0BJQ1ponT4HGyJF9P/dLKgG3mgDVBzT9ZC3GJ4VXksCd7CI4pp2deGOMuRnO4dJZ tYjvlBna5K+2SqqA4cHi6bHT3o1vwsbWhi8IrSk8cEbLbPYhU9Q1bHhBT4/6s3jRpSUTvMY8j6m9y ZXrNmSY5/qE17M860l2JtYPEp4Qs2IucObE64GZleGfFuLyLOimXHvRbrt+CUdmhLio0qwks9xvBt Vg5wC+6v6SCxOh06XmFFo2NPgfa5H4+lhNehhWJUBtAxZ5KuAcLte2n3q/5mzTUIyBnf71eMj2a2Y UapUGRFw==; Received: from 213-147-167-116.nat.highway.webapn.at ([213.147.167.116] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nd358-0021hI-T6; Sat, 09 Apr 2022 04:52:19 +0000 From: Christoph Hellwig To: Jens Axboe Subject: [PATCH 25/27] block: add a bdev_discard_granularity helper Date: Sat, 9 Apr 2022 06:50:41 +0200 Message-Id: <20220409045043.23593-26-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-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 b2VobXdhbGRlckBsaW5iaXQuY29tPiBbYnRyZnNdCkFja2VkLWJ5OiBSeXVzdWtlIEtvbmlzaGkg PGtvbmlzaGkucnl1c3VrZUBnbWFpbC5jb20+CkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+IFtidHJmc10KLS0tCiBibG9jay9ibGstbGliLmMgICAgICAgICAgICAgICAg ICAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8ICA5 ICsrKysrLS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyAgfCAgMyArLS0K IGRyaXZlcnMvYmxvY2svbG9vcC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGFy Z2V0L3RhcmdldF9jb3JlX2RldmljZS5jIHwgIDMgKy0tCiBmcy9idHJmcy9pb2N0bC5jICAgICAg ICAgICAgICAgICAgICB8IDEyICsrKystLS0tLS0tLQogZnMvZXhmYXQvZmlsZS5jICAgICAgICAg ICAgICAgICAgICAgfCAgMyArLS0KIGZzL2V4dDQvbWJhbGxvYy5jICAgICAgICAgICAgICAgICAg IHwgIDYgKysrLS0tCiBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL2dmczIv cmdycC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQogZnMvamZzL2lvY3RsLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQogZnMvbnRmczMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAg fCAgNCArKy0tCiBmcy9udGZzMy9zdXBlci5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0t LQogZnMvb2NmczIvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL3hmcy94 ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDQgKystLQogaW5jbHVkZS9saW51eC9ibGtk ZXYuaCAgICAgICAgICAgICAgfCAgNSArKysrKwogMTggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxpYi5jIGIv YmxvY2svYmxrLWxpYi5jCmluZGV4IDhiNGI2NmQzYTliZmMuLjQzYWE0ZDdmZTg1OWYgMTAwNjQ0 Ci0tLSBhL2Jsb2NrL2Jsay1saWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTEyLDggKzEy LDcgQEAKIAogc3RhdGljIHNlY3Rvcl90IGJpb19kaXNjYXJkX2xpbWl0KHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcikKIHsKLQl1bnNpZ25lZCBpbnQgZGlzY2FyZF9n cmFudWxhcml0eSA9Ci0JCWJkZXZfZ2V0X3F1ZXVlKGJkZXYpLT5saW1pdHMuZGlzY2FyZF9ncmFu dWxhcml0eTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2Fy ZF9ncmFudWxhcml0eShiZGV2KTsKIAlzZWN0b3JfdCBncmFudWxhcml0eV9hbGlnbmVkX3NlY3Rv cjsKIAogCWlmIChiZGV2X2lzX3BhcnRpdGlvbihiZGV2KSkKQEAgLTU5LDcgKzU4LDcgQEAgaW50 IF9fYmxrZGV2X2lzc3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9y X3Qgc2VjdG9yLAogCX0KIAogCS8qIEluIGNhc2UgdGhlIGRpc2NhcmQgZ3JhbnVsYXJpdHkgaXNu J3Qgc2V0IGJ5IGJ1Z2d5IGRldmljZSBkcml2ZXIgKi8KLQlpZiAoV0FSTl9PTl9PTkNFKCFxLT5s aW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkpIHsKKwlpZiAoV0FSTl9PTl9PTkNFKCFiZGV2X2Rp c2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpKSB7CiAJCWNoYXIgZGV2X25hbWVbQkRFVk5BTUVfU0la RV07CiAKIAkJYmRldm5hbWUoYmRldiwgZGV2X25hbWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXgg YjU1ZTVmY2MyMWUxZi4uMGIzZTQzYmU2NDE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfbmwuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCkBAIC0xNDI1 LDcgKzE0MjUsNiBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCQkJICAgICAgIHN0cnVjdCBk cmJkX2JhY2tpbmdfZGV2ICpuYmMpCiB7CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IG5i Yy0+YmFja2luZ19iZGV2OwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldi0+YmRfZGlz ay0+cXVldWU7CiAKIAlpZiAoZGlza19jb25mLT5hbF9leHRlbnRzIDwgRFJCRF9BTF9FWFRFTlRT X01JTikKIAkJZGlza19jb25mLT5hbF9leHRlbnRzID0gRFJCRF9BTF9FWFRFTlRTX01JTjsKQEAg LTE0NDIsMTIgKzE0NDEsMTQgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVj dCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KSB7CiAJCWludCBvcmlnX3ZhbHVlID0gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzZWN0b3JfdCBkaXNjYXJkX3NpemUgPSBi ZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgPDwgOTsKKwkJdW5zaWduZWQgaW50IGRpc2Nh cmRfZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldik7CiAJCWludCBy ZW1haW5kZXI7CiAKLQkJaWYgKHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID4gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQotCQkJZGlza19jb25mLT5yc19kaXNjYXJkX2dy YW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJCWlmIChkaXNjYXJk X2dyYW51bGFyaXR5ID4gZGlza19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQorCQkJZGlz a19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5ID0gZGlzY2FyZF9ncmFudWxhcml0eTsKIAot CQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgJSBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJcmVtYWluZGVyID0gZGlza19jb25mLT5yc19kaXNj YXJkX2dyYW51bGFyaXR5ICUKKwkJCQlkaXNjYXJkX2dyYW51bGFyaXR5OwogCQlkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgKz0gcmVtYWluZGVyOwogCiAJCWlmIChkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNjYXJkX3NpemUpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf cmVjZWl2ZXIuYwppbmRleCA4YTRhNDdkYTU2ZmU5Li4yNzVjNTNjN2I2MjllIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTE1MTEsNyArMTUxMSw2IEBAIHZvaWQgZHJiZF9idW1w X3dyaXRlX29yZGVyaW5nKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwgc3RydWN0IGRy YmRfYmFja2luCiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJk X2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMs IGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gZGV2aWNlLT5sZGV2 LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1 ZShiZGV2KTsKIAlzZWN0b3JfdCB0bXAsIG5yOwogCXVuc2lnbmVkIGludCBtYXhfZGlzY2FyZF9z ZWN0b3JzLCBncmFudWxhcml0eTsKIAlpbnQgYWxpZ25tZW50OwpAQCAtMTUyMSw3ICsxNTIwLDcg QEAgaW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2Ug KmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsIHUKIAkJZ290byB6ZXJvX291dDsKIAogCS8qIFplcm8t c2VjdG9yICh1bmtub3duKSBhbmQgb25lLXNlY3RvciBncmFudWxhcml0aWVzIGFyZSB0aGUgc2Ft ZS4gICovCi0JZ3JhbnVsYXJpdHkgPSBtYXgocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg Pj4gOSwgMVUpOworCWdyYW51bGFyaXR5ID0gbWF4KGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShi ZGV2KSA+PiA5LCAxVSk7CiAJYWxpZ25tZW50ID0gKGJkZXZfZGlzY2FyZF9hbGlnbm1lbnQoYmRl dikgPj4gOSkgJSBncmFudWxhcml0eTsKIAogCW1heF9kaXNjYXJkX3NlY3RvcnMgPSBtaW4oYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpLCAoMVUgPDwgMjIpKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMGUwNjFjOTg5 NmVmZi4uOTc2Y2Y5ODdiMzkyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKKysr IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBzdGF0aWMgdm9pZCBs b29wX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pCiAJCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpiYWNraW5ncSA9IGJkZXZfZ2V0X3F1ZXVlKElfQkRFVihpbm9kZSkpOwogCiAJ CW1heF9kaXNjYXJkX3NlY3RvcnMgPSBiYWNraW5ncS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNf c2VjdG9yczsKLQkJZ3JhbnVsYXJpdHkgPSBiYWNraW5ncS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkgPzoKKwkJZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoSV9CREVW KGlub2RlKSkgPzoKIAkJCXF1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYmFja2luZ3EpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKaW5kZXggNmNiOWY4Nzg0MzI3OC4uMjVm MzNlYjI1MzM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNl LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKQEAgLTgzNSw3ICs4 MzUsNiBAQCBzdHJ1Y3Qgc2VfZGV2aWNlICp0YXJnZXRfYWxsb2NfZGV2aWNlKHN0cnVjdCBzZV9o YmEgKmhiYSwgY29uc3QgY2hhciAqbmFtZSkKIGJvb2wgdGFyZ2V0X2NvbmZpZ3VyZV91bm1hcF9m cm9tX3F1ZXVlKHN0cnVjdCBzZV9kZXZfYXR0cmliICphdHRyaWIsCiAJCQkJICAgICAgIHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2 X2dldF9xdWV1ZShiZGV2KTsKIAlpbnQgYmxvY2tfc2l6ZSA9IGJkZXZfbG9naWNhbF9ibG9ja19z aXplKGJkZXYpOwogCiAJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpCkBAIC04 NDcsNyArODQ2LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3Ry dWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkgKiBDdXJyZW50bHkgaGFyZGNvZGVkIHRvIDEg aW4gTGludXgvU0NTSSBjb2RlLi4KIAkgKi8KIAlhdHRyaWItPm1heF91bm1hcF9ibG9ja19kZXNj X2NvdW50ID0gMTsKLQlhdHRyaWItPnVubWFwX2dyYW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2Nh cmRfZ3JhbnVsYXJpdHkgLyBibG9ja19zaXplOworCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkg PSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikgLyBibG9ja19zaXplOwogCWF0dHJpYi0+ dW5tYXBfZ3JhbnVsYXJpdHlfYWxpZ25tZW50ID0KIAkJYmRldl9kaXNjYXJkX2FsaWdubWVudChi ZGV2KSAvIGJsb2NrX3NpemU7CiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9p b2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCAwOTZiYjBkYTAzZjFjLi43MDc2NWQ1OTYx NmE1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMK QEAgLTQ2OCw3ICs0NjgsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJp bShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCQkJdm9pZCBfX3VzZXIgKmFyZykK IHsKIAlzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUg KnE7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAl1NjQgbWlubGVuID0gVUxMT05HX01B WDsKIAl1NjQgbnVtX2RldmljZXMgPSAwOwpAQCAtNDk4LDE0ICs0OTcsMTEgQEAgc3RhdGljIG5v aW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2lu Zm8sCiAJcmN1X3JlYWRfbG9jaygpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRldmljZSwg JmZzX2luZm8tPmZzX2RldmljZXMtPmRldmljZXMsCiAJCQkJZGV2X2xpc3QpIHsKLQkJaWYgKCFk ZXZpY2UtPmJkZXYpCisJCWlmICghZGV2aWNlLT5iZGV2IHx8ICFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoZGV2aWNlLT5iZGV2KSkKIAkJCWNvbnRpbnVlOwotCQlxID0gYmRldl9nZXRfcXVldWUo ZGV2aWNlLT5iZGV2KTsKLQkJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJk ZXYpKSB7Ci0JCQludW1fZGV2aWNlcysrOwotCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSwKLQkJCQkgICAgIG1pbmxlbik7Ci0JCX0KKwkJbnVtX2Rl dmljZXMrKzsKKwkJbWlubGVuID0gbWluX3QodTY0LCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHko ZGV2aWNlLT5iZGV2KSwKKwkJCQkgICAgbWlubGVuKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7 CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA3 NjVlNGY2M2RkMThkLi4yMGQ0ZTQ3ZjU3YWIyIDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMK KysrIGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0zNTEsNyArMzUxLDYgQEAgaW50IGV4ZmF0X3NldGF0 dHIoc3RydWN0IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCiAKIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUoaW5vZGUtPmlfc2ItPnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5n ZTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRf aW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQly ZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFu Z2UubWlubGVuLAotCQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCQliZGV2 X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoaW5vZGUtPmlfc2ItPnNfYmRldikpOwogCiAJcmV0ID0gZXhm YXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2Zz L2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFsbG9jLmMKaW5kZXggYzM2NjhjOTc3Y2Q5OS4u NmQxODIwNTM2ZDg4ZCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0 NC9tYmFsbG9jLmMKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIGV4dDRfdHJpbV9hbGxfZnJlZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JvdXAsCiAgKi8KIGludCBleHQ0X3Ry aW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJpbV9yYW5nZSAqcmFuZ2Up CiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFu dWxhcml0eShzYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZXh0NF9ncm91cF9pbmZvICpncnA7CiAJZXh0 NF9ncm91cF90IGdyb3VwLCBmaXJzdF9ncm91cCwgbGFzdF9ncm91cDsKIAlleHQ0X2dycGJsa190 IGNudCA9IDAsIGZpcnN0X2NsdXN0ZXIsIGxhc3RfY2x1c3RlcjsKQEAgLTY0NzUsOSArNjQ3NSw5 IEBAIGludCBleHQ0X3RyaW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJp bV9yYW5nZSAqcmFuZ2UpCiAJICAgIHJhbmdlLT5sZW4gPCBzYi0+c19ibG9ja3NpemUpCiAJCXJl dHVybiAtRUlOVkFMOwogCS8qIE5vIHBvaW50IHRvIHRyeSB0byB0cmltIGxlc3MgdGhhbiBkaXNj YXJkIGdyYW51bGFyaXR5ICovCi0JaWYgKHJhbmdlLT5taW5sZW4gPCBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSkgeworCWlmIChyYW5nZS0+bWlubGVuIDwgZGlzY2FyZF9ncmFudWxhcml0 eSkgewogCQltaW5sZW4gPSBFWFQ0X05VTV9CMkMoRVhUNF9TQihzYiksCi0JCQlxLT5saW1pdHMu ZGlzY2FyZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CisJCQkJZGlzY2Fy ZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CiAJCWlmIChtaW5sZW4gPiBF WFQ0X0NMVVNURVJTX1BFUl9HUk9VUChzYikpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQg YS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCmluZGV4IDViODlhZjBmMjdmMDUuLjgw NTNkOTlmMzkyMGIgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZmlsZS5jCisrKyBiL2ZzL2YyZnMvZmls ZS5jCkBAIC0yMjg1LDcgKzIyODUsNiBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5p X3NiOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRl dik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBAIC0yMzA0LDcg KzIzMDMsNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiByZXQ7CiAKIAlyYW5nZS5taW5sZW4gPSBtYXgo KHVuc2lnbmVkIGludClyYW5nZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCQkJICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpKTsKIAly ZXQgPSBmMmZzX3RyaW1fZnMoRjJGU19TQihzYiksICZyYW5nZSk7CiAJbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9m cy9mYXQvZmlsZS5jCmluZGV4IGU0YzdkMTBlODAxMjkuLmJmOTFmOTc3ZGViZWEgMTAwNjQ0Ci0t LSBhL2ZzL2ZhdC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTI3LDcgKzEyNyw2IEBA IHN0YXRpYyBpbnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l ZCBsb25nIGFyZykKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CiAJc3Ry dWN0IGZzdHJpbV9yYW5nZSBfX3VzZXIgKnVzZXJfcmFuZ2U7CiAJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCWludCBlcnI7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0x NDEsNyArMTQwLDcgQEAgc3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQlyZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1p bmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFuZ2UubWlubGVuLAotCQkJICAgICBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSk7CisJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0 eShzYi0+c19iZGV2KSk7CiAKIAllcnIgPSBmYXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlp ZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2dmczIvcmdycC5jIGIvZnMvZ2ZzMi9yZ3JwLmMK aW5kZXggN2YyMGFjOTEzM2JjNi4uNmQyNmJiNTI1NDg0NCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9y Z3JwLmMKKysrIGIvZnMvZ2ZzMi9yZ3JwLmMKQEAgLTEzODYsNyArMTM4Niw3IEBAIGludCBnZnMy X2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIgKmFyZ3ApCiB7CiAJc3RydWN0 IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IGdmczJfc2JkICpzZHAg PSBHRlMyX1NCKGlub2RlKTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKHNkcC0+c2RfdmZzLT5zX2JkZXYpOworCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBz ZHAtPnNkX3Zmcy0+c19iZGV2OwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiAJc3RydWN0IGdm czJfcmdycGQgKnJnZDsKIAlzdHJ1Y3QgZ2ZzMl9yZ3JwZCAqcmdkX2VuZDsKQEAgLTE0MDUsNyAr MTQwNSw3IEBAIGludCBnZnMyX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIg KmFyZ3ApCiAJaWYgKCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmc2RwLT5zZF9mbGFncykp CiAJCXJldHVybiAtRVJPRlM7CiAKLQlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhzZHAt PnNkX3Zmcy0+c19iZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyLCBhcmdwLCBz aXplb2YocikpKQpAQCAtMTQxOCw4ICsxNDE4LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBm aWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlzdGFydCA9IHIuc3RhcnQgPj4gYnNfc2hp ZnQ7CiAJZW5kID0gc3RhcnQgKyAoci5sZW4gPj4gYnNfc2hpZnQpOwogCW1pbmxlbiA9IG1heF90 KHU2NCwgci5taW5sZW4sIHNkcC0+c2Rfc2Iuc2JfYnNpemUpOwotCW1pbmxlbiA9IG1heF90KHU2 NCwgbWlubGVuLAotCQkgICAgICAgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpID4+IGJz X3NoaWZ0OworCW1pbmxlbiA9IG1heF90KHU2NCwgbWlubGVuLCBiZGV2X2Rpc2NhcmRfZ3JhbnVs YXJpdHkoYmRldikpID4+IGJzX3NoaWZ0OwogCiAJaWYgKGVuZCA8PSBzdGFydCB8fCBtaW5sZW4g PiBzZHAtPnNkX21heF9yZ19kYXRhKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2Zz L2pmcy9pb2N0bC5jIGIvZnMvamZzL2lvY3RsLmMKaW5kZXggMzU3YWU2ZTVjMzZlYy4uMWU3YjE3 N2VjZTYwNSAxMDA2NDQKLS0tIGEvZnMvamZzL2lvY3RsLmMKKysrIGIvZnMvamZzL2lvY3RsLmMK QEAgLTExMCw3ICsxMTAsNiBAQCBsb25nIGpmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJY2FzZSBGSVRSSU06CiAJewogCQlz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCXN0cnVjdCBmc3RyaW1fcmFu Z2UgcmFuZ2U7CiAJCXM2NCByZXQgPSAwOwogCkBAIC0xMjcsNyArMTI2LDcgQEAgbG9uZyBqZnNf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKIAkJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWdu ZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSk7 CisJCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCiAJCXJl dCA9IGpmc19pb2NfdHJpbShpbm9kZSwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1n aXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmluZGV4IDUyYjczZjU1 OGZjYjEuLjg3ZTEwMDRiNjA2ZDIgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9pb2N0bC5jCisrKyBi L2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDUyLDcgKzEwNTIsNiBAQCBzdGF0aWMgaW50IG5pbGZz X2lvY3RsX3Jlc2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKIHN0 YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9f dXNlciAqYXJncCkKIHsKIAlzdHJ1Y3QgdGhlX25pbGZzICpuaWxmcyA9IGlub2RlLT5pX3NiLT5z X2ZzX2luZm87Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShuaWxm cy0+bnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBA IC0xMDY1LDcgKzEwNjQsOCBAQCBzdGF0aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0 IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZy YW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2Uu bWlubGVuID0gbWF4X3QodTY0LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5KTsKKwlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwKKwkJCSAg ICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG5pbGZzLT5uc19iZGV2KSk7CiAKIAlkb3duX3Jl YWQoJm5pbGZzLT5uc19zZWdjdG9yX3NlbSk7CiAJcmV0ID0gbmlsZnNfc3VmaWxlX3RyaW1fZnMo bmlsZnMtPm5zX3N1ZmlsZSwgJnJhbmdlKTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL2ZpbGUuYyBi L2ZzL250ZnMzL2ZpbGUuYwppbmRleCBlNzYzMjM2MTY5MzMxLi4xNTgwNmVlYWUyMTdhIDEwMDY0 NAotLS0gYS9mcy9udGZzMy9maWxlLmMKKysrIGIvZnMvbnRmczMvZmlsZS5jCkBAIC0yMiw3ICsy Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAq c2JpLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAq dXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2JpLT5zYi0+c19iZGV2KTsKIAlpbnQgZXJyOwog CiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQpAQCAtMzUsNyArMzQsOCBAQCBzdGF0aWMg aW50IG50ZnNfaW9jdGxfZml0cmltKHN0cnVjdCBudGZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQg bG9uZyBhcmcpCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgdXNlcl9yYW5nZSwgc2l6ZW9m KHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2UubWlubGVuID0gbWF4X3QodTMy LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1MzIsIHJhbmdlLm1pbmxlbiwKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dy YW51bGFyaXR5KHNiaS0+c2ItPnNfYmRldikpOwogCiAJZXJyID0gbnRmc190cmltX2ZzKHNiaSwg JnJhbmdlKTsKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9m cy9udGZzMy9zdXBlci5jCmluZGV4IGM3MzQwODViY2NlNGEuLjVmMmU0MTRjZmE3OWIgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtODgyLDcg Kzg4Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpbnQgZXJyOwogCXN0cnVjdCBudGZzX3NiX2lu Zm8gKnNiaSA9IHNiLT5zX2ZzX2luZm87CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNi LT5zX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnJxOwogCXN0cnVjdCBpbm9kZSAqaW5v ZGU7CiAJc3RydWN0IG50ZnNfaW5vZGUgKm5pOwogCXNpemVfdCBpLCB0dDsKQEAgLTkxMiw5ICs5 MTEsOCBAQCBzdGF0aWMgaW50IG50ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWdvdG8gb3V0OwogCX0KIAotCXJxID0gYmRldl9n ZXRfcXVldWUoYmRldik7Ci0JaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBy cS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKLQkJc2JpLT5kaXNjYXJkX2dyYW51bGFy aXR5ID0gcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCWlmIChiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikgJiYgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYpKSB7CisJ CXNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2 KTsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5X21hc2tfaW52ID0KIAkJCX4odTY0KShzYmkt PmRpc2NhcmRfZ3JhbnVsYXJpdHkgLSAxKTsKIAl9CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9pb2N0 bC5jIGIvZnMvb2NmczIvaW9jdGwuYwppbmRleCA5Yjc4ZWYxMDNhZGE2Li5hZmQ1NGVjNjYxMDMw IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9pb2N0bC5jCisrKyBiL2ZzL29jZnMyL2lvY3RsLmMKQEAg LTkwMyw3ICs5MDMsNiBAQCBsb25nIG9jZnMyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJaW50IHJldCA9IDA7CiAKQEAgLTkxNiw3ICs5MTUsNyBAQCBsb25nIG9jZnMy X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n IGFyZykKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkp CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAotCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5LAorCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIGJk ZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSwKIAkJCQkgICAgIHJhbmdlLm1pbmxl bik7CiAJCXJldCA9IG9jZnMyX3RyaW1fZnMoc2IsICZyYW5nZSk7CiAJCWlmIChyZXQgPCAwKQpk aWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXNjYXJkLmMgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpp bmRleCBhNGU2NjA5ZDYxNmI3Li5lMmFkYTExNWMyM2Y5IDEwMDY0NAotLS0gYS9mcy94ZnMveGZz X2Rpc2NhcmQuYworKysgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpAQCAtMTUyLDggKzE1Miw4IEBA IHhmc19pb2NfdHJpbSgKIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCiAJc3RydWN0IGZzdHJpbV9y YW5nZSBfX3VzZXIJKnVyYW5nZSkKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZQkqcSA9IGJkZXZf Z2V0X3F1ZXVlKG1wLT5tX2RkZXZfdGFyZ3AtPmJ0X2JkZXYpOwotCXVuc2lnbmVkIGludAkJZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwl1bnNpZ25lZCBpbnQJ CWdyYW51bGFyaXR5ID0KKwkJYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG1wLT5tX2RkZXZfdGFy Z3AtPmJ0X2JkZXYpOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UJcmFuZ2U7CiAJeGZzX2RhZGRyX3QJ CXN0YXJ0LCBlbmQsIG1pbmxlbjsKIAl4ZnNfYWdudW1iZXJfdAkJc3RhcnRfYWdubywgZW5kX2Fn bm8sIGFnbm87CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9s aW51eC9ibGtkZXYuaAppbmRleCA3NjdhYjIyZTEwNTJhLi5mMWNmNTU3ZWEyMGVmIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgK QEAgLTEyNTcsNiArMTI1NywxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIAlyZXR1cm4gYmRl dl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzOwogfQogCitzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldikKK3sKKwlyZXR1cm4gYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBi ZGV2X3dyaXRlX3plcm9lc19zZWN0b3JzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCiB7CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLS0gCjIuMzAu MgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVh bGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRp b24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZv L3ZpcnR1YWxpemF0aW9u 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 469917E3 for ; Sat, 9 Apr 2022 04:52:39 +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=pVDwXB6PltgVZkC3rRdiaCUdLly1SPIvqpMIXjtbaqw=; b=jqUA+AmRXIWodbokKUQJY0RX0L 3iRxTxojZgoAr0BJQ1ponT4HGyJF9P/dLKgG3mgDVBzT9ZC3GJ4VXksCd7CI4pp2deGOMuRnO4dJZ tYjvlBna5K+2SqqA4cHi6bHT3o1vwsbWhi8IrSk8cEbLbPYhU9Q1bHhBT4/6s3jRpSUTvMY8j6m9y ZXrNmSY5/qE17M860l2JtYPEp4Qs2IucObE64GZleGfFuLyLOimXHvRbrt+CUdmhLio0qwks9xvBt Vg5wC+6v6SCxOh06XmFFo2NPgfa5H4+lhNehhWJUBtAxZ5KuAcLte2n3q/5mzTUIyBnf71eMj2a2Y UapUGRFw==; Received: from 213-147-167-116.nat.highway.webapn.at ([213.147.167.116] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nd358-0021hI-T6; Sat, 09 Apr 2022 04:52:19 +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: Sat, 9 Apr 2022 06:50:41 +0200 Message-Id: <20220409045043.23593-26-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-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 [btrfs] 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 b55e5fcc21e1f..0b3e43be6414d 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 98BB3C3527D for ; Sat, 9 Apr 2022 04:52:47 +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 1nd35b-0000Rb-KL; Sat, 09 Apr 2022 04:52:46 +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 1nd35Z-0000Q9-7x; Sat, 09 Apr 2022 04:52:43 +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=pVDwXB6PltgVZkC3rRdiaCUdLly1SPIvqpMIXjtbaqw=; b=Jh1m6C2obK5VdUYtFqAmT0n1Ow w7nfxqTEaX5mIQGao8ySNrJBU2uwQtjTpw0FEfEVVyXs4zW++7GhWkyQuh2KoYftduGytjtE+JamJ E3QgMXB6RJ2NhFTl7ywo0NCBBdOTD1CtpgGgIjg0IJWxxbiVJwR++f++TbuNu+H9hXZk=; 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=pVDwXB6PltgVZkC3rRdiaCUdLly1SPIvqpMIXjtbaqw=; b=Qp5mFZZ/GcY5A21VptApEY2gcC gy07HwLmImiJNSqL7Lvs3N0s9cIMM75QqJF3kcQMYUYC6N23n058+jyS16szfmxhVzGbJZNNIOK7B rh34pJsOcmp/HzdPrfLXEvp5D9fkUMDp5BN0tutBcDKY4HtX+L3yAwbki4sUsnoezauA=; 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 1nd35U-00APec-DG; Sat, 09 Apr 2022 04:52:43 +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=pVDwXB6PltgVZkC3rRdiaCUdLly1SPIvqpMIXjtbaqw=; b=jqUA+AmRXIWodbokKUQJY0RX0L 3iRxTxojZgoAr0BJQ1ponT4HGyJF9P/dLKgG3mgDVBzT9ZC3GJ4VXksCd7CI4pp2deGOMuRnO4dJZ tYjvlBna5K+2SqqA4cHi6bHT3o1vwsbWhi8IrSk8cEbLbPYhU9Q1bHhBT4/6s3jRpSUTvMY8j6m9y ZXrNmSY5/qE17M860l2JtYPEp4Qs2IucObE64GZleGfFuLyLOimXHvRbrt+CUdmhLio0qwks9xvBt Vg5wC+6v6SCxOh06XmFFo2NPgfa5H4+lhNehhWJUBtAxZ5KuAcLte2n3q/5mzTUIyBnf71eMj2a2Y UapUGRFw==; Received: from 213-147-167-116.nat.highway.webapn.at ([213.147.167.116] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nd358-0021hI-T6; Sat, 09 Apr 2022 04:52:19 +0000 From: Christoph Hellwig To: Jens Axboe Date: Sat, 9 Apr 2022 06:50:41 +0200 Message-Id: <20220409045043.23593-26-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-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: 1nd35U-00APec-DG 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 b2VobXdhbGRlckBsaW5iaXQuY29tPiBbYnRyZnNdCkFja2VkLWJ5OiBSeXVzdWtlIEtvbmlzaGkg PGtvbmlzaGkucnl1c3VrZUBnbWFpbC5jb20+CkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+IFtidHJmc10KLS0tCiBibG9jay9ibGstbGliLmMgICAgICAgICAgICAgICAg ICAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8ICA5 ICsrKysrLS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyAgfCAgMyArLS0K IGRyaXZlcnMvYmxvY2svbG9vcC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGFy Z2V0L3RhcmdldF9jb3JlX2RldmljZS5jIHwgIDMgKy0tCiBmcy9idHJmcy9pb2N0bC5jICAgICAg ICAgICAgICAgICAgICB8IDEyICsrKystLS0tLS0tLQogZnMvZXhmYXQvZmlsZS5jICAgICAgICAg ICAgICAgICAgICAgfCAgMyArLS0KIGZzL2V4dDQvbWJhbGxvYy5jICAgICAgICAgICAgICAgICAg IHwgIDYgKysrLS0tCiBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL2dmczIv cmdycC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQogZnMvamZzL2lvY3RsLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQogZnMvbnRmczMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAg fCAgNCArKy0tCiBmcy9udGZzMy9zdXBlci5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0t LQogZnMvb2NmczIvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL3hmcy94 ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDQgKystLQogaW5jbHVkZS9saW51eC9ibGtk ZXYuaCAgICAgICAgICAgICAgfCAgNSArKysrKwogMTggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxpYi5jIGIv YmxvY2svYmxrLWxpYi5jCmluZGV4IDhiNGI2NmQzYTliZmMuLjQzYWE0ZDdmZTg1OWYgMTAwNjQ0 Ci0tLSBhL2Jsb2NrL2Jsay1saWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTEyLDggKzEy LDcgQEAKIAogc3RhdGljIHNlY3Rvcl90IGJpb19kaXNjYXJkX2xpbWl0KHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcikKIHsKLQl1bnNpZ25lZCBpbnQgZGlzY2FyZF9n cmFudWxhcml0eSA9Ci0JCWJkZXZfZ2V0X3F1ZXVlKGJkZXYpLT5saW1pdHMuZGlzY2FyZF9ncmFu dWxhcml0eTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2Fy ZF9ncmFudWxhcml0eShiZGV2KTsKIAlzZWN0b3JfdCBncmFudWxhcml0eV9hbGlnbmVkX3NlY3Rv cjsKIAogCWlmIChiZGV2X2lzX3BhcnRpdGlvbihiZGV2KSkKQEAgLTU5LDcgKzU4LDcgQEAgaW50 IF9fYmxrZGV2X2lzc3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9y X3Qgc2VjdG9yLAogCX0KIAogCS8qIEluIGNhc2UgdGhlIGRpc2NhcmQgZ3JhbnVsYXJpdHkgaXNu J3Qgc2V0IGJ5IGJ1Z2d5IGRldmljZSBkcml2ZXIgKi8KLQlpZiAoV0FSTl9PTl9PTkNFKCFxLT5s aW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkpIHsKKwlpZiAoV0FSTl9PTl9PTkNFKCFiZGV2X2Rp c2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpKSB7CiAJCWNoYXIgZGV2X25hbWVbQkRFVk5BTUVfU0la RV07CiAKIAkJYmRldm5hbWUoYmRldiwgZGV2X25hbWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXgg YjU1ZTVmY2MyMWUxZi4uMGIzZTQzYmU2NDE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfbmwuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCkBAIC0xNDI1 LDcgKzE0MjUsNiBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCQkJICAgICAgIHN0cnVjdCBk cmJkX2JhY2tpbmdfZGV2ICpuYmMpCiB7CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IG5i Yy0+YmFja2luZ19iZGV2OwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldi0+YmRfZGlz ay0+cXVldWU7CiAKIAlpZiAoZGlza19jb25mLT5hbF9leHRlbnRzIDwgRFJCRF9BTF9FWFRFTlRT X01JTikKIAkJZGlza19jb25mLT5hbF9leHRlbnRzID0gRFJCRF9BTF9FWFRFTlRTX01JTjsKQEAg LTE0NDIsMTIgKzE0NDEsMTQgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVj dCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KSB7CiAJCWludCBvcmlnX3ZhbHVlID0gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzZWN0b3JfdCBkaXNjYXJkX3NpemUgPSBi ZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgPDwgOTsKKwkJdW5zaWduZWQgaW50IGRpc2Nh cmRfZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldik7CiAJCWludCBy ZW1haW5kZXI7CiAKLQkJaWYgKHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID4gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQotCQkJZGlza19jb25mLT5yc19kaXNjYXJkX2dy YW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJCWlmIChkaXNjYXJk X2dyYW51bGFyaXR5ID4gZGlza19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQorCQkJZGlz a19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5ID0gZGlzY2FyZF9ncmFudWxhcml0eTsKIAot CQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgJSBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJcmVtYWluZGVyID0gZGlza19jb25mLT5yc19kaXNj YXJkX2dyYW51bGFyaXR5ICUKKwkJCQlkaXNjYXJkX2dyYW51bGFyaXR5OwogCQlkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgKz0gcmVtYWluZGVyOwogCiAJCWlmIChkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNjYXJkX3NpemUpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf cmVjZWl2ZXIuYwppbmRleCA4YTRhNDdkYTU2ZmU5Li4yNzVjNTNjN2I2MjllIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTE1MTEsNyArMTUxMSw2IEBAIHZvaWQgZHJiZF9idW1w X3dyaXRlX29yZGVyaW5nKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwgc3RydWN0IGRy YmRfYmFja2luCiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJk X2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMs IGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gZGV2aWNlLT5sZGV2 LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1 ZShiZGV2KTsKIAlzZWN0b3JfdCB0bXAsIG5yOwogCXVuc2lnbmVkIGludCBtYXhfZGlzY2FyZF9z ZWN0b3JzLCBncmFudWxhcml0eTsKIAlpbnQgYWxpZ25tZW50OwpAQCAtMTUyMSw3ICsxNTIwLDcg QEAgaW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2Ug KmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsIHUKIAkJZ290byB6ZXJvX291dDsKIAogCS8qIFplcm8t c2VjdG9yICh1bmtub3duKSBhbmQgb25lLXNlY3RvciBncmFudWxhcml0aWVzIGFyZSB0aGUgc2Ft ZS4gICovCi0JZ3JhbnVsYXJpdHkgPSBtYXgocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg Pj4gOSwgMVUpOworCWdyYW51bGFyaXR5ID0gbWF4KGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShi ZGV2KSA+PiA5LCAxVSk7CiAJYWxpZ25tZW50ID0gKGJkZXZfZGlzY2FyZF9hbGlnbm1lbnQoYmRl dikgPj4gOSkgJSBncmFudWxhcml0eTsKIAogCW1heF9kaXNjYXJkX3NlY3RvcnMgPSBtaW4oYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpLCAoMVUgPDwgMjIpKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMGUwNjFjOTg5 NmVmZi4uOTc2Y2Y5ODdiMzkyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKKysr IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBzdGF0aWMgdm9pZCBs b29wX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pCiAJCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpiYWNraW5ncSA9IGJkZXZfZ2V0X3F1ZXVlKElfQkRFVihpbm9kZSkpOwogCiAJ CW1heF9kaXNjYXJkX3NlY3RvcnMgPSBiYWNraW5ncS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNf c2VjdG9yczsKLQkJZ3JhbnVsYXJpdHkgPSBiYWNraW5ncS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkgPzoKKwkJZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoSV9CREVW KGlub2RlKSkgPzoKIAkJCXF1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYmFja2luZ3EpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKaW5kZXggNmNiOWY4Nzg0MzI3OC4uMjVm MzNlYjI1MzM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNl LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKQEAgLTgzNSw3ICs4 MzUsNiBAQCBzdHJ1Y3Qgc2VfZGV2aWNlICp0YXJnZXRfYWxsb2NfZGV2aWNlKHN0cnVjdCBzZV9o YmEgKmhiYSwgY29uc3QgY2hhciAqbmFtZSkKIGJvb2wgdGFyZ2V0X2NvbmZpZ3VyZV91bm1hcF9m cm9tX3F1ZXVlKHN0cnVjdCBzZV9kZXZfYXR0cmliICphdHRyaWIsCiAJCQkJICAgICAgIHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2 X2dldF9xdWV1ZShiZGV2KTsKIAlpbnQgYmxvY2tfc2l6ZSA9IGJkZXZfbG9naWNhbF9ibG9ja19z aXplKGJkZXYpOwogCiAJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpCkBAIC04 NDcsNyArODQ2LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3Ry dWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkgKiBDdXJyZW50bHkgaGFyZGNvZGVkIHRvIDEg aW4gTGludXgvU0NTSSBjb2RlLi4KIAkgKi8KIAlhdHRyaWItPm1heF91bm1hcF9ibG9ja19kZXNj X2NvdW50ID0gMTsKLQlhdHRyaWItPnVubWFwX2dyYW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2Nh cmRfZ3JhbnVsYXJpdHkgLyBibG9ja19zaXplOworCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkg PSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikgLyBibG9ja19zaXplOwogCWF0dHJpYi0+ dW5tYXBfZ3JhbnVsYXJpdHlfYWxpZ25tZW50ID0KIAkJYmRldl9kaXNjYXJkX2FsaWdubWVudChi ZGV2KSAvIGJsb2NrX3NpemU7CiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9p b2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCAwOTZiYjBkYTAzZjFjLi43MDc2NWQ1OTYx NmE1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMK QEAgLTQ2OCw3ICs0NjgsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJp bShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCQkJdm9pZCBfX3VzZXIgKmFyZykK IHsKIAlzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUg KnE7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAl1NjQgbWlubGVuID0gVUxMT05HX01B WDsKIAl1NjQgbnVtX2RldmljZXMgPSAwOwpAQCAtNDk4LDE0ICs0OTcsMTEgQEAgc3RhdGljIG5v aW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2lu Zm8sCiAJcmN1X3JlYWRfbG9jaygpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRldmljZSwg JmZzX2luZm8tPmZzX2RldmljZXMtPmRldmljZXMsCiAJCQkJZGV2X2xpc3QpIHsKLQkJaWYgKCFk ZXZpY2UtPmJkZXYpCisJCWlmICghZGV2aWNlLT5iZGV2IHx8ICFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoZGV2aWNlLT5iZGV2KSkKIAkJCWNvbnRpbnVlOwotCQlxID0gYmRldl9nZXRfcXVldWUo ZGV2aWNlLT5iZGV2KTsKLQkJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJk ZXYpKSB7Ci0JCQludW1fZGV2aWNlcysrOwotCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSwKLQkJCQkgICAgIG1pbmxlbik7Ci0JCX0KKwkJbnVtX2Rl dmljZXMrKzsKKwkJbWlubGVuID0gbWluX3QodTY0LCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHko ZGV2aWNlLT5iZGV2KSwKKwkJCQkgICAgbWlubGVuKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7 CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA3 NjVlNGY2M2RkMThkLi4yMGQ0ZTQ3ZjU3YWIyIDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMK KysrIGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0zNTEsNyArMzUxLDYgQEAgaW50IGV4ZmF0X3NldGF0 dHIoc3RydWN0IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCiAKIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUoaW5vZGUtPmlfc2ItPnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5n ZTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRf aW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQly ZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFu Z2UubWlubGVuLAotCQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCQliZGV2 X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoaW5vZGUtPmlfc2ItPnNfYmRldikpOwogCiAJcmV0ID0gZXhm YXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2Zz L2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFsbG9jLmMKaW5kZXggYzM2NjhjOTc3Y2Q5OS4u NmQxODIwNTM2ZDg4ZCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0 NC9tYmFsbG9jLmMKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIGV4dDRfdHJpbV9hbGxfZnJlZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JvdXAsCiAgKi8KIGludCBleHQ0X3Ry aW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJpbV9yYW5nZSAqcmFuZ2Up CiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFu dWxhcml0eShzYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZXh0NF9ncm91cF9pbmZvICpncnA7CiAJZXh0 NF9ncm91cF90IGdyb3VwLCBmaXJzdF9ncm91cCwgbGFzdF9ncm91cDsKIAlleHQ0X2dycGJsa190 IGNudCA9IDAsIGZpcnN0X2NsdXN0ZXIsIGxhc3RfY2x1c3RlcjsKQEAgLTY0NzUsOSArNjQ3NSw5 IEBAIGludCBleHQ0X3RyaW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJp bV9yYW5nZSAqcmFuZ2UpCiAJICAgIHJhbmdlLT5sZW4gPCBzYi0+c19ibG9ja3NpemUpCiAJCXJl dHVybiAtRUlOVkFMOwogCS8qIE5vIHBvaW50IHRvIHRyeSB0byB0cmltIGxlc3MgdGhhbiBkaXNj YXJkIGdyYW51bGFyaXR5ICovCi0JaWYgKHJhbmdlLT5taW5sZW4gPCBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSkgeworCWlmIChyYW5nZS0+bWlubGVuIDwgZGlzY2FyZF9ncmFudWxhcml0 eSkgewogCQltaW5sZW4gPSBFWFQ0X05VTV9CMkMoRVhUNF9TQihzYiksCi0JCQlxLT5saW1pdHMu ZGlzY2FyZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CisJCQkJZGlzY2Fy ZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CiAJCWlmIChtaW5sZW4gPiBF WFQ0X0NMVVNURVJTX1BFUl9HUk9VUChzYikpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQg YS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCmluZGV4IDViODlhZjBmMjdmMDUuLjgw NTNkOTlmMzkyMGIgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZmlsZS5jCisrKyBiL2ZzL2YyZnMvZmls ZS5jCkBAIC0yMjg1LDcgKzIyODUsNiBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5p X3NiOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRl dik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBAIC0yMzA0LDcg KzIzMDMsNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiByZXQ7CiAKIAlyYW5nZS5taW5sZW4gPSBtYXgo KHVuc2lnbmVkIGludClyYW5nZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCQkJICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpKTsKIAly ZXQgPSBmMmZzX3RyaW1fZnMoRjJGU19TQihzYiksICZyYW5nZSk7CiAJbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9m cy9mYXQvZmlsZS5jCmluZGV4IGU0YzdkMTBlODAxMjkuLmJmOTFmOTc3ZGViZWEgMTAwNjQ0Ci0t LSBhL2ZzL2ZhdC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTI3LDcgKzEyNyw2IEBA IHN0YXRpYyBpbnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l ZCBsb25nIGFyZykKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CiAJc3Ry dWN0IGZzdHJpbV9yYW5nZSBfX3VzZXIgKnVzZXJfcmFuZ2U7CiAJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCWludCBlcnI7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0x NDEsNyArMTQwLDcgQEAgc3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQlyZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1p bmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFuZ2UubWlubGVuLAotCQkJICAgICBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSk7CisJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0 eShzYi0+c19iZGV2KSk7CiAKIAllcnIgPSBmYXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlp ZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2dmczIvcmdycC5jIGIvZnMvZ2ZzMi9yZ3JwLmMK aW5kZXggN2YyMGFjOTEzM2JjNi4uNmQyNmJiNTI1NDg0NCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9y Z3JwLmMKKysrIGIvZnMvZ2ZzMi9yZ3JwLmMKQEAgLTEzODYsNyArMTM4Niw3IEBAIGludCBnZnMy X2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIgKmFyZ3ApCiB7CiAJc3RydWN0 IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IGdmczJfc2JkICpzZHAg PSBHRlMyX1NCKGlub2RlKTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKHNkcC0+c2RfdmZzLT5zX2JkZXYpOworCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBz ZHAtPnNkX3Zmcy0+c19iZGV2OwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiAJc3RydWN0IGdm czJfcmdycGQgKnJnZDsKIAlzdHJ1Y3QgZ2ZzMl9yZ3JwZCAqcmdkX2VuZDsKQEAgLTE0MDUsNyAr MTQwNSw3IEBAIGludCBnZnMyX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIg KmFyZ3ApCiAJaWYgKCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmc2RwLT5zZF9mbGFncykp CiAJCXJldHVybiAtRVJPRlM7CiAKLQlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhzZHAt PnNkX3Zmcy0+c19iZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyLCBhcmdwLCBz aXplb2YocikpKQpAQCAtMTQxOCw4ICsxNDE4LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBm aWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlzdGFydCA9IHIuc3RhcnQgPj4gYnNfc2hp ZnQ7CiAJZW5kID0gc3RhcnQgKyAoci5sZW4gPj4gYnNfc2hpZnQpOwogCW1pbmxlbiA9IG1heF90 KHU2NCwgci5taW5sZW4sIHNkcC0+c2Rfc2Iuc2JfYnNpemUpOwotCW1pbmxlbiA9IG1heF90KHU2 NCwgbWlubGVuLAotCQkgICAgICAgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpID4+IGJz X3NoaWZ0OworCW1pbmxlbiA9IG1heF90KHU2NCwgbWlubGVuLCBiZGV2X2Rpc2NhcmRfZ3JhbnVs YXJpdHkoYmRldikpID4+IGJzX3NoaWZ0OwogCiAJaWYgKGVuZCA8PSBzdGFydCB8fCBtaW5sZW4g PiBzZHAtPnNkX21heF9yZ19kYXRhKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2Zz L2pmcy9pb2N0bC5jIGIvZnMvamZzL2lvY3RsLmMKaW5kZXggMzU3YWU2ZTVjMzZlYy4uMWU3YjE3 N2VjZTYwNSAxMDA2NDQKLS0tIGEvZnMvamZzL2lvY3RsLmMKKysrIGIvZnMvamZzL2lvY3RsLmMK QEAgLTExMCw3ICsxMTAsNiBAQCBsb25nIGpmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJY2FzZSBGSVRSSU06CiAJewogCQlz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCXN0cnVjdCBmc3RyaW1fcmFu Z2UgcmFuZ2U7CiAJCXM2NCByZXQgPSAwOwogCkBAIC0xMjcsNyArMTI2LDcgQEAgbG9uZyBqZnNf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKIAkJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWdu ZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSk7 CisJCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCiAJCXJl dCA9IGpmc19pb2NfdHJpbShpbm9kZSwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1n aXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmluZGV4IDUyYjczZjU1 OGZjYjEuLjg3ZTEwMDRiNjA2ZDIgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9pb2N0bC5jCisrKyBi L2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDUyLDcgKzEwNTIsNiBAQCBzdGF0aWMgaW50IG5pbGZz X2lvY3RsX3Jlc2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKIHN0 YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9f dXNlciAqYXJncCkKIHsKIAlzdHJ1Y3QgdGhlX25pbGZzICpuaWxmcyA9IGlub2RlLT5pX3NiLT5z X2ZzX2luZm87Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShuaWxm cy0+bnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBA IC0xMDY1LDcgKzEwNjQsOCBAQCBzdGF0aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0 IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZy YW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2Uu bWlubGVuID0gbWF4X3QodTY0LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5KTsKKwlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwKKwkJCSAg ICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG5pbGZzLT5uc19iZGV2KSk7CiAKIAlkb3duX3Jl YWQoJm5pbGZzLT5uc19zZWdjdG9yX3NlbSk7CiAJcmV0ID0gbmlsZnNfc3VmaWxlX3RyaW1fZnMo bmlsZnMtPm5zX3N1ZmlsZSwgJnJhbmdlKTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL2ZpbGUuYyBi L2ZzL250ZnMzL2ZpbGUuYwppbmRleCBlNzYzMjM2MTY5MzMxLi4xNTgwNmVlYWUyMTdhIDEwMDY0 NAotLS0gYS9mcy9udGZzMy9maWxlLmMKKysrIGIvZnMvbnRmczMvZmlsZS5jCkBAIC0yMiw3ICsy Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAq c2JpLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAq dXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2JpLT5zYi0+c19iZGV2KTsKIAlpbnQgZXJyOwog CiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQpAQCAtMzUsNyArMzQsOCBAQCBzdGF0aWMg aW50IG50ZnNfaW9jdGxfZml0cmltKHN0cnVjdCBudGZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQg bG9uZyBhcmcpCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgdXNlcl9yYW5nZSwgc2l6ZW9m KHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2UubWlubGVuID0gbWF4X3QodTMy LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1MzIsIHJhbmdlLm1pbmxlbiwKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dy YW51bGFyaXR5KHNiaS0+c2ItPnNfYmRldikpOwogCiAJZXJyID0gbnRmc190cmltX2ZzKHNiaSwg JnJhbmdlKTsKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9m cy9udGZzMy9zdXBlci5jCmluZGV4IGM3MzQwODViY2NlNGEuLjVmMmU0MTRjZmE3OWIgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtODgyLDcg Kzg4Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpbnQgZXJyOwogCXN0cnVjdCBudGZzX3NiX2lu Zm8gKnNiaSA9IHNiLT5zX2ZzX2luZm87CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNi LT5zX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnJxOwogCXN0cnVjdCBpbm9kZSAqaW5v ZGU7CiAJc3RydWN0IG50ZnNfaW5vZGUgKm5pOwogCXNpemVfdCBpLCB0dDsKQEAgLTkxMiw5ICs5 MTEsOCBAQCBzdGF0aWMgaW50IG50ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWdvdG8gb3V0OwogCX0KIAotCXJxID0gYmRldl9n ZXRfcXVldWUoYmRldik7Ci0JaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBy cS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKLQkJc2JpLT5kaXNjYXJkX2dyYW51bGFy aXR5ID0gcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCWlmIChiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikgJiYgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYpKSB7CisJ CXNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2 KTsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5X21hc2tfaW52ID0KIAkJCX4odTY0KShzYmkt PmRpc2NhcmRfZ3JhbnVsYXJpdHkgLSAxKTsKIAl9CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9pb2N0 bC5jIGIvZnMvb2NmczIvaW9jdGwuYwppbmRleCA5Yjc4ZWYxMDNhZGE2Li5hZmQ1NGVjNjYxMDMw IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9pb2N0bC5jCisrKyBiL2ZzL29jZnMyL2lvY3RsLmMKQEAg LTkwMyw3ICs5MDMsNiBAQCBsb25nIG9jZnMyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJaW50IHJldCA9IDA7CiAKQEAgLTkxNiw3ICs5MTUsNyBAQCBsb25nIG9jZnMy X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n IGFyZykKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkp CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAotCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5LAorCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIGJk ZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSwKIAkJCQkgICAgIHJhbmdlLm1pbmxl bik7CiAJCXJldCA9IG9jZnMyX3RyaW1fZnMoc2IsICZyYW5nZSk7CiAJCWlmIChyZXQgPCAwKQpk aWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXNjYXJkLmMgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpp bmRleCBhNGU2NjA5ZDYxNmI3Li5lMmFkYTExNWMyM2Y5IDEwMDY0NAotLS0gYS9mcy94ZnMveGZz X2Rpc2NhcmQuYworKysgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpAQCAtMTUyLDggKzE1Miw4IEBA IHhmc19pb2NfdHJpbSgKIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCiAJc3RydWN0IGZzdHJpbV9y YW5nZSBfX3VzZXIJKnVyYW5nZSkKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZQkqcSA9IGJkZXZf Z2V0X3F1ZXVlKG1wLT5tX2RkZXZfdGFyZ3AtPmJ0X2JkZXYpOwotCXVuc2lnbmVkIGludAkJZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwl1bnNpZ25lZCBpbnQJ CWdyYW51bGFyaXR5ID0KKwkJYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG1wLT5tX2RkZXZfdGFy Z3AtPmJ0X2JkZXYpOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UJcmFuZ2U7CiAJeGZzX2RhZGRyX3QJ CXN0YXJ0LCBlbmQsIG1pbmxlbjsKIAl4ZnNfYWdudW1iZXJfdAkJc3RhcnRfYWdubywgZW5kX2Fn bm8sIGFnbm87CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9s aW51eC9ibGtkZXYuaAppbmRleCA3NjdhYjIyZTEwNTJhLi5mMWNmNTU3ZWEyMGVmIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgK QEAgLTEyNTcsNiArMTI1NywxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIAlyZXR1cm4gYmRl dl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzOwogfQogCitzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldikKK3sKKwlyZXR1cm4gYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBi ZGV2X3dyaXRlX3plcm9lc19zZWN0b3JzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCiB7CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLS0gCjIuMzAu MgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51 eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZv cmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51 eC1mMmZzLWRldmVsCg== 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 71AAAC3525B for ; Sat, 9 Apr 2022 04:52:35 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-558-ly1RsgioPSSXIfWczksIig-1; Sat, 09 Apr 2022 00:52:33 -0400 X-MC-Unique: ly1RsgioPSSXIfWczksIig-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 92ADD86B8A7; Sat, 9 Apr 2022 04:52:31 +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 7CA12401DBE; Sat, 9 Apr 2022 04:52:31 +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 3C699194034A; Sat, 9 Apr 2022 04:52:31 +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 E92531940349 for ; Sat, 9 Apr 2022 04:52:29 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id BDC6C43E38B; Sat, 9 Apr 2022 04:52:29 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B9C8843E38A for ; Sat, 9 Apr 2022 04:52:29 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9DE51185A7A4 for ; Sat, 9 Apr 2022 04:52:29 +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-376-HzqW5fSaNWOtBReM8gOi9Q-1; Sat, 09 Apr 2022 00:52:27 -0400 X-MC-Unique: HzqW5fSaNWOtBReM8gOi9Q-1 Received: from 213-147-167-116.nat.highway.webapn.at ([213.147.167.116] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nd358-0021hI-T6; Sat, 09 Apr 2022 04:52:19 +0000 From: Christoph Hellwig To: Jens Axboe Date: Sat, 9 Apr 2022 06:50:41 +0200 Message-Id: <20220409045043.23593-26-hch@lst.de> In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-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.85 on 10.11.54.10 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 b2VobXdhbGRlckBsaW5iaXQuY29tPiBbYnRyZnNdCkFja2VkLWJ5OiBSeXVzdWtlIEtvbmlzaGkg PGtvbmlzaGkucnl1c3VrZUBnbWFpbC5jb20+CkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+IFtidHJmc10KLS0tCiBibG9jay9ibGstbGliLmMgICAgICAgICAgICAgICAg ICAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8ICA5 ICsrKysrLS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyAgfCAgMyArLS0K IGRyaXZlcnMvYmxvY2svbG9vcC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGFy Z2V0L3RhcmdldF9jb3JlX2RldmljZS5jIHwgIDMgKy0tCiBmcy9idHJmcy9pb2N0bC5jICAgICAg ICAgICAgICAgICAgICB8IDEyICsrKystLS0tLS0tLQogZnMvZXhmYXQvZmlsZS5jICAgICAgICAg ICAgICAgICAgICAgfCAgMyArLS0KIGZzL2V4dDQvbWJhbGxvYy5jICAgICAgICAgICAgICAgICAg IHwgIDYgKysrLS0tCiBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL2dmczIv cmdycC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQogZnMvamZzL2lvY3RsLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQogZnMvbnRmczMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAg fCAgNCArKy0tCiBmcy9udGZzMy9zdXBlci5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0t LQogZnMvb2NmczIvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL3hmcy94 ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDQgKystLQogaW5jbHVkZS9saW51eC9ibGtk ZXYuaCAgICAgICAgICAgICAgfCAgNSArKysrKwogMTggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxpYi5jIGIv YmxvY2svYmxrLWxpYi5jCmluZGV4IDhiNGI2NmQzYTliZmMuLjQzYWE0ZDdmZTg1OWYgMTAwNjQ0 Ci0tLSBhL2Jsb2NrL2Jsay1saWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTEyLDggKzEy LDcgQEAKIAogc3RhdGljIHNlY3Rvcl90IGJpb19kaXNjYXJkX2xpbWl0KHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcikKIHsKLQl1bnNpZ25lZCBpbnQgZGlzY2FyZF9n cmFudWxhcml0eSA9Ci0JCWJkZXZfZ2V0X3F1ZXVlKGJkZXYpLT5saW1pdHMuZGlzY2FyZF9ncmFu dWxhcml0eTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2Fy ZF9ncmFudWxhcml0eShiZGV2KTsKIAlzZWN0b3JfdCBncmFudWxhcml0eV9hbGlnbmVkX3NlY3Rv cjsKIAogCWlmIChiZGV2X2lzX3BhcnRpdGlvbihiZGV2KSkKQEAgLTU5LDcgKzU4LDcgQEAgaW50 IF9fYmxrZGV2X2lzc3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9y X3Qgc2VjdG9yLAogCX0KIAogCS8qIEluIGNhc2UgdGhlIGRpc2NhcmQgZ3JhbnVsYXJpdHkgaXNu J3Qgc2V0IGJ5IGJ1Z2d5IGRldmljZSBkcml2ZXIgKi8KLQlpZiAoV0FSTl9PTl9PTkNFKCFxLT5s aW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkpIHsKKwlpZiAoV0FSTl9PTl9PTkNFKCFiZGV2X2Rp c2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpKSB7CiAJCWNoYXIgZGV2X25hbWVbQkRFVk5BTUVfU0la RV07CiAKIAkJYmRldm5hbWUoYmRldiwgZGV2X25hbWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXgg YjU1ZTVmY2MyMWUxZi4uMGIzZTQzYmU2NDE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfbmwuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCkBAIC0xNDI1 LDcgKzE0MjUsNiBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCQkJICAgICAgIHN0cnVjdCBk cmJkX2JhY2tpbmdfZGV2ICpuYmMpCiB7CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IG5i Yy0+YmFja2luZ19iZGV2OwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldi0+YmRfZGlz ay0+cXVldWU7CiAKIAlpZiAoZGlza19jb25mLT5hbF9leHRlbnRzIDwgRFJCRF9BTF9FWFRFTlRT X01JTikKIAkJZGlza19jb25mLT5hbF9leHRlbnRzID0gRFJCRF9BTF9FWFRFTlRTX01JTjsKQEAg LTE0NDIsMTIgKzE0NDEsMTQgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVj dCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KSB7CiAJCWludCBvcmlnX3ZhbHVlID0gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzZWN0b3JfdCBkaXNjYXJkX3NpemUgPSBi ZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgPDwgOTsKKwkJdW5zaWduZWQgaW50IGRpc2Nh cmRfZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldik7CiAJCWludCBy ZW1haW5kZXI7CiAKLQkJaWYgKHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID4gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQotCQkJZGlza19jb25mLT5yc19kaXNjYXJkX2dy YW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJCWlmIChkaXNjYXJk X2dyYW51bGFyaXR5ID4gZGlza19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQorCQkJZGlz a19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5ID0gZGlzY2FyZF9ncmFudWxhcml0eTsKIAot CQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgJSBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJcmVtYWluZGVyID0gZGlza19jb25mLT5yc19kaXNj YXJkX2dyYW51bGFyaXR5ICUKKwkJCQlkaXNjYXJkX2dyYW51bGFyaXR5OwogCQlkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgKz0gcmVtYWluZGVyOwogCiAJCWlmIChkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNjYXJkX3NpemUpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf cmVjZWl2ZXIuYwppbmRleCA4YTRhNDdkYTU2ZmU5Li4yNzVjNTNjN2I2MjllIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTE1MTEsNyArMTUxMSw2IEBAIHZvaWQgZHJiZF9idW1w X3dyaXRlX29yZGVyaW5nKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwgc3RydWN0IGRy YmRfYmFja2luCiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJk X2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMs IGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gZGV2aWNlLT5sZGV2 LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1 ZShiZGV2KTsKIAlzZWN0b3JfdCB0bXAsIG5yOwogCXVuc2lnbmVkIGludCBtYXhfZGlzY2FyZF9z ZWN0b3JzLCBncmFudWxhcml0eTsKIAlpbnQgYWxpZ25tZW50OwpAQCAtMTUyMSw3ICsxNTIwLDcg QEAgaW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2Ug KmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsIHUKIAkJZ290byB6ZXJvX291dDsKIAogCS8qIFplcm8t c2VjdG9yICh1bmtub3duKSBhbmQgb25lLXNlY3RvciBncmFudWxhcml0aWVzIGFyZSB0aGUgc2Ft ZS4gICovCi0JZ3JhbnVsYXJpdHkgPSBtYXgocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg Pj4gOSwgMVUpOworCWdyYW51bGFyaXR5ID0gbWF4KGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShi ZGV2KSA+PiA5LCAxVSk7CiAJYWxpZ25tZW50ID0gKGJkZXZfZGlzY2FyZF9hbGlnbm1lbnQoYmRl dikgPj4gOSkgJSBncmFudWxhcml0eTsKIAogCW1heF9kaXNjYXJkX3NlY3RvcnMgPSBtaW4oYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpLCAoMVUgPDwgMjIpKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMGUwNjFjOTg5 NmVmZi4uOTc2Y2Y5ODdiMzkyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKKysr IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBzdGF0aWMgdm9pZCBs b29wX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pCiAJCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpiYWNraW5ncSA9IGJkZXZfZ2V0X3F1ZXVlKElfQkRFVihpbm9kZSkpOwogCiAJ CW1heF9kaXNjYXJkX3NlY3RvcnMgPSBiYWNraW5ncS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNf c2VjdG9yczsKLQkJZ3JhbnVsYXJpdHkgPSBiYWNraW5ncS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkgPzoKKwkJZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoSV9CREVW KGlub2RlKSkgPzoKIAkJCXF1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYmFja2luZ3EpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKaW5kZXggNmNiOWY4Nzg0MzI3OC4uMjVm MzNlYjI1MzM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNl LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKQEAgLTgzNSw3ICs4 MzUsNiBAQCBzdHJ1Y3Qgc2VfZGV2aWNlICp0YXJnZXRfYWxsb2NfZGV2aWNlKHN0cnVjdCBzZV9o YmEgKmhiYSwgY29uc3QgY2hhciAqbmFtZSkKIGJvb2wgdGFyZ2V0X2NvbmZpZ3VyZV91bm1hcF9m cm9tX3F1ZXVlKHN0cnVjdCBzZV9kZXZfYXR0cmliICphdHRyaWIsCiAJCQkJICAgICAgIHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2 X2dldF9xdWV1ZShiZGV2KTsKIAlpbnQgYmxvY2tfc2l6ZSA9IGJkZXZfbG9naWNhbF9ibG9ja19z aXplKGJkZXYpOwogCiAJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpCkBAIC04 NDcsNyArODQ2LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3Ry dWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkgKiBDdXJyZW50bHkgaGFyZGNvZGVkIHRvIDEg aW4gTGludXgvU0NTSSBjb2RlLi4KIAkgKi8KIAlhdHRyaWItPm1heF91bm1hcF9ibG9ja19kZXNj X2NvdW50ID0gMTsKLQlhdHRyaWItPnVubWFwX2dyYW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2Nh cmRfZ3JhbnVsYXJpdHkgLyBibG9ja19zaXplOworCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkg PSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikgLyBibG9ja19zaXplOwogCWF0dHJpYi0+ dW5tYXBfZ3JhbnVsYXJpdHlfYWxpZ25tZW50ID0KIAkJYmRldl9kaXNjYXJkX2FsaWdubWVudChi ZGV2KSAvIGJsb2NrX3NpemU7CiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9p b2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCAwOTZiYjBkYTAzZjFjLi43MDc2NWQ1OTYx NmE1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMK QEAgLTQ2OCw3ICs0NjgsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJp bShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCQkJdm9pZCBfX3VzZXIgKmFyZykK IHsKIAlzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUg KnE7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAl1NjQgbWlubGVuID0gVUxMT05HX01B WDsKIAl1NjQgbnVtX2RldmljZXMgPSAwOwpAQCAtNDk4LDE0ICs0OTcsMTEgQEAgc3RhdGljIG5v aW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2lu Zm8sCiAJcmN1X3JlYWRfbG9jaygpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRldmljZSwg JmZzX2luZm8tPmZzX2RldmljZXMtPmRldmljZXMsCiAJCQkJZGV2X2xpc3QpIHsKLQkJaWYgKCFk ZXZpY2UtPmJkZXYpCisJCWlmICghZGV2aWNlLT5iZGV2IHx8ICFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoZGV2aWNlLT5iZGV2KSkKIAkJCWNvbnRpbnVlOwotCQlxID0gYmRldl9nZXRfcXVldWUo ZGV2aWNlLT5iZGV2KTsKLQkJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJk ZXYpKSB7Ci0JCQludW1fZGV2aWNlcysrOwotCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSwKLQkJCQkgICAgIG1pbmxlbik7Ci0JCX0KKwkJbnVtX2Rl dmljZXMrKzsKKwkJbWlubGVuID0gbWluX3QodTY0LCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHko ZGV2aWNlLT5iZGV2KSwKKwkJCQkgICAgbWlubGVuKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7 CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA3 NjVlNGY2M2RkMThkLi4yMGQ0ZTQ3ZjU3YWIyIDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMK KysrIGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0zNTEsNyArMzUxLDYgQEAgaW50IGV4ZmF0X3NldGF0 dHIoc3RydWN0IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCiAKIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUoaW5vZGUtPmlfc2ItPnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5n ZTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRf aW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQly ZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFu Z2UubWlubGVuLAotCQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCQliZGV2 X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoaW5vZGUtPmlfc2ItPnNfYmRldikpOwogCiAJcmV0ID0gZXhm YXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2Zz L2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFsbG9jLmMKaW5kZXggYzM2NjhjOTc3Y2Q5OS4u NmQxODIwNTM2ZDg4ZCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0 NC9tYmFsbG9jLmMKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIGV4dDRfdHJpbV9hbGxfZnJlZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JvdXAsCiAgKi8KIGludCBleHQ0X3Ry aW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJpbV9yYW5nZSAqcmFuZ2Up CiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFu dWxhcml0eShzYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZXh0NF9ncm91cF9pbmZvICpncnA7CiAJZXh0 NF9ncm91cF90IGdyb3VwLCBmaXJzdF9ncm91cCwgbGFzdF9ncm91cDsKIAlleHQ0X2dycGJsa190 IGNudCA9IDAsIGZpcnN0X2NsdXN0ZXIsIGxhc3RfY2x1c3RlcjsKQEAgLTY0NzUsOSArNjQ3NSw5 IEBAIGludCBleHQ0X3RyaW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJp bV9yYW5nZSAqcmFuZ2UpCiAJICAgIHJhbmdlLT5sZW4gPCBzYi0+c19ibG9ja3NpemUpCiAJCXJl dHVybiAtRUlOVkFMOwogCS8qIE5vIHBvaW50IHRvIHRyeSB0byB0cmltIGxlc3MgdGhhbiBkaXNj YXJkIGdyYW51bGFyaXR5ICovCi0JaWYgKHJhbmdlLT5taW5sZW4gPCBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSkgeworCWlmIChyYW5nZS0+bWlubGVuIDwgZGlzY2FyZF9ncmFudWxhcml0 eSkgewogCQltaW5sZW4gPSBFWFQ0X05VTV9CMkMoRVhUNF9TQihzYiksCi0JCQlxLT5saW1pdHMu ZGlzY2FyZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CisJCQkJZGlzY2Fy ZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CiAJCWlmIChtaW5sZW4gPiBF WFQ0X0NMVVNURVJTX1BFUl9HUk9VUChzYikpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQg YS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCmluZGV4IDViODlhZjBmMjdmMDUuLjgw NTNkOTlmMzkyMGIgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZmlsZS5jCisrKyBiL2ZzL2YyZnMvZmls ZS5jCkBAIC0yMjg1LDcgKzIyODUsNiBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5p X3NiOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRl dik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBAIC0yMzA0LDcg KzIzMDMsNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiByZXQ7CiAKIAlyYW5nZS5taW5sZW4gPSBtYXgo KHVuc2lnbmVkIGludClyYW5nZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCQkJICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpKTsKIAly ZXQgPSBmMmZzX3RyaW1fZnMoRjJGU19TQihzYiksICZyYW5nZSk7CiAJbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9m cy9mYXQvZmlsZS5jCmluZGV4IGU0YzdkMTBlODAxMjkuLmJmOTFmOTc3ZGViZWEgMTAwNjQ0Ci0t LSBhL2ZzL2ZhdC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTI3LDcgKzEyNyw2IEBA IHN0YXRpYyBpbnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l ZCBsb25nIGFyZykKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CiAJc3Ry dWN0IGZzdHJpbV9yYW5nZSBfX3VzZXIgKnVzZXJfcmFuZ2U7CiAJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCWludCBlcnI7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0x NDEsNyArMTQwLDcgQEAgc3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQlyZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1p bmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFuZ2UubWlubGVuLAotCQkJICAgICBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSk7CisJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0 eShzYi0+c19iZGV2KSk7CiAKIAllcnIgPSBmYXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlp ZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2dmczIvcmdycC5jIGIvZnMvZ2ZzMi9yZ3JwLmMK aW5kZXggN2YyMGFjOTEzM2JjNi4uNmQyNmJiNTI1NDg0NCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9y Z3JwLmMKKysrIGIvZnMvZ2ZzMi9yZ3JwLmMKQEAgLTEzODYsNyArMTM4Niw3IEBAIGludCBnZnMy X2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIgKmFyZ3ApCiB7CiAJc3RydWN0 IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IGdmczJfc2JkICpzZHAg PSBHRlMyX1NCKGlub2RlKTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKHNkcC0+c2RfdmZzLT5zX2JkZXYpOworCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBz ZHAtPnNkX3Zmcy0+c19iZGV2OwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiAJc3RydWN0IGdm czJfcmdycGQgKnJnZDsKIAlzdHJ1Y3QgZ2ZzMl9yZ3JwZCAqcmdkX2VuZDsKQEAgLTE0MDUsNyAr MTQwNSw3IEBAIGludCBnZnMyX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIg KmFyZ3ApCiAJaWYgKCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmc2RwLT5zZF9mbGFncykp CiAJCXJldHVybiAtRVJPRlM7CiAKLQlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhzZHAt PnNkX3Zmcy0+c19iZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyLCBhcmdwLCBz aXplb2YocikpKQpAQCAtMTQxOCw4ICsxNDE4LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBm aWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlzdGFydCA9IHIuc3RhcnQgPj4gYnNfc2hp ZnQ7CiAJZW5kID0gc3RhcnQgKyAoci5sZW4gPj4gYnNfc2hpZnQpOwogCW1pbmxlbiA9IG1heF90 KHU2NCwgci5taW5sZW4sIHNkcC0+c2Rfc2Iuc2JfYnNpemUpOwotCW1pbmxlbiA9IG1heF90KHU2 NCwgbWlubGVuLAotCQkgICAgICAgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpID4+IGJz X3NoaWZ0OworCW1pbmxlbiA9IG1heF90KHU2NCwgbWlubGVuLCBiZGV2X2Rpc2NhcmRfZ3JhbnVs YXJpdHkoYmRldikpID4+IGJzX3NoaWZ0OwogCiAJaWYgKGVuZCA8PSBzdGFydCB8fCBtaW5sZW4g PiBzZHAtPnNkX21heF9yZ19kYXRhKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2Zz L2pmcy9pb2N0bC5jIGIvZnMvamZzL2lvY3RsLmMKaW5kZXggMzU3YWU2ZTVjMzZlYy4uMWU3YjE3 N2VjZTYwNSAxMDA2NDQKLS0tIGEvZnMvamZzL2lvY3RsLmMKKysrIGIvZnMvamZzL2lvY3RsLmMK QEAgLTExMCw3ICsxMTAsNiBAQCBsb25nIGpmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJY2FzZSBGSVRSSU06CiAJewogCQlz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCXN0cnVjdCBmc3RyaW1fcmFu Z2UgcmFuZ2U7CiAJCXM2NCByZXQgPSAwOwogCkBAIC0xMjcsNyArMTI2LDcgQEAgbG9uZyBqZnNf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKIAkJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWdu ZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSk7 CisJCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCiAJCXJl dCA9IGpmc19pb2NfdHJpbShpbm9kZSwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1n aXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmluZGV4IDUyYjczZjU1 OGZjYjEuLjg3ZTEwMDRiNjA2ZDIgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9pb2N0bC5jCisrKyBi L2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDUyLDcgKzEwNTIsNiBAQCBzdGF0aWMgaW50IG5pbGZz X2lvY3RsX3Jlc2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKIHN0 YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9f dXNlciAqYXJncCkKIHsKIAlzdHJ1Y3QgdGhlX25pbGZzICpuaWxmcyA9IGlub2RlLT5pX3NiLT5z X2ZzX2luZm87Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShuaWxm cy0+bnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBA IC0xMDY1LDcgKzEwNjQsOCBAQCBzdGF0aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0 IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZy YW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2Uu bWlubGVuID0gbWF4X3QodTY0LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5KTsKKwlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwKKwkJCSAg ICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG5pbGZzLT5uc19iZGV2KSk7CiAKIAlkb3duX3Jl YWQoJm5pbGZzLT5uc19zZWdjdG9yX3NlbSk7CiAJcmV0ID0gbmlsZnNfc3VmaWxlX3RyaW1fZnMo bmlsZnMtPm5zX3N1ZmlsZSwgJnJhbmdlKTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL2ZpbGUuYyBi L2ZzL250ZnMzL2ZpbGUuYwppbmRleCBlNzYzMjM2MTY5MzMxLi4xNTgwNmVlYWUyMTdhIDEwMDY0 NAotLS0gYS9mcy9udGZzMy9maWxlLmMKKysrIGIvZnMvbnRmczMvZmlsZS5jCkBAIC0yMiw3ICsy Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAq c2JpLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAq dXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2JpLT5zYi0+c19iZGV2KTsKIAlpbnQgZXJyOwog CiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQpAQCAtMzUsNyArMzQsOCBAQCBzdGF0aWMg aW50IG50ZnNfaW9jdGxfZml0cmltKHN0cnVjdCBudGZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQg bG9uZyBhcmcpCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgdXNlcl9yYW5nZSwgc2l6ZW9m KHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2UubWlubGVuID0gbWF4X3QodTMy LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1MzIsIHJhbmdlLm1pbmxlbiwKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dy YW51bGFyaXR5KHNiaS0+c2ItPnNfYmRldikpOwogCiAJZXJyID0gbnRmc190cmltX2ZzKHNiaSwg JnJhbmdlKTsKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9m cy9udGZzMy9zdXBlci5jCmluZGV4IGM3MzQwODViY2NlNGEuLjVmMmU0MTRjZmE3OWIgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtODgyLDcg Kzg4Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpbnQgZXJyOwogCXN0cnVjdCBudGZzX3NiX2lu Zm8gKnNiaSA9IHNiLT5zX2ZzX2luZm87CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNi LT5zX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnJxOwogCXN0cnVjdCBpbm9kZSAqaW5v ZGU7CiAJc3RydWN0IG50ZnNfaW5vZGUgKm5pOwogCXNpemVfdCBpLCB0dDsKQEAgLTkxMiw5ICs5 MTEsOCBAQCBzdGF0aWMgaW50IG50ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWdvdG8gb3V0OwogCX0KIAotCXJxID0gYmRldl9n ZXRfcXVldWUoYmRldik7Ci0JaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBy cS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKLQkJc2JpLT5kaXNjYXJkX2dyYW51bGFy aXR5ID0gcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCWlmIChiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikgJiYgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYpKSB7CisJ CXNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2 KTsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5X21hc2tfaW52ID0KIAkJCX4odTY0KShzYmkt PmRpc2NhcmRfZ3JhbnVsYXJpdHkgLSAxKTsKIAl9CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9pb2N0 bC5jIGIvZnMvb2NmczIvaW9jdGwuYwppbmRleCA5Yjc4ZWYxMDNhZGE2Li5hZmQ1NGVjNjYxMDMw IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9pb2N0bC5jCisrKyBiL2ZzL29jZnMyL2lvY3RsLmMKQEAg LTkwMyw3ICs5MDMsNiBAQCBsb25nIG9jZnMyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJaW50IHJldCA9IDA7CiAKQEAgLTkxNiw3ICs5MTUsNyBAQCBsb25nIG9jZnMy X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n IGFyZykKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkp CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAotCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5LAorCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIGJk ZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSwKIAkJCQkgICAgIHJhbmdlLm1pbmxl bik7CiAJCXJldCA9IG9jZnMyX3RyaW1fZnMoc2IsICZyYW5nZSk7CiAJCWlmIChyZXQgPCAwKQpk aWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXNjYXJkLmMgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpp bmRleCBhNGU2NjA5ZDYxNmI3Li5lMmFkYTExNWMyM2Y5IDEwMDY0NAotLS0gYS9mcy94ZnMveGZz X2Rpc2NhcmQuYworKysgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpAQCAtMTUyLDggKzE1Miw4IEBA IHhmc19pb2NfdHJpbSgKIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCiAJc3RydWN0IGZzdHJpbV9y YW5nZSBfX3VzZXIJKnVyYW5nZSkKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZQkqcSA9IGJkZXZf Z2V0X3F1ZXVlKG1wLT5tX2RkZXZfdGFyZ3AtPmJ0X2JkZXYpOwotCXVuc2lnbmVkIGludAkJZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwl1bnNpZ25lZCBpbnQJ CWdyYW51bGFyaXR5ID0KKwkJYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG1wLT5tX2RkZXZfdGFy Z3AtPmJ0X2JkZXYpOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UJcmFuZ2U7CiAJeGZzX2RhZGRyX3QJ CXN0YXJ0LCBlbmQsIG1pbmxlbjsKIAl4ZnNfYWdudW1iZXJfdAkJc3RhcnRfYWdubywgZW5kX2Fn bm8sIGFnbm87CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9s aW51eC9ibGtkZXYuaAppbmRleCA3NjdhYjIyZTEwNTJhLi5mMWNmNTU3ZWEyMGVmIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgK QEAgLTEyNTcsNiArMTI1NywxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIAlyZXR1cm4gYmRl dl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzOwogfQogCitzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldikKK3sKKwlyZXR1cm4gYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBi ZGV2X3dyaXRlX3plcm9lc19zZWN0b3JzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCiB7CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLS0gCjIuMzAu MgoKLS0KZG0tZGV2ZWwgbWFpbGluZyBsaXN0CmRtLWRldmVsQHJlZGhhdC5jb20KaHR0cHM6Ly9s aXN0bWFuLnJlZGhhdC5jb20vbWFpbG1hbi9saXN0aW5mby9kbS1kZXZlbAo= 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 A79E1C433F5 for ; Sat, 9 Apr 2022 05:18:02 +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=xvoaTlcw4a4hV0NgKPMN+bLp3vTebpTl30JKw4MVUII=; b=XGek38mMWEmh4I eFap8op7obn0CAIZyTM6ekWPI2kHg+qmdXC//B9Y3N2fqeu9CopTi5Mb5Ufop/iD4GSjE7HvhOvRs 2HAwuG+DLz0kckamRn8EHkt/otMhTDN74CV7xhjtVH/SvT/SC80zEIMQxTQGrx+r2V7JkbcyTVLYo mNlrE/ajhn7kxsSWzKz9qLQY1TvtJt4HlQ10RI8goFNOKP291FJyG5Mn5GvNwFmKV9gQyg01ACQxA WsQki9u0LJEok7OtTpCM7JiOPS0HRlgyzqdw/kGXoyK0a8VYHvSJbGB13cZAYafXB1XADT0oi8zQa 61oSOpssYSaa/UXshcaw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nd3TG-002DnS-Go; Sat, 09 Apr 2022 05:17:14 +0000 Received: from 213-147-167-116.nat.highway.webapn.at ([213.147.167.116] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nd358-0021hI-T6; Sat, 09 Apr 2022 04:52:19 +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: Sat, 9 Apr 2022 06:50:41 +0200 Message-Id: <20220409045043.23593-26-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-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 b2VobXdhbGRlckBsaW5iaXQuY29tPiBbYnRyZnNdCkFja2VkLWJ5OiBSeXVzdWtlIEtvbmlzaGkg PGtvbmlzaGkucnl1c3VrZUBnbWFpbC5jb20+CkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+IFtidHJmc10KLS0tCiBibG9jay9ibGstbGliLmMgICAgICAgICAgICAgICAg ICAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8ICA5 ICsrKysrLS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyAgfCAgMyArLS0K IGRyaXZlcnMvYmxvY2svbG9vcC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGFy Z2V0L3RhcmdldF9jb3JlX2RldmljZS5jIHwgIDMgKy0tCiBmcy9idHJmcy9pb2N0bC5jICAgICAg ICAgICAgICAgICAgICB8IDEyICsrKystLS0tLS0tLQogZnMvZXhmYXQvZmlsZS5jICAgICAgICAg ICAgICAgICAgICAgfCAgMyArLS0KIGZzL2V4dDQvbWJhbGxvYy5jICAgICAgICAgICAgICAgICAg IHwgIDYgKysrLS0tCiBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL2dmczIv cmdycC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQogZnMvamZzL2lvY3RsLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQogZnMvbnRmczMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAg fCAgNCArKy0tCiBmcy9udGZzMy9zdXBlci5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0t LQogZnMvb2NmczIvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL3hmcy94 ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDQgKystLQogaW5jbHVkZS9saW51eC9ibGtk ZXYuaCAgICAgICAgICAgICAgfCAgNSArKysrKwogMTggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxpYi5jIGIv YmxvY2svYmxrLWxpYi5jCmluZGV4IDhiNGI2NmQzYTliZmMuLjQzYWE0ZDdmZTg1OWYgMTAwNjQ0 Ci0tLSBhL2Jsb2NrL2Jsay1saWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTEyLDggKzEy LDcgQEAKIAogc3RhdGljIHNlY3Rvcl90IGJpb19kaXNjYXJkX2xpbWl0KHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcikKIHsKLQl1bnNpZ25lZCBpbnQgZGlzY2FyZF9n cmFudWxhcml0eSA9Ci0JCWJkZXZfZ2V0X3F1ZXVlKGJkZXYpLT5saW1pdHMuZGlzY2FyZF9ncmFu dWxhcml0eTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2Fy ZF9ncmFudWxhcml0eShiZGV2KTsKIAlzZWN0b3JfdCBncmFudWxhcml0eV9hbGlnbmVkX3NlY3Rv cjsKIAogCWlmIChiZGV2X2lzX3BhcnRpdGlvbihiZGV2KSkKQEAgLTU5LDcgKzU4LDcgQEAgaW50 IF9fYmxrZGV2X2lzc3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9y X3Qgc2VjdG9yLAogCX0KIAogCS8qIEluIGNhc2UgdGhlIGRpc2NhcmQgZ3JhbnVsYXJpdHkgaXNu J3Qgc2V0IGJ5IGJ1Z2d5IGRldmljZSBkcml2ZXIgKi8KLQlpZiAoV0FSTl9PTl9PTkNFKCFxLT5s aW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkpIHsKKwlpZiAoV0FSTl9PTl9PTkNFKCFiZGV2X2Rp c2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpKSB7CiAJCWNoYXIgZGV2X25hbWVbQkRFVk5BTUVfU0la RV07CiAKIAkJYmRldm5hbWUoYmRldiwgZGV2X25hbWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXgg YjU1ZTVmY2MyMWUxZi4uMGIzZTQzYmU2NDE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfbmwuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCkBAIC0xNDI1 LDcgKzE0MjUsNiBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCQkJICAgICAgIHN0cnVjdCBk cmJkX2JhY2tpbmdfZGV2ICpuYmMpCiB7CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IG5i Yy0+YmFja2luZ19iZGV2OwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldi0+YmRfZGlz ay0+cXVldWU7CiAKIAlpZiAoZGlza19jb25mLT5hbF9leHRlbnRzIDwgRFJCRF9BTF9FWFRFTlRT X01JTikKIAkJZGlza19jb25mLT5hbF9leHRlbnRzID0gRFJCRF9BTF9FWFRFTlRTX01JTjsKQEAg LTE0NDIsMTIgKzE0NDEsMTQgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVj dCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KSB7CiAJCWludCBvcmlnX3ZhbHVlID0gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzZWN0b3JfdCBkaXNjYXJkX3NpemUgPSBi ZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgPDwgOTsKKwkJdW5zaWduZWQgaW50IGRpc2Nh cmRfZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldik7CiAJCWludCBy ZW1haW5kZXI7CiAKLQkJaWYgKHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID4gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQotCQkJZGlza19jb25mLT5yc19kaXNjYXJkX2dy YW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJCWlmIChkaXNjYXJk X2dyYW51bGFyaXR5ID4gZGlza19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQorCQkJZGlz a19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5ID0gZGlzY2FyZF9ncmFudWxhcml0eTsKIAot CQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgJSBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJcmVtYWluZGVyID0gZGlza19jb25mLT5yc19kaXNj YXJkX2dyYW51bGFyaXR5ICUKKwkJCQlkaXNjYXJkX2dyYW51bGFyaXR5OwogCQlkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgKz0gcmVtYWluZGVyOwogCiAJCWlmIChkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNjYXJkX3NpemUpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf cmVjZWl2ZXIuYwppbmRleCA4YTRhNDdkYTU2ZmU5Li4yNzVjNTNjN2I2MjllIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTE1MTEsNyArMTUxMSw2IEBAIHZvaWQgZHJiZF9idW1w X3dyaXRlX29yZGVyaW5nKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwgc3RydWN0IGRy YmRfYmFja2luCiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJk X2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMs IGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gZGV2aWNlLT5sZGV2 LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1 ZShiZGV2KTsKIAlzZWN0b3JfdCB0bXAsIG5yOwogCXVuc2lnbmVkIGludCBtYXhfZGlzY2FyZF9z ZWN0b3JzLCBncmFudWxhcml0eTsKIAlpbnQgYWxpZ25tZW50OwpAQCAtMTUyMSw3ICsxNTIwLDcg QEAgaW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2Ug KmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsIHUKIAkJZ290byB6ZXJvX291dDsKIAogCS8qIFplcm8t c2VjdG9yICh1bmtub3duKSBhbmQgb25lLXNlY3RvciBncmFudWxhcml0aWVzIGFyZSB0aGUgc2Ft ZS4gICovCi0JZ3JhbnVsYXJpdHkgPSBtYXgocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg Pj4gOSwgMVUpOworCWdyYW51bGFyaXR5ID0gbWF4KGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShi ZGV2KSA+PiA5LCAxVSk7CiAJYWxpZ25tZW50ID0gKGJkZXZfZGlzY2FyZF9hbGlnbm1lbnQoYmRl dikgPj4gOSkgJSBncmFudWxhcml0eTsKIAogCW1heF9kaXNjYXJkX3NlY3RvcnMgPSBtaW4oYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpLCAoMVUgPDwgMjIpKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMGUwNjFjOTg5 NmVmZi4uOTc2Y2Y5ODdiMzkyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKKysr IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBzdGF0aWMgdm9pZCBs b29wX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pCiAJCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpiYWNraW5ncSA9IGJkZXZfZ2V0X3F1ZXVlKElfQkRFVihpbm9kZSkpOwogCiAJ CW1heF9kaXNjYXJkX3NlY3RvcnMgPSBiYWNraW5ncS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNf c2VjdG9yczsKLQkJZ3JhbnVsYXJpdHkgPSBiYWNraW5ncS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkgPzoKKwkJZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoSV9CREVW KGlub2RlKSkgPzoKIAkJCXF1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYmFja2luZ3EpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKaW5kZXggNmNiOWY4Nzg0MzI3OC4uMjVm MzNlYjI1MzM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNl LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKQEAgLTgzNSw3ICs4 MzUsNiBAQCBzdHJ1Y3Qgc2VfZGV2aWNlICp0YXJnZXRfYWxsb2NfZGV2aWNlKHN0cnVjdCBzZV9o YmEgKmhiYSwgY29uc3QgY2hhciAqbmFtZSkKIGJvb2wgdGFyZ2V0X2NvbmZpZ3VyZV91bm1hcF9m cm9tX3F1ZXVlKHN0cnVjdCBzZV9kZXZfYXR0cmliICphdHRyaWIsCiAJCQkJICAgICAgIHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2 X2dldF9xdWV1ZShiZGV2KTsKIAlpbnQgYmxvY2tfc2l6ZSA9IGJkZXZfbG9naWNhbF9ibG9ja19z aXplKGJkZXYpOwogCiAJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpCkBAIC04 NDcsNyArODQ2LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3Ry dWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkgKiBDdXJyZW50bHkgaGFyZGNvZGVkIHRvIDEg aW4gTGludXgvU0NTSSBjb2RlLi4KIAkgKi8KIAlhdHRyaWItPm1heF91bm1hcF9ibG9ja19kZXNj X2NvdW50ID0gMTsKLQlhdHRyaWItPnVubWFwX2dyYW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2Nh cmRfZ3JhbnVsYXJpdHkgLyBibG9ja19zaXplOworCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkg PSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikgLyBibG9ja19zaXplOwogCWF0dHJpYi0+ dW5tYXBfZ3JhbnVsYXJpdHlfYWxpZ25tZW50ID0KIAkJYmRldl9kaXNjYXJkX2FsaWdubWVudChi ZGV2KSAvIGJsb2NrX3NpemU7CiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9p b2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCAwOTZiYjBkYTAzZjFjLi43MDc2NWQ1OTYx NmE1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMK QEAgLTQ2OCw3ICs0NjgsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJp bShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCQkJdm9pZCBfX3VzZXIgKmFyZykK IHsKIAlzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUg KnE7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAl1NjQgbWlubGVuID0gVUxMT05HX01B WDsKIAl1NjQgbnVtX2RldmljZXMgPSAwOwpAQCAtNDk4LDE0ICs0OTcsMTEgQEAgc3RhdGljIG5v aW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2lu Zm8sCiAJcmN1X3JlYWRfbG9jaygpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRldmljZSwg JmZzX2luZm8tPmZzX2RldmljZXMtPmRldmljZXMsCiAJCQkJZGV2X2xpc3QpIHsKLQkJaWYgKCFk ZXZpY2UtPmJkZXYpCisJCWlmICghZGV2aWNlLT5iZGV2IHx8ICFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoZGV2aWNlLT5iZGV2KSkKIAkJCWNvbnRpbnVlOwotCQlxID0gYmRldl9nZXRfcXVldWUo ZGV2aWNlLT5iZGV2KTsKLQkJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJk ZXYpKSB7Ci0JCQludW1fZGV2aWNlcysrOwotCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSwKLQkJCQkgICAgIG1pbmxlbik7Ci0JCX0KKwkJbnVtX2Rl dmljZXMrKzsKKwkJbWlubGVuID0gbWluX3QodTY0LCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHko ZGV2aWNlLT5iZGV2KSwKKwkJCQkgICAgbWlubGVuKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7 CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA3 NjVlNGY2M2RkMThkLi4yMGQ0ZTQ3ZjU3YWIyIDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMK KysrIGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0zNTEsNyArMzUxLDYgQEAgaW50IGV4ZmF0X3NldGF0 dHIoc3RydWN0IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCiAKIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUoaW5vZGUtPmlfc2ItPnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5n ZTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRf aW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQly ZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFu Z2UubWlubGVuLAotCQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCQliZGV2 X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoaW5vZGUtPmlfc2ItPnNfYmRldikpOwogCiAJcmV0ID0gZXhm YXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2Zz L2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFsbG9jLmMKaW5kZXggYzM2NjhjOTc3Y2Q5OS4u NmQxODIwNTM2ZDg4ZCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0 NC9tYmFsbG9jLmMKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIGV4dDRfdHJpbV9hbGxfZnJlZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JvdXAsCiAgKi8KIGludCBleHQ0X3Ry aW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJpbV9yYW5nZSAqcmFuZ2Up CiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFu dWxhcml0eShzYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZXh0NF9ncm91cF9pbmZvICpncnA7CiAJZXh0 NF9ncm91cF90IGdyb3VwLCBmaXJzdF9ncm91cCwgbGFzdF9ncm91cDsKIAlleHQ0X2dycGJsa190 IGNudCA9IDAsIGZpcnN0X2NsdXN0ZXIsIGxhc3RfY2x1c3RlcjsKQEAgLTY0NzUsOSArNjQ3NSw5 IEBAIGludCBleHQ0X3RyaW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJp bV9yYW5nZSAqcmFuZ2UpCiAJICAgIHJhbmdlLT5sZW4gPCBzYi0+c19ibG9ja3NpemUpCiAJCXJl dHVybiAtRUlOVkFMOwogCS8qIE5vIHBvaW50IHRvIHRyeSB0byB0cmltIGxlc3MgdGhhbiBkaXNj YXJkIGdyYW51bGFyaXR5ICovCi0JaWYgKHJhbmdlLT5taW5sZW4gPCBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSkgeworCWlmIChyYW5nZS0+bWlubGVuIDwgZGlzY2FyZF9ncmFudWxhcml0 eSkgewogCQltaW5sZW4gPSBFWFQ0X05VTV9CMkMoRVhUNF9TQihzYiksCi0JCQlxLT5saW1pdHMu ZGlzY2FyZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CisJCQkJZGlzY2Fy ZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CiAJCWlmIChtaW5sZW4gPiBF WFQ0X0NMVVNURVJTX1BFUl9HUk9VUChzYikpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQg YS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCmluZGV4IDViODlhZjBmMjdmMDUuLjgw NTNkOTlmMzkyMGIgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZmlsZS5jCisrKyBiL2ZzL2YyZnMvZmls ZS5jCkBAIC0yMjg1LDcgKzIyODUsNiBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5p X3NiOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRl dik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBAIC0yMzA0LDcg KzIzMDMsNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiByZXQ7CiAKIAlyYW5nZS5taW5sZW4gPSBtYXgo KHVuc2lnbmVkIGludClyYW5nZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCQkJICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpKTsKIAly ZXQgPSBmMmZzX3RyaW1fZnMoRjJGU19TQihzYiksICZyYW5nZSk7CiAJbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9m cy9mYXQvZmlsZS5jCmluZGV4IGU0YzdkMTBlODAxMjkuLmJmOTFmOTc3ZGViZWEgMTAwNjQ0Ci0t LSBhL2ZzL2ZhdC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTI3LDcgKzEyNyw2IEBA IHN0YXRpYyBpbnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l ZCBsb25nIGFyZykKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CiAJc3Ry dWN0IGZzdHJpbV9yYW5nZSBfX3VzZXIgKnVzZXJfcmFuZ2U7CiAJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCWludCBlcnI7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0x NDEsNyArMTQwLDcgQEAgc3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQlyZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1p bmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFuZ2UubWlubGVuLAotCQkJICAgICBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSk7CisJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0 eShzYi0+c19iZGV2KSk7CiAKIAllcnIgPSBmYXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlp ZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2dmczIvcmdycC5jIGIvZnMvZ2ZzMi9yZ3JwLmMK aW5kZXggN2YyMGFjOTEzM2JjNi4uNmQyNmJiNTI1NDg0NCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9y Z3JwLmMKKysrIGIvZnMvZ2ZzMi9yZ3JwLmMKQEAgLTEzODYsNyArMTM4Niw3IEBAIGludCBnZnMy X2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIgKmFyZ3ApCiB7CiAJc3RydWN0 IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IGdmczJfc2JkICpzZHAg PSBHRlMyX1NCKGlub2RlKTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKHNkcC0+c2RfdmZzLT5zX2JkZXYpOworCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBz ZHAtPnNkX3Zmcy0+c19iZGV2OwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiAJc3RydWN0IGdm czJfcmdycGQgKnJnZDsKIAlzdHJ1Y3QgZ2ZzMl9yZ3JwZCAqcmdkX2VuZDsKQEAgLTE0MDUsNyAr MTQwNSw3IEBAIGludCBnZnMyX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIg KmFyZ3ApCiAJaWYgKCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmc2RwLT5zZF9mbGFncykp CiAJCXJldHVybiAtRVJPRlM7CiAKLQlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhzZHAt PnNkX3Zmcy0+c19iZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyLCBhcmdwLCBz aXplb2YocikpKQpAQCAtMTQxOCw4ICsxNDE4LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBm aWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlzdGFydCA9IHIuc3RhcnQgPj4gYnNfc2hp ZnQ7CiAJZW5kID0gc3RhcnQgKyAoci5sZW4gPj4gYnNfc2hpZnQpOwogCW1pbmxlbiA9IG1heF90 KHU2NCwgci5taW5sZW4sIHNkcC0+c2Rfc2Iuc2JfYnNpemUpOwotCW1pbmxlbiA9IG1heF90KHU2 NCwgbWlubGVuLAotCQkgICAgICAgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpID4+IGJz X3NoaWZ0OworCW1pbmxlbiA9IG1heF90KHU2NCwgbWlubGVuLCBiZGV2X2Rpc2NhcmRfZ3JhbnVs YXJpdHkoYmRldikpID4+IGJzX3NoaWZ0OwogCiAJaWYgKGVuZCA8PSBzdGFydCB8fCBtaW5sZW4g PiBzZHAtPnNkX21heF9yZ19kYXRhKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2Zz L2pmcy9pb2N0bC5jIGIvZnMvamZzL2lvY3RsLmMKaW5kZXggMzU3YWU2ZTVjMzZlYy4uMWU3YjE3 N2VjZTYwNSAxMDA2NDQKLS0tIGEvZnMvamZzL2lvY3RsLmMKKysrIGIvZnMvamZzL2lvY3RsLmMK QEAgLTExMCw3ICsxMTAsNiBAQCBsb25nIGpmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJY2FzZSBGSVRSSU06CiAJewogCQlz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCXN0cnVjdCBmc3RyaW1fcmFu Z2UgcmFuZ2U7CiAJCXM2NCByZXQgPSAwOwogCkBAIC0xMjcsNyArMTI2LDcgQEAgbG9uZyBqZnNf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKIAkJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWdu ZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSk7 CisJCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCiAJCXJl dCA9IGpmc19pb2NfdHJpbShpbm9kZSwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1n aXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmluZGV4IDUyYjczZjU1 OGZjYjEuLjg3ZTEwMDRiNjA2ZDIgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9pb2N0bC5jCisrKyBi L2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDUyLDcgKzEwNTIsNiBAQCBzdGF0aWMgaW50IG5pbGZz X2lvY3RsX3Jlc2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKIHN0 YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9f dXNlciAqYXJncCkKIHsKIAlzdHJ1Y3QgdGhlX25pbGZzICpuaWxmcyA9IGlub2RlLT5pX3NiLT5z X2ZzX2luZm87Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShuaWxm cy0+bnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBA IC0xMDY1LDcgKzEwNjQsOCBAQCBzdGF0aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0 IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZy YW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2Uu bWlubGVuID0gbWF4X3QodTY0LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5KTsKKwlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwKKwkJCSAg ICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG5pbGZzLT5uc19iZGV2KSk7CiAKIAlkb3duX3Jl YWQoJm5pbGZzLT5uc19zZWdjdG9yX3NlbSk7CiAJcmV0ID0gbmlsZnNfc3VmaWxlX3RyaW1fZnMo bmlsZnMtPm5zX3N1ZmlsZSwgJnJhbmdlKTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL2ZpbGUuYyBi L2ZzL250ZnMzL2ZpbGUuYwppbmRleCBlNzYzMjM2MTY5MzMxLi4xNTgwNmVlYWUyMTdhIDEwMDY0 NAotLS0gYS9mcy9udGZzMy9maWxlLmMKKysrIGIvZnMvbnRmczMvZmlsZS5jCkBAIC0yMiw3ICsy Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAq c2JpLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAq dXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2JpLT5zYi0+c19iZGV2KTsKIAlpbnQgZXJyOwog CiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQpAQCAtMzUsNyArMzQsOCBAQCBzdGF0aWMg aW50IG50ZnNfaW9jdGxfZml0cmltKHN0cnVjdCBudGZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQg bG9uZyBhcmcpCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgdXNlcl9yYW5nZSwgc2l6ZW9m KHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2UubWlubGVuID0gbWF4X3QodTMy LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1MzIsIHJhbmdlLm1pbmxlbiwKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dy YW51bGFyaXR5KHNiaS0+c2ItPnNfYmRldikpOwogCiAJZXJyID0gbnRmc190cmltX2ZzKHNiaSwg JnJhbmdlKTsKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9m cy9udGZzMy9zdXBlci5jCmluZGV4IGM3MzQwODViY2NlNGEuLjVmMmU0MTRjZmE3OWIgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtODgyLDcg Kzg4Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpbnQgZXJyOwogCXN0cnVjdCBudGZzX3NiX2lu Zm8gKnNiaSA9IHNiLT5zX2ZzX2luZm87CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNi LT5zX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnJxOwogCXN0cnVjdCBpbm9kZSAqaW5v ZGU7CiAJc3RydWN0IG50ZnNfaW5vZGUgKm5pOwogCXNpemVfdCBpLCB0dDsKQEAgLTkxMiw5ICs5 MTEsOCBAQCBzdGF0aWMgaW50IG50ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWdvdG8gb3V0OwogCX0KIAotCXJxID0gYmRldl9n ZXRfcXVldWUoYmRldik7Ci0JaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBy cS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKLQkJc2JpLT5kaXNjYXJkX2dyYW51bGFy aXR5ID0gcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCWlmIChiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikgJiYgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYpKSB7CisJ CXNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2 KTsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5X21hc2tfaW52ID0KIAkJCX4odTY0KShzYmkt PmRpc2NhcmRfZ3JhbnVsYXJpdHkgLSAxKTsKIAl9CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9pb2N0 bC5jIGIvZnMvb2NmczIvaW9jdGwuYwppbmRleCA5Yjc4ZWYxMDNhZGE2Li5hZmQ1NGVjNjYxMDMw IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9pb2N0bC5jCisrKyBiL2ZzL29jZnMyL2lvY3RsLmMKQEAg LTkwMyw3ICs5MDMsNiBAQCBsb25nIG9jZnMyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJaW50IHJldCA9IDA7CiAKQEAgLTkxNiw3ICs5MTUsNyBAQCBsb25nIG9jZnMy X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n IGFyZykKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkp CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAotCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5LAorCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIGJk ZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSwKIAkJCQkgICAgIHJhbmdlLm1pbmxl bik7CiAJCXJldCA9IG9jZnMyX3RyaW1fZnMoc2IsICZyYW5nZSk7CiAJCWlmIChyZXQgPCAwKQpk aWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXNjYXJkLmMgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpp bmRleCBhNGU2NjA5ZDYxNmI3Li5lMmFkYTExNWMyM2Y5IDEwMDY0NAotLS0gYS9mcy94ZnMveGZz X2Rpc2NhcmQuYworKysgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpAQCAtMTUyLDggKzE1Miw4IEBA IHhmc19pb2NfdHJpbSgKIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCiAJc3RydWN0IGZzdHJpbV9y YW5nZSBfX3VzZXIJKnVyYW5nZSkKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZQkqcSA9IGJkZXZf Z2V0X3F1ZXVlKG1wLT5tX2RkZXZfdGFyZ3AtPmJ0X2JkZXYpOwotCXVuc2lnbmVkIGludAkJZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwl1bnNpZ25lZCBpbnQJ CWdyYW51bGFyaXR5ID0KKwkJYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG1wLT5tX2RkZXZfdGFy Z3AtPmJ0X2JkZXYpOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UJcmFuZ2U7CiAJeGZzX2RhZGRyX3QJ CXN0YXJ0LCBlbmQsIG1pbmxlbjsKIAl4ZnNfYWdudW1iZXJfdAkJc3RhcnRfYWdubywgZW5kX2Fn bm8sIGFnbm87CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9s aW51eC9ibGtkZXYuaAppbmRleCA3NjdhYjIyZTEwNTJhLi5mMWNmNTU3ZWEyMGVmIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgK QEAgLTEyNTcsNiArMTI1NywxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIAlyZXR1cm4gYmRl dl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzOwogfQogCitzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldikKK3sKKwlyZXR1cm4gYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBi ZGV2X3dyaXRlX3plcm9lc19zZWN0b3JzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCiB7CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLS0gCjIuMzAu MgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg== 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: Sat, 9 Apr 2022 06:50:41 +0200 Message-Id: <20220409045043.23593-26-hch@lst.de> In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-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 b2VobXdhbGRlckBsaW5iaXQuY29tPiBbYnRyZnNdCkFja2VkLWJ5OiBSeXVzdWtlIEtvbmlzaGkg PGtvbmlzaGkucnl1c3VrZUBnbWFpbC5jb20+CkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+IFtidHJmc10KLS0tCiBibG9jay9ibGstbGliLmMgICAgICAgICAgICAgICAg ICAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8ICA5 ICsrKysrLS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyAgfCAgMyArLS0K IGRyaXZlcnMvYmxvY2svbG9vcC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGFy Z2V0L3RhcmdldF9jb3JlX2RldmljZS5jIHwgIDMgKy0tCiBmcy9idHJmcy9pb2N0bC5jICAgICAg ICAgICAgICAgICAgICB8IDEyICsrKystLS0tLS0tLQogZnMvZXhmYXQvZmlsZS5jICAgICAgICAg ICAgICAgICAgICAgfCAgMyArLS0KIGZzL2V4dDQvbWJhbGxvYy5jICAgICAgICAgICAgICAgICAg IHwgIDYgKysrLS0tCiBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL2dmczIv cmdycC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQogZnMvamZzL2lvY3RsLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQogZnMvbnRmczMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAg fCAgNCArKy0tCiBmcy9udGZzMy9zdXBlci5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0t LQogZnMvb2NmczIvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL3hmcy94 ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDQgKystLQogaW5jbHVkZS9saW51eC9ibGtk ZXYuaCAgICAgICAgICAgICAgfCAgNSArKysrKwogMTggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxpYi5jIGIv YmxvY2svYmxrLWxpYi5jCmluZGV4IDhiNGI2NmQzYTliZmMuLjQzYWE0ZDdmZTg1OWYgMTAwNjQ0 Ci0tLSBhL2Jsb2NrL2Jsay1saWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTEyLDggKzEy LDcgQEAKIAogc3RhdGljIHNlY3Rvcl90IGJpb19kaXNjYXJkX2xpbWl0KHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcikKIHsKLQl1bnNpZ25lZCBpbnQgZGlzY2FyZF9n cmFudWxhcml0eSA9Ci0JCWJkZXZfZ2V0X3F1ZXVlKGJkZXYpLT5saW1pdHMuZGlzY2FyZF9ncmFu dWxhcml0eTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2Fy ZF9ncmFudWxhcml0eShiZGV2KTsKIAlzZWN0b3JfdCBncmFudWxhcml0eV9hbGlnbmVkX3NlY3Rv cjsKIAogCWlmIChiZGV2X2lzX3BhcnRpdGlvbihiZGV2KSkKQEAgLTU5LDcgKzU4LDcgQEAgaW50 IF9fYmxrZGV2X2lzc3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9y X3Qgc2VjdG9yLAogCX0KIAogCS8qIEluIGNhc2UgdGhlIGRpc2NhcmQgZ3JhbnVsYXJpdHkgaXNu J3Qgc2V0IGJ5IGJ1Z2d5IGRldmljZSBkcml2ZXIgKi8KLQlpZiAoV0FSTl9PTl9PTkNFKCFxLT5s aW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkpIHsKKwlpZiAoV0FSTl9PTl9PTkNFKCFiZGV2X2Rp c2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpKSB7CiAJCWNoYXIgZGV2X25hbWVbQkRFVk5BTUVfU0la RV07CiAKIAkJYmRldm5hbWUoYmRldiwgZGV2X25hbWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXgg YjU1ZTVmY2MyMWUxZi4uMGIzZTQzYmU2NDE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfbmwuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCkBAIC0xNDI1 LDcgKzE0MjUsNiBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCQkJICAgICAgIHN0cnVjdCBk cmJkX2JhY2tpbmdfZGV2ICpuYmMpCiB7CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IG5i Yy0+YmFja2luZ19iZGV2OwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldi0+YmRfZGlz ay0+cXVldWU7CiAKIAlpZiAoZGlza19jb25mLT5hbF9leHRlbnRzIDwgRFJCRF9BTF9FWFRFTlRT X01JTikKIAkJZGlza19jb25mLT5hbF9leHRlbnRzID0gRFJCRF9BTF9FWFRFTlRTX01JTjsKQEAg LTE0NDIsMTIgKzE0NDEsMTQgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVj dCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KSB7CiAJCWludCBvcmlnX3ZhbHVlID0gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzZWN0b3JfdCBkaXNjYXJkX3NpemUgPSBi ZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgPDwgOTsKKwkJdW5zaWduZWQgaW50IGRpc2Nh cmRfZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldik7CiAJCWludCBy ZW1haW5kZXI7CiAKLQkJaWYgKHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID4gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQotCQkJZGlza19jb25mLT5yc19kaXNjYXJkX2dy YW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJCWlmIChkaXNjYXJk X2dyYW51bGFyaXR5ID4gZGlza19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQorCQkJZGlz a19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5ID0gZGlzY2FyZF9ncmFudWxhcml0eTsKIAot CQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgJSBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJcmVtYWluZGVyID0gZGlza19jb25mLT5yc19kaXNj YXJkX2dyYW51bGFyaXR5ICUKKwkJCQlkaXNjYXJkX2dyYW51bGFyaXR5OwogCQlkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgKz0gcmVtYWluZGVyOwogCiAJCWlmIChkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNjYXJkX3NpemUpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf cmVjZWl2ZXIuYwppbmRleCA4YTRhNDdkYTU2ZmU5Li4yNzVjNTNjN2I2MjllIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTE1MTEsNyArMTUxMSw2IEBAIHZvaWQgZHJiZF9idW1w X3dyaXRlX29yZGVyaW5nKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwgc3RydWN0IGRy YmRfYmFja2luCiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJk X2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMs IGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gZGV2aWNlLT5sZGV2 LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1 ZShiZGV2KTsKIAlzZWN0b3JfdCB0bXAsIG5yOwogCXVuc2lnbmVkIGludCBtYXhfZGlzY2FyZF9z ZWN0b3JzLCBncmFudWxhcml0eTsKIAlpbnQgYWxpZ25tZW50OwpAQCAtMTUyMSw3ICsxNTIwLDcg QEAgaW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2Ug KmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsIHUKIAkJZ290byB6ZXJvX291dDsKIAogCS8qIFplcm8t c2VjdG9yICh1bmtub3duKSBhbmQgb25lLXNlY3RvciBncmFudWxhcml0aWVzIGFyZSB0aGUgc2Ft ZS4gICovCi0JZ3JhbnVsYXJpdHkgPSBtYXgocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg Pj4gOSwgMVUpOworCWdyYW51bGFyaXR5ID0gbWF4KGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShi ZGV2KSA+PiA5LCAxVSk7CiAJYWxpZ25tZW50ID0gKGJkZXZfZGlzY2FyZF9hbGlnbm1lbnQoYmRl dikgPj4gOSkgJSBncmFudWxhcml0eTsKIAogCW1heF9kaXNjYXJkX3NlY3RvcnMgPSBtaW4oYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpLCAoMVUgPDwgMjIpKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMGUwNjFjOTg5 NmVmZi4uOTc2Y2Y5ODdiMzkyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKKysr IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBzdGF0aWMgdm9pZCBs b29wX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pCiAJCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpiYWNraW5ncSA9IGJkZXZfZ2V0X3F1ZXVlKElfQkRFVihpbm9kZSkpOwogCiAJ CW1heF9kaXNjYXJkX3NlY3RvcnMgPSBiYWNraW5ncS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNf c2VjdG9yczsKLQkJZ3JhbnVsYXJpdHkgPSBiYWNraW5ncS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkgPzoKKwkJZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoSV9CREVW KGlub2RlKSkgPzoKIAkJCXF1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYmFja2luZ3EpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKaW5kZXggNmNiOWY4Nzg0MzI3OC4uMjVm MzNlYjI1MzM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNl LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKQEAgLTgzNSw3ICs4 MzUsNiBAQCBzdHJ1Y3Qgc2VfZGV2aWNlICp0YXJnZXRfYWxsb2NfZGV2aWNlKHN0cnVjdCBzZV9o YmEgKmhiYSwgY29uc3QgY2hhciAqbmFtZSkKIGJvb2wgdGFyZ2V0X2NvbmZpZ3VyZV91bm1hcF9m cm9tX3F1ZXVlKHN0cnVjdCBzZV9kZXZfYXR0cmliICphdHRyaWIsCiAJCQkJICAgICAgIHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2 X2dldF9xdWV1ZShiZGV2KTsKIAlpbnQgYmxvY2tfc2l6ZSA9IGJkZXZfbG9naWNhbF9ibG9ja19z aXplKGJkZXYpOwogCiAJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpCkBAIC04 NDcsNyArODQ2LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3Ry dWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkgKiBDdXJyZW50bHkgaGFyZGNvZGVkIHRvIDEg aW4gTGludXgvU0NTSSBjb2RlLi4KIAkgKi8KIAlhdHRyaWItPm1heF91bm1hcF9ibG9ja19kZXNj X2NvdW50ID0gMTsKLQlhdHRyaWItPnVubWFwX2dyYW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2Nh cmRfZ3JhbnVsYXJpdHkgLyBibG9ja19zaXplOworCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkg PSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikgLyBibG9ja19zaXplOwogCWF0dHJpYi0+ dW5tYXBfZ3JhbnVsYXJpdHlfYWxpZ25tZW50ID0KIAkJYmRldl9kaXNjYXJkX2FsaWdubWVudChi ZGV2KSAvIGJsb2NrX3NpemU7CiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9p b2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCAwOTZiYjBkYTAzZjFjLi43MDc2NWQ1OTYx NmE1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMK QEAgLTQ2OCw3ICs0NjgsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJp bShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCQkJdm9pZCBfX3VzZXIgKmFyZykK IHsKIAlzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUg KnE7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAl1NjQgbWlubGVuID0gVUxMT05HX01B WDsKIAl1NjQgbnVtX2RldmljZXMgPSAwOwpAQCAtNDk4LDE0ICs0OTcsMTEgQEAgc3RhdGljIG5v aW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2lu Zm8sCiAJcmN1X3JlYWRfbG9jaygpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRldmljZSwg JmZzX2luZm8tPmZzX2RldmljZXMtPmRldmljZXMsCiAJCQkJZGV2X2xpc3QpIHsKLQkJaWYgKCFk ZXZpY2UtPmJkZXYpCisJCWlmICghZGV2aWNlLT5iZGV2IHx8ICFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoZGV2aWNlLT5iZGV2KSkKIAkJCWNvbnRpbnVlOwotCQlxID0gYmRldl9nZXRfcXVldWUo ZGV2aWNlLT5iZGV2KTsKLQkJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJk ZXYpKSB7Ci0JCQludW1fZGV2aWNlcysrOwotCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSwKLQkJCQkgICAgIG1pbmxlbik7Ci0JCX0KKwkJbnVtX2Rl dmljZXMrKzsKKwkJbWlubGVuID0gbWluX3QodTY0LCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHko ZGV2aWNlLT5iZGV2KSwKKwkJCQkgICAgbWlubGVuKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7 CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA3 NjVlNGY2M2RkMThkLi4yMGQ0ZTQ3ZjU3YWIyIDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMK KysrIGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0zNTEsNyArMzUxLDYgQEAgaW50IGV4ZmF0X3NldGF0 dHIoc3RydWN0IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCiAKIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUoaW5vZGUtPmlfc2ItPnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5n ZTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRf aW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQly ZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFu Z2UubWlubGVuLAotCQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCQliZGV2 X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoaW5vZGUtPmlfc2ItPnNfYmRldikpOwogCiAJcmV0ID0gZXhm YXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2Zz L2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFsbG9jLmMKaW5kZXggYzM2NjhjOTc3Y2Q5OS4u NmQxODIwNTM2ZDg4ZCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0 NC9tYmFsbG9jLmMKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIGV4dDRfdHJpbV9hbGxfZnJlZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JvdXAsCiAgKi8KIGludCBleHQ0X3Ry aW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJpbV9yYW5nZSAqcmFuZ2Up CiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFu dWxhcml0eShzYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZXh0NF9ncm91cF9pbmZvICpncnA7CiAJZXh0 NF9ncm91cF90IGdyb3VwLCBmaXJzdF9ncm91cCwgbGFzdF9ncm91cDsKIAlleHQ0X2dycGJsa190 IGNudCA9IDAsIGZpcnN0X2NsdXN0ZXIsIGxhc3RfY2x1c3RlcjsKQEAgLTY0NzUsOSArNjQ3NSw5 IEBAIGludCBleHQ0X3RyaW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJp bV9yYW5nZSAqcmFuZ2UpCiAJICAgIHJhbmdlLT5sZW4gPCBzYi0+c19ibG9ja3NpemUpCiAJCXJl dHVybiAtRUlOVkFMOwogCS8qIE5vIHBvaW50IHRvIHRyeSB0byB0cmltIGxlc3MgdGhhbiBkaXNj YXJkIGdyYW51bGFyaXR5ICovCi0JaWYgKHJhbmdlLT5taW5sZW4gPCBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSkgeworCWlmIChyYW5nZS0+bWlubGVuIDwgZGlzY2FyZF9ncmFudWxhcml0 eSkgewogCQltaW5sZW4gPSBFWFQ0X05VTV9CMkMoRVhUNF9TQihzYiksCi0JCQlxLT5saW1pdHMu ZGlzY2FyZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CisJCQkJZGlzY2Fy ZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CiAJCWlmIChtaW5sZW4gPiBF WFQ0X0NMVVNURVJTX1BFUl9HUk9VUChzYikpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQg YS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCmluZGV4IDViODlhZjBmMjdmMDUuLjgw NTNkOTlmMzkyMGIgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZmlsZS5jCisrKyBiL2ZzL2YyZnMvZmls ZS5jCkBAIC0yMjg1LDcgKzIyODUsNiBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5p X3NiOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRl dik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBAIC0yMzA0LDcg KzIzMDMsNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiByZXQ7CiAKIAlyYW5nZS5taW5sZW4gPSBtYXgo KHVuc2lnbmVkIGludClyYW5nZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCQkJICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpKTsKIAly ZXQgPSBmMmZzX3RyaW1fZnMoRjJGU19TQihzYiksICZyYW5nZSk7CiAJbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9m cy9mYXQvZmlsZS5jCmluZGV4IGU0YzdkMTBlODAxMjkuLmJmOTFmOTc3ZGViZWEgMTAwNjQ0Ci0t LSBhL2ZzL2ZhdC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTI3LDcgKzEyNyw2IEBA IHN0YXRpYyBpbnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l ZCBsb25nIGFyZykKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CiAJc3Ry dWN0IGZzdHJpbV9yYW5nZSBfX3VzZXIgKnVzZXJfcmFuZ2U7CiAJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCWludCBlcnI7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0x NDEsNyArMTQwLDcgQEAgc3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQlyZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1p bmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFuZ2UubWlubGVuLAotCQkJICAgICBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSk7CisJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0 eShzYi0+c19iZGV2KSk7CiAKIAllcnIgPSBmYXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlp ZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2dmczIvcmdycC5jIGIvZnMvZ2ZzMi9yZ3JwLmMK aW5kZXggN2YyMGFjOTEzM2JjNi4uNmQyNmJiNTI1NDg0NCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9y Z3JwLmMKKysrIGIvZnMvZ2ZzMi9yZ3JwLmMKQEAgLTEzODYsNyArMTM4Niw3IEBAIGludCBnZnMy X2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIgKmFyZ3ApCiB7CiAJc3RydWN0 IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IGdmczJfc2JkICpzZHAg PSBHRlMyX1NCKGlub2RlKTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKHNkcC0+c2RfdmZzLT5zX2JkZXYpOworCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBz ZHAtPnNkX3Zmcy0+c19iZGV2OwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiAJc3RydWN0IGdm czJfcmdycGQgKnJnZDsKIAlzdHJ1Y3QgZ2ZzMl9yZ3JwZCAqcmdkX2VuZDsKQEAgLTE0MDUsNyAr MTQwNSw3IEBAIGludCBnZnMyX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIg KmFyZ3ApCiAJaWYgKCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmc2RwLT5zZF9mbGFncykp CiAJCXJldHVybiAtRVJPRlM7CiAKLQlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhzZHAt PnNkX3Zmcy0+c19iZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyLCBhcmdwLCBz aXplb2YocikpKQpAQCAtMTQxOCw4ICsxNDE4LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBm aWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlzdGFydCA9IHIuc3RhcnQgPj4gYnNfc2hp ZnQ7CiAJZW5kID0gc3RhcnQgKyAoci5sZW4gPj4gYnNfc2hpZnQpOwogCW1pbmxlbiA9IG1heF90 KHU2NCwgci5taW5sZW4sIHNkcC0+c2Rfc2Iuc2JfYnNpemUpOwotCW1pbmxlbiA9IG1heF90KHU2 NCwgbWlubGVuLAotCQkgICAgICAgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpID4+IGJz X3NoaWZ0OworCW1pbmxlbiA9IG1heF90KHU2NCwgbWlubGVuLCBiZGV2X2Rpc2NhcmRfZ3JhbnVs YXJpdHkoYmRldikpID4+IGJzX3NoaWZ0OwogCiAJaWYgKGVuZCA8PSBzdGFydCB8fCBtaW5sZW4g PiBzZHAtPnNkX21heF9yZ19kYXRhKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2Zz L2pmcy9pb2N0bC5jIGIvZnMvamZzL2lvY3RsLmMKaW5kZXggMzU3YWU2ZTVjMzZlYy4uMWU3YjE3 N2VjZTYwNSAxMDA2NDQKLS0tIGEvZnMvamZzL2lvY3RsLmMKKysrIGIvZnMvamZzL2lvY3RsLmMK QEAgLTExMCw3ICsxMTAsNiBAQCBsb25nIGpmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJY2FzZSBGSVRSSU06CiAJewogCQlz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCXN0cnVjdCBmc3RyaW1fcmFu Z2UgcmFuZ2U7CiAJCXM2NCByZXQgPSAwOwogCkBAIC0xMjcsNyArMTI2LDcgQEAgbG9uZyBqZnNf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKIAkJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWdu ZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSk7 CisJCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCiAJCXJl dCA9IGpmc19pb2NfdHJpbShpbm9kZSwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1n aXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmluZGV4IDUyYjczZjU1 OGZjYjEuLjg3ZTEwMDRiNjA2ZDIgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9pb2N0bC5jCisrKyBi L2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDUyLDcgKzEwNTIsNiBAQCBzdGF0aWMgaW50IG5pbGZz X2lvY3RsX3Jlc2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKIHN0 YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9f dXNlciAqYXJncCkKIHsKIAlzdHJ1Y3QgdGhlX25pbGZzICpuaWxmcyA9IGlub2RlLT5pX3NiLT5z X2ZzX2luZm87Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShuaWxm cy0+bnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBA IC0xMDY1LDcgKzEwNjQsOCBAQCBzdGF0aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0 IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZy YW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2Uu bWlubGVuID0gbWF4X3QodTY0LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5KTsKKwlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwKKwkJCSAg ICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG5pbGZzLT5uc19iZGV2KSk7CiAKIAlkb3duX3Jl YWQoJm5pbGZzLT5uc19zZWdjdG9yX3NlbSk7CiAJcmV0ID0gbmlsZnNfc3VmaWxlX3RyaW1fZnMo bmlsZnMtPm5zX3N1ZmlsZSwgJnJhbmdlKTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL2ZpbGUuYyBi L2ZzL250ZnMzL2ZpbGUuYwppbmRleCBlNzYzMjM2MTY5MzMxLi4xNTgwNmVlYWUyMTdhIDEwMDY0 NAotLS0gYS9mcy9udGZzMy9maWxlLmMKKysrIGIvZnMvbnRmczMvZmlsZS5jCkBAIC0yMiw3ICsy Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAq c2JpLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAq dXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2JpLT5zYi0+c19iZGV2KTsKIAlpbnQgZXJyOwog CiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQpAQCAtMzUsNyArMzQsOCBAQCBzdGF0aWMg aW50IG50ZnNfaW9jdGxfZml0cmltKHN0cnVjdCBudGZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQg bG9uZyBhcmcpCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgdXNlcl9yYW5nZSwgc2l6ZW9m KHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2UubWlubGVuID0gbWF4X3QodTMy LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1MzIsIHJhbmdlLm1pbmxlbiwKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dy YW51bGFyaXR5KHNiaS0+c2ItPnNfYmRldikpOwogCiAJZXJyID0gbnRmc190cmltX2ZzKHNiaSwg JnJhbmdlKTsKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9m cy9udGZzMy9zdXBlci5jCmluZGV4IGM3MzQwODViY2NlNGEuLjVmMmU0MTRjZmE3OWIgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtODgyLDcg Kzg4Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpbnQgZXJyOwogCXN0cnVjdCBudGZzX3NiX2lu Zm8gKnNiaSA9IHNiLT5zX2ZzX2luZm87CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNi LT5zX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnJxOwogCXN0cnVjdCBpbm9kZSAqaW5v ZGU7CiAJc3RydWN0IG50ZnNfaW5vZGUgKm5pOwogCXNpemVfdCBpLCB0dDsKQEAgLTkxMiw5ICs5 MTEsOCBAQCBzdGF0aWMgaW50IG50ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWdvdG8gb3V0OwogCX0KIAotCXJxID0gYmRldl9n ZXRfcXVldWUoYmRldik7Ci0JaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBy cS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKLQkJc2JpLT5kaXNjYXJkX2dyYW51bGFy aXR5ID0gcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCWlmIChiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikgJiYgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYpKSB7CisJ CXNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2 KTsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5X21hc2tfaW52ID0KIAkJCX4odTY0KShzYmkt PmRpc2NhcmRfZ3JhbnVsYXJpdHkgLSAxKTsKIAl9CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9pb2N0 bC5jIGIvZnMvb2NmczIvaW9jdGwuYwppbmRleCA5Yjc4ZWYxMDNhZGE2Li5hZmQ1NGVjNjYxMDMw IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9pb2N0bC5jCisrKyBiL2ZzL29jZnMyL2lvY3RsLmMKQEAg LTkwMyw3ICs5MDMsNiBAQCBsb25nIG9jZnMyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJaW50IHJldCA9IDA7CiAKQEAgLTkxNiw3ICs5MTUsNyBAQCBsb25nIG9jZnMy X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n IGFyZykKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkp CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAotCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5LAorCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIGJk ZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSwKIAkJCQkgICAgIHJhbmdlLm1pbmxl bik7CiAJCXJldCA9IG9jZnMyX3RyaW1fZnMoc2IsICZyYW5nZSk7CiAJCWlmIChyZXQgPCAwKQpk aWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXNjYXJkLmMgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpp bmRleCBhNGU2NjA5ZDYxNmI3Li5lMmFkYTExNWMyM2Y5IDEwMDY0NAotLS0gYS9mcy94ZnMveGZz X2Rpc2NhcmQuYworKysgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpAQCAtMTUyLDggKzE1Miw4IEBA IHhmc19pb2NfdHJpbSgKIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCiAJc3RydWN0IGZzdHJpbV9y YW5nZSBfX3VzZXIJKnVyYW5nZSkKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZQkqcSA9IGJkZXZf Z2V0X3F1ZXVlKG1wLT5tX2RkZXZfdGFyZ3AtPmJ0X2JkZXYpOwotCXVuc2lnbmVkIGludAkJZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwl1bnNpZ25lZCBpbnQJ CWdyYW51bGFyaXR5ID0KKwkJYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG1wLT5tX2RkZXZfdGFy Z3AtPmJ0X2JkZXYpOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UJcmFuZ2U7CiAJeGZzX2RhZGRyX3QJ CXN0YXJ0LCBlbmQsIG1pbmxlbjsKIAl4ZnNfYWdudW1iZXJfdAkJc3RhcnRfYWdubywgZW5kX2Fn bm8sIGFnbm87CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9s aW51eC9ibGtkZXYuaAppbmRleCA3NjdhYjIyZTEwNTJhLi5mMWNmNTU3ZWEyMGVmIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgK QEAgLTEyNTcsNiArMTI1NywxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIAlyZXR1cm4gYmRl dl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzOwogfQogCitzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldikKK3sKKwlyZXR1cm4gYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBi ZGV2X3dyaXRlX3plcm9lc19zZWN0b3JzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCiB7CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLS0gCjIuMzAu MgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LXVtIG1haWxpbmcgbGlzdApsaW51eC11bUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtdW0K From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Date: Sat, 9 Apr 2022 06:50:41 +0200 Subject: [Cluster-devel] [PATCH 25/27] block: add a bdev_discard_granularity helper In-Reply-To: <20220409045043.23593-1-hch@lst.de> References: <20220409045043.23593-1-hch@lst.de> Message-ID: <20220409045043.23593-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 [btrfs] 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 b55e5fcc21e1f..0b3e43be6414d 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: Sat, 9 Apr 2022 06:50:41 +0200 Message-ID: <20220409045043.23593-26-hch@lst.de> References: <20220409045043.23593-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=pVDwXB6PltgVZkC3rRdiaCUdLly1SPIvqpMIXjtbaqw=; b=jqUA+AmRXIWodbokKUQJY0RX0L 3iRxTxojZgoAr0BJQ1ponT4HGyJF9P/dLKgG3mgDVBzT9ZC3GJ4VXksCd7CI4pp2deGOMuRnO4dJZ tYjvlBna5K+2SqqA4cHi6bHT3o1vwsbWhi8IrSk8cEbLbPYhU9Q1bHhBT4/6s3jRpSUTvMY8j6m9y ZXrNmSY5/qE17M860l2JtYPEp4Qs2IucObE64GZleGfFuLyLOimXHvRbrt+CUdmhLio0qwks9xvBt Vg5wC+6v6SCxOh06XmFFo2NPgfa5H4+lhNehhWJUBtAxZ5KuAcLte2n3q/5mzTUIyBnf71eMj2a2Y UapUGRFw==; In-Reply-To: <20220409045043.23593-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 b2VobXdhbGRlckBsaW5iaXQuY29tPiBbYnRyZnNdCkFja2VkLWJ5OiBSeXVzdWtlIEtvbmlzaGkg PGtvbmlzaGkucnl1c3VrZUBnbWFpbC5jb20+CkFja2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+IFtidHJmc10KLS0tCiBibG9jay9ibGstbGliLmMgICAgICAgICAgICAgICAg ICAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jICAgICAgICB8ICA5 ICsrKysrLS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyAgfCAgMyArLS0K IGRyaXZlcnMvYmxvY2svbG9vcC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGFy Z2V0L3RhcmdldF9jb3JlX2RldmljZS5jIHwgIDMgKy0tCiBmcy9idHJmcy9pb2N0bC5jICAgICAg ICAgICAgICAgICAgICB8IDEyICsrKystLS0tLS0tLQogZnMvZXhmYXQvZmlsZS5jICAgICAgICAg ICAgICAgICAgICAgfCAgMyArLS0KIGZzL2V4dDQvbWJhbGxvYy5jICAgICAgICAgICAgICAgICAg IHwgIDYgKysrLS0tCiBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICst LQogZnMvZmF0L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL2dmczIv cmdycC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQogZnMvamZzL2lvY3RsLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQogZnMvbnRmczMvZmlsZS5jICAgICAgICAgICAgICAgICAgICAg fCAgNCArKy0tCiBmcy9udGZzMy9zdXBlci5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0t LQogZnMvb2NmczIvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGZzL3hmcy94 ZnNfZGlzY2FyZC5jICAgICAgICAgICAgICAgIHwgIDQgKystLQogaW5jbHVkZS9saW51eC9ibGtk ZXYuaCAgICAgICAgICAgICAgfCAgNSArKysrKwogMTggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxpYi5jIGIv YmxvY2svYmxrLWxpYi5jCmluZGV4IDhiNGI2NmQzYTliZmMuLjQzYWE0ZDdmZTg1OWYgMTAwNjQ0 Ci0tLSBhL2Jsb2NrL2Jsay1saWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTEyLDggKzEy LDcgQEAKIAogc3RhdGljIHNlY3Rvcl90IGJpb19kaXNjYXJkX2xpbWl0KHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcikKIHsKLQl1bnNpZ25lZCBpbnQgZGlzY2FyZF9n cmFudWxhcml0eSA9Ci0JCWJkZXZfZ2V0X3F1ZXVlKGJkZXYpLT5saW1pdHMuZGlzY2FyZF9ncmFu dWxhcml0eTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2Fy ZF9ncmFudWxhcml0eShiZGV2KTsKIAlzZWN0b3JfdCBncmFudWxhcml0eV9hbGlnbmVkX3NlY3Rv cjsKIAogCWlmIChiZGV2X2lzX3BhcnRpdGlvbihiZGV2KSkKQEAgLTU5LDcgKzU4LDcgQEAgaW50 IF9fYmxrZGV2X2lzc3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9y X3Qgc2VjdG9yLAogCX0KIAogCS8qIEluIGNhc2UgdGhlIGRpc2NhcmQgZ3JhbnVsYXJpdHkgaXNu J3Qgc2V0IGJ5IGJ1Z2d5IGRldmljZSBkcml2ZXIgKi8KLQlpZiAoV0FSTl9PTl9PTkNFKCFxLT5s aW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSkpIHsKKwlpZiAoV0FSTl9PTl9PTkNFKCFiZGV2X2Rp c2NhcmRfZ3JhbnVsYXJpdHkoYmRldikpKSB7CiAJCWNoYXIgZGV2X25hbWVbQkRFVk5BTUVfU0la RV07CiAKIAkJYmRldm5hbWUoYmRldiwgZGV2X25hbWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXgg YjU1ZTVmY2MyMWUxZi4uMGIzZTQzYmU2NDE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfbmwuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCkBAIC0xNDI1 LDcgKzE0MjUsNiBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9kaXNrX2NvbmYoc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkaXNrX2NvbmYgKmRpcwogCQkJICAgICAgIHN0cnVjdCBk cmJkX2JhY2tpbmdfZGV2ICpuYmMpCiB7CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IG5i Yy0+YmFja2luZ19iZGV2OwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldi0+YmRfZGlz ay0+cXVldWU7CiAKIAlpZiAoZGlza19jb25mLT5hbF9leHRlbnRzIDwgRFJCRF9BTF9FWFRFTlRT X01JTikKIAkJZGlza19jb25mLT5hbF9leHRlbnRzID0gRFJCRF9BTF9FWFRFTlRTX01JTjsKQEAg LTE0NDIsMTIgKzE0NDEsMTQgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfZGlza19jb25mKHN0cnVj dCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZGlza19jb25mICpkaXMKIAlpZiAoZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KSB7CiAJCWludCBvcmlnX3ZhbHVlID0gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5OwogCQlzZWN0b3JfdCBkaXNjYXJkX3NpemUgPSBi ZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikgPDwgOTsKKwkJdW5zaWduZWQgaW50IGRpc2Nh cmRfZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldik7CiAJCWludCBy ZW1haW5kZXI7CiAKLQkJaWYgKHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5ID4gZGlza19j b25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQotCQkJZGlza19jb25mLT5yc19kaXNjYXJkX2dy YW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHk7CisJCWlmIChkaXNjYXJk X2dyYW51bGFyaXR5ID4gZGlza19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5KQorCQkJZGlz a19jb25mLT5yc19kaXNjYXJkX2dyYW51bGFyaXR5ID0gZGlzY2FyZF9ncmFudWxhcml0eTsKIAot CQlyZW1haW5kZXIgPSBkaXNrX2NvbmYtPnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgJSBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwkJcmVtYWluZGVyID0gZGlza19jb25mLT5yc19kaXNj YXJkX2dyYW51bGFyaXR5ICUKKwkJCQlkaXNjYXJkX2dyYW51bGFyaXR5OwogCQlkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgKz0gcmVtYWluZGVyOwogCiAJCWlmIChkaXNrX2NvbmYt PnJzX2Rpc2NhcmRfZ3JhbnVsYXJpdHkgPiBkaXNjYXJkX3NpemUpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf cmVjZWl2ZXIuYwppbmRleCA4YTRhNDdkYTU2ZmU5Li4yNzVjNTNjN2I2MjllIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTE1MTEsNyArMTUxMSw2IEBAIHZvaWQgZHJiZF9idW1w X3dyaXRlX29yZGVyaW5nKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwgc3RydWN0IGRy YmRfYmFja2luCiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJk X2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMs IGludCBmbGFncykKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gZGV2aWNlLT5sZGV2 LT5iYWNraW5nX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1 ZShiZGV2KTsKIAlzZWN0b3JfdCB0bXAsIG5yOwogCXVuc2lnbmVkIGludCBtYXhfZGlzY2FyZF9z ZWN0b3JzLCBncmFudWxhcml0eTsKIAlpbnQgYWxpZ25tZW50OwpAQCAtMTUyMSw3ICsxNTIwLDcg QEAgaW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2Ug KmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsIHUKIAkJZ290byB6ZXJvX291dDsKIAogCS8qIFplcm8t c2VjdG9yICh1bmtub3duKSBhbmQgb25lLXNlY3RvciBncmFudWxhcml0aWVzIGFyZSB0aGUgc2Ft ZS4gICovCi0JZ3JhbnVsYXJpdHkgPSBtYXgocS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkg Pj4gOSwgMVUpOworCWdyYW51bGFyaXR5ID0gbWF4KGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShi ZGV2KSA+PiA5LCAxVSk7CiAJYWxpZ25tZW50ID0gKGJkZXZfZGlzY2FyZF9hbGlnbm1lbnQoYmRl dikgPj4gOSkgJSBncmFudWxhcml0eTsKIAogCW1heF9kaXNjYXJkX3NlY3RvcnMgPSBtaW4oYmRl dl9tYXhfZGlzY2FyZF9zZWN0b3JzKGJkZXYpLCAoMVUgPDwgMjIpKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMGUwNjFjOTg5 NmVmZi4uOTc2Y2Y5ODdiMzkyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKKysr IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBzdGF0aWMgdm9pZCBs b29wX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pCiAJCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpiYWNraW5ncSA9IGJkZXZfZ2V0X3F1ZXVlKElfQkRFVihpbm9kZSkpOwogCiAJ CW1heF9kaXNjYXJkX3NlY3RvcnMgPSBiYWNraW5ncS0+bGltaXRzLm1heF93cml0ZV96ZXJvZXNf c2VjdG9yczsKLQkJZ3JhbnVsYXJpdHkgPSBiYWNraW5ncS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkgPzoKKwkJZ3JhbnVsYXJpdHkgPSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoSV9CREVW KGlub2RlKSkgPzoKIAkJCXF1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYmFja2luZ3EpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKaW5kZXggNmNiOWY4Nzg0MzI3OC4uMjVm MzNlYjI1MzM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNl LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKQEAgLTgzNSw3ICs4 MzUsNiBAQCBzdHJ1Y3Qgc2VfZGV2aWNlICp0YXJnZXRfYWxsb2NfZGV2aWNlKHN0cnVjdCBzZV9o YmEgKmhiYSwgY29uc3QgY2hhciAqbmFtZSkKIGJvb2wgdGFyZ2V0X2NvbmZpZ3VyZV91bm1hcF9m cm9tX3F1ZXVlKHN0cnVjdCBzZV9kZXZfYXR0cmliICphdHRyaWIsCiAJCQkJICAgICAgIHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYpCiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2 X2dldF9xdWV1ZShiZGV2KTsKIAlpbnQgYmxvY2tfc2l6ZSA9IGJkZXZfbG9naWNhbF9ibG9ja19z aXplKGJkZXYpOwogCiAJaWYgKCFiZGV2X21heF9kaXNjYXJkX3NlY3RvcnMoYmRldikpCkBAIC04 NDcsNyArODQ2LDcgQEAgYm9vbCB0YXJnZXRfY29uZmlndXJlX3VubWFwX2Zyb21fcXVldWUoc3Ry dWN0IHNlX2Rldl9hdHRyaWIgKmF0dHJpYiwKIAkgKiBDdXJyZW50bHkgaGFyZGNvZGVkIHRvIDEg aW4gTGludXgvU0NTSSBjb2RlLi4KIAkgKi8KIAlhdHRyaWItPm1heF91bm1hcF9ibG9ja19kZXNj X2NvdW50ID0gMTsKLQlhdHRyaWItPnVubWFwX2dyYW51bGFyaXR5ID0gcS0+bGltaXRzLmRpc2Nh cmRfZ3JhbnVsYXJpdHkgLyBibG9ja19zaXplOworCWF0dHJpYi0+dW5tYXBfZ3JhbnVsYXJpdHkg PSBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoYmRldikgLyBibG9ja19zaXplOwogCWF0dHJpYi0+ dW5tYXBfZ3JhbnVsYXJpdHlfYWxpZ25tZW50ID0KIAkJYmRldl9kaXNjYXJkX2FsaWdubWVudChi ZGV2KSAvIGJsb2NrX3NpemU7CiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9p b2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCAwOTZiYjBkYTAzZjFjLi43MDc2NWQ1OTYx NmE1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMK QEAgLTQ2OCw3ICs0NjgsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX2ZpdHJp bShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCQkJdm9pZCBfX3VzZXIgKmFyZykK IHsKIAlzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUg KnE7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAl1NjQgbWlubGVuID0gVUxMT05HX01B WDsKIAl1NjQgbnVtX2RldmljZXMgPSAwOwpAQCAtNDk4LDE0ICs0OTcsMTEgQEAgc3RhdGljIG5v aW5saW5lIGludCBidHJmc19pb2N0bF9maXRyaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2lu Zm8sCiAJcmN1X3JlYWRfbG9jaygpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRldmljZSwg JmZzX2luZm8tPmZzX2RldmljZXMtPmRldmljZXMsCiAJCQkJZGV2X2xpc3QpIHsKLQkJaWYgKCFk ZXZpY2UtPmJkZXYpCisJCWlmICghZGV2aWNlLT5iZGV2IHx8ICFiZGV2X21heF9kaXNjYXJkX3Nl Y3RvcnMoZGV2aWNlLT5iZGV2KSkKIAkJCWNvbnRpbnVlOwotCQlxID0gYmRldl9nZXRfcXVldWUo ZGV2aWNlLT5iZGV2KTsKLQkJaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhkZXZpY2UtPmJk ZXYpKSB7Ci0JCQludW1fZGV2aWNlcysrOwotCQkJbWlubGVuID0gbWluX3QodTY0LCBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSwKLQkJCQkgICAgIG1pbmxlbik7Ci0JCX0KKwkJbnVtX2Rl dmljZXMrKzsKKwkJbWlubGVuID0gbWluX3QodTY0LCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHko ZGV2aWNlLT5iZGV2KSwKKwkJCQkgICAgbWlubGVuKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7 CiAKZGlmZiAtLWdpdCBhL2ZzL2V4ZmF0L2ZpbGUuYyBiL2ZzL2V4ZmF0L2ZpbGUuYwppbmRleCA3 NjVlNGY2M2RkMThkLi4yMGQ0ZTQ3ZjU3YWIyIDEwMDY0NAotLS0gYS9mcy9leGZhdC9maWxlLmMK KysrIGIvZnMvZXhmYXQvZmlsZS5jCkBAIC0zNTEsNyArMzUxLDYgQEAgaW50IGV4ZmF0X3NldGF0 dHIoc3RydWN0IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCiAKIHN0YXRpYyBpbnQgZXhmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9n ZXRfcXVldWUoaW5vZGUtPmlfc2ItPnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5n ZTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtMzY1LDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgZXhmYXRf aW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQly ZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1pbmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFu Z2UubWlubGVuLAotCQkJCXEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwkJCQliZGV2 X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoaW5vZGUtPmlfc2ItPnNfYmRldikpOwogCiAJcmV0ID0gZXhm YXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2Zz L2V4dDQvbWJhbGxvYy5jIGIvZnMvZXh0NC9tYmFsbG9jLmMKaW5kZXggYzM2NjhjOTc3Y2Q5OS4u NmQxODIwNTM2ZDg4ZCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysrIGIvZnMvZXh0 NC9tYmFsbG9jLmMKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIGV4dDRfdHJpbV9hbGxfZnJlZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgZ3JvdXAsCiAgKi8KIGludCBleHQ0X3Ry aW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJpbV9yYW5nZSAqcmFuZ2Up CiB7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2 KTsKKwl1bnNpZ25lZCBpbnQgZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFu dWxhcml0eShzYi0+c19iZGV2KTsKIAlzdHJ1Y3QgZXh0NF9ncm91cF9pbmZvICpncnA7CiAJZXh0 NF9ncm91cF90IGdyb3VwLCBmaXJzdF9ncm91cCwgbGFzdF9ncm91cDsKIAlleHQ0X2dycGJsa190 IGNudCA9IDAsIGZpcnN0X2NsdXN0ZXIsIGxhc3RfY2x1c3RlcjsKQEAgLTY0NzUsOSArNjQ3NSw5 IEBAIGludCBleHQ0X3RyaW1fZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzdHJp bV9yYW5nZSAqcmFuZ2UpCiAJICAgIHJhbmdlLT5sZW4gPCBzYi0+c19ibG9ja3NpemUpCiAJCXJl dHVybiAtRUlOVkFMOwogCS8qIE5vIHBvaW50IHRvIHRyeSB0byB0cmltIGxlc3MgdGhhbiBkaXNj YXJkIGdyYW51bGFyaXR5ICovCi0JaWYgKHJhbmdlLT5taW5sZW4gPCBxLT5saW1pdHMuZGlzY2Fy ZF9ncmFudWxhcml0eSkgeworCWlmIChyYW5nZS0+bWlubGVuIDwgZGlzY2FyZF9ncmFudWxhcml0 eSkgewogCQltaW5sZW4gPSBFWFQ0X05VTV9CMkMoRVhUNF9TQihzYiksCi0JCQlxLT5saW1pdHMu ZGlzY2FyZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CisJCQkJZGlzY2Fy ZF9ncmFudWxhcml0eSA+PiBzYi0+c19ibG9ja3NpemVfYml0cyk7CiAJCWlmIChtaW5sZW4gPiBF WFQ0X0NMVVNURVJTX1BFUl9HUk9VUChzYikpCiAJCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQg YS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCmluZGV4IDViODlhZjBmMjdmMDUuLjgw NTNkOTlmMzkyMGIgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZmlsZS5jCisrKyBiL2ZzL2YyZnMvZmls ZS5jCkBAIC0yMjg1LDcgKzIyODUsNiBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IGlub2RlICppbm9k ZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5p X3NiOwotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRl dik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBAIC0yMzA0LDcg KzIzMDMsNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCiAJCXJldHVybiByZXQ7CiAKIAlyYW5nZS5taW5sZW4gPSBtYXgo KHVuc2lnbmVkIGludClyYW5nZS5taW5sZW4sCi0JCQkJcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVs YXJpdHkpOworCQkJICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KHNiLT5zX2JkZXYpKTsKIAly ZXQgPSBmMmZzX3RyaW1fZnMoRjJGU19TQihzYiksICZyYW5nZSk7CiAJbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKIAlpZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2ZhdC9maWxlLmMgYi9m cy9mYXQvZmlsZS5jCmluZGV4IGU0YzdkMTBlODAxMjkuLmJmOTFmOTc3ZGViZWEgMTAwNjQ0Ci0t LSBhL2ZzL2ZhdC9maWxlLmMKKysrIGIvZnMvZmF0L2ZpbGUuYwpAQCAtMTI3LDcgKzEyNyw2IEBA IHN0YXRpYyBpbnQgZmF0X2lvY3RsX2ZpdHJpbShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l ZCBsb25nIGFyZykKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CiAJc3Ry dWN0IGZzdHJpbV9yYW5nZSBfX3VzZXIgKnVzZXJfcmFuZ2U7CiAJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHNiLT5z X2JkZXYpOwogCWludCBlcnI7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0x NDEsNyArMTQwLDcgQEAgc3RhdGljIGludCBmYXRfaW9jdGxfZml0cmltKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQlyZXR1cm4gLUVGQVVMVDsKIAogCXJhbmdlLm1p bmxlbiA9IG1heF90KHVuc2lnbmVkIGludCwgcmFuZ2UubWlubGVuLAotCQkJICAgICBxLT5saW1p dHMuZGlzY2FyZF9ncmFudWxhcml0eSk7CisJCQkgICAgIGJkZXZfZGlzY2FyZF9ncmFudWxhcml0 eShzYi0+c19iZGV2KSk7CiAKIAllcnIgPSBmYXRfdHJpbV9mcyhpbm9kZSwgJnJhbmdlKTsKIAlp ZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL2dmczIvcmdycC5jIGIvZnMvZ2ZzMi9yZ3JwLmMK aW5kZXggN2YyMGFjOTEzM2JjNi4uNmQyNmJiNTI1NDg0NCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9y Z3JwLmMKKysrIGIvZnMvZ2ZzMi9yZ3JwLmMKQEAgLTEzODYsNyArMTM4Niw3IEBAIGludCBnZnMy X2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIgKmFyZ3ApCiB7CiAJc3RydWN0 IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7CiAJc3RydWN0IGdmczJfc2JkICpzZHAg PSBHRlMyX1NCKGlub2RlKTsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1 ZXVlKHNkcC0+c2RfdmZzLT5zX2JkZXYpOworCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBz ZHAtPnNkX3Zmcy0+c19iZGV2OwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiAJc3RydWN0IGdm czJfcmdycGQgKnJnZDsKIAlzdHJ1Y3QgZ2ZzMl9yZ3JwZCAqcmdkX2VuZDsKQEAgLTE0MDUsNyAr MTQwNSw3IEBAIGludCBnZnMyX2ZpdHJpbShzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCBfX3VzZXIg KmFyZ3ApCiAJaWYgKCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmc2RwLT5zZF9mbGFncykp CiAJCXJldHVybiAtRVJPRlM7CiAKLQlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhzZHAt PnNkX3Zmcy0+c19iZGV2KSkKKwlpZiAoIWJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyLCBhcmdwLCBz aXplb2YocikpKQpAQCAtMTQxOCw4ICsxNDE4LDcgQEAgaW50IGdmczJfZml0cmltKHN0cnVjdCBm aWxlICpmaWxwLCB2b2lkIF9fdXNlciAqYXJncCkKIAlzdGFydCA9IHIuc3RhcnQgPj4gYnNfc2hp ZnQ7CiAJZW5kID0gc3RhcnQgKyAoci5sZW4gPj4gYnNfc2hpZnQpOwogCW1pbmxlbiA9IG1heF90 KHU2NCwgci5taW5sZW4sIHNkcC0+c2Rfc2Iuc2JfYnNpemUpOwotCW1pbmxlbiA9IG1heF90KHU2 NCwgbWlubGVuLAotCQkgICAgICAgcS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpID4+IGJz X3NoaWZ0OworCW1pbmxlbiA9IG1heF90KHU2NCwgbWlubGVuLCBiZGV2X2Rpc2NhcmRfZ3JhbnVs YXJpdHkoYmRldikpID4+IGJzX3NoaWZ0OwogCiAJaWYgKGVuZCA8PSBzdGFydCB8fCBtaW5sZW4g PiBzZHAtPnNkX21heF9yZ19kYXRhKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2Zz L2pmcy9pb2N0bC5jIGIvZnMvamZzL2lvY3RsLmMKaW5kZXggMzU3YWU2ZTVjMzZlYy4uMWU3YjE3 N2VjZTYwNSAxMDA2NDQKLS0tIGEvZnMvamZzL2lvY3RsLmMKKysrIGIvZnMvamZzL2lvY3RsLmMK QEAgLTExMCw3ICsxMTAsNiBAQCBsb25nIGpmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJY2FzZSBGSVRSSU06CiAJewogCQlz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2ItPnNfYmRldik7CiAJCXN0cnVjdCBmc3RyaW1fcmFu Z2UgcmFuZ2U7CiAJCXM2NCByZXQgPSAwOwogCkBAIC0xMjcsNyArMTI2LDcgQEAgbG9uZyBqZnNf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKIAkJcmFuZ2UubWlubGVuID0gbWF4X3QodW5zaWdu ZWQgaW50LCByYW5nZS5taW5sZW4sCi0JCQlxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eSk7 CisJCQkJICAgICBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc2ItPnNfYmRldikpOwogCiAJCXJl dCA9IGpmc19pb2NfdHJpbShpbm9kZSwgJnJhbmdlKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1n aXQgYS9mcy9uaWxmczIvaW9jdGwuYyBiL2ZzL25pbGZzMi9pb2N0bC5jCmluZGV4IDUyYjczZjU1 OGZjYjEuLjg3ZTEwMDRiNjA2ZDIgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9pb2N0bC5jCisrKyBi L2ZzL25pbGZzMi9pb2N0bC5jCkBAIC0xMDUyLDcgKzEwNTIsNiBAQCBzdGF0aWMgaW50IG5pbGZz X2lvY3RsX3Jlc2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKIHN0 YXRpYyBpbnQgbmlsZnNfaW9jdGxfdHJpbV9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkIF9f dXNlciAqYXJncCkKIHsKIAlzdHJ1Y3QgdGhlX25pbGZzICpuaWxmcyA9IGlub2RlLT5pX3NiLT5z X2ZzX2luZm87Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShuaWxm cy0+bnNfYmRldik7CiAJc3RydWN0IGZzdHJpbV9yYW5nZSByYW5nZTsKIAlpbnQgcmV0OwogCkBA IC0xMDY1LDcgKzEwNjQsOCBAQCBzdGF0aWMgaW50IG5pbGZzX2lvY3RsX3RyaW1fZnMoc3RydWN0 IGlub2RlICppbm9kZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZy YW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2Uu bWlubGVuID0gbWF4X3QodTY0LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51 bGFyaXR5KTsKKwlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHJhbmdlLm1pbmxlbiwKKwkJCSAg ICAgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG5pbGZzLT5uc19iZGV2KSk7CiAKIAlkb3duX3Jl YWQoJm5pbGZzLT5uc19zZWdjdG9yX3NlbSk7CiAJcmV0ID0gbmlsZnNfc3VmaWxlX3RyaW1fZnMo bmlsZnMtPm5zX3N1ZmlsZSwgJnJhbmdlKTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL2ZpbGUuYyBi L2ZzL250ZnMzL2ZpbGUuYwppbmRleCBlNzYzMjM2MTY5MzMxLi4xNTgwNmVlYWUyMTdhIDEwMDY0 NAotLS0gYS9mcy9udGZzMy9maWxlLmMKKysrIGIvZnMvbnRmczMvZmlsZS5jCkBAIC0yMiw3ICsy Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19pb2N0bF9maXRyaW0oc3RydWN0IG50ZnNfc2JfaW5mbyAq c2JpLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIF9fdXNlciAq dXNlcl9yYW5nZTsKIAlzdHJ1Y3QgZnN0cmltX3JhbmdlIHJhbmdlOwotCXN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxID0gYmRldl9nZXRfcXVldWUoc2JpLT5zYi0+c19iZGV2KTsKIAlpbnQgZXJyOwog CiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQpAQCAtMzUsNyArMzQsOCBAQCBzdGF0aWMg aW50IG50ZnNfaW9jdGxfZml0cmltKHN0cnVjdCBudGZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQg bG9uZyBhcmcpCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgdXNlcl9yYW5nZSwgc2l6ZW9m KHJhbmdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmFuZ2UubWlubGVuID0gbWF4X3QodTMy LCByYW5nZS5taW5sZW4sIHEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5KTsKKwlyYW5nZS5t aW5sZW4gPSBtYXhfdCh1MzIsIHJhbmdlLm1pbmxlbiwKKwkJCSAgICAgYmRldl9kaXNjYXJkX2dy YW51bGFyaXR5KHNiaS0+c2ItPnNfYmRldikpOwogCiAJZXJyID0gbnRmc190cmltX2ZzKHNiaSwg JnJhbmdlKTsKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2ZzL250ZnMzL3N1cGVyLmMgYi9m cy9udGZzMy9zdXBlci5jCmluZGV4IGM3MzQwODViY2NlNGEuLjVmMmU0MTRjZmE3OWIgMTAwNjQ0 Ci0tLSBhL2ZzL250ZnMzL3N1cGVyLmMKKysrIGIvZnMvbnRmczMvc3VwZXIuYwpAQCAtODgyLDcg Kzg4Miw2IEBAIHN0YXRpYyBpbnQgbnRmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKIAlpbnQgZXJyOwogCXN0cnVjdCBudGZzX3NiX2lu Zm8gKnNiaSA9IHNiLT5zX2ZzX2luZm87CiAJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IHNi LT5zX2JkZXY7Ci0Jc3RydWN0IHJlcXVlc3RfcXVldWUgKnJxOwogCXN0cnVjdCBpbm9kZSAqaW5v ZGU7CiAJc3RydWN0IG50ZnNfaW5vZGUgKm5pOwogCXNpemVfdCBpLCB0dDsKQEAgLTkxMiw5ICs5 MTEsOCBAQCBzdGF0aWMgaW50IG50ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCWdvdG8gb3V0OwogCX0KIAotCXJxID0gYmRldl9n ZXRfcXVldWUoYmRldik7Ci0JaWYgKGJkZXZfbWF4X2Rpc2NhcmRfc2VjdG9ycyhiZGV2KSAmJiBy cS0+bGltaXRzLmRpc2NhcmRfZ3JhbnVsYXJpdHkpIHsKLQkJc2JpLT5kaXNjYXJkX2dyYW51bGFy aXR5ID0gcnEtPmxpbWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5OworCWlmIChiZGV2X21heF9kaXNj YXJkX3NlY3RvcnMoYmRldikgJiYgYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KGJkZXYpKSB7CisJ CXNiaS0+ZGlzY2FyZF9ncmFudWxhcml0eSA9IGJkZXZfZGlzY2FyZF9ncmFudWxhcml0eShiZGV2 KTsKIAkJc2JpLT5kaXNjYXJkX2dyYW51bGFyaXR5X21hc2tfaW52ID0KIAkJCX4odTY0KShzYmkt PmRpc2NhcmRfZ3JhbnVsYXJpdHkgLSAxKTsKIAl9CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9pb2N0 bC5jIGIvZnMvb2NmczIvaW9jdGwuYwppbmRleCA5Yjc4ZWYxMDNhZGE2Li5hZmQ1NGVjNjYxMDMw IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9pb2N0bC5jCisrKyBiL2ZzL29jZnMyL2lvY3RsLmMKQEAg LTkwMyw3ICs5MDMsNiBAQCBsb25nIG9jZnMyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZJVFJJTToKIAl7CiAJCXN0 cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKLQkJc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEgPSBiZGV2X2dldF9xdWV1ZShzYi0+c19iZGV2KTsKIAkJc3RydWN0IGZzdHJpbV9yYW5n ZSByYW5nZTsKIAkJaW50IHJldCA9IDA7CiAKQEAgLTkxNiw3ICs5MTUsNyBAQCBsb25nIG9jZnMy X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n IGFyZykKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkp CiAJCQlyZXR1cm4gLUVGQVVMVDsKIAotCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIHEtPmxp bWl0cy5kaXNjYXJkX2dyYW51bGFyaXR5LAorCQlyYW5nZS5taW5sZW4gPSBtYXhfdCh1NjQsIGJk ZXZfZGlzY2FyZF9ncmFudWxhcml0eShzYi0+c19iZGV2KSwKIAkJCQkgICAgIHJhbmdlLm1pbmxl bik7CiAJCXJldCA9IG9jZnMyX3RyaW1fZnMoc2IsICZyYW5nZSk7CiAJCWlmIChyZXQgPCAwKQpk aWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXNjYXJkLmMgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpp bmRleCBhNGU2NjA5ZDYxNmI3Li5lMmFkYTExNWMyM2Y5IDEwMDY0NAotLS0gYS9mcy94ZnMveGZz X2Rpc2NhcmQuYworKysgYi9mcy94ZnMveGZzX2Rpc2NhcmQuYwpAQCAtMTUyLDggKzE1Miw4IEBA IHhmc19pb2NfdHJpbSgKIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCiAJc3RydWN0IGZzdHJpbV9y YW5nZSBfX3VzZXIJKnVyYW5nZSkKIHsKLQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZQkqcSA9IGJkZXZf Z2V0X3F1ZXVlKG1wLT5tX2RkZXZfdGFyZ3AtPmJ0X2JkZXYpOwotCXVuc2lnbmVkIGludAkJZ3Jh bnVsYXJpdHkgPSBxLT5saW1pdHMuZGlzY2FyZF9ncmFudWxhcml0eTsKKwl1bnNpZ25lZCBpbnQJ CWdyYW51bGFyaXR5ID0KKwkJYmRldl9kaXNjYXJkX2dyYW51bGFyaXR5KG1wLT5tX2RkZXZfdGFy Z3AtPmJ0X2JkZXYpOwogCXN0cnVjdCBmc3RyaW1fcmFuZ2UJcmFuZ2U7CiAJeGZzX2RhZGRyX3QJ CXN0YXJ0LCBlbmQsIG1pbmxlbjsKIAl4ZnNfYWdudW1iZXJfdAkJc3RhcnRfYWdubywgZW5kX2Fn bm8sIGFnbm87CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9s aW51eC9ibGtkZXYuaAppbmRleCA3NjdhYjIyZTEwNTJhLi5mMWNmNTU3ZWEyMGVmIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgK QEAgLTEyNTcsNiArMTI1NywxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X21h eF9kaXNjYXJkX3NlY3RvcnMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKIAlyZXR1cm4gYmRl dl9nZXRfcXVldWUoYmRldiktPmxpbWl0cy5tYXhfZGlzY2FyZF9zZWN0b3JzOwogfQogCitzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBiZGV2X2Rpc2NhcmRfZ3JhbnVsYXJpdHkoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldikKK3sKKwlyZXR1cm4gYmRldl9nZXRfcXVldWUoYmRldiktPmxpbWl0 cy5kaXNjYXJkX2dyYW51bGFyaXR5OworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBi ZGV2X3dyaXRlX3plcm9lc19zZWN0b3JzKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCiB7CiAJ c3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1ZShiZGV2KTsKLS0gCjIuMzAu MgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVh bGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRp b24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZv L3ZpcnR1YWxpemF0aW9u