From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BC7C5C433DB for ; Tue, 16 Feb 2021 08:17:39 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5302764DC3 for ; Tue, 16 Feb 2021 08:17:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5302764DC3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=K4CLNph+FSQsJdtrJpU7JIF50DRcsj+VrP53uJpT7yA=; b=bRWZoRUzotphBjN9nj0cUr62J gzHEaPa3TmyZQPUeDZYKqFR1fnu7zK/F4GqF3tmPYcdgzWVdiwCbZm9pnh4MSqy6X2PADjzazdRxd qwOlmBMrlqBWd+PRF1BB/2OxeXqufPc24Iba03m/YKvp8xeqX0b2Dz5+qAQE5A3DNL4Da23eJ53kQ U8Sk4xGlWmCQEkXLpVNkuaGi2kgirYnM3/shGhCR7T/qEyH2oiQM4MUIERVJTZ9YIPvTBzg5KYWKJ 0Q6bgnFLu35kBGWAUfkWC7gmHg2t1ahbycp4LI+gtVzMw7d/NHjOrxlotiLPey3A486bd0reUNwlB bJIG0kKeg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lBvWw-0003iP-Qm; Tue, 16 Feb 2021 08:16:22 +0000 Received: from relay9-d.mail.gandi.net ([217.70.183.199]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lBvWt-0003i2-Pe for linux-mtd@lists.infradead.org; Tue, 16 Feb 2021 08:16:21 +0000 X-Originating-IP: 86.210.203.113 Received: from xps13 (lfbn-tou-1-972-113.w86-210.abo.wanadoo.fr [86.210.203.113]) (Authenticated sender: miquel.raynal@bootlin.com) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 788A8FF804; Tue, 16 Feb 2021 08:16:14 +0000 (UTC) Date: Tue, 16 Feb 2021 09:16:13 +0100 From: Miquel Raynal To: Md Sadre Alam Subject: Re: [PATCH] mtd: rawnand: qcom: update last code word register Message-ID: <20210216091613.1d0e7470@xps13> In-Reply-To: <1613416602-1175-1-git-send-email-mdalam@codeaurora.org> References: <1613416602-1175-1-git-send-email-mdalam@codeaurora.org> Organization: Bootlin X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210216_031620_061600_6355EDCE X-CRM114-Status: GOOD ( 30.64 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mani@kernel.org, richard@nod.at, linux-kernel@vger.kernel.org, krzk@kernel.org, boris.brezillon@collabora.com, linux-mtd@lists.infradead.org, sricharan@codeaurora.org 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 SGVsbG8sCgpNZCBTYWRyZSBBbGFtIDxtZGFsYW1AY29kZWF1cm9yYS5vcmc+IHdyb3RlIG9uIFR1 ZSwgMTYgRmViIDIwMjEKMDA6NDY6NDIgKzA1MzA6Cgo+IEZyb20gUVBJQyB2ZXJzaW9uIDIuMCBv bndhcmRzIG5ldyByZWdpc3RlciBnb3QgYWRkZWQgdG8KPiByZWFkIGxhc3QgY29kZXdvcmQuIFRo aXMgY2hhbmdlIHdpbGwgYWRkIHRoZSBSRUFEX0xPQ0FUSU9OX0xBU1RfQ1dfbgo+IHJlZ2lzdGVy Lgo+IAo+IEZvciBmaXJzdCB0aHJlZSBjb2RlIHdvcmQgUkVBRF9MT0NBVElPTl9uIHJlZ2lzdGVy IHdpbGwgYmUKPiB1c2UuRm9yIGxhc3QgY29kZSB3b3JkIFJFQURfTE9DQVRJT05fTEFTVF9DV19u IHJlZ2lzdGVyIHdpbGwgYmUKPiB1c2UuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWQgU2FkcmUgQWxh bSA8bWRhbGFtQGNvZGVhdXJvcmEub3JnPgo+IC0tLQo+IFtWNl0KCkl0IGlzIGFsc28gdmVyeSBp bXBvcnRhbnQgdGhhdCB5b3UgbWFyayB0aGUgdmVyc2lvbiBpbiB0aGUgc3ViamVjdDoKCglbUEFU Q0ggdjZdIG10ZDogcmF3bmFuZDogZXRjCgpPdGhlcndpc2UgaXQgaXMgZGlmZmljdWx0IHRvIGtl ZXAgdHJhY2sgb24gdGhlIGNoYW5nZXMuCgo+ICAqIFVwZGF0ZWQgd3JpdGVfcmVnX2RtYSgpIGZ1 bmN0aW9uIGluICJ2NiIKPiAgKiBSZW1vdmVkIGV4dHJhIGluZGVudGF0aW9uIGxldmVsIGluIHJl YWRfcGFnZV9lY2MoKSB0byByZWFkIGxhc3QgY29kZSB3b3JkIGluICJ2NiIKPiAgKiBSZW1vdmVk IGJvb2xlYW4gY2hlY2sgaW4gY29uZmlnX25hbmRfY3dfcmVhZCgpIGluICJ2NiIKPiAgZHJpdmVy cy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jIHwgMTE4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAzMSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvcWNvbV9u YW5kYy5jIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jCj4gaW5kZXggNjY3ZTRi Zi4uYmFlMzUyZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29tX25hbmRj LmMKPiArKysgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29tX25hbmRjLmMKPiBAQCAtNDgsNiAr NDgsMTAgQEAKPiAgI2RlZmluZQlOQU5EX1JFQURfTE9DQVRJT05fMQkJMHhmMjQKPiAgI2RlZmlu ZQlOQU5EX1JFQURfTE9DQVRJT05fMgkJMHhmMjgKPiAgI2RlZmluZQlOQU5EX1JFQURfTE9DQVRJ T05fMwkJMHhmMmMKPiArI2RlZmluZQlOQU5EX1JFQURfTE9DQVRJT05fTEFTVF9DV18wCTB4ZjQw Cj4gKyNkZWZpbmUJTkFORF9SRUFEX0xPQ0FUSU9OX0xBU1RfQ1dfMQkweGY0NAo+ICsjZGVmaW5l CU5BTkRfUkVBRF9MT0NBVElPTl9MQVNUX0NXXzIJMHhmNDgKPiArI2RlZmluZQlOQU5EX1JFQURf TE9DQVRJT05fTEFTVF9DV18zCTB4ZjRjCj4gIAo+ICAvKiBkdW1teSByZWdpc3RlciBvZmZzZXRz LCB1c2VkIGJ5IHdyaXRlX3JlZ19kbWEgKi8KPiAgI2RlZmluZQlOQU5EX0RFVl9DTUQxX1JFU1RP UkUJCTB4ZGVhZAo+IEBAIC0xODEsOCArMTg1LDE0IEBACj4gICNkZWZpbmUJRUNDX0JDSF80QklU CUJJVCgyKQo+ICAjZGVmaW5lCUVDQ19CQ0hfOEJJVAlCSVQoMykKPiAgCj4gLSNkZWZpbmUgbmFu ZGNfc2V0X3JlYWRfbG9jKG5hbmRjLCByZWcsIG9mZnNldCwgc2l6ZSwgaXNfbGFzdCkJXAo+IC1u YW5kY19zZXRfcmVnKG5hbmRjLCBOQU5EX1JFQURfTE9DQVRJT05fIyNyZWcsCQkJXAo+ICsjZGVm aW5lIG5hbmRjX3NldF9yZWFkX2xvY19maXJzdChuYW5kYywgcmVnLCBvZmZzZXQsIHNpemUsIGlz X2xhc3QpCVwKPiArbmFuZGNfc2V0X3JlZyhuYW5kYywgcmVnLAkJCQkJXAo+ICsJICAgICAgKChv ZmZzZXQpIDw8IFJFQURfTE9DQVRJT05fT0ZGU0VUKSB8CQlcCj4gKwkgICAgICAoKHNpemUpIDw8 IFJFQURfTE9DQVRJT05fU0laRSkgfAkJCVwKPiArCSAgICAgICgoaXNfbGFzdCkgPDwgUkVBRF9M T0NBVElPTl9MQVNUKSkKPiArCj4gKyNkZWZpbmUgbmFuZGNfc2V0X3JlYWRfbG9jX2xhc3QobmFu ZGMsIHJlZywgb2Zmc2V0LCBzaXplLCBpc19sYXN0KQlcCj4gK25hbmRjX3NldF9yZWcobmFuZGMs IHJlZywJCQkJCVwKPiAgCSAgICAgICgob2Zmc2V0KSA8PCBSRUFEX0xPQ0FUSU9OX09GRlNFVCkg fAkJXAo+ICAJICAgICAgKChzaXplKSA8PCBSRUFEX0xPQ0FUSU9OX1NJWkUpIHwJCQlcCj4gIAkg ICAgICAoKGlzX2xhc3QpIDw8IFJFQURfTE9DQVRJT05fTEFTVCkpCj4gQEAgLTMxNiw2ICszMjYs MTAgQEAgc3RydWN0IG5hbmRjX3JlZ3Mgewo+ICAJX19sZTMyIHJlYWRfbG9jYXRpb24xOwo+ICAJ X19sZTMyIHJlYWRfbG9jYXRpb24yOwo+ICAJX19sZTMyIHJlYWRfbG9jYXRpb24zOwo+ICsJX19s ZTMyIHJlYWRfbG9jYXRpb25fbGFzdDA7Cj4gKwlfX2xlMzIgcmVhZF9sb2NhdGlvbl9sYXN0MTsK PiArCV9fbGUzMiByZWFkX2xvY2F0aW9uX2xhc3QyOwo+ICsJX19sZTMyIHJlYWRfbG9jYXRpb25f bGFzdDM7Cj4gIAo+ICAJX19sZTMyIGVyYXNlZF9jd19kZXRlY3RfY2ZnX2NscjsKPiAgCV9fbGUz MiBlcmFzZWRfY3dfZGV0ZWN0X2NmZ19zZXQ7Cj4gQEAgLTY0NCw2ICs2NTgsMTQgQEAgc3RhdGlj IF9fbGUzMiAqb2Zmc2V0X3RvX25hbmRjX3JlZyhzdHJ1Y3QgbmFuZGNfcmVncyAqcmVncywgaW50 IG9mZnNldCkKPiAgCQlyZXR1cm4gJnJlZ3MtPnJlYWRfbG9jYXRpb24yOwo+ICAJY2FzZSBOQU5E X1JFQURfTE9DQVRJT05fMzoKPiAgCQlyZXR1cm4gJnJlZ3MtPnJlYWRfbG9jYXRpb24zOwo+ICsJ Y2FzZSBOQU5EX1JFQURfTE9DQVRJT05fTEFTVF9DV18wOgo+ICsJCXJldHVybiAmcmVncy0+cmVh ZF9sb2NhdGlvbl9sYXN0MDsKPiArCWNhc2UgTkFORF9SRUFEX0xPQ0FUSU9OX0xBU1RfQ1dfMToK PiArCQlyZXR1cm4gJnJlZ3MtPnJlYWRfbG9jYXRpb25fbGFzdDE7Cj4gKwljYXNlIE5BTkRfUkVB RF9MT0NBVElPTl9MQVNUX0NXXzI6Cj4gKwkJcmV0dXJuICZyZWdzLT5yZWFkX2xvY2F0aW9uX2xh c3QyOwo+ICsJY2FzZSBOQU5EX1JFQURfTE9DQVRJT05fTEFTVF9DV18zOgo+ICsJCXJldHVybiAm cmVncy0+cmVhZF9sb2NhdGlvbl9sYXN0MzsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0dXJuIE5VTEw7 Cj4gIAl9Cj4gQEAgLTY2MSw2ICs2ODMsMjYgQEAgc3RhdGljIHZvaWQgbmFuZGNfc2V0X3JlZyhz dHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgKm5hbmRjLCBpbnQgb2Zmc2V0LAo+ICAJCSpyZWcg PSBjcHVfdG9fbGUzMih2YWwpOwo+ICB9Cj4gIAo+ICsvKiBoZWxwZXIgdG8gY29uZmlndXJlIGxv Y2F0aW9uIHJlZ2lzdGVyIHZhbHVlcyAqLwo+ICtzdGF0aWMgdm9pZCBuYW5kY19zZXRfcmVhZF9s b2Moc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwgaW50IGN3LCBpbnQgcmVnLAo+ICsJCQkgICAgICAg aW50IG9mZnNldCwgaW50IHNpemUsIGludCBpc19sYXN0KQoKWW91IGtub3cgY3csIHlvdSBoYXZl IGFjY2VzcyB0byBjaGlwLT5lY2Muc3RlcHMsIHNvIHlvdSBjYW4gZGVyaXZlIGJ5CnlvdXJzZWxm IGlmIGlzX2xhc3QgaXMgc2V0IG9yIG5vdC4gTm8gbmVlZCB0byBmb3J3YXJkIGl0IHRocm91Z2gK ZnVuY3Rpb24gY2FsbHMuCgo+ICt7Cj4gKwlzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgKm5h bmRjID0gZ2V0X3Fjb21fbmFuZF9jb250cm9sbGVyKGNoaXApOwo+ICsJc3RydWN0IG5hbmRfZWNj X2N0cmwgKmVjYyA9ICZjaGlwLT5lY2M7Cj4gKwo+ICsJaW50IGxvYyA9IE5BTkRfUkVBRF9MT0NB VElPTl8wOwo+ICsKPiArCWlmIChuYW5kYy0+cHJvcHMtPnFwaWNfdjIgJiYgY3cgPT0gKGVjYy0+ c3RlcHMgLSAxKSkKPiArCQlsb2MgPSBOQU5EX1JFQURfTE9DQVRJT05fTEFTVF9DV18wOwo+ICsK PiArCWxvYyArPSByZWcgKiA0Owo+ICsKPiArCWlmIChuYW5kYy0+cHJvcHMtPnFwaWNfdjIgJiYg Y3cgPT0gKGVjYy0+c3RlcHMgLSAxKSkKCkp1c3QgY29tcHV0ZSBpc19sYXN0IGEgc2luZ2xlIHRp bWUgYXQgdGhlIHRvcCBvZiB0aGUgaGVscGVyIGFuZCB1c2UgaXQuCgo+ICsJCXJldHVybiBuYW5k Y19zZXRfcmVhZF9sb2NfbGFzdChuYW5kYywgbG9jLCBvZmZzZXQsIHNpemUsIGlzX2xhc3QpOwo+ ICsJZWxzZQo+ICsJCXJldHVybiBuYW5kY19zZXRfcmVhZF9sb2NfZmlyc3QobmFuZGMsIGxvYywg b2Zmc2V0LCBzaXplLCBpc19sYXN0KTsKPiArfQo+ICsKPiAgLyogaGVscGVyIHRvIGNvbmZpZ3Vy ZSBhZGRyZXNzIHJlZ2lzdGVyIHZhbHVlcyAqLwo+ICBzdGF0aWMgdm9pZCBzZXRfYWRkcmVzcyhz dHJ1Y3QgcWNvbV9uYW5kX2hvc3QgKmhvc3QsIHUxNiBjb2x1bW4sIGludCBwYWdlKQo+ICB7Cj4g QEAgLTY4NSw2ICs3MjcsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcndfcmVncyhzdHJ1Y3QgcWNv bV9uYW5kX2hvc3QgKmhvc3QsIGludCBudW1fY3csIGJvb2wgcmVhZCkKPiAgewo+ICAJc3RydWN0 IG5hbmRfY2hpcCAqY2hpcCA9ICZob3N0LT5jaGlwOwo+ICAJc3RydWN0IHFjb21fbmFuZF9jb250 cm9sbGVyICpuYW5kYyA9IGdldF9xY29tX25hbmRfY29udHJvbGxlcihjaGlwKTsKPiArCXN0cnVj dCBuYW5kX2VjY19jdHJsICplY2MgPSAmY2hpcC0+ZWNjOwo+ICAJdTMyIGNtZCwgY2ZnMCwgY2Zn MSwgZWNjX2JjaF9jZmc7Cj4gIAo+ICAJaWYgKHJlYWQpIHsKPiBAQCAtNzE5LDkgKzc2MiwxNCBA QCBzdGF0aWMgdm9pZCB1cGRhdGVfcndfcmVncyhzdHJ1Y3QgcWNvbV9uYW5kX2hvc3QgKmhvc3Qs IGludCBudW1fY3csIGJvb2wgcmVhZCkKPiAgCW5hbmRjX3NldF9yZWcobmFuZGMsIE5BTkRfUkVB RF9TVEFUVVMsIGhvc3QtPmNscnJlYWRzdGF0dXMpOwo+ICAJbmFuZGNfc2V0X3JlZyhuYW5kYywg TkFORF9FWEVDX0NNRCwgMSk7Cj4gIAo+IC0JaWYgKHJlYWQpCj4gLQkJbmFuZGNfc2V0X3JlYWRf bG9jKG5hbmRjLCAwLCAwLCBob3N0LT51c2VfZWNjID8KPiAtCQkJCSAgIGhvc3QtPmN3X2RhdGEg OiBob3N0LT5jd19zaXplLCAxKTsKPiArCWlmIChyZWFkKSB7Cj4gKwkJaWYgKG5hbmRjLT5wcm9w cy0+cXBpY192MikKPiArCQkJbmFuZGNfc2V0X3JlYWRfbG9jKGNoaXAsIGVjYy0+c3RlcHMgLSAx LCAwLCAwLCBob3N0LT51c2VfZWNjID8KPiArCQkJCQlob3N0LT5jd19kYXRhIDogaG9zdC0+Y3df c2l6ZSwgMSk7Cj4gKwkJZWxzZQo+ICsJCQluYW5kY19zZXRfcmVhZF9sb2MoY2hpcCwgMCwgMCwg MCwgaG9zdC0+dXNlX2VjYyA/Cj4gKwkJCQkJaG9zdC0+Y3dfZGF0YSA6IGhvc3QtPmN3X3NpemUs IDEpOwoKSGVyZSB5b3Ugc2hvdWxkIG5vdCBoYXZlIHRoaXMgZXh0cmEgaW5kZW50YXRpb24gbGV2 ZWwgYXMgd2VsbCwKbmFuZGNfc2V0X3JlYWRfbG9nKCkgc2hvdWxkIElNSE8gYmUgYWJsZSB0byBo aWRlIHRoZSBjb21wbGV4aXR5IG9mIHRoZQp2ZXJzaW9ucy4KCj4gKwl9Cj4gIH0KPiAgCj4gIC8q Cj4gQEAgLTEwNzksOCArMTEyNywxMCBAQCBzdGF0aWMgaW50IHdyaXRlX2RhdGFfZG1hKHN0cnVj dCBxY29tX25hbmRfY29udHJvbGxlciAqbmFuZGMsIGludCByZWdfb2ZmLAo+ICAgKiBIZWxwZXIg dG8gcHJlcGFyZSBETUEgZGVzY3JpcHRvcnMgZm9yIGNvbmZpZ3VyaW5nIHJlZ2lzdGVycwo+ICAg KiBiZWZvcmUgcmVhZGluZyBhIE5BTkQgcGFnZS4KPiAgICovCj4gLXN0YXRpYyB2b2lkIGNvbmZp Z19uYW5kX3BhZ2VfcmVhZChzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgKm5hbmRjKQo+ICtz dGF0aWMgdm9pZCBjb25maWdfbmFuZF9wYWdlX3JlYWQoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkK PiAgewo+ICsJc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYyA9IGdldF9xY29tX25h bmRfY29udHJvbGxlcihjaGlwKTsKPiArCgpJIGRvbid0IGdldCB3aHkgeW91IGNoYW5nZSB0aGUg cGFyYW1ldGVyIGZyb20gbmFuZGMgdG8gY2hpcC4gSG9ubmVzdGx5CkkgZG9uJ3QgdGhpbmsgaXQg aXMgYSBiYWQgdGhpbmcsIEknbSBqdXN0IGN1cmlvdXMgdG8gdW5kZXJzdGFuZCB3aHkuIElmCnlv dSB3YW50IHRvIGRvIHRoYXQsIHBsZWFzZSBzdGFydCB3aXRoIGEgZmlyc3QgcGF0Y2gganVzdCBk b2luZyB0aGUKY29udmVyc2lvbiwgYW5kIHRoZW4gYSBzZWNvbmQgcGF0Y2ggYWRkaW5nIExBU1Rf Q1cgc3VwcG9ydC4gT3RoZXJ3aXNlCml0IGlzIGJsdXJyeS4KCj4gIAl3cml0ZV9yZWdfZG1hKG5h bmRjLCBOQU5EX0FERFIwLCAyLCAwKTsKPiAgCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfREVW MF9DRkcwLCAzLCAwKTsKPiAgCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRUJJMl9FQ0NfQlVG X0NGRywgMSwgMCk7Cj4gQEAgLTEwOTQsMTEgKzExNDQsMTkgQEAgc3RhdGljIHZvaWQgY29uZmln X25hbmRfcGFnZV9yZWFkKHN0cnVjdCBxY29tX25hbmRfY29udHJvbGxlciAqbmFuZGMpCj4gICAq IGJlZm9yZSByZWFkaW5nIGVhY2ggY29kZXdvcmQgaW4gTkFORCBwYWdlLgo+ICAgKi8KPiAgc3Rh dGljIHZvaWQKPiAtY29uZmlnX25hbmRfY3dfcmVhZChzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xs ZXIgKm5hbmRjLCBib29sIHVzZV9lY2MpCj4gK2NvbmZpZ19uYW5kX2N3X3JlYWQoc3RydWN0IG5h bmRfY2hpcCAqY2hpcCwgYm9vbCB1c2VfZWNjLCBpbnQgY3cpCj4gIHsKPiAtCWlmIChuYW5kYy0+ cHJvcHMtPmlzX2JhbSkKPiAtCQl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX1JFQURfTE9DQVRJ T05fMCwgNCwKPiAtCQkJICAgICAgTkFORF9CQU1fTkVYVF9TR0wpOwo+ICsJc3RydWN0IHFjb21f bmFuZF9jb250cm9sbGVyICpuYW5kYyA9IGdldF9xY29tX25hbmRfY29udHJvbGxlcihjaGlwKTsK PiArCXN0cnVjdCBuYW5kX2VjY19jdHJsICplY2MgPSAmY2hpcC0+ZWNjOwo+ICsKPiArCWlmIChu YW5kYy0+cHJvcHMtPmlzX2JhbSkgewo+ICsJCWlmIChuYW5kYy0+cHJvcHMtPnFwaWNfdjIgJiYg Y3cgPT0gKGVjYy0+c3RlcHMgLSAxKSkKPiArCQkJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9S RUFEX0xPQ0FUSU9OX0xBU1RfQ1dfMCwgNCwKPiArCQkJCSAgICAgIE5BTkRfQkFNX05FWFRfU0dM KTsKPiArCQllbHNlCj4gKwkJCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfUkVBRF9MT0NBVElP Tl8wLCA0LAo+ICsJCQkJICAgICAgTkFORF9CQU1fTkVYVF9TR0wpOwo+ICsJfQoKU2FtZSBoZXJl LCBJIGFtIHByZXR0eSBzdXJlIHdlIGNhbiBhYnN0cmFjdCB0aGUgY29tcGxleGl0eS4KCj4gIAo+ ICAJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9DTUQsIDEsIE5BTkRfQkFNX05FWFRf U0dMKTsKPiAgCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRVhFQ19DTUQsIDEsIE5BTkRfQkFN X05FWFRfU0dMKTsKPiBAQCAtMTExNywxMSArMTE3NSwxMSBAQCBjb25maWdfbmFuZF9jd19yZWFk KHN0cnVjdCBxY29tX25hbmRfY29udHJvbGxlciAqbmFuZGMsIGJvb2wgdXNlX2VjYykKPiAgICog c2luZ2xlIGNvZGV3b3JkIGluIHBhZ2UKPiAgICovCj4gIHN0YXRpYyB2b2lkCj4gLWNvbmZpZ19u YW5kX3NpbmdsZV9jd19wYWdlX3JlYWQoc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5k YywKPiAtCQkJCWJvb2wgdXNlX2VjYykKPiArY29uZmlnX25hbmRfc2luZ2xlX2N3X3BhZ2VfcmVh ZChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLAo+ICsJCQkJYm9vbCB1c2VfZWNjLCBpbnQgY3cpCj4g IHsKPiAtCWNvbmZpZ19uYW5kX3BhZ2VfcmVhZChuYW5kYyk7Cj4gLQljb25maWdfbmFuZF9jd19y ZWFkKG5hbmRjLCB1c2VfZWNjKTsKPiArCWNvbmZpZ19uYW5kX3BhZ2VfcmVhZChjaGlwKTsKPiAr CWNvbmZpZ19uYW5kX2N3X3JlYWQoY2hpcCwgdXNlX2VjYywgY3cpOwo+ICB9Cj4gIAo+ICAvKgo+ IEBAIC0xMjA1LDcgKzEyNjMsNyBAQCBzdGF0aWMgaW50IG5hbmRjX3BhcmFtKHN0cnVjdCBxY29t X25hbmRfaG9zdCAqaG9zdCkKPiAgCQluYW5kY19zZXRfcmVnKG5hbmRjLCBOQU5EX0RFVl9DTURf VkxEX1JFU1RPUkUsIG5hbmRjLT52bGQpOwo+ICAJfQo+ICAKPiAtCW5hbmRjX3NldF9yZWFkX2xv YyhuYW5kYywgMCwgMCwgNTEyLCAxKTsKPiArCW5hbmRjX3NldF9yZWFkX2xvYyhjaGlwLCAwLCAw LCAwLCA1MTIsIDEpOwo+ICAKPiAgCWlmICghbmFuZGMtPnByb3BzLT5xcGljX3YyKSB7Cj4gIAkJ d3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9ERVZfQ01EX1ZMRCwgMSwgMCk7Cj4gQEAgLTEyMTUs NyArMTI3Myw3IEBAIHN0YXRpYyBpbnQgbmFuZGNfcGFyYW0oc3RydWN0IHFjb21fbmFuZF9ob3N0 ICpob3N0KQo+ICAJbmFuZGMtPmJ1Zl9jb3VudCA9IDUxMjsKPiAgCW1lbXNldChuYW5kYy0+ZGF0 YV9idWZmZXIsIDB4ZmYsIG5hbmRjLT5idWZfY291bnQpOwo+ICAKPiAtCWNvbmZpZ19uYW5kX3Np bmdsZV9jd19wYWdlX3JlYWQobmFuZGMsIGZhbHNlKTsKPiArCWNvbmZpZ19uYW5kX3NpbmdsZV9j d19wYWdlX3JlYWQoY2hpcCwgZmFsc2UsIDApOwo+ICAKPiAgCXJlYWRfZGF0YV9kbWEobmFuZGMs IEZMQVNIX0JVRl9BQ0MsIG5hbmRjLT5kYXRhX2J1ZmZlciwKPiAgCQkgICAgICBuYW5kYy0+YnVm X2NvdW50LCAwKTsKPiBAQCAtMTYxNyw3ICsxNjc1LDcgQEAgcWNvbV9uYW5kY19yZWFkX2N3X3Jh dyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKPiAgCWNsZWFy X2JhbV90cmFuc2FjdGlvbihuYW5kYyk7Cj4gIAlzZXRfYWRkcmVzcyhob3N0LCBob3N0LT5jd19z aXplICogY3csIHBhZ2UpOwo+ICAJdXBkYXRlX3J3X3JlZ3MoaG9zdCwgMSwgdHJ1ZSk7Cj4gLQlj b25maWdfbmFuZF9wYWdlX3JlYWQobmFuZGMpOwo+ICsJY29uZmlnX25hbmRfcGFnZV9yZWFkKGNo aXApOwo+ICAKPiAgCWRhdGFfc2l6ZTEgPSBtdGQtPndyaXRlc2l6ZSAtIGhvc3QtPmN3X3NpemUg KiAoZWNjLT5zdGVwcyAtIDEpOwo+ICAJb29iX3NpemUxID0gaG9zdC0+YmJtX3NpemU7Cj4gQEAg LTE2MzMsMTkgKzE2OTEsMTkgQEAgcWNvbV9uYW5kY19yZWFkX2N3X3JhdyhzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKPiAgCX0KPiAgCj4gIAlpZiAobmFuZGMt PnByb3BzLT5pc19iYW0pIHsKPiAtCQluYW5kY19zZXRfcmVhZF9sb2MobmFuZGMsIDAsIHJlYWRf bG9jLCBkYXRhX3NpemUxLCAwKTsKPiArCQluYW5kY19zZXRfcmVhZF9sb2MoY2hpcCwgY3csIDAs IHJlYWRfbG9jLCBkYXRhX3NpemUxLCAwKTsKPiAgCQlyZWFkX2xvYyArPSBkYXRhX3NpemUxOwo+ ICAKPiAtCQluYW5kY19zZXRfcmVhZF9sb2MobmFuZGMsIDEsIHJlYWRfbG9jLCBvb2Jfc2l6ZTEs IDApOwo+ICsJCW5hbmRjX3NldF9yZWFkX2xvYyhjaGlwLCBjdywgMSwgcmVhZF9sb2MsIG9vYl9z aXplMSwgMCk7Cj4gIAkJcmVhZF9sb2MgKz0gb29iX3NpemUxOwo+ICAKPiAtCQluYW5kY19zZXRf cmVhZF9sb2MobmFuZGMsIDIsIHJlYWRfbG9jLCBkYXRhX3NpemUyLCAwKTsKPiArCQluYW5kY19z ZXRfcmVhZF9sb2MoY2hpcCwgY3csIDIsIHJlYWRfbG9jLCBkYXRhX3NpemUyLCAwKTsKPiAgCQly ZWFkX2xvYyArPSBkYXRhX3NpemUyOwo+ICAKPiAtCQluYW5kY19zZXRfcmVhZF9sb2MobmFuZGMs IDMsIHJlYWRfbG9jLCBvb2Jfc2l6ZTIsIDEpOwo+ICsJCW5hbmRjX3NldF9yZWFkX2xvYyhjaGlw LCBjdywgMywgcmVhZF9sb2MsIG9vYl9zaXplMiwgMSk7Cj4gIAl9Cj4gIAo+IC0JY29uZmlnX25h bmRfY3dfcmVhZChuYW5kYywgZmFsc2UpOwo+ICsJY29uZmlnX25hbmRfY3dfcmVhZChjaGlwLCBm YWxzZSwgY3cpOwo+ICAKPiAgCXJlYWRfZGF0YV9kbWEobmFuZGMsIHJlZ19vZmYsIGRhdGFfYnVm LCBkYXRhX3NpemUxLCAwKTsKPiAgCXJlZ19vZmYgKz0gZGF0YV9zaXplMTsKPiBAQCAtMTg1Niw3 ICsxOTE0LDcgQEAgc3RhdGljIGludCByZWFkX3BhZ2VfZWNjKHN0cnVjdCBxY29tX25hbmRfaG9z dCAqaG9zdCwgdTggKmRhdGFfYnVmLAo+ICAJdTggKmRhdGFfYnVmX3N0YXJ0ID0gZGF0YV9idWYs ICpvb2JfYnVmX3N0YXJ0ID0gb29iX2J1ZjsKPiAgCWludCBpLCByZXQ7Cj4gIAo+IC0JY29uZmln X25hbmRfcGFnZV9yZWFkKG5hbmRjKTsKPiArCWNvbmZpZ19uYW5kX3BhZ2VfcmVhZChjaGlwKTsK PiAgCj4gIAkvKiBxdWV1ZSBjbWQgZGVzY3MgZm9yIGVhY2ggY29kZXdvcmQgKi8KPiAgCWZvciAo aSA9IDA7IGkgPCBlY2MtPnN0ZXBzOyBpKyspIHsKPiBAQCAtMTg3MywxOCArMTkzMSwxNiBAQCBz dGF0aWMgaW50IHJlYWRfcGFnZV9lY2Moc3RydWN0IHFjb21fbmFuZF9ob3N0ICpob3N0LCB1OCAq ZGF0YV9idWYsCj4gIAo+ICAJCWlmIChuYW5kYy0+cHJvcHMtPmlzX2JhbSkgewo+ICAJCQlpZiAo ZGF0YV9idWYgJiYgb29iX2J1Zikgewo+IC0JCQkJbmFuZGNfc2V0X3JlYWRfbG9jKG5hbmRjLCAw LCAwLCBkYXRhX3NpemUsIDApOwo+IC0JCQkJbmFuZGNfc2V0X3JlYWRfbG9jKG5hbmRjLCAxLCBk YXRhX3NpemUsCj4gLQkJCQkJCSAgIG9vYl9zaXplLCAxKTsKPiArCQkJCW5hbmRjX3NldF9yZWFk X2xvYyhjaGlwLCBpLCAwLCAwLCBkYXRhX3NpemUsIDApOwo+ICsJCQkJbmFuZGNfc2V0X3JlYWRf bG9jKGNoaXAsIGksIDEsIGRhdGFfc2l6ZSwgb29iX3NpemUsIDEpOwo+ICAJCQl9IGVsc2UgaWYg KGRhdGFfYnVmKSB7Cj4gLQkJCQluYW5kY19zZXRfcmVhZF9sb2MobmFuZGMsIDAsIDAsIGRhdGFf c2l6ZSwgMSk7Cj4gKwkJCQluYW5kY19zZXRfcmVhZF9sb2MoY2hpcCwgaSwgMCwgMCwgZGF0YV9z aXplLCAxKTsKPiAgCQkJfSBlbHNlIHsKPiAtCQkJCW5hbmRjX3NldF9yZWFkX2xvYyhuYW5kYywg MCwgZGF0YV9zaXplLAo+IC0JCQkJCQkgICBvb2Jfc2l6ZSwgMSk7Cj4gKwkJCQluYW5kY19zZXRf cmVhZF9sb2MoY2hpcCwgaSwgMCwgZGF0YV9zaXplLCBvb2Jfc2l6ZSwgMSk7Cj4gIAkJCX0KPiAg CQl9Cj4gIAo+IC0JCWNvbmZpZ19uYW5kX2N3X3JlYWQobmFuZGMsIHRydWUpOwo+ICsJCWNvbmZp Z19uYW5kX2N3X3JlYWQoY2hpcCwgdHJ1ZSwgaSk7Cj4gIAo+ICAJCWlmIChkYXRhX2J1ZikKPiAg CQkJcmVhZF9kYXRhX2RtYShuYW5kYywgRkxBU0hfQlVGX0FDQywgZGF0YV9idWYsCj4gQEAgLTE5 NDYsNyArMjAwMiw3IEBAIHN0YXRpYyBpbnQgY29weV9sYXN0X2N3KHN0cnVjdCBxY29tX25hbmRf aG9zdCAqaG9zdCwgaW50IHBhZ2UpCj4gIAlzZXRfYWRkcmVzcyhob3N0LCBob3N0LT5jd19zaXpl ICogKGVjYy0+c3RlcHMgLSAxKSwgcGFnZSk7Cj4gIAl1cGRhdGVfcndfcmVncyhob3N0LCAxLCB0 cnVlKTsKPiAgCj4gLQljb25maWdfbmFuZF9zaW5nbGVfY3dfcGFnZV9yZWFkKG5hbmRjLCBob3N0 LT51c2VfZWNjKTsKPiArCWNvbmZpZ19uYW5kX3NpbmdsZV9jd19wYWdlX3JlYWQoY2hpcCwgaG9z dC0+dXNlX2VjYywgZWNjLT5zdGVwcyAtIDEpOwo+ICAKPiAgCXJlYWRfZGF0YV9kbWEobmFuZGMs IEZMQVNIX0JVRl9BQ0MsIG5hbmRjLT5kYXRhX2J1ZmZlciwgc2l6ZSwgMCk7Cj4gIAoKVGhhbmtz LApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=