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: [4/6] dma: tegra: add accurate reporting of dma state From: Ben Dooks Message-Id: Date: Mon, 05 Nov 2018 09:03:54 +0000 To: Dmitry Osipenko Cc: dan.j.williams@intel.com, vkoul@kernel.org, ldewangan@nvidia.com, dmaengine@vger.kernel.org, linux-tegra@vger.kernel.org List-ID: T24gMjAxOC0xMS0wMyAxMjoyNCwgRG1pdHJ5IE9zaXBlbmtvIHdyb3RlOgo+IE9uIDMxLjEwLjIw MTggMTk6MDMsIEJlbiBEb29rcyB3cm90ZToKPj4gVGhlIHR4X3N0YXR1cyBjYWxsYmFjayBkb2Vz IG5vdCByZXBvcnQgdGhlIHN0YXRlIG9mIHRoZSB0cmFuc2Zlcgo+PiBiZXlvbmQgY29tcGxldGUg c2VnbWVudHMuIFRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdXNlcnMgc3VjaCBhcwo+PiBBTFNB IHdoZW4gYXBwbGljYXRpb25zIHdhbnQgdG8ga25vdyBhY2N1cmF0ZWx5IGhvdyBtdWNoIGRhdGEg aGFzCj4+IGJlZW4gbW92ZWQuCj4+IAo+PiBUaGlzIHBhdGNoIGFkZGVzIGEgZnVuY3Rpb24gdGVn cmFfZG1hX3VwZGF0ZV9yZXNpZHVhbCgpIHRvIHF1ZXJ5Cj4+IHRoZSBoYXJkd2FyZSBhbmQgbW9k aWZ5IHRoZSByZXNpZHVhbCBpbmZvcm1hdGlvbiBhY2NvcmRpbmx5LiBJdAo+PiB0YWtlcyBpbnRv IGFjY291bnQgYW55IGhhcmR3YXJlIGlzc3VlcyB3aGVuIHRyeWluZyB0byByZWFkIHRoZQo+PiBz dGF0ZSwgc3VjaCBhcyBkZWxheXMgYmV0d2VlbiBmaW5pc2hpbmcgYSBidWZmZXIgYW5kIHNpZ25h bGxpbmcKPj4gdGhlIGludGVycnVwdC4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IEJlbiBEb29rcyA8 YmVuLmRvb2tzQGNvZGV0aGluay5jby51az4KPiAKPiBIZWxsbyBCZW4sCj4gCj4gVGhhbmsgeW91 IHZlcnkgbXVjaCBmb3IgdGhlIHBhdGNoISBJdCBmaXhlcyAiZmFydGluZyBzb3VuZCIgZm9yCj4g Y2hyb21pdW0tYnJvd3NlciBhbmQgYXBwbGljYXRpb25zIHRoYXQgdXNlIGNocm9taXVtLWVuZ2lu ZSAodGVzdGVkIG9uCj4gVGVncmEyMCkgYmVjYXVzZSBhcHBhcmVudGx5IGl0IHRyaWVzIHRvIHVz ZSBsb3cgbGF0ZW5jeSBmb3IgZXZlcnl0aGluZwo+IGFuZCBhdWRpbyBidWZmZXIgaXMgY29uc3Rh bnRseSB1bmRlcmZsb3dpbmcgd2l0aG91dCBtb3JlIGRldGFpbGVkCj4gRE1BLXByb2dyZXNzIHJl cG9ydGluZy4gU2VlIGNvdXBsZSBtb3JlIGNvbW1lbnRzIGJlbG93Lgo+IAo+PiAtLS0KPj4gIGRy aXZlcnMvZG1hL3RlZ3JhMjAtYXBiLWRtYS5jIHwgOTQgCj4+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tCj4+ICAxIGZpbGUgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS90ZWdyYTIwLWFwYi1k bWEuYyAKPj4gYi9kcml2ZXJzL2RtYS90ZWdyYTIwLWFwYi1kbWEuYwo+PiBpbmRleCA0ZjdkMWU1 NzZkMDMuLjNmYTNhMWFjNGY1NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9kbWEvdGVncmEyMC1h cGItZG1hLmMKPj4gKysrIGIvZHJpdmVycy9kbWEvdGVncmEyMC1hcGItZG1hLmMKPj4gQEAgLTgw MiwxMiArODAyLDk2IEBAIHN0YXRpYyBpbnQgdGVncmFfZG1hX3Rlcm1pbmF0ZV9hbGwoc3RydWN0 IAo+PiBkbWFfY2hhbiAqZGMpCj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+IAo+PiArc3RhdGljIHVu c2lnbmVkIGludCB0ZWdyYV9kbWFfdXBkYXRlX3Jlc2lkdWFsKHN0cnVjdCAKPj4gdGVncmFfZG1h X2NoYW5uZWwgKnRkYywKPj4gKwkJCQkJICAgICAgc3RydWN0IHRlZ3JhX2RtYV9zZ19yZXEgKnNn X3JlcSwKPj4gKwkJCQkJICAgICAgc3RydWN0IHRlZ3JhX2RtYV9kZXNjICpkbWFfZGVzYywKPj4g KwkJCQkJICAgICAgdW5zaWduZWQgaW50IHJlc2lkdWFsKQo+PiArewo+PiArCXVuc2lnbmVkIGxv bmcgc3RhdHVzID0gMHgwOwo+IAo+IFRoZXJlIGlzIG5vIG5lZWQgdG8gaW5pdGlhbGl6ZSAic3Rh dHVzIiB2YXJpYWJsZS4KCm9rLCB3aWxsIGNoZWNrIHRoaXMuCgo+PiArCXVuc2lnbmVkIGxvbmcg d2NvdW50Owo+PiArCXVuc2lnbmVkIGxvbmcgYWhicHRyOwo+PiArCXVuc2lnbmVkIGxvbmcgdG1w ID0gMHgwOwo+PiArCXVuc2lnbmVkIGludCByZXN1bHQ7Cj4+ICsJaW50IHJldHJpZXMgPSBURUdS QV9BUEJETUFfQlVSU1RfQ09NUExFVEVfVElNRSAqIDEwOwo+PiArCWludCBkb25lOwo+PiArCj4+ ICsJLyogaWYgd2UncmUgbm90IHRoZSBjdXJyZW50IHJlcXVlc3QsIHRoZW4gZG9uJ3QgYWx0ZXIg dGhlIHJlc2lkdWFsIAo+PiAqLwo+PiArCWlmIChzZ19yZXEgIT0gbGlzdF9maXJzdF9lbnRyeSgm dGRjLT5wZW5kaW5nX3NnX3JlcSwKPj4gKwkJCQkgICAgICAgc3RydWN0IHRlZ3JhX2RtYV9zZ19y ZXEsIG5vZGUpKSB7Cj4+ICsJCXJlc3VsdCA9IHJlc2lkdWFsOwo+PiArCQlhaGJwdHIgPSAweGZm ZmZmZmZmOwo+PiArCQlnb3RvIGRvbmU7Cj4+ICsJfQo+PiArCj4+ICsJLyogbG9vcCB1bnRpbCB3 ZSBoYXZlIGEgcmVsaWFibGUgcmVzdWx0IGZvciByZXNpZHVhbCAqLwo+PiArCWRvIHsKPj4gKwkJ YWhicHRyID0gdGRjX3JlYWQodGRjLCBURUdSQV9BUEJETUFfQ0hBTl9BSEJQVFIpOwo+PiArCQlz dGF0dXMgPSB0ZGNfcmVhZCh0ZGMsIFRFR1JBX0FQQkRNQV9DSEFOX1NUQVRVUyk7Cj4gCj4+ICsJ CXRtcCA9ICB0ZGNfcmVhZCh0ZGMsIDB4MDgpOwkvKiB0b3RhbCBjb3VudCBmb3IgZGVidWcgKi8K PiAKPiBSZWdpc3RlciAweDA4IChETUFfQllURV9TVEEpIGRvZXNuJ3QgcHJlc2VudCBvbiBUZWdy YTIwIGFuZCAidG1wIgo+IGlzbid0IHVzZWQgYW55d2hlcmUgaW4gdGhlIGNvZGUuIFBsZWFzZSBy ZW1vdmUgaXQgZW50aXJlbHkuCgpvaywgZml4ZWQKCj4+ICsKPj4gKwkJLyogY2hlY2sgc3RhdHVz LCBpZiBjaGFubmVsIGlzbid0IGJ1c3kgdGhlbiBza2lwICovCj4+ICsJCWlmICghKHN0YXR1cyAm IFRFR1JBX0FQQkRNQV9TVEFUVVNfQlVTWSkpIHsKPj4gKwkJCXJlc3VsdCA9IHJlc2lkdWFsOwo+ PiArCQkJYnJlYWs7Cj4+ICsJCX0KPiAKPiBJZiAiQlVTWSIgaXMgdW5zZXQsIGRvZXNuJ3QgdGhp cyBtZWFuIHRoYXQgdHJhbnNhY3Rpb24gY291bGQgYmUKPiBjb21wbGV0ZWQgYWxyZWFkeT8gSSBk b24ndCBxdWl0ZSB1bmRlcnN0YW5kIHdoeSB5b3Ugd2FudCB0byBza2lwIGhlcmUuCgpJIGNhbid0 IHJlbWVtYmVyIHdoYXQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyB3YXMsIHRoaXMgd29yayB3 YXMKb3JpZ2luYWxseSBkb25lIG92ZXIgYSB5ZWFyIGFnbyBhbmQgSSBhbSBub3Qgc3VyZSBpZiBJ IGNhbiBmaW5kIGFueQpvZiB0aGUgbm90ZXMgZnJvbSB0aGlzLgoKPj4gKwo+PiArCQkvKiBpZiB3 ZSd2ZSBnb3QgYW4gaW50ZXJydXB0IHBlbmRpbmcgb24gdGhlIGNoYW5uZWwsIGRvbid0Cj4+ICsJ CSAqIHRyeSBhbmQgZGVhbCB3aXRoIHRoZSByZXNpZHVlIGFzIHRoZSBoYXJkd2FyZSBoYXMgbGlr ZWx5Cj4+ICsJCSAqIG1vdmVkIG9uIHRvIHRoZSBuZXh0IGJ1ZmZlci4gcmV0dXJuIGFsbCBkYXRh IG1vdmVkLgo+PiArCQkgKi8KPj4gKwkJaWYgKHN0YXR1cyAmIFRFR1JBX0FQQkRNQV9TVEFUVVNf SVNFX0VPQykgewo+PiArCQkJcmVzdWx0ID0gcmVzaWR1YWwgLSBzZ19yZXEtPnJlcV9sZW47Cj4+ ICsJCQlicmVhazsKPj4gKwkJfQo+PiArCj4+ICsJCWlmICh0ZGMtPnRkbWEtPmNoaXBfZGF0YS0+ c3VwcG9ydF9zZXBhcmF0ZV93Y291bnRfcmVnKQo+PiArCQkJd2NvdW50ID0gdGRjX3JlYWQodGRj LCBURUdSQV9BUEJETUFfQ0hBTl9XT1JEX1RSQU5TRkVSKTsKPj4gKwkJZWxzZQo+PiArCQkJd2Nv dW50ID0gc3RhdHVzOwo+PiArCj4+ICsJCS8qIElmIHRoZSByZXF1ZXN0IGlzIGF0IHRoZSBmdWxs IHBvaW50LCB0aGVuIHRoZXJlIGlzIGEKPj4gKwkJICogY2hhbmNlIHRoYXQgd2UgaGF2ZSByZWFk IHRoZSBzdGF0dXMgcmVnaXN0ZXIgaW4gdGhlCj4+ICsJCSAqIG1pZGRsZSBvZiB0aGUgaGFyZHdh cmUgcmVsb2FkaW5nIHRoZSBuZXh0IGJ1ZmZlci4KPj4gKwkJICoKPj4gKwkJICogVGhlIHNlcXVl bmNlIHNlZW1zIHRvIGJlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgdG8KPj4gKwkJICogbG9h ZCB0aGUgbmV3IHdvcmQgY291bnQgYmVmb3JlIHJhaXNpbmcgdGhlIEVPQyBmbGFnIChvcgo+PiAr CQkgKiBjaGFuZ2luZyB0aGUgcGluZy1wb25nIGZsYWcgd2hpY2ggY291bGQgaGF2ZSBhbHNvIGJl ZW4KPj4gKwkJICogdXNlZCB0byBkZXRlcm1pbmUgYSBuZXcgYnVmZmVyKS4gVGhpcyAgbWVhbnMg dGhlcmUgaXMgYQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gd2hpdGVzcGFj ZXMgaGVyZS0tLS0tfAo+IAo+PiArCQkgKiBzbWFsbCB3aW5kb3cgd2hlcmUgd2UgY2Fubm90IGRl dGVybWluZSB6ZXJvLWRvbmUgZm9yIHRoZQo+PiArCQkgKiBjdXJyZW50IGJ1ZmZlciwgb3IgbW92 ZWQgdG8gbmV4dCBidWZmZXIuCj4+ICsJCSAqCj4gCj4+ICsJCSAqIElmIGRvbmUgc2hvd3MgMCwg dGhlbiByZXRyeSB0aGUgbG9hZCwgYXMgaXQgbWF5IGhpdCB0aGUKPj4gKwkJICogYWJvdmUgaGFy ZHdhcmUgcmFjZS4gV2Ugd2lsbCBlaXRoZXIgZ2V0IGEgbmV3IHZhbHVlIHdoaWNoCj4+ICsJCSAq IGlzIGZyb20gdGhlIGZpcnN0IGJ1ZmZlciwgb3Igd2UgZ2V0IGFuIEVPQyAobmV3IGJ1ZmZlcikK Pj4gKwkJICogb3IgYm90aCBhIG5ldyB2YWx1ZSBhbmQgYW4gRU9DLi4uCj4gCj4gSSB0aGluayB3 ZSBqdXN0IG5lZWQgdG8gd2FpdCAyMHVzZWMgYWZ0ZXIgcmVhZGluZyBvdXQgIndvcmRzIGNvdW50 Igo+IGFuZCB0aGVuIHJlLWNoZWNrIGludGVycnVwdCBzdGF0dXMsIHNvIHRyYW5zZmVyIGlzIGRv bmUgaWYgaW50ZXJydXB0Cj4gaXMgc2V0IGFuZCBvdGhlcndpc2UgIndvcmRzIGNvdW50IiB2YWx1 ZSBpcyBhY3R1YWwgYW5kIHJlbGlhYmxlLgoKQXQgdGhlIG1vbWVudCBJIGhhdmUgbm8gd2F5IG9m IGdvaW5nIGJhY2sgYW5kIHJlLXRlc3RpbmcgdGhpcyBjb2RlCmFnYWluc3QgdGhlIHByb2JsZW0g aXQgb3JpZ2luYWxseSBmaXhlZCwgc28gd291bGQgcmF0aGVyIG5vdCBjaGFuZ2UKdGhlIGFsZ29y aXRobSBpbiB0aGlzLgoKPiAKPj4gKwkJICovCj4+ICsJCWRvbmUgPSBnZXRfY3VycmVudF94ZmVy cmVkX2NvdW50KHRkYywgc2dfcmVxLCB3Y291bnQpOwo+PiArCQlpZiAoZG9uZSAhPSAwKSB7Cj4+ ICsJCQlyZXN1bHQgPSByZXNpZHVhbCAtIGRvbmU7Cj4+ICsJCQlicmVhazsKPj4gKwkJfQo+PiAr Cj4+ICsJCW5kZWxheSgxMDApOwo+IAo+IFRoZXJlIGlzIG5vIG5kZWxheSgpIG9uIEFSTSwgaGVu Y2UgeW91ciAyMHVzZWMgdGltZW91dCBpcyAyMDB1c2VjLgo+IFBsZWFzZSB1c2UgdWRlbGF5KCku CgpJIHRob3VnaHQgdGhlcmUgd2FzIG9uZSBiYXNlZCBvbiB0aGUgbHBqIGNhbGN1bGF0aW9ucywg SSB3aWxsIGNoZWNrIApsYXRlci4KCj4+ICsJfSB3aGlsZSAoLS1yZXRyaWVzID4gMCk7Cj4+ICsK Pj4gKwlpZiAocmV0cmllcyA8PSAwKSB7Cj4+ICsJCWRldl9lcnIodGRjMmRldih0ZGMpLCAidGlt ZW91dCB3YWl0aW5nIGZvciBkbWEgbG9hZFxuIik7Cj4+ICsJCXJlc3VsdCA9IHJlc2lkdWFsOwo+ PiArCX0KPj4gKwo+PiArZG9uZToKPiAKPiBQbGVhc2UgcmVuYW1lIGdvdG8gbGFiZWwgYXMgaXQg ZHVwbGljYXRlcyBsb2NhbCB2YXJpYWJsZSBuYW1lLgoKb2ssIGZpeGVkLgoKPj4gKwlkZXZfZGJn KHRkYzJkZXYodGRjKSwgInJlc2lkdWFsOiByZXEgJTA4bHgsIGFoYkAlMDhseCwgd2NvdW50ICUw OGx4LCAKPj4gZG9uZSAlZFxuIiwKPj4gKwkJIHNnX3JlcS0+Y2hfcmVncy5haGJfcHRyLCBhaGJw dHIsIHdjb3VudCwgZG9uZSk7Cj4gCj4gV2hpdGVzcGFjZSBqdXN0IGFmdGVyIHRhYiBub3QgbmVl ZGVkLgo+IAo+PiArCj4+ICsJcmV0dXJuIHJlc3VsdDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGVu dW0gZG1hX3N0YXR1cyB0ZWdyYV9kbWFfdHhfc3RhdHVzKHN0cnVjdCBkbWFfY2hhbiAqZGMsCj4+ ICAJZG1hX2Nvb2tpZV90IGNvb2tpZSwgc3RydWN0IGRtYV90eF9zdGF0ZSAqdHhzdGF0ZSkKPj4g IHsKPj4gIAlzdHJ1Y3QgdGVncmFfZG1hX2NoYW5uZWwgKnRkYyA9IHRvX3RlZ3JhX2RtYV9jaGFu KGRjKTsKPj4gIAlzdHJ1Y3QgdGVncmFfZG1hX2Rlc2MgKmRtYV9kZXNjOwo+PiAtCXN0cnVjdCB0 ZWdyYV9kbWFfc2dfcmVxICpzZ19yZXE7Cj4+ICsJc3RydWN0IHRlZ3JhX2RtYV9zZ19yZXEgKnNn X3JlcSA9IE5VTEw7Cj4+ICAJZW51bSBkbWFfc3RhdHVzIHJldDsKPj4gIAl1bnNpZ25lZCBsb25n IGZsYWdzOwo+PiAgCXVuc2lnbmVkIGludCByZXNpZHVhbDsKPj4gQEAgLTg0Myw2ICs5MjcsNyBA QCBzdGF0aWMgZW51bSBkbWFfc3RhdHVzIHRlZ3JhX2RtYV90eF9zdGF0dXMoc3RydWN0IAo+PiBk bWFfY2hhbiAqZGMsCj4+ICAJCXJlc2lkdWFsID0gZG1hX2Rlc2MtPmJ5dGVzX3JlcXVlc3RlZCAt Cj4+ICAJCQkgICAoZG1hX2Rlc2MtPmJ5dGVzX3RyYW5zZmVycmVkICUKPj4gIAkJCSAgICBkbWFf ZGVzYy0+Ynl0ZXNfcmVxdWVzdGVkKTsKPj4gKwkJcmVzaWR1YWwgPSB0ZWdyYV9kbWFfdXBkYXRl X3Jlc2lkdWFsKHRkYywgc2dfcmVxLCBkbWFfZGVzYywgCj4+IHJlc2lkdWFsKTsKPj4gIAkJZG1h X3NldF9yZXNpZHVlKHR4c3RhdGUsIHJlc2lkdWFsKTsKPj4gIAl9Cj4+IAo+PiBAQCAtMTQzNiwx MiArMTUyMSw3IEBAIHN0YXRpYyBpbnQgdGVncmFfZG1hX3Byb2JlKHN0cnVjdCAKPj4gcGxhdGZv cm1fZGV2aWNlICpwZGV2KQo+PiAgCQlCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVMpIHwK Pj4gIAkJQklUKERNQV9TTEFWRV9CVVNXSURUSF84X0JZVEVTKTsKPj4gIAl0ZG1hLT5kbWFfZGV2 LmRpcmVjdGlvbnMgPSBCSVQoRE1BX0RFVl9UT19NRU0pIHwgCj4+IEJJVChETUFfTUVNX1RPX0RF Vik7Cj4+IC0JLyoKPj4gLQkgKiBYWFggVGhlIGhhcmR3YXJlIGFwcGVhcnMgdG8gc3VwcG9ydAo+ PiAtCSAqIERNQV9SRVNJRFVFX0dSQU5VTEFSSVRZX0JVUlNULWxldmVsIHJlcG9ydGluZywgYnV0 IGl0J3MKPj4gLQkgKiBvbmx5IHVzZWQgYnkgdGhpcyBkcml2ZXIgZHVyaW5nIHRlZ3JhX2RtYV90 ZXJtaW5hdGVfYWxsKCkKPj4gLQkgKi8KPj4gLQl0ZG1hLT5kbWFfZGV2LnJlc2lkdWVfZ3JhbnVs YXJpdHkgPSBETUFfUkVTSURVRV9HUkFOVUxBUklUWV9TRUdNRU5UOwo+PiArCXRkbWEtPmRtYV9k ZXYucmVzaWR1ZV9ncmFudWxhcml0eSA9IERNQV9SRVNJRFVFX0dSQU5VTEFSSVRZX0JVUlNUOwo+ PiAgCXRkbWEtPmRtYV9kZXYuZGV2aWNlX2NvbmZpZyA9IHRlZ3JhX2RtYV9zbGF2ZV9jb25maWc7 Cj4+ICAJdGRtYS0+ZG1hX2Rldi5kZXZpY2VfdGVybWluYXRlX2FsbCA9IHRlZ3JhX2RtYV90ZXJt aW5hdGVfYWxsOwo+PiAgCXRkbWEtPmRtYV9kZXYuZGV2aWNlX3R4X3N0YXR1cyA9IHRlZ3JhX2Rt YV90eF9zdGF0dXM7Cj4+IAo+IAo+IFN1bW1hcml6aW5nIGFsbCBvZiB0aGUgY29tbWVudHMgYWJv dmUsIHBhdGNoIG1heSBsb29rIGxpa2UgdGhpczoKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9k bWEvdGVncmEyMC1hcGItZG1hLmMgCj4gYi9kcml2ZXJzL2RtYS90ZWdyYTIwLWFwYi1kbWEuYwo+ IGluZGV4IDlhNTU4ZTMwYzQ2MS4uOTU2ZTgxMzBjMDU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv ZG1hL3RlZ3JhMjAtYXBiLWRtYS5jCj4gKysrIGIvZHJpdmVycy9kbWEvdGVncmEyMC1hcGItZG1h LmMKPiBAQCAtNzk5LDEyICs3OTksNzMgQEAgc3RhdGljIGludCB0ZWdyYV9kbWFfdGVybWluYXRl X2FsbChzdHJ1Y3QgCj4gZG1hX2NoYW4gKmRjKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAKPiArc3Rh dGljIHVuc2lnbmVkIGludCB0ZWdyYV9kbWFfdXBkYXRlX3Jlc2lkdWFsKHN0cnVjdCB0ZWdyYV9k bWFfY2hhbm5lbCAKPiAqdGRjLAo+ICsJCQkJCSAgICAgIHN0cnVjdCB0ZWdyYV9kbWFfc2dfcmVx ICpzZ19yZXEsCj4gKwkJCQkJICAgICAgc3RydWN0IHRlZ3JhX2RtYV9kZXNjICpkbWFfZGVzYywK PiArCQkJCQkgICAgICB1bnNpZ25lZCBpbnQgcmVzaWR1YWwpCj4gK3sKPiArCXVuc2lnbmVkIGxv bmcgc3RhdHVzOwo+ICsJdW5zaWduZWQgaW50IHJlc3VsdDsKPiArCWludCBkb25lOwo+ICsKPiAr CS8qIGlmIHdlJ3JlIG5vdCB0aGUgY3VycmVudCByZXF1ZXN0LCB0aGVuIGRvbid0IGFsdGVyIHRo ZSByZXNpZHVhbCAqLwo+ICsJaWYgKHNnX3JlcSAhPSBsaXN0X2ZpcnN0X2VudHJ5KCZ0ZGMtPnBl bmRpbmdfc2dfcmVxLAo+ICsJCQkJICAgICAgIHN0cnVjdCB0ZWdyYV9kbWFfc2dfcmVxLCBub2Rl KSkKPiArCQlyZXR1cm4gcmVzaWR1YWw7Cj4gKwo+ICsJc3RhdHVzID0gdGRjX3JlYWQodGRjLCBU RUdSQV9BUEJETUFfQ0hBTl9TVEFUVVMpOwo+ICsKPiArCS8qIGlmIHdlJ3ZlIGdvdCBhbiBpbnRl cnJ1cHQgcGVuZGluZyBvbiB0aGUgY2hhbm5lbCwgZG9uJ3QKPiArCSAqIHRyeSBhbmQgZGVhbCB3 aXRoIHRoZSByZXNpZHVlIGFzIHRoZSBoYXJkd2FyZSBoYXMgbGlrZWx5Cj4gKwkgKiBtb3ZlZCBv biB0byB0aGUgbmV4dCBidWZmZXIuIHJldHVybiBhbGwgZGF0YSBtb3ZlZC4KPiArCSAqLwo+ICsJ aWYgKHN0YXR1cyAmIFRFR1JBX0FQQkRNQV9TVEFUVVNfSVNFX0VPQykgewo+ICsJCXJlc3VsdCA9 IHJlc2lkdWFsIC0gc2dfcmVxLT5yZXFfbGVuOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiAr CWlmICh0ZGMtPnRkbWEtPmNoaXBfZGF0YS0+c3VwcG9ydF9zZXBhcmF0ZV93Y291bnRfcmVnKQo+ ICsJCXN0YXR1cyA9IHRkY19yZWFkKHRkYywgVEVHUkFfQVBCRE1BX0NIQU5fV09SRF9UUkFOU0ZF Uik7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHRoZSByZXF1ZXN0IGlzIGF0IHRoZSBmdWxsIHBvaW50 LCB0aGVuIHRoZXJlIGlzIGEKPiArCSAqIGNoYW5jZSB0aGF0IHdlIGhhdmUgcmVhZCB0aGUgc3Rh dHVzIHJlZ2lzdGVyIGluIHRoZQo+ICsJICogbWlkZGxlIG9mIHRoZSBoYXJkd2FyZSByZWxvYWRp bmcgdGhlIG5leHQgYnVmZmVyLgo+ICsJICoKPiArCSAqIFRoZSBzZXF1ZW5jZSBzZWVtcyB0byBi ZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHRvCj4gKwkgKiBsb2FkIHRoZSBuZXcgd29yZCBj b3VudCBiZWZvcmUgcmFpc2luZyB0aGUgRU9DIGZsYWcgKG9yCj4gKwkgKiBjaGFuZ2luZyB0aGUg cGluZy1wb25nIGZsYWcgd2hpY2ggY291bGQgaGF2ZSBhbHNvIGJlZW4KPiArCSAqIHVzZWQgdG8g ZGV0ZXJtaW5lIGEgbmV3IGJ1ZmZlcikuIFRoaXMgIG1lYW5zIHRoZXJlIGlzIGEKPiArCSAqIHNt YWxsIHdpbmRvdyB3aGVyZSB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHplcm8tZG9uZSBmb3IgdGhlCj4g KwkgKiBjdXJyZW50IGJ1ZmZlciwgb3IgbW92ZWQgdG8gbmV4dCBidWZmZXIuCj4gKwkgKi8KPiAr CWRvbmUgPSBnZXRfY3VycmVudF94ZmVycmVkX2NvdW50KHRkYywgc2dfcmVxLCBzdGF0dXMpOwo+ ICsKPiArCXVkZWxheShURUdSQV9BUEJETUFfQlVSU1RfQ09NUExFVEVfVElNRSk7Cj4gKwo+ICsJ c3RhdHVzID0gdGRjX3JlYWQodGRjLCBURUdSQV9BUEJETUFfQ0hBTl9TVEFUVVMpOwo+ICsKPiAr CWlmIChzdGF0dXMgJiBURUdSQV9BUEJETUFfU1RBVFVTX0lTRV9FT0MpCj4gKwkJcmVzdWx0ID0g cmVzaWR1YWwgLSBzZ19yZXEtPnJlcV9sZW47Cj4gKwllbHNlCj4gKwkJcmVzdWx0ID0gcmVzaWR1 YWwgLSBkb25lOwo+ICtvdXQ6Cj4gKyNpZmRlZiBERUJVRwo+ICsJYWhicHRyID0gdGRjX3JlYWQo dGRjLCBURUdSQV9BUEJETUFfQ0hBTl9BSEJQVFIpOwo+ICsKPiArCWRldl9kYmcodGRjMmRldih0 ZGMpLCAicmVzaWR1YWw6IHJlcSAlMDhseCwgYWhiQCUwOGx4LCB3Y291bnQgJTA4bHgsCj4gZG9u ZSAlZFxuIiwKPiArCQlzZ19yZXEtPmNoX3JlZ3MuYWhiX3B0ciwgYWhicHRyLCB3Y291bnQsIGRv bmUpOwo+ICsjZW5kaWYKPiArCj4gKwlyZXR1cm4gcmVzdWx0Owo+ICt9Cj4gKwo+ICBzdGF0aWMg ZW51bSBkbWFfc3RhdHVzIHRlZ3JhX2RtYV90eF9zdGF0dXMoc3RydWN0IGRtYV9jaGFuICpkYywK PiAgCWRtYV9jb29raWVfdCBjb29raWUsIHN0cnVjdCBkbWFfdHhfc3RhdGUgKnR4c3RhdGUpCj4g IHsKPiAgCXN0cnVjdCB0ZWdyYV9kbWFfY2hhbm5lbCAqdGRjID0gdG9fdGVncmFfZG1hX2NoYW4o ZGMpOwo+ICAJc3RydWN0IHRlZ3JhX2RtYV9kZXNjICpkbWFfZGVzYzsKPiAtCXN0cnVjdCB0ZWdy YV9kbWFfc2dfcmVxICpzZ19yZXE7Cj4gKwlzdHJ1Y3QgdGVncmFfZG1hX3NnX3JlcSAqc2dfcmVx ID0gTlVMTDsKPiAgCWVudW0gZG1hX3N0YXR1cyByZXQ7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdz Owo+ICAJdW5zaWduZWQgaW50IHJlc2lkdWFsOwo+IEBAIC04NDAsNiArOTAxLDcgQEAgc3RhdGlj IGVudW0gZG1hX3N0YXR1cyB0ZWdyYV9kbWFfdHhfc3RhdHVzKHN0cnVjdAo+IGRtYV9jaGFuICpk YywKPiAgCQlyZXNpZHVhbCA9IGRtYV9kZXNjLT5ieXRlc19yZXF1ZXN0ZWQgLQo+ICAJCQkgICAo ZG1hX2Rlc2MtPmJ5dGVzX3RyYW5zZmVycmVkICUKPiAgCQkJICAgIGRtYV9kZXNjLT5ieXRlc19y ZXF1ZXN0ZWQpOwo+ICsJCXJlc2lkdWFsID0gdGVncmFfZG1hX3VwZGF0ZV9yZXNpZHVhbCh0ZGMs IHNnX3JlcSwgZG1hX2Rlc2MsIAo+IHJlc2lkdWFsKTsKPiAgCQlkbWFfc2V0X3Jlc2lkdWUodHhz dGF0ZSwgcmVzaWR1YWwpOwo+ICAJfQo+IAo+IEBAIC0xNDMzLDEyICsxNDk1LDcgQEAgc3RhdGlj IGludCB0ZWdyYV9kbWFfcHJvYmUoc3RydWN0IAo+IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAg CQlCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVMpIHwKPiAgCQlCSVQoRE1BX1NMQVZFX0JV U1dJRFRIXzhfQllURVMpOwo+ICAJdGRtYS0+ZG1hX2Rldi5kaXJlY3Rpb25zID0gQklUKERNQV9E RVZfVE9fTUVNKSB8IEJJVChETUFfTUVNX1RPX0RFVik7Cj4gLQkvKgo+IC0JICogWFhYIFRoZSBo YXJkd2FyZSBhcHBlYXJzIHRvIHN1cHBvcnQKPiAtCSAqIERNQV9SRVNJRFVFX0dSQU5VTEFSSVRZ X0JVUlNULWxldmVsIHJlcG9ydGluZywgYnV0IGl0J3MKPiAtCSAqIG9ubHkgdXNlZCBieSB0aGlz IGRyaXZlciBkdXJpbmcgdGVncmFfZG1hX3Rlcm1pbmF0ZV9hbGwoKQo+IC0JICovCj4gLQl0ZG1h LT5kbWFfZGV2LnJlc2lkdWVfZ3JhbnVsYXJpdHkgPSBETUFfUkVTSURVRV9HUkFOVUxBUklUWV9T RUdNRU5UOwo+ICsJdGRtYS0+ZG1hX2Rldi5yZXNpZHVlX2dyYW51bGFyaXR5ID0gRE1BX1JFU0lE VUVfR1JBTlVMQVJJVFlfQlVSU1Q7Cj4gIAl0ZG1hLT5kbWFfZGV2LmRldmljZV9jb25maWcgPSB0 ZWdyYV9kbWFfc2xhdmVfY29uZmlnOwo+ICAJdGRtYS0+ZG1hX2Rldi5kZXZpY2VfdGVybWluYXRl X2FsbCA9IHRlZ3JhX2RtYV90ZXJtaW5hdGVfYWxsOwo+ICAJdGRtYS0+ZG1hX2Rldi5kZXZpY2Vf dHhfc3RhdHVzID0gdGVncmFfZG1hX3R4X3N0YXR1czsK