From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/26] drm/i915: don't stop+start FBC at every flip Date: Thu, 29 Oct 2015 19:30:44 +0200 Message-ID: <20151029173044.GV4437@intel.com> References: <1445964628-30226-1-git-send-email-paulo.r.zanoni@intel.com> <1445964628-30226-3-git-send-email-paulo.r.zanoni@intel.com> <20151027183231.GN4437@intel.com> <1446051398.2750.3.camel@intel.com> <20151028172012.GS4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 380086E606 for ; Thu, 29 Oct 2015 10:34:16 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20151028172012.GS4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zanoni, Paulo R" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjgsIDIwMTUgYXQgMDc6MjA6MTJQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgT2N0IDI4LCAyMDE1IGF0IDA0OjU2OjM5UE0gKzAwMDAsIFphbm9u aSwgUGF1bG8gUiB3cm90ZToKPiA+IEVtIFRlciwgMjAxNS0xMC0yNyDDoHMgMjA6MzIgKzAyMDAs IFZpbGxlIFN5cmrDpGzDpCBlc2NyZXZldToKPiA+ID4gT24gVHVlLCBPY3QgMjcsIDIwMTUgYXQg MDI6NTA6MDRQTSAtMDIwMCwgUGF1bG8gWmFub25pIHdyb3RlOgo+ID4gPiA+IFRoZSBoYXJkd2Fy ZSBhbHJlYWR5IHRha2VzIGNhcmUgb2YgZGlzYWJsaW5nIGFuZCByZWNvbXByZXNzaW5nIEZCQwo+ ID4gPiA+IHdoZW4gd2UgZG8gYSBwYWdlIGZsaXAsIHNvIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIHRv IHVwZGF0ZSB0aGUgZmVuY2UKPiA+ID4gPiByZWdpc3RlcnMgYW5kIG1vdmUgb24uCj4gPiA+ID4g Cj4gPiA+ID4gT25lIG9mIHRoZSBpbXBvcnRhbnQgdGhpbmdzIHRvIG5vdGljZSBpcyB0aGF0IG9u IHRoZSBwcmUtZ2VuNgo+ID4gPiA+IHBsYXRmb3JtcyB0aGUgZmVuY2UgaXMgcHJvZ3JhbW1lZCBv biB0aGUgRkJDIGNvbnRyb2wgcmVnaXN0ZXIgYW5kCj4gPiA+ID4gdGhlCj4gPiA+ID4gZG9jdW1l bnRhdGlvbiBzYXlzIHdlIGNhbid0IHVwZGF0ZSB0aGUgY29udHJvbCByZWdpc3RlciB3aGlsZSBG QkMKPiA+ID4gPiBpcwo+ID4gPiA+IGVuYWJsZWQuIFRoaXMgd291bGQgYmFzaWNhbGx5IG1lYW4g d2UnZCBoYXZlIHRvIHRvIGRpc2FibGUrZW5hYmxlCj4gPiA+ID4gRkJDCj4gPiA+ID4gYXQgZXZl cnkgZmxpcCBpbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlIGhhcmR3YXJlIHRyYWNraW5nIHN0aWxs Cj4gPiA+ID4gd29ya3MsCj4gPiA+ID4gd2hpY2ggZG9lc24ndCBzZWVtIHRvIG1ha2UgdG9vIG11 Y2ggc2Vuc2UuIFNvIEkgc2VudCBhbiBlbWFpbCB0bwo+ID4gPiA+IHRoZQo+ID4gPiA+IGhhcmR3 YXJlIHRlYW0gcmVxdWVzdGluZyBzb21lIGNsYXJpZmljYXRpb24uIFRoZSBpbmZvcm1hdGlvbiBJ IGdvdAo+ID4gPiA+IHdhcwo+ID4gPiA+IHRoaXM6Cj4gPiA+ID4gCj4gPiA+ID4gIkkgZG9uJ3Qg dGhpbmsgYW55IGhhcmR3YXJlIGlzIGxhdGNoaW5nIG9uIHRvIDB4MTAwMTAwLCAweDEwMDEwNCwK PiA+ID4gPiBvcgo+ID4gPiA+IHRoZSBvbGQgZmVuY2UgbnVtYmVyIGluIEZCQ19DVEwuIEluc3Ry dWN0aW9ucyBhZ2FpbnN0IGNoYW5naW5nIG9uCj4gPiA+ID4gdGhlCj4gPiA+ID4gZmx5IHdvdWxk IGJlIHRvIHNpbXBsaWZ5IHRlc3RpbmcgYW5kIGVuc3VyZSB5b3UgZG9uJ3QgbWlzcyBhbnkKPiA+ ID4gPiBpbnZhbGlkYXRpb24gdGhhdCBoYXBwZW5lZCByaWdodCBhdCB0aGF0IHRpbWUuIgo+ID4g PiA+IAo+ID4gPiA+IFNvIEkgZ3Vlc3Mgd2UncmUgZmluZSBmb3IgZmxpcHMuIEJ1dCBJIGNhbid0 IHJlYWxseSBzYXkgSSB0ZXN0ZWQKPiA+ID4gPiBGQkMKPiA+ID4gPiBvbiB0aGVzZSBhbmNpZW50 IHBsYXRmb3JtcyAtIG5vciB0aGF0IEknbGwgZXZlciBwcm9wb3NlIGVuYWJsaW5nCj4gPiA+ID4g RkJDCj4gPiA+ID4gYnkgZGVmYXVsdCBvbiB0aGVtIGV4YWN0bHkgYmVjYXVzZSBvZiBwcm9ibGVt cyBsaWtlIHRoZXNlLgo+ID4gPiAKPiA+ID4gWWVhaCwgSSBkaWQgdGhpcyBpbiBteSBwYXRjaGVz IHRvbywgYW5kIElJUkMgaXQgc2VlbWVkIHRvIHdvcmsganVzdAo+ID4gPiBmaW5lCj4gPiA+IGJh Y2sgdGhlbi4KPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gdjI6IEFkZCBjb21tZW50IGF0IGZsdXNo KCkgKENocmlzKS4KPiA+ID4gPiAKPiA+ID4gPiBUZXN0Y2FzZTogaWd0L2ttc19mcm9udGJ1ZmZl cl90cmFja2luZy9mYmMqLWZsaXB0cmFjawo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFph bm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+IMKgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEg Kwo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaMKgwqDCoMKgwqDCoMKg wqDCoMKgfMKgwqDCoDMgKwo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jwqDCoMKgwqDCoHzCoMKgwqAxIC0KPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKwo+ID4gPiA+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmPCoMKgwqDCoMKgwqDCoMKgwqB8IDEwMwo+ID4gPiA+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMgfMKgwqDCoDEgKwo+ID4gPiA+IMKgNiBmaWxlcyBj aGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+ID4gPiAKPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+IGluZGV4IGVlMTQ5NjIuLjc3 ZGE1MDAgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiBA QCAtOTI4LDYgKzkyOCw3IEBAIHN0cnVjdCBpOTE1X2ZiYyB7Cj4gPiA+ID4gwqAJYm9vbCAoKmZi Y19lbmFibGVkKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPiA+IMKg CXZvaWQgKCplbmFibGVfZmJjKShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gPiA+ID4gwqAJ dm9pZCAoKmRpc2FibGVfZmJjKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ ID4gPiA+ICsJdm9pZCAoKmZsaXBfcHJlcGFyZSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiA+ID4gPiDCoH07Cj4gPiA+ID4gwqAKPiA+ID4gPiDCoC8qKgo+ID4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gaW5kZXggODk0MjUzMi4uM2Q1OThh MiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+IEBAIC0y MDI4LDYgKzIwMjgsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+ID4gPiDCoCNk ZWZpbmXCoMKgwqBGQkNfQ1RMX0MzX0lETEUJKDE8PDEzKQo+ID4gPiA+IMKgI2RlZmluZcKgwqDC oEZCQ19DVExfU1RSSURFX1NISUZUCSg1KQo+ID4gPiA+IMKgI2RlZmluZcKgwqDCoEZCQ19DVExf RkVOQ0VOT19TSElGVAkoMCkKPiA+ID4gPiArI2RlZmluZcKgwqDCoEZCQ19DVExfRkVOQ0VOT19N QVNLCTB4Rgo+ID4gPiAKPiA+ID4gSXQncyBvbmx5IHRocmVlIGJpdHMgb24gZ2VuMi4gQnV0IGJp dCAzIGlzIE1CWiBhbmQgdGhlcmUgYXJlIG9ubHkgOAo+ID4gPiBmZW5jZSByZWdpc3RlcnMgb24g dGhvc2UgcGxhdGZvcm1zLCBzbyB0aGlzIGlzIE9LLgo+ID4gPiAKPiA+ID4gPiDCoCNkZWZpbmUg RkJDX0NPTU1BTkQJCTB4MDMyMGMKPiA+ID4gPiDCoCNkZWZpbmXCoMKgwqBGQkNfQ01EX0NPTVBS RVNTCSgxPDwwKQo+ID4gPiA+IMKgI2RlZmluZSBGQkNfU1RBVFVTCQkweDAzMjEwCj4gPiA+ID4g QEAgLTIwNjQsNiArMjA2NSw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4gPiA+ IMKgI2RlZmluZcKgwqDCoERQRkNfQ1RMX0xJTUlUXzFYCSgwPDw2KQo+ID4gPiA+IMKgI2RlZmlu ZcKgwqDCoERQRkNfQ1RMX0xJTUlUXzJYCSgxPDw2KQo+ID4gPiA+IMKgI2RlZmluZcKgwqDCoERQ RkNfQ1RMX0xJTUlUXzRYCSgyPDw2KQo+ID4gPiA+ICsjZGVmaW5lwqDCoMKgRFBGQ19DVExfRkVO Q0VfTUFTSwkweEYKPiA+ID4gPiDCoCNkZWZpbmUgRFBGQ19SRUNPTVBfQ1RMCQkweDMyMGMKPiA+ ID4gPiDCoCNkZWZpbmXCoMKgwqBEUEZDX1JFQ09NUF9TVEFMTF9FTgkoMTw8MjcpCj4gPiA+ID4g wqAjZGVmaW5lwqDCoMKgRFBGQ19SRUNPTVBfU1RBTExfV01fU0hJRlQgKDE2KQo+ID4gPiA+IEBA IC0yMDg2LDYgKzIwODgsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+ID4gPiDC oCNkZWZpbmXCoMKgwqBGQkNfQ1RMX0ZBTFNFX0NPTE9SCSgxPDwxMCkKPiA+ID4gPiDCoC8qIFRo ZSBiaXQgMjgtOCBpcyByZXNlcnZlZCAqLwo+ID4gPiA+IMKgI2RlZmluZcKgwqDCoERQRkNfUkVT RVJWRUQJCSgweDFGRkZGRjAwKQo+ID4gPiA+ICsjZGVmaW5lwqDCoMKgSUxLX0RQRkNfRkVOQ0Vf TUFTSwkweEYKPiA+ID4gPiDCoCNkZWZpbmUgSUxLX0RQRkNfUkVDT01QX0NUTAkweDQzMjBjCj4g PiA+ID4gwqAjZGVmaW5lIElMS19EUEZDX1NUQVRVUwkJMHg0MzIxMAo+ID4gPiA+IMKgI2RlZmlu ZSBJTEtfRFBGQ19GRU5DRV9ZT0ZGCTB4NDMyMTgKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiBpbmRleCBiYzE5MDdlLi5kOTM3OGMzIDEwMDY0 NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+IEBA IC0xMTUwMiw3ICsxMTUwMiw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3Ry dWN0Cj4gPiA+ID4gZHJtX2NydGMgKmNydGMsCj4gPiA+ID4gwqAJCQnCoMKgdG9faW50ZWxfcGxh bmUocHJpbWFyeSktCj4gPiA+ID4gPmZyb250YnVmZmVyX2JpdCk7Cj4gPiA+ID4gwqAJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiA+ID4gwqAKPiA+ID4gPiAtCWludGVsX2Zi Y19kaXNhYmxlX2NydGMoaW50ZWxfY3J0Yyk7Cj4gPiA+ID4gwqAJaW50ZWxfZnJvbnRidWZmZXJf ZmxpcF9wcmVwYXJlKGRldiwKPiA+ID4gPiDCoAkJCQnCoMKgwqDCoMKgwqDCoHRvX2ludGVsX3Bs YW5lKHByaW1hcnkpLQo+ID4gPiA+ID5mcm9udGJ1ZmZlcl9iaXQpOwo+ID4gPiA+IMKgCj4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiA+IGluZGV4IDA4ODQ3ZDAu LjkwNjVhOGYgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4g PiA+IEBAIC0xMzA1LDYgKzEzMDUsOCBAQCB2b2lkIGludGVsX2ZiY19pbnZhbGlkYXRlKHN0cnVj dAo+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+IMKgCQkJwqDCoGVu dW0gZmJfb3Bfb3JpZ2luIG9yaWdpbik7Cj4gPiA+ID4gwqB2b2lkIGludGVsX2ZiY19mbHVzaChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gwqAJCcKgwqDCoMKgwqB1 bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cywgZW51bQo+ID4gPiA+IGZiX29wX29yaWdpbiBv cmlnaW4pOwo+ID4gPiA+ICt2b2lkIGludGVsX2ZiY19mbGlwX3ByZXBhcmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ICsJCQnCoMKgwqDCoHVuc2lnbmVkIGludCBm cm9udGJ1ZmZlcl9iaXRzKTsKPiA+ID4gPiDCoHZvaWQgaW50ZWxfZmJjX2NsZWFudXBfY2ZiKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiA+ID4gwqAKPiA+ID4gPiDCoC8q IGludGVsX2hkbWkuYyAqLwo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9mYmMuYwo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMK PiA+ID4gPiBpbmRleCBkOWQ3ZTU0Li42MmYxNThiIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJjLmMKPiA+ID4gPiBAQCAtODIsNiArODIsMjIgQEAgc3RhdGljIHZvaWQg aTh4eF9mYmNfZGlzYWJsZShzdHJ1Y3QKPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gPiDCoAlEUk1fREVCVUdfS01TKCJkaXNhYmxlZCBGQkNcbiIpOwo+ID4gPiA+IMKg fQo+ID4gPiA+IMKgCj4gPiA+ID4gK3N0YXRpYyB2b2lkIGk4eHhfZmJjX2ZsaXBfcHJlcGFyZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiA+ICpkZXZfcHJpdikKPiA+ID4gPiArewo+ID4g PiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+ZmJjLmNydGM7Cj4gPiA+ ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7 Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2Jq KGZiKTsKPiA+ID4gPiArCXVpbnQzMl90IHZhbDsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKiBBbHRo b3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBzdWdnZXN0cyB3ZSBjYW4ndCBjaGFuZ2UKPiA+ID4gPiBE UEZDX0NPTlRST0wKPiA+ID4gPiArCcKgKiB3aGlsZSBjb21wcmVzc2lvbiBpcyBlbmFibGVkLCB0 aGUgaGFyZHdhcmUgZ3V5cyBzYWlkCj4gPiA+ID4gdGhhdCB1cGRhdGluZwo+ID4gPiA+ICsJwqAq IHRoZSBmZW5jZSByZWdpc3RlciBiaXRzIGR1cmluZyBhIGZsaXAgaXMgZmluZS4gKi8KPiA+ID4g PiArCXZhbCA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTCk7Cj4gPiA+ID4gKwl2YWwgJj0gfkZCQ19D VExfRkVOQ0VOT19NQVNLOwo+ID4gPiA+ICsJdmFsIHw9IG9iai0+ZmVuY2VfcmVnOwo+ID4gPiA+ ICsJSTkxNV9XUklURShGQkNfQ09OVFJPTCwgdmFsKTsKPiA+ID4gPiArfQo+ID4gPiAKPiA+ID4g SUlSQyBJIGp1c3QgY2FsbGVkIHRoZSBlbmFibGUgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3QgdGhl IGVudGlyZQo+ID4gPiByZWdpc3RlciBjb250ZW50cyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9u LiBCdXQgbWF5YmUgdGhhdCdzIG5vdAo+ID4gPiBwb3NzaWJsZSB3aXRob3V0IHJlb3dya2luZyB0 aGUgZmJjIHN0YXRlIGhhbmRsaW5nIGVudGlyZWx5Cj4gPiA+ICh3aGljaCBJIGhhZCBkb25lKS4K PiA+ID4gPiArCj4gPiA+ID4gwqBzdGF0aWMgdm9pZCBpOHh4X2ZiY19lbmFibGUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCj4gPiA+ID4gwqB7Cj4gPiA+ID4gwqAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtCj4gPiA+ID4gPmRldl9wcml2YXRlOwo+ ID4gPiA+IEBAIC0xNjEsNiArMTc3LDIyIEBAIHN0YXRpYyB2b2lkIGc0eF9mYmNfZW5hYmxlKHN0 cnVjdCBpbnRlbF9jcnRjCj4gPiA+ID4gKmNydGMpCj4gPiA+ID4gwqAJRFJNX0RFQlVHX0tNUygi ZW5hYmxlZCBmYmMgb24gcGxhbmUgJWNcbiIsCj4gPiA+ID4gcGxhbmVfbmFtZShjcnRjLT5wbGFu ZSkpOwo+ID4gPiA+IMKgfQo+ID4gPiA+IMKgCj4gPiA+ID4gK3N0YXRpYyB2b2lkIGc0eF9mYmNf ZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ID4gKmRldl9wcml2KQo+ ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRldl9wcml2LT5m YmMuY3J0YzsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gY3J0Yy0+YmFz ZS5wcmltYXJ5LT5mYjsKPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSBpbnRlbF9mYl9vYmooZmIpOwo+ID4gPiA+ICsJdWludDMyX3QgdmFsOwo+ID4gPiA+ICsKPiA+ ID4gPiArCS8qIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHdlIGNhbid0IGNo YW5nZQo+ID4gPiA+IERQRkNfQ09OVFJPTAo+ID4gPiA+ICsJwqAqIHdoaWxlIGNvbXByZXNzaW9u IGlzIGVuYWJsZWQsIHRoZSBoYXJkd2FyZSBndXlzIHNhaWQKPiA+ID4gPiB0aGF0IHVwZGF0aW5n Cj4gPiA+ID4gKwnCoCogdGhlIGZlbmNlIHJlZ2lzdGVyIGJpdHMgZHVyaW5nIGEgZmxpcCBpcyBm aW5lLiAqLwo+ID4gPiA+ICsJdmFsID0gSTkxNV9SRUFEKERQRkNfQ09OVFJPTCk7Cj4gPiA+ID4g Kwl2YWwgJj0gfkRQRkNfQ1RMX0ZFTkNFX01BU0s7Cj4gPiA+ID4gKwl2YWwgfD0gb2JqLT5mZW5j ZV9yZWc7Cj4gPiA+ID4gKwlJOTE1X1dSSVRFKERQRkNfQ09OVFJPTCwgdmFsKTsKPiA+ID4gPiAr fQo+ID4gPiA+ICsKPiA+ID4gPiDCoHN0YXRpYyB2b2lkIGc0eF9mYmNfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ID4gwqB7Cj4gPiA+ID4gwqAJdTMyIGRw ZmNfY3RsOwo+ID4gPiA+IEBAIC0yMzYsNiArMjY4LDMxIEBAIHN0YXRpYyB2b2lkIGlsa19mYmNf ZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjCj4gPiA+ID4gKmNydGMpCj4gPiA+ID4gwqAJRFJNX0RF QlVHX0tNUygiZW5hYmxlZCBmYmMgb24gcGxhbmUgJWNcbiIsCj4gPiA+ID4gcGxhbmVfbmFtZShj cnRjLT5wbGFuZSkpOwo+ID4gPiA+IMKgfQo+ID4gPiA+IMKgCj4gPiA+ID4gK3N0YXRpYyB2b2lk IGlsa19mYmNfZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ID4gKmRl dl9wcml2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRl dl9wcml2LT5mYmMuY3J0YzsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g Y3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ID4gPiA+ICsJdWludDMyX3QgdmFsOwo+ID4g PiA+ICsKPiA+ID4gPiArCS8qIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHdl IGNhbid0IGNoYW5nZQo+ID4gPiA+IERQRkNfQ09OVFJPTAo+ID4gPiA+ICsJwqAqIHdoaWxlIGNv bXByZXNzaW9uIGlzIGVuYWJsZWQsIHRoZSBoYXJkd2FyZSBndXlzIHNhaWQKPiA+ID4gPiB0aGF0 IHVwZGF0aW5nCj4gPiA+ID4gKwnCoCogdGhlIGZlbmNlIHJlZ2lzdGVyIGJpdHMgZHVyaW5nIGEg ZmxpcCBpcyBmaW5lLiAqLwo+ID4gPiA+ICsJdmFsID0gSTkxNV9SRUFEKElMS19EUEZDX0NPTlRS T0wpOwo+ID4gPiA+ICsJdmFsICY9IH5JTEtfRFBGQ19GRU5DRV9NQVNLOwo+ID4gPiA+ICsJdmFs IHw9IG9iai0+ZmVuY2VfcmVnOwo+ID4gPiA+ICsJSTkxNV9XUklURShJTEtfRFBGQ19DT05UUk9M LCB2YWwpOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgdm9pZCBzbmJfZmJj X2ZsaXBfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiA+ICpkZXZfcHJpdikK PiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+ ZmJjLmNydGM7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJh c2UucHJpbWFyeS0+ZmI7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0gaW50ZWxfZmJfb2JqKGZiKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlJOTE1X1dSSVRFKFNOQl9E UEZDX0NUTF9TQSwgU05CX0NQVV9GRU5DRV9FTkFCTEUgfCBvYmotCj4gPiA+ID4gPmZlbmNlX3Jl Zyk7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gwqBzdGF0aWMgdm9pZCBpbGtfZmJjX2Rp c2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiA+IMKgewo+ID4g PiA+IMKgCXUzMiBkcGZjX2N0bDsKPiA+ID4gPiBAQCAtMTAyMSwxMyArMTA3OCw0OCBAQCB2b2lk IGludGVsX2ZiY19mbHVzaChzdHJ1Y3QKPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+ID4gPiDCoAlpZiAob3JpZ2luID09IE9SSUdJTl9HVFQpCj4gPiA+ID4gwqAJCXJldHVy bjsKPiA+ID4gPiDCoAo+ID4gPiA+ICsJLyogSGFyZHdhcmUgdHJhY2tpbmcgYWxyZWFkeSByZWNv bXByZXNzZXMgdGhlIENGQiAobnVrZSkKPiA+ID4gPiBmb3IgdXMgaWYgRkJDCj4gPiA+ID4gKwnC oCogaXMgZW5hYmxlZCBhbmQgd2UgZG8gYSBwYWdlIGZsaXAsIHNvIHdlIGNhbiBzYWZlbHkKPiA+ ID4gPiBpZ25vcmUgaXQgaGVyZS4KPiA+ID4gPiArCcKgKiBGQkMgbWF5IGJlIGRpc2FibGVkIGlu IGNhc2Ugd2UgZ290IGFuIGludmFsaWRhdGUoKQo+ID4gPiA+IGJlZm9yZSB0aGUKPiA+ID4gPiAr CcKgKiBmbHVzaCgpLCBzbyB3ZSdsbCBzdGlsbCBoYXZlIHRvIGNoZWNrIHRoYXQgY2FzZSBiZWxv dy4KPiA+ID4gPiAqLwo+ID4gPiA+ICsJaWYgKG9yaWdpbiA9PSBPUklHSU5fRkxJUCAmJiBkZXZf cHJpdi0+ZmJjLmVuYWJsZWQpCj4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ICsKPiA+ID4gPiDC oAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwo+ID4gPiA+IMKgCj4gPiA+ID4gwqAJ ZGV2X3ByaXYtPmZiYy5idXN5X2JpdHMgJj0gfmZyb250YnVmZmVyX2JpdHM7Cj4gPiA+ID4gwqAK PiA+ID4gPiDCoAlpZiAoIWRldl9wcml2LT5mYmMuYnVzeV9iaXRzKSB7Cj4gPiA+ID4gLQkJX19p bnRlbF9mYmNfZGlzYWJsZShkZXZfcHJpdik7Cj4gPiA+ID4gLQkJX19pbnRlbF9mYmNfdXBkYXRl KGRldl9wcml2KTsKPiA+ID4gPiArCQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKSB7Cj4gPiA+ ID4gKwkJCV9faW50ZWxfZmJjX3VwZGF0ZShkZXZfcHJpdik7Cj4gPiA+ID4gKwkJfSBlbHNlIHsK PiA+ID4gPiArCQkJX19pbnRlbF9mYmNfZGlzYWJsZShkZXZfcHJpdik7Cj4gPiA+ID4gKwkJCV9f aW50ZWxfZmJjX3VwZGF0ZShkZXZfcHJpdik7Cj4gPiA+ID4gKwkJfQo+ID4gPiA+ICsJfQo+ID4g PiA+ICsKPiA+ID4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKPiA+ID4g PiArfQo+ID4gPiA+ICsKPiA+ID4gPiArdm9pZCBpbnRlbF9mYmNfZmxpcF9wcmVwYXJlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gPiArCQkJwqDCoMKgwqB1bnNpZ25l ZCBpbnQgZnJvbnRidWZmZXJfYml0cykKPiA+ID4gPiArewo+ID4gPiA+ICsJdW5zaWduZWQgaW50 IGZiY19iaXRzOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICghZmJjX3N1cHBvcnRlZChkZXZfcHJp dikpCj4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ICsKPiA+ID4gPiArCW11dGV4X2xvY2soJmRl dl9wcml2LT5mYmMubG9jayk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKGRldl9wcml2LT5mYmMu ZW5hYmxlZCkgewo+ID4gPiA+ICsJCWZiY19iaXRzID0gSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFS WShkZXZfcHJpdi0KPiA+ID4gPiA+ZmJjLmNydGMtPnBpcGUpOwo+ID4gPiAKPiA+ID4gcHJpbWFy eS0+ZnJvbnRidWZmZXJfYml0IHdvdWxkIHNlZW0gYmV0dGVyLgo+ID4gCj4gPiBXaHk/Cj4gCj4g V2h5IG5vdD8gSXQncyB0aGVyZSBhbHJlYWR5IHN0YXNoZWQgYXdheSBmb3IgeW91IHRvIHVzZS4g Tm8gbmVlZCB0bwo+IHNwcmlua2xlIHRoZXNlIElOVEVMX0ZST05UQlVGRkVSLi4uIHRoaW5ncyBh bGwgb3ZlciB0aGUgcGxhY2UuCj4gCj4gPiAKPiA+ID4gCj4gPiA+ID4gKwkJaWYgKGZiY19iaXRz ICYgZnJvbnRidWZmZXJfYml0cykKPiA+ID4gPiArCQkJZGV2X3ByaXYtPmZiYy5mbGlwX3ByZXBh cmUoZGV2X3ByaXYpOwo+ID4gPiAKPiA+ID4gWW91IHdvdWxkIHN0aWxsIGhhdmUgdG8gZGlzYWJs ZStyZWVuYWJsZSBpZiB5b3UgbmVlZCB0byBlZy4KPiA+ID4gcmVhbGxvY2F0ZQo+ID4gPiB0aGUg Y29tcHJlc3NlZCBidWZmZXIsIG9mIGlmIHRoZSBuZXcgZmIgaXNuJ3Qgc3VpdGFibGUgZm9yIGZi Yywgb3IKPiA+ID4gbWF5YmUKPiA+ID4gaWYgeW91IG5lZWQgdG8gY2hhbmdlIGFueXRoaW5nIGVs c2UgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXIuCj4gPiAKPiA+IFllcywgYnV0IGFzIGZhciBhcyBJ IHVuZGVyc3RhbmQgdGhlIGZyb250YnVmZmVyIHRyYWNraW5nLCB0aGlzIGNhc2UKPiA+IHdvbid0 IGhhcHBlbiBoZXJlLiBJJ20gYXNzdW1pbmcgd2UnbGwgYWx3YXlzIGdvIHRocm91Z2gKPiA+IGlu dGVsX2ZiY191cGRhdGUoKSBvbiB0aGVzZSBjYXNlcy4KPiAKPiBQZXJoYXBzLCBidXQgbW9yZSBi eSBsdWNrIHRoYW4gYnkgZGVzaWduLiBXaXRoIHRoZSBzZXRwbGFuZSBhbmQgYXRvbWljCj4gQVBJ cyB0aGVyZSdzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiBhIHBhZ2UgZmxpcCBhbmQgb3RoZXIgcGxh bmUgdXBkYXRlcy4KPiBTbyBpZiB5b3Ugd2FudCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgaHcg ZmxpcCBudWtlLCB5b3Ugd291bGQgbmVlZCB0bwo+IGNoZWNrIGhvdyB0aGUgcGxhbmUgc3RhdGUg aXMgZ29pbmcgdG8gY2hhbmdlLCBhbmQgYmFzZWQgb24gdGhhdCBkZWNpZGUKPiB3aGV0aGVyIGEg ZmVuY2UgdXBkYXRlIGlzIGVub3VnaCBvciBkaXNhYmxlK3JlLWVuYWJsZSBpcyBuZWVkZWQuIEFu ZCBpbgo+IGZhY3QgSSBkb24ndCBzZWUgYW55IGZiY19kaXNhYmxlIGJlZm9yZSB0aGUgZmxpcCwg anVzdCBhbiBmYmNfdXBkYXRlCj4gYWZ0ZXIgdGhlIGZhY3QuIFNvIHNlZW1zIHRvIG1lIHRoZSBk aXNhYmxlIHJlYWxseSBzaG91bGQgYmUgaW4geW91cgo+IGZsaXBfcHJlcGFyZSBob29rIGluIHRo aXMgY2FzZS4gQW5kIGluIGZhY3QgdGhlIHdob2xlIGZsaXBfcHJlcGFyZQo+IHRoaW5nIGlzbid0 IGV2ZW4gY2FsbGVkIGZyb20gdGhlIHNldHBsYW5lL2F0b21pYyBwYXRoLgoKT2ggYW5kIGFub3Ro ZXIgcmVsYXRlZCBzY2VuYXJpbyBhbHNvIGNhbWUgdG8gbWluZC4gQ29uc2lkZXIgZm9yIGV4YW1w bGUKdGhlIGZvbGxvdyBzZXF1ZW5jZSBvZiBldmVudHM6CgoxLiBmYmMgZW5hYmxlZCBvbiBwaXBl IEEKMi4gZmxpcCBzY2hlZHVsZWQgb24gcGlwZSBBIHdoaWNoIHJlcXVpcmVzIGZiYyB0byBiZSBk aXNhYmxlZAogICAtPiBmYmMgZ2V0cyBkaXNhYmxlZAo0LiBtb2Rlc2V0IG9uIHBpcGUgQiBjYWxs cyBmYmNfdXBkYXRlCiAgIC0+IGZiYyBnZXRzIHJlLWVuYWJsZWQgb24gcGlwZSBBIGJlZm9yZSB0 aGUgZmxpcCBoYXMgZmluaXNoZWQsIG9vcHMhCgpTbyB3ZSBhbHNvIG5lZWQgc29tZXRoaW5nIHRv IGtlZXAgZmJjIHJlbGlhYmx5IGRpc2FibGVkIHVudGlsIHRoZQpmbGlwIGhhcyBvY2N1cmVkLgoK PiAKPiA+IAo+ID4gPiAKPiA+ID4gV2hhdCBJIGhhZCB3YXM6Cj4gPiA+ICIKPiA+ID4gc3RhdGlj IGJvb2wgaW50ZWxfZmJjX25lZWRfcmVpbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4g PiB7Cj4gPiA+IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNl LmRldi0KPiA+ID4gPmRldl9wcml2YXRlOwo+ID4gPiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPmZiOwo+ID4gPiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKS0KPiA+ID4gPm9iajsKPiA+ID4g Cj4gPiA+IAlyZXR1cm4gY3J0YyAhPSBkZXZfcHJpdi0+ZmJjLmNydGMgfHwKPiA+ID4gCcKgwqDC oMKgwqDCoMKgb2JqLT5iYXNlLnNpemUgPiBkZXZfcHJpdi0+ZmJjLnNpemUgfHwKPiA+ID4gCcKg wqDCoMKgwqDCoMKgZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCkgIT0K PiA+ID4gCcKgwqDCoMKgwqDCoMKgZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZGV2X3ByaXYtPmZiYy5w aXhlbF9mb3JtYXQsIDApIHx8Cj4gPiA+IAnCoMKgwqDCoMKgwqDCoGZiLT5waXRjaGVzWzBdICE9 IGRldl9wcml2LT5mYmMucGl0Y2g7Cj4gPiA+IH0KPiA+ID4gaW50ZWxfZmJjX3ByZV9wYWdlX2Zs aXAoKQo+ID4gPiB7Cj4gPiA+IAkuLi4KPiA+ID4gCWludGVsX2ZiY191cGRhdGVfcGVuZGluZ19z Y29yZShjcnRjKTsKPiA+ID4gCj4gPiA+IAkvKgo+ID4gPiAJICogSWYgZmJjIHdhcyBhbHJlYWR5 IHBvc3NpYmxlIHdlIGNhbiB1cGRhdGUgaW1tZWRpYXRlbHksCj4gPiA+IAkgKiBvdGhlcndpc2Ug d2Ugd2lsbCB3YWl0IHVudGlsIHRoZSBmbGlwIGlzIGZpbmlzaGVkLgo+ID4gPiAJICovCj4gPiA+ IAlpZiAoY3J0Yy0+ZmJjLnNjb3JlICE9IDApCj4gPiA+IAkJY3J0Yy0+ZmJjLnNjb3JlID0gY3J0 Yy0+ZmJjLnBlbmRpbmdfc2NvcmU7Cj4gPiA+IAo+ID4gPiAJLyoKPiA+ID4gCSAqIERpc2FibGUg ZmJjIGlmIHdlJ3JlIG5vdCAoeWV0KSBjYXBhYmxlLCBvciBpZgo+ID4gPiAJICogd2UganVzdCBu ZWVkIGEgZnVsbCBkaXNhYmxlK2VuYWJsZSByZWluaXQuCj4gPiA+IAkgKi8KPiA+ID4gCWlmIChj cnRjLT5mYmMuc2NvcmUgPT0gMCB8fCBpbnRlbF9mYmNfbmVlZF9yZWluaXQoY3J0YykpCj4gPiA+ IAkJX19pbnRlbF9mYmNfZGlzYWJsZShjcnRjKTsKPiA+ID4gCS4uLgo+ID4gPiB9Cj4gPiA+ICIK PiA+ID4gCj4gPiA+ID4gKwl9IGVsc2UgaWYgKGRldl9wcml2LT5mYmMuZmJjX3dvcmspIHsKPiA+ ID4gPiArCQlmYmNfYml0cyA9IElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoCj4gPiA+ID4gKwkJ CQlkZXZfcHJpdi0+ZmJjLmZiY193b3JrLT5jcnRjLQo+ID4gPiA+ID5waXBlKTsKPiA+ID4gPiAr CQlpZiAoZmJjX2JpdHMgJiBmcm9udGJ1ZmZlcl9iaXRzKQo+ID4gPiA+ICsJCQlfX2ludGVsX2Zi Y19kaXNhYmxlKGRldl9wcml2KTsKPiA+ID4gPiDCoAl9Cj4gPiA+ID4gwqAKPiA+ID4gPiDCoAlt dXRleF91bmxvY2soJmRldl9wcml2LT5mYmMubG9jayk7Cj4gPiA+ID4gQEAgLTEwNjMsMTggKzEx NTUsMjUgQEAgdm9pZCBpbnRlbF9mYmNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4g PiA+ICpkZXZfcHJpdikKPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5mYmNfZW5hYmxlZCA9IGls a19mYmNfZW5hYmxlZDsKPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5lbmFibGVfZmJjID0gZ2Vu N19mYmNfZW5hYmxlOwo+ID4gPiA+IMKgCQlkZXZfcHJpdi0+ZmJjLmRpc2FibGVfZmJjID0gaWxr X2ZiY19kaXNhYmxlOwo+ID4gPiA+ICsJCWRldl9wcml2LT5mYmMuZmxpcF9wcmVwYXJlID0gc25i X2ZiY19mbGlwX3ByZXBhcmU7Cj4gPiA+ID4gwqAJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuID49IDUpIHsKPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5mYmNfZW5hYmxlZCA9 IGlsa19mYmNfZW5hYmxlZDsKPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5lbmFibGVfZmJjID0g aWxrX2ZiY19lbmFibGU7Cj4gPiA+ID4gwqAJCWRldl9wcml2LT5mYmMuZGlzYWJsZV9mYmMgPSBp bGtfZmJjX2Rpc2FibGU7Cj4gPiA+ID4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4g PT0gNSkKPiA+ID4gPiArCQkJZGV2X3ByaXYtPmZiYy5mbGlwX3ByZXBhcmUgPQo+ID4gPiA+IGls a19mYmNfZmxpcF9wcmVwYXJlOwo+ID4gPiA+ICsJCWVsc2UKPiA+ID4gPiArCQkJZGV2X3ByaXYt PmZiYy5mbGlwX3ByZXBhcmUgPQo+ID4gPiA+IHNuYl9mYmNfZmxpcF9wcmVwYXJlOwo+ID4gPiA+ IMKgCX0gZWxzZSBpZiAoSVNfR000NShkZXZfcHJpdikpIHsKPiA+ID4gPiDCoAkJZGV2X3ByaXYt PmZiYy5mYmNfZW5hYmxlZCA9IGc0eF9mYmNfZW5hYmxlZDsKPiA+ID4gPiDCoAkJZGV2X3ByaXYt PmZiYy5lbmFibGVfZmJjID0gZzR4X2ZiY19lbmFibGU7Cj4gPiA+ID4gwqAJCWRldl9wcml2LT5m YmMuZGlzYWJsZV9mYmMgPSBnNHhfZmJjX2Rpc2FibGU7Cj4gPiA+ID4gKwkJZGV2X3ByaXYtPmZi Yy5mbGlwX3ByZXBhcmUgPSBnNHhfZmJjX2ZsaXBfcHJlcGFyZTsKPiA+ID4gPiDCoAl9IGVsc2Ug ewo+ID4gPiA+IMKgCQlkZXZfcHJpdi0+ZmJjLmZiY19lbmFibGVkID0gaTh4eF9mYmNfZW5hYmxl ZDsKPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5lbmFibGVfZmJjID0gaTh4eF9mYmNfZW5hYmxl Owo+ID4gPiA+IMKgCQlkZXZfcHJpdi0+ZmJjLmRpc2FibGVfZmJjID0gaTh4eF9mYmNfZGlzYWJs ZTsKPiA+ID4gPiArCQlkZXZfcHJpdi0+ZmJjLmZsaXBfcHJlcGFyZSA9Cj4gPiA+ID4gaTh4eF9m YmNfZmxpcF9wcmVwYXJlOwo+ID4gPiA+IMKgCj4gPiA+ID4gwqAJCS8qIFRoaXMgdmFsdWUgd2Fz IHB1bGxlZCBvdXQgb2Ygc29tZW9uZSdzIGhhdCAqLwo+ID4gPiA+IMKgCQlJOTE1X1dSSVRFKEZC Q19DT05UUk9MLCA1MDAgPDwKPiA+ID4gPiBGQkNfQ1RMX0lOVEVSVkFMX1NISUZUKTsKPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+ ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+ID4gPiA+ IGluZGV4IGFjODUzNTcuLjMxYTFhZDMgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKPiA+ID4gPiBAQCAtMTkyLDYgKzE5Miw3IEBAIHZv aWQgaW50ZWxfZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKHN0cnVjdAo+ID4gPiA+IGRybV9kZXZp Y2UgKmRldiwKPiA+ID4gPiDCoAltdXRleF91bmxvY2soJmRldl9wcml2LT5mYl90cmFja2luZy5s b2NrKTsKPiA+ID4gPiDCoAo+ID4gPiA+IMKgCWludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBkYXRl KGRldiwgZnJvbnRidWZmZXJfYml0cyk7Cj4gPiA+ID4gKwlpbnRlbF9mYmNfZmxpcF9wcmVwYXJl KGRldl9wcml2LCBmcm9udGJ1ZmZlcl9iaXRzKTsKPiA+ID4gPiDCoH0KPiA+ID4gPiDCoAo+ID4g PiA+IMKgLyoqCj4gPiA+ID4gLS0gCj4gPiA+ID4gMi42LjEKPiA+ID4gPiAKPiA+ID4gPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiA+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gPiA+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo+ID4gPiAKPiAKPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRlbCBPVEMKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZp bGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK