From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: Re: [PATCH 01/12] drm/i915/bdw: Make pdp allocation more dynamic Date: Wed, 18 Mar 2015 10:15:51 +0000 Message-ID: <55095057.6010907@intel.com> References: <1424454366-19006-1-git-send-email-michel.thierry@intel.com> <1424454366-19006-2-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 9BB17895A8 for ; Wed, 18 Mar 2015 03:15:55 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: akash goel Cc: intel-gfx@lists.freedesktop.org, "Goel, Akash" List-Id: intel-gfx@lists.freedesktop.org T24gMy8zLzIwMTUgMTE6NDggQU0sIGFrYXNoIGdvZWwgd3JvdGU6Cj4gT24gRnJpLCBGZWIgMjAs IDIwMTUgYXQgMTE6MTUgUE0sIE1pY2hlbCBUaGllcnJ5Cj4gPG1pY2hlbC50aGllcnJ5QGludGVs LmNvbT4gIHdyb3RlOgo+PiBGcm9tOiBCZW4gV2lkYXdza3k8YmVuamFtaW4ud2lkYXdza3lAaW50 ZWwuY29tPgo+Pgo+PiBUaGlzIHRyYW5zaXRpb25hbCBwYXRjaCBkb2Vzbid0IGRvIG11Y2ggZm9y IHRoZSBleGlzdGluZyBjb2RlLiBIb3dldmVyLAo+PiBpdCBzaG91bGQgbWFrZSB1cGNvbWluZyBw YXRjaGVzIHRvIHVzZSB0aGUgZnVsbCA0OGIgYWRkcmVzcyBzcGFjZSBhIGJpdAo+PiBlYXNpZXIg dG8gc3dhbGxvdy4gVGhlIHBhdGNoIGFsc28gaW50cm9kdWNlcyB0aGUgUE1MNCwgaWUuIHRoZSBu ZXcgdG9wCj4+IGxldmVsIHN0cnVjdHVyZSBvZiB0aGUgcGFnZSB0YWJsZXMuCj4+Cj4+IHYyOiBS ZW5hbWVkICBwZHBfZnJlZSB0byBiZSBzaW1pbGFyIHRvICBwZC9wdCAodW5tYXBfYW5kX2ZyZWVf cGRwKSwKPj4gVG8gZmFjaWxpdGF0ZSB0ZXN0aW5nLCA0OGIgbW9kZSB3aWxsIGJlIGF2YWlsYWJs ZSBvbiBCcm9hZHdlbGwsIHdoZW4KPj4gaTkxNS5lbmFibGVfcHBndHQgPSAzLgo+Pgo+PiBTaWdu ZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3k8YmVuQGJ3aWRhd3NrLm5ldD4KPj4gU2lnbmVkLW9mZi1i eTogTWljaGVsIFRoaWVycnk8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPiAgKHYyKQo+PiAtLS0K Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAgNyArKy0KPj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDEwOCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaCB8ICA0MSArKysrKysrKysrKy0tLQo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2Vy dGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4g aW5kZXggMmRlZGQ0My4uYWYwZDE0OSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ IEBAIC0yNDMyLDcgKzI0MzIsMTIgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4+ICAg I2RlZmluZSBIQVNfSFdfQ09OVEVYVFMoZGV2KSAgIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2 KQo+PiAgICNkZWZpbmUgSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhkZXYpIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA4KQo+PiAgICNkZWZpbmUgVVNFU19QUEdUVChkZXYpICAgICAgICAgICAg ICAgIChpOTE1LmVuYWJsZV9wcGd0dCkKPj4gLSNkZWZpbmUgVVNFU19GVUxMX1BQR1RUKGRldikg ICAoaTkxNS5lbmFibGVfcHBndHQgPT0gMikKPj4gKyNkZWZpbmUgVVNFU19GVUxMX1BQR1RUKGRl dikgICAoaTkxNS5lbmFibGVfcHBndHQgPj0gMikKPj4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPj4g KyMgZGVmaW5lIFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpICAgIChpOTE1LmVuYWJsZV9wcGd0 dCA9PSAzKQo+PiArI2Vsc2UKPj4gKyMgZGVmaW5lIFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYp ICAgIGZhbHNlCj4+ICsjZW5kaWYKPj4KPj4gICAjZGVmaW5lIEhBU19PVkVSTEFZKGRldikgICAg ICAgICAgICAgICAoSU5URUxfSU5GTyhkZXYpLT5oYXNfb3ZlcmxheSkKPj4gICAjZGVmaW5lIE9W RVJMQVlfTkVFRFNfUEhZU0lDQUwoZGV2KSAgICAoSU5URUxfSU5GTyhkZXYpLT5vdmVybGF5X25l ZWRzX3BoeXNpY2FsKQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+PiBpbmRleCBm Zjg2NTAxLi40ODlmOGRiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ PiBAQCAtMTAwLDEwICsxMDAsMTcgQEAgc3RhdGljIGludCBzYW5pdGl6ZV9lbmFibGVfcHBndHQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9wcGd0dCkKPj4gICB7Cj4+ICAgICAg ICAgIGJvb2wgaGFzX2FsaWFzaW5nX3BwZ3R0Owo+PiAgICAgICAgICBib29sIGhhc19mdWxsX3Bw Z3R0Owo+PiArICAgICAgIGJvb2wgaGFzX2Z1bGxfNjRiaXRfcHBndHQ7Cj4+Cj4+ICAgICAgICAg IGhhc19hbGlhc2luZ19wcGd0dCA9IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDY7Cj4+ICAgICAg ICAgIGhhc19mdWxsX3BwZ3R0ID0gSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNzsKPj4KPj4gKyNp ZmRlZiBDT05GSUdfNjRCSVQKPj4gKyAgICAgICBoYXNfZnVsbF82NGJpdF9wcGd0dCA9IElTX0JS T0FEV0VMTChkZXYpICYmIGZhbHNlOyAvKiBGSVhNRTogNjRiICovCj4+ICsjZWxzZQo+PiArICAg ICAgIGhhc19mdWxsXzY0Yml0X3BwZ3R0ID0gZmFsc2U7Cj4+ICsjZW5kaWYKPj4gKwo+PiAgICAg ICAgICBpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkKPj4gICAgICAgICAgICAgICAgICBoYXNf ZnVsbF9wcGd0dCA9IGZhbHNlOyAvKiBlbXVsYXRpb24gaXMgdG9vIGhhcmQgKi8KPj4KPj4gQEAg LTEyMSw2ICsxMjgsOSBAQCBzdGF0aWMgaW50IHNhbml0aXplX2VuYWJsZV9wcGd0dChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBpbnQgZW5hYmxlX3BwZ3R0KQo+PiAgICAgICAgICBpZiAoZW5hYmxl X3BwZ3R0ID09IDIgJiYgaGFzX2Z1bGxfcHBndHQpCj4+ICAgICAgICAgICAgICAgICAgcmV0dXJu IDI7Cj4+Cj4+ICsgICAgICAgaWYgKGVuYWJsZV9wcGd0dCA9PSAzICYmIGhhc19mdWxsXzY0Yml0 X3BwZ3R0KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDM7Cj4+ICsKPj4gICAjaWZkZWYgQ09O RklHX0lOVEVMX0lPTU1VCj4+ICAgICAgICAgIC8qIERpc2FibGUgcHBndHQgb24gU05CIGlmIFZU LWQgaXMgb24uICovCj4+ICAgICAgICAgIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2ICYm IGludGVsX2lvbW11X2dmeF9tYXBwZWQpIHsKPj4gQEAgLTQ2Miw2ICs0NzIsNDUgQEAgZnJlZV9w ZDoKPj4gICAgICAgICAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4gICB9Cj4+Cj4+ICtzdGF0aWMg dm9pZCBfX3BkcF9maW5pKHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkg KnBkcCkKPj4gK3sKPj4gKyAgICAgICBrZnJlZShwZHAtPnVzZWRfcGRwZXMpOwo+PiArICAgICAg IGtmcmVlKHBkcC0+cGFnZV9kaXJlY3RvcnkpOwo+PiArICAgICAgIC8qIEhBQ0sgKi8KPj4gKyAg ICAgICBwZHAtPnBhZ2VfZGlyZWN0b3J5ID0gTlVMTDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZv aWQgdW5tYXBfYW5kX2ZyZWVfcGRwKHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJf ZW50cnkgKnBkcCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4+ICt7Cj4+ICsgICAgICAgX19wZHBfZmluaShwZHApOwo+PiArICAgICAgIGlm IChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkKPj4gKyAgICAgICAgICAgICAgIGtmcmVlKHBk cCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgX19wZHBfaW5pdChzdHJ1Y3QgaTkxNV9wYWdl X2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAsCj4+ICsgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiArewo+PiArICAgICAgIHNpemVfdCBwZHBlcyA9IEk5 MTVfUERQRVNfUEVSX1BEUChkZXYpOwo+PiArCj4+ICsgICAgICAgcGRwLT51c2VkX3BkcGVzID0g a2NhbGxvYyhCSVRTX1RPX0xPTkdTKHBkcGVzKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZih1bnNpZ25lZCBsb25nKSwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdGUF9LRVJORUwpOwo+PiArICAgICAgIGlmICghcGRwLT51c2VkX3BkcGVz KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKyAgICAgICBwZHAt PnBhZ2VfZGlyZWN0b3J5ID0ga2NhbGxvYyhwZHBlcywgc2l6ZW9mKCpwZHAtPnBhZ2VfZGlyZWN0 b3J5KSwgR0ZQX0tFUk5FTCk7Cj4+ICsgICAgICAgaWYgKCFwZHAtPnBhZ2VfZGlyZWN0b3J5KSB7 Cj4+ICsgICAgICAgICAgICAgICBrZnJlZShwZHAtPnVzZWRfcGRwZXMpOwo+PiArICAgICAgICAg ICAgICAgLyogdGhlIFBEUCBtaWdodCBiZSB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgdG9wIGxl dmVsLiBLZWVwIGl0Cj4+ICsgICAgICAgICAgICAgICAgKiBhcyBjbGVhbiBhcyBwb3NzaWJsZSAq Lwo+PiArICAgICAgICAgICAgICAgcGRwLT51c2VkX3BkcGVzID0gTlVMTDsKPj4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIHJldHVy biAwOwo+PiArfQo+PiArCj4+ICAgLyogQnJvYWR3ZWxsIFBhZ2UgRGlyZWN0b3J5IFBvaW50ZXIg RGVzY3JpcHRvcnMgKi8KPj4gICBzdGF0aWMgaW50IGdlbjhfd3JpdGVfcGRwKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGVudHJ5LAo+PiBAQCAtNDkxLDcgKzU0MCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9tbV9zd2l0Y2go c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+PiAgIHsKPj4gICAgICAgICAgaW50IGksIHJl dDsKPj4KPj4gLSAgICAgICBmb3IgKGkgPSBHRU44X0xFR0FDWV9QRFBFUyAtIDE7IGkgPj0gMDsg aS0tKSB7Cj4+ICsgICAgICAgZm9yIChpID0gMzsgaSA+PSAwOyBpLS0pIHsKPj4gICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQgPSBwcGd0dC0+cGRw LnBhZ2VfZGlyZWN0b3J5W2ldOwo+PiAgICAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgcGRfZGFk ZHIgPSBwZCA/IHBkLT5kYWRkciA6IHBwZ3R0LT5zY3JhdGNoX3BkLT5kYWRkcjsKPj4gICAgICAg ICAgICAgICAgICAvKiBUaGUgcGFnZSBkaXJlY3RvcnkgbWlnaHQgYmUgTlVMTCwgYnV0IHdlIG5l ZWQgdG8gY2xlYXIgb3V0Cj4+IEBAIC01ODAsOSArNjI5LDYgQEAgc3RhdGljIHZvaWQgZ2VuOF9w cGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPj4gICAg ICAgICAgcHRfdmFkZHIgPSBOVUxMOwo+Pgo+PiAgICAgICAgICBmb3JfZWFjaF9zZ19wYWdlKHBh Z2VzLT5zZ2wsICZzZ19pdGVyLCBwYWdlcy0+bmVudHMsIDApIHsKPj4gLSAgICAgICAgICAgICAg IGlmIChXQVJOX09OKHBkcGUgPj0gR0VOOF9MRUdBQ1lfUERQRVMpKQo+PiAtICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKPj4gLQo+PiAgICAgICAgICAgICAgICAgIGlmIChwdF92YWRkciA9 PSBOVUxMKSB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2Rp cmVjdG9yeV9lbnRyeSAqcGQgPSBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3BkcGVdOwo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSAqcHQg PSBwZC0+cGFnZV90YWJsZXNbcGRlXTsKPj4gQEAgLTY2NCw3ICs3MTAsOCBAQCBzdGF0aWMgdm9p ZCBnZW44X3BwZ3R0X3VubWFwX3BhZ2VzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPj4g ICAgICAgICAgc3RydWN0IHBjaV9kZXYgKmh3ZGV2ID0gcHBndHQtPmJhc2UuZGV2LT5wZGV2Owo+ PiAgICAgICAgICBpbnQgaSwgajsKPj4KPj4gLSAgICAgICBmb3JfZWFjaF9zZXRfYml0KGksIHBw Z3R0LT5wZHAudXNlZF9wZHBlcywgR0VOOF9MRUdBQ1lfUERQRVMpIHsKPj4gKyAgICAgICBmb3Jf ZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5iYXNlLmRldikpIHsKPj4gICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQ7Cj4+Cj4+ICAg ICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0p KQo+PiBAQCAtNjk2LDEzICs3NDMsMTUgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9mcmVlKHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPj4gICB7Cj4+ICAgICAgICAgIGludCBpOwo+Pgo+ PiAtICAgICAgIGZvcl9lYWNoX3NldF9iaXQoaSwgcHBndHQtPnBkcC51c2VkX3BkcGVzLCBHRU44 X0xFR0FDWV9QRFBFUykgewo+PiArICAgICAgIGZvcl9lYWNoX3NldF9iaXQoaSwgcHBndHQtPnBk cC51c2VkX3BkcGVzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk5MTVfUERQ RVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYpKSB7Cj4+ICAgICAgICAgICAgICAgICAgaWYgKFdB Uk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pKQo+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGludWU7Cj4+Cj4+ICAgICAgICAgICAgICAgICAgZ2VuOF9mcmVlX3BhZ2Vf dGFibGVzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0sIHBwZ3R0LT5iYXNlLmRldik7Cj4+ ICAgICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcGQocHBndHQtPnBkcC5wYWdlX2RpcmVj dG9yeVtpXSwgcHBndHQtPmJhc2UuZGV2KTsKPj4gICAgICAgICAgfQo+PiArICAgICAgIHVubWFw X2FuZF9mcmVlX3BkcCgmcHBndHQtPnBkcCwgcHBndHQtPmJhc2UuZGV2KTsKPiAncHBndHQtPnNj cmF0Y2hfcGQnIGlzIG5vdCBiZWluZyBkZS1hbGxvY2F0ZWQuCj4KPiBQcm9iYWJseSBpdCBjYW4g YmUgZGUtYWxsb2NhdGVkIGV4cGxpY2l0bHkgZnJvbSBoZXJlLCBhZnRlciB0aGUgY2FsbAo+IHRv ICB1bm1hcF9hbmRfZnJlZV9wZHAgb3IKPiBmcm9tIHRoZSBnZW44X3BwZ3R0X2NsZWFudXAgZnVu Y3Rpb24gLgpSaWdodCwgIHVubWFwX2FuZF9mcmVlX3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBwcGd0 dC0+YmFzZS5kZXYpIHdhcyAKbWlzc2luZy4gSXQgd2FzIGFkZGVkIGluICJkcm0vaTkxNS9iZHc6 IFVwZGF0ZSBwZHAgc3dpdGNoIGFuZCBwb2ludCAKdW51c2VkIFBEUHMgdG8gc2NyYXRjaCBwYWdl IiB2My4gSXQnbGwgc3RpbGwgYmUgdGhlcmUgaW4gdGhlIHJlYmFzZWQgCnZlcnNpb24gb2YgdGhp cyBwYXRjaC4KCj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cChz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPj4gQEAgLTc5OSw4ICs4NDgsOSBAQCBzdGF0 aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQsCj4+ICAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5 ICpwZDsKPj4gICAgICAgICAgdWludDY0X3QgdGVtcDsKPj4gICAgICAgICAgdWludDMyX3QgcGRw ZTsKPj4gKyAgICAgICBzaXplX3QgcGRwZXMgPSAgSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5i YXNlLmRldik7Cj4+Cj4+IC0gICAgICAgQlVHX09OKCFiaXRtYXBfZW1wdHkobmV3X3BkcywgR0VO OF9MRUdBQ1lfUERQRVMpKTsKPj4gKyAgICAgICBCVUdfT04oIWJpdG1hcF9lbXB0eShuZXdfcGRz LCBwZHBlcykpOwo+Pgo+PiAgICAgICAgICAvKiBGSVhNRTogUFBHVFQgY29udGFpbmVyX29mIHdv bid0IHdvcmsgZm9yIDY0YiAqLwo+PiAgICAgICAgICBCVUdfT04oKHN0YXJ0ICsgbGVuZ3RoKSA+ IDB4ODAwMDAwMDAwVUxMKTsKPj4gQEAgLTgyMCwxOCArODcwLDE5IEBAIHN0YXRpYyBpbnQgZ2Vu OF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCwKPj4gICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+ICAgdW53aW5kX291dDoKPj4gLSAgICAgICBm b3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wZHMsIEdFTjhfTEVHQUNZX1BEUEVTKQo+PiArICAg ICAgIGZvcl9lYWNoX3NldF9iaXQocGRwZSwgbmV3X3BkcywgcGRwZXMpCj4+ICAgICAgICAgICAg ICAgICAgdW5tYXBfYW5kX2ZyZWVfcGQocGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXSwgcHBndHQt PmJhc2UuZGV2KTsKPj4KPj4gICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICAgfQo+Pgo+PiAg IHN0YXRpYyBpbmxpbmUgdm9pZAo+PiAtZnJlZV9nZW44X3RlbXBfYml0bWFwcyh1bnNpZ25lZCBs b25nICpuZXdfcGRzLCB1bnNpZ25lZCBsb25nICoqbmV3X3B0cykKPj4gK2ZyZWVfZ2VuOF90ZW1w X2JpdG1hcHModW5zaWduZWQgbG9uZyAqbmV3X3BkcywgdW5zaWduZWQgbG9uZyAqKm5ld19wdHMs Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBkcGVzKQo+PiAgIHsKPj4gICAgICAg ICAgaW50IGk7Cj4+Cj4+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IEdFTjhfTEVHQUNZX1BEUEVT OyBpKyspCj4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHBkcGVzOyBpKyspCj4+ICAgICAgICAg ICAgICAgICAga2ZyZWUobmV3X3B0c1tpXSk7Cj4+ICAgICAgICAgIGtmcmVlKG5ld19wdHMpOwo+ PiAgICAgICAgICBrZnJlZShuZXdfcGRzKTsKPj4gQEAgLTg0MSwxMyArODkyLDE0IEBAIGZyZWVf Z2VuOF90ZW1wX2JpdG1hcHModW5zaWduZWQgbG9uZyAqbmV3X3BkcywgdW5zaWduZWQgbG9uZyAq Km5ld19wdHMpCj4+ICAgICogb2YgdGhlc2UgYXJlIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgUERQ RXMgaW4gdGhlIHN5c3RlbS4KPj4gICAgKi8KPj4gICBpbnQgX19tdXN0X2NoZWNrIGFsbG9jX2dl bjhfdGVtcF9iaXRtYXBzKHVuc2lnbmVkIGxvbmcgKipuZXdfcGRzLAo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKioqbmV3X3B0cykKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICoq Km5ld19wdHMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IHBkcGVzKQo+PiAgIHsKPj4gICAgICAgICAgaW50IGk7Cj4+ICAgICAgICAgIHVuc2lnbmVk IGxvbmcgKnBkczsKPj4gICAgICAgICAgdW5zaWduZWQgbG9uZyAqKnB0czsKPj4KPj4gLSAgICAg ICBwZHMgPSBrY2FsbG9jKEJJVFNfVE9fTE9OR1MoR0VOOF9MRUdBQ1lfUERQRVMpLCBzaXplb2Yo dW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwpOwo+PiArICAgICAgIHBkcyA9IGtjYWxsb2MoQklU U19UT19MT05HUyhwZHBlcyksIHNpemVvZih1bnNpZ25lZCBsb25nKSwgR0ZQX0tFUk5FTCk7Cj4+ ICAgICAgICAgIGlmICghcGRzKQo+PiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ Pgo+PiBAQCAtODU3LDcgKzkwOSw3IEBAIGludCBfX211c3RfY2hlY2sgYWxsb2NfZ2VuOF90ZW1w X2JpdG1hcHModW5zaWduZWQgbG9uZyAqKm5ld19wZHMsCj4+ICAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FTk9NRU07Cj4+ICAgICAgICAgIH0KPj4KPj4gLSAgICAgICBmb3IgKGkgPSAwOyBpIDwg R0VOOF9MRUdBQ1lfUERQRVM7IGkrKykgewo+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBwZHBl czsgaSsrKSB7Cj4+ICAgICAgICAgICAgICAgICAgcHRzW2ldID0ga2NhbGxvYyhCSVRTX1RPX0xP TkdTKEdFTjhfUERFU19QRVJfUEFHRSksCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2YodW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwpOwo+PiAgICAgICAgICAgICAg ICAgIGlmICghcHRzW2ldKQo+PiBAQCAtODcwLDcgKzkyMiw3IEBAIGludCBfX211c3RfY2hlY2sg YWxsb2NfZ2VuOF90ZW1wX2JpdG1hcHModW5zaWduZWQgbG9uZyAqKm5ld19wZHMsCj4+ICAgICAg ICAgIHJldHVybiAwOwo+Pgo+PiAgIGVycl9vdXQ6Cj4+IC0gICAgICAgZnJlZV9nZW44X3RlbXBf Yml0bWFwcyhwZHMsIHB0cyk7Cj4+ICsgICAgICAgZnJlZV9nZW44X3RlbXBfYml0bWFwcyhwZHMs IHB0cywgcGRwZXMpOwo+PiAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gICB9Cj4+Cj4+IEBA IC04ODYsNiArOTM4LDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+PiAgICAgICAgICBjb25zdCB1aW50NjRfdCBvcmlnX2xl bmd0aCA9IGxlbmd0aDsKPj4gICAgICAgICAgdWludDY0X3QgdGVtcDsKPj4gICAgICAgICAgdWlu dDMyX3QgcGRwZTsKPj4gKyAgICAgICBzaXplX3QgcGRwZXMgPSBJOTE1X1BEUEVTX1BFUl9QRFAo ZGV2KTsKPj4gICAgICAgICAgaW50IHJldDsKPj4KPj4gICAjaWZuZGVmIENPTkZJR182NEJJVAo+ PiBAQCAtOTAzLDcgKzk1Niw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPj4gICAgICAgICAgaWYgKFdBUk5fT04oc3RhcnQg KyBsZW5ndGggPCBzdGFydCkpCj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7Cj4+ Cj4+IC0gICAgICAgcmV0ID0gYWxsb2NfZ2VuOF90ZW1wX2JpdG1hcHMoJm5ld19wYWdlX2RpcnMs ICZuZXdfcGFnZV90YWJsZXMpOwo+PiArICAgICAgIHJldCA9IGFsbG9jX2dlbjhfdGVtcF9iaXRt YXBzKCZuZXdfcGFnZV9kaXJzLCAmbmV3X3BhZ2VfdGFibGVzLCBwZHBlcyk7Cj4+ICAgICAgICAg IGlmIChyZXQpCj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4KPj4gQEAgLTkxMSw3 ICs5NjQsNyBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4+ICAgICAgICAgIHJldCA9IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9k aXJlY3RvcmllcyhwcGd0dCwgJnBwZ3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgsCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3BhZ2VfZGlycyk7Cj4+ICAgICAg ICAgIGlmIChyZXQpIHsKPj4gLSAgICAgICAgICAgICAgIGZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMo bmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVzKTsKPj4gKyAgICAgICAgICAgICAgIGZyZWVf Z2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVzLCBwZHBlcyk7 Cj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gICAgICAgICAgfQo+Pgo+PiBAQCAt OTY4LDcgKzEwMjEsNyBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4+ICAgICAgICAgICAgICAgICAgc2V0X2JpdChwZHBlLCBw cGd0dC0+cGRwLnVzZWRfcGRwZXMpOwo+PiAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgZnJlZV9n ZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMpOwo+PiArICAg ICAgIGZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVz LCBwZHBlcyk7Cj4+ICAgICAgICAgIHJldHVybiAwOwo+Pgo+PiAgIGVycl9vdXQ6Cj4+IEBAIC05 NzcsMTMgKzEwMzAsMTkgQEAgZXJyX291dDoKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHVu bWFwX2FuZF9mcmVlX3B0KHBkLT5wYWdlX3RhYmxlc1t0ZW1wXSwgdm0tPmRldik7Cj4+ICAgICAg ICAgIH0KPj4KPj4gLSAgICAgICBmb3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wYWdlX2RpcnMs IEdFTjhfTEVHQUNZX1BEUEVTKQo+PiArICAgICAgIGZvcl9lYWNoX3NldF9iaXQocGRwZSwgbmV3 X3BhZ2VfZGlycywgcGRwZXMpCj4+ICAgICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcGQo cHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXSwgdm0tPmRldik7Cj4+Cj4+IC0gICAgICAg ZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMpOwo+ PiArICAgICAgIGZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2Vf dGFibGVzLCBwZHBlcyk7Cj4+ICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICAgfQo+Pgo+PiArc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9maW5pX2NvbW1vbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQpCj4+ICt7Cj4+ICsgICAgICAgdW5tYXBfYW5kX2ZyZWVfcHQocHBndHQtPnNjcmF0Y2hfcGQs IHBwZ3R0LT5iYXNlLmRldik7Cj4+ICsgICAgICAgdW5tYXBfYW5kX2ZyZWVfcGRwKCZwcGd0dC0+ cGRwLCBwcGd0dC0+YmFzZS5kZXYpOwo+PiArfQo+PiArCj4+ICAgLyoqCj4+ICAgICogR0VOOCBs ZWdhY3kgcHBndHQgcHJvZ3JhbW1pbmcgaXMgYWNjb21wbGlzaGVkIHRocm91Z2ggYSBtYXggNCBQ RFAgcmVnaXN0ZXJzCj4+ICAgICogd2l0aCBhIG5ldCBlZmZlY3QgcmVzZW1ibGluZyBhIDItbGV2 ZWwgcGFnZSB0YWJsZSBpbiBub3JtYWwgeDg2IHRlcm1zLiBFYWNoCj4+IEBAIC0xMDA0LDYgKzEw NjMsMTUgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2luaXRfY29tbW9uKHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCwgdWludDY0X3Qgc2l6ZSkKPj4KPj4gICAgICAgICAgcHBndHQtPnN3aXRj aF9tbSA9IGdlbjhfbW1fc3dpdGNoOwo+Pgo+PiArICAgICAgIGlmICghVVNFU19GVUxMXzQ4QklU X1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKPj4gKyAgICAgICAgICAgICAgIGludCByZXQgPSBf X3BkcF9pbml0KCZwcGd0dC0+cGRwLCBmYWxzZSk7Cj4+ICsgICAgICAgICAgICAgICBpZiAocmV0 KSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHVubWFwX2FuZF9mcmVlX3B0KHBwZ3R0LT5z Y3JhdGNoX3BkLCBwcGd0dC0+YmFzZS5kZXYpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+PiArICAgICAgICAgICAgICAgfQo+PiArICAgICAgIH0gZWxzZQo+PiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsgLyogTm90IHlldCBpbXBsZW1lbnRlZCAqLwo+PiAr Cj4+ICAgICAgICAgIHJldHVybiAwOwo+PiAgIH0KPj4KPj4gQEAgLTEwMjUsNyArMTA5Myw3IEBA IHN0YXRpYyBpbnQgZ2VuOF9hbGlhc2luZ19wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCkKPj4gICAgICAgICAgICogZXZlbnR1YWxseS4gKi8KPj4gICAgICAgICAgcmV0ID0g Z2VuOF9hbGxvY192YV9yYW5nZSgmcHBndHQtPmJhc2UsIHN0YXJ0LCBzaXplKTsKPj4gICAgICAg ICAgaWYgKHJldCkgewo+PiAtICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcHQocHBndHQt PnNjcmF0Y2hfcGQsIHBwZ3R0LT5iYXNlLmRldik7Cj4+ICsgICAgICAgICAgICAgICBnZW44X3Bw Z3R0X2ZpbmlfY29tbW9uKHBwZ3R0KTsKPj4gICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ PiAgICAgICAgICB9Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4+IGluZGV4 IGM2OGVjM2EuLmEzM2M2ZTkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o Cj4+IEBAIC04NSw4ICs4NSwxMiBAQCB0eXBlZGVmIGdlbjhfZ3R0X3B0ZV90IGdlbjhfcHBndHRf cGRlX3Q7Cj4+ICAgICogVGhlIGRpZmZlcmVuY2UgYXMgY29tcGFyZWQgdG8gbm9ybWFsIHg4NiAz IGxldmVsIHBhZ2UgdGFibGUgaXMgdGhlIFBEUEVzIGFyZQo+PiAgICAqIHByb2dyYW1tZWQgdmlh IHJlZ2lzdGVyLgo+PiAgICAqLwo+PiArI2RlZmluZSBHRU44X1BNTDRFU19QRVJfUE1MNCAgICAg ICAgICAgNTEyCj4+ICsjZGVmaW5lIEdFTjhfUE1MNEVfU0hJRlQgICAgICAgICAgICAgICAzOQo+ PiAgICNkZWZpbmUgR0VOOF9QRFBFX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgMzAKPj4g LSNkZWZpbmUgR0VOOF9QRFBFX01BU0sgICAgICAgICAgICAgICAgIDB4Mwo+PiArLyogTkI6IEdF TjhfUERQRV9NQVNLIGlzIHVudHJ1ZSBmb3IgMzJiIHBsYXRmb3JtcywgYnV0IGl0IGhhcyBubyBp bXBhY3Qgb24gMzJiIHBhZ2UKPj4gKyAqIHRhYmxlcyAqLwo+PiArI2RlZmluZSBHRU44X1BEUEVf TUFTSyAgICAgICAgICAgICAgICAgMHgxZmYKPj4gICAjZGVmaW5lIEdFTjhfUERFX1NISUZUICAg ICAgICAgICAgICAgICAyMQo+PiAgICNkZWZpbmUgR0VOOF9QREVfTUFTSyAgICAgICAgICAgICAg ICAgIDB4MWZmCj4+ICAgI2RlZmluZSBHRU44X1BURV9TSElGVCAgICAgICAgICAgICAgICAgMTIK Pj4gQEAgLTk1LDYgKzk5LDEzIEBAIHR5cGVkZWYgZ2VuOF9ndHRfcHRlX3QgZ2VuOF9wcGd0dF9w ZGVfdDsKPj4gICAjZGVmaW5lIEdFTjhfUFRFU19QRVJfUEFHRSAgICAgICAgICAgICAoUEFHRV9T SVpFIC8gc2l6ZW9mKGdlbjhfZ3R0X3B0ZV90KSkKPj4gICAjZGVmaW5lIEdFTjhfUERFU19QRVJf UEFHRSAgICAgICAgICAgICAoUEFHRV9TSVpFIC8gc2l6ZW9mKGdlbjhfcHBndHRfcGRlX3QpKQo+ Pgo+PiArI2lmZGVmIENPTkZJR182NEJJVAo+PiArIyBkZWZpbmUgSTkxNV9QRFBFU19QRVJfUERQ KGRldikgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpID9cCj4+ICsgICAgICAgICAgICAgICBH RU44X1BNTDRFU19QRVJfUE1MNCA6IEdFTjhfTEVHQUNZX1BEUEVTKQo+PiArI2Vsc2UKPj4gKyMg ZGVmaW5lIEk5MTVfUERQRVNfUEVSX1BEUCAgICAgICAgICAgIEdFTjhfTEVHQUNZX1BEUEVTCj4+ ICsjZW5kaWYKPj4gKwo+PiAgICNkZWZpbmUgUFBBVF9VTkNBQ0hFRF9JTkRFWCAgICAgICAgICAg IChfUEFHRV9QV1QgfCBfUEFHRV9QQ0QpCj4+ICAgI2RlZmluZSBQUEFUX0NBQ0hFRF9QREVfSU5E RVggICAgICAgICAgMCAvKiBXQiBMTEMgKi8KPj4gICAjZGVmaW5lIFBQQVRfQ0FDSEVEX0lOREVY ICAgICAgICAgICAgICBfUEFHRV9QQVQgLyogV0IgTExDZUxMQyAqLwo+PiBAQCAtMjEwLDkgKzIy MSwxNyBAQCBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSB7Cj4+ICAgfTsKPj4KPj4g ICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5IHsKPj4gLSAgICAgICAv KiBzdHJ1Y3QgcGFnZSAqcGFnZTsgKi8KPj4gLSAgICAgICBERUNMQVJFX0JJVE1BUCh1c2VkX3Bk cGVzLCBHRU44X0xFR0FDWV9QRFBFUyk7Cj4+IC0gICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJl Y3RvcnlfZW50cnkgKnBhZ2VfZGlyZWN0b3J5W0dFTjhfTEVHQUNZX1BEUEVTXTsKPj4gKyAgICAg ICBzdHJ1Y3QgcGFnZSAqcGFnZTsKPj4gKyAgICAgICBkbWFfYWRkcl90IGRhZGRyOwo+PiArICAg ICAgIHVuc2lnbmVkIGxvbmcgKnVzZWRfcGRwZXM7Cj4+ICsgICAgICAgc3RydWN0IGk5MTVfcGFn ZV9kaXJlY3RvcnlfZW50cnkgKipwYWdlX2RpcmVjdG9yeTsKPj4gK307Cj4+ICsKPj4gK3N0cnVj dCBpOTE1X3BtbDQgewo+PiArICAgICAgIHN0cnVjdCBwYWdlICpwYWdlOwo+PiArICAgICAgIGRt YV9hZGRyX3QgZGFkZHI7Cj4+ICsgICAgICAgREVDTEFSRV9CSVRNQVAodXNlZF9wbWw0ZXMsIEdF TjhfUE1MNEVTX1BFUl9QTUw0KTsKPj4gKyAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9y eV9wb2ludGVyX2VudHJ5ICpwZHBzW0dFTjhfUE1MNEVTX1BFUl9QTUw0XTsKPj4gICB9Owo+Pgo+ PiAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ugewo+PiBAQCAtMzAyLDggKzMyMSw5IEBAIHN0 cnVjdCBpOTE1X2h3X3BwZ3R0IHsKPj4gICAgICAgICAgc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7 Cj4+ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGRfZGlydHlfcmluZ3M7Cj4+ICAgICAgICAgIHVu aW9uIHsKPj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50 ZXJfZW50cnkgcGRwOwo+PiAtICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnlfZW50cnkgcGQ7Cj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9wbWw0IHBtbDQ7ICAg ICAgICAgIC8qIEdFTjgrICYgNjRiIFBQR1RUICovCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5IHBkcDsgICAvKiBHRU44KyAqLwo+PiAr ICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgcGQ7ICAgICAg ICAgICAgLyogR0VONi03ICovCj4+ICAgICAgICAgIH07Cj4+Cj4+ICAgICAgICAgIHVuaW9uIHsK Pj4gQEAgLTM5OSwxNCArNDE5LDE3IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuNl9wZGVf aW5kZXgodWludDMyX3QgYWRkcikKPj4gICAgICAgICAgICAgICB0ZW1wID0gbWluKHRlbXAsIGxl bmd0aCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gICAgICAgICAgICAg ICBzdGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVtcCkKPj4KPj4gLSNkZWZpbmUgZ2VuOF9mb3Jf ZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIpICAgICAgICAgXAo+ PiAtICAgICAgIGZvciAoaXRlciA9IGdlbjhfcGRwZV9pbmRleChzdGFydCksIHBkID0gKHBkcCkt PnBhZ2VfZGlyZWN0b3J5W2l0ZXJdOyAgIFwKPj4gLSAgICAgICAgICAgIGxlbmd0aCA+IDAgJiYg aXRlciA8IEdFTjhfTEVHQUNZX1BEUEVTOyAgICAgICAgICAgICAgICAgICAgXAo+PiArI2RlZmlu ZSBnZW44X2Zvcl9lYWNoX3BkcGVfZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVy LCBiKSAgICBcCj4+ICsgICAgICAgZm9yIChpdGVyID0gZ2VuOF9wZHBlX2luZGV4KHN0YXJ0KSwg cGQgPSAocGRwKS0+cGFnZV9kaXJlY3RvcnlbaXRlcl07IFwKPj4gKyAgICAgICAgICAgIGxlbmd0 aCA+IDAgJiYgKGl0ZXIgPCBiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ PiAgICAgICAgICAgICAgIHBkID0gKHBkcCktPnBhZ2VfZGlyZWN0b3J5WysraXRlcl0sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICAgICAgICAgICAgICAgdGVtcCA9IEFMSUdO KHN0YXJ0KzEsIDEgPDwgR0VOOF9QRFBFX1NISUZUKSAtIHN0YXJ0LCAgICAgICBcCj4+ICAgICAg ICAgICAgICAgdGVtcCA9IG1pbih0ZW1wLCBsZW5ndGgpLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4+ICAgICAgICAgICAgICAgc3RhcnQgKz0gdGVtcCwgbGVuZ3RoIC09IHRl bXApCj4+Cj4+ICsjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwgbGVu Z3RoLCB0ZW1wLCBpdGVyKSAgICAgICAgIFwKPj4gKyAgICAgICBnZW44X2Zvcl9lYWNoX3BkcGVf ZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyLCBJOTE1X1BEUEVTX1BFUl9QRFAo ZGV2KSkKPj4gKwo+PiAgIC8qIENsYW1wIGxlbmd0aCB0byB0aGUgbmV4dCBwYWdlX2RpcmVjdG9y eSBib3VuZGFyeSAqLwo+PiAgIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2VuOF9jbGFtcF9wZCh1 aW50NjRfdCBzdGFydCwgdWludDY0X3QgbGVuZ3RoKQo+PiAgIHsKPj4gLS0KPj4gMi4xLjEKPj4K Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK