From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v1,3/5] dmaengine: dw: Split DW and iDMA 32-bit operations From: Andy Shevchenko Message-Id: <20181130205459.GW10650@smile.fi.intel.com> Date: Fri, 30 Nov 2018 22:54:59 +0200 To: Viresh Kumar , dmaengine@vger.kernel.org, Vinod Koul List-ID: T24gRnJpLCBOb3YgMzAsIDIwMTggYXQgMTA6MzY6NDRQTSArMDIwMCwgQW5keSBTaGV2Y2hlbmtv IHdyb3RlOgo+IEhlcmUgaXMgYSBraW5kYSBiaWcgcmVmYWN0b3JpbmcgdGhhdCBzaG91bGQgaGF2 ZSBiZWVuIGRvbmUKPiBpbiB0aGUgZmlyc3QgcGxhY2UsIHdoZW4gSW50ZWwgaURNQSAzMi1iaXQg c3VwcG9ydCBhcHBlYXJlZC4KPiAKPiBJdCBzcGxpdHMgb3BlcmF0aW9ucyB3aGljaCBhcmUgZGlm ZmVyZW50IHRvIFN5bm9wc3lzIERlc2lnbldhcmUgYW5kCj4gSW50ZWwgaURNQSAzMi1iaXQgY29u dHJvbGxlcnMuCj4gCj4gTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCgpXaGlsZSBmaXJz dCB0d28gYXJlIHJlYWwgYnVnIGZpeGVzIGFuZCByZWFsbHkgc21hbGwsIHRoaXMgb25lIGJpZ2dl ciBhbmQKc3VkZGVubHkgaGFzIGEgdHlwbyB3aGljaCBJIGRpZG4ndCBub3RpY2UgZHVyaW5nIG15 IHRlc3RzLgoKVmlub2QsIHBsZWFzZSwgY29uc2lkZXIgYXBwbHlpbmcgZmlyc3QgdHdvIHVudGls IEkgd2lsbCBjb21lIHdpdGggYmV0dGVyIHRoaXMKb25lIGFuZCBtaWdodCBiZSBzb21ldGhpbmcg bW9yZS4KCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5keSBTaGV2Y2hlbmtvIDxhbmRyaXkuc2hldmNo ZW5rb0BsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZG1hL2R3L01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2RtYS9kdy9jb3JlLmMgICAgICAgICAgICAg ICAgfCAxODggKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZG1hL2R3L2R3 LmMgICAgICAgICAgICAgICAgICB8IDEwOSArKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZG1h L2R3L2lkbWEzMi5jICAgICAgICAgICAgICB8IDEzNyArKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvZG1hL2R3L2ludGVybmFsLmggICAgICAgICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL2Rt YS9kdy9wY2kuYyAgICAgICAgICAgICAgICAgfCAgNDUgKysrKy0tLQo+ICBkcml2ZXJzL2RtYS9k dy9wbGF0Zm9ybS5jICAgICAgICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9kbWEvZHcvcmVncy5o ICAgICAgICAgICAgICAgIHwgIDEzICsrCj4gIGluY2x1ZGUvbGludXgvZG1hL2R3LmggICAgICAg ICAgICAgICB8ICAgNCArCj4gIGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcuaCB8 ICAgMiAtCj4gIDEwIGZpbGVzIGNoYW5nZWQsIDMzOSBpbnNlcnRpb25zKCspLCAxNzkgZGVsZXRp b25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2RtYS9kdy9kdy5jCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2RtYS9kdy9pZG1hMzIuYwo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2RtYS9kdy9NYWtlZmlsZSBiL2RyaXZlcnMvZG1hL2R3L01ha2VmaWxlCj4gaW5kZXgg MmI5NDljMmU0NTA0Li42M2VkODk1YzA5YWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEvZHcv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2RtYS9kdy9NYWtlZmlsZQo+IEBAIC0xLDYgKzEsNiBA QAo+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gIG9iai0kKENPTkZJR19E V19ETUFDX0NPUkUpCSs9IGR3X2RtYWNfY29yZS5vCj4gLWR3X2RtYWNfY29yZS1vYmpzCTo9IGNv cmUubwo+ICtkd19kbWFjX2NvcmUtb2Jqcwk6PSBjb3JlLm8gZHcubyBpZG1hMzIubwo+ICAKPiAg b2JqLSQoQ09ORklHX0RXX0RNQUMpCQkrPSBkd19kbWFjLm8KPiAgZHdfZG1hYy1vYmpzCQk6PSBw bGF0Zm9ybS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2R3L2NvcmUuYyBiL2RyaXZlcnMv ZG1hL2R3L2NvcmUuYwo+IGluZGV4IGU4NWIwNzhmYzIwNy4uNzExZjRkMTliYmYxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZG1hL2R3L2NvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZG1hL2R3L2NvcmUu Ywo+IEBAIC0xMzgsNDIgKzEzOCw2IEBAIHN0YXRpYyB2b2lkIGR3Y19kZXNjX3B1dChzdHJ1Y3Qg ZHdfZG1hX2NoYW4gKmR3Yywgc3RydWN0IGR3X2Rlc2MgKmRlc2MpCj4gIAlkd2MtPmRlc2NzX2Fs bG9jYXRlZC0tOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBkd2NfaW5pdGlhbGl6ZV9jaGFuX2lk bWEzMihzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YykKPiAtewo+IC0JdTMyIGNmZ2hpID0gMDsKPiAt CXUzMiBjZmdsbyA9IDA7Cj4gLQo+IC0JLyogU2V0IGRlZmF1bHQgYnVyc3QgYWxpZ25tZW50ICov Cj4gLQljZmdsbyB8PSBJRE1BMzJDX0NGR0xfRFNUX0JVUlNUX0FMSUdOIHwgSURNQTMyQ19DRkdM X1NSQ19CVVJTVF9BTElHTjsKPiAtCj4gLQkvKiBMb3cgNCBiaXRzIG9mIHRoZSByZXF1ZXN0IGxp bmVzICovCj4gLQljZmdoaSB8PSBJRE1BMzJDX0NGR0hfRFNUX1BFUihkd2MtPmR3cy5kc3RfaWQg JiAweGYpOwo+IC0JY2ZnaGkgfD0gSURNQTMyQ19DRkdIX1NSQ19QRVIoZHdjLT5kd3Muc3JjX2lk ICYgMHhmKTsKPiAtCj4gLQkvKiBSZXF1ZXN0IGxpbmUgZXh0ZW5zaW9uICgyIGJpdHMpICovCj4g LQljZmdoaSB8PSBJRE1BMzJDX0NGR0hfRFNUX1BFUl9FWFQoZHdjLT5kd3MuZHN0X2lkID4+IDQg JiAweDMpOwo+IC0JY2ZnaGkgfD0gSURNQTMyQ19DRkdIX1NSQ19QRVJfRVhUKGR3Yy0+ZHdzLnNy Y19pZCA+PiA0ICYgMHgzKTsKPiAtCj4gLQljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2Zn bG8pOwo+IC0JY2hhbm5lbF93cml0ZWwoZHdjLCBDRkdfSEksIGNmZ2hpKTsKPiAtfQo+IC0KPiAt c3RhdGljIHZvaWQgZHdjX2luaXRpYWxpemVfY2hhbl9kdyhzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3 YykKPiAtewo+IC0JdTMyIGNmZ2hpID0gRFdDX0NGR0hfRklGT19NT0RFOwo+IC0JdTMyIGNmZ2xv ID0gRFdDX0NGR0xfQ0hfUFJJT1IoZHdjLT5wcmlvcml0eSk7Cj4gLQlib29sIGhzX3BvbGFyaXR5 ID0gZHdjLT5kd3MuaHNfcG9sYXJpdHk7Cj4gLQo+IC0JY2ZnaGkgfD0gRFdDX0NGR0hfRFNUX1BF Uihkd2MtPmR3cy5kc3RfaWQpOwo+IC0JY2ZnaGkgfD0gRFdDX0NGR0hfU1JDX1BFUihkd2MtPmR3 cy5zcmNfaWQpOwo+IC0KPiAtCS8qIFNldCBwb2xhcml0eSBvZiBoYW5kc2hha2UgaW50ZXJmYWNl ICovCj4gLQljZmdsbyB8PSBoc19wb2xhcml0eSA/IERXQ19DRkdMX0hTX0RTVF9QT0wgfCBEV0Nf Q0ZHTF9IU19TUkNfUE9MIDogMDsKPiAtCj4gLQljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywg Y2ZnbG8pOwo+IC0JY2hhbm5lbF93cml0ZWwoZHdjLCBDRkdfSEksIGNmZ2hpKTsKPiAtfQo+IC0K PiAgc3RhdGljIHZvaWQgZHdjX2luaXRpYWxpemUoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MpCj4g IHsKPiAgCXN0cnVjdCBkd19kbWEgKmR3ID0gdG9fZHdfZG1hKGR3Yy0+Y2hhbi5kZXZpY2UpOwo+ IEBAIC0xODEsMTAgKzE0NSw3IEBAIHN0YXRpYyB2b2lkIGR3Y19pbml0aWFsaXplKHN0cnVjdCBk d19kbWFfY2hhbiAqZHdjKQo+ICAJaWYgKHRlc3RfYml0KERXX0RNQV9JU19JTklUSUFMSVpFRCwg JmR3Yy0+ZmxhZ3MpKQo+ICAJCXJldHVybjsKPiAgCj4gLQlpZiAoZHctPnBkYXRhLT5pc19pZG1h MzIpCj4gLQkJZHdjX2luaXRpYWxpemVfY2hhbl9pZG1hMzIoZHdjKTsKPiAtCWVsc2UKPiAtCQlk d2NfaW5pdGlhbGl6ZV9jaGFuX2R3KGR3Yyk7Cj4gKwlkdy0+aW5pdGlhbGl6ZV9jaGFuKGR3Yyk7 Cj4gIAo+ICAJLyogRW5hYmxlIGludGVycnVwdHMgKi8KPiAgCWNoYW5uZWxfc2V0X2JpdChkdywg TUFTSy5YRkVSLCBkd2MtPm1hc2spOwo+IEBAIC0yMTMsMzcgKzE3NCw2IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBkd2NfY2hhbl9kaXNhYmxlKHN0cnVjdCBkd19kbWEgKmR3LCBzdHJ1Y3QgZHdfZG1h X2NoYW4gKmR3YykKPiAgCQljcHVfcmVsYXgoKTsKPiAgfQo+ICAKPiAtc3RhdGljIHUzMiBieXRl czJibG9jayhzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3Yywgc2l6ZV90IGJ5dGVzLAo+IC0JCQkgIHVu c2lnbmVkIGludCB3aWR0aCwgc2l6ZV90ICpsZW4pCj4gLXsKPiAtCXN0cnVjdCBkd19kbWEgKmR3 ID0gdG9fZHdfZG1hKGR3Yy0+Y2hhbi5kZXZpY2UpOwo+IC0JdTMyIGJsb2NrOwo+IC0KPiAtCS8q IEFsd2F5cyBpbiBieXRlcyBmb3IgaURNQSAzMi1iaXQgKi8KPiAtCWlmIChkdy0+cGRhdGEtPmlz X2lkbWEzMikKPiAtCQl3aWR0aCA9IDA7Cj4gLQo+IC0JaWYgKChieXRlcyA+PiB3aWR0aCkgPiBk d2MtPmJsb2NrX3NpemUpIHsKPiAtCQlibG9jayA9IGR3Yy0+YmxvY2tfc2l6ZTsKPiAtCQkqbGVu ID0gYmxvY2sgPDwgd2lkdGg7Cj4gLQl9IGVsc2Ugewo+IC0JCWJsb2NrID0gYnl0ZXMgPj4gd2lk dGg7Cj4gLQkJKmxlbiA9IGJ5dGVzOwo+IC0JfQo+IC0KPiAtCXJldHVybiBibG9jazsKPiAtfQo+ IC0KPiAtc3RhdGljIHNpemVfdCBibG9jazJieXRlcyhzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3Yywg dTMyIGJsb2NrLCB1MzIgd2lkdGgpCj4gLXsKPiAtCXN0cnVjdCBkd19kbWEgKmR3ID0gdG9fZHdf ZG1hKGR3Yy0+Y2hhbi5kZXZpY2UpOwo+IC0KPiAtCWlmIChkdy0+cGRhdGEtPmlzX2lkbWEzMikK PiAtCQlyZXR1cm4gSURNQTMyQ19DVExIX0JMT0NLX1RTKGJsb2NrKTsKPiAtCj4gLQlyZXR1cm4g RFdDX0NUTEhfQkxPQ0tfVFMoYmxvY2spIDw8IHdpZHRoOwo+IC19Cj4gLQo+ICAvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwo+ICAKPiAgLyogUGVyZm9ybSBzaW5nbGUgYmxvY2sgdHJhbnNmZXIgKi8KPiBAQCAt Mzg5LDEwICszMTksMTEgQEAgc3RhdGljIHZvaWQgZHdjX2NvbXBsZXRlX2FsbChzdHJ1Y3QgZHdf ZG1hICpkdywgc3RydWN0IGR3X2RtYV9jaGFuICpkd2MpCj4gIC8qIFJldHVybnMgaG93IG1hbnkg Ynl0ZXMgd2VyZSBhbHJlYWR5IHJlY2VpdmVkIGZyb20gc291cmNlICovCj4gIHN0YXRpYyBpbmxp bmUgdTMyIGR3Y19nZXRfc2VudChzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YykKPiAgewo+ICsJc3Ry dWN0IGR3X2RtYSAqZHcgPSB0b19kd19kbWEoZHdjLT5jaGFuLmRldmljZSk7Cj4gIAl1MzIgY3Rs aGkgPSBjaGFubmVsX3JlYWRsKGR3YywgQ1RMX0hJKTsKPiAgCXUzMiBjdGxsbyA9IGNoYW5uZWxf cmVhZGwoZHdjLCBDVExfTE8pOwo+ICAKPiAtCXJldHVybiBibG9jazJieXRlcyhkd2MsIGN0bGhp LCBjdGxsbyA+PiA0ICYgNyk7Cj4gKwlyZXR1cm4gZHctPmJsb2NrMmJ5dGVzKGR3YywgY3RsaGks IGN0bGxvID4+IDQgJiA3KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZHdjX3NjYW5fZGVzY3Jp cHRvcnMoc3RydWN0IGR3X2RtYSAqZHcsIHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjKQo+IEBAIC02 NDksNyArNTgwLDcgQEAgZHdjX3ByZXBfZG1hX21lbWNweShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4s IGRtYV9hZGRyX3QgZGVzdCwgZG1hX2FkZHJfdCBzcmMsCj4gIAl1bnNpZ25lZCBpbnQJCXNyY193 aWR0aDsKPiAgCXVuc2lnbmVkIGludAkJZHN0X3dpZHRoOwo+ICAJdW5zaWduZWQgaW50CQlkYXRh X3dpZHRoID0gZHctPnBkYXRhLT5kYXRhX3dpZHRoW21fbWFzdGVyXTsKPiAtCXUzMgkJCWN0bGxv Owo+ICsJdTMyCQkJY3RsbG8sIGN0bGhpOwo+ICAJdTgJCQlsbXMgPSBEV0NfTExQX0xNUyhtX21h c3Rlcik7Cj4gIAo+ICAJZGV2X3ZkYmcoY2hhbjJkZXYoY2hhbiksCj4gQEAgLTY3OCwxMCArNjA5 LDEyIEBAIGR3Y19wcmVwX2RtYV9tZW1jcHkoc3RydWN0IGRtYV9jaGFuICpjaGFuLCBkbWFfYWRk cl90IGRlc3QsIGRtYV9hZGRyX3Qgc3JjLAo+ICAJCWlmICghZGVzYykKPiAgCQkJZ290byBlcnJf ZGVzY19nZXQ7Cj4gIAo+ICsJCWN0bGhpID0gZHctPmJ5dGVzMmJsb2NrKGR3YywgbGVuIC0gb2Zm c2V0LCBzcmNfd2lkdGgsICZ4ZmVyX2NvdW50KTsKPiArCj4gIAkJbGxpX3dyaXRlKGRlc2MsIHNh ciwgc3JjICsgb2Zmc2V0KTsKPiAgCQlsbGlfd3JpdGUoZGVzYywgZGFyLCBkZXN0ICsgb2Zmc2V0 KTsKPiAgCQlsbGlfd3JpdGUoZGVzYywgY3RsbG8sIGN0bGxvKTsKPiAtCQlsbGlfd3JpdGUoZGVz YywgY3RsaGksIGJ5dGVzMmJsb2NrKGR3YywgbGVuIC0gb2Zmc2V0LCBzcmNfd2lkdGgsICZ4ZmVy X2NvdW50KSk7Cj4gKwkJbGxpX3dyaXRlKGRlc2MsIGN0bGhpLCBjdGxoaSk7Cj4gIAkJZGVzYy0+ bGVuID0geGZlcl9jb3VudDsKPiAgCj4gIAkJaWYgKCFmaXJzdCkgewo+IEBAIC03MTksNyArNjUy LDcgQEAgZHdjX3ByZXBfc2xhdmVfc2coc3RydWN0IGRtYV9jaGFuICpjaGFuLCBzdHJ1Y3Qgc2Nh dHRlcmxpc3QgKnNnbCwKPiAgCXN0cnVjdCBkbWFfc2xhdmVfY29uZmlnCSpzY29uZmlnID0gJmR3 Yy0+ZG1hX3Njb25maWc7Cj4gIAlzdHJ1Y3QgZHdfZGVzYwkJKnByZXY7Cj4gIAlzdHJ1Y3QgZHdf ZGVzYwkJKmZpcnN0Owo+IC0JdTMyCQkJY3RsbG87Cj4gKwl1MzIJCQljdGxsbywgY3RsaGk7Cj4g IAl1OAkJCW1fbWFzdGVyID0gZHdjLT5kd3MubV9tYXN0ZXI7Cj4gIAl1OAkJCWxtcyA9IERXQ19M TFBfTE1TKG1fbWFzdGVyKTsKPiAgCWRtYV9hZGRyX3QJCXJlZzsKPiBAQCAtNzY2LDkgKzY5OSwx MSBAQCBkd2NfcHJlcF9zbGF2ZV9zZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIHN0cnVjdCBzY2F0 dGVybGlzdCAqc2dsLAo+ICAJCQlpZiAoIWRlc2MpCj4gIAkJCQlnb3RvIGVycl9kZXNjX2dldDsK PiAgCj4gKwkJCWN0bGhpID0gZHctPmJ5dGVzMmJsb2NrKGR3YywgbGVuLCBtZW1fd2lkdGgsICZk bGVuKTsKPiArCj4gIAkJCWxsaV93cml0ZShkZXNjLCBzYXIsIG1lbSk7Cj4gIAkJCWxsaV93cml0 ZShkZXNjLCBkYXIsIHJlZyk7Cj4gLQkJCWxsaV93cml0ZShkZXNjLCBjdGxoaSwgYnl0ZXMyYmxv Y2soZHdjLCBsZW4sIG1lbV93aWR0aCwgJmRsZW4pKTsKPiArCQkJbGxpX3dyaXRlKGRlc2MsIGN0 bGhpLCBjdGxoaSk7Cj4gIAkJCWxsaV93cml0ZShkZXNjLCBjdGxsbywgY3RsbG8gfCBEV0NfQ1RM TF9TUkNfV0lEVEgobWVtX3dpZHRoKSk7Cj4gIAkJCWRlc2MtPmxlbiA9IGRsZW47Cj4gIAo+IEBA IC04MTIsOSArNzQ3LDExIEBAIGR3Y19wcmVwX3NsYXZlX3NnKHN0cnVjdCBkbWFfY2hhbiAqY2hh biwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsCj4gIAkJCWlmICghZGVzYykKPiAgCQkJCWdvdG8g ZXJyX2Rlc2NfZ2V0Owo+ICAKPiArCQkJY3RsaGkgPSBkdy0+Ynl0ZXMyYmxvY2soZHdjLCBsZW4s IHJlZ193aWR0aCwgJmRsZW4pOwo+ICsKPiAgCQkJbGxpX3dyaXRlKGRlc2MsIHNhciwgcmVnKTsK PiAgCQkJbGxpX3dyaXRlKGRlc2MsIGRhciwgbWVtKTsKPiAtCQkJbGxpX3dyaXRlKGRlc2MsIGN0 bGhpLCBieXRlczJibG9jayhkd2MsIGxlbiwgcmVnX3dpZHRoLCAmZGxlbikpOwo+ICsJCQlsbGlf d3JpdGUoZGVzYywgY3RsaGksIGN0bGhpKTsKPiAgCQkJbWVtX3dpZHRoID0gX19mZnMoZGF0YV93 aWR0aCB8IG1lbSB8IGRsZW4pOwo+ICAJCQlsbGlfd3JpdGUoZGVzYywgY3RsbG8sIGN0bGxvIHwg RFdDX0NUTExfRFNUX1dJRFRIKG1lbV93aWR0aCkpOwo+ICAJCQlkZXNjLT5sZW4gPSBkbGVuOwo+ IEBAIC04NzQsMjIgKzgxMSwxMiBAQCBFWFBPUlRfU1lNQk9MX0dQTChkd19kbWFfZmlsdGVyKTsK PiAgc3RhdGljIGludCBkd2NfY29uZmlnKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgc3RydWN0IGRt YV9zbGF2ZV9jb25maWcgKnNjb25maWcpCj4gIHsKPiAgCXN0cnVjdCBkd19kbWFfY2hhbiAqZHdj ID0gdG9fZHdfZG1hX2NoYW4oY2hhbik7Cj4gLQlzdHJ1Y3QgZG1hX3NsYXZlX2NvbmZpZyAqc2Mg PSAmZHdjLT5kbWFfc2NvbmZpZzsKPiAgCXN0cnVjdCBkd19kbWEgKmR3ID0gdG9fZHdfZG1hKGNo YW4tPmRldmljZSk7Cj4gLQkvKgo+IC0JICogRml4IHNjb25maWcncyBidXJzdCBzaXplIGFjY29y ZGluZyB0byBkd19kbWFjLiBXZSBuZWVkIHRvIGNvbnZlcnQKPiAtCSAqIHRoZW0gYXM6Cj4gLQkg KiAxIC0+IDAsIDQgLT4gMSwgOCAtPiAyLCAxNiAtPiAzLgo+IC0JICoKPiAtCSAqIE5PVEU6IGJ1 cnN0IHNpemUgMiBpcyBub3Qgc3VwcG9ydGVkIGJ5IERlc2lnbldhcmUgY29udHJvbGxlci4KPiAt CSAqICAgICAgIGlETUEgMzItYml0IHN1cHBvcnRzIGl0Lgo+IC0JICovCj4gLQl1MzIgcyA9IGR3 LT5wZGF0YS0+aXNfaWRtYTMyID8gMSA6IDI7Cj4gIAo+ICAJbWVtY3B5KCZkd2MtPmRtYV9zY29u ZmlnLCBzY29uZmlnLCBzaXplb2YoKnNjb25maWcpKTsKPiAgCj4gLQlzYy0+c3JjX21heGJ1cnN0 ID0gc2MtPnNyY19tYXhidXJzdCA+IDEgPyBmbHMoc2MtPnNyY19tYXhidXJzdCkgLSBzIDogMDsK PiAtCXNjLT5kc3RfbWF4YnVyc3QgPSBzYy0+ZHN0X21heGJ1cnN0ID4gMSA/IGZscyhzYy0+ZHN0 X21heGJ1cnN0KSAtIHMgOiAwOwo+ICsJZHctPmVuY29kZV9tYXhidXJzdChkd2MsICZkd2MtPmRt YV9zY29uZmlnLnNyY19tYXhidXJzdCk7Cj4gKwlkdy0+ZW5jb2RlX21heGJ1cnN0KGR3YywgJmR3 Yy0+ZG1hX3Njb25maWcuZHN0X21heGJ1cnN0KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBA IC04OTgsMTYgKzgyNSw5IEBAIHN0YXRpYyB2b2lkIGR3Y19jaGFuX3BhdXNlKHN0cnVjdCBkd19k bWFfY2hhbiAqZHdjLCBib29sIGRyYWluKQo+ICB7Cj4gIAlzdHJ1Y3QgZHdfZG1hICpkdyA9IHRv X2R3X2RtYShkd2MtPmNoYW4uZGV2aWNlKTsKPiAgCXVuc2lnbmVkIGludAkJY291bnQgPSAyMDsJ LyogdGltZW91dCBpdGVyYXRpb25zICovCj4gLQl1MzIJCQljZmdsbzsKPiAgCj4gLQljZmdsbyA9 IGNoYW5uZWxfcmVhZGwoZHdjLCBDRkdfTE8pOwo+IC0JaWYgKGR3LT5wZGF0YS0+aXNfaWRtYTMy KSB7Cj4gLQkJaWYgKGRyYWluKQo+IC0JCQljZmdsbyB8PSBJRE1BMzJDX0NGR0xfQ0hfRFJBSU47 Cj4gLQkJZWxzZQo+IC0JCQljZmdsbyAmPSB+SURNQTMyQ19DRkdMX0NIX0RSQUlOOwo+IC0JfQo+ IC0JY2hhbm5lbF93cml0ZWwoZHdjLCBDRkdfTE8sIGNmZ2xvIHwgRFdDX0NGR0xfQ0hfU1VTUCk7 Cj4gKwlkdy0+c3VzcGVuZF9jaGFuKGR3YywgZHJhaW4pOwo+ICsKPiAgCXdoaWxlICghKGNoYW5u ZWxfcmVhZGwoZHdjLCBDRkdfTE8pICYgRFdDX0NGR0xfRklGT19FTVBUWSkgJiYgY291bnQtLSkK PiAgCQl1ZGVsYXkoMik7Cj4gIAo+IEBAIC0xMDU2LDMzICs5NzYsNyBAQCBzdGF0aWMgdm9pZCBk d2NfaXNzdWVfcGVuZGluZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCj4gIAo+ICAvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwo+ICAKPiAtLyoKPiAtICogUHJvZ3JhbSBGSUZPIHNpemUgb2YgY2hhbm5lbHMuCj4g LSAqCj4gLSAqIEJ5IGRlZmF1bHQgZnVsbCBGSUZPICg1MTIgYnl0ZXMpIGlzIGFzc2lnbmVkIHRv IGNoYW5uZWwgMC4gSGVyZSB3ZQo+IC0gKiBzbGljZSBGSUZPIG9uIGVxdWFsIHBhcnRzIGJldHdl ZW4gY2hhbm5lbHMuCj4gLSAqLwo+IC1zdGF0aWMgdm9pZCBpZG1hMzJfZmlmb19wYXJ0aXRpb24o c3RydWN0IGR3X2RtYSAqZHcpCj4gLXsKPiAtCXU2NCB2YWx1ZSA9IElETUEzMkNfRlBfUFNJWkVf Q0gwKDY0KSB8IElETUEzMkNfRlBfUFNJWkVfQ0gxKDY0KSB8Cj4gLQkJICAgIElETUEzMkNfRlBf VVBEQVRFOwo+IC0JdTY0IGZpZm9fcGFydGl0aW9uID0gMDsKPiAtCj4gLQlpZiAoIWR3LT5wZGF0 YS0+aXNfaWRtYTMyKQo+IC0JCXJldHVybjsKPiAtCj4gLQkvKiBGaWxsIEZJRk9fUEFSVElUSU9O IGxvdyBiaXRzIChDaGFubmVscyAwLi4xLCA0Li41KSAqLwo+IC0JZmlmb19wYXJ0aXRpb24gfD0g dmFsdWUgPDwgMDsKPiAtCj4gLQkvKiBGaWxsIEZJRk9fUEFSVElUSU9OIGhpZ2ggYml0cyAoQ2hh bm5lbHMgMi4uMywgNi4uNykgKi8KPiAtCWZpZm9fcGFydGl0aW9uIHw9IHZhbHVlIDw8IDMyOwo+ IC0KPiAtCS8qIFByb2dyYW0gRklGTyBQYXJ0aXRpb24gcmVnaXN0ZXJzIC0gMTI4IGJ5dGVzIGZv ciBlYWNoIGNoYW5uZWwgKi8KPiAtCWlkbWEzMl93cml0ZXEoZHcsIEZJRk9fUEFSVElUSU9OMSwg Zmlmb19wYXJ0aXRpb24pOwo+IC0JaWRtYTMyX3dyaXRlcShkdywgRklGT19QQVJUSVRJT04wLCBm aWZvX3BhcnRpdGlvbik7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGR3X2RtYV9vZmYoc3RydWN0 IGR3X2RtYSAqZHcpCj4gK3ZvaWQgZG9fZG1hX29mZihzdHJ1Y3QgZHdfZG1hICpkdykKPiAgewo+ ICAJdW5zaWduZWQgaW50IGk7Cj4gIAo+IEBAIC0xMTAxLDcgKzk5NSw3IEBAIHN0YXRpYyB2b2lk IGR3X2RtYV9vZmYoc3RydWN0IGR3X2RtYSAqZHcpCj4gIAkJY2xlYXJfYml0KERXX0RNQV9JU19J TklUSUFMSVpFRCwgJmR3LT5jaGFuW2ldLmZsYWdzKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQg ZHdfZG1hX29uKHN0cnVjdCBkd19kbWEgKmR3KQo+ICt2b2lkIGRvX2RtYV9vbihzdHJ1Y3QgZHdf ZG1hICpkdykKPiAgewo+ICAJZG1hX3dyaXRlbChkdywgQ0ZHLCBEV19DRkdfRE1BX0VOKTsKPiAg fQo+IEBAIC0xMTM3LDcgKzEwMzEsNyBAQCBzdGF0aWMgaW50IGR3Y19hbGxvY19jaGFuX3Jlc291 cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCj4gIAo+ICAJLyogRW5hYmxlIGNvbnRyb2xsZXIg aGVyZSBpZiBuZWVkZWQgKi8KPiAgCWlmICghZHctPmluX3VzZSkKPiAtCQlkd19kbWFfb24oZHcp Owo+ICsJCWRvX2RtYV9vbihkdyk7Cj4gIAlkdy0+aW5fdXNlIHw9IGR3Yy0+bWFzazsKPiAgCj4g IAlyZXR1cm4gMDsKPiBAQCAtMTE3NSwzMCArMTA2OSwyNSBAQCBzdGF0aWMgdm9pZCBkd2NfZnJl ZV9jaGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCj4gIAkvKiBEaXNhYmxlIGNv bnRyb2xsZXIgaW4gY2FzZSBpdCB3YXMgYSBsYXN0IHVzZXIgKi8KPiAgCWR3LT5pbl91c2UgJj0g fmR3Yy0+bWFzazsKPiAgCWlmICghZHctPmluX3VzZSkKPiAtCQlkd19kbWFfb2ZmKGR3KTsKPiAr CQlkb19kbWFfb2ZmKGR3KTsKPiAgCj4gIAlkZXZfdmRiZyhjaGFuMmRldihjaGFuKSwgIiVzOiBk b25lXG4iLCBfX2Z1bmNfXyk7Cj4gIH0KPiAgCj4gLWludCBkd19kbWFfcHJvYmUoc3RydWN0IGR3 X2RtYV9jaGlwICpjaGlwKQo+ICtpbnQgZG9fZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAq Y2hpcCkKPiAgewo+ICsJc3RydWN0IGR3X2RtYSAqZHcgPSBjaGlwLT5kdzsKPiAgCXN0cnVjdCBk d19kbWFfcGxhdGZvcm1fZGF0YSAqcGRhdGE7Cj4gLQlzdHJ1Y3QgZHdfZG1hCQkqZHc7Cj4gIAli b29sCQkJYXV0b2NmZyA9IGZhbHNlOwo+ICAJdW5zaWduZWQgaW50CQlkd19wYXJhbXM7Cj4gIAl1 bnNpZ25lZCBpbnQJCWk7Cj4gIAlpbnQJCQllcnI7Cj4gIAo+IC0JZHcgPSBkZXZtX2t6YWxsb2Mo Y2hpcC0+ZGV2LCBzaXplb2YoKmR3KSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIWR3KQo+IC0JCXJl dHVybiAtRU5PTUVNOwo+IC0KPiAgCWR3LT5wZGF0YSA9IGRldm1fa3phbGxvYyhjaGlwLT5kZXYs IHNpemVvZigqZHctPnBkYXRhKSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoIWR3LT5wZGF0YSkKPiAg CQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gIAlkdy0+cmVncyA9IGNoaXAtPnJlZ3M7Cj4gLQljaGlw LT5kdyA9IGR3Owo+ICAKPiAgCXBtX3J1bnRpbWVfZ2V0X3N5bmMoY2hpcC0+ZGV2KTsKPiAgCj4g QEAgLTEyNTAsMTUgKzExMzksMTAgQEAgaW50IGR3X2RtYV9wcm9iZShzdHJ1Y3QgZHdfZG1hX2No aXAgKmNoaXApCj4gIAlkdy0+YWxsX2NoYW5fbWFzayA9ICgxIDw8IHBkYXRhLT5ucl9jaGFubmVs cykgLSAxOwo+ICAKPiAgCS8qIEZvcmNlIGRtYSBvZmYsIGp1c3QgaW4gY2FzZSAqLwo+IC0JZHdf ZG1hX29mZihkdyk7Cj4gLQo+IC0JaWRtYTMyX2ZpZm9fcGFydGl0aW9uKGR3KTsKPiArCWR3LT5k aXNhYmxlKGR3KTsKPiAgCj4gIAkvKiBEZXZpY2UgYW5kIGluc3RhbmNlIElEIGZvciBJUlEgYW5k IERNQSBwb29sICovCj4gLQlpZiAocGRhdGEtPmlzX2lkbWEzMikKPiAtCQlzbnByaW50Zihkdy0+ bmFtZSwgc2l6ZW9mKGR3LT5uYW1lKSwgImlkbWEzMjpkbWFjJWQiLCBjaGlwLT5pZCk7Cj4gLQll bHNlCj4gLQkJc25wcmludGYoZHctPm5hbWUsIHNpemVvZihkdy0+bmFtZSksICJkdzpkbWFjJWQi LCBjaGlwLT5pZCk7Cj4gKwlkdy0+c2V0X2RldmljZV9uYW1lKGR3LCBjaGlwLT5pZCk7Cj4gIAo+ ICAJLyogQ3JlYXRlIGEgcG9vbCBvZiBjb25zaXN0ZW50IG1lbW9yeSBibG9ja3MgZm9yIGhhcmR3 YXJlIGRlc2NyaXB0b3JzICovCj4gIAlkdy0+ZGVzY19wb29sID0gZG1hbV9wb29sX2NyZWF0ZShk dy0+bmFtZSwgY2hpcC0+ZGV2LAo+IEBAIC0xMzgyLDE2ICsxMjY2LDE1IEBAIGludCBkd19kbWFf cHJvYmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQo+ICAJcG1fcnVudGltZV9wdXRfc3luY19z dXNwZW5kKGNoaXAtPmRldik7Cj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gLUVYUE9SVF9TWU1CT0xf R1BMKGR3X2RtYV9wcm9iZSk7Cj4gIAo+IC1pbnQgZHdfZG1hX3JlbW92ZShzdHJ1Y3QgZHdfZG1h X2NoaXAgKmNoaXApCj4gK2ludCBkb19kbWFfcmVtb3ZlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hp cCkKPiAgewo+ICAJc3RydWN0IGR3X2RtYQkJKmR3ID0gY2hpcC0+ZHc7Cj4gIAlzdHJ1Y3QgZHdf ZG1hX2NoYW4JKmR3YywgKl9kd2M7Cj4gIAo+ICAJcG1fcnVudGltZV9nZXRfc3luYyhjaGlwLT5k ZXYpOwo+ICAKPiAtCWR3X2RtYV9vZmYoZHcpOwo+ICsJZG9fZG1hX29mZihkdyk7Cj4gIAlkbWFf YXN5bmNfZGV2aWNlX3VucmVnaXN0ZXIoJmR3LT5kbWEpOwo+ICAKPiAgCWZyZWVfaXJxKGNoaXAt PmlycSwgZHcpOwo+IEBAIC0xNDA2LDI3ICsxMjg5LDI0IEBAIGludCBkd19kbWFfcmVtb3ZlKHN0 cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKPiAgCXBtX3J1bnRpbWVfcHV0X3N5bmNfc3VzcGVuZChj aGlwLT5kZXYpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAtRVhQT1JUX1NZTUJPTF9HUEwoZHdfZG1h X3JlbW92ZSk7Cj4gIAo+IC1pbnQgZHdfZG1hX2Rpc2FibGUoc3RydWN0IGR3X2RtYV9jaGlwICpj aGlwKQo+ICtpbnQgZG9fZHdfZG1hX2Rpc2FibGUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHdfZG1hICpkdyA9IGNoaXAtPmR3Owo+ICAKPiAtCWR3X2RtYV9vZmYo ZHcpOwo+ICsJZHctPmRpc2FibGUoZHcpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAtRVhQT1JUX1NZ TUJPTF9HUEwoZHdfZG1hX2Rpc2FibGUpOwo+ICtFWFBPUlRfU1lNQk9MX0dQTChkb19kd19kbWFf ZGlzYWJsZSk7Cj4gIAo+IC1pbnQgZHdfZG1hX2VuYWJsZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNo aXApCj4gK2ludCBkb19kd19kbWFfZW5hYmxlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKPiAg ewo+ICAJc3RydWN0IGR3X2RtYSAqZHcgPSBjaGlwLT5kdzsKPiAgCj4gLQlpZG1hMzJfZmlmb19w YXJ0aXRpb24oZHcpOwo+IC0KPiAtCWR3X2RtYV9vbihkdyk7Cj4gKwlkdy0+ZGlzYWJsZShkdyk7 Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IC1FWFBPUlRfU1lNQk9MX0dQTChkd19kbWFfZW5hYmxlKTsK PiArRVhQT1JUX1NZTUJPTF9HUEwoZG9fZHdfZG1hX2VuYWJsZSk7Cj4gIAo+ICBNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7Cj4gIE1PRFVMRV9ERVNDUklQVElPTigiU3lub3BzeXMgRGVzaWduV2Fy ZSBETUEgQ29udHJvbGxlciBjb3JlIGRyaXZlciIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Rt YS9kdy9kdy5jIGIvZHJpdmVycy9kbWEvZHcvZHcuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAwLi45OThhOWVlYjU2MWQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9kbWEvZHcvZHcuYwo+IEBAIC0wLDAgKzEsMTA5IEBACj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8vIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IEF0bWVs IENvcnBvcmF0aW9uCj4gKy8vIENvcHlyaWdodCAoQykgMjAxMC0yMDExIFNUIE1pY3JvZWxlY3Ry b25pY3MKPiArLy8gQ29weXJpZ2h0IChDKSAyMDEzLDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiAr Cj4gKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ICsjaW5jbHVkZSAiaW50ZXJuYWwuaCIK PiArCj4gK3N0YXRpYyB2b2lkIGR3X2RtYV9pbml0aWFsaXplX2NoYW4oc3RydWN0IGR3X2RtYV9j aGFuICpkd2MpCj4gK3sKPiArCXUzMiBjZmdoaSA9IERXQ19DRkdIX0ZJRk9fTU9ERTsKPiArCXUz MiBjZmdsbyA9IERXQ19DRkdMX0NIX1BSSU9SKGR3Yy0+cHJpb3JpdHkpOwo+ICsJYm9vbCBoc19w b2xhcml0eSA9IGR3Yy0+ZHdzLmhzX3BvbGFyaXR5Owo+ICsKPiArCWNmZ2hpIHw9IERXQ19DRkdI X0RTVF9QRVIoZHdjLT5kd3MuZHN0X2lkKTsKPiArCWNmZ2hpIHw9IERXQ19DRkdIX1NSQ19QRVIo ZHdjLT5kd3Muc3JjX2lkKTsKPiArCj4gKwkvKiBTZXQgcG9sYXJpdHkgb2YgaGFuZHNoYWtlIGlu dGVyZmFjZSAqLwo+ICsJY2ZnbG8gfD0gaHNfcG9sYXJpdHkgPyBEV0NfQ0ZHTF9IU19EU1RfUE9M IHwgRFdDX0NGR0xfSFNfU1JDX1BPTCA6IDA7Cj4gKwo+ICsJY2hhbm5lbF93cml0ZWwoZHdjLCBD RkdfTE8sIGNmZ2xvKTsKPiArCWNoYW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0hJLCBjZmdoaSk7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGR3X2RtYV9zdXNwZW5kX2NoYW4oc3RydWN0IGR3X2RtYV9j aGFuICpkd2MsIGJvb2wgZHJhaW4pCj4gK3sKPiArCXUzMiBjZmdsbyA9IGNoYW5uZWxfcmVhZGwo ZHdjLCBDRkdfTE8pOwo+ICsKPiArCWNoYW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0xPLCBjZmdsbyB8 IERXQ19DRkdMX0NIX1NVU1ApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIGR3X2RtYV9ieXRlczJi bG9jayhzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YywKPiArCQkJICAgICAgc2l6ZV90IGJ5dGVzLCB1 bnNpZ25lZCBpbnQgd2lkdGgsIHNpemVfdCAqbGVuKQo+ICt7Cj4gKwl1MzIgYmxvY2s7Cj4gKwo+ ICsJaWYgKChieXRlcyA+PiB3aWR0aCkgPiBkd2MtPmJsb2NrX3NpemUpIHsKPiArCQlibG9jayA9 IGR3Yy0+YmxvY2tfc2l6ZTsKPiArCQkqbGVuID0gYmxvY2sgPDwgd2lkdGg7Cj4gKwl9IGVsc2Ug ewo+ICsJCWJsb2NrID0gYnl0ZXMgPj4gd2lkdGg7Cj4gKwkJKmxlbiA9IGJ5dGVzOwo+ICsJfQo+ ICsKPiArCXJldHVybiBibG9jazsKPiArfQo+ICsKPiArc3RhdGljIHNpemVfdCBkd19kbWFfYmxv Y2syYnl0ZXMoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsIHUzMiBibG9jaywgdTMyIHdpZHRoKQo+ ICt7Cj4gKwlyZXR1cm4gRFdDX0NUTEhfQkxPQ0tfVFMoYmxvY2spIDw8IHdpZHRoOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBkd19kbWFfZW5jb2RlX21heGJ1cnN0KHN0cnVjdCBkd19kbWFfY2hh biAqZHdjLCB1MzIgKm1heGJ1cnN0KQo+ICt7Cj4gKwkvKgo+ICsJICogRml4IGJ1cnN0IHNpemUg YWNjb3JkaW5nIHRvIGR3X2RtYWMuIFdlIG5lZWQgdG8gY29udmVydCB0aGVtIGFzOgo+ICsJICog MSAtPiAwLCA0IC0+IDEsIDggLT4gMiwgMTYgLT4gMy4KPiArCSAqLwo+ICsJKm1heGJ1cnN0ID0g Km1heGJ1cnN0ID4gMSA/IGZscygqbWF4YnVyc3QpIC0gMiA6IDA7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGR3X2RtYV9zZXRfZGV2aWNlX25hbWUoc3RydWN0IGR3X2RtYSAqZHcsIGludCBpZCkK PiArewo+ICsJc25wcmludGYoZHctPm5hbWUsIHNpemVvZihkdy0+bmFtZSksICJkdzpkbWFjJWQi LCBpZCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGR3X2RtYV9kaXNhYmxlKHN0cnVjdCBkd19k bWEgKmR3KQo+ICt7Cj4gKwlkb19kbWFfb2ZmKGR3KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg ZHdfZG1hX2VuYWJsZShzdHJ1Y3QgZHdfZG1hICpkdykKPiArewo+ICsJZG9fZG1hX29uKGR3KTsK PiArfQo+ICsKPiAraW50IGR3X2RtYV9wcm9iZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApCj4g K3sKPiArCXN0cnVjdCBkd19kbWEgKmR3Owo+ICsKPiArCWR3ID0gZGV2bV9remFsbG9jKGNoaXAt PmRldiwgc2l6ZW9mKCpkdyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFkdykKPiArCQlyZXR1cm4g LUVOT01FTTsKPiArCj4gKwkvKiBDaGFubmVsIG9wZXJhdGlvbnMgKi8KPiArCWR3LT5pbml0aWFs aXplX2NoYW4gPSBkd19kbWFfaW5pdGlhbGl6ZV9jaGFuOwo+ICsJZHctPnN1c3BlbmRfY2hhbiA9 IGR3X2RtYV9zdXNwZW5kX2NoYW47Cj4gKwlkdy0+ZW5jb2RlX21heGJ1cnN0ID0gZHdfZG1hX2Vu Y29kZV9tYXhidXJzdDsKPiArCWR3LT5ieXRlczJibG9jayA9IGR3X2RtYV9ieXRlczJibG9jazsK PiArCWR3LT5ibG9jazJieXRlcyA9IGR3X2RtYV9ibG9jazJieXRlczsKPiArCj4gKwkvKiBEZXZp Y2Ugb3BlcmF0aW9ucyAqLwo+ICsJZHctPnNldF9kZXZpY2VfbmFtZSA9IGR3X2RtYV9zZXRfZGV2 aWNlX25hbWU7Cj4gKwlkdy0+ZGlzYWJsZSA9IGR3X2RtYV9kaXNhYmxlOwo+ICsJZHctPmVuYWJs ZSA9IGR3X2RtYV9lbmFibGU7Cj4gKwo+ICsJY2hpcC0+ZHcgPSBkdzsKPiArCXJldHVybiBkb19k bWFfcHJvYmUoY2hpcCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoZHdfZG1hX3Byb2JlKTsK PiArCj4gK2ludCBkd19kbWFfcmVtb3ZlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKPiArewo+ ICsJcmV0dXJuIGRvX2RtYV9yZW1vdmUoY2hpcCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwo ZHdfZG1hX3JlbW92ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2R3L2lkbWEzMi5jIGIv ZHJpdmVycy9kbWEvZHcvaWRtYTMyLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMC4uZDA2ZmIwMGZiODYyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv ZG1hL2R3L2lkbWEzMi5jCj4gQEAgLTAsMCArMSwxMzcgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAKPiArLy8gQ29weXJpZ2h0IChDKSAyMDEzLDIwMTggSW50ZWwgQ29y cG9yYXRpb24KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2Vycm5vLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ICsjaW5jbHVkZSAi aW50ZXJuYWwuaCIKPiArCj4gK3N0YXRpYyB2b2lkIGlkbWEzMl9pbml0aWFsaXplX2NoYW4oc3Ry dWN0IGR3X2RtYV9jaGFuICpkd2MpCj4gK3sKPiArCXUzMiBjZmdoaSA9IDA7Cj4gKwl1MzIgY2Zn bG8gPSAwOwo+ICsKPiArCS8qIFNldCBkZWZhdWx0IGJ1cnN0IGFsaWdubWVudCAqLwo+ICsJY2Zn bG8gfD0gSURNQTMyQ19DRkdMX0RTVF9CVVJTVF9BTElHTiB8IElETUEzMkNfQ0ZHTF9TUkNfQlVS U1RfQUxJR047Cj4gKwo+ICsJLyogTG93IDQgYml0cyBvZiB0aGUgcmVxdWVzdCBsaW5lcyAqLwo+ ICsJY2ZnaGkgfD0gSURNQTMyQ19DRkdIX0RTVF9QRVIoZHdjLT5kd3MuZHN0X2lkICYgMHhmKTsK PiArCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9TUkNfUEVSKGR3Yy0+ZHdzLnNyY19pZCAmIDB4Zik7 Cj4gKwo+ICsJLyogUmVxdWVzdCBsaW5lIGV4dGVuc2lvbiAoMiBiaXRzKSAqLwo+ICsJY2ZnaGkg fD0gSURNQTMyQ19DRkdIX0RTVF9QRVJfRVhUKGR3Yy0+ZHdzLmRzdF9pZCA+PiA0ICYgMHgzKTsK PiArCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9TUkNfUEVSX0VYVChkd2MtPmR3cy5zcmNfaWQgPj4g NCAmIDB4Myk7Cj4gKwo+ICsJY2hhbm5lbF93cml0ZWwoZHdjLCBDRkdfTE8sIGNmZ2xvKTsKPiAr CWNoYW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0hJLCBjZmdoaSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIGlkbWEzMl9zdXNwZW5kX2NoYW4oc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsIGJvb2wgZHJh aW4pCj4gK3sKPiArCXUzMiBjZmdsbyA9IGNoYW5uZWxfcmVhZGwoZHdjLCBDRkdfTE8pOwo+ICsK PiArCWlmIChkcmFpbikKPiArCQljZmdsbyB8PSBJRE1BMzJDX0NGR0xfQ0hfRFJBSU47Cj4gKwll bHNlCj4gKwkJY2ZnbG8gJj0gfklETUEzMkNfQ0ZHTF9DSF9EUkFJTjsKPiArCj4gKwljaGFubmVs X3dyaXRlbChkd2MsIENGR19MTywgY2ZnbG8gfCBEV0NfQ0ZHTF9DSF9TVVNQKTsKPiArfQo+ICsK PiArc3RhdGljIHUzMiBpZG1hMzJfYnl0ZXMyYmxvY2soc3RydWN0IGR3X2RtYV9jaGFuICpkd2Ms Cj4gKwkJCSAgICAgIHNpemVfdCBieXRlcywgdW5zaWduZWQgaW50IHdpZHRoLCBzaXplX3QgKmxl bikKPiArewo+ICsJdTMyIGJsb2NrOwo+ICsKPiArCWlmIChieXRlcyA+IGR3Yy0+YmxvY2tfc2l6 ZSkgewo+ICsJCWJsb2NrID0gZHdjLT5ibG9ja19zaXplOwo+ICsJCSpsZW4gPSBkd2MtPmJsb2Nr X3NpemU7Cj4gKwl9IGVsc2Ugewo+ICsJCWJsb2NrID0gYnl0ZXM7Cj4gKwkJKmxlbiA9IGJ5dGVz Owo+ICsJfQo+ICsKPiArCXJldHVybiBibG9jazsKPiArfQo+ICsKPiArc3RhdGljIHNpemVfdCBp ZG1hMzJfYmxvY2syYnl0ZXMoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsIHUzMiBibG9jaywgdTMy IHdpZHRoKQo+ICt7Cj4gKwlyZXR1cm4gSURNQTMyQ19DVExIX0JMT0NLX1RTKGJsb2NrKTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgaWRtYTMyX2VuY29kZV9tYXhidXJzdChzdHJ1Y3QgZHdfZG1h X2NoYW4gKmR3YywgdTMyICptYXhidXJzdCkKPiArewo+ICsJKm1heGJ1cnN0ID0gKm1heGJ1cnN0 ID4gMSA/IGZscygqbWF4YnVyc3QpIC0gMSA6IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGlk bWEzMl9zZXRfZGV2aWNlX25hbWUoc3RydWN0IGR3X2RtYSAqZHcsIGludCBpZCkKPiArewo+ICsJ c25wcmludGYoZHctPm5hbWUsIHNpemVvZihkdy0+bmFtZSksICJpZG1hMzI6ZG1hYyVkIiwgaWQp Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBQcm9ncmFtIEZJRk8gc2l6ZSBvZiBjaGFubmVscy4KPiAr ICoKPiArICogQnkgZGVmYXVsdCBmdWxsIEZJRk8gKDUxMiBieXRlcykgaXMgYXNzaWduZWQgdG8g Y2hhbm5lbCAwLiBIZXJlIHdlCj4gKyAqIHNsaWNlIEZJRk8gb24gZXF1YWwgcGFydHMgYmV0d2Vl biBjaGFubmVscy4KPiArICovCj4gK3N0YXRpYyB2b2lkIGlkbWEzMl9maWZvX3BhcnRpdGlvbihz dHJ1Y3QgZHdfZG1hICpkdykKPiArewo+ICsJdTY0IHZhbHVlID0gSURNQTMyQ19GUF9QU0laRV9D SDAoNjQpIHwgSURNQTMyQ19GUF9QU0laRV9DSDEoNjQpIHwKPiArCQkgICAgSURNQTMyQ19GUF9V UERBVEU7Cj4gKwl1NjQgZmlmb19wYXJ0aXRpb24gPSAwOwo+ICsKPiArCS8qIEZpbGwgRklGT19Q QVJUSVRJT04gbG93IGJpdHMgKENoYW5uZWxzIDAuLjEsIDQuLjUpICovCj4gKwlmaWZvX3BhcnRp dGlvbiB8PSB2YWx1ZSA8PCAwOwo+ICsKPiArCS8qIEZpbGwgRklGT19QQVJUSVRJT04gaGlnaCBi aXRzIChDaGFubmVscyAyLi4zLCA2Li43KSAqLwo+ICsJZmlmb19wYXJ0aXRpb24gfD0gdmFsdWUg PDwgMzI7Cj4gKwo+ICsJLyogUHJvZ3JhbSBGSUZPIFBhcnRpdGlvbiByZWdpc3RlcnMgLSAxMjgg Ynl0ZXMgZm9yIGVhY2ggY2hhbm5lbCAqLwo+ICsJaWRtYTMyX3dyaXRlcShkdywgRklGT19QQVJU SVRJT04xLCBmaWZvX3BhcnRpdGlvbik7Cj4gKwlpZG1hMzJfd3JpdGVxKGR3LCBGSUZPX1BBUlRJ VElPTjAsIGZpZm9fcGFydGl0aW9uKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaWRtYTMyX2Rp c2FibGUoc3RydWN0IGR3X2RtYSAqZHcpCj4gK3sKPiArCWRvX2RtYV9vZmYoZHcpOwo+ICsJaWRt YTMyX2ZpZm9fcGFydGl0aW9uKGR3KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaWRtYTMyX2Vu YWJsZShzdHJ1Y3QgZHdfZG1hICpkdykKPiArewo+ICsJaWRtYTMyX2ZpZm9fcGFydGl0aW9uKGR3 KTsKPiArCWRvX2RtYV9vbihkdyk7Cj4gK30KPiArCj4gK2ludCBpZG1hMzJfZG1hX3Byb2JlKHN0 cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKPiArewo+ICsJc3RydWN0IGR3X2RtYSAqZHc7Cj4gKwo+ ICsJZHcgPSBkZXZtX2t6YWxsb2MoY2hpcC0+ZGV2LCBzaXplb2YoKmR3KSwgR0ZQX0tFUk5FTCk7 Cj4gKwlpZiAoIWR3KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCS8qIENoYW5uZWwgb3Bl cmF0aW9ucyAqLwo+ICsJZHctPmluaXRpYWxpemVfY2hhbiA9IGlkbWEzMl9pbml0aWFsaXplX2No YW47Cj4gKwlkdy0+c3VzcGVuZF9jaGFuID0gaWRtYTMyX3N1c3BlbmRfY2hhbjsKPiArCWR3LT5l bmNvZGVfbWF4YnVyc3QgPSBpZG1hMzJfZW5jb2RlX21heGJ1cnN0Owo+ICsJZHctPmJ5dGVzMmJs b2NrID0gaWRtYTMyX2J5dGVzMmJsb2NrOwo+ICsJZHctPmJsb2NrMmJ5dGVzID0gaWRtYTMyX2Js b2NrMmJ5dGVzOwo+ICsKPiArCS8qIERldmljZSBvcGVyYXRpb25zICovCj4gKwlkdy0+c2V0X2Rl dmljZV9uYW1lID0gaWRtYTMyX3NldF9kZXZpY2VfbmFtZTsKPiArCWR3LT5kaXNhYmxlID0gaWRt YTMyX2Rpc2FibGU7Cj4gKwlkdy0+ZW5hYmxlID0gaWRtYTMyX2VuYWJsZTsKPiArCj4gKwljaGlw LT5kdyA9IGR3Owo+ICsJcmV0dXJuIGRvX2RtYV9wcm9iZShjaGlwKTsKPiArfQo+ICtFWFBPUlRf U1lNQk9MX0dQTChpZG1hMzJfZG1hX3Byb2JlKTsKPiArCj4gK2ludCBpZG1hMzJfZG1hX3JlbW92 ZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApCj4gK3sKPiArCXJldHVybiBkb19kbWFfcmVtb3Zl KGNoaXApOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGlkbWEzMl9kbWFfcmVtb3ZlKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvaW50ZXJuYWwuaCBiL2RyaXZlcnMvZG1hL2R3L2lu dGVybmFsLmgKPiBpbmRleCA0MTQzOTczMmZmNmIuLjFmMmRkZmU3NDViYiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2RtYS9kdy9pbnRlcm5hbC5oCj4gKysrIGIvZHJpdmVycy9kbWEvZHcvaW50ZXJu YWwuaAo+IEBAIC0xNSw4ICsxNSwxNCBAQAo+ICAKPiAgI2luY2x1ZGUgInJlZ3MuaCIKPiAgCj4g LWludCBkd19kbWFfZGlzYWJsZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApOwo+IC1pbnQgZHdf ZG1hX2VuYWJsZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApOwo+ICtpbnQgZG9fZG1hX3Byb2Jl KHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCk7Cj4gK2ludCBkb19kbWFfcmVtb3ZlKHN0cnVjdCBk d19kbWFfY2hpcCAqY2hpcCk7Cj4gKwo+ICt2b2lkIGRvX2RtYV9vbihzdHJ1Y3QgZHdfZG1hICpk dyk7Cj4gK3ZvaWQgZG9fZG1hX29mZihzdHJ1Y3QgZHdfZG1hICpkdyk7Cj4gKwo+ICtpbnQgZG9f ZHdfZG1hX2Rpc2FibGUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKTsKPiAraW50IGRvX2R3X2Rt YV9lbmFibGUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKTsKPiAgCj4gIGV4dGVybiBib29sIGR3 X2RtYV9maWx0ZXIoc3RydWN0IGRtYV9jaGFuICpjaGFuLCB2b2lkICpwYXJhbSk7Cj4gIAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9kdy9wY2kuYyBiL2RyaXZlcnMvZG1hL2R3L3BjaS5jCj4g aW5kZXggNjFmMjI3NGY2ZGQ0Li5mNWVhNThjYzAyN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9k bWEvZHcvcGNpLmMKPiArKysgYi9kcml2ZXJzL2RtYS9kdy9wY2kuYwo+IEBAIC0xNSwxMSArMTUs MTkgQEAKPiAgCj4gICNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ICAKPiAtc3RhdGljIHN0cnVjdCBk d19kbWFfcGxhdGZvcm1fZGF0YSBtcmZsZF9wZGF0YSA9IHsKPiArc3RhdGljIHN0cnVjdCBkd19k bWFfcGNpX2RhdGEgewo+ICsJY29uc3Qgc3RydWN0IGR3X2RtYV9wbGF0Zm9ybV9kYXRhICpwZGF0 YTsKPiArCWludCAoKnByb2JlKShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApOwo+ICt9Owo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkd19kbWFfcGNpX2RhdGEgZHdfcGNpX2RhdGEgPSB7Cj4g KwkucHJvYmUgPSBkd19kbWFfcHJvYmUsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGR3X2RtYV9wbGF0Zm9ybV9kYXRhIGlkbWEzMl9wZGF0YSA9IHsKPiAgCS5ucl9jaGFubmVscyA9 IDgsCj4gIAkuaXNfcHJpdmF0ZSA9IHRydWUsCj4gIAkuaXNfbWVtY3B5ID0gdHJ1ZSwKPiAtCS5p c19pZG1hMzIgPSB0cnVlLAo+ICAJLmNoYW5fYWxsb2NhdGlvbl9vcmRlciA9IENIQU5fQUxMT0NB VElPTl9BU0NFTkRJTkcsCj4gIAkuY2hhbl9wcmlvcml0eSA9IENIQU5fUFJJT1JJVFlfQVNDRU5E SU5HLAo+ICAJLmJsb2NrX3NpemUgPSAxMzEwNzEsCj4gQEAgLTI4LDkgKzM2LDE0IEBAIHN0YXRp YyBzdHJ1Y3QgZHdfZG1hX3BsYXRmb3JtX2RhdGEgbXJmbGRfcGRhdGEgPSB7Cj4gIAkubXVsdGlf YmxvY2sgPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0s Cj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGR3X2RtYV9wY2lfZGF0YSBpZG1hMzJf cGNpX2RhdGEgPSB7Cj4gKwkucGRhdGEgPSAmaWRtYTMyX3BkYXRhLAo+ICsJLnByb2JlID0gaWRt YTMyX2RtYV9wcm9iZSwKPiArfTsKPiArCj4gIHN0YXRpYyBpbnQgZHdfcGNpX3Byb2JlKHN0cnVj dCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGlkKQo+ICB7Cj4g LQljb25zdCBzdHJ1Y3QgZHdfZG1hX3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gKHZvaWQgKilwaWQt PmRyaXZlcl9kYXRhOwo+ICsJY29uc3Qgc3RydWN0IGR3X2RtYV9wY2lfZGF0YSAqZGF0YSA9ICh2 b2lkICopcGlkLT5kcml2ZXJfZGF0YTsKPiAgCXN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcDsKPiAg CWludCByZXQ7Cj4gIAo+IEBAIC02Myw5ICs3Niw5IEBAIHN0YXRpYyBpbnQgZHdfcGNpX3Byb2Jl KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGlkKQo+ ICAJY2hpcC0+aWQgPSBwZGV2LT5kZXZmbjsKPiAgCWNoaXAtPnJlZ3MgPSBwY2ltX2lvbWFwX3Rh YmxlKHBkZXYpWzBdOwo+ICAJY2hpcC0+aXJxID0gcGRldi0+aXJxOwo+IC0JY2hpcC0+cGRhdGEg PSBwZGF0YTsKPiArCWNoaXAtPnBkYXRhID0gZGF0YS0+cGRhdGE7Cj4gIAo+IC0JcmV0ID0gZHdf ZG1hX3Byb2JlKGNoaXApOwo+ICsJcmV0ID0gZGF0YS0+cHJvYmUoY2hpcCk7Cj4gIAlpZiAocmV0 KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IEBAIC05MSw3ICsxMDQsNyBAQCBzdGF0aWMgaW50IGR3 X3BjaV9zdXNwZW5kX2xhdGUoc3RydWN0IGRldmljZSAqZGV2KQo+ICAJc3RydWN0IHBjaV9kZXYg KnBjaSA9IHRvX3BjaV9kZXYoZGV2KTsKPiAgCXN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCA9IHBj aV9nZXRfZHJ2ZGF0YShwY2kpOwo+ICAKPiAtCXJldHVybiBkd19kbWFfZGlzYWJsZShjaGlwKTsK PiArCXJldHVybiBkb19kd19kbWFfZGlzYWJsZShjaGlwKTsKPiAgfTsKPiAgCj4gIHN0YXRpYyBp bnQgZHdfcGNpX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gQEAgLTk5LDcgKzEx Miw3IEBAIHN0YXRpYyBpbnQgZHdfcGNpX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4gIAlzdHJ1Y3QgcGNpX2RldiAqcGNpID0gdG9fcGNpX2RldihkZXYpOwo+ICAJc3RydWN0IGR3 X2RtYV9jaGlwICpjaGlwID0gcGNpX2dldF9kcnZkYXRhKHBjaSk7Cj4gIAo+IC0JcmV0dXJuIGR3 X2RtYV9lbmFibGUoY2hpcCk7Cj4gKwlyZXR1cm4gZG9fZHdfZG1hX2VuYWJsZShjaGlwKTsKPiAg fTsKPiAgCj4gICNlbmRpZiAvKiBDT05GSUdfUE1fU0xFRVAgKi8KPiBAQCAtMTEwLDI0ICsxMjMs MjQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGR3X3BjaV9kZXZfcG1fb3BzID0g ewo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3X3BjaV9pZF90YWJs ZVtdID0gewo+ICAJLyogTWVkZmllbGQgKEdQRE1BKSAqLwo+IC0JeyBQQ0lfVkRFVklDRShJTlRF TCwgMHgwODI3KSB9LAo+ICsJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgwODI3KSwgKGtlcm5lbF91 bG9uZ190KSZkd19wY2lfZGF0YSB9LAo+ICAKPiAgCS8qIEJheVRyYWlsICovCj4gLQl7IFBDSV9W REVWSUNFKElOVEVMLCAweDBmMDYpIH0sCj4gLQl7IFBDSV9WREVWSUNFKElOVEVMLCAweDBmNDAp IH0sCj4gKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDBmMDYpLCAoa2VybmVsX3Vsb25nX3QpJmR3 X3BjaV9kYXRhIH0sCj4gKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDBmNDApLCAoa2VybmVsX3Vs b25nX3QpJmR3X3BjaV9kYXRhIH0sCj4gIAo+IC0JLyogTWVycmlmaWVsZCBpRE1BIDMyLWJpdCAo R1BETUEpICovCj4gLQl7IFBDSV9WREVWSUNFKElOVEVMLCAweDExYTIpLCAoa2VybmVsX3Vsb25n X3QpJm1yZmxkX3BkYXRhIH0sCj4gKwkvKiBNZXJyaWZpZWxkICovCj4gKwl7IFBDSV9WREVWSUNF KElOVEVMLCAweDExYTIpLCAoa2VybmVsX3Vsb25nX3QpJmlkbWEzMl9wY2lfZGF0YSB9LAo+ICAK PiAgCS8qIEJyYXN3ZWxsICovCj4gLQl7IFBDSV9WREVWSUNFKElOVEVMLCAweDIyODYpIH0sCj4g LQl7IFBDSV9WREVWSUNFKElOVEVMLCAweDIyYzApIH0sCj4gKwl7IFBDSV9WREVWSUNFKElOVEVM LCAweDIyODYpLCAoa2VybmVsX3Vsb25nX3QpJmR3X3BjaV9kYXRhIH0sCj4gKwl7IFBDSV9WREVW SUNFKElOVEVMLCAweDIyYzApLCAoa2VybmVsX3Vsb25nX3QpJmR3X3BjaV9kYXRhIH0sCj4gIAo+ ICAJLyogSGFzd2VsbCAqLwo+IC0JeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg5YzYwKSB9LAo+ICsJ eyBQQ0lfVkRFVklDRShJTlRFTCwgMHg5YzYwKSwgKGtlcm5lbF91bG9uZ190KSZkd19wY2lfZGF0 YSB9LAo+ICAKPiAgCS8qIEJyb2Fkd2VsbCAqLwo+IC0JeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg5 Y2UwKSB9LAo+ICsJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg5Y2UwKSwgKGtlcm5lbF91bG9uZ190 KSZkd19wY2lfZGF0YSB9LAo+ICAKPiAgCXsgfQo+ICB9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2RtYS9kdy9wbGF0Zm9ybS5jIGIvZHJpdmVycy9kbWEvZHcvcGxhdGZvcm0uYwo+IGluZGV4IGYw MWIyYzE3M2ZhNi4uNmJmNDZjOWI3ZWU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL2R3L3Bs YXRmb3JtLmMKPiArKysgYi9kcml2ZXJzL2RtYS9kdy9wbGF0Zm9ybS5jCj4gQEAgLTI1OCw3ICsy NTgsNyBAQCBzdGF0aWMgdm9pZCBkd19zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQo+ICAJc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo cGRldik7Cj4gIAo+ICAJLyoKPiAtCSAqIFdlIGhhdmUgdG8gY2FsbCBkd19kbWFfZGlzYWJsZSgp IHRvIHN0b3AgYW55IG9uZ29pbmcgdHJhbnNmZXIuIE9uCj4gKwkgKiBXZSBoYXZlIHRvIGNhbGwg ZG9fZHdfZG1hX2Rpc2FibGUoKSB0byBzdG9wIGFueSBvbmdvaW5nIHRyYW5zZmVyLiBPbgo+ICAJ ICogc29tZSBwbGF0Zm9ybXMgd2UgY2FuJ3QgZG8gdGhhdCBzaW5jZSBETUEgZGV2aWNlIGlzIHBv d2VyZWQgb2ZmLgo+ICAJICogTW9yZW92ZXIgd2UgaGF2ZSBubyBwb3NzaWJpbGl0eSB0byBjaGVj ayBpZiB0aGUgcGxhdGZvcm0gaXMgYWZmZWN0ZWQKPiAgCSAqIG9yIG5vdC4gVGhhdCdzIHdoeSB3 ZSBjYWxsIHBtX3J1bnRpbWVfZ2V0X3N5bmMoKSAvIHBtX3J1bnRpbWVfcHV0KCkKPiBAQCAtMjY3 LDcgKzI2Nyw3IEBAIHN0YXRpYyB2b2lkIGR3X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4gIAkgKiB1c2VkIGJ5IHRoZSBkcml2ZXIuCj4gIAkgKi8KPiAgCXBtX3J1bnRp bWVfZ2V0X3N5bmMoY2hpcC0+ZGV2KTsKPiAtCWR3X2RtYV9kaXNhYmxlKGNoaXApOwo+ICsJZG9f ZHdfZG1hX2Rpc2FibGUoY2hpcCk7Cj4gIAlwbV9ydW50aW1lX3B1dF9zeW5jX3N1c3BlbmQoY2hp cC0+ZGV2KTsKPiAgCj4gIAljbGtfZGlzYWJsZV91bnByZXBhcmUoY2hpcC0+Y2xrKTsKPiBAQCAt Mjk3LDcgKzI5Nyw3IEBAIHN0YXRpYyBpbnQgZHdfc3VzcGVuZF9sYXRlKHN0cnVjdCBkZXZpY2Ug KmRldikKPiAgewo+ICAJc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwID0gZGV2X2dldF9kcnZkYXRh KGRldik7Cj4gIAo+IC0JZHdfZG1hX2Rpc2FibGUoY2hpcCk7Cj4gKwlkb19kd19kbWFfZGlzYWJs ZShjaGlwKTsKPiAgCWNsa19kaXNhYmxlX3VucHJlcGFyZShjaGlwLT5jbGspOwo+ICAKPiAgCXJl dHVybiAwOwo+IEBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGludCBkd19yZXN1bWVfZWFybHko c3RydWN0IGRldmljZSAqZGV2KQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAt CXJldHVybiBkd19kbWFfZW5hYmxlKGNoaXApOwo+ICsJcmV0dXJuIGRvX2R3X2RtYV9lbmFibGUo Y2hpcCk7Cj4gIH0KPiAgCj4gICNlbmRpZiAvKiBDT05GSUdfUE1fU0xFRVAgKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9kbWEvZHcvcmVncy5oIGIvZHJpdmVycy9kbWEvZHcvcmVncy5oCj4gaW5k ZXggMDllN2RmZGJiNzkwLi45MGU0NmU2OWMwNDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEv ZHcvcmVncy5oCj4gKysrIGIvZHJpdmVycy9kbWEvZHcvcmVncy5oCj4gQEAgLTMwOCw2ICszMDgs MTkgQEAgc3RydWN0IGR3X2RtYSB7Cj4gIAl1OAkJCWFsbF9jaGFuX21hc2s7Cj4gIAl1OAkJCWlu X3VzZTsKPiAgCj4gKwkvKiBDaGFubmVsIG9wZXJhdGlvbnMgKi8KPiArCXZvaWQJKCppbml0aWFs aXplX2NoYW4pKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjKTsKPiArCXZvaWQJKCpzdXNwZW5kX2No YW4pKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCBib29sIGRyYWluKTsKPiArCXZvaWQJKCplbmNv ZGVfbWF4YnVyc3QpKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCB1MzIgKm1heGJ1cnN0KTsKPiAr CXUzMgkoKmJ5dGVzMmJsb2NrKShzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3Yywgc2l6ZV90IGJ5dGVz LAo+ICsJCQkgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLCBzaXplX3QgKmxlbik7Cj4gKwlzaXpl X3QJKCpibG9jazJieXRlcykoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsIHUzMiBibG9jaywgdTMy IHdpZHRoKTsKPiArCj4gKwkvKiBEZXZpY2Ugb3BlcmF0aW9ucyAqLwo+ICsJdm9pZCAoKnNldF9k ZXZpY2VfbmFtZSkoc3RydWN0IGR3X2RtYSAqZHcsIGludCBpZCk7Cj4gKwl2b2lkICgqZGlzYWJs ZSkoc3RydWN0IGR3X2RtYSAqZHcpOwo+ICsJdm9pZCAoKmVuYWJsZSkoc3RydWN0IGR3X2RtYSAq ZHcpOwo+ICsKPiAgCS8qIHBsYXRmb3JtIGRhdGEgKi8KPiAgCXN0cnVjdCBkd19kbWFfcGxhdGZv cm1fZGF0YQkqcGRhdGE7Cj4gIH07Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hL2R3 LmggYi9pbmNsdWRlL2xpbnV4L2RtYS9kdy5oCj4gaW5kZXggZTE2NmNhYzhlODcwLi5kNjQzZDMz MWMyMGUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEvZHcuaAo+ICsrKyBiL2luY2x1 ZGUvbGludXgvZG1hL2R3LmgKPiBAQCAtNDUsOSArNDUsMTMgQEAgc3RydWN0IGR3X2RtYV9jaGlw IHsKPiAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RXX0RNQUNfQ09SRSkKPiAgaW50IGR3X2RtYV9w cm9iZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApOwo+ICBpbnQgZHdfZG1hX3JlbW92ZShzdHJ1 Y3QgZHdfZG1hX2NoaXAgKmNoaXApOwo+ICtpbnQgaWRtYTMyX2RtYV9wcm9iZShzdHJ1Y3QgZHdf ZG1hX2NoaXAgKmNoaXApOwo+ICtpbnQgaWRtYTMyX2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9j aGlwICpjaGlwKTsKPiAgI2Vsc2UKPiAgc3RhdGljIGlubGluZSBpbnQgZHdfZG1hX3Byb2JlKHN0 cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkgeyByZXR1cm4gLUVOT0RFVjsgfQo+ICBzdGF0aWMgaW5s aW5lIGludCBkd19kbWFfcmVtb3ZlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkgeyByZXR1cm4g MDsgfQo+ICtzdGF0aWMgaW5saW5lIGludCBpZG1hMzJfZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFf Y2hpcCAqY2hpcCkgeyByZXR1cm4gLUVOT0RFVjsgfQo+ICtzdGF0aWMgaW5saW5lIGludCBpZG1h MzJfZG1hX3JlbW92ZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApIHsgcmV0dXJuIDA7IH0KPiAg I2VuZGlmIC8qIENPTkZJR19EV19ETUFDX0NPUkUgKi8KPiAgCj4gICNlbmRpZiAvKiBfRE1BX0RX X0ggKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2RtYS1kdy5o IGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2RtYS1kdy5oCj4gaW5kZXggODk2Y2I3MWEz ODJjLi5lNjllNDE1ZDBkOTggMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9k YXRhL2RtYS1kdy5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2RtYS1kdy5o Cj4gQEAgLTQxLDcgKzQxLDYgQEAgc3RydWN0IGR3X2RtYV9zbGF2ZSB7Cj4gICAqIEBpc19wcml2 YXRlOiBUaGUgZGV2aWNlIGNoYW5uZWxzIHNob3VsZCBiZSBtYXJrZWQgYXMgcHJpdmF0ZSBhbmQg bm90IGZvcgo+ICAgKglieSB0aGUgZ2VuZXJhbCBwdXJwb3NlIERNQSBjaGFubmVsIGFsbG9jYXRv ci4KPiAgICogQGlzX21lbWNweTogVGhlIGRldmljZSBjaGFubmVscyBkbyBzdXBwb3J0IG1lbW9y eS10by1tZW1vcnkgdHJhbnNmZXJzLgo+IC0gKiBAaXNfaWRtYTMyOiBUaGUgdHlwZSBvZiB0aGUg RE1BIGNvbnRyb2xsZXIgaXMgaURNQTMyCj4gICAqIEBjaGFuX2FsbG9jYXRpb25fb3JkZXI6IEFs bG9jYXRlIGNoYW5uZWxzIHN0YXJ0aW5nIGZyb20gMCBvciA3Cj4gICAqIEBjaGFuX3ByaW9yaXR5 OiBTZXQgY2hhbm5lbCBwcmlvcml0eSBpbmNyZWFzaW5nIGZyb20gMCB0byA3IG9yIDcgdG8gMC4K PiAgICogQGJsb2NrX3NpemU6IE1heGltdW0gYmxvY2sgc2l6ZSBzdXBwb3J0ZWQgYnkgdGhlIGNv bnRyb2xsZXIKPiBAQCAtNTQsNyArNTMsNiBAQCBzdHJ1Y3QgZHdfZG1hX3BsYXRmb3JtX2RhdGEg ewo+ICAJdW5zaWduZWQgaW50CW5yX2NoYW5uZWxzOwo+ICAJYm9vbAkJaXNfcHJpdmF0ZTsKPiAg CWJvb2wJCWlzX21lbWNweTsKPiAtCWJvb2wJCWlzX2lkbWEzMjsKPiAgI2RlZmluZSBDSEFOX0FM TE9DQVRJT05fQVNDRU5ESU5HCTAJLyogemVybyB0byBzZXZlbiAqLwo+ICAjZGVmaW5lIENIQU5f QUxMT0NBVElPTl9ERVNDRU5ESU5HCTEJLyogc2V2ZW4gdG8gemVybyAqLwo+ICAJdW5zaWduZWQg Y2hhcgljaGFuX2FsbG9jYXRpb25fb3JkZXI7Cj4gLS0gCj4gMi4xOS4yCj4K