From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: Re: [PATCH 02/14] iommu/arm-smmu: Add support for TTBR1 Date: Fri, 2 Mar 2018 11:28:29 -0700 Message-ID: <20180302182829.GC22596@jcrouse-lnx.qualcomm.com> References: <20180221225924.30737-1-jcrouse@codeaurora.org> <20180221225924.30737-3-jcrouse@codeaurora.org> <155a85ea-1c66-ce0b-06b3-d3933d6f54df@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <155a85ea-1c66-ce0b-06b3-d3933d6f54df-5wv7dgnIgG8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Robin Murphy Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMDIsIDIwMTggYXQgMDU6NTc6MjFQTSArMDAwMCwgUm9iaW4gTXVycGh5IHdy b3RlOgo+IE9uIDIxLzAyLzE4IDIyOjU5LCBKb3JkYW4gQ3JvdXNlIHdyb3RlOgo+ID5BbGxvdyBh IFNNTVUgZGV2aWNlIHRvIG9wdCBpbnRvIGFsbG9jYXRpbmcgYSBUVEJSMSBwYWdldGFibGUuCj4g Pgo+ID5UaGUgc2l6ZSBvZiB0aGUgVFRCUjEgcmVnaW9uIHdpbGwgYmUgdGhlIHNhbWUgYXMKPiA+ dGhlIFRUQlIwIHNpemUgd2l0aCB0aGUgc2lnbiBleHRlbnNpb24gYml0IHNldCBvbiB0aGUgaGln aGVzdAo+ID5iaXQgaW4gdGhlIHJlZ2lvbiB1bmxlc3MgdGhlIHVwc3RyZWFtIHNpemUgaXMgNDkg Yml0cyBhbmQgdGhlbgo+ID50aGUgc2lnbi1leHRlbnNpb24gYml0IHdpbGwgYmUgc2V0IG9uIHRo ZSA0OXRoIGJpdC4KPiAKPiBVbSwgaXNuJ3QgdGhlIDQ5dGggYml0IHN0aWxsICJ0aGUgaGlnaGVz dCBiaXQiIGlmIHRoZSBhZGRyZXNzIHNpemUKPiBpcyA0OSBiaXRzPyA7KQoKSW5kZWVkLiA6KQoK PiA+VGhlIG1hcC91bm1hcCBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSB1c2UgdGhlIGFw cHJvcHJpYXRlCj4gPnBhZ2V0YWJsZSBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGlvdmEgYW5kIHRo ZSBleGlzdGluZyBtYXNrLgo+ID4KPiA+U2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8amNy b3VzZUBjb2RlYXVyb3JhLm9yZz4KPiA+LS0tCj4gPiAgZHJpdmVycy9pb21tdS9hcm0tc21tdS1y ZWdzLmggIHwgICAyIC0KPiA+ICBkcml2ZXJzL2lvbW11L2FybS1zbW11LmMgICAgICAgfCAgMjIg KysrKy0tCj4gPiAgZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5jIHwgMTYwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gPiAgZHJpdmVycy9pb21tdS9pby1w Z3RhYmxlLWFybS5oIHwgIDIwICsrKysrKwo+ID4gIGRyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS5o ICAgICB8ICAxNiArKysrLQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTkyIGluc2VydGlvbnMoKyks IDI4IGRlbGV0aW9ucygtKQo+ID4KPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtLXNt bXUtcmVncy5oIGIvZHJpdmVycy9pb21tdS9hcm0tc21tdS1yZWdzLmgKPiA+aW5kZXggYTEyMjZl NGFiNWY4Li4wY2U4NWQ1YjIyZTkgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtLXNt bXUtcmVncy5oCj4gPisrKyBiL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oCj4gPkBAIC0x OTMsOCArMTkzLDYgQEAgZW51bSBhcm1fc21tdV9zMmNyX3ByaXZjZmcgewo+ID4gICNkZWZpbmUg UkVTVU1FX1JFVFJZCQkJKDAgPDwgMCkKPiA+ICAjZGVmaW5lIFJFU1VNRV9URVJNSU5BVEUJCSgx IDw8IDApCj4gPi0jZGVmaW5lIFRUQkNSMl9TRVBfU0hJRlQJCTE1Cj4gPi0jZGVmaW5lIFRUQkNS Ml9TRVBfVVBTVFJFQU0JCSgweDcgPDwgVFRCQ1IyX1NFUF9TSElGVCkKPiA+ICAjZGVmaW5lIFRU QkNSMl9BUwkJCSgxIDw8IDQpCj4gPiAgI2RlZmluZSBUVEJSbl9BU0lEX1NISUZUCQk0OAo+ID5k aWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hcm0tc21tdS5jIGIvZHJpdmVycy9pb21tdS9hcm0t c21tdS5jCj4gPmluZGV4IDY5ZTdjNjA3OTJhOC4uZWJmYTU5YjU5NjIyIDEwMDY0NAo+ID4tLS0g YS9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKPiA+KysrIGIvZHJpdmVycy9pb21tdS9hcm0tc21t dS5jCj4gPkBAIC0yNDgsNiArMjQ4LDcgQEAgc3RydWN0IGFybV9zbW11X2RvbWFpbiB7Cj4gPiAg CWVudW0gYXJtX3NtbXVfZG9tYWluX3N0YWdlCXN0YWdlOwo+ID4gIAlzdHJ1Y3QgbXV0ZXgJCQlp bml0X211dGV4OyAvKiBQcm90ZWN0cyBzbW11IHBvaW50ZXIgKi8KPiA+ICAJc3BpbmxvY2tfdAkJ CWNiX2xvY2s7IC8qIFNlcmlhbGlzZXMgQVRTMSogb3BzIGFuZCBUTEIgc3luY3MgKi8KPiA+Kwl1 MzIgYXR0cmlidXRlczsKPiA+ICAJc3RydWN0IGlvbW11X2RvbWFpbgkJZG9tYWluOwo+ID4gIH07 Cj4gPkBAIC01OTgsNyArNTk5LDYgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVfaW5pdF9jb250ZXh0 X2Jhbmsoc3RydWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4sCj4gPiAgCQl9IGVsc2Ug ewo+ID4gIAkJCWNiLT50Y3JbMF0gPSBwZ3RibF9jZmctPmFybV9scGFlX3MxX2NmZy50Y3I7Cj4g PiAgCQkJY2ItPnRjclsxXSA9IHBndGJsX2NmZy0+YXJtX2xwYWVfczFfY2ZnLnRjciA+PiAzMjsK PiA+LQkJCWNiLT50Y3JbMV0gfD0gVFRCQ1IyX1NFUF9VUFNUUkVBTTsKPiA+ICAJCQlpZiAoY2Zn LT5mbXQgPT0gQVJNX1NNTVVfQ1RYX0ZNVF9BQVJDSDY0KQo+ID4gIAkJCQljYi0+dGNyWzFdIHw9 IFRUQkNSMl9BUzsKPiA+ICAJCX0KPiA+QEAgLTcyOSw2ICs3MjksOSBAQCBzdGF0aWMgaW50IGFy bV9zbW11X2luaXRfZG9tYWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAo+ ID4gIAllbnVtIGlvX3BndGFibGVfZm10IGZtdDsKPiA+ICAJc3RydWN0IGFybV9zbW11X2RvbWFp biAqc21tdV9kb21haW4gPSB0b19zbW11X2RvbWFpbihkb21haW4pOwo+ID4gIAlzdHJ1Y3QgYXJt X3NtbXVfY2ZnICpjZmcgPSAmc21tdV9kb21haW4tPmNmZzsKPiA+Kwl1bnNpZ25lZCBpbnQgcXVp cmtzID0KPiA+KwkJc21tdV9kb21haW4tPmF0dHJpYnV0ZXMgJiAoMSA8PCBET01BSU5fQVRUUl9F TkFCTEVfVFRCUjEpID8KPiA+KwkJCUlPX1BHVEFCTEVfUVVJUktfQVJNX1RUQlIxIDogMDsKPiA+ ICAJbXV0ZXhfbG9jaygmc21tdV9kb21haW4tPmluaXRfbXV0ZXgpOwo+ID4gIAlpZiAoc21tdV9k b21haW4tPnNtbXUpCj4gPkBAIC04NTIsNyArODU1LDExIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVf aW5pdF9kb21haW5fY29udGV4dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCj4gPiAgCWVs c2UKPiA+ICAJCWNmZy0+YXNpZCA9IGNmZy0+Y2JuZHggKyBzbW11LT5jYXZpdW1faWRfYmFzZTsK PiA+KwlpZiAoc21tdS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX0NPSEVSRU5UX1dBTEspCj4g PisJCXF1aXJrcyB8PSBJT19QR1RBQkxFX1FVSVJLX05PX0RNQTsKPiA+Kwo+ID4gIAlwZ3RibF9j ZmcgPSAoc3RydWN0IGlvX3BndGFibGVfY2ZnKSB7Cj4gPisJCS5xdWlya3MJCT0gcXVpcmtzLAo+ ID4gIAkJLnBnc2l6ZV9iaXRtYXAJPSBzbW11LT5wZ3NpemVfYml0bWFwLAo+ID4gIAkJLmlhcwkJ PSBpYXMsCj4gPiAgCQkub2FzCQk9IG9hcywKPiA+QEAgLTg2MCw5ICs4NjcsNiBAQCBzdGF0aWMg aW50IGFybV9zbW11X2luaXRfZG9tYWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9t YWluLAo+ID4gIAkJLmlvbW11X2Rldgk9IHNtbXUtPmRldiwKPiA+ICAJfTsKPiA+LQlpZiAoc21t dS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX0NPSEVSRU5UX1dBTEspCj4gPi0JCXBndGJsX2Nm Zy5xdWlya3MgPSBJT19QR1RBQkxFX1FVSVJLX05PX0RNQTsKPiA+LQo+ID4gIAlzbW11X2RvbWFp bi0+c21tdSA9IHNtbXU7Cj4gPiAgCXBndGJsX29wcyA9IGFsbG9jX2lvX3BndGFibGVfb3BzKGZt dCwgJnBndGJsX2NmZywgc21tdV9kb21haW4pOwo+ID4gIAlpZiAoIXBndGJsX29wcykgewo+ID5A QCAtMTQ3Nyw2ICsxNDgxLDEwIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfZG9tYWluX2dldF9hdHRy KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKPiA+ICAJY2FzZSBET01BSU5fQVRUUl9ORVNU SU5HOgo+ID4gIAkJKihpbnQgKilkYXRhID0gKHNtbXVfZG9tYWluLT5zdGFnZSA9PSBBUk1fU01N VV9ET01BSU5fTkVTVEVEKTsKPiA+ICAJCXJldHVybiAwOwo+ID4rCWNhc2UgRE9NQUlOX0FUVFJf RU5BQkxFX1RUQlIxOgo+ID4rCQkqKChpbnQgKilkYXRhKSA9ICEhKHNtbXVfZG9tYWluLT5hdHRy aWJ1dGVzCj4gPisJCQkJCSYgKDEgPDwgRE9NQUlOX0FUVFJfRU5BQkxFX1RUQlIxKSk7Cj4gPisJ CXJldHVybiAwOwo+ID4gIAlkZWZhdWx0Ogo+ID4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gPiAgCX0K PiA+QEAgLTE1MDUsNiArMTUxMywxMiBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RvbWFpbl9zZXRf YXR0cihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCj4gPiAgCQllbHNlCj4gPiAgCQkJc21t dV9kb21haW4tPnN0YWdlID0gQVJNX1NNTVVfRE9NQUlOX1MxOwo+ID4rCQlicmVhazsKPiA+Kwlj YXNlIERPTUFJTl9BVFRSX0VOQUJMRV9UVEJSMToKPiA+KwkJaWYgKCooKGludCAqKWRhdGEpKQo+ ID4rCQkJc21tdV9kb21haW4tPmF0dHJpYnV0ZXMgfD0KPiA+KwkJCQkxIDw8IERPTUFJTl9BVFRS X0VOQUJMRV9UVEJSMTsKPiA+KwkJcmV0ID0gMDsKPiA+ICAJCWJyZWFrOwo+ID4gIAlkZWZhdWx0 Ogo+ID4gIAkJcmV0ID0gLUVOT0RFVjsKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW8t cGd0YWJsZS1hcm0uYyBiL2RyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0uYwo+ID5pbmRleCBm ZmYwYjZiYTBhNjkuLjFiZDAwNDVmMmNiNyAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9pb21tdS9p by1wZ3RhYmxlLWFybS5jCj4gPisrKyBiL2RyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0uYwo+ ID5AQCAtMTUyLDcgKzE1Miw3IEBAIHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlIHsKPiA+ICAJ dW5zaWduZWQgbG9uZwkJcGdfc2hpZnQ7Cj4gPiAgCXVuc2lnbmVkIGxvbmcJCWJpdHNfcGVyX2xl dmVsOwo+ID4tCXZvaWQJCQkqcGdkOwo+ID4rCXZvaWQJCQkqcGdkWzJdOwo+IAo+IFRoaXMgbWln aHQgYmUgcmVhc29uYWJsZSBmb3Igc2hvcnQtZGVzY3JpcHRvciwgYnV0IEkgcmVhbGx5IGRvbid0 Cj4gbGlrZSBpdCBmb3IgTFBBRS4gVGhlIHR3byB0YWJsZXMgYXJlIG1vcmUgb3IgbGVzcyBpbmRl cGVuZGVudCBpbgo+IHRlcm1zIG9mIHNpemUsIGdyYW51bGUsIGV0Yy4sIHNvIHRoaXMgYnJpbmdz IGluIGEgbG90IG9mIGFydGlmaWNpYWwKPiBjb3VwbGluZy4KPiAKPiBJIHRoaW5rIGl0IHdvdWxk IGJlIGEgbG90IGNsZWFuZXIgZm9yIGlvLXBndGFibGUgdG8gaGF2ZSBsaXR0bGUgb3IKPiBubyBr bm93bGVkZ2Ugb2YgdGhpcywgYW5kIGl0IGJlIGRvd24gdG8gdGhlIGNhbGxlciB0byBhbGxvY2F0 ZSB0d28KPiB0YWJsZXMgYW5kIG1lcmdlIHRoZSBUQ1JzLCB0aGVuIGRpc3BhdGNoIG1hcHMvdW5t YXBzIHRvIHRoZQo+IGFwcHJvcHJpYXRlIHRhYmxlIGJ5IGl0c2VsZi4KCk9rYXksIHRoYXQgbWFr ZSBzZW5zZS4gSSdsbCB0cnkgdG8gbW92ZSBhcyBtdWNoIG9mIHRoaXMgaW50byB0aGUgYXJtLXNt bXUgZHJpdmVyCmFzIEkgY2FuLgoKPiA+ICB9Owo+ID4gIHR5cGVkZWYgdTY0IGFybV9scGFlX2lv cHRlOwo+ID5AQCAtMzk0LDIwICszOTQsNDggQEAgc3RhdGljIGFybV9scGFlX2lvcHRlIGFybV9s cGFlX3Byb3RfdG9fcHRlKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRhLAo+ID4gIAly ZXR1cm4gcHRlOwo+ID4gIH0KPiA+K3N0YXRpYyBpbmxpbmUgYXJtX2xwYWVfaW9wdGUgKgo+ID4r YXJtX2xwYWVfZ2V0X3RhYmxlKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRhLCB1bnNp Z25lZCBsb25nIGlvdmEpCj4gPit7Cj4gPisJc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcgPSAm ZGF0YS0+aW9wLmNmZzsKPiA+Kwo+ID4rCWlmIChjZmctPnF1aXJrcyAmIElPX1BHVEFCTEVfUVVJ UktfQVJNX1RUQlIxKSAgewo+ID4rCQl1bnNpZ25lZCBsb25nIG1hc2s7Cj4gPisKPiA+KwkJLyoK PiA+KwkJICogaWYgaWFzIGlzIDQ4IGl0IHJlYWxseSBtZWFucyB0aGF0IGJpdCA0OCBpcyB0aGUg c2lnbgo+ID4rCQkgKiBleHRlbnNpb24gYml0LCBvdGhlcndpc2UgdGhlIHNpZ24gZXh0ZW5zaW9u IGJpdCBpcyBpYXMgLSAxCj4gPisJCSAqIChmb3IgZXhhbXBsZSwgYml0IDMxIGZvciBpYXMgMzIp Cj4gPisJCSAqLwo+ID4rCQltYXNrID0gKGNmZy0+aWFzID09IDQ4KSA/ICgxVUwgPDwgNDgpIDoK PiA+KwkJCSgxVUwgPDwgKGNmZy0+aWFzIC0gMSkpOwo+IAo+IFRoaXMgd291bGQgbG9vayBsZXNz IHNpbGx5IGlmIGl0IHdhcyBkb25lIGluIHRoZSBTTU1VIGRyaXZlciB3aGVyZQo+IHRoZSBvcmln aW5hbCBVQlMgaW5mb3JtYXRpb24gaXMgZGlyZWN0bHkgdG8gaGFuZCwgaW5zdGVhZCBvZiBoYXZp bmcKPiB0byByZXZlcnNlLWVuZ2luZWVyIGl0IGZyb20gdGhlIHBhZ2V0YWJsZSBjb25maWcgKG9u IGV2ZXJ5Cj4gb3BlcmF0aW9uLCBubyBsZXNzKS4KPiAKPiBUaGF0IHNhaWQsIGl0J3Mgc3RpbGwg Z29pbmcgdG8gYmUgcHJldHR5IGZyYWdpbGUgaW4gZ2VuZXJhbCwgc2luY2UKPiBvbiBTTU1VdjEg dGhlIFVCUyBpcyBtZXJlbHkgZ3Vlc3NlZCBhdCBmcm9tIHRoZSBJUEEgc2l6ZSwgYW5kIGVpdGhl cgo+IHdheSBhbGwgaXQgdGVsbHMgeW91IGlzIHdoYXQgdGhlIFNNTVUga25vd3MgYWJvdXQgaXRz IG93bgo+IGludGVyZmFjZXM7IGl0IGRvZXNuJ3QgaGF2ZSBhIGNsdWUgaG93IG1hbnkgYml0cyB0 aGUgbWFzdGVycwo+IGNvbm5lY3RlZCB0byBzYWlkIGludGVyZmFjZShzKSBhcmUgYWN0dWFsbHkg Y2FwYWJsZSBvZiBkcml2aW5nLgoKSG9wZWZ1bGx5IEkgY2FuIG1ha2UgaXQgYSBsaXR0bGUgYml0 IG1vcmUgcm9idXN0IGlmIHdlIG1vdmUgaXQgaW50byBhcm0tc21tdQp3aXRoIGFjY2VzcyB0byBt b3JlIHRhcmdldCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KCj4gPisKPiA+KwkJaWYgKGlvdmEgJiBt YXNrKQo+ID4rCQkJcmV0dXJuIGRhdGEtPnBnZFsxXTsKPiA+Kwl9Cj4gPisKPiA+KwlyZXR1cm4g ZGF0YS0+cGdkWzBdOwo+ID4rfQo+ID4rCj4gPiAgc3RhdGljIGludCBhcm1fbHBhZV9tYXAoc3Ry dWN0IGlvX3BndGFibGVfb3BzICpvcHMsIHVuc2lnbmVkIGxvbmcgaW92YSwKPiA+ICAJCQlwaHlz X2FkZHJfdCBwYWRkciwgc2l6ZV90IHNpemUsIGludCBpb21tdV9wcm90KQo+ID4gIHsKPiA+ICAJ c3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEgPSBpb19wZ3RhYmxlX29wc190b19kYXRh KG9wcyk7Cj4gPi0JYXJtX2xwYWVfaW9wdGUgKnB0ZXAgPSBkYXRhLT5wZ2Q7Cj4gPisJYXJtX2xw YWVfaW9wdGUgKnB0ZXA7Cj4gPiAgCWludCByZXQsIGx2bCA9IEFSTV9MUEFFX1NUQVJUX0xWTChk YXRhKTsKPiA+ICAJYXJtX2xwYWVfaW9wdGUgcHJvdDsKPiA+KwlwdGVwID0gYXJtX2xwYWVfZ2V0 X3RhYmxlKGRhdGEsIGlvdmEpOwo+ID4rCj4gPiAgCS8qIElmIG5vIGFjY2VzcywgdGhlbiBub3Ro aW5nIHRvIGRvICovCj4gPiAgCWlmICghKGlvbW11X3Byb3QgJiAoSU9NTVVfUkVBRCB8IElPTU1V X1dSSVRFKSkpCj4gPiAgCQlyZXR1cm4gMDsKPiA+LQlpZiAoV0FSTl9PTihpb3ZhID49ICgxVUxM IDw8IGRhdGEtPmlvcC5jZmcuaWFzKSB8fAo+ID4tCQkgICAgcGFkZHIgPj0gKDFVTEwgPDwgZGF0 YS0+aW9wLmNmZy5vYXMpKSkKPiA+KwlpZiAoV0FSTl9PTihwYWRkciA+PSAoMVVMTCA8PCBkYXRh LT5pb3AuY2ZnLm9hcykpKQo+ID4rCQlyZXR1cm4gLUVSQU5HRTsKPiA+Kwo+ID4rCWlmIChXQVJO X09OKCEoZGF0YS0+aW9wLmNmZy5xdWlya3MgJiBJT19QR1RBQkxFX1FVSVJLX0FSTV9UVEJSMSkg JiYKPiA+KwkJICAgIGlvdmEgPj0gKDFVTEwgPDwgZGF0YS0+aW9wLmNmZy5pYXMpKSkKPiA+ICAJ CXJldHVybiAtRVJBTkdFOwo+ID4gIAlwcm90ID0gYXJtX2xwYWVfcHJvdF90b19wdGUoZGF0YSwg aW9tbXVfcHJvdCk7Cj4gPkBAIC00NTYsNyArNDg0LDEwIEBAIHN0YXRpYyB2b2lkIGFybV9scGFl X2ZyZWVfcGd0YWJsZShzdHJ1Y3QgaW9fcGd0YWJsZSAqaW9wKQo+ID4gIHsKPiA+ICAJc3RydWN0 IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEgPSBpb19wZ3RhYmxlX3RvX2RhdGEoaW9wKTsKPiA+ LQlfX2FybV9scGFlX2ZyZWVfcGd0YWJsZShkYXRhLCBBUk1fTFBBRV9TVEFSVF9MVkwoZGF0YSks IGRhdGEtPnBnZCk7Cj4gPisJX19hcm1fbHBhZV9mcmVlX3BndGFibGUoZGF0YSwgQVJNX0xQQUVf U1RBUlRfTFZMKGRhdGEpLCBkYXRhLT5wZ2RbMF0pOwo+ID4rCWlmIChkYXRhLT5wZ2RbMV0pCj4g PisJCV9fYXJtX2xwYWVfZnJlZV9wZ3RhYmxlKGRhdGEsIEFSTV9MUEFFX1NUQVJUX0xWTChkYXRh KSwKPiA+KwkJCWRhdGEtPnBnZFsxXSk7Cj4gPiAgCWtmcmVlKGRhdGEpOwo+ID4gIH0KPiA+QEAg LTU2NCwxMCArNTk1LDEzIEBAIHN0YXRpYyBpbnQgYXJtX2xwYWVfdW5tYXAoc3RydWN0IGlvX3Bn dGFibGVfb3BzICpvcHMsIHVuc2lnbmVkIGxvbmcgaW92YSwKPiA+ICAJCQkgIHNpemVfdCBzaXpl KQo+ID4gIHsKPiA+ICAJc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEgPSBpb19wZ3Rh YmxlX29wc190b19kYXRhKG9wcyk7Cj4gPi0JYXJtX2xwYWVfaW9wdGUgKnB0ZXAgPSBkYXRhLT5w Z2Q7Cj4gPisJYXJtX2xwYWVfaW9wdGUgKnB0ZXA7Cj4gPiAgCWludCBsdmwgPSBBUk1fTFBBRV9T VEFSVF9MVkwoZGF0YSk7Cj4gPi0JaWYgKFdBUk5fT04oaW92YSA+PSAoMVVMTCA8PCBkYXRhLT5p b3AuY2ZnLmlhcykpKQo+ID4rCXB0ZXAgPSBhcm1fbHBhZV9nZXRfdGFibGUoZGF0YSwgaW92YSk7 Cj4gPisKPiA+KwlpZiAoV0FSTl9PTighKGRhdGEtPmlvcC5jZmcucXVpcmtzICYgSU9fUEdUQUJM RV9RVUlSS19BUk1fVFRCUjEpICYmCj4gPisJCSAgICBpb3ZhID49ICgxVUxMIDw8IGRhdGEtPmlv cC5jZmcuaWFzKSkpCj4gPiAgCQlyZXR1cm4gMDsKPiA+ICAJcmV0dXJuIF9fYXJtX2xwYWVfdW5t YXAoZGF0YSwgaW92YSwgc2l6ZSwgbHZsLCBwdGVwKTsKPiA+QEAgLTU3Nyw5ICs2MTEsMTEgQEAg c3RhdGljIHBoeXNfYWRkcl90IGFybV9scGFlX2lvdmFfdG9fcGh5cyhzdHJ1Y3QgaW9fcGd0YWJs ZV9vcHMgKm9wcywKPiA+ICAJCQkJCSB1bnNpZ25lZCBsb25nIGlvdmEpCj4gPiAgewo+ID4gIAlz dHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YSA9IGlvX3BndGFibGVfb3BzX3RvX2RhdGEo b3BzKTsKPiA+LQlhcm1fbHBhZV9pb3B0ZSBwdGUsICpwdGVwID0gZGF0YS0+cGdkOwo+ID4rCWFy bV9scGFlX2lvcHRlIHB0ZSwgKnB0ZXA7Cj4gPiAgCWludCBsdmwgPSBBUk1fTFBBRV9TVEFSVF9M VkwoZGF0YSk7Cj4gPisJcHRlcCA9IGFybV9scGFlX2dldF90YWJsZShkYXRhLCBpb3ZhKTsKPiA+ Kwo+ID4gIAlkbyB7Cj4gPiAgCQkvKiBWYWxpZCBJT1BURSBwb2ludGVyPyAqLwo+ID4gIAkJaWYg KCFwdGVwKQo+ID5AQCAtNjg5LDEzICs3MjUsODIgQEAgYXJtX2xwYWVfYWxsb2NfcGd0YWJsZShz dHJ1Y3QgaW9fcGd0YWJsZV9jZmcgKmNmZykKPiA+ICAJcmV0dXJuIGRhdGE7Cj4gPiAgfQo+ID4r c3RhdGljIHU2NCBhcm1fNjRfbHBhZV9zZXR1cF90dGJyMShzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcg KmNmZywKPiA+KwkJc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEpCj4gPisKPiA+K3sK PiA+Kwl1NjQgcmVnOwo+ID4rCj4gPisJLyogSWYgVFRCUjEgaXMgZGlzYWJsZWQsIGRpc2FibGUg c3BlY3VsYXRpdmUgd2Fsa3MgdGhyb3VnaCB0aGUgVFRCUjEgKi8KPiA+KwlpZiAoIShjZmctPnF1 aXJrcyAmIElPX1BHVEFCTEVfUVVJUktfQVJNX1RUQlIxKSkgewo+ID4rCQlyZWcgPSBBUk1fTFBB RV9UQ1JfRVBEMTsKPiA+KwkJcmVnIHw9IChBUk1fTFBBRV9UQ1JfU0VQX1VQU1RSRUFNIDw8IEFS TV9MUEFFX1RDUl9TRVBfU0hJRlQpOwo+ID4rCQlyZXR1cm4gcmVnOwo+ID4rCX0KPiA+Kwo+ID4r CXJlZyA9IChBUk1fTFBBRV9UQ1JfU0hfSVMgPDwgQVJNX0xQQUVfVENSX1NIMV9TSElGVCkgfAo+ ID4rCSAgICAgIChBUk1fTFBBRV9UQ1JfUkdOX1dCV0EgPDwgQVJNX0xQQUVfVENSX0lSR04xX1NI SUZUKSB8Cj4gPisJICAgICAgKEFSTV9MUEFFX1RDUl9SR05fV0JXQSA8PCBBUk1fTFBBRV9UQ1Jf T1JHTjFfU0hJRlQpOwo+ID4rCj4gPisJc3dpdGNoICgxIDw8IGRhdGEtPnBnX3NoaWZ0KSB7Cj4g PisJY2FzZSBTWl80SzoKPiA+KwkJcmVnIHw9IEFSTV9MUEFFX1RDUl9URzFfNEs7Cj4gPisJCWJy ZWFrOwo+ID4rCWNhc2UgU1pfMTZLOgo+ID4rCQlyZWcgfD0gQVJNX0xQQUVfVENSX1RHMV8xNks7 Cj4gPisJCWJyZWFrOwo+ID4rCWNhc2UgU1pfNjRLOgo+ID4rCQlyZWcgfD0gQVJNX0xQQUVfVENS X1RHMV82NEs7Cj4gPisJCWJyZWFrOwo+ID4rCX0KPiA+Kwo+ID4rCS8qIFNldCBUMVNaICovCj4g PisJcmVnIHw9ICg2NFVMTCAtIGNmZy0+aWFzKSA8PCBBUk1fTFBBRV9UQ1JfVDFTWl9TSElGVDsK PiA+Kwo+ID4rCS8qIFNldCB0aGUgU0VQIGJpdCBiYXNlZCBvbiB0aGUgc2l6ZSAqLwo+ID4rCXN3 aXRjaCAoY2ZnLT5pYXMpIHsKPiA+KwljYXNlIDMyOgo+ID4rCQlyZWcgfD0gKEFSTV9MUEFFX1RD Ul9TRVBfMzEgPDwgQVJNX0xQQUVfVENSX1NFUF9TSElGVCk7Cj4gPisJCWJyZWFrOwo+ID4rCWNh c2UgMzY6Cj4gPisJCXJlZyB8PSAoQVJNX0xQQUVfVENSX1NFUF8zNSA8PCBBUk1fTFBBRV9UQ1Jf U0VQX1NISUZUKTsKPiA+KwkJYnJlYWs7Cj4gPisJY2FzZSA0MDoKPiA+KwkJcmVnIHw9IChBUk1f TFBBRV9UQ1JfU0VQXzM5IDw8IEFSTV9MUEFFX1RDUl9TRVBfU0hJRlQpOwo+ID4rCQlicmVhazsK PiA+KwljYXNlIDQyOgo+ID4rCQlyZWcgfD0gKEFSTV9MUEFFX1RDUl9TRVBfNDEgPDwgQVJNX0xQ QUVfVENSX1NFUF9TSElGVCk7Cj4gPisJCWJyZWFrOwo+ID4rCWNhc2UgNDQ6Cj4gPisJCXJlZyB8 PSAoQVJNX0xQQUVfVENSX1NFUF80MyA8PCBBUk1fTFBBRV9UQ1JfU0VQX1NISUZUKTsKPiA+KwkJ YnJlYWs7Cj4gPisJY2FzZSA0ODoKPiA+KwkJLyoKPiA+KwkJICogSWYgaWFzIGlzIDQ4IHRoZW4g dGhhdCBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSBVQlMgb24gdGhlCj4gPisJCSAqIGRldmljZSB3 YXMgMDEwMWIgKDQ5KSB3aGljaCBpcyBhIHNwZWNpYWwgY2FzZSB0aGF0IGFzc3VtZXMKPiA+KwkJ ICogYml0IDQ4IGlzIHRoZSBzaWduIGV4dGVuc2lvbiBiaXQuIEluIHRoaXMgY2FzZSB3ZSBhcmUK PiA+KwkJICogZXhwZWN0ZWQgdG8gdXNlIEFSTV9MUEFFX1RDUl9TRVBfVVBTVFJFQU0gdG8gdXNl IGJpdCA0OCBhcwo+ID4rCQkgKiB0aGUgZXh0ZW5zaW9uIGJpdC4gT25lIG1pZ2h0IGJlIGNvbmZ1 c2VkIGJlY2F1c2UgdGhlcmUgaXMKPiA+KwkJICogYWxzbyBhbiBvcHRpb24gdG8gc2V0IHRoZSBT RVAgdG8gYml0IDQ3IGJ1dCB0aGlzIGlzIHByb2JhYmx5Cj4gPisJCSAqIG5vdCB3aGF0IHRoZSBh cm0tc21tdSBkcml2ZXIgaW50ZW5kZWQuCj4gPisJCSAqLwo+IAo+IEFnYWluLCBhIGNsZWFyIHNp Z24gdGhhdCB0aGlzIHByb2JhYmx5IGlzbid0IHRoZSBtb3N0IGFwcHJvcHJpYXRlCj4gcGxhY2Ug dG8gYmUgdHJ5aW5nIHRvIGhhbmRsZSB0aGlzLgoKQWdyZWVkIC0gdGhpcyBpcyBlbnRpcmVseSBh IGJ1bmNoIG9mIGhhbmQgd2F2aW5nLiBJIGRvY3VtZW50ZWQgaXQgc28gY2xlYXJseQpiZWNhdXNl IHRoZSBtc20gR1BVIGhpdHMgZXhhY3RseSB0aGlzIGNhc2UgYW5kIGl0IGRyb3ZlIG1lIGNyYXp5 IGZvciBhIHdoaWxlCnVudGlsIEkgZmlndXJlZCBpdCBvdXQuCgo+ID4rCWRlZmF1bHQ6Cj4gPisJ CXJlZyB8PSAoQVJNX0xQQUVfVENSX1NFUF9VUFNUUkVBTSA8PCBBUk1fTFBBRV9UQ1JfU0VQX1NI SUZUKTsKPiA+KwkJYnJlYWs7Cj4gPisJfQo+ID4rCj4gPisJcmV0dXJuIHJlZzsKPiA+K30KPiA+ Kwo+ID4gIHN0YXRpYyBzdHJ1Y3QgaW9fcGd0YWJsZSAqCj4gPiAgYXJtXzY0X2xwYWVfYWxsb2Nf cGd0YWJsZV9zMShzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcgKmNmZywgdm9pZCAqY29va2llKQo+ID4g IHsKPiA+ICAJdTY0IHJlZzsKPiA+ICAJc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGE7 Cj4gPi0JaWYgKGNmZy0+cXVpcmtzICYgfihJT19QR1RBQkxFX1FVSVJLX0FSTV9OUyB8IElPX1BH VEFCTEVfUVVJUktfTk9fRE1BKSkKPiA+KwlpZiAoY2ZnLT5xdWlya3MgJiB+KElPX1BHVEFCTEVf UVVJUktfQVJNX05TIHwKPiA+KwkJCUlPX1BHVEFCTEVfUVVJUktfTk9fRE1BIHwKPiA+KwkJCUlP X1BHVEFCTEVfUVVJUktfQVJNX1RUQlIxKSkKPiA+ICAJCXJldHVybiBOVUxMOwo+ID4gIAlkYXRh ID0gYXJtX2xwYWVfYWxsb2NfcGd0YWJsZShjZmcpOwo+ID5AQCAtNzQ0LDggKzg0OSw5IEBAIGFy bV82NF9scGFlX2FsbG9jX3BndGFibGVfczEoc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcsIHZv aWQgKmNvb2tpZSkKPiA+ICAJcmVnIHw9ICg2NFVMTCAtIGNmZy0+aWFzKSA8PCBBUk1fTFBBRV9U Q1JfVDBTWl9TSElGVDsKPiA+LQkvKiBEaXNhYmxlIHNwZWN1bGF0aXZlIHdhbGtzIHRocm91Z2gg VFRCUjEgKi8KPiA+LQlyZWcgfD0gQVJNX0xQQUVfVENSX0VQRDE7Cj4gPisJLyogQnJpbmcgaW4g dGhlIFRUQlIxIGNvbmZpZ3VyYXRpb24gKi8KPiA+KwlyZWcgfD0gYXJtXzY0X2xwYWVfc2V0dXBf dHRicjEoY2ZnLCBkYXRhKTsKPiA+Kwo+ID4gIAljZmctPmFybV9scGFlX3MxX2NmZy50Y3IgPSBy ZWc7Cj4gPiAgCS8qIE1BSVJzICovCj4gPkBAIC03NjAsMTYgKzg2NiwzMiBAQCBhcm1fNjRfbHBh ZV9hbGxvY19wZ3RhYmxlX3MxKHN0cnVjdCBpb19wZ3RhYmxlX2NmZyAqY2ZnLCB2b2lkICpjb29r aWUpCj4gPiAgCWNmZy0+YXJtX2xwYWVfczFfY2ZnLm1haXJbMV0gPSAwOwo+ID4gIAkvKiBMb29r aW5nIGdvb2Q7IGFsbG9jYXRlIGEgcGdkICovCj4gPi0JZGF0YS0+cGdkID0gX19hcm1fbHBhZV9h bGxvY19wYWdlcyhkYXRhLT5wZ2Rfc2l6ZSwgR0ZQX0tFUk5FTCwgY2ZnKTsKPiA+LQlpZiAoIWRh dGEtPnBnZCkKPiA+KwlkYXRhLT5wZ2RbMF0gPSBfX2FybV9scGFlX2FsbG9jX3BhZ2VzKGRhdGEt PnBnZF9zaXplLCBHRlBfS0VSTkVMLCBjZmcpOwo+ID4rCWlmICghZGF0YS0+cGdkWzBdKQo+ID4g IAkJZ290byBvdXRfZnJlZV9kYXRhOwo+ID4rCj4gPisJaWYgKGNmZy0+cXVpcmtzICYgSU9fUEdU QUJMRV9RVUlSS19BUk1fVFRCUjEpIHsKPiA+KwkJZGF0YS0+cGdkWzFdID0gX19hcm1fbHBhZV9h bGxvY19wYWdlcyhkYXRhLT5wZ2Rfc2l6ZSwKPiA+KwkJCUdGUF9LRVJORUwsIGNmZyk7Cj4gPisJ CWlmICghZGF0YS0+cGdkWzFdKSB7Cj4gPisJCQlfX2FybV9scGFlX2ZyZWVfcGFnZXMoZGF0YS0+ cGdkWzBdLCBkYXRhLT5wZ2Rfc2l6ZSwKPiA+KwkJCQljZmcpOwo+ID4rCQkJZ290byBvdXRfZnJl ZV9kYXRhOwo+ID4rCQl9Cj4gPisJfSBlbHNlIHsKPiA+KwkJZGF0YS0+cGdkWzFdID0gTlVMTDsK PiA+Kwl9Cj4gPisKPiA+ICAJLyogRW5zdXJlIHRoZSBlbXB0eSBwZ2QgaXMgdmlzaWJsZSBiZWZv cmUgYW55IGFjdHVhbCBUVEJSIHdyaXRlICovCj4gPiAgCXdtYigpOwo+ID4gIAkvKiBUVEJScyAq Lwo+ID4tCWNmZy0+YXJtX2xwYWVfczFfY2ZnLnR0YnJbMF0gPSB2aXJ0X3RvX3BoeXMoZGF0YS0+ cGdkKTsKPiA+LQljZmctPmFybV9scGFlX3MxX2NmZy50dGJyWzFdID0gMDsKPiA+KwljZmctPmFy bV9scGFlX3MxX2NmZy50dGJyWzBdID0gdmlydF90b19waHlzKGRhdGEtPnBnZFswXSk7Cj4gPisK PiA+KwlpZiAoZGF0YS0+cGdkWzFdKQo+ID4rCQljZmctPmFybV9scGFlX3MxX2NmZy50dGJyWzFd ID0gdmlydF90b19waHlzKGRhdGEtPnBnZFsxXSk7Cj4gPisKPiA+ICAJcmV0dXJuICZkYXRhLT5p b3A7Cj4gPiAgb3V0X2ZyZWVfZGF0YToKPiA+QEAgLTg1NCwxNSArOTc2LDE1IEBAIGFybV82NF9s cGFlX2FsbG9jX3BndGFibGVfczIoc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcsIHZvaWQgKmNv b2tpZSkKPiA+ICAJY2ZnLT5hcm1fbHBhZV9zMl9jZmcudnRjciA9IHJlZzsKPiA+ICAJLyogQWxs b2NhdGUgcGdkIHBhZ2VzICovCj4gPi0JZGF0YS0+cGdkID0gX19hcm1fbHBhZV9hbGxvY19wYWdl cyhkYXRhLT5wZ2Rfc2l6ZSwgR0ZQX0tFUk5FTCwgY2ZnKTsKPiA+LQlpZiAoIWRhdGEtPnBnZCkK PiA+KwlkYXRhLT5wZ2RbMF0gPSBfX2FybV9scGFlX2FsbG9jX3BhZ2VzKGRhdGEtPnBnZF9zaXpl LCBHRlBfS0VSTkVMLCBjZmcpOwo+ID4rCWlmICghZGF0YS0+cGdkWzBdKQo+ID4gIAkJZ290byBv dXRfZnJlZV9kYXRhOwo+ID4gIAkvKiBFbnN1cmUgdGhlIGVtcHR5IHBnZCBpcyB2aXNpYmxlIGJl Zm9yZSBhbnkgYWN0dWFsIFRUQlIgd3JpdGUgKi8KPiA+ICAJd21iKCk7Cj4gPiAgCS8qIFZUVEJS ICovCj4gPi0JY2ZnLT5hcm1fbHBhZV9zMl9jZmcudnR0YnIgPSB2aXJ0X3RvX3BoeXMoZGF0YS0+ cGdkKTsKPiA+KwljZmctPmFybV9scGFlX3MyX2NmZy52dHRiciA9IHZpcnRfdG9fcGh5cyhkYXRh LT5wZ2RbMF0pOwo+ID4gIAlyZXR1cm4gJmRhdGEtPmlvcDsKPiA+ICBvdXRfZnJlZV9kYXRhOgo+ ID5AQCAtOTYwLDcgKzEwODIsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgYXJtX2xwYWVfZHVtcF9v cHMoc3RydWN0IGlvX3BndGFibGVfb3BzICpvcHMpCj4gPiAgCQljZmctPnBnc2l6ZV9iaXRtYXAs IGNmZy0+aWFzKTsKPiA+ICAJcHJfZXJyKCJkYXRhOiAlZCBsZXZlbHMsIDB4JXp4IHBnZF9zaXpl LCAlbHUgcGdfc2hpZnQsICVsdSBiaXRzX3Blcl9sZXZlbCwgcGdkIEAgJXBcbiIsCj4gPiAgCQlk YXRhLT5sZXZlbHMsIGRhdGEtPnBnZF9zaXplLCBkYXRhLT5wZ19zaGlmdCwKPiA+LQkJZGF0YS0+ Yml0c19wZXJfbGV2ZWwsIGRhdGEtPnBnZCk7Cj4gPisJCWRhdGEtPmJpdHNfcGVyX2xldmVsLCBk YXRhLT5wZ2RbMF0pOwo+ID4gIH0KPiA+ICAjZGVmaW5lIF9fRkFJTChvcHMsIGkpCSh7CQkJCQkJ XAo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5oIGIvZHJpdmVy cy9pb21tdS9pby1wZ3RhYmxlLWFybS5oCj4gPmluZGV4IGNiMzEzMTQ5NzFhYy4uNjM0NGIxZDM1 OWE1IDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2lvbW11L2lvLXBndGFibGUtYXJtLmgKPiA+Kysr IGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5oCj4gPkBAIC0yNSwxNCArMjUsMjEgQEAK PiA+ICAjZGVmaW5lIEFSTV9MUEFFX1RDUl9URzBfNjRLCQkoMSA8PCAxNCkKPiA+ICAjZGVmaW5l IEFSTV9MUEFFX1RDUl9URzBfMTZLCQkoMiA8PCAxNCkKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENS X1RHMV8xNksgICAgICAgICAgICAoMSA8PCAzMCkKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX1RH MV80SyAgICAgICAgICAgICAoMiA8PCAzMCkKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX1RHMV82 NEsgICAgICAgICAgICAoMyA8PCAzMCkKPiA+Kwo+ID4gICNkZWZpbmUgQVJNX0xQQUVfVENSX1NI MF9TSElGVAkJMTIKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX1NIMV9TSElGVAkJMjgKPiA+ICAj ZGVmaW5lIEFSTV9MUEFFX1RDUl9TSDBfTUFTSwkJMHgzCj4gPiAgI2RlZmluZSBBUk1fTFBBRV9U Q1JfU0hfTlMJCTAKPiA+ICAjZGVmaW5lIEFSTV9MUEFFX1RDUl9TSF9PUwkJMgo+ID4gICNkZWZp bmUgQVJNX0xQQUVfVENSX1NIX0lTCQkzCj4gPiAgI2RlZmluZSBBUk1fTFBBRV9UQ1JfT1JHTjBf U0hJRlQJMTAKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX09SR04xX1NISUZUCTI2Cj4gPiAgI2Rl ZmluZSBBUk1fTFBBRV9UQ1JfSVJHTjBfU0hJRlQJOAo+ID4rI2RlZmluZSBBUk1fTFBBRV9UQ1Jf SVJHTjFfU0hJRlQJMjQKPiA+ICAjZGVmaW5lIEFSTV9MUEFFX1RDUl9SR05fTUFTSwkJMHgzCj4g PiAgI2RlZmluZSBBUk1fTFBBRV9UQ1JfUkdOX05DCQkwCj4gPiAgI2RlZmluZSBBUk1fTFBBRV9U Q1JfUkdOX1dCV0EJCTEKPiA+QEAgLTQ1LDYgKzUyLDkgQEAKPiA+ICAjZGVmaW5lIEFSTV9MUEFF X1RDUl9UMFNaX1NISUZUCQkwCj4gPiAgI2RlZmluZSBBUk1fTFBBRV9UQ1JfU1pfTUFTSwkJMHgz Zgo+ID4rI2RlZmluZSBBUk1fTFBBRV9UQ1JfVDFTWl9TSElGVCAgICAgICAgIDE2Cj4gPisjZGVm aW5lIEFSTV9MUEFFX1RDUl9UMVNaX01BU0sgICAgICAgICAgMHgzZgo+ID4rCj4gPiAgI2RlZmlu ZSBBUk1fTFBBRV9UQ1JfUFNfU0hJRlQJCTE2Cj4gPiAgI2RlZmluZSBBUk1fTFBBRV9UQ1JfUFNf TUFTSwkJMHg3Cj4gPkBAIC01OCw2ICs2OCwxNiBAQAo+ID4gICNkZWZpbmUgQVJNX0xQQUVfVENS X1BTXzQ0X0JJVAkJMHg0VUxMCj4gPiAgI2RlZmluZSBBUk1fTFBBRV9UQ1JfUFNfNDhfQklUCQkw eDVVTEwKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX1NFUF9TSElGVAkJKDE1ICsgMzIpCj4gPisK PiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX1NFUF8zMQkJMHgwVUxMCj4gPisjZGVmaW5lIEFSTV9M UEFFX1RDUl9TRVBfMzUJCTB4MVVMTAo+ID4rI2RlZmluZSBBUk1fTFBBRV9UQ1JfU0VQXzM5CQkw eDJVTEwKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX1NFUF80MQkJMHgzVUxMCj4gPisjZGVmaW5l IEFSTV9MUEFFX1RDUl9TRVBfNDMJCTB4NFVMTAo+ID4rI2RlZmluZSBBUk1fTFBBRV9UQ1JfU0VQ XzQ3CQkweDVVTEwKPiA+KyNkZWZpbmUgQVJNX0xQQUVfVENSX1NFUF9VUFNUUkVBTQkweDdVTEwK PiA+Kwo+ID4gICNkZWZpbmUgQVJNX0xQQUVfTUFJUl9BVFRSX1NISUZUKG4pCSgobikgPDwgMykK PiA+ICAjZGVmaW5lIEFSTV9MUEFFX01BSVJfQVRUUl9NQVNLCQkweGZmCj4gPiAgI2RlZmluZSBB Uk1fTFBBRV9NQUlSX0FUVFJfREVWSUNFCTB4MDQKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9t bXUvaW8tcGd0YWJsZS5oIGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLmgKPiA+aW5kZXggY2Qy ZTFlYWZmZmU2Li41NWY3YjYwY2M0NGQgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvaW9tbXUvaW8t cGd0YWJsZS5oCj4gPisrKyBiL2RyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS5oCj4gPkBAIC03MSwx MiArNzEsMTggQEAgc3RydWN0IGlvX3BndGFibGVfY2ZnIHsKPiA+ICAJICoJYmUgYWNjZXNzZWQg YnkgYSBmdWxseSBjYWNoZS1jb2hlcmVudCBJT01NVSBvciBDUFUgKGUuZy4gZm9yIGEKPiA+ICAJ ICoJc29mdHdhcmUtZW11bGF0ZWQgSU9NTVUpLCBzdWNoIHRoYXQgcGFnZXRhYmxlIHVwZGF0ZXMg bmVlZCBub3QKPiA+ICAJICoJYmUgdHJlYXRlZCBhcyBleHBsaWNpdCBETUEgZGF0YS4KPiA+Kwkg Kgo+ID4rCSAqIFBHVEFCTEVfUVVJUktfQVJNX1RUQlIxOiBTcGVjaWZpZXMgdGhhdCBUVEJSMSBo YXMgYmVlbiBlbmFibGVkIG9uCj4gPisJICoJdGhpcyBkb21haW4uIFNldCB1cCB0aGUgY29uZmln dXJhdGlvbiByZWdpc3RlcnMgYW5kIGR5YW5taWNhbGx5Cj4gPisJICogICAgICBjaG9vc2Ugd2hp Y2ggcGFnZXRhYmxlIChUVEJSMCBvciBUVEJSMSkgYSBtYXBwaW5nIHNob3VsZCBnbyBpbnRvCj4g PisJICoJYmFzZWQgb24gdGhlIGFkZHJlc3MuCj4gPiAgCSAqLwo+ID4gIAkjZGVmaW5lIElPX1BH VEFCTEVfUVVJUktfQVJNX05TCQlCSVQoMCkKPiA+ICAJI2RlZmluZSBJT19QR1RBQkxFX1FVSVJL X05PX1BFUk1TCUJJVCgxKQo+ID4gIAkjZGVmaW5lIElPX1BHVEFCTEVfUVVJUktfVExCSV9PTl9N QVAJQklUKDIpCj4gPiAgCSNkZWZpbmUgSU9fUEdUQUJMRV9RVUlSS19BUk1fTVRLXzRHQglCSVQo MykKPiA+ICAJI2RlZmluZSBJT19QR1RBQkxFX1FVSVJLX05PX0RNQQkJQklUKDQpCj4gPisJI2Rl ZmluZSBJT19QR1RBQkxFX1FVSVJLX0FSTV9UVEJSMSAgICAgIEJJVCg1KQo+ID4gIAl1bnNpZ25l ZCBsb25nCQkJcXVpcmtzOwo+ID4gIAl1bnNpZ25lZCBsb25nCQkJcGdzaXplX2JpdG1hcDsKPiA+ ICAJdW5zaWduZWQgaW50CQkJaWFzOwo+ID5AQCAtMTczLDE4ICsxNzksMjIgQEAgc3RydWN0IGlv X3BndGFibGUgewo+ID4gIHN0YXRpYyBpbmxpbmUgdm9pZCBpb19wZ3RhYmxlX3RsYl9mbHVzaF9h bGwoc3RydWN0IGlvX3BndGFibGUgKmlvcCkKPiA+ICB7Cj4gPi0JaW9wLT5jZmcudGxiLT50bGJf Zmx1c2hfYWxsKGlvcC0+Y29va2llKTsKPiA+KwlpZiAoaW9wLT5jZmcudGxiKQo+ID4rCQlpb3At PmNmZy50bGItPnRsYl9mbHVzaF9hbGwoaW9wLT5jb29raWUpOwo+IAo+IFdoYXQncyBnb2luZyBv biBoZXJlPwo+IAo+IEl0J3Mgbm90IG9idmlvdXMgaG93IHRoaXMgY2hhbmdlIGlzIHJlbGV2YW50 IHRvIFRUQlIxIHN1cHBvcnQsIGFuZAo+IGVpdGhlciB3YXkgSSBjYW4ndCBzZWUgaG93IGFuIGlv X3BndGFibGUgd2l0aCBubyBUTEIgb3BzIHdvdWxkbid0Cj4ganVzdCBiZSBmdW5kYW1lbnRhbGx5 IGJyb2tlbi4KCk9vcHMsIHRoaXMgaXMgaW4gdGhlIHdyb25nIHBhdGNoLiBUaGlzIHNob3VsZCBn byBhbG9uZyB3aXRoIHRoZSBwcml2YXRlIHBhc2lkCnBhdGNoZXMgYmVjYXVzZSBjbGllbnQgZGV2 aWNlcyB0aGF0IHVzZSBwcml2YXRlIHBhc2lkIHBhZ2V0YWJsZXMgbmVlZCB0byBoYW5kbGUKdGxi IG9uIHRob3NlIHRhYmxlcyBvbiB0aGVpciBvd24gKGFuZCB0aGF0IHRvbyBtaWdodCBiZSB1cCBm b3IgZGViYXRlLCBidXQgbm90CmhlcmUpLgoKPiBSb2Jpbi4KClRoYW5rcyBzbyBtdWNoIGZvciBy ZXZpZXdpbmcuCgpKb3JkYW4KCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIElu Yy4gaXMgYSBtZW1iZXIgb2YgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBD b2xsYWJvcmF0aXZlIFByb2plY3QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZnJlZWRyZW5vCg==