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 X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 20DBFC3F2CD for ; Thu, 5 Mar 2020 04:31:56 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 00CE1208CD for ; Thu, 5 Mar 2020 04:31:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 00CE1208CD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=au1.ibm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id F2BAE10FC3773; Wed, 4 Mar 2020 20:32:46 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=148.163.158.5; helo=mx0a-001b2d01.pphosted.com; envelope-from=alastair@au1.ibm.com; receiver= Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 673DE10FC3772 for ; Wed, 4 Mar 2020 20:32:44 -0800 (PST) Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0254SmeO105628 for ; Wed, 4 Mar 2020 23:31:52 -0500 Received: from e06smtp07.uk.ibm.com (e06smtp07.uk.ibm.com [195.75.94.103]) by mx0b-001b2d01.pphosted.com with ESMTP id 2yjtd7g478-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 04 Mar 2020 23:31:51 -0500 Received: from localhost by e06smtp07.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 5 Mar 2020 04:31:49 -0000 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp07.uk.ibm.com (192.168.101.137) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 5 Mar 2020 04:31:42 -0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 0254VfAe55574684 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 5 Mar 2020 04:31:41 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2C410A4040; Thu, 5 Mar 2020 04:31:41 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7BD60A4051; Thu, 5 Mar 2020 04:31:40 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.192.253.14]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 5 Mar 2020 04:31:40 +0000 (GMT) Received: from adsilva.ozlabs.ibm.com (haven.au.ibm.com [9.192.254.114]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 8AB7AA0264; Thu, 5 Mar 2020 15:31:35 +1100 (AEDT) Subject: Re: [PATCH v3 17/27] powerpc/powernv/pmem: Implement the Read Error Log command From: "Alastair D'Silva" To: Frederic Barrat Date: Thu, 05 Mar 2020 15:31:39 +1100 In-Reply-To: <7767dec4-fb78-dd3e-3720-8d15f544639e@linux.ibm.com> References: <20200221032720.33893-1-alastair@au1.ibm.com> <20200221032720.33893-18-alastair@au1.ibm.com> <7767dec4-fb78-dd3e-3720-8d15f544639e@linux.ibm.com> Organization: IBM Australia User-Agent: Evolution 3.34.4 (3.34.4-1.fc31) MIME-Version: 1.0 X-TM-AS-GCONF: 00 x-cbid: 20030504-0028-0000-0000-000003E10282 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20030504-0029-0000-0000-000024A635EA Message-Id: <739066a997f83e7aa27dc364071223936fa753ef.camel@au1.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-03-04_10:2020-03-04,2020-03-04 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 phishscore=0 priorityscore=1501 bulkscore=0 suspectscore=2 impostorscore=0 mlxscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2003050024 Message-ID-Hash: 7XTXO7K6JLGIN2ISW7URGPZDH7OBYJJ3 X-Message-ID-Hash: 7XTXO7K6JLGIN2ISW7URGPZDH7OBYJJ3 X-MailFrom: alastair@au1.ibm.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: "Aneesh Kumar K . V" , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Andrew Donnellan , Arnd Bergmann , Greg Kroah-Hartman , Andrew Morton , Mauro Carvalho Chehab , "David S. Miller" , Rob Herring , Anton Blanchard , Krzysztof Kozlowski , Mahesh Salgaonkar , Madhavan Srinivasan , =?ISO-8859-1?Q?C=E9dric?= Le Goater , Anju T Sudhakar , Hari Bathini , Thomas Gleixner , Greg Kurz , Nicholas Piggin , Masahiro Yamada , Alexey Kardashevskiy , linux-kernel@vger.kernel.org, linuxppc- dev@lists.ozlabs.org, linux-nvdimm@lists.01.org, linux-mm@kvack.org X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlLCAyMDIwLTAzLTAzIGF0IDExOjM2ICswMTAwLCBGcmVkZXJpYyBCYXJyYXQgd3JvdGU6 DQo+IA0KPiBMZSAyMS8wMi8yMDIwIMOgIDA0OjI3LCBBbGFzdGFpciBEJ1NpbHZhIGEgw6ljcml0 IDoNCj4gPiBGcm9tOiBBbGFzdGFpciBEJ1NpbHZhIDxhbGFzdGFpckBkLXNpbHZhLm9yZz4NCj4g PiANCj4gPiBUaGUgcmVhZCBlcnJvciBsb2cgY29tbWFuZCBleHRyYWN0cyBpbmZvcm1hdGlvbiBm cm9tIHRoZQ0KPiA+IGNvbnRyb2xsZXIncw0KPiA+IGludGVybmFsIGVycm9yIGxvZy4NCj4gPiAN Cj4gPiBUaGlzIHBhdGNoIGV4cG9zZXMgdGhpcyBpbmZvcm1hdGlvbiBpbiAyIHdheXM6DQo+ID4g LSBEdXJpbmcgcHJvYmUsIGlmIGFuIGVycm9yIG9jY3VycyAmIGEgbG9nIGlzIGF2YWlsYWJsZSwg cHJpbnQgaXQNCj4gPiB0byB0aGUNCj4gPiAgICBjb25zb2xlDQo+ID4gLSBBZnRlciBwcm9iZSwg bWFrZSB0aGUgZXJyb3IgbG9nIGF2YWlsYWJsZSB0byB1c2Vyc3BhY2UgdmlhIGFuDQo+ID4gSU9D VEwuDQo+ID4gICAgVXNlcnNwYWNlIGlzIG5vdGlmaWVkIG9mIHBlbmRpbmcgZXJyb3IgbG9ncyBp biBhIGxhdGVyIHBhdGNoDQo+ID4gICAgKCJwb3dlcnBjL3Bvd2VybnYvcG1lbTogRm9yd2FyZCBl dmVudHMgdG8gdXNlcnNwYWNlIikNCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbGFzdGFpciBE J1NpbHZhIDxhbGFzdGFpckBkLXNpbHZhLm9yZz4NCj4gPiAtLS0NCj4gPiAgIGFyY2gvcG93ZXJw Yy9wbGF0Zm9ybXMvcG93ZXJudi9wbWVtL29jeGwuYyAgICB8IDI2OQ0KPiA+ICsrKysrKysrKysr KysrKysrKw0KPiA+ICAgLi4uL3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bF9pbnRlcm5hbC5o ICAgIHwgICAxICsNCj4gPiAgIGluY2x1ZGUvdWFwaS9udmRpbW0vb2N4bC1wbWVtLmggICAgICAg ICAgICAgICB8ICA0NiArKysNCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMo KykNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvbnZkaW1tL29jeGwtcG1l bS5oDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJu di9wbWVtL29jeGwuYw0KPiA+IGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0v b2N4bC5jDQo+ID4gaW5kZXggNjMxMDlhODcwZDJjLi4yYjY0NTA0ZjkxMjkgMTAwNjQ0DQo+ID4g LS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bC5jDQo+ID4gKysr IGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bC5jDQo+ID4gQEAgLTQ0 NywxMCArNDQ3LDIxOSBAQCBzdGF0aWMgaW50IGZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLA0KPiA+IHN0cnVjdCBmaWxlICpmaWxlKQ0KPiA+ICAgCXJldHVybiAwOw0KPiA+ICAgfQ0K PiA+ICAgDQo+ID4gKy8qKg0KPiA+ICsgKiBlcnJvcl9sb2dfaGVhZGVyX3BhcnNlKCkgLSBQYXJz ZSB0aGUgZmlyc3QgNjQgYml0cyBvZiB0aGUgZXJyb3INCj4gPiBsb2cgY29tbWFuZCByZXNwb25z ZQ0KPiA+ICsgKiBAb2N4bHBtZW06IHRoZSBkZXZpY2UgbWV0YWRhdGENCj4gPiArICogQGxlbmd0 aDogb3V0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHJlc3BvbnNlDQo+ID4g KGV4Y2x1ZGluZyB0aGUgNjQgYml0IGhlYWRlcikNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQg ZXJyb3JfbG9nX2hlYWRlcl9wYXJzZShzdHJ1Y3Qgb2N4bHBtZW0gKm9jeGxwbWVtLCB1MTYNCj4g PiAqbGVuZ3RoKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmM7DQo+ID4gKwl1NjQgdmFsOw0KPiA+ICsN Cj4gDQo+IEVtcHR5IGxpbmUgaW4gdGhlIG1pZGRsZSBvZiBkZWNsYXJhdGlvbnMNCj4gDQoNCk9r DQoNCj4gDQo+ID4gKwl1MTYgZGF0YV9pZGVudGlmaWVyOw0KPiA+ICsJdTMyIGRhdGFfbGVuZ3Ro Ow0KPiA+ICsNCj4gPiArCXJjID0gb2N4bF9nbG9iYWxfbW1pb19yZWFkNjQob2N4bHBtZW0tPm9j eGxfYWZ1LA0KPiA+ICsJCQkJICAgICBvY3hscG1lbS0NCj4gPiA+YWRtaW5fY29tbWFuZC5kYXRh X29mZnNldCwNCj4gPiArCQkJCSAgICAgT0NYTF9MSVRUTEVfRU5ESUFOLCAmdmFsKTsNCj4gPiAr CWlmIChyYykNCj4gPiArCQlyZXR1cm4gcmM7DQo+ID4gKw0KPiA+ICsJZGF0YV9pZGVudGlmaWVy ID0gdmFsID4+IDQ4Ow0KPiA+ICsJZGF0YV9sZW5ndGggPSB2YWwgJiAweEZGRkY7DQo+ID4gKw0K PiA+ICsJaWYgKGRhdGFfaWRlbnRpZmllciAhPSAweDQ1NEMpIHsgLy8gJ0VMJw0KPiA+ICsJCWRl dl9lcnIoJm9jeGxwbWVtLT5kZXYsDQo+ID4gKwkJCSJCYWQgZGF0YSBpZGVudGlmaWVyIGZvciBl cnJvciBsb2cgZGF0YSwNCj4gPiBleHBlY3RlZCAnRUwnLCBnb3QgJyUycycgKCUjeCksIGRhdGFf bGVuZ3RoPSV1XG4iLA0KPiA+ICsJCQkoY2hhciAqKSZkYXRhX2lkZW50aWZpZXIsDQo+ID4gKwkJ CSh1bnNpZ25lZCBpbnQpZGF0YV9pZGVudGlmaWVyLCBkYXRhX2xlbmd0aCk7DQo+ID4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJKmxlbmd0aCA9IGRhdGFfbGVuZ3Ro Ow0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZXJyb3Jf bG9nX29mZnNldF8weDA4KHN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0sDQo+ID4gKwkJCQkgdTMy ICpsb2dfaWRlbnRpZmllciwgdTMyDQo+ID4gKnByb2dyYW1fcmVmX2NvZGUpDQo+ID4gK3sNCj4g PiArCWludCByYzsNCj4gPiArCXU2NCB2YWw7DQo+ID4gKw0KPiA+ICsJcmMgPSBvY3hsX2dsb2Jh bF9tbWlvX3JlYWQ2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ID4gKwkJCQkgICAgIG9jeGxwbWVt LQ0KPiA+ID5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0ICsgMHgwOCwNCj4gPiArCQkJCSAgICAg T0NYTF9MSVRUTEVfRU5ESUFOLCAmdmFsKTsNCj4gPiArCWlmIChyYykNCj4gPiArCQlyZXR1cm4g cmM7DQo+ID4gKw0KPiA+ICsJKmxvZ19pZGVudGlmaWVyID0gdmFsID4+IDMyOw0KPiA+ICsJKnBy b2dyYW1fcmVmX2NvZGUgPSB2YWwgJiAweEZGRkZGRkZGOw0KPiA+ICsNCj4gPiArCXJldHVybiAw Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHJlYWRfZXJyb3JfbG9nKHN0cnVjdCBv Y3hscG1lbSAqb2N4bHBtZW0sDQo+ID4gKwkJCSAgc3RydWN0IGlvY3RsX29jeGxfcG1lbV9lcnJv cl9sb2cgKmxvZywgYm9vbA0KPiA+IGJ1Zl9pc191c2VyKQ0KPiA+ICt7DQo+ID4gKwl1NjQgdmFs Ow0KPiA+ICsJdTE2IHVzZXJfYnVmX2xlbmd0aDsNCj4gPiArCXUxNiBidWZfbGVuZ3RoOw0KPiA+ ICsJdTE2IGk7DQo+ID4gKwlpbnQgcmM7DQo+ID4gKw0KPiA+ICsJaWYgKGxvZy0+YnVmX3NpemUg JSA4KQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCXJjID0gb2N4bHBtZW1f Y2hpKG9jeGxwbWVtLCAmdmFsKTsNCj4gPiArCWlmIChyYykNCj4gPiArCQlnb3RvIG91dDsNCj4g DQo+IA0KPiAib3V0IiB3aWxsIHVubG9jayBhIG11dGV4IG5vdCB5ZXQgdGFrZW4uDQo+IA0KDQpU aGFua3MsIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBhIHJldHVybi4NCg0KPiANCj4gDQo+ID4gKw0K PiA+ICsJaWYgKCEodmFsICYgR0xPQkFMX01NSU9fQ0hJX0VMQSkpDQo+ID4gKwkJcmV0dXJuIC1F QUdBSU47DQo+ID4gKw0KPiA+ICsJdXNlcl9idWZfbGVuZ3RoID0gbG9nLT5idWZfc2l6ZTsNCj4g PiArDQo+ID4gKwltdXRleF9sb2NrKCZvY3hscG1lbS0+YWRtaW5fY29tbWFuZC5sb2NrKTsNCj4g PiArDQo+ID4gKwlyYyA9IGFkbWluX2NvbW1hbmRfcmVxdWVzdChvY3hscG1lbSwgQURNSU5fQ09N TUFORF9FUlJMT0cpOw0KPiA+ICsJaWYgKHJjKQ0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsNCj4g PiArCXJjID0gYWRtaW5fY29tbWFuZF9leGVjdXRlKG9jeGxwbWVtKTsNCj4gPiArCWlmIChyYykN Cj4gPiArCQlnb3RvIG91dDsNCj4gPiArDQo+ID4gKwlyYyA9IGFkbWluX2NvbW1hbmRfY29tcGxl dGVfdGltZW91dChvY3hscG1lbSwNCj4gPiBBRE1JTl9DT01NQU5EX0VSUkxPRyk7DQo+ID4gKwlp ZiAocmMgPCAwKSB7DQo+ID4gKwkJZGV2X3dhcm4oJm9jeGxwbWVtLT5kZXYsICJSZWFkIGVycm9y IGxvZyB0aW1lZCBvdXRcbiIpOw0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCXJjID0gYWRtaW5fcmVzcG9uc2Uob2N4bHBtZW0pOw0KPiA+ICsJaWYgKHJjIDwgMCkNCj4g PiArCQlnb3RvIG91dDsNCj4gPiArCWlmIChyYyAhPSBTVEFUVVNfU1VDQ0VTUykgew0KPiA+ICsJ CXdhcm5fc3RhdHVzKG9jeGxwbWVtLCAiVW5leHBlY3RlZCBzdGF0dXMgZnJvbSByZXRyaWV2ZQ0K PiA+IGVycm9yIGxvZyIsIHJjKTsNCj4gPiArCQlnb3RvIG91dDsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKw0KPiA+ICsJcmMgPSBlcnJvcl9sb2dfaGVhZGVyX3BhcnNlKG9jeGxwbWVtLCAmbG9nLT5i dWZfc2l6ZSk7DQo+ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXQ7DQo+ID4gKwkvLyBsb2ct PmJ1Zl9zaXplIG5vdyBjb250YWlucyB0aGUgcmV0dXJuZWQgYnVmZmVyIHNpemUsIG5vdCB0aGUN Cj4gPiB1c2VyIHNpemUNCj4gPiArDQo+ID4gKwlyYyA9IGVycm9yX2xvZ19vZmZzZXRfMHgwOChv Y3hscG1lbSwgJmxvZy0+bG9nX2lkZW50aWZpZXIsDQo+ID4gKwkJCQkgICAgICAgJmxvZy0+cHJv Z3JhbV9yZWZlcmVuY2VfY29kZSk7DQo+ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXQ7DQo+ IA0KPiANCj4gT2Zmc2V0IDB4MDggZ2V0cyBhIHByZWZlcmVudGlhbCB0cmVhdG1lbnQgY29tcGFy ZWQgdG8gMHgxMCBiZWxvdyBhbmQgDQo+IGl0J3Mgbm90IGNsZWFyIHdoeS4NCj4gSSB3b3VsZCBj cmVhdGUgYSBzdWJmb25jdGlvbiB3aGljaCBwYXJzZXMgYWxsIHRoZSBmaWVsZHMgbGluZWFybHku DQo+IA0KDQpJJ2xsIGlubGluZSB0aGUgY29udGVudHMgb2YgZXJyb3JfbG9nX29mZnNldF8weDA4 KCkgLSBJIGNhbid0IHNlZSBhIGJpZw0KYmVuZWZpdCB0byBmYWN0b3Jpbmcgb3V0IHRoZSBndXRz IG9mIHRoYXQgZnVuY3Rpb24uDQoNCj4gDQo+IA0KPiA+ICsJcmMgPSBvY3hsX2dsb2JhbF9tbWlv X3JlYWQ2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ID4gKwkJCQkgICAgIG9jeGxwbWVtLQ0KPiA+ ID5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0ICsgMHgxMCwNCj4gPiArCQkJCSAgICAgT0NYTF9M SVRUTEVfRU5ESUFOLCAmdmFsKTsNCj4gPiArCWlmIChyYykNCj4gPiArCQlnb3RvIG91dDsNCj4g PiArDQo+ID4gKwlsb2ctPmVycm9yX2xvZ190eXBlID0gdmFsID4+IDU2Ow0KPiA+ICsJbG9nLT5h Y3Rpb25fZmxhZ3MgPSAobG9nLT5lcnJvcl9sb2dfdHlwZSA9PQ0KPiA+IE9DWExfUE1FTV9FUlJP Ul9MT0dfVFlQRV9HRU5FUkFMKSA/DQo+ID4gKwkJCSAgICAodmFsID4+IDMyKSAmIDB4RkZGRkZG IDogMDsNCj4gPiArCWxvZy0+cG93ZXJfb25fc2Vjb25kcyA9IHZhbCAmIDB4RkZGRkZGRkY7DQo+ ID4gKw0KPiA+ICsJcmMgPSBvY3hsX2dsb2JhbF9tbWlvX3JlYWQ2NChvY3hscG1lbS0+b2N4bF9h ZnUsDQo+ID4gKwkJCQkgICAgIG9jeGxwbWVtLQ0KPiA+ID5hZG1pbl9jb21tYW5kLmRhdGFfb2Zm c2V0ICsgMHgxOCwNCj4gPiArCQkJCSAgICAgT0NYTF9MSVRUTEVfRU5ESUFOLCAmbG9nLQ0KPiA+ ID50aW1lc3RhbXApOw0KPiA+ICsJaWYgKHJjKQ0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsNCj4g PiArCXJjID0gb2N4bF9nbG9iYWxfbW1pb19yZWFkNjQob2N4bHBtZW0tPm9jeGxfYWZ1LA0KPiA+ ICsJCQkJICAgICBvY3hscG1lbS0NCj4gPiA+YWRtaW5fY29tbWFuZC5kYXRhX29mZnNldCArIDB4 MjAsDQo+ID4gKwkJCQkgICAgIE9DWExfSE9TVF9FTkRJQU4sICZsb2ctPnd3aWRbMF0pOw0KPiAN Cj4gDQo+IEEgYml0IG9mIGEgbW9vdCBwb2ludCwgYnV0IGlzIHRoZXJlIGEgcmVhc29uIHdoeSBz b21lIG9mIHRob3NlIE1NSU8NCj4gb3BzIA0KPiB1c2UgT0NYTF9MSVRUTEVfRU5ESUFOIGFuZCB0 aGUgb3RoZXJzIE9DWExfSE9TVF9FTkRJQU4/DQo+IA0KDQpTb21lIGFyZSBsaXR0bGUgZW5kaWFu IHZhbHVlcywgYW5kIHNvbWUgYXJlIGJpbmFyeSBkYXRhLiBXV0lEcyBzaG91bGQNCmJlIExFIHRo b3VnaC4NCg0KPiANCj4gDQo+ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXQ7DQo+ID4gKw0K PiA+ICsJcmMgPSBvY3hsX2dsb2JhbF9tbWlvX3JlYWQ2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ ID4gKwkJCQkgICAgIG9jeGxwbWVtLQ0KPiA+ID5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0ICsg MHgyOCwNCj4gPiArCQkJCSAgICAgT0NYTF9IT1NUX0VORElBTiwgJmxvZy0+d3dpZFsxXSk7DQo+ ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXQ7DQo+ID4gKw0KPiA+ICsJcmMgPSBvY3hsX2ds b2JhbF9tbWlvX3JlYWQ2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ID4gKwkJCQkgICAgIG9jeGxw bWVtLQ0KPiA+ID5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0ICsgMHgzMCwNCj4gPiArCQkJCSAg ICAgT0NYTF9IT1NUX0VORElBTiwgKHU2NCAqKWxvZy0NCj4gPiA+ZndfcmV2aXNpb24pOw0KPiA+ ICsJaWYgKHJjKQ0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsJbG9nLT5md19yZXZpc2lvbls4XSA9 ICdcMCc7DQo+ID4gKw0KPiA+ICsJYnVmX2xlbmd0aCA9ICh1c2VyX2J1Zl9sZW5ndGggPCBsb2ct PmJ1Zl9zaXplKSA/DQo+ID4gKwkJICAgICB1c2VyX2J1Zl9sZW5ndGggOiBsb2ctPmJ1Zl9zaXpl Ow0KPiA+ICsJZm9yIChpID0gMDsgaSA8IGJ1Zl9sZW5ndGggKyAweDQ4OyBpICs9IDgpIHsNCj4g PiArCQl1NjQgdmFsOw0KPiA+ICsNCj4gPiArCQlyYyA9IG9jeGxfZ2xvYmFsX21taW9fcmVhZDY0 KG9jeGxwbWVtLT5vY3hsX2FmdSwNCj4gPiArCQkJCQkgICAgIG9jeGxwbWVtLQ0KPiA+ID5hZG1p bl9jb21tYW5kLmRhdGFfb2Zmc2V0ICsgaSwNCj4gPiArCQkJCQkgICAgIE9DWExfSE9TVF9FTkRJ QU4sICZ2YWwpOw0KPiA+ICsJCWlmIChyYykNCj4gPiArCQkJZ290byBvdXQ7DQo+ID4gKw0KPiA+ ICsJCWlmIChidWZfaXNfdXNlcikgew0KPiA+ICsJCQlpZiAoY29weV90b191c2VyKCZsb2ctPmJ1 ZltpXSwgJnZhbCwNCj4gPiBzaXplb2YodTY0KSkpIHsNCj4gPiArCQkJCXJjID0gLUVGQVVMVDsN Cj4gPiArCQkJCWdvdG8gb3V0Ow0KPiA+ICsJCQl9DQo+ID4gKwkJfSBlbHNlDQo+ID4gKwkJCWxv Zy0+YnVmW2ldID0gdmFsOw0KPiA+ICsJfQ0KPiANCj4gDQo+IEkgdGhpbmsgaXQgY291bGQgYmUg YSBiaXQgc2ltcGxpZmllZCBieSBrZWVwaW5nIHRoZSBoYW5kbGluZyBvZiB0aGUNCj4gdXNlciAN Cj4gYnVmZmVyIG91dCBvZiB0aGlzIGZ1bmN0aW9uLiBBbHdheXMgY2FsbCBpdCB3aXRoIGEga2Vy bmVsIGJ1ZmZlci4NCj4gQW5kIA0KPiBoYXZlIG9ubHkgb25lIGNvcHlfdG9fdXNlcigpIGNhbGwg b24gdGhlIGlvY3RsKCkgcGF0aC4gWW91J2QgbmVlZCB0byANCj4gYWxsb2NhdGUgYSBrZXJuZWwg YnVmIG9uIHRoZSBpb2N0bCBwYXRoLCBidXQgeW91J3JlIGFscmVhZHkgZG9pbmcgaXQNCj4gb24g DQo+IHRoZSBwcm9iZSgpIHBhdGgsIHNvIGl0IHNob3VsZCBiZSBkb2FibGUgdG8gc2hhcmUgY29k ZS4NCg0KSG1tLCB0aGUgcHJvYmxlbSB0aGVuIGlzIHRoYXQgb24gdGhlIElPQ1RMIHNpZGUsIEkn bGwgaGF2ZSB0byBzYXZlLA0KbW9kaWZ5LCB0aGVuIHJlc3RvcmUgdGhlIGJ1ZiBtZW1iZXIgb2Yg c3RydWN0DQppb2N0bF9vY3hsX3BtZW1fZXJyb3JfbG9nLCB3aGljaCB3b3VsZCBiZSB1Z2xpZXIu DQoNCj4gDQo+IA0KPiA+ICsNCj4gPiArCXJjID0gYWRtaW5fcmVzcG9uc2VfaGFuZGxlZChvY3hs cG1lbSk7DQo+ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXQ7DQo+ID4gKw0KPiA+ICtvdXQ6 DQo+ID4gKwltdXRleF91bmxvY2soJm9jeGxwbWVtLT5hZG1pbl9jb21tYW5kLmxvY2spOw0KPiA+ ICsJcmV0dXJuIHJjOw0KPiA+ICsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBpb2N0 bF9lcnJvcl9sb2coc3RydWN0IG9jeGxwbWVtICpvY3hscG1lbSwNCj4gPiArCQlzdHJ1Y3QgaW9j dGxfb2N4bF9wbWVtX2Vycm9yX2xvZyBfX3VzZXIgKnVhcmcpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCBpb2N0bF9vY3hsX3BtZW1fZXJyb3JfbG9nIGFyZ3M7DQo+ID4gKwlpbnQgcmM7DQo+ID4gKw0K PiA+ICsJaWYgKGNvcHlfZnJvbV91c2VyKCZhcmdzLCB1YXJnLCBzaXplb2YoYXJncykpKQ0KPiA+ ICsJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsNCj4gPiArCXJjID0gcmVhZF9lcnJvcl9sb2cob2N4 bHBtZW0sICZhcmdzLCB0cnVlKTsNCj4gPiArCWlmIChyYykNCj4gPiArCQlyZXR1cm4gcmM7DQo+ ID4gKw0KPiA+ICsJaWYgKGNvcHlfdG9fdXNlcih1YXJnLCAmYXJncywgc2l6ZW9mKGFyZ3MpKSkN Cj4gPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGxvbmcgZmlsZV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5z aWduZWQgaW50IGNtZCwNCj4gPiB1bnNpZ25lZCBsb25nIGFyZ3MpDQo+ID4gK3sNCj4gPiArCXN0 cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0gPSBmaWxlLT5wcml2YXRlX2RhdGE7DQo+ID4gKwlpbnQg cmMgPSAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCXN3aXRjaCAoY21kKSB7DQo+ID4gKwljYXNlIElP Q1RMX09DWExfUE1FTV9FUlJPUl9MT0c6DQo+ID4gKwkJcmMgPSBpb2N0bF9lcnJvcl9sb2cob2N4 bHBtZW0sDQo+ID4gKwkJCQkgICAgIChzdHJ1Y3QgaW9jdGxfb2N4bF9wbWVtX2Vycm9yX2xvZw0K PiA+IF9fdXNlciAqKWFyZ3MpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJu IHJjOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgZm9wcyA9IHsNCj4gPiAgIAkub3duZXIJCT0gVEhJU19NT0RVTEUsDQo+ID4gICAJLm9w ZW4JCT0gZmlsZV9vcGVuLA0KPiA+ICAgCS5yZWxlYXNlCT0gZmlsZV9yZWxlYXNlLA0KPiA+ICsJ LnVubG9ja2VkX2lvY3RsID0gZmlsZV9pb2N0bCwNCj4gPiArCS5jb21wYXRfaW9jdGwgICA9IGZp bGVfaW9jdGwsDQo+ID4gICB9Ow0KPiA+ICAgDQo+ID4gICAvKioNCj4gPiBAQCAtNTI3LDYgKzcz Niw2MCBAQCBzdGF0aWMgaW50IHJlYWRfZGV2aWNlX21ldGFkYXRhKHN0cnVjdA0KPiA+IG9jeGxw bWVtICpvY3hscG1lbSkNCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiAgIH0NCj4gPiAgIA0KPiA+ICtz dGF0aWMgY29uc3QgY2hhciAqZGVjb2RlX2Vycm9yX2xvZ190eXBlKHU4IGVycm9yX2xvZ190eXBl KQ0KPiA+ICt7DQo+ID4gKwlzd2l0Y2ggKGVycm9yX2xvZ190eXBlKSB7DQo+ID4gKwljYXNlIDB4 MDA6DQo+ID4gKwkJcmV0dXJuICJnZW5lcmFsIjsNCj4gPiArCWNhc2UgMHgwMToNCj4gPiArCQly ZXR1cm4gInByZWRpY3RpdmUgZmFpbHVyZSI7DQo+ID4gKwljYXNlIDB4MDI6DQo+ID4gKwkJcmV0 dXJuICJ0aGVybWFsIHdhcm5pbmciOw0KPiA+ICsJY2FzZSAweDAzOg0KPiA+ICsJCXJldHVybiAi ZGF0YSBsb3NzIjsNCj4gPiArCWNhc2UgMHgwNDoNCj4gPiArCQlyZXR1cm4gImhlYWx0aCAmIHBl cmZvcm1hbmNlIjsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0dXJuICJ1bmtub3duIjsNCj4g PiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZHVtcF9lcnJvcl9sb2coc3Ry dWN0IG9jeGxwbWVtICpvY3hscG1lbSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGlvY3RsX29jeGxf cG1lbV9lcnJvcl9sb2cgbG9nOw0KPiA+ICsJdTMyIGJ1Zl9zaXplOw0KPiA+ICsJdTggKmJ1ZjsN Cj4gPiArCWludCByYzsNCj4gPiArDQo+ID4gKwlpZiAob2N4bHBtZW0tPmFkbWluX2NvbW1hbmQu ZGF0YV9zaXplID09IDApDQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsNCj4gPiArCWJ1Zl9zaXplID0g b2N4bHBtZW0tPmFkbWluX2NvbW1hbmQuZGF0YV9zaXplIC0gMHg0ODsNCj4gPiArCWJ1ZiA9IGt6 YWxsb2MoYnVmX3NpemUsIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCFidWYpDQo+ID4gKwkJcmV0 dXJuOw0KPiA+ICsNCj4gPiArCWxvZy5idWYgPSBidWY7DQo+ID4gKwlsb2cuYnVmX3NpemUgPSBi dWZfc2l6ZTsNCj4gPiArDQo+ID4gKwlyYyA9IHJlYWRfZXJyb3JfbG9nKG9jeGxwbWVtLCAmbG9n LCBmYWxzZSk7DQo+ID4gKwlpZiAocmMgPCAwKQ0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsNCj4g PiArCWRldl93YXJuKCZvY3hscG1lbS0+ZGV2LA0KPiA+ICsJCSAiT0NYTCBQTUVNIEVycm9yIGxv ZzogV1dJRD0weCUwMTZsbHglMDE2bGx4IExJRD0weCV4DQo+ID4gUFJDPSV4IHR5cGU9MHgleCAl cywgVXB0aW1lPSV1IHNlY29uZHMgdGltZXN0YW1wPTB4JWxseFxuIiwNCj4gPiArCQkgbG9nLnd3 aWRbMF0sIGxvZy53d2lkWzFdLA0KPiA+ICsJCSBsb2cubG9nX2lkZW50aWZpZXIsIGxvZy5wcm9n cmFtX3JlZmVyZW5jZV9jb2RlLA0KPiA+ICsJCSBsb2cuZXJyb3JfbG9nX3R5cGUsDQo+ID4gKwkJ IGRlY29kZV9lcnJvcl9sb2dfdHlwZShsb2cuZXJyb3JfbG9nX3R5cGUpLA0KPiA+ICsJCSBsb2cu cG93ZXJfb25fc2Vjb25kcywgbG9nLnRpbWVzdGFtcCk7DQo+ID4gKwlwcmludF9oZXhfZHVtcChL RVJOX1dBUk5JTkcsICJidWYiLCBEVU1QX1BSRUZJWF9PRkZTRVQsIDE2LCAxLA0KPiA+IGJ1ZiwN Cj4gPiArCQkgICAgICAgbG9nLmJ1Zl9zaXplLCBmYWxzZSk7DQo+IA0KPiBkZXZfd2FybiBhbHJl YWR5IGxvZ3MgYSB3YXJuaW5nLiBJc24ndCBLRVJOX0RFQlVHIG1vcmUgYXBwcm9wcmlhdGUNCj4g Zm9yIA0KPiB0aGUgaGV4IGR1bXA/DQo+IA0KPiANCg0KVGhlIGhleCBkdW1wIGlzIGFzc29jaWF0 ZWQgYmluYXJ5IGRhdGEgZm9yIHRoZSB3YXJuaW5nLCBpdCBkb2Vzbid0DQpyZXBsaWNhdGUgdGhl IGNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlLg0KDQo+IA0KPiA+ICsNCj4gPiArb3V0Og0KPiA+ICsJ a2ZyZWUoYnVmKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgIC8qKg0KPiA+ICAgICogcHJvYmVfZnVu Y3Rpb24wKCkgLSBTZXQgdXAgZnVuY3Rpb24gMCBmb3IgYW4gT3BlbkNBUEkNCj4gPiBwZXJzaXN0 ZW50IG1lbW9yeSBkZXZpY2UNCj4gPiAgICAqIFRoaXMgaXMgaW1wb3J0YW50IGFzIGl0IGVuYWJs ZXMgdGVtcGxhdGVzIGhpZ2hlciB0aGFuIDAgYWNyb3NzDQo+ID4gYWxsIG90aGVyIGZ1bmN0aW9u cywNCj4gPiBAQCAtNTY4LDYgKzgzMSw3IEBAIHN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHBjaV9k ZXYgKnBkZXYsIGNvbnN0DQo+ID4gc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkNCj4gPiAgIAlz dHJ1Y3Qgb2N4bHBtZW0gKm9jeGxwbWVtOw0KPiA+ICAgCWludCByYzsNCj4gPiAgIAl1MTYgZWxh cHNlZCwgdGltZW91dDsNCj4gPiArCXU2NCBjaGk7DQo+ID4gICANCj4gPiAgIAlpZiAoUENJX0ZV TkMocGRldi0+ZGV2Zm4pID09IDApDQo+ID4gICAJCXJldHVybiBwcm9iZV9mdW5jdGlvbjAocGRl dik7DQo+ID4gQEAgLTY2Nyw2ICs5MzEsMTEgQEAgc3RhdGljIGludCBwcm9iZShzdHJ1Y3QgcGNp X2RldiAqcGRldiwgY29uc3QNCj4gPiBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQ0KPiA+ICAg CXJldHVybiAwOw0KPiA+ICAgDQo+ID4gICBlcnI6DQo+ID4gKwlpZiAob2N4bHBtZW0gJiYNCj4g PiArCQkgICAgKG9jeGxwbWVtX2NoaShvY3hscG1lbSwgJmNoaSkgPT0gMCkgJiYNCj4gPiArCQkg ICAgKGNoaSAmIEdMT0JBTF9NTUlPX0NISV9FTEEpKQ0KPiA+ICsJCWR1bXBfZXJyb3JfbG9nKG9j eGxwbWVtKTsNCj4gPiArDQo+ID4gICAJLyoNCj4gPiAgIAkgKiBGdXJ0aGVyIGNsZWFudXAgaXMg ZG9uZSBpbiB0aGUgcmVsZWFzZSBoYW5kbGVyIHZpYQ0KPiA+IGZyZWVfb2N4bHBtZW0oKQ0KPiA+ ICAgCSAqIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdGhlIGNoYXJhY3RlciBkZXZpY2UgbGl2ZSB0 byBoYW5kbGUNCj4gPiBJT0NUTHMgdG8NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3Bs YXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bF9pbnRlcm5hbC5oDQo+ID4gYi9hcmNoL3Bvd2VycGMv cGxhdGZvcm1zL3Bvd2VybnYvcG1lbS9vY3hsX2ludGVybmFsLmgNCj4gPiBpbmRleCBkMmQ4MWZl YzdiYjEuLmI5NTNlZTUyMmVkNCAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZv cm1zL3Bvd2VybnYvcG1lbS9vY3hsX2ludGVybmFsLmgNCj4gPiArKysgYi9hcmNoL3Bvd2VycGMv cGxhdGZvcm1zL3Bvd2VybnYvcG1lbS9vY3hsX2ludGVybmFsLmgNCj4gPiBAQCAtNSw2ICs1LDcg QEANCj4gPiAgICNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+DQo+ID4gICAjaW5jbHVkZSA8bWlzYy9v Y3hsLmg+DQo+ID4gICAjaW5jbHVkZSA8bGludXgvbGlibnZkaW1tLmg+DQo+ID4gKyNpbmNsdWRl IDx1YXBpL252ZGltbS9vY3hsLXBtZW0uaD4NCj4gDQo+IENhbid0IHdlIGxpbWl0IHRoZSBleHRy YSBpbmNsdWRlIHRvIG9jeGwuYz8NCj4gDQoNClllcywgdGhlcmUgYXJlIG5vIGNvbnN1bWVycyBy ZWZlcnJlZCB0byBpbiBvY3hsX2ludGVyYWwuW2hjXQ0KDQo+IENvbXBsZXRlbHkgdW5yZWxhdGVk LCBidXQgb2N4bC5jIGNvbnRhaW5zIG1vc3Qgb2YgdGhlIGNvZGUgZm9yIHRoaXMgDQo+IGRyaXZl ci4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbmFtaW5nIGl0IHRvIG9jeGxwbWVtLmMgb3Igc29tZXRo aW5nDQo+IGFsb25nIA0KPiB0aG9zZSBsaW5lcywgc2luY2UgaXQgZG9lcyBhIGxvdCBtb3JlIHRo YW4ganVzdCBpbnRlcmZhY2luZyB3aXRoIHRoZSANCj4gb3BlbmNhcGkgaW50ZXJmYWNlLiBBbmQg d291bGQgYXZvaWQgY29uZnVzaW9uIHdpdGggYW4gb3RoZXIgYWxyZWFkeSANCj4gZXhpc3Rpbmcg b2N4bC5jIGZpbGUuDQo+IA0KDQpPaywgbXkgdGhpbmtpbmcgd2FzIHRoYXQgaXQncyBhbHJlYWR5 IGluIGEgcG1lbSBkaXJlY3RvcnksIGJ1dCBJIGNhbg0Kc2VlIGFyZ3VtZW50cyBib3RoIHdheXMu DQoNCj4gDQo+ID4gICAjaW5jbHVkZSA8bGludXgvbW0uaD4NCj4gPiAgIA0KPiA+ICAgI2RlZmlu ZSBMQUJFTF9BUkVBX1NJWkUJKDFVTCA8PCBQQV9TRUNUSU9OX1NISUZUKQ0KPiA+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL3VhcGkvbnZkaW1tL29jeGwtcG1lbS5oDQo+ID4gYi9pbmNsdWRlL3VhcGkv bnZkaW1tL29jeGwtcG1lbS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAw MDAwMDAwMDAwMDAuLmIxMGY4YWMwYzIwZg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9p bmNsdWRlL3VhcGkvbnZkaW1tL29jeGwtcG1lbS5oDQo+ID4gQEAgLTAsMCArMSw0NiBAQA0KPiA+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxs LW5vdGUgKi8NCj4gPiArLyogQ29weXJpZ2h0IDIwMTcgSUJNIENvcnAuICovDQo+ID4gKyNpZm5k ZWYgX1VBUElfT0NYTF9TQ01fSA0KPiA+ICsjZGVmaW5lIF9VQVBJX09DWExfU0NNX0gNCj4gPiAr DQo+ID4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW9j dGwuaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUgT0NYTF9QTUVNX0VSUk9SX0xPR19BQ1RJT05fUkVT RVQJKDEgPDwgKDMyLTMyKSkNCj4gPiArI2RlZmluZSBPQ1hMX1BNRU1fRVJST1JfTE9HX0FDVElP Tl9DSEtGVwkoMSA8PCAoNTMtMzIpKQ0KPiA+ICsjZGVmaW5lIE9DWExfUE1FTV9FUlJPUl9MT0df QUNUSU9OX1JFUExBQ0UJKDEgPDwgKDU0LTMyKSkNCj4gPiArI2RlZmluZSBPQ1hMX1BNRU1fRVJS T1JfTE9HX0FDVElPTl9EVU1QCQkoMSA8PCAoNTUtMzIpKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBP Q1hMX1BNRU1fRVJST1JfTE9HX1RZUEVfR0VORVJBTAkJKDB4MDApDQo+ID4gKyNkZWZpbmUgT0NY TF9QTUVNX0VSUk9SX0xPR19UWVBFX1BSRURJQ1RJVkVfRkFJTFVSRQkoMHgwMSkNCj4gPiArI2Rl ZmluZSBPQ1hMX1BNRU1fRVJST1JfTE9HX1RZUEVfVEhFUk1BTF9XQVJOSU5HCSgweDAyKQ0KPiA+ ICsjZGVmaW5lIE9DWExfUE1FTV9FUlJPUl9MT0dfVFlQRV9EQVRBX0xPU1MJCSgweDAzKQ0KPiA+ ICsjZGVmaW5lIE9DWExfUE1FTV9FUlJPUl9MT0dfVFlQRV9IRUFMVEhfUEVSRk9STUFOQ0UJKDB4 MDQpDQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaW9jdGxfb2N4bF9wbWVtX2Vycm9yX2xvZyB7DQo+ID4g KwlfX3UzMiBsb2dfaWRlbnRpZmllcjsgLyogb3V0ICovDQo+ID4gKwlfX3UzMiBwcm9ncmFtX3Jl ZmVyZW5jZV9jb2RlOyAvKiBvdXQgKi8NCj4gPiArCV9fdTMyIGFjdGlvbl9mbGFnczsgLyogb3V0 LCByZWNvbW1lbmRlZCBjb3Vyc2Ugb2YgYWN0aW9uICovDQo+ID4gKwlfX3UzMiBwb3dlcl9vbl9z ZWNvbmRzOyAvKiBvdXQsIE51bWJlciBvZiBzZWNvbmRzIHRoZQ0KPiA+IGNvbnRyb2xsZXIgaGFz IGJlZW4gb24gd2hlbiB0aGUgZXJyb3Igb2NjdXJyZWQgKi8NCj4gPiArCV9fdTY0IHRpbWVzdGFt cDsgLyogb3V0LCByZWxhdGl2ZSB0aW1lIHNpbmNlIHRoZSBjdXJyZW50IElQTCAqLw0KPiA+ICsJ X191NjQgd3dpZFsyXTsgLyogb3V0LCB0aGUgTkFBIGZvcm1hdHRlZCBXV0lEIGFzc29jaWF0ZWQg d2l0aA0KPiA+IHRoZSBjb250cm9sbGVyICovDQo+ID4gKwljaGFyICBmd19yZXZpc2lvbls4KzFd OyAvKiBvdXQsIGZpcm13YXJlIHJldmlzaW9uIGFzIG51bGwNCj4gPiB0ZXJtaW5hdGVkIHRleHQg Ki8NCj4gDQo+IFRoZSA4KzEgc2l6ZSB3aWxsIG1ha2UgdGhlIGNvbXBpbGVyIGFkZCBzb21lIHBh ZGRpbmcgaGVyZS4gQXJlIHdlIA0KPiBjb25maWRlbnQgdGhhdCBhbGwgdGhlIGNvbXBpbGVycywg YXQgbGVhc3Qgb24gcG93ZXJwYywgd2lsbCBkbyB0aGUNCj4gc2FtZSANCj4gdGhpbmcgYW5kIHdl IGNhbiBndWFyYW50ZWUgYSBrZXJuZWwgQUJJPyBJIHdvdWxkIHBsYXkgaXQgc2FmZSBhbmQNCj4g aGF2ZSBhIA0KPiBkaXNjdXNzaW9uIHdpdGggZm9sa3Mgd2hvIHVuZGVyc3RhbmQgY29tcGlsZXJz IGJldHRlci4NCj4gDQoNCkknbGwgYWRkIHNvbWUgZXhwbGljaXQgcGFkZGluZy4NCg0KPiANCj4g DQo+ID4gKwlfX3UxNiBidWZfc2l6ZTsgLyogaW4vb3V0LCBidWZmZXIgc2l6ZSBwcm92aWRlZC9y ZXF1aXJlZC4NCj4gPiArCQkJICogSWYgcmVxdWlyZWQgaXMgZ3JlYXRlciB0aGFuIHByb3ZpZGVk LCB0aGUNCj4gPiBidWZmZXINCj4gPiArCQkJICogd2lsbCBiZSB0cnVuY2F0ZWQgdG8gdGhlIGFt b3VudCBwcm92aWRlZC4gSWYNCj4gPiBpdHMNCj4gPiArCQkJICogbGVzcywgdGhlbiBvbmx5IHRo ZSByZXF1aXJlZCBieXRlcyB3aWxsIGJlDQo+ID4gcG9wdWxhdGVkLg0KPiA+ICsJCQkgKiBJZiBp dCBpcyAwLCB0aGVuIHRoZXJlIGFyZSBubyBtb3JlIGVycm9yIGxvZw0KPiA+IGVudHJpZXMuDQo+ ID4gKwkJCSAqLw0KPiA+ICsJX191OCAgZXJyb3JfbG9nX3R5cGU7DQo+ID4gKwlfX3U4ICByZXNl cnZlZDE7DQo+ID4gKwlfX3UzMiByZXNlcnZlZDI7DQo+ID4gKwlfX3U2NCByZXNlcnZlZDNbMl07 DQo+ID4gKwlfX3U4ICpidWY7IC8qIHBvaW50ZXIgdG8gb3V0cHV0IGJ1ZmZlciAqLw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArLyogaW9jdGwgbnVtYmVycyAqLw0KPiA+ICsjZGVmaW5lIE9DWExfUE1F TV9NQUdJQyAweDVDDQo+IA0KPiBSYW5kb21seSBwaWNrZWQ/DQo+IFNlZSAoYW5kIGFkZCBlbnRy eSBpbikgRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL2lvY3RsL2lvY3RsLQ0KPiBudW1iZXIu cnN0DQo+IA0KT2sNCg0KPiANCj4gICAgRnJlZA0KPiANCj4gDQo+IA0KPiA+ICsvKiBTQ00gZGV2 aWNlcyAqLw0KPiA+ICsjZGVmaW5lIElPQ1RMX09DWExfUE1FTV9FUlJPUl9MT0cJCQlfSU9XUihP Q1hMX1BNRU0NCj4gPiBfTUFHSUMsIDB4MDEsIHN0cnVjdCBpb2N0bF9vY3hsX3BtZW1fZXJyb3Jf bG9nKQ0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9VQVBJX09DWExfU0NNX0ggKi8NCj4gPiANCi0t IA0KQWxhc3RhaXIgRCdTaWx2YQ0KT3BlbiBTb3VyY2UgRGV2ZWxvcGVyDQpMaW51eCBUZWNobm9s b2d5IENlbnRyZSwgSUJNIEF1c3RyYWxpYQ0KbW9iOiAwNDIzIDc2MiA4MTkNCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LW52ZGltbSBtYWlsaW5n IGxpc3QgLS0gbGludXgtbnZkaW1tQGxpc3RzLjAxLm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFu IGVtYWlsIHRvIGxpbnV4LW52ZGltbS1sZWF2ZUBsaXN0cy4wMS5vcmcK