From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 3/8] drm/i915/icl: add basic support for the ICL clocks Date: Tue, 24 Apr 2018 17:22:05 -0700 Message-ID: <1524615725.2813.6.camel@intel.com> References: <20180328215803.13835-1-paulo.r.zanoni@intel.com> <20180328215803.13835-4-paulo.r.zanoni@intel.com> <20180409232259.GA12464@jausmus-gentoo-dev6.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7CF506E4E9 for ; Wed, 25 Apr 2018 00:22:13 +0000 (UTC) In-Reply-To: <20180409232259.GA12464@jausmus-gentoo-dev6.jf.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: James Ausmus Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gU2VnLCAyMDE4LTA0LTA5IMOgcyAxNjoyMyAtMDcwMCwgSmFtZXMgQXVzbXVzIGVzY3JldmV1 Ogo+IE9uIFdlZCwgTWFyIDI4LCAyMDE4IGF0IDAyOjU3OjU4UE0gLTA3MDAsIFBhdWxvIFphbm9u aSB3cm90ZToKPiA+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgdGhlIGRlZmluaXRpb25zIGZvciB0 aGUgSUNMIGNsb2NrcyBhbmQgYWRkcwo+ID4gdGhlCj4gPiBiYXNpYyBmdW5jdGlvbnMgdG8gdGhl IHNoYXJlZCBEUExMIGZyYW1ld29yay4gSXQgYWRkcyBjb2RlIGZvciB0aGUKPiA+IEVuYWJsZSBh bmQgRGlzYWJsZSBzZXF1ZW5jZXMgZm9yIHNvbWUgUExMcywgYnV0IGl0IGRvZXMgbm90IGhhdmUK PiA+IHRoZQo+ID4gY29kZSB0byBjb21wdXRlIHRoZSBhY3R1YWwgUExMIHZhbHVlcywgd2hpY2gg YXJlIG1hcmtlZCBhcyBUT0RPCj4gPiBjb21tZW50cyBhbmQgc2hvdWxkIGJlIGludHJvZHVjZWQg YXMgc2VwYXJhdGUgY29tbWl0cy4KPiA+IAo+ID4gU3BlY2lhbCB0aGFua3MgdG8gSmFtZXMgQXVz bXVzIGZvciBpbnZlc3RpZ2F0aW5nIGFuZCBmaXhpbmcgYSBidWcKPiA+IHdpdGgKPiA+IHRoZSBw bGFjZW1lbnQgb2YgaWNsX3VubWFwX3BsbHNfdG9fcG9ydHMoKSBmdW5jdGlvbi4KPiA+IAo+ID4g djI6Cj4gPiAgLSBSZWJhc2UgYXJvdW5kIGRwbGxfbG9jayBjaGFuZ2VzLgo+ID4gdjM6Cj4gPiAg LSBUaGUgc3BlYyBub3cgc2F5cyB3aGF0IHRoZSB0aW1lb3V0cyBzaG91bGQgYmUuCj4gPiAgLSBU b3VjaCBEUENMS0FfQ0ZHQ1IwX0lDTCBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZSBzbyB3ZSBkb24n dAo+ID4gZnJlZXplCj4gPiAgICB0aGUgbWFjaGluZS4KPiA+ICAtIENoZWNrcGF0Y2ggZm91bmQg YSB3aGl0ZSBzcGFjZSBwcm9ibGVtLgo+ID4gIC0gU21hbGwgYWRqdXN0bWVudHMgYmVmb3JlIHVw c3RyZWFtaW5nLgo+ID4gdjQ6Cj4gPiAgLSBNb3ZlIHRoZSBJQ0wgY2hlY2tzIG91dCBvZiB0aGUg Km1hcF9wbGxzX3RvX3BvcnRzKCkgZnVuY3Rpb25zCj4gPiAgIChKYW1lcykKPiA+ICAtIEFkZCBl eHRyYSBlbmNvZGVyIGNoZWNrIChKYW1lcykKPiA+ICAtIENhbGwgaWNsX3VubWFwX3BsbHNfdG9f cG9ydHMoKSBsYXRlciAoSmFtZXMpCj4gPiB2NToKPiA+ICAtIFJlYmFzZSBhZnRlciB0aGUgcGxs IHN0cnVjdCBjaGFuZ2VzLgo+ID4gCj4gPiBDYzogSmFtZXMgQXVzbXVzIDxqYW1lcy5hdXNtdXNA aW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9u aUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyAgIHwgIDIyICsrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAg ICAgfCAgOTggKysrKysrKysrKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgIHwgIDE2ICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3Iu YyB8IDMxMgo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmggfCAgNDEgKysrKysKPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgIHwgICA2ICsKPiA+ICA2IGZpbGVzIGNoYW5n ZWQsIDQ5MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+IGluZGV4IGZmOTA1NzdkYTQ1MC4uNDNhODA1YzM5 YjBhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBAQCAtMzI5 Niw2ICszMjk2LDI4IEBAIHN0YXRpYyBpbnQgaTkxNV9zaGFyZWRfZHBsbHNfaW5mbyhzdHJ1Y3QK PiA+IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gPiAgCQlzZXFfcHJpbnRmKG0sICIgZnAw OiAgICAgMHglMDh4XG4iLCBwbGwtCj4gPiA+c3RhdGUuaHdfc3RhdGUuZnAwKTsKPiA+ICAJCXNl cV9wcmludGYobSwgIiBmcDE6ICAgICAweCUwOHhcbiIsIHBsbC0KPiA+ID5zdGF0ZS5od19zdGF0 ZS5mcDEpOwo+ID4gIAkJc2VxX3ByaW50ZihtLCAiIHdycGxsOiAgIDB4JTA4eFxuIiwgcGxsLQo+ ID4gPnN0YXRlLmh3X3N0YXRlLndycGxsKTsKPiA+ICsJCXNlcV9wcmludGYobSwgIiBjZmdjcjA6 ICAweCUwOHhcbiIsIHBsbC0KPiA+ID5zdGF0ZS5od19zdGF0ZS5jZmdjcjApOwo+ID4gKwkJc2Vx X3ByaW50ZihtLCAiIGNmZ2NyMTogIDB4JTA4eFxuIiwgcGxsLQo+ID4gPnN0YXRlLmh3X3N0YXRl LmNmZ2NyMSk7Cj4gPiArCQlzZXFfcHJpbnRmKG0sICIgbWdfcmVmY2xraW5fY3RsOiAgICAgICAg MHglMDh4XG4iLAo+ID4gKwkJCSAgIHBsbC0+c3RhdGUuaHdfc3RhdGUubWdfcmVmY2xraW5fY3Rs KTsKPiA+ICsJCXNlcV9wcmludGYobSwgIiBtZ19jbGt0b3AyX2NvcmVjbGtjdGwxOiAweCUwOHhc biIsCj4gPiArCQkJICAgcGxsLQo+ID4gPnN0YXRlLmh3X3N0YXRlLm1nX2Nsa3RvcDJfY29yZWNs a2N0bDEpOwo+ID4gKwkJc2VxX3ByaW50ZihtLCAiIG1nX2Nsa3RvcDJfaHNjbGtjdGw6ICAgIDB4 JTA4eFxuIiwKPiA+ICsJCQkgICBwbGwtCj4gPiA+c3RhdGUuaHdfc3RhdGUubWdfY2xrdG9wMl9o c2Nsa2N0bCk7Cj4gPiArCQlzZXFfcHJpbnRmKG0sICIgbWdfcGxsX2RpdjA6ICAweCUwOHhcbiIs Cj4gPiArCQkJICAgcGxsLT5zdGF0ZS5od19zdGF0ZS5tZ19wbGxfZGl2MCk7Cj4gPiArCQlzZXFf cHJpbnRmKG0sICIgbWdfcGxsX2RpdjE6ICAweCUwOHhcbiIsCj4gPiArCQkJICAgcGxsLT5zdGF0 ZS5od19zdGF0ZS5tZ19wbGxfZGl2MSk7Cj4gPiArCQlzZXFfcHJpbnRmKG0sICIgbWdfcGxsX2xm OiAgICAweCUwOHhcbiIsCj4gPiArCQkJICAgcGxsLT5zdGF0ZS5od19zdGF0ZS5tZ19wbGxfbGYp Owo+ID4gKwkJc2VxX3ByaW50ZihtLCAiIG1nX3BsbF9mcmFjX2xvY2s6IDB4JTA4eFxuIiwKPiA+ ICsJCQkgICBwbGwtPnN0YXRlLmh3X3N0YXRlLm1nX3BsbF9mcmFjX2xvY2spOwo+ID4gKwkJc2Vx X3ByaW50ZihtLCAiIG1nX3BsbF9zc2M6ICAgMHglMDh4XG4iLAo+ID4gKwkJCSAgIHBsbC0+c3Rh dGUuaHdfc3RhdGUubWdfcGxsX3NzYyk7Cj4gPiArCQlzZXFfcHJpbnRmKG0sICIgbWdfcGxsX2Jp YXM6ICAweCUwOHhcbiIsCj4gPiArCQkJICAgcGxsLT5zdGF0ZS5od19zdGF0ZS5tZ19wbGxfYmlh cyk7Cj4gPiArCQlzZXFfcHJpbnRmKG0sICIgbWdfcGxsX3RkY19jb2xkc3RfYmlhczogMHglMDh4 XG4iLAo+ID4gKwkJCSAgIHBsbC0KPiA+ID5zdGF0ZS5od19zdGF0ZS5tZ19wbGxfdGRjX2NvbGRz dF9iaWFzKTsKPiA+ICAJfQo+ID4gIAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gPiAg Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGluZGV4IGE2NjcyYTlhYmQ4NS4u MTAyMjNmZmNjZWFiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBAQCAt MTAxMyw2ICsxMDEzLDI1IEBAIHN0YXRpYyB1aW50MzJfdCBoc3dfcGxsX3RvX2RkaV9wbGxfc2Vs KGNvbnN0Cj4gPiBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiA+ICAJfQo+ID4gIH0K PiA+ICAKPiA+ICtzdGF0aWMgdWludDMyX3QgaWNsX3BsbF90b19kZGlfcGxsX3NlbChzdHJ1Y3Qg aW50ZWxfZW5jb2Rlcgo+ID4gKmVuY29kZXIsCj4gPiArCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QK PiA+IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gPiArewo+ID4gKwljb25zdCBlbnVtIGludGVs X2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ID4gKwo+ID4gKwlzd2l0Y2ggKGlkKSB7Cj4g PiArCWRlZmF1bHQ6Cj4gPiArCQlNSVNTSU5HX0NBU0UoaWQpOwo+ID4gKwljYXNlIERQTExfSURf SUNMX0RQTEwwOgo+ID4gKwljYXNlIERQTExfSURfSUNMX0RQTEwxOgo+ID4gKwkJcmV0dXJuIERE SV9DTEtfU0VMX05PTkU7Cj4gPiArCWNhc2UgRFBMTF9JRF9JQ0xfTUdQTEwxOgo+ID4gKwljYXNl IERQTExfSURfSUNMX01HUExMMjoKPiA+ICsJY2FzZSBEUExMX0lEX0lDTF9NR1BMTDM6Cj4gPiAr CWNhc2UgRFBMTF9JRF9JQ0xfTUdQTEw0Ogo+ID4gKwkJcmV0dXJuIERESV9DTEtfU0VMX01HOwo+ ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gIC8qIFN0YXJ0aW5nIHdpdGggSGFzd2VsbCwgZGlmZmVy ZW50IERESSBwb3J0cyBjYW4gd29yayBpbiBGREkgbW9kZQo+ID4gZm9yCj4gPiAgICogY29ubmVj dGlvbiB0byB0aGUgUENILWxvY2F0ZWQgY29ubmVjdG9ycy4gRm9yIHRoaXMsIGl0IGlzCj4gPiBu ZWNlc3NhcnkgdG8gdHJhaW4KPiA+ICAgKiBib3RoIHRoZSBEREkgcG9ydCBhbmQgUENIIHJlY2Vp dmVyIGZvciB0aGUgZGVzaXJlZCBEREkgYnVmZmVyCj4gPiBzZXR0aW5ncy4KPiA+IEBAIC0yMjM0 LDYgKzIyNTMsNjkgQEAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2Rw Cj4gPiAqaW50ZWxfZHApCj4gPiAgCXJldHVybiBERElfQlVGX1RSQU5TX1NFTEVDVChsZXZlbCk7 Cj4gPiAgfQo+ID4gIAo+ID4gK3ZvaWQgaWNsX21hcF9wbGxzX3RvX3BvcnRzKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiA+ICsJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiA+ICsJCQkgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gK3sK PiA+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSBjcnRjX3N0YXRlLT5zaGFyZWRf ZHBsbDsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5kZXYpOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsK PiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4gPiArCWludCBpOwo+ID4gKwo+ID4g Kwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwKPiA+IGNv bm5fc3RhdGUsIGkpIHsKPiA+ICsJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0KPiA+ ICsJCQl0b19pbnRlbF9lbmNvZGVyKGNvbm5fc3RhdGUtCj4gPiA+YmVzdF9lbmNvZGVyKTsKPiA+ ICsJCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKPiAKPiBKdXN0IHJlYWxpemVkIHRo YXQgd2UgaGF2ZSB0aGUgc2FtZSBwb3RlbnRpYWwgTlVMTCBlbmNvZGVyIHByb2JsZW0KPiBoZXJl Cj4gaW4gbWFwLCB0b28gLSBub3QganVzdCB1bm1hcCwgd2hpY2ggSSBtaXNzZWQgcHJldmlvdXNs eS4gCgpGdW5jdGlvbiBpY2xfbWFwX3BsbHNfdG9fcG9ydHMoKSBpcyBiYXNlZCBvbgppbnRlbF9l bmNvZGVyc19wcmVfcGxsX2VuYWJsZSgpLCB3aGljaCBkb2Vzbid0IGhhdmUgdGhlIGNoZWNrLiBJ CnN1cHBvc2UgdGhhdCdzIGJlY2F1c2UgeW91IGNhbid0IGVuYWJsZSBhIGNvbm5lY3RvciB3aXRo b3V0IGFuIGVuY29kZXIKaW4gYSBjb21taXQuCgoKPiAKPiA+ICsJCXVpbnQzMl90IHZhbDsKPiA+ ICsKPiA+ICsJCWlmIChjb25uX3N0YXRlLT5jcnRjICE9IGNydGMpCj4gPiArCQkJY29udGludWU7 Cj4gPiArCj4gPiArCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiA+ICsKPiA+ ICsJCXZhbCA9IEk5MTVfUkVBRChEUENMS0FfQ0ZHQ1IwX0lDTCk7Cj4gPiArCQlXQVJOX09OKCh2 YWwgJiBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBvcnQpKSA9PQo+ID4gMCk7Cj4gPiArCj4g PiArCQlpZiAocG9ydCA9PSBQT1JUX0EgfHwgcG9ydCA9PSBQT1JUX0IpIHsKPiA+ICsJCQl2YWwg Jj0KPiA+IH5EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX01BU0socG9ydCk7Cj4gPiArCQkJdmFs IHw9IERQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUwocGxsLQo+ID4gPmluZm8tPmlkLCBwb3J0KTsK PiA+ICsJCQlJOTE1X1dSSVRFKERQQ0xLQV9DRkdDUjBfSUNMLCB2YWwpOwo+ID4gKwkJCVBPU1RJ TkdfUkVBRChEUENMS0FfQ0ZHQ1IwX0lDTCk7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQl2YWwgJj0g fkRQQ0xLQV9DRkdDUjBfRERJX0NMS19PRkYocG9ydCk7Cj4gPiArCQlJOTE1X1dSSVRFKERQQ0xL QV9DRkdDUjBfSUNMLCB2YWwpOwo+ID4gKwo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ ZHBsbF9sb2NrKTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIGljbF91bm1hcF9wbGxz X3RvX3BvcnRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICsJCQkgICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKm9sZF9zdGF0ZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ID4g KwlpbnQgaTsKPiA+ICsKPiA+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRf c3RhdGUsIGNvbm4sCj4gPiBjb25uX3N0YXRlLCBpKSB7Cj4gPiArCQlzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciA9Cj4gPiArCQkJdG9faW50ZWxfZW5jb2Rlcihjb25uX3N0YXRlLQo+ID4g PmJlc3RfZW5jb2Rlcik7Cj4gPiArCQllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4g Cj4gQWNjZXNzIG9mIGVuY29kZXItPnBvcnQgbmVlZHMgdG8gYmUgYWZ0ZXIgdGhlIGVuY29kZXIg TlVMTCBjaGVjaywKPiBvdGhlcndpc2UgdGhlIE5VTEwgY2hlY2sgaXMgcG9pbnRsZXNzIDopCgpZ b3UncmUgcmlnaHQgaW4gdGhhdCBzdGF0ZW1lbnQsIGJ1dCBJIHJlYWxpemVkCmljbF91bm1hcF9w bGxzX3RvX3BvcnRzKCkgc2hvdWxkIGJlIGJhc2VkIG9uCmludGVsX2VuY29kZXJzX3Bvc3RfZGlz YWJsZSgpLCB3aGljaCBkb2Vzbid0IGhhdmUgdGhlIGVuY29kZXIgY2hlY2sKZWl0aGVyLiBUaGUg cHJvYmxlbSBpcyB0aGF0IHBvc3RfZGlzYWJsZSBpdGVyYXRlcyBvdmVyIHRoZSBvbGQKY29ubmVj dG9yIHN0YXRlIChzbyBubyBuZWVkIGZvciB0aGUgY2hlY2sgc2luY2UgdGhlIG9sZGVyIGVuYWJs ZWQKY29ubmVjdG9yIGhhZCBhbiBlbmNvZGVyKSwgYW5kIHRoYXQgaXMgd2hhdCBzZWVtcyB0byBi ZSB3cm9uZyBhYm91dCB0aGlzIGZ1bmN0aW9uIGhlcmUuIEknbGwgZml4IGl0LgoKCj4gCj4gPiAr Cj4gPiArCQlpZiAoIWVuY29kZXIgfHwgY29ubl9zdGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ID4gKwkJ CWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7 Cj4gPiArCQlJOTE1X1dSSVRFKERQQ0xLQV9DRkdDUjBfSUNMLAo+ID4gKwkJCSAgIEk5MTVfUkVB RChEUENMS0FfQ0ZHQ1IwX0lDTCkgfAo+ID4gKwkJCSAgIERQQ0xLQV9DRkdDUjBfRERJX0NMS19P RkYocG9ydCkpOwo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiA+ ICsJfQo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfY2xrX3NlbGVjdChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkJIGNvbnN0IHN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbAo+ID4gKnBsbCkKPiA+ICB7Cj4gPiBAQCAtMjI0Niw3ICsyMzI4LDExIEBA IHN0YXRpYyB2b2lkIGludGVsX2RkaV9jbGtfc2VsZWN0KHN0cnVjdAo+ID4gaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiA+ICAKPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7 Cj4gPiAgCj4gPiAtCWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgewo+ID4gKwlpZiAoSVNf SUNFTEFLRShkZXZfcHJpdikpIHsKPiA+ICsJCWlmIChwb3J0ID49IFBPUlRfQykKPiA+ICsJCQlJ OTE1X1dSSVRFKERESV9DTEtfU0VMKHBvcnQpLAo+ID4gKwkJCQkgICBpY2xfcGxsX3RvX2RkaV9w bGxfc2VsKGVuY29kZXIsCj4gPiBwbGwpKTsKPiA+ICsJfSBlbHNlIGlmIChJU19DQU5OT05MQUtF KGRldl9wcml2KSkgewo+ID4gIAkJLyogQ29uZmlndXJlIERQQ0xLQV9DRkdDUjAgdG8gbWFwIHRo ZSBEUExMIHRvIHRoZQo+ID4gRERJLiAqLwo+ID4gIAkJdmFsID0gSTkxNV9SRUFEKERQQ0xLQV9D RkdDUjApOwo+ID4gIAkJdmFsICY9IH5EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX01BU0socG9y dCk7Cj4gPiBAQCAtMjI4NCwxNCArMjM3MCwxOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfY2xr X2Rpc2FibGUoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItCj4gPiA+YmFzZS5k ZXYpOwo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gPiAgCj4gPiAtCWlm IChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiA+ICsJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYp KSB7Cj4gPiArCQlpZiAocG9ydCA+PSBQT1JUX0MpCj4gPiArCQkJSTkxNV9XUklURShERElfQ0xL X1NFTChwb3J0KSwKPiA+IERESV9DTEtfU0VMX05PTkUpOwo+ID4gKwl9IGVsc2UgaWYgKElTX0NB Tk5PTkxBS0UoZGV2X3ByaXYpKSB7Cj4gPiAgCQlJOTE1X1dSSVRFKERQQ0xLQV9DRkdDUjAsIEk5 MTVfUkVBRChEUENMS0FfQ0ZHQ1IwKQo+ID4gfAo+ID4gIAkJCSAgIERQQ0xLQV9DRkdDUjBfRERJ X0NMS19PRkYocG9ydCkpOwo+ID4gLQllbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiA+ ICsJfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+ID4gIAkJSTkxNV9XUklURShE UExMX0NUUkwyLCBJOTE1X1JFQUQoRFBMTF9DVFJMMikgfAo+ID4gIAkJCSAgIERQTExfQ1RSTDJf RERJX0NMS19PRkYocG9ydCkpOwo+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg OSkKPiA+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewo+ID4gIAkJSTkx NV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIFBPUlRfQ0xLX1NFTF9OT05FKTsKPiA+ICsJfQo+ ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gPiBpbmRleCA4YjE4NzI5YmM0ZDMuLjY0ZTc5NDMxNjRkNSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAtNTUwOCw2ICs1NTA4LDkg QEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QKPiA+IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5zaGFyZWRf ZHBsbCkKPiA+ICAJCWludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKPiA+ICAK PiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gPiArCQlpY2xfbWFwX3BsbHNf dG9fcG9ydHMoY3J0YywgcGlwZV9jb25maWcsCj4gPiBvbGRfc3RhdGUpOwo+ID4gKwo+ID4gIAlp ZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihpbnRlbF9jcnRjLT5jb25maWcpKQo+ID4gIAkJ aW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMV9OMSk7Cj4gPiAgCj4gPiBAQCAtNTcwNSw2 ICs1NzA4LDkgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rpc2FibGUoc3RydWN0Cj4gPiBp bnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiA+ICAJCWludGVsX2RkaV9kaXNhYmxl X3BpcGVfY2xvY2soaW50ZWxfY3J0Yy0+Y29uZmlnKTsKPiA+ICAKPiA+ICAJaW50ZWxfZW5jb2Rl cnNfcG9zdF9kaXNhYmxlKGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+ID4gb2xkX3N0YXRlKTsKPiA+ ICsKPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gPiArCQlpY2xfdW5tYXBf cGxsc190b19wb3J0cyhjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiA+IG9sZF9zdGF0ZSk7Cj4gPiAg fQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGk5eHhfcGZpdF9lbmFibGUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMpCj4gPiBAQCAtMTEzMjQsNiArMTEzMzAsMTYgQEAgaW50ZWxfcGlwZV9jb25maWdf Y29tcGFyZShzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDkpOwo+ID4gIAlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLnBsbDEwKTsKPiA+ICAJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5wY3NkdzEyKTsKPiA+ICsJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19y ZWZjbGtpbl9jdGwpOwo+ID4gKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX2Ns a3RvcDJfY29yZWNsa2N0bDEpOwo+ID4gKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl Lm1nX2Nsa3RvcDJfaHNjbGtjdGwpOwo+ID4gKwlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0 YXRlLm1nX3BsbF9kaXYwKTsKPiA+ICsJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5t Z19wbGxfZGl2MSk7Cj4gPiArCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxs X2xmKTsKPiA+ICsJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfZnJhY19s b2NrKTsKPiA+ICsJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfc3NjKTsK PiA+ICsJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfYmlhcyk7Cj4gPiAr CVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX3RkY19jb2xkc3RfYmlhcyk7 Cj4gPiAgCj4gPiAgCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuY3RybCk7Cj4gPiAgCVBJUEVf Q09ORl9DSEVDS19YKGRzaV9wbGwuZGl2KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwbGxfbWdyLmMKPiA+IGluZGV4IGQ1ZTExNGU5NjYwYi4uNDcwZGU2YTMzY2EwIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gQEAgLTIzOTksNiArMjM5 OSwzMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21ncgo+ID4gY25sX3BsbF9t Z3IgPSB7Cj4gPiAgCS5kdW1wX2h3X3N0YXRlID0gY25sX2R1bXBfaHdfc3RhdGUsCj4gPiAgfTsK PiA+ICAKPiA+ICtzdGF0aWMgYm9vbCBpY2xfY2FsY19kcGxsX3N0YXRlKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlCj4gPiAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsIGludAo+ID4gY2xvY2ssCj4gPiArCQkJCXN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0 YXRlCj4gPiAqcGxsX3N0YXRlKQo+ID4gK3sKPiA+ICsJLyogVE9ETyAqLwo+ID4gKwlyZXR1cm4g dHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGVudW0gcG9ydCBpY2xfbWdfcGxsX2lkX3Rv X3BvcnQoZW51bSBpbnRlbF9kcGxsX2lkIGlkKQo+ID4gK3sKPiA+ICsJcmV0dXJuIGlkIC0gRFBM TF9JRF9JQ0xfTUdQTEwxICsgUE9SVF9DOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgZW51bSBp bnRlbF9kcGxsX2lkIGljbF9wb3J0X3RvX21nX3BsbF9pZChlbnVtIHBvcnQgcG9ydCkKPiA+ICt7 Cj4gPiArCXJldHVybiBwb3J0IC0gUE9SVF9DICsgRFBMTF9JRF9JQ0xfTUdQTEwxOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgYm9vbCBpY2xfY2FsY19tZ19wbGxfc3RhdGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUKPiA+ICpjcnRjX3N0YXRlLAo+ID4gKwkJCQkgIHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ID4gaW50IGNsb2NrLAo+ID4gKwkJCQkgIHN0cnVjdCBpbnRlbF9kcGxs X2h3X3N0YXRlCj4gPiAqcGxsX3N0YXRlKQo+ID4gK3sKPiA+ICsJLyogVE9ETyAqLwo+ID4gKwly ZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqCj4gPiAraWNsX2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZQo+ID4gKmNydGNfc3RhdGUsCj4gPiArCSAgICAgc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwg KnBsbDsKPiA+ICsJc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgcGxsX3N0YXRlID0ge307Cj4g PiArCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKPiA+ICsJZW51bSBpbnRlbF9kcGxs X2lkIG1pbiwgbWF4Owo+ID4gKwlpbnQgY2xvY2sgPSBjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrOwo+ ID4gKwlib29sIHJldDsKPiA+ICsKPiA+ICsJc3dpdGNoIChwb3J0KSB7Cj4gPiArCWNhc2UgUE9S VF9BOgo+ID4gKwljYXNlIFBPUlRfQjoKPiA+ICsJCW1pbiA9IERQTExfSURfSUNMX0RQTEwwOwo+ ID4gKwkJbWF4ID0gRFBMTF9JRF9JQ0xfRFBMTDE7Cj4gPiArCQlyZXQgPSBpY2xfY2FsY19kcGxs X3N0YXRlKGNydGNfc3RhdGUsIGVuY29kZXIsCj4gPiBjbG9jaywKPiA+ICsJCQkJCSAgJnBsbF9z dGF0ZSk7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBQT1JUX0M6Cj4gPiArCWNhc2UgUE9SVF9E Ogo+ID4gKwljYXNlIFBPUlRfRToKPiA+ICsJY2FzZSBQT1JUX0Y6Cj4gPiArCQltaW4gPSBtYXgg PSBpY2xfcG9ydF90b19tZ19wbGxfaWQocG9ydCk7Cj4gPiArCQlyZXQgPSBpY2xfY2FsY19tZ19w bGxfc3RhdGUoY3J0Y19zdGF0ZSwgZW5jb2RlciwKPiA+IGNsb2NrLAo+ID4gKwkJCQkJICAgICZw bGxfc3RhdGUpOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlNSVNTSU5HX0NB U0UocG9ydCk7Cj4gPiArCQlyZXR1cm4gTlVMTDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAoIXJl dCkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiQ291bGQgbm90IGNhbGN1bGF0ZSBQTEwgc3RhdGUu XG4iKTsKPiA+ICsJCXJldHVybiBOVUxMOwo+ID4gKwl9Cj4gPiArCj4gPiArCWNydGNfc3RhdGUt PmRwbGxfaHdfc3RhdGUgPSBwbGxfc3RhdGU7Cj4gPiArCj4gPiArCXBsbCA9IGludGVsX2ZpbmRf c2hhcmVkX2RwbGwoY3J0YywgY3J0Y19zdGF0ZSwgbWluLCBtYXgpOwo+ID4gKwlpZiAoIXBsbCkg ewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiTm8gUExMIHNlbGVjdGVkXG4iKTsKPiA+ICsJCXJldHVy biBOVUxMOwo+ID4gKwl9Cj4gPiArCj4gPiArCWludGVsX3JlZmVyZW5jZV9zaGFyZWRfZHBsbChw bGwsIGNydGNfc3RhdGUpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcGxsOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgaTkxNV9yZWdfdCBpY2xfcGxsX2lkX3RvX2VuYWJsZV9yZWcoZW51bSBpbnRlbF9k cGxsX2lkIGlkKQo+ID4gK3sKPiA+ICsJc3dpdGNoIChpZCkgewo+ID4gKwlkZWZhdWx0Ogo+ID4g KwkJTUlTU0lOR19DQVNFKGlkKTsKPiA+ICsJY2FzZSBEUExMX0lEX0lDTF9EUExMMDoKPiA+ICsJ Y2FzZSBEUExMX0lEX0lDTF9EUExMMToKPiA+ICsJCXJldHVybiBDTkxfRFBMTF9FTkFCTEUoaWQp Owo+ID4gKwljYXNlIERQTExfSURfSUNMX01HUExMMToKPiA+ICsJY2FzZSBEUExMX0lEX0lDTF9N R1BMTDI6Cj4gPiArCWNhc2UgRFBMTF9JRF9JQ0xfTUdQTEwzOgo+ID4gKwljYXNlIERQTExfSURf SUNMX01HUExMNDoKPiA+ICsJCXJldHVybiBNR19QTExfRU5BQkxFKGljbF9tZ19wbGxfaWRfdG9f cG9ydChpZCkpOwo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBib29sIGljbF9wbGxf Z2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiAr CQkJCSBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiA+ICsJCQkJIHN0cnVjdCBpbnRl bF9kcGxsX2h3X3N0YXRlCj4gPiAqaHdfc3RhdGUpCj4gPiArewo+ID4gKwljb25zdCBlbnVtIGlu dGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ID4gKwl1aW50MzJfdCB2YWw7Cj4gPiAr CWVudW0gcG9ydCBwb3J0Owo+ID4gKwlib29sIHJldCA9IGZhbHNlOwo+ID4gKwo+ID4gKwlpZiAo IWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsCj4gPiBQT1dFUl9E T01BSU5fUExMUykpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCXZhbCA9IEk5MTVf UkVBRChpY2xfcGxsX2lkX3RvX2VuYWJsZV9yZWcoaWQpKTsKPiA+ICsJaWYgKCEodmFsICYgUExM X0VOQUJMRSkpCj4gPiArCQlnb3RvIG91dDsKPiA+ICsKPiA+ICsJc3dpdGNoIChpZCkgewo+ID4g KwljYXNlIERQTExfSURfSUNMX0RQTEwwOgo+ID4gKwljYXNlIERQTExfSURfSUNMX0RQTEwxOgo+ ID4gKwkJaHdfc3RhdGUtPmNmZ2NyMCA9IEk5MTVfUkVBRChJQ0xfRFBMTF9DRkdDUjAoaWQpKTsK PiA+ICsJCWh3X3N0YXRlLT5jZmdjcjEgPSBJOTE1X1JFQUQoSUNMX0RQTExfQ0ZHQ1IxKGlkKSk7 Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBEUExMX0lEX0lDTF9NR1BMTDE6Cj4gPiArCWNhc2Ug RFBMTF9JRF9JQ0xfTUdQTEwyOgo+ID4gKwljYXNlIERQTExfSURfSUNMX01HUExMMzoKPiA+ICsJ Y2FzZSBEUExMX0lEX0lDTF9NR1BMTDQ6Cj4gPiArCQlwb3J0ID0gaWNsX21nX3BsbF9pZF90b19w b3J0KGlkKTsKPiA+ICsJCWh3X3N0YXRlLT5tZ19yZWZjbGtpbl9jdGwgPQo+ID4gSTkxNV9SRUFE KE1HX1JFRkNMS0lOX0NUTChwb3J0KSk7Cj4gPiArCQlod19zdGF0ZS0+bWdfY2xrdG9wMl9jb3Jl Y2xrY3RsMSA9Cj4gPiArCQkJSTkxNV9SRUFEKE1HX0NMS1RPUDJfQ09SRUNMS0NUTDEocG9ydCkp Owo+ID4gKwkJaHdfc3RhdGUtPm1nX2Nsa3RvcDJfaHNjbGtjdGwgPQo+ID4gKwkJCUk5MTVfUkVB RChNR19DTEtUT1AyX0hTQ0xLQ1RMKHBvcnQpKTsKPiA+ICsJCWh3X3N0YXRlLT5tZ19wbGxfZGl2 MCA9Cj4gPiBJOTE1X1JFQUQoTUdfUExMX0RJVjAocG9ydCkpOwo+ID4gKwkJaHdfc3RhdGUtPm1n X3BsbF9kaXYxID0KPiA+IEk5MTVfUkVBRChNR19QTExfRElWMShwb3J0KSk7Cj4gPiArCQlod19z dGF0ZS0+bWdfcGxsX2xmID0gSTkxNV9SRUFEKE1HX1BMTF9MRihwb3J0KSk7Cj4gPiArCQlod19z dGF0ZS0+bWdfcGxsX2ZyYWNfbG9jayA9Cj4gPiBJOTE1X1JFQUQoTUdfUExMX0ZSQUNfTE9DSyhw b3J0KSk7Cj4gPiArCQlod19zdGF0ZS0+bWdfcGxsX3NzYyA9Cj4gPiBJOTE1X1JFQUQoTUdfUExM X1NTQyhwb3J0KSk7Cj4gPiArCQlod19zdGF0ZS0+bWdfcGxsX2JpYXMgPQo+ID4gSTkxNV9SRUFE KE1HX1BMTF9CSUFTKHBvcnQpKTsKPiA+ICsJCWh3X3N0YXRlLT5tZ19wbGxfdGRjX2NvbGRzdF9i aWFzID0KPiA+ICsJCQlJOTE1X1JFQUQoTUdfUExMX1REQ19DT0xEU1RfQklBUyhwb3J0KSk7Cj4g PiArCQlicmVhazsKPiA+ICsJZGVmYXVsdDoKPiA+ICsJCU1JU1NJTkdfQ0FTRShpZCk7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJcmV0ID0gdHJ1ZTsKPiA+ICtvdXQ6Cj4gPiArCWludGVsX2Rpc3BsYXlf cG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gPiArCXJldHVybiByZXQ7 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGljbF9kcGxsX3dyaXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2Rw bGwgKnBsbCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19zdGF0 ZSA9ICZwbGwtCj4gPiA+c3RhdGUuaHdfc3RhdGU7Cj4gPiArCWNvbnN0IGVudW0gaW50ZWxfZHBs bF9pZCBpZCA9IHBsbC0+aW5mby0+aWQ7Cj4gPiArCj4gPiArCUk5MTVfV1JJVEUoSUNMX0RQTExf Q0ZHQ1IwKGlkKSwgaHdfc3RhdGUtPmNmZ2NyMCk7Cj4gPiArCUk5MTVfV1JJVEUoSUNMX0RQTExf Q0ZHQ1IxKGlkKSwgaHdfc3RhdGUtPmNmZ2NyMSk7Cj4gPiArCVBPU1RJTkdfUkVBRChJQ0xfRFBM TF9DRkdDUjEoaWQpKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaWNsX21nX3BsbF93 cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJICAgICBzdHJ1 Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9kcGxs X2h3X3N0YXRlICpod19zdGF0ZSA9ICZwbGwtCj4gPiA+c3RhdGUuaHdfc3RhdGU7Cj4gPiArCWVu dW0gcG9ydCBwb3J0ID0gaWNsX21nX3BsbF9pZF90b19wb3J0KHBsbC0+aW5mby0+aWQpOwo+ID4g Kwo+ID4gKwlJOTE1X1dSSVRFKE1HX1JFRkNMS0lOX0NUTChwb3J0KSwgaHdfc3RhdGUtCj4gPiA+ bWdfcmVmY2xraW5fY3RsKTsKPiA+ICsJSTkxNV9XUklURShNR19DTEtUT1AyX0NPUkVDTEtDVEwx KHBvcnQpLAo+ID4gKwkJICAgaHdfc3RhdGUtPm1nX2Nsa3RvcDJfY29yZWNsa2N0bDEpOwo+ID4g KwlJOTE1X1dSSVRFKE1HX0NMS1RPUDJfSFNDTEtDVEwocG9ydCksIGh3X3N0YXRlLQo+ID4gPm1n X2Nsa3RvcDJfaHNjbGtjdGwpOwo+ID4gKwlJOTE1X1dSSVRFKE1HX1BMTF9ESVYwKHBvcnQpLCBo d19zdGF0ZS0+bWdfcGxsX2RpdjApOwo+ID4gKwlJOTE1X1dSSVRFKE1HX1BMTF9ESVYxKHBvcnQp LCBod19zdGF0ZS0+bWdfcGxsX2RpdjEpOwo+ID4gKwlJOTE1X1dSSVRFKE1HX1BMTF9MRihwb3J0 KSwgaHdfc3RhdGUtPm1nX3BsbF9sZik7Cj4gPiArCUk5MTVfV1JJVEUoTUdfUExMX0ZSQUNfTE9D Syhwb3J0KSwgaHdfc3RhdGUtCj4gPiA+bWdfcGxsX2ZyYWNfbG9jayk7Cj4gPiArCUk5MTVfV1JJ VEUoTUdfUExMX1NTQyhwb3J0KSwgaHdfc3RhdGUtPm1nX3BsbF9zc2MpOwo+ID4gKwlJOTE1X1dS SVRFKE1HX1BMTF9CSUFTKHBvcnQpLCBod19zdGF0ZS0+bWdfcGxsX2JpYXMpOwo+ID4gKwlJOTE1 X1dSSVRFKE1HX1BMTF9URENfQ09MRFNUX0JJQVMocG9ydCksCj4gPiArCQkgICBod19zdGF0ZS0+ bWdfcGxsX3RkY19jb2xkc3RfYmlhcyk7Cj4gPiArCVBPU1RJTkdfUkVBRChNR19QTExfVERDX0NP TERTVF9CSUFTKHBvcnQpKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaWNsX3BsbF9l bmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCSAgIHN0cnVj dCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ID4gK3sKPiA+ICsJY29uc3QgZW51bSBpbnRlbF9k cGxsX2lkIGlkID0gcGxsLT5pbmZvLT5pZDsKPiA+ICsJaTkxNV9yZWdfdCBlbmFibGVfcmVnID0g aWNsX3BsbF9pZF90b19lbmFibGVfcmVnKGlkKTsKPiA+ICsJdWludDMyX3QgdmFsOwo+ID4gKwo+ ID4gKwl2YWwgPSBJOTE1X1JFQUQoZW5hYmxlX3JlZyk7Cj4gPiArCXZhbCB8PSBQTExfUE9XRVJf RU5BQkxFOwo+ID4gKwlJOTE1X1dSSVRFKGVuYWJsZV9yZWcsIHZhbCk7Cj4gPiArCj4gPiArCS8q Cj4gPiArCSAqIFRoZSBzcGVjIHNheXMgd2UgbmVlZCB0byAid2FpdCIgYnV0IGl0IGFsc28gc2F5 cyBpdAo+ID4gc2hvdWxkIGJlCj4gPiArCSAqIGltbWVkaWF0ZS4KPiA+ICsJICovCj4gPiArCWlm IChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwgZW5hYmxlX3JlZywKPiA+IFBMTF9Q T1dFUl9TVEFURSwKPiA+ICsJCQkJICAgIFBMTF9QT1dFUl9TVEFURSwgMSkpCj4gPiArCQlEUk1f RVJST1IoIlBMTCAlZCBQb3dlciBub3QgZW5hYmxlZFxuIiwgaWQpOwo+ID4gKwo+ID4gKwlzd2l0 Y2ggKGlkKSB7Cj4gPiArCWNhc2UgRFBMTF9JRF9JQ0xfRFBMTDA6Cj4gPiArCWNhc2UgRFBMTF9J RF9JQ0xfRFBMTDE6Cj4gPiArCQlpY2xfZHBsbF93cml0ZShkZXZfcHJpdiwgcGxsKTsKPiA+ICsJ CWJyZWFrOwo+ID4gKwljYXNlIERQTExfSURfSUNMX01HUExMMToKPiA+ICsJY2FzZSBEUExMX0lE X0lDTF9NR1BMTDI6Cj4gPiArCWNhc2UgRFBMTF9JRF9JQ0xfTUdQTEwzOgo+ID4gKwljYXNlIERQ TExfSURfSUNMX01HUExMNDoKPiA+ICsJCWljbF9tZ19wbGxfd3JpdGUoZGV2X3ByaXYsIHBsbCk7 Cj4gPiArCQlicmVhazsKPiA+ICsJZGVmYXVsdDoKPiA+ICsJCU1JU1NJTkdfQ0FTRShpZCk7Cj4g PiArCX0KPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogRFZGUyBwcmUgc2VxdWVuY2Ugd291bGQgYmUg aGVyZSwgYnV0IGluIG91ciBkcml2ZXIgdGhlCj4gPiBjZGNsayBjb2RlCj4gPiArCSAqIHBhdGhz IHNob3VsZCBhbHJlYWR5IGJlIHNldHRpbmcgdGhlIGFwcHJvcHJpYXRlCj4gPiB2b2x0YWdlLCBo ZW5jZSB3ZSBkbwo+ID4gKwkgKiBub3RoaWduIGhlcmUuCj4gPiArCSAqLwo+ID4gKwo+ID4gKwl2 YWwgPSBJOTE1X1JFQUQoZW5hYmxlX3JlZyk7Cj4gPiArCXZhbCB8PSBQTExfRU5BQkxFOwo+ID4g KwlJOTE1X1dSSVRFKGVuYWJsZV9yZWcsIHZhbCk7Cj4gPiArCj4gPiArCWlmIChpbnRlbF93YWl0 X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwgZW5hYmxlX3JlZywKPiA+IFBMTF9MT0NLLCBQTExfTE9D SywKPiA+ICsJCQkJICAgIDEpKSAvKiA2MDB1cyBhY3R1YWxseS4gKi8KPiA+ICsJCURSTV9FUlJP UigiUExMICVkIG5vdCBsb2NrZWRcbiIsIGlkKTsKPiA+ICsKPiA+ICsJLyogRFZGUyBwb3N0IHNl cXVlbmNlIHdvdWxkIGJlIGhlcmUuIFNlZSB0aGUgY29tbWVudAo+ID4gYWJvdmUuICovCj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGljbF9wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAq cGxsKQo+ID4gK3sKPiA+ICsJY29uc3QgZW51bSBpbnRlbF9kcGxsX2lkIGlkID0gcGxsLT5pbmZv LT5pZDsKPiA+ICsJaTkxNV9yZWdfdCBlbmFibGVfcmVnID0gaWNsX3BsbF9pZF90b19lbmFibGVf cmVnKGlkKTsKPiA+ICsJdWludDMyX3QgdmFsOwo+ID4gKwo+ID4gKwkvKiBUaGUgZmlyc3Qgc3Rl cHMgYXJlIGRvbmUgYnkgaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZSgpLgo+ID4gKi8KPiA+ICsKPiA+ ICsJLyoKPiA+ICsJICogRFZGUyBwcmUgc2VxdWVuY2Ugd291bGQgYmUgaGVyZSwgYnV0IGluIG91 ciBkcml2ZXIgdGhlCj4gPiBjZGNsayBjb2RlCj4gPiArCSAqIHBhdGhzIHNob3VsZCBhbHJlYWR5 IGJlIHNldHRpbmcgdGhlIGFwcHJvcHJpYXRlCj4gPiB2b2x0YWdlLCBoZW5jZSB3ZSBkbwo+ID4g KwkgKiBub3RoaWduIGhlcmUuCj4gPiArCSAqLwo+ID4gKwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQo ZW5hYmxlX3JlZyk7Cj4gPiArCXZhbCAmPSB+UExMX0VOQUJMRTsKPiA+ICsJSTkxNV9XUklURShl bmFibGVfcmVnLCB2YWwpOwo+ID4gKwo+ID4gKwkvKiBUaW1lb3V0IGlzIGFjdHVhbGx5IDF1cy4g Ki8KPiA+ICsJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBlbmFibGVfcmVn LAo+ID4gUExMX0xPQ0ssIDAsIDEpKQo+ID4gKwkJRFJNX0VSUk9SKCJQTEwgJWQgbG9ja2VkXG4i LCBpZCk7Cj4gPiArCj4gPiArCS8qIERWRlMgcG9zdCBzZXF1ZW5jZSB3b3VsZCBiZSBoZXJlLiBT ZWUgdGhlIGNvbW1lbnQKPiA+IGFib3ZlLiAqLwo+ID4gKwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQo ZW5hYmxlX3JlZyk7Cj4gPiArCXZhbCAmPSB+UExMX1BPV0VSX0VOQUJMRTsKPiA+ICsJSTkxNV9X UklURShlbmFibGVfcmVnLCB2YWwpOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBUaGUgc3BlYyBz YXlzIHdlIG5lZWQgdG8gIndhaXQiIGJ1dCBpdCBhbHNvIHNheXMgaXQKPiA+IHNob3VsZCBiZQo+ ID4gKwkgKiBpbW1lZGlhdGUuCj4gPiArCSAqLwo+ID4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoZGV2X3ByaXYsIGVuYWJsZV9yZWcsCj4gPiBQTExfUE9XRVJfU1RBVEUsIDAsCj4gPiAr CQkJCSAgICAxKSkKPiA+ICsJCURSTV9FUlJPUigiUExMICVkIFBvd2VyIG5vdCBkaXNhYmxlZFxu IiwgaWQpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpY2xfZHVtcF9od19zdGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJICAgICAgc3RydWN0IGlu dGVsX2RwbGxfaHdfc3RhdGUKPiA+ICpod19zdGF0ZSkKPiA+ICt7Cj4gPiArCURSTV9ERUJVR19L TVMoImRwbGxfaHdfc3RhdGU6IGNmZ2NyMDogMHgleCwgY2ZnY3IxOiAweCV4LAo+ID4gIgo+ID4g KwkJICAgICAgIm1nX3JlZmNsa2luX2N0bDogMHgleCwKPiA+IGhnX2Nsa3RvcDJfY29yZWNsa2N0 bDE6IDB4JXgsICIKPiA+ICsJCSAgICAgICJtZ19jbGt0b3AyX2hzY2xrY3RsOiAweCV4LCBtZ19w bGxfZGl2MDoKPiA+IDB4JXgsICIKPiA+ICsJCSAgICAgICJtZ19wbGxfZGl2MjogMHgleCwgbWdf cGxsX2xmOiAweCV4LCAiCj4gPiArCQkgICAgICAibWdfcGxsX2ZyYWNfbG9jazogMHgleCwgbWdf cGxsX3NzYzogMHgleCwgIgo+ID4gKwkJICAgICAgIm1nX3BsbF9iaWFzOiAweCV4LCBtZ19wbGxf dGRjX2NvbGRzdF9iaWFzOgo+ID4gMHgleFxuIiwKPiA+ICsJCSAgICAgIGh3X3N0YXRlLT5jZmdj cjAsIGh3X3N0YXRlLT5jZmdjcjEsCj4gPiArCQkgICAgICBod19zdGF0ZS0+bWdfcmVmY2xraW5f Y3RsLAo+ID4gKwkJICAgICAgaHdfc3RhdGUtPm1nX2Nsa3RvcDJfY29yZWNsa2N0bDEsCj4gPiAr CQkgICAgICBod19zdGF0ZS0+bWdfY2xrdG9wMl9oc2Nsa2N0bCwKPiA+ICsJCSAgICAgIGh3X3N0 YXRlLT5tZ19wbGxfZGl2MCwKPiA+ICsJCSAgICAgIGh3X3N0YXRlLT5tZ19wbGxfZGl2MSwKPiA+ ICsJCSAgICAgIGh3X3N0YXRlLT5tZ19wbGxfbGYsCj4gPiArCQkgICAgICBod19zdGF0ZS0+bWdf cGxsX2ZyYWNfbG9jaywKPiA+ICsJCSAgICAgIGh3X3N0YXRlLT5tZ19wbGxfc3NjLAo+ID4gKwkJ ICAgICAgaHdfc3RhdGUtPm1nX3BsbF9iaWFzLAo+ID4gKwkJICAgICAgaHdfc3RhdGUtPm1nX3Bs bF90ZGNfY29sZHN0X2JpYXMpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsX2Z1bmNzIGljbF9wbGxfZnVuY3MgPSB7Cj4gPiArCS5lbmFibGUg PSBpY2xfcGxsX2VuYWJsZSwKPiA+ICsJLmRpc2FibGUgPSBpY2xfcGxsX2Rpc2FibGUsCj4gPiAr CS5nZXRfaHdfc3RhdGUgPSBpY2xfcGxsX2dldF9od19zdGF0ZSwKPiA+ICt9Owo+ID4gKwo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9pbmZvIGljbF9wbGxzW10gPSB7Cj4gPiArCXsgIkRQ TEwgMCIsICAgJmljbF9wbGxfZnVuY3MsIERQTExfSURfSUNMX0RQTEwwLCAgMCB9LAo+ID4gKwl7 ICJEUExMIDEiLCAgICZpY2xfcGxsX2Z1bmNzLCBEUExMX0lEX0lDTF9EUExMMSwgIDAgfSwKPiA+ ICsJeyAiTUcgUExMIDEiLCAmaWNsX3BsbF9mdW5jcywgRFBMTF9JRF9JQ0xfTUdQTEwxLCAwIH0s Cj4gPiArCXsgIk1HIFBMTCAyIiwgJmljbF9wbGxfZnVuY3MsIERQTExfSURfSUNMX01HUExMMiwg MCB9LAo+ID4gKwl7ICJNRyBQTEwgMyIsICZpY2xfcGxsX2Z1bmNzLCBEUExMX0lEX0lDTF9NR1BM TDMsIDAgfSwKPiA+ICsJeyAiTUcgUExMIDQiLCAmaWNsX3BsbF9mdW5jcywgRFBMTF9JRF9JQ0xf TUdQTEw0LCAwIH0sCj4gPiArCXsgfSwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZWxfZHBsbF9tZ3IgaWNsX3BsbF9tZ3IgPSB7Cj4gPiArCS5kcGxsX2luZm8gPSBp Y2xfcGxscywKPiA+ICsJLmdldF9kcGxsID0gaWNsX2dldF9kcGxsLAo+ID4gKwkuZHVtcF9od19z dGF0ZSA9IGljbF9kdW1wX2h3X3N0YXRlLAo+ID4gK307Cj4gPiArCj4gPiAgLyoqCj4gPiAgICog aW50ZWxfc2hhcmVkX2RwbGxfaW5pdCAtIEluaXRpYWxpemUgc2hhcmVkIERQTExzCj4gPiAgICog QGRldjogZHJtIGRldmljZQo+ID4gQEAgLTI0MTIsNyArMjcyMCw5IEBAIHZvaWQgaW50ZWxfc2hh cmVkX2RwbGxfaW5pdChzdHJ1Y3QgZHJtX2RldmljZQo+ID4gKmRldikKPiA+ICAJY29uc3Qgc3Ry dWN0IGRwbGxfaW5mbyAqZHBsbF9pbmZvOwo+ID4gIAlpbnQgaTsKPiA+ICAKPiA+IC0JaWYgKElT X0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4g PiArCQlkcGxsX21nciA9ICZpY2xfcGxsX21ncjsKPiA+ICsJZWxzZSBpZiAoSVNfQ0FOTk9OTEFL RShkZXZfcHJpdikpCj4gPiAgCQlkcGxsX21nciA9ICZjbmxfcGxsX21ncjsKPiA+ICAJZWxzZSBp ZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4gPiAgCQlkcGxsX21nciA9ICZza2xfcGxsX21ncjsK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4g PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmgKPiA+IGluZGV4IDRmZWJm YWE5MGJkZS4uN2EwY2Q1NjRhOWVlIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBsbF9tZ3IuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBsbF9tZ3IuaAo+ID4gQEAgLTEwMyw2ICsxMDMsMzIgQEAgZW51bSBpbnRlbF9kcGxsX2lkIHsK PiA+ICAJICogQERQTExfSURfU0tMX0RQTEwzOiBTS0wgYW5kIGxhdGVyIERQTEwzCj4gPiAgCSAq Lwo+ID4gIAlEUExMX0lEX1NLTF9EUExMMyA9IDMsCj4gPiArCj4gPiArCj4gPiArCS8qKgo+ID4g KwkgKiBARFBMTF9JRF9JQ0xfRFBMTDA6IElDTCBjb21ibyBQSFkgRFBMTDAKPiA+ICsJICovCj4g PiArCURQTExfSURfSUNMX0RQTEwwID0gMCwKPiA+ICsJLyoqCj4gPiArCSAqIEBEUExMX0lEX0lD TF9EUExMMTogSUNMIGNvbWJvIFBIWSBEUExMMQo+ID4gKwkgKi8KPiA+ICsJRFBMTF9JRF9JQ0xf RFBMTDEgPSAxLAo+ID4gKwkvKioKPiA+ICsJICogQERQTExfSURfSUNMX01HUExMMTogSUNMIE1H IFBMTCAxIHBvcnQgMSAoQykKPiA+ICsJICovCj4gPiArCURQTExfSURfSUNMX01HUExMMSA9IDIs Cj4gPiArCS8qKgo+ID4gKwkgKiBARFBMTF9JRF9JQ0xfTUdQTEwyOiBJQ0wgTUcgUExMIDEgcG9y dCAyIChEKQo+ID4gKwkgKi8KPiA+ICsJRFBMTF9JRF9JQ0xfTUdQTEwyID0gMywKPiA+ICsJLyoq Cj4gPiArCSAqIEBEUExMX0lEX0lDTF9NR1BMTDM6IElDTCBNRyBQTEwgMSBwb3J0IDMgKEUpCj4g PiArCSAqLwo+ID4gKwlEUExMX0lEX0lDTF9NR1BMTDMgPSA0LAo+ID4gKwkvKioKPiA+ICsJICog QERQTExfSURfSUNMX01HUExMNDogSUNMIE1HIFBMTCAxIHBvcnQgNCAoRikKPiA+ICsJICovCj4g PiArCURQTExfSURfSUNMX01HUExMNCA9IDUsCj4gPiAgfTsKPiA+ICAjZGVmaW5lIEk5MTVfTlVN X1BMTFMgNgo+ID4gIAo+ID4gQEAgLTEzNSw2ICsxNjEsMjEgQEAgc3RydWN0IGludGVsX2RwbGxf aHdfc3RhdGUgewo+ID4gIAkvKiBieHQgKi8KPiA+ICAJdWludDMyX3QgZWJiMCwgZWJiNCwgcGxs MCwgcGxsMSwgcGxsMiwgcGxsMywgcGxsNiwgcGxsOCwKPiA+IHBsbDksIHBsbDEwLAo+ID4gIAkJ IHBjc2R3MTI7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIElDTCB1c2VzIHRoZSBmb2xsb3dpbmcs IGFscmVhZHkgZGVmaW5lZDoKPiA+ICsJICogdWludDMyX3QgY2ZnY3IwLCBjZmdjcjE7Cj4gPiAr CSAqLwo+ID4gKwl1aW50MzJfdCBtZ19yZWZjbGtpbl9jdGw7Cj4gPiArCXVpbnQzMl90IG1nX2Ns a3RvcDJfY29yZWNsa2N0bDE7Cj4gPiArCXVpbnQzMl90IG1nX2Nsa3RvcDJfaHNjbGtjdGw7Cj4g PiArCXVpbnQzMl90IG1nX3BsbF9kaXYwOwo+ID4gKwl1aW50MzJfdCBtZ19wbGxfZGl2MTsKPiA+ ICsJdWludDMyX3QgbWdfcGxsX2xmOwo+ID4gKwl1aW50MzJfdCBtZ19wbGxfZnJhY19sb2NrOwo+ ID4gKwl1aW50MzJfdCBtZ19wbGxfc3NjOwo+ID4gKwl1aW50MzJfdCBtZ19wbGxfYmlhczsKPiA+ ICsJdWludDMyX3QgbWdfcGxsX3RkY19jb2xkc3RfYmlhczsKPiA+ICB9Owo+ID4gIAo+ID4gIC8q Kgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBkMTQ1MmZkMmE1OGQu LmQ3NzMwNjk1MDY3NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAg LTEzOTMsNiArMTM5MywxMiBAQCB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50 ZWxfZHAKPiA+ICppbnRlbF9kcCk7Cj4gPiAgdTggaW50ZWxfZGRpX2RwX3ZvbHRhZ2VfbWF4KHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKTsKPiA+ICBpbnQgaW50ZWxfZGRpX3RvZ2dsZV9o ZGNwX3NpZ25hbGxpbmcoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ICppbnRlbF9lbmNvZGVyLAo+ ID4gIAkJCQkgICAgIGJvb2wgZW5hYmxlKTsKPiA+ICt2b2lkIGljbF9tYXBfcGxsc190b19wb3J0 cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiArCQkJICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gPiArCQkJICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSk7Cj4gPiArdm9pZCBpY2xfdW5tYXBfcGxsc190b19wb3J0cyhzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiA+ICsJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOwo+ID4gIAo+ ID4gIHVuc2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlcgo+ID4gKmZiLAo+ID4gIAkJCQkgICBpbnQgcGxhbmUsIHVuc2lnbmVkIGludAo+ ID4gaGVpZ2h0KTsKPiA+IC0tIAo+ID4gMi4xNC4zCj4gPiAKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==