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 951B7C77B73 for ; Mon, 22 May 2023 13:45:24 +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:Subject:Cc: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=FdR7bm7+AdneO4PAoywimegPoGpxYhSALUpfRFDktU8=; b=CHSyuFOvfQ++kM jKEzISRHSWRMxqK2IhYGojkG9dejVTwAXGGU4ZXwcVepAs2JE34MUR7+JwCqhtc75nxib54/CBDkK iOuIosODuWOlSuxBaipmixNCnylEaEN8uIDKVIPozh9cW3CeCByZschRjc63YoqmyJZd4fiFM5pqy 3wso39DdjbkY0KQBHTFtiz/dEEaGLnNsHljt9oMfM4ZNASxV0ICJnEO5SWVpRhikVB2j9n8bUnQu2 9slc87HvxrOxEXaq66G66Xy97lTcT6QEkivLmq+BNiGhGviy3pORfD4PxuPTShKZTt/nYBf3u9I3Y v3JXsisF7q4GmEFOY7tA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q15qh-006i9a-02; Mon, 22 May 2023 13:45:19 +0000 Received: from relay6-d.mail.gandi.net ([2001:4b98:dc4:8::226]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q15qc-006i6z-2P for linux-mtd@lists.infradead.org; Mon, 22 May 2023 13:45:18 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 4A59AC0008; Mon, 22 May 2023 13:45:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1684763110; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nUSffco4/w//XAZ47cQUSWYcDz41qfX87j0DxKN1CAE=; b=XqLOC5hX6TjWGppK7GxG8h5/b8VVCWX/RXJtP66a12W1AAKIH61DM6rBKTqsi4CGF1ZPm5 /FjG9BjwdTtBcpLpuiDAa6dOfDoKZyP3+61PxaBCCCfYSZwRD4UjWpLWGnMHOFRafkVXuf 1LrDH6YsIvUpp+4z8ag875XUI3+hDqhl4Scqt2BSDRbpi3axcEIO1x4NSkrxYyUgGT2vZ0 QsxDYPmDTq/+iciT/uyYr+HJI9ENIvVhwtAxgsbxjn595GPLk7Au+EhAT2eeclRTnRBzel LD3Lg6Bb7pAIB43M5w66f9YM5W5Ub7Vqm5X4HV59kYr7CqFjVLOF1F8Z8WX+sQ== Date: Mon, 22 May 2023 15:45:07 +0200 From: Miquel Raynal To: Md Sadre Alam Cc: mani@kernel.org, richard@nod.at, vigneshr@ti.com, linux-mtd@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, quic_srichara@quicinc.com Subject: Re: [PATCH v2 2/5] mtd: rawnand: qcom: Add support for reset, readid, status exec_op Message-ID: <20230522154507.0255d902@xps-13> In-Reply-To: <20230511133017.6307-3-quic_mdalam@quicinc.com> References: <20230511133017.6307-1-quic_mdalam@quicinc.com> <20230511133017.6307-3-quic_mdalam@quicinc.com> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; 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-20230522_064515_083743_AF0537AE X-CRM114-Status: GOOD ( 25.22 ) 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 SGkgTWQsCgpxdWljX21kYWxhbUBxdWljaW5jLmNvbSB3cm90ZSBvbiBUaHUsIDExIE1heSAyMDIz IDE5OjAwOjE0ICswNTMwOgoKPiBUaGlzIGNoYW5nZSB3aWxsIGFkZCBleGVjX29wcyBzdXBwb3J0 IGZvciBSRVNFVCAsIFJFQURfSUQsIFNUQVRVUwo+IGNvbW1hbmQuCj4gCj4gQ28tZGV2ZWxvcGVk LWJ5OiBTcmljaGFyYW4gUmFtYWJhZGhyYW4gPHF1aWNfc3JpY2hhcmFAcXVpY2luYy5jb20+Cj4g U2lnbmVkLW9mZi1ieTogU3JpY2hhcmFuIFJhbWFiYWRocmFuIDxxdWljX3NyaWNoYXJhQHF1aWNp bmMuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1kIFNhZHJlIEFsYW0gPHF1aWNfbWRhbGFtQHF1aWNp bmMuY29tPgo+IC0tLQo+IENoYW5nZSBpbiBbdjJdCj4gCj4gKiBNaXNzZWQgdG8gcG9zdCBDb3Zl ci1sZXR0ZXIsIHNvIHBvc3RpbmcgdjIgcGF0Y2ggd2l0aCBjb3Zlci1sZXR0ZXIKPiAKPiAgZHJp dmVycy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jIHwgMTY2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTYzIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L3Fjb21fbmFuZGMu YyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L3Fjb21fbmFuZGMuYwo+IGluZGV4IGRhZTQ2MGUyYWEw Yi4uZDJmMmE4OTcxOTA3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L3Fjb21f bmFuZGMuYwo+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L3Fjb21fbmFuZGMuYwo+IEBAIC0z ODQsNiArMzg0LDkgQEAgc3RydWN0IG5hbmRjX3JlZ3Mgewo+ICAgKiBAcmVnX3JlYWRfcG9zOgkJ bWFya2VyIGZvciBkYXRhIHJlYWQgaW4gcmVnX3JlYWRfYnVmCj4gICAqCj4gICAqIEBjbWQxL3Zs ZDoJCQlzb21lIGZpeGVkIGNvbnRyb2xsZXIgcmVnaXN0ZXIgdmFsdWVzCj4gKyAqCj4gKyAqIEBl eGVjX29wd3JpdGU6CQlmbGFnIHRvIHNlbGVjdCBjb3JyZWN0IG51bWJlciBvZiBjb2RlIHdvcmQK PiArICoJCQkJd2hpbGUgcmVhZGluZyBzdGF0dXMKPiAgICovCj4gIHN0cnVjdCBxY29tX25hbmRf Y29udHJvbGxlciB7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gQEAgLTQzNCw2ICs0MzcsNyBA QCBzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgewo+ICAJaW50IHJlZ19yZWFkX3BvczsKPiAg Cj4gIAl1MzIgY21kMSwgdmxkOwo+ICsJYm9vbCBleGVjX29wd3JpdGU7Cj4gIH07Cj4gIAo+ICAv Kgo+IEBAIC0yOTIwLDYgKzI5MjQsOCBAQCBzdGF0aWMgaW50IHFjb21fb3BfY21kX21hcHBpbmco c3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYywgdTggY21kLAo+ICAJCWJyZWFrOwo+ ICAJY2FzZSBOQU5EX0NNRF9QQUdFUFJPRzoKPiAgCQlyZXQgPSBPUF9QUk9HUkFNX1BBR0U7Cj4g KwkJcV9vcC0+ZmxhZyA9IE5BTkRfQ01EX1BBR0VQUk9HOwoKSnVzdCB1c2UgdGhlIGluc3RydWN0 aW9uIHZhbHVlPwoKPiArCQluYW5kYy0+ZXhlY19vcHdyaXRlID0gdHJ1ZTsKPiAgCQlicmVhazsK PiAgCWRlZmF1bHQ6Cj4gIAkJYnJlYWs7Cj4gQEAgLTI5ODIsMTAgKzI5ODgsOTUgQEAgc3RhdGlj IHZvaWQgcWNvbV9wYXJzZV9pbnN0cnVjdGlvbnMoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKPiAg CX0KPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgcWNvbV9kZWxheV9ucyh1bnNpZ25lZCBpbnQgbnMp Cj4gK3sKPiArCWlmICghbnMpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChucyA8IDEwMDAwKQo+ ICsJCW5kZWxheShucyk7Cj4gKwllbHNlCj4gKwkJdWRlbGF5KERJVl9ST1VORF9VUChucywgMTAw MCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHFjb21fd2FpdF9yZHlfcG9sbChzdHJ1Y3QgbmFu ZF9jaGlwICpjaGlwLCB1bnNpZ25lZCBpbnQgdGltZV9tcykKPiArewo+ICsJc3RydWN0IHFjb21f bmFuZF9jb250cm9sbGVyICpuYW5kYyA9IGdldF9xY29tX25hbmRfY29udHJvbGxlcihjaGlwKTsK PiArCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyh0aW1l X21zKTsKPiArCXUzMiBmbGFzaDsKPiArCj4gKwluYW5kY19yZWFkX2J1ZmZlcl9zeW5jKG5hbmRj LCB0cnVlKTsKPiArCj4gKwlkbyB7Cj4gKwkJZmxhc2ggPSBsZTMyX3RvX2NwdShuYW5kYy0+cmVn X3JlYWRfYnVmWzBdKTsKPiArCQlpZiAoZmxhc2ggJiBGU19SRUFEWV9CU1lfTikKPiArCQkJcmV0 dXJuIDA7Cj4gKwkJY3B1X3JlbGF4KCk7Cj4gKwl9IHdoaWxlICh0aW1lX2FmdGVyKHN0YXJ0LCBq aWZmaWVzKSk7Cj4gKwo+ICsJZGV2X2VycihuYW5kYy0+ZGV2LCAiVGltZW91dCB3YWl0aW5nIGZv ciBkZXZpY2UgdG8gYmUgcmVhZHk6MHglMDh4XG4iLCBmbGFzaCk7Cj4gKwo+ICsJcmV0dXJuIC1F VElNRURPVVQ7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgcWNvbV9yZWFkX3N0YXR1c19leGVjKHN0 cnVjdCBuYW5kX2NoaXAgKmNoaXAsCj4gIAkJCQkgY29uc3Qgc3RydWN0IG5hbmRfc3Vib3AgKnN1 Ym9wKQo+ICB7Cj4gLQlyZXR1cm4gMDsKPiArCXN0cnVjdCBxY29tX25hbmRfaG9zdCAqaG9zdCA9 IHRvX3Fjb21fbmFuZF9ob3N0KGNoaXApOwo+ICsJc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVy ICpuYW5kYyA9IGdldF9xY29tX25hbmRfY29udHJvbGxlcihjaGlwKTsKPiArCXN0cnVjdCBuYW5k X2VjY19jdHJsICplY2MgPSAmY2hpcC0+ZWNjOwo+ICsJc3RydWN0IHFjb21fb3AgcV9vcDsKPiAr CWNvbnN0IHN0cnVjdCBuYW5kX29wX2luc3RyICppbnN0ciA9IE5VTEw7Cj4gKwl1bnNpZ25lZCBp bnQgb3BfaWQgPSAwOwo+ICsJdW5zaWduZWQgaW50IGxlbiA9IDA7Cj4gKwlpbnQgcmV0ID0gMCwg bnVtX2N3ID0gMSwgaTsKPiArCXUzMiBmbGFzaF9zdGF0dXM7Cj4gKwo+ICsJaG9zdC0+c3RhdHVz ID0gTkFORF9TVEFUVVNfUkVBRFkgfCBOQU5EX1NUQVRVU19XUDsKPiArCj4gKwlxY29tX3BhcnNl X2luc3RydWN0aW9ucyhjaGlwLCBzdWJvcCwgJnFfb3ApOwo+ICsKPiArCWlmIChuYW5kYy0+ZXhl Y19vcHdyaXRlKSB7CgpJIGRlZmluaXRlbHkgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIGZsYWcgYXQg YWxsLgoKPiArCQludW1fY3cgPSBlY2MtPnN0ZXBzOwo+ICsJCW5hbmRjLT5leGVjX29wd3JpdGUg PSBmYWxzZTsKPiArCX0KPiArCj4gKwlwcmVfY29tbWFuZChob3N0LCBOQU5EX0NNRF9TVEFUVVMp Owo+ICsKPiArCW5hbmRjX3NldF9yZWcoY2hpcCwgTkFORF9GTEFTSF9DTUQsIHFfb3AuY21kX3Jl Zyk7Cj4gKwluYW5kY19zZXRfcmVnKGNoaXAsIE5BTkRfRVhFQ19DTUQsIDEpOwo+ICsKPiArCXdy aXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxBU0hfQ01ELCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7 Cj4gKwl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VYRUNfQ01ELCAxLCBOQU5EX0JBTV9ORVhU X1NHTCk7Cj4gKwo+ICsJcmVhZF9yZWdfZG1hKG5hbmRjLCBOQU5EX0ZMQVNIX1NUQVRVUywgMSwg TkFORF9CQU1fTkVYVF9TR0wpOwo+ICsKPiArCXJldCA9IHN1Ym1pdF9kZXNjcyhuYW5kYyk7Cj4g KwlpZiAocmV0KQo+ICsJCWRldl9lcnIobmFuZGMtPmRldiwgImZhaWx1cmUgaW4gc2J1bWl0dGlu ZyBzdGF0dXMgZGVzY3JpcHRvclxuIik7Cj4gKwo+ICsJZnJlZV9kZXNjcyhuYW5kYyk7Cj4gKwo+ ICsJbmFuZGNfcmVhZF9idWZmZXJfc3luYyhuYW5kYywgdHJ1ZSk7Cj4gKwlmb3IgKGkgPSAwOyBp IDwgbnVtX2N3OyBpKyspIHsKPiArCQlmbGFzaF9zdGF0dXMgPSBsZTMyX3RvX2NwdShuYW5kYy0+ cmVnX3JlYWRfYnVmW2ldKTsKPiArCj4gKwlpZiAoZmxhc2hfc3RhdHVzICYgRlNfTVBVX0VSUikK PiArCQlob3N0LT5zdGF0dXMgJj0gfk5BTkRfU1RBVFVTX1dQOwo+ICsKPiArCWlmIChmbGFzaF9z dGF0dXMgJiBGU19PUF9FUlIgfHwgKGkgPT0gKG51bV9jdyAtIDEpICYmCj4gKwkJCQkJIChmbGFz aF9zdGF0dXMgJiBGU19ERVZJQ0VfU1RTX0VSUikpKQo+ICsJCWhvc3QtPnN0YXR1cyB8PSBOQU5E X1NUQVRVU19GQUlMOwoKSWYgdGhlcmUgaXMgYSBmYWlsdXJlIGRldGVjdGVkLCBlcnJvciBvdXQg KGV2ZXJ5d2hlcmUpLgoKPiArCX0KPiArCj4gKwlmbGFzaF9zdGF0dXMgPSBob3N0LT5zdGF0dXM7 Cj4gKwo+ICsJaW5zdHIgPSBxX29wLmRhdGFfaW5zdHI7Cj4gKwlvcF9pZCA9IHFfb3AuZGF0YV9p bnN0cl9pZHg7Cj4gKwlsZW4gPSBuYW5kX3N1Ym9wX2dldF9kYXRhX2xlbihzdWJvcCwgb3BfaWQp Owo+ICsJbWVtY3B5KGluc3RyLT5jdHguZGF0YS5idWYuaW4sICZmbGFzaF9zdGF0dXMsIGxlbik7 Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBxY29tX2VyYXNlX2Nt ZF90eXBlX2V4ZWMoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwgY29uc3Qgc3RydWN0IG5hbmRfc3Vi b3AgKnN1Ym9wKQo+IEBAIC0zMDAwLDEyICszMDkxLDgxIEBAIHN0YXRpYyBpbnQgcWNvbV9wYXJh bV9wYWdlX3R5cGVfZXhlYyhzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLCAgY29uc3Qgc3RydWN0IG5h bmRfCj4gIAo+ICBzdGF0aWMgaW50IHFjb21fcmVhZF9pZF90eXBlX2V4ZWMoc3RydWN0IG5hbmRf Y2hpcCAqY2hpcCwgY29uc3Qgc3RydWN0IG5hbmRfc3Vib3AgKnN1Ym9wKQo+ICB7Cj4gLQlyZXR1 cm4gMDsKPiArCXN0cnVjdCBxY29tX25hbmRfY29udHJvbGxlciAqbmFuZGMgPSBnZXRfcWNvbV9u YW5kX2NvbnRyb2xsZXIoY2hpcCk7Cj4gKwlzdHJ1Y3QgcWNvbV9uYW5kX2hvc3QgKmhvc3QgPSB0 b19xY29tX25hbmRfaG9zdChjaGlwKTsKPiArCXN0cnVjdCBxY29tX29wIHFfb3A7Cj4gKwljb25z dCBzdHJ1Y3QgbmFuZF9vcF9pbnN0ciAqaW5zdHIgPSBOVUxMOwo+ICsJdW5zaWduZWQgaW50IG9w X2lkID0gMDsKPiArCXVuc2lnbmVkIGludCBsZW4gPSAwOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ ICsJcWNvbV9wYXJzZV9pbnN0cnVjdGlvbnMoY2hpcCwgc3Vib3AsICZxX29wKTsKPiArCj4gKwlw cmVfY29tbWFuZChob3N0LCBOQU5EX0NNRF9SRUFESUQpOwo+ICsKPiArCW5hbmRjX3NldF9yZWco Y2hpcCwgTkFORF9GTEFTSF9DTUQsIHFfb3AuY21kX3JlZyk7Cj4gKwluYW5kY19zZXRfcmVnKGNo aXAsIE5BTkRfQUREUjAsIHFfb3AuYWRkcjFfcmVnKTsKPiArCW5hbmRjX3NldF9yZWcoY2hpcCwg TkFORF9BRERSMSwgcV9vcC5hZGRyMl9yZWcpOwo+ICsJbmFuZGNfc2V0X3JlZyhjaGlwLCBOQU5E X0ZMQVNIX0NISVBfU0VMRUNULAo+ICsJCSAgICAgIG5hbmRjLT5wcm9wcy0+aXNfYmFtID8gMCA6 IERNX0VOKTsKPiArCj4gKwluYW5kY19zZXRfcmVnKGNoaXAsIE5BTkRfRVhFQ19DTUQsIDEpOwo+ ICsKPiArCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxBU0hfQ01ELCA0LCBOQU5EX0JBTV9O RVhUX1NHTCk7Cj4gKwl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VYRUNfQ01ELCAxLCBOQU5E X0JBTV9ORVhUX1NHTCk7Cj4gKwo+ICsJcmVhZF9yZWdfZG1hKG5hbmRjLCBOQU5EX1JFQURfSUQs IDEsIE5BTkRfQkFNX05FWFRfU0dMKTsKPiArCj4gKwlyZXQgPSBzdWJtaXRfZGVzY3MobmFuZGMp Owo+ICsJaWYgKHJldCkKPiArCQlkZXZfZXJyKG5hbmRjLT5kZXYsICJmYWlsdXJlIGluIHNidW1p dHRpbmcgcmVhZCBpZCBkZXNjcmlwdG9yXG4iKTsKPiArCj4gKwlmcmVlX2Rlc2NzKG5hbmRjKTsK PiArCj4gKwlpbnN0ciA9IHFfb3AuZGF0YV9pbnN0cjsKPiArCW9wX2lkID0gcV9vcC5kYXRhX2lu c3RyX2lkeDsKPiArCWxlbiA9IG5hbmRfc3Vib3BfZ2V0X2RhdGFfbGVuKHN1Ym9wLCBvcF9pZCk7 Cj4gKwo+ICsJbmFuZGNfcmVhZF9idWZmZXJfc3luYyhuYW5kYywgdHJ1ZSk7Cj4gKwltZW1jcHko aW5zdHItPmN0eC5kYXRhLmJ1Zi5pbiwgbmFuZGMtPnJlZ19yZWFkX2J1ZiwgbGVuKTsKPiArCj4g KwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHFjb21fbWlzY19jbWRfdHlwZV9l eGVjKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsIGNvbnN0IHN0cnVjdCBuYW5kX3N1Ym9wICpzdWJv cCkKPiAgewo+IC0JcmV0dXJuIDA7Cj4gKwlzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgKm5h bmRjID0gZ2V0X3Fjb21fbmFuZF9jb250cm9sbGVyKGNoaXApOwo+ICsJc3RydWN0IHFjb21fbmFu ZF9ob3N0ICpob3N0ID0gdG9fcWNvbV9uYW5kX2hvc3QoY2hpcCk7Cj4gKwlzdHJ1Y3QgcWNvbV9v cCBxX29wOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJcWNvbV9wYXJzZV9pbnN0cnVjdGlvbnMo Y2hpcCwgc3Vib3AsICZxX29wKTsKPiArCj4gKwlpZiAocV9vcC5mbGFnID09IE5BTkRfQ01EX1BB R0VQUk9HKQo+ICsJCWdvdG8gd2FpdF9yZHk7Cj4gKwo+ICsJcHJlX2NvbW1hbmQoaG9zdCwgTkFO RF9DTURfUkVTRVQpOwoKPz8/Cgo+ICsKPiArCW5hbmRjX3NldF9yZWcoY2hpcCwgTkFORF9GTEFT SF9DTUQsIHFfb3AuY21kX3JlZyk7Cj4gKwluYW5kY19zZXRfcmVnKGNoaXAsIE5BTkRfRVhFQ19D TUQsIDEpOwo+ICsKPiArCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxBU0hfQ01ELCAxLCBO QU5EX0JBTV9ORVhUX1NHTCk7Cj4gKwl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VYRUNfQ01E LCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7Cj4gKwo+ICsJcmVhZF9yZWdfZG1hKG5hbmRjLCBOQU5E X0ZMQVNIX1NUQVRVUywgMSwgTkFORF9CQU1fTkVYVF9TR0wpOwo+ICsKPiArCXJldCA9IHN1Ym1p dF9kZXNjcyhuYW5kYyk7Cj4gKwlpZiAocmV0KQo+ICsJCWRldl9lcnIobmFuZGMtPmRldiwgImZh aWx1cmUgaW4gc2J1bWl0dGluZyBtaXNjIGRlc2NyaXB0b3JcbiIpOwoKVHlwbyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KClNhbWUgYWJvdmUuCgpZb3Ugc2hv dWxkIGVycm9yIG91dCBpbW1lZGlhdGVseSB3aGVuIHNvbWV0aGluZyB3cm9uZyBoYXBwZW5zLgoK PiArCj4gKwlmcmVlX2Rlc2NzKG5hbmRjKTsKPiArCj4gK3dhaXRfcmR5Ogo+ICsJcWNvbV9kZWxh eV9ucyhxX29wLnJkeV9kZWxheV9ucyk7Cj4gKwo+ICsJcmV0ID0gcWNvbV93YWl0X3JkeV9wb2xs KGNoaXAsIHFfb3AucmR5X3RpbWVvdXRfbXMpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAg Cj4gIHN0YXRpYyBpbnQgcWNvbV9kYXRhX3JlYWRfdHlwZV9leGVjKHN0cnVjdCBuYW5kX2NoaXAg KmNoaXAsIGNvbnN0IHN0cnVjdCBuYW5kX3N1Ym9wICpzdWJvcCkKCgpUaGFua3MsCk1pcXXDqGwK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpM aW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==