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: Dmitry Osipenko Message-Id: <9d5749db-aaa2-7824-edb3-e451c6e7cc6a@gmail.com> Date: Sat, 3 Nov 2018 15:24:34 +0300 To: Ben Dooks , dan.j.williams@intel.com, vkoul@kernel.org Cc: ldewangan@nvidia.com, dmaengine@vger.kernel.org, linux-tegra@vger.kernel.org List-ID: T24gMzEuMTAuMjAxOCAxOTowMywgQmVuIERvb2tzIHdyb3RlOgo+IFRoZSB0eF9zdGF0dXMgY2Fs bGJhY2sgZG9lcyBub3QgcmVwb3J0IHRoZSBzdGF0ZSBvZiB0aGUgdHJhbnNmZXIKPiBiZXlvbmQg Y29tcGxldGUgc2VnbWVudHMuIFRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdXNlcnMgc3VjaCBh cwo+IEFMU0Egd2hlbiBhcHBsaWNhdGlvbnMgd2FudCB0byBrbm93IGFjY3VyYXRlbHkgaG93IG11 Y2ggZGF0YSBoYXMKPiBiZWVuIG1vdmVkLgo+IAo+IFRoaXMgcGF0Y2ggYWRkZXMgYSBmdW5jdGlv biB0ZWdyYV9kbWFfdXBkYXRlX3Jlc2lkdWFsKCkgdG8gcXVlcnkKPiB0aGUgaGFyZHdhcmUgYW5k IG1vZGlmeSB0aGUgcmVzaWR1YWwgaW5mb3JtYXRpb24gYWNjb3JkaW5seS4gSXQKPiB0YWtlcyBp bnRvIGFjY291bnQgYW55IGhhcmR3YXJlIGlzc3VlcyB3aGVuIHRyeWluZyB0byByZWFkIHRoZQo+ IHN0YXRlLCBzdWNoIGFzIGRlbGF5cyBiZXR3ZWVuIGZpbmlzaGluZyBhIGJ1ZmZlciBhbmQgc2ln bmFsbGluZwo+IHRoZSBpbnRlcnJ1cHQuCj4gCj4gU2lnbmVkLW9mZi1ieTogQmVuIERvb2tzIDxi ZW4uZG9va3NAY29kZXRoaW5rLmNvLnVrPgoKSGVsbG8gQmVuLAoKVGhhbmsgeW91IHZlcnkgbXVj aCBmb3IgdGhlIHBhdGNoISBJdCBmaXhlcyAiZmFydGluZyBzb3VuZCIgZm9yIGNocm9taXVtLWJy b3dzZXIgYW5kIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSBjaHJvbWl1bS1lbmdpbmUgKHRlc3RlZCBv biBUZWdyYTIwKSBiZWNhdXNlIGFwcGFyZW50bHkgaXQgdHJpZXMgdG8gdXNlIGxvdyBsYXRlbmN5 IGZvciBldmVyeXRoaW5nIGFuZCBhdWRpbyBidWZmZXIgaXMgY29uc3RhbnRseSB1bmRlcmZsb3dp bmcgd2l0aG91dCBtb3JlIGRldGFpbGVkIERNQS1wcm9ncmVzcyByZXBvcnRpbmcuIFNlZSBjb3Vw bGUgbW9yZSBjb21tZW50cyBiZWxvdy4KCj4gLS0tCj4gIGRyaXZlcnMvZG1hL3RlZ3JhMjAtYXBi LWRtYS5jIHwgOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAgMSBmaWxl IGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZG1hL3RlZ3JhMjAtYXBiLWRtYS5jIGIvZHJpdmVycy9kbWEvdGVncmEyMC1h cGItZG1hLmMKPiBpbmRleCA0ZjdkMWU1NzZkMDMuLjNmYTNhMWFjNGY1NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2RtYS90ZWdyYTIwLWFwYi1kbWEuYwo+ICsrKyBiL2RyaXZlcnMvZG1hL3RlZ3Jh MjAtYXBiLWRtYS5jCj4gQEAgLTgwMiwxMiArODAyLDk2IEBAIHN0YXRpYyBpbnQgdGVncmFfZG1h X3Rlcm1pbmF0ZV9hbGwoc3RydWN0IGRtYV9jaGFuICpkYykKPiAgCXJldHVybiAwOwo+ICB9Cj4g IAo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHRlZ3JhX2RtYV91cGRhdGVfcmVzaWR1YWwoc3RydWN0 IHRlZ3JhX2RtYV9jaGFubmVsICp0ZGMsCj4gKwkJCQkJICAgICAgc3RydWN0IHRlZ3JhX2RtYV9z Z19yZXEgKnNnX3JlcSwKPiArCQkJCQkgICAgICBzdHJ1Y3QgdGVncmFfZG1hX2Rlc2MgKmRtYV9k ZXNjLAo+ICsJCQkJCSAgICAgIHVuc2lnbmVkIGludCByZXNpZHVhbCkKPiArewo+ICsJdW5zaWdu ZWQgbG9uZyBzdGF0dXMgPSAweDA7CgpUaGVyZSBpcyBubyBuZWVkIHRvIGluaXRpYWxpemUgInN0 YXR1cyIgdmFyaWFibGUuCgo+ICsJdW5zaWduZWQgbG9uZyB3Y291bnQ7Cj4gKwl1bnNpZ25lZCBs b25nIGFoYnB0cjsKPiArCXVuc2lnbmVkIGxvbmcgdG1wID0gMHgwOwo+ICsJdW5zaWduZWQgaW50 IHJlc3VsdDsKPiArCWludCByZXRyaWVzID0gVEVHUkFfQVBCRE1BX0JVUlNUX0NPTVBMRVRFX1RJ TUUgKiAxMDsKPiArCWludCBkb25lOwo+ICsKPiArCS8qIGlmIHdlJ3JlIG5vdCB0aGUgY3VycmVu dCByZXF1ZXN0LCB0aGVuIGRvbid0IGFsdGVyIHRoZSByZXNpZHVhbCAqLwo+ICsJaWYgKHNnX3Jl cSAhPSBsaXN0X2ZpcnN0X2VudHJ5KCZ0ZGMtPnBlbmRpbmdfc2dfcmVxLAo+ICsJCQkJICAgICAg IHN0cnVjdCB0ZWdyYV9kbWFfc2dfcmVxLCBub2RlKSkgewo+ICsJCXJlc3VsdCA9IHJlc2lkdWFs Owo+ICsJCWFoYnB0ciA9IDB4ZmZmZmZmZmY7Cj4gKwkJZ290byBkb25lOwo+ICsJfQo+ICsKPiAr CS8qIGxvb3AgdW50aWwgd2UgaGF2ZSBhIHJlbGlhYmxlIHJlc3VsdCBmb3IgcmVzaWR1YWwgKi8K PiArCWRvIHsKPiArCQlhaGJwdHIgPSB0ZGNfcmVhZCh0ZGMsIFRFR1JBX0FQQkRNQV9DSEFOX0FI QlBUUik7Cj4gKwkJc3RhdHVzID0gdGRjX3JlYWQodGRjLCBURUdSQV9BUEJETUFfQ0hBTl9TVEFU VVMpOwoKPiArCQl0bXAgPSAgdGRjX3JlYWQodGRjLCAweDA4KTsJLyogdG90YWwgY291bnQgZm9y IGRlYnVnICovCgpSZWdpc3RlciAweDA4IChETUFfQllURV9TVEEpIGRvZXNuJ3QgcHJlc2VudCBv biBUZWdyYTIwIGFuZCAidG1wIiBpc24ndCB1c2VkIGFueXdoZXJlIGluIHRoZSBjb2RlLiBQbGVh c2UgcmVtb3ZlIGl0IGVudGlyZWx5LgoKPiArCj4gKwkJLyogY2hlY2sgc3RhdHVzLCBpZiBjaGFu bmVsIGlzbid0IGJ1c3kgdGhlbiBza2lwICovCj4gKwkJaWYgKCEoc3RhdHVzICYgVEVHUkFfQVBC RE1BX1NUQVRVU19CVVNZKSkgewo+ICsJCQlyZXN1bHQgPSByZXNpZHVhbDsKPiArCQkJYnJlYWs7 Cj4gKwkJfQoKSWYgIkJVU1kiIGlzIHVuc2V0LCBkb2Vzbid0IHRoaXMgbWVhbiB0aGF0IHRyYW5z YWN0aW9uIGNvdWxkIGJlIGNvbXBsZXRlZCBhbHJlYWR5PyBJIGRvbid0IHF1aXRlIHVuZGVyc3Rh bmQgd2h5IHlvdSB3YW50IHRvIHNraXAgaGVyZS4KCj4gKwo+ICsJCS8qIGlmIHdlJ3ZlIGdvdCBh biBpbnRlcnJ1cHQgcGVuZGluZyBvbiB0aGUgY2hhbm5lbCwgZG9uJ3QKPiArCQkgKiB0cnkgYW5k IGRlYWwgd2l0aCB0aGUgcmVzaWR1ZSBhcyB0aGUgaGFyZHdhcmUgaGFzIGxpa2VseQo+ICsJCSAq IG1vdmVkIG9uIHRvIHRoZSBuZXh0IGJ1ZmZlci4gcmV0dXJuIGFsbCBkYXRhIG1vdmVkLgo+ICsJ CSAqLwo+ICsJCWlmIChzdGF0dXMgJiBURUdSQV9BUEJETUFfU1RBVFVTX0lTRV9FT0MpIHsKPiAr CQkJcmVzdWx0ID0gcmVzaWR1YWwgLSBzZ19yZXEtPnJlcV9sZW47Cj4gKwkJCWJyZWFrOwo+ICsJ CX0KPiArCj4gKwkJaWYgKHRkYy0+dGRtYS0+Y2hpcF9kYXRhLT5zdXBwb3J0X3NlcGFyYXRlX3dj b3VudF9yZWcpCj4gKwkJCXdjb3VudCA9IHRkY19yZWFkKHRkYywgVEVHUkFfQVBCRE1BX0NIQU5f V09SRF9UUkFOU0ZFUik7Cj4gKwkJZWxzZQo+ICsJCQl3Y291bnQgPSBzdGF0dXM7Cj4gKwo+ICsJ CS8qIElmIHRoZSByZXF1ZXN0IGlzIGF0IHRoZSBmdWxsIHBvaW50LCB0aGVuIHRoZXJlIGlzIGEK PiArCQkgKiBjaGFuY2UgdGhhdCB3ZSBoYXZlIHJlYWQgdGhlIHN0YXR1cyByZWdpc3RlciBpbiB0 aGUKPiArCQkgKiBtaWRkbGUgb2YgdGhlIGhhcmR3YXJlIHJlbG9hZGluZyB0aGUgbmV4dCBidWZm ZXIuCj4gKwkJICoKPiArCQkgKiBUaGUgc2VxdWVuY2Ugc2VlbXMgdG8gYmUgYXQgdGhlIGVuZCBv ZiB0aGUgYnVmZmVyLCB0bwo+ICsJCSAqIGxvYWQgdGhlIG5ldyB3b3JkIGNvdW50IGJlZm9yZSBy YWlzaW5nIHRoZSBFT0MgZmxhZyAob3IKPiArCQkgKiBjaGFuZ2luZyB0aGUgcGluZy1wb25nIGZs YWcgd2hpY2ggY291bGQgaGF2ZSBhbHNvIGJlZW4KPiArCQkgKiB1c2VkIHRvIGRldGVybWluZSBh IG5ldyBidWZmZXIpLiBUaGlzICBtZWFucyB0aGVyZSBpcyBhCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0d28gd2hpdGVzcGFjZXMgaGVyZS0tLS0tfCAgICAgICAgICAgICAgICAgICAg ICAKCj4gKwkJICogc21hbGwgd2luZG93IHdoZXJlIHdlIGNhbm5vdCBkZXRlcm1pbmUgemVyby1k b25lIGZvciB0aGUKPiArCQkgKiBjdXJyZW50IGJ1ZmZlciwgb3IgbW92ZWQgdG8gbmV4dCBidWZm ZXIuCj4gKwkJICoKCj4gKwkJICogSWYgZG9uZSBzaG93cyAwLCB0aGVuIHJldHJ5IHRoZSBsb2Fk LCBhcyBpdCBtYXkgaGl0IHRoZQo+ICsJCSAqIGFib3ZlIGhhcmR3YXJlIHJhY2UuIFdlIHdpbGwg ZWl0aGVyIGdldCBhIG5ldyB2YWx1ZSB3aGljaAo+ICsJCSAqIGlzIGZyb20gdGhlIGZpcnN0IGJ1 ZmZlciwgb3Igd2UgZ2V0IGFuIEVPQyAobmV3IGJ1ZmZlcikKPiArCQkgKiBvciBib3RoIGEgbmV3 IHZhbHVlIGFuZCBhbiBFT0MuLi4KCkkgdGhpbmsgd2UganVzdCBuZWVkIHRvIHdhaXQgMjB1c2Vj IGFmdGVyIHJlYWRpbmcgb3V0ICJ3b3JkcyBjb3VudCIgYW5kIHRoZW4gcmUtY2hlY2sgaW50ZXJy dXB0IHN0YXR1cywgc28gdHJhbnNmZXIgaXMgZG9uZSBpZiBpbnRlcnJ1cHQgaXMgc2V0IGFuZCBv dGhlcndpc2UgIndvcmRzIGNvdW50IiB2YWx1ZSBpcyBhY3R1YWwgYW5kIHJlbGlhYmxlLgoKPiAr CQkgKi8KPiArCQlkb25lID0gZ2V0X2N1cnJlbnRfeGZlcnJlZF9jb3VudCh0ZGMsIHNnX3JlcSwg d2NvdW50KTsKPiArCQlpZiAoZG9uZSAhPSAwKSB7Cj4gKwkJCXJlc3VsdCA9IHJlc2lkdWFsIC0g ZG9uZTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQluZGVsYXkoMTAwKTsKClRoZXJlIGlz IG5vIG5kZWxheSgpIG9uIEFSTSwgaGVuY2UgeW91ciAyMHVzZWMgdGltZW91dCBpcyAyMDB1c2Vj LiBQbGVhc2UgdXNlIHVkZWxheSgpLgoKPiArCX0gd2hpbGUgKC0tcmV0cmllcyA+IDApOwo+ICsK PiArCWlmIChyZXRyaWVzIDw9IDApIHsKPiArCQlkZXZfZXJyKHRkYzJkZXYodGRjKSwgInRpbWVv dXQgd2FpdGluZyBmb3IgZG1hIGxvYWRcbiIpOwo+ICsJCXJlc3VsdCA9IHJlc2lkdWFsOwo+ICsJ fQo+ICsKPiArZG9uZToJCgpQbGVhc2UgcmVuYW1lIGdvdG8gbGFiZWwgYXMgaXQgZHVwbGljYXRl cyBsb2NhbCB2YXJpYWJsZSBuYW1lLgoKPiArCWRldl9kYmcodGRjMmRldih0ZGMpLCAicmVzaWR1 YWw6IHJlcSAlMDhseCwgYWhiQCUwOGx4LCB3Y291bnQgJTA4bHgsIGRvbmUgJWRcbiIsCj4gKwkJ IHNnX3JlcS0+Y2hfcmVncy5haGJfcHRyLCBhaGJwdHIsIHdjb3VudCwgZG9uZSk7CgpXaGl0ZXNw YWNlIGp1c3QgYWZ0ZXIgdGFiIG5vdCBuZWVkZWQuCiAKPiArCj4gKwlyZXR1cm4gcmVzdWx0Owo+ ICt9Cj4gKwo+ICBzdGF0aWMgZW51bSBkbWFfc3RhdHVzIHRlZ3JhX2RtYV90eF9zdGF0dXMoc3Ry dWN0IGRtYV9jaGFuICpkYywKPiAgCWRtYV9jb29raWVfdCBjb29raWUsIHN0cnVjdCBkbWFfdHhf c3RhdGUgKnR4c3RhdGUpCj4gIHsKPiAgCXN0cnVjdCB0ZWdyYV9kbWFfY2hhbm5lbCAqdGRjID0g dG9fdGVncmFfZG1hX2NoYW4oZGMpOwo+ICAJc3RydWN0IHRlZ3JhX2RtYV9kZXNjICpkbWFfZGVz YzsKPiAtCXN0cnVjdCB0ZWdyYV9kbWFfc2dfcmVxICpzZ19yZXE7Cj4gKwlzdHJ1Y3QgdGVncmFf ZG1hX3NnX3JlcSAqc2dfcmVxID0gTlVMTDsKPiAgCWVudW0gZG1hX3N0YXR1cyByZXQ7Cj4gIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAJdW5zaWduZWQgaW50IHJlc2lkdWFsOwo+IEBAIC04NDMs NiArOTI3LDcgQEAgc3RhdGljIGVudW0gZG1hX3N0YXR1cyB0ZWdyYV9kbWFfdHhfc3RhdHVzKHN0 cnVjdCBkbWFfY2hhbiAqZGMsCj4gIAkJcmVzaWR1YWwgPSBkbWFfZGVzYy0+Ynl0ZXNfcmVxdWVz dGVkIC0KPiAgCQkJICAgKGRtYV9kZXNjLT5ieXRlc190cmFuc2ZlcnJlZCAlCj4gIAkJCSAgICBk bWFfZGVzYy0+Ynl0ZXNfcmVxdWVzdGVkKTsKPiArCQlyZXNpZHVhbCA9IHRlZ3JhX2RtYV91cGRh dGVfcmVzaWR1YWwodGRjLCBzZ19yZXEsIGRtYV9kZXNjLCByZXNpZHVhbCk7Cj4gIAkJZG1hX3Nl dF9yZXNpZHVlKHR4c3RhdGUsIHJlc2lkdWFsKTsKPiAgCX0KPiAgCj4gQEAgLTE0MzYsMTIgKzE1 MjEsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX2RtYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+ICAJCUJJVChETUFfU0xBVkVfQlVTV0lEVEhfNF9CWVRFUykgfAo+ICAJCUJJVChE TUFfU0xBVkVfQlVTV0lEVEhfOF9CWVRFUyk7Cj4gIAl0ZG1hLT5kbWFfZGV2LmRpcmVjdGlvbnMg PSBCSVQoRE1BX0RFVl9UT19NRU0pIHwgQklUKERNQV9NRU1fVE9fREVWKTsKPiAtCS8qCj4gLQkg KiBYWFggVGhlIGhhcmR3YXJlIGFwcGVhcnMgdG8gc3VwcG9ydAo+IC0JICogRE1BX1JFU0lEVUVf R1JBTlVMQVJJVFlfQlVSU1QtbGV2ZWwgcmVwb3J0aW5nLCBidXQgaXQncwo+IC0JICogb25seSB1 c2VkIGJ5IHRoaXMgZHJpdmVyIGR1cmluZyB0ZWdyYV9kbWFfdGVybWluYXRlX2FsbCgpCj4gLQkg Ki8KPiAtCXRkbWEtPmRtYV9kZXYucmVzaWR1ZV9ncmFudWxhcml0eSA9IERNQV9SRVNJRFVFX0dS QU5VTEFSSVRZX1NFR01FTlQ7Cj4gKwl0ZG1hLT5kbWFfZGV2LnJlc2lkdWVfZ3JhbnVsYXJpdHkg PSBETUFfUkVTSURVRV9HUkFOVUxBUklUWV9CVVJTVDsKPiAgCXRkbWEtPmRtYV9kZXYuZGV2aWNl X2NvbmZpZyA9IHRlZ3JhX2RtYV9zbGF2ZV9jb25maWc7Cj4gIAl0ZG1hLT5kbWFfZGV2LmRldmlj ZV90ZXJtaW5hdGVfYWxsID0gdGVncmFfZG1hX3Rlcm1pbmF0ZV9hbGw7Cj4gIAl0ZG1hLT5kbWFf ZGV2LmRldmljZV90eF9zdGF0dXMgPSB0ZWdyYV9kbWFfdHhfc3RhdHVzOwo+IAoKU3VtbWFyaXpp bmcgYWxsIG9mIHRoZSBjb21tZW50cyBhYm92ZSwgcGF0Y2ggbWF5IGxvb2sgbGlrZSB0aGlzOgoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3RlZ3JhMjAtYXBiLWRtYS5jIGIvZHJpdmVycy9kbWEv dGVncmEyMC1hcGItZG1hLmMKaW5kZXggOWE1NThlMzBjNDYxLi45NTZlODEzMGMwNTkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZG1hL3RlZ3JhMjAtYXBiLWRtYS5jCisrKyBiL2RyaXZlcnMvZG1hL3Rl Z3JhMjAtYXBiLWRtYS5jCkBAIC03OTksMTIgKzc5OSw3MyBAQCBzdGF0aWMgaW50IHRlZ3JhX2Rt YV90ZXJtaW5hdGVfYWxsKHN0cnVjdCBkbWFfY2hhbiAqZGMpCiAJcmV0dXJuIDA7CiB9CiAKK3N0 YXRpYyB1bnNpZ25lZCBpbnQgdGVncmFfZG1hX3VwZGF0ZV9yZXNpZHVhbChzdHJ1Y3QgdGVncmFf ZG1hX2NoYW5uZWwgKnRkYywKKwkJCQkJICAgICAgc3RydWN0IHRlZ3JhX2RtYV9zZ19yZXEgKnNn X3JlcSwKKwkJCQkJICAgICAgc3RydWN0IHRlZ3JhX2RtYV9kZXNjICpkbWFfZGVzYywKKwkJCQkJ ICAgICAgdW5zaWduZWQgaW50IHJlc2lkdWFsKQoreworCXVuc2lnbmVkIGxvbmcgc3RhdHVzOwor CXVuc2lnbmVkIGludCByZXN1bHQ7CisJaW50IGRvbmU7CisKKwkvKiBpZiB3ZSdyZSBub3QgdGhl IGN1cnJlbnQgcmVxdWVzdCwgdGhlbiBkb24ndCBhbHRlciB0aGUgcmVzaWR1YWwgKi8KKwlpZiAo c2dfcmVxICE9IGxpc3RfZmlyc3RfZW50cnkoJnRkYy0+cGVuZGluZ19zZ19yZXEsCisJCQkJICAg ICAgIHN0cnVjdCB0ZWdyYV9kbWFfc2dfcmVxLCBub2RlKSkKKwkJcmV0dXJuIHJlc2lkdWFsOwor CisJc3RhdHVzID0gdGRjX3JlYWQodGRjLCBURUdSQV9BUEJETUFfQ0hBTl9TVEFUVVMpOworCisJ LyogaWYgd2UndmUgZ290IGFuIGludGVycnVwdCBwZW5kaW5nIG9uIHRoZSBjaGFubmVsLCBkb24n dAorCSAqIHRyeSBhbmQgZGVhbCB3aXRoIHRoZSByZXNpZHVlIGFzIHRoZSBoYXJkd2FyZSBoYXMg bGlrZWx5CisJICogbW92ZWQgb24gdG8gdGhlIG5leHQgYnVmZmVyLiByZXR1cm4gYWxsIGRhdGEg bW92ZWQuCisJICovCisJaWYgKHN0YXR1cyAmIFRFR1JBX0FQQkRNQV9TVEFUVVNfSVNFX0VPQykg eworCQlyZXN1bHQgPSByZXNpZHVhbCAtIHNnX3JlcS0+cmVxX2xlbjsKKwkJZ290byBvdXQ7CisJ fQorCisJaWYgKHRkYy0+dGRtYS0+Y2hpcF9kYXRhLT5zdXBwb3J0X3NlcGFyYXRlX3djb3VudF9y ZWcpCisJCXN0YXR1cyA9IHRkY19yZWFkKHRkYywgVEVHUkFfQVBCRE1BX0NIQU5fV09SRF9UUkFO U0ZFUik7CisKKwkvKgorCSAqIElmIHRoZSByZXF1ZXN0IGlzIGF0IHRoZSBmdWxsIHBvaW50LCB0 aGVuIHRoZXJlIGlzIGEKKwkgKiBjaGFuY2UgdGhhdCB3ZSBoYXZlIHJlYWQgdGhlIHN0YXR1cyBy ZWdpc3RlciBpbiB0aGUKKwkgKiBtaWRkbGUgb2YgdGhlIGhhcmR3YXJlIHJlbG9hZGluZyB0aGUg bmV4dCBidWZmZXIuCisJICoKKwkgKiBUaGUgc2VxdWVuY2Ugc2VlbXMgdG8gYmUgYXQgdGhlIGVu ZCBvZiB0aGUgYnVmZmVyLCB0bworCSAqIGxvYWQgdGhlIG5ldyB3b3JkIGNvdW50IGJlZm9yZSBy YWlzaW5nIHRoZSBFT0MgZmxhZyAob3IKKwkgKiBjaGFuZ2luZyB0aGUgcGluZy1wb25nIGZsYWcg d2hpY2ggY291bGQgaGF2ZSBhbHNvIGJlZW4KKwkgKiB1c2VkIHRvIGRldGVybWluZSBhIG5ldyBi dWZmZXIpLiBUaGlzICBtZWFucyB0aGVyZSBpcyBhCisJICogc21hbGwgd2luZG93IHdoZXJlIHdl IGNhbm5vdCBkZXRlcm1pbmUgemVyby1kb25lIGZvciB0aGUKKwkgKiBjdXJyZW50IGJ1ZmZlciwg b3IgbW92ZWQgdG8gbmV4dCBidWZmZXIuCisJICovCisJZG9uZSA9IGdldF9jdXJyZW50X3hmZXJy ZWRfY291bnQodGRjLCBzZ19yZXEsIHN0YXR1cyk7CisKKwl1ZGVsYXkoVEVHUkFfQVBCRE1BX0JV UlNUX0NPTVBMRVRFX1RJTUUpOworCisJc3RhdHVzID0gdGRjX3JlYWQodGRjLCBURUdSQV9BUEJE TUFfQ0hBTl9TVEFUVVMpOworCisJaWYgKHN0YXR1cyAmIFRFR1JBX0FQQkRNQV9TVEFUVVNfSVNF X0VPQykKKwkJcmVzdWx0ID0gcmVzaWR1YWwgLSBzZ19yZXEtPnJlcV9sZW47CisJZWxzZQorCQly ZXN1bHQgPSByZXNpZHVhbCAtIGRvbmU7CitvdXQ6CisjaWZkZWYgREVCVUcKKwlhaGJwdHIgPSB0 ZGNfcmVhZCh0ZGMsIFRFR1JBX0FQQkRNQV9DSEFOX0FIQlBUUik7CisKKwlkZXZfZGJnKHRkYzJk ZXYodGRjKSwgInJlc2lkdWFsOiByZXEgJTA4bHgsIGFoYkAlMDhseCwgd2NvdW50ICUwOGx4LCBk b25lICVkXG4iLAorCQlzZ19yZXEtPmNoX3JlZ3MuYWhiX3B0ciwgYWhicHRyLCB3Y291bnQsIGRv bmUpOworI2VuZGlmCisKKwlyZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgZW51bSBkbWFfc3Rh dHVzIHRlZ3JhX2RtYV90eF9zdGF0dXMoc3RydWN0IGRtYV9jaGFuICpkYywKIAlkbWFfY29va2ll X3QgY29va2llLCBzdHJ1Y3QgZG1hX3R4X3N0YXRlICp0eHN0YXRlKQogewogCXN0cnVjdCB0ZWdy YV9kbWFfY2hhbm5lbCAqdGRjID0gdG9fdGVncmFfZG1hX2NoYW4oZGMpOwogCXN0cnVjdCB0ZWdy YV9kbWFfZGVzYyAqZG1hX2Rlc2M7Ci0Jc3RydWN0IHRlZ3JhX2RtYV9zZ19yZXEgKnNnX3JlcTsK KwlzdHJ1Y3QgdGVncmFfZG1hX3NnX3JlcSAqc2dfcmVxID0gTlVMTDsKIAllbnVtIGRtYV9zdGF0 dXMgcmV0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWduZWQgaW50IHJlc2lkdWFsOwpA QCAtODQwLDYgKzkwMSw3IEBAIHN0YXRpYyBlbnVtIGRtYV9zdGF0dXMgdGVncmFfZG1hX3R4X3N0 YXR1cyhzdHJ1Y3QgZG1hX2NoYW4gKmRjLAogCQlyZXNpZHVhbCA9IGRtYV9kZXNjLT5ieXRlc19y ZXF1ZXN0ZWQgLQogCQkJICAgKGRtYV9kZXNjLT5ieXRlc190cmFuc2ZlcnJlZCAlCiAJCQkgICAg ZG1hX2Rlc2MtPmJ5dGVzX3JlcXVlc3RlZCk7CisJCXJlc2lkdWFsID0gdGVncmFfZG1hX3VwZGF0 ZV9yZXNpZHVhbCh0ZGMsIHNnX3JlcSwgZG1hX2Rlc2MsIHJlc2lkdWFsKTsKIAkJZG1hX3NldF9y ZXNpZHVlKHR4c3RhdGUsIHJlc2lkdWFsKTsKIAl9CiAKQEAgLTE0MzMsMTIgKzE0OTUsNyBAQCBz dGF0aWMgaW50IHRlZ3JhX2RtYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQog CQlCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVMpIHwKIAkJQklUKERNQV9TTEFWRV9CVVNX SURUSF84X0JZVEVTKTsKIAl0ZG1hLT5kbWFfZGV2LmRpcmVjdGlvbnMgPSBCSVQoRE1BX0RFVl9U T19NRU0pIHwgQklUKERNQV9NRU1fVE9fREVWKTsKLQkvKgotCSAqIFhYWCBUaGUgaGFyZHdhcmUg YXBwZWFycyB0byBzdXBwb3J0Ci0JICogRE1BX1JFU0lEVUVfR1JBTlVMQVJJVFlfQlVSU1QtbGV2 ZWwgcmVwb3J0aW5nLCBidXQgaXQncwotCSAqIG9ubHkgdXNlZCBieSB0aGlzIGRyaXZlciBkdXJp bmcgdGVncmFfZG1hX3Rlcm1pbmF0ZV9hbGwoKQotCSAqLwotCXRkbWEtPmRtYV9kZXYucmVzaWR1 ZV9ncmFudWxhcml0eSA9IERNQV9SRVNJRFVFX0dSQU5VTEFSSVRZX1NFR01FTlQ7CisJdGRtYS0+ ZG1hX2Rldi5yZXNpZHVlX2dyYW51bGFyaXR5ID0gRE1BX1JFU0lEVUVfR1JBTlVMQVJJVFlfQlVS U1Q7CiAJdGRtYS0+ZG1hX2Rldi5kZXZpY2VfY29uZmlnID0gdGVncmFfZG1hX3NsYXZlX2NvbmZp ZzsKIAl0ZG1hLT5kbWFfZGV2LmRldmljZV90ZXJtaW5hdGVfYWxsID0gdGVncmFfZG1hX3Rlcm1p bmF0ZV9hbGw7CiAJdGRtYS0+ZG1hX2Rldi5kZXZpY2VfdHhfc3RhdHVzID0gdGVncmFfZG1hX3R4 X3N0YXR1czsK