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: dmaengine: Add metadata_ops for dma_async_tx_descriptor From: Vinod Koul Message-Id: <20180829162202.GI2388@vkoul-mobl> Date: Wed, 29 Aug 2018 21:52:02 +0530 To: Peter Ujfalusi Cc: dan.j.williams@intel.com, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, lars@metafoo.de, radheys@xilinx.com List-ID: T24gMjktMDgtMTgsIDE5OjE0LCBQZXRlciBVamZhbHVzaSB3cm90ZToKPiBWaW5vZCwKPiAKPiBP biAwOC8yOS8yMDE4IDA2OjUyIFBNLCBWaW5vZCB3cm90ZToKPiA+IE9uIDIzLTA4LTE4LCAxNjow NywgUGV0ZXIgVWpmYWx1c2kgd3JvdGU6Cj4gPj4gVGhlIG1ldGFkYXRhIGlzIGJlc3QgZGVzY3Jp YmVkIGFzIHNpZGUgYmFuZCBkYXRhIG9yIHBhcmFtZXRlcnMgdHJhdmVsaW5nCj4gPj4gYWxvbmdz aWRlIHRoZSBkYXRhIERNQWQgYnkgdGhlIERNQSBlbmdpbmUuIEl0IGlzIGRhdGEKPiA+PiB3aGlj aCBpcyB1bmRlcnN0b29kIGJ5IHRoZSBwZXJpcGhlcmFsIGFuZCB0aGUgcGVyaXBoZXJhbCBkcml2 ZXIgb25seSwgdGhlCj4gPj4gRE1BIGVuZ2luZSBzZWUgaXQgb25seSBhcyBkYXRhIGJsb2NrIGFu ZCBpdCBpcyBub3QgaW50ZXJwcmV0aW5nIGl0IGluIGFueQo+ID4+IHdheS4KPiA+Pgo+ID4+IFRo ZSBtZXRhZGF0YSBjYW4gYmUgZGlmZmVyZW50IHBlciBkZXNjcmlwdG9yIGFzIGl0IGlzIGEgcGFy YW1ldGVyIGZvciB0aGUKPiA+PiBkYXRhIGJlaW5nIHRyYW5zZmVycmVkLgo+ID4+Cj4gPj4gSWYg dGhlIERNQSBzdXBwb3J0cyBwZXIgZGVzY3JpcHRvciBtZXRhZGF0YSBpdCBjYW4gaW1wbGVtZW50 IHRoZSBhdHRhY2gsCj4gPj4gZ2V0X3B0ci9zZXRfbGVuIGNhbGxiYWNrcy4KPiA+Pgo+ID4+IENs aWVudCBkcml2ZXJzIG11c3Qgb25seSB1c2UgZWl0aGVyIGF0dGFjaCBvciBnZXRfcHRyL3NldF9s ZW4gdG8gYXZvaWQKPiA+PiBtaXNzIGNvbmZpZ3VyYXRpb24uCj4gPiAKPiA+IG1pc2NvbmZpZ3Vy YXRpb24/Cj4gCj4gU29ycnkgZm9yIHRoZSB0eXBvcywgSSdsbCBnb3QgdGhyb3VnaCB0aGVtIGFn YWluLgo+IAo+ID4+IENsaWVudCBkcml2ZXIgY2FuIGNoZWNrIGlmIGEgZ2l2ZW4gbWV0YWRhdGEg bW9kZSBpcyBzdXBwb3J0ZWQgYnkgdGhlCj4gPj4gY2hhbm5lbCBkdXJpbmcgcHJvYmUgdGltZSB3 aXRoCj4gPj4gZG1hZW5naW5lX2lzX21ldGFkYXRhX21vZGVfc3VwcG9ydGVkKGNoYW4sIERFU0Nf TUVUQURBVEFfQ0xJRU5UKTsKPiA+PiBkbWFlbmdpbmVfaXNfbWV0YWRhdGFfbW9kZV9zdXBwb3J0 ZWQoY2hhbiwgREVTQ19NRVRBREFUQV9FTkdJTkUpOwo+ID4+Cj4gPj4gYW5kIGJhc2VkIG9uIHRo aXMgaW5mb3JtYXRpb24gY2FuIHVzZSBlaXRoZXIgbW9kZS4KPiA+Pgo+ID4+IFdyYXBwZXJzIGFy ZSBhbHNvIGFkZGVkIGZvciB0aGUgbWV0YWRhdGFfb3BzLgo+ID4+Cj4gPj4gVG8gYmUgdXNlZCBp biBERVNDX01FVEFEQVRBX0NMSUVOVCBtb2RlOgo+ID4+IGRtYWVuZ2luZV9kZXNjX2F0dGFjaF9t ZXRhZGF0YSgpCj4gPj4KPiA+PiBUbyBiZSB1c2VkIGluIERFU0NfTUVUQURBVEFfRU5HSU5FIG1v ZGU6Cj4gPj4gZG1hZW5naW5lX2Rlc2NfZ2V0X21ldGFkYXRhX3B0cigpCj4gPj4gZG1hZW5naW5l X2Rlc2Nfc2V0X21ldGFkYXRhX2xlbigpCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBV amZhbHVzaSA8cGV0ZXIudWpmYWx1c2lAdGkuY29tPgo+ID4+IC0tLQo+ID4+IEhpLAo+ID4+Cj4g Pj4gQ2hhbmdlcyBzaW5jZSByZmM6Cj4gPj4gLSBERVNDX01FVEFEQVRBX0VNQkVEREVEIHJlbmFt ZWQgdG8gREVTQ19NRVRBREFUQV9FTkdJTkUKPiA+PiAtIFVzZSBmbG93IGlzIGFkZGVkIGZvciBi b3RoIENMSUVOVCBhbmQgRU5HSU5FIG1ldGFkYXRhIG1vZGVzCj4gPj4KPiA+PiBSZWdhcmRzLAo+ ID4+IFBldGVyCj4gPj4KPiA+PiAgaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaCB8IDE0NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4+ICAxIGZpbGUgY2hhbmdlZCwg MTQ0IGluc2VydGlvbnMoKykKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Rt YWVuZ2luZS5oIGIvaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaAo+ID4+IGluZGV4IDNkYjgzM2E4 YzU0Mi4uZjgwOTYzNWNmZWFhIDEwMDY0NAo+ID4+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hZW5n aW5lLmgKPiA+PiArKysgYi9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCj4gPj4gQEAgLTIzMSw2 ICsyMzEsNTcgQEAgdHlwZWRlZiBzdHJ1Y3QgeyBERUNMQVJFX0JJVE1BUChiaXRzLCBETUFfVFhf VFlQRV9FTkQpOyB9IGRtYV9jYXBfbWFza190Owo+ID4+ICAgKiBAYnl0ZXNfdHJhbnNmZXJyZWQ6 IGJ5dGUgY291bnRlcgo+ID4+ICAgKi8KPiA+PiAgCj4gPj4gKy8qKgo+ID4+ICsgKiBlbnVtIGRt YV9kZXNjX21ldGFkYXRhX21vZGUgLSBwZXIgZGVzY3JpcHRvciBtZXRhZGF0YSBtb2RlIHR5cGVz IHN1cHBvcnRlZAo+ID4+ICsgKiBAREVTQ19NRVRBREFUQV9DTElFTlQgLSB0aGUgbWV0YWRhdGEg YnVmZmVyIGlzIGFsbG9jYXRlZC9wcm92aWRlZCBieSB0aGUKPiA+PiArICogIGNsaWVudCBkcml2 ZXIgYW5kIGl0IGlzIGF0dGFjaGVkICh2aWEgdGhlIGRtYWVuZ2luZV9kZXNjX2F0dGFjaF9tZXRh ZGF0YSgpCj4gPj4gKyAqICBoZWxwZXIpIHRvIHRoZSBkZXNjcmlwdG9yLgo+ID4+ICsgKgo+ID4+ ICsgKiBDbGllbnQgZHJpdmVycyBpbnRlcmVzdGVkIHRvIHVzZSB0aGlzIG1vZGUgY2FuIGZvbGxv dzoKPiA+PiArICogLSBETUFfTUVNX1RPX0RFVjoKPiA+PiArICogICAxLiBwcmVwYXJlIHRoZSBk ZXNjcmlwdG9yIChkbWFlbmdpbmVfcHJlcF8qKQo+ID4+ICsgKgljb25zdHJ1Y3QgdGhlIG1ldGFk YXRhIGluIHRoZSBjbGluZXQncyBidWZmZXIKPiA+IAo+ID4gdHlwbyBjbGluZXQKPiA+IAo+ID4+ ICsgKiAgIDIuIHVzZSBkbWFlbmdpbmVfZGVzY19hdHRhY2hfbWV0YWRhdGEoKSB0byBhdHRhY2gg dGhlIGJ1ZmZlciB0byB0aGUKPiA+PiArICoJZGVzY3JpcHRvcgo+ID4+ICsgKiAgIDMuIHN1Ym1p dCB0aGUgdHJhbnNmZXIKPiA+PiArICogLSBETUFfREVWX1RPX01FTToKPiA+PiArICogICAxLiBw cmVwYXJlIHRoZSBkZXNjcmlwdG9yIChkbWFlbmdpbmVfcHJlcF8qKQo+ID4+ICsgKiAgIDIuIHVz ZSBkbWFlbmdpbmVfZGVzY19hdHRhY2hfbWV0YWRhdGEoKSB0byBhdHRhY2ggdGhlIGJ1ZmZlciB0 byB0aGUKPiA+PiArICoJZGVzY3JpcHRvcgo+ID4+ICsgKiAgIDMuIHN1Ym1pdCB0aGUgdHJhbnNm ZXIKPiA+PiArICogICA0LiB3aGVuIHRoZSB0cmFuc2ZlciBpcyBjb21wbGV0ZWQsIHRoZSBtZXRh ZGF0YSBzaG91bGQgYmUgYXZhaWxhYmxlIGluIHRoZQo+ID4+ICsgKglhdHRhY2hlZCBidWZmZXIK PiA+IAo+ID4gSSBndWVzcyB0aGlzIGlzIGdvb2QgdG8gYmUgbW92ZWQgaW50byBEb2N1bWVudGF0 aW9uCj4gCj4gU2hvdWxkIEkgY3JlYXRlIGEgbmV3IGZpbGUgZm9yIG1ldGFkYXRhPyBJIGd1ZXNz IGl0IHdvdWxkIG1ha2Ugc2Vuc2UgYXMgdGhlCj4gaW5mb3JtYXRpb24gaXMgZm9yIGJvdGggY2xp ZW50cyBhbmQgZW5naW5lcy4KCkhtbSBub3Qgc3VyZSwgbGV0cyBzZWUgaG93IGl0IGxvb2tzIGFz IGVudHJpZXMgaW4gdGhlc2UgZmlsZXMsIGRldGFpbGluZwpyb2xlcyBvZiBjbGllbnRzIGFuZCBw cm92aWRlcnMKCj4gCj4gPiAKPiA+IGFsc28gd2UgZG9udCBhbGxvdyB0aGlzIGZvciBtZW1jcHkg dHhuPwo+IAo+IEkgaGF2ZSBub3QgdGhvdWdodCBhYm91dCB0aGF0LCBidXQgaWYgSSB0aGluayBh Ym91dCBpdCBpdCBzaG91bGQgYmUgYWxvbmcgdGhlCj4gc2FtZSBsaW5lcyBhcyBNRU1fVE9fREVW Lgo+IEknbGwgYWRkIHRoZSBNRU1fVE9fTUVNIGFzIHdlbGwgdG8gdGhlIGRvY3VtZW50YXRpb24u CgpPa2F5IGFuZCBsZXRzIG5vdCBpbXBsZW1lbnQgaXQgdGhlbi4uCgo+IAo+ID4+ICsgKgo+ID4+ ICsgKiBAREVTQ19NRVRBREFUQV9FTkdJTkUgLSB0aGUgbWV0YWRhdGEgYnVmZmVyIGlzIGFsbG9j YXRlZC9tYW5hZ2VkIGJ5IHRoZSBETUEKPiA+PiArICogIGRyaXZlci4gVGhlIGNsaWVudCBkcml2 ZXIgY2FuIGFzayBmb3IgdGhlIHBvaW50ZXIsIG1heGltdW0gc2l6ZSBhbmQgdGhlCj4gPj4gKyAq ICBjdXJyZW50bHkgdXNlZCBzaXplIG9mIHRoZSBtZXRhZGF0YSBhbmQgY2FuIGRpcmVjdGx5IHVw ZGF0ZSBvciByZWFkIGl0Lgo+ID4+ICsgKiAgZG1hZW5naW5lX2Rlc2NfZ2V0X21ldGFkYXRhX3B0 cigpIGFuZCBkbWFlbmdpbmVfZGVzY19zZXRfbWV0YWRhdGFfbGVuKCkgaXMKPiA+PiArICogIHBy b3ZpZGVkIGFzIGhlbHBlciBmdW5jdGlvbnMuCj4gPj4gKyAqCj4gPj4gKyAqIENsaWVudCBkcml2 ZXJzIGludGVyZXN0ZWQgdG8gdXNlIHRoaXMgbW9kZSBjYW4gZm9sbG93Ogo+ID4+ICsgKiAtIERN QV9NRU1fVE9fREVWOgo+ID4+ICsgKiAgIDEuIHByZXBhcmUgdGhlIGRlc2NyaXB0b3IgKGRtYWVu Z2luZV9wcmVwXyopCj4gPj4gKyAqICAgMi4gdXNlIGRtYWVuZ2luZV9kZXNjX2dldF9tZXRhZGF0 YV9wdHIoKSB0byBnZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGVuZ2luZSdzCj4gPj4gKyAqCW1ldGFk YXRhIGFyZWEKPiA+PiArICogICAzLiB1cGRhdGUgdGhlIG1ldGFkYXRhIGF0IHRoZSBwb2ludGVy Cj4gPj4gKyAqICAgNC4gdXNlIGRtYWVuZ2luZV9kZXNjX3NldF9tZXRhZGF0YV9sZW4oKSAgdG8g dGVsbCB0aGUgRE1BIGVuZ2luZSB0aGUgYW1vdW50Cj4gPj4gKyAqCW9mIGRhdGEgdGhlIGNsaWVu dCBoYXMgcGxhY2VkIGludG8gdGhlIG1ldGFkYXRhIGJ1ZmZlcgo+ID4+ICsgKiAgIDUuIHN1Ym1p dCB0aGUgdHJhbnNmZXIKPiA+PiArICogLSBETUFfREVWX1RPX01FTToKPiA+PiArICogICAxLiBw cmVwYXJlIHRoZSBkZXNjcmlwdG9yIChkbWFlbmdpbmVfcHJlcF8qKQo+ID4+ICsgKiAgIDIuIHN1 Ym1pdCB0aGUgdHJhbnNmZXIKPiA+PiArICogICAzLiBvbiB0cmFuc2ZlciBjb21wbGV0aW9uLCB1 c2UgZG1hZW5naW5lX2Rlc2NfZ2V0X21ldGFkYXRhX3B0cigpIHRvIGdldCB0aGUKPiA+PiArICoJ cG9pbnRlciB0byB0aGUgZW5naW5lJ3MgbWV0YWRhdGEgYXJlCj4gPj4gKyAqICAgNC4gUmVhZCBv dXQgdGhlIG1ldGFkYXRlIGZyb20gdGhlIHBvaW50ZXIKPiA+PiArICoKPiA+PiArICogTm90ZTog dGhlIHR3byBtb2RlIGlzIG5vdCBjb21wYXRpYmxlIGFuZCBjbGllbnRzIG11c3QgdXNlIG9uZSBt b2RlIGZvciBhCj4gPj4gKyAqIGRlc2NyaXB0b3IuCj4gPj4gKyAqLwo+ID4+ICtlbnVtIGRtYV9k ZXNjX21ldGFkYXRhX21vZGUgewo+ID4+ICsJREVTQ19NRVRBREFUQV9DTElFTlQgPSAoMSA8PCAw KSwKPiA+PiArCURFU0NfTUVUQURBVEFfRU5HSU5FID0gKDEgPDwgMSksCj4gPiAKPiA+IEJJVCh4 KQo+IAo+IE9LLCBJIGZvbGxvd2VkIHdoYXQgd2UgaGF2ZSBpbiB0aGUgaGVhZGVyIHRvIG5vdCBt aXggKDEgPDwgeCkgYW5kIEJJVCh4KQoKeWVhaCBsZXRzIHVwZGF0ZSA6KQoKPiAKPiA+IAo+ID4+ ICt9Owo+ID4+ICsKPiA+PiAgc3RydWN0IGRtYV9jaGFuX3BlcmNwdSB7Cj4gPj4gIAkvKiBzdGF0 cyAqLwo+ID4+ICAJdW5zaWduZWQgbG9uZyBtZW1jcHlfY291bnQ7Cj4gPj4gQEAgLTQ5NCw2ICs1 NDUsMTggQEAgc3RydWN0IGRtYWVuZ2luZV91bm1hcF9kYXRhIHsKPiA+PiAgCWRtYV9hZGRyX3Qg YWRkclswXTsKPiA+PiAgfTsKPiA+PiAgCj4gPj4gK3N0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3Jp cHRvcjsKPiA+PiArCj4gPj4gK3N0cnVjdCBkbWFfZGVzY3JpcHRvcl9tZXRhZGF0YV9vcHMgewo+ ID4+ICsJaW50ICgqYXR0YWNoKShzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRlc2Ms IHZvaWQgKmRhdGEsCj4gPj4gKwkJICAgICAgc2l6ZV90IGxlbik7Cj4gPj4gKwo+ID4+ICsJdm9p ZCAqKCpnZXRfcHRyKShzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRlc2MsCj4gPj4g KwkJCSBzaXplX3QgKnBheWxvYWRfbGVuLCBzaXplX3QgKm1heF9sZW4pOwo+ID4+ICsJaW50ICgq c2V0X2xlbikoc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkZXNjLAo+ID4+ICsJCSAg ICAgICBzaXplX3QgcGF5bG9hZF9sZW4pOwo+ID4+ICt9Owo+ID4+ICsKPiA+PiAgLyoqCj4gPj4g ICAqIHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAtIGFzeW5jIHRyYW5zYWN0aW9uIGRl c2NyaXB0b3IKPiA+PiAgICogLS0tZG1hIGdlbmVyaWMgb2ZmbG9hZCBmaWVsZHMtLS0KPiA+PiBA QCAtNTIzLDYgKzU4Niw4IEBAIHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciB7Cj4gPj4g IAlkbWFfYXN5bmNfdHhfY2FsbGJhY2tfcmVzdWx0IGNhbGxiYWNrX3Jlc3VsdDsKPiA+PiAgCXZv aWQgKmNhbGxiYWNrX3BhcmFtOwo+ID4+ICAJc3RydWN0IGRtYWVuZ2luZV91bm1hcF9kYXRhICp1 bm1hcDsKPiA+PiArCWVudW0gZG1hX2Rlc2NfbWV0YWRhdGFfbW9kZSBkZXNjX21ldGFkYXRhX21v ZGU7Cj4gPj4gKwlzdHJ1Y3QgZG1hX2Rlc2NyaXB0b3JfbWV0YWRhdGFfb3BzICptZXRhZGF0YV9v cHM7Cj4gCj4gSSBmb3Jnb3QgdG8gdXBkYXRlIHRoZSBjb21tZW50IHNlY3Rpb24gZm9yIHRoZSBk bWFfYXN5bmNfdHhfZGVzY3JpcHRvciwgSSdsbAo+IGFkZHJlc3MgaXQgaW4gdjIuCj4gCj4gPj4g ICNpZmRlZiBDT05GSUdfQVNZTkNfVFhfRU5BQkxFX0NIQU5ORUxfU1dJVENICj4gPj4gIAlzdHJ1 Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKm5leHQ7Cj4gPj4gIAlzdHJ1Y3QgZG1hX2FzeW5j X3R4X2Rlc2NyaXB0b3IgKnBhcmVudDsKPiA+PiBAQCAtNjg1LDYgKzc1MCw3IEBAIHN0cnVjdCBk bWFfZmlsdGVyIHsKPiA+PiAgICogQGdsb2JhbF9ub2RlOiBsaXN0X2hlYWQgZm9yIGdsb2JhbCBk bWFfZGV2aWNlX2xpc3QKPiA+PiAgICogQGZpbHRlcjogaW5mb3JtYXRpb24gZm9yIGRldmljZS9z bGF2ZSB0byBmaWx0ZXIgZnVuY3Rpb24vcGFyYW0gbWFwcGluZwo+ID4+ICAgKiBAY2FwX21hc2s6 IG9uZSBvciBtb3JlIGRtYV9jYXBhYmlsaXR5IGZsYWdzCj4gPj4gKyAqIEBkZXNjX21ldGFkYXRh X21vZGVzOiBzdXBwb3J0ZWQgbWV0YWRhdGEgbW9kZXMgYnkgdGhlIERNQSBkZXZpY2UKPiA+PiAg ICogQG1heF94b3I6IG1heGltdW0gbnVtYmVyIG9mIHhvciBzb3VyY2VzLCAwIGlmIG5vIGNhcGFi aWxpdHkKPiA+PiAgICogQG1heF9wcTogbWF4aW11bSBudW1iZXIgb2YgUFEgc291cmNlcyBhbmQg UFEtY29udGludWUgY2FwYWJpbGl0eQo+ID4+ICAgKiBAY29weV9hbGlnbjogYWxpZ25tZW50IHNo aWZ0IGZvciBtZW1jcHkgb3BlcmF0aW9ucwo+ID4+IEBAIC03NDksNiArODE1LDcgQEAgc3RydWN0 IGRtYV9kZXZpY2Ugewo+ID4+ICAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbm9kZTsKPiA+PiAg CXN0cnVjdCBkbWFfZmlsdGVyIGZpbHRlcjsKPiA+PiAgCWRtYV9jYXBfbWFza190ICBjYXBfbWFz azsKPiA+PiArCWVudW0gZG1hX2Rlc2NfbWV0YWRhdGFfbW9kZSBkZXNjX21ldGFkYXRhX21vZGVz Owo+ID4+ICAJdW5zaWduZWQgc2hvcnQgbWF4X3hvcjsKPiA+PiAgCXVuc2lnbmVkIHNob3J0IG1h eF9wcTsKPiA+PiAgCWVudW0gZG1hZW5naW5lX2FsaWdubWVudCBjb3B5X2FsaWduOwo+ID4+IEBA IC05MzUsNiArMTAwMiw4MyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVz Y3JpcHRvciAqZG1hZW5naW5lX3ByZXBfZG1hX21lbWNweSgKPiA+PiAgCQkJCQkJICAgIGxlbiwg ZmxhZ3MpOwo+ID4+ICB9Cj4gPj4gIAo+ID4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZG1hZW5naW5l X2lzX21ldGFkYXRhX21vZGVfc3VwcG9ydGVkKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwKPiA+PiAr CQllbnVtIGRtYV9kZXNjX21ldGFkYXRhX21vZGUgbW9kZSkKPiA+PiArewo+ID4+ICsJcmV0dXJu ICEhKGNoYW4tPmRldmljZS0+ZGVzY19tZXRhZGF0YV9tb2RlcyAmIG1vZGUpOwo+ID4+ICt9Cj4g Pj4gKwo+ID4+ICtzdGF0aWMgaW5saW5lIGludCBfZGVzY19jaGVja19hbmRfc2V0X21ldGFkYXRh X21vZGUoCj4gPiAKPiA+IHdoeSBkb2VzIHRoaXMgbmVlZCB0byBzdGFydCB3aXRoIF8gPwo+IAo+ IFRvIHNjYXJlIHBlb3BsZSB0byB1c2UgaW4gY2xpZW50IGNvZGUgOykKCkxldHMgbm90IGV4cG9z ZSB0byB0aGVtIDpECgo+IAo+ID4gCj4gPj4gKwlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0 b3IgKmRlc2MsIGVudW0gZG1hX2Rlc2NfbWV0YWRhdGFfbW9kZSBtb2RlKQo+ID4+ICt7Cj4gPj4g KwkvKiBNYWtlIHN1cmUgdGhhdCB0aGUgbWV0YWRhdGEgbW9kZSBpcyBub3QgbWl4ZWQgKi8KPiA+ PiArCWlmICghZGVzYy0+ZGVzY19tZXRhZGF0YV9tb2RlKSB7Cj4gPj4gKwkJaWYgKGRtYWVuZ2lu ZV9pc19tZXRhZGF0YV9tb2RlX3N1cHBvcnRlZChkZXNjLT5jaGFuLCBtb2RlKSkKPiA+PiArCQkJ ZGVzYy0+ZGVzY19tZXRhZGF0YV9tb2RlID0gbW9kZTsKPiA+PiArCQllbHNlCj4gPj4gKwkJCXJl dHVybiAtRU5PVFNVUFA7Cj4gPj4gKwl9IGVsc2UgaWYgKGRlc2MtPmRlc2NfbWV0YWRhdGFfbW9k ZSAhPSBtb2RlKSB7Cj4gPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ ICsJcmV0dXJuIDA7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbmxpbmUgaW50IGRtYWVu Z2luZV9kZXNjX2F0dGFjaF9tZXRhZGF0YSgKPiA+PiArCQlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rl c2NyaXB0b3IgKmRlc2MsIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pCj4gPj4gK3sKPiA+PiArCWlu dCByZXQ7Cj4gPj4gKwo+ID4+ICsJaWYgKCFkZXNjKQo+ID4+ICsJCXJldHVybiAtRUlOVkFMOwo+ ID4+ICsKPiA+PiArCXJldCA9IF9kZXNjX2NoZWNrX2FuZF9zZXRfbWV0YWRhdGFfbW9kZShkZXNj LCBERVNDX01FVEFEQVRBX0NMSUVOVCk7Cj4gPj4gKwlpZiAocmV0KQo+ID4+ICsJCXJldHVybiBy ZXQ7Cj4gPj4gKwo+ID4+ICsJaWYgKCFkZXNjLT5tZXRhZGF0YV9vcHMgfHwgIWRlc2MtPm1ldGFk YXRhX29wcy0+YXR0YWNoKQo+ID4+ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4gPj4gKwo+ID4+ICsJ cmV0dXJuIGRlc2MtPm1ldGFkYXRhX29wcy0+YXR0YWNoKGRlc2MsIGRhdGEsIGxlbik7Cj4gPj4g K30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCAqZG1hZW5naW5lX2Rlc2NfZ2V0X21l dGFkYXRhX3B0cigKPiA+PiArCQlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRlc2Ms IHNpemVfdCAqcGF5bG9hZF9sZW4sCj4gPj4gKwkJc2l6ZV90ICptYXhfbGVuKQo+ID4+ICt7Cj4g Pj4gKwlpbnQgcmV0Owo+ID4+ICsKPiA+PiArCWlmICghZGVzYykKPiA+PiArCQlyZXR1cm4gRVJS X1BUUigtRUlOVkFMKTsKPiA+PiArCj4gPj4gKwlyZXQgPSBfZGVzY19jaGVja19hbmRfc2V0X21l dGFkYXRhX21vZGUoZGVzYywgREVTQ19NRVRBREFUQV9FTkdJTkUpOwo+ID4+ICsJaWYgKHJldCkK PiA+PiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4+ICsKPiA+PiArCWlmICghZGVzYy0+bWV0 YWRhdGFfb3BzIHx8ICFkZXNjLT5tZXRhZGF0YV9vcHMtPmdldF9wdHIpCj4gPj4gKwkJcmV0dXJu IEVSUl9QVFIoLUVOT1RTVVBQKTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gZGVzYy0+bWV0YWRhdGFf b3BzLT5nZXRfcHRyKGRlc2MsIHBheWxvYWRfbGVuLCBtYXhfbGVuKTsKPiA+PiArfQo+ID4+ICsK PiA+PiArc3RhdGljIGlubGluZSBpbnQgZG1hZW5naW5lX2Rlc2Nfc2V0X21ldGFkYXRhX2xlbigK PiA+PiArCQlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRlc2MsIHNpemVfdCBwYXls b2FkX2xlbikKPiA+PiArewo+ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlpZiAoIWRlc2Mp Cj4gPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gX2Rlc2NfY2hlY2tf YW5kX3NldF9tZXRhZGF0YV9tb2RlKGRlc2MsIERFU0NfTUVUQURBVEFfRU5HSU5FKTsKPiA+PiAr CWlmIChyZXQpCj4gPj4gKwkJcmV0dXJuIHJldDsKPiA+PiArCj4gPj4gKwlpZiAoIWRlc2MtPm1l dGFkYXRhX29wcyB8fCAhZGVzYy0+bWV0YWRhdGFfb3BzLT5zZXRfbGVuKQo+ID4+ICsJCXJldHVy biAtRU5PVFNVUFA7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIGRlc2MtPm1ldGFkYXRhX29wcy0+c2V0 X2xlbihkZXNjLCBwYXlsb2FkX2xlbik7Cj4gPj4gK30KPiA+IAo+ID4gdGhhdHMgYml0IHRvbyBt dWNoIGNvZGUgZm9yIGEgaGVhZGVyIGZpbGUgOiggTGV0cyBtb3ZlIGl0IHRvIEMgZmlsZQo+ID4g cGxlYXNlLiBXZSBjYW4gdXRpbGl6ZSBsb2NhbCBkbWFlbmdpbmUuaCBhbmQgbm90IGV4cG9zZSBh bGwgdGhlc2UgYW5kCj4gPiBwb3NzaWJsZSBtaXN1c2UgYnkgY2xpZW50cwo+IAo+IE9LLCBJIGhh dmUgdGhvdWdodCBhYm91dCB0aGF0IGFzIHdlbGwuCj4gCj4gPiBBbHNvIEkgd291bGQgbGlrZSB0 byBzZWUgYSB1c2UgOi0pIGJlZm9yZSBmdXJ0aGVyIGNvbW1lbnRzLgo+IAo+IFlvdSBtZWFuIHRo ZSBETUEgZHJpdmVyIGFuZCBhdCBsZWFzdCBvbmUgY2xpZW50PwoKRE1BIGRyaXZlciB0byBfYXRf bGVhc3RfIHN0YXJ0IHdpdGguIENsaWVudCBldmVuIGJldHRlcgoKPiBJIGhhdmUgdGhlIERNQSBk cml2ZXIgaW4gbXkgcHVibGljIGZhY2luZyBicmFuY2ggWzFdLCBidXQgaXQgaXMgbm90IGFuIGVh c3kKPiByZWFkIHdpdGggaXQncyBjbG9zZSB0byA0ayBsb2MuCgpJdCBkb2VzbnQgZXhpc3QgOlAK Cj4gVGhlIGNsaWVudCBpcyBub3QgaW4gbXkgYnJhbmNoIGFuZCBpdCBpcyBhY3R1YWxseSB1c2lu ZyBhbiBvbGRlciB2ZXJzaW9uIG9mCj4gdGhlIG1ldGFkYXRhIHN1cHBvcnQuCj4gCj4gVGhlIHBy b2JsZW0gaXMgdGhhdCBJIGRvbid0IGtub3cgd2hlbiBJIHdpbGwgYmUgYWJsZSB0byBzZW5kIHRo ZSBkcml2ZXIgZm9yCj4gcmV2aWV3IGFzIGFsbCBvZiB0aGlzIGlzIHRhcmdldGluZyBhIGJyYW5k IG5ldyBTb0MgKEFNNjU0KSB3aXRoIGNvbXBsZXRlbHkgbmV3Cj4gZGF0YSBtb3ZlbWVudCBhcmNo aXRlY3R1cmUuIFRoZXJlIGFyZSBsb3RzIG9mIGRlcGVuZGVuY2llcyBzdGlsbCBuZWVkIHRvIGJl Cj4gdXBzdHJlYW1lZCBiZWZvcmUgSSBjYW4gc2VuZCBzb21ldGhpbmcgd2hpY2ggYXQgbGVhc3Qg Y29tcGlsZXMuCj4gCj4gSSBjYW4gb2ZmZXIgc25pcHBldHMgZnJvbSB0aGUgY2xpZW50IGRyaXZl ciwgaWYgdGhhdCBpcyBnb29kIGVub3VnaCBvciBhIGxpbmsKPiB0byB0aGUgcHVibGljIHRyZWUg d2hlcmUgaXQgY2FuIGJlIGFjY2Vzc2VkLCBidXQgaXQgaXMgbm90IGdvaW5nIHRvIGdvCj4gdXBz dHJlYW0gYmVmb3JlIHRoZSBETUEgZHJpdmVyLgoKVEJIIHRoYXQncyBub3QgZ29pbmcgdG8gaGVs cCBtdWNoLCBsZXRzIGNvbWUgYmFjayB0byBpdCB3aGVuIHlvdSBuZWVkCnRoaXMgdXBzdHJlYW0u Cg==