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.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 046F4C10F25 for ; Wed, 11 Mar 2020 03:32:40 +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 D31AA222C3 for ; Wed, 11 Mar 2020 03:32:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D31AA222C3 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 9FA9210FC36C8; Tue, 10 Mar 2020 20:33:30 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=alastair@au1.ibm.com; receiver= Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 4965A10078091 for ; Tue, 10 Mar 2020 20:33:28 -0700 (PDT) Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 02B3TJRr147202 for ; Tue, 10 Mar 2020 23:32:36 -0400 Received: from e06smtp03.uk.ibm.com (e06smtp03.uk.ibm.com [195.75.94.99]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ypjyckvn8-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2020 23:32:36 -0400 Received: from localhost by e06smtp03.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 11 Mar 2020 03:32:33 -0000 Received: from b06avi18626390.portsmouth.uk.ibm.com (9.149.26.192) by e06smtp03.uk.ibm.com (192.168.101.133) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 11 Mar 2020 03:32:26 -0000 Received: from d06av24.portsmouth.uk.ibm.com (d06av24.portsmouth.uk.ibm.com [9.149.105.60]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 02B3VPUv9503050 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 Mar 2020 03:31:25 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4CB8842045; Wed, 11 Mar 2020 03:32:25 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A131342041; Wed, 11 Mar 2020 03:32:24 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.192.253.14]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 11 Mar 2020 03:32:24 +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 834C3A0130; Wed, 11 Mar 2020 14:32:19 +1100 (AEDT) Subject: Re: [PATCH v3 20/27] powerpc/powernv/pmem: Forward events to userspace From: "Alastair D'Silva" To: Frederic Barrat Date: Wed, 11 Mar 2020 14:32:23 +1100 In-Reply-To: <7ee589c0-2c02-9b8e-95a9-743ce29674ec@linux.ibm.com> References: <20200221032720.33893-1-alastair@au1.ibm.com> <20200221032720.33893-21-alastair@au1.ibm.com> <7ee589c0-2c02-9b8e-95a9-743ce29674ec@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: 20031103-0012-0000-0000-0000038F3534 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20031103-0013-0000-0000-000021CC0233 Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-03-10_17:2020-03-10,2020-03-10 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 phishscore=0 adultscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 mlxlogscore=999 impostorscore=0 bulkscore=0 mlxscore=0 suspectscore=2 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2003110020 Message-ID-Hash: UOH36JJ2X6SV7KPQDW7GJ7IYDDUPBABV X-Message-ID-Hash: UOH36JJ2X6SV7KPQDW7GJ7IYDDUPBABV 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 T24gV2VkLCAyMDIwLTAzLTA0IGF0IDEyOjAwICswMTAwLCBGcmVkZXJpYyBCYXJyYXQgd3JvdGU6 DQo+IA0KPiBMZSAyMS8wMi8yMDIwIMOgIDA0OjI3LCBBbGFzdGFpciBEJ1NpbHZhIGEgw6ljcml0 IDoNCj4gPiBGcm9tOiBBbGFzdGFpciBEJ1NpbHZhIDxhbGFzdGFpckBkLXNpbHZhLm9yZz4NCj4g PiANCj4gPiBTb21lIG9mIHRoZSBpbnRlcnJ1cHRzIHRoYXQgdGhlIGNhcmQgZ2VuZXJhdGVzIGFy ZSBiZXR0ZXIgaGFuZGxlZA0KPiA+IGJ5IHRoZSB1c2Vyc3BhY2UgZGFlbW9uLCBpbiBwYXJ0aWN1 bGFyOg0KPiA+IENvbnRyb2xsZXIgSGFyZHdhcmUvRmlybXdhcmUgRmF0YWwNCj4gPiBDb250cm9s bGVyIER1bXAgQXZhaWxhYmxlDQo+ID4gRXJyb3IgTG9nIGF2YWlsYWJsZQ0KPiA+IA0KPiA+IFRo aXMgcGF0Y2ggYWxsb3dzIGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHRvIHJlZ2lzdGVyIGFuIGV2 ZW50ZmQNCj4gPiB3aXRoDQo+ID4gdGhlIGRyaXZlciB2aWEgU0NNX0lPQ1RMX0VWRU5URkQgdG8g cmVjZWl2ZSBub3RpZmljYXRpb25zIG9mIHRoZXNlDQo+ID4gaW50ZXJydXB0cy4NCj4gPiANCj4g PiBVc2Vyc3BhY2UgY2FuIHRoZW4gaWRlbnRpZnkgd2hhdCBldmVudHMgaGF2ZSBvY2N1cnJlZCBi eSBjYWxsaW5nDQo+ID4gU0NNX0lPQ1RMX0VWRU5UX0NIRUNLIGFuZCBjaGVja2luZyBhZ2FpbnN0 IHRoZSBTQ01fSU9DVExfRVZFTlRfRk9PDQo+ID4gbWFza3MuDQo+ID4gDQo+ID4gU2lnbmVkLW9m Zi1ieTogQWxhc3RhaXIgRCdTaWx2YSA8YWxhc3RhaXJAZC1zaWx2YS5vcmc+DQo+ID4gLS0tDQo+ ID4gICBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcG1lbS9vY3hsLmMgICAgfCAyMTYN Cj4gPiArKysrKysrKysrKysrKysrKysNCj4gPiAgIC4uLi9wbGF0Zm9ybXMvcG93ZXJudi9wbWVt L29jeGxfaW50ZXJuYWwuaCAgICB8ICAgNSArDQo+ID4gICBpbmNsdWRlL3VhcGkvbnZkaW1tL29j eGwtcG1lbS5oICAgICAgICAgICAgICAgfCAgMTYgKysNCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwg MjM3IGluc2VydGlvbnMoKykNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3Bs YXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bC5jDQo+ID4gYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1z L3Bvd2VybnYvcG1lbS9vY3hsLmMNCj4gPiBpbmRleCAwMDlkNGZkMjllN2QuLmU0NjY5NmQzY2Mz NiAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcG1lbS9v Y3hsLmMNCj4gPiArKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcG1lbS9vY3hs LmMNCj4gPiBAQCAtMTAsNiArMTAsNyBAQA0KPiA+ICAgI2luY2x1ZGUgPG1pc2Mvb2N4bC5oPg0K PiA+ICAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+ID4gICAjaW5jbHVkZSA8bGludXgvbmRj dGwuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2V2ZW50ZmQuaD4NCj4gPiAgICNpbmNsdWRlIDxs aW51eC9mcy5oPg0KPiA+ICAgI2luY2x1ZGUgPGxpbnV4L21tX3R5cGVzLmg+DQo+ID4gICAjaW5j bHVkZSA8bGludXgvbWVtb3J5X2hvdHBsdWcuaD4NCj4gPiBAQCAtMzM1LDExICszMzYsMjIgQEAg c3RhdGljIHZvaWQgZnJlZV9vY3hscG1lbShzdHJ1Y3Qgb2N4bHBtZW0NCj4gPiAqb2N4bHBtZW0p DQo+ID4gICB7DQo+ID4gICAJaW50IHJjOw0KPiA+ICAgDQo+ID4gKwkvLyBEaXNhYmxlIGRvb3Ji ZWxscw0KPiA+ICsJKHZvaWQpb2N4bF9nbG9iYWxfbW1pb19zZXQ2NChvY3hscG1lbS0+b2N4bF9h ZnUsDQo+ID4gR0xPQkFMX01NSU9fQ0hJRUMsDQo+ID4gKwkJCQkgICAgIE9DWExfTElUVExFX0VO RElBTiwNCj4gPiArCQkJCSAgICAgR0xPQkFMX01NSU9fQ0hJX0FMTCk7DQo+ID4gKw0KPiA+ICAg CWlmIChvY3hscG1lbS0+bnZkaW1tX2J1cykNCj4gPiAgIAkJbnZkaW1tX2J1c191bnJlZ2lzdGVy KG9jeGxwbWVtLT5udmRpbW1fYnVzKTsNCj4gPiAgIA0KPiA+ICAgCWZyZWVfbWlub3Iob2N4bHBt ZW0pOw0KPiA+ICAgDQo+ID4gKwlpZiAob2N4bHBtZW0tPmlycV9hZGRyWzFdKQ0KPiA+ICsJCWlv dW5tYXAob2N4bHBtZW0tPmlycV9hZGRyWzFdKTsNCj4gPiArDQo+ID4gKwlpZiAob2N4bHBtZW0t PmlycV9hZGRyWzBdKQ0KPiA+ICsJCWlvdW5tYXAob2N4bHBtZW0tPmlycV9hZGRyWzBdKTsNCj4g PiArDQo+ID4gICAJaWYgKG9jeGxwbWVtLT5jZGV2Lm93bmVyKQ0KPiA+ICAgCQljZGV2X2RlbCgm b2N4bHBtZW0tPmNkZXYpOw0KPiA+ICAgDQo+ID4gQEAgLTQ0Myw2ICs0NTUsMTEgQEAgc3RhdGlj IGludCBmaWxlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwNCj4gPiBzdHJ1Y3QgZmlsZSAq ZmlsZSkNCj4gPiAgIHsNCj4gPiAgIAlzdHJ1Y3Qgb2N4bHBtZW0gKm9jeGxwbWVtID0gZmlsZS0+ cHJpdmF0ZV9kYXRhOw0KPiA+ICAgDQo+ID4gKwlpZiAob2N4bHBtZW0tPmV2X2N0eCkgew0KPiA+ ICsJCWV2ZW50ZmRfY3R4X3B1dChvY3hscG1lbS0+ZXZfY3R4KTsNCj4gPiArCQlvY3hscG1lbS0+ ZXZfY3R4ID0gTlVMTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gICAJb2N4bHBtZW1fcHV0KG9jeGxw bWVtKTsNCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiAgIH0NCj4gPiBAQCAtOTM4LDYgKzk1NSw1MSBA QCBzdGF0aWMgaW50IGlvY3RsX2NvbnRyb2xsZXJfc3RhdHMoc3RydWN0DQo+ID4gb2N4bHBtZW0g Km9jeGxwbWVtLA0KPiA+ICAgCXJldHVybiByYzsNCj4gPiAgIH0NCj4gPiAgIA0KPiA+ICtzdGF0 aWMgaW50IGlvY3RsX2V2ZW50ZmQoc3RydWN0IG9jeGxwbWVtICpvY3hscG1lbSwNCj4gPiArCQkg c3RydWN0IGlvY3RsX29jeGxfcG1lbV9ldmVudGZkIF9fdXNlciAqdWFyZykNCj4gPiArew0KPiA+ ICsJc3RydWN0IGlvY3RsX29jeGxfcG1lbV9ldmVudGZkIGFyZ3M7DQo+ID4gKw0KPiA+ICsJaWYg KGNvcHlfZnJvbV91c2VyKCZhcmdzLCB1YXJnLCBzaXplb2YoYXJncykpKQ0KPiA+ICsJCXJldHVy biAtRUZBVUxUOw0KPiA+ICsNCj4gPiArCWlmIChvY3hscG1lbS0+ZXZfY3R4KQ0KPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiANCj4gRUJVU1k/DQo+IA0KT2sNCg0KPiANCj4gPiArDQo+ID4gKwlv Y3hscG1lbS0+ZXZfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy5ldmVudGZkKTsNCj4gPiAr CWlmICghb2N4bHBtZW0tPmV2X2N0eCkNCj4gPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gDQo+IFdo eSBub3QgdXNlIHdoYXQgZXZlbnRmZF9jdHhfZmRnZXQoKSByZXR1cm5lZD8gKHRocm91Z2ggc29t ZQ0KPiBJU19FUlIoKSANCj4gYW5kIFBUUl9FUlIoKSBjb252b2x1dGlvbikNCj4gDQoNCk9rDQo+ IA0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IGlvY3RsX2V2ZW50X2NoZWNrKHN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0sIHU2NCBfX3VzZXIN Cj4gPiAqdWFyZykNCj4gPiArew0KPiA+ICsJdTY0IHZhbCA9IDA7DQo+ID4gKwlpbnQgcmM7DQo+ ID4gKwl1NjQgY2hpID0gMDsNCj4gPiArDQo+ID4gKwlyYyA9IG9jeGxwbWVtX2NoaShvY3hscG1l bSwgJmNoaSk7DQo+ID4gKwlpZiAocmMgPCAwKQ0KPiA+ICsJCXJldHVybiByYzsNCj4gPiArDQo+ ID4gKwlpZiAoY2hpICYgR0xPQkFMX01NSU9fQ0hJX0VMQSkNCj4gPiArCQl2YWwgfD0gSU9DVExf T0NYTF9QTUVNX0VWRU5UX0VSUk9SX0xPR19BVkFJTEFCTEU7DQo+ID4gKw0KPiA+ICsJaWYgKGNo aSAmIEdMT0JBTF9NTUlPX0NISV9DREEpDQo+ID4gKwkJdmFsIHw9IElPQ1RMX09DWExfUE1FTV9F VkVOVF9DT05UUk9MTEVSX0RVTVBfQVZBSUxBQkxFOw0KPiA+ICsNCj4gPiArCWlmIChjaGkgJiBH TE9CQUxfTU1JT19DSElfQ0ZGUykNCj4gPiArCQl2YWwgfD0gSU9DVExfT0NYTF9QTUVNX0VWRU5U X0ZJUk1XQVJFX0ZBVEFMOw0KPiA+ICsNCj4gPiArCWlmIChjaGkgJiBHTE9CQUxfTU1JT19DSElf Q0hGUykNCj4gPiArCQl2YWwgfD0gSU9DVExfT0NYTF9QTUVNX0VWRU5UX0hBUkRXQVJFX0ZBVEFM Ow0KPiA+ICsNCj4gPiArCXJjID0gY29weV90b191c2VyKCh1NjQgX191c2VyICopIHVhcmcsICZ2 YWwsIHNpemVvZih2YWwpKTsNCj4gPiArDQo+IA0KPiBjb3B5X3RvX3VzZXIgZG9lc24ndCByZXR1 cm4gYW4gZXJybm8uIFNob3VsZCBiZToNCj4gDQo+IGlmIChjb3B5X3RvX3VzZXIoKHU2NCBfX3Vz ZXIgKikgdWFyZywgJnZhbCwgc2l6ZW9mKHZhbCkpKQ0KPiAJcmV0dXJuIC1FRkFVTFQ7DQo+IA0K T2sNCg0KPiANCj4gPiArCXJldHVybiByYzsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgIHN0YXRpYyBs b25nIGZpbGVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsDQo+ID4g dW5zaWduZWQgbG9uZyBhcmdzKQ0KPiA+ICAgew0KPiA+ICAgCXN0cnVjdCBvY3hscG1lbSAqb2N4 bHBtZW0gPSBmaWxlLT5wcml2YXRlX2RhdGE7DQo+ID4gQEAgLTk2Niw2ICsxMDI4LDE1IEBAIHN0 YXRpYyBsb25nIGZpbGVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsDQo+ID4gdW5zaWduZWQgaW50 IGNtZCwgdW5zaWduZWQgbG9uZyBhcmdzKQ0KPiA+ICAgCQlyYyA9IGlvY3RsX2NvbnRyb2xsZXJf c3RhdHMob2N4bHBtZW0sDQo+ID4gICAJCQkJCSAgICAoc3RydWN0DQo+ID4gaW9jdGxfb2N4bF9w bWVtX2NvbnRyb2xsZXJfc3RhdHMgX191c2VyICopYXJncyk7DQo+ID4gICAJCWJyZWFrOw0KPiA+ ICsNCj4gPiArCWNhc2UgSU9DVExfT0NYTF9QTUVNX0VWRU5URkQ6DQo+ID4gKwkJcmMgPSBpb2N0 bF9ldmVudGZkKG9jeGxwbWVtLA0KPiA+ICsJCQkJICAgKHN0cnVjdCBpb2N0bF9vY3hsX3BtZW1f ZXZlbnRmZA0KPiA+IF9fdXNlciAqKWFyZ3MpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsNCj4gPiAr CWNhc2UgSU9DVExfT0NYTF9QTUVNX0VWRU5UX0NIRUNLOg0KPiA+ICsJCXJjID0gaW9jdGxfZXZl bnRfY2hlY2sob2N4bHBtZW0sICh1NjQgX191c2VyICopYXJncyk7DQo+ID4gKwkJYnJlYWs7DQo+ ID4gICAJfQ0KPiA+ICAgDQo+ID4gICAJcmV0dXJuIHJjOw0KPiA+IEBAIC0xMTA3LDYgKzExNzgs MTQ2IEBAIHN0YXRpYyB2b2lkIGR1bXBfZXJyb3JfbG9nKHN0cnVjdCBvY3hscG1lbQ0KPiA+ICpv Y3hscG1lbSkNCj4gPiAgIAlrZnJlZShidWYpOw0KPiA+ICAgfQ0KPiA+ICAgDQo+ID4gK3N0YXRp YyBpcnFyZXR1cm5fdCBpbW4wX2hhbmRsZXIodm9pZCAqcHJpdmF0ZSkNCj4gPiArew0KPiA+ICsJ c3RydWN0IG9jeGxwbWVtICpvY3hscG1lbSA9IHByaXZhdGU7DQo+ID4gKwl1NjQgY2hpID0gMDsN Cj4gPiArDQo+ID4gKwkodm9pZClvY3hscG1lbV9jaGkob2N4bHBtZW0sICZjaGkpOw0KPiA+ICsN Cj4gPiArCWlmIChjaGkgJiBHTE9CQUxfTU1JT19DSElfRUxBKSB7DQo+ID4gKwkJZGV2X3dhcm4o Jm9jeGxwbWVtLT5kZXYsICJFcnJvciBsb2cgaXMgYXZhaWxhYmxlXG4iKTsNCj4gPiArDQo+ID4g KwkJaWYgKG9jeGxwbWVtLT5ldl9jdHgpDQo+ID4gKwkJCWV2ZW50ZmRfc2lnbmFsKG9jeGxwbWVt LT5ldl9jdHgsIDEpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChjaGkgJiBHTE9CQUxfTU1J T19DSElfQ0RBKSB7DQo+ID4gKwkJZGV2X3dhcm4oJm9jeGxwbWVtLT5kZXYsICJDb250cm9sbGVy IGR1bXAgaXMNCj4gPiBhdmFpbGFibGVcbiIpOw0KPiA+ICsNCj4gPiArCQlpZiAob2N4bHBtZW0t PmV2X2N0eCkNCj4gPiArCQkJZXZlbnRmZF9zaWduYWwob2N4bHBtZW0tPmV2X2N0eCwgMSk7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsNCj4gDQo+IChhdCBsZWFzdCkgb25lIGVtcHR5IGxpbmUgdG9v IG1hbnkuDQo+IA0KDQpPaw0KDQo+IA0KPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgaW1uMV9oYW5kbGVyKHZvaWQgKnByaXZh dGUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0gPSBwcml2YXRlOw0K PiA+ICsJdTY0IGNoaSA9IDA7DQo+ID4gKw0KPiA+ICsJKHZvaWQpb2N4bHBtZW1fY2hpKG9jeGxw bWVtLCAmY2hpKTsNCj4gPiArDQo+ID4gKwlpZiAoY2hpICYgKEdMT0JBTF9NTUlPX0NISV9DRkZT IHwgR0xPQkFMX01NSU9fQ0hJX0NIRlMpKSB7DQo+ID4gKwkJZGV2X2Vycigmb2N4bHBtZW0tPmRl diwNCj4gPiArCQkJIkNvbnRyb2xsZXIgc3RhdHVzIGlzIGZhdGFsLCBjaGk9MHglbGx4LCBnb2lu Zw0KPiA+IG9mZmxpbmVcbiIsIGNoaSk7DQo+ID4gKw0KPiA+ICsJCWlmIChvY3hscG1lbS0+bnZk aW1tX2J1cykgew0KPiA+ICsJCQludmRpbW1fYnVzX3VucmVnaXN0ZXIob2N4bHBtZW0tPm52ZGlt bV9idXMpOw0KPiA+ICsJCQlvY3hscG1lbS0+bnZkaW1tX2J1cyA9IE5VTEw7DQo+ID4gKwkJfQ0K PiA+ICsNCj4gPiArCQlpZiAob2N4bHBtZW0tPmV2X2N0eCkNCj4gPiArCQkJZXZlbnRmZF9zaWdu YWwob2N4bHBtZW0tPmV2X2N0eCwgMSk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIElS UV9IQU5ETEVEOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIG9jeGxw bWVtX3NldHVwX2lycSgpIC0gU2V0IHVwIHRoZSBJUlFzIGZvciB0aGUgT3BlbkNBUEkNCj4gPiBQ ZXJzaXN0ZW50IE1lbW9yeSBkZXZpY2UNCj4gPiArICogQG9jeGxwbWVtOiB0aGUgZGV2aWNlIG1l dGFkYXRhDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBvbiBmYWlsdXJl DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IG9jeGxwbWVtX3NldHVwX2lycShzdHJ1Y3Qgb2N4 bHBtZW0gKm9jeGxwbWVtKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmM7DQo+ID4gKwl1NjQgaXJxX2Fk ZHI7DQo+ID4gKw0KPiA+ICsJcmMgPSBvY3hsX2FmdV9pcnFfYWxsb2Mob2N4bHBtZW0tPm9jeGxf Y29udGV4dCwgJm9jeGxwbWVtLQ0KPiA+ID5pcnFfaWRbMF0pOw0KPiA+ICsJaWYgKHJjKQ0KPiA+ ICsJCXJldHVybiByYzsNCj4gPiArDQo+ID4gKwlyYyA9IG9jeGxfaXJxX3NldF9oYW5kbGVyKG9j eGxwbWVtLT5vY3hsX2NvbnRleHQsIG9jeGxwbWVtLQ0KPiA+ID5pcnFfaWRbMF0sDQo+ID4gKwkJ CQkgIGltbjBfaGFuZGxlciwgTlVMTCwgb2N4bHBtZW0pOw0KPiA+ICsNCj4gPiArCWlycV9hZGRy ID0gb2N4bF9hZnVfaXJxX2dldF9hZGRyKG9jeGxwbWVtLT5vY3hsX2NvbnRleHQsDQo+ID4gb2N4 bHBtZW0tPmlycV9pZFswXSk7DQo+ID4gKwlpZiAoIWlycV9hZGRyKQ0KPiA+ICsJCXJldHVybiAt RUlOVkFMOw0KPiA+ICsNCj4gPiArCW9jeGxwbWVtLT5pcnFfYWRkclswXSA9IGlvcmVtYXAoaXJx X2FkZHIsIFBBR0VfU0laRSk7DQo+ID4gKwlpZiAoIW9jeGxwbWVtLT5pcnFfYWRkclswXSkNCj4g PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlyYyA9IG9jeGxfZ2xvYmFsX21taW9f d3JpdGU2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ID4gR0xPQkFMX01NSU9fSU1BMF9PSFAsDQo+ ID4gKwkJCQkgICAgICBPQ1hMX0xJVFRMRV9FTkRJQU4sDQo+ID4gKwkJCQkgICAgICAodTY0KW9j eGxwbWVtLT5pcnFfYWRkclswXSk7DQo+ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXRfaXJx MDsNCj4gPiArDQo+ID4gKwlyYyA9IG9jeGxfZ2xvYmFsX21taW9fd3JpdGU2NChvY3hscG1lbS0+ b2N4bF9hZnUsDQo+ID4gR0xPQkFMX01NSU9fSU1BMF9DRlAsDQo+ID4gKwkJCQkgICAgICBPQ1hM X0xJVFRMRV9FTkRJQU4sIDApOw0KPiA+ICsJaWYgKHJjKQ0KPiA+ICsJCWdvdG8gb3V0X2lycTA7 DQo+IA0KPiBUaGF0J3MgYSBmZXcgbGluZXMgb2YgZHVwbGljYXRlIGNvZGUuIE9uIHRoZSBvdGhl ciBoYW5kLCB0aGVyZSdzDQo+IGVub3VnaCANCj4gdmFyeWluZyBwYXJhbWV0ZXJzIGJldHdlZW4g dGhlIDIgaW50ZXJydXB0cyB0aGF0IGZhY3Rvcml6aW5nIGluIGEgDQo+IHN1YmZ1bmN0aW9uIHdv dWxkIGJlIHNsaWdodGx5IGxlc3MgcmVhZGFibGUuIFNvIGR1cGxpY2F0aW5nIGlzDQo+IHByb2Jh Ymx5IG9rLg0KPiANCj4gDQo+IA0KPiA+ICsJcmMgPSBvY3hsX2FmdV9pcnFfYWxsb2Mob2N4bHBt ZW0tPm9jeGxfY29udGV4dCwgJm9jeGxwbWVtLQ0KPiA+ID5pcnFfaWRbMV0pOw0KPiA+ICsJaWYg KHJjKQ0KPiA+ICsJCWdvdG8gb3V0X2lycTA7DQo+ID4gKw0KPiA+ICsNCj4gPiArCXJjID0gb2N4 bF9pcnFfc2V0X2hhbmRsZXIob2N4bHBtZW0tPm9jeGxfY29udGV4dCwgb2N4bHBtZW0tDQo+ID4g PmlycV9pZFsxXSwNCj4gPiArCQkJCSAgaW1uMV9oYW5kbGVyLCBOVUxMLCBvY3hscG1lbSk7DQo+ ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXRfaXJxMDsNCj4gPiArDQo+ID4gKwlpcnFfYWRk ciA9IG9jeGxfYWZ1X2lycV9nZXRfYWRkcihvY3hscG1lbS0+b2N4bF9jb250ZXh0LA0KPiA+IG9j eGxwbWVtLT5pcnFfaWRbMV0pOw0KPiA+ICsJaWYgKCFpcnFfYWRkcikgew0KPiA+ICsJCXJjID0g LUVGQVVMVDsNCj4gPiArCQlnb3RvIG91dF9pcnEwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCW9j eGxwbWVtLT5pcnFfYWRkclsxXSA9IGlvcmVtYXAoaXJxX2FkZHIsIFBBR0VfU0laRSk7DQo+ID4g KwlpZiAoIW9jeGxwbWVtLT5pcnFfYWRkclsxXSkgew0KPiA+ICsJCXJjID0gLUVJTlZBTDsNCj4g PiArCQlnb3RvIG91dF9pcnEwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJjID0gb2N4bF9nbG9i YWxfbW1pb193cml0ZTY0KG9jeGxwbWVtLT5vY3hsX2FmdSwNCj4gPiBHTE9CQUxfTU1JT19JTUEx X09IUCwNCj4gPiArCQkJCSAgICAgIE9DWExfTElUVExFX0VORElBTiwNCj4gPiArCQkJCSAgICAg ICh1NjQpb2N4bHBtZW0tPmlycV9hZGRyWzFdKTsNCj4gPiArCWlmIChyYykNCj4gPiArCQlnb3Rv IG91dF9pcnExOw0KPiA+ICsNCj4gPiArCXJjID0gb2N4bF9nbG9iYWxfbW1pb193cml0ZTY0KG9j eGxwbWVtLT5vY3hsX2FmdSwNCj4gPiBHTE9CQUxfTU1JT19JTUExX0NGUCwNCj4gPiArCQkJCSAg ICAgIE9DWExfTElUVExFX0VORElBTiwgMCk7DQo+ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBv dXRfaXJxMTsNCj4gPiArDQo+ID4gKwkvLyBFbmFibGUgZG9vcmJlbGxzDQo+ID4gKwlyYyA9IG9j eGxfZ2xvYmFsX21taW9fc2V0NjQob2N4bHBtZW0tPm9jeGxfYWZ1LA0KPiA+IEdMT0JBTF9NTUlP X0NISUUsDQo+ID4gKwkJCQkgICAgT0NYTF9MSVRUTEVfRU5ESUFOLA0KPiA+ICsJCQkJICAgIEdM T0JBTF9NTUlPX0NISV9FTEEgfA0KPiA+IEdMT0JBTF9NTUlPX0NISV9DREEgfA0KPiA+ICsJCQkJ ICAgIEdMT0JBTF9NTUlPX0NISV9DRkZTIHwNCj4gPiBHTE9CQUxfTU1JT19DSElfQ0hGUyB8DQo+ ID4gKwkJCQkgICAgR0xPQkFMX01NSU9fQ0hJX05TQ1JBKTsNCj4gDQo+IEdMT0JBTF9NTUlPX0NI SV9OU0NSQSBkb2Vzbid0IHNlZW0gdG8gYmUgaGFuZGxlZCBpbiB0aGUgaGFuZGxlcnMuDQo+IA0K DQpUaGlzIHdpbGwgYmUgbW92ZWQgdG8gdGhlIG92ZXJ3cml0ZSBwYXRjaC4NCg0KPiANCj4gDQo+ ID4gKwlpZiAocmMpDQo+ID4gKwkJZ290byBvdXRfaXJxMTsNCj4gPiArDQo+ID4gKwlyZXR1cm4g MDsNCj4gPiArDQo+ID4gK291dF9pcnExOg0KPiA+ICsJaW91bm1hcChvY3hscG1lbS0+aXJxX2Fk ZHJbMV0pOw0KPiA+ICsJb2N4bHBtZW0tPmlycV9hZGRyWzFdID0gTlVMTDsNCj4gPiArDQo+ID4g K291dF9pcnEwOg0KPiA+ICsJaW91bm1hcChvY3hscG1lbS0+aXJxX2FkZHJbMF0pOw0KPiA+ICsJ b2N4bHBtZW0tPmlycV9hZGRyWzBdID0gTlVMTDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmM7DQo+ ID4gK30NCj4gPiArDQo+ID4gICAvKioNCj4gPiAgICAqIHByb2JlX2Z1bmN0aW9uMCgpIC0gU2V0 IHVwIGZ1bmN0aW9uIDAgZm9yIGFuIE9wZW5DQVBJDQo+ID4gcGVyc2lzdGVudCBtZW1vcnkgZGV2 aWNlDQo+ID4gICAgKiBUaGlzIGlzIGltcG9ydGFudCBhcyBpdCBlbmFibGVzIHRlbXBsYXRlcyBo aWdoZXIgdGhhbiAwIGFjcm9zcw0KPiA+IGFsbCBvdGhlciBmdW5jdGlvbnMsDQo+ID4gQEAgLTEy MTYsNiArMTQyNywxMSBAQCBzdGF0aWMgaW50IHByb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBj b25zdA0KPiA+IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpDQo+ID4gICAJCWdvdG8gZXJyOw0K PiA+ICAgCX0NCj4gPiAgIA0KPiA+ICsJaWYgKG9jeGxwbWVtX3NldHVwX2lycShvY3hscG1lbSkp IHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDb3VsZCBub3Qgc2V0IHVwIE9DWEwgSVJR c1xuIik7DQo+IA0KPiBMaWtlIHdpdGggb3RoZXIgcGF0Y2hlcywgcmMgbmVlZHMgdG8gYmUgc2V0 Lg0KPiANCm9rDQoNCj4gDQo+ID4gKwkJZ290byBlcnI7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICAg CWlmIChzZXR1cF9jb21tYW5kX21ldGFkYXRhKG9jeGxwbWVtKSkgew0KPiA+ICAgCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJDb3VsZCBub3QgcmVhZCBPQ1hMIGNvbW1hbmQNCj4gPiBtYXRhZGFcbiIp Ow0KPiA+ICAgCQlnb3RvIGVycjsNCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRm b3Jtcy9wb3dlcm52L3BtZW0vb2N4bF9pbnRlcm5hbC5oDQo+ID4gYi9hcmNoL3Bvd2VycGMvcGxh dGZvcm1zL3Bvd2VybnYvcG1lbS9vY3hsX2ludGVybmFsLmgNCj4gPiBpbmRleCBiOTUzZWU1MjJl ZDQuLjkyNzY5MGY0ODg4ZiAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1z L3Bvd2VybnYvcG1lbS9vY3hsX2ludGVybmFsLmgNCj4gPiArKysgYi9hcmNoL3Bvd2VycGMvcGxh dGZvcm1zL3Bvd2VybnYvcG1lbS9vY3hsX2ludGVybmFsLmgNCj4gPiBAQCAtMTAzLDYgKzEwMywx MCBAQCBzdHJ1Y3Qgb2N4bHBtZW0gew0KPiA+ICAgCXN0cnVjdCBwY2lfZGV2ICpwZGV2Ow0KPiA+ ICAgCXN0cnVjdCBjZGV2IGNkZXY7DQo+ID4gICAJc3RydWN0IG9jeGxfZm4gKm9jeGxfZm47DQo+ ID4gKyNkZWZpbmUgU0NNX0lSUV9DT1VOVCAyDQo+ID4gKwlpbnQgaXJxX2lkW1NDTV9JUlFfQ09V TlRdOw0KPiA+ICsJc3RydWN0IGRldl9wYWdlbWFwIGlycV9wZ21hcFtTQ01fSVJRX0NPVU5UXTsN Cj4gDQo+IGlycV9wZ21hcCBpcyBub3QgdXNlZC4NCg0KT2sNCj4gDQo+IA0KPiA+ICsJdm9pZCAq aXJxX2FkZHJbU0NNX0lSUV9DT1VOVF07DQo+ID4gICAJc3RydWN0IG5kX2ludGVybGVhdmVfc2V0 IG5kX3NldDsNCj4gPiAgIAlzdHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yIGJ1c19kZXNjOw0K PiA+ICAgCXN0cnVjdCBudmRpbW1fYnVzICpudmRpbW1fYnVzOw0KPiA+IEBAIC0xMTMsNiArMTE3 LDcgQEAgc3RydWN0IG9jeGxwbWVtIHsNCj4gPiAgIAlzdHJ1Y3QgY29tbWFuZF9tZXRhZGF0YSBu c19jb21tYW5kOw0KPiA+ICAgCXN0cnVjdCByZXNvdXJjZSBwbWVtX3JlczsNCj4gPiAgIAlzdHJ1 Y3QgbmRfcmVnaW9uICpuZF9yZWdpb247DQo+ID4gKwlzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2N0 eDsNCj4gPiAgIAljaGFyIGZ3X3ZlcnNpb25bOCsxXTsNCj4gPiAgIAl1MzIgdGltZW91dHNbQURN SU5fQ09NTUFORF9NQVgrMV07DQo+ID4gICANCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L252ZGltbS9vY3hsLXBtZW0uaA0KPiA+IGIvaW5jbHVkZS91YXBpL252ZGltbS9vY3hsLXBtZW0u aA0KPiA+IGluZGV4IGFkZDIyM2FhMmZkYi4uOTg4ZWIwYmM0MTNkIDEwMDY0NA0KPiA+IC0tLSBh L2luY2x1ZGUvdWFwaS9udmRpbW0vb2N4bC1wbWVtLmgNCj4gPiArKysgYi9pbmNsdWRlL3VhcGkv bnZkaW1tL29jeGwtcG1lbS5oDQo+ID4gQEAgLTY2LDYgKzY2LDIwIEBAIHN0cnVjdCBpb2N0bF9v Y3hsX3BtZW1fY29udHJvbGxlcl9zdGF0cyB7DQo+ID4gICAJX191NjQgY2FjaGVfd3JpdGVfbGF0 ZW5jeTsgLyogbmFub3NlY29uZHMgKi8NCj4gPiAgIH07DQo+ID4gICANCj4gPiArc3RydWN0IGlv Y3RsX29jeGxfcG1lbV9ldmVudGZkIHsNCj4gPiArCV9fczMyIGV2ZW50ZmQ7DQo+ID4gKwlfX3Uz MiByZXNlcnZlZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNpZm5kZWYgQklUX1VMTA0KPiA+ICsj ZGVmaW5lIEJJVF9VTEwobnIpCSgxVUxMIDw8IChucikpDQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4g PiArI2RlZmluZSBJT0NUTF9PQ1hMX1BNRU1fRVZFTlRfQ09OVFJPTExFUl9EVU1QX0FWQUlMQUJM RQlCSVRfVUxMDQo+ID4gKDApDQo+ID4gKyNkZWZpbmUgSU9DVExfT0NYTF9QTUVNX0VWRU5UX0VS Uk9SX0xPR19BVkFJTEFCTEUJQklUX1VMTCgxKQ0KPiA+ICsjZGVmaW5lIElPQ1RMX09DWExfUE1F TV9FVkVOVF9IQVJEV0FSRV9GQVRBTAkJQklUX1VMTA0KPiA+ICgyKQ0KPiA+ICsjZGVmaW5lIElP Q1RMX09DWExfUE1FTV9FVkVOVF9GSVJNV0FSRV9GQVRBTAkJQklUX1VMTA0KPiA+ICgzKQ0KPiA+ ICsNCj4gDQo+IEknbSBub3QgZm9uZCBvZiBhZGRpbmcgYSBtYWNybyB3aXRoIHN1Y2ggYSBnZW5l cmljIG5hbWUgYXMgQklUX1VMTCgpDQo+IGluIA0KPiBhIHVzZXIgaGVhZGVyIGZpbGUuIFdoYXQn cyB3cm9uZyB3aXRoOg0KPiANCj4gI2RlZmluZSBJT0NUTF9PQ1hMX1BNRU1fRVZFTlRfQ09OVFJP TExFUl9EVU1QX0FWQUlMQUJMRQkweDENCj4gI2RlZmluZSBJT0NUTF9PQ1hMX1BNRU1fRVZFTlRf RVJST1JfTE9HX0FWQUlMQUJMRQkweDINCj4gI2RlZmluZSBJT0NUTF9PQ1hMX1BNRU1fRVZFTlRf SEFSRFdBUkVfRkFUQUwJCTB4NA0KPiAjZGVmaW5lIElPQ1RMX09DWExfUE1FTV9FVkVOVF9GSVJN V0FSRV9GQVRBTAkJMHg4DQo+IA0KPiANCg0KTm90aGluZywgSSdsbCBjaGFuZ2UgaXQuDQoNCj4g ICAgRnJlZA0KPiANCj4gDQo+ID4gICAvKiBpb2N0bCBudW1iZXJzICovDQo+ID4gICAjZGVmaW5l IE9DWExfUE1FTV9NQUdJQyAweDVDDQo+ID4gICAvKiBTQ00gZGV2aWNlcyAqLw0KPiA+IEBAIC03 NCw1ICs4OCw3IEBAIHN0cnVjdCBpb2N0bF9vY3hsX3BtZW1fY29udHJvbGxlcl9zdGF0cyB7DQo+ ID4gICAjZGVmaW5lIElPQ1RMX09DWExfUE1FTV9DT05UUk9MTEVSX0RVTVBfREFUQQkJX0lPV1Io Tw0KPiA+IENYTF9QTUVNX01BR0lDLCAweDAzLCBzdHJ1Y3QgaW9jdGxfb2N4bF9wbWVtX2NvbnRy b2xsZXJfZHVtcF9kYXRhKQ0KPiA+ICAgI2RlZmluZSBJT0NUTF9PQ1hMX1BNRU1fQ09OVFJPTExF Ul9EVU1QX0NPTVBMRVRFCV9JTyhPQ1hMX1BNRU1fTQ0KPiA+IEFHSUMsIDB4MDQpDQo+ID4gICAj ZGVmaW5lIElPQ1RMX09DWExfUE1FTV9DT05UUk9MTEVSX1NUQVRTCQlfSU8oT0NYTF9QTUVNX00N Cj4gPiBBR0lDLCAweDA1KQ0KPiA+ICsjZGVmaW5lIElPQ1RMX09DWExfUE1FTV9FVkVOVEZECQkJ CV9JT1coT0MNCj4gPiBYTF9QTUVNX01BR0lDLCAweDA2LCBzdHJ1Y3QgaW9jdGxfb2N4bF9wbWVt X2V2ZW50ZmQpDQo+ID4gKyNkZWZpbmUgSU9DVExfT0NYTF9QTUVNX0VWRU5UX0NIRUNLCQkJX0lP UihPQw0KPiA+IFhMX1BNRU1fTUFHSUMsIDB4MDcsIF9fdTY0KQ0KPiA+ICAgDQo+ID4gICAjZW5k aWYgLyogX1VBUElfT0NYTF9TQ01fSCAqLw0KPiA+IA0KLS0gDQpBbGFzdGFpciBEJ1NpbHZhDQpP cGVuIFNvdXJjZSBEZXZlbG9wZXINCkxpbnV4IFRlY2hub2xvZ3kgQ2VudHJlLCBJQk0gQXVzdHJh bGlhDQptb2I6IDA0MjMgNzYyIDgxOQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KTGludXgtbnZkaW1tIG1haWxpbmcgbGlzdCAtLSBsaW51eC1udmRpbW1A bGlzdHMuMDEub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gbGludXgtbnZkaW1t LWxlYXZlQGxpc3RzLjAxLm9yZwo=