From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] [RFC]drm: add syncobj timeline support v5 Date: Fri, 14 Sep 2018 18:10:59 +0200 Message-ID: <20180914161059.GR11082@phenom.ffwll.local> References: <20180914103747.23663-1-david1.zhou@amd.com> <9a07a371-8de1-2ebf-66e7-23b93c1bc1c3@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <9a07a371-8de1-2ebf-66e7-23b93c1bc1c3-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: Chunming Zhou , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Rakos , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , Dave Airlie T24gRnJpLCBTZXAgMTQsIDIwMTggYXQgMTI6NDk6NDVQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxNC4wOS4yMDE4IHVtIDEyOjM3IHNjaHJpZWIgQ2h1bm1pbmcgWmhvdToK PiA+IFRoaXMgcGF0Y2ggaXMgZm9yIFZLX0tIUl90aW1lbGluZV9zZW1hcGhvcmUgZXh0ZW5zaW9u LCBzZW1hcGhvcmUgaXMgY2FsbGVkIHN5bmNvYmogaW4ga2VybmVsIHNpZGU6Cj4gPiBUaGlzIGV4 dGVuc2lvbiBpbnRyb2R1Y2VzIGEgbmV3IHR5cGUgb2Ygc3luY29iaiB0aGF0IGhhcyBhbiBpbnRl Z2VyIHBheWxvYWQKPiA+IGlkZW50aWZ5aW5nIGEgcG9pbnQgaW4gYSB0aW1lbGluZS4gU3VjaCB0 aW1lbGluZSBzeW5jb2JqcyBzdXBwb3J0IHRoZQo+ID4gZm9sbG93aW5nIG9wZXJhdGlvbnM6Cj4g PiAgICAgKiBDUFUgcXVlcnkgLSBBIGhvc3Qgb3BlcmF0aW9uIHRoYXQgYWxsb3dzIHF1ZXJ5aW5n IHRoZSBwYXlsb2FkIG9mIHRoZQo+ID4gICAgICAgdGltZWxpbmUgc3luY29iai4KPiA+ICAgICAq IENQVSB3YWl0IC0gQSBob3N0IG9wZXJhdGlvbiB0aGF0IGFsbG93cyBhIGJsb2NraW5nIHdhaXQg Zm9yIGEKPiA+ICAgICAgIHRpbWVsaW5lIHN5bmNvYmogdG8gcmVhY2ggYSBzcGVjaWZpZWQgdmFs dWUuCj4gPiAgICAgKiBEZXZpY2Ugd2FpdCAtIEEgZGV2aWNlIG9wZXJhdGlvbiB0aGF0IGFsbG93 cyB3YWl0aW5nIGZvciBhCj4gPiAgICAgICB0aW1lbGluZSBzeW5jb2JqIHRvIHJlYWNoIGEgc3Bl Y2lmaWVkIHZhbHVlLgo+ID4gICAgICogRGV2aWNlIHNpZ25hbCAtIEEgZGV2aWNlIG9wZXJhdGlv biB0aGF0IGFsbG93cyBhZHZhbmNpbmcgdGhlCj4gPiAgICAgICB0aW1lbGluZSBzeW5jb2JqIHRv IGEgc3BlY2lmaWVkIHZhbHVlLgo+ID4gCj4gPiBTaW5jZSBpdCdzIGEgdGltZWxpbmUsIHRoYXQg bWVhbnMgdGhlIGZyb250IHRpbWUgcG9pbnQoUFQpIGFsd2F5cyBpcyBzaWduYWxlZCBiZWZvcmUg dGhlIGxhdGUgUFQuCj4gPiBhLiBzaWduYWwgUFQgZGVzaWduOgo+ID4gU2lnbmFsIFBUIGZlbmNl IE4gZGVwZW5kcyBvbiBQVFtOLTFdIGZlbmNlIGFuZCBzaWduYWwgb3BlcnRpb24gZmVuY2UsIHdo ZW4gUFRbTl0gZmVuY2UgaXMgc2lnbmFsZWQsCj4gPiB0aGUgdGltZWxpbmUgd2lsbCBpbmNyZWFz ZSB0byB2YWx1ZSBvZiBQVFtOXS4KPiA+IGIuIHdhaXQgUFQgZGVzaWduOgo+ID4gV2FpdCBQVCBm ZW5jZSBpcyBzaWduYWxlZCBieSByZWFjaGluZyB0aW1lbGluZSBwb2ludCB2YWx1ZSwgd2hlbiB0 aW1lbGluZSBpcyBpbmNyZWFzaW5nLCB3aWxsIGNvbXBhcmUKPiA+IHdhaXQgUFRzIHZhbHVlIHdp dGggbmV3IHRpbWVsaW5lIHZhbHVlLCBpZiBQVCB2YWx1ZSBpcyBsb3dlciB0aGFuIHRpbWVsaW5l IHZhbHVlLCB0aGVuIHdhaXQgUFQgd2lsbCBiZQo+ID4gc2lnbmFsZWQsIG90aGVyd2lzZSBrZWVw IGluIGxpc3QuIHN5bmNvYmogd2FpdCBvcGVyYXRpb24gY2FuIHdhaXQgb24gYW55IHBvaW50IG9m IHRpbWVsaW5lLAo+ID4gc28gbmVlZCBhIFJCIHRyZWUgdG8gb3JkZXIgdGhlbS4gQW5kIHdhaXQg UFQgY291bGQgYWhlYWQgb2Ygc2lnbmFsIFBULCB3ZSBuZWVkIGEgc3VtaXNzaW9uIGZlbmNlIHRv Cj4gPiBwZXJmb3JtIHRoYXQuCj4gPiAKPiA+IHYyOgo+ID4gMS4gcmVtb3ZlIHVudXNlZCBEUk1f U1lOQ09CSl9DUkVBVEVfVFlQRV9OT1JNQUwuIChDaHJpc3RpYW4pCj4gPiAyLiBtb3ZlIHVuZXhw b3NlZCBkZW5pdGlvbnMgdG8gLmMgZmlsZS4gKERhbmllbCBWZXR0ZXIpCj4gPiAzLiBzcGxpdCB1 cCB0aGUgY2hhbmdlIHRvIGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoKSBpbiBhIHNlcGFyYXRlIHBh dGNoLiAoQ2hyaXN0aWFuKQo+ID4gNC4gc3BsaXQgdXAgdGhlIGNoYW5nZSB0byBkcm1fc3luY29i al9yZXBsYWNlX2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KPiA+IDUuIGRyb3AgdGhlIHN1 Ym1pc3Npb25fZmVuY2UgaW1wbGVtZW50YXRpb24gYW5kIGluc3RlYWQgdXNlIHdhaXRfZXZlbnQo KSBmb3IgdGhhdC4gKENocmlzdGlhbikKPiA+IDYuIFdBUk5fT04ocG9pbnQgIT0gMCkgZm9yIE5P Uk1BTCB0eXBlIHN5bmNvYmogY2FzZS4gKERhbmllbCBWZXR0ZXIpCj4gPiAKPiA+IHYzOgo+ID4g MS4gcmVwbGFjZSBub3JtYWwgc3luY29iaiB3aXRoIHRpbWVsaW5lIGltcGxlbWVuYXRpb24uIChW ZXR0ZXIgYW5kIENocmlzdGlhbikKPiA+ICAgICAgYS4gbm9ybWFsIHN5bmNvYmogc2lnbmFsIG9w IHdpbGwgY3JlYXRlIGEgc2lnbmFsIFBUIHRvIHRhaWwgb2Ygc2lnbmFsIHB0IGxpc3QuCj4gPiAg ICAgIGIuIG5vcm1hbCBzeW5jb2JqIHdhaXQgb3Agd2lsbCBjcmVhdGUgYSB3YWl0IHB0IHdpdGgg bGFzdCBzaWduYWwgcG9pbnQsIGFuZCB0aGlzIHdhaXQgUFQgaXMgb25seSBzaWduYWxlZCBieSBy ZWxhdGVkIHNpZ25hbCBwb2ludCBQVC4KPiA+IDIuIG1hbnkgYnVnIGZpeCBhbmQgY2xlYW4gdXAK PiA+IDMuIHN0dWIgZmVuY2UgbW92aW5nIGlzIG1vdmVkIHRvIG90aGVyIHBhdGNoLgo+ID4gCj4g PiB2NO+8mgo+ID4gMS4gZml4IFJCIHRyZWUgbG9vcCB3aXRoIHdoaWxlKG5vZGU9cmJfZmlyc3Qo Li4uKSkuIChDaHJpc3RpYW4pCj4gPiAyLiBmaXggc3luY29iaiBsaWZlY3ljbGUuIChDaHJpc3Rp YW4pCj4gPiAzLiBvbmx5IGVuYWJsZV9zaWduYWxpbmcgd2hlbiB0aGVyZSBpcyB3YWl0X3B0LiAo Q2hyaXN0aWFuKQo+ID4gNC4gZml4IHRpbWVsaW5lIHBhdGggaXNzdWVzLgo+ID4gNS4gd3JpdGUg YSB0aW1lbGluZSB0ZXN0IGluIGxpYmRybQo+ID4gCj4gPiB2NTogKENocmlzdGlhbikKPiA+IDEu IHNlbWFwaG9yZSBpcyBjYWxsZWQgc3luY29iaiBpbiBrZXJuZWwgc2lkZS4KPiA+IDIuIGRvbid0 IG5lZWQgJ3RpbWVsaW5lJyBjaGFyYWN0ZXJzIGluIHNvbWUgZnVuY3Rpb24gbmFtZS4KPiA+IDMu IGtlZXAgc3luY29iaiBjYgo+ID4gCj4gPiBub3JtYWwgc3luY29iaiBpcyB0ZXN0ZWQgYnkgLi9k ZXFwLXZrIC1uIGRFUVAtVksqc2VtYXBob3JlKgo+ID4gdGltZWxpbmUgc3luY29iaiBpcyB0ZXN0 ZWQgYnkgLi9hbWRncHVfdGVzdCAtcyA5Cj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IENodW5taW5n IFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+Cj4gPiBDYzogQ2hyaXN0aWFuIEtvbmlnIDxjaHJp c3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gPiBDYzogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0 LmNvbT4KPiA+IENjOiBEYW5pZWwgUmFrb3MgPERhbmllbC5SYWtvc0BhbWQuY29tPgo+ID4gQ2M6 IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiAKPiBBdCBsZWFzdCBvbiBmaXJzdCBn bGFuY2UgdGhhdCBsb29rcyBsaWtlIGl0IHNob3VsZCB3b3JrLCBnb2luZyB0byBkbyBhCj4gZGV0 YWlsZWQgcmV2aWV3IG9uIE1vbmRheS4KCkp1c3QgZm9yIG15IHVuZGVyc3RhbmRpbmcsIGl0J3Mg YWxsIGNvbmRlbnNlZCBkb3duIHRvIDEgcGF0Y2ggbm93PyBJIGtpbmRhCmRpZG4ndCBmb2xsb3cg dGhlIGRldGFpbGVkIGRpc2N1c3Npb24gbGFzdCBmZXcgZGF5cyBhdCBhbGwgOi0vCgpBbHNvLCBp cyB0aGVyZSBhIHRlc3RjYXNlLCBpZ3QgaGlnaGx5IHByZWZlcnJlZCAoYmVjYXVzZSB0aGVuIHdl J2xsIHJ1biBpdAppbiBvdXIgaW50ZWwtZ2Z4IENJLCBhbmQgYSBidW5jaCBvZiBwZW9wbGUgb3V0 c2lkZSBvZiBpbnRlbCBoYXZlIGFscmVhZHkKZGlzY292ZXJlZCB0aGF0IGFuZCBhcmUgdXNpbmcg aXQpLgoKVGhhbmtzLCBEYW5pZWwKCj4gCj4gQ2hyaXN0aWFuLgo+IAo+ID4gLS0tCj4gPiAgIGRy aXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jICAgICAgICAgICAgICB8IDI5NCArKysrKysrKysr KysrKysrKystLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jIHwgICA0ICstCj4gPiAgIGluY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggICAgICAgICAgICAg ICAgICB8ICA2MiArKystLQo+ID4gICBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDI5MiBpbnNlcnRpb25zKCsp LCA2OSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKPiA+IGluZGV4IGU5 Y2U2MjNkMDQ5ZS4uZTc4ZDA3NmYyNzAzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9zeW5jb2JqLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCj4g PiBAQCAtNTYsNiArNTYsOSBAQGVpdGhlcgo+ID4gICAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgi Cj4gPiAgICNpbmNsdWRlIDxkcm0vZHJtX3N5bmNvYmouaD4KPiA+ICsvKiBtZXJnZSBub3JtYWwg c3luY29iaiB0byB0aW1lbGluZSBzeW5jb2JqLCB0aGUgcG9pbnQgaW50ZXJ2YWwgaXMgMSAqLwo+ ID4gKyNkZWZpbmUgRFJNX1NZTkNPQkpfTk9STUFMX1BPSU5UIDEKPiA+ICsKPiA+ICAgc3RydWN0 IGRybV9zeW5jb2JqX3N0dWJfZmVuY2Ugewo+ID4gICAJc3RydWN0IGRtYV9mZW5jZSBiYXNlOwo+ ID4gICAJc3BpbmxvY2tfdCBsb2NrOwo+ID4gQEAgLTgyLDYgKzg1LDExIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkcm1fc3luY29ial9zdHViX2ZlbmNlX29wcyA9IHsKPiA+ ICAgCS5yZWxlYXNlID0gZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9yZWxlYXNlLAo+ID4gICB9Owo+ ID4gK3N0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgewo+ID4gKwlzdHJ1Y3QgZG1hX2ZlbmNl X2FycmF5ICpiYXNlOwo+ID4gKwl1NjQgICAgdmFsdWU7Cj4gPiArCXN0cnVjdCBsaXN0X2hlYWQg bGlzdDsKPiA+ICt9Owo+ID4gICAvKioKPiA+ICAgICogZHJtX3N5bmNvYmpfZmluZCAtIGxvb2t1 cCBhbmQgcmVmZXJlbmNlIGEgc3luYyBvYmplY3QuCj4gPiBAQCAtMTI0LDcgKzEzMiw3IEBAIHN0 YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJt X3N5bmNvYmogKnN5bmNvYmosCj4gPiAgIHsKPiA+ICAgCWludCByZXQ7Cj4gPiAtCSpmZW5jZSA9 IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKPiA+ICsJcmV0ID0gZHJtX3N5bmNvYmpf c2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsIGZlbmNlKTsKPiA+ICAgCWlmICgqZmVuY2UpCj4g PiAgIAkJcmV0dXJuIDE7Cj4gPiBAQCAtMTMzLDEwICsxNDEsMTAgQEAgc3RhdGljIGludCBkcm1f c3luY29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN0cnVjdCBkcm1fc3luY29iaiAqc3lu Y29iaiwKPiA+ICAgCSAqIGhhdmUgdGhlIGxvY2ssIHRyeSBvbmUgbW9yZSB0aW1lIGp1c3QgdG8g YmUgc3VyZSB3ZSBkb24ndCBhZGQgYQo+ID4gICAJICogY2FsbGJhY2sgd2hlbiBhIGZlbmNlIGhh cyBhbHJlYWR5IGJlZW4gc2V0Lgo+ID4gICAJICovCj4gPiAtCWlmIChzeW5jb2JqLT5mZW5jZSkg ewo+ID4gLQkJKmZlbmNlID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVk KHN5bmNvYmotPmZlbmNlLAo+ID4gLQkJCQkJCQkJIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+ bG9jaykpKTsKPiA+IC0JCXJldCA9IDE7Cj4gPiArCWlmIChmZW5jZSkgewo+ID4gKwkJZHJtX3N5 bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsIGZlbmNlKTsKPiA+ICsJCWlmICgqZmVu Y2UpCj4gPiArCQkJcmV0ID0gMTsKPiA+ICAgCX0gZWxzZSB7Cj4gPiAgIAkJKmZlbmNlID0gTlVM TDsKPiA+ICAgCQlkcm1fc3luY29ial9hZGRfY2FsbGJhY2tfbG9ja2VkKHN5bmNvYmosIGNiLCBm dW5jKTsKPiA+IEBAIC0xNjQsNiArMTcyLDE1MSBAQCB2b2lkIGRybV9zeW5jb2JqX3JlbW92ZV9j YWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCj4gPiAgIAlzcGluX3VubG9jaygm c3luY29iai0+bG9jayk7Cj4gPiAgIH0KPiA+ICtzdGF0aWMgdm9pZCBkcm1fc3luY29ial90aW1l bGluZV9pbml0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPiA+ICsJCQkJICAgICAgc3Ry dWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lICpzeW5jb2JqX3RpbWVsaW5lKQo+ID4gK3sKPiA+ICsJ c3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+ICsJc3luY29ial90aW1lbGluZS0+dGltZWxp bmVfY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+ID4gKwlzeW5jb2JqX3Rp bWVsaW5lLT50aW1lbGluZSA9IDA7Cj4gPiArCXN5bmNvYmpfdGltZWxpbmUtPnNpZ25hbF9wb2lu dCA9IDA7Cj4gPiArCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnN5bmNvYmpfdGltZWxpbmUtPndxKTsK PiA+ICsKPiA+ICsJSU5JVF9MSVNUX0hFQUQoJnN5bmNvYmpfdGltZWxpbmUtPnNpZ25hbF9wdF9s aXN0KTsKPiA+ICsJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgdm9pZCBkcm1fc3luY29ial90aW1lbGluZV9maW5pKHN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaiwKPiA+ICsJCQkJICAgICAgc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lICpz eW5jb2JqX3RpbWVsaW5lKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9w dCAqc2lnbmFsX3B0ID0gTlVMTCwgKnRtcDsKPiA+ICsKPiA+ICsJc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAo+ ID4gKwkJCQkgJnN5bmNvYmpfdGltZWxpbmUtPnNpZ25hbF9wdF9saXN0LCBsaXN0KSB7Cj4gPiAr CQlsaXN0X2RlbCgmc2lnbmFsX3B0LT5saXN0KTsKPiA+ICsJCWRtYV9mZW5jZV9wdXQoJnNpZ25h bF9wdC0+YmFzZS0+YmFzZSk7Cj4gPiArCQlrZnJlZShzaWduYWxfcHQpOwo+ID4gKwl9Cj4gPiAr CXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHN0 cnVjdCBkbWFfZmVuY2UKPiA+ICsqZHJtX3N5bmNvYmpfZmluZF9zaWduYWxfcHRfZm9yX3BvaW50 KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPiA+ICsJCQkJICAgICAgdWludDY0X3QgcG9p bnQpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfdGltZWxpbmUgKnRpbWVsaW5lID0g JnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmU7Cj4gPiArCXN0cnVjdCBkcm1fc3luY29ial9zaWdu YWxfcHQgKnNpZ25hbF9wdDsKPiA+ICsKPiA+ICsJaWYgKChzeW5jb2JqLT50eXBlID09IERSTV9T WU5DT0JKX1RZUEVfVElNRUxJTkUpICYmCj4gPiArCSAgICAocG9pbnQgPD0gdGltZWxpbmUtPnRp bWVsaW5lKSkgewo+ID4gKwkJc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2UgKmZlbmNlID0K PiA+ICsJCQlremFsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSksCj4g PiArCQkJCUdGUF9LRVJORUwpOwo+ID4gKwo+ID4gKwkJaWYgKCFmZW5jZSkKPiA+ICsJCQlyZXR1 cm4gTlVMTDsKPiA+ICsJCXNwaW5fbG9ja19pbml0KCZmZW5jZS0+bG9jayk7Cj4gPiArCQlkbWFf ZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsCj4gPiArCQkJICAgICAgICZkcm1fc3luY29ial9zdHVi X2ZlbmNlX29wcywKPiA+ICsJCQkgICAgICAgJmZlbmNlLT5sb2NrLAo+ID4gKwkJCSAgICAgICBz eW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnRpbWVsaW5lX2NvbnRleHQsCj4gPiArCQkJICAgICAg IHBvaW50KTsKPiA+ICsKPiA+ICsJCWRtYV9mZW5jZV9zaWduYWwoJmZlbmNlLT5iYXNlKTsKPiA+ ICsJCXJldHVybiAmZmVuY2UtPmJhc2U7Cj4gPiArCX0KPiA+ICsKPiA+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeShzaWduYWxfcHQsICZ0aW1lbGluZS0+c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsKPiA+ ICsJCWlmIChwb2ludCA+IHNpZ25hbF9wdC0+dmFsdWUpCj4gPiArCQkJY29udGludWU7Cj4gPiAr CQlpZiAoKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9OT1JNQUwpICYmCj4gPiAr CQkgICAgKHBvaW50ICE9IHNpZ25hbF9wdC0+dmFsdWUpKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4g KwkJcmV0dXJuIGRtYV9mZW5jZV9nZXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7Cj4gPiArCX0K PiA+ICsJcmV0dXJuIE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgZHJtX3N5bmNv YmpfY3JlYXRlX3NpZ25hbF9wdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCj4gPiArCQkJ CQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwKPiA+ICsJCQkJCXU2NCBwb2ludCkKPiA+ICt7Cj4g PiArCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdCA9Cj4gPiArCQlremFs bG9jKHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0KSwgR0ZQX0tFUk5FTCk7Cj4g PiArCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnRhaWxfcHQ7Cj4gPiArCXN0cnVjdCBk bWFfZmVuY2UgKipmZW5jZXM7Cj4gPiArCWludCBudW1fZmVuY2VzID0gMDsKPiA+ICsJaW50IHJl dCA9IDAsIGk7Cj4gPiArCj4gPiArCWlmICghc2lnbmFsX3B0KQo+ID4gKwkJcmV0dXJuIC1FTk9N RU07Cj4gPiArCWlmIChzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wb2ludCA+PSBw b2ludCkgewo+ID4gKwkJRFJNX1dBUk4oIkEgbGF0ZXIgc2lnbmFsIGlzIHJlYWR5ISIpOwo+ID4g KwkJZ290byBvdXQ7Cj4gPiArCX0KPiA+ICsJaWYgKCFmZW5jZSkKPiA+ICsJCWdvdG8gb3V0Owo+ ID4gKwo+ID4gKwlmZW5jZXMgPSBrbWFsbG9jX2FycmF5KHNpemVvZih2b2lkICopLCAyLCBHRlBf S0VSTkVMKTsKPiA+ICsJaWYgKCFmZW5jZXMpCj4gPiArCQlnb3RvIG91dDsKPiA+ICsJZmVuY2Vz W251bV9mZW5jZXMrK10gPSBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKPiA+ICsJLyogdGltZWxpbmUg c3luY29iaiBtdXN0IHRha2UgdGhpcyBkZXBlbmRlbmN5ICovCj4gPiArCWlmIChzeW5jb2JqLT50 eXBlID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpIHsKPiA+ICsJCXNwaW5fbG9jaygmc3lu Y29iai0+bG9jayk7Cj4gPiArCQlpZiAoIWxpc3RfZW1wdHkoJnN5bmNvYmotPnN5bmNvYmpfdGlt ZWxpbmUuc2lnbmFsX3B0X2xpc3QpKSB7Cj4gPiArCQkJdGFpbF9wdCA9IGxpc3RfbGFzdF9lbnRy eSgmc3luY29iai0+c3luY29ial90aW1lbGluZS5zaWduYWxfcHRfbGlzdCwKPiA+ICsJCQkJCQkg IHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsIGxpc3QpOwo+ID4gKwkJCWZlbmNlc1tudW1f ZmVuY2VzKytdID0gZG1hX2ZlbmNlX2dldCgmdGFpbF9wdC0+YmFzZS0+YmFzZSk7Cj4gPiArCQl9 Cj4gPiArCQlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4gPiArCX0KPiA+ICsJc2lnbmFs X3B0LT5iYXNlID0gZG1hX2ZlbmNlX2FycmF5X2NyZWF0ZShudW1fZmVuY2VzLCBmZW5jZXMsCj4g PiArCQkJCQkJIHN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUudGltZWxpbmVfY29udGV4dCwKPiA+ ICsJCQkJCQkgcG9pbnQsIGZhbHNlKTsKPiA+ICsJaWYgKCFzaWduYWxfcHQtPmJhc2UpCj4gPiAr CQlnb3RvIGZhaWw7Cj4gPiArCj4gPiArCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4gPiAr CXNpZ25hbF9wdC0+dmFsdWUgPSBwb2ludDsKPiA+ICsJSU5JVF9MSVNUX0hFQUQoJnNpZ25hbF9w dC0+bGlzdCk7Cj4gPiArCWxpc3RfYWRkX3RhaWwoJnNpZ25hbF9wdC0+bGlzdCwgJnN5bmNvYmot PnN5bmNvYmpfdGltZWxpbmUuc2lnbmFsX3B0X2xpc3QpOwo+ID4gKwlzeW5jb2JqLT5zeW5jb2Jq X3RpbWVsaW5lLnNpZ25hbF9wb2ludCA9IHBvaW50Owo+ID4gKwlzcGluX3VubG9jaygmc3luY29i ai0+bG9jayk7Cj4gPiArCXdha2VfdXBfYWxsKCZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLndx KTsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArZmFpbDoKPiA+ICsJZm9yIChpID0gMDsgaSA8 IG51bV9mZW5jZXM7IGkrKykKPiA+ICsJCWRtYV9mZW5jZV9wdXQoZmVuY2VzW2ldKTsKPiA+ICsJ a2ZyZWUoZmVuY2VzKTsKPiA+ICtvdXQ6Cj4gPiArCWtmcmVlKHNpZ25hbF9wdCk7Cj4gPiArCXJl dHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGRybV9zeW5jb2JqX2dhcmJh Z2VfY29sbGVjdGlvbihzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4gPiArewo+ID4gKwlz dHJ1Y3QgZHJtX3N5bmNvYmpfdGltZWxpbmUgKnRpbWVsaW5lID0gJnN5bmNvYmotPnN5bmNvYmpf dGltZWxpbmU7Cj4gPiArCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdCwg KnRtcDsKPiA+ICsKPiA+ICsJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+ICsJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAo+ID4gKwkJCQkgJnRpbWVsaW5lLT5z aWduYWxfcHRfbGlzdCwgbGlzdCkgewo+ID4gKwkJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZCgm c2lnbmFsX3B0LT5iYXNlLT5iYXNlKSkgewo+ID4gKwkJCXRpbWVsaW5lLT50aW1lbGluZSA9IHNp Z25hbF9wdC0+dmFsdWU7Cj4gPiArCQkJbGlzdF9kZWwoJnNpZ25hbF9wdC0+bGlzdCk7Cj4gPiAr CQkJZG1hX2ZlbmNlX3B1dCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKTsKPiA+ICsJCQlrZnJlZShz aWduYWxfcHQpOwo+ID4gKwkJfSBlbHNlIHsKPiA+ICsJCQkvKnNpZ25hbF9wdCBpcyBpbiBvcmRl ciBpbiBsaXN0LCBmcm9tIHNtYWxsIHRvIGJpZywgc28KPiA+ICsJCQkgKiB0aGUgbGF0ZXIgbXVz dCBub3QgYmUgc2lnbmFsIGVpdGhlciAqLwo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJfQo+ID4gKwl9 Cj4gPiArCj4gPiArCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+ICt9Cj4gPiAgIC8q Kgo+ID4gICAgKiBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlIC0gcmVwbGFjZSBmZW5jZSBpbiBh IHN5bmMgb2JqZWN0Lgo+ID4gICAgKiBAc3luY29iajogU3luYyBvYmplY3QgdG8gcmVwbGFjZSBm ZW5jZSBpbgo+ID4gQEAgLTE3NiwyOCArMzI5LDM3IEBAIHZvaWQgZHJtX3N5bmNvYmpfcmVwbGFj ZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCj4gPiAgIAkJCSAgICAgICB1NjQg cG9pbnQsCj4gPiAgIAkJCSAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiA+ICAgewo+ ID4gLQlzdHJ1Y3QgZG1hX2ZlbmNlICpvbGRfZmVuY2U7Cj4gPiAtCXN0cnVjdCBkcm1fc3luY29i al9jYiAqY3VyLCAqdG1wOwo+ID4gLQo+ID4gLQlpZiAoZmVuY2UpCj4gPiAtCQlkbWFfZmVuY2Vf Z2V0KGZlbmNlKTsKPiA+IC0KPiA+IC0Jc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+IC0K PiA+IC0Jb2xkX2ZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5j ZSwKPiA+IC0JCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9jaykpOwo+ID4g LQlyY3VfYXNzaWduX3BvaW50ZXIoc3luY29iai0+ZmVuY2UsIGZlbmNlKTsKPiA+ICsJZHJtX3N5 bmNvYmpfZ2FyYmFnZV9jb2xsZWN0aW9uKHN5bmNvYmopOwo+ID4gKwlpZiAoc3luY29iai0+dHlw ZSA9PSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FKSB7Cj4gPiArCQlpZiAoZmVuY2UpCj4gPiAr CQkJZHJtX3N5bmNvYmpfY3JlYXRlX3NpZ25hbF9wdChzeW5jb2JqLCBmZW5jZSwgcG9pbnQpOwo+ ID4gKwl9IGVsc2UgaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9OT1JNQUwp IHsKPiA+ICsJCXU2NCBwdF92YWx1ZTsKPiA+ICsKPiA+ICsJCWlmICghZmVuY2UpIHsKPiA+ICsJ CQlkcm1fc3luY29ial90aW1lbGluZV9maW5pKHN5bmNvYmosCj4gPiArCQkJCQkJICAmc3luY29i ai0+c3luY29ial90aW1lbGluZSk7Cj4gPiArCQkJZHJtX3N5bmNvYmpfdGltZWxpbmVfaW5pdChz eW5jb2JqLAo+ID4gKwkJCQkJCSAgJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUpOwo+ID4gKwkJ CXJldHVybjsKPiA+ICsJCX0KPiA+ICsJCXB0X3ZhbHVlID0gc3luY29iai0+c3luY29ial90aW1l bGluZS5zaWduYWxfcG9pbnQgKwo+ID4gKwkJCURSTV9TWU5DT0JKX05PUk1BTF9QT0lOVDsKPiA+ ICsJCWRybV9zeW5jb2JqX2NyZWF0ZV9zaWduYWxfcHQoc3luY29iaiwgZmVuY2UsIHB0X3ZhbHVl KTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCURSTV9FUlJPUigidGhlIHN5bmNvYmogdHlwZSBpc24n dCBzdXBwb3J0XG4iKTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwlpZiAoZmVuY2UpIHsK PiA+ICsJCXN0cnVjdCBkcm1fc3luY29ial9jYiAqY3VyLCAqdG1wOwo+ID4gLQlpZiAoZmVuY2Ug IT0gb2xkX2ZlbmNlKSB7Cj4gPiArCQlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+ID4gICAJ CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXIsIHRtcCwgJnN5bmNvYmotPmNiX2xpc3QsIG5v ZGUpIHsKPiA+ICAgCQkJbGlzdF9kZWxfaW5pdCgmY3VyLT5ub2RlKTsKPiA+ICAgCQkJY3VyLT5m dW5jKHN5bmNvYmosIGN1cik7Cj4gPiAgIAkJfQo+ID4gKwkJc3Bpbl91bmxvY2soJnN5bmNvYmot PmxvY2spOwo+ID4gICAJfQo+ID4gLQo+ID4gLQlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7 Cj4gPiAtCj4gPiAtCWRtYV9mZW5jZV9wdXQob2xkX2ZlbmNlKTsKPiA+ICAgfQo+ID4gICBFWFBP UlRfU1lNQk9MKGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpOwo+ID4gQEAgLTIyMCw2ICszODIs MjUgQEAgc3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqKQo+ID4gICAJcmV0dXJuIDA7Cj4gPiAgIH0KPiA+ICtzdGF0aWMg c3RydWN0IGRtYV9mZW5jZSAqCj4gPiArZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN0cnVjdCBkcm1f c3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LCB1NjQgZmxhZ3MpCj4gPiArewo+ID4gKwlzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiA+ICsJaW50IHJldCA9IDA7Cj4gPiArCj4gPiArCWlmIChm bGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7Cj4gPiArCQly ZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQoc3luY29iai0+c3luY29ial90aW1lbGluZS53cSwKPiA+ ICsJCQkJCXBvaW50IDw9IHN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUuc2lnbmFsX3BvaW50LAo+ ID4gKwkJCQkJbXNlY3NfdG9famlmZmllcygxMDAwMCkpOyAvKiB3YWl0IDEwcyAqLwo+ID4gKwkJ aWYgKHJldCA8PSAwKQo+ID4gKwkJCXJldHVybiBOVUxMOwo+ID4gKwl9Cj4gPiArCXNwaW5fbG9j aygmc3luY29iai0+bG9jayk7Cj4gPiArCWZlbmNlID0gZHJtX3N5bmNvYmpfZmluZF9zaWduYWxf cHRfZm9yX3BvaW50KHN5bmNvYmosIHBvaW50KTsKPiA+ICsJc3Bpbl91bmxvY2soJnN5bmNvYmot PmxvY2spOwo+ID4gKwlyZXR1cm4gZmVuY2U7Cj4gPiArfQo+ID4gKwo+ID4gICAvKioKPiA+ICAg ICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1cCBhbmQgcmVmZXJlbmNlIHRoZSBmZW5j ZSBpbiBhIHN5bmMgb2JqZWN0Cj4gPiAgICAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZh dGUgcG9pbnRlcgo+ID4gQEAgLTIzNCwyMCArNDE1LDQ2IEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNv YmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKPiA+ICAg ICogY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGZlbmNlLCB3aGljaCBtdXN0IGJlIHJlbGVh c2VkIGJ5IGNhbGxpbmcKPiA+ICAgICogZG1hX2ZlbmNlX3B1dCgpLgo+ID4gICAgKi8KPiA+IC1p bnQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwK PiA+IC0JCQkgICB1MzIgaGFuZGxlLCB1NjQgcG9pbnQsCj4gPiAtCQkJICAgc3RydWN0IGRtYV9m ZW5jZSAqKmZlbmNlKQo+ID4gK2ludCBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCj4gPiArCQkJICAgICB1NjQgZmxhZ3MsIHN0 cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPiA+ICAgewo+ID4gLQlzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdmF0ZSwgaGFuZGxlKTsKPiA+ICAg CWludCByZXQgPSAwOwo+ID4gICAJaWYgKCFzeW5jb2JqKQo+ID4gICAJCXJldHVybiAtRU5PRU5U Owo+ID4gLQkqZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7Cj4gPiArCWRy bV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKPiA+ICsJaWYgKHN5bmNvYmot PnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9OT1JNQUwpIHsKPiA+ICsJCS8qTk9STUFMIHN5bmNv YmogYWx3YXlzIHdhaXQgb24gbGFzdCBwdCAqLwo+ID4gKwkJdTY0IHRhaWxfcHRfdmFsdWUgPSBz eW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wb2ludDsKPiA+ICsKPiA+ICsJCWlmICh0 YWlsX3B0X3ZhbHVlID09IDApCj4gPiArCQkJdGFpbF9wdF92YWx1ZSArPSBEUk1fU1lOQ09CSl9O T1JNQUxfUE9JTlQ7Cj4gPiArCQkvKiBOT1JNQUwgc3luY29iaiBkb2Vzbid0IGNhcmUgcG9pbnQg dmFsdWUgKi8KPiA+ICsJCVdBUk5fT04ocG9pbnQgIT0gMCk7Cj4gPiArCQkqZmVuY2UgPSBkcm1f c3luY29ial9wb2ludF9nZXQoc3luY29iaiwgdGFpbF9wdF92YWx1ZSwKPiA+ICsJCQkJCQkJZmxh Z3MpOwo+ID4gKwl9IGVsc2UgaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9U SU1FTElORSkgewo+ID4gKwkJKmZlbmNlID0gZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN5bmNvYmos IHBvaW50LAo+ID4gKwkJCQkJCQlmbGFncyk7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlEUk1fRVJS T1IoIkRvbid0IHN1cHBvcnQgdGhpcyB0eXBlIHN5bmNvYmpcbiIpOwo+ID4gKwkJKmZlbmNlID0g TlVMTDsKPiA+ICsJfQo+ID4gICAJaWYgKCEqZmVuY2UpIHsKPiA+ICAgCQlyZXQgPSAtRUlOVkFM Owo+ID4gICAJfQo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MKGRy bV9zeW5jb2JqX3NlYXJjaF9mZW5jZSk7Cj4gPiAraW50IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uo c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCj4gPiArCQkJICAgdTMyIGhhbmRsZSwgdTY0 IHBvaW50LAo+ID4gKwkJCSAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkgewo+ID4gKwlzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdmF0ZSwg aGFuZGxlKTsKPiA+ICsKPiA+ICsJaW50IHJldCA9IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShz eW5jb2JqLCBwb2ludCwKPiA+ICsJCQkJCURSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1Jf U1VCTUlULAo+ID4gKwkJCQkJZmVuY2UpOwo+ID4gICAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmop Owo+ID4gICAJcmV0dXJuIHJldDsKPiA+ICAgfQo+ID4gQEAgLTI2NCw3ICs0NzEsNyBAQCB2b2lk IGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCj4gPiAgIAlzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmogPSBjb250YWluZXJfb2Yoa3JlZiwKPiA+ICAgCQkJCQkJICAgc3RydWN0 IGRybV9zeW5jb2JqLAo+ID4gICAJCQkJCQkgICByZWZjb3VudCk7Cj4gPiAtCWRybV9zeW5jb2Jq X3JlcGxhY2VfZmVuY2Uoc3luY29iaiwgMCwgTlVMTCk7Cj4gPiArCWRybV9zeW5jb2JqX3RpbWVs aW5lX2Zpbmkoc3luY29iaiwgJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUpOwo+ID4gICAJa2Zy ZWUoc3luY29iaik7Cj4gPiAgIH0KPiA+ICAgRVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9mcmVl KTsKPiA+IEBAIC0yOTQsNiArNTAxLDExIEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0 IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAo+ID4gICAJa3JlZl9p bml0KCZzeW5jb2JqLT5yZWZjb3VudCk7Cj4gPiAgIAlJTklUX0xJU1RfSEVBRCgmc3luY29iai0+ Y2JfbGlzdCk7Cj4gPiAgIAlzcGluX2xvY2tfaW5pdCgmc3luY29iai0+bG9jayk7Cj4gPiArCWlm IChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5FKQo+ID4gKwkJc3luY29i ai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkU7Cj4gPiArCWVsc2UKPiA+ICsJCXN5 bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX05PUk1BTDsKPiA+ICsJZHJtX3N5bmNvYmpf dGltZWxpbmVfaW5pdChzeW5jb2JqLCAmc3luY29iai0+c3luY29ial90aW1lbGluZSk7Cj4gPiAg IAlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQpIHsKPiA+ICAgCQlyZXQg PSBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3luY29iaik7Cj4gPiBAQCAtNTc2LDcg Kzc4OCw4IEBAIGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+ID4gICAJCXJldHVybiAtRU5PREVWOwo+ID4gICAJLyogbm8gdmFsaWQg ZmxhZ3MgeWV0ICovCj4gPiAtCWlmIChhcmdzLT5mbGFncyAmIH5EUk1fU1lOQ09CSl9DUkVBVEVf U0lHTkFMRUQpCj4gPiArCWlmIChhcmdzLT5mbGFncyAmIH4oRFJNX1NZTkNPQkpfQ1JFQVRFX1NJ R05BTEVEIHwKPiA+ICsJCQkgICAgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpKQo+ ID4gICAJCXJldHVybiAtRUlOVkFMOwo+ID4gICAJcmV0dXJuIGRybV9zeW5jb2JqX2NyZWF0ZV9h c19oYW5kbGUoZmlsZV9wcml2YXRlLAo+ID4gQEAgLTY2OSw5ICs4ODIsOCBAQCBzdGF0aWMgdm9p ZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwK PiA+ICAgCXN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQgPQo+ID4gICAJCWNvbnRhaW5l cl9vZihjYiwgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSwgc3luY29ial9jYik7Cj4gPiAtCS8q IFRoaXMgaGFwcGVucyBpbnNpZGUgdGhlIHN5bmNvYmogbG9jayAqLwo+ID4gLQl3YWl0LT5mZW5j ZSA9IGRtYV9mZW5jZV9nZXQocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5j ZSwKPiA+IC0JCQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5sb2NrKSkpOwo+ ID4gKwlkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgJndhaXQtPmZlbmNl KTsKPiA+ICsKPiA+ICAgCXdha2VfdXBfcHJvY2Vzcyh3YWl0LT50YXNrKTsKPiA+ICAgfQo+ID4g QEAgLTY5OCw3ICs5MTAsOCBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgZHJtX3N5bmNvYmpfYXJyYXlf d2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzLAo+ID4gICAJc2lnbmFs ZWRfY291bnQgPSAwOwo+ID4gICAJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKPiA+ICAg CQllbnRyaWVzW2ldLnRhc2sgPSBjdXJyZW50Owo+ID4gLQkJZW50cmllc1tpXS5mZW5jZSA9IGRy bV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2Jqc1tpXSk7Cj4gPiArCQlyZXQgPSBkcm1fc3luY29i al9zZWFyY2hfZmVuY2Uoc3luY29ianNbaV0sIDAsIDAsCj4gPiArCQkJCQkgICAgICAgJmVudHJp ZXNbaV0uZmVuY2UpOwo+ID4gICAJCWlmICghZW50cmllc1tpXS5mZW5jZSkgewo+ID4gICAJCQlp ZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCkgewo+ID4g ICAJCQkJY29udGludWU7Cj4gPiBAQCAtOTcwLDEyICsxMTgzLDIxIEBAIGRybV9zeW5jb2JqX3Jl c2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gPiAgIAlpZiAo cmV0IDwgMCkKPiA+ICAgCQlyZXR1cm4gcmV0Owo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgYXJncy0+ Y291bnRfaGFuZGxlczsgaSsrKQo+ID4gLQkJZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5j b2Jqc1tpXSwgMCwgTlVMTCk7Cj4gPiAtCj4gPiArCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5jb3Vu dF9oYW5kbGVzOyBpKyspIHsKPiA+ICsJCWlmIChzeW5jb2Jqc1tpXS0+dHlwZSA9PSBEUk1fU1lO Q09CSl9UWVBFX1RJTUVMSU5FKSB7Cj4gPiArCQkJRFJNX0VSUk9SKCJ0aW1lbGluZSBzeW5jb2Jq IGNhbm5vdCByZXNldCFcbiIpOwo+ID4gKwkJCXJldCA9IC1FSU5WQUw7Cj4gPiArCQkJZ290byBv dXQ7Cj4gPiArCQl9Cj4gPiArCQlkcm1fc3luY29ial90aW1lbGluZV9maW5pKHN5bmNvYmpzW2ld LAo+ID4gKwkJCQkJICAmc3luY29ianNbaV0tPnN5bmNvYmpfdGltZWxpbmUpOwo+ID4gKwkJZHJt X3N5bmNvYmpfdGltZWxpbmVfaW5pdChzeW5jb2Jqc1tpXSwKPiA+ICsJCQkJCSAgJnN5bmNvYmpz W2ldLT5zeW5jb2JqX3RpbWVsaW5lKTsKPiA+ICsJfQo+ID4gK291dDoKPiA+ICAgCWRybV9zeW5j b2JqX2FycmF5X2ZyZWUoc3luY29ianMsIGFyZ3MtPmNvdW50X2hhbmRsZXMpOwo+ID4gLQlyZXR1 cm4gMDsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICAgfQo+ID4gICBpbnQKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiA+IGluZGV4IDBhOGQyZDY0ZjM4MC4u NTc5ZTkxYTU4NThiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKPiA+IEBAIC0yMTM3LDcgKzIxMzcsOSBAQCBhd2FpdF9mZW5jZV9hcnJheShz dHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPiA+ICAgCQlpZiAoIShmbGFncyAmIEk5MTVfRVhF Q19GRU5DRV9XQUlUKSkKPiA+ICAgCQkJY29udGludWU7Cj4gPiAtCQlmZW5jZSA9IGRybV9zeW5j b2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKPiA+ICsJCWRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShz eW5jb2JqLCAwLAo+ID4gKwkJCQkJIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VC TUlULAo+ID4gKwkJCQkJICZmZW5jZSk7Cj4gPiAgIAkJaWYgKCFmZW5jZSkKPiA+ICAgCQkJcmV0 dXJuIC1FSU5WQUw7Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCBi L2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKPiA+IGluZGV4IDQyNTQzMmI4NWE4Ny4uOTUzNTUy MWU2NjIzIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAo+ID4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAo+ID4gQEAgLTMwLDYgKzMwLDI1IEBACj4gPiAg IHN0cnVjdCBkcm1fc3luY29ial9jYjsKPiA+ICtlbnVtIGRybV9zeW5jb2JqX3R5cGUgewo+ID4g KwlEUk1fU1lOQ09CSl9UWVBFX05PUk1BTCwKPiA+ICsJRFJNX1NZTkNPQkpfVFlQRV9USU1FTElO RQo+ID4gK307Cj4gPiArCj4gPiArc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lIHsKPiA+ICsJ d2FpdF9xdWV1ZV9oZWFkX3QJd3E7Cj4gPiArCXU2NCB0aW1lbGluZV9jb250ZXh0Owo+ID4gKwkv KioKPiA+ICsJICogQHRpbWVsaW5lOiBzeW5jb2JqIHRpbWVsaW5lCj4gPiArCSAqLwo+ID4gKwl1 NjQgdGltZWxpbmU7Cj4gPiArCXU2NCBzaWduYWxfcG9pbnQ7Cj4gPiArCj4gPiArCj4gPiArCXN0 cnVjdCByYl9yb290IHdhaXRfcHRfdHJlZTsKPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBzaWduYWxf cHRfbGlzdDsKPiA+ICt9Owo+ID4gKwo+ID4gICAvKioKPiA+ICAgICogc3RydWN0IGRybV9zeW5j b2JqIC0gc3luYyBvYmplY3QuCj4gPiAgICAqCj4gPiBAQCAtNDEsMTkgKzYwLDE5IEBAIHN0cnVj dCBkcm1fc3luY29iaiB7Cj4gPiAgIAkgKi8KPiA+ICAgCXN0cnVjdCBrcmVmIHJlZmNvdW50Owo+ ID4gICAJLyoqCj4gPiAtCSAqIEBmZW5jZToKPiA+IC0JICogTlVMTCBvciBhIHBvaW50ZXIgdG8g dGhlIGZlbmNlIGJvdW5kIHRvIHRoaXMgb2JqZWN0Lgo+ID4gLQkgKgo+ID4gLQkgKiBUaGlzIGZp ZWxkIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS4gVXNlIGRybV9zeW5jb2JqX2ZlbmNlX2dl dCgpCj4gPiAtCSAqIGFuZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKCkgaW5zdGVhZC4KPiA+ ICsJICogQHR5cGU6IGluZGljYXRlIHN5bmNvYmogdHlwZQo+ID4gICAJICovCj4gPiAtCXN0cnVj dCBkbWFfZmVuY2UgX19yY3UgKmZlbmNlOwo+ID4gKwllbnVtIGRybV9zeW5jb2JqX3R5cGUgdHlw ZTsKPiA+ICAgCS8qKgo+ID4gLQkgKiBAY2JfbGlzdDogTGlzdCBvZiBjYWxsYmFja3MgdG8gY2Fs bCB3aGVuIHRoZSAmZmVuY2UgZ2V0cyByZXBsYWNlZC4KPiA+ICsJICogQHN5bmNvYmpfdGltZWxp bmU6IHRpbWVsaW5lCj4gPiAgIAkgKi8KPiA+ICsJc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5l IHN5bmNvYmpfdGltZWxpbmU7Cj4gPiArCS8qKgo+ID4gKyAgICAgICAgICogQGNiX2xpc3Q6IExp c3Qgb2YgY2FsbGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUgJmZlbmNlIGdldHMgcmVwbGFjZWQuCj4g PiArICAgICAgICAgKi8KPiA+ICAgCXN0cnVjdCBsaXN0X2hlYWQgY2JfbGlzdDsKPiA+ICAgCS8q Kgo+ID4gLQkgKiBAbG9jazogUHJvdGVjdHMgJmNiX2xpc3QgYW5kIHdyaXRlLWxvY2tzICZmZW5j ZS4KPiA+ICsJICogQGxvY2s6IFByb3RlY3RzIHN5bmNvYmogbGlzdCBhbmQgd3JpdGUtbG9ja3Mg JmZlbmNlLgo+ID4gICAJICovCj4gPiAgIAlzcGlubG9ja190IGxvY2s7Cj4gPiAgIAkvKioKPiA+ IEBAIC02OCw3ICs4Nyw3IEBAIHR5cGVkZWYgdm9pZCAoKmRybV9zeW5jb2JqX2Z1bmNfdCkoc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAo+ID4gICAvKioKPiA+ICAgICogc3RydWN0IGRybV9z eW5jb2JqX2NiIC0gY2FsbGJhY2sgZm9yIGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjawo+ID4gICAg KiBAbm9kZTogdXNlZCBieSBkcm1fc3luY29iX2FkZF9jYWxsYmFjayB0byBhcHBlbmQgdGhpcyBz dHJ1Y3QgdG8KPiA+IC0gKgkgICZkcm1fc3luY29iai5jYl9saXN0Cj4gPiArICogICAgICAgJmRy bV9zeW5jb2JqLmNiX2xpc3QKPiA+ICAgICogQGZ1bmM6IGRybV9zeW5jb2JqX2Z1bmNfdCB0byBj YWxsCj4gPiAgICAqCj4gPiAgICAqIFRoaXMgc3RydWN0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYnkg ZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrLCBhZGRpdGlvbmFsCj4gPiBAQCAtMTA2LDI5ICsxMjUs NiBAQCBkcm1fc3luY29ial9wdXQoc3RydWN0IGRybV9zeW5jb2JqICpvYmopCj4gPiAgIAlrcmVm X3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX3N5bmNvYmpfZnJlZSk7Cj4gPiAgIH0KPiA+IC0vKioK PiA+IC0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQgLSBnZXQgYSByZWZlcmVuY2UgdG8gYSBmZW5j ZSBpbiBhIHN5bmMgb2JqZWN0Cj4gPiAtICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0Lgo+ID4gLSAq Cj4gPiAtICogVGhpcyBhY3F1aXJlcyBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byAmZHJtX3N5bmNv YmouZmVuY2UgY29udGFpbmVkIGluIEBvYmosCj4gPiAtICogaWYgbm90IE5VTEwuIEl0IGlzIGls bGVnYWwgdG8gY2FsbCB0aGlzIHdpdGhvdXQgYWxyZWFkeSBob2xkaW5nIGEgcmVmZXJlbmNlLgo+ ID4gLSAqIE5vIGxvY2tzIHJlcXVpcmVkLgo+ID4gLSAqCj4gPiAtICogUmV0dXJuczoKPiA+IC0g KiBFaXRoZXIgdGhlIGZlbmNlIG9mIEBvYmogb3IgTlVMTCBpZiB0aGVyZSdzIG5vbmUuCj4gPiAt ICovCj4gPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoKPiA+IC1kcm1fc3luY29i al9mZW5jZV9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQo+ID4gLXsKPiA+IC0Jc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gPiAtCj4gPiAtCXJjdV9yZWFkX2xvY2soKTsKPiA+IC0J ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZzeW5jb2JqLT5mZW5jZSk7Cj4gPiAtCXJj dV9yZWFkX3VubG9jaygpOwo+ID4gLQo+ID4gLQlyZXR1cm4gZmVuY2U7Cj4gPiAtfQo+ID4gLQo+ ID4gICBzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5jb2JqX2ZpbmQoc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXZhdGUsCj4gPiAgIAkJCQkgICAgIHUzMiBoYW5kbGUpOwo+ID4gICB2b2lkIGRy bV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQg cG9pbnQsCj4gPiBAQCAtMTQyLDUgKzEzOCw3IEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3Ry dWN0IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAo+ID4gICBpbnQg ZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKPiA+ ICAgCQkJICAgc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1MzIgKmhhbmRsZSk7Cj4gPiAg IGludCBkcm1fc3luY29ial9nZXRfZmQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCBpbnQg KnBfZmQpOwo+ID4gK2ludCBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3RydWN0IGRybV9zeW5j b2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCj4gPiArCQkJICAgICB1NjQgZmxhZ3MsIHN0cnVjdCBk bWFfZmVuY2UgKipmZW5jZSk7Cj4gPiAgICNlbmRpZgo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv dWFwaS9kcm0vZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCj4gPiBpbmRleCAzMDBmMzM2 NjMzZjIuLmNlYmRiMjU0MWViNyAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJt LmgKPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKPiA+IEBAIC03MTcsNiArNzE3LDcg QEAgc3RydWN0IGRybV9wcmltZV9oYW5kbGUgewo+ID4gICBzdHJ1Y3QgZHJtX3N5bmNvYmpfY3Jl YXRlIHsKPiA+ICAgCV9fdTMyIGhhbmRsZTsKPiA+ICAgI2RlZmluZSBEUk1fU1lOQ09CSl9DUkVB VEVfU0lHTkFMRUQgKDEgPDwgMCkKPiA+ICsjZGVmaW5lIERSTV9TWU5DT0JKX0NSRUFURV9UWVBF X1RJTUVMSU5FICgxIDw8IDEpCj4gPiAgIAlfX3UzMiBmbGFnczsKPiA+ICAgfTsKPiAKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK