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 645D1C7EE37 for ; Thu, 8 Jun 2023 13:58:44 +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=c0RGY28Y5TurzgpN98JLFZfnDKG6ZRa+LMrhEHhY6s8=; b=V2Y5APjzrpfpXA avOyNfjKIjaWwtAbPBKq24l5geuemSWWnjVTzwOigMav11AvuXUmJ4cpVqhqkfJ0GK8zSCyCKj9mE RTqLhM5c1GVdqiqzFVZtK9E80PmThU3l2kYQ5Q2CfSHbULbT/Tj+xVVWFsv5G9O7MLPrG1OvlNE16 72kPlpaC5isxeE8BtUlD/L2155yp+pMhKY9AEwhBwzk3oMmB8DU1gbgOikFsLGbCGPJ8TIzVCDlGS Dqql6r5xj8D/t6T0n9rAV7FodVUs9x+FgGMhYK0klcJFBHw++ChTN/0bzXh8s5LNI/h7mqBB/Y0/T mT6oNFbpuOnvKrUjLccg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q7G9n-009XwA-0t; Thu, 08 Jun 2023 13:58:31 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q7G9h-009XuI-2V for linux-mtd@lists.infradead.org; Thu, 08 Jun 2023 13:58:28 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1686232700; 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=hu8WQ6UxuPnSUFTYE06bY2rD6OPC19JmrSL9FS3lZP8=; b=ijN72V67HxZX7oEwK58MjxHVsz/n5DfhRoMMT4rsCE560/wxNabK0bKLdE1VrvgQlA6kT2 9ufa43OnBSXpq4pHC973875hhk9oYeKFxRzj8DwUQL/ZowyleCg7nOGRBGnqjH04/6GrU8 px5ZqblwqeByLxrW0adXfdhKAoZ/L0RLHyVTZxL3/wx10RqtPNh3/OmEb5A6hQ4ygjgDJ6 HJfTAnVXDRCYtDz85/leEjizJceMfbT0wA5ghj3FoTyNYa3weWKtjrYa12OgwkyzUh0K0n q7JTlm6CKLn4Tsdtm3W9uslfz5COEA2fV2yxsFIMW6iBHcC3fXkLiwpLhHBH1g== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 1B9C1E0011; Thu, 8 Jun 2023 13:58:19 +0000 (UTC) Date: Thu, 8 Jun 2023 15:58:19 +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 v3 2/5] mtd: rawnand: qcom: Add support for reset, readid, status exec_op Message-ID: <20230608155819.4b1e4276@xps-13> In-Reply-To: <20230531124953.21007-2-quic_mdalam@quicinc.com> References: <20230531124953.21007-1-quic_mdalam@quicinc.com> <20230531124953.21007-2-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-20230608_065826_270080_4937BB74 X-CRM114-Status: GOOD ( 26.45 ) 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 SGVsbG8sCgpxdWljX21kYWxhbUBxdWljaW5jLmNvbSB3cm90ZSBvbiBXZWQsIDMxIE1heSAyMDIz IDE4OjE5OjUwICswNTMwOgoKPiBUaGlzIGNoYW5nZSB3aWxsIGFkZCBleGVjX29wcyBzdXBwb3J0 IGZvciBSRVNFVCAsIFJFQURfSUQsIFNUQVRVUwo+IGNvbW1hbmQuCgpJbXBlcmF0aXZlIGZvcm0g aGVyZSBhbmQgYWZ0ZXIgaW4geW91ciBjb21taXQgbG9nIHBsZWFzZS4KCkFkZCBzdXBwb3J0IGZv ci4uLgoKTWlub3IgY29tbWVudHMgYmVsb3csIG90aGVyd2lzZSBsb29rcyBnb29kLgoKPiAKPiBD by1kZXZlbG9wZWQtYnk6IFNyaWNoYXJhbiBSYW1hYmFkaHJhbiA8cXVpY19zcmljaGFyYUBxdWlj aW5jLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBTcmljaGFyYW4gUmFtYWJhZGhyYW4gPHF1aWNfc3Jp Y2hhcmFAcXVpY2luYy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWQgU2FkcmUgQWxhbSA8cXVpY19t ZGFsYW1AcXVpY2luYy5jb20+Cj4gLS0tCj4gQ2hhbmdlIGluIFt2M10KPiAKPiAqIFVwZGF0ZWQg cV9vcC0+ZmxhZyBpbiBxY29tX29wX2NtZF9tYXBwaW5nKCkgd2l0aCBPUF9QUk9HUkFNX1BBR0UK PiAgIGluc3RlYWQgTkFORF9DTURfUEFHRVBST0cKPiAKPiAqIENoYW5nZSB0aGUgaWYgY29uZGl0 aW9uIGNoZWNrIGZvciBleGVjX29wd3JpdGUgaW50byBzaW5nbGUgbGluZSBjaGVjay4KPiAKPiAq IEFkZGVkIGVycm9yIGNoZWNrCj4gCj4gKiBSZW1vdmVkIGNoZWNrIGZvciBOQU5EX0NNRF9SRVNF VCwgTkFORF9DTURfUkVBRElEIGZyb20gcHJlX2NvbW1hbmQuCj4gCj4gQ2hhbmdlIGluIFt2Ml0K PiAKPiAqIE1pc3NlZCB0byBwb3N0IENvdmVyLWxldHRlciwgc28gcG9zdGluZyB2MiBwYXRjaCB3 aXRoIGNvdmVyLWxldHRlcgo+IAo+IENoYW5nZSBpbiBbdjFdCj4gCj4gKiBBZGRlZCBpbml0aWFs IHN1cHBvcnQgZm9yIGV4ZWNfb3BzLgo+ICAgIAo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29t X25hbmRjLmMgfCAyMTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIDEgZmlsZSBj aGFuZ2VkLCAyMTUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jIGIvZHJpdmVycy9tdGQvbmFuZC9y YXcvcWNvbV9uYW5kYy5jCj4gaW5kZXggNmE4M2NkODZhMTJkLi42NTliYTkyM2I2OGEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jCj4gKysrIGIvZHJpdmVy cy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jCj4gQEAgLTM4NSw2ICszODUsOSBAQCBzdHJ1Y3Qg bmFuZGNfcmVncyB7Cj4gICAqIEByZWdfcmVhZF9wb3M6CQltYXJrZXIgZm9yIGRhdGEgcmVhZCBp biByZWdfcmVhZF9idWYKPiAgICoKPiAgICogQGNtZDEvdmxkOgkJCXNvbWUgZml4ZWQgY29udHJv bGxlciByZWdpc3RlciB2YWx1ZXMKPiArICoKPiArICogQGV4ZWNfb3B3cml0ZToJCWZsYWcgdG8g c2VsZWN0IGNvcnJlY3QgbnVtYmVyIG9mIGNvZGUgd29yZAo+ICsgKgkJCQl3aGlsZSByZWFkaW5n IHN0YXR1cwo+ICAgKi8KPiAgc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyIHsKPiAgCXN0cnVj dCBkZXZpY2UgKmRldjsKPiBAQCAtNDM1LDYgKzQzOCw3IEBAIHN0cnVjdCBxY29tX25hbmRfY29u dHJvbGxlciB7Cj4gIAlpbnQgcmVnX3JlYWRfcG9zOwo+ICAKPiAgCXUzMiBjbWQxLCB2bGQ7Cj4g Kwlib29sIGV4ZWNfb3B3cml0ZTsKPiAgfTsKPiAgCj4gIC8qCj4gQEAgLTE1NDIsOCArMTU0Niw3 IEBAIHN0YXRpYyB2b2lkIHByZV9jb21tYW5kKHN0cnVjdCBxY29tX25hbmRfaG9zdCAqaG9zdCwg aW50IGNvbW1hbmQpCj4gIAo+ICAJY2xlYXJfcmVhZF9yZWdzKG5hbmRjKTsKPiAgCj4gLQlpZiAo Y29tbWFuZCA9PSBOQU5EX0NNRF9SRVNFVCB8fCBjb21tYW5kID09IE5BTkRfQ01EX1JFQURJRCB8 fAo+IC0JICAgIGNvbW1hbmQgPT0gTkFORF9DTURfUEFSQU0gfHwgY29tbWFuZCA9PSBOQU5EX0NN RF9FUkFTRTEpCj4gKwlpZiAoY29tbWFuZCA9PSBOQU5EX0NNRF9QQVJBTSB8fCBjb21tYW5kID09 IE5BTkRfQ01EX0VSQVNFMSkKPiAgCQljbGVhcl9iYW1fdHJhbnNhY3Rpb24obmFuZGMpOwo+ICB9 Cj4gIAo+IEBAIC0yOTIwLDYgKzI5MjMsOCBAQCBzdGF0aWMgaW50IHFjb21fb3BfY21kX21hcHBp bmcoc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYywgdTggY21kLAo+ICAJCWJyZWFr Owo+ICAJY2FzZSBOQU5EX0NNRF9QQUdFUFJPRzoKPiAgCQlyZXQgPSBPUF9QUk9HUkFNX1BBR0U7 Cj4gKwkJcV9vcC0+ZmxhZyA9IE9QX1BST0dSQU1fUEFHRTsKPiArCQluYW5kYy0+ZXhlY19vcHdy aXRlID0gdHJ1ZTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJYnJlYWs7Cj4gQEAgLTI5 ODIsNiArMjk4NywyMTIgQEAgc3RhdGljIHZvaWQgcWNvbV9wYXJzZV9pbnN0cnVjdGlvbnMoc3Ry dWN0IG5hbmRfY2hpcCAqY2hpcCwKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgcWNvbV9k ZWxheV9ucyh1bnNpZ25lZCBpbnQgbnMpCj4gK3sKPiArCWlmICghbnMpCj4gKwkJcmV0dXJuOwo+ ICsKPiArCWlmIChucyA8IDEwMDAwKQo+ICsJCW5kZWxheShucyk7Cj4gKwllbHNlCj4gKwkJdWRl bGF5KERJVl9ST1VORF9VUChucywgMTAwMCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHFjb21f d2FpdF9yZHlfcG9sbChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLCB1bnNpZ25lZCBpbnQgdGltZV9t cykKPiArewo+ICsJc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYyA9IGdldF9xY29t X25hbmRfY29udHJvbGxlcihjaGlwKTsKPiArCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSBqaWZmaWVz ICsgbXNlY3NfdG9famlmZmllcyh0aW1lX21zKTsKPiArCXUzMiBmbGFzaDsKPiArCj4gKwluYW5k Y19yZWFkX2J1ZmZlcl9zeW5jKG5hbmRjLCB0cnVlKTsKPiArCj4gKwlkbyB7Cj4gKwkJZmxhc2gg PSBsZTMyX3RvX2NwdShuYW5kYy0+cmVnX3JlYWRfYnVmWzBdKTsKPiArCQlpZiAoZmxhc2ggJiBG U19SRUFEWV9CU1lfTikKPiArCQkJcmV0dXJuIDA7Cj4gKwkJY3B1X3JlbGF4KCk7Cj4gKwl9IHdo aWxlICh0aW1lX2FmdGVyKHN0YXJ0LCBqaWZmaWVzKSk7Cj4gKwo+ICsJZGV2X2VycihuYW5kYy0+ ZGV2LCAiVGltZW91dCB3YWl0aW5nIGZvciBkZXZpY2UgdG8gYmUgcmVhZHk6MHglMDh4XG4iLCBm bGFzaCk7Cj4gKwo+ICsJcmV0dXJuIC1FVElNRURPVVQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg cWNvbV9yZWFkX3N0YXR1c19leGVjKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsCj4gKwkJCQkgY29u c3Qgc3RydWN0IG5hbmRfc3Vib3AgKnN1Ym9wKQo+ICt7Cj4gKwlzdHJ1Y3QgcWNvbV9uYW5kX2hv c3QgKmhvc3QgPSB0b19xY29tX25hbmRfaG9zdChjaGlwKTsKPiArCXN0cnVjdCBxY29tX25hbmRf Y29udHJvbGxlciAqbmFuZGMgPSBnZXRfcWNvbV9uYW5kX2NvbnRyb2xsZXIoY2hpcCk7Cj4gKwlz dHJ1Y3QgbmFuZF9lY2NfY3RybCAqZWNjID0gJmNoaXAtPmVjYzsKPiArCXN0cnVjdCBxY29tX29w IHFfb3A7Cj4gKwljb25zdCBzdHJ1Y3QgbmFuZF9vcF9pbnN0ciAqaW5zdHIgPSBOVUxMOwo+ICsJ dW5zaWduZWQgaW50IG9wX2lkID0gMDsKPiArCXVuc2lnbmVkIGludCBsZW4gPSAwOwo+ICsJaW50 IHJldCA9IDAsIG51bV9jdywgaTsKPiArCXUzMiBmbGFzaF9zdGF0dXM7Cj4gKwo+ICsJaG9zdC0+ c3RhdHVzID0gTkFORF9TVEFUVVNfUkVBRFkgfCBOQU5EX1NUQVRVU19XUDsKPiArCj4gKwlxY29t X3BhcnNlX2luc3RydWN0aW9ucyhjaGlwLCBzdWJvcCwgJnFfb3ApOwo+ICsKPiArCW51bV9jdyA9 IG5hbmRjLT5leGVjX29wd3JpdGUgPyBlY2MtPnN0ZXBzIDogMTsKPiArCW5hbmRjLT5leGVjX29w d3JpdGUgPSBmYWxzZTsKPiArCj4gKwluYW5kYy0+YnVmX2NvdW50ID0gMDsKPiArCW5hbmRjLT5i dWZfc3RhcnQgPSAwOwo+ICsJaG9zdC0+dXNlX2VjYyA9IGZhbHNlOwo+ICsKPiArCWNsZWFyX3Jl YWRfcmVncyhuYW5kYyk7Cj4gKwljbGVhcl9iYW1fdHJhbnNhY3Rpb24obmFuZGMpOwo+ICsKPiAr CW5hbmRjX3NldF9yZWcoY2hpcCwgTkFORF9GTEFTSF9DTUQsIHFfb3AuY21kX3JlZyk7Cj4gKwlu YW5kY19zZXRfcmVnKGNoaXAsIE5BTkRfRVhFQ19DTUQsIDEpOwo+ICsKPiArCXdyaXRlX3JlZ19k bWEobmFuZGMsIE5BTkRfRkxBU0hfQ01ELCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7Cj4gKwl3cml0 ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VYRUNfQ01ELCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7Cj4g KwlyZWFkX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxBU0hfU1RBVFVTLCAxLCBOQU5EX0JBTV9ORVhU X1NHTCk7Cj4gKwo+ICsJcmV0ID0gc3VibWl0X2Rlc2NzKG5hbmRjKTsKPiArCWlmIChyZXQpIHsK PiArCQlkZXZfZXJyKG5hbmRjLT5kZXYsICJmYWlsdXJlIGluIHNidW1pdHRpbmcgc3RhdHVzIGRl c2NyaXB0b3JcbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KClBsZWFzZSBydW4gY2hlY2twYXRjaC5wbCAtLXN0cmljdAoKPiArCQlmcmVlX2Rl c2NzKG5hbmRjKTsKPiArCQlnb3RvIGVycl9vdXQ7Cj4gKwl9Cj4gKwlmcmVlX2Rlc2NzKG5hbmRj KTsKPiArCj4gKwluYW5kY19yZWFkX2J1ZmZlcl9zeW5jKG5hbmRjLCB0cnVlKTsKPiArCj4gKwlm b3IgKGkgPSAwOyBpIDwgbnVtX2N3OyBpKyspIHsKPiArCQlmbGFzaF9zdGF0dXMgPSBsZTMyX3Rv X2NwdShuYW5kYy0+cmVnX3JlYWRfYnVmW2ldKTsKPiArCj4gKwlpZiAoZmxhc2hfc3RhdHVzICYg RlNfTVBVX0VSUikKPiArCQlob3N0LT5zdGF0dXMgJj0gfk5BTkRfU1RBVFVTX1dQOwo+ICsKPiAr CWlmIChmbGFzaF9zdGF0dXMgJiBGU19PUF9FUlIgfHwgKGkgPT0gKG51bV9jdyAtIDEpICYmCj4g KwkJCQkJIChmbGFzaF9zdGF0dXMgJiBGU19ERVZJQ0VfU1RTX0VSUikpKQoKICAJaWYgKGZsYXNo X3N0YXR1cyAmIEZTX09QX0VSUiB8fAoJICAgIChpID09IChudW1fY3cgLSAxKSAmJiAoZmxhc2hf c3RhdHVzICYgRlNfREVWSUNFX1NUU19FUlIpKSkKCmxvb2tzIG1vcmUgcmVhZGFibGU/Cgo+ICsJ CWhvc3QtPnN0YXR1cyB8PSBOQU5EX1NUQVRVU19GQUlMOwo+ICsJfQo+ICsKPiArCWZsYXNoX3N0 YXR1cyA9IGhvc3QtPnN0YXR1czsKPiArCWluc3RyID0gcV9vcC5kYXRhX2luc3RyOwo+ICsJb3Bf aWQgPSBxX29wLmRhdGFfaW5zdHJfaWR4Owo+ICsJbGVuID0gbmFuZF9zdWJvcF9nZXRfZGF0YV9s ZW4oc3Vib3AsIG9wX2lkKTsKPiArCW1lbWNweShpbnN0ci0+Y3R4LmRhdGEuYnVmLmluLCAmZmxh c2hfc3RhdHVzLCBsZW4pOwo+ICsKPiArZXJyX291dDoKPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgcWNvbV9yZWFkX2lkX3R5cGVfZXhlYyhzdHJ1Y3QgbmFuZF9jaGlwICpj aGlwLCBjb25zdCBzdHJ1Y3QgbmFuZF9zdWJvcCAqc3Vib3ApCj4gK3sKPiArCXN0cnVjdCBxY29t X25hbmRfY29udHJvbGxlciAqbmFuZGMgPSBnZXRfcWNvbV9uYW5kX2NvbnRyb2xsZXIoY2hpcCk7 Cj4gKwlzdHJ1Y3QgcWNvbV9uYW5kX2hvc3QgKmhvc3QgPSB0b19xY29tX25hbmRfaG9zdChjaGlw KTsKPiArCXN0cnVjdCBxY29tX29wIHFfb3A7Cj4gKwljb25zdCBzdHJ1Y3QgbmFuZF9vcF9pbnN0 ciAqaW5zdHIgPSBOVUxMOwo+ICsJdW5zaWduZWQgaW50IG9wX2lkID0gMDsKPiArCXVuc2lnbmVk IGludCBsZW4gPSAwOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJcWNvbV9wYXJzZV9pbnN0cnVj dGlvbnMoY2hpcCwgc3Vib3AsICZxX29wKTsKPiArCj4gKwluYW5kYy0+YnVmX2NvdW50ID0gMDsK PiArCW5hbmRjLT5idWZfc3RhcnQgPSAwOwo+ICsJaG9zdC0+dXNlX2VjYyA9IGZhbHNlOwo+ICsK PiArCWNsZWFyX3JlYWRfcmVncyhuYW5kYyk7Cj4gKwljbGVhcl9iYW1fdHJhbnNhY3Rpb24obmFu ZGMpOwo+ICsKPiArCW5hbmRjX3NldF9yZWcoY2hpcCwgTkFORF9GTEFTSF9DTUQsIHFfb3AuY21k X3JlZyk7Cj4gKwluYW5kY19zZXRfcmVnKGNoaXAsIE5BTkRfQUREUjAsIHFfb3AuYWRkcjFfcmVn KTsKPiArCW5hbmRjX3NldF9yZWcoY2hpcCwgTkFORF9BRERSMSwgcV9vcC5hZGRyMl9yZWcpOwo+ ICsJbmFuZGNfc2V0X3JlZyhjaGlwLCBOQU5EX0ZMQVNIX0NISVBfU0VMRUNULAo+ICsJCSAgICAg IG5hbmRjLT5wcm9wcy0+aXNfYmFtID8gMCA6IERNX0VOKTsKPiArCj4gKwluYW5kY19zZXRfcmVn KGNoaXAsIE5BTkRfRVhFQ19DTUQsIDEpOwo+ICsKPiArCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5B TkRfRkxBU0hfQ01ELCA0LCBOQU5EX0JBTV9ORVhUX1NHTCk7Cj4gKwl3cml0ZV9yZWdfZG1hKG5h bmRjLCBOQU5EX0VYRUNfQ01ELCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7Cj4gKwo+ICsJcmVhZF9y ZWdfZG1hKG5hbmRjLCBOQU5EX1JFQURfSUQsIDEsIE5BTkRfQkFNX05FWFRfU0dMKTsKPiArCj4g KwlyZXQgPSBzdWJtaXRfZGVzY3MobmFuZGMpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIo bmFuZGMtPmRldiwgImZhaWx1cmUgaW4gc2J1bWl0dGluZyByZWFkIGlkIGRlc2NyaXB0b3JcbiIp Owo+ICsJCWZyZWVfZGVzY3MobmFuZGMpOwo+ICsJCWdvdG8gZXJyX291dDsKPiArCX0KPiArCWZy ZWVfZGVzY3MobmFuZGMpOwo+ICsKPiArCWluc3RyID0gcV9vcC5kYXRhX2luc3RyOwo+ICsJb3Bf aWQgPSBxX29wLmRhdGFfaW5zdHJfaWR4Owo+ICsJbGVuID0gbmFuZF9zdWJvcF9nZXRfZGF0YV9s ZW4oc3Vib3AsIG9wX2lkKTsKPiArCj4gKwluYW5kY19yZWFkX2J1ZmZlcl9zeW5jKG5hbmRjLCB0 cnVlKTsKPiArCW1lbWNweShpbnN0ci0+Y3R4LmRhdGEuYnVmLmluLCBuYW5kYy0+cmVnX3JlYWRf YnVmLCBsZW4pOwo+ICsKPiArZXJyX291dDoKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgcWNvbV9taXNjX2NtZF90eXBlX2V4ZWMoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwg Y29uc3Qgc3RydWN0IG5hbmRfc3Vib3AgKnN1Ym9wKQo+ICt7Cj4gKwlzdHJ1Y3QgcWNvbV9uYW5k X2NvbnRyb2xsZXIgKm5hbmRjID0gZ2V0X3Fjb21fbmFuZF9jb250cm9sbGVyKGNoaXApOwo+ICsJ c3RydWN0IHFjb21fbmFuZF9ob3N0ICpob3N0ID0gdG9fcWNvbV9uYW5kX2hvc3QoY2hpcCk7Cj4g KwlzdHJ1Y3QgcWNvbV9vcCBxX29wOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJcWNvbV9wYXJz ZV9pbnN0cnVjdGlvbnMoY2hpcCwgc3Vib3AsICZxX29wKTsKPiArCj4gKwlpZiAocV9vcC5mbGFn ID09IE9QX1BST0dSQU1fUEFHRSkKPiArCQlnb3RvIHdhaXRfcmR5Owo+ICsKPiArCW5hbmRjLT5i dWZfY291bnQgPSAwOwo+ICsJbmFuZGMtPmJ1Zl9zdGFydCA9IDA7Cj4gKwlob3N0LT51c2VfZWNj ID0gZmFsc2U7Cj4gKwo+ICsJY2xlYXJfcmVhZF9yZWdzKG5hbmRjKTsKPiArCWNsZWFyX2JhbV90 cmFuc2FjdGlvbihuYW5kYyk7Cj4gKwo+ICsJbmFuZGNfc2V0X3JlZyhjaGlwLCBOQU5EX0ZMQVNI X0NNRCwgcV9vcC5jbWRfcmVnKTsKPiArCW5hbmRjX3NldF9yZWcoY2hpcCwgTkFORF9FWEVDX0NN RCwgMSk7Cj4gKwo+ICsJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9DTUQsIDEsIE5B TkRfQkFNX05FWFRfU0dMKTsKPiArCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRVhFQ19DTUQs IDEsIE5BTkRfQkFNX05FWFRfU0dMKTsKPiArCj4gKwlyZWFkX3JlZ19kbWEobmFuZGMsIE5BTkRf RkxBU0hfU1RBVFVTLCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7Cj4gKwo+ICsJcmV0ID0gc3VibWl0 X2Rlc2NzKG5hbmRjKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKG5hbmRjLT5kZXYsICJm YWlsdXJlIGluIHNidW1pdHRpbmcgbWlzYyBkZXNjcmlwdG9yXG4iKTsKPiArCQlmcmVlX2Rlc2Nz KG5hbmRjKTsKPiArCQlnb3RvIGVycl9vdXQ7Cj4gKwl9Cj4gKwlmcmVlX2Rlc2NzKG5hbmRjKTsK PiArCj4gK3dhaXRfcmR5Ogo+ICsJcWNvbV9kZWxheV9ucyhxX29wLnJkeV9kZWxheV9ucyk7Cj4g KwlyZXQgPSBxY29tX3dhaXRfcmR5X3BvbGwoY2hpcCwgcV9vcC5yZHlfdGltZW91dF9tcyk7Cj4g Kwo+ICtlcnJfb3V0Ogo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBuYW5kX29wX3BhcnNlciBxY29tX29wX3BhcnNlciA9IE5BTkRfT1BfUEFSU0VSKAo+ICsJ CU5BTkRfT1BfUEFSU0VSX1BBVFRFUk4oCj4gKwkJCXFjb21fbWlzY19jbWRfdHlwZV9leGVjLAo+ ICsJCQlOQU5EX09QX1BBUlNFUl9QQVRfQ01EX0VMRU0oZmFsc2UpLAo+ICsJCQlOQU5EX09QX1BB UlNFUl9QQVRfV0FJVFJEWV9FTEVNKGZhbHNlKSksCj4gKwkJTkFORF9PUF9QQVJTRVJfUEFUVEVS TigKPiArCQkJcWNvbV9yZWFkX2lkX3R5cGVfZXhlYywKPiArCQkJTkFORF9PUF9QQVJTRVJfUEFU X0NNRF9FTEVNKGZhbHNlKSwKPiArCQkJTkFORF9PUF9QQVJTRVJfUEFUX0FERFJfRUxFTShmYWxz ZSwgTUFYX0FERFJFU1NfQ1lDTEUpLAo+ICsJCQlOQU5EX09QX1BBUlNFUl9QQVRfREFUQV9JTl9F TEVNKGZhbHNlLCA4KSksCj4gKwkJTkFORF9PUF9QQVJTRVJfUEFUVEVSTigKPiArCQkJcWNvbV9y ZWFkX3N0YXR1c19leGVjLAo+ICsJCQlOQU5EX09QX1BBUlNFUl9QQVRfQ01EX0VMRU0oZmFsc2Up LAo+ICsJCQlOQU5EX09QX1BBUlNFUl9QQVRfREFUQV9JTl9FTEVNKGZhbHNlLCAxKSksCj4gKwkJ KTsKPiArCj4gIHN0YXRpYyBpbnQgcWNvbV9jaGVja19vcChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlw LAo+ICAJCQljb25zdCBzdHJ1Y3QgbmFuZF9vcGVyYXRpb24gKm9wKQo+ICB7Cj4gQEAgLTMwMjIs NyArMzIzMyw4IEBAIHN0YXRpYyBpbnQgcWNvbV9uYW5kX2V4ZWNfb3Aoc3RydWN0IG5hbmRfY2hp cCAqY2hpcCwKPiAgCWlmIChjaGVja19vbmx5KQo+ICAJCXJldHVybiBxY29tX2NoZWNrX29wKGNo aXAsIG9wKTsKPiAgCj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBuYW5kX29wX3BhcnNlcl9leGVj X29wKGNoaXAsICZxY29tX29wX3BhcnNlciwKPiArCQkJb3AsIGNoZWNrX29ubHkpOwo+ICB9Cj4g IAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG5hbmRfY29udHJvbGxlcl9vcHMgcWNvbV9uYW5kY19v cHMgPSB7CgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0 Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=