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=-16.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,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 5EDC1C433DB for ; Thu, 4 Feb 2021 03:40:15 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 0E16F64E33 for ; Thu, 4 Feb 2021 03:40:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0E16F64E33 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=hisilicon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=greDG8mwat8jESu+vOFhq2tI3okp6yg4VUufdD+aTD8=; b=Fvcl21MbWUCy0jXuIoHpqqOQ1 4sCTW6zO4SbfW4Q3KMV7q82tygSPPj9XBOfowS910DHBV5IY1Y9B4aFmZtB4+YAhj+kbW6ukJHVZa 3nuBEFxK4PxUObTe0WnB5NJK9aaP7xlOPnwdsw6Q3HiOb80S74rK4x9hYiIcXePgUE/Uq/WBjiywy /KpDBlOW3z8TCsAHJup/JWWirYEhGMlnGIk6E4E3IDk6IEmFPzB7FBfMhTTnG5sD3Bw2YkQMIO79K LIcCw958ABv8hS/Quuja71DjmKIoFwxVnIbNf4Gn4CckYN3MRdU29hkV1pn3aVX/WkFoMjdk6m7Rs zXJP4k12A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l7VTu-0007hL-LS; Thu, 04 Feb 2021 03:38:58 +0000 Received: from szxga06-in.huawei.com ([45.249.212.32]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l7VTq-0007gV-NM for linux-arm-kernel@lists.infradead.org; Thu, 04 Feb 2021 03:38:56 +0000 Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4DWPPy0rQLzjFRl; Thu, 4 Feb 2021 11:37:42 +0800 (CST) Received: from [10.67.77.175] (10.67.77.175) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.498.0; Thu, 4 Feb 2021 11:38:38 +0800 Subject: Re: [PATCH v2 1/8] drivers/perf: hisi: Refactor code for more uncore PMUs To: Mark Rutland References: <1612338668-40493-1-git-send-email-zhangshaokun@hisilicon.com> <1612338668-40493-2-git-send-email-zhangshaokun@hisilicon.com> <20210203125307.GG55896@C02TD0UTHF1T.local> From: Shaokun Zhang Message-ID: <59a16ac4-5ab9-b77e-3264-9ebaa330bc12@hisilicon.com> Date: Thu, 4 Feb 2021 11:38:38 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 MIME-Version: 1.0 In-Reply-To: <20210203125307.GG55896@C02TD0UTHF1T.local> X-Originating-IP: [10.67.77.175] X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210203_223855_286267_088535C7 X-CRM114-Status: GOOD ( 27.20 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Qi Liu , John Garry , Will Deacon , linux-arm-kernel@lists.infradead.org, Jonathan Cameron Content-Type: text/plain; charset="gbk" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWFyaywKCtTaIDIwMjEvMi8zIDIwOjUzLCBNYXJrIFJ1dGxhbmQg0LS1wDoKPiBPbiBXZWQs IEZlYiAwMywgMjAyMSBhdCAwMzo1MTowMVBNICswODAwLCBTaGFva3VuIFpoYW5nIHdyb3RlOgo+ PiBPbiBIaVNpbGljb24gdW5jb3JlIFBNVSBkcml2ZXJzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgZnVu Y3Rpb24gYW5kIGludGVycnVwdAo+PiByZWdpc3RyYXRpb24gZnVuY3Rpb24gYXJlIHZlcnkgc2lt aWxhciBpbiBkaWZmZXJlbnRzIFBNVSBtb2R1bGVzLiBMZXQncwo+PiByZWZhY3RvciB0aGUgZnJh bWUsIHVzZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgSFcgYWNjZXNzb3JzLgo+IAo+IEl0 IHdvdWxkIGJlIGhlbHBmdWwgaWYgdGhlIGNvbW1pdCBtZXNzYWdlIGNvdWxkIGJyaWVmbHkgZWxh Ym9yYXRlIG9uCj4gdGhlIHJlZmFjdG9yaW5nLCBlLmcuCj4gCj4gSXQgd291bGQgYmUgaGVscGZ1 bCBpZiB0aGUgY29tbWl0IG1lc3NhZ2UgY291bGQgYnJpZWZseSBleHBsYWluIHRoZQo+IHJlZmFj dG9yaW5nLCBlLmcuCgpBZ3JlZSwKCj4gCj4gfCBUd28gbmV3IGNhbGxiYWNrcyBhcmUgYWRkZWQ6 Cj4gfAo+IHwgKiBoaXNpX3VuY29yZV9vcHM6OmdldF9pbnRfc3RhdHVzIHJldHVybnMgYSBiaXRt YXAgb2YgZXZlbnRzIHdoaWNoCj4gfCAgIGhhdmUgb3ZlcmZsb3dlZCBhbmQgcmFpc2VkIGFuIGlu dGVycnVwdAo+IHwKPiB8ICogaGlzaV91bmNvcmVfb3BzOjpjbGVhcl9pbnRfc3RhdHVzIGNsZWFy cyB0aGUgb3ZlcmZsb3cgc3RhdHVzIGZvciBhCj4gfCAgIHNwZWNpZmljIGV2ZW50Cj4gfAo+IHwg Li4uIGFuZCBhcmUgdXNlZCBieSBhIGNvbW1vbiBJUlEgaGFuZGxlciwgaGlzaV91bmNvcmVfcG11 X2lzcigpLgo+IAoKT2ssIEkgd2lsbCB1cGRhdGUgdGhlc2UgaW4gbmV4dCB2ZXJzaW9uLAoKPiBU aGUgcmVmYWN0b3JpbmcgaXRzZWxmIGxvb2tzIGdvb2QgdG8gbWUuCgpUaGFua3MsCgo+IAo+IEkg YWxzbyBzZWUgdGhhdCBzYW5pdHktY2hlY2tzIGFyZSByZW1vdmVkIGZyb20gdGhlIHJlYWRfY291 bnRlcigpIGFuZAo+IHdyaXRlX2NvdW50ZXIoKSBmdW5jdGlvbnMsIGJ1dCB0aGUgY29tbWl0IG1l c3NhZ2UgZG9lc24ndCBtZW50aW9uIHRoYXQKPiBhdCBhbGwuIEl0IGxvb2tzIGxpa2UgdGhhdCBz aG91bGQgYmUgYSBzZXBhcmF0ZSBjaGFuZ2UuCgpPaCwgSSB3aWxsIGRvIG9uZSBzZXBhcmF0ZSBw YXRjaCBiZWZvcmUgdGhpcyByZWZhY3RvciBjb2RlLCB0aGUgbGF0ZXIKbmV3IGRyaXZlcnMgbmVl ZCB0aGlzLgoKQ2hlZXJzLApTaGFva3VuCgo+IAo+IFRoYW5rcywKPiBNYXJrLgo+IAo+Pgo+PiBD YzogTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KPj4gQ2M6IFdpbGwgRGVhY29u IDx3aWxsQGtlcm5lbC5vcmc+Cj4+IENjOiBKb2huIEdhcnJ5IDxqb2huLmdhcnJ5QGh1YXdlaS5j b20+Cj4+IENjOiBKb25hdGhhbiBDYW1lcm9uIDxKb25hdGhhbi5DYW1lcm9uQGh1YXdlaS5jb20+ Cj4+IFJldmlld2VkLWJ5OiBKb2huIEdhcnJ5IDxqb2huLmdhcnJ5QGh1YXdlaS5jb20+Cj4+IENv LWRldmVsb3BlZC1ieTogUWkgTGl1IDxsaXVxaTExNUBodWF3ZWkuY29tPgo+PiBTaWduZWQtb2Zm LWJ5OiBRaSBMaXUgPGxpdXFpMTE1QGh1YXdlaS5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFNoYW9r dW4gWmhhbmcgPHpoYW5nc2hhb2t1bkBoaXNpbGljb24uY29tPgo+PiAtLS0KPj4gIGRyaXZlcnMv cGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVfZGRyY19wbXUuYyB8IDc5ICsrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+PiAgZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29yZV9oaGFf cG11LmMgIHwgNzcgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvcGVyZi9o aXNpbGljb24vaGlzaV91bmNvcmVfbDNjX3BtdS5jICB8IDc3ICsrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4+ICBkcml2ZXJzL3BlcmYvaGlzaWxpY29uL2hpc2lfdW5jb3JlX3BtdS5jICAgICAg fCA2OCArKysrKysrKysrKysrKysrKysrKysrLQo+PiAgZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9o aXNpX3VuY29yZV9wbXUuaCAgICAgIHwgIDYgKy0KPj4gIDUgZmlsZXMgY2hhbmdlZCwgMTAwIGlu c2VydGlvbnMoKyksIDIwNyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVfZGRyY19wbXUuYyBiL2RyaXZlcnMvcGVyZi9oaXNp bGljb24vaGlzaV91bmNvcmVfZGRyY19wbXUuYwo+PiBpbmRleCBhYzFhOGMxMjBhMDAuLjdmNzgy N2NkNTRkNyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29y ZV9kZHJjX3BtdS5jCj4+ICsrKyBiL2RyaXZlcnMvcGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVf ZGRyY19wbXUuYwo+PiBAQCAtMTQsNyArMTQsNiBAQAo+PiAgI2luY2x1ZGUgPGxpbnV4L2ludGVy cnVwdC5oPgo+PiAgI2luY2x1ZGUgPGxpbnV4L2lycS5oPgo+PiAgI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4gICNpbmNsdWRl IDxsaW51eC9zbXAuaD4KPj4gIAo+PiAgI2luY2x1ZGUgImhpc2lfdW5jb3JlX3BtdS5oIgo+PiBA QCAtNjUsMjkgKzY0LDE1IEBAIHN0YXRpYyB1MzIgaGlzaV9kZHJjX3BtdV9nZXRfY291bnRlcl9v ZmZzZXQoaW50IGNudHJfaWR4KQo+PiAgc3RhdGljIHU2NCBoaXNpX2RkcmNfcG11X3JlYWRfY291 bnRlcihzdHJ1Y3QgaGlzaV9wbXUgKmRkcmNfcG11LAo+PiAgCQkJCSAgICAgIHN0cnVjdCBod19w ZXJmX2V2ZW50ICpod2MpCj4+ICB7Cj4+IC0JLyogVXNlIGV2ZW50IGNvZGUgYXMgY291bnRlciBp bmRleCAqLwo+PiAtCXUzMiBpZHggPSBHRVRfRERSQ19FVkVOVElEKGh3Yyk7Cj4+IC0KPj4gLQlp ZiAoIWhpc2lfdW5jb3JlX3BtdV9jb3VudGVyX3ZhbGlkKGRkcmNfcG11LCBpZHgpKSB7Cj4+IC0J CWRldl9lcnIoZGRyY19wbXUtPmRldiwgIlVuc3VwcG9ydGVkIGV2ZW50IGluZGV4OiVkIVxuIiwg aWR4KTsKPj4gLQkJcmV0dXJuIDA7Cj4+IC0JfQo+PiAtCj4+IC0JcmV0dXJuIHJlYWRsKGRkcmNf cG11LT5iYXNlICsgaGlzaV9kZHJjX3BtdV9nZXRfY291bnRlcl9vZmZzZXQoaWR4KSk7Cj4+ICsJ cmV0dXJuIHJlYWRsKGRkcmNfcG11LT5iYXNlICsKPj4gKwkJICAgICBoaXNpX2RkcmNfcG11X2dl dF9jb3VudGVyX29mZnNldChod2MtPmlkeCkpOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBo aXNpX2RkcmNfcG11X3dyaXRlX2NvdW50ZXIoc3RydWN0IGhpc2lfcG11ICpkZHJjX3BtdSwKPj4g IAkJCQkJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YywgdTY0IHZhbCkKPj4gIHsKPj4gLQl1MzIg aWR4ID0gR0VUX0REUkNfRVZFTlRJRChod2MpOwo+PiAtCj4+IC0JaWYgKCFoaXNpX3VuY29yZV9w bXVfY291bnRlcl92YWxpZChkZHJjX3BtdSwgaWR4KSkgewo+PiAtCQlkZXZfZXJyKGRkcmNfcG11 LT5kZXYsICJVbnN1cHBvcnRlZCBldmVudCBpbmRleDolZCFcbiIsIGlkeCk7Cj4+IC0JCXJldHVy bjsKPj4gLQl9Cj4+IC0KPj4gIAl3cml0ZWwoKHUzMil2YWwsCj4+IC0JICAgICAgIGRkcmNfcG11 LT5iYXNlICsgaGlzaV9kZHJjX3BtdV9nZXRfY291bnRlcl9vZmZzZXQoaWR4KSk7Cj4+ICsJICAg ICAgIGRkcmNfcG11LT5iYXNlICsgaGlzaV9kZHJjX3BtdV9nZXRfY291bnRlcl9vZmZzZXQoaHdj LT5pZHgpKTsKPj4gIH0KPj4gIAo+PiAgLyoKPj4gQEAgLTE3OSw2MCArMTY0LDE0IEBAIHN0YXRp YyB2b2lkIGhpc2lfZGRyY19wbXVfZGlzYWJsZV9jb3VudGVyX2ludChzdHJ1Y3QgaGlzaV9wbXUg KmRkcmNfcG11LAo+PiAgCXdyaXRlbCh2YWwsIGRkcmNfcG11LT5iYXNlICsgRERSQ19JTlRfTUFT Syk7Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyBpcnFyZXR1cm5fdCBoaXNpX2RkcmNfcG11X2lzcihp bnQgaXJxLCB2b2lkICpkZXZfaWQpCj4+ICtzdGF0aWMgdTMyIGhpc2lfZGRyY19wbXVfZ2V0X2lu dF9zdGF0dXMoc3RydWN0IGhpc2lfcG11ICpkZHJjX3BtdSkKPj4gIHsKPj4gLQlzdHJ1Y3QgaGlz aV9wbXUgKmRkcmNfcG11ID0gZGV2X2lkOwo+PiAtCXN0cnVjdCBwZXJmX2V2ZW50ICpldmVudDsK Pj4gLQl1bnNpZ25lZCBsb25nIG92ZXJmbG93bjsKPj4gLQlpbnQgaWR4Owo+PiAtCj4+IC0JLyog UmVhZCB0aGUgRERSQ19JTlRfU1RBVFVTIHJlZ2lzdGVyICovCj4+IC0Jb3ZlcmZsb3duID0gcmVh ZGwoZGRyY19wbXUtPmJhc2UgKyBERFJDX0lOVF9TVEFUVVMpOwo+PiAtCWlmICghb3ZlcmZsb3du KQo+PiAtCQlyZXR1cm4gSVJRX05PTkU7Cj4+IC0KPj4gLQkvKgo+PiAtCSAqIEZpbmQgdGhlIGNv dW50ZXIgaW5kZXggd2hpY2ggb3ZlcmZsb3dlZCBpZiB0aGUgYml0IHdhcyBzZXQKPj4gLQkgKiBh bmQgaGFuZGxlIGl0Cj4+IC0JICovCj4+IC0JZm9yX2VhY2hfc2V0X2JpdChpZHgsICZvdmVyZmxv d24sIEREUkNfTlJfQ09VTlRFUlMpIHsKPj4gLQkJLyogV3JpdGUgMSB0byBjbGVhciB0aGUgSVJR IHN0YXR1cyBmbGFnICovCj4+IC0JCXdyaXRlbCgoMSA8PCBpZHgpLCBkZHJjX3BtdS0+YmFzZSAr IEREUkNfSU5UX0NMRUFSKTsKPj4gLQo+PiAtCQkvKiBHZXQgdGhlIGNvcnJlc3BvbmRpbmcgZXZl bnQgc3RydWN0ICovCj4+IC0JCWV2ZW50ID0gZGRyY19wbXUtPnBtdV9ldmVudHMuaHdfZXZlbnRz W2lkeF07Cj4+IC0JCWlmICghZXZlbnQpCj4+IC0JCQljb250aW51ZTsKPj4gLQo+PiAtCQloaXNp X3VuY29yZV9wbXVfZXZlbnRfdXBkYXRlKGV2ZW50KTsKPj4gLQkJaGlzaV91bmNvcmVfcG11X3Nl dF9ldmVudF9wZXJpb2QoZXZlbnQpOwo+PiAtCX0KPj4gLQo+PiAtCXJldHVybiBJUlFfSEFORExF RDsKPj4gKwlyZXR1cm4gcmVhZGwoZGRyY19wbXUtPmJhc2UgKyBERFJDX0lOVF9TVEFUVVMpOwo+ PiAgfQo+PiAgCj4+IC1zdGF0aWMgaW50IGhpc2lfZGRyY19wbXVfaW5pdF9pcnEoc3RydWN0IGhp c2lfcG11ICpkZHJjX3BtdSwKPj4gLQkJCQkgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4+ICtzdGF0aWMgdm9pZCBoaXNpX2RkcmNfcG11X2NsZWFyX2ludF9zdGF0dXMoc3RydWN0IGhp c2lfcG11ICpkZHJjX3BtdSwgaW50IGlkeCkKPj4gIHsKPj4gLQlpbnQgaXJxLCByZXQ7Cj4+IC0K Pj4gLQkvKiBSZWFkIGFuZCBpbml0IElSUSAqLwo+PiAtCWlycSA9IHBsYXRmb3JtX2dldF9pcnEo cGRldiwgMCk7Cj4+IC0JaWYgKGlycSA8IDApCj4+IC0JCXJldHVybiBpcnE7Cj4+IC0KPj4gLQly ZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGlycSwgaGlzaV9kZHJjX3BtdV9pc3Is Cj4+IC0JCQkgICAgICAgSVJRRl9OT0JBTEFOQ0lORyB8IElSUUZfTk9fVEhSRUFELAo+PiAtCQkJ ICAgICAgIGRldl9uYW1lKCZwZGV2LT5kZXYpLCBkZHJjX3BtdSk7Cj4+IC0JaWYgKHJldCA8IDAp IHsKPj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LAo+PiAtCQkJIkZhaWwgdG8gcmVxdWVzdCBJUlE6 JWQgcmV0OiVkXG4iLCBpcnEsIHJldCk7Cj4+IC0JCXJldHVybiByZXQ7Cj4+IC0JfQo+PiAtCj4+ IC0JZGRyY19wbXUtPmlycSA9IGlycTsKPj4gLQo+PiAtCXJldHVybiAwOwo+PiArCXdyaXRlbCgx IDw8IGlkeCwgZGRyY19wbXUtPmJhc2UgKyBERFJDX0lOVF9DTEVBUik7Cj4+ICB9Cj4+ICAKPj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgaGlzaV9kZHJjX3BtdV9hY3BpX21h dGNoW10gPSB7Cj4+IEBAIC0zNDIsNiArMjgxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBoaXNp X3VuY29yZV9vcHMgaGlzaV91bmNvcmVfZGRyY19vcHMgPSB7Cj4+ICAJLmRpc2FibGVfY291bnRl cl9pbnQJPSBoaXNpX2RkcmNfcG11X2Rpc2FibGVfY291bnRlcl9pbnQsCj4+ICAJLndyaXRlX2Nv dW50ZXIJCT0gaGlzaV9kZHJjX3BtdV93cml0ZV9jb3VudGVyLAo+PiAgCS5yZWFkX2NvdW50ZXIJ CT0gaGlzaV9kZHJjX3BtdV9yZWFkX2NvdW50ZXIsCj4+ICsJLmdldF9pbnRfc3RhdHVzCQk9IGhp c2lfZGRyY19wbXVfZ2V0X2ludF9zdGF0dXMsCj4+ICsJLmNsZWFyX2ludF9zdGF0dXMJPSBoaXNp X2RkcmNfcG11X2NsZWFyX2ludF9zdGF0dXMsCj4+ICB9Owo+PiAgCj4+ICBzdGF0aWMgaW50IGhp c2lfZGRyY19wbXVfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+IEBA IC0zNTMsNyArMjk0LDcgQEAgc3RhdGljIGludCBoaXNpX2RkcmNfcG11X2Rldl9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+PiAgCWlmIChyZXQpCj4+ICAJCXJldHVybiByZXQ7 Cj4+ICAKPj4gLQlyZXQgPSBoaXNpX2RkcmNfcG11X2luaXRfaXJxKGRkcmNfcG11LCBwZGV2KTsK Pj4gKwlyZXQgPSBoaXNpX3VuY29yZV9wbXVfaW5pdF9pcnEoZGRyY19wbXUsIHBkZXYpOwo+PiAg CWlmIChyZXQpCj4+ICAJCXJldHVybiByZXQ7Cj4+ICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVfaGhhX3BtdS5jIGIvZHJpdmVycy9wZXJmL2hpc2ls aWNvbi9oaXNpX3VuY29yZV9oaGFfcG11LmMKPj4gaW5kZXggMzQwMmYxYTM5NWE4Li42NjdlZWJk ZGNjODIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvcGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVf aGhhX3BtdS5jCj4+ICsrKyBiL2RyaXZlcnMvcGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVfaGhh X3BtdS5jCj4+IEBAIC0xNCw3ICsxNCw2IEBACj4+ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvaXJxLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvbGlzdC5o Pgo+PiAtI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+PiAgI2luY2x1ZGUgPGxp bnV4L3NtcC5oPgo+PiAgCj4+ICAjaW5jbHVkZSAiaGlzaV91bmNvcmVfcG11LmgiCj4+IEBAIC01 MSwyOSArNTAsMTUgQEAgc3RhdGljIHUzMiBoaXNpX2hoYV9wbXVfZ2V0X2NvdW50ZXJfb2Zmc2V0 KGludCBjbnRyX2lkeCkKPj4gIHN0YXRpYyB1NjQgaGlzaV9oaGFfcG11X3JlYWRfY291bnRlcihz dHJ1Y3QgaGlzaV9wbXUgKmhoYV9wbXUsCj4+ICAJCQkJICAgICBzdHJ1Y3QgaHdfcGVyZl9ldmVu dCAqaHdjKQo+PiAgewo+PiAtCXUzMiBpZHggPSBod2MtPmlkeDsKPj4gLQo+PiAtCWlmICghaGlz aV91bmNvcmVfcG11X2NvdW50ZXJfdmFsaWQoaGhhX3BtdSwgaWR4KSkgewo+PiAtCQlkZXZfZXJy KGhoYV9wbXUtPmRldiwgIlVuc3VwcG9ydGVkIGV2ZW50IGluZGV4OiVkIVxuIiwgaWR4KTsKPj4g LQkJcmV0dXJuIDA7Cj4+IC0JfQo+PiAtCj4+ICAJLyogUmVhZCA2NCBiaXRzIGFuZCBsaWtlIEwz QywgdG9wIDE2IGJpdHMgYXJlIFJBWiAqLwo+PiAtCXJldHVybiByZWFkcShoaGFfcG11LT5iYXNl ICsgaGlzaV9oaGFfcG11X2dldF9jb3VudGVyX29mZnNldChpZHgpKTsKPj4gKwlyZXR1cm4gcmVh ZHEoaGhhX3BtdS0+YmFzZSArIGhpc2lfaGhhX3BtdV9nZXRfY291bnRlcl9vZmZzZXQoaHdjLT5p ZHgpKTsKPj4gIH0KPj4gIAo+PiAgc3RhdGljIHZvaWQgaGlzaV9oaGFfcG11X3dyaXRlX2NvdW50 ZXIoc3RydWN0IGhpc2lfcG11ICpoaGFfcG11LAo+PiAgCQkJCSAgICAgICBzdHJ1Y3QgaHdfcGVy Zl9ldmVudCAqaHdjLCB1NjQgdmFsKQo+PiAgewo+PiAtCXUzMiBpZHggPSBod2MtPmlkeDsKPj4g LQo+PiAtCWlmICghaGlzaV91bmNvcmVfcG11X2NvdW50ZXJfdmFsaWQoaGhhX3BtdSwgaWR4KSkg ewo+PiAtCQlkZXZfZXJyKGhoYV9wbXUtPmRldiwgIlVuc3VwcG9ydGVkIGV2ZW50IGluZGV4OiVk IVxuIiwgaWR4KTsKPj4gLQkJcmV0dXJuOwo+PiAtCX0KPj4gLQo+PiAgCS8qIFdyaXRlIDY0IGJp dHMgYW5kIGxpa2UgTDNDLCB0b3AgMTYgYml0cyBhcmUgV0kgKi8KPj4gLQl3cml0ZXEodmFsLCBo aGFfcG11LT5iYXNlICsgaGlzaV9oaGFfcG11X2dldF9jb3VudGVyX29mZnNldChpZHgpKTsKPj4g Kwl3cml0ZXEodmFsLCBoaGFfcG11LT5iYXNlICsgaGlzaV9oaGFfcG11X2dldF9jb3VudGVyX29m ZnNldChod2MtPmlkeCkpOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBoaXNpX2hoYV9wbXVf d3JpdGVfZXZ0eXBlKHN0cnVjdCBoaXNpX3BtdSAqaGhhX3BtdSwgaW50IGlkeCwKPj4gQEAgLTE2 OSw2MCArMTU0LDE0IEBAIHN0YXRpYyB2b2lkIGhpc2lfaGhhX3BtdV9kaXNhYmxlX2NvdW50ZXJf aW50KHN0cnVjdCBoaXNpX3BtdSAqaGhhX3BtdSwKPj4gIAl3cml0ZWwodmFsLCBoaGFfcG11LT5i YXNlICsgSEhBX0lOVF9NQVNLKTsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIGlycXJldHVybl90IGhp c2lfaGhhX3BtdV9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+PiArc3RhdGljIHUzMiBoaXNp X2hoYV9wbXVfZ2V0X2ludF9zdGF0dXMoc3RydWN0IGhpc2lfcG11ICpoaGFfcG11KQo+PiAgewo+ PiAtCXN0cnVjdCBoaXNpX3BtdSAqaGhhX3BtdSA9IGRldl9pZDsKPj4gLQlzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQ7Cj4+IC0JdW5zaWduZWQgbG9uZyBvdmVyZmxvd247Cj4+IC0JaW50IGlkeDsK Pj4gLQo+PiAtCS8qIFJlYWQgSEhBX0lOVF9TVEFUVVMgcmVnaXN0ZXIgKi8KPj4gLQlvdmVyZmxv d24gPSByZWFkbChoaGFfcG11LT5iYXNlICsgSEhBX0lOVF9TVEFUVVMpOwo+PiAtCWlmICghb3Zl cmZsb3duKQo+PiAtCQlyZXR1cm4gSVJRX05PTkU7Cj4+IC0KPj4gLQkvKgo+PiAtCSAqIEZpbmQg dGhlIGNvdW50ZXIgaW5kZXggd2hpY2ggb3ZlcmZsb3dlZCBpZiB0aGUgYml0IHdhcyBzZXQKPj4g LQkgKiBhbmQgaGFuZGxlIGl0Cj4+IC0JICovCj4+IC0JZm9yX2VhY2hfc2V0X2JpdChpZHgsICZv dmVyZmxvd24sIEhIQV9OUl9DT1VOVEVSUykgewo+PiAtCQkvKiBXcml0ZSAxIHRvIGNsZWFyIHRo ZSBJUlEgc3RhdHVzIGZsYWcgKi8KPj4gLQkJd3JpdGVsKCgxIDw8IGlkeCksIGhoYV9wbXUtPmJh c2UgKyBISEFfSU5UX0NMRUFSKTsKPj4gLQo+PiAtCQkvKiBHZXQgdGhlIGNvcnJlc3BvbmRpbmcg ZXZlbnQgc3RydWN0ICovCj4+IC0JCWV2ZW50ID0gaGhhX3BtdS0+cG11X2V2ZW50cy5od19ldmVu dHNbaWR4XTsKPj4gLQkJaWYgKCFldmVudCkKPj4gLQkJCWNvbnRpbnVlOwo+PiAtCj4+IC0JCWhp c2lfdW5jb3JlX3BtdV9ldmVudF91cGRhdGUoZXZlbnQpOwo+PiAtCQloaXNpX3VuY29yZV9wbXVf c2V0X2V2ZW50X3BlcmlvZChldmVudCk7Cj4+IC0JfQo+PiAtCj4+IC0JcmV0dXJuIElSUV9IQU5E TEVEOwo+PiArCXJldHVybiByZWFkbChoaGFfcG11LT5iYXNlICsgSEhBX0lOVF9TVEFUVVMpOwo+ PiAgfQo+PiAgCj4+IC1zdGF0aWMgaW50IGhpc2lfaGhhX3BtdV9pbml0X2lycShzdHJ1Y3QgaGlz aV9wbXUgKmhoYV9wbXUsCj4+IC0JCQkJIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ ICtzdGF0aWMgdm9pZCBoaXNpX2hoYV9wbXVfY2xlYXJfaW50X3N0YXR1cyhzdHJ1Y3QgaGlzaV9w bXUgKmhoYV9wbXUsIGludCBpZHgpCj4+ICB7Cj4+IC0JaW50IGlycSwgcmV0Owo+PiAtCj4+IC0J LyogUmVhZCBhbmQgaW5pdCBJUlEgKi8KPj4gLQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYs IDApOwo+PiAtCWlmIChpcnEgPCAwKQo+PiAtCQlyZXR1cm4gaXJxOwo+PiAtCj4+IC0JcmV0ID0g ZGV2bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBpcnEsIGhpc2lfaGhhX3BtdV9pc3IsCj4+IC0J CQkgICAgICBJUlFGX05PQkFMQU5DSU5HIHwgSVJRRl9OT19USFJFQUQsCj4+IC0JCQkgICAgICBk ZXZfbmFtZSgmcGRldi0+ZGV2KSwgaGhhX3BtdSk7Cj4+IC0JaWYgKHJldCA8IDApIHsKPj4gLQkJ ZGV2X2VycigmcGRldi0+ZGV2LAo+PiAtCQkJIkZhaWwgdG8gcmVxdWVzdCBJUlE6JWQgcmV0OiVk XG4iLCBpcnEsIHJldCk7Cj4+IC0JCXJldHVybiByZXQ7Cj4+IC0JfQo+PiAtCj4+IC0JaGhhX3Bt dS0+aXJxID0gaXJxOwo+PiAtCj4+IC0JcmV0dXJuIDA7Cj4+ICsJd3JpdGVsKDEgPDwgaWR4LCBo aGFfcG11LT5iYXNlICsgSEhBX0lOVF9DTEVBUik7Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgaGlzaV9oaGFfcG11X2FjcGlfbWF0Y2hbXSA9IHsKPj4g QEAgLTM1NCw2ICsyOTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGhpc2lfdW5jb3JlX29wcyBo aXNpX3VuY29yZV9oaGFfb3BzID0gewo+PiAgCS5kaXNhYmxlX2NvdW50ZXJfaW50CT0gaGlzaV9o aGFfcG11X2Rpc2FibGVfY291bnRlcl9pbnQsCj4+ICAJLndyaXRlX2NvdW50ZXIJCT0gaGlzaV9o aGFfcG11X3dyaXRlX2NvdW50ZXIsCj4+ICAJLnJlYWRfY291bnRlcgkJPSBoaXNpX2hoYV9wbXVf cmVhZF9jb3VudGVyLAo+PiArCS5nZXRfaW50X3N0YXR1cwkJPSBoaXNpX2hoYV9wbXVfZ2V0X2lu dF9zdGF0dXMsCj4+ICsJLmNsZWFyX2ludF9zdGF0dXMJPSBoaXNpX2hoYV9wbXVfY2xlYXJfaW50 X3N0YXR1cywKPj4gIH07Cj4+ICAKPj4gIHN0YXRpYyBpbnQgaGlzaV9oaGFfcG11X2Rldl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+PiBAQCAtMzY1LDcgKzMwNiw3IEBAIHN0 YXRpYyBpbnQgaGlzaV9oaGFfcG11X2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2LAo+PiAgCWlmIChyZXQpCj4+ICAJCXJldHVybiByZXQ7Cj4+ICAKPj4gLQlyZXQgPSBoaXNp X2hoYV9wbXVfaW5pdF9pcnEoaGhhX3BtdSwgcGRldik7Cj4+ICsJcmV0ID0gaGlzaV91bmNvcmVf cG11X2luaXRfaXJxKGhoYV9wbXUsIHBkZXYpOwo+PiAgCWlmIChyZXQpCj4+ICAJCXJldHVybiBy ZXQ7Cj4+ICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGVyZi9oaXNpbGljb24vaGlzaV91bmNv cmVfbDNjX3BtdS5jIGIvZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29yZV9sM2NfcG11 LmMKPj4gaW5kZXggN2Q3OTI0MzVjMmFhLi44MzE2MjJlMGM0NDUgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvcGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVfbDNjX3BtdS5jCj4+ICsrKyBiL2RyaXZl cnMvcGVyZi9oaXNpbGljb24vaGlzaV91bmNvcmVfbDNjX3BtdS5jCj4+IEBAIC0xNCw3ICsxNCw2 IEBACj4+ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+ICAjaW5jbHVkZSA8bGludXgv aXJxLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+PiAtI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgo+PiAgI2luY2x1ZGUgPGxpbnV4L3NtcC5oPgo+PiAgCj4+ICAjaW5j bHVkZSAiaGlzaV91bmNvcmVfcG11LmgiCj4+IEBAIC01MCwyOSArNDksMTUgQEAgc3RhdGljIHUz MiBoaXNpX2wzY19wbXVfZ2V0X2NvdW50ZXJfb2Zmc2V0KGludCBjbnRyX2lkeCkKPj4gIHN0YXRp YyB1NjQgaGlzaV9sM2NfcG11X3JlYWRfY291bnRlcihzdHJ1Y3QgaGlzaV9wbXUgKmwzY19wbXUs Cj4+ICAJCQkJICAgICBzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjKQo+PiAgewo+PiAtCXUzMiBp ZHggPSBod2MtPmlkeDsKPj4gLQo+PiAtCWlmICghaGlzaV91bmNvcmVfcG11X2NvdW50ZXJfdmFs aWQobDNjX3BtdSwgaWR4KSkgewo+PiAtCQlkZXZfZXJyKGwzY19wbXUtPmRldiwgIlVuc3VwcG9y dGVkIGV2ZW50IGluZGV4OiVkIVxuIiwgaWR4KTsKPj4gLQkJcmV0dXJuIDA7Cj4+IC0JfQo+PiAt Cj4+ICAJLyogUmVhZCA2NC1iaXRzIGFuZCB0aGUgdXBwZXIgMTYgYml0cyBhcmUgUkFaICovCj4+ IC0JcmV0dXJuIHJlYWRxKGwzY19wbXUtPmJhc2UgKyBoaXNpX2wzY19wbXVfZ2V0X2NvdW50ZXJf b2Zmc2V0KGlkeCkpOwo+PiArCXJldHVybiByZWFkcShsM2NfcG11LT5iYXNlICsgaGlzaV9sM2Nf cG11X2dldF9jb3VudGVyX29mZnNldChod2MtPmlkeCkpOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMg dm9pZCBoaXNpX2wzY19wbXVfd3JpdGVfY291bnRlcihzdHJ1Y3QgaGlzaV9wbXUgKmwzY19wbXUs Cj4+ICAJCQkJICAgICAgIHN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MsIHU2NCB2YWwpCj4+ICB7 Cj4+IC0JdTMyIGlkeCA9IGh3Yy0+aWR4Owo+PiAtCj4+IC0JaWYgKCFoaXNpX3VuY29yZV9wbXVf Y291bnRlcl92YWxpZChsM2NfcG11LCBpZHgpKSB7Cj4+IC0JCWRldl9lcnIobDNjX3BtdS0+ZGV2 LCAiVW5zdXBwb3J0ZWQgZXZlbnQgaW5kZXg6JWQhXG4iLCBpZHgpOwo+PiAtCQlyZXR1cm47Cj4+ IC0JfQo+PiAtCj4+ICAJLyogV3JpdGUgNjQtYml0cyBhbmQgdGhlIHVwcGVyIDE2IGJpdHMgYXJl IFdJICovCj4+IC0Jd3JpdGVxKHZhbCwgbDNjX3BtdS0+YmFzZSArIGhpc2lfbDNjX3BtdV9nZXRf Y291bnRlcl9vZmZzZXQoaWR4KSk7Cj4+ICsJd3JpdGVxKHZhbCwgbDNjX3BtdS0+YmFzZSArIGhp c2lfbDNjX3BtdV9nZXRfY291bnRlcl9vZmZzZXQoaHdjLT5pZHgpKTsKPj4gIH0KPj4gIAo+PiAg c3RhdGljIHZvaWQgaGlzaV9sM2NfcG11X3dyaXRlX2V2dHlwZShzdHJ1Y3QgaGlzaV9wbXUgKmwz Y19wbXUsIGludCBpZHgsCj4+IEBAIC0xNjgsNjAgKzE1MywxNCBAQCBzdGF0aWMgdm9pZCBoaXNp X2wzY19wbXVfZGlzYWJsZV9jb3VudGVyX2ludChzdHJ1Y3QgaGlzaV9wbXUgKmwzY19wbXUsCj4+ ICAJd3JpdGVsKHZhbCwgbDNjX3BtdS0+YmFzZSArIEwzQ19JTlRfTUFTSyk7Cj4+ICB9Cj4+ICAK Pj4gLXN0YXRpYyBpcnFyZXR1cm5fdCBoaXNpX2wzY19wbXVfaXNyKGludCBpcnEsIHZvaWQgKmRl dl9pZCkKPj4gK3N0YXRpYyB1MzIgaGlzaV9sM2NfcG11X2dldF9pbnRfc3RhdHVzKHN0cnVjdCBo aXNpX3BtdSAqbDNjX3BtdSkKPj4gIHsKPj4gLQlzdHJ1Y3QgaGlzaV9wbXUgKmwzY19wbXUgPSBk ZXZfaWQ7Cj4+IC0Jc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50Owo+PiAtCXVuc2lnbmVkIGxvbmcg b3ZlcmZsb3duOwo+PiAtCWludCBpZHg7Cj4+IC0KPj4gLQkvKiBSZWFkIEwzQ19JTlRfU1RBVFVT IHJlZ2lzdGVyICovCj4+IC0Jb3ZlcmZsb3duID0gcmVhZGwobDNjX3BtdS0+YmFzZSArIEwzQ19J TlRfU1RBVFVTKTsKPj4gLQlpZiAoIW92ZXJmbG93bikKPj4gLQkJcmV0dXJuIElSUV9OT05FOwo+ PiAtCj4+IC0JLyoKPj4gLQkgKiBGaW5kIHRoZSBjb3VudGVyIGluZGV4IHdoaWNoIG92ZXJmbG93 ZWQgaWYgdGhlIGJpdCB3YXMgc2V0Cj4+IC0JICogYW5kIGhhbmRsZSBpdC4KPj4gLQkgKi8KPj4g LQlmb3JfZWFjaF9zZXRfYml0KGlkeCwgJm92ZXJmbG93biwgTDNDX05SX0NPVU5URVJTKSB7Cj4+ IC0JCS8qIFdyaXRlIDEgdG8gY2xlYXIgdGhlIElSUSBzdGF0dXMgZmxhZyAqLwo+PiAtCQl3cml0 ZWwoKDEgPDwgaWR4KSwgbDNjX3BtdS0+YmFzZSArIEwzQ19JTlRfQ0xFQVIpOwo+PiAtCj4+IC0J CS8qIEdldCB0aGUgY29ycmVzcG9uZGluZyBldmVudCBzdHJ1Y3QgKi8KPj4gLQkJZXZlbnQgPSBs M2NfcG11LT5wbXVfZXZlbnRzLmh3X2V2ZW50c1tpZHhdOwo+PiAtCQlpZiAoIWV2ZW50KQo+PiAt CQkJY29udGludWU7Cj4+IC0KPj4gLQkJaGlzaV91bmNvcmVfcG11X2V2ZW50X3VwZGF0ZShldmVu dCk7Cj4+IC0JCWhpc2lfdW5jb3JlX3BtdV9zZXRfZXZlbnRfcGVyaW9kKGV2ZW50KTsKPj4gLQl9 Cj4+IC0KPj4gLQlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4+ICsJcmV0dXJuIHJlYWRsKGwzY19wbXUt PmJhc2UgKyBMM0NfSU5UX1NUQVRVUyk7Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyBpbnQgaGlzaV9s M2NfcG11X2luaXRfaXJxKHN0cnVjdCBoaXNpX3BtdSAqbDNjX3BtdSwKPj4gLQkJCQkgc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3N0YXRpYyB2b2lkIGhpc2lfbDNjX3BtdV9jbGVh cl9pbnRfc3RhdHVzKHN0cnVjdCBoaXNpX3BtdSAqbDNjX3BtdSwgaW50IGlkeCkKPj4gIHsKPj4g LQlpbnQgaXJxLCByZXQ7Cj4+IC0KPj4gLQkvKiBSZWFkIGFuZCBpbml0IElSUSAqLwo+PiAtCWly cSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7Cj4+IC0JaWYgKGlycSA8IDApCj4+IC0JCXJl dHVybiBpcnE7Cj4+IC0KPj4gLQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGly cSwgaGlzaV9sM2NfcG11X2lzciwKPj4gLQkJCSAgICAgICBJUlFGX05PQkFMQU5DSU5HIHwgSVJR Rl9OT19USFJFQUQsCj4+IC0JCQkgICAgICAgZGV2X25hbWUoJnBkZXYtPmRldiksIGwzY19wbXUp Owo+PiAtCWlmIChyZXQgPCAwKSB7Cj4+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwKPj4gLQkJCSJG YWlsIHRvIHJlcXVlc3QgSVJROiVkIHJldDolZFxuIiwgaXJxLCByZXQpOwo+PiAtCQlyZXR1cm4g cmV0Owo+PiAtCX0KPj4gLQo+PiAtCWwzY19wbXUtPmlycSA9IGlycTsKPj4gLQo+PiAtCXJldHVy biAwOwo+PiArCXdyaXRlbCgxIDw8IGlkeCwgbDNjX3BtdS0+YmFzZSArIEwzQ19JTlRfQ0xFQVIp Owo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGhpc2lf bDNjX3BtdV9hY3BpX21hdGNoW10gPSB7Cj4+IEBAIC0zNDQsNiArMjgzLDggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBoaXNpX3VuY29yZV9vcHMgaGlzaV91bmNvcmVfbDNjX29wcyA9IHsKPj4gIAku ZGlzYWJsZV9jb3VudGVyX2ludAk9IGhpc2lfbDNjX3BtdV9kaXNhYmxlX2NvdW50ZXJfaW50LAo+ PiAgCS53cml0ZV9jb3VudGVyCQk9IGhpc2lfbDNjX3BtdV93cml0ZV9jb3VudGVyLAo+PiAgCS5y ZWFkX2NvdW50ZXIJCT0gaGlzaV9sM2NfcG11X3JlYWRfY291bnRlciwKPj4gKwkuZ2V0X2ludF9z dGF0dXMJCT0gaGlzaV9sM2NfcG11X2dldF9pbnRfc3RhdHVzLAo+PiArCS5jbGVhcl9pbnRfc3Rh dHVzCT0gaGlzaV9sM2NfcG11X2NsZWFyX2ludF9zdGF0dXMsCj4+ICB9Owo+PiAgCj4+ICBzdGF0 aWMgaW50IGhpc2lfbDNjX3BtdV9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwKPj4gQEAgLTM1NSw3ICsyOTYsNyBAQCBzdGF0aWMgaW50IGhpc2lfbDNjX3BtdV9kZXZfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPj4gIAlpZiAocmV0KQo+PiAgCQlyZXR1 cm4gcmV0Owo+PiAgCj4+IC0JcmV0ID0gaGlzaV9sM2NfcG11X2luaXRfaXJxKGwzY19wbXUsIHBk ZXYpOwo+PiArCXJldCA9IGhpc2lfdW5jb3JlX3BtdV9pbml0X2lycShsM2NfcG11LCBwZGV2KTsK Pj4gIAlpZiAocmV0KQo+PiAgCQlyZXR1cm4gcmV0Owo+PiAgCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3BlcmYvaGlzaWxpY29uL2hpc2lfdW5jb3JlX3BtdS5jIGIvZHJpdmVycy9wZXJmL2hpc2ls aWNvbi9oaXNpX3VuY29yZV9wbXUuYwo+PiBpbmRleCA5ZGJkYzNmYzNiYjQuLjgyYTRmZjJiYzNh ZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29yZV9wbXUu Ywo+PiArKysgYi9kcml2ZXJzL3BlcmYvaGlzaWxpY29uL2hpc2lfdW5jb3JlX3BtdS5jCj4+IEBA IC0xMzIsMTMgKzEzMiw2NyBAQCBFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3VuY29yZV9wbXVfaWRl bnRpZmllcl9hdHRyX3Nob3cpOwo+PiAgc3RhdGljIHZvaWQgaGlzaV91bmNvcmVfcG11X2NsZWFy X2V2ZW50X2lkeChzdHJ1Y3QgaGlzaV9wbXUgKmhpc2lfcG11LCBpbnQgaWR4KQo+PiAgewo+PiAg CWlmICghaGlzaV91bmNvcmVfcG11X2NvdW50ZXJfdmFsaWQoaGlzaV9wbXUsIGlkeCkpIHsKPj4g LQkJZGV2X2VycihoaXNpX3BtdS0+ZGV2LCAiVW5zdXBwb3J0ZWQgZXZlbnQgaW5kZXg6JWQhXG4i LCBpZHgpOwo+PiArCQlkZXZfZXJyKGhpc2lfcG11LT5kZXYsICJVbnN1cHBvcnRlZCBldmVudCBp bmRleDogJWRcbiIsIGlkeCk7Cj4+ICAJCXJldHVybjsKPj4gIAl9Cj4+ICAKPj4gIAljbGVhcl9i aXQoaWR4LCBoaXNpX3BtdS0+cG11X2V2ZW50cy51c2VkX21hc2spOwo+PiAgfQo+PiAgCj4+ICtz dGF0aWMgaXJxcmV0dXJuX3QgaGlzaV91bmNvcmVfcG11X2lzcihpbnQgaXJxLCB2b2lkICpkYXRh KQo+PiArewo+PiArCXN0cnVjdCBoaXNpX3BtdSAqaGlzaV9wbXUgPSBkYXRhOwo+PiArCXN0cnVj dCBwZXJmX2V2ZW50ICpldmVudDsKPj4gKwl1bnNpZ25lZCBsb25nIG92ZXJmbG93bjsKPj4gKwlp bnQgaWR4Owo+PiArCj4+ICsJb3ZlcmZsb3duID0gaGlzaV9wbXUtPm9wcy0+Z2V0X2ludF9zdGF0 dXMoaGlzaV9wbXUpOwo+PiArCWlmICghb3ZlcmZsb3duKQo+PiArCQlyZXR1cm4gSVJRX05PTkU7 Cj4+ICsKPj4gKwkvKgo+PiArCSAqIEZpbmQgdGhlIGNvdW50ZXIgaW5kZXggd2hpY2ggb3ZlcmZs b3dlZCBpZiB0aGUgYml0IHdhcyBzZXQKPj4gKwkgKiBhbmQgaGFuZGxlIGl0Lgo+PiArCSAqLwo+ PiArCWZvcl9lYWNoX3NldF9iaXQoaWR4LCAmb3ZlcmZsb3duLCBoaXNpX3BtdS0+bnVtX2NvdW50 ZXJzKSB7Cj4+ICsJCS8qIFdyaXRlIDEgdG8gY2xlYXIgdGhlIElSUSBzdGF0dXMgZmxhZyAqLwo+ PiArCQloaXNpX3BtdS0+b3BzLT5jbGVhcl9pbnRfc3RhdHVzKGhpc2lfcG11LCBpZHgpOwo+PiAr CQkvKiBHZXQgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgc3RydWN0ICovCj4+ICsJCWV2ZW50ID0g aGlzaV9wbXUtPnBtdV9ldmVudHMuaHdfZXZlbnRzW2lkeF07Cj4+ICsJCWlmICghZXZlbnQpCj4+ ICsJCQljb250aW51ZTsKPj4gKwo+PiArCQloaXNpX3VuY29yZV9wbXVfZXZlbnRfdXBkYXRlKGV2 ZW50KTsKPj4gKwkJaGlzaV91bmNvcmVfcG11X3NldF9ldmVudF9wZXJpb2QoZXZlbnQpOwo+PiAr CX0KPj4gKwo+PiArCXJldHVybiBJUlFfSEFORExFRDsKPj4gK30KPj4gKwo+PiAraW50IGhpc2lf dW5jb3JlX3BtdV9pbml0X2lycShzdHJ1Y3QgaGlzaV9wbXUgKmhpc2lfcG11LAo+PiArCQkJICAg ICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+PiArCWludCBpcnEsIHJldDsK Pj4gKwo+PiArCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7Cj4+ICsJaWYgKGlycSA8 IDApCj4+ICsJCXJldHVybiBpcnE7Cj4+ICsKPj4gKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZw ZGV2LT5kZXYsIGlycSwgaGlzaV91bmNvcmVfcG11X2lzciwKPj4gKwkJCSAgICAgICBJUlFGX05P QkFMQU5DSU5HIHwgSVJRRl9OT19USFJFQUQsCj4+ICsJCQkgICAgICAgZGV2X25hbWUoJnBkZXYt PmRldiksIGhpc2lfcG11KTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlkZXZfZXJyKCZwZGV2 LT5kZXYsCj4+ICsJCQkiRmFpbCB0byByZXF1ZXN0IElSUTolZCByZXQ6JWRcbiIsIGlycSwgcmV0 KTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwloaXNpX3BtdS0+aXJxID0gaXJx Owo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChoaXNpX3Vu Y29yZV9wbXVfaW5pdF9pcnEpOwo+PiArCj4+ICBpbnQgaGlzaV91bmNvcmVfcG11X2V2ZW50X2lu aXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQo+PiAgewo+PiAgCXN0cnVjdCBod19wZXJmX2V2 ZW50ICpod2MgPSAmZXZlbnQtPmh3Owo+PiBAQCAtMjQzLDYgKzI5NywxMiBAQCB2b2lkIGhpc2lf dW5jb3JlX3BtdV9ldmVudF91cGRhdGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQo+PiAgCXN0 cnVjdCBoaXNpX3BtdSAqaGlzaV9wbXUgPSB0b19oaXNpX3BtdShldmVudC0+cG11KTsKPj4gIAlz dHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsKPj4gIAl1NjQgZGVsdGEsIHBy ZXZfcmF3X2NvdW50LCBuZXdfcmF3X2NvdW50Owo+PiArCXUzMiBpZHggPSBod2MtPmlkeDsKPj4g Kwo+PiArCWlmICghaGlzaV91bmNvcmVfcG11X2NvdW50ZXJfdmFsaWQoaGlzaV9wbXUsIGlkeCkp IHsKPj4gKwkJZGV2X2VycihoaXNpX3BtdS0+ZGV2LCAiVW5zdXBwb3J0ZWQgY291bnRlciBpbmRl eDogJWRcbiIsIGlkeCk7Cj4+ICsJCXJldHVybjsKPj4gKwl9Cj4+ICAKPj4gIAlkbyB7Cj4+ICAJ CS8qIFJlYWQgdGhlIGNvdW50IGZyb20gdGhlIGNvdW50ZXIgcmVnaXN0ZXIgKi8KPj4gQEAgLTI2 MywxMCArMzIzLDE2IEBAIHZvaWQgaGlzaV91bmNvcmVfcG11X3N0YXJ0KHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCwgaW50IGZsYWdzKQo+PiAgewo+PiAgCXN0cnVjdCBoaXNpX3BtdSAqaGlzaV9w bXUgPSB0b19oaXNpX3BtdShldmVudC0+cG11KTsKPj4gIAlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAq aHdjID0gJmV2ZW50LT5odzsKPj4gKwl1MzIgaWR4ID0gaHdjLT5pZHg7Cj4+ICAKPj4gIAlpZiAo V0FSTl9PTl9PTkNFKCEoaHdjLT5zdGF0ZSAmIFBFUkZfSEVTX1NUT1BQRUQpKSkKPj4gIAkJcmV0 dXJuOwo+PiAgCj4+ICsJaWYgKCFoaXNpX3VuY29yZV9wbXVfY291bnRlcl92YWxpZChoaXNpX3Bt dSwgaWR4KSkgewo+PiArCQlkZXZfZXJyKGhpc2lfcG11LT5kZXYsICJVbnN1cHBvcnRlZCBjb3Vu dGVyIGluZGV4OiAlZC5cbiIsIGlkeCk7Cj4+ICsJCXJldHVybjsKPj4gKwl9Cj4+ICsKPj4gIAlX QVJOX09OX09OQ0UoIShod2MtPnN0YXRlICYgUEVSRl9IRVNfVVBUT0RBVEUpKTsKPj4gIAlod2Mt PnN0YXRlID0gMDsKPj4gIAloaXNpX3VuY29yZV9wbXVfc2V0X2V2ZW50X3BlcmlvZChldmVudCk7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BlcmYvaGlzaWxpY29uL2hpc2lfdW5jb3JlX3BtdS5o IGIvZHJpdmVycy9wZXJmL2hpc2lsaWNvbi9oaXNpX3VuY29yZV9wbXUuaAo+PiBpbmRleCAyNWI3 Y2JlMWY4MTguLmFhYWY2MzdjYzllYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9wZXJmL2hpc2ls aWNvbi9oaXNpX3VuY29yZV9wbXUuaAo+PiArKysgYi9kcml2ZXJzL3BlcmYvaGlzaWxpY29uL2hp c2lfdW5jb3JlX3BtdS5oCj4+IEBAIC0xNiw2ICsxNiw3IEBACj4+ICAjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+ICAjaW5jbHVkZSA8bGlu dXgvcGVyZl9ldmVudC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ PiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+ICAKPj4gICN1bmRlZiBwcl9mbXQKPj4gQEAg LTQ3LDYgKzQ4LDggQEAgc3RydWN0IGhpc2lfdW5jb3JlX29wcyB7Cj4+ICAJdm9pZCAoKmRpc2Fi bGVfY291bnRlcl9pbnQpKHN0cnVjdCBoaXNpX3BtdSAqLCBzdHJ1Y3QgaHdfcGVyZl9ldmVudCAq KTsKPj4gIAl2b2lkICgqc3RhcnRfY291bnRlcnMpKHN0cnVjdCBoaXNpX3BtdSAqKTsKPj4gIAl2 b2lkICgqc3RvcF9jb3VudGVycykoc3RydWN0IGhpc2lfcG11ICopOwo+PiArCXUzMiAoKmdldF9p bnRfc3RhdHVzKShzdHJ1Y3QgaGlzaV9wbXUgKmhpc2lfcG11KTsKPj4gKwl2b2lkICgqY2xlYXJf aW50X3N0YXR1cykoc3RydWN0IGhpc2lfcG11ICpoaXNpX3BtdSwgaW50IGlkeCk7Cj4+ICB9Owo+ PiAgCj4+ICBzdHJ1Y3QgaGlzaV9wbXVfaHdldmVudHMgewo+PiBAQCAtMTAyLDYgKzEwNSw3IEBA IGludCBoaXNpX3VuY29yZV9wbXVfb2ZmbGluZV9jcHUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0 IGhsaXN0X25vZGUgKm5vZGUpOwo+PiAgc3NpemVfdCBoaXNpX3VuY29yZV9wbXVfaWRlbnRpZmll cl9hdHRyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+PiAgCQkJCQkgICAgIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAo+PiAgCQkJCQkgICAgIGNoYXIgKnBhZ2UpOwo+PiAtCj4+ICtp bnQgaGlzaV91bmNvcmVfcG11X2luaXRfaXJxKHN0cnVjdCBoaXNpX3BtdSAqaGlzaV9wbXUsCj4+ ICsJCQkgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOwo+PiAgCj4+ICAjZW5kaWYg LyogX19ISVNJX1VOQ09SRV9QTVVfSF9fICovCj4+IC0tIAo+PiAyLjcuNAo+Pgo+IC4KPiAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJu ZWwK