From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH] drm/atomic-helper: roll out commit synchronization Date: Mon, 02 Jan 2017 14:09:13 +0200 Message-ID: <4882813.aDmsgc3lL8@avalon> References: <1465388359-8070-9-git-send-email-daniel.vetter@ffwll.ch> <1465398936-22305-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [IPv6:2001:4b98:dc2:45:216:3eff:febb:480d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 013CF89B95 for ; Mon, 2 Jan 2017 12:09:13 +0000 (UTC) In-Reply-To: <1465398936-22305-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter , Tomeu Vizoso , Daniel Stone , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org SGkgRGFuaWVsLAoKVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCgpPbiBXZWRuZXNkYXkgMDggSnVu IDIwMTYgMTc6MTU6MzYgRGFuaWVsIFZldHRlciB3cm90ZToKPiBUbyBmYWNpbGl0YXRlIGVhc2ll ciByZXZpZXdpbmcgdGhpcyBpcyBzcGxpdCBvdXQgZnJvbSB0aGUgb3ZlcmFsbAo+IG5vbmJsb2Nr aW5nIGNvbW1pdCByZXdvcmsuIEl0IGp1c3Qgcm9sbHMgb3V0IHRoZSBoZWxwZXIgZnVuY3Rpb25z Cj4gYW5kIHVzZXMgdGhlbSBpbiB0aGUgbWFpbiBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQoKSBm dW5jdGlvbgo+IHRvIG1ha2UgaXQgY2xlYXIgd2hlcmUgaW4gdGhlIGZsb3cgdGhleSdyZSB1c2Vk Lgo+IAo+IFRoZSBuZXh0IHBhdGNoIHdpbGwgYWN0dWFsbHkgc3BsaXQgZHJtX2F0b21pY19oZWxw ZXJfY29tbWl0KCkgaW50bwo+IDIgcGllY2VzLCB3aXRoIHRoZSB0YWlsIGJlaW5nIHJ1biBhc3lu Y2hyb25vdXNseSBmcm9tIGEgd29ya2VyLgo+IAo+IHYyOiBJbXByb3ZlIGtlcm5lbGRvY3MgKE1h YXJ0ZW4pLgo+IAo+IHYzOiBEb24ndCBjb252ZXJ0IEVSRVNUQVJUU1lTIHRvIEVJTlRSIChNYWFy dGVuKS4gQWxzbyBkb24ndCBmYWlsIGlmCj4gdGhlIHdhaXQgc3VjY2VlZCBpbiBzdGFsbF9jaGVj ayAtIHdlIG5lZWQgdG8gY29udmVydCB0aGF0IGNhc2UgKGl0Cj4gcmV0dXJucyB0aGUgcmVtYWlu aW5nIGppZmZpZXMpIHRvIDAgZm9yIHN1Y2Nlc3MuCj4gCj4gdjQ6IFN3aXRjaCB0byBsb25nIGZv ciB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQgcmV0dXJuIHZhbHVlCj4gZXZlcnl3aGVyZSAo TWFhcnRlbikuCj4gCj4gUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxh bmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gVGVzdGVkLWJ5OiBUb21ldSBWaXpvc28gPHRvbWV1 LnZpem9zb0Bjb2xsYWJvcmEuY29tPgo+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5s YW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IENjOiBUb21ldSBWaXpvc28gPHRvbWV1LnZpem9z b0BnbWFpbC5jb20+Cj4gQ2M6IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgo+ IFRlc3RlZC1ieTogTGl2aXUgRHVkYXUgPExpdml1LkR1ZGF1QGFybS5jb20+Cj4gU2lnbmVkLW9m Zi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgMzQ3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oICAgICB8 ICAgNyArCj4gIDIgZmlsZXMgY2hhbmdlZCwgMzU0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGluZGV4IDMyNmVlMzRjZGJhNC4uZmEyZjg5MjUzYjE3 Cj4gMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IEBAIC0xMTU1LDYgKzEx NTUsMTAgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAJaWYgKG5vbmJsb2NrKQo+ICAJCXJldHVybiAtRUJVU1k7Cj4gCj4gKwlyZXQgPSBk cm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoc3RhdGUsIG5vbmJsb2NrKTsKPiArCWlmIChy ZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gIAlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wcmVw YXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiBA QCAtMTE4NSwxNiArMTE4OSwyMiBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gCj4gIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mZW5j ZXMoZGV2LCBzdGF0ZSk7Cj4gCj4gKwlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRl bmNpZXMoc3RhdGUpOwo+ICsKPiAgCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2Rp c2FibGVzKGRldiwgc3RhdGUpOwo+IAo+ICAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5l cyhkZXYsIHN0YXRlLCBmYWxzZSk7Cj4gCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9k ZXNldF9lbmFibGVzKGRldiwgc3RhdGUpOwo+IAo+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X2h3X2RvbmUoc3RhdGUpOwo+ICsKPiAgCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFu a3MoZGV2LCBzdGF0ZSk7Cj4gCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhk ZXYsIHN0YXRlKTsKPiAKPiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVhbnVwX2RvbmUo c3RhdGUpOwo+ICsKPiAgCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gCj4gIAlyZXR1 cm4gMDsKPiBAQCAtMTIzOSw2ICsxMjQ5LDMwNiBAQCBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX2NvbW1pdCk7Cj4gICAqIGJlaW5nIGRpc3BsYXllZC4KPiAgICovCj4gCj4gK3N0YXRp YyBpbnQgc3RhbGxfY2hlY2tzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBub25ibG9jaykK PiArewo+ICsJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0LCAqc3RhbGxfY29tbWl0ID0g TlVMTDsKPiArCWJvb2wgY29tcGxldGVkID0gdHJ1ZTsKPiArCWludCBpOwo+ICsJbG9uZyByZXQg PSAwOwo+ICsKPiArCXNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICsJaSA9IDA7Cj4g KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbW1pdCwgJmNydGMtPmNvbW1pdF9saXN0LCBjb21taXRf ZW50cnkpIHsKPiArCQlpZiAoaSA9PSAwKSB7Cj4gKwkJCWNvbXBsZXRlZCA9IHRyeV93YWl0X2Zv cl9jb21wbGV0aW9uKCZjb21taXQtCj5mbGlwX2RvbmUpOwo+ICsJCQkvKiBVc2Vyc3BhY2UgaXMg bm90IGFsbG93ZWQgdG8gZ2V0IGFoZWFkIG9mIHRoZSAKcHJldmlvdXMKPiArCQkJICogY29tbWl0 IHdpdGggbm9uYmxvY2tpbmcgb25lcy4gKi8KPiArCQkJaWYgKCFjb21wbGV0ZWQgJiYgbm9uYmxv Y2spIHsKPiArCQkJCXNwaW5fdW5sb2NrKCZjcnRjLT5jb21taXRfbG9jayk7Cj4gKwkJCQlyZXR1 cm4gLUVCVVNZOwo+ICsJCQl9Cj4gKwkJfSBlbHNlIGlmIChpID09IDEpIHsKPiArCQkJc3RhbGxf Y29tbWl0ID0gY29tbWl0Owo+ICsJCQlkcm1fY3J0Y19jb21taXRfZ2V0KHN0YWxsX2NvbW1pdCk7 Cj4gKwkJfSBlbHNlCj4gKwkJCWJyZWFrOwo+ICsKPiArCQlpKys7Cj4gKwl9Cj4gKwlzcGluX3Vu bG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICsKPiArCWlmICghc3RhbGxfY29tbWl0KQo+ICsJ CXJldHVybiAwOwo+ICsKPiArCS8qIFdlIGRvbid0IHdhbnQgdG8gbGV0IGNvbW1pdHMgZ2V0IGFo ZWFkIG9mIGNsZWFudXAgd29yayB0b28gbXVjaCwKPiArCSAqIHN0YWxsaW5nIG9uIDJuZCBwcmV2 aW91cyBjb21taXQgbWVhbnMgdHJpcGxlLWJ1ZmZlciB3b24ndCBldmVyIApzdGFsbC4KPiArCSAq Lwo+ICsJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoJmNv bW1pdC0+Y2xlYW51cF9kb25lLAo+ICsJCQkJCQkJMTAqSFopOwo+ICsJaWYgKHJldCA9PSAwKQo+ ICsJCURSTV9FUlJPUigiW0NSVEM6JWQ6JXNdIGNsZWFudXBfZG9uZSB0aW1lZCBvdXRcbiIsCj4g KwkJCSAgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Cj4gKwo+ICsJZHJtX2NydGNfY29tbWl0 X3B1dChzdGFsbF9jb21taXQpOwo+ICsKPiArCXJldHVybiByZXQgPCAwID8gcmV0IDogMDsKPiAr fQo+ICsKPiArLyoqCj4gKyAqIGRybV9hdG9taWNfaGVscGVyX3NldHVwX2NvbW1pdCAtIHNldHVw IHBvc3NpYmx5IG5vbmJsb2NraW5nIGNvbW1pdAo+ICsgKiBAc3RhdGU6IG5ldyBtb2Rlc2V0IHN0 YXRlIHRvIGJlIGNvbW1pdHRlZAo+ICsgKiBAbm9uYmxvY2s6IHdoZXRoZXIgbm9uYmxvY2tpbmcg YmVoYXZpb3IgaXMgcmVxdWVzdGVkLgo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHByZXBhcmVz IEBzdGF0ZSB0byBiZSB1c2VkIGJ5IHRoZSBhdG9taWMgaGVscGVyJ3Mgc3VwcG9ydAo+IGZvciAr ICogbm9uYmxvY2tpbmcgY29tbWl0cy4gRHJpdmVycyB1c2luZyB0aGUgbm9uYmxvY2tpbmcgY29t bWl0Cj4gaW5mcmFzdHJ1Y3R1cmUgKyAqIHNob3VsZCBhbHdheXMgY2FsbCB0aGlzIGZ1bmN0aW9u IGZyb20gdGhlaXIKPiAtPmF0b21pY19jb21taXQgaG9vay4gKyAqCj4gKyAqIFRvIGJlIGFibGUg dG8gdXNlIHRoaXMgc3VwcG9ydCBkcml2ZXJzIG5lZWQgdG8gdXNlIGEgZmV3IG1vcmUgaGVscGVy Cj4gKyAqIGZ1bmN0aW9ucy4gZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVz KCkgbXVzdCBiZSBjYWxsZWQKPiBiZWZvcmUgKyAqIGFjdHVhbGx5IGNvbW1pdHRpbmcgdGhlIGhh cmR3YXJlIHN0YXRlLCBhbmQgZm9yIG5vbmJsb2NraW5nCj4gY29tbWl0cyB0aGlzIGNhbGwgKyAq IG11c3QgYmUgcGxhY2VkIGluIHRoZSBhc3luYyB3b3JrZXIuIFNlZSBhbHNvCj4gZHJtX2F0b21p Y19oZWxwZXJfc3dhcF9zdGF0ZSgpICsgKiBhbmQgaXQncyBzdGFsbCBwYXJhbWV0ZXIsIGZvciB3 aGVuIGEKPiBkcml2ZXIncyBjb21taXQgaG9va3MgbG9vayBhdCB0aGUgKyAqIC0+c3RhdGUgcG9p bnRlcnMgb2Ygc3RydWN0ICZkcm1fY3J0YywKPiAmZHJtX3BsYW5lIG9yICZkcm1fY29ubmVjdG9y IGRpcmVjdGx5LiArICoKPiArICogQ29tcGxldGlvbiBvZiB0aGUgaGFyZHdhcmUgY29tbWl0IHN0 ZXAgbXVzdCBiZSBzaWduYWxsZWQgdXNpbmcKPiArICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X2h3X2RvbmUoKS4gQWZ0ZXIgdGhpcyBzdGVwIHRoZSBkcml2ZXIgaXMgbm90Cj4gYWxsb3dlZCAr ICogdG8gcmVhZCBvciBjaGFuZ2UgYW55IHBlcm1hbmVudCBzb2Z0d2FyZSBvciBoYXJkd2FyZSBt b2Rlc2V0Cj4gc3RhdGUuIFRoZSBvbmx5ICsgKiBleGNlcHRpb24gaXMgc3RhdGUgcHJvdGVjdGVk IGJ5IG90aGVyIG1lYW5zIHRoYW4KPiAmZHJtX21vZGVzZXRfbG9jayBsb2Nrcy4gKyAqIE9ubHkg dGhlIGZyZWUgc3RhbmRpbmcgQHN0YXRlIHdpdGggcG9pbnRlcnMgdG8KPiB0aGUgb2xkIHN0YXRl IHN0cnVjdHVyZXMgY2FuICsgKiBiZSBpbnNwZWN0ZWQsIGUuZy4gdG8gY2xlYW4gdXAgb2xkIGJ1 ZmZlcnMKPiB1c2luZwo+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcygpLgo+ ICsgKgo+ICsgKiBBdCB0aGUgdmVyeSBlbmQsIGJlZm9yZSBjbGVhbmluZyB1cCBAc3RhdGUgZHJp dmVycyBtdXN0IGNhbGwKPiArICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2NsZWFudXBfZG9u ZSgpLgo+ICsgKgo+ICsgKiBUaGlzIGlzIGFsbCBpbXBsZW1lbnRlZCBieSBpbiBkcm1fYXRvbWlj X2hlbHBlcl9jb21taXQoKSwgZ2l2aW5nIGRyaXZlcnMKPiBhICsgKiBjb21wbGV0ZSBhbmQgZXNh eS10by11c2UgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKPiBhdG9taWNfY29tbWl0KCkg aG9vay4gKyAqCj4gKyAqIFRoZSB0cmFja2luZyBvZiBhc3luY2hyb25vdXNseSBleGVjdXRlZCBh bmQgc3RpbGwgcGVuZGluZyBjb21taXRzIGlzCj4gZG9uZSArICogdXNpbmcgdGhlIGNvcmUgc3Ry dWN0dXJlICZkcm1fY3J0Y19jb21taXQuCj4gKyAqCj4gKyAqIEJ5IGRlZmF1bHQgdGhlcmUncyBu byBuZWVkIHRvIGNsZWFuIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgdGhpcwo+IGZ1bmN0aW9u ICsgKiBleHBsaWNpdGx5OiBkcm1fYXRvbWljX3N0YXRlX2RlZmF1bHRfY2xlYXIoKSB3aWxsIHRh a2UgY2FyZSBvZgo+IHRoYXQgKyAqIGF1dG9tYXRpY2FsbHkuCj4gKyAqCj4gKyAqIFJldHVybnM6 Cj4gKyAqCj4gKyAqIDAgb24gc3VjY2Vzcy4gLUVCVVNZIHdoZW4gdXNlcnNwYWNlIHNjaGVkdWxl cyBub25ibG9ja2luZyBjb21taXRzIHRvbwo+IGZhc3QsICsgKiAtRU5PTUVNIG9uIGFsbG9jYXRp b24gZmFpbHVyZXMgYW5kIC1FSU5UUiB3aGVuIGEgc2lnbmFsIGlzCj4gcGVuZGluZy4gKyAqLwo+ ICtpbnQgZHJtX2F0b21pY19oZWxwZXJfc2V0dXBfY29tbWl0KHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSwKPiArCQkJCSAgIGJvb2wgbm9uYmxvY2spCj4gK3sKPiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXN0 cnVjdCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPiArCWludCBpLCByZXQ7Cj4gKwo+ICsJZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJCWNv bW1pdCA9IGt6YWxsb2Moc2l6ZW9mKCpjb21taXQpLCBHRlBfS0VSTkVMKTsKPiArCQlpZiAoIWNv bW1pdCkKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJCWluaXRfY29tcGxldGlvbigmY29t bWl0LT5mbGlwX2RvbmUpOwo+ICsJCWluaXRfY29tcGxldGlvbigmY29tbWl0LT5od19kb25lKTsK PiArCQlpbml0X2NvbXBsZXRpb24oJmNvbW1pdC0+Y2xlYW51cF9kb25lKTsKPiArCQlJTklUX0xJ U1RfSEVBRCgmY29tbWl0LT5jb21taXRfZW50cnkpOwo+ICsJCWtyZWZfaW5pdCgmY29tbWl0LT5y ZWYpOwo+ICsJCWNvbW1pdC0+Y3J0YyA9IGNydGM7Cj4gKwo+ICsJCXN0YXRlLT5jcnRjc1tpXS5j b21taXQgPSBjb21taXQ7Cj4gKwo+ICsJCXJldCA9IHN0YWxsX2NoZWNrcyhjcnRjLCBub25ibG9j ayk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJLyogRHJpdmVycyBv bmx5IHNlbmQgb3V0IGV2ZW50cyB3aGVuIGF0IGxlYXN0IGVpdGhlciBjdXJyZW50IApvcgo+ICsJ CSAqIG5ldyBDUlRDIHN0YXRlIGlzIGFjdGl2ZS4gQ29tcGxldGUgcmlnaHQgYXdheSBpZiBldmVy eXRoaW5nCj4gKwkJICogc3RheXMgb2ZmLiAqLwo+ICsJCWlmICghY3J0Yy0+c3RhdGUtPmFjdGl2 ZSAmJiAhY3J0Y19zdGF0ZS0+YWN0aXZlKSB7Cj4gKwkJCWNvbXBsZXRlX2FsbCgmY29tbWl0LT5m bGlwX2RvbmUpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCS8qIExlZ2FjeSBjdXJz b3IgdXBkYXRlcyBhcmUgZnVsbHkgdW5zeW5jZWQuICovCj4gKwkJaWYgKHN0YXRlLT5sZWdhY3lf Y3Vyc29yX3VwZGF0ZSkgewo+ICsJCQljb21wbGV0ZV9hbGwoJmNvbW1pdC0+ZmxpcF9kb25lKTsK PiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQlpZiAoIWNydGNfc3RhdGUtPmV2ZW50KSB7 Cj4gKwkJCWNvbW1pdC0+ZXZlbnQgPSBremFsbG9jKHNpemVvZigqY29tbWl0LT5ldmVudCksCj4g KwkJCQkJCUdGUF9LRVJORUwpOwo+ICsJCQlpZiAoIWNvbW1pdC0+ZXZlbnQpCj4gKwkJCQlyZXR1 cm4gLUVOT01FTTsKPiArCj4gKwkJCWNydGNfc3RhdGUtPmV2ZW50ID0gY29tbWl0LT5ldmVudDsK PiArCQl9Cj4gKwo+ICsJCWNydGNfc3RhdGUtPmV2ZW50LT5iYXNlLmNvbXBsZXRpb24gPSAmY29t bWl0LT5mbGlwX2RvbmU7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZ TUJPTChkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQpOwo+ICsKPiArCj4gK3N0YXRpYyBz dHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpwcmVjZWVkaW5nX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPiArCWludCBp ID0gMDsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbW1pdCwgJmNydGMtPmNvbW1pdF9s aXN0LCBjb21taXRfZW50cnkpIHsKPiArCQkvKiBza2lwIHRoZSBmaXJzdCBlbnRyeSwgdGhhdCdz IHRoZSBjdXJyZW50IGNvbW1pdCAqLwo+ICsJCWlmIChpID09IDEpCj4gKwkJCXJldHVybiBjb21t aXQ7Cj4gKwkJaSsrOwo+ICsJfQo+ICsKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICsvKioK PiArICogZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzIC0gd2FpdCBmb3Ig cmVxdWlyZWQgcHJlY2VlZGluZwo+IGNvbW1pdHMgKyAqIEBzdGF0ZTogbmV3IG1vZGVzZXQgc3Rh dGUgdG8gYmUgY29tbWl0dGVkCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gd2FpdHMgZm9yIGFs bCBwcmVjZWVkaW5nIGNvbW1pdHMgdGhhdCB0b3VjaCB0aGUgc2FtZSBDUlRDCj4gYXMgKyAqIEBz dGF0ZSB0byBib3RoIGJlIGNvbW1pdHRlZCB0byB0aGUgaGFyZHdhcmUgKGFzIHNpZ25hbGxlZCBi eQo+ICsgKiBkcm1fYXRvbWljX0hlbHBlcl9jb21taXRfaHdfZG9uZSkgYW5kIGV4ZWN1dGVkIGJ5 IHRoZSBoYXJkd2FyZSAoYXMKPiBzaWduYWxsZWQgKyAqIGJ5IGNhbGxpbmcgZHJtX2NydGNfdmJs YW5rX3NlbmRfZXZlbnQgb24gdGhlIGV2ZW50IG1lbWJlciBvZgo+ICsgKiAmZHJtX2NydGNfc3Rh dGUpLgo+ICsgKgo+ICsgKiBUaGlzIGlzIHBhcnQgb2YgdGhlIGF0b21pYyBoZWxwZXIgc3VwcG9y dCBmb3Igbm9uYmxvY2tpbmcgY29tbWl0cywgc2VlCj4gKyAqIGRybV9hdG9taWNfaGVscGVyX3Nl dHVwX2NvbW1pdCgpIGZvciBhbiBvdmVydmlldy4KPiArICovCj4gK3ZvaWQgZHJtX2F0b21pY19o ZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlCj4gKnN0 YXRlKSArewo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+ICsJ aW50IGk7Cj4gKwlsb25nIHJldDsKPiArCj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwkJc3Bpbl9sb2NrKCZjcnRjLT5jb21taXRfbG9j ayk7Cj4gKwkJY29tbWl0ID0gcHJlY2VlZGluZ19jb21taXQoY3J0Yyk7Cj4gKwkJaWYgKGNvbW1p dCkKPiArCQkJZHJtX2NydGNfY29tbWl0X2dldChjb21taXQpOwo+ICsJCXNwaW5fdW5sb2NrKCZj cnRjLT5jb21taXRfbG9jayk7Cj4gKwo+ICsJCWlmICghY29tbWl0KQo+ICsJCQljb250aW51ZTsK PiArCj4gKwkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZjb21taXQtPmh3X2Rv bmUsCj4gKwkJCQkJCSAgMTAqSFopOwo+ICsJCWlmIChyZXQgPT0gMCkKPiArCQkJRFJNX0VSUk9S KCJbQ1JUQzolZDolc10gaHdfZG9uZSB0aW1lZCBvdXRcbiIsCj4gKwkJCQkgIGNydGMtPmJhc2Uu aWQsIGNydGMtPm5hbWUpOwo+ICsKPiArCQkvKiBDdXJyZW50bHkgbm8gc3VwcG9ydCBmb3Igb3Zl cndyaXRpbmcgZmxpcHMsIGhlbmNlCj4gKwkJICogc3RhbGwgZm9yIHByZXZpb3VzIG9uZSB0byBl eGVjdXRlIGNvbXBsZXRlbHkuICovCj4gKwkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1l b3V0KCZjb21taXQtPmZsaXBfZG9uZSwKPiArCQkJCQkJICAxMCpIWik7Cj4gKwkJaWYgKHJldCA9 PSAwKQo+ICsJCQlEUk1fRVJST1IoIltDUlRDOiVkOiVzXSBmbGlwX2RvbmUgdGltZWQgb3V0XG4i LAo+ICsJCQkJICBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKPiArCj4gKwkJZHJtX2NydGNf Y29tbWl0X3B1dChjb21taXQpOwo+ICsJfQo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21p Y19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRv bWljX2hlbHBlcl9jb21taXRfaHdfZG9uZSAtIHNldHVwIHBvc3NpYmxlIG5vbmJsb2NraW5nIGNv bW1pdAo+ICsgKiBAc3RhdGU6IG5ldyBtb2Rlc2V0IHN0YXRlIHRvIGJlIGNvbW1pdHRlZAo+ICsg Kgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2lnbmFsIGNvbXBsZXRpb24gb2YgdGhl IGhhcmR3YXJlIGNvbW1pdCBzdGVwLgo+IEFmdGVyICsgKiB0aGlzIHN0ZXAgdGhlIGRyaXZlciBp cyBub3QgYWxsb3dlZCB0byByZWFkIG9yIGNoYW5nZSBhbnkKPiBwZXJtYW5lbnQgc29mdHdhcmUg KyAqIG9yIGhhcmR3YXJlIG1vZGVzZXQgc3RhdGUuIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcwo+IHN0 YXRlIHByb3RlY3RlZCBieSBvdGhlciArICogbWVhbnMgdGhhbiAmZHJtX21vZGVzZXRfbG9jayBs b2Nrcy4KPiArICoKPiArICogRHJpdmVycyBzaG91bGQgdHJ5IHRvIHBvc3Rwb25lIGFueSBleHBl bnNpdmUgb3IgZGVsYXllZCBjbGVhbnVwIHdvcmsKPiBhZnRlciArICogdGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQuCj4gKyAqCj4gKyAqIFRoaXMgaXMgcGFydCBvZiB0aGUgYXRvbWljIGhlbHBlciBz dXBwb3J0IGZvciBub25ibG9ja2luZyBjb21taXRzLCBzZWUKPiArICogZHJtX2F0b21pY19oZWxw ZXJfc2V0dXBfY29tbWl0KCkgZm9yIGFuIG92ZXJ2aWV3Lgo+ICsgKi8KPiArdm9pZCBkcm1fYXRv bWljX2hlbHBlcl9jb21taXRfaHdfZG9uZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPiArCWlu dCBpOwo+ICsKPiArCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3Rh dGUsIGkpIHsKPiArCQljb21taXQgPSBzdGF0ZS0+Y3J0Y3NbaV0uY29tbWl0Owo+ICsJCWlmICgh Y29tbWl0KQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLyogYmFja2VuZCBtdXN0IGhhdmUgY29u c3VtZWQgYW55IGV2ZW50IGJ5IG5vdyAqLwo+ICsJCVdBUk5fT04oY3J0Yy0+c3RhdGUtPmV2ZW50 KTsKPiArCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKPiArCQljb21wbGV0ZV9hbGwo JmNvbW1pdC0+aHdfZG9uZSk7Cj4gKwkJc3Bpbl91bmxvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsK PiArCX0KPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19k b25lKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfY2xlYW51cF9k b25lIC0gc2lnbmFsIGNvbXBsZXRpb24gb2YgY29tbWl0Cj4gKyAqIEBzdGF0ZTogbmV3IG1vZGVz ZXQgc3RhdGUgdG8gYmUgY29tbWl0dGVkCj4gKyAqCj4gKyAqIFRoaXMgc2lnbmFscyBjb21wbGV0 aW9uIG9mIHRoZSBhdG9taWMgdXBkYXRlIEBzdGF0ZSwgaW5jbHVkaW5nIGFueQo+IGNsZWFudXAg KyAqIHdvcmsuIElmIHVzZWQsIGl0IG11c3QgYmUgY2FsbGVkIHJpZ2h0IGJlZm9yZSBjYWxsaW5n Cj4gKyAqIGRybV9hdG9taWNfc3RhdGVfZnJlZSgpLgo+ICsgKgo+ICsgKiBUaGlzIGlzIHBhcnQg b2YgdGhlIGF0b21pYyBoZWxwZXIgc3VwcG9ydCBmb3Igbm9uYmxvY2tpbmcgY29tbWl0cywgc2Vl Cj4gKyAqIGRybV9hdG9taWNfaGVscGVyX3NldHVwX2NvbW1pdCgpIGZvciBhbiBvdmVydmlldy4K PiArICovCj4gK3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2NsZWFudXBfZG9uZShzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1f Y3J0Y19jb21taXQgKmNvbW1pdDsKPiArCWludCBpOwo+ICsJbG9uZyByZXQ7Cj4gKwo+ICsJZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJCWNv bW1pdCA9IHN0YXRlLT5jcnRjc1tpXS5jb21taXQ7Cj4gKwkJaWYgKFdBUk5fT04oIWNvbW1pdCkp Cj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsK PiArCQljb21wbGV0ZV9hbGwoJmNvbW1pdC0+Y2xlYW51cF9kb25lKTsKPiArCQlXQVJOX09OKCF0 cnlfd2FpdF9mb3JfY29tcGxldGlvbigmY29tbWl0LT5od19kb25lKSk7Cj4gKwo+ICsJCS8qIGNv bW1pdF9saXN0IGJvcnJvd3Mgb3VyIHJlZmVyZW5jZSwgbmVlZCB0byByZW1vdmUgYmVmb3JlIHdl Cj4gKwkJICogY2xlYW4gdXAgb3VyIGRybV9hdG9taWNfc3RhdGUuIEJ1dCBvbmx5IGFmdGVyIGl0 IGFjdHVhbGx5Cj4gKwkJICogY29tcGxldGVkLCBvdGhlcndpc2Ugc3Vic2VxdWVudCBjb21taXRz IHdvbid0IHN0YWxsIApwcm9wZXJseS4gKi8KPiArCQlpZiAodHJ5X3dhaXRfZm9yX2NvbXBsZXRp b24oJmNvbW1pdC0+ZmxpcF9kb25lKSkgewo+ICsJCQlsaXN0X2RlbCgmY29tbWl0LT5jb21taXRf ZW50cnkpOwo+ICsJCQlzcGluX3VubG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICsJCQljb250 aW51ZTsKPiArCQl9Cj4gKwo+ICsJCXNwaW5fdW5sb2NrKCZjcnRjLT5jb21taXRfbG9jayk7Cj4g Kwo+ICsJCS8qIFdlIG11c3Qgd2FpdCBmb3IgdGhlIHZibGFuayBldmVudCB0byBzaWduYWwgb3Vy IGNvbXBsZXRpb24KPiArCQkgKiBiZWZvcmUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UsIHNpbmNl IHRoZSB2Ymxhbmsgd29yayBkb2VzCj4gKwkJICogbm90IGhvbGQgYSByZWZlcmVuY2Ugb2YgaXRz IG93bi4gKi8KPiArCQlyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmNvbW1pdC0+ ZmxpcF9kb25lLAo+ICsJCQkJCQkgIDEwKkhaKTsKCldoeSBpcyB0aGlzIG5lZWRlZCA/IGRybV9h dG9taWNfaGVscGVyX2NvbW1pdF9jbGVhbnVwX2RvbmUoKSBpcyBjYWxsZWQgaW4gCmNvbW1pdF90 YWlsKCkgYWZ0ZXIgdGhlIGNhbGwgdG8gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3RhaWwoKSBv ciB0byB0aGUgCmRyaXZlcidzIC5hdG9taWNfY29tbWl0X3RhaWwoKSBoYW5kbGVyLiBJZiBJJ20g bm90IG1pc3Rha2VuIGJvdGggYWxyZWFkeSB3YWl0IApmb3IgdGhlIHBhZ2UgZmxpcCB0byBjb21w bGV0ZSwgZWl0aGVyIHdpdGggYSBjYWxsIHRvIApkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92 YmxhbmtzKCkgaW4gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3RhaWwoKSBvciAKd2l0aCBhIGN1 c3RvbSBtZXRob2QgaW4gdGhlIGRyaXZlcidzIC5hdG9taWNfY29tbWl0X3RhaWwoKSBoYW5kbGVy LgoKPiArCQlpZiAocmV0ID09IDApCj4gKwkJCURSTV9FUlJPUigiW0NSVEM6JWQ6JXNdIGZsaXBf ZG9uZSB0aW1lZCBvdXRcbiIsCj4gKwkJCQkgIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwo+ ICsKPiArCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKPiArCQlsaXN0X2RlbCgmY29t bWl0LT5jb21taXRfZW50cnkpOwo+ICsJCXNwaW5fdW5sb2NrKCZjcnRjLT5jb21taXRfbG9jayk7 Cj4gKwl9Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfY2xl YW51cF9kb25lKTsKPiArCj4gIC8qKgo+ICAgKiBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3Bs YW5lcyAtIHByZXBhcmUgcGxhbmUgcmVzb3VyY2VzIGJlZm9yZSBjb21taXQKPiAqIEBkZXY6IERS TSBkZXZpY2UKPiBAQCAtMTU1OCwxNyArMTg2OCw0NSBAQCBFWFBPUlRfU1lNQk9MKGRybV9hdG9t aWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKTsKPiAgICoKPiAgICogNS4gQ2FsbCBkcm1fYXRvbWlj X2hlbHBlcl9jbGVhbnVwX3BsYW5lcygpIHdpdGggQHN0YXRlLCB3aGljaCBzaW5jZSBzdGVwCj4g MyAqIGNvbnRhaW5zIHRoZSBvbGQgc3RhdGUuIEFsc28gZG8gYW55IG90aGVyIGNsZWFudXAgcmVx dWlyZWQgd2l0aCB0aGF0Cj4gc3RhdGUuICsgKgo+ICsgKiBAc3RhbGwgbXVzdCBiZSBzZXQgd2hl biBub25ibG9ja2luZyBjb21taXRzIGZvciB0aGlzIGRyaXZlciBkaXJlY3RseQo+IGFjY2VzcyAr ICogdGhlIC0+c3RhdGUgcG9pbnRlciBvZiAmZHJtX3BsYW5lLCAmZHJtX2NydGMgb3IgJmRybV9j b25uZWN0b3IuCj4gV2l0aCB0aGUgKyAqIGN1cnJlbnQgYXRvbWljIGhlbHBlcnMgdGhpcyBpcyBh bG1vc3QgYWx3YXlzIHRoZSBjYXNlLCBzaW5jZQo+IHRoZSBoZWxwZXJzICsgKiBkb24ndCBwYXNz IHRoZSByaWdodCBzdGF0ZSBzdHJ1Y3R1cmVzIHRvIHRoZSBjYWxsYmFja3MuCj4gICAqLwo+ICB2 b2lkIGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAo+ICAJCQkJICBib29sIHN0YWxsKQo+ICB7Cj4gIAlpbnQgaTsKPiArCWxvbmcgcmV0 Owo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAgCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICAJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9wbGFuZSAq cGxhbmU7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiArCXN0cnVj dCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPiArCj4gKwlpZiAoc3RhbGwpIHsKPiArCQlmb3Jf ZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwkJCXNw aW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICsJCQljb21taXQgPSBsaXN0X2ZpcnN0X2Vu dHJ5X29yX251bGwoJmNydGMtPmNvbW1pdF9saXN0LAo+ICsJCQkJCXN0cnVjdCBkcm1fY3J0Y19j b21taXQsIGNvbW1pdF9lbnRyeSk7Cj4gKwkJCWlmIChjb21taXQpCj4gKwkJCQlkcm1fY3J0Y19j b21taXRfZ2V0KGNvbW1pdCk7Cj4gKwkJCXNwaW5fdW5sb2NrKCZjcnRjLT5jb21taXRfbG9jayk7 Cj4gKwo+ICsJCQlpZiAoIWNvbW1pdCkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJcmV0ID0g d2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZjb21taXQtPmh3X2RvbmUsCj4gKwkJCQkJCQkg IDEwKkhaKTsKPiArCQkJaWYgKHJldCA9PSAwKQo+ICsJCQkJRFJNX0VSUk9SKCJbQ1JUQzolZDol c10gaHdfZG9uZSB0aW1lZCBvdXRcbiIsCj4gKwkJCQkJICBjcnRjLT5iYXNlLmlkLCBjcnRjLT5u YW1lKTsKPiArCQkJZHJtX2NydGNfY29tbWl0X3B1dChjb21taXQpOwo+ICsJCX0KPiArCX0KPiAK PiAgCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0 YXRlLCBpKSB7Cj4gIAkJY29ubmVjdG9yLT5zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPiBAQCAtMTU4 MCw2ICsxOTE4LDE1IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QK PiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgY3J0Yy0+c3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4g IAkJc3dhcChzdGF0ZS0+Y3J0Y3NbaV0uc3RhdGUsIGNydGMtPnN0YXRlKTsKPiAgCQljcnRjLT5z dGF0ZS0+c3RhdGUgPSBOVUxMOwo+ICsKPiArCQlpZiAoc3RhdGUtPmNydGNzW2ldLmNvbW1pdCkg ewo+ICsJCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKPiArCQkJbGlzdF9hZGQoJnN0 YXRlLT5jcnRjc1tpXS5jb21taXQtPmNvbW1pdF9lbnRyeSwKPiArCQkJCSAmY3J0Yy0+Y29tbWl0 X2xpc3QpOwo+ICsJCQlzcGluX3VubG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ICsKPiArCQkJ c3RhdGUtPmNydGNzW2ldLmNvbW1pdC0+ZXZlbnQgPSBOVUxMOwo+ICsJCX0KPiAgCX0KPiAKPiAg CWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsK PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAo+IGIvaW5jbHVk ZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaCBpbmRleCAwN2VkZTNhODJkNTQuLjM2OGNiZmZjNTRh YyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oCj4gKysrIGIv aW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAo+IEBAIC03NCw2ICs3NCwxMyBAQCB2b2lk IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmVzX29uX2NydGMoc3RydWN0Cj4gZHJtX2Ny dGMgKmNydGMsIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZQo+ICpzdGF0ZSwgYm9vbCBzdGFsbCk7Cj4gCj4gKy8qIG5vbmJsb2NraW5nIGNv bW1pdCBoZWxwZXJzICovCj4gK2ludCBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJICAgYm9vbCBub25ibG9jayk7Cj4g K3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlCj4gKnN0YXRlKTsgK3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3 X2RvbmUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiAqc3RhdGUpOyArdm9pZCBkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfY2xlYW51cF9kb25lKHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKTsgKwo+ICAvKiBpbXBsZW1lbnRhdGlvbnMgZm9yIGxlZ2FjeSBpbnRlcmZhY2VzICovCj4g IGludCBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCgotLSAKUmVnYXJkcywKCkxhdXJl bnQgUGluY2hhcnQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=