From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 2/7] drm: add syncobj timeline support v8 Date: Wed, 17 Oct 2018 17:17:24 +0800 Message-ID: <2066a18d-8002-014b-ef3c-a6f6014bdb55@amd.com> References: <20181015085553.30656-1-david1.zhou@amd.com> <20181015085553.30656-2-david1.zhou@amd.com> <20181017080908.GK31561@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181017080908.GK31561-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Daniel Vetter , Chunming Zhou Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Rakos , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, bas-dldO88ZXqoXqqjsSq9zF6IRWq/SkRNHw@public.gmane.org, Dave Airlie , Christian Konig List-Id: dri-devel@lists.freedesktop.org CgpPbiAyMDE45bm0MTDmnIgxN+aXpSAxNjowOSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBN b24sIE9jdCAxNSwgMjAxOCBhdCAwNDo1NTo0OFBNICswODAwLCBDaHVubWluZyBaaG91IHdyb3Rl Ogo+PiBUaGlzIHBhdGNoIGlzIGZvciBWS19LSFJfdGltZWxpbmVfc2VtYXBob3JlIGV4dGVuc2lv biwgc2VtYXBob3JlIGlzIGNhbGxlZCBzeW5jb2JqIGluIGtlcm5lbCBzaWRlOgo+PiBUaGlzIGV4 dGVuc2lvbiBpbnRyb2R1Y2VzIGEgbmV3IHR5cGUgb2Ygc3luY29iaiB0aGF0IGhhcyBhbiBpbnRl Z2VyIHBheWxvYWQKPj4gaWRlbnRpZnlpbmcgYSBwb2ludCBpbiBhIHRpbWVsaW5lLiBTdWNoIHRp bWVsaW5lIHN5bmNvYmpzIHN1cHBvcnQgdGhlCj4+IGZvbGxvd2luZyBvcGVyYXRpb25zOgo+PiAg ICAgKiBDUFUgcXVlcnkgLSBBIGhvc3Qgb3BlcmF0aW9uIHRoYXQgYWxsb3dzIHF1ZXJ5aW5nIHRo ZSBwYXlsb2FkIG9mIHRoZQo+PiAgICAgICB0aW1lbGluZSBzeW5jb2JqLgo+PiAgICAgKiBDUFUg d2FpdCAtIEEgaG9zdCBvcGVyYXRpb24gdGhhdCBhbGxvd3MgYSBibG9ja2luZyB3YWl0IGZvciBh Cj4+ICAgICAgIHRpbWVsaW5lIHN5bmNvYmogdG8gcmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCj4+ ICAgICAqIERldmljZSB3YWl0IC0gQSBkZXZpY2Ugb3BlcmF0aW9uIHRoYXQgYWxsb3dzIHdhaXRp bmcgZm9yIGEKPj4gICAgICAgdGltZWxpbmUgc3luY29iaiB0byByZWFjaCBhIHNwZWNpZmllZCB2 YWx1ZS4KPj4gICAgICogRGV2aWNlIHNpZ25hbCAtIEEgZGV2aWNlIG9wZXJhdGlvbiB0aGF0IGFs bG93cyBhZHZhbmNpbmcgdGhlCj4+ICAgICAgIHRpbWVsaW5lIHN5bmNvYmogdG8gYSBzcGVjaWZp ZWQgdmFsdWUuCj4+Cj4+IHYxOgo+PiBTaW5jZSBpdCdzIGEgdGltZWxpbmUsIHRoYXQgbWVhbnMg dGhlIGZyb250IHRpbWUgcG9pbnQoUFQpIGFsd2F5cyBpcyBzaWduYWxlZCBiZWZvcmUgdGhlIGxh dGUgUFQuCj4+IGEuIHNpZ25hbCBQVCBkZXNpZ246Cj4+IFNpZ25hbCBQVCBmZW5jZSBOIGRlcGVu ZHMgb24gUFRbTi0xXSBmZW5jZSBhbmQgc2lnbmFsIG9wZXJ0aW9uIGZlbmNlLCB3aGVuIFBUW05d IGZlbmNlIGlzIHNpZ25hbGVkLAo+PiB0aGUgdGltZWxpbmUgd2lsbCBpbmNyZWFzZSB0byB2YWx1 ZSBvZiBQVFtOXS4KPj4gYi4gd2FpdCBQVCBkZXNpZ246Cj4+IFdhaXQgUFQgZmVuY2UgaXMgc2ln bmFsZWQgYnkgcmVhY2hpbmcgdGltZWxpbmUgcG9pbnQgdmFsdWUsIHdoZW4gdGltZWxpbmUgaXMg aW5jcmVhc2luZywgd2lsbCBjb21wYXJlCj4+IHdhaXQgUFRzIHZhbHVlIHdpdGggbmV3IHRpbWVs aW5lIHZhbHVlLCBpZiBQVCB2YWx1ZSBpcyBsb3dlciB0aGFuIHRpbWVsaW5lIHZhbHVlLCB0aGVu IHdhaXQgUFQgd2lsbCBiZQo+PiBzaWduYWxlZCwgb3RoZXJ3aXNlIGtlZXAgaW4gbGlzdC4gc3lu Y29iaiB3YWl0IG9wZXJhdGlvbiBjYW4gd2FpdCBvbiBhbnkgcG9pbnQgb2YgdGltZWxpbmUsCj4+ IHNvIG5lZWQgYSBSQiB0cmVlIHRvIG9yZGVyIHRoZW0uIEFuZCB3YWl0IFBUIGNvdWxkIGFoZWFk IG9mIHNpZ25hbCBQVCwgd2UgbmVlZCBhIHN1bWlzc2lvbiBmZW5jZSB0bwo+PiBwZXJmb3JtIHRo YXQuCj4+Cj4+IHYyOgo+PiAxLiByZW1vdmUgdW51c2VkIERSTV9TWU5DT0JKX0NSRUFURV9UWVBF X05PUk1BTC4gKENocmlzdGlhbikKPj4gMi4gbW92ZSB1bmV4cG9zZWQgZGVuaXRpb25zIHRvIC5j IGZpbGUuIChEYW5pZWwgVmV0dGVyKQo+PiAzLiBzcGxpdCB1cCB0aGUgY2hhbmdlIHRvIGRybV9z eW5jb2JqX2ZpbmRfZmVuY2UoKSBpbiBhIHNlcGFyYXRlIHBhdGNoLiAoQ2hyaXN0aWFuKQo+PiA0 LiBzcGxpdCB1cCB0aGUgY2hhbmdlIHRvIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UoKSBpbiBh IHNlcGFyYXRlIHBhdGNoLgo+PiA1LiBkcm9wIHRoZSBzdWJtaXNzaW9uX2ZlbmNlIGltcGxlbWVu dGF0aW9uIGFuZCBpbnN0ZWFkIHVzZSB3YWl0X2V2ZW50KCkgZm9yIHRoYXQuIChDaHJpc3RpYW4p Cj4+IDYuIFdBUk5fT04ocG9pbnQgIT0gMCkgZm9yIE5PUk1BTCB0eXBlIHN5bmNvYmogY2FzZS4g KERhbmllbCBWZXR0ZXIpCj4+Cj4+IHYzOgo+PiAxLiByZXBsYWNlIG5vcm1hbCBzeW5jb2JqIHdp dGggdGltZWxpbmUgaW1wbGVtZW5hdGlvbi4gKFZldHRlciBhbmQgQ2hyaXN0aWFuKQo+PiAgICAg IGEuIG5vcm1hbCBzeW5jb2JqIHNpZ25hbCBvcCB3aWxsIGNyZWF0ZSBhIHNpZ25hbCBQVCB0byB0 YWlsIG9mIHNpZ25hbCBwdCBsaXN0Lgo+PiAgICAgIGIuIG5vcm1hbCBzeW5jb2JqIHdhaXQgb3Ag d2lsbCBjcmVhdGUgYSB3YWl0IHB0IHdpdGggbGFzdCBzaWduYWwgcG9pbnQsIGFuZCB0aGlzIHdh aXQgUFQgaXMgb25seSBzaWduYWxlZCBieSByZWxhdGVkIHNpZ25hbCBwb2ludCBQVC4KPj4gMi4g bWFueSBidWcgZml4IGFuZCBjbGVhbiB1cAo+PiAzLiBzdHViIGZlbmNlIG1vdmluZyBpcyBtb3Zl ZCB0byBvdGhlciBwYXRjaC4KPj4KPj4gdjTvvJoKPj4gMS4gZml4IFJCIHRyZWUgbG9vcCB3aXRo IHdoaWxlKG5vZGU9cmJfZmlyc3QoLi4uKSkuIChDaHJpc3RpYW4pCj4+IDIuIGZpeCBzeW5jb2Jq IGxpZmVjeWNsZS4gKENocmlzdGlhbikKPj4gMy4gb25seSBlbmFibGVfc2lnbmFsaW5nIHdoZW4g dGhlcmUgaXMgd2FpdF9wdC4gKENocmlzdGlhbikKPj4gNC4gZml4IHRpbWVsaW5lIHBhdGggaXNz dWVzLgo+PiA1LiB3cml0ZSBhIHRpbWVsaW5lIHRlc3QgaW4gbGliZHJtCj4+Cj4+IHY1OiAoQ2hy aXN0aWFuKQo+PiAxLiBzZW1hcGhvcmUgaXMgY2FsbGVkIHN5bmNvYmogaW4ga2VybmVsIHNpZGUu Cj4+IDIuIGRvbid0IG5lZWQgJ3RpbWVsaW5lJyBjaGFyYWN0ZXJzIGluIHNvbWUgZnVuY3Rpb24g bmFtZS4KPj4gMy4ga2VlcCBzeW5jb2JqIGNiLgo+Pgo+PiB2NjogKENocmlzdGlhbikKPj4gMS4g bWVyZ2Ugc3luY29ial90aW1lbGluZSB0byBzeW5jb2JqIHN0cnVjdHVyZS4KPj4gMi4gc2ltcGxp Znkgc29tZSBjaGVjayBzZW50ZW5jZXMuCj4+IDMuIHNvbWUgbWlzYyBjaGFuZ2UuCj4+IDQuIGZp eCBDVFMgZmFpbGVkIGlzc3VlLgo+Pgo+PiB2NzogKENocmlzdGlhbikKPj4gMS4gZXJyb3IgaGFu ZGxpbmcgd2hlbiBjcmVhdGluZyBzaWduYWwgcHQuCj4+IDIuIHJlbW92ZSB0aW1lbGluZSBuYW1p bmcgaW4gZnVuYy4KPj4gMy4gZXhwb3J0IGZsYWdzIGluIGZpbmRfZmVuY2UuCj4+IDQuIGFsbG93 IHJlc2V0IHRpbWVsaW5lLgo+Pgo+PiB2ODoKPj4gMS4gdXNlIHdhaXRfZXZlbnRfaW50ZXJydXB0 aWJsZSB3aXRob3V0IHRpbWVvdXQKPj4gMi4gcmVuYW1lIF9UWVBFX0lORElWSURVQUwgdG8gX1RZ UEVfQklOQVJZCj4+Cj4+IGluZGl2aWR1YWwgc3luY29iaiBpcyB0ZXN0ZWQgYnkgLi9kZXFwLXZr IC1uIGRFUVAtVksqc2VtYXBob3JlKgo+PiB0aW1lbGluZSBzeW5jb2JqIGlzIHRlc3RlZCBieSAu L2FtZGdwdV90ZXN0IC1zIDkKPiBDYW4gd2UgcGxlYXNlIGhhdmUgdGhlc2UgbG93LWxldmVsIHN5 bmNvYmogdGVzdHMgYXMgcGFydCBvZiBpZ3QsIHRvZ2V0aGVyCj4gd2l0aCBhbGwgdGhlIG90aGVy IHN5bmNvYmogdGVzdHMgd2hpY2ggYXJlIHRoZXJlIGFscmVhZHk/Ckdvb2Qgc3VnZ2VzdGlvbiBm aXJzdCwgSSdtIGp1c3Qgbm90IGZhbWlsaWFyIHdpdGggaWd0KCBidWlsZCwgcnVuIApjbWQuLi4p LCBtYXliZSB3ZSBjYW4gYWRkIGl0IGxhdGVyLgoKPiBSZWFsbHkgZG9lc24ndAo+IG1ha2UgbXVj aCBzZW5zZSBpbW8gdG8gc3BsaXRzIHRoaW5ncyBvbiB0aGUgdGVzdCBzdWl0ZSBmcm9udC4KPj4g U2lnbmVkLW9mZi1ieTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KPj4gQ2M6 IENocmlzdGlhbiBLb25pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+PiBDYzogRGF2ZSBB aXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPj4gQ2M6IERhbmllbCBSYWtvcyA8RGFuaWVsLlJh a29zQGFtZC5jb20+Cj4+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4+IFJl dmlld2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+ IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jICAgICAgICAgICAgICB8IDI4 NyArKysrKysrKysrKysrKysrKystLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMgfCAgIDIgKy0KPj4gICBpbmNsdWRlL2RybS9kcm1fc3luY29iai5oICAg ICAgICAgICAgICAgICAgfCAgNjUgKystLS0KPj4gICBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMjgxIGluc2Vy dGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwo+PiBpbmRl eCBmNzk2YzlmYzM4NTguLjY3NDcyYmQ3N2M4MyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9zeW5jb2JqLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMK Pj4gQEAgLTU2LDYgKzU2LDkgQEAKPj4gICAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCj4+ICAg I2luY2x1ZGUgPGRybS9kcm1fc3luY29iai5oPgo+PiAgIAo+PiArLyogbWVyZ2Ugbm9ybWFsIHN5 bmNvYmogdG8gdGltZWxpbmUgc3luY29iaiwgdGhlIHBvaW50IGludGVydmFsIGlzIDEgKi8KPj4g KyNkZWZpbmUgRFJNX1NZTkNPQkpfQklOQVJZX1BPSU5UIDEKPj4gKwo+PiAgIHN0cnVjdCBkcm1f c3luY29ial9zdHViX2ZlbmNlIHsKPj4gICAJc3RydWN0IGRtYV9mZW5jZSBiYXNlOwo+PiAgIAlz cGlubG9ja190IGxvY2s7Cj4+IEBAIC04Miw2ICs4NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGRtYV9mZW5jZV9vcHMgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9vcHMgPSB7Cj4+ICAgCS5yZWxl YXNlID0gZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9yZWxlYXNlLAo+PiAgIH07Cj4+ICAgCj4+ICtz dHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0IHsKPj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2FycmF5 ICpiYXNlOwo+IE91dCBvZiBjdXJpb3NpdHksIHdoeSB0aGUgcG9pbnRlciBhbmQgbm90IGVtYmVk ZGluZz8gYmFzZSBpcyBraW5kYQo+IG1pc2xlYWRpbmcgZm9yIGEgcG9pbnRlci4KWWVhaCwgQ2hy aXN0aWFuIGRvZXNuJ3QgbGlrZSBzaWduYWxfcHQgbGlmZWN5Y2xlIHNhbWUgYXMgZmVuY2UsIHNv IGl0J3MgCmEgcG9pbnRlci4KSWYgeW91IGRvbid0IGxpa2UgJ2Jhc2UnIG5hbWUsIEkgY2FuIGNo YW5nZSBpdC4KCj4KPj4gKwl1NjQgICAgdmFsdWU7Cj4+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0 Owo+PiArfTsKPj4gICAKPj4gICAvKioKPj4gICAgKiBkcm1fc3luY29ial9maW5kIC0gbG9va3Vw IGFuZCByZWZlcmVuY2UgYSBzeW5jIG9iamVjdC4KPj4gQEAgLTEyNCw4ICsxMzIsOCBAQCBzdGF0 aWMgaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldF9vcl9hZGRfY2FsbGJhY2soc3RydWN0IGRybV9z eW5jb2JqICpzeW5jb2JqLAo+PiAgIHsKPj4gICAJaW50IHJldDsKPj4gICAKPj4gLQkqZmVuY2Ug PSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7Cj4+IC0JaWYgKCpmZW5jZSkKPj4gKwly ZXQgPSBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgZmVuY2UpOwo+PiAr CWlmICghcmV0KQo+PiAgIAkJcmV0dXJuIDE7Cj4+ICAgCj4+ICAgCXNwaW5fbG9jaygmc3luY29i ai0+bG9jayk7Cj4+IEBAIC0xMzMsMTAgKzE0MSwxMiBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2Jq X2ZlbmNlX2dldF9vcl9hZGRfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAo+ PiAgIAkgKiBoYXZlIHRoZSBsb2NrLCB0cnkgb25lIG1vcmUgdGltZSBqdXN0IHRvIGJlIHN1cmUg d2UgZG9uJ3QgYWRkIGEKPj4gICAJICogY2FsbGJhY2sgd2hlbiBhIGZlbmNlIGhhcyBhbHJlYWR5 IGJlZW4gc2V0Lgo+PiAgIAkgKi8KPj4gLQlpZiAoc3luY29iai0+ZmVuY2UpIHsKPj4gLQkJKmZl bmNlID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNvYmotPmZl bmNlLAo+PiAtCQkJCQkJCQkgbG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5sb2NrKSkpOwo+PiAt CQlyZXQgPSAxOwo+PiArCWlmICghbGlzdF9lbXB0eSgmc3luY29iai0+c2lnbmFsX3B0X2xpc3Qp KSB7Cj4+ICsJCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4gKwkJZHJtX3N5bmNvYmpf c2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsIGZlbmNlKTsKPj4gKwkJaWYgKCpmZW5jZSkKPj4g KwkJCXJldHVybiAxOwo+PiArCQlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+PiAgIAl9IGVs c2Ugewo+PiAgIAkJKmZlbmNlID0gTlVMTDsKPj4gICAJCWRybV9zeW5jb2JqX2FkZF9jYWxsYmFj a19sb2NrZWQoc3luY29iaiwgY2IsIGZ1bmMpOwo+PiBAQCAtMTY0LDYgKzE3NCwxNTkgQEAgdm9p ZCBkcm1fc3luY29ial9yZW1vdmVfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2Jq LAo+PiAgIAlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4+ICAgfQo+PiAgIAo+PiArc3Rh dGljIHZvaWQgZHJtX3N5bmNvYmpfaW5pdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4+ ICt7Cj4+ICsJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4gKwlzeW5jb2JqLT50aW1lbGlu ZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Cj4+ICsJc3luY29iai0+dGlt ZWxpbmUgPSAwOwo+PiArCXN5bmNvYmotPnNpZ25hbF9wb2ludCA9IDA7Cj4+ICsJaW5pdF93YWl0 cXVldWVfaGVhZCgmc3luY29iai0+d3EpOwo+PiArCj4+ICsJSU5JVF9MSVNUX0hFQUQoJnN5bmNv YmotPnNpZ25hbF9wdF9saXN0KTsKPj4gKwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGRybV9zeW5jb2JqX2Zpbmkoc3RydWN0IGRybV9zeW5j b2JqICpzeW5jb2JqKQo+PiArewo+PiArCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNp Z25hbF9wdCA9IE5VTEwsICp0bXA7Cj4+ICsKPj4gKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2sp Owo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzaWduYWxfcHQsIHRtcCwKPj4gKwkJCQkg JnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LCBsaXN0KSB7Cj4+ICsJCWxpc3RfZGVsKCZzaWduYWxf cHQtPmxpc3QpOwo+PiArCQlkbWFfZmVuY2VfcHV0KCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpOwo+ PiArCQlrZnJlZShzaWduYWxfcHQpOwo+PiArCX0KPj4gKwlzcGluX3VubG9jaygmc3luY29iai0+ bG9jayk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlCj4+ICsqZHJtX3N5 bmNvYmpfZmluZF9zaWduYWxfcHRfZm9yX3BvaW50KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29i aiwKPj4gKwkJCQkgICAgICB1aW50NjRfdCBwb2ludCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX3N5 bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQ7Cj4+ICsKPj4gKwlpZiAoKHN5bmNvYmotPnR5cGUg PT0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgJiYKPj4gKwkgICAgKHBvaW50IDw9IHN5bmNv YmotPnRpbWVsaW5lKSkgewo+PiArCQlzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSAqZmVu Y2UgPQo+PiArCQkJa3phbGxvYyhzaXplb2Yoc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2Up LAo+PiArCQkJCUdGUF9LRVJORUwpOwo+PiArCj4+ICsJCWlmICghZmVuY2UpCj4+ICsJCQlyZXR1 cm4gTlVMTDsKPj4gKwkJc3Bpbl9sb2NrX2luaXQoJmZlbmNlLT5sb2NrKTsKPj4gKwkJZG1hX2Zl bmNlX2luaXQoJmZlbmNlLT5iYXNlLAo+PiArCQkJICAgICAgICZkcm1fc3luY29ial9zdHViX2Zl bmNlX29wcywKPj4gKwkJCSAgICAgICAmZmVuY2UtPmxvY2ssCj4+ICsJCQkgICAgICAgc3luY29i ai0+dGltZWxpbmVfY29udGV4dCwKPj4gKwkJCSAgICAgICBwb2ludCk7Cj4+ICsKPj4gKwkJZG1h X2ZlbmNlX3NpZ25hbCgmZmVuY2UtPmJhc2UpOwo+PiArCQlyZXR1cm4gJmZlbmNlLT5iYXNlOwo+ PiArCX0KPj4gKwo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoc2lnbmFsX3B0LCAmc3luY29iai0+ c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsKPj4gKwkJaWYgKHBvaW50ID4gc2lnbmFsX3B0LT52YWx1 ZSkKPj4gKwkJCWNvbnRpbnVlOwo+PiArCQlpZiAoKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNP QkpfVFlQRV9CSU5BUlkpICYmCj4+ICsJCSAgICAocG9pbnQgIT0gc2lnbmFsX3B0LT52YWx1ZSkp Cj4+ICsJCQljb250aW51ZTsKPj4gKwkJcmV0dXJuIGRtYV9mZW5jZV9nZXQoJnNpZ25hbF9wdC0+ YmFzZS0+YmFzZSk7Cj4+ICsJfQo+PiArCXJldHVybiBOVUxMOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW50IGRybV9zeW5jb2JqX2NyZWF0ZV9zaWduYWxfcHQoc3RydWN0IGRybV9zeW5jb2JqICpz eW5jb2JqLAo+PiArCQkJCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwKPj4gKwkJCQkJdTY0IHBv aW50KQo+PiArewo+PiArCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdCA9 Cj4+ICsJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQpLCBHRlBf S0VSTkVMKTsKPj4gKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICp0YWlsX3B0Owo+PiAr CXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXM7Cj4+ICsJaW50IG51bV9mZW5jZXMgPSAwOwo+PiAr CWludCByZXQgPSAwLCBpOwo+PiArCj4+ICsJaWYgKCFzaWduYWxfcHQpCj4+ICsJCXJldHVybiAt RU5PTUVNOwo+PiArCWlmICghZmVuY2UpCj4+ICsJCWdvdG8gb3V0Owo+PiArCj4+ICsJZmVuY2Vz ID0ga21hbGxvY19hcnJheShzaXplb2Yodm9pZCAqKSwgMiwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYg KCFmZW5jZXMpIHsKPj4gKwkJcmV0ID0gLUVOT01FTTsKPj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+ PiArCWZlbmNlc1tudW1fZmVuY2VzKytdID0gZG1hX2ZlbmNlX2dldChmZW5jZSk7Cj4+ICsJLyog dGltZWxpbmUgc3luY29iaiBtdXN0IHRha2UgdGhpcyBkZXBlbmRlbmN5ICovCj4+ICsJaWYgKHN5 bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgewo+PiArCQlzcGluX2xv Y2soJnN5bmNvYmotPmxvY2spOwo+PiArCQlpZiAoIWxpc3RfZW1wdHkoJnN5bmNvYmotPnNpZ25h bF9wdF9saXN0KSkgewo+PiArCQkJdGFpbF9wdCA9IGxpc3RfbGFzdF9lbnRyeSgmc3luY29iai0+ c2lnbmFsX3B0X2xpc3QsCj4+ICsJCQkJCQkgIHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQs IGxpc3QpOwo+PiArCQkJZmVuY2VzW251bV9mZW5jZXMrK10gPSBkbWFfZmVuY2VfZ2V0KCZ0YWls X3B0LT5iYXNlLT5iYXNlKTsKPj4gKwkJfQo+PiArCQlzcGluX3VubG9jaygmc3luY29iai0+bG9j ayk7Cj4+ICsJfQo+PiArCXNpZ25hbF9wdC0+YmFzZSA9IGRtYV9mZW5jZV9hcnJheV9jcmVhdGUo bnVtX2ZlbmNlcywgZmVuY2VzLAo+PiArCQkJCQkJIHN5bmNvYmotPnRpbWVsaW5lX2NvbnRleHQs Cj4+ICsJCQkJCQkgcG9pbnQsIGZhbHNlKTsKPj4gKwlpZiAoIXNpZ25hbF9wdC0+YmFzZSkgewo+ PiArCQlyZXQgPSAtRU5PTUVNOwo+PiArCQlnb3RvIGZhaWw7Cj4+ICsJfQo+PiArCj4+ICsJc3Bp bl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4gKwlpZiAoc3luY29iai0+c2lnbmFsX3BvaW50ID49 IHBvaW50KSB7Cj4+ICsJCURSTV9XQVJOKCJBIGxhdGVyIHNpZ25hbCBpcyByZWFkeSEiKTsKPj4g KwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+PiArCQlnb3RvIGV4aXN0Owo+PiArCX0K Pj4gKwlzaWduYWxfcHQtPnZhbHVlID0gcG9pbnQ7Cj4+ICsJbGlzdF9hZGRfdGFpbCgmc2lnbmFs X3B0LT5saXN0LCAmc3luY29iai0+c2lnbmFsX3B0X2xpc3QpOwo+PiArCXN5bmNvYmotPnNpZ25h bF9wb2ludCA9IHBvaW50Owo+PiArCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4gKwl3 YWtlX3VwX2FsbCgmc3luY29iai0+d3EpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICtleGlzdDoK Pj4gKwlkbWFfZmVuY2VfcHV0KCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpOwo+PiArZmFpbDoKPj4g Kwlmb3IgKGkgPSAwOyBpIDwgbnVtX2ZlbmNlczsgaSsrKQo+PiArCQlkbWFfZmVuY2VfcHV0KGZl bmNlc1tpXSk7Cj4+ICsJa2ZyZWUoZmVuY2VzKTsKPj4gK291dDoKPj4gKwlrZnJlZShzaWduYWxf cHQpOwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGRybV9zeW5j b2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4+ICt7 Cj4+ICsJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0LCAqdG1wLCAqdGFp bF9wdDsKPj4gKwo+PiArCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4+ICsJdGFpbF9wdCA9 IGxpc3RfbGFzdF9lbnRyeSgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QsCj4+ICsJCQkJICBzdHJ1 Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0LAo+PiArCQkJCSAgbGlzdCk7Cj4+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAo+PiArCQkJCSAmc3luY29iai0+c2lnbmFs X3B0X2xpc3QsIGxpc3QpIHsKPj4gKwkJaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpf VFlQRV9CSU5BUlkgJiYKPj4gKwkJICAgIHNpZ25hbF9wdCA9PSB0YWlsX3B0KQo+PiArCQkJY29u dGludWU7Cj4+ICsJCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFsZWQoJnNpZ25hbF9wdC0+YmFzZS0+ YmFzZSkpIHsKPj4gKwkJCXN5bmNvYmotPnRpbWVsaW5lID0gc2lnbmFsX3B0LT52YWx1ZTsKPj4g KwkJCWxpc3RfZGVsKCZzaWduYWxfcHQtPmxpc3QpOwo+PiArCQkJZG1hX2ZlbmNlX3B1dCgmc2ln bmFsX3B0LT5iYXNlLT5iYXNlKTsKPj4gKwkJCWtmcmVlKHNpZ25hbF9wdCk7Cj4+ICsJCX0gZWxz ZSB7Cj4+ICsJCQkvKnNpZ25hbF9wdCBpcyBpbiBvcmRlciBpbiBsaXN0LCBmcm9tIHNtYWxsIHRv IGJpZywgc28KPj4gKwkJCSAqIHRoZSBsYXRlciBtdXN0IG5vdCBiZSBzaWduYWwgZWl0aGVyICov Cj4+ICsJCQlicmVhazsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCXNwaW5fdW5sb2NrKCZzeW5j b2JqLT5sb2NrKTsKPj4gK30KPj4gICAvKioKPj4gICAgKiBkcm1fc3luY29ial9yZXBsYWNlX2Zl bmNlIC0gcmVwbGFjZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0Lgo+PiAgICAqIEBzeW5jb2JqOiBT eW5jIG9iamVjdCB0byByZXBsYWNlIGZlbmNlIGluCj4+IEBAIC0xNzYsMjggKzMzOSwyOSBAQCB2 b2lkIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2Jq LAo+PiAgIAkJCSAgICAgICB1NjQgcG9pbnQsCj4+ICAgCQkJICAgICAgIHN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlKQo+PiAgIHsKPj4gLQlzdHJ1Y3QgZG1hX2ZlbmNlICpvbGRfZmVuY2U7Cj4+IC0J c3RydWN0IGRybV9zeW5jb2JqX2NiICpjdXIsICp0bXA7Cj4+IC0KPj4gLQlpZiAoZmVuY2UpCj4+ IC0JCWRtYV9mZW5jZV9nZXQoZmVuY2UpOwo+PiAtCj4+IC0Jc3Bpbl9sb2NrKCZzeW5jb2JqLT5s b2NrKTsKPj4gLQo+PiAtCW9sZF9mZW5jZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc3lu Y29iai0+ZmVuY2UsCj4+IC0JCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9j aykpOwo+PiAtCXJjdV9hc3NpZ25fcG9pbnRlcihzeW5jb2JqLT5mZW5jZSwgZmVuY2UpOwo+PiAr CXU2NCBwdF92YWx1ZSA9IHBvaW50Owo+PiArCj4+ICsJZHJtX3N5bmNvYmpfZ2FyYmFnZV9jb2xs ZWN0aW9uKHN5bmNvYmopOwo+PiArCWlmIChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZ UEVfQklOQVJZKSB7Cj4+ICsJCWlmICghZmVuY2UpIHsKPj4gKwkJCWRybV9zeW5jb2JqX2Zpbmko c3luY29iaik7Cj4+ICsJCQlkcm1fc3luY29ial9pbml0KHN5bmNvYmopOwo+PiArCQkJcmV0dXJu Owo+PiArCQl9Cj4+ICsJCXB0X3ZhbHVlID0gc3luY29iai0+c2lnbmFsX3BvaW50ICsKPj4gKwkJ CURSTV9TWU5DT0JKX0JJTkFSWV9QT0lOVDsKPj4gKwl9Cj4+ICsJZHJtX3N5bmNvYmpfY3JlYXRl X3NpZ25hbF9wdChzeW5jb2JqLCBmZW5jZSwgcHRfdmFsdWUpOwo+PiArCWlmIChmZW5jZSkgewo+ PiArCQlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmN1ciwgKnRtcDsKPj4gICAKPj4gLQlpZiAoZmVu Y2UgIT0gb2xkX2ZlbmNlKSB7Cj4+ICsJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4+ICAg CQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0bXAsICZzeW5jb2JqLT5jYl9saXN0LCBu b2RlKSB7Cj4+ICAgCQkJbGlzdF9kZWxfaW5pdCgmY3VyLT5ub2RlKTsKPj4gICAJCQljdXItPmZ1 bmMoc3luY29iaiwgY3VyKTsKPj4gICAJCX0KPj4gKwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxv Y2spOwo+PiAgIAl9Cj4+IC0KPj4gLQlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4+IC0K Pj4gLQlkbWFfZmVuY2VfcHV0KG9sZF9mZW5jZSk7Cj4+ICAgfQo+PiAgIEVYUE9SVF9TWU1CT0wo ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSk7Cj4+ICAgCj4+IEBAIC0yMjAsNiArMzg0LDQ2IEBA IHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3lu Y29iaiAqc3luY29iaikKPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+PiArc3RhdGljIGlu dAo+PiArZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwg dTY0IHBvaW50LCB1NjQgZmxhZ3MsCj4+ICsJCSAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5j ZSkKPj4gK3sKPj4gKwlpbnQgcmV0ID0gMDsKPj4gKwo+PiArCWlmIChmbGFncyAmIERSTV9TWU5D T0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7Cj4+ICsJCXJldCA9IHdhaXRfZXZlbnRf aW50ZXJydXB0aWJsZShzeW5jb2JqLT53cSwKPj4gKwkJCQkJICAgICAgIHBvaW50IDw9IHN5bmNv YmotPnNpZ25hbF9wb2ludCk7Cj4+ICsJCWlmIChyZXQgPCAwKQo+PiArCQkJcmV0dXJuIHJldDsK Pj4gKwl9Cj4+ICsJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4gKwkqZmVuY2UgPSBkcm1f c3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3luY29iaiwgcG9pbnQpOwo+PiArCWlm ICghKmZlbmNlKQo+PiArCQlyZXQgPSAtRUlOVkFMOwo+PiArCXNwaW5fdW5sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtpbnQgZHJtX3N5bmNvYmpf c2VhcmNoX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LAo+PiAr CQkJICAgICB1NjQgZmxhZ3MsIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPiBLZXJuZWxkb2Mg aXMgbWlzc2luZyBmb3IgdGhpcyBvbmUgaGVyZS4KSXQncyBhbG1vc3Qgc2FtZSBhcyBkcm1fc3lu Y29ial9maW5kX2ZlbmNlLCBpcyBpdCBzdGlsbCBuZWNlc3Nhcnk/Cgo+Cj4gSSBhbHNvIHRoaW5r IGltcHJvdmluZyB0aGUgb3ZlcnZpZXcgY29tbWVudCB0byBleHBsYWluIHRoZSB0aW1lbGluZSBz dHVmZiwKPiBlLmcuIGxpbmsgdG8gdGhlIHZ1bGthbiBleHRlbnNpb24sIGFuZCBzb21lIHdvcmRz IG9uIGhvdyBpdCdzIHN1cHBvc2VkIHRvCj4gYmUgdXNlZCAoeW91IG5lZWQgYSBzdWJtaXQgdGhy ZWFkIGFuZCBibG9jayBpbiB1c2Vyc3BhY2UgdW50aWwgYWxsIGZ1dHVyZQo+IHRpbWVsaW5lIHBv aW50cyBoYXZlIG1hdGVyaWFsaXplZCwgb25seSB0aGVuIHlvdSBjYW4gc3VibWl0IHRvIHRoZQo+ IGtlcm5lbCkuCj4KPj4gK3sKPj4gKwl1NjQgcHRfdmFsdWUgPSBwb2ludDsKPj4gKwo+PiArCWlm ICghc3luY29iaikKPj4gKwkJcmV0dXJuIC1FTk9FTlQ7Cj4+ICsKPj4gKwlkcm1fc3luY29ial9n YXJiYWdlX2NvbGxlY3Rpb24oc3luY29iaik7Cj4+ICsJaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJN X1NZTkNPQkpfVFlQRV9CSU5BUlkpIHsKPj4gKwkJLypCSU5BUlkgc3luY29iaiBhbHdheXMgd2Fp dCBvbiBsYXN0IHB0ICovCj4+ICsJCXB0X3ZhbHVlID0gc3luY29iai0+c2lnbmFsX3BvaW50Owo+ PiArCj4+ICsJCWlmIChwdF92YWx1ZSA9PSAwKQo+PiArCQkJcHRfdmFsdWUgKz0gRFJNX1NZTkNP QkpfQklOQVJZX1BPSU5UOwo+PiArCX0KPj4gKwlyZXR1cm4gZHJtX3N5bmNvYmpfcG9pbnRfZ2V0 KHN5bmNvYmosIHB0X3ZhbHVlLCBmbGFncywgZmVuY2UpOwo+PiArfQo+PiArRVhQT1JUX1NZTUJP TChkcm1fc3luY29ial9zZWFyY2hfZmVuY2UpOwo+PiArCj4+ICAgLyoqCj4+ICAgICogZHJtX3N5 bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1cCBhbmQgcmVmZXJlbmNlIHRoZSBmZW5jZSBpbiBhIHN5 bmMgb2JqZWN0Cj4+ICAgICogQGZpbGVfcHJpdmF0ZTogZHJtIGZpbGUgcHJpdmF0ZSBwb2ludGVy Cj4+IEBAIC0yMjgsNyArNDMyLDcgQEAgc3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVs bF9oYW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQo+PiAgICAqIEBmZW5jZTogb3V0 IHBhcmFtZXRlciBmb3IgdGhlIGZlbmNlCj4+ICAgICoKPj4gICAgKiBUaGlzIGlzIGp1c3QgYSBj b252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGRybV9zeW5jb2JqX2ZpbmQoKSBhbmQK Pj4gLSAqIGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpLgo+PiArICogZHJtX3N5bmNvYmpfbG9va3Vw X2ZlbmNlKCkuCj4+ICAgICoKPj4gICAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0 aXZlIGVycm9yIHZhbHVlIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MgQGZlbmNlCj4+ICAgICogY29u dGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGZlbmNlLCB3aGljaCBtdXN0IGJlIHJlbGVhc2VkIGJ5 IGNhbGxpbmcKPj4gQEAgLTIzOSwxNSArNDQzLDkgQEAgaW50IGRybV9zeW5jb2JqX2ZpbmRfZmVu Y2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCj4+ICAgCQkJICAgc3RydWN0IGRtYV9m ZW5jZSAqKmZlbmNlKQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0g ZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7Cj4+IC0JaW50IHJldCA9IDA7 Cj4+IC0KPj4gLQlpZiAoIXN5bmNvYmopCj4+IC0JCXJldHVybiAtRU5PRU5UOwo+PiArCWludCBy ZXQ7Cj4+ICAgCj4+IC0JKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopOwo+ PiAtCWlmICghKmZlbmNlKSB7Cj4+IC0JCXJldCA9IC1FSU5WQUw7Cj4+IC0JfQo+PiArCXJldCA9 IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCBwb2ludCwgZmxhZ3MsIGZlbmNlKTsK Pj4gICAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwo+PiAgIAlyZXR1cm4gcmV0Owo+PiAgIH0K Pj4gQEAgLTI2NCw3ICs0NjIsNyBAQCB2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYg KmtyZWYpCj4+ICAgCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGNvbnRhaW5lcl9vZihr cmVmLAo+PiAgIAkJCQkJCSAgIHN0cnVjdCBkcm1fc3luY29iaiwKPj4gICAJCQkJCQkgICByZWZj b3VudCk7Cj4+IC0JZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqLCAwLCBOVUxMKTsK Pj4gKwlkcm1fc3luY29ial9maW5pKHN5bmNvYmopOwo+PiAgIAlrZnJlZShzeW5jb2JqKTsKPj4g ICB9Cj4+ICAgRVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9mcmVlKTsKPj4gQEAgLTI5NCw2ICs0 OTIsMTEgQEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipvdXRf c3luY29iaiwgdWludDMyX3QgZmxhZ3MsCj4+ICAgCWtyZWZfaW5pdCgmc3luY29iai0+cmVmY291 bnQpOwo+PiAgIAlJTklUX0xJU1RfSEVBRCgmc3luY29iai0+Y2JfbGlzdCk7Cj4+ICAgCXNwaW5f bG9ja19pbml0KCZzeW5jb2JqLT5sb2NrKTsKPj4gKwlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9D UkVBVEVfVFlQRV9USU1FTElORSkKPj4gKwkJc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZ UEVfVElNRUxJTkU7Cj4+ICsJZWxzZQo+PiArCQlzeW5jb2JqLT50eXBlID0gRFJNX1NZTkNPQkpf VFlQRV9CSU5BUlk7Cj4+ICsJZHJtX3N5bmNvYmpfaW5pdChzeW5jb2JqKTsKPj4gICAKPj4gICAJ aWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEKSB7Cj4+ICAgCQlyZXQgPSBk cm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3luY29iaik7Cj4+IEBAIC01NzYsNyArNzc5 LDggQEAgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCj4+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPj4gICAKPj4gICAJLyogbm8gdmFsaWQg ZmxhZ3MgeWV0ICovCj4+IC0JaWYgKGFyZ3MtPmZsYWdzICYgfkRSTV9TWU5DT0JKX0NSRUFURV9T SUdOQUxFRCkKPj4gKwlpZiAoYXJncy0+ZmxhZ3MgJiB+KERSTV9TWU5DT0JKX0NSRUFURV9TSUdO QUxFRCB8Cj4+ICsJCQkgICAgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpKQo+PiAg IAkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAgCj4+ICAgCXJldHVybiBkcm1fc3luY29ial9jcmVhdGVf YXNfaGFuZGxlKGZpbGVfcHJpdmF0ZSwKPj4gQEAgLTY2OSw5ICs4NzMsOCBAQCBzdGF0aWMgdm9p ZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwK Pj4gICAJc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCA9Cj4+ICAgCQljb250YWluZXJf b2YoY2IsIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnksIHN5bmNvYmpfY2IpOwo+PiAgIAo+PiAt CS8qIFRoaXMgaGFwcGVucyBpbnNpZGUgdGhlIHN5bmNvYmogbG9jayAqLwo+PiAtCXdhaXQtPmZl bmNlID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNvYmotPmZl bmNlLAo+PiAtCQkJCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9jaykpKTsK Pj4gKwlkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgJndhaXQtPmZlbmNl KTsKPj4gKwo+PiAgIAl3YWtlX3VwX3Byb2Nlc3Mod2FpdC0+dGFzayk7Cj4+ICAgfQo+PiAgIAo+ PiBAQCAtNjk4LDcgKzkwMSw4IEBAIHN0YXRpYyBzaWduZWQgbG9uZyBkcm1fc3luY29ial9hcnJh eV93YWl0X3RpbWVvdXQoc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianMsCj4+ICAgCXNpZ25h bGVkX2NvdW50ID0gMDsKPj4gICAJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKPj4gICAJ CWVudHJpZXNbaV0udGFzayA9IGN1cnJlbnQ7Cj4+IC0JCWVudHJpZXNbaV0uZmVuY2UgPSBkcm1f c3luY29ial9mZW5jZV9nZXQoc3luY29ianNbaV0pOwo+PiArCQlyZXQgPSBkcm1fc3luY29ial9z ZWFyY2hfZmVuY2Uoc3luY29ianNbaV0sIDAsIDAsCj4+ICsJCQkJCSAgICAgICAmZW50cmllc1tp XS5mZW5jZSk7Cj4+ICAgCQlpZiAoIWVudHJpZXNbaV0uZmVuY2UpIHsKPj4gICAJCQlpZiAoZmxh Z3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCkgewo+PiAgIAkJCQlj b250aW51ZTsKPj4gQEAgLTk3MCwxMiArMTE3NCwxMyBAQCBkcm1fc3luY29ial9yZXNldF9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+PiAgIAlpZiAocmV0IDwgMCkK Pj4gICAJCXJldHVybiByZXQ7Cj4+ICAgCj4+IC0JZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNvdW50 X2hhbmRsZXM7IGkrKykKPj4gLQkJZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2Jqc1tp XSwgMCwgTlVMTCk7Cj4+IC0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgYXJncy0+Y291bnRfaGFuZGxl czsgaSsrKSB7Cj4+ICsJCWRybV9zeW5jb2JqX2Zpbmkoc3luY29ianNbaV0pOwo+PiArCQlkcm1f c3luY29ial9pbml0KHN5bmNvYmpzW2ldKTsKPj4gKwl9Cj4+ICAgCWRybV9zeW5jb2JqX2FycmF5 X2ZyZWUoc3luY29ianMsIGFyZ3MtPmNvdW50X2hhbmRsZXMpOwo+PiAgIAo+PiAtCXJldHVybiAw Owo+PiArCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAgIAo+PiAgIGludAo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+IGluZGV4IDBhOGQyZDY0ZjM4MC4uOGE4 ZDIxYjI0MTE5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4+IEBAIC0yMTM3LDcgKzIxMzcsNyBAQCBhd2FpdF9mZW5jZV9hcnJheShzdHJ1Y3Qg aTkxNV9leGVjYnVmZmVyICplYiwKPj4gICAJCWlmICghKGZsYWdzICYgSTkxNV9FWEVDX0ZFTkNF X1dBSVQpKQo+PiAgIAkJCWNvbnRpbnVlOwo+PiAgIAo+PiAtCQlmZW5jZSA9IGRybV9zeW5jb2Jq X2ZlbmNlX2dldChzeW5jb2JqKTsKPj4gKwkJZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNv YmosIDAsIDAsICZmZW5jZSk7Cj4+ICAgCQlpZiAoIWZlbmNlKQo+PiAgIAkJCXJldHVybiAtRUlO VkFMOwo+PiAgIAo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCBiL2lu Y2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKPj4gaW5kZXggMmVkYTQ0ZGVmNjM5Li44NWIzNmQ0ZTUz ZWUgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKPj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX3N5bmNvYmouaAo+PiBAQCAtMzAsNiArMzAsMTEgQEAKPj4gICAKPj4gICBz dHJ1Y3QgZHJtX3N5bmNvYmpfY2I7Cj4+ICAgCj4+ICtlbnVtIGRybV9zeW5jb2JqX3R5cGUgewo+ PiArCURSTV9TWU5DT0JKX1RZUEVfQklOQVJZLAo+PiArCURSTV9TWU5DT0JKX1RZUEVfVElNRUxJ TkUKPj4gK307Cj4+ICsKPj4gICAvKioKPj4gICAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmogLSBzeW5j IG9iamVjdC4KPj4gICAgKgo+IFRoZSBrZXJuZWxkb2MgZm9yIHRoaXMgYWxzbyBpc24ndCBhY2N1 cmF0ZSBhbnltb3JlLgpDYW4ga2VybmVsZG9jIGJlIGEgc2VwYXJhdGUgcGF0Y2g/Cgo+Cj4gV2l0 aCB0aGUga2VybmVsLWRvYyBwb2xpc2hlZDoKPgo+IEFja2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxk YW5pZWwudmV0dGVyQGZmd2xsLmNoPgpUaGFua3MgYXQgbGVhc3QuCgo+Cj4gQnV0IEkgdGhpbmsg d2UgZGVmaW5pdGVseSB3YW50IGEgZnVsbCBhY2sgZm9yIHRoZSB1YXBpIGZyb20gcmFkdi9hbnYg Z3V5cwo+IChwbHVzIHRoZSB1c2Vyc3BhY2UgZm9yIGVpdGhlciBvZiB0aG9zZSkuCkRhdmUgYW5k IEJhcyBhcmUgcmlnaHQgcGVvcGxlLCByaWdodD8KClRoYW5rcywKRGF2aWQKPiAtRGFuaWVsCj4K Pj4gQEAgLTQxLDE5ICs0NiwzNiBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmogewo+PiAgIAkgKi8KPj4g ICAJc3RydWN0IGtyZWYgcmVmY291bnQ7Cj4+ICAgCS8qKgo+PiAtCSAqIEBmZW5jZToKPj4gLQkg KiBOVUxMIG9yIGEgcG9pbnRlciB0byB0aGUgZmVuY2UgYm91bmQgdG8gdGhpcyBvYmplY3QuCj4+ IC0JICoKPj4gLQkgKiBUaGlzIGZpZWxkIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS4gVXNl IGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpCj4+IC0JICogYW5kIGRybV9zeW5jb2JqX3JlcGxhY2Vf ZmVuY2UoKSBpbnN0ZWFkLgo+PiArCSAqIEB0eXBlOiBpbmRpY2F0ZSBzeW5jb2JqIHR5cGUKPj4g KwkgKi8KPj4gKwllbnVtIGRybV9zeW5jb2JqX3R5cGUgdHlwZTsKPj4gKwkvKioKPj4gKwkgKiBA d3E6IHdhaXQgc2lnbmFsIG9wZXJhdGlvbiB3b3JrIHF1ZXVlCj4+ICsJICovCj4+ICsJd2FpdF9x dWV1ZV9oZWFkX3QJd3E7Cj4+ICsJLyoqCj4+ICsJICogQHRpbWVsaW5lX2NvbnRleHQ6IGZlbmNl IGNvbnRleHQgdXNlZCBieSB0aW1lbGluZQo+PiAgIAkgKi8KPj4gLQlzdHJ1Y3QgZG1hX2ZlbmNl IF9fcmN1ICpmZW5jZTsKPj4gKwl1NjQgdGltZWxpbmVfY29udGV4dDsKPj4gICAJLyoqCj4+IC0J ICogQGNiX2xpc3Q6IExpc3Qgb2YgY2FsbGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUgJmZlbmNlIGdl dHMgcmVwbGFjZWQuCj4+ICsJICogQHRpbWVsaW5lOiBzeW5jb2JqIHRpbWVsaW5lIHZhbHVlLCB3 aGljaCBpbmRpY2F0ZXMgcG9pbnQgaXMgc2lnbmFsZWQuCj4+ICAgCSAqLwo+PiArCXU2NCB0aW1l bGluZTsKPj4gKwkvKioKPj4gKwkgKiBAc2lnbmFsX3BvaW50OiB3aGljaCBpbmRpY2F0ZXMgdGhl IGxhdGVzdCBzaWduYWxlciBwb2ludC4KPj4gKwkgKi8KPj4gKwl1NjQgc2lnbmFsX3BvaW50Owo+ PiArCS8qKgo+PiArCSAqIEBzaWduYWxfcHRfbGlzdDogc2lnbmFsZXIgcG9pbnQgbGlzdC4KPj4g KwkgKi8KPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9wdF9saXN0Owo+PiArCj4+ICsJLyoq Cj4+ICsgICAgICAgICAqIEBjYl9saXN0OiBMaXN0IG9mIGNhbGxiYWNrcyB0byBjYWxsIHdoZW4g dGhlICZmZW5jZSBnZXRzIHJlcGxhY2VkLgo+PiArICAgICAgICAgKi8KPj4gICAJc3RydWN0IGxp c3RfaGVhZCBjYl9saXN0Owo+PiAgIAkvKioKPj4gLQkgKiBAbG9jazogUHJvdGVjdHMgJmNiX2xp c3QgYW5kIHdyaXRlLWxvY2tzICZmZW5jZS4KPj4gKwkgKiBAbG9jazogUHJvdGVjdHMgc3luY29i aiBsaXN0IGFuZCB3cml0ZS1sb2NrcyAmZmVuY2UuCj4+ICAgCSAqLwo+PiAgIAlzcGlubG9ja190 IGxvY2s7Cj4+ICAgCS8qKgo+PiBAQCAtNjgsNyArOTAsNyBAQCB0eXBlZGVmIHZvaWQgKCpkcm1f c3luY29ial9mdW5jX3QpKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPj4gICAvKioKPj4g ICAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgLSBjYWxsYmFjayBmb3IgZHJtX3N5bmNvYmpfYWRk X2NhbGxiYWNrCj4+ICAgICogQG5vZGU6IHVzZWQgYnkgZHJtX3N5bmNvYl9hZGRfY2FsbGJhY2sg dG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvCj4+IC0gKgkgICZkcm1fc3luY29iai5jYl9saXN0Cj4+ ICsgKiAgICAgICAmZHJtX3N5bmNvYmouY2JfbGlzdAo+PiAgICAqIEBmdW5jOiBkcm1fc3luY29i al9mdW5jX3QgdG8gY2FsbAo+PiAgICAqCj4+ICAgICogVGhpcyBzdHJ1Y3Qgd2lsbCBiZSBpbml0 aWFsaXplZCBieSBkcm1fc3luY29ial9hZGRfY2FsbGJhY2ssIGFkZGl0aW9uYWwKPj4gQEAgLTEw NiwyOSArMTI4LDYgQEAgZHJtX3N5bmNvYmpfcHV0KHN0cnVjdCBkcm1fc3luY29iaiAqb2JqKQo+ PiAgIAlrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX3N5bmNvYmpfZnJlZSk7Cj4+ICAgfQo+ PiAgIAo+PiAtLyoqCj4+IC0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQgLSBnZXQgYSByZWZlcmVu Y2UgdG8gYSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0Cj4+IC0gKiBAc3luY29iajogc3luYyBvYmpl Y3QuCj4+IC0gKgo+PiAtICogVGhpcyBhY3F1aXJlcyBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byAm ZHJtX3N5bmNvYmouZmVuY2UgY29udGFpbmVkIGluIEBvYmosCj4+IC0gKiBpZiBub3QgTlVMTC4g SXQgaXMgaWxsZWdhbCB0byBjYWxsIHRoaXMgd2l0aG91dCBhbHJlYWR5IGhvbGRpbmcgYSByZWZl cmVuY2UuCj4+IC0gKiBObyBsb2NrcyByZXF1aXJlZC4KPj4gLSAqCj4+IC0gKiBSZXR1cm5zOgo+ PiAtICogRWl0aGVyIHRoZSBmZW5jZSBvZiBAb2JqIG9yIE5VTEwgaWYgdGhlcmUncyBub25lLgo+ PiAtICovCj4+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBkbWFfZmVuY2UgKgo+PiAtZHJtX3N5bmNv YmpfZmVuY2VfZ2V0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKPj4gLXsKPj4gLQlzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPj4gLQo+PiAtCXJjdV9yZWFkX2xvY2soKTsKPj4gLQlmZW5j ZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnN5bmNvYmotPmZlbmNlKTsKPj4gLQlyY3VfcmVh ZF91bmxvY2soKTsKPj4gLQo+PiAtCXJldHVybiBmZW5jZTsKPj4gLX0KPj4gLQo+PiAgIHN0cnVj dCBkcm1fc3luY29iaiAqZHJtX3N5bmNvYmpfZmluZChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp dmF0ZSwKPj4gICAJCQkJICAgICB1MzIgaGFuZGxlKTsKPj4gICB2b2lkIGRybV9zeW5jb2JqX3Jl cGxhY2VfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCj4+IEBA IC0xNDIsNSArMTQxLDcgQEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNv YmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCj4+ICAgaW50IGRybV9zeW5jb2JqX2dl dF9oYW5kbGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCj4+ICAgCQkJICAgc3RydWN0 IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1MzIgKmhhbmRsZSk7Cj4+ICAgaW50IGRybV9zeW5jb2Jq X2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIGludCAqcF9mZCk7Cj4+ICtpbnQg ZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0 IHBvaW50LCB1NjQgZmxhZ3MsCj4+ICsJCQkgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7 Cj4+ICAgCj4+ICAgI2VuZGlmCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5o IGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaAo+PiBpbmRleCAzMDBmMzM2NjMzZjIuLmNlYmRiMjU0 MWViNyAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaAo+PiArKysgYi9pbmNs dWRlL3VhcGkvZHJtL2RybS5oCj4+IEBAIC03MTcsNiArNzE3LDcgQEAgc3RydWN0IGRybV9wcmlt ZV9oYW5kbGUgewo+PiAgIHN0cnVjdCBkcm1fc3luY29ial9jcmVhdGUgewo+PiAgIAlfX3UzMiBo YW5kbGU7Cj4+ICAgI2RlZmluZSBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQgKDEgPDwgMCkK Pj4gKyNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUgKDEgPDwgMSkKPj4g ICAJX191MzIgZmxhZ3M7Cj4+ICAgfTsKPj4gICAKPj4gLS0gCj4+IDIuMTcuMQo+PgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5n IGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==