From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/7] drm: add syncobj timeline support v8 Date: Wed, 17 Oct 2018 10:09:08 +0200 Message-ID: <20181017080908.GK31561@phenom.ffwll.local> References: <20181015085553.30656-1-david1.zhou@amd.com> <20181015085553.30656-2-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 72FC36E32E for ; Wed, 17 Oct 2018 08:09:12 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id y19-v6so23956818edd.2 for ; Wed, 17 Oct 2018 01:09:12 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181015085553.30656-2-david1.zhou@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chunming Zhou Cc: amd-gfx@lists.freedesktop.org, Daniel Rakos , dri-devel@lists.freedesktop.org, Dave Airlie , Christian Konig List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMTUsIDIwMTggYXQgMDQ6NTU6NDhQTSArMDgwMCwgQ2h1bm1pbmcgWmhvdSB3 cm90ZToKPiBUaGlzIHBhdGNoIGlzIGZvciBWS19LSFJfdGltZWxpbmVfc2VtYXBob3JlIGV4dGVu c2lvbiwgc2VtYXBob3JlIGlzIGNhbGxlZCBzeW5jb2JqIGluIGtlcm5lbCBzaWRlOgo+IFRoaXMg ZXh0ZW5zaW9uIGludHJvZHVjZXMgYSBuZXcgdHlwZSBvZiBzeW5jb2JqIHRoYXQgaGFzIGFuIGlu dGVnZXIgcGF5bG9hZAo+IGlkZW50aWZ5aW5nIGEgcG9pbnQgaW4gYSB0aW1lbGluZS4gU3VjaCB0 aW1lbGluZSBzeW5jb2JqcyBzdXBwb3J0IHRoZQo+IGZvbGxvd2luZyBvcGVyYXRpb25zOgo+ICAg ICogQ1BVIHF1ZXJ5IC0gQSBob3N0IG9wZXJhdGlvbiB0aGF0IGFsbG93cyBxdWVyeWluZyB0aGUg cGF5bG9hZCBvZiB0aGUKPiAgICAgIHRpbWVsaW5lIHN5bmNvYmouCj4gICAgKiBDUFUgd2FpdCAt IEEgaG9zdCBvcGVyYXRpb24gdGhhdCBhbGxvd3MgYSBibG9ja2luZyB3YWl0IGZvciBhCj4gICAg ICB0aW1lbGluZSBzeW5jb2JqIHRvIHJlYWNoIGEgc3BlY2lmaWVkIHZhbHVlLgo+ICAgICogRGV2 aWNlIHdhaXQgLSBBIGRldmljZSBvcGVyYXRpb24gdGhhdCBhbGxvd3Mgd2FpdGluZyBmb3IgYQo+ ICAgICAgdGltZWxpbmUgc3luY29iaiB0byByZWFjaCBhIHNwZWNpZmllZCB2YWx1ZS4KPiAgICAq IERldmljZSBzaWduYWwgLSBBIGRldmljZSBvcGVyYXRpb24gdGhhdCBhbGxvd3MgYWR2YW5jaW5n IHRoZQo+ICAgICAgdGltZWxpbmUgc3luY29iaiB0byBhIHNwZWNpZmllZCB2YWx1ZS4KPiAKPiB2 MToKPiBTaW5jZSBpdCdzIGEgdGltZWxpbmUsIHRoYXQgbWVhbnMgdGhlIGZyb250IHRpbWUgcG9p bnQoUFQpIGFsd2F5cyBpcyBzaWduYWxlZCBiZWZvcmUgdGhlIGxhdGUgUFQuCj4gYS4gc2lnbmFs IFBUIGRlc2lnbjoKPiBTaWduYWwgUFQgZmVuY2UgTiBkZXBlbmRzIG9uIFBUW04tMV0gZmVuY2Ug YW5kIHNpZ25hbCBvcGVydGlvbiBmZW5jZSwgd2hlbiBQVFtOXSBmZW5jZSBpcyBzaWduYWxlZCwK PiB0aGUgdGltZWxpbmUgd2lsbCBpbmNyZWFzZSB0byB2YWx1ZSBvZiBQVFtOXS4KPiBiLiB3YWl0 IFBUIGRlc2lnbjoKPiBXYWl0IFBUIGZlbmNlIGlzIHNpZ25hbGVkIGJ5IHJlYWNoaW5nIHRpbWVs aW5lIHBvaW50IHZhbHVlLCB3aGVuIHRpbWVsaW5lIGlzIGluY3JlYXNpbmcsIHdpbGwgY29tcGFy ZQo+IHdhaXQgUFRzIHZhbHVlIHdpdGggbmV3IHRpbWVsaW5lIHZhbHVlLCBpZiBQVCB2YWx1ZSBp cyBsb3dlciB0aGFuIHRpbWVsaW5lIHZhbHVlLCB0aGVuIHdhaXQgUFQgd2lsbCBiZQo+IHNpZ25h bGVkLCBvdGhlcndpc2Uga2VlcCBpbiBsaXN0LiBzeW5jb2JqIHdhaXQgb3BlcmF0aW9uIGNhbiB3 YWl0IG9uIGFueSBwb2ludCBvZiB0aW1lbGluZSwKPiBzbyBuZWVkIGEgUkIgdHJlZSB0byBvcmRl ciB0aGVtLiBBbmQgd2FpdCBQVCBjb3VsZCBhaGVhZCBvZiBzaWduYWwgUFQsIHdlIG5lZWQgYSBz dW1pc3Npb24gZmVuY2UgdG8KPiBwZXJmb3JtIHRoYXQuCj4gCj4gdjI6Cj4gMS4gcmVtb3ZlIHVu dXNlZCBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9OT1JNQUwuIChDaHJpc3RpYW4pCj4gMi4gbW92 ZSB1bmV4cG9zZWQgZGVuaXRpb25zIHRvIC5jIGZpbGUuIChEYW5pZWwgVmV0dGVyKQo+IDMuIHNw bGl0IHVwIHRoZSBjaGFuZ2UgdG8gZHJtX3N5bmNvYmpfZmluZF9mZW5jZSgpIGluIGEgc2VwYXJh dGUgcGF0Y2guIChDaHJpc3RpYW4pCj4gNC4gc3BsaXQgdXAgdGhlIGNoYW5nZSB0byBkcm1fc3lu Y29ial9yZXBsYWNlX2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KPiA1LiBkcm9wIHRoZSBz dWJtaXNzaW9uX2ZlbmNlIGltcGxlbWVudGF0aW9uIGFuZCBpbnN0ZWFkIHVzZSB3YWl0X2V2ZW50 KCkgZm9yIHRoYXQuIChDaHJpc3RpYW4pCj4gNi4gV0FSTl9PTihwb2ludCAhPSAwKSBmb3IgTk9S TUFMIHR5cGUgc3luY29iaiBjYXNlLiAoRGFuaWVsIFZldHRlcikKPiAKPiB2MzoKPiAxLiByZXBs YWNlIG5vcm1hbCBzeW5jb2JqIHdpdGggdGltZWxpbmUgaW1wbGVtZW5hdGlvbi4gKFZldHRlciBh bmQgQ2hyaXN0aWFuKQo+ICAgICBhLiBub3JtYWwgc3luY29iaiBzaWduYWwgb3Agd2lsbCBjcmVh dGUgYSBzaWduYWwgUFQgdG8gdGFpbCBvZiBzaWduYWwgcHQgbGlzdC4KPiAgICAgYi4gbm9ybWFs IHN5bmNvYmogd2FpdCBvcCB3aWxsIGNyZWF0ZSBhIHdhaXQgcHQgd2l0aCBsYXN0IHNpZ25hbCBw b2ludCwgYW5kIHRoaXMgd2FpdCBQVCBpcyBvbmx5IHNpZ25hbGVkIGJ5IHJlbGF0ZWQgc2lnbmFs IHBvaW50IFBULgo+IDIuIG1hbnkgYnVnIGZpeCBhbmQgY2xlYW4gdXAKPiAzLiBzdHViIGZlbmNl IG1vdmluZyBpcyBtb3ZlZCB0byBvdGhlciBwYXRjaC4KPiAKPiB2NO+8mgo+IDEuIGZpeCBSQiB0 cmVlIGxvb3Agd2l0aCB3aGlsZShub2RlPXJiX2ZpcnN0KC4uLikpLiAoQ2hyaXN0aWFuKQo+IDIu IGZpeCBzeW5jb2JqIGxpZmVjeWNsZS4gKENocmlzdGlhbikKPiAzLiBvbmx5IGVuYWJsZV9zaWdu YWxpbmcgd2hlbiB0aGVyZSBpcyB3YWl0X3B0LiAoQ2hyaXN0aWFuKQo+IDQuIGZpeCB0aW1lbGlu ZSBwYXRoIGlzc3Vlcy4KPiA1LiB3cml0ZSBhIHRpbWVsaW5lIHRlc3QgaW4gbGliZHJtCj4gCj4g djU6IChDaHJpc3RpYW4pCj4gMS4gc2VtYXBob3JlIGlzIGNhbGxlZCBzeW5jb2JqIGluIGtlcm5l bCBzaWRlLgo+IDIuIGRvbid0IG5lZWQgJ3RpbWVsaW5lJyBjaGFyYWN0ZXJzIGluIHNvbWUgZnVu Y3Rpb24gbmFtZS4KPiAzLiBrZWVwIHN5bmNvYmogY2IuCj4gCj4gdjY6IChDaHJpc3RpYW4pCj4g MS4gbWVyZ2Ugc3luY29ial90aW1lbGluZSB0byBzeW5jb2JqIHN0cnVjdHVyZS4KPiAyLiBzaW1w bGlmeSBzb21lIGNoZWNrIHNlbnRlbmNlcy4KPiAzLiBzb21lIG1pc2MgY2hhbmdlLgo+IDQuIGZp eCBDVFMgZmFpbGVkIGlzc3VlLgo+IAo+IHY3OiAoQ2hyaXN0aWFuKQo+IDEuIGVycm9yIGhhbmRs aW5nIHdoZW4gY3JlYXRpbmcgc2lnbmFsIHB0Lgo+IDIuIHJlbW92ZSB0aW1lbGluZSBuYW1pbmcg aW4gZnVuYy4KPiAzLiBleHBvcnQgZmxhZ3MgaW4gZmluZF9mZW5jZS4KPiA0LiBhbGxvdyByZXNl dCB0aW1lbGluZS4KPiAKPiB2ODoKPiAxLiB1c2Ugd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlIHdp dGhvdXQgdGltZW91dAo+IDIuIHJlbmFtZSBfVFlQRV9JTkRJVklEVUFMIHRvIF9UWVBFX0JJTkFS WQo+IAo+IGluZGl2aWR1YWwgc3luY29iaiBpcyB0ZXN0ZWQgYnkgLi9kZXFwLXZrIC1uIGRFUVAt Vksqc2VtYXBob3JlKgo+IHRpbWVsaW5lIHN5bmNvYmogaXMgdGVzdGVkIGJ5IC4vYW1kZ3B1X3Rl c3QgLXMgOQoKQ2FuIHdlIHBsZWFzZSBoYXZlIHRoZXNlIGxvdy1sZXZlbCBzeW5jb2JqIHRlc3Rz IGFzIHBhcnQgb2YgaWd0LCB0b2dldGhlcgp3aXRoIGFsbCB0aGUgb3RoZXIgc3luY29iaiB0ZXN0 cyB3aGljaCBhcmUgdGhlcmUgYWxyZWFkeT8gUmVhbGx5IGRvZXNuJ3QKbWFrZSBtdWNoIHNlbnNl IGltbyB0byBzcGxpdHMgdGhpbmdzIG9uIHRoZSB0ZXN0IHN1aXRlIGZyb250Lgo+IAo+IFNpZ25l ZC1vZmYtYnk6IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+Cj4gQ2M6IENocmlz dGlhbiBLb25pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+IENjOiBEYXZlIEFpcmxpZSA8 YWlybGllZEByZWRoYXQuY29tPgo+IENjOiBEYW5pZWwgUmFrb3MgPERhbmllbC5SYWtvc0BhbWQu Y29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gUmV2aWV3ZWQtYnk6 IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgICAgICAgICAgICAgIHwgMjg3ICsrKysrKysrKysr KysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMg fCAgIDIgKy0KPiAgaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCAgICAgICAgICAgICAgICAgIHwg IDY1ICsrLS0tCj4gIGluY2x1ZGUvdWFwaS9kcm0vZHJtLmggICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjgxIGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCj4gaW5kZXggZjc5NmM5ZmMzODU4Li42NzQ3MmJk NzdjODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwo+IEBAIC01Niw2ICs1Niw5IEBACj4gICNp bmNsdWRlICJkcm1faW50ZXJuYWwuaCIKPiAgI2luY2x1ZGUgPGRybS9kcm1fc3luY29iai5oPgo+ ICAKPiArLyogbWVyZ2Ugbm9ybWFsIHN5bmNvYmogdG8gdGltZWxpbmUgc3luY29iaiwgdGhlIHBv aW50IGludGVydmFsIGlzIDEgKi8KPiArI2RlZmluZSBEUk1fU1lOQ09CSl9CSU5BUllfUE9JTlQg MQo+ICsKPiAgc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2Ugewo+ICAJc3RydWN0IGRtYV9m ZW5jZSBiYXNlOwo+ICAJc3BpbmxvY2tfdCBsb2NrOwo+IEBAIC04Miw2ICs4NSwxMSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9vcHMg PSB7Cj4gIAkucmVsZWFzZSA9IGRybV9zeW5jb2JqX3N0dWJfZmVuY2VfcmVsZWFzZSwKPiAgfTsK PiAgCj4gK3N0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgewo+ICsJc3RydWN0IGRtYV9mZW5j ZV9hcnJheSAqYmFzZTsKCk91dCBvZiBjdXJpb3NpdHksIHdoeSB0aGUgcG9pbnRlciBhbmQgbm90 IGVtYmVkZGluZz8gYmFzZSBpcyBraW5kYQptaXNsZWFkaW5nIGZvciBhIHBvaW50ZXIuCgo+ICsJ dTY0ICAgIHZhbHVlOwo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ICt9Owo+ICAKPiAgLyoq Cj4gICAqIGRybV9zeW5jb2JqX2ZpbmQgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSBhIHN5bmMgb2Jq ZWN0Lgo+IEBAIC0xMjQsOCArMTMyLDggQEAgc3RhdGljIGludCBkcm1fc3luY29ial9mZW5jZV9n ZXRfb3JfYWRkX2NhbGxiYWNrKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPiAgewo+ICAJ aW50IHJldDsKPiAgCj4gLQkqZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7 Cj4gLQlpZiAoKmZlbmNlKQo+ICsJcmV0ID0gZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNv YmosIDAsIDAsIGZlbmNlKTsKPiArCWlmICghcmV0KQo+ICAJCXJldHVybiAxOwo+ICAKPiAgCXNw aW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4gQEAgLTEzMywxMCArMTQxLDEyIEBAIHN0YXRpYyBp bnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNv YmogKnN5bmNvYmosCj4gIAkgKiBoYXZlIHRoZSBsb2NrLCB0cnkgb25lIG1vcmUgdGltZSBqdXN0 IHRvIGJlIHN1cmUgd2UgZG9uJ3QgYWRkIGEKPiAgCSAqIGNhbGxiYWNrIHdoZW4gYSBmZW5jZSBo YXMgYWxyZWFkeSBiZWVuIHNldC4KPiAgCSAqLwo+IC0JaWYgKHN5bmNvYmotPmZlbmNlKSB7Cj4g LQkJKmZlbmNlID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNv YmotPmZlbmNlLAo+IC0JCQkJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJnN5bmNvYmotPmxvY2spKSk7 Cj4gLQkJcmV0ID0gMTsKPiArCWlmICghbGlzdF9lbXB0eSgmc3luY29iai0+c2lnbmFsX3B0X2xp c3QpKSB7Cj4gKwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ICsJCWRybV9zeW5jb2Jq X3NlYXJjaF9mZW5jZShzeW5jb2JqLCAwLCAwLCBmZW5jZSk7Cj4gKwkJaWYgKCpmZW5jZSkKPiAr CQkJcmV0dXJuIDE7Cj4gKwkJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiAgCX0gZWxzZSB7 Cj4gIAkJKmZlbmNlID0gTlVMTDsKPiAgCQlkcm1fc3luY29ial9hZGRfY2FsbGJhY2tfbG9ja2Vk KHN5bmNvYmosIGNiLCBmdW5jKTsKPiBAQCAtMTY0LDYgKzE3NCwxNTkgQEAgdm9pZCBkcm1fc3lu Y29ial9yZW1vdmVfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAo+ICAJc3Bp bl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBkcm1fc3lu Y29ial9pbml0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKPiArewo+ICsJc3Bpbl9sb2Nr KCZzeW5jb2JqLT5sb2NrKTsKPiArCXN5bmNvYmotPnRpbWVsaW5lX2NvbnRleHQgPSBkbWFfZmVu Y2VfY29udGV4dF9hbGxvYygxKTsKPiArCXN5bmNvYmotPnRpbWVsaW5lID0gMDsKPiArCXN5bmNv YmotPnNpZ25hbF9wb2ludCA9IDA7Cj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZzeW5jb2JqLT53 cSk7Cj4gKwo+ICsJSU5JVF9MSVNUX0hFQUQoJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0KTsKPiAr CXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHJt X3N5bmNvYmpfZmluaShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4gK3sKPiArCXN0cnVj dCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdCA9IE5VTEwsICp0bXA7Cj4gKwo+ICsJ c3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShz aWduYWxfcHQsIHRtcCwKPiArCQkJCSAmc3luY29iai0+c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsK PiArCQlsaXN0X2RlbCgmc2lnbmFsX3B0LT5saXN0KTsKPiArCQlkbWFfZmVuY2VfcHV0KCZzaWdu YWxfcHQtPmJhc2UtPmJhc2UpOwo+ICsJCWtmcmVlKHNpZ25hbF9wdCk7Cj4gKwl9Cj4gKwlzcGlu X3VubG9jaygmc3luY29iai0+bG9jayk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZG1hX2Zl bmNlCj4gKypkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3RydWN0IGRybV9z eW5jb2JqICpzeW5jb2JqLAo+ICsJCQkJICAgICAgdWludDY0X3QgcG9pbnQpCj4gK3sKPiArCXN0 cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdDsKPiArCj4gKwlpZiAoKHN5bmNv YmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgJiYKPiArCSAgICAocG9pbnQg PD0gc3luY29iai0+dGltZWxpbmUpKSB7Cj4gKwkJc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVu Y2UgKmZlbmNlID0KPiArCQkJa3phbGxvYyhzaXplb2Yoc3RydWN0IGRybV9zeW5jb2JqX3N0dWJf ZmVuY2UpLAo+ICsJCQkJR0ZQX0tFUk5FTCk7Cj4gKwo+ICsJCWlmICghZmVuY2UpCj4gKwkJCXJl dHVybiBOVUxMOwo+ICsJCXNwaW5fbG9ja19pbml0KCZmZW5jZS0+bG9jayk7Cj4gKwkJZG1hX2Zl bmNlX2luaXQoJmZlbmNlLT5iYXNlLAo+ICsJCQkgICAgICAgJmRybV9zeW5jb2JqX3N0dWJfZmVu Y2Vfb3BzLAo+ICsJCQkgICAgICAgJmZlbmNlLT5sb2NrLAo+ICsJCQkgICAgICAgc3luY29iai0+ dGltZWxpbmVfY29udGV4dCwKPiArCQkJICAgICAgIHBvaW50KTsKPiArCj4gKwkJZG1hX2ZlbmNl X3NpZ25hbCgmZmVuY2UtPmJhc2UpOwo+ICsJCXJldHVybiAmZmVuY2UtPmJhc2U7Cj4gKwl9Cj4g Kwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShzaWduYWxfcHQsICZzeW5jb2JqLT5zaWduYWxfcHRf bGlzdCwgbGlzdCkgewo+ICsJCWlmIChwb2ludCA+IHNpZ25hbF9wdC0+dmFsdWUpCj4gKwkJCWNv bnRpbnVlOwo+ICsJCWlmICgoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0JJTkFS WSkgJiYKPiArCQkgICAgKHBvaW50ICE9IHNpZ25hbF9wdC0+dmFsdWUpKQo+ICsJCQljb250aW51 ZTsKPiArCQlyZXR1cm4gZG1hX2ZlbmNlX2dldCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKTsKPiAr CX0KPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRybV9zeW5jb2JqX2Ny ZWF0ZV9zaWduYWxfcHQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAo+ICsJCQkJCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlLAo+ICsJCQkJCXU2NCBwb2ludCkKPiArewo+ICsJc3RydWN0IGRy bV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0ID0KPiArCQlremFsbG9jKHNpemVvZihzdHJ1 Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0KSwgR0ZQX0tFUk5FTCk7Cj4gKwlzdHJ1Y3QgZHJtX3N5 bmNvYmpfc2lnbmFsX3B0ICp0YWlsX3B0Owo+ICsJc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlczsK PiArCWludCBudW1fZmVuY2VzID0gMDsKPiArCWludCByZXQgPSAwLCBpOwo+ICsKPiArCWlmICgh c2lnbmFsX3B0KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJaWYgKCFmZW5jZSkKPiArCQlnb3Rv IG91dDsKPiArCj4gKwlmZW5jZXMgPSBrbWFsbG9jX2FycmF5KHNpemVvZih2b2lkICopLCAyLCBH RlBfS0VSTkVMKTsKPiArCWlmICghZmVuY2VzKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQln b3RvIG91dDsKPiArCX0KPiArCWZlbmNlc1tudW1fZmVuY2VzKytdID0gZG1hX2ZlbmNlX2dldChm ZW5jZSk7Cj4gKwkvKiB0aW1lbGluZSBzeW5jb2JqIG11c3QgdGFrZSB0aGlzIGRlcGVuZGVuY3kg Ki8KPiArCWlmIChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpIHsK PiArCQlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+ICsJCWlmICghbGlzdF9lbXB0eSgmc3lu Y29iai0+c2lnbmFsX3B0X2xpc3QpKSB7Cj4gKwkJCXRhaWxfcHQgPSBsaXN0X2xhc3RfZW50cnko JnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LAo+ICsJCQkJCQkgIHN0cnVjdCBkcm1fc3luY29ial9z aWduYWxfcHQsIGxpc3QpOwo+ICsJCQlmZW5jZXNbbnVtX2ZlbmNlcysrXSA9IGRtYV9mZW5jZV9n ZXQoJnRhaWxfcHQtPmJhc2UtPmJhc2UpOwo+ICsJCX0KPiArCQlzcGluX3VubG9jaygmc3luY29i ai0+bG9jayk7Cj4gKwl9Cj4gKwlzaWduYWxfcHQtPmJhc2UgPSBkbWFfZmVuY2VfYXJyYXlfY3Jl YXRlKG51bV9mZW5jZXMsIGZlbmNlcywKPiArCQkJCQkJIHN5bmNvYmotPnRpbWVsaW5lX2NvbnRl eHQsCj4gKwkJCQkJCSBwb2ludCwgZmFsc2UpOwo+ICsJaWYgKCFzaWduYWxfcHQtPmJhc2UpIHsK PiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPiArCj4gKwlzcGluX2xv Y2soJnN5bmNvYmotPmxvY2spOwo+ICsJaWYgKHN5bmNvYmotPnNpZ25hbF9wb2ludCA+PSBwb2lu dCkgewo+ICsJCURSTV9XQVJOKCJBIGxhdGVyIHNpZ25hbCBpcyByZWFkeSEiKTsKPiArCQlzcGlu X3VubG9jaygmc3luY29iai0+bG9jayk7Cj4gKwkJZ290byBleGlzdDsKPiArCX0KPiArCXNpZ25h bF9wdC0+dmFsdWUgPSBwb2ludDsKPiArCWxpc3RfYWRkX3RhaWwoJnNpZ25hbF9wdC0+bGlzdCwg JnN5bmNvYmotPnNpZ25hbF9wdF9saXN0KTsKPiArCXN5bmNvYmotPnNpZ25hbF9wb2ludCA9IHBv aW50Owo+ICsJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ICsJd2FrZV91cF9hbGwoJnN5 bmNvYmotPndxKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArZXhpc3Q6Cj4gKwlkbWFfZmVuY2VfcHV0 KCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpOwo+ICtmYWlsOgo+ICsJZm9yIChpID0gMDsgaSA8IG51 bV9mZW5jZXM7IGkrKykKPiArCQlkbWFfZmVuY2VfcHV0KGZlbmNlc1tpXSk7Cj4gKwlrZnJlZShm ZW5jZXMpOwo+ICtvdXQ6Cj4gKwlrZnJlZShzaWduYWxfcHQpOwo+ICsJcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfZ2FyYmFnZV9jb2xsZWN0aW9uKHN0cnVj dCBkcm1fc3luY29iaiAqc3luY29iaikKPiArewo+ICsJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25h bF9wdCAqc2lnbmFsX3B0LCAqdG1wLCAqdGFpbF9wdDsKPiArCj4gKwlzcGluX2xvY2soJnN5bmNv YmotPmxvY2spOwo+ICsJdGFpbF9wdCA9IGxpc3RfbGFzdF9lbnRyeSgmc3luY29iai0+c2lnbmFs X3B0X2xpc3QsCj4gKwkJCQkgIHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsCj4gKwkJCQkg IGxpc3QpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAo+ICsJ CQkJICZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwgbGlzdCkgewo+ICsJCWlmIChzeW5jb2JqLT50 eXBlID09IERSTV9TWU5DT0JKX1RZUEVfQklOQVJZICYmCj4gKwkJICAgIHNpZ25hbF9wdCA9PSB0 YWlsX3B0KQo+ICsJCQljb250aW51ZTsKPiArCQlpZiAoZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKCZz aWduYWxfcHQtPmJhc2UtPmJhc2UpKSB7Cj4gKwkJCXN5bmNvYmotPnRpbWVsaW5lID0gc2lnbmFs X3B0LT52YWx1ZTsKPiArCQkJbGlzdF9kZWwoJnNpZ25hbF9wdC0+bGlzdCk7Cj4gKwkJCWRtYV9m ZW5jZV9wdXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7Cj4gKwkJCWtmcmVlKHNpZ25hbF9wdCk7 Cj4gKwkJfSBlbHNlIHsKPiArCQkJLypzaWduYWxfcHQgaXMgaW4gb3JkZXIgaW4gbGlzdCwgZnJv bSBzbWFsbCB0byBiaWcsIHNvCj4gKwkJCSAqIHRoZSBsYXRlciBtdXN0IG5vdCBiZSBzaWduYWwg ZWl0aGVyICovCj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlzcGluX3VubG9jaygm c3luY29iai0+bG9jayk7Cj4gK30KPiAgLyoqCj4gICAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVu Y2UgLSByZXBsYWNlIGZlbmNlIGluIGEgc3luYyBvYmplY3QuCj4gICAqIEBzeW5jb2JqOiBTeW5j IG9iamVjdCB0byByZXBsYWNlIGZlbmNlIGluCj4gQEAgLTE3NiwyOCArMzM5LDI5IEBAIHZvaWQg ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCj4g IAkJCSAgICAgICB1NjQgcG9pbnQsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZSkKPiAgewo+IC0Jc3RydWN0IGRtYV9mZW5jZSAqb2xkX2ZlbmNlOwo+IC0Jc3RydWN0IGRybV9z eW5jb2JqX2NiICpjdXIsICp0bXA7Cj4gLQo+IC0JaWYgKGZlbmNlKQo+IC0JCWRtYV9mZW5jZV9n ZXQoZmVuY2UpOwo+IC0KPiAtCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4gLQo+IC0Jb2xk X2ZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKPiAtCQkJ CQkgICAgICBsb2NrZGVwX2lzX2hlbGQoJnN5bmNvYmotPmxvY2spKTsKPiAtCXJjdV9hc3NpZ25f cG9pbnRlcihzeW5jb2JqLT5mZW5jZSwgZmVuY2UpOwo+ICsJdTY0IHB0X3ZhbHVlID0gcG9pbnQ7 Cj4gKwo+ICsJZHJtX3N5bmNvYmpfZ2FyYmFnZV9jb2xsZWN0aW9uKHN5bmNvYmopOwo+ICsJaWYg KHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlkpIHsKPiArCQlpZiAoIWZl bmNlKSB7Cj4gKwkJCWRybV9zeW5jb2JqX2Zpbmkoc3luY29iaik7Cj4gKwkJCWRybV9zeW5jb2Jq X2luaXQoc3luY29iaik7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4gKwkJcHRfdmFsdWUgPSBzeW5j b2JqLT5zaWduYWxfcG9pbnQgKwo+ICsJCQlEUk1fU1lOQ09CSl9CSU5BUllfUE9JTlQ7Cj4gKwl9 Cj4gKwlkcm1fc3luY29ial9jcmVhdGVfc2lnbmFsX3B0KHN5bmNvYmosIGZlbmNlLCBwdF92YWx1 ZSk7Cj4gKwlpZiAoZmVuY2UpIHsKPiArCQlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmN1ciwgKnRt cDsKPiAgCj4gLQlpZiAoZmVuY2UgIT0gb2xkX2ZlbmNlKSB7Cj4gKwkJc3Bpbl9sb2NrKCZzeW5j b2JqLT5sb2NrKTsKPiAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0bXAsICZzeW5j b2JqLT5jYl9saXN0LCBub2RlKSB7Cj4gIAkJCWxpc3RfZGVsX2luaXQoJmN1ci0+bm9kZSk7Cj4g IAkJCWN1ci0+ZnVuYyhzeW5jb2JqLCBjdXIpOwo+ICAJCX0KPiArCQlzcGluX3VubG9jaygmc3lu Y29iai0+bG9jayk7Cj4gIAl9Cj4gLQo+IC0Jc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ IC0KPiAtCWRtYV9mZW5jZV9wdXQob2xkX2ZlbmNlKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRy bV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpOwo+ICAKPiBAQCAtMjIwLDYgKzM4NCw0NiBAQCBzdGF0 aWMgaW50IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmopCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGludAo+ICtkcm1fc3lu Y29ial9wb2ludF9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsIHU2 NCBmbGFncywKPiArCQkgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpCj4gK3sKPiArCWlu dCByZXQgPSAwOwo+ICsKPiArCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJ VF9GT1JfU1VCTUlUKSB7Cj4gKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKHN5bmNv YmotPndxLAo+ICsJCQkJCSAgICAgICBwb2ludCA8PSBzeW5jb2JqLT5zaWduYWxfcG9pbnQpOwo+ ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsJc3Bpbl9sb2NrKCZz eW5jb2JqLT5sb2NrKTsKPiArCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZpbmRfc2lnbmFsX3B0X2Zv cl9wb2ludChzeW5jb2JqLCBwb2ludCk7Cj4gKwlpZiAoISpmZW5jZSkKPiArCQlyZXQgPSAtRUlO VkFMOwo+ICsJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ICsJcmV0dXJuIHJldDsKPiAr fQo+ICsKPiAraW50IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmosIHU2NCBwb2ludCwKPiArCQkJICAgICB1NjQgZmxhZ3MsIHN0cnVjdCBkbWFfZmVu Y2UgKipmZW5jZSkKCktlcm5lbGRvYyBpcyBtaXNzaW5nIGZvciB0aGlzIG9uZSBoZXJlLgoKSSBh bHNvIHRoaW5rIGltcHJvdmluZyB0aGUgb3ZlcnZpZXcgY29tbWVudCB0byBleHBsYWluIHRoZSB0 aW1lbGluZSBzdHVmZiwKZS5nLiBsaW5rIHRvIHRoZSB2dWxrYW4gZXh0ZW5zaW9uLCBhbmQgc29t ZSB3b3JkcyBvbiBob3cgaXQncyBzdXBwb3NlZCB0bwpiZSB1c2VkICh5b3UgbmVlZCBhIHN1Ym1p dCB0aHJlYWQgYW5kIGJsb2NrIGluIHVzZXJzcGFjZSB1bnRpbCBhbGwgZnV0dXJlCnRpbWVsaW5l IHBvaW50cyBoYXZlIG1hdGVyaWFsaXplZCwgb25seSB0aGVuIHlvdSBjYW4gc3VibWl0IHRvIHRo ZQprZXJuZWwpLgoKPiArewo+ICsJdTY0IHB0X3ZhbHVlID0gcG9pbnQ7Cj4gKwo+ICsJaWYgKCFz eW5jb2JqKQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ICsKPiArCWRybV9zeW5jb2JqX2dhcmJhZ2Vf Y29sbGVjdGlvbihzeW5jb2JqKTsKPiArCWlmIChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JK X1RZUEVfQklOQVJZKSB7Cj4gKwkJLypCSU5BUlkgc3luY29iaiBhbHdheXMgd2FpdCBvbiBsYXN0 IHB0ICovCj4gKwkJcHRfdmFsdWUgPSBzeW5jb2JqLT5zaWduYWxfcG9pbnQ7Cj4gKwo+ICsJCWlm IChwdF92YWx1ZSA9PSAwKQo+ICsJCQlwdF92YWx1ZSArPSBEUk1fU1lOQ09CSl9CSU5BUllfUE9J TlQ7Cj4gKwl9Cj4gKwlyZXR1cm4gZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN5bmNvYmosIHB0X3Zh bHVlLCBmbGFncywgZmVuY2UpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfc2Vh cmNoX2ZlbmNlKTsKPiArCj4gIC8qKgo+ICAgKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIC0gbG9v a3VwIGFuZCByZWZlcmVuY2UgdGhlIGZlbmNlIGluIGEgc3luYyBvYmplY3QKPiAgICogQGZpbGVf cHJpdmF0ZTogZHJtIGZpbGUgcHJpdmF0ZSBwb2ludGVyCj4gQEAgLTIyOCw3ICs0MzIsNyBAQCBz dGF0aWMgaW50IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNv YmogKnN5bmNvYmopCj4gICAqIEBmZW5jZTogb3V0IHBhcmFtZXRlciBmb3IgdGhlIGZlbmNlCj4g ICAqCj4gICAqIFRoaXMgaXMganVzdCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY29tYmlu ZXMgZHJtX3N5bmNvYmpfZmluZCgpIGFuZAo+IC0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQoKS4K PiArICogZHJtX3N5bmNvYmpfbG9va3VwX2ZlbmNlKCkuCj4gICAqCj4gICAqIFJldHVybnMgMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgdmFsdWUgb24gZmFpbHVyZS4gT24gc3VjY2Vz cyBAZmVuY2UKPiAgICogY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGZlbmNlLCB3aGljaCBt dXN0IGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcKPiBAQCAtMjM5LDE1ICs0NDMsOSBAQCBpbnQgZHJt X3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKPiAgCQkJ ICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdmF0ZSwgaGFuZGxlKTsKPiAtCWlu dCByZXQgPSAwOwo+IC0KPiAtCWlmICghc3luY29iaikKPiAtCQlyZXR1cm4gLUVOT0VOVDsKPiAr CWludCByZXQ7Cj4gIAo+IC0JKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmop Owo+IC0JaWYgKCEqZmVuY2UpIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JfQo+ICsJcmV0ID0g ZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIHBvaW50LCBmbGFncywgZmVuY2UpOwo+ ICAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0y NjQsNyArNDYyLDcgQEAgdm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQo+ ICAJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gY29udGFpbmVyX29mKGtyZWYsCj4gIAkJ CQkJCSAgIHN0cnVjdCBkcm1fc3luY29iaiwKPiAgCQkJCQkJICAgcmVmY291bnQpOwo+IC0JZHJt X3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqLCAwLCBOVUxMKTsKPiArCWRybV9zeW5jb2Jq X2Zpbmkoc3luY29iaik7Cj4gIAlrZnJlZShzeW5jb2JqKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9M KGRybV9zeW5jb2JqX2ZyZWUpOwo+IEBAIC0yOTQsNiArNDkyLDExIEBAIGludCBkcm1fc3luY29i al9jcmVhdGUoc3RydWN0IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdz LAo+ICAJa3JlZl9pbml0KCZzeW5jb2JqLT5yZWZjb3VudCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgm c3luY29iai0+Y2JfbGlzdCk7Cj4gIAlzcGluX2xvY2tfaW5pdCgmc3luY29iai0+bG9jayk7Cj4g KwlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElORSkKPiArCQlzeW5j b2JqLT50eXBlID0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORTsKPiArCWVsc2UKPiArCQlzeW5j b2JqLT50eXBlID0gRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlk7Cj4gKwlkcm1fc3luY29ial9pbml0 KHN5bmNvYmopOwo+ICAKPiAgCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxF RCkgewo+ICAJCXJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzeW5jb2JqKTsK PiBAQCAtNTc2LDcgKzc3OSw4IEBAIGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAgCS8q IG5vIHZhbGlkIGZsYWdzIHlldCAqLwo+IC0JaWYgKGFyZ3MtPmZsYWdzICYgfkRSTV9TWU5DT0JK X0NSRUFURV9TSUdOQUxFRCkKPiArCWlmIChhcmdzLT5mbGFncyAmIH4oRFJNX1NZTkNPQkpfQ1JF QVRFX1NJR05BTEVEIHwKPiArCQkJICAgIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5F KSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlyZXR1cm4gZHJtX3N5bmNvYmpfY3JlYXRl X2FzX2hhbmRsZShmaWxlX3ByaXZhdGUsCj4gQEAgLTY2OSw5ICs4NzMsOCBAQCBzdGF0aWMgdm9p ZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwK PiAgCXN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQgPQo+ICAJCWNvbnRhaW5lcl9vZihj Yiwgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSwgc3luY29ial9jYik7Cj4gIAo+IC0JLyogVGhp cyBoYXBwZW5zIGluc2lkZSB0aGUgc3luY29iaiBsb2NrICovCj4gLQl3YWl0LT5mZW5jZSA9IGRt YV9mZW5jZV9nZXQocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKPiAt CQkJCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9jaykpKTsKPiArCWRybV9z eW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAwLCAwLCAmd2FpdC0+ZmVuY2UpOwo+ICsKPiAg CXdha2VfdXBfcHJvY2Vzcyh3YWl0LT50YXNrKTsKPiAgfQo+ICAKPiBAQCAtNjk4LDcgKzkwMSw4 IEBAIHN0YXRpYyBzaWduZWQgbG9uZyBkcm1fc3luY29ial9hcnJheV93YWl0X3RpbWVvdXQoc3Ry dWN0IGRybV9zeW5jb2JqICoqc3luY29ianMsCj4gIAlzaWduYWxlZF9jb3VudCA9IDA7Cj4gIAlm b3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewo+ICAJCWVudHJpZXNbaV0udGFzayA9IGN1cnJl bnQ7Cj4gLQkJZW50cmllc1tpXS5mZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2Jq c1tpXSk7Cj4gKwkJcmV0ID0gZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmpzW2ldLCAw LCAwLAo+ICsJCQkJCSAgICAgICAmZW50cmllc1tpXS5mZW5jZSk7Cj4gIAkJaWYgKCFlbnRyaWVz W2ldLmZlbmNlKSB7Cj4gIAkJCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJ VF9GT1JfU1VCTUlUKSB7Cj4gIAkJCQljb250aW51ZTsKPiBAQCAtOTcwLDEyICsxMTc0LDEzIEBA IGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCj4gIAlpZiAocmV0IDwgMCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCWZvciAoaSA9IDA7 IGkgPCBhcmdzLT5jb3VudF9oYW5kbGVzOyBpKyspCj4gLQkJZHJtX3N5bmNvYmpfcmVwbGFjZV9m ZW5jZShzeW5jb2Jqc1tpXSwgMCwgTlVMTCk7Cj4gLQo+ICsJZm9yIChpID0gMDsgaSA8IGFyZ3Mt PmNvdW50X2hhbmRsZXM7IGkrKykgewo+ICsJCWRybV9zeW5jb2JqX2Zpbmkoc3luY29ianNbaV0p Owo+ICsJCWRybV9zeW5jb2JqX2luaXQoc3luY29ianNbaV0pOwo+ICsJfQo+ICAJZHJtX3N5bmNv YmpfYXJyYXlfZnJlZShzeW5jb2JqcywgYXJncy0+Y291bnRfaGFuZGxlcyk7Cj4gIAo+IC0JcmV0 dXJuIDA7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBpbnQKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggMGE4ZDJkNjRmMzgwLi44YThkMjFi MjQxMTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j Cj4gQEAgLTIxMzcsNyArMjEzNyw3IEBAIGF3YWl0X2ZlbmNlX2FycmF5KHN0cnVjdCBpOTE1X2V4 ZWNidWZmZXIgKmViLAo+ICAJCWlmICghKGZsYWdzICYgSTkxNV9FWEVDX0ZFTkNFX1dBSVQpKQo+ ICAJCQljb250aW51ZTsKPiAgCj4gLQkJZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3lu Y29iaik7Cj4gKwkJZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsICZmZW5j ZSk7Cj4gIAkJaWYgKCFmZW5jZSkKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmou aAo+IGluZGV4IDJlZGE0NGRlZjYzOS4uODViMzZkNGU1M2VlIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvZHJtL2RybV9zeW5jb2JqLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oCj4g QEAgLTMwLDYgKzMwLDExIEBACj4gIAo+ICBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2I7Cj4gIAo+ICtl bnVtIGRybV9zeW5jb2JqX3R5cGUgewo+ICsJRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlksCj4gKwlE Uk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FCj4gK307Cj4gKwo+ICAvKioKPiAgICogc3RydWN0IGRy bV9zeW5jb2JqIC0gc3luYyBvYmplY3QuCj4gICAqCgpUaGUga2VybmVsZG9jIGZvciB0aGlzIGFs c28gaXNuJ3QgYWNjdXJhdGUgYW55bW9yZS4KCldpdGggdGhlIGtlcm5lbC1kb2MgcG9saXNoZWQ6 CgpBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCkJ1dCBJ IHRoaW5rIHdlIGRlZmluaXRlbHkgd2FudCBhIGZ1bGwgYWNrIGZvciB0aGUgdWFwaSBmcm9tIHJh ZHYvYW52IGd1eXMKKHBsdXMgdGhlIHVzZXJzcGFjZSBmb3IgZWl0aGVyIG9mIHRob3NlKS4KLURh bmllbAoKPiBAQCAtNDEsMTkgKzQ2LDM2IEBAIHN0cnVjdCBkcm1fc3luY29iaiB7Cj4gIAkgKi8K PiAgCXN0cnVjdCBrcmVmIHJlZmNvdW50Owo+ICAJLyoqCj4gLQkgKiBAZmVuY2U6Cj4gLQkgKiBO VUxMIG9yIGEgcG9pbnRlciB0byB0aGUgZmVuY2UgYm91bmQgdG8gdGhpcyBvYmplY3QuCj4gLQkg Kgo+IC0JICogVGhpcyBmaWVsZCBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHkuIFVzZSBkcm1f c3luY29ial9mZW5jZV9nZXQoKQo+IC0JICogYW5kIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uo KSBpbnN0ZWFkLgo+ICsJICogQHR5cGU6IGluZGljYXRlIHN5bmNvYmogdHlwZQo+ICsJICovCj4g KwllbnVtIGRybV9zeW5jb2JqX3R5cGUgdHlwZTsKPiArCS8qKgo+ICsJICogQHdxOiB3YWl0IHNp Z25hbCBvcGVyYXRpb24gd29yayBxdWV1ZQo+ICsJICovCj4gKwl3YWl0X3F1ZXVlX2hlYWRfdAl3 cTsKPiArCS8qKgo+ICsJICogQHRpbWVsaW5lX2NvbnRleHQ6IGZlbmNlIGNvbnRleHQgdXNlZCBi eSB0aW1lbGluZQo+ICAJICovCj4gLQlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpmZW5jZTsKPiAr CXU2NCB0aW1lbGluZV9jb250ZXh0Owo+ICAJLyoqCj4gLQkgKiBAY2JfbGlzdDogTGlzdCBvZiBj YWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0cyByZXBsYWNlZC4KPiArCSAqIEB0 aW1lbGluZTogc3luY29iaiB0aW1lbGluZSB2YWx1ZSwgd2hpY2ggaW5kaWNhdGVzIHBvaW50IGlz IHNpZ25hbGVkLgo+ICAJICovCj4gKwl1NjQgdGltZWxpbmU7Cj4gKwkvKioKPiArCSAqIEBzaWdu YWxfcG9pbnQ6IHdoaWNoIGluZGljYXRlcyB0aGUgbGF0ZXN0IHNpZ25hbGVyIHBvaW50Lgo+ICsJ ICovCj4gKwl1NjQgc2lnbmFsX3BvaW50Owo+ICsJLyoqCj4gKwkgKiBAc2lnbmFsX3B0X2xpc3Q6 IHNpZ25hbGVyIHBvaW50IGxpc3QuCj4gKwkgKi8KPiArCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFs X3B0X2xpc3Q7Cj4gKwo+ICsJLyoqCj4gKyAgICAgICAgICogQGNiX2xpc3Q6IExpc3Qgb2YgY2Fs bGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUgJmZlbmNlIGdldHMgcmVwbGFjZWQuCj4gKyAgICAgICAg ICovCj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGNiX2xpc3Q7Cj4gIAkvKioKPiAtCSAqIEBsb2NrOiBQ cm90ZWN0cyAmY2JfbGlzdCBhbmQgd3JpdGUtbG9ja3MgJmZlbmNlLgo+ICsJICogQGxvY2s6IFBy b3RlY3RzIHN5bmNvYmogbGlzdCBhbmQgd3JpdGUtbG9ja3MgJmZlbmNlLgo+ICAJICovCj4gIAlz cGlubG9ja190IGxvY2s7Cj4gIAkvKioKPiBAQCAtNjgsNyArOTAsNyBAQCB0eXBlZGVmIHZvaWQg KCpkcm1fc3luY29ial9mdW5jX3QpKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPiAgLyoq Cj4gICAqIHN0cnVjdCBkcm1fc3luY29ial9jYiAtIGNhbGxiYWNrIGZvciBkcm1fc3luY29ial9h ZGRfY2FsbGJhY2sKPiAgICogQG5vZGU6IHVzZWQgYnkgZHJtX3N5bmNvYl9hZGRfY2FsbGJhY2sg dG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvCj4gLSAqCSAgJmRybV9zeW5jb2JqLmNiX2xpc3QKPiAr ICogICAgICAgJmRybV9zeW5jb2JqLmNiX2xpc3QKPiAgICogQGZ1bmM6IGRybV9zeW5jb2JqX2Z1 bmNfdCB0byBjYWxsCj4gICAqCj4gICAqIFRoaXMgc3RydWN0IHdpbGwgYmUgaW5pdGlhbGl6ZWQg YnkgZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrLCBhZGRpdGlvbmFsCj4gQEAgLTEwNiwyOSArMTI4 LDYgQEAgZHJtX3N5bmNvYmpfcHV0KHN0cnVjdCBkcm1fc3luY29iaiAqb2JqKQo+ICAJa3JlZl9w dXQoJm9iai0+cmVmY291bnQsIGRybV9zeW5jb2JqX2ZyZWUpOwo+ICB9Cj4gIAo+IC0vKioKPiAt ICogZHJtX3N5bmNvYmpfZmVuY2VfZ2V0IC0gZ2V0IGEgcmVmZXJlbmNlIHRvIGEgZmVuY2UgaW4g YSBzeW5jIG9iamVjdAo+IC0gKiBAc3luY29iajogc3luYyBvYmplY3QuCj4gLSAqCj4gLSAqIFRo aXMgYWNxdWlyZXMgYWRkaXRpb25hbCByZWZlcmVuY2UgdG8gJmRybV9zeW5jb2JqLmZlbmNlIGNv bnRhaW5lZCBpbiBAb2JqLAo+IC0gKiBpZiBub3QgTlVMTC4gSXQgaXMgaWxsZWdhbCB0byBjYWxs IHRoaXMgd2l0aG91dCBhbHJlYWR5IGhvbGRpbmcgYSByZWZlcmVuY2UuCj4gLSAqIE5vIGxvY2tz IHJlcXVpcmVkLgo+IC0gKgo+IC0gKiBSZXR1cm5zOgo+IC0gKiBFaXRoZXIgdGhlIGZlbmNlIG9m IEBvYmogb3IgTlVMTCBpZiB0aGVyZSdzIG5vbmUuCj4gLSAqLwo+IC1zdGF0aWMgaW5saW5lIHN0 cnVjdCBkbWFfZmVuY2UgKgo+IC1kcm1fc3luY29ial9mZW5jZV9nZXQoc3RydWN0IGRybV9zeW5j b2JqICpzeW5jb2JqKQo+IC17Cj4gLQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAtCj4gLQly Y3VfcmVhZF9sb2NrKCk7Cj4gLQlmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnN5bmNv YmotPmZlbmNlKTsKPiAtCXJjdV9yZWFkX3VubG9jaygpOwo+IC0KPiAtCXJldHVybiBmZW5jZTsK PiAtfQo+IC0KPiAgc3RydWN0IGRybV9zeW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2YXRlLAo+ICAJCQkJICAgICB1MzIgaGFuZGxlKTsKPiAgdm9pZCBk cm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0 IHBvaW50LAo+IEBAIC0xNDIsNSArMTQxLDcgQEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1 Y3QgZHJtX3N5bmNvYmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCj4gIGludCBkcm1f c3luY29ial9nZXRfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAo+ICAJCQkg ICBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHUzMiAqaGFuZGxlKTsKPiAgaW50IGRybV9z eW5jb2JqX2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIGludCAqcF9mZCk7Cj4g K2ludCBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2Jq LCB1NjQgcG9pbnQsIHU2NCBmbGFncywKPiArCQkJICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVu Y2UpOwo+ICAKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgg Yi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCj4gaW5kZXggMzAwZjMzNjYzM2YyLi5jZWJkYjI1NDFl YjcgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaAo+ICsrKyBiL2luY2x1ZGUv dWFwaS9kcm0vZHJtLmgKPiBAQCAtNzE3LDYgKzcxNyw3IEBAIHN0cnVjdCBkcm1fcHJpbWVfaGFu ZGxlIHsKPiAgc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSB7Cj4gIAlfX3UzMiBoYW5kbGU7Cj4g ICNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEICgxIDw8IDApCj4gKyNkZWZpbmUg RFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUgKDEgPDwgMSkKPiAgCV9fdTMyIGZsYWdz Owo+ICB9Owo+ICAKPiAtLSAKPiAyLjE3LjEKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK