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.gnu.org (lists.gnu.org [209.51.188.17]) (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 1D9CBC021A8 for ; Thu, 13 Feb 2025 06:32:35 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tiSlh-0005e0-Nw; Thu, 13 Feb 2025 01:32:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tiSlf-0005da-Q6 for grub-devel@gnu.org; Thu, 13 Feb 2025 01:32:11 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tiSld-0000Ir-42 for grub-devel@gnu.org; Thu, 13 Feb 2025 01:32:11 -0500 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51CKGNVZ001218; Thu, 13 Feb 2025 06:32:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=h9faiJ HYs4z2ZPiKOLCTJymSEnM+TgZ2FIkwM3fE6cg=; b=eJ29yAC+uftH2cTpH40+XP 6xE1dxtYJnJ4GORSUIjrO2nmVvKeYbXloMC/sXo5oQVAyw4Lmn5GHfXFy3q8LZMr xr2tZYMTiPJ4rCS5EhmulBh0nKQmk53bT+vrS2uVsvg68HW4ZT8unUEbsmxpY7VU V1V+U8ljIqCx5DcGSkGnnmbcaUu5gUJjTqU14/lfTkmpIAfty9rJXd/9ZoEBYk04 HSWlbd5+THNkLvCGC9263F4UwK7KkTd65SRFKgxAVh5EAco0gBhiIeLhpmxkwR8J LXz+bxUxnRkgKl6bBhJTTRzrO4bqds3WebVqhBWlGUBgLjGBYkaafEuJonY1cPOw == Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44rqbpefkc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Feb 2025 06:32:05 +0000 (GMT) Received: from m0360072.ppops.net (m0360072.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 51D6W5xt021545; Thu, 13 Feb 2025 06:32:05 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44rqbpefka-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Feb 2025 06:32:05 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51D4B7NS011605; Thu, 13 Feb 2025 06:32:04 GMT Received: from smtprelay02.wdc07v.mail.ibm.com ([172.16.1.69]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 44pktk4kn8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Feb 2025 06:32:04 +0000 Received: from smtpav05.wdc07v.mail.ibm.com (smtpav05.wdc07v.mail.ibm.com [10.39.53.232]) by smtprelay02.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51D6W1de30867746 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 13 Feb 2025 06:32:01 GMT Received: from smtpav05.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8814058043; Thu, 13 Feb 2025 06:32:01 +0000 (GMT) Received: from smtpav05.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EF6175805D; Thu, 13 Feb 2025 06:32:00 +0000 (GMT) Received: from ltc.linux.ibm.com (unknown [9.5.196.140]) by smtpav05.wdc07v.mail.ibm.com (Postfix) with ESMTP; Thu, 13 Feb 2025 06:32:00 +0000 (GMT) MIME-Version: 1.0 Date: Thu, 13 Feb 2025 12:02:00 +0530 From: Avnish Chouhan To: mchang@suse.com Cc: grub-devel@gnu.org, daniel.kiper@oracle.com, brking@linux.ibm.com, meghanaprakash@in.ibm.com, phcoder@gmail.com, Diego Domingos Subject: Re: [PATCH v4 5/5] ieee1275: ofpath enable NVMeoF logical device translate In-Reply-To: References: <20240830114104.32234-1-avnish@linux.ibm.com> <20240830114104.32234-6-avnish@linux.ibm.com> Message-ID: <11da9d80acec81e34363659fafe28efb@linux.ibm.com> X-Sender: avnish@linux.ibm.com X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 856Mj1RODjIUR5MAto_wz3bJMxTm-S8F X-Proofpoint-ORIG-GUID: kHhNn10WCF4p88Z5EXakmterCmY-SEzC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-13_02,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxscore=0 malwarescore=0 mlxlogscore=901 lowpriorityscore=0 priorityscore=1501 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502130048 Received-SPF: pass client-ip=148.163.158.5; envelope-from=avnish@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org SGkgTWljaGFlbCwKVGhhbmsgeW91IHNvIG11Y2ggZm9yIGEgcmV2aWV3IQoKSSdsbCBhZGQgdGhl IGZhaWx1cmUgY2hlY2tzIGluIHRoZSBjb2RlIG1lbnRpb25lZCBieSB5b3UuCgpPbiBidWlsZCBp c3N1ZS4gSSBoYXZlbid0IG9ic2VydmVkIGFueSBvZiB0aGVzZSBlcnJvcnMgb24gbXkgbWFjaGlu ZS4gClRvZGF5LCBJIGJ1aWx0IHRoZSBsYXRlc3QgdXBzdHJlYW0gZ3J1YiB3aXRoIHRoaXMgcGF0 Y2ggb24gbXkgbWFjaGluZSAKYW5kIG5vIGVycm9ycyBhcmUgb2JzZXJ2ZWQuCgpSZWdhcmRzLApB dm5pc2ggQ2hvdWhhbgoKT24gMjAyNS0wMi0xMiAxMzo0NCwgTWljaGFlbCBDaGFuZyB3cm90ZToK PiBIaSBBdm5pc2gsCj4gCj4gVGhpcyBwYXRjaCBkb2Vzbid0IGJ1aWxkOgo+IAo+ICAgLi4vZ3J1 Yi1jb3JlL29zZGVwL2xpbnV4L29mcGF0aC5jOiBJbiBmdW5jdGlvbiDigJhvZl9wYXRoX29mX252 bWXigJk6Cj4gICAuLi9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmM6NzI5OjM3OiBlcnJv cjog4oCYJXjigJkgZGlyZWN0aXZlCj4gb3V0cHV0IG1heSBiZSB0cnVuY2F0ZWQgd3JpdGluZyBi ZXR3ZWVuIDEgYW5kIDggYnl0ZXMgaW50byBhIHJlZ2lvbiBvZgo+IHNpemUgNyBbLVdlcnJvcj1m b3JtYXQtdHJ1bmNhdGlvbj1dCj4gICAgIDcyOSB8ICAgICAgICAgICAgICAgICAgICAgICAgICIv bmFtZXNwYWNlQCV4OiVkIiwgbnNpZCwgcGFydCk7Cj4gCXwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXn4KPiAgIC4uL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYzo3 Mjk6MjU6IG5vdGU6IGRpcmVjdGl2ZSBhcmd1bWVudAo+IGluIHRoZSByYW5nZSBbMSwgNDI5NDk2 NzI5NV0KPiAgICAgNzI5IHwgICAgICAgICAgICAgICAgICAgICAgICAgIi9uYW1lc3BhY2VAJXg6 JWQiLCBuc2lkLCBwYXJ0KTsKPiAJfCAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+ fn5+fn5+fn4KPiAgIC4uL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYzo3Mjg6MTU6IG5v dGU6IOKAmHNucHJpbnRm4oCZIG91dHB1dAo+IGJldHdlZW4gMTUgYW5kIDMyIGJ5dGVzIGludG8g YSBkZXN0aW5hdGlvbiBvZiBzaXplIDE4Cj4gICAgIDcyOCB8ICAgICAgICAgICAgICAgc25wcmlu dGYgKGRpc2srY2hhcnNfd3JpdHRlbiwKPiBzaXplb2YoIi9uYW1lc3BhY2VAIikgKyBNQVhfTlZN RV9OU0lEX0RJR0lUUywKPiAJfAo+IF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+ICAgICA3MjkgfCAgICAg ICAgICAgICAgICAgICAgICAgICAiL25hbWVzcGFjZUAleDolZCIsIG5zaWQsIHBhcnQpOwo+IAl8 ICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K PiAgIC4uL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYzo3NzA6Mzc6IGVycm9yOiDigJgl eOKAmSBkaXJlY3RpdmUKPiBvdXRwdXQgbWF5IGJlIHRydW5jYXRlZCB3cml0aW5nIGJldHdlZW4g MSBhbmQgOCBieXRlcyBpbnRvIGEgcmVnaW9uIG9mCj4gc2l6ZSA3IFstV2Vycm9yPWZvcm1hdC10 cnVuY2F0aW9uPV0KPiAgICAgNzcwIHwgICAgICAgICAgICAgICAgICAgICAgICAgIi9uYW1lc3Bh Y2VAJXgiLCBuc2lkKTsKPiAJfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe fgo+ICAgLi4vZ3J1Yi1jb3JlL29zZGVwL2xpbnV4L29mcGF0aC5jOjc3MDoyNTogbm90ZTogZGly ZWN0aXZlIGFyZ3VtZW50Cj4gaW4gdGhlIHJhbmdlIFsxLCA0Mjk0OTY3Mjk1XQo+ICAgICA3NzAg fCAgICAgICAgICAgICAgICAgICAgICAgICAiL25hbWVzcGFjZUAleCIsIG5zaWQpOwo+IAl8ICAg ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fgo+ICAgLi4vZ3J1Yi1jb3JlL29z ZGVwL2xpbnV4L29mcGF0aC5jOjc2OToxNTogbm90ZTog4oCYc25wcmludGbigJkgb3V0cHV0Cj4g YmV0d2VlbiAxMyBhbmQgMjAgYnl0ZXMgaW50byBhIGRlc3RpbmF0aW9uIG9mIHNpemUgMTgKPiAg ICAgNzY5IHwgICAgICAgICAgICAgICBzbnByaW50Zgo+IChkaXNrK2NoYXJzX3dyaXR0ZW4sc2l6 ZW9mKCIvbmFtZXNwYWNlQCIpICsgc2l6ZW9mKGNoYXIpICoKPiBNQVhfTlZNRV9OU0lEX0RJR0lU UywKPiAJfAo+IF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Cj4gICAgIDc3MCB8ICAg ICAgICAgICAgICAgICAgICAgICAgICIvbmFtZXNwYWNlQCV4IiwgbnNpZCk7Cj4gCXwgICAgICAg ICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+ICAgY2MxOiBhbGwgd2Fy bmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKPiAKPiBUaGUgZXJyb3IgaXMgdmFsaWQuIEl0 IGlzIHBvaW50aW5nIHRvIHRoYXQgdGhlIHNpemUsCj4gTUFYX05WTUVfTlNJRF9ESUdJVFMsIHBy b3ZpZGVkIGZvciBzbnByaW50ZigpIGlzIHRvbyBzbWFsbCB0byB0aGUgd29yc2UKPiBjYXNlIG9m IGZvcm1hdCBzcGVjaWZpZXIgb3V0cHV0LCB0aHVzIHRoZSByZXN1bHQgdHJ1bmNhdGVkLgo+IAo+ IFRoZSBgZ2NjIC0tdmVyc2lvbmA6Cj4gICBnY2MgKFNVU0UgTGludXgpIDE0LjIuMSAyMDI0MTAw NyBbcmV2aXNpb24KPiA0YWY0NGYyY2Y3ZDI4MWYzZTRmMzk1N2VmY2UxMGU4YjJjY2IyYWQzXQo+ IAo+IE1vcmVvdmVyLCBpdCBoYXMgYSBmZXcgY3JpdGljYWwgbWVtb3J5IHJlbGF0ZWQgaXNzdWUg dGhhdCBtYXkgY3Jhc2ggdGhlCj4gcHJvZ3JhbS4gKFNlZSBiZWxvdykKPiAKPiBPbiBGcmksIEF1 ZyAzMCwgMjAyNCBhdCAwNToxMTowNFBNICswNTMwLCBBdm5pc2ggQ2hvdWhhbiB3cm90ZToKPj4g VGhpcyBwYXRjaCBhZGRzIGNvZGUgdG8gZW5hYmxlIHRoZSB0cmFuc2xhdGlvbiBvZiBsb2dpY2Fs IGRldmljZXMgdG8gCj4+IHRoZSBvZiBOVk1lb0ZDIHBhdGhzLgo+PiAKPj4gU2lnbmVkLW9mZi1i eTogRGllZ28gRG9taW5nb3MgPGRpZWdvZG9AYnIuaWJtLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTog QXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0uY29tPgo+PiAtLS0KPj4gIGdydWItY29y ZS9vc2RlcC9saW51eC9vZnBhdGguYyB8IDM3MSAKPj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+PiAgaW5jbHVkZS9ncnViL3V0aWwvb2Zw YXRoLmggICAgIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgMiBmaWxlcyBj aGFuZ2VkLCAzOTAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1n aXQgYS9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMgCj4+IGIvZ3J1Yi1jb3JlL29zZGVw L2xpbnV4L29mcGF0aC5jCj4+IGluZGV4IDBmNWQ1NGUuLmYwZTdkY2MgMTAwNjQ0Cj4+IC0tLSBh L2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYwo+PiArKysgYi9ncnViLWNvcmUvb3NkZXAv bGludXgvb2ZwYXRoLmMKPj4gQEAgLTM3LDYgKzM3LDcgQEAKPj4gICNpbmNsdWRlIDxmY250bC5o Pgo+PiAgI2luY2x1ZGUgPGVycm5vLmg+Cj4+ICAjaW5jbHVkZSA8Y3R5cGUuaD4KPj4gKyNpbmNs dWRlIDxkaXJlbnQuaD4KPj4gCj4+ICAjaWZkZWYgX19zcGFyY19fCj4+ICB0eXBlZGVmIGVudW0K Pj4gQEAgLTEzNiw3ICsxMzcsNyBAQCB0cmltX25ld2xpbmUgKGNoYXIgKnBhdGgpCj4+ICAgICAg KmVuZC0tID0gJ1wwJzsKPj4gIH0KPj4gCj4+IC0jZGVmaW5lIE1BWF9ESVNLX0NBVCAgICA2NAo+ PiArI2RlZmluZSBNQVhfRElTS19DQVQgICAgNTEyCj4+IAo+PiAgc3RhdGljIGNoYXIgKgo+PiAg ZmluZF9vYnBwYXRoIChjb25zdCBjaGFyICpzeXNmc19wYXRoX29yaWcpCj4+IEBAIC0zMTIsNiAr MzEzLDkxIEBAIGdldF9iYXNlbmFtZShjaGFyICpwKQo+PiAgICByZXR1cm4gcmV0Owo+PiAgfQo+ PiAKPj4gK2ludAo+PiArYWRkX2ZpbGVuYW1lX3RvX3BpbGUgKGNoYXIgKmZpbGVuYW1lLCBzdHJ1 Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdCogCj4+IHJvb3QpCj4+ICt7Cj4+ICsgIHN0cnVjdCBv ZnBhdGhfZmlsZXNfbGlzdF9ub2RlKiBmaWxlOwo+PiArCj4+ICsgIGZpbGUgPSBtYWxsb2MgKHNp emVvZiAoc3RydWN0IG9mcGF0aF9maWxlc19saXN0X25vZGUpKTsKPj4gKyAgaWYgKCFmaWxlKQo+ PiArICAgIHJldHVybiAtMTsKPj4gKwo+PiArICBmaWxlLT5maWxlbmFtZSA9IG1hbGxvYyAoc2l6 ZW9mIChjaGFyKSAqIDEwMjQpOwo+PiArICBpZiAoIWZpbGUtPmZpbGVuYW1lKQo+PiArICAgIHsK Pj4gKyAgICAgIGZyZWUgKGZpbGUpOwo+PiArICAgICAgcmV0dXJuIC0xOwo+PiArICAgIH0KPj4g Kwo+PiArICBncnViX3N0cmNweSAoZmlsZS0+ZmlsZW5hbWUsIGZpbGVuYW1lKTsKPj4gKyAgaWYg KHJvb3QtPmZpcnN0ID09IE5VTEwpCj4+ICsgICAgewo+PiArICAgICAgcm9vdC0+aXRlbXMgPSAx Owo+PiArICAgICAgcm9vdC0+Zmlyc3QgPSBmaWxlOwo+PiArICAgICAgZmlsZS0+bmV4dCA9IE5V TEw7Cj4+ICsgICAgfQo+PiArICBlbHNlCj4+ICsgICAgewo+PiArICAgICAgcm9vdC0+aXRlbXMr KzsKPj4gKyAgICAgIGZpbGUtPm5leHQgPSByb290LT5maXJzdDsKPj4gKyAgICAgIHJvb3QtPmZp cnN0ID0gZmlsZTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4g K3ZvaWQKPj4gK2ZpbmRfZmlsZSAoY2hhciogZmlsZW5hbWUsIGNoYXIqIGRpcmVjdG9yeSwgc3Ry dWN0IAo+PiBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiByb290LCBpbnQgbWF4X2RlcHRoLCBpbnQg ZGVwdGgpCj4+ICt7Cj4+ICsgIHN0cnVjdCBkaXJlbnQgKmVwOwo+PiArICBzdHJ1Y3Qgc3RhdCBz dGF0YnVmOwo+PiArICBESVIgKmRwOwo+PiArICBpbnQgcmV0X3ZhbD0wOwo+PiArICBjaGFyKiBm dWxsX3BhdGg7Cj4+ICsKPj4gKyAgaWYgKGRlcHRoID4gbWF4X2RlcHRoKQo+PiArICAgIHsKPj4g KyAgICAgIHJldHVybjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgaWYgKChkcCA9IG9wZW5kaXIgKGRp cmVjdG9yeSkpID09IE5VTEwpCj4+ICsgICAgewo+PiArICAgICAgcmV0dXJuOwo+PiArICAgIH0K Pj4gKwo+PiArICBmdWxsX3BhdGggPSBtYWxsb2MgKDEwMjQgKiBzaXplb2YgKGNoYXIpKTsKPj4g KyAgaWYgKCFmdWxsX3BhdGgpCj4+ICsgICAgcmV0dXJuOwo+PiArCj4+ICsgIHdoaWxlICgoZXAg PSByZWFkZGlyKGRwKSkgIT0gTlVMTCkKPj4gKyAgICB7Cj4+ICsgICAgICBzbnByaW50ZiAoZnVs bF9wYXRoLCAxMDI0LCAiJXMvJXMiLCBkaXJlY3RvcnksIGVwLT5kX25hbWUpOwo+PiArICAgICAg bHN0YXQgKGZ1bGxfcGF0aCwgJnN0YXRidWYpOwo+PiArCj4+ICsgICAgICBpZiAoU19JU0xOSyAo c3RhdGJ1Zi5zdF9tb2RlKSkKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgIGNvbnRpbnVlOwo+ PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgIGlmICghc3RyY21wIChlcC0+ZF9uYW1lLCAiLiIp IHx8ICFzdHJjbXAoZXAtPmRfbmFtZSwgIi4uIikpCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAg ICBjb250aW51ZTsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICBpZiAoIXN0cmNtcCAoZXAt PmRfbmFtZSwgZmlsZW5hbWUpKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAgICAgcmV0X3ZhbCA9 IGFkZF9maWxlbmFtZV90b19waWxlIChmdWxsX3BhdGgsIHJvb3QpOwo+PiArICAgICAgICAgIGlm IChyZXRfdmFsID09IC0xKQo+PiArICAgICAgICAgICAgY29udGludWU7Cj4+ICsgICAgICAgIH0K Pj4gKwo+PiArICAgICAgZmluZF9maWxlIChmaWxlbmFtZSwgZnVsbF9wYXRoLCByb290LCBtYXhf ZGVwdGgsIGRlcHRoKzEpOwo+PiArICAgIH0KPj4gKwo+PiArICBmcmVlIChmdWxsX3BhdGgpOwo+ PiArICBjbG9zZWRpciAoZHApOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgY2hhciAqCj4+ICBvZl9w YXRoX29mX3ZkaXNrKGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIF9fYXR0cmlidXRlX18oKHVudXNl ZCkpLAo+PiAgCQkgY29uc3QgY2hhciAqZGV2aWNlLAo+PiBAQCAtMzgyLDcgKzQ2OCwyMDAgQEAg b2ZfZmNfcG9ydF9uYW1lIChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyIAo+PiAqc3VicGF0 aCwgY2hhciAqcG9ydF9uYW1lKQo+PiAgICBmcmVlIChiYXNlcGF0aCk7Cj4+ICB9Cj4+IAo+PiAt I2lmZGVmIF9fc3BhcmNfXwo+PiArdm9pZAo+PiArZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAoc3Ry dWN0IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QpCj4+ICt7Cj4+ICsgIHN0cnVjdCBvZnBh dGhfZmlsZXNfbGlzdF9ub2RlKiBub2RlID0gcm9vdC0+Zmlyc3Q7Cj4+ICsgIHN0cnVjdCBvZnBh dGhfZmlsZXNfbGlzdF9ub2RlKiBuZXh0Owo+PiArCj4+ICsgIHdoaWxlIChub2RlIT1OVUxMKQo+ PiArICAgIHsKPj4gKyAgICAgIG5leHQgPSBub2RlLT5uZXh0Owo+PiArICAgICAgZnJlZSAobm9k ZS0+ZmlsZW5hbWUpOwo+PiArICAgICAgZnJlZSAobm9kZSk7Cj4+ICsgICAgICBub2RlID0gbmV4 dDsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgZnJlZSAocm9vdCk7Cj4+ICsgIHJldHVybjsKPj4gK30K Pj4gKwo+PiArY2hhcioKPj4gK29mX2ZpbmRfZmNfaG9zdCAoY2hhciogaG9zdF93d3BuKQo+PiAr ewo+PiArICBGSUxFKiBmcDsKPj4gKyAgY2hhciAqYnVmOwo+PiArICBjaGFyICpyZXRfdmFsOwo+ PiArICBjaGFyIHBvcnRuYW1lX2ZpbGVuYW1lW3NpemVvZiAoInBvcnRfbmFtZSIpXSA9ICJwb3J0 X25hbWUiOwo+PiArICBjaGFyIGRldmljZXNfcGF0aFtzaXplb2YgKCIvc3lzL2RldmljZXMiKV0g PSAiL3N5cy9kZXZpY2VzIjsKPj4gKyAgc3RydWN0IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHBv cnRuYW1lc19maWxlX2xpc3Q7Cj4+ICsgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9ub2RlKiBu b2RlOwo+PiArCj4+ICsgIHJldF92YWwgPSBtYWxsb2MgKHNpemVvZiAoY2hhcikgKiAxMDI0KTsK Pj4gKyAgaWYgKCFyZXRfdmFsKQo+PiArICAgIHJldHVybiBOVUxMOwo+PiArCj4+ICsgIHBvcnRu YW1lc19maWxlX2xpc3QgPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IAo+PiBvZnBhdGhfZmlsZXNf bGlzdF9yb290KSk7Cj4+ICsgIGlmICghcG9ydG5hbWVzX2ZpbGVfbGlzdCkKPj4gKyAgICB7Cj4+ ICsgICAgICBmcmVlIChyZXRfdmFsKTsKPj4gKyAgICAgIHJldHVybiBOVUxMOwo+PiArICAgIH0K Pj4gKwo+PiArICBwb3J0bmFtZXNfZmlsZV9saXN0LT5pdGVtcyA9IDA7Cj4+ICsgIHBvcnRuYW1l c19maWxlX2xpc3QtPmZpcnN0ID0gTlVMTDsKPj4gKyAgZmluZF9maWxlIChwb3J0bmFtZV9maWxl bmFtZSwgZGV2aWNlc19wYXRoLCBwb3J0bmFtZXNfZmlsZV9saXN0LCAKPj4gMTAsIDApOwo+PiAr ICBub2RlID0gcG9ydG5hbWVzX2ZpbGVfbGlzdC0+Zmlyc3Q7Cj4+ICsKPj4gKyAgd2hpbGUgKG5v ZGUgIT0gTlVMTCkKPj4gKyAgICB7Cj4+ICsgICAgICBmcCA9IGZvcGVuKG5vZGUtPmZpbGVuYW1l LCAiciIpOwo+PiArICAgICAgYnVmID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICogNTEyKTsKPj4g KyAgICAgIGlmICghYnVmKQo+PiArICAgICAgICBicmVhazsKPj4gKwo+PiArICAgICAgZnNjYW5m IChmcCwgIiVzIiwgYnVmKTsKPj4gKyAgICAgIGZjbG9zZSAoZnApOwo+PiArCj4+ICsgICAgICBp ZiAoKHN0cmNtcCAoYnVmLCBob3N0X3d3cG4pID09IDApICYmIGdydWJfc3Ryc3RyIAo+PiAobm9k ZS0+ZmlsZW5hbWUsICJmY19ob3N0IikpCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICBmcmVl IChidWYpOwo+PiArICAgICAgICAgIGdydWJfc3RyY3B5IChyZXRfdmFsLCBub2RlLT5maWxlbmFt ZSk7Cj4+ICsgICAgICAgICAgZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAocG9ydG5hbWVzX2ZpbGVf bGlzdCk7Cj4+ICsgICAgICAgICAgcmV0dXJuIHJldF92YWw7Cj4+ICsgICAgICAgIH0KPj4gKwo+ PiArICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7Cj4+ICsgICAgICBmcmVlIChidWYpOwo+PiArICAg IH0KPj4gKyAgZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAocG9ydG5hbWVzX2ZpbGVfbGlzdCk7Cj4+ ICsgIGZyZWUgKHJldF92YWwpOwo+PiArICByZXR1cm4gTlVMTDsKPj4gK30KPj4gKwo+PiAraW50 Cj4+ICtvZl9wYXRoX2dldF9udm1lb2ZfYWRhcHRlcl9pbmZvIChjaGFyKiBzeXNmc19wYXRoLAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9mcGF0aF9udm1lb2Zf aW5mbyogCj4+IG52bWVvZl9pbmZvKQo+PiArewo+PiArICBGSUxFICpmcDsKPj4gKyAgY2hhciAq YnVmLCAqYnVmMiwgKmJ1ZjM7Cj4+ICsKPj4gKyAgbnZtZW9mX2luZm8tPmhvc3Rfd3dwbiA9IG1h bGxvYyAoc2l6ZW9mIChjaGFyKSAqIDI1Nik7Cj4+ICsgIG52bWVvZl9pbmZvLT50YXJnZXRfd3dw biA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAqIDI1Nik7Cj4+ICsgIG52bWVvZl9pbmZvLT5ucW4g PSBtYWxsb2MgKHNpemVvZiAoY2hhcikgKiAyNTYpOwo+PiArCj4+ICsgIGlmIChudm1lb2ZfaW5m by0+aG9zdF93d3BuID09IE5VTEwgfHwgbnZtZW9mX2luZm8tPnRhcmdldF93d3BuID09IAo+PiBO VUxMIHx8IG52bWVvZl9pbmZvLT5ucW4gPT0gTlVMTCkKPj4gKyAgICB7Cj4+ICsgICAgICBmcmVl IChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKPj4gKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT50 YXJnZXRfd3dwbik7Cj4+ICsgICAgICBmcmVlIChudm1lb2ZfaW5mby0+bnFuKTsKPj4gKyAgICAg IHJldHVybiAtMTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgYnVmID0gbWFsbG9jIChzaXplb2YgKGNo YXIpICogNTEyKTsKPj4gKyAgaWYgKCFidWYpCj4+ICsgICAgewo+PiArICAgICAgZnJlZSAobnZt ZW9mX2luZm8tPmhvc3Rfd3dwbik7Cj4+ICsgICAgICBmcmVlIChudm1lb2ZfaW5mby0+dGFyZ2V0 X3d3cG4pOwo+PiArICAgICAgZnJlZSAobnZtZW9mX2luZm8tPm5xbik7Cj4+ICsgICAgICByZXR1 cm4gLTE7Cj4+ICsgICAgfQo+PiArCj4+ICsgIHNucHJpbnRmIChidWYsIDUxMiwgIiVzL3N1YnN5 c25xbiIsIHN5c2ZzX3BhdGgpOwo+PiArICBmcCA9IGZvcGVuIChidWYsICJyIik7Cj4gCj4gVGhl IGZwID09IE5VTEwgY2hlY2sgaXMgbWlzc2luZy4KPiAKPj4gKyAgZnNjYW5mIChmcCwgIiVzIiwg bnZtZW9mX2luZm8tPm5xbik7Cj4gCj4gVGhlIHJldHVybiB2YWx1ZSBvZiBmc2NhbmYoKSBzaG91 bGQgYmUgY2hlY2tlZCB0byB2ZXJpZnkgdGhhdCB0aGUgbnFuCj4gcmVhZCBmcm9tIHRoZSBmaWxl IGlzIHN1Y2Nlc3NmdWwuCj4gCj4+ICsgIGZjbG9zZSAoZnApOwo+PiArCj4+ICsgIHNucHJpbnRm IChidWYsIDUxMiwgIiVzL2NudGxpZCIsIHN5c2ZzX3BhdGgpOwo+PiArICBmcCA9IGZvcGVuIChi dWYsICJyIik7Cj4gCj4gRGl0dG8uCj4gCj4+ICsgIGZzY2FuZiAoZnAsICIldSIsICYobnZtZW9m X2luZm8tPmNudGxpZCkpOwo+IAo+IERpdHRvLgo+IAo+PiArICBmY2xvc2UgKGZwKTsKPj4gKwo+ PiArICBzbnByaW50ZiAoYnVmLCA1MTIsICIlcy9hZGRyZXNzIiwgc3lzZnNfcGF0aCk7Cj4+ICsg IGZwID0gZm9wZW4gKGJ1ZiwgInIiKTsKPiAKPiBEaXR0by4KPiAKPj4gKyAgYnVmMiA9IG1hbGxv YyAoc2l6ZW9mIChjaGFyKSAqIDUxMik7Cj4+ICsKPj4gKyAgaWYgKCFidWYyKQo+PiArICAgIHsK Pj4gKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOwo+PiArICAgICAgZnJlZSAo bnZtZW9mX2luZm8tPnRhcmdldF93d3BuKTsKPj4gKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5u cW4pOwo+PiArICAgICAgZnJlZSAoYnVmKTsKPj4gKyAgICAgIHJldHVybiAtMTsKPj4gKyAgICB9 Cj4+ICsKPj4gKyAgZnNjYW5mIChmcCwgIiVzIiwgYnVmMik7Cj4gCj4gRGl0dG8uCj4gCj4+ICsg IGZjbG9zZSAoZnApOwo+PiArCj4+ICsgIGJ1ZjMgPSBzdHJyY2hyIChidWYyLCAnLScpICsgMTsK PiAKPiBNaXNzaW5nIGNoZWNrIGZvciBzdHJyY2hyKCkgIT0gTlVMTCBzbyB0aGF0IGJ1ZjMgbWF5 IGJlIGFzc2lnbmVkIAo+IGludmFsaWQKPiBhZGRyZXNzICIxIi4gVGhpcyBpcyB2ZXJ5IGxpa2Vs eSB0byBoYXBwZW4gZ2l2ZW4gbm8gY2hlY2sgZm9yIGJ1ZjIgcmVhZAo+IGZyb20gZmlsZSBpcyBz dWNjZXNzZnVsLgo+IAo+PiArICBncnViX21lbWNweSAobnZtZW9mX2luZm8tPmhvc3Rfd3dwbiwg YnVmMywgMjU2KTsKPiAKPiBUaGUgc3RycmNocigpL3N0cmNocigpIG1heSByZXR1cm4gTlVMTCBp ZiB0aGUgY2hhcmFjdGVycyBiZWluZyBzZWFyY2hlZAo+IGlzIG5vdCBwcmVzZW50LiBBcyBhIGNv bnNlcXVlbmNlIHRoaXMgd2lsbCBjYXVzZSBzZWd2ZmF1bHQgYnkgcmVhZGluZwo+IGlsbGVnYWwg YWRkcmVzcyAiMSIuCj4gCj4+ICsgIGJ1ZjM9c3RyY2hyIChidWYyLCAnLScpICsgMTsKPj4gKyAg YnVmMz1zdHJjaHIgKGJ1ZjMsICctJykgKyAxOwo+PiArICBidWYzPXN0cmNociAoYnVmMywgJ3gn KSArIDE7Cj4+ICsgIGdydWJfbWVtY3B5IChudm1lb2ZfaW5mby0+dGFyZ2V0X3d3cG4sIGJ1ZjMs IDI1Nik7Cj4gCj4gRGl0dG8uCj4gCj4+ICsgIGJ1ZjMgPSBzdHJjaHIgKG52bWVvZl9pbmZvLT50 YXJnZXRfd3dwbiwgJywnKTsKPj4gKyAgKmJ1ZjMgPSAnXDAnOwo+IAo+IFRoZSBidWYzICE9IE5V TEwgY2hlY2sgaXMgbWlzc2luZyBiZWZvcmUgZGVyZWZlcmVuY2UuCj4gCj4+ICsgIGZyZWUgKGJ1 Zik7Cj4+ICsgIGZyZWUgKGJ1ZjIpOwo+PiArICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArI2Rl ZmluZSBNQVhfTlZNRV9OU0lEX0RJR0lUUyA2Cj4+ICsKPj4gK3N0YXRpYyBjaGFyICoKPj4gK29m X3BhdGhfZ2V0X252bWVfY29udHJvbGxlcl9uYW1lX25vZGUgKGNvbnN0IGNoYXIqIGRldm5hbWUp Cj4+ICt7Cj4+ICsgIGNoYXIgKmNvbnRyb2xsZXJfbm9kZSwgKmVuZDsKPj4gKwo+PiArICBjb250 cm9sbGVyX25vZGUgPSBzdHJkdXAgKGRldm5hbWUpOwo+PiArICBlbmQgPSBncnViX3N0cmNociAo Y29udHJvbGxlcl9ub2RlICsgMSwgJ24nKTsKPj4gKyAgaWYgKGVuZCAhPSBOVUxMKQo+PiArICAg IHsKPj4gKyAgICAgICplbmQgPSAnXDAnOwo+PiArICAgIH0KPj4gKwo+PiArICByZXR1cm4gY29u dHJvbGxlcl9ub2RlOwo+PiArfQo+PiArCj4+ICt1bnNpZ25lZCBpbnQKPj4gK29mX3BhdGhfZ2V0 X252bWVfbnNpZCAoY29uc3QgY2hhciogZGV2bmFtZSkKPj4gK3sKPj4gKyAgdW5zaWduZWQgaW50 IG5zaWQ7Cj4+ICsgIGNoYXIgKnN5c2ZzX3BhdGgsICpidWY7Cj4+ICsgIEZJTEUgKmZwOwo+PiAr Cj4+ICsgIGJ1ZiA9IG1hbGxvYyAoc2l6ZW9mKGNoYXIpICogNTEyKTsKPj4gKyAgaWYgKCFidWYp Cj4+ICsgICAgcmV0dXJuIDA7Cj4+ICsKPj4gKyAgc3lzZnNfcGF0aCA9IGJsb2NrX2RldmljZV9n ZXRfc3lzZnNfcGF0aF9hbmRfbGluayAoZGV2bmFtZSk7Cj4+ICsgIHNucHJpbnRmIChidWYsIDUx MiwgIiVzLyVzL25zaWQiLCBzeXNmc19wYXRoLCBkZXZuYW1lKTsKPj4gKyAgZnAgPSBmb3Blbihi dWYsICJyIik7Cj4+ICsgIGZzY2FuZiAoZnAsICIldSIsICYobnNpZCkpOwo+PiArICBmY2xvc2Ug KGZwKTsKPiAKPiBEaXR0bwo+IAo+PiArCj4+ICsgIGZyZWUgKHN5c2ZzX3BhdGgpOwo+PiArICBm cmVlIChidWYpOwo+PiArICByZXR1cm4gbnNpZDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNoYXIg Kgo+PiArbnZtZV9nZXRfc3lzcGF0aCAoY29uc3QgY2hhciAqbnZtZWRldikKPj4gK3sKPj4gKyAg Y2hhciAqc3lzZnNfcGF0aCwgKmNvbnRyb2xsZXJfbm9kZTsKPj4gKwo+PiArICBzeXNmc19wYXRo ID0gYmxvY2tfZGV2aWNlX2dldF9zeXNmc19wYXRoX2FuZF9saW5rIChudm1lZGV2KTsKPj4gKyAg aWYgKHN0cnN0ciAoc3lzZnNfcGF0aCwgIm52bWUtc3Vic3lzdGVtIikpCj4+ICsgICAgewo+PiAr ICAgICAgY29udHJvbGxlcl9ub2RlID0gb2ZfcGF0aF9nZXRfbnZtZV9jb250cm9sbGVyX25hbWVf bm9kZSAKPj4gKG52bWVkZXYpOwo+PiArICAgICAgc3RyY2F0IChzeXNmc19wYXRoLCAiLyIpOwo+ PiArICAgICAgc3RyY2F0IChzeXNmc19wYXRoLCBjb250cm9sbGVyX25vZGUpOwo+IAo+IFRoZSBz dHJjYXQoKSB3b3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgd3JpdGVzIGFzIHRoZSBkZXN0aW5h dGlvbgo+IGJ1ZmZlciwgc3lzZnNfcGF0aCwgZGlkbid0IGhhdmUgbW9yZSBzcGFjZSB0byBjYW5j YXQgYW55IG5ldyBzdHJpbmcuCj4gCj4gVGhhbmtzLAo+IE1pY2hhZWwKPiAKPj4gKyAgICAgIHN5 c2ZzX3BhdGggPSB4cmVhbHBhdGggKHN5c2ZzX3BhdGgpOwo+PiArICAgIH0KPj4gKwo+PiArICBy ZXR1cm4gc3lzZnNfcGF0aDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGNoYXIgKgo+PiAgb2ZfcGF0 aF9vZl9udm1lKGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkp LAo+PiAgCSAgICAgICAgY29uc3QgY2hhciAqZGV2aWNlLAo+PiBAQCAtMzkxLDYgKzY3MCw4IEBA IG9mX3BhdGhfb2ZfbnZtZShjb25zdCBjaGFyICpzeXNfZGV2bmFtZSAKPj4gX19hdHRyaWJ1dGVf XygodW51c2VkKSksCj4+ICB7Cj4+ICAgIGNoYXIgKnN5c2ZzX3BhdGgsICpvZl9wYXRoLCBkaXNr W01BWF9ESVNLX0NBVF07Cj4+ICAgIGNvbnN0IGNoYXIgKmRpZ2l0X3N0cmluZywgKnBhcnRfZW5k Owo+PiArICBpbnQgY2hhcnNfd3JpdHRlbiwgcmV0X3ZhbDsKPj4gKyAgc3RydWN0IG9mcGF0aF9u dm1lb2ZfaW5mbyogbnZtZW9mX2luZm87Cj4+IAo+PiAgICBkaWdpdF9zdHJpbmcgPSB0cmFpbGlu Z19kaWdpdHMgKGRldmljZSk7Cj4+ICAgIHBhcnRfZW5kID0gZGV2aWNlbm9kZSArIHN0cmxlbiAo ZGV2aWNlbm9kZSkgLSAxOwo+PiBAQCAtNDEwLDE1ICs2OTEsOTAgQEAgb2ZfcGF0aF9vZl9udm1l KGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIAo+PiBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKPj4g ICAgICAgIC8qIFJlbW92ZSB0aGUgcC4gKi8KPj4gICAgICAgICplbmQgPSAnXDAnOwo+PiAgICAg ICAgc3NjYW5mIChkaWdpdF9zdHJpbmcsICIlZCIsICZwYXJ0KTsKPj4gLSAgICAgIHNucHJpbnRm IChkaXNrLCBzaXplb2YgKGRpc2spLCAiL2Rpc2tAMTolYyIsICdhJyArIChwYXJ0IC0gMSkpOwo+ PiAtICAgICAgc3lzZnNfcGF0aCA9IGJsb2NrX2RldmljZV9nZXRfc3lzZnNfcGF0aF9hbmRfbGlu ayAobnZtZWRldik7Cj4+ICsgICAgICBzeXNmc19wYXRoID0gbnZtZV9nZXRfc3lzcGF0aCAobnZt ZWRldik7Cj4+ICsKPj4gKyAgICAgIC8qIElmIGlzIGEgTlZNZW9GICovCj4+ICsgICAgICBpZiAo c3Ryc3RyIChzeXNmc19wYXRoLCAibnZtZS1mYWJyaWNzIikpCj4+ICsgICAgICAgIHsKPj4gKyAg ICAgICAgICBudm1lb2ZfaW5mbyA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2ZwYXRoX252bWVv Zl9pbmZvKSk7Cj4+ICsgICAgICAgICAgaWYgKCFudm1lb2ZfaW5mbykKPj4gKyAgICAgICAgICAg IHsKPj4gKyAgICAgICAgICAgICAgZnJlZSAobnZtZWRldik7Cj4+ICsgICAgICAgICAgICAgIHJl dHVybiBOVUxMOwo+PiArICAgICAgICAgICAgfQo+PiArCj4+ICsgICAgICAgICAgcmV0X3ZhbCA9 IG9mX3BhdGhfZ2V0X252bWVvZl9hZGFwdGVyX2luZm8gKHN5c2ZzX3BhdGgsIAo+PiBudm1lb2Zf aW5mbyk7Cj4+ICsgICAgICAgICAgaWYgKHJldF92YWwgPT0gLTEpCj4+ICsgICAgICAgICAgICB7 Cj4+ICsgICAgICAgICAgICAgIGZyZWUgKG52bWVkZXYpOwo+PiArICAgICAgICAgICAgICBmcmVl IChudm1lb2ZfaW5mbyk7Cj4+ICsgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+PiArICAgICAg ICAgICAgfQo+PiArCj4+ICsgICAgICAgICAgc3lzZnNfcGF0aCA9IG9mX2ZpbmRfZmNfaG9zdCAo bnZtZW9mX2luZm8tPmhvc3Rfd3dwbik7Cj4+ICsgICAgICAgICAgaWYgKCFzeXNmc19wYXRoKQo+ PiArICAgICAgICAgICAgewo+PiArICAgICAgICAgICAgICBmcmVlIChudm1lZGV2KTsKPj4gKyAg ICAgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8pOwo+PiArICAgICAgICAgICAgICByZXR1cm4g TlVMTDsKPj4gKyAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgIGNoYXJzX3dyaXR0ZW4g PSBzbnByaW50ZiAoZGlzayxzaXplb2YoZGlzayksIAo+PiAiL252bWUtb2YvY29udHJvbGxlckAl cywleDpucW49JXMiLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZt ZW9mX2luZm8tPnRhcmdldF93d3BuLDB4ZmZmZiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG52bWVvZl9pbmZvLT5ucW4pOwo+PiArICAgICAgICAgIHVuc2lnbmVkIGlu dCBuc2lkID0gb2ZfcGF0aF9nZXRfbnZtZV9uc2lkIChudm1lZGV2KTsKPj4gKyAgICAgICAgICBp ZiAobnNpZCkKPj4gKyAgICAgICAgICAgIHsKPj4gKyAgICAgICAgICAgICAgc25wcmludGYgKGRp c2srY2hhcnNfd3JpdHRlbiwgc2l6ZW9mKCIvbmFtZXNwYWNlQCIpICsgCj4+IE1BWF9OVk1FX05T SURfRElHSVRTLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIi9uYW1lc3BhY2VAJXg6JWQi LCBuc2lkLCBwYXJ0KTsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICBmcmVlIChudm1l b2ZfaW5mbyk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgIGVsc2UKPj4gKyAgICAgICAgewo+PiAr ICAgICAgICAgIHNucHJpbnRmIChkaXNrLCBzaXplb2YgKGRpc2spLCAiL2Rpc2tAMTolYyIsICdh JyArIChwYXJ0IC0gCj4+IDEpKTsKPj4gKyAgICAgICAgfQo+PiAgICAgICAgZnJlZSAobnZtZWRl dik7Cj4+ICAgICAgfQo+PiAgICBlbHNlCj4+ICAgICAgewo+PiAgICAgICAgLyogV2UgZG8gbm90 IGhhdmUgdGhlIHBhcml0aW9uLiAqLwo+PiAtICAgICAgc25wcmludGYgKGRpc2ssIHNpemVvZiAo ZGlzayksICIvZGlza0AxIik7Cj4+IC0gICAgICBzeXNmc19wYXRoID0gYmxvY2tfZGV2aWNlX2dl dF9zeXNmc19wYXRoX2FuZF9saW5rIChkZXZpY2UpOwo+PiArICAgICAgc3lzZnNfcGF0aCA9IG52 bWVfZ2V0X3N5c3BhdGggKGRldmljZSk7Cj4+ICsgICAgICBpZiAoc3Ryc3RyIChzeXNmc19wYXRo LCAibnZtZS1mYWJyaWNzIikpCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICBudm1lb2ZfaW5m byA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2ZwYXRoX252bWVvZl9pbmZvKSk7Cj4+ICsgICAg ICAgICAgaWYgKCFudm1lb2ZfaW5mbykKPj4gKyAgICAgICAgICAgIHJldHVybiBOVUxMOwo+PiAr Cj4+ICsgICAgICAgICAgcmV0X3ZhbCA9IG9mX3BhdGhfZ2V0X252bWVvZl9hZGFwdGVyX2luZm8g KHN5c2ZzX3BhdGgsIAo+PiBudm1lb2ZfaW5mbyk7Cj4+ICsgICAgICAgICAgaWYgKHJldF92YWwg PT0gLTEpCj4+ICsgICAgICAgICAgICB7Cj4+ICsgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9p bmZvKTsKPj4gKyAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4+ICsgICAgICAgICAgICB9Cj4+ ICsKPj4gKyAgICAgICAgICBzeXNmc19wYXRoID0gb2ZfZmluZF9mY19ob3N0IChudm1lb2ZfaW5m by0+aG9zdF93d3BuKTsKPj4gKyAgICAgICAgICBpZiAoIXN5c2ZzX3BhdGgpCj4+ICsgICAgICAg ICAgICB7Cj4+ICsgICAgICAgICAgICAgIGZyZWUgKG52bWVvZl9pbmZvKTsKPj4gKyAgICAgICAg ICAgICAgcmV0dXJuIE5VTEw7Cj4+ICsgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICBj aGFyc193cml0dGVuID0gc25wcmludGYgKGRpc2ssc2l6ZW9mKGRpc2spLCAKPj4gIi9udm1lLW9m L2NvbnRyb2xsZXJAJXMsJXg6bnFuPSVzIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiwgMHhmZmZmLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZtZW9mX2luZm8tPm5xbik7Cj4+ICsgICAgICAg ICAgdW5zaWduZWQgaW50IG5zaWQgPSBvZl9wYXRoX2dldF9udm1lX25zaWQgKGRldmljZSk7Cj4+ ICsgICAgICAgICAgaWYgKG5zaWQpCj4+ICsgICAgICAgICAgICB7Cj4+ICsgICAgICAgICAgICAg IHNucHJpbnRmIChkaXNrK2NoYXJzX3dyaXR0ZW4sc2l6ZW9mKCIvbmFtZXNwYWNlQCIpICsgCj4+ IHNpemVvZihjaGFyKSAqIE1BWF9OVk1FX05TSURfRElHSVRTLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgIi9uYW1lc3BhY2VAJXgiLCBuc2lkKTsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAg ICAgICAgICBmcmVlIChudm1lb2ZfaW5mbyk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgIGVsc2UK Pj4gKyAgICAgICAgewo+PiArICAgICAgICAgIHNucHJpbnRmIChkaXNrLCBzaXplb2YgKGRpc2sp LCAiL2Rpc2tAMSIpOwo+PiArICAgICAgICB9Cj4+ICAgICAgfQo+PiAKPj4gICAgb2ZfcGF0aCA9 IGZpbmRfb2JwcGF0aCAoc3lzZnNfcGF0aCk7Cj4+IEBAIC00MjksNyArNzg1LDYgQEAgb2ZfcGF0 aF9vZl9udm1lKGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIAo+PiBfX2F0dHJpYnV0ZV9fKCh1bnVz ZWQpKSwKPj4gICAgZnJlZSAoc3lzZnNfcGF0aCk7Cj4+ICAgIHJldHVybiBvZl9wYXRoOwo+PiAg fQo+PiAtI2VuZGlmCj4+IAo+PiAgc3RhdGljIGludAo+PiAgdmVuZG9yX2lzX0FUQShjb25zdCBj aGFyICpwYXRoKQo+PiBAQCAtNzc5LDExICsxMTM0LDkgQEAgZ3J1Yl91dGlsX2Rldm5hbWVfdG9f b2ZwYXRoIChjb25zdCBjaGFyIAo+PiAqc3lzX2Rldm5hbWUpCj4+ICAgICAgLyogQWxsIHRoZSBt b2RlbHMgSSd2ZSBzZWVuIGhhdmUgYSBkZXZhbGlhcyAiZmxvcHB5Ii4KPj4gICAgICAgICBOZXcg bW9kZWxzIGhhdmUgbm8gZmxvcHB5IGF0IGFsbC4gKi8KPj4gICAgICBvZnBhdGggPSB4c3RyZHVw ICgiZmxvcHB5Iik7Cj4+IC0jaWZkZWYgX19zcGFyY19fCj4+ICAgIGVsc2UgaWYgKGRldmljZVsw XSA9PSAnbicgJiYgZGV2aWNlWzFdID09ICd2JyAmJiBkZXZpY2VbMl0gPT0gJ20nCj4+ICAgICAg ICAgICAgICYmIGRldmljZVszXSA9PSAnZScpCj4+ICAgICAgb2ZwYXRoID0gb2ZfcGF0aF9vZl9u dm1lIChuYW1lX2J1ZiwgZGV2aWNlLCBkZXZub2RlLCBkZXZpY2Vub2RlKTsKPj4gLSNlbmRpZgo+ PiAgICBlbHNlCj4+ICAgICAgewo+PiAgICAgICAgZ3J1Yl91dGlsX3dhcm4gKF8oInVua25vd24g ZGV2aWNlIHR5cGUgJXMiKSwgZGV2aWNlKTsKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi91 dGlsL29mcGF0aC5oIGIvaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKPj4gaW5kZXggYjQzYzUy My4uODUxNzJiYyAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKPj4g KysrIGIvaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKPj4gQEAgLTMsNCArMywzMiBAQAo+PiAK Pj4gIGNoYXIgKmdydWJfdXRpbF9kZXZuYW1lX3RvX29mcGF0aCAoY29uc3QgY2hhciAqZGV2bmFt ZSk7Cj4+IAo+PiArc3RydWN0IG9mcGF0aF9maWxlc19saXN0X25vZGUKPj4gK3sKPj4gKyAgY2hh ciogZmlsZW5hbWU7Cj4+ICsgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9ub2RlKiBuZXh0Owo+ PiArfTsKPj4gKwo+PiArc3RydWN0IG9mcGF0aF9maWxlc19saXN0X3Jvb3QKPj4gK3sKPj4gKyAg aW50IGl0ZW1zOwo+PiArICBzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9kZSogZmlyc3Q7Cj4+ ICt9Owo+PiArCj4+ICtzdHJ1Y3Qgb2ZwYXRoX252bWVvZl9pbmZvCj4+ICt7Cj4+ICsgIGNoYXIq IGhvc3Rfd3dwbjsKPj4gKyAgY2hhciogdGFyZ2V0X3d3cG47Cj4+ICsgIGNoYXIqIG5xbjsKPj4g KyAgaW50IGNudGxpZDsKPj4gKyAgaW50IG5zaWQ7Cj4+ICt9Owo+PiArCj4+ICtpbnQgb2ZfcGF0 aF9nZXRfbnZtZW9mX2FkYXB0ZXJfaW5mbyAoY2hhciogc3lzZnNfcGF0aCwgc3RydWN0IAo+PiBv ZnBhdGhfbnZtZW9mX2luZm8qIG52bWVvZl9pbmZvKTsKPj4gK3Vuc2lnbmVkIGludCBvZl9wYXRo X2dldF9udm1lX25zaWQgKGNvbnN0IGNoYXIqIGRldm5hbWUpOwo+PiAraW50IGFkZF9maWxlbmFt ZV90b19waWxlIChjaGFyICpmaWxlbmFtZSwgc3RydWN0IAo+PiBvZnBhdGhfZmlsZXNfbGlzdF9y b290KiByb290KTsKPj4gK3ZvaWQgZmluZF9maWxlIChjaGFyKiBmaWxlbmFtZSwgY2hhciogZGly ZWN0b3J5LCBzdHJ1Y3QgCj4+IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QsIGludCBtYXhf ZGVwdGgsIGludCBkZXB0aCk7Cj4+ICtjaGFyKiBvZl9maW5kX2ZjX2hvc3QgKGNoYXIqIGhvc3Rf d3dwbik7Cj4+ICt2b2lkIGZyZWVfb2ZwYXRoX2ZpbGVzX2xpc3QgKHN0cnVjdCBvZnBhdGhfZmls ZXNfbGlzdF9yb290KiByb290KTsKPj4gKwo+PiAgI2VuZGlmIC8qICEgR1JVQl9PRlBBVEhfTUFD SElORV9VVElMX0hFQURFUiAqLwo+PiAtLQo+PiAyLjMxLjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWIt ZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnVi LWRldmVsCg==