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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 35F80C3F2D1 for ; Wed, 4 Mar 2020 09:25:30 +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 001A620732 for ; Wed, 4 Mar 2020 09:25:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 001A620732 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.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 3F11310FC3638; Wed, 4 Mar 2020 01:26:21 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=148.163.158.5; helo=mx0a-001b2d01.pphosted.com; envelope-from=fbarrat@linux.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 5679D10FC3636 for ; Wed, 4 Mar 2020 01:26:20 -0800 (PST) Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0249LDgS086047 for ; Wed, 4 Mar 2020 04:25:27 -0500 Received: from e06smtp02.uk.ibm.com (e06smtp02.uk.ibm.com [195.75.94.98]) by mx0b-001b2d01.pphosted.com with ESMTP id 2yhs0tu6vh-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 04 Mar 2020 04:25:27 -0500 Received: from localhost by e06smtp02.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 4 Mar 2020 09:25:25 -0000 Received: from b06avi18626390.portsmouth.uk.ibm.com (9.149.26.192) by e06smtp02.uk.ibm.com (192.168.101.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 4 Mar 2020 09:25:18 -0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 0249OINY44302696 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Mar 2020 09:24:18 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 169CBAE055; Wed, 4 Mar 2020 09:25:17 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 07C27AE04D; Wed, 4 Mar 2020 09:25:16 +0000 (GMT) Received: from pic2.home (unknown [9.145.145.27]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 4 Mar 2020 09:25:15 +0000 (GMT) Subject: Re: [PATCH v3 19/27] powerpc/powernv/pmem: Add an IOCTL to report controller statistics To: "Alastair D'Silva" , alastair@d-silva.org References: <20200221032720.33893-1-alastair@au1.ibm.com> <20200221032720.33893-20-alastair@au1.ibm.com> From: Frederic Barrat Date: Wed, 4 Mar 2020 10:25:15 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: <20200221032720.33893-20-alastair@au1.ibm.com> Content-Language: en-US X-TM-AS-GCONF: 00 x-cbid: 20030409-0008-0000-0000-0000035930BC X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20030409-0009-0000-0000-00004A7A62EF Message-Id: <6ee036c7-f4ea-4e42-faad-66a1921553ce@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-03-04_01:2020-03-03,2020-03-04 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 clxscore=1015 adultscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2003040073 Message-ID-Hash: MKZTSTUURIPZOQJSRQHZ5T4F4WRLUN4I X-Message-ID-Hash: MKZTSTUURIPZOQJSRQHZ5T4F4WRLUN4I X-MailFrom: fbarrat@linux.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 , =?UTF-8?Q?C=c3=a9dric_Le_Goater?= , Anju T Sudhakar , Hari Bathini , Thomas Gleixner , Greg Kurz , Nicholas Piggin , Masahiro Yamada , Alexey Kardashevskiy , linux-kernel@vger.kernel.org, linuxppc-de v@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"; format="flowed" Content-Transfer-Encoding: base64 DQoNCkxlIDIxLzAyLzIwMjAgw6AgMDQ6MjcsIEFsYXN0YWlyIEQnU2lsdmEgYSDDqWNyaXTCoDoN Cj4gRnJvbTogQWxhc3RhaXIgRCdTaWx2YSA8YWxhc3RhaXJAZC1zaWx2YS5vcmc+DQo+IA0KPiBU aGUgY29udHJvbGxlciBjYW4gcmVwb3J0IGEgbnVtYmVyIG9mIHN0YXRpc3RpY3MgdGhhdCBhcmUg dXNlZnVsDQo+IGluIGV2YWx1YXRpbmcgdGhlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSBv ZiB0aGUgY2FyZC4NCj4gDQo+IFRoaXMgcGF0Y2ggZXhwb3NlcyB0aGlzIGluZm9ybWF0aW9uIHZp YSBhbiBJT0NUTC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFsYXN0YWlyIEQnU2lsdmEgPGFsYXN0 YWlyQGQtc2lsdmEub3JnPg0KPiAtLS0NCj4gICBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2Vy bnYvcG1lbS9vY3hsLmMgfCAxODUgKysrKysrKysrKysrKysrKysrKysrDQo+ICAgaW5jbHVkZS91 YXBpL252ZGltbS9vY3hsLXBtZW0uaCAgICAgICAgICAgIHwgIDE3ICsrDQo+ICAgMiBmaWxlcyBj aGFuZ2VkLCAyMDIgaW5zZXJ0aW9ucygrKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJw Yy9wbGF0Zm9ybXMvcG93ZXJudi9wbWVtL29jeGwuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMv cG93ZXJudi9wbWVtL29jeGwuYw0KPiBpbmRleCAyY2FiYWZlMWZjNTguLjAwOWQ0ZmQyOWU3ZCAx MDA2NDQNCj4gLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bC5j DQo+ICsrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wbWVtL29jeGwuYw0KPiBA QCAtNzU4LDYgKzc1OCwxODYgQEAgc3RhdGljIGludCBpb2N0bF9jb250cm9sbGVyX2R1bXBfY29t cGxldGUoc3RydWN0IG9jeGxwbWVtICpvY3hscG1lbSkNCj4gICAJCQkJICAgIEdMT0JBTF9NTUlP X0hDSV9DT05UUk9MTEVSX0RVTVBfQ09MTEVDVEVEKTsNCj4gICB9DQo+ICAgDQo+ICsvKioNCj4g KyAqIGNvbnRyb2xsZXJfc3RhdHNfaGVhZGVyX3BhcnNlKCkgLSBQYXJzZSB0aGUgZmlyc3QgNjQg Yml0cyBvZiB0aGUgY29udHJvbGxlciBzdGF0cyBhZG1pbiBjb21tYW5kIHJlc3BvbnNlDQo+ICsg KiBAb2N4bHBtZW06IHRoZSBkZXZpY2UgbWV0YWRhdGENCj4gKyAqIEBsZW5ndGg6IG91dCwgcmV0 dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSByZXNwb25zZSAoZXhjbHVkaW5nIHRoZSA2 NCBiaXQgaGVhZGVyKQ0KPiArICovDQo+ICtzdGF0aWMgaW50IGNvbnRyb2xsZXJfc3RhdHNfaGVh ZGVyX3BhcnNlKHN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0sDQo+ICsJdTMyICpsZW5ndGgpDQo+ ICt7DQo+ICsJaW50IHJjOw0KPiArCXU2NCB2YWw7DQo+ICsNCg0KDQp1bmV4cGVjdGVkIGVtcHR5 IGxpbmUNCg0KDQo+ICsJdTE2IGRhdGFfaWRlbnRpZmllcjsNCj4gKwl1MzIgZGF0YV9sZW5ndGg7 DQo+ICsNCj4gKwlyYyA9IG9jeGxfZ2xvYmFsX21taW9fcmVhZDY0KG9jeGxwbWVtLT5vY3hsX2Fm dSwNCj4gKwkJCQkgICAgIG9jeGxwbWVtLT5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0LA0KPiAr CQkJCSAgICAgT0NYTF9MSVRUTEVfRU5ESUFOLCAmdmFsKTsNCj4gKwlpZiAocmMpDQo+ICsJCXJl dHVybiByYzsNCj4gKw0KPiArCWRhdGFfaWRlbnRpZmllciA9IHZhbCA+PiA0ODsNCj4gKwlkYXRh X2xlbmd0aCA9IHZhbCAmIDB4RkZGRkZGRkY7DQo+ICsNCj4gKwlpZiAoZGF0YV9pZGVudGlmaWVy ICE9IDB4NDM1MykgeyAvLyAnQ1MnDQo+ICsJCWRldl9lcnIoJm9jeGxwbWVtLT5kZXYsDQo+ICsJ CQkiQmFkIGRhdGEgaWRlbnRpZmllciBmb3IgY29udHJvbGxlciBzdGF0cywgZXhwZWN0ZWQgJ0NT JywgZ290ICclLS4qcydcbiIsDQo+ICsJCQkyLCAoY2hhciAqKSZkYXRhX2lkZW50aWZpZXIpOw0K DQoNCg0KV293LCBJJ20gY2x1ZWxlc3Mgd2hhdCB0aGF0IHN0cmluZyBmb3JtYXQgbG9va3MgbGlr ZSA6LSkNCjIgYXJndW1lbnRzPyBEaWQgeW91IGNoZWNrIHRoZSBrZXJuZWwgc3RyaW5nIGZvcm1h dHRlciBkb2VzIHdoYXQgeW91IHdhbnQ/DQpZb3UgbWF5IGNvbnNpZGVyIHVuaWZ5aW5nIHRoZSBm b3JtYXQgdGhvdWdoLCB0aGUgZXJyb3IgbG9nIHBhdGNoIHVzZXMgYSANCnNpbXBsZXIgKGJldHRl cj8pIGZvcm1hdCBmb3IgYSBzaW1pbGFyIG1lc3NhZ2UuDQoNCg0KDQo+ICsJCXJldHVybiAtRUlO VkFMOw0KPiArCX0NCj4gKw0KPiArCSpsZW5ndGggPSBkYXRhX2xlbmd0aDsNCj4gKwlyZXR1cm4g MDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBpb2N0bF9jb250cm9sbGVyX3N0YXRzKHN0cnVj dCBvY3hscG1lbSAqb2N4bHBtZW0sDQo+ICsJCQkJICBzdHJ1Y3QgaW9jdGxfb2N4bF9wbWVtX2Nv bnRyb2xsZXJfc3RhdHMgX191c2VyICp1YXJnKQ0KPiArew0KPiArCXN0cnVjdCBpb2N0bF9vY3hs X3BtZW1fY29udHJvbGxlcl9zdGF0cyBhcmdzOw0KPiArCXUzMiBsZW5ndGg7DQo+ICsJaW50IHJj Ow0KPiArCXU2NCB2YWw7DQo+ICsNCj4gKwltZW1zZXQoJmFyZ3MsICdcMCcsIHNpemVvZihhcmdz KSk7DQo+ICsNCj4gKwltdXRleF9sb2NrKCZvY3hscG1lbS0+YWRtaW5fY29tbWFuZC5sb2NrKTsN Cj4gKw0KPiArCXJjID0gYWRtaW5fY29tbWFuZF9yZXF1ZXN0KG9jeGxwbWVtLCBBRE1JTl9DT01N QU5EX0NPTlRST0xMRVJfU1RBVFMpOw0KPiArCWlmIChyYykNCj4gKwkJZ290byBvdXQ7DQo+ICsN Cj4gKwlyYyA9IG9jeGxfZ2xvYmFsX21taW9fd3JpdGU2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ ICsJCQkJICAgICAgb2N4bHBtZW0tPmFkbWluX2NvbW1hbmQucmVxdWVzdF9vZmZzZXQgKyAweDA4 LA0KPiArCQkJCSAgICAgIE9DWExfTElUVExFX0VORElBTiwgMCk7DQo+ICsJaWYgKHJjKQ0KPiAr CQlnb3RvIG91dDsNCj4gKw0KPiArCXJjID0gYWRtaW5fY29tbWFuZF9leGVjdXRlKG9jeGxwbWVt KTsNCj4gKwlpZiAocmMpDQo+ICsJCWdvdG8gb3V0Ow0KPiArDQo+ICsNCj4gKwlyYyA9IGFkbWlu X2NvbW1hbmRfY29tcGxldGVfdGltZW91dChvY3hscG1lbSwNCj4gKwkJCQkJICAgIEFETUlOX0NP TU1BTkRfQ09OVFJPTExFUl9TVEFUUyk7DQo+ICsJaWYgKHJjIDwgMCkgew0KPiArCQlkZXZfd2Fy bigmb2N4bHBtZW0tPmRldiwgIkNvbnRyb2xsZXIgc3RhdHMgdGltZWQgb3V0XG4iKTsNCj4gKwkJ Z290byBvdXQ7DQo+ICsJfQ0KPiArDQo+ICsJcmMgPSBhZG1pbl9yZXNwb25zZShvY3hscG1lbSk7 DQo+ICsJaWYgKHJjIDwgMCkNCj4gKwkJZ290byBvdXQ7DQo+ICsJaWYgKHJjICE9IFNUQVRVU19T VUNDRVNTKSB7DQo+ICsJCXdhcm5fc3RhdHVzKG9jeGxwbWVtLA0KPiArCQkJICAgICJVbmV4cGVj dGVkIHN0YXR1cyBmcm9tIGNvbnRyb2xsZXIgc3RhdHMiLCByYyk7DQo+ICsJCWdvdG8gb3V0Ow0K PiArCX0NCg0KDQpBbGwgdGhvc2UgaW9jdGxzIGNvbW1hbmRzIGZvbGxvdyB0aGUgc2FtZSBwYXR0 ZXJuOg0KMS4gYWRtaW5fY29tbWFuZF9yZXF1ZXN0KCkNCjIuIG9wdGlvbm5hbHksIHNldCBzb21l IG1taW8gcmVnaXN0ZXJzIHNwZWNpZmljIHRvIHRoZSBjb21tYW5kDQozLiBhZG1pbl9jb21tYW5k X2V4ZWN1dGUoKQ0KNC4gYWRtaW5fY29tbWFuZF9jb21wbGV0ZV90aW1lb3V0KCkNCjUuIGFkbWlu X3Jlc3BvbnNlKCkNCg0KQnkgc3dhcHBpbmcgMSBhbmQgMiwgd2UgY291bGQgdGhlbiBmYWN0b3Jp emUgc3RlcHMgMSwgMywgNCBhbmQgNSBpbiBhIA0KZnVuY3Rpb24gYW5kIHNpbXBsaWZ5L3Nob3J0 ZW4gdGhlIGNvZGUgZWFjaCB0aW1lIGEgY29tbWFuZCBpcyBjYWxsZWQuDQoNClJlZ2FyZGluZyBz dGVwIDIgKGFuZCB0aGF0J3MgdHJ1ZSBmb3IgYWxsIHNpbWlsYXIgcGF0Y2hlcyksIGEgY29tbWVu dCANCmFib3V0IHdoYXQgdGhlIG1taW8gdHVuaW5nIGRvZXMgd291bGQgaGVscCBhbmQgYXZvaWQg bG9va2luZyB1cCB0aGUgDQpzcGVjLiBMb29raW5nIHVwIHRoZSBzcGVjIGR1cmluZyB0aGUgcmV2 aWV3IGlzIGV4cGVjdGVkLCBidXQgaXQgd2lsbCANCmVhc2UgcmVhZGluZyB0aGUgY29kZSA2IG1v bnRocyBmcm9tIG5vdy4NCg0KDQoNCj4gKw0KPiArCXJjID0gY29udHJvbGxlcl9zdGF0c19oZWFk ZXJfcGFyc2Uob2N4bHBtZW0sICZsZW5ndGgpOw0KPiArCWlmIChyYykNCj4gKwkJZ290byBvdXQ7 DQo+ICsNCj4gKwlpZiAobGVuZ3RoICE9IDB4MTQwKQ0KPiArCQl3YXJuX3N0YXR1cyhvY3hscG1l bSwNCj4gKwkJCSAgICAiVW5leHBlY3RlZCBsZW5ndGggZm9yIGNvbnRyb2xsZXIgc3RhdHMgZGF0 YSwgZXhwZWN0ZWQgMHgxNDAsIGdvdCAweCV4IiwNCj4gKwkJCSAgICBsZW5ndGgpOw0KPiArDQo+ ICsJcmMgPSBvY3hsX2dsb2JhbF9tbWlvX3JlYWQ2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ICsJ CQkJICAgICBvY3hscG1lbS0+YWRtaW5fY29tbWFuZC5kYXRhX29mZnNldCArIDB4MDggKyAweDA4 LA0KPiArCQkJCSAgICAgT0NYTF9MSVRUTEVfRU5ESUFOLCAmdmFsKTsNCj4gKwlpZiAocmMpDQo+ ICsJCWdvdG8gb3V0Ow0KPiArDQo+ICsJYXJncy5yZXNldF9jb3VudCA9IHZhbCA+PiAzMjsNCj4g KwlhcmdzLnJlc2V0X3VwdGltZSA9IHZhbCAmIDB4RkZGRkZGRkY7DQo+ICsNCj4gKwlyYyA9IG9j eGxfZ2xvYmFsX21taW9fcmVhZDY0KG9jeGxwbWVtLT5vY3hsX2FmdSwNCj4gKwkJCQkgICAgIG9j eGxwbWVtLT5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0ICsgMHgwOCArIDB4MTAsDQo+ICsJCQkJ ICAgICBPQ1hMX0xJVFRMRV9FTkRJQU4sICZ2YWwpOw0KPiArCWlmIChyYykNCj4gKwkJZ290byBv dXQ7DQo+ICsNCj4gKwlhcmdzLnBvd2VyX29uX3VwdGltZSA9IHZhbCA+PiAzMjsNCj4gKw0KPiAr CXJjID0gb2N4bF9nbG9iYWxfbW1pb19yZWFkNjQob2N4bHBtZW0tPm9jeGxfYWZ1LA0KPiArCQkJ CSAgICAgb2N4bHBtZW0tPmFkbWluX2NvbW1hbmQuZGF0YV9vZmZzZXQgKyAweDA4ICsgMHg0MCAr IDB4MDgsDQogPiArCQkJCSAgICAgT0NYTF9MSVRUTEVfRU5ESUFOLCAmYXJncy5ob3N0X2xvYWRf Y291bnQpOw0KDQoNClRob3NlIG9mZnNldHMgYXJlIGhhcmQgdG8gdW5kZXJzdGFuZCwgZXZlbiB3 aXRoIHRoZSBzcGVjIG5leHQgdG8gbWUuIEFuZCANCml0IHNlZW1zIHRoYXQgd2UgY291bGQgaGFy ZGVuIHRoaW5ncyBhIGJpdDoNCmVhY2ggYmxvY2sgYXMgYSAic3RhdGlzdGljcyBwYXJhbWV0ZXIg SUQiIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIGZvciANCnRoYXQgYmxvY2suIFdlIHNob3Vs ZCBjaGVjayB0aGF0IGFuZCBtYWtlIHN1cmUgd2UncmUgcmVhZGluZyB3aGF0IHdlIGV4cGVjdC4N CkZvciBleGFtcGxlLCBmcm9tIHRoZSBzcGVjIEknbSBsb29raW5nICgxMTBkKSwgSSB3b3VsZCBl eHBlY3QgdGhlIGhvc3QgDQpsb2FkIGNvdW50IHRvIGJlIGF0IG9mZnNldCAweDEwLiBJdCdzIGVu dGlyZWx5IHBvc3NpYmxlIEknbSBtaXNyZWFkaW5nIA0KaXQgdGhvdWdoLg0KDQoNCg0KPiArCWlm IChyYykNCj4gKwkJZ290byBvdXQ7DQo+ICsNCj4gKwlyYyA9IG9jeGxfZ2xvYmFsX21taW9fcmVh ZDY0KG9jeGxwbWVtLT5vY3hsX2FmdSwNCj4gKwkJCQkgICAgIG9jeGxwbWVtLT5hZG1pbl9jb21t YW5kLmRhdGFfb2Zmc2V0ICsgMHgwOCArIDB4NDAgKyAweDEwLA0KPiArCQkJCSAgICAgT0NYTF9M SVRUTEVfRU5ESUFOLCAmYXJncy5ob3N0X3N0b3JlX2NvdW50KTsNCj4gKwlpZiAocmMpDQo+ICsJ CWdvdG8gb3V0Ow0KPiArDQo+ICsJcmMgPSBvY3hsX2dsb2JhbF9tbWlvX3JlYWQ2NChvY3hscG1l bS0+b2N4bF9hZnUsDQo+ICsJCQkJICAgICBvY3hscG1lbS0+YWRtaW5fY29tbWFuZC5kYXRhX29m ZnNldCArIDB4MDggKyAweDQwICsgMHgxOCwNCj4gKwkJCQkgICAgIE9DWExfTElUVExFX0VORElB TiwgJmFyZ3MubWVkaWFfcmVhZF9jb3VudCk7DQo+ICsJaWYgKHJjKQ0KPiArCQlnb3RvIG91dDsN Cj4gKw0KPiArCXJjID0gb2N4bF9nbG9iYWxfbW1pb19yZWFkNjQob2N4bHBtZW0tPm9jeGxfYWZ1 LA0KPiArCQkJCSAgICAgb2N4bHBtZW0tPmFkbWluX2NvbW1hbmQuZGF0YV9vZmZzZXQgKyAweDA4 ICsgMHg0MCArIDB4MjAsDQo+ICsJCQkJICAgICBPQ1hMX0xJVFRMRV9FTkRJQU4sICZhcmdzLm1l ZGlhX3dyaXRlX2NvdW50KTsNCj4gKwlpZiAocmMpDQo+ICsJCWdvdG8gb3V0Ow0KPiArDQo+ICsJ cmMgPSBvY3hsX2dsb2JhbF9tbWlvX3JlYWQ2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ICsJCQkJ ICAgICBvY3hscG1lbS0+YWRtaW5fY29tbWFuZC5kYXRhX29mZnNldCArIDB4MDggKyAweDQwICsg MHgyOCwNCj4gKwkJCQkgICAgIE9DWExfTElUVExFX0VORElBTiwgJmFyZ3MuY2FjaGVfaGl0X2Nv dW50KTsNCj4gKwlpZiAocmMpDQo+ICsJCWdvdG8gb3V0Ow0KPiArDQo+ICsJcmMgPSBvY3hsX2ds b2JhbF9tbWlvX3JlYWQ2NChvY3hscG1lbS0+b2N4bF9hZnUsDQo+ICsJCQkJICAgICBvY3hscG1l bS0+YWRtaW5fY29tbWFuZC5kYXRhX29mZnNldCArIDB4MDggKyAweDQwICsgMHgzMCwNCj4gKwkJ CQkgICAgIE9DWExfTElUVExFX0VORElBTiwgJmFyZ3MuY2FjaGVfbWlzc19jb3VudCk7DQo+ICsJ aWYgKHJjKQ0KPiArCQlnb3RvIG91dDsNCj4gKw0KPiArCXJjID0gb2N4bF9nbG9iYWxfbW1pb19y ZWFkNjQob2N4bHBtZW0tPm9jeGxfYWZ1LA0KPiArCQkJCSAgICAgb2N4bHBtZW0tPmFkbWluX2Nv bW1hbmQuZGF0YV9vZmZzZXQgKyAweDA4ICsgMHg0MCArIDB4MzgsDQo+ICsJCQkJICAgICBPQ1hM X0xJVFRMRV9FTkRJQU4sICZhcmdzLm1lZGlhX3JlYWRfbGF0ZW5jeSk7DQo+ICsJaWYgKHJjKQ0K PiArCQlnb3RvIG91dDsNCj4gKw0KPiArCXJjID0gb2N4bF9nbG9iYWxfbW1pb19yZWFkNjQob2N4 bHBtZW0tPm9jeGxfYWZ1LA0KPiArCQkJCSAgICAgb2N4bHBtZW0tPmFkbWluX2NvbW1hbmQuZGF0 YV9vZmZzZXQgKyAweDA4ICsgMHg0MCArIDB4NDAsDQo+ICsJCQkJICAgICBPQ1hMX0xJVFRMRV9F TkRJQU4sICZhcmdzLm1lZGlhX3dyaXRlX2xhdGVuY3kpOw0KPiArCWlmIChyYykNCj4gKwkJZ290 byBvdXQ7DQo+ICsNCj4gKwlyYyA9IG9jeGxfZ2xvYmFsX21taW9fcmVhZDY0KG9jeGxwbWVtLT5v Y3hsX2FmdSwNCj4gKwkJCQkgICAgIG9jeGxwbWVtLT5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0 ICsgMHgwOCArIDB4NDAgKyAweDQ4LA0KPiArCQkJCSAgICAgT0NYTF9MSVRUTEVfRU5ESUFOLCAm YXJncy5jYWNoZV9yZWFkX2xhdGVuY3kpOw0KPiArCWlmIChyYykNCj4gKwkJZ290byBvdXQ7DQo+ ICsNCj4gKwlyYyA9IG9jeGxfZ2xvYmFsX21taW9fcmVhZDY0KG9jeGxwbWVtLT5vY3hsX2FmdSwN Cj4gKwkJCQkgICAgIG9jeGxwbWVtLT5hZG1pbl9jb21tYW5kLmRhdGFfb2Zmc2V0ICsgMHgwOCAr IDB4NDAgKyAweDUwLA0KPiArCQkJCSAgICAgT0NYTF9MSVRUTEVfRU5ESUFOLCAmYXJncy5jYWNo ZV93cml0ZV9sYXRlbmN5KTsNCj4gKwlpZiAocmMpDQo+ICsJCWdvdG8gb3V0Ow0KPiArDQo+ICsJ aWYgKGNvcHlfdG9fdXNlcih1YXJnLCAmYXJncywgc2l6ZW9mKGFyZ3MpKSkgew0KPiArCQlyYyA9 IC1FRkFVTFQ7DQo+ICsJCWdvdG8gb3V0Ow0KPiArCX0NCj4gKw0KPiArCXJjID0gYWRtaW5fcmVz cG9uc2VfaGFuZGxlZChvY3hscG1lbSk7DQo+ICsJaWYgKHJjKQ0KPiArCQlnb3RvIG91dDsNCj4g Kw0KPiArCXJjID0gMDsNCj4gKwlnb3RvIG91dDsNCg0KDQpUaGF0IG1heSBiZSBtb3JlIG9mIGEg cGVyc29uYWwgaGFiaXQsIGJ1dCB0aGF0IGZpbmFsIGdvdG8gZGlzcnVwdHMgdGhlIA0KImdvb2Qg Y2FzZSIgZmxvdy4gQW5kIEkgdGhpbmsgaXQncyBwcmV0dHkgdW51c3VhbCB3aXRoaW4gdGhlIGtl cm5lbC4NCg0KDQo+ICsNCj4gK291dDoNCj4gKwltdXRleF91bmxvY2soJm9jeGxwbWVtLT5hZG1p bl9jb21tYW5kLmxvY2spOw0KPiArCXJldHVybiByYzsNCj4gK30NCj4gKw0KPiAgIHN0YXRpYyBs b25nIGZpbGVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln bmVkIGxvbmcgYXJncykNCj4gICB7DQo+ICAgCXN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0gPSBm aWxlLT5wcml2YXRlX2RhdGE7DQo+IEBAIC03ODEsNiArOTYxLDExIEBAIHN0YXRpYyBsb25nIGZp bGVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxv bmcgYXJncykNCj4gICAJY2FzZSBJT0NUTF9PQ1hMX1BNRU1fQ09OVFJPTExFUl9EVU1QX0NPTVBM RVRFOg0KPiAgIAkJcmMgPSBpb2N0bF9jb250cm9sbGVyX2R1bXBfY29tcGxldGUob2N4bHBtZW0p Ow0KPiAgIAkJYnJlYWs7DQo+ICsNCj4gKwljYXNlIElPQ1RMX09DWExfUE1FTV9DT05UUk9MTEVS X1NUQVRTOg0KPiArCQlyYyA9IGlvY3RsX2NvbnRyb2xsZXJfc3RhdHMob2N4bHBtZW0sDQo+ICsJ CQkJCSAgICAoc3RydWN0IGlvY3RsX29jeGxfcG1lbV9jb250cm9sbGVyX3N0YXRzIF9fdXNlciAq KWFyZ3MpOw0KPiArCQlicmVhazsNCj4gICAJfQ0KPiAgIA0KPiAgIAlyZXR1cm4gcmM7DQo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbnZkaW1tL29jeGwtcG1lbS5oIGIvaW5jbHVkZS91YXBp L252ZGltbS9vY3hsLXBtZW0uaA0KPiBpbmRleCBkNGQ4NTEyZDAzZjcuLmFkZDIyM2FhMmZkYiAx MDA2NDQNCj4gLS0tIGEvaW5jbHVkZS91YXBpL252ZGltbS9vY3hsLXBtZW0uaA0KPiArKysgYi9p bmNsdWRlL3VhcGkvbnZkaW1tL29jeGwtcG1lbS5oDQo+IEBAIC01MCw2ICs1MCwyMiBAQCBzdHJ1 Y3QgaW9jdGxfb2N4bF9wbWVtX2NvbnRyb2xsZXJfZHVtcF9kYXRhIHsNCj4gICAJX191NjQgcmVz ZXJ2ZWRbOF07DQo+ICAgfTsNCj4gICANCj4gK3N0cnVjdCBpb2N0bF9vY3hsX3BtZW1fY29udHJv bGxlcl9zdGF0cyB7DQo+ICsJX191MzIgcmVzZXRfY291bnQ7DQo+ICsJX191MzIgcmVzZXRfdXB0 aW1lOyAvKiBzZWNvbmRzICovDQo+ICsJX191MzIgcG93ZXJfb25fdXB0aW1lOyAvKiBzZWNvbmRz ICovDQoNCg0KU2FtZSBhcyBiZWZvcmUsIHdlJ3JlIGdvaW5nIHRvIGhhdmUgc29tZSBwYWRkaW5n IGhlcmUuDQoNCiAgIEZyZWQNCg0KDQo+ICsJX191NjQgaG9zdF9sb2FkX2NvdW50Ow0KPiArCV9f dTY0IGhvc3Rfc3RvcmVfY291bnQ7DQo+ICsJX191NjQgbWVkaWFfcmVhZF9jb3VudDsNCj4gKwlf X3U2NCBtZWRpYV93cml0ZV9jb3VudDsNCj4gKwlfX3U2NCBjYWNoZV9oaXRfY291bnQ7DQo+ICsJ X191NjQgY2FjaGVfbWlzc19jb3VudDsNCj4gKwlfX3U2NCBtZWRpYV9yZWFkX2xhdGVuY3k7IC8q IG5hbm9zZWNvbmRzICovDQo+ICsJX191NjQgbWVkaWFfd3JpdGVfbGF0ZW5jeTsgLyogbmFub3Nl Y29uZHMgKi8NCj4gKwlfX3U2NCBjYWNoZV9yZWFkX2xhdGVuY3k7IC8qIG5hbm9zZWNvbmRzICov DQo+ICsJX191NjQgY2FjaGVfd3JpdGVfbGF0ZW5jeTsgLyogbmFub3NlY29uZHMgKi8NCj4gK307 DQo+ICsNCj4gICAvKiBpb2N0bCBudW1iZXJzICovDQo+ICAgI2RlZmluZSBPQ1hMX1BNRU1fTUFH SUMgMHg1Qw0KPiAgIC8qIFNDTSBkZXZpY2VzICovDQo+IEBAIC01Nyw1ICs3Myw2IEBAIHN0cnVj dCBpb2N0bF9vY3hsX3BtZW1fY29udHJvbGxlcl9kdW1wX2RhdGEgew0KPiAgICNkZWZpbmUgSU9D VExfT0NYTF9QTUVNX0NPTlRST0xMRVJfRFVNUAkJCV9JTyhPQ1hMX1BNRU1fTUFHSUMsIDB4MDIp DQo+ICAgI2RlZmluZSBJT0NUTF9PQ1hMX1BNRU1fQ09OVFJPTExFUl9EVU1QX0RBVEEJCV9JT1dS KE9DWExfUE1FTV9NQUdJQywgMHgwMywgc3RydWN0IGlvY3RsX29jeGxfcG1lbV9jb250cm9sbGVy X2R1bXBfZGF0YSkNCj4gICAjZGVmaW5lIElPQ1RMX09DWExfUE1FTV9DT05UUk9MTEVSX0RVTVBf Q09NUExFVEUJX0lPKE9DWExfUE1FTV9NQUdJQywgMHgwNCkNCj4gKyNkZWZpbmUgSU9DVExfT0NY TF9QTUVNX0NPTlRST0xMRVJfU1RBVFMJCV9JTyhPQ1hMX1BNRU1fTUFHSUMsIDB4MDUpDQo+ICAg DQo+ICAgI2VuZGlmIC8qIF9VQVBJX09DWExfU0NNX0ggKi8NCj4gDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1udmRpbW0gbWFpbGluZyBsaXN0 IC0tIGxpbnV4LW52ZGltbUBsaXN0cy4wMS5vcmcKVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFp bCB0byBsaW51eC1udmRpbW0tbGVhdmVAbGlzdHMuMDEub3JnCg==