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: [v2] dmaengine: pl330: flush before wait, and add dev burst support. From: Vinod Koul Message-Id: <20180306120259.GT15443@localhost> Date: Tue, 6 Mar 2018 17:32:59 +0530 To: Frank Mori Hess Cc: dmaengine@vger.kernel.org List-ID: T24gVHVlLCBGZWIgMDYsIDIwMTggYXQgMDE6MjQ6MzhQTSAtMDUwMCwgRnJhbmsgTW9yaSBIZXNz IHdyb3RlOgo+IFJlc2VuZGluZyBzYW1lIHBhdGNoIGFzIGJlZm9yZSwgZXhjZXB0IG5vdCBjb3Jy dXB0ZWQgYnkgd29yZC13cmFwIHRoaXMKPiB0aW1lLgoKVGhpcyBpcyB1c2VsZXNzIGZvciBjaGFu Z2Vsb2cuLgoKPiAKPiBEbyBETUFGTFVTSFAgX2JlZm9yZV8gdGhlIGZpcnN0IERNQVdGUCB0byBp bnN1cmUgY29udHJvbGxlcgoKZG8geW91IG1lYW4gZW5zdXJlLi4/Cgo+IGFuZCBwZXJpcGhlcmFs IGFyZSBpbiBhZ3JlZW1lbnQgYWJvdXQgZG1hIHJlcXVlc3Qgc3RhdGUgYmVmb3JlIGZpcnN0Cj4g dHJhbnNmZXIuICBBZGQgc3VwcG9ydCBmb3IgYnVyc3QgdHJhbnNmZXJzIHRvL2Zyb20gcGVyaXBo ZXJhbHMuIEluIHRoZSBuZXcKPiBzY2hlbWUsIHRoZSBjb250cm9sbGVyIGRvZXMgYXMgbWFueSBi dXJzdCB0cmFuc2ZlcnMgYXMgaXQgY2FuIHRoZW4gdHJhbnNmZXJzCj4gdGhlIHJlbWFpbmluZyBk cmVncyB3aXRoIGVpdGhlciBzaW5nbGUgdHJhbnNmZXJzIGZvciBwZXJpcGhlcmFscywgb3Igd2l0 aCBhCj4gcmVkdWNlZCBzaXplIGJ1cnN0IGZvciBtZW1vcnktdG8tbWVtb3J5IHRyYW5zZmVycy4K PiAKPiBJIHRlc3RlZCBkbWEgdHJhbnNmZXJzIHRvIHBlcmlwaGVyYWxzIHdpdGggZGVzaWdud2Fy ZSBzZXJpYWwgcG9ydAo+IChkcml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX2R3LmMpIGFuZCBh IEdQSUIgaW50ZXJmYWNlCj4gKGh0dHBzOi8vZ2l0aHViLmNvbS9mbWhlc3MvZm1oX2dwaWJfY29y ZSksIHdpdGggYSA0LjEga2VybmVsLgo+IFRoZSBwb3J0IG9mIG15IGNoYW5nZXMgdG8gSEVBRCBo YXMgb25seSBiZWVuIHRlc3RlZCB0byBjb21waWxlLgo+IEknbSB3aWxsaW5nIHRvIHRyeSB0byB0 ZXN0IG9uIG15IGhhcmR3YXJlIHdpdGggYSBIRUFEIGtlcm5lbAo+IGFuZCB0cnkgdXNpbmcgdGhl IGRtYXRlc3QgbW9kdWxlIHRvIHRlc3QgbWVtb3J5LXRvLW1lbW9yeQo+IHRyYW5zZmVycyBpZiB0 aGlzIHBhdGNoIG1pZ2h0IGJlIGFjY2VwdGVkLgoKVGhpcyBvbmUgYXMgd2VsbCwgcGxzIG1vdmUg dGhpcyBhZnRlciBzLW8tYiBsaW5lLCB3aGljaCBnaXZlIHJldmlld2VyIGFuZAptYWludGFpbmVy IGNvbnRleHQgYnV0IGRvbid0IGdldCBhcHBsaWVkLi4KCj4gCj4gU2lnbmVkLW9mZi1ieTogRnJh bmsgTW9yaSBIZXNzIDxmbWg2ampAZ21haWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2RtYS9wbDMz MC5jIHwgMTMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygt KQoKVGhpcyBoYXMgdG9vIG1hbnkgc3R5bGUgaXNzdWVzLCBwbGVhc2UgcnVuIC4vc2NyaXB0cy9j aGVja3BhdGNoLnBsIG9uIHRoZQpwYXRjaC4gSXQgc2hvdWxkIGhhdmUgMCBlcnJvcnMsIHBscyB1 c2UgeW91ciBkaXNjcmV0aW9uIGZvciB3YXJuaW5ncwoKUmlnaHQgbm93IGl0IHNob3dzOgp0b3Rh bDogMTkgZXJyb3JzLCAyMSB3YXJuaW5ncwoKKkFsc28qIENDIE1haW50YWluZXJzLCAuL3Njcmlw dHMvZ2V0X21haW50YWluZXIucGwgd2lsbCB0ZWxsIHlvdSB3aG9tIHRvIENDLgpNYWludGFpbmVy cyBtaWdodCBtaXNzIHRoZSBwYXRjaCBpZiBub3QgQ0NlZC4uLgoKCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hL3BsMzMwLmMgYi9kcml2ZXJzL2RtYS9wbDMzMC5jCj4gaW5kZXggZDczMjdm ZDVmNDQ1Li41YTNlODBlYzRiMGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEvcGwzMzAuYwo+ ICsrKyBiL2RyaXZlcnMvZG1hL3BsMzMwLmMKPiBAQCAtMTA5NCwyNiArMTA5NCwyNyBAQCBzdGF0 aWMgaW5saW5lIGludCBfbGRzdF9tZW10b21lbSh1bnNpZ25lZCBkcnlfcnVuLCB1OCBidWZbXSwK PiAgCXJldHVybiBvZmY7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxpbmUgaW50IF9sZHN0X2RldnRv bWVtKHN0cnVjdCBwbDMzMF9kbWFjICpwbDMzMCwgdW5zaWduZWQgZHJ5X3J1biwKPiAtCQkJCSB1 OCBidWZbXSwgY29uc3Qgc3RydWN0IF94ZmVyX3NwZWMgKnB4cywKPiAtCQkJCSBpbnQgY3ljKQo+ ICtzdGF0aWMgaW5saW5lIGludCBfbGRzdF9kZXZ0b21lbShzdHJ1Y3QgcGwzMzBfZG1hYyAqcGwz MzAsIHVuc2lnbmVkIGRyeV9ydW4sIAo+ICsJCQkJdTggYnVmW10sIGNvbnN0IHN0cnVjdCBfeGZl cl9zcGVjICpweHMsIAo+ICsJCQkJaW50IGN5YywgZW51bSBwbDMzMF9jb25kIGNvbmQpCj4gIHsK PiAgCWludCBvZmYgPSAwOwo+IC0JZW51bSBwbDMzMF9jb25kIGNvbmQ7Cj4gIAo+ICAJaWYgKHBs MzMwLT5xdWlya3MgJiBQTDMzMF9RVUlSS19CUk9LRU5fTk9fRkxVU0hQKQo+ICAJCWNvbmQgPSBC VVJTVDsKPiAtCWVsc2UKPiAtCQljb25kID0gU0lOR0xFOwo+ICAKPiArCS8qIGRvIEZMVVNIUCBh dCBiZWdpbm5pbmcgdG8gY2xlYXIgYW55IHN0YWxlIGRtYSByZXF1ZXN0cyBiZWZvcmUgZmlyc3Qg V0ZQLiAqLwo+ICsJaWYgKCEocGwzMzAtPnF1aXJrcyAmIFBMMzMwX1FVSVJLX0JST0tFTl9OT19G TFVTSFApKQo+ICsJCW9mZiArPSBfZW1pdF9GTFVTSFAoZHJ5X3J1biwgJmJ1ZltvZmZdLCBweHMt PmRlc2MtPnBlcmkpOwo+ICAJd2hpbGUgKGN5Yy0tKSB7Cj4gIAkJb2ZmICs9IF9lbWl0X1dGUChk cnlfcnVuLCAmYnVmW29mZl0sIGNvbmQsIHB4cy0+ZGVzYy0+cGVyaSk7Cj4gLQkJb2ZmICs9IF9l bWl0X0xEUChkcnlfcnVuLCAmYnVmW29mZl0sIGNvbmQsIHB4cy0+ZGVzYy0+cGVyaSk7Cj4gKwkJ aWYoY29uZCA9PSBBTFdBWVMpIHsKPiArCQkJb2ZmICs9IF9lbWl0X0xEUChkcnlfcnVuLCAmYnVm W29mZl0sIFNJTkdMRSwgcHhzLT5kZXNjLT5wZXJpKTsKPiArCQkJb2ZmICs9IF9lbWl0X0xEUChk cnlfcnVuLCAmYnVmW29mZl0sIEJVUlNULCBweHMtPmRlc2MtPnBlcmkpOwo+ICsJCX1lbHNlIHsK PiArCQkJb2ZmICs9IF9lbWl0X0xEUChkcnlfcnVuLCAmYnVmW29mZl0sIGNvbmQsIHB4cy0+ZGVz Yy0+cGVyaSk7Cj4gKwkJfQo+ICAJCW9mZiArPSBfZW1pdF9TVChkcnlfcnVuLCAmYnVmW29mZl0s IEFMV0FZUyk7Cj4gLQo+IC0JCWlmICghKHBsMzMwLT5xdWlya3MgJiBQTDMzMF9RVUlSS19CUk9L RU5fTk9fRkxVU0hQKSkKPiAtCQkJb2ZmICs9IF9lbWl0X0ZMVVNIUChkcnlfcnVuLCAmYnVmW29m Zl0sCj4gLQkJCQkJICAgIHB4cy0+ZGVzYy0+cGVyaSk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIG9m ZjsKPiBAQCAtMTEyMSwyNCArMTEyMiwyNiBAQCBzdGF0aWMgaW5saW5lIGludCBfbGRzdF9kZXZ0 b21lbShzdHJ1Y3QgcGwzMzBfZG1hYyAqcGwzMzAsIHVuc2lnbmVkIGRyeV9ydW4sCj4gIAo+ICBz dGF0aWMgaW5saW5lIGludCBfbGRzdF9tZW10b2RldihzdHJ1Y3QgcGwzMzBfZG1hYyAqcGwzMzAs Cj4gIAkJCQkgdW5zaWduZWQgZHJ5X3J1biwgdTggYnVmW10sCj4gLQkJCQkgY29uc3Qgc3RydWN0 IF94ZmVyX3NwZWMgKnB4cywgaW50IGN5YykKPiArCQkJCSBjb25zdCBzdHJ1Y3QgX3hmZXJfc3Bl YyAqcHhzLCBpbnQgY3ljLCAKPiArCQkJCSBlbnVtIHBsMzMwX2NvbmQgY29uZCkKPiAgewo+ICAJ aW50IG9mZiA9IDA7Cj4gLQllbnVtIHBsMzMwX2NvbmQgY29uZDsKPiAgCj4gIAlpZiAocGwzMzAt PnF1aXJrcyAmIFBMMzMwX1FVSVJLX0JST0tFTl9OT19GTFVTSFApCj4gIAkJY29uZCA9IEJVUlNU Owo+IC0JZWxzZQo+IC0JCWNvbmQgPSBTSU5HTEU7Cj4gIAo+ICsJLyogZG8gRkxVU0hQIGF0IGJl Z2lubmluZyB0byBjbGVhciBhbnkgc3RhbGUgZG1hIHJlcXVlc3RzIGJlZm9yZSBmaXJzdCBXRlAu ICovCj4gKwlpZiAoIShwbDMzMC0+cXVpcmtzICYgUEwzMzBfUVVJUktfQlJPS0VOX05PX0ZMVVNI UCkpCj4gKwkJb2ZmICs9IF9lbWl0X0ZMVVNIUChkcnlfcnVuLCAmYnVmW29mZl0sIHB4cy0+ZGVz Yy0+cGVyaSk7Cj4gIAl3aGlsZSAoY3ljLS0pIHsKPiAgCQlvZmYgKz0gX2VtaXRfV0ZQKGRyeV9y dW4sICZidWZbb2ZmXSwgY29uZCwgcHhzLT5kZXNjLT5wZXJpKTsKPiAgCQlvZmYgKz0gX2VtaXRf TEQoZHJ5X3J1biwgJmJ1ZltvZmZdLCBBTFdBWVMpOwo+IC0JCW9mZiArPSBfZW1pdF9TVFAoZHJ5 X3J1biwgJmJ1ZltvZmZdLCBjb25kLCBweHMtPmRlc2MtPnBlcmkpOwo+IC0KPiAtCQlpZiAoIShw bDMzMC0+cXVpcmtzICYgUEwzMzBfUVVJUktfQlJPS0VOX05PX0ZMVVNIUCkpCj4gLQkJCW9mZiAr PSBfZW1pdF9GTFVTSFAoZHJ5X3J1biwgJmJ1ZltvZmZdLAo+IC0JCQkJCSAgICBweHMtPmRlc2Mt PnBlcmkpOwo+ICsJCWlmKGNvbmQgPT0gQUxXQVlTKSB7Cj4gKwkJCW9mZiArPSBfZW1pdF9TVFAo ZHJ5X3J1biwgJmJ1ZltvZmZdLCBTSU5HTEUsIHB4cy0+ZGVzYy0+cGVyaSk7Cj4gKwkJCW9mZiAr PSBfZW1pdF9TVFAoZHJ5X3J1biwgJmJ1ZltvZmZdLCBCVVJTVCwgcHhzLT5kZXNjLT5wZXJpKTsK PiArCQl9ZWxzZSB7Cj4gKwkJCW9mZiArPSBfZW1pdF9TVFAoZHJ5X3J1biwgJmJ1ZltvZmZdLCBj b25kLCBweHMtPmRlc2MtPnBlcmkpOwo+ICsJCX0KPiAgCX0KPiAgCj4gIAlyZXR1cm4gb2ZmOwo+ IEBAIC0xMTQ4LDEzICsxMTUxLDE0IEBAIHN0YXRpYyBpbnQgX2J1cnN0cyhzdHJ1Y3QgcGwzMzBf ZG1hYyAqcGwzMzAsIHVuc2lnbmVkIGRyeV9ydW4sIHU4IGJ1ZltdLAo+ICAJCWNvbnN0IHN0cnVj dCBfeGZlcl9zcGVjICpweHMsIGludCBjeWMpCj4gIHsKPiAgCWludCBvZmYgPSAwOwo+IC0KPiAr CWVudW0gcGwzMzBfY29uZCBjb25kID0gQlJTVF9MRU4ocHhzLT5jY3IpID4gMSA/IEJVUlNUIDog U0lOR0xFOwo+ICsJCj4gIAlzd2l0Y2ggKHB4cy0+ZGVzYy0+cnF0eXBlKSB7Cj4gIAljYXNlIERN QV9NRU1fVE9fREVWOgo+IC0JCW9mZiArPSBfbGRzdF9tZW10b2RldihwbDMzMCwgZHJ5X3J1biwg JmJ1ZltvZmZdLCBweHMsIGN5Yyk7Cj4gKwkJb2ZmICs9IF9sZHN0X21lbXRvZGV2KHBsMzMwLCBk cnlfcnVuLCAmYnVmW29mZl0sIHB4cywgY3ljLCBjb25kKTsKPiAgCQlicmVhazsKPiAgCWNhc2Ug RE1BX0RFVl9UT19NRU06Cj4gLQkJb2ZmICs9IF9sZHN0X2RldnRvbWVtKHBsMzMwLCBkcnlfcnVu LCAmYnVmW29mZl0sIHB4cywgY3ljKTsKPiArCQlvZmYgKz0gX2xkc3RfZGV2dG9tZW0ocGwzMzAs IGRyeV9ydW4sICZidWZbb2ZmXSwgcHhzLCBjeWMsIGNvbmQpOwo+ICAJCWJyZWFrOwo+ICAJY2Fz ZSBETUFfTUVNX1RPX01FTToKPiAgCQlvZmYgKz0gX2xkc3RfbWVtdG9tZW0oZHJ5X3J1biwgJmJ1 ZltvZmZdLCBweHMsIGN5Yyk7Cj4gQEAgLTExNjcsNiArMTE3MSwzOSBAQCBzdGF0aWMgaW50IF9i dXJzdHMoc3RydWN0IHBsMzMwX2RtYWMgKnBsMzMwLCB1bnNpZ25lZCBkcnlfcnVuLCB1OCBidWZb XSwKPiAgCXJldHVybiBvZmY7Cj4gIH0KPiAgCj4gKy8qIHRyYW5zZmVyIGRyZWdzIHdpdGggc2lu Z2xlIHRyYW5zZmVycyB0byBwZXJpcGhlcmFsLCBvciBhIHJlZHVjZWQgc2l6ZSBidXJzdAo+ICsg KiBmb3IgbWVtLXRvLW1lbS4gKi8KPiArc3RhdGljIGludCBfZHJlZ3Moc3RydWN0IHBsMzMwX2Rt YWMgKnBsMzMwLCB1bnNpZ25lZCBkcnlfcnVuLCB1OCBidWZbXSwKPiArCQljb25zdCBzdHJ1Y3Qg X3hmZXJfc3BlYyAqcHhzLCBpbnQgdHJhbnNmZXJfbGVuZ3RoKQo+ICt7Cj4gKwlpbnQgb2ZmID0g MDsKPiArCWludCBkcmVnc19jY3I7Cj4gKwkKPiArCWlmKHRyYW5zZmVyX2xlbmd0aCA9PSAwKSBy ZXR1cm4gb2ZmOwo+ICsJCj4gKwlzd2l0Y2ggKHB4cy0+ZGVzYy0+cnF0eXBlKSB7Cj4gKwljYXNl IERNQV9NRU1fVE9fREVWOgo+ICsJCW9mZiArPSBfbGRzdF9tZW10b2RldihwbDMzMCwgZHJ5X3J1 biwgJmJ1ZltvZmZdLCBweHMsIHRyYW5zZmVyX2xlbmd0aCwgU0lOR0xFKTsKPiArCQlicmVhazsK PiArCWNhc2UgRE1BX0RFVl9UT19NRU06Cj4gKwkJb2ZmICs9IF9sZHN0X2RldnRvbWVtKHBsMzMw LCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cywgdHJhbnNmZXJfbGVuZ3RoLCBTSU5HTEUpOwo+ICsJ CWJyZWFrOwo+ICsJY2FzZSBETUFfTUVNX1RPX01FTToKPiArCQlkcmVnc19jY3IgPSBweHMtPmNj cjsKPiArCQlkcmVnc19jY3IgJj0gfigoMHhmIDw8IENDX1NSQ0JSU1RMRU5fU0hGVCkgfCAoMHhm IDw8IENDX0RTVEJSU1RMRU5fU0hGVCkpIDsKPiArCQlkcmVnc19jY3IgfD0gKCgodHJhbnNmZXJf bGVuZ3RoIC0gMSkgJiAweGYpIDw8IENDX1NSQ0JSU1RMRU5fU0hGVCk7Cj4gKwkJZHJlZ3NfY2Ny IHw9ICgoKHRyYW5zZmVyX2xlbmd0aCAtIDEpICYgMHhmKSA8PCBDQ19EU1RCUlNUTEVOX1NIRlQp Owo+ICsJCW9mZiArPSBfZW1pdF9NT1YoZHJ5X3J1biwgJmJ1ZltvZmZdLCBDQ1IsIGRyZWdzX2Nj cik7Cj4gKwkJb2ZmICs9IF9sZHN0X21lbXRvbWVtKGRyeV9ydW4sICZidWZbb2ZmXSwgcHhzLCAx KTsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJb2ZmICs9IDB4NDAwMDAwMDA7IC8qIFNj YXJlIG9mZiB0aGUgQ2xpZW50ICovCj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIG9m ZjsKPiArfQo+ICsKPiAgLyogUmV0dXJucyBieXRlcyBjb25zdW1lZCBhbmQgdXBkYXRlcyBidXJz dHMgKi8KPiAgc3RhdGljIGlubGluZSBpbnQgX2xvb3Aoc3RydWN0IHBsMzMwX2RtYWMgKnBsMzMw LCB1bnNpZ25lZCBkcnlfcnVuLCB1OCBidWZbXSwKPiAgCQl1bnNpZ25lZCBsb25nICpidXJzdHMs IGNvbnN0IHN0cnVjdCBfeGZlcl9zcGVjICpweHMpCj4gQEAgLTEyNTYsNiArMTI5Myw3IEBAIHN0 YXRpYyBpbmxpbmUgaW50IF9zZXR1cF9sb29wcyhzdHJ1Y3QgcGwzMzBfZG1hYyAqcGwzMzAsCj4g IAlzdHJ1Y3QgcGwzMzBfeGZlciAqeCA9ICZweHMtPmRlc2MtPnB4Owo+ICAJdTMyIGNjciA9IHB4 cy0+Y2NyOwo+ICAJdW5zaWduZWQgbG9uZyBjLCBidXJzdHMgPSBCWVRFX1RPX0JVUlNUKHgtPmJ5 dGVzLCBjY3IpOwo+ICsJaW50IG51bV9kcmVncyA9ICh4LT5ieXRlcyAtIEJVUlNUX1RPX0JZVEUo YnVyc3RzLCBjY3IpKSAvIEJSU1RfU0laRShjY3IpOwo+ICAJaW50IG9mZiA9IDA7Cj4gIAo+ICAJ d2hpbGUgKGJ1cnN0cykgewo+IEBAIC0xMjYzLDcgKzEzMDEsOCBAQCBzdGF0aWMgaW5saW5lIGlu dCBfc2V0dXBfbG9vcHMoc3RydWN0IHBsMzMwX2RtYWMgKnBsMzMwLAo+ICAJCW9mZiArPSBfbG9v cChwbDMzMCwgZHJ5X3J1biwgJmJ1ZltvZmZdLCAmYywgcHhzKTsKPiAgCQlidXJzdHMgLT0gYzsK PiAgCX0KPiAtCj4gKwlvZmYgKz0gX2RyZWdzKHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4 cywgbnVtX2RyZWdzKTsKPiArCQo+ICAJcmV0dXJuIG9mZjsKPiAgfQo+ICAKPiBAQCAtMTI5NCw3 ICsxMzMzLDYgQEAgc3RhdGljIGludCBfc2V0dXBfcmVxKHN0cnVjdCBwbDMzMF9kbWFjICpwbDMz MCwgdW5zaWduZWQgZHJ5X3J1biwKPiAgCQkgICAgICBzdHJ1Y3QgX3hmZXJfc3BlYyAqcHhzKQo+ ICB7Cj4gIAlzdHJ1Y3QgX3BsMzMwX3JlcSAqcmVxID0gJnRocmQtPnJlcVtpbmRleF07Cj4gLQlz dHJ1Y3QgcGwzMzBfeGZlciAqeDsKPiAgCXU4ICpidWYgPSByZXEtPm1jX2NwdTsKPiAgCWludCBv ZmYgPSAwOwo+ICAKPiBAQCAtMTMwMywxMSArMTM0MSw2IEBAIHN0YXRpYyBpbnQgX3NldHVwX3Jl cShzdHJ1Y3QgcGwzMzBfZG1hYyAqcGwzMzAsIHVuc2lnbmVkIGRyeV9ydW4sCj4gIAkvKiBETUFN T1YgQ0NSLCBjY3IgKi8KPiAgCW9mZiArPSBfZW1pdF9NT1YoZHJ5X3J1biwgJmJ1ZltvZmZdLCBD Q1IsIHB4cy0+Y2NyKTsKPiAgCj4gLQl4ID0gJnB4cy0+ZGVzYy0+cHg7Cj4gLQkvKiBFcnJvciBp ZiB4ZmVyIGxlbmd0aCBpcyBub3QgYWxpZ25lZCBhdCBidXJzdCBzaXplICovCj4gLQlpZiAoeC0+ Ynl0ZXMgJSAoQlJTVF9TSVpFKHB4cy0+Y2NyKSAqIEJSU1RfTEVOKHB4cy0+Y2NyKSkpCj4gLQkJ cmV0dXJuIC1FSU5WQUw7Cj4gLQo+ICAJb2ZmICs9IF9zZXR1cF94ZmVyKHBsMzMwLCBkcnlfcnVu LCAmYnVmW29mZl0sIHB4cyk7Cj4gIAo+ICAJLyogRE1BU0VWIHBlcmlwaGVyYWwvZXZlbnQgKi8K PiBAQCAtMjExNSwxNSArMjE0OCwzMSBAQCBzdGF0aWMgaW50IHBsMzMwX2NvbmZpZyhzdHJ1Y3Qg ZG1hX2NoYW4gKmNoYW4sCj4gIAkJCXBjaC0+Zmlmb19hZGRyID0gc2xhdmVfY29uZmlnLT5kc3Rf YWRkcjsKPiAgCQlpZiAoc2xhdmVfY29uZmlnLT5kc3RfYWRkcl93aWR0aCkKPiAgCQkJcGNoLT5i dXJzdF9zeiA9IF9fZmZzKHNsYXZlX2NvbmZpZy0+ZHN0X2FkZHJfd2lkdGgpOwo+IC0JCWlmIChz bGF2ZV9jb25maWctPmRzdF9tYXhidXJzdCkKPiAtCQkJcGNoLT5idXJzdF9sZW4gPSBzbGF2ZV9j b25maWctPmRzdF9tYXhidXJzdDsKPiArCQlpZiAocGNoLT5kbWFjLT5xdWlya3MgJiBQTDMzMF9R VUlSS19CUk9LRU5fTk9fRkxVU0hQKQo+ICsJCQlwY2gtPmJ1cnN0X2xlbiA9IDE7Cj4gKwkJZWxz ZSBpZiAoc2xhdmVfY29uZmlnLT5kc3RfbWF4YnVyc3QpCj4gKwkJewo+ICsJCQlpZihzbGF2ZV9j b25maWctPmRzdF9tYXhidXJzdCA+IFBMMzMwX01BWF9CVVJTVCkKPiArCQkJCXBjaC0+YnVyc3Rf bGVuID0gUEwzMzBfTUFYX0JVUlNUOwo+ICsJCQllbHNlCj4gKwkJCQlwY2gtPmJ1cnN0X2xlbiA9 IHNsYXZlX2NvbmZpZy0+ZHN0X21heGJ1cnN0Owo+ICsJCX1lbHNlCj4gKwkJCXBjaC0+YnVyc3Rf bGVuID0gMTsKPiAgCX0gZWxzZSBpZiAoc2xhdmVfY29uZmlnLT5kaXJlY3Rpb24gPT0gRE1BX0RF Vl9UT19NRU0pIHsKPiAgCQlpZiAoc2xhdmVfY29uZmlnLT5zcmNfYWRkcikKPiAgCQkJcGNoLT5m aWZvX2FkZHIgPSBzbGF2ZV9jb25maWctPnNyY19hZGRyOwo+ICAJCWlmIChzbGF2ZV9jb25maWct PnNyY19hZGRyX3dpZHRoKQo+ICAJCQlwY2gtPmJ1cnN0X3N6ID0gX19mZnMoc2xhdmVfY29uZmln LT5zcmNfYWRkcl93aWR0aCk7Cj4gLQkJaWYgKHNsYXZlX2NvbmZpZy0+c3JjX21heGJ1cnN0KQo+ IC0JCQlwY2gtPmJ1cnN0X2xlbiA9IHNsYXZlX2NvbmZpZy0+c3JjX21heGJ1cnN0Owo+ICsJCWlm IChwY2gtPmRtYWMtPnF1aXJrcyAmIFBMMzMwX1FVSVJLX0JST0tFTl9OT19GTFVTSFApCj4gKwkJ CXBjaC0+YnVyc3RfbGVuID0gMTsKPiArCQllbHNlIGlmIChzbGF2ZV9jb25maWctPnNyY19tYXhi dXJzdCkKPiArCQl7Cj4gKwkJCWlmKHNsYXZlX2NvbmZpZy0+c3JjX21heGJ1cnN0ID4gUEwzMzBf TUFYX0JVUlNUKQo+ICsJCQkJcGNoLT5idXJzdF9sZW4gPSBQTDMzMF9NQVhfQlVSU1Q7Cj4gKwkJ CWVsc2UKPiArCQkJCXBjaC0+YnVyc3RfbGVuID0gc2xhdmVfY29uZmlnLT5zcmNfbWF4YnVyc3Q7 Cj4gKwkJfWVsc2UKPiArCQkJcGNoLT5idXJzdF9sZW4gPSAxOwo+ICAJfQo+ICAKPiAgCXJldHVy biAwOwo+IEBAIC0yNTE3LDE0ICsyNTY2LDggQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X2J1cnN0 X2xlbihzdHJ1Y3QgZG1hX3BsMzMwX2Rlc2MgKmRlc2MsIHNpemVfdCBsZW4pCj4gIAlidXJzdF9s ZW4gPj49IGRlc2MtPnJxY2ZnLmJyc3Rfc2l6ZTsKPiAgCj4gIAkvKiBzcmMvZHN0X2J1cnN0X2xl biBjYW4ndCBiZSBtb3JlIHRoYW4gMTYgKi8KPiAtCWlmIChidXJzdF9sZW4gPiAxNikKPiAtCQli dXJzdF9sZW4gPSAxNjsKPiAtCj4gLQl3aGlsZSAoYnVyc3RfbGVuID4gMSkgewo+IC0JCWlmICgh KGxlbiAlIChidXJzdF9sZW4gPDwgZGVzYy0+cnFjZmcuYnJzdF9zaXplKSkpCj4gLQkJCWJyZWFr Owo+IC0JCWJ1cnN0X2xlbi0tOwo+IC0JfQo+ICsJaWYgKGJ1cnN0X2xlbiA+IFBMMzMwX01BWF9C VVJTVCkKPiArCQlidXJzdF9sZW4gPSBQTDMzMF9NQVhfQlVSU1Q7Cj4gIAo+ICAJcmV0dXJuIGJ1 cnN0X2xlbjsKPiAgfQo+IEBAIC0yNTk2LDcgKzI2MzksNyBAQCBzdGF0aWMgc3RydWN0IGRtYV9h c3luY190eF9kZXNjcmlwdG9yICpwbDMzMF9wcmVwX2RtYV9jeWNsaWMoCj4gIAo+ICAJCWRlc2Mt PnJxdHlwZSA9IGRpcmVjdGlvbjsKPiAgCQlkZXNjLT5ycWNmZy5icnN0X3NpemUgPSBwY2gtPmJ1 cnN0X3N6Owo+IC0JCWRlc2MtPnJxY2ZnLmJyc3RfbGVuID0gMTsKPiArCQlkZXNjLT5ycWNmZy5i cnN0X2xlbiA9IHBjaC0+YnVyc3RfbGVuOwo+ICAJCWRlc2MtPmJ5dGVzX3JlcXVlc3RlZCA9IHBl cmlvZF9sZW47Cj4gIAkJZmlsbF9weCgmZGVzYy0+cHgsIGRzdCwgc3JjLCBwZXJpb2RfbGVuKTsK PiAgCj4gQEAgLTI3NDEsNyArMjc4NCw3IEBAIHBsMzMwX3ByZXBfc2xhdmVfc2coc3RydWN0IGRt YV9jaGFuICpjaGFuLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwKPiAgCQl9Cj4gIAo+ICAJCWRl c2MtPnJxY2ZnLmJyc3Rfc2l6ZSA9IHBjaC0+YnVyc3Rfc3o7Cj4gLQkJZGVzYy0+cnFjZmcuYnJz dF9sZW4gPSAxOwo+ICsJCWRlc2MtPnJxY2ZnLmJyc3RfbGVuID0gcGNoLT5idXJzdF9sZW47Cj4g IAkJZGVzYy0+cnF0eXBlID0gZGlyZWN0aW9uOwo+ICAJCWRlc2MtPmJ5dGVzX3JlcXVlc3RlZCA9 IHNnX2RtYV9sZW4oc2cpOwo+ICAJfQo+IC0tIAo+IDIuMTEuMAo+IAo+IAo+IAo+IC0tCj4gVG8g dW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGRt YWVuZ2luZSIgaW4KPiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2Vy bmVsLm9yZwo+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcv bWFqb3Jkb21vLWluZm8uaHRtbAo=