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 B6C7ECDB47E for ; Fri, 13 Oct 2023 16:46: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-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:To:Subject:MIME-Version: Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MTAwfj8zFW+MCtie8PNMfz0NTinTXuuMZwtnVlFu0OY=; b=NLX2T8EPXjjwJ03apnnIge6g8g IuyMqV0l6lHVXC2T0DICGf52pDMG2nefhNn5gzHSNAfNSKf244S6h6NHy2Ca4YpHH48VXef52ros+ F1ftAehU5MKSMlCt8Mi7FNsvDLyrgwJqzJUqMCP6/eqE2BY/dSNl9cAH40P9+VCFSiGVyXgvJeh4i BaRfmnIk1Dh/278gT/iR+z4xgJfZ8Gi1zB986XGcTfbxmBQeBOEemsclS0DnGQlDzgeLfzt0tjeml 3FMgffAKsA/EPjNV3Bdnhc4iKZITw1S9/ZDIUgNpg5RQI/Qp2gDl2Zw7pFfC3+P+cjKIuiTQ0xgu3 ZVmFkx3w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qrLIr-003uIe-32; Fri, 13 Oct 2023 16:46:21 +0000 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qrLIo-003uHl-1s for kexec@lists.infradead.org; Fri, 13 Oct 2023 16:46:21 +0000 Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39DGZQds000884; Fri, 13 Oct 2023 16:46:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=pp1; bh=UVwTBnE0hv0Xyxv8GV2ZZ3977whpTZ5bVjZAsJt/mkw=; b=k4i41Nkv+CEzfCXqq4X9ULnfslah/ZwbqOnHYLZ/gsc822SwA6UeUnig036qQiY/Mdb6 IbwnrCv+/L8qmAsVgBxvQ5w5rng4WDxu+M4mQCzalSLtc2ykcoHhra+Y/k+rCPeONKnW b+c2z4822WK+kOmz9iiLu4w6VuKh396Rtg5UBRw0WgSZqA5Giwp/JbNuqY0/swJudmF1 w6edaLT3kT8p778qnu46ttYRoKaiGlJUKzKjjy6K+o+QmGV+dpNAdq4PyyiTpJnLDC+w a2IifnPvDsoHn/aIZ9+A/dOp0e1c/haSYgYWle9FYm43svhu4LXDEuSzjhNywpUCZ5mI HA== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3tq9ht8b20-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 13 Oct 2023 16:46:09 +0000 Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 39DGgXa8009030; Fri, 13 Oct 2023 16:46:08 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3tpt57n9bd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 13 Oct 2023 16:46:08 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 39DGk5P344958300 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Oct 2023 16:46:05 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 71EF120043; Fri, 13 Oct 2023 16:46:05 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ED46F20040; Fri, 13 Oct 2023 16:46:02 +0000 (GMT) Received: from [9.43.43.225] (unknown [9.43.43.225]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 13 Oct 2023 16:46:02 +0000 (GMT) Message-ID: <991aba16-fee6-ee78-4d80-f5c58fca801f@linux.ibm.com> Date: Fri, 13 Oct 2023 22:16:01 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v11 1/4] powerpc/kexec: turn some static helper functions public Content-Language: en-US To: Christophe Leroy , "linuxppc-dev@ozlabs.org" , "mpe@ellerman.id.au" References: <20230619024934.567046-1-sourabhjain@linux.ibm.com> <20230619024934.567046-2-sourabhjain@linux.ibm.com> <11f50c2e-a9b7-c5b5-d2b1-d52d3b3b73dc@csgroup.eu> From: Sourabh Jain In-Reply-To: <11f50c2e-a9b7-c5b5-d2b1-d52d3b3b73dc@csgroup.eu> X-TM-AS-GCONF: 00 X-Proofpoint-GUID: nn4ldwinsp9V0DNo3e0cvOrgoJl4InPO X-Proofpoint-ORIG-GUID: nn4ldwinsp9V0DNo3e0cvOrgoJl4InPO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-13_07,2023-10-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 malwarescore=0 mlxscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 bulkscore=0 clxscore=1011 spamscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310130141 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231013_094618_877307_3A659D0A X-CRM114-Status: GOOD ( 35.39 ) X-BeenThere: kexec@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "ldufour@linux.ibm.com" , "kexec@lists.infradead.org" , Laurent Dufour , "eric.devolder@oracle.com" , "hbathini@linux.ibm.com" Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "kexec" Errors-To: kexec-bounces+kexec=archiver.kernel.org@lists.infradead.org SGVsbG8gQ2hyaXN0b3BoZSwKCk9uIDEzLzEwLzIzIDE4OjU5LCBDaHJpc3RvcGhlIExlcm95IHdy b3RlOgo+Cj4gTGUgMTkvMDYvMjAyMyDDoCAwNDo0OSwgU291cmFiaCBKYWluIGEgw6ljcml0wqA6 Cj4+IE1vdmUgdXBkYXRlX2NwdXNfbm9kZSBhbmQgZ2V0X2NyYXNoX21lbW9yeV9yYW5nZXMgZnVu Y3Rpb25zIGZyb20KPj4ga2V4ZWMvZmlsZV9sb2FkXzY0LmMgdG8ga2V4ZWMvY29yZV82NC5jIHRv IG1ha2UgdGhlc2UgZnVuY3Rpb25zIHVzYWJsZQo+PiBieSBvdGhlciBrZXhlYyBjb21wb25lbnRz Lgo+Pgo+PiBMYXRlciBpbiB0aGUgc2VyaWVzLCB0aGVzZSBmdW5jdGlvbnMgYXJlIHV0aWxpemVk IHRvIGRvIGluLWtlcm5lbCB1cGRhdGUKPj4gdG8ga2V4ZWMgc2VnbWVudHMgb24gQ1BVL01lbW9y eSBob3QgcGx1Zy91bnBsdWcgb3Igb25saW5lL29mZmxpbmUgZXZlbnRzCj4+IGZvciBib3RoIGtl eGVjX2xvYWQgYW5kIGtleGVjX2ZpbGVfbG9hZCBzeXNjYWxscy4KPj4KPj4gTm8gZnVuY3Rpb25h bCBjaGFuZ2UgaW50ZW5kZWQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFNvdXJhYmggSmFpbiA8c291 cmFiaGphaW5AbGludXguaWJtLmNvbT4KPj4gUmV2aWV3ZWQtYnk6IExhdXJlbnQgRHVmb3VyIDxs YXVyZW50LmR1Zm91ckBmci5pYm0uY29tPgo+IFRoaXMgcGF0Y2ggZG9lc24ndCBhcHBseSwgaWYg c3RpbGwgYXBwbGljYWJsZSBjYW4geW91IHJlYmFzZSBhbmQgcmVzdWJtaXQgPwoKSSB3aWxsIGJl IHNlbmRpbmcgbmV4dCB2ZXJzaW9uIHNvb24uCgpUaGFua3MKU291cmFiaAo+Cj4+IC0tLQo+PiAg ICBhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va2V4ZWMuaCAgfCAgIDYgKysKPj4gICAgYXJjaC9w b3dlcnBjL2tleGVjL2NvcmVfNjQuYyAgICAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+PiAgICBhcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmMgfCAxNjIgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gICAgMyBmaWxlcyBjaGFuZ2VkLCAxNzIgaW5z ZXJ0aW9ucygrKSwgMTYyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dl cnBjL2luY2x1ZGUvYXNtL2tleGVjLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va2V4ZWMu aAo+PiBpbmRleCBhMWRkYmEwMWU3ZDEuLjgwOTBhZDdkOTdkOSAxMDA2NDQKPj4gLS0tIGEvYXJj aC9wb3dlcnBjL2luY2x1ZGUvYXNtL2tleGVjLmgKPj4gKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1 ZGUvYXNtL2tleGVjLmgKPj4gQEAgLTk5LDYgKzk5LDEyIEBAIHZvaWQgcmVsb2NhdGVfbmV3X2tl cm5lbCh1bnNpZ25lZCBsb25nIGluZGlyZWN0aW9uX3BhZ2UsIHVuc2lnbmVkIGxvbmcgcmVib290 X2NvCj4+ICAgIAo+PiAgICB2b2lkIGtleGVjX2NvcHlfZmx1c2goc3RydWN0IGtpbWFnZSAqaW1h Z2UpOwo+PiAgICAKPj4gKyNpZmRlZiBDT05GSUdfUFBDNjQKPj4gK3N0cnVjdCBjcmFzaF9tZW07 Cj4+ICtpbnQgdXBkYXRlX2NwdXNfbm9kZSh2b2lkICpmZHQpOwo+PiAraW50IGdldF9jcmFzaF9t ZW1vcnlfcmFuZ2VzKHN0cnVjdCBjcmFzaF9tZW0gKiptZW1fcmFuZ2VzKTsKPj4gKyNlbmRpZgo+ PiArCj4+ICAgICNpZiBkZWZpbmVkKENPTkZJR19DUkFTSF9EVU1QKSAmJiBkZWZpbmVkKENPTkZJ R19QUENfUlRBUykKPj4gICAgdm9pZCBjcmFzaF9mcmVlX3Jlc2VydmVkX3BoeXNfcmFuZ2UodW5z aWduZWQgbG9uZyBiZWdpbiwgdW5zaWduZWQgbG9uZyBlbmQpOwo+PiAgICAjZGVmaW5lIGNyYXNo X2ZyZWVfcmVzZXJ2ZWRfcGh5c19yYW5nZSBjcmFzaF9mcmVlX3Jlc2VydmVkX3BoeXNfcmFuZ2UK Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXhlYy9jb3JlXzY0LmMgYi9hcmNoL3Bvd2Vy cGMva2V4ZWMvY29yZV82NC5jCj4+IGluZGV4IGE3OWUyOGM5MWUyYi4uMGIyOTJmOTNhNzRjIDEw MDY0NAo+PiAtLS0gYS9hcmNoL3Bvd2VycGMva2V4ZWMvY29yZV82NC5jCj4+ICsrKyBiL2FyY2gv cG93ZXJwYy9rZXhlYy9jb3JlXzY0LmMKPj4gQEAgLTE3LDYgKzE3LDggQEAKPj4gICAgI2luY2x1 ZGUgPGxpbnV4L2NwdS5oPgo+PiAgICAjaW5jbHVkZSA8bGludXgvaGFyZGlycS5oPgo+PiAgICAj aW5jbHVkZSA8bGludXgvb2YuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9saWJmZHQuaD4KPj4gKyNp bmNsdWRlIDxsaW51eC9tZW1ibG9jay5oPgo+PiAgICAKPj4gICAgI2luY2x1ZGUgPGFzbS9wYWdl Lmg+Cj4+ICAgICNpbmNsdWRlIDxhc20vY3VycmVudC5oPgo+PiBAQCAtMzAsNiArMzIsOCBAQAo+ PiAgICAjaW5jbHVkZSA8YXNtL2h3X2JyZWFrcG9pbnQuaD4KPj4gICAgI2luY2x1ZGUgPGFzbS9z dm0uaD4KPj4gICAgI2luY2x1ZGUgPGFzbS91bHRyYXZpc29yLmg+Cj4+ICsjaW5jbHVkZSA8YXNt L2tleGVjX3Jhbmdlcy5oPgo+PiArI2luY2x1ZGUgPGFzbS9jcmFzaGR1bXAtcHBjNjQuaD4KPj4g ICAgCj4+ICAgIGludCBtYWNoaW5lX2tleGVjX3ByZXBhcmUoc3RydWN0IGtpbWFnZSAqaW1hZ2Up Cj4+ICAgIHsKPj4gQEAgLTM3Nyw2ICszODEsMTY4IEBAIHZvaWQgZGVmYXVsdF9tYWNoaW5lX2tl eGVjKHN0cnVjdCBraW1hZ2UgKmltYWdlKQo+PiAgICAJLyogTk9UUkVBQ0hFRCAqLwo+PiAgICB9 Cj4+ICAgIAo+PiArLyoqCj4+ICsgKiBnZXRfY3Jhc2hfbWVtb3J5X3JhbmdlcyAtIEdldCBjcmFz aCBtZW1vcnkgcmFuZ2VzLiBUaGlzIGxpc3QgaW5jbHVkZXMKPj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmlyc3QvY3Jhc2hpbmcga2VybmVsJ3MgbWVtb3J5IHJlZ2lvbnMgdGhhdAo+ PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICB3b3VsZCBiZSBleHBvcnRlZCB2aWEgYW4g ZWxmY29yZS4KPj4gKyAqIEBtZW1fcmFuZ2VzOiAgICAgICAgICAgICAgUmFuZ2UgbGlzdCB0byBh ZGQgdGhlIG1lbW9yeSByYW5nZXMgdG8uCj4+ICsgKgo+PiArICogUmV0dXJucyAwIG9uIHN1Y2Nl c3MsIG5lZ2F0aXZlIGVycm5vIG9uIGVycm9yLgo+PiArICovCj4+ICtpbnQgZ2V0X2NyYXNoX21l bW9yeV9yYW5nZXMoc3RydWN0IGNyYXNoX21lbSAqKm1lbV9yYW5nZXMpCj4+ICt7Cj4+ICsJcGh5 c19hZGRyX3QgYmFzZSwgZW5kOwo+PiArCXN0cnVjdCBjcmFzaF9tZW0gKnRtZW07Cj4+ICsJdTY0 IGk7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWZvcl9lYWNoX21lbV9yYW5nZShpLCAmYmFzZSwg JmVuZCkgewo+PiArCQl1NjQgc2l6ZSA9IGVuZCAtIGJhc2U7Cj4+ICsKPj4gKwkJLyogU2tpcCBi YWNrdXAgbWVtb3J5IHJlZ2lvbiwgd2hpY2ggbmVlZHMgYSBzZXBhcmF0ZSBlbnRyeSAqLwo+PiAr CQlpZiAoYmFzZSA9PSBCQUNLVVBfU1JDX1NUQVJUKSB7Cj4+ICsJCQlpZiAoc2l6ZSA+IEJBQ0tV UF9TUkNfU0laRSkgewo+PiArCQkJCWJhc2UgPSBCQUNLVVBfU1JDX0VORCArIDE7Cj4+ICsJCQkJ c2l6ZSAtPSBCQUNLVVBfU1JDX1NJWkU7Cj4+ICsJCQl9IGVsc2UKPj4gKwkJCQljb250aW51ZTsK Pj4gKwkJfQo+PiArCj4+ICsJCXJldCA9IGFkZF9tZW1fcmFuZ2UobWVtX3JhbmdlcywgYmFzZSwg c2l6ZSk7Cj4+ICsJCWlmIChyZXQpCj4+ICsJCQlnb3RvIG91dDsKPj4gKwo+PiArCQkvKiBUcnkg bWVyZ2luZyBhZGphY2VudCByYW5nZXMgYmVmb3JlIHJlYWxsb2NhdGlvbiBhdHRlbXB0ICovCj4+ ICsJCWlmICgoKm1lbV9yYW5nZXMpLT5ucl9yYW5nZXMgPT0gKCptZW1fcmFuZ2VzKS0+bWF4X25y X3JhbmdlcykKPj4gKwkJCXNvcnRfbWVtb3J5X3JhbmdlcygqbWVtX3JhbmdlcywgdHJ1ZSk7Cj4+ ICsJfQo+PiArCj4+ICsJLyogUmVhbGxvY2F0ZSBtZW1vcnkgcmFuZ2VzIGlmIHRoZXJlIGlzIG5v IHNwYWNlIHRvIHNwbGl0IHJhbmdlcyAqLwo+PiArCXRtZW0gPSAqbWVtX3JhbmdlczsKPj4gKwlp ZiAodG1lbSAmJiAodG1lbS0+bnJfcmFuZ2VzID09IHRtZW0tPm1heF9ucl9yYW5nZXMpKSB7Cj4+ ICsJCXRtZW0gPSByZWFsbG9jX21lbV9yYW5nZXMobWVtX3Jhbmdlcyk7Cj4+ICsJCWlmICghdG1l bSkKPj4gKwkJCWdvdG8gb3V0Owo+PiArCX0KPj4gKwo+PiArCS8qIEV4Y2x1ZGUgY3Jhc2hrZXJu ZWwgcmVnaW9uICovCj4+ICsJcmV0ID0gY3Jhc2hfZXhjbHVkZV9tZW1fcmFuZ2UodG1lbSwgY3Jh c2hrX3Jlcy5zdGFydCwgY3Jhc2hrX3Jlcy5lbmQpOwo+PiArCWlmIChyZXQpCj4+ICsJCWdvdG8g b3V0Owo+PiArCj4+ICsJLyoKPj4gKwkgKiBGSVhNRTogRm9yIG5vdywgc3RheSBpbiBwYXJpdHkg d2l0aCBrZXhlYy10b29scyBidXQgaWYgUlRBUy9PUEFMCj4+ICsJICogICAgICAgIHJlZ2lvbnMg YXJlIGV4cG9ydGVkIHRvIHNhdmUgdGhlaXIgY29udGV4dCBhdCB0aGUgdGltZSBvZgo+PiArCSAq ICAgICAgICBjcmFzaCwgdGhleSBzaG91bGQgYWN0dWFsbHkgYmUgYmFja2VkIHVwIGp1c3QgbGlr ZSB0aGUKPj4gKwkgKiAgICAgICAgZmlyc3QgNjRLIGJ5dGVzIG9mIG1lbW9yeS4KPj4gKwkgKi8K Pj4gKwlyZXQgPSBhZGRfcnRhc19tZW1fcmFuZ2UobWVtX3Jhbmdlcyk7Cj4+ICsJaWYgKHJldCkK Pj4gKwkJZ290byBvdXQ7Cj4+ICsKPj4gKwlyZXQgPSBhZGRfb3BhbF9tZW1fcmFuZ2UobWVtX3Jh bmdlcyk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290byBvdXQ7Cj4+ICsKPj4gKwkvKiBjcmVhdGUg YSBzZXBhcmF0ZSBwcm9ncmFtIGhlYWRlciBmb3IgdGhlIGJhY2t1cCByZWdpb24gKi8KPj4gKwly ZXQgPSBhZGRfbWVtX3JhbmdlKG1lbV9yYW5nZXMsIEJBQ0tVUF9TUkNfU1RBUlQsIEJBQ0tVUF9T UkNfU0laRSk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290byBvdXQ7Cj4+ICsKPj4gKwlzb3J0X21l bW9yeV9yYW5nZXMoKm1lbV9yYW5nZXMsIGZhbHNlKTsKPj4gK291dDoKPj4gKwlpZiAocmV0KQo+ PiArCQlwcl9lcnIoIkZhaWxlZCB0byBzZXR1cCBjcmFzaCBtZW1vcnkgcmFuZ2VzXG4iKTsKPj4g KwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIGFkZF9ub2RlX3Byb3BzIC0g UmVhZHMgbm9kZSBwcm9wZXJ0aWVzIGZyb20gZGV2aWNlIG5vZGUgc3RydWN0dXJlIGFuZCBhZGQK Pj4gKyAqICAgICAgICAgICAgICAgICAgdGhlbSB0byBmZHQuCj4+ICsgKiBAZmR0OiAgICAgICAg ICAgIEZsYXR0ZW5lZCBkZXZpY2UgdHJlZSBvZiB0aGUga2VybmVsCj4+ICsgKiBAbm9kZV9vZmZz ZXQ6ICAgIG9mZnNldCBvZiB0aGUgbm9kZSB0byBhZGQgYSBwcm9wZXJ0eSBhdAo+PiArICogQGRu OiAgICAgICAgICAgICBkZXZpY2Ugbm9kZSBwb2ludGVyCj4+ICsgKgo+PiArICogUmV0dXJucyAw IG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGVycm9yLgo+PiArICovCj4+ICtzdGF0aWMg aW50IGFkZF9ub2RlX3Byb3BzKHZvaWQgKmZkdCwgaW50IG5vZGVfb2Zmc2V0LCBjb25zdCBzdHJ1 Y3QgZGV2aWNlX25vZGUgKmRuKQo+PiArewo+PiArCWludCByZXQgPSAwOwo+PiArCXN0cnVjdCBw cm9wZXJ0eSAqcHA7Cj4+ICsKPj4gKwlpZiAoIWRuKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4g Kwo+PiArCWZvcl9lYWNoX3Byb3BlcnR5X29mX25vZGUoZG4sIHBwKSB7Cj4+ICsJCXJldCA9IGZk dF9zZXRwcm9wKGZkdCwgbm9kZV9vZmZzZXQsIHBwLT5uYW1lLCBwcC0+dmFsdWUsIHBwLT5sZW5n dGgpOwo+PiArCQlpZiAocmV0IDwgMCkgewo+PiArCQkJcHJfZXJyKCJVbmFibGUgdG8gYWRkICVz IHByb3BlcnR5OiAlc1xuIiwgcHAtPm5hbWUsIGZkdF9zdHJlcnJvcihyZXQpKTsKPj4gKwkJCXJl dHVybiByZXQ7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiAr LyoqCj4+ICsgKiB1cGRhdGVfY3B1c19ub2RlIC0gVXBkYXRlIGNwdXMgbm9kZSBvZiBmbGF0dGVu ZWQgZGV2aWNlIHRyZWUgdXNpbmcgb2Zfcm9vdAo+PiArICogICAgICAgICAgICAgICAgICAgIGRl dmljZSBub2RlLgo+PiArICogQGZkdDogICAgICAgICAgICAgIEZsYXR0ZW5lZCBkZXZpY2UgdHJl ZSBvZiB0aGUga2VybmVsLgo+PiArICoKPj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdh dGl2ZSBlcnJubyBvbiBlcnJvci4KPj4gKyAqLwo+PiAraW50IHVwZGF0ZV9jcHVzX25vZGUodm9p ZCAqZmR0KQo+PiArewo+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY3B1c19ub2RlLCAqZG47Cj4+ ICsJaW50IGNwdXNfb2Zmc2V0LCBjcHVzX3N1Ym5vZGVfb2Zmc2V0LCByZXQgPSAwOwo+PiArCj4+ ICsJY3B1c19vZmZzZXQgPSBmZHRfcGF0aF9vZmZzZXQoZmR0LCAiL2NwdXMiKTsKPj4gKwlpZiAo Y3B1c19vZmZzZXQgPCAwICYmIGNwdXNfb2Zmc2V0ICE9IC1GRFRfRVJSX05PVEZPVU5EKSB7Cj4+ ICsJCXByX2VycigiTWFsZm9ybWVkIGRldmljZSB0cmVlOiBlcnJvciByZWFkaW5nIC9jcHVzIG5v ZGU6ICVzXG4iLAo+PiArCQkgICAgICAgZmR0X3N0cmVycm9yKGNwdXNfb2Zmc2V0KSk7Cj4+ICsJ CXJldHVybiBjcHVzX29mZnNldDsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAoY3B1c19vZmZzZXQgPiAw KSB7Cj4+ICsJCXJldCA9IGZkdF9kZWxfbm9kZShmZHQsIGNwdXNfb2Zmc2V0KTsKPj4gKwkJaWYg KHJldCA8IDApIHsKPj4gKwkJCXByX2VycigiRXJyb3IgZGVsZXRpbmcgL2NwdXMgbm9kZTogJXNc biIsIGZkdF9zdHJlcnJvcihyZXQpKTsKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCQl9Cj4+ ICsJfQo+PiArCj4+ICsJLyogQWRkIGNwdXMgbm9kZSB0byBmZHQgKi8KPj4gKwljcHVzX29mZnNl dCA9IGZkdF9hZGRfc3Vibm9kZShmZHQsIGZkdF9wYXRoX29mZnNldChmZHQsICIvIiksICJjcHVz Iik7Cj4+ICsJaWYgKGNwdXNfb2Zmc2V0IDwgMCkgewo+PiArCQlwcl9lcnIoIkVycm9yIGNyZWF0 aW5nIC9jcHVzIG5vZGU6ICVzXG4iLCBmZHRfc3RyZXJyb3IoY3B1c19vZmZzZXQpKTsKPj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4+ICsJfQo+PiArCj4+ICsJLyogQWRkIGNwdXMgbm9kZSBwcm9wZXJ0 aWVzICovCj4+ICsJY3B1c19ub2RlID0gb2ZfZmluZF9ub2RlX2J5X3BhdGgoIi9jcHVzIik7Cj4+ ICsJcmV0ID0gYWRkX25vZGVfcHJvcHMoZmR0LCBjcHVzX29mZnNldCwgY3B1c19ub2RlKTsKPj4g KwlvZl9ub2RlX3B1dChjcHVzX25vZGUpOwo+PiArCWlmIChyZXQgPCAwKQo+PiArCQlyZXR1cm4g cmV0Owo+PiArCj4+ICsJLyogTG9vcCB0aHJvdWdoIGFsbCBzdWJub2RlcyBvZiBjcHVzIGFuZCBh ZGQgdGhlbSB0byBmZHQgKi8KPj4gKwlmb3JfZWFjaF9ub2RlX2J5X3R5cGUoZG4sICJjcHUiKSB7 Cj4+ICsJCWNwdXNfc3Vibm9kZV9vZmZzZXQgPSBmZHRfYWRkX3N1Ym5vZGUoZmR0LCBjcHVzX29m ZnNldCwgZG4tPmZ1bGxfbmFtZSk7Cj4+ICsJCWlmIChjcHVzX3N1Ym5vZGVfb2Zmc2V0IDwgMCkg ewo+PiArCQkJcHJfZXJyKCJVbmFibGUgdG8gYWRkICVzIHN1Ym5vZGU6ICVzXG4iLCBkbi0+ZnVs bF9uYW1lLAo+PiArCQkJICAgICAgIGZkdF9zdHJlcnJvcihjcHVzX3N1Ym5vZGVfb2Zmc2V0KSk7 Cj4+ICsJCQlyZXQgPSBjcHVzX3N1Ym5vZGVfb2Zmc2V0Owo+PiArCQkJZ290byBvdXQ7Cj4+ICsJ CX0KPj4gKwo+PiArCQlyZXQgPSBhZGRfbm9kZV9wcm9wcyhmZHQsIGNwdXNfc3Vibm9kZV9vZmZz ZXQsIGRuKTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQlnb3RvIG91dDsKPj4gKwl9Cj4+ICtv dXQ6Cj4+ICsJb2Zfbm9kZV9wdXQoZG4pOwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4g ICAgI2lmZGVmIENPTkZJR19QUENfNjRTX0hBU0hfTU1VCj4+ICAgIC8qIFZhbHVlcyB3ZSBuZWVk IHRvIGV4cG9ydCB0byB0aGUgc2Vjb25kIGtlcm5lbCB2aWEgdGhlIGRldmljZSB0cmVlLiAqLwo+ PiAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBodGFiX2Jhc2U7Cj4+IGRpZmYgLS1naXQgYS9hcmNo L3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmMgYi9hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9s b2FkXzY0LmMKPj4gaW5kZXggMTEwZDI4YmVkZTJhLi41YjBiM2Y2MWUwZTcgMTAwNjQ0Cj4+IC0t LSBhL2FyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYwo+PiArKysgYi9hcmNoL3Bvd2Vy cGMva2V4ZWMvZmlsZV9sb2FkXzY0LmMKPj4gQEAgLTEzMyw4MSArMTMzLDYgQEAgc3RhdGljIGlu dCBnZXRfdXNhYmxlX21lbW9yeV9yYW5nZXMoc3RydWN0IGNyYXNoX21lbSAqKm1lbV9yYW5nZXMp Cj4+ICAgIAlyZXR1cm4gcmV0Owo+PiAgICB9Cj4+ICAgIAo+PiAtLyoqCj4+IC0gKiBnZXRfY3Jh c2hfbWVtb3J5X3JhbmdlcyAtIEdldCBjcmFzaCBtZW1vcnkgcmFuZ2VzLiBUaGlzIGxpc3QgaW5j bHVkZXMKPj4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QvY3Jhc2hpbmcga2Vy bmVsJ3MgbWVtb3J5IHJlZ2lvbnMgdGhhdAo+PiAtICogICAgICAgICAgICAgICAgICAgICAgICAg ICB3b3VsZCBiZSBleHBvcnRlZCB2aWEgYW4gZWxmY29yZS4KPj4gLSAqIEBtZW1fcmFuZ2VzOiAg ICAgICAgICAgICAgUmFuZ2UgbGlzdCB0byBhZGQgdGhlIG1lbW9yeSByYW5nZXMgdG8uCj4+IC0g Kgo+PiAtICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGVycm9yLgo+ PiAtICovCj4+IC1zdGF0aWMgaW50IGdldF9jcmFzaF9tZW1vcnlfcmFuZ2VzKHN0cnVjdCBjcmFz aF9tZW0gKiptZW1fcmFuZ2VzKQo+PiAtewo+PiAtCXBoeXNfYWRkcl90IGJhc2UsIGVuZDsKPj4g LQlzdHJ1Y3QgY3Jhc2hfbWVtICp0bWVtOwo+PiAtCXU2NCBpOwo+PiAtCWludCByZXQ7Cj4+IC0K Pj4gLQlmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgJmJhc2UsICZlbmQpIHsKPj4gLQkJdTY0IHNpemUg PSBlbmQgLSBiYXNlOwo+PiAtCj4+IC0JCS8qIFNraXAgYmFja3VwIG1lbW9yeSByZWdpb24sIHdo aWNoIG5lZWRzIGEgc2VwYXJhdGUgZW50cnkgKi8KPj4gLQkJaWYgKGJhc2UgPT0gQkFDS1VQX1NS Q19TVEFSVCkgewo+PiAtCQkJaWYgKHNpemUgPiBCQUNLVVBfU1JDX1NJWkUpIHsKPj4gLQkJCQli YXNlID0gQkFDS1VQX1NSQ19FTkQgKyAxOwo+PiAtCQkJCXNpemUgLT0gQkFDS1VQX1NSQ19TSVpF Owo+PiAtCQkJfSBlbHNlCj4+IC0JCQkJY29udGludWU7Cj4+IC0JCX0KPj4gLQo+PiAtCQlyZXQg PSBhZGRfbWVtX3JhbmdlKG1lbV9yYW5nZXMsIGJhc2UsIHNpemUpOwo+PiAtCQlpZiAocmV0KQo+ PiAtCQkJZ290byBvdXQ7Cj4+IC0KPj4gLQkJLyogVHJ5IG1lcmdpbmcgYWRqYWNlbnQgcmFuZ2Vz IGJlZm9yZSByZWFsbG9jYXRpb24gYXR0ZW1wdCAqLwo+PiAtCQlpZiAoKCptZW1fcmFuZ2VzKS0+ bnJfcmFuZ2VzID09ICgqbWVtX3JhbmdlcyktPm1heF9ucl9yYW5nZXMpCj4+IC0JCQlzb3J0X21l bW9yeV9yYW5nZXMoKm1lbV9yYW5nZXMsIHRydWUpOwo+PiAtCX0KPj4gLQo+PiAtCS8qIFJlYWxs b2NhdGUgbWVtb3J5IHJhbmdlcyBpZiB0aGVyZSBpcyBubyBzcGFjZSB0byBzcGxpdCByYW5nZXMg Ki8KPj4gLQl0bWVtID0gKm1lbV9yYW5nZXM7Cj4+IC0JaWYgKHRtZW0gJiYgKHRtZW0tPm5yX3Jh bmdlcyA9PSB0bWVtLT5tYXhfbnJfcmFuZ2VzKSkgewo+PiAtCQl0bWVtID0gcmVhbGxvY19tZW1f cmFuZ2VzKG1lbV9yYW5nZXMpOwo+PiAtCQlpZiAoIXRtZW0pCj4+IC0JCQlnb3RvIG91dDsKPj4g LQl9Cj4+IC0KPj4gLQkvKiBFeGNsdWRlIGNyYXNoa2VybmVsIHJlZ2lvbiAqLwo+PiAtCXJldCA9 IGNyYXNoX2V4Y2x1ZGVfbWVtX3JhbmdlKHRtZW0sIGNyYXNoa19yZXMuc3RhcnQsIGNyYXNoa19y ZXMuZW5kKTsKPj4gLQlpZiAocmV0KQo+PiAtCQlnb3RvIG91dDsKPj4gLQo+PiAtCS8qCj4+IC0J ICogRklYTUU6IEZvciBub3csIHN0YXkgaW4gcGFyaXR5IHdpdGgga2V4ZWMtdG9vbHMgYnV0IGlm IFJUQVMvT1BBTAo+PiAtCSAqICAgICAgICByZWdpb25zIGFyZSBleHBvcnRlZCB0byBzYXZlIHRo ZWlyIGNvbnRleHQgYXQgdGhlIHRpbWUgb2YKPj4gLQkgKiAgICAgICAgY3Jhc2gsIHRoZXkgc2hv dWxkIGFjdHVhbGx5IGJlIGJhY2tlZCB1cCBqdXN0IGxpa2UgdGhlCj4+IC0JICogICAgICAgIGZp cnN0IDY0SyBieXRlcyBvZiBtZW1vcnkuCj4+IC0JICovCj4+IC0JcmV0ID0gYWRkX3J0YXNfbWVt X3JhbmdlKG1lbV9yYW5nZXMpOwo+PiAtCWlmIChyZXQpCj4+IC0JCWdvdG8gb3V0Owo+PiAtCj4+ IC0JcmV0ID0gYWRkX29wYWxfbWVtX3JhbmdlKG1lbV9yYW5nZXMpOwo+PiAtCWlmIChyZXQpCj4+ IC0JCWdvdG8gb3V0Owo+PiAtCj4+IC0JLyogY3JlYXRlIGEgc2VwYXJhdGUgcHJvZ3JhbSBoZWFk ZXIgZm9yIHRoZSBiYWNrdXAgcmVnaW9uICovCj4+IC0JcmV0ID0gYWRkX21lbV9yYW5nZShtZW1f cmFuZ2VzLCBCQUNLVVBfU1JDX1NUQVJULCBCQUNLVVBfU1JDX1NJWkUpOwo+PiAtCWlmIChyZXQp Cj4+IC0JCWdvdG8gb3V0Owo+PiAtCj4+IC0Jc29ydF9tZW1vcnlfcmFuZ2VzKCptZW1fcmFuZ2Vz LCBmYWxzZSk7Cj4+IC1vdXQ6Cj4+IC0JaWYgKHJldCkKPj4gLQkJcHJfZXJyKCJGYWlsZWQgdG8g c2V0dXAgY3Jhc2ggbWVtb3J5IHJhbmdlc1xuIik7Cj4+IC0JcmV0dXJuIHJldDsKPj4gLX0KPj4g LQo+PiAgICAvKioKPj4gICAgICogZ2V0X3Jlc2VydmVkX21lbW9yeV9yYW5nZXMgLSBHZXQgcmVz ZXJ2ZSBtZW1vcnkgcmFuZ2VzLiBUaGlzIGxpc3QgaW5jbHVkZXMKPj4gICAgICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZW1vcnkgcmVnaW9ucyB0aGF0IHNob3VsZCBiZSBhZGRlZCB0 byB0aGUKPj4gQEAgLTEwMTgsOTMgKzk0Myw2IEBAIHVuc2lnbmVkIGludCBrZXhlY19leHRyYV9m ZHRfc2l6ZV9wcGM2NChzdHJ1Y3Qga2ltYWdlICppbWFnZSkKPj4gICAgCXJldHVybiBleHRyYV9z aXplOwo+PiAgICB9Cj4+ICAgIAo+PiAtLyoqCj4+IC0gKiBhZGRfbm9kZV9wcm9wcyAtIFJlYWRz IG5vZGUgcHJvcGVydGllcyBmcm9tIGRldmljZSBub2RlIHN0cnVjdHVyZSBhbmQgYWRkCj4+IC0g KiAgICAgICAgICAgICAgICAgIHRoZW0gdG8gZmR0Lgo+PiAtICogQGZkdDogICAgICAgICAgICBG bGF0dGVuZWQgZGV2aWNlIHRyZWUgb2YgdGhlIGtlcm5lbAo+PiAtICogQG5vZGVfb2Zmc2V0OiAg ICBvZmZzZXQgb2YgdGhlIG5vZGUgdG8gYWRkIGEgcHJvcGVydHkgYXQKPj4gLSAqIEBkbjogICAg ICAgICAgICAgZGV2aWNlIG5vZGUgcG9pbnRlcgo+PiAtICoKPj4gLSAqIFJldHVybnMgMCBvbiBz dWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBlcnJvci4KPj4gLSAqLwo+PiAtc3RhdGljIGludCBh ZGRfbm9kZV9wcm9wcyh2b2lkICpmZHQsIGludCBub2RlX29mZnNldCwgY29uc3Qgc3RydWN0IGRl dmljZV9ub2RlICpkbikKPj4gLXsKPj4gLQlpbnQgcmV0ID0gMDsKPj4gLQlzdHJ1Y3QgcHJvcGVy dHkgKnBwOwo+PiAtCj4+IC0JaWYgKCFkbikKPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4+IC0KPj4g LQlmb3JfZWFjaF9wcm9wZXJ0eV9vZl9ub2RlKGRuLCBwcCkgewo+PiAtCQlyZXQgPSBmZHRfc2V0 cHJvcChmZHQsIG5vZGVfb2Zmc2V0LCBwcC0+bmFtZSwgcHAtPnZhbHVlLCBwcC0+bGVuZ3RoKTsK Pj4gLQkJaWYgKHJldCA8IDApIHsKPj4gLQkJCXByX2VycigiVW5hYmxlIHRvIGFkZCAlcyBwcm9w ZXJ0eTogJXNcbiIsIHBwLT5uYW1lLCBmZHRfc3RyZXJyb3IocmV0KSk7Cj4+IC0JCQlyZXR1cm4g cmV0Owo+PiAtCQl9Cj4+IC0JfQo+PiAtCXJldHVybiByZXQ7Cj4+IC19Cj4+IC0KPj4gLS8qKgo+ PiAtICogdXBkYXRlX2NwdXNfbm9kZSAtIFVwZGF0ZSBjcHVzIG5vZGUgb2YgZmxhdHRlbmVkIGRl dmljZSB0cmVlIHVzaW5nIG9mX3Jvb3QKPj4gLSAqICAgICAgICAgICAgICAgICAgICBkZXZpY2Ug bm9kZS4KPj4gLSAqIEBmZHQ6ICAgICAgICAgICAgICBGbGF0dGVuZWQgZGV2aWNlIHRyZWUgb2Yg dGhlIGtlcm5lbC4KPj4gLSAqCj4+IC0gKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUg ZXJybm8gb24gZXJyb3IuCj4+IC0gKi8KPj4gLXN0YXRpYyBpbnQgdXBkYXRlX2NwdXNfbm9kZSh2 b2lkICpmZHQpCj4+IC17Cj4+IC0Jc3RydWN0IGRldmljZV9ub2RlICpjcHVzX25vZGUsICpkbjsK Pj4gLQlpbnQgY3B1c19vZmZzZXQsIGNwdXNfc3Vibm9kZV9vZmZzZXQsIHJldCA9IDA7Cj4+IC0K Pj4gLQljcHVzX29mZnNldCA9IGZkdF9wYXRoX29mZnNldChmZHQsICIvY3B1cyIpOwo+PiAtCWlm IChjcHVzX29mZnNldCA8IDAgJiYgY3B1c19vZmZzZXQgIT0gLUZEVF9FUlJfTk9URk9VTkQpIHsK Pj4gLQkJcHJfZXJyKCJNYWxmb3JtZWQgZGV2aWNlIHRyZWU6IGVycm9yIHJlYWRpbmcgL2NwdXMg bm9kZTogJXNcbiIsCj4+IC0JCSAgICAgICBmZHRfc3RyZXJyb3IoY3B1c19vZmZzZXQpKTsKPj4g LQkJcmV0dXJuIGNwdXNfb2Zmc2V0Owo+PiAtCX0KPj4gLQo+PiAtCWlmIChjcHVzX29mZnNldCA+ IDApIHsKPj4gLQkJcmV0ID0gZmR0X2RlbF9ub2RlKGZkdCwgY3B1c19vZmZzZXQpOwo+PiAtCQlp ZiAocmV0IDwgMCkgewo+PiAtCQkJcHJfZXJyKCJFcnJvciBkZWxldGluZyAvY3B1cyBub2RlOiAl c1xuIiwgZmR0X3N0cmVycm9yKHJldCkpOwo+PiAtCQkJcmV0dXJuIC1FSU5WQUw7Cj4+IC0JCX0K Pj4gLQl9Cj4+IC0KPj4gLQkvKiBBZGQgY3B1cyBub2RlIHRvIGZkdCAqLwo+PiAtCWNwdXNfb2Zm c2V0ID0gZmR0X2FkZF9zdWJub2RlKGZkdCwgZmR0X3BhdGhfb2Zmc2V0KGZkdCwgIi8iKSwgImNw dXMiKTsKPj4gLQlpZiAoY3B1c19vZmZzZXQgPCAwKSB7Cj4+IC0JCXByX2VycigiRXJyb3IgY3Jl YXRpbmcgL2NwdXMgbm9kZTogJXNcbiIsIGZkdF9zdHJlcnJvcihjcHVzX29mZnNldCkpOwo+PiAt CQlyZXR1cm4gLUVJTlZBTDsKPj4gLQl9Cj4+IC0KPj4gLQkvKiBBZGQgY3B1cyBub2RlIHByb3Bl cnRpZXMgKi8KPj4gLQljcHVzX25vZGUgPSBvZl9maW5kX25vZGVfYnlfcGF0aCgiL2NwdXMiKTsK Pj4gLQlyZXQgPSBhZGRfbm9kZV9wcm9wcyhmZHQsIGNwdXNfb2Zmc2V0LCBjcHVzX25vZGUpOwo+ PiAtCW9mX25vZGVfcHV0KGNwdXNfbm9kZSk7Cj4+IC0JaWYgKHJldCA8IDApCj4+IC0JCXJldHVy biByZXQ7Cj4+IC0KPj4gLQkvKiBMb29wIHRocm91Z2ggYWxsIHN1Ym5vZGVzIG9mIGNwdXMgYW5k IGFkZCB0aGVtIHRvIGZkdCAqLwo+PiAtCWZvcl9lYWNoX25vZGVfYnlfdHlwZShkbiwgImNwdSIp IHsKPj4gLQkJY3B1c19zdWJub2RlX29mZnNldCA9IGZkdF9hZGRfc3Vibm9kZShmZHQsIGNwdXNf b2Zmc2V0LCBkbi0+ZnVsbF9uYW1lKTsKPj4gLQkJaWYgKGNwdXNfc3Vibm9kZV9vZmZzZXQgPCAw KSB7Cj4+IC0JCQlwcl9lcnIoIlVuYWJsZSB0byBhZGQgJXMgc3Vibm9kZTogJXNcbiIsIGRuLT5m dWxsX25hbWUsCj4+IC0JCQkgICAgICAgZmR0X3N0cmVycm9yKGNwdXNfc3Vibm9kZV9vZmZzZXQp KTsKPj4gLQkJCXJldCA9IGNwdXNfc3Vibm9kZV9vZmZzZXQ7Cj4+IC0JCQlnb3RvIG91dDsKPj4g LQkJfQo+PiAtCj4+IC0JCXJldCA9IGFkZF9ub2RlX3Byb3BzKGZkdCwgY3B1c19zdWJub2RlX29m ZnNldCwgZG4pOwo+PiAtCQlpZiAocmV0IDwgMCkKPj4gLQkJCWdvdG8gb3V0Owo+PiAtCX0KPj4g LW91dDoKPj4gLQlvZl9ub2RlX3B1dChkbik7Cj4+IC0JcmV0dXJuIHJldDsKPj4gLX0KPj4gLQo+ PiAgICBzdGF0aWMgaW50IGNvcHlfcHJvcGVydHkodm9pZCAqZmR0LCBpbnQgbm9kZV9vZmZzZXQs IGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4sCj4+ICAgIAkJCSBjb25zdCBjaGFyICpwcm9w bmFtZSkKPj4gICAgewoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK