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.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 F0572C3F2D7 for ; Tue, 3 Mar 2020 09:33:29 +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 BAC5E21775 for ; Tue, 3 Mar 2020 09:33:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BAC5E21775 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 1964010FC3601; Tue, 3 Mar 2020 01:34:21 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=fbarrat@linux.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 8FF6610FC319E for ; Tue, 3 Mar 2020 01:34:18 -0800 (PST) Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0239XMkP028222 for ; Tue, 3 Mar 2020 04:33:26 -0500 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0a-001b2d01.pphosted.com with ESMTP id 2yfmww36rg-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 03 Mar 2020 04:33:25 -0500 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 3 Mar 2020 09:28:25 -0000 Received: from b06avi18626390.portsmouth.uk.ibm.com (9.149.26.192) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Tue, 3 Mar 2020 09:28:16 -0000 Received: from d06av21.portsmouth.uk.ibm.com (d06av21.portsmouth.uk.ibm.com [9.149.105.232]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 0239RH5f50463074 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 3 Mar 2020 09:27:17 GMT Received: from d06av21.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3AC3E5204E; Tue, 3 Mar 2020 09:28:15 +0000 (GMT) Received: from pic2.home (unknown [9.145.93.72]) by d06av21.portsmouth.uk.ibm.com (Postfix) with ESMTP id 2C40752051; Tue, 3 Mar 2020 09:28:14 +0000 (GMT) Subject: Re: [PATCH v3 16/27] powerpc/powernv/pmem: Register a character device for userspace to interact with To: "Alastair D'Silva" , alastair@d-silva.org References: <20200221032720.33893-1-alastair@au1.ibm.com> <20200221032720.33893-17-alastair@au1.ibm.com> From: Frederic Barrat Date: Tue, 3 Mar 2020 10:28:13 +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-17-alastair@au1.ibm.com> Content-Language: en-US X-TM-AS-GCONF: 00 x-cbid: 20030309-4275-0000-0000-000003A7D8ED X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20030309-4276-0000-0000-000038BCE05A Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-03-03_02:2020-03-03,2020-03-03 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 mlxlogscore=999 clxscore=1015 suspectscore=2 malwarescore=0 adultscore=0 bulkscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2003030074 Message-ID-Hash: HXDSG7CDVVEFLBUSK7JGK223RCB5F5GF X-Message-ID-Hash: HXDSG7CDVVEFLBUSK7JGK223RCB5F5GF 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 aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjaGFyYWN0ZXIgZGV2aWNlICgvZGV2L29jeGwtc2NtWCkg d2hpY2ggZnVydGhlcg0KPiBwYXRjaGVzIHdpbGwgdXNlIHRvIGludGVyYWN0IHdpdGggdXNlcnNw YWNlLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQWxhc3RhaXIgRCdTaWx2YSA8YWxhc3RhaXJAZC1z aWx2YS5vcmc+DQo+IC0tLQ0KPiAgIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wbWVt L29jeGwuYyAgICB8IDExNiArKysrKysrKysrKysrKysrKy0NCj4gICAuLi4vcGxhdGZvcm1zL3Bv d2VybnYvcG1lbS9vY3hsX2ludGVybmFsLmggICAgfCAgIDIgKw0KPiAgIDIgZmlsZXMgY2hhbmdl ZCwgMTE2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bC5jIGIvYXJjaC9wb3dlcnBj L3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0vb2N4bC5jDQo+IGluZGV4IGI4YmQ3ZTcwM2IxOS4uNjMx MDlhODcwZDJjIDEwMDY0NA0KPiAtLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYv cG1lbS9vY3hsLmMNCj4gKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BtZW0v b2N4bC5jDQo+IEBAIC0xMCw2ICsxMCw3IEBADQo+ICAgI2luY2x1ZGUgPG1pc2Mvb2N4bC5oPg0K PiAgICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9uZGN0bC5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L21tX3R5cGVz Lmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L21lbW9yeV9ob3RwbHVnLmg+DQo+ICAgI2luY2x1ZGUg Im9jeGxfaW50ZXJuYWwuaCINCj4gQEAgLTMzOSw2ICszNDAsOSBAQCBzdGF0aWMgdm9pZCBmcmVl X29jeGxwbWVtKHN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0pDQo+ICAgDQo+ICAgCWZyZWVfbWlu b3Iob2N4bHBtZW0pOw0KPiAgIA0KPiArCWlmIChvY3hscG1lbS0+Y2Rldi5vd25lcikNCj4gKwkJ Y2Rldl9kZWwoJm9jeGxwbWVtLT5jZGV2KTsNCj4gKw0KPiAgIAlpZiAob2N4bHBtZW0tPm1ldGFk YXRhX2FkZHIpDQo+ICAgCQlkZXZtX21lbXVubWFwKCZvY3hscG1lbS0+ZGV2LCBvY3hscG1lbS0+ bWV0YWRhdGFfYWRkcik7DQo+ICAgDQo+IEBAIC0zOTYsNiArNDAwLDcwIEBAIHN0YXRpYyBpbnQg b2N4bHBtZW1fcmVnaXN0ZXIoc3RydWN0IG9jeGxwbWVtICpvY3hscG1lbSkNCj4gICAJcmV0dXJu IGRldmljZV9yZWdpc3Rlcigmb2N4bHBtZW0tPmRldik7DQo+ICAgfQ0KPiAgIA0KPiArc3RhdGlj IHZvaWQgb2N4bHBtZW1fcHV0KHN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW0pDQo+ICt7DQo+ICsJ cHV0X2RldmljZSgmb2N4bHBtZW0tPmRldik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qg b2N4bHBtZW0gKm9jeGxwbWVtX2dldChzdHJ1Y3Qgb2N4bHBtZW0gKm9jeGxwbWVtKQ0KPiArew0K PiArCXJldHVybiAoZ2V0X2RldmljZSgmb2N4bHBtZW0tPmRldikgPT0gTlVMTCkgPyBOVUxMIDog b2N4bHBtZW07DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qgb2N4bHBtZW0gKmZpbmRfYW5k X2dldF9vY3hscG1lbShkZXZfdCBkZXZubykNCj4gK3sNCj4gKwlzdHJ1Y3Qgb2N4bHBtZW0gKm9j eGxwbWVtOw0KPiArCWludCBtaW5vciA9IE1JTk9SKGRldm5vKTsNCj4gKwkvKg0KPiArCSAqIFdl IGRvbid0IGRlY2xhcmUgYW4gUkNVIGNyaXRpY2FsIHNlY3Rpb24gaGVyZSwgYXMgb3VyIEFGVQ0K PiArCSAqIGlzIHByb3RlY3RlZCBieSBhIHJlZmVyZW5jZSBjb3VudGVyIG9uIHRoZSBkZXZpY2Uu IEJ5IHRoZSB0aW1lIHRoZQ0KPiArCSAqIG1pbm9yIG51bWJlciBvZiBhIGRldmljZSBpcyByZW1v dmVkIGZyb20gdGhlIGlkciwgdGhlIHJlZiBjb3VudCBvZg0KPiArCSAqIHRoZSBkZXZpY2UgaXMg YWxyZWFkeSBhdCAwLCBzbyBubyB1c2VyIEFQSSB3aWxsIGFjY2VzcyB0aGF0IEFGVSBhbmQNCj4g KwkgKiB0aGlzIGZ1bmN0aW9uIGNhbid0IHJldHVybiBpdC4NCj4gKwkgKi8NCg0KDQpJIGZpeGVk IHNvbWV0aGluZyByZWxhdGVkIGluIHRoZSBvY3hsIGRyaXZlciAod2hpY2ggaGFkIGVub3VnaCBj aGFuZ2VzIA0Kd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSAiaW5mbyIgZGV2aWNlIHRvIG1h a2UgYSBzaW1pbGFyIGNvbW1lbnQgDQpiZWNvbWUgd3JvbmcpLiBTZWUgY29tbWl0IGE1OGQzN2Jj ZTBkMjEuIFRoZSBpc3N1ZSBpcyBoYW5kbGluZyBhIA0Kc2ltdWx0YW5lb3VzIG9wZW4oKSBhbmQg cmVtb3ZhbCBvZiB0aGUgZGV2aWNlIHRocm91Z2ggL3N5c2ZzIGFzIGJlc3Qgd2UgY2FuLg0KDQpX ZSBhcmUgb24gYSBmaWxlIG9wZW4gcGF0aCBhbmQgaXQncyBub3QgbGlrZSB3ZSdyZSBnb2luZyB0 byBoYXZlIGEgDQp0aG91c2FuZCBjbGllbnRzLCBzbyBwZXJmb3JtYW5jZSBpcyBub3QgdGhhdCBj cml0aWNhbC4gV2UgY2FuIHRha2UgdGhlIA0KbXV0ZXggYmVmb3JlIHNlYXJjaGluZyBpbiB0aGUg SURSIGFuZCByZWxlYXNlIGl0IGFmdGVyIHdlIGluY3JlbWVudCB0aGUgDQpyZWZlcmVuY2UgY291 bnQgb24gdGhlIGRldmljZS4NCkJ1dCB0aGF0J3Mgbm90IGVub3VnaDogd2UgY291bGQgc3RpbGwg ZmluZCB0aGUgZGV2aWNlIGluIHRoZSBJRFIgd2hpbGUgDQppdCBpcyBiZWluZyByZW1vdmVkIGlu IGZyZWVfb2N4bHBtZW0oKS4gSSBiZWxpZXZlIHRoZSBvbmx5IHNhZmUgd2F5IHRvIA0KYWRkcmVz cyBpdCBpcyBieSByZW1vdmluZyB0aGUgdXNlci1mYWNpbmcgQVBJcyAodGhlIGNoYXIgZGV2aWNl KSBiZWZvcmUgDQpjYWxsaW5nIGRldmljZV91bnJlZ2lzdGVyKCkuIFNvIHRoYXQgaXQncyBub3Qg cG9zc2libGUgdG8gZmluZCB0aGUgDQpkZXZpY2UgaW4gZmlsZV9vcGVuKCkgaWYgaXQncyBpbiB0 aGUgbWlkZGxlIG9mIGJlaW5nIHJlbW92ZWQuDQoNCiAgIEZyZWQNCg0KDQo+ICsJb2N4bHBtZW0g PSBpZHJfZmluZCgmbWlub3JzX2lkciwgbWlub3IpOw0KPiArCWlmIChvY3hscG1lbSkNCj4gKwkJ b2N4bHBtZW1fZ2V0KG9jeGxwbWVtKTsNCj4gKwlyZXR1cm4gb2N4bHBtZW07DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgZmlsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl ICpmaWxlKQ0KPiArew0KPiArCXN0cnVjdCBvY3hscG1lbSAqb2N4bHBtZW07DQo+ICsNCj4gKwlv Y3hscG1lbSA9IGZpbmRfYW5kX2dldF9vY3hscG1lbShpbm9kZS0+aV9yZGV2KTsNCj4gKwlpZiAo IW9jeGxwbWVtKQ0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKw0KPiArCWZpbGUtPnByaXZhdGVf ZGF0YSA9IG9jeGxwbWVtOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 IGZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4g K3sNCj4gKwlzdHJ1Y3Qgb2N4bHBtZW0gKm9jeGxwbWVtID0gZmlsZS0+cHJpdmF0ZV9kYXRhOw0K PiArDQo+ICsJb2N4bHBtZW1fcHV0KG9jeGxwbWVtKTsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wcyA9IHsNCj4gKwku b3duZXIJCT0gVEhJU19NT0RVTEUsDQo+ICsJLm9wZW4JCT0gZmlsZV9vcGVuLA0KPiArCS5yZWxl YXNlCT0gZmlsZV9yZWxlYXNlLA0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBjcmVhdGVfY2Rl digpIC0gQ3JlYXRlIHRoZSBjaGFyZGV2IGluIC9kZXYgZm9yIHRoZSBkZXZpY2UNCj4gKyAqIEBv Y3hscG1lbTogdGhlIFNDTSBtZXRhZGF0YQ0KPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5l Z2F0aXZlIG9uIGZhaWx1cmUNCj4gKyAqLw0KPiArc3RhdGljIGludCBjcmVhdGVfY2RldihzdHJ1 Y3Qgb2N4bHBtZW0gKm9jeGxwbWVtKQ0KPiArew0KPiArCWNkZXZfaW5pdCgmb2N4bHBtZW0tPmNk ZXYsICZmb3BzKTsNCj4gKwlyZXR1cm4gY2Rldl9hZGQoJm9jeGxwbWVtLT5jZGV2LCBvY3hscG1l bS0+ZGV2LmRldnQsIDEpOw0KPiArfQ0KPiArDQo+ICAgLyoqDQo+ICAgICogb2N4bHBtZW1fcmVt b3ZlKCkgLSBGcmVlIGFuIE9wZW5DQVBJIHBlcnNpc3RlbnQgbWVtb3J5IGRldmljZQ0KPiAgICAq IEBwZGV2OiB0aGUgUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3QNCj4gQEAgLTU3Miw2ICs2 NDAsMTEgQEAgc3RhdGljIGludCBwcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3Ry dWN0IHBjaV9kZXZpY2VfaWQgKmVudCkNCj4gICAJCWdvdG8gZXJyOw0KPiAgIAl9DQo+ICAgDQo+ ICsJaWYgKGNyZWF0ZV9jZGV2KG9jeGxwbWVtKSkgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJDb3VsZCBub3QgY3JlYXRlIGNoYXJhY3RlciBkZXZpY2VcbiIpOw0KPiArCQlnb3RvIGVycjsN Cj4gKwl9DQoNCg0KQXMgYWxyZWFkeSBtZW50aW9uZWQgaW4gYSBwcmV2aW91cyBwYXRjaCwgd2Ug YnJhbmNoIHRvIHRoZSBlcnIgbGFiZWwgc28gDQpyYyBuZWVkcyB0byBiZSBzZXQgdG8gYSB2YWxp ZCBlcnJvci4NCg0KDQoNCj4gKw0KPiAgIAllbGFwc2VkID0gMDsNCj4gICAJdGltZW91dCA9IG9j eGxwbWVtLT5yZWFkaW5lc3NfdGltZW91dCArIG9jeGxwbWVtLT5tZW1vcnlfYXZhaWxhYmxlX3Rp bWVvdXQ7DQo+ICAgCXdoaWxlICghaXNfdXNhYmxlKG9jeGxwbWVtLCBmYWxzZSkpIHsNCj4gQEAg LTYxMywyMCArNjg2LDU5IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBwY2lfZHJpdmVyID0g ew0KPiAgIAkuc2h1dGRvd24gPSBvY3hscG1lbV9yZW1vdmUsDQo+ICAgfTsNCj4gICANCj4gK3N0 YXRpYyBpbnQgZmlsZV9pbml0KHZvaWQpDQo+ICt7DQo+ICsJaW50IHJjOw0KPiArDQo+ICsJbXV0 ZXhfaW5pdCgmbWlub3JzX2lkcl9sb2NrKTsNCj4gKwlpZHJfaW5pdCgmbWlub3JzX2lkcik7DQo+ ICsNCj4gKwlyYyA9IGFsbG9jX2NocmRldl9yZWdpb24oJm9jeGxwbWVtX2RldiwgMCwgTlVNX01J Tk9SUywgIm9jeGwtcG1lbSIpOw0KPiArCWlmIChyYykgew0KPiArCQlpZHJfZGVzdHJveSgmbWlu b3JzX2lkcik7DQo+ICsJCXByX2VycigiVW5hYmxlIHRvIGFsbG9jYXRlIE9wZW5DQVBJIHBlcnNp c3RlbnQgbWVtb3J5IG1ham9yIG51bWJlcjogJWRcbiIsIHJjKTsNCj4gKwkJcmV0dXJuIHJjOw0K PiArCX0NCj4gKw0KPiArCW9jeGxwbWVtX2NsYXNzID0gY2xhc3NfY3JlYXRlKFRISVNfTU9EVUxF LCAib2N4bC1wbWVtIik7DQo+ICsJaWYgKElTX0VSUihvY3hscG1lbV9jbGFzcykpIHsNCj4gKwkJ aWRyX2Rlc3Ryb3koJm1pbm9yc19pZHIpOw0KPiArCQlwcl9lcnIoIlVuYWJsZSB0byBjcmVhdGUg b2N4bC1wbWVtIGNsYXNzXG4iKTsNCj4gKwkJdW5yZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKG9jeGxw bWVtX2RldiwgTlVNX01JTk9SUyk7DQo+ICsJCXJldHVybiBQVFJfRVJSKG9jeGxwbWVtX2NsYXNz KTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQg ZmlsZV9leGl0KHZvaWQpDQo+ICt7DQo+ICsJY2xhc3NfZGVzdHJveShvY3hscG1lbV9jbGFzcyk7 DQo+ICsJdW5yZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKG9jeGxwbWVtX2RldiwgTlVNX01JTk9SUyk7 DQo+ICsJaWRyX2Rlc3Ryb3koJm1pbm9yc19pZHIpOw0KPiArfQ0KPiArDQo+ICAgc3RhdGljIGlu dCBfX2luaXQgb2N4bHBtZW1faW5pdCh2b2lkKQ0KPiAgIHsNCj4gLQlpbnQgcmMgPSAwOw0KPiAr CWludCByYzsNCj4gICANCj4gLQlyYyA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoJnBjaV9kcml2ZXIp Ow0KPiArCXJjID0gZmlsZV9pbml0KCk7DQo+ICAgCWlmIChyYykNCj4gICAJCXJldHVybiByYzsN Cj4gICANCj4gKwlyYyA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoJnBjaV9kcml2ZXIpOw0KPiArCWlm IChyYykgew0KPiArCQlmaWxlX2V4aXQoKTsNCj4gKwkJcmV0dXJuIHJjOw0KPiArCX0NCj4gKw0K PiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgb2N4bHBtZW1fZXhp dCh2b2lkKQ0KPiAgIHsNCj4gICAJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZwY2lfZHJpdmVyKTsN Cj4gKwlmaWxlX2V4aXQoKTsNCj4gICB9DQo+ICAgDQo+ICAgbW9kdWxlX2luaXQob2N4bHBtZW1f aW5pdCk7DQo+IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcG1l bS9vY3hsX2ludGVybmFsLmggYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcG1lbS9v Y3hsX2ludGVybmFsLmgNCj4gaW5kZXggMjhlMjAyMGY2MzU1Li5kMmQ4MWZlYzdiYjEgMTAwNjQ0 DQo+IC0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wbWVtL29jeGxfaW50ZXJu YWwuaA0KPiArKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvcG1lbS9vY3hsX2lu dGVybmFsLmgNCj4gQEAgLTIsNiArMiw3IEBADQo+ICAgLy8gQ29weXJpZ2h0IDIwMTkgSUJNIENv cnAuDQo+ICAgDQo+ICAgI2luY2x1ZGUgPGxpbnV4L3BjaS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2NkZXYuaD4NCj4gICAjaW5jbHVkZSA8bWlzYy9vY3hsLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4 L2xpYm52ZGltbS5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9tbS5oPg0KPiBAQCAtOTksNiArMTAw LDcgQEAgc3RydWN0IG9jeGxwbWVtX2Z1bmN0aW9uMCB7DQo+ICAgc3RydWN0IG9jeGxwbWVtIHsN Cj4gICAJc3RydWN0IGRldmljZSBkZXY7DQo+ICAgCXN0cnVjdCBwY2lfZGV2ICpwZGV2Ow0KPiAr CXN0cnVjdCBjZGV2IGNkZXY7DQo+ICAgCXN0cnVjdCBvY3hsX2ZuICpvY3hsX2ZuOw0KPiAgIAlz dHJ1Y3QgbmRfaW50ZXJsZWF2ZV9zZXQgbmRfc2V0Ow0KPiAgIAlzdHJ1Y3QgbnZkaW1tX2J1c19k ZXNjcmlwdG9yIGJ1c19kZXNjOw0KPiANCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkxpbnV4LW52ZGltbSBtYWlsaW5nIGxpc3QgLS0gbGludXgtbnZkaW1t QGxpc3RzLjAxLm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGxpbnV4LW52ZGlt bS1sZWF2ZUBsaXN0cy4wMS5vcmcK