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 AED2EC282EC for ; Tue, 18 Mar 2025 16:15:27 +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:Message-ID:Date:References :In-Reply-To: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=eRc5ETlXR4vQQLydegs9jZ4AQmzxkcKFV57x6yKQcw0=; b=0FuPJYfPaLx/HP TTjhCGysoYTbg6/o5eUNPQhCGP5nkPBEQdplwMW2zp8ONP6IvAVhDwmRnyqfpJPiHCwLn1nRwNyyL RGGMBM2g/etxfi2PWMAv54JCi0mbDz2TfEzm8bykz1MTST4+DWuoYzqLzfMBdRfa8cyC4ua6Lh7VW y/kuY30sbnT/V4btgC6DFKHNX+saWTiwh2QmyQx6VIzQhJKjpkCACBAtsqgVNPwc1dCsR50WmCSS3 DZ+pbmX5tqrJxxhyhq59/Pec1qPX+q0sj2Wnfkv1Vscagt1RuLaueF6J7TZugRA3Wi1uJPaBZFmVa kijnsm7J0IjZvSLnY1nQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tuZbB-00000006Tjw-2g49; Tue, 18 Mar 2025 16:15:25 +0000 Received: from relay5-d.mail.gandi.net ([2001:4b98:dc4:8::225]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tuZb9-00000006Tja-1aBs for linux-mtd@lists.infradead.org; Tue, 18 Mar 2025 16:15:24 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 82D0244334; Tue, 18 Mar 2025 16:15:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1742314521; 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=49feSNemOU7EPSuBa47yi8C389AMdSk2iptgVd3hTsg=; b=S9bzmef5hK8s+597uaNPicvHWx+7YzIQzyU/tmdUJVb4wNbYMxEwtv87JYbeJacLC5gcFa ZKkW+7x1V2/OwJImVfvVqhjEWaah3uH5DIeQArDkzodmJzrpO77YAAAgxrRDTOa8Cx7kb/ xqWRThVIqC2wKMc8AxZJv+4x5l9poN0zYiHLlT0cmY+nzk48rLf4j+aMUThwqHEeRyorse JtmaSQaXaTc9iXpX/HJzSkmWPC2DhJwDvY7G57Zf0/Thdfo80H9Ts1lChJgevFPbZLwNsb +d0UExwEO4cnf0hE76Ydko9ANuYqYg+NZjSePeLwsVTv7Ozrp6QjdUMyBPT8BQ== From: Miquel Raynal To: Keguang Zhang via B4 Relay Cc: Richard Weinberger , Vignesh Raghavendra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , keguang.zhang@gmail.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-mips@vger.kernel.org Subject: Re: [PATCH v13 2/2] mtd: rawnand: Add Loongson-1 NAND Controller Driver In-Reply-To: <20250305-loongson1-nand-v13-2-a5bac21631cd@gmail.com> (Keguang Zhang via's message of "Wed, 05 Mar 2025 19:05:05 +0800") References: <20250305-loongson1-nand-v13-0-a5bac21631cd@gmail.com> <20250305-loongson1-nand-v13-2-a5bac21631cd@gmail.com> User-Agent: mu4e 1.12.7; emacs 29.4 Date: Tue, 18 Mar 2025 17:15:20 +0100 Message-ID: <877c4m71t3.fsf@bootlin.com> MIME-Version: 1.0 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddugedvkeelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefhvfevufgjfhgffffkgggtgfesthhqredttderjeenucfhrhhomhepofhiqhhuvghlucftrgihnhgrlhcuoehmihhquhgvlhdrrhgrhihnrghlsegsohhothhlihhnrdgtohhmqeenucggtffrrghtthgvrhhnpeffgefhjedtfeeigeduudekudejkedtiefhleelueeiueevheekvdeludehiedvfeenucfkphepledtrdekledrudeifedruddvjeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeeltddrkeelrdduieefrdduvdejpdhhvghloheplhhotggrlhhhohhsthdpmhgrihhlfhhrohhmpehmihhquhgvlhdrrhgrhihnrghlsegsohhothhlihhnrdgtohhmpdhnsggprhgtphhtthhopeduuddprhgtphhtthhopeguvghvnhhulhhlodhkvghguhgrnhhgrdiihhgrnhhgrdhgmhgrihhlrdgtohhmsehkvghrnhgvlhdrohhrghdprhgtphhtthhopehrihgthhgrrhgusehnohgurdgrthdprhgtphhtthhopehvihhgnhgvshhhrhesthhirdgtohhmpdhrtghpthhtoheprhhosghhsehkvghrnhgvlhdrohhrghdprhgtphhtthhopehkrhiikhdoughtsehkvghrnhgvlhdrohhrghdprhgtphhtt hhopegtohhnohhrodgutheskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepkhgvghhurghnghdriihhrghnghesghhmrghilhdrtghomhdprhgtphhtthhopehlihhnuhigqdhmthgusehlihhsthhsrdhinhhfrhgruggvrggurdhorhhg X-GND-Sasl: miquel.raynal@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250318_091523_864177_21FD8345 X-CRM114-Status: GOOD ( 16.77 ) 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 SGVsbG8gS2VndWFuZywKCkkgZ3Vlc3MgSSBhbSBtb3N0bHkgZmluZSB3aXRoIHRoZSBkcml2ZXIs IGl0J3MgcHJvYmFibHkgdGltZSB0byBtZXJnZQppdC4gSnVzdCBhIGZldyBmaW5hbCBjaGFuZ2Vz IGJlbG93LCBJIHBsYW4gb24gbWVyZ2luZyBpdCBhdCAtcmMxLgoKPiArCWNhc2UgTkFORF9DTURf UkVBRFNUQVJUOgo+ICsJCWlmICghb3AtPmlzX3JlYWQpCj4gKwkJCXJldHVybiAtRU9QTk9UU1VQ UDsKPiArCQlvcC0+Y21kX3JlZyA9IExTMVhfTkFORF9DTURfUkVBRDsKPiArCQlicmVhazsKPiAr CWNhc2UgTkFORF9DTURfUk5ET1VUOgo+ICsJCW9wLT5pc19jaGFuZ2VfY29sdW1uID0gdHJ1ZTsK PiArCQlicmVhazsKPiArCWNhc2UgTkFORF9DTURfUk5ET1VUU1RBUlQ6Cj4gKwkJaWYgKCFvcC0+ aXNfY2hhbmdlX2NvbHVtbikKPiArCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+ICsJCW9wLT5jbWRf cmVnID0gTFMxWF9OQU5EX0NNRF9SRUFEOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlk ZXZfZXJyKGhvc3QtPmRldiwgInVuc3VwcG9ydGVkIG9wY29kZTogJXVcbiIsIG9wY29kZSk7CgpO byBlcnJvciBtZXNzYWdlIGluIHRoZSBub3JtYWwgcGF0aC4gVGhpcyBzaG91bGQgYmUgYSBkZWJ1 ZyBsb2cgYXQKbW9zdC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNoZWNrX29ubHkg cGF0aC4KCj4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ ICt9CgouLi4KCj4gK3N0YXRpYyBpbnQgbHMxeF9uYW5kX3JlYWRfaWRfdHlwZV9leGVjKHN0cnVj dCBuYW5kX2NoaXAgKmNoaXAsIGNvbnN0IHN0cnVjdCBuYW5kX3N1Ym9wICpzdWJvcCkKPiArewo+ ICsJc3RydWN0IGxzMXhfbmFuZF9ob3N0ICpob3N0ID0gbmFuZF9nZXRfY29udHJvbGxlcl9kYXRh KGNoaXApOwo+ICsJc3RydWN0IGxzMXhfbmFuZF9vcCBvcCA9IHt9Owo+ICsJaW50IGksIHJldDsK PiArCXVuaW9uIHsKPiArCQljaGFyIGlkc1s1XTsKPiArCQlzdHJ1Y3Qgewo+ICsJCQlpbnQgaWRs Owo+ICsJCQljaGFyIGlkaDsKPiArCQl9Owo+ICsJfSBuYW5kX2lkOwo+ICsKPiArCXJldCA9IGxz MXhfbmFuZF9taXNjX3R5cGVfZXhlYyhjaGlwLCBzdWJvcCwgJm9wKTsKPiArCWlmIChyZXQpIHsK PiArCQlkZXZfZXJyKGhvc3QtPmRldiwgImZhaWxlZCB0byByZWFkIElEISAlZFxuIiwgcmV0KTsK Ck5vIHByaW50IGhlcmUsIGl0J3Mgbm90IHVzZWZ1bC4KCj4gKwkJcmV0dXJuIHJldDsKPiArCX0K PiArCj4gKwluYW5kX2lkLmlkbCA9IHJlYWRsKGhvc3QtPnJlZ19iYXNlICsgTFMxWF9OQU5EX0lE TCk7Cj4gKwluYW5kX2lkLmlkaCA9IHJlYWRiKGhvc3QtPnJlZ19iYXNlICsgTFMxWF9OQU5EX0lE SF9TVEFUVVMpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBtaW4oc2l6ZW9mKG5hbmRfaWQuaWRz KSwgb3Aub3JpZ19sZW4pOyBpKyspCj4gKwkJb3AuYnVmW2ldID0gbmFuZF9pZC5pZHNbc2l6ZW9m KG5hbmRfaWQuaWRzKSAtIDEgLSBpXTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9CgouLi4KCj4g K3N0YXRpYyBpbnQgbHMxeF9uYW5kX2lzX3ZhbGlkX2NtZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU4 IG9wY29kZSkKPiArewo+ICsJaWYgKG9wY29kZSA9PSBOQU5EX0NNRF9TVEFUVVMgfHwgb3Bjb2Rl ID09IE5BTkRfQ01EX1JFU0VUIHx8IG9wY29kZSA9PSBOQU5EX0NNRF9SRUFESUQpCj4gKwkJcmV0 dXJuIDA7Cj4gKwo+ICsJZGV2X2VycihkZXYsICJ1bnN1cHBvcnRlZCBvcGNvZGU6ICV4Iiwgb3Bj b2RlKTsKCkRpdHRvCgo+ICsKPiArCXJldHVybiAtRU9QTk9UU1VQUDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBsczF4X25hbmRfaXNfdmFsaWRfY21kX3NlcShzdHJ1Y3QgZGV2aWNlICpkZXYsIHU4 IG9wY29kZTEsIHU4IG9wY29kZTIpCj4gK3sKPiArCWlmIChvcGNvZGUxID09IE5BTkRfQ01EX1JO RE9VVCAmJiBvcGNvZGUyID09IE5BTkRfQ01EX1JORE9VVFNUQVJUKQo+ICsJCXJldHVybiAwOwo+ ICsKPiArCWlmIChvcGNvZGUxID09IE5BTkRfQ01EX1JFQUQwICYmIG9wY29kZTIgPT0gTkFORF9D TURfUkVBRFNUQVJUKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChvcGNvZGUxID09IE5BTkRf Q01EX0VSQVNFMSAmJiBvcGNvZGUyID09IE5BTkRfQ01EX0VSQVNFMikKPiArCQlyZXR1cm4gMDsK PiArCj4gKwlpZiAob3Bjb2RlMSA9PSBOQU5EX0NNRF9TRVFJTiAmJiBvcGNvZGUyID09IE5BTkRf Q01EX1BBR0VQUk9HKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWRldl9lcnIoZGV2LCAidW5zdXBw b3J0ZWQgb3Bjb2RlIHNlcXVlbmNlOiAleCAleCIsIG9wY29kZTEsCj4gb3Bjb2RlMik7CgpEaXR0 bwoKPiArCj4gKwlyZXR1cm4gLUVPUE5PVFNVUFA7Cj4gK30KCi4uLgoKPiArc3RhdGljIGludCBs czF4X25hbmRfYXR0YWNoX2NoaXAoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkKPiArewo+ICsJc3Ry dWN0IGxzMXhfbmFuZF9ob3N0ICpob3N0ID0gbmFuZF9nZXRfY29udHJvbGxlcl9kYXRhKGNoaXAp Owo+ICsJdTY0IGNoaXBzaXplID0gbmFuZGRldl90YXJnZXRfc2l6ZSgmY2hpcC0+YmFzZSk7Cj4g KwlpbnQgY2VsbF9zaXplID0gMDsKPiArCj4gKwlzd2l0Y2ggKGNoaXBzaXplKSB7Cj4gKwljYXNl IFNaXzEyOE06Cj4gKwkJY2VsbF9zaXplID0gMHgwOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBTWl8y NTZNOgo+ICsJCWNlbGxfc2l6ZSA9IDB4MTsKPiArCQlicmVhazsKPiArCWNhc2UgU1pfNTEyTToK PiArCQljZWxsX3NpemUgPSAweDI7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFNaXzFHOgo+ICsJCWNl bGxfc2l6ZSA9IDB4MzsKPiArCQlicmVhazsKPiArCWNhc2UgU1pfMkc6Cj4gKwkJY2VsbF9zaXpl ID0gMHg0Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBTWl80RzoKPiArCQljZWxsX3NpemUgPSAweDU7 Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFNaXzhHOgo+ICsJCWNlbGxfc2l6ZSA9IDB4NjsKPiArCQli cmVhazsKPiArCWNhc2UgU1pfMTZHOgo+ICsJCWNlbGxfc2l6ZSA9IDB4NzsKPiArCQlicmVhazsK PiArCWRlZmF1bHQ6Cj4gKwkJZGV2X2Vycihob3N0LT5kZXYsICJ1bnN1cHBvcnRlZCBjaGlwIHNp emU6ICVsbHUgTUJcbiIsIGNoaXBzaXplKTsKPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7CgpFSU5W QUwKCj4gKwl9Cj4gKwo+ICsJc3dpdGNoIChjaGlwLT5lY2MuZW5naW5lX3R5cGUpIHsKPiArCWNh c2UgTkFORF9FQ0NfRU5HSU5FX1RZUEVfTk9ORToKPiArCQlkZXZfaW5mbyhob3N0LT5kZXYsICJO byBFQ0NcbiIpOwoKUGxlYXNlIGRyb3AKCj4gKwkJYnJlYWs7Cj4gKwljYXNlIE5BTkRfRUNDX0VO R0lORV9UWVBFX1NPRlQ6Cj4gKwkJZGV2X2luZm8oaG9zdC0+ZGV2LCAidXNpbmcgU1cgRUNDXG4i KTsKCkRyb3AKCj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWRldl9lcnIoaG9zdC0+ZGV2 LCAiRUNDIG1vZGUgJWQgbm90IHN1cHBvcnRlZFxuIiwKPiBjaGlwLT5lY2MuZW5naW5lX3R5cGUp OwoKRHJvcAoKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwkvKiBzZXQgY2VsbCBz aXplICovCj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMoaG9zdC0+cmVnbWFwLCBMUzFYX05BTkRfUEFS QU0sIExTMVhfTkFORF9DRUxMX1NJWkVfTUFTSywKPiArCQkJICAgRklFTERfUFJFUChMUzFYX05B TkRfQ0VMTF9TSVpFX01BU0ssIGNlbGxfc2l6ZSkpOwo+ICsKPiArCXJlZ21hcF91cGRhdGVfYml0 cyhob3N0LT5yZWdtYXAsIExTMVhfTkFORF9USU1JTkcsIExTMVhfTkFORF9IT0xEX0NZQ0xFX01B U0ssCj4gKwkJCSAgIEZJRUxEX1BSRVAoTFMxWF9OQU5EX0hPTERfQ1lDTEVfTUFTSywgaG9zdC0+ ZGF0YS0+aG9sZF9jeWNsZSkpOwo+ICsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhob3N0LT5yZWdt YXAsIExTMVhfTkFORF9USU1JTkcsIExTMVhfTkFORF9XQUlUX0NZQ0xFX01BU0ssCj4gKwkJCSAg IEZJRUxEX1BSRVAoTFMxWF9OQU5EX1dBSVRfQ1lDTEVfTUFTSywgaG9zdC0+ZGF0YS0+d2FpdF9j eWNsZSkpOwo+ICsKPiArCWNoaXAtPmVjYy5yZWFkX3BhZ2VfcmF3ID0gbmFuZF9tb25vbGl0aGlj X3JlYWRfcGFnZV9yYXc7Cj4gKwljaGlwLT5lY2Mud3JpdGVfcGFnZV9yYXcgPSBuYW5kX21vbm9s aXRoaWNfd3JpdGVfcGFnZV9yYXc7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbmFuZF9jb250cm9sbGVyX29wcyBsczF4X25hbmRfY29udHJvbGxlcl9v cHMgPSB7Cj4gKwkuZXhlY19vcCA9IGxzMXhfbmFuZF9leGVjX29wLAo+ICsJLmF0dGFjaF9jaGlw ID0gbHMxeF9uYW5kX2F0dGFjaF9jaGlwLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgbHMxeF9u YW5kX2NvbnRyb2xsZXJfY2xlYW51cChzdHJ1Y3QgbHMxeF9uYW5kX2hvc3QgKmhvc3QpCj4gK3sK PiArCWlmIChob3N0LT5kbWFfY2hhbikKPiArCQlkbWFfcmVsZWFzZV9jaGFubmVsKGhvc3QtPmRt YV9jaGFuKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsczF4X25hbmRfY29udHJvbGxlcl9pbml0 KHN0cnVjdCBsczF4X25hbmRfaG9zdCAqaG9zdCkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2 ID0gaG9zdC0+ZGV2Owo+ICsJc3RydWN0IGRtYV9jaGFuICpjaGFuOwo+ICsJc3RydWN0IGRtYV9z bGF2ZV9jb25maWcgY2ZnID0ge307Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWhvc3QtPnJlZ21hcCA9 IGRldm1fcmVnbWFwX2luaXRfbW1pbyhkZXYsIGhvc3QtPnJlZ19iYXNlLCAmbHMxeF9uYW5kX3Jl Z21hcF9jb25maWcpOwo+ICsJaWYgKElTX0VSUihob3N0LT5yZWdtYXApKQo+ICsJCXJldHVybiBk ZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihob3N0LT5yZWdtYXApLCAiZmFpbGVkIHRvIGluaXQg cmVnbWFwXG4iKTsKPiArCj4gKwljaGFuID0gZG1hX3JlcXVlc3RfY2hhbihkZXYsICJyeHR4Iik7 Cj4gKwlpZiAoSVNfRVJSKGNoYW4pKQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRS X0VSUihjaGFuKSwgImZhaWxlZCB0byByZXF1ZXN0IERNQSBjaGFubmVsXG4iKTsKPiArCWhvc3Qt PmRtYV9jaGFuID0gY2hhbjsKPiArCj4gKwljZmcuc3JjX2FkZHIgPSBob3N0LT5kbWFfYmFzZTsK PiArCWNmZy5zcmNfYWRkcl93aWR0aCA9IERNQV9TTEFWRV9CVVNXSURUSF80X0JZVEVTOwo+ICsJ Y2ZnLmRzdF9hZGRyID0gaG9zdC0+ZG1hX2Jhc2U7Cj4gKwljZmcuZHN0X2FkZHJfd2lkdGggPSBE TUFfU0xBVkVfQlVTV0lEVEhfNF9CWVRFUzsKPiArCXJldCA9IGRtYWVuZ2luZV9zbGF2ZV9jb25m aWcoaG9zdC0+ZG1hX2NoYW4sICZjZmcpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gZGV2X2Vy cl9wcm9iZShkZXYsIHJldCwgImZhaWxlZCB0byBjb25maWcgRE1BIGNoYW5uZWxcbiIpOwo+ICsK PiArCWluaXRfY29tcGxldGlvbigmaG9zdC0+ZG1hX2NvbXBsZXRlKTsKPiArCj4gKwlkZXZfZGJn KGRldiwgImdvdCAlcyBmb3IgJXMgYWNjZXNzXG4iLAo+IGRtYV9jaGFuX25hbWUoaG9zdC0+ZG1h X2NoYW4pLCBkZXZfbmFtZShkZXYpKTsKCllvdSBjYW4gZHJvcCB0aGlzIG9uZSBhcyB3ZWxsCgo+ ICsKPiArCXJldHVybiAwOwo+ICt9CgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lv biBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1tdGQvCg==