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: Mon, 29 May 2017 22:51:50 -0700 Message-ID: <20170530055150.GA38163__47512.4407945716$1496123595$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> 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 1dFa4S-0006IL-M1 for xen-devel@lists.xenproject.org; Tue, 30 May 2017 05:51:56 +0000 Received: by mail-pf0-f196.google.com with SMTP id w69so15511816pfk.1 for ; Mon, 29 May 2017 22:51:55 -0700 (PDT) Content-Disposition: inline In-Reply-To: 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 T24gRnJpLCBBcHIgMjEsIDIwMTcgYXQgMDk6NDA6MzZBTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gSGksIERtaXRyeSEKPiAKPiBPbiAwNC8yMS8yMDE3IDA1OjEwIEFN LCBEbWl0cnkgVG9yb2tob3Ygd3JvdGU6Cj4gPkhpIE9sZWtzYW5kciwKPiA+Cj4gPk9uIFRodSwg QXByIDEzLCAyMDE3IGF0IDAyOjM4OjA0UE0gKzAzMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtv IHdyb3RlOgo+ID4+RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRy dXNoY2hlbmtvQGVwYW0uY29tPgo+ID4+Cj4gPj5FeHRlbmQgeGVuX2tiZGZyb250IHRvIHByb3Zp ZGUgbXVsdGktdG91Y2ggc3VwcG9ydAo+ID4+dG8gdW5wcml2aWxlZ2VkIGRvbWFpbnMuCj4gPj4K PiA+PlNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5k cnVzaGNoZW5rb0BlcGFtLmNvbT4KPiA+Pi0tLQo+ID4+ICBkcml2ZXJzL2lucHV0L21pc2MveGVu LWtiZGZyb250LmMgfCAxNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K PiA+PiAgMSBmaWxlIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ ID4+Cj4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jIGIv ZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4gPj5pbmRleCAwMWMyN2I0YzMyODgu LmU1ZDA2NGFhYTIzNyAxMDA2NDQKPiA+Pi0tLSBhL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2Jk ZnJvbnQuYwo+ID4+KysrIGIvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4gPj5A QCAtMTcsNiArMTcsNyBAQAo+ID4+ICAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KPiA+PiAgI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4+ICAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KPiA+ PisjaW5jbHVkZSA8bGludXgvaW5wdXQvbXQuaD4KPiA+PiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIu aD4KPiA+PiAgI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5oPgo+ID4+QEAgLTM0LDExICsz NSwxNCBAQAo+ID4+ICBzdHJ1Y3QgeGVua2JkX2luZm8gewo+ID4+ICAJc3RydWN0IGlucHV0X2Rl diAqa2JkOwo+ID4+ICAJc3RydWN0IGlucHV0X2RldiAqcHRyOwo+ID4+KwlzdHJ1Y3QgaW5wdXRf ZGV2ICptdG91Y2g7Cj4gPj4gIAlzdHJ1Y3QgeGVua2JkX3BhZ2UgKnBhZ2U7Cj4gPj4gIAlpbnQg Z3JlZjsKPiA+PiAgCWludCBpcnE7Cj4gPj4gIAlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJkZXY7 Cj4gPj4gIAljaGFyIHBoeXNbMzJdOwo+ID4+KwkvKiBjdXJyZW50IE1UIHNsb3QvY29udGFjdCBJ RCB3ZSBhcmUgaW5qZWN0aW5nIGV2ZW50cyBpbiAqLwo+ID4+KwlpbnQgbXRvdWNoX2N1cl9jb250 YWN0X2lkOwo+ID4+ICB9Owo+ID4+ICBlbnVtIHsgS1BBUkFNX1gsIEtQQVJBTV9ZLCBLUEFSQU1f Q05UIH07Cj4gPj5AQCAtNDcsNiArNTEsMTIgQEAgbW9kdWxlX3BhcmFtX2FycmF5KHB0cl9zaXpl LCBpbnQsIE5VTEwsIDA0NDQpOwo+ID4+ICBNT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+ID4+ ICAJIlBvaW50aW5nIGRldmljZSB3aWR0aCwgaGVpZ2h0IGluIHBpeGVscyAoZGVmYXVsdCA4MDAs NjAwKSIpOwo+ID4+K2VudW0geyBLUEFSQU1fTVRfWCwgS1BBUkFNX01UX1ksIEtQQVJBTV9NVF9D TlQgfTsKPiA+PitzdGF0aWMgaW50IG10b3VjaF9zaXplW0tQQVJBTV9NVF9DTlRdID0geyBYRU5G Ql9XSURUSCwgWEVORkJfSEVJR0hUIH07Cj4gPj4rbW9kdWxlX3BhcmFtX2FycmF5KG10b3VjaF9z aXplLCBpbnQsIE5VTEwsIDA0NDQpOwo+ID4+K01PRFVMRV9QQVJNX0RFU0MocHRyX3NpemUsCj4g Pj4rCSJNdWx0aS10b3VjaCBkZXZpY2Ugd2lkdGgsIGhlaWdodCBpbiBwaXhlbHMgKGRlZmF1bHQg ODAwLDYwMCkiKTsKPiA+PisKPiA+V2h5IGRvIHlvdSBuZWVkIHNlcGFyYXRlIG1vZHVsZSBwYXJh bWV0ZXJzIGZvciBtdWx0aS10b3VjaCBkZXZpY2U/Cj4gcGxlYXNlIHNlZSBiZWxvdwo+ID4KPiA+ PiAgc3RhdGljIGludCB4ZW5rYmRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICopOwo+ID4+ ICBzdGF0aWMgaW50IHhlbmtiZF9jb25uZWN0X2JhY2tlbmQoc3RydWN0IHhlbmJ1c19kZXZpY2Ug Kiwgc3RydWN0IHhlbmtiZF9pbmZvICopOwo+ID4+ICBzdGF0aWMgdm9pZCB4ZW5rYmRfZGlzY29u bmVjdF9iYWNrZW5kKHN0cnVjdCB4ZW5rYmRfaW5mbyAqKTsKPiA+PkBAIC0xMDAsNiArMTEwLDYw IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpbnB1dF9oYW5kbGVyKGludCBycSwgdm9pZCAqZGV2X2lk KQo+ID4+ICAJCQkJaW5wdXRfcmVwb3J0X3JlbChkZXYsIFJFTF9XSEVFTCwKPiA+PiAgCQkJCQkJ IC1ldmVudC0+cG9zLnJlbF96KTsKPiA+PiAgCQkJYnJlYWs7Cj4gPj4rCQljYXNlIFhFTktCRF9U WVBFX01UT1VDSDoKPiA+PisJCQlkZXYgPSBpbmZvLT5tdG91Y2g7Cj4gPj4rCQkJaWYgKHVubGlr ZWx5KCFkZXYpKQo+ID4+KwkJCQlicmVhazsKPiA+PisJCQlpZiAodW5saWtlbHkoZXZlbnQtPm10 b3VjaC5jb250YWN0X2lkICE9Cj4gPj4rCQkJCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQp KSB7Cj4gPldoeSBpcyB0aGlzIHVubGlrZWx5PyBEb2VzIGNvbnRhY3QgSUQgY2hhbmdlcyBvbmNl IGluIDEwMDAgcGFja2V0cyBvcgo+ID5ldmVuIGxlc3M/Cj4gTXUgYXNzdW1wdGlvbiB3YXMgdGhh dCByZWdhcmRsZXNzIG9mIHRoZSBmYWN0IHRoYXQgd2UgYXJlIG11bHRpLXRvdWNoCj4gZGV2aWNl IHN0aWxsIHNpbmdsZSB0b3VjaGVzIHdpbGwgY29tZSBpbiBtb3JlIGZyZXF1ZW50bHkKPiBCdXQg SSBjYW4gcmVtb3ZlICp1bmxpa2VseSogaWYgbXkgYXNzdW1wdGlvbiBpcyBub3QgY29ycmVjdAoK SSB0aGluayB0aGUgbm9ybWFsIGV4cGVjdGF0aW9uIGlzIHRoYXQgInVubGlrZWx5IiBpcyBzdXBw b3NlZCBmb3IKc29tZXRoaW5nIHRoYXQgaGFwcGVucyBvbmNlIGluIGEgYmx1ZSBtb29uLCBzbyBJ J2QgcmF0aGVyIHJlbW92ZSBpdC4KCj4gPj4rCQkJCWluZm8tPm10b3VjaF9jdXJfY29udGFjdF9p ZCA9Cj4gPj4rCQkJCQlldmVudC0+bXRvdWNoLmNvbnRhY3RfaWQ7Cj4gPj4rCQkJCWlucHV0X210 X3Nsb3QoZGV2LCBldmVudC0+bXRvdWNoLmNvbnRhY3RfaWQpOwo+ID4+KwkJCX0KPiA+PisJCQlz d2l0Y2ggKGV2ZW50LT5tdG91Y2guZXZlbnRfdHlwZSkgewo+ID4+KwkJCWNhc2UgWEVOS0JEX01U X0VWX0RPV046Cj4gPj4rCQkJCWlucHV0X210X3JlcG9ydF9zbG90X3N0YXRlKGRldiwgTVRfVE9P TF9GSU5HRVIsCj4gPj4rCQkJCQkJCSAgIHRydWUpOwoKU2hvdWxkIHdlIGVzdGFibGlzaCB0b29s IGV2ZW50PyBXZSBoYXZlIE1UX1RPT0xfUEVOLCBldGMuCgo+ID4+KwkJCQlpbnB1dF9ldmVudChk ZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9OX1gsCj4gPj4rCQkJCQkgICAgZXZlbnQtPm10b3Vj aC51LnBvcy5hYnNfeCk7Cj4gPj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRf UE9TSVRJT05fWSwKPiA+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPiA+ PisJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19YLAo+ID4+KwkJCQkJICAgIGV2ZW50 LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+ID4+KwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywg QUJTX1ksCj4gPj4rCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeSk7Cj4gPj4rCQkJ CWJyZWFrOwo+ID4+KwkJCWNhc2UgWEVOS0JEX01UX0VWX1VQOgo+ID4+KwkJCQlpbnB1dF9tdF9y ZXBvcnRfc2xvdF9zdGF0ZShkZXYsIE1UX1RPT0xfRklOR0VSLAo+ID4+KwkJCQkJCQkgICBmYWxz ZSk7Cj4gPj4rCQkJCWJyZWFrOwo+ID4+KwkJCWNhc2UgWEVOS0JEX01UX0VWX01PVElPTjoKPiA+ PisJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19NVF9QT1NJVElPTl9YLAo+ID4+KwkJ CQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+ID4+KwkJCQlpbnB1dF9ldmVudChk ZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9OX1ksCj4gPj4rCQkJCQkgICAgZXZlbnQtPm10b3Vj aC51LnBvcy5hYnNfeSk7Cj4gPj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfWCwK PiA+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic194KTsKPiA+PisJCQkJaW5wdXRf ZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19ZLAo+ID4+KwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5w b3MuYWJzX3kpOwo+ID4+KwkJCQlicmVhazsKPiA+PisJCQljYXNlIFhFTktCRF9NVF9FVl9TWU46 Cj4gPj4rCQkJCWlucHV0X210X3N5bmNfZnJhbWUoZGV2KTsKPiA+PisJCQkJYnJlYWs7Cj4gPj4r CQkJY2FzZSBYRU5LQkRfTVRfRVZfU0hBUEU6Cj4gPj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZf QUJTLCBBQlNfTVRfVE9VQ0hfTUFKT1IsCj4gPj4rCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnNo YXBlLm1ham9yKTsKPiA+PisJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19NVF9UT1VD SF9NSU5PUiwKPiA+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUuc2hhcGUubWlub3IpOwo+ID4+ KwkJCQlicmVhazsKPiA+PisJCQljYXNlIFhFTktCRF9NVF9FVl9PUklFTlQ6Cj4gPj4rCQkJCWlu cHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfT1JJRU5UQVRJT04sCj4gPj4rCQkJCQkgICAg ZXZlbnQtPm10b3VjaC51Lm9yaWVudGF0aW9uKTsKPiA+PisJCQkJYnJlYWs7Cj4gPj4rCQkJfQo+ ID4+KwkJCS8qIG9ubHkgcmVwb3J0IHN5biB3aGVuIHJlcXVlc3RlZCAqLwo+ID4+KwkJCWlmIChl dmVudC0+bXRvdWNoLmV2ZW50X3R5cGUgIT0gWEVOS0JEX01UX0VWX1NZTikKPiA+PisJCQkJZGV2 ID0gTlVMTDsKPiA+PiAgCQl9Cj4gPj4gIAkJaWYgKGRldikKPiA+PiAgCQkJaW5wdXRfc3luYyhk ZXYpOwo+ID4+QEAgLTExNSw5ICsxNzksOSBAQCBzdGF0aWMgaW50IHhlbmtiZF9wcm9iZShzdHJ1 Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+ID4+ICAJCQkJICBjb25zdCBzdHJ1Y3QgeGVuYnVzX2Rl dmljZV9pZCAqaWQpCj4gPj4gIHsKPiA+PiAgCWludCByZXQsIGk7Cj4gPj4tCXVuc2lnbmVkIGlu dCBhYnM7Cj4gPj4rCXVuc2lnbmVkIGludCBhYnMsIHRvdWNoOwo+ID4+ICAJc3RydWN0IHhlbmti ZF9pbmZvICppbmZvOwo+ID4+LQlzdHJ1Y3QgaW5wdXRfZGV2ICprYmQsICpwdHI7Cj4gPj4rCXN0 cnVjdCBpbnB1dF9kZXYgKmtiZCwgKnB0ciwgKm10b3VjaDsKPiA+PiAgCWluZm8gPSBremFsbG9j KHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpOwo+ID4+ICAJaWYgKCFpbmZvKSB7Cj4gPj5AQCAt MTUyLDYgKzIxNiwxNyBAQCBzdGF0aWMgaW50IHhlbmtiZF9wcm9iZShzdHJ1Y3QgeGVuYnVzX2Rl dmljZSAqZGV2LAo+ID4+ICAJCX0KPiA+PiAgCX0KPiA+PisJdG91Y2ggPSB4ZW5idXNfcmVhZF91 bnNpZ25lZChkZXYtPm5vZGVuYW1lLAo+ID4+KwkJCQkgICAgIFhFTktCRF9GSUVMRF9GRUFUX01U T1VDSCwgMCk7Cj4gPj4rCWlmICh0b3VjaCkgewo+ID4+KwkJcmV0ID0geGVuYnVzX3dyaXRlKFhC VF9OSUwsIGRldi0+bm9kZW5hbWUsCj4gPj4rCQkJCSAgIFhFTktCRF9GSUVMRF9SRVFfTVRPVUNI LCAiMSIpOwo+ID4+KwkJaWYgKHJldCkgewo+ID4+KwkJCXByX3dhcm5pbmcoInhlbmtiZDogY2Fu J3QgcmVxdWVzdCBtdWx0aS10b3VjaCIpOwo+ID4+KwkJCXRvdWNoID0gMDsKPiA+PisJCX0KPiA+ PisJfQo+ID4+Kwo+ID4+ICAJLyoga2V5Ym9hcmQgKi8KPiA+PiAgCWtiZCA9IGlucHV0X2FsbG9j YXRlX2RldmljZSgpOwo+ID4+ICAJaWYgKCFrYmQpCj4gPj5AQCAtMjA4LDYgKzI4Myw2NyBAQCBz dGF0aWMgaW50IHhlbmtiZF9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+ID4+ICAJ fQo+ID4+ICAJaW5mby0+cHRyID0gcHRyOwo+ID4+KwkvKiBtdWx0aS10b3VjaCBkZXZpY2UgKi8K PiA+PisJaWYgKHRvdWNoKSB7Cj4gPj4rCQlpbnQgbnVtX2NvbnQsIHdpZHRoLCBoZWlnaHQ7Cj4g Pj4rCj4gPj4rCQltdG91Y2ggPSBpbnB1dF9hbGxvY2F0ZV9kZXZpY2UoKTsKPiA+PisJCWlmICgh bXRvdWNoKQo+ID4+KwkJCWdvdG8gZXJyb3Jfbm9tZW07Cj4gPj4rCj4gPj4rCQludW1fY29udCA9 IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT5ub2RlbmFtZSwKPiA+PisJCQkJCQlY RU5LQkRfRklFTERfTVRfTlVNX0NPTlRBQ1RTLAo+ID4+KwkJCQkJCTEpOwoKU2hvdWxkIHdlIHJl ZnVzZSBNVCBkZXZpY2VzIHdpdGggbnVtYmVyIG9mIGNvbnRhY3RzIGxlc3MgdGhhbiAyPwoKPiA+ PisJCXdpZHRoID0geGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+ ID4+KwkJCQkJICAgICBYRU5LQkRfRklFTERfTVRfV0lEVEgsCj4gPj4rCQkJCQkgICAgIFhFTkZC X1dJRFRIKTsKPiA+PisJCWhlaWdodCA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2 LT5ub2RlbmFtZSwKPiA+PisJCQkJCSAgICAgIFhFTktCRF9GSUVMRF9NVF9IRUlHSFQsCj4gPj4r CQkJCQkgICAgICBYRU5GQl9IRUlHSFQpOwo+ID5DdXJpb3VzIHdoeSB5b3UgbmVlZCBzZXBhcmF0 ZSBwYXJhbWV0ZXJzIGhlcmUgdG9vLi4uCj4gVGhpcyBpcyBiZWNhdXNlIG10IHBhcmFtZXRlcnMg YXJlIGRpZmZlcmVudCBmcm9tIHB0cgo+IGluIGEgd2F5IHRoYXQgdGhleSBhcmUgY29uZmlndXJh YmxlIHBlciBmcm9udCBkcml2ZXIncwo+IGluc3RhbmNlIHJhdGhlciB0aGFuIHBlciBiYWNrZW5k LCBlLmcuIGluIFhlblN0b3JlOgo+IAo+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZrYmQvMS8w L3dpZHRoID0gIjE5MjAiCj4gL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmtiZC8xLzAvaGVpZ2h0 ID0gIjEwODAiCj4gCj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gt d2lkdGggPSAiMTkyMCIKPiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMC9tdWx0aS10b3Vj aC1oZWlnaHQgPSAiMTA4MCIKPiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMC9tdWx0aS10 b3VjaC1udW0tY29udGFjdHMgPSAiMTAiCj4gCj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2Jk LzEvbXVsdGktdG91Y2gtd2lkdGggPSAiODAwIgo+IC9sb2NhbC9kb21haW4vMS9kZXZpY2Uvdmti ZC8xL211bHRpLXRvdWNoLWhlaWdodCA9ICI2MDAiCj4gL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 a2JkLzEvbXVsdGktdG91Y2gtbnVtLWNvbnRhY3RzID0gIjMiCj4gCj4gVGhlIG1haW4gcmVhc29u IGZvciBzdWNoIGNvbmZpZ3VyYXRpb24gaXMgdGhhdCB5b3UgY2FuCj4gY29uZmlndXJlIG11bHRp cGxlIG10IGlucHV0IGRldmljZXMgZXZlbiBmb3IgdGhlIHNhbWUgZ3Vlc3QKPiB3aXRoIGRpZmZl cmVudCByZXNvbHV0aW9ucyB3aGljaCBtYXkgbm90IG1hdGNoIHRob3NlCj4gY29uZmlndXJlZCBm b3IgcHRyLgo+IChJbiBteSB1c2UtY2FzZSBJIHVzZSBuZXcgZGlzcGxpZiBwcm90b2NvbCBbMV0g aW4gY29uanVuY3Rpb24KPiB3aXRoIG10IGlucHV0IGRldmljZXMgYW5kIHRoZSBjb3JyZXNwb25k aW5nIGJhY2tlbmQgaXMgbm90Cj4gUUVNVSdzIHhlbmZiKQoKSSBzZWUuCgo+IAo+IEFzIHRvIG1v ZHVsZSBwYXJhbWV0ZXJzLCBJIGFkZGVkIHRob3NlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAo+IHB0 ciBkZXZpY2UuIERvIHlvdSB0aGluayB3ZSBjYW4gbGl2ZSB3aXRob3V0IHRoZW0gYW5kCj4gZG8g eW91IHdhbnQgbWUgdG8gcmVtb3ZlIHRoZW0/CgpZZXMsIEkgdGhpbmsgd2UgYmV0dGVyLiBJIGFt IGFsc28gY29uZnVzZWQgYnkgdGhlIHdheSB5b3UgYXJlIGhhbmRsaW5nCnRoZSBtb2R1bGUgcGFy YW1ldGVycy4gSXQgbG9va3MgdG8gbWUgeW91IHVwZGF0ZSB0aGVtIHdpdGggZGF0YSBwYXNzZWQK ZnJvbSB0aGUgYmFja2VuZCwgYnV0IG5ldmVyIHVzZSB0aGUgZGF0YS4uLgoKPiA+PisKPiA+PisJ CW10b3VjaC0+bmFtZSA9ICJYZW4gVmlydHVhbCBNdWx0aS10b3VjaCI7Cj4gPj4rCQltdG91Y2gt PnBoeXMgPSBpbmZvLT5waHlzOwo+ID4+KwkJbXRvdWNoLT5pZC5idXN0eXBlID0gQlVTX1BDSTsK PiA+PisJCW10b3VjaC0+aWQudmVuZG9yID0gMHg1ODUzOwo+ID4+KwkJbXRvdWNoLT5pZC5wcm9k dWN0ID0gMHhmZmZkOwo+ID4+Kwo+ID4+KwkJX19zZXRfYml0KEVWX0FCUywgbXRvdWNoLT5ldmJp dCk7Cj4gPj4rCQlfX3NldF9iaXQoRVZfS0VZLCBtdG91Y2gtPmV2Yml0KTsKPiA+PisJCV9fc2V0 X2JpdChCVE5fVE9VQ0gsIG10b3VjaC0+a2V5Yml0KTsKPiA+PisKPiA+PisJCWlucHV0X3NldF9h YnNfcGFyYW1zKG10b3VjaCwgQUJTX1gsCj4gPj4rCQkJCSAgICAgMCwgd2lkdGgsIDAsIDApOwo+ ID4+KwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfWSwKPiA+PisJCQkJICAgICAw LCBoZWlnaHQsIDAsIDApOwo+ID4+KwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNf UFJFU1NVUkUsCj4gPj4rCQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPiA+PisKPiA+PisJCWlucHV0 X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX01UX1RPVUNIX01BSk9SLAo+ID4+KwkJCQkgICAg IDAsIDI1NSwgMCwgMCk7Cj4gPj4rCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19N VF9QT1NJVElPTl9YLAo+ID4+KwkJCQkgICAgIDAsIHdpZHRoLCAwLCAwKTsKPiA+PisJCWlucHV0 X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1ksCj4gPj4rCQkJCSAgICAg MCwgaGVpZ2h0LCAwLCAwKTsKPiA+PisJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJT X01UX1BSRVNTVVJFLAo+ID4+KwkJCQkgICAgIDAsIDI1NSwgMCwgMCk7Cj4gPj4rCj4gPj4rCQlp bnB1dF9tdF9pbml0X3Nsb3RzKG10b3VjaCwgbnVtX2NvbnQsIDApOwoKV2UgbmVlZCBlcnJvciBo YW5kbGluZyBoZXJlLiBBbHNvLCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIHNldCBJTlBVVF9NVF8q CmZsYWdzIGhlcmUsIHNvIHRoYXQgdXNlcnNwYWNlIGhhZCBiZXR0ZXIgY2hhbmNlIG9mIGZpZ3Vy aW5nIGhvdyB0bwpoYW5kbGUgdGhlIGRldmljZS4KCj4gPj4rCj4gPj4rCQltdG91Y2hfc2l6ZVtL UEFSQU1fTVRfWF0gPSB3aWR0aDsKPiA+PisJCW10b3VjaF9zaXplW0tQQVJBTV9NVF9ZXSA9IGhl aWdodDsKPiA+PisJCWluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCA9IC0xOwo+ID4+Kwo+ID4+ KwkJcmV0ID0gaW5wdXRfcmVnaXN0ZXJfZGV2aWNlKG10b3VjaCk7Cj4gPj4rCQlpZiAocmV0KSB7 Cj4gPj4rCQkJaW5wdXRfZnJlZV9kZXZpY2UobXRvdWNoKTsKPiA+PisJCQl4ZW5idXNfZGV2X2Zh dGFsKGluZm8tPnhiZGV2LCByZXQsCj4gPj4rCQkJCQkgImlucHV0X3JlZ2lzdGVyX2RldmljZSht dG91Y2gpIik7Cj4gPj4rCQkJZ290byBlcnJvcjsKPiA+PisJCX0KPiA+PisJCWluZm8tPm10b3Vj aF9jdXJfY29udGFjdF9pZCA9IC0xOwo+ID4+KwkJaW5mby0+bXRvdWNoID0gbXRvdWNoOwo+ID4+ Kwl9Cj4gPj4rCj4gPj4gIAlyZXQgPSB4ZW5rYmRfY29ubmVjdF9iYWNrZW5kKGRldiwgaW5mbyk7 Cj4gPj4gIAlpZiAocmV0IDwgMCkKPiA+PiAgCQlnb3RvIGVycm9yOwo+ID4+QEAgLTI0MCw2ICsz NzYsOCBAQCBzdGF0aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRl dikKPiA+PiAgCQlpbnB1dF91bnJlZ2lzdGVyX2RldmljZShpbmZvLT5rYmQpOwo+ID4+ICAJaWYg KGluZm8tPnB0cikKPiA+PiAgCQlpbnB1dF91bnJlZ2lzdGVyX2RldmljZShpbmZvLT5wdHIpOwo+ ID4+KwlpZiAoaW5mby0+bXRvdWNoKQo+ID4+KwkJaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2UoaW5m by0+bXRvdWNoKTsKPiA+PiAgCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylpbmZvLT5wYWdlKTsK PiA+PiAgCWtmcmVlKGluZm8pOwo+ID4+ICAJcmV0dXJuIDA7Cj4gPj4tLSAKPiA+PjIuNy40Cj4g Pj4KCgpUaGFua3MuCgotLSAKRG1pdHJ5CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK