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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 958BAC07E9D for ; Tue, 27 Sep 2022 01:34:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229905AbiI0BeY (ORCPT ); Mon, 26 Sep 2022 21:34:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229559AbiI0BeX (ORCPT ); Mon, 26 Sep 2022 21:34:23 -0400 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6AF7F3938; Mon, 26 Sep 2022 18:34:21 -0700 (PDT) Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28R1E5uf007161; Tue, 27 Sep 2022 01:30:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : subject : from : to : cc : in-reply-to : references : content-type : content-transfer-encoding : date : mime-version; s=pp1; bh=JcG2C5x0wpCUyj/pRqgSlIYpDO+bZze87EtBeaDqBcU=; b=TwzkT4ftpswQFU0SOkpSIDPq/yOhy6AohM1Fgw8zQDz9szhg5i4E8vakpI4TfAGYsK3q C5SpIISTfFZHY/nxlyfw9jDPgox4tThkkiV5bgiK18xOKAUh+qJaJu2wbbiCXf5Hyjzr 3ffEQ/QqYULzuIxzjBrkbhWiSaEjvND2PU745axMuTH2NJdaiZUsqsJ7ujMqt/KYPH5V VeRv233CJx7SkaMPhfIvKXAEzcKTLG2GvmRrZCjCRKIVBLO4Bqr5YXCVN+AiZhnPzZ7y fAioRWgdrKpLXCGt+7DNfYkvhDDmREglz+CFR5ndhFA99Y3HL8Eqvsk+mp7O1DlsBqSQ hA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3juqax8egy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Sep 2022 01:30:53 +0000 Received: from m0098417.ppops.net (m0098417.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 28R1U7jQ011168; Tue, 27 Sep 2022 01:30:53 GMT Received: from ppma01dal.us.ibm.com (83.d6.3fa9.ip4.static.sl-reverse.com [169.63.214.131]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3juqax8egr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Sep 2022 01:30:53 +0000 Received: from pps.filterd (ppma01dal.us.ibm.com [127.0.0.1]) by ppma01dal.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 28R1Kk04012195; Tue, 27 Sep 2022 01:30:52 GMT Received: from b01cxnp23033.gho.pok.ibm.com (b01cxnp23033.gho.pok.ibm.com [9.57.198.28]) by ppma01dal.us.ibm.com with ESMTP id 3jssha5xen-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Sep 2022 01:30:52 +0000 Received: from smtpav04.wdc07v.mail.ibm.com ([9.208.128.116]) by b01cxnp23033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 28R1UoF965143070 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 27 Sep 2022 01:30:50 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CA4D458054; Tue, 27 Sep 2022 01:30:49 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2C5D858056; Tue, 27 Sep 2022 01:30:47 +0000 (GMT) Received: from li-479af74c-31f9-11b2-a85c-e4ddee11713b.ibm.com (unknown [9.160.170.198]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Tue, 27 Sep 2022 01:30:46 +0000 (GMT) Message-ID: Subject: Re: [PATCH 12/14] vfio/mdev: consolidate all the available_instance sysfs into the core code From: Eric Farman To: Christoph Hellwig , Kirti Wankhede , Tony Krowiak , Halil Pasic , Jason Herne , Matthew Rosato , Zhenyu Wang , Zhi Wang , Alex Williamson Cc: Jason Gunthorpe , kvm@vger.kernel.org, linux-s390@vger.kernel.org, intel-gvt-dev@lists.freedesktop.org, Kevin Tian In-Reply-To: <20220923092652.100656-13-hch@lst.de> References: <20220923092652.100656-1-hch@lst.de> <20220923092652.100656-13-hch@lst.de> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Date: Mon, 26 Sep 2022 21:28:49 -0400 MIME-Version: 1.0 User-Agent: Evolution 3.44.4 (3.44.4-1.fc36) X-TM-AS-GCONF: 00 X-Proofpoint-GUID: NJYTaCyg1bRPS7bYGFRuk8h_3B5TYHk1 X-Proofpoint-ORIG-GUID: ZBaKxZjQVMgU40RYR3NdaUICZiiw361L X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-26_11,2022-09-22_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 suspectscore=0 mlxlogscore=999 mlxscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 clxscore=1015 spamscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209270005 Precedence: bulk List-ID: X-Mailing-List: linux-s390@vger.kernel.org T24gRnJpLCAyMDIyLTA5LTIzIGF0IDExOjI2ICswMjAwLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90 ZToKPiBFdmVyeSBkcml2ZXIganVzdCBwcmludCBhIG51bWJlciwgc2ltcGx5IGFkZCBhIG1ldGhv ZCB0byB0aGUKPiBtZGV2X2RyaXZlcgo+IHRvIHJldHVybiBpdCBhbmQgcHJvdmlkZSBhIHN0YW5k YXJkIHN5c2ZzIHNob3cgZnVuY3Rpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhl bGx3aWcgPGhjaEBsc3QuZGU+Cj4gUmV2aWV3ZWQtYnk6IEphc29uIEd1bnRob3JwZSA8amdnQG52 aWRpYS5jb20+Cj4gUmV2aWV3ZWQtYnk6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29t Pgo+IFJldmlld2VkLWJ5OiBLaXJ0aSBXYW5raGVkZSA8a3dhbmtoZWRlQG52aWRpYS5jb20+CgpS ZXZpZXdlZC1ieTogRXJpYyBGYXJtYW4gPGZhcm1hbkBsaW51eC5pYm0uY29tPgoKPiAtLS0KPiDC oC4uLi9kcml2ZXItYXBpL3ZmaW8tbWVkaWF0ZWQtZGV2aWNlLnJzdMKgwqDCoMKgwqDCoCB8wqAg MyArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5owqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoCAxIC0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzNCArKysrKysrKystLS0tLS0KPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NDEgKystLS0tLS0tLS0tLS0tLS0KPiAtLQo+IMKgZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19v cHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNCArKy0tLS0tCj4gwqBkcml2ZXJz L3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNiAr Ky0tLS0tLQo+IMKgZHJpdmVycy92ZmlvL21kZXYvbWRldl9zeXNmcy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgMTEgKysrKysKPiDCoGluY2x1ZGUvbGludXgvbWRldi5owqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIgKwo+IMKg c2FtcGxlcy92ZmlvLW1kZXYvbWJvY2hzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDEwICsrLS0tCj4gwqBzYW1wbGVzL3ZmaW8tbWRldi9tZHB5LmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDkgKystLQo+IMKgc2FtcGxlcy92 ZmlvLW1kZXYvbXR0eS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgMTYgKystLS0tLS0KPiDCoDExIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDEw MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBp L3ZmaW8tbWVkaWF0ZWQtZGV2aWNlLnJzdAo+IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Zm aW8tbWVkaWF0ZWQtZGV2aWNlLnJzdAo+IGluZGV4IGRjZDEyMzFhNmZhODQuLjU1OGJkN2ViY2Vk ODYgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tbWVkaWF0ZWQt ZGV2aWNlLnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLW1lZGlhdGVk LWRldmljZS5yc3QKPiBAQCAtMTAzLDYgKzEwMyw3IEBAIHN0cnVjdHVyZSB0byByZXByZXNlbnQg YSBtZWRpYXRlZCBkZXZpY2Uncwo+IGRyaXZlcjo6Cj4gwqDCoMKgwqDCoCBzdHJ1Y3QgbWRldl9k cml2ZXIgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnTCoCAoKnByb2JlKcKgIChzdHJ1 Y3QgbWRldl9kZXZpY2UgKmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKCpy ZW1vdmUpIChzdHJ1Y3QgbWRldl9kZXZpY2UgKmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdW5zaWduZWQgaW50ICgqZ2V0X2F2YWlsYWJsZSkoc3RydWN0IG1kZXZfdHlwZSAqbXR5cGUp Owo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICogY29u c3QgKnR5cGVzX2F0dHJzOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNl X2RyaXZlcsKgwqDCoCBkcml2ZXI7Cj4gwqDCoMKgwqDCoCB9Owo+IEBAIC0yMDcsNyArMjA4LDcg QEAgRGlyZWN0b3JpZXMgYW5kIGZpbGVzIHVuZGVyIHRoZSBzeXNmcyBmb3IgRWFjaAo+IFBoeXNp Y2FsIERldmljZQo+IMKgCj4gwqAqIGF2YWlsYWJsZV9pbnN0YW5jZXMKPiDCoAo+IC3CoCBUaGlz IGF0dHJpYnV0ZSBzaG91bGQgc2hvdyB0aGUgbnVtYmVyIG9mIGRldmljZXMgb2YgdHlwZSA8dHlw ZS1pZD4KPiB0aGF0IGNhbiBiZQo+ICvCoCBUaGlzIGF0dHJpYnV0ZSBzaG93cyB0aGUgbnVtYmVy IG9mIGRldmljZXMgb2YgdHlwZSA8dHlwZS1pZD4gdGhhdAo+IGNhbiBiZQo+IMKgwqAgY3JlYXRl ZC4KPiDCoAo+IMKgKiBbZGV2aWNlXQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+IGluZGV4IGRi MTgyMDY2ZDU2YzkuLmRiZjhkNzQ3MGIyYzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2d2dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4g QEAgLTMxNCw3ICszMTQsNiBAQCBzdHJ1Y3QgaW50ZWxfdmdwdV90eXBlIHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IG1kZXZfdHlwZSB0eXBlOwo+IMKgwqDCoMKgwqDCoMKgwqBjaGFyIG5hbWVb MTZdOwo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfdmdwdV9jb25maWcgKmNv bmY7Cj4gLcKgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IGF2YWlsX2luc3RhbmNlOwo+IMKgfTsK PiDCoAo+IMKgc3RydWN0IGludGVsX2d2dCB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9rdm1ndC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYwo+ IGluZGV4IDA4ZmU3NDU4YjM2MTAuLmQ4YmUyMWEzOTMxZDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQva3ZtZ3QuYwo+IEBAIC0xMTMsMTYgKzExMyw2IEBAIHN0YXRpYyB2b2lkIGt2bWd0X3BhZ2Vf dHJhY2tfZmx1c2hfc2xvdChzdHJ1Y3QKPiBrdm0gKmt2bSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qga3ZtX3BhZ2VfdHJhY2tfbm90aWZpZXJfbm9kZSAq bm9kZSk7Cj4gwqAKPiAtc3RhdGljIHNzaXplX3QgYXZhaWxhYmxlX2luc3RhbmNlc19zaG93KHN0 cnVjdCBtZGV2X3R5cGUgKm10eXBlLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRl dl90eXBlX2F0dHJpYnV0ZQo+ICphdHRyLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpi dWYpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfdmdwdV90eXBlICp0eXBlID0K PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGFpbmVyX29mKG10eXBlLCBzdHJ1 Y3QgaW50ZWxfdmdwdV90eXBlLCB0eXBlKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIHNw cmludGYoYnVmLCAiJXVcbiIsIHR5cGUtPmF2YWlsX2luc3RhbmNlKTsKPiAtfQo+IC0KPiDCoHN0 YXRpYyBzc2l6ZV90IGRlc2NyaXB0aW9uX3Nob3coc3RydWN0IG1kZXZfdHlwZSAqbXR5cGUsCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBtZGV2X3R5cGVfYXR0cmlidXRlICphdHRyLAo+IGNoYXIgKmJ1ZikKPiDC oHsKPiBAQCAtMTM4LDExICsxMjgsOSBAQCBzdGF0aWMgc3NpemVfdCBkZXNjcmlwdGlvbl9zaG93 KHN0cnVjdCBtZGV2X3R5cGUKPiAqbXR5cGUsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdHlwZS0+Y29uZi0+d2VpZ2h0KTsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgTURFVl9UWVBFX0FUVFJfUk8oYXZhaWxhYmxlX2luc3RhbmNlcyk7Cj4gwqBzdGF0aWMgTURF Vl9UWVBFX0FUVFJfUk8oZGVzY3JpcHRpb24pOwo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZSAqZ3Z0X3R5cGVfYXR0cnNbXSA9IHsKPiAtwqDCoMKgwqDCoMKgwqAmbWRldl90 eXBlX2F0dHJfYXZhaWxhYmxlX2luc3RhbmNlcy5hdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqAmbWRl dl90eXBlX2F0dHJfZGVzY3JpcHRpb24uYXR0ciwKPiDCoMKgwqDCoMKgwqDCoMKgTlVMTCwKPiDC oH07Cj4gQEAgLTE1MzIsNiArMTUyMCwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF92Z3B1X3JlbW92 ZShzdHJ1Y3QKPiBtZGV2X2RldmljZSAqbWRldikKPiDCoMKgwqDCoMKgwqDCoMKgdmZpb19wdXRf ZGV2aWNlKCZ2Z3B1LT52ZmlvX2RldmljZSk7Cj4gwqB9Cj4gwqAKPiArc3RhdGljIHVuc2lnbmVk IGludCBpbnRlbF92Z3B1X2dldF9hdmFpbGFibGUoc3RydWN0IG1kZXZfdHlwZQo+ICptdHlwZSkK PiArewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF92Z3B1X3R5cGUgKnR5cGUgPQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250YWluZXJfb2YobXR5cGUsIHN0cnVjdCBp bnRlbF92Z3B1X3R5cGUsIHR5cGUpOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9ndnQg Kmd2dCA9IGtkZXZfdG9faTkxNShtdHlwZS0+cGFyZW50LT5kZXYpLQo+ID5ndnQ7Cj4gK8KgwqDC oMKgwqDCoMKgdW5zaWduZWQgaW50IGxvd19nbV9hdmFpbCwgaGlnaF9nbV9hdmFpbCwgZmVuY2Vf YXZhaWw7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmd2dC0+bG9jayk7Cj4gK8Kg wqDCoMKgwqDCoMKgbG93X2dtX2F2YWlsID0gZ3Z0X2FwZXJ0dXJlX3N6KGd2dCkgLSBIT1NUX0xP V19HTV9TSVpFIC0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3Z0LT5nbS52Z3B1 X2FsbG9jYXRlZF9sb3dfZ21fc2l6ZTsKPiArwqDCoMKgwqDCoMKgwqBoaWdoX2dtX2F2YWlsID0g Z3Z0X2hpZGRlbl9zeihndnQpIC0gSE9TVF9ISUdIX0dNX1NJWkUgLQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBndnQtPmdtLnZncHVfYWxsb2NhdGVkX2hpZ2hfZ21fc2l6ZTsKPiAr wqDCoMKgwqDCoMKgwqBmZW5jZV9hdmFpbCA9IGd2dF9mZW5jZV9zeihndnQpIC0gSE9TVF9GRU5D RSAtCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGd2dC0+ZmVuY2UudmdwdV9hbGxv Y2F0ZWRfZmVuY2VfbnVtOwo+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZ3Z0LT5sb2Nr KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIG1pbjMobG93X2dtX2F2YWlsIC8gdHlwZS0+ Y29uZi0+bG93X21tLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGln aF9nbV9hdmFpbCAvIHR5cGUtPmNvbmYtPmhpZ2hfbW0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBmZW5jZV9hdmFpbCAvIHR5cGUtPmNvbmYtPmZlbmNlKTsKPiArfQo+ ICsKPiDCoHN0YXRpYyBzdHJ1Y3QgbWRldl9kcml2ZXIgaW50ZWxfdmdwdV9tZGV2X2RyaXZlciA9 IHsKPiDCoMKgwqDCoMKgwqDCoMKgLmRldmljZV9hcGnCoMKgwqDCoMKgPSBWRklPX0RFVklDRV9B UElfUENJX1NUUklORywKPiDCoMKgwqDCoMKgwqDCoMKgLmRyaXZlciA9IHsKPiBAQCAtMTU0MSw2 ICsxNTUwLDcgQEAgc3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlcgo+IGludGVsX3ZncHVfbWRldl9k cml2ZXIgPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoH0sCj4gwqDCoMKgwqDCoMKgwqDCoC5wcm9iZcKg wqDCoMKgwqDCoMKgwqDCoMKgPSBpbnRlbF92Z3B1X3Byb2JlLAo+IMKgwqDCoMKgwqDCoMKgwqAu cmVtb3ZlwqDCoMKgwqDCoMKgwqDCoMKgPSBpbnRlbF92Z3B1X3JlbW92ZSwKPiArwqDCoMKgwqDC oMKgwqAuZ2V0X2F2YWlsYWJsZcKgwqA9IGludGVsX3ZncHVfZ2V0X2F2YWlsYWJsZSwKPiDCoMKg wqDCoMKgwqDCoMKgLnR5cGVzX2F0dHJzwqDCoMKgwqA9IGd2dF90eXBlX2F0dHJzLAo+IMKgfTsK PiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jCj4gaW5kZXggOGZhMDZkMDBmZDRiOS4uMTQ4 YmY1ZDZjNGZkNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYwo+IEBAIC0xMjksMTEgKzEy OSwxMSBAQCBpbnQgaW50ZWxfZ3Z0X2luaXRfdmdwdV90eXBlcyhzdHJ1Y3QgaW50ZWxfZ3Z0Cj4g Kmd2dCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwcmludGYoZ3Z0LT50eXBl c1tpXS5uYW1lLCAiR1ZUZ19WJXVfJXMiLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoEdSQVBISUNTX1ZFUihndnQtPmd0LT5pOTE1KSA9PSA4ID8gNCA6 IDUsCj4gY29uZi0+bmFtZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBndnQt PnR5cGVzLT5jb25mID0gY29uZjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3Z0 LT50eXBlc1tpXS5hdmFpbF9pbnN0YW5jZSA9IG1pbihsb3dfYXZhaWwgLyBjb25mLQo+ID5sb3df bW0sCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhpZ2hfYXZh aWwgLyBjb25mLQo+ID5oaWdoX21tKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZ3Z0X2RiZ19jb3JlKCJ0eXBlWyVkXTogJXMgYXZhaWwgJXUgbG93ICV1IGhpZ2ggJXUK PiBmZW5jZSAldSB3ZWlnaHQgJXUgcmVzICVzXG4iLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSwgZ3Z0LT50eXBlc1tpXS5uYW1lLCBn dnQtCj4gPnR5cGVzW2ldLmF2YWlsX2luc3RhbmNlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSwgZ3Z0LT50eXBlc1tpXS5uYW1lLAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bWluKGxvd19hdmFpbCAvIGNvbmYtPmxvd19tbSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlnaF9hdmFpbCAvIGNvbmYt PmhpZ2hfbW0pLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbmYtPmxvd19tbSwgY29uZi0+aGlnaF9tbSwgY29uZi0KPiA+ZmVuY2Us Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY29uZi0+d2VpZ2h0LCB2Z3B1X2VkaWRfc3RyKGNvbmYtCj4gPmVkaWQpKTsKPiDCoAo+IEBA IC0xNTcsMzYgKzE1Nyw2IEBAIHZvaWQgaW50ZWxfZ3Z0X2NsZWFuX3ZncHVfdHlwZXMoc3RydWN0 IGludGVsX2d2dAo+ICpndnQpCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGd2dC0+dHlwZXMpOwo+ IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIGludGVsX2d2dF91cGRhdGVfdmdwdV90eXBlcyhzdHJ1 Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiAtwqDCoMKg wqDCoMKgwqB1bnNpZ25lZCBpbnQgbG93X2dtX2F2YWlsLCBoaWdoX2dtX2F2YWlsLCBmZW5jZV9h dmFpbDsKPiAtwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgbG93X2dtX21pbiwgaGlnaF9nbV9t aW4sIGZlbmNlX21pbjsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgLyogTmVlZCB0byBkZXBlbmQgb24g bWF4aXVtIGh3IHJlc291cmNlIHNpemUgYnV0IGtlZXAgb24KPiAtwqDCoMKgwqDCoMKgwqAgKiBz dGF0aWMgY29uZmlnIGZvciBub3cuCj4gLcKgwqDCoMKgwqDCoMKgICovCj4gLcKgwqDCoMKgwqDC oMKgbG93X2dtX2F2YWlsID0gZ3Z0X2FwZXJ0dXJlX3N6KGd2dCkgLSBIT1NUX0xPV19HTV9TSVpF IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3Z0LT5nbS52Z3B1X2FsbG9jYXRl ZF9sb3dfZ21fc2l6ZTsKPiAtwqDCoMKgwqDCoMKgwqBoaWdoX2dtX2F2YWlsID0gZ3Z0X2hpZGRl bl9zeihndnQpIC0gSE9TVF9ISUdIX0dNX1NJWkUgLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBndnQtPmdtLnZncHVfYWxsb2NhdGVkX2hpZ2hfZ21fc2l6ZTsKPiAtwqDCoMKgwqDC oMKgwqBmZW5jZV9hdmFpbCA9IGd2dF9mZW5jZV9zeihndnQpIC0gSE9TVF9GRU5DRSAtCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGd2dC0+ZmVuY2UudmdwdV9hbGxvY2F0ZWRfZmVu Y2VfbnVtOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgZ3Z0LT5udW1fdHlw ZXM7IGkrKykgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb3dfZ21fbWluID0g bG93X2dtX2F2YWlsIC8gZ3Z0LT50eXBlc1tpXS5jb25mLQo+ID5sb3dfbW07Cj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhpZ2hfZ21fbWluID0gaGlnaF9nbV9hdmFpbCAvIGd2dC0+ dHlwZXNbaV0uY29uZi0KPiA+aGlnaF9tbTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZmVuY2VfbWluID0gZmVuY2VfYXZhaWwgLyBndnQtPnR5cGVzW2ldLmNvbmYtPmZlbmNlOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBndnQtPnR5cGVzW2ldLmF2YWlsX2luc3Rh bmNlID0gbWluKG1pbihsb3dfZ21fbWluLAo+IGhpZ2hfZ21fbWluKSwKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmVuY2VfbWluKTsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGd2dF9kYmdfY29yZSgidXBkYXRlIHR5cGVbJWRdOiAlcyBh dmFpbCAldSBsb3cgJXUKPiBoaWdoICV1IGZlbmNlICV1XG4iLAo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSwgZ3Z0LT50eXBlc1tpXS5uYW1lLAo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3Z0LT50eXBlc1tpXS5hdmFp bF9pbnN0YW5jZSwgZ3Z0LQo+ID50eXBlc1tpXS5jb25mLT5sb3dfbW0sCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBndnQtPnR5cGVzW2ldLmNvbmYtPmhpZ2hf bW0sIGd2dC0KPiA+dHlwZXNbaV0uY29uZi0+ZmVuY2UpOwo+IC3CoMKgwqDCoMKgwqDCoH0KPiAt fQo+IC0KPiDCoC8qKgo+IMKgICogaW50ZWxfZ3Z0X2FjdGl2ZV92Z3B1IC0gYWN0aXZhdGUgYSB2 aXJ0dWFsIEdQVQo+IMKgICogQHZncHU6IHZpcnR1YWwgR1BVCj4gQEAgLTI4MSwxMCArMjUxLDYg QEAgdm9pZCBpbnRlbF9ndnRfZGVzdHJveV92Z3B1KHN0cnVjdCBpbnRlbF92Z3B1Cj4gKnZncHUp Cj4gwqDCoMKgwqDCoMKgwqDCoGludGVsX3ZncHVfY2xlYW5fbW1pbyh2Z3B1KTsKPiDCoMKgwqDC oMKgwqDCoMKgaW50ZWxfdmdwdV9kbWFidWZfY2xlYW51cCh2Z3B1KTsKPiDCoMKgwqDCoMKgwqDC oMKgbXV0ZXhfdW5sb2NrKCZ2Z3B1LT52Z3B1X2xvY2spOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBt dXRleF9sb2NrKCZndnQtPmxvY2spOwo+IC3CoMKgwqDCoMKgwqDCoGludGVsX2d2dF91cGRhdGVf dmdwdV90eXBlcyhndnQpOwo+IC3CoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZ3Z0LT5sb2Nr KTsKPiDCoH0KPiDCoAo+IMKgI2RlZmluZSBJRExFX1ZHUFVfSURSIDAKPiBAQCAtNDE0LDcgKzM4 MCw2IEBAIGludCBpbnRlbF9ndnRfY3JlYXRlX3ZncHUoc3RydWN0IGludGVsX3ZncHUKPiAqdmdw dSwKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGdvdG8gb3V0X2NsZWFuX3NjaGVkX3BvbGljeTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDC oGludGVsX2d2dF91cGRhdGVfdmdwdV90eXBlcyhndnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnRl bF9ndnRfdXBkYXRlX3JlZ193aGl0ZWxpc3QodmdwdSk7Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4 X3VubG9jaygmZ3Z0LT5sb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMKPiBiL2RyaXZlcnMvczM5MC9j aW8vdmZpb19jY3dfb3BzLmMKPiBpbmRleCAzOTRhYWI2MGRiZDBhLi41NTljYTE4MDU1OTI4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMKPiArKysgYi9kcml2 ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jCj4gQEAgLTQ0LDIwICs0NCwxMiBAQCBzdGF0aWMg dm9pZCB2ZmlvX2Njd19kbWFfdW5tYXAoc3RydWN0IHZmaW9fZGV2aWNlCj4gKnZkZXYsIHU2NCBp b3ZhLCB1NjQgbGVuZ3RoKQo+IMKgwqDCoMKgwqDCoMKgwqB2ZmlvX2Njd19tZGV2X3Jlc2V0KHBy aXZhdGUpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBzc2l6ZV90IGF2YWlsYWJsZV9pbnN0YW5jZXNf c2hvdyhzdHJ1Y3QgbWRldl90eXBlICptdHlwZSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IG1kZXZfdHlwZV9hdHRyaWJ1dGUKPiAqYXR0ciwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2hhciAqYnVmKQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHZmaW9fY2N3X2dldF9hdmFpbGFibGUo c3RydWN0IG1kZXZfdHlwZSAqbXR5cGUpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2 ZmlvX2Njd19wcml2YXRlICpwcml2YXRlID0gZGV2X2dldF9kcnZkYXRhKG10eXBlLQo+ID5wYXJl bnQtPmRldik7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgYXRvbWljX3JlYWQoJnByaXZhdGUtPmF2YWlsKSk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IGF0b21pY19yZWFkKCZwcml2YXRlLT5hdmFpbCk7Cj4gwqB9Cj4gLXN0YXRpYyBNREVWX1RZUEVf QVRUUl9STyhhdmFpbGFibGVfaW5zdGFuY2VzKTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg YXR0cmlidXRlICptZGV2X3R5cGVzX2F0dHJzW10gPSB7Cj4gLcKgwqDCoMKgwqDCoMKgJm1kZXZf dHlwZV9hdHRyX2F2YWlsYWJsZV9pbnN0YW5jZXMuYXR0ciwKPiAtwqDCoMKgwqDCoMKgwqBOVUxM LAo+IC19Owo+IMKgCj4gwqBzdGF0aWMgaW50IHZmaW9fY2N3X21kZXZfaW5pdF9kZXYoc3RydWN0 IHZmaW9fZGV2aWNlICp2ZGV2KQo+IMKgewo+IEBAIC02MjAsNSArNjEyLDUgQEAgc3RydWN0IG1k ZXZfZHJpdmVyIHZmaW9fY2N3X21kZXZfZHJpdmVyID0gewo+IMKgwqDCoMKgwqDCoMKgwqB9LAo+ IMKgwqDCoMKgwqDCoMKgwqAucHJvYmUgPSB2ZmlvX2Njd19tZGV2X3Byb2JlLAo+IMKgwqDCoMKg wqDCoMKgwqAucmVtb3ZlID0gdmZpb19jY3dfbWRldl9yZW1vdmUsCj4gLcKgwqDCoMKgwqDCoMKg LnR5cGVzX2F0dHJzID0gbWRldl90eXBlc19hdHRycywKPiArwqDCoMKgwqDCoMKgwqAuZ2V0X2F2 YWlsYWJsZSA9IHZmaW9fY2N3X2dldF9hdmFpbGFibGUsCj4gwqB9Owo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMKPiBiL2RyaXZlcnMvczM5MC9jcnlwdG8v dmZpb19hcF9vcHMuYwo+IGluZGV4IDVkOGRkN2U4MzdmM2QuLjg2MDZmNWQ3NTE4OGMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jCj4gKysrIGIvZHJpdmVy cy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jCj4gQEAgLTc5MCwyMSArNzkwLDExIEBAIHN0YXRp YyB2b2lkIHZmaW9fYXBfbWRldl9yZW1vdmUoc3RydWN0Cj4gbWRldl9kZXZpY2UgKm1kZXYpCj4g wqDCoMKgwqDCoMKgwqDCoHZmaW9fcHV0X2RldmljZSgmbWF0cml4X21kZXYtPnZkZXYpOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBzc2l6ZV90IGF2YWlsYWJsZV9pbnN0YW5jZXNfc2hvdyhzdHJ1Y3Qg bWRldl90eXBlICptdHlwZSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfdHlw ZV9hdHRyaWJ1dGUKPiAqYXR0ciwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqYnVmKQo+ ICtzdGF0aWMgdW5zaWduZWQgaW50IHZmaW9fYXBfbWRldl9nZXRfYXZhaWxhYmxlKHN0cnVjdCBt ZGV2X3R5cGUKPiAqbXR5cGUpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIHNwcmludGYo YnVmLCAiJWRcbiIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhdG9taWNfcmVhZCgmbWF0cml4X2Rldi0KPiA+YXZhaWxhYmxlX2luc3RhbmNlcykpOwo+ICvC oMKgwqDCoMKgwqDCoHJldHVybiBhdG9taWNfcmVhZCgmbWF0cml4X2Rldi0+YXZhaWxhYmxlX2lu c3RhbmNlcyk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIE1ERVZfVFlQRV9BVFRSX1JPKGF2YWlsYWJs ZV9pbnN0YW5jZXMpOwo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKnZmaW9f YXBfbWRldl90eXBlX2F0dHJzW10gPSB7Cj4gLcKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRy X2F2YWlsYWJsZV9pbnN0YW5jZXMuYXR0ciwKPiAtwqDCoMKgwqDCoMKgwqBOVUxMLAo+IC19Owo+ IC0KPiDCoCNkZWZpbmUgTURFVl9TSEFSSU5HX0VSUiAiVXNlcnNwYWNlIG1heSBub3QgcmUtYXNz aWduIHF1ZXVlCj4gJTAybHguJTA0bHggIiBcCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICJhbHJlYWR5IGFzc2lnbmVkIHRvICVzIgo+IMKgCj4gQEAg LTE3OTAsNyArMTc4MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWRldl9kcml2ZXIgdmZpb19hcF9tYXRy aXhfZHJpdmVyCj4gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoH0sCj4gwqDCoMKgwqDCoMKgwqDCoC5w cm9iZSA9IHZmaW9fYXBfbWRldl9wcm9iZSwKPiDCoMKgwqDCoMKgwqDCoMKgLnJlbW92ZSA9IHZm aW9fYXBfbWRldl9yZW1vdmUsCj4gLcKgwqDCoMKgwqDCoMKgLnR5cGVzX2F0dHJzID0gdmZpb19h cF9tZGV2X3R5cGVfYXR0cnMsCj4gK8KgwqDCoMKgwqDCoMKgLmdldF9hdmFpbGFibGUgPSB2Zmlv X2FwX21kZXZfZ2V0X2F2YWlsYWJsZSwKPiDCoH07Cj4gwqAKPiDCoGludCB2ZmlvX2FwX21kZXZf cmVnaXN0ZXIodm9pZCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL21kZXYvbWRldl9zeXNm cy5jCj4gYi9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3N5c2ZzLmMKPiBpbmRleCAzNDU4M2U2YTk3 ZjI3Li5iN2Y4N2MzZWRhNWVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZf c3lzZnMuYwo+ICsrKyBiL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfc3lzZnMuYwo+IEBAIC05MCwx MCArOTAsMjEgQEAgc3RhdGljIHNzaXplX3QgbmFtZV9zaG93KHN0cnVjdCBtZGV2X3R5cGUgKm10 eXBlLAo+IMKgCj4gwqBzdGF0aWMgTURFVl9UWVBFX0FUVFJfUk8obmFtZSk7Cj4gwqAKPiArc3Rh dGljIHNzaXplX3QgYXZhaWxhYmxlX2luc3RhbmNlc19zaG93KHN0cnVjdCBtZGV2X3R5cGUgKm10 eXBlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl90eXBlX2F0dHJpYnV0ZQo+ ICphdHRyLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpidWYpCj4gK3sKPiArwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgbWRldl9kcml2ZXIgKmRydiA9IG10eXBlLT5wYXJlbnQtPm1kZXZfZHJp dmVyOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gc3lzZnNfZW1pdChidWYsICIldVxuIiwg ZHJ2LT5nZXRfYXZhaWxhYmxlKG10eXBlKSk7Cj4gK30KPiArc3RhdGljIE1ERVZfVFlQRV9BVFRS X1JPKGF2YWlsYWJsZV9pbnN0YW5jZXMpOwo+ICsKPiDCoHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl ICptZGV2X3R5cGVzX2NvcmVfYXR0cnNbXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlw ZV9hdHRyX2NyZWF0ZS5hdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2F0dHJfZGV2 aWNlX2FwaS5hdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2F0dHJfbmFtZS5hdHRy LAo+ICvCoMKgwqDCoMKgwqDCoCZtZGV2X3R5cGVfYXR0cl9hdmFpbGFibGVfaW5zdGFuY2VzLmF0 dHIsCj4gwqDCoMKgwqDCoMKgwqDCoE5VTEwsCj4gwqB9Owo+IMKgCj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvbWRldi5oIGIvaW5jbHVkZS9saW51eC9tZGV2LmgKPiBpbmRleCA0YmI4YTU4 YjU3N2IzLi5kMzllMDhhMTgyNGM2IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvbWRldi5o Cj4gKysrIGIvaW5jbHVkZS9saW51eC9tZGV2LmgKPiBAQCAtNzIsNiArNzIsNyBAQCBzdHJ1Y3Qg bWRldl90eXBlX2F0dHJpYnV0ZSB7Cj4gwqAgKiBAZGV2aWNlX2FwaTogc3RyaW5nIHRvIHJldHVy biBmb3IgdGhlIGRldmljZV9hcGkgc3lzZnMKPiDCoCAqIEBwcm9iZTogY2FsbGVkIHdoZW4gbmV3 IGRldmljZSBjcmVhdGVkCj4gwqAgKiBAcmVtb3ZlOiBjYWxsZWQgd2hlbiBkZXZpY2UgcmVtb3Zl ZAo+ICsgKiBAZ2V0X2F2YWlsYWJsZTogUmV0dXJuIHRoZSBtYXggbnVtYmVyIG9mIGluc3RhbmNl cyB0aGF0IGNhbiBiZQo+IGNyZWF0ZWQKPiDCoCAqIEB0eXBlc19hdHRyczogYXR0cmlidXRlcyB0 byB0aGUgdHlwZSBrb2JqZWN0cy4KPiDCoCAqIEBkcml2ZXI6IGRldmljZSBkcml2ZXIgc3RydWN0 dXJlCj4gwqAgKiovCj4gQEAgLTc5LDYgKzgwLDcgQEAgc3RydWN0IG1kZXZfZHJpdmVyIHsKPiDC oMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqZGV2aWNlX2FwaTsKPiDCoMKgwqDCoMKgwqDCoMKg aW50ICgqcHJvYmUpKHN0cnVjdCBtZGV2X2RldmljZSAqZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKg dm9pZCAoKnJlbW92ZSkoc3RydWN0IG1kZXZfZGV2aWNlICpkZXYpOwo+ICvCoMKgwqDCoMKgwqDC oHVuc2lnbmVkIGludCAoKmdldF9hdmFpbGFibGUpKHN0cnVjdCBtZGV2X3R5cGUgKm10eXBlKTsK PiDCoMKgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0ICp0eXBlc19h dHRyczsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyOwo+IMKg fTsKPiBkaWZmIC0tZ2l0IGEvc2FtcGxlcy92ZmlvLW1kZXYvbWJvY2hzLmMgYi9zYW1wbGVzL3Zm aW8tbWRldi9tYm9jaHMuYwo+IGluZGV4IDBiNzU4NWYxNmQ4YWIuLjZjMmNiYzRlMjVjYTkgMTAw NjQ0Cj4gLS0tIGEvc2FtcGxlcy92ZmlvLW1kZXYvbWJvY2hzLmMKPiArKysgYi9zYW1wbGVzL3Zm aW8tbWRldi9tYm9jaHMuYwo+IEBAIC0xMzYxLDIxICsxMzYxLDE2IEBAIHN0YXRpYyBzc2l6ZV90 IGRlc2NyaXB0aW9uX3Nob3coc3RydWN0Cj4gbWRldl90eXBlICptdHlwZSwKPiDCoH0KPiDCoHN0 YXRpYyBNREVWX1RZUEVfQVRUUl9STyhkZXNjcmlwdGlvbik7Cj4gwqAKPiAtc3RhdGljIHNzaXpl X3QgYXZhaWxhYmxlX2luc3RhbmNlc19zaG93KHN0cnVjdCBtZGV2X3R5cGUgKm10eXBlLAo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl90eXBlX2F0dHJpYnV0ZQo+ICphdHRyLAo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpidWYpCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQg bWJvY2hzX2dldF9hdmFpbGFibGUoc3RydWN0IG1kZXZfdHlwZSAqbXR5cGUpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBtYm9jaHNfdHlwZSAqdHlwZSA9Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjb250YWluZXJfb2YobXR5cGUsIHN0cnVjdCBtYm9jaHNfdHlwZSwg dHlwZSk7Cj4gLcKgwqDCoMKgwqDCoMKgaW50IGNvdW50ID0gYXRvbWljX3JlYWQoJm1ib2Noc19h dmFpbF9tYnl0ZXMpIC8gdHlwZS0+bWJ5dGVzOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IHNwcmludGYoYnVmLCAiJWRcbiIsIGNvdW50KTsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gYXRv bWljX3JlYWQoJm1ib2Noc19hdmFpbF9tYnl0ZXMpIC8gdHlwZS0+bWJ5dGVzOwo+IMKgfQo+IC1z dGF0aWMgTURFVl9UWVBFX0FUVFJfUk8oYXZhaWxhYmxlX2luc3RhbmNlcyk7Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICptZGV2X3R5cGVzX2F0dHJzW10gPSB7Cj4gwqDC oMKgwqDCoMKgwqDCoCZtZGV2X3R5cGVfYXR0cl9kZXNjcmlwdGlvbi5hdHRyLAo+IC3CoMKgwqDC oMKgwqDCoCZtZGV2X3R5cGVfYXR0cl9hdmFpbGFibGVfaW5zdGFuY2VzLmF0dHIsCj4gwqDCoMKg wqDCoMKgwqDCoE5VTEwsCj4gwqB9Owo+IMKgCj4gQEAgLTEzOTksNiArMTM5NCw3IEBAIHN0YXRp YyBzdHJ1Y3QgbWRldl9kcml2ZXIgbWJvY2hzX2RyaXZlciA9IHsKPiDCoMKgwqDCoMKgwqDCoMKg fSwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlID0gbWJvY2hzX3Byb2JlLAo+IMKgwqDCoMKgwqDC oMKgwqAucmVtb3ZlwqA9IG1ib2Noc19yZW1vdmUsCj4gK8KgwqDCoMKgwqDCoMKgLmdldF9hdmFp bGFibGUgPSBtYm9jaHNfZ2V0X2F2YWlsYWJsZSwKPiDCoMKgwqDCoMKgwqDCoMKgLnR5cGVzX2F0 dHJzID0gbWRldl90eXBlc19hdHRycywKPiDCoH07Cj4gwqAKPiBkaWZmIC0tZ2l0IGEvc2FtcGxl cy92ZmlvLW1kZXYvbWRweS5jIGIvc2FtcGxlcy92ZmlvLW1kZXYvbWRweS5jCj4gaW5kZXggOTBj NmZlZDIwMGIxOS4uZDFjODM1YzljYWJmMiAxMDA2NDQKPiAtLS0gYS9zYW1wbGVzL3ZmaW8tbWRl di9tZHB5LmMKPiArKysgYi9zYW1wbGVzL3ZmaW8tbWRldi9tZHB5LmMKPiBAQCAtNjcxLDE3ICs2 NzEsMTMgQEAgc3RhdGljIHNzaXplX3QgZGVzY3JpcHRpb25fc2hvdyhzdHJ1Y3QKPiBtZGV2X3R5 cGUgKm10eXBlLAo+IMKgfQo+IMKgc3RhdGljIE1ERVZfVFlQRV9BVFRSX1JPKGRlc2NyaXB0aW9u KTsKPiDCoAo+IC1zdGF0aWMgc3NpemVfdCBhdmFpbGFibGVfaW5zdGFuY2VzX3Nob3coc3RydWN0 IG1kZXZfdHlwZSAqbXR5cGUsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2X3R5 cGVfYXR0cmlidXRlCj4gKmF0dHIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKmJ1ZikK PiArc3RhdGljIHVuc2lnbmVkIGludCBtZHB5X2dldF9hdmFpbGFibGUoc3RydWN0IG1kZXZfdHlw ZSAqbXR5cGUpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc biIsIG1heF9kZXZpY2VzIC0gbWRweV9jb3VudCk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIG1h eF9kZXZpY2VzIC0gbWRweV9jb3VudDsKPiDCoH0KPiAtc3RhdGljIE1ERVZfVFlQRV9BVFRSX1JP KGF2YWlsYWJsZV9pbnN0YW5jZXMpOwo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJp YnV0ZSAqbWRldl90eXBlc19hdHRyc1tdID0gewo+IMKgwqDCoMKgwqDCoMKgwqAmbWRldl90eXBl X2F0dHJfZGVzY3JpcHRpb24uYXR0ciwKPiAtwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2F0dHJf YXZhaWxhYmxlX2luc3RhbmNlcy5hdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqBOVUxMLAo+IMKgfTsK PiDCoAo+IEBAIC03MDQsNiArNzAwLDcgQEAgc3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciBtZHB5 X2RyaXZlciA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgfSwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2Jl ID0gbWRweV9wcm9iZSwKPiDCoMKgwqDCoMKgwqDCoMKgLnJlbW92ZcKgPSBtZHB5X3JlbW92ZSwK PiArwqDCoMKgwqDCoMKgwqAuZ2V0X2F2YWlsYWJsZSA9IG1kcHlfZ2V0X2F2YWlsYWJsZSwKPiDC oMKgwqDCoMKgwqDCoMKgLnR5cGVzX2F0dHJzID0gbWRldl90eXBlc19hdHRycywKPiDCoH07Cj4g wqAKPiBkaWZmIC0tZ2l0IGEvc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jIGIvc2FtcGxlcy92Zmlv LW1kZXYvbXR0eS5jCj4gaW5kZXggZWFiMWI0NDQyYTk2ZS4uZTcyMDg1ZmMxMzc2MyAxMDA2NDQK PiAtLS0gYS9zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMKPiArKysgYi9zYW1wbGVzL3ZmaW8tbWRl di9tdHR5LmMKPiBAQCAtMTI1NiwyMyArMTI1NiwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cAo+ICptZGV2X2Rldl9ncm91cHNbXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKg TlVMTCwKPiDCoH07Cj4gwqAKPiAtc3RhdGljIHNzaXplX3QgYXZhaWxhYmxlX2luc3RhbmNlc19z aG93KHN0cnVjdCBtZGV2X3R5cGUgKm10eXBlLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgbWRldl90eXBlX2F0dHJpYnV0ZQo+ICphdHRyLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj aGFyICpidWYpCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbXR0eV9nZXRfYXZhaWxhYmxlKHN0cnVj dCBtZGV2X3R5cGUgKm10eXBlKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbXR0eV90 eXBlICp0eXBlID0gY29udGFpbmVyX29mKG10eXBlLCBzdHJ1Y3QKPiBtdHR5X3R5cGUsIHR5cGUp Owo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGF0b21p Y19yZWFkKCZtZGV2X2F2YWlsX3BvcnRzKSAvCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB0eXBlLT5ucl9wb3J0cyk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0 dXJuIGF0b21pY19yZWFkKCZtZGV2X2F2YWlsX3BvcnRzKSAvIHR5cGUtPm5yX3BvcnRzOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBNREVWX1RZUEVfQVRUUl9STyhhdmFpbGFibGVfaW5zdGFuY2VzKTsK PiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICptZGV2X3R5cGVzX2F0dHJzW10g PSB7Cj4gLcKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2F2YWlsYWJsZV9pbnN0YW5jZXMu YXR0ciwKPiAtwqDCoMKgwqDCoMKgwqBOVUxMLAo+IC19Owo+IC0KPiDCoHN0YXRpYyBjb25zdCBz dHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG10dHlfZGV2X29wcyA9IHsKPiDCoMKgwqDCoMKgwqDCoMKg Lm5hbWUgPSAidmZpby1tdHR5IiwKPiDCoMKgwqDCoMKgwqDCoMKgLmluaXQgPSBtdHR5X2luaXRf ZGV2LAo+IEBAIC0xMjkyLDcgKzEyODIsNyBAQCBzdGF0aWMgc3RydWN0IG1kZXZfZHJpdmVyIG10 dHlfZHJpdmVyID0gewo+IMKgwqDCoMKgwqDCoMKgwqB9LAo+IMKgwqDCoMKgwqDCoMKgwqAucHJv YmUgPSBtdHR5X3Byb2JlLAo+IMKgwqDCoMKgwqDCoMKgwqAucmVtb3ZlwqA9IG10dHlfcmVtb3Zl LAo+IC3CoMKgwqDCoMKgwqDCoC50eXBlc19hdHRycyA9IG1kZXZfdHlwZXNfYXR0cnMsCj4gK8Kg wqDCoMKgwqDCoMKgLmdldF9hdmFpbGFibGUgPSBtdHR5X2dldF9hdmFpbGFibGUsCj4gwqB9Owo+ IMKgCj4gwqBzdGF0aWMgdm9pZCBtdHR5X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRl dikKCg==