From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Torokhov Subject: Re: [PATCH 2/2] xen/input: add multi-touch support Date: Tue, 30 May 2017 09:37:08 -0700 Message-ID: <20170530163708.GA12922__34699.6591114022$1496162315$gmane$org@dtor-ws> References: <1492083484-31786-1-git-send-email-andr2000@gmail.com> <1492083484-31786-3-git-send-email-andr2000@gmail.com> <20170421021018.GB23279@dtor-ws> <20170530055150.GA38163@dtor-ws> <8092dd49-20e0-3e8d-977d-2f570142a37d@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dFk8x-0007SH-98 for xen-devel@lists.xenproject.org; Tue, 30 May 2017 16:37:15 +0000 Received: by mail-io0-f193.google.com with SMTP id f102so9530078ioi.3 for ; Tue, 30 May 2017 09:37:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <8092dd49-20e0-3e8d-977d-2f570142a37d@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: jgross@suse.com, Oleksandr Andrushchenko , vlad.babchuk@gmail.com, linux-kernel@vger.kernel.org, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, linux-input@vger.kernel.org, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXkgMzAsIDIwMTcgYXQgMDM6NTA6MjBQTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gSGksIERtaXRyeSEKPiAKPiBPbiAwNS8zMC8yMDE3IDA4OjUxIEFN LCBEbWl0cnkgVG9yb2tob3Ygd3JvdGU6Cj4gPk9uIEZyaSwgQXByIDIxLCAyMDE3IGF0IDA5OjQw OjM2QU0gKzAzMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+ID4+SGksIERtaXRy eSEKPiA+Pgo+ID4+T24gMDQvMjEvMjAxNyAwNToxMCBBTSwgRG1pdHJ5IFRvcm9raG92IHdyb3Rl Ogo+ID4+PkhpIE9sZWtzYW5kciwKPiA+Pj4KPiA+Pj5PbiBUaHUsIEFwciAxMywgMjAxNyBhdCAw MjozODowNFBNICswMzAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPiA+Pj4+RnJv bTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0u Y29tPgo+ID4+Pj4KPiA+Pj4+RXh0ZW5kIHhlbl9rYmRmcm9udCB0byBwcm92aWRlIG11bHRpLXRv dWNoIHN1cHBvcnQKPiA+Pj4+dG8gdW5wcml2aWxlZ2VkIGRvbWFpbnMuCj4gPj4+Pgo+ID4+Pj5T aWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hj aGVua29AZXBhbS5jb20+Cj4gPj4+Pi0tLQo+ID4+Pj4gIGRyaXZlcnMvaW5wdXQvbWlzYy94ZW4t a2JkZnJvbnQuYyB8IDE0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ ID4+Pj4gIDEgZmlsZSBjaGFuZ2VkLCAxNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK PiA+Pj4+Cj4gPj4+PmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250 LmMgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPiA+Pj4+aW5kZXggMDFjMjdi NGMzMjg4Li5lNWQwNjRhYWEyMzcgMTAwNjQ0Cj4gPj4+Pi0tLSBhL2RyaXZlcnMvaW5wdXQvbWlz Yy94ZW4ta2JkZnJvbnQuYwo+ID4+Pj4rKysgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZy b250LmMKPiA+Pj4+QEAgLTE3LDYgKzE3LDcgQEAKPiA+Pj4+ICAjaW5jbHVkZSA8bGludXgvZXJy bm8uaD4KPiA+Pj4+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPj4+PiAgI2luY2x1ZGUg PGxpbnV4L2lucHV0Lmg+Cj4gPj4+PisjaW5jbHVkZSA8bGludXgvaW5wdXQvbXQuaD4KPiA+Pj4+ ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4+Pj4gICNpbmNsdWRlIDxhc20veGVuL2h5cGVy dmlzb3IuaD4KPiA+Pj4+QEAgLTM0LDExICszNSwxNCBAQAo+ID4+Pj4gIHN0cnVjdCB4ZW5rYmRf aW5mbyB7Cj4gPj4+PiAgCXN0cnVjdCBpbnB1dF9kZXYgKmtiZDsKPiA+Pj4+ICAJc3RydWN0IGlu cHV0X2RldiAqcHRyOwo+ID4+Pj4rCXN0cnVjdCBpbnB1dF9kZXYgKm10b3VjaDsKPiA+Pj4+ICAJ c3RydWN0IHhlbmtiZF9wYWdlICpwYWdlOwo+ID4+Pj4gIAlpbnQgZ3JlZjsKPiA+Pj4+ICAJaW50 IGlycTsKPiA+Pj4+ICAJc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhiZGV2Owo+ID4+Pj4gIAljaGFy IHBoeXNbMzJdOwo+ID4+Pj4rCS8qIGN1cnJlbnQgTVQgc2xvdC9jb250YWN0IElEIHdlIGFyZSBp bmplY3RpbmcgZXZlbnRzIGluICovCj4gPj4+PisJaW50IG10b3VjaF9jdXJfY29udGFjdF9pZDsK PiA+Pj4+ICB9Owo+ID4+Pj4gIGVudW0geyBLUEFSQU1fWCwgS1BBUkFNX1ksIEtQQVJBTV9DTlQg fTsKPiA+Pj4+QEAgLTQ3LDYgKzUxLDEyIEBAIG1vZHVsZV9wYXJhbV9hcnJheShwdHJfc2l6ZSwg aW50LCBOVUxMLCAwNDQ0KTsKPiA+Pj4+ICBNT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+ID4+ Pj4gIAkiUG9pbnRpbmcgZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChkZWZhdWx0IDgw MCw2MDApIik7Cj4gPj4+PitlbnVtIHsgS1BBUkFNX01UX1gsIEtQQVJBTV9NVF9ZLCBLUEFSQU1f TVRfQ05UIH07Cj4gPj4+PitzdGF0aWMgaW50IG10b3VjaF9zaXplW0tQQVJBTV9NVF9DTlRdID0g eyBYRU5GQl9XSURUSCwgWEVORkJfSEVJR0hUIH07Cj4gPj4+Pittb2R1bGVfcGFyYW1fYXJyYXko bXRvdWNoX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4gPj4+PitNT0RVTEVfUEFSTV9ERVNDKHB0 cl9zaXplLAo+ID4+Pj4rCSJNdWx0aS10b3VjaCBkZXZpY2Ugd2lkdGgsIGhlaWdodCBpbiBwaXhl bHMgKGRlZmF1bHQgODAwLDYwMCkiKTsKPiA+Pj4+Kwo+ID4+PldoeSBkbyB5b3UgbmVlZCBzZXBh cmF0ZSBtb2R1bGUgcGFyYW1ldGVycyBmb3IgbXVsdGktdG91Y2ggZGV2aWNlPwo+ID4+cGxlYXNl IHNlZSBiZWxvdwo+ID4+Pj4gIHN0YXRpYyBpbnQgeGVua2JkX3JlbW92ZShzdHJ1Y3QgeGVuYnVz X2RldmljZSAqKTsKPiA+Pj4+ICBzdGF0aWMgaW50IHhlbmtiZF9jb25uZWN0X2JhY2tlbmQoc3Ry dWN0IHhlbmJ1c19kZXZpY2UgKiwgc3RydWN0IHhlbmtiZF9pbmZvICopOwo+ID4+Pj4gIHN0YXRp YyB2b2lkIHhlbmtiZF9kaXNjb25uZWN0X2JhY2tlbmQoc3RydWN0IHhlbmtiZF9pbmZvICopOwo+ ID4+Pj5AQCAtMTAwLDYgKzExMCw2MCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaW5wdXRfaGFuZGxl cihpbnQgcnEsIHZvaWQgKmRldl9pZCkKPiA+Pj4+ICAJCQkJaW5wdXRfcmVwb3J0X3JlbChkZXYs IFJFTF9XSEVFTCwKPiA+Pj4+ICAJCQkJCQkgLWV2ZW50LT5wb3MucmVsX3opOwo+ID4+Pj4gIAkJ CWJyZWFrOwo+ID4+Pj4rCQljYXNlIFhFTktCRF9UWVBFX01UT1VDSDoKPiA+Pj4+KwkJCWRldiA9 IGluZm8tPm10b3VjaDsKPiA+Pj4+KwkJCWlmICh1bmxpa2VseSghZGV2KSkKPiA+Pj4+KwkJCQli cmVhazsKPiA+Pj4+KwkJCWlmICh1bmxpa2VseShldmVudC0+bXRvdWNoLmNvbnRhY3RfaWQgIT0K PiA+Pj4+KwkJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkKSkgewo+ID4+PldoeSBpcyB0 aGlzIHVubGlrZWx5PyBEb2VzIGNvbnRhY3QgSUQgY2hhbmdlcyBvbmNlIGluIDEwMDAgcGFja2V0 cyBvcgo+ID4+PmV2ZW4gbGVzcz8KPiA+Pk11IGFzc3VtcHRpb24gd2FzIHRoYXQgcmVnYXJkbGVz cyBvZiB0aGUgZmFjdCB0aGF0IHdlIGFyZSBtdWx0aS10b3VjaAo+ID4+ZGV2aWNlIHN0aWxsIHNp bmdsZSB0b3VjaGVzIHdpbGwgY29tZSBpbiBtb3JlIGZyZXF1ZW50bHkKPiA+PkJ1dCBJIGNhbiBy ZW1vdmUgKnVubGlrZWx5KiBpZiBteSBhc3N1bXB0aW9uIGlzIG5vdCBjb3JyZWN0Cj4gPkkgdGhp bmsgdGhlIG5vcm1hbCBleHBlY3RhdGlvbiBpcyB0aGF0ICJ1bmxpa2VseSIgaXMgc3VwcG9zZWQg Zm9yCj4gPnNvbWV0aGluZyB0aGF0IGhhcHBlbnMgb25jZSBpbiBhIGJsdWUgbW9vbiwgc28gSSdk IHJhdGhlciByZW1vdmUgaXQuCj4gPgo+IGFncmVlLCByZW1vdmVkICJ1bmxpa2VseSIKPiA+Pj4+ KwkJCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPQo+ID4+Pj4rCQkJCQlldmVudC0+bXRv dWNoLmNvbnRhY3RfaWQ7Cj4gPj4+PisJCQkJaW5wdXRfbXRfc2xvdChkZXYsIGV2ZW50LT5tdG91 Y2guY29udGFjdF9pZCk7Cj4gPj4+PisJCQl9Cj4gPj4+PisJCQlzd2l0Y2ggKGV2ZW50LT5tdG91 Y2guZXZlbnRfdHlwZSkgewo+ID4+Pj4rCQkJY2FzZSBYRU5LQkRfTVRfRVZfRE9XTjoKPiA+Pj4+ KwkJCQlpbnB1dF9tdF9yZXBvcnRfc2xvdF9zdGF0ZShkZXYsIE1UX1RPT0xfRklOR0VSLAo+ID4+ Pj4rCQkJCQkJCSAgIHRydWUpOwo+ID5TaG91bGQgd2UgZXN0YWJsaXNoIHRvb2wgZXZlbnQ/IFdl IGhhdmUgTVRfVE9PTF9QRU4sIGV0Yy4KPiBJIHRoaW5rIHRoYXQgZm9yIG11bHRpLXRvdWNoIE1U X1RPT0xfRklOR0VSIGlzIGVub3VnaAo+IGFueSByZWFzb24gd2Ugd291bGQgYWxzbyB3YW50IE1U X1RPT0xfUEVOIGhlcmU/CgpXaHkgd291bGQgbm90IHlvdT8gTGV0J3Mgc2F5IHlvdSBoYXZlIGEg ZHJhd2luZyBhcHBsaWNhdGlvbiBydW5uaW5nIGluCmd1ZXN0IHRoYXQgY2FuIG1ha2UgdXNlIG9m IHRvb2wgdHlwZXMuIFdoeSB3b3VsZCBub3QgeW91IHdhbnQgdG8gdGVsbCBpdAp0aGF0IHRoZSB0 b29sIHVzZXIgaXMgY3VycmVudGx5IHVzaW5nIGlzIGluIGZhY3QgYSBwZW4gYW5kIG5vdCBmaW5n ZXI/Cgo+IChJIGd1ZXNzIE1UX1RPT0xfUEFMTSBpcyBub3QgYXBwcm9wcmlhdGUgYW55d2F5cykK CkRlcGVuZHMgb24gaWYgeW91IGRvIHN0cmFpZ2h0IHBhc3MtdGhyb3VnaCBmcm9tIHRoZSBob3N0 IHNpZGUgb3Igbm90LiBJZgp5b3Ugc3RhY2sgZG9lcyBwYWxtIHJlamVjdGlvbiBiZWZvcmUgcGFz c2luZyB0aGUgZGF0YSB0aHJvdWdoIHRoZW4geW91CndvdWxkIG5vdCBzZWUgTVRfVE9PTF9QQUxN IGluIGd1ZXN0LgoKPiA+Pj4+KwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX1BP U0lUSU9OX1gsCj4gPj4+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic194KTsKPiA+ Pj4+KwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9OX1ksCj4gPj4+ PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPiA+Pj4+KwkJCQlpbnB1dF9l dmVudChkZXYsIEVWX0FCUywgQUJTX1gsCj4gPj4+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUu cG9zLmFic194KTsKPiA+Pj4+KwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1ksCj4g Pj4+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPiA+Pj4+KwkJCQlicmVh azsKPiA+Pj4+KwkJCWNhc2UgWEVOS0JEX01UX0VWX1VQOgo+ID4+Pj4rCQkJCWlucHV0X210X3Jl cG9ydF9zbG90X3N0YXRlKGRldiwgTVRfVE9PTF9GSU5HRVIsCj4gPj4+PisJCQkJCQkJICAgZmFs c2UpOwo+ID4+Pj4rCQkJCWJyZWFrOwo+ID4+Pj4rCQkJY2FzZSBYRU5LQkRfTVRfRVZfTU9USU9O Ogo+ID4+Pj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfUE9TSVRJT05fWCwK PiA+Pj4+KwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+ID4+Pj4rCQkJCWlu cHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfUE9TSVRJT05fWSwKPiA+Pj4+KwkJCQkJICAg IGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3kpOwo+ID4+Pj4rCQkJCWlucHV0X2V2ZW50KGRldiwg RVZfQUJTLCBBQlNfWCwKPiA+Pj4+KwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gp Owo+ID4+Pj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfWSwKPiA+Pj4+KwkJCQkJ ICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3kpOwo+ID4+Pj4rCQkJCWJyZWFrOwo+ID4+Pj4r CQkJY2FzZSBYRU5LQkRfTVRfRVZfU1lOOgo+ID4+Pj4rCQkJCWlucHV0X210X3N5bmNfZnJhbWUo ZGV2KTsKPiA+Pj4+KwkJCQlicmVhazsKPiA+Pj4+KwkJCWNhc2UgWEVOS0JEX01UX0VWX1NIQVBF Ogo+ID4+Pj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfVE9VQ0hfTUFKT1Is Cj4gPj4+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUuc2hhcGUubWFqb3IpOwo+ID4+Pj4rCQkJ CWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfVE9VQ0hfTUlOT1IsCj4gPj4+PisJCQkJ CSAgICBldmVudC0+bXRvdWNoLnUuc2hhcGUubWlub3IpOwo+ID4+Pj4rCQkJCWJyZWFrOwo+ID4+ Pj4rCQkJY2FzZSBYRU5LQkRfTVRfRVZfT1JJRU5UOgo+ID4+Pj4rCQkJCWlucHV0X2V2ZW50KGRl diwgRVZfQUJTLCBBQlNfTVRfT1JJRU5UQVRJT04sCj4gPj4+PisJCQkJCSAgICBldmVudC0+bXRv dWNoLnUub3JpZW50YXRpb24pOwo+ID4+Pj4rCQkJCWJyZWFrOwo+ID4+Pj4rCQkJfQo+ID4+Pj4r CQkJLyogb25seSByZXBvcnQgc3luIHdoZW4gcmVxdWVzdGVkICovCj4gPj4+PisJCQlpZiAoZXZl bnQtPm10b3VjaC5ldmVudF90eXBlICE9IFhFTktCRF9NVF9FVl9TWU4pCj4gPj4+PisJCQkJZGV2 ID0gTlVMTDsKPiA+Pj4+ICAJCX0KPiA+Pj4+ICAJCWlmIChkZXYpCj4gPj4+PiAgCQkJaW5wdXRf c3luYyhkZXYpOwo+ID4+Pj5AQCAtMTE1LDkgKzE3OSw5IEBAIHN0YXRpYyBpbnQgeGVua2JkX3By b2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4gPj4+PiAgCQkJCSAgY29uc3Qgc3RydWN0 IHhlbmJ1c19kZXZpY2VfaWQgKmlkKQo+ID4+Pj4gIHsKPiA+Pj4+ICAJaW50IHJldCwgaTsKPiA+ Pj4+LQl1bnNpZ25lZCBpbnQgYWJzOwo+ID4+Pj4rCXVuc2lnbmVkIGludCBhYnMsIHRvdWNoOwo+ ID4+Pj4gIAlzdHJ1Y3QgeGVua2JkX2luZm8gKmluZm87Cj4gPj4+Pi0Jc3RydWN0IGlucHV0X2Rl diAqa2JkLCAqcHRyOwo+ID4+Pj4rCXN0cnVjdCBpbnB1dF9kZXYgKmtiZCwgKnB0ciwgKm10b3Vj aDsKPiA+Pj4+ICAJaW5mbyA9IGt6YWxsb2Moc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7Cj4g Pj4+PiAgCWlmICghaW5mbykgewo+ID4+Pj5AQCAtMTUyLDYgKzIxNiwxNyBAQCBzdGF0aWMgaW50 IHhlbmtiZF9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+ID4+Pj4gIAkJfQo+ID4+ Pj4gIAl9Cj4gPj4+PisJdG91Y2ggPSB4ZW5idXNfcmVhZF91bnNpZ25lZChkZXYtPm5vZGVuYW1l LAo+ID4+Pj4rCQkJCSAgICAgWEVOS0JEX0ZJRUxEX0ZFQVRfTVRPVUNILCAwKTsKPiA+Pj4+Kwlp ZiAodG91Y2gpIHsKPiA+Pj4+KwkJcmV0ID0geGVuYnVzX3dyaXRlKFhCVF9OSUwsIGRldi0+bm9k ZW5hbWUsCj4gPj4+PisJCQkJICAgWEVOS0JEX0ZJRUxEX1JFUV9NVE9VQ0gsICIxIik7Cj4gPj4+ PisJCWlmIChyZXQpIHsKPiA+Pj4+KwkJCXByX3dhcm5pbmcoInhlbmtiZDogY2FuJ3QgcmVxdWVz dCBtdWx0aS10b3VjaCIpOwo+ID4+Pj4rCQkJdG91Y2ggPSAwOwo+ID4+Pj4rCQl9Cj4gPj4+PisJ fQo+ID4+Pj4rCj4gPj4+PiAgCS8qIGtleWJvYXJkICovCj4gPj4+PiAgCWtiZCA9IGlucHV0X2Fs bG9jYXRlX2RldmljZSgpOwo+ID4+Pj4gIAlpZiAoIWtiZCkKPiA+Pj4+QEAgLTIwOCw2ICsyODMs NjcgQEAgc3RhdGljIGludCB4ZW5rYmRfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwK PiA+Pj4+ICAJfQo+ID4+Pj4gIAlpbmZvLT5wdHIgPSBwdHI7Cj4gPj4+PisJLyogbXVsdGktdG91 Y2ggZGV2aWNlICovCj4gPj4+PisJaWYgKHRvdWNoKSB7Cj4gPj4+PisJCWludCBudW1fY29udCwg d2lkdGgsIGhlaWdodDsKPiA+Pj4+Kwo+ID4+Pj4rCQltdG91Y2ggPSBpbnB1dF9hbGxvY2F0ZV9k ZXZpY2UoKTsKPiA+Pj4+KwkJaWYgKCFtdG91Y2gpCj4gPj4+PisJCQlnb3RvIGVycm9yX25vbWVt Owo+ID4+Pj4rCj4gPj4+PisJCW51bV9jb250ID0geGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+ eGJkZXYtPm5vZGVuYW1lLAo+ID4+Pj4rCQkJCQkJWEVOS0JEX0ZJRUxEX01UX05VTV9DT05UQUNU UywKPiA+Pj4+KwkJCQkJCTEpOwo+ID5TaG91bGQgd2UgcmVmdXNlIE1UIGRldmljZXMgd2l0aCBu dW1iZXIgb2YgY29udGFjdHMgbGVzcyB0aGFuIDI/Cj4gd2UgY2FuLCBidXQgSSBzZWUgbm8gaGFy bSBpbiAxLiB3aGF0IGlzIG1vcmUsIHRoaXMgbWF5Cj4gYWxsb3cgZ3Vlc3RzIHRvIGVtdWxhdGUg bW9yZSBwb2ludGluZyBkZXZpY2VzCj4gYnV0LCBpZiB5b3UgaW5zaXN0LCB0aGVuIEkgd2lsbCBh ZGQgYXBwcm9wcmlhdGUgY29kZSB0bwo+IHJlamVjdCBpZiBudW1iZXIgb2YgY29udGFjdHMgaXMg bGVzcyB0aGVuIDIKPiA+Pj4+KwkJd2lkdGggPSB4ZW5idXNfcmVhZF91bnNpZ25lZChpbmZvLT54 YmRldi0+bm9kZW5hbWUsCj4gPj4+PisJCQkJCSAgICAgWEVOS0JEX0ZJRUxEX01UX1dJRFRILAo+ ID4+Pj4rCQkJCQkgICAgIFhFTkZCX1dJRFRIKTsKPiA+Pj4+KwkJaGVpZ2h0ID0geGVuYnVzX3Jl YWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+ID4+Pj4rCQkJCQkgICAgICBYRU5L QkRfRklFTERfTVRfSEVJR0hULAo+ID4+Pj4rCQkJCQkgICAgICBYRU5GQl9IRUlHSFQpOwo+ID4+ PkN1cmlvdXMgd2h5IHlvdSBuZWVkIHNlcGFyYXRlIHBhcmFtZXRlcnMgaGVyZSB0b28uLi4KPiA+ PlRoaXMgaXMgYmVjYXVzZSBtdCBwYXJhbWV0ZXJzIGFyZSBkaWZmZXJlbnQgZnJvbSBwdHIKPiA+ PmluIGEgd2F5IHRoYXQgdGhleSBhcmUgY29uZmlndXJhYmxlIHBlciBmcm9udCBkcml2ZXIncwo+ ID4+aW5zdGFuY2UgcmF0aGVyIHRoYW4gcGVyIGJhY2tlbmQsIGUuZy4gaW4gWGVuU3RvcmU6Cj4g Pj4KPiA+Pi9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZrYmQvMS8wL3dpZHRoID0gIjE5MjAiCj4g Pj4vbG9jYWwvZG9tYWluLzAvYmFja2VuZC92a2JkLzEvMC9oZWlnaHQgPSAiMTA4MCIKPiA+Pgo+ ID4+L2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gtd2lkdGggPSAiMTky MCIKPiA+Pi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmtiZC8wL211bHRpLXRvdWNoLWhlaWdodCA9 ICIxMDgwIgo+ID4+L2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gtbnVt LWNvbnRhY3RzID0gIjEwIgo+ID4+Cj4gPj4vbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMS9t dWx0aS10b3VjaC13aWR0aCA9ICI4MDAiCj4gPj4vbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQv MS9tdWx0aS10b3VjaC1oZWlnaHQgPSAiNjAwIgo+ID4+L2xvY2FsL2RvbWFpbi8xL2RldmljZS92 a2JkLzEvbXVsdGktdG91Y2gtbnVtLWNvbnRhY3RzID0gIjMiCj4gPj4KPiA+PlRoZSBtYWluIHJl YXNvbiBmb3Igc3VjaCBjb25maWd1cmF0aW9uIGlzIHRoYXQgeW91IGNhbgo+ID4+Y29uZmlndXJl IG11bHRpcGxlIG10IGlucHV0IGRldmljZXMgZXZlbiBmb3IgdGhlIHNhbWUgZ3Vlc3QKPiA+Pndp dGggZGlmZmVyZW50IHJlc29sdXRpb25zIHdoaWNoIG1heSBub3QgbWF0Y2ggdGhvc2UKPiA+PmNv bmZpZ3VyZWQgZm9yIHB0ci4KPiA+PihJbiBteSB1c2UtY2FzZSBJIHVzZSBuZXcgZGlzcGxpZiBw cm90b2NvbCBbMV0gaW4gY29uanVuY3Rpb24KPiA+PndpdGggbXQgaW5wdXQgZGV2aWNlcyBhbmQg dGhlIGNvcnJlc3BvbmRpbmcgYmFja2VuZCBpcyBub3QKPiA+PlFFTVUncyB4ZW5mYikKPiA+SSBz ZWUuCj4gPgo+ID4+QXMgdG8gbW9kdWxlIHBhcmFtZXRlcnMsIEkgYWRkZWQgdGhvc2UgdG8gYmUg Y29uc2lzdGVudCB3aXRoCj4gPj5wdHIgZGV2aWNlLiBEbyB5b3UgdGhpbmsgd2UgY2FuIGxpdmUg d2l0aG91dCB0aGVtIGFuZAo+ID4+ZG8geW91IHdhbnQgbWUgdG8gcmVtb3ZlIHRoZW0/Cj4gPlll cywgSSB0aGluayB3ZSBiZXR0ZXIuIEkgYW0gYWxzbyBjb25mdXNlZCBieSB0aGUgd2F5IHlvdSBh cmUgaGFuZGxpbmcKPiA+dGhlIG1vZHVsZSBwYXJhbWV0ZXJzLiBJdCBsb29rcyB0byBtZSB5b3Ug dXBkYXRlIHRoZW0gd2l0aCBkYXRhIHBhc3NlZAo+ID5mcm9tIHRoZSBiYWNrZW5kLCBidXQgbmV2 ZXIgdXNlIHRoZSBkYXRhLi4uCj4gSSBoYXZlIHJlbW92ZWQgbW9kdWxlIHBhcmFtZXRlcnMgKHRo ZSBvbmx5IHVzZSBvZiB0aG9zZQo+IHdhcyB0byBiZSBhYmxlIHRvIHNlZSBjb25maWd1cmVkIHdp ZHRoIGFuZCBoZWlnaHQgb24KPiBndWVzdCBzaWRlLCBidXQgdGhpcyBpcyBtaW5vcikKCmV2dGVz dCB3b3VsZCBzaG93IGl0IHRvIHlvdS4gT3IgeW91IGNhbiBxdWVyeSBpbnB1dCBkZXZpY2UgeW91 cnNlbGYKKEVWSU9DR0FCUyBpb3RjbCkuCgo+ID4+Pj4rCj4gPj4+PisJCW10b3VjaC0+bmFtZSA9 ICJYZW4gVmlydHVhbCBNdWx0aS10b3VjaCI7Cj4gPj4+PisJCW10b3VjaC0+cGh5cyA9IGluZm8t PnBoeXM7Cj4gPj4+PisJCW10b3VjaC0+aWQuYnVzdHlwZSA9IEJVU19QQ0k7Cj4gPj4+PisJCW10 b3VjaC0+aWQudmVuZG9yID0gMHg1ODUzOwo+ID4+Pj4rCQltdG91Y2gtPmlkLnByb2R1Y3QgPSAw eGZmZmQ7Cj4gPj4+PisKPiA+Pj4+KwkJX19zZXRfYml0KEVWX0FCUywgbXRvdWNoLT5ldmJpdCk7 Cj4gPj4+PisJCV9fc2V0X2JpdChFVl9LRVksIG10b3VjaC0+ZXZiaXQpOwo+ID4+Pj4rCQlfX3Nl dF9iaXQoQlROX1RPVUNILCBtdG91Y2gtPmtleWJpdCk7CgpQbGVhc2UgbWFrZSBpdAoJCWlucHV0 X3NldF9jYXBhYmlsaXR5KG10b3VjaCwgRVZfS0VZLCBCVE5fVE9VQ0gpOwoKYW5kIGRyb3AgYWxs IF9fc2V0X2JpdCgpcy4KCj4gPj4+PisKPiA+Pj4+KwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRv dWNoLCBBQlNfWCwKPiA+Pj4+KwkJCQkgICAgIDAsIHdpZHRoLCAwLCAwKTsKPiA+Pj4+KwkJaW5w dXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfWSwKPiA+Pj4+KwkJCQkgICAgIDAsIGhlaWdo dCwgMCwgMCk7Cj4gPj4+PisJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX1BSRVNT VVJFLAo+ID4+Pj4rCQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPiA+Pj4+Kwo+ID4+Pj4rCQlpbnB1 dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9UT1VDSF9NQUpPUiwKPiA+Pj4+KwkJCQkg ICAgIDAsIDI1NSwgMCwgMCk7Cj4gPj4+PisJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwg QUJTX01UX1BPU0lUSU9OX1gsCj4gPj4+PisJCQkJICAgICAwLCB3aWR0aCwgMCwgMCk7Cj4gPj4+ PisJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1ksCj4gPj4+ PisJCQkJICAgICAwLCBoZWlnaHQsIDAsIDApOwo+ID4+Pj4rCQlpbnB1dF9zZXRfYWJzX3BhcmFt cyhtdG91Y2gsIEFCU19NVF9QUkVTU1VSRSwKPiA+Pj4+KwkJCQkgICAgIDAsIDI1NSwgMCwgMCk7 Cj4gPj4+PisKPiA+Pj4+KwkJaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51bV9jb250LCAw KTsKPiA+V2UgbmVlZCBlcnJvciBoYW5kbGluZyBoZXJlLgo+IGRvbmUKPiA+ICBBbHNvLCBpdCB3 b3VsZCBiZSBuaWNlIGlmIHdlIHNldCBJTlBVVF9NVF8qCj4gPmZsYWdzIGhlcmUsIHNvIHRoYXQg dXNlcnNwYWNlIGhhZCBiZXR0ZXIgY2hhbmNlIG9mIGZpZ3VyaW5nIGhvdyB0bwo+ID5oYW5kbGUg dGhlIGRldmljZS4KPiBkb25lLCBJIHdpbGwgdXNlIElOUFVUX01UX0RJUkVDVCB8IElOUFVUX01U X0RST1BfVU5VU0VECgpEb2VzIHRoYXQgbWVhbiB0aGF0IHlvdXIgYmFja2VuZCBkb2VzIG5vdCBy ZWxpYWJseSByZXBvcnQgcmVsZWFzZSBvZgpjb250YWN0cz8KClRoYW5rcy4KCj4gPj4+PisKPiA+ Pj4+KwkJbXRvdWNoX3NpemVbS1BBUkFNX01UX1hdID0gd2lkdGg7Cj4gPj4+PisJCW10b3VjaF9z aXplW0tQQVJBTV9NVF9ZXSA9IGhlaWdodDsKPiA+Pj4+KwkJaW5mby0+bXRvdWNoX2N1cl9jb250 YWN0X2lkID0gLTE7Cj4gPj4+PisKPiA+Pj4+KwkJcmV0ID0gaW5wdXRfcmVnaXN0ZXJfZGV2aWNl KG10b3VjaCk7Cj4gPj4+PisJCWlmIChyZXQpIHsKPiA+Pj4+KwkJCWlucHV0X2ZyZWVfZGV2aWNl KG10b3VjaCk7Cj4gPj4+PisJCQl4ZW5idXNfZGV2X2ZhdGFsKGluZm8tPnhiZGV2LCByZXQsCj4g Pj4+PisJCQkJCSAiaW5wdXRfcmVnaXN0ZXJfZGV2aWNlKG10b3VjaCkiKTsKPiA+Pj4+KwkJCWdv dG8gZXJyb3I7Cj4gPj4+PisJCX0KPiA+Pj4+KwkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lk ID0gLTE7Cj4gPj4+PisJCWluZm8tPm10b3VjaCA9IG10b3VjaDsKPiA+Pj4+Kwl9Cj4gPj4+PisK PiA+Pj4+ICAJcmV0ID0geGVua2JkX2Nvbm5lY3RfYmFja2VuZChkZXYsIGluZm8pOwo+ID4+Pj4g IAlpZiAocmV0IDwgMCkKPiA+Pj4+ICAJCWdvdG8gZXJyb3I7Cj4gPj4+PkBAIC0yNDAsNiArMzc2 LDggQEAgc3RhdGljIGludCB4ZW5rYmRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYp Cj4gPj4+PiAgCQlpbnB1dF91bnJlZ2lzdGVyX2RldmljZShpbmZvLT5rYmQpOwo+ID4+Pj4gIAlp ZiAoaW5mby0+cHRyKQo+ID4+Pj4gIAkJaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2UoaW5mby0+cHRy KTsKPiA+Pj4+KwlpZiAoaW5mby0+bXRvdWNoKQo+ID4+Pj4rCQlpbnB1dF91bnJlZ2lzdGVyX2Rl dmljZShpbmZvLT5tdG91Y2gpOwo+ID4+Pj4gIAlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpaW5m by0+cGFnZSk7Cj4gPj4+PiAgCWtmcmVlKGluZm8pOwo+ID4+Pj4gIAlyZXR1cm4gMDsKPiA+Pj4+ LS0gCj4gPj4+PjIuNy40Cj4gPj4+Pgo+ID4KPiA+VGhhbmtzLgo+ID4KPiAKPiBGb3IgeW91ciBj b252ZW5pZW5jZSBJIGFtIGF0dGFjaGluZyB0aGUgY2hhbmdlcyBJIGFtIGFib3V0Cj4gdG8gcHV0 IGludG8gdjEgb2YgdGhlIHNlcmllczoKPiAgLSByZW1vdmUgdW5saWtlbHkKPiAgLSByZW1vdmUg bW9kdWxlIHBhcmFtZXRlcnMKPiAgLSBlcnJvciBoYW5kbGluZyBmb3IgaW5wdXRfbXRfaW5pdF9z bG90cwo+ICAtIGxldCB1c2Vyc3BhY2UgYmV0dGVyIGNoYW5jZSBvZiBmaWd1cmluZyBob3cgdG8g aGFuZGxlIHRoZSBkZXZpY2UKPiAKPiBUaGFuayB5b3UsCj4gT2xla3NhbmRyCgo+IEZyb20gZTc2 NTA2YzU1ODQ2ZTJiYjRjY2JhZmE0MzA2NDJlMzY4NjQzZTUxZCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKPiBGcm9tOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hj aGVua29AZXBhbS5jb20+Cj4gRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxNDo0OTo1OCArMDMwMAo+ IFN1YmplY3Q6IFtQQVRDSF0gRml4OiByZW1vdmUgdW5saWtlbHkgRml4OiByZW1vdmUgbW9kdWxl IHBhcmFtdGVycyBGaXg6IGVycm9yCj4gIGhhbmRsaW5nIGZvciBpbnB1dF9tdF9pbml0X3Nsb3Rz IEZpeDogbGV0IHVzZXJzcGFjZSBiZXR0ZXIgY2hhbmNlIG9mIGZpZ3VyaW5nCj4gIGhvdyB0byBo YW5kbGUgdGhlIGRldmljZQo+IAo+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hl bmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9p bnB1dC9taXNjL3hlbi1rYmRmcm9udC5jIHwgMjEgKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIDEg ZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jIGIvZHJpdmVycy9pbnB1 dC9taXNjL3hlbi1rYmRmcm9udC5jCj4gaW5kZXggODI2NmVmOTQ4YTA2Li4yNzNkNzg2YTE5Y2Qg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4gKysrIGIv ZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4gQEAgLTUxLDEyICs1MSw2IEBAIG1v ZHVsZV9wYXJhbV9hcnJheShwdHJfc2l6ZSwgaW50LCBOVUxMLCAwNDQ0KTsKPiAgTU9EVUxFX1BB Uk1fREVTQyhwdHJfc2l6ZSwKPiAgCSJQb2ludGluZyBkZXZpY2Ugd2lkdGgsIGhlaWdodCBpbiBw aXhlbHMgKGRlZmF1bHQgODAwLDYwMCkiKTsKPiAgCj4gLWVudW0geyBLUEFSQU1fTVRfWCwgS1BB UkFNX01UX1ksIEtQQVJBTV9NVF9DTlQgfTsKPiAtc3RhdGljIGludCBtdG91Y2hfc2l6ZVtLUEFS QU1fTVRfQ05UXSA9IHsgWEVORkJfV0lEVEgsIFhFTkZCX0hFSUdIVCB9Owo+IC1tb2R1bGVfcGFy YW1fYXJyYXkobXRvdWNoX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4gLU1PRFVMRV9QQVJNX0RF U0MocHRyX3NpemUsCj4gLQkiTXVsdGktdG91Y2ggZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4 ZWxzIChkZWZhdWx0IDgwMCw2MDApIik7Cj4gLQo+ICBzdGF0aWMgaW50IHhlbmtiZF9yZW1vdmUo c3RydWN0IHhlbmJ1c19kZXZpY2UgKik7Cj4gIHN0YXRpYyBpbnQgeGVua2JkX2Nvbm5lY3RfYmFj a2VuZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqLCBzdHJ1Y3QgeGVua2JkX2luZm8gKik7Cj4gIHN0 YXRpYyB2b2lkIHhlbmtiZF9kaXNjb25uZWN0X2JhY2tlbmQoc3RydWN0IHhlbmtiZF9pbmZvICop Owo+IEBAIC0xMTQsOCArMTA4LDggQEAgc3RhdGljIGlycXJldHVybl90IGlucHV0X2hhbmRsZXIo aW50IHJxLCB2b2lkICpkZXZfaWQpCj4gIAkJCWRldiA9IGluZm8tPm10b3VjaDsKPiAgCQkJaWYg KHVubGlrZWx5KCFkZXYpKQo+ICAJCQkJYnJlYWs7Cj4gLQkJCWlmICh1bmxpa2VseShldmVudC0+ bXRvdWNoLmNvbnRhY3RfaWQgIT0KPiAtCQkJCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQp KSB7Cj4gKwkJCWlmIChldmVudC0+bXRvdWNoLmNvbnRhY3RfaWQgIT0KPiArCQkJCQlpbmZvLT5t dG91Y2hfY3VyX2NvbnRhY3RfaWQpIHsKPiAgCQkJCWluZm8tPm10b3VjaF9jdXJfY29udGFjdF9p ZCA9Cj4gIAkJCQkJZXZlbnQtPm10b3VjaC5jb250YWN0X2lkOwo+ICAJCQkJaW5wdXRfbXRfc2xv dChkZXYsIGV2ZW50LT5tdG91Y2guY29udGFjdF9pZCk7Cj4gQEAgLTMyNywxMCArMzIxLDE1IEBA IHN0YXRpYyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4gIAkJ aW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfTVRfUFJFU1NVUkUsCj4gIAkJCQkgICAg IDAsIDI1NSwgMCwgMCk7Cj4gIAo+IC0JCWlucHV0X210X2luaXRfc2xvdHMobXRvdWNoLCBudW1f Y29udCwgMCk7Cj4gKwkJcmV0ID0gaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51bV9jb250 LAo+ICsJCQkJSU5QVVRfTVRfRElSRUNUIHwgSU5QVVRfTVRfRFJPUF9VTlVTRUQpOwo+ICsJCWlm IChyZXQpIHsKPiArCQkJaW5wdXRfZnJlZV9kZXZpY2UobXRvdWNoKTsKPiArCQkJeGVuYnVzX2Rl dl9mYXRhbChpbmZvLT54YmRldiwgcmV0LAo+ICsJCQkJCSAiaW5wdXRfbXRfaW5pdF9zbG90cyIp Owo+ICsJCQlnb3RvIGVycm9yOwo+ICsJCX0KPiAgCj4gLQkJbXRvdWNoX3NpemVbS1BBUkFNX01U X1hdID0gd2lkdGg7Cj4gLQkJbXRvdWNoX3NpemVbS1BBUkFNX01UX1ldID0gaGVpZ2h0Owo+ICAJ CWluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCA9IC0xOwo+ICAKPiAgCQlyZXQgPSBpbnB1dF9y ZWdpc3Rlcl9kZXZpY2UobXRvdWNoKTsKPiAtLSAKPiAyLjcuNAo+IAoKCi0tIApEbWl0cnkKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=