From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH v5 5/8] drm/i915/skl+: change WM calc to fixed point 16.16 Date: Tue, 22 Nov 2016 10:42:36 -0200 Message-ID: <1479818556.2890.64.camel@intel.com> References: <20161118150934.29851-1-mahesh1.kumar@intel.com> <20161118150934.29851-6-mahesh1.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4237C6E2BE for ; Tue, 22 Nov 2016 12:42:41 +0000 (UTC) In-Reply-To: <20161118150934.29851-6-mahesh1.kumar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mahesh Kumar , intel-gfx@lists.freedesktop.org Cc: maarten.lankhorst@intel.com List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE2LTExLTE4IMOgcyAyMDozOSArMDUzMCwgTWFoZXNoIEt1bWFyIGVzY3JldmV1 Ogo+IFRoaXMgcGF0Y2ggY2hhbmdlcyBXYXRlcm1hayBjYWxjdWxhdGlvbiB0byBmaXhlZCBwb2lu dCBjYWxjdWxhdGlvbi4KPiBQcm9ibGVtIHdpdGggY3VycmVudCBjYWxjdWxhdGlvbiBpcyBkdXJp bmcgcGxhbmVfYmxvY2tzX3Blcl9saW5lCj4gY2FsY3VsYXRpb24gd2UgZGl2aWRlIGludGVybWVk aWF0ZSBibG9ja3Mgd2l0aCBtaW5fc2NhbmxpbmVzIGFuZAo+IHRha2VzIGZsb29yIG9mIHRoZSBy ZXN1bHQgYmVjYXVzZSBvZiBpbnRlZ2VyIG9wZXJhdGlvbi4KPiBoZW5jZSB3ZSBlbmQtdXAgYXNz aWduaW5nIGxlc3MgYmxvY2tzIHRoYW4gcmVxdWlyZWQuIFdoaWNoIGxlYWRzIHRvCj4gZmxpY2tl cnMuCj4gCj4gQ2hhbmdlcyBzaW5jZSBWMToKPiDCoC0gQWRkIGZpeGVkIHBvaW50IGRhdGEgdHlw ZSBhcyBwZXIgUGF1bG8ncyByZXZpZXcKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWhlc2ggS3VtYXIg PG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCB8IDg0Cj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgfCA3MCArKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tCj4gLS0tCj4gwqAyIGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRp b25zKCspLCAyOSBkZWxldGlvbnMoLSkKCkZpcnN0IG9mIGFsbCwgdGhlcmUncyBub24tc3RhbmRh cmQgaW5kZW50YXRpb24gYWxsIG92ZXIgdGhlIGNvZGUuIFdoZW4KYSBzdGF0ZW1lbnQgaXMgYnJv a2VuIGludG8gbXVsdGlwbGUgbGluZXMsIHNvbWV0aW1lcyB0aGVyZSdzIHdheSB0b28KbWFueSB0 YWJzLCBzb21ldGltZXMgdGFicy9zcGFjZXMgYXJlIG1pc3NpbmcuCgoKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+IGluZGV4IDM5NGQ3ZWEuLjIwNjkxZTkgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBAQCAtMTE5LDYgKzExOSw5MCBAQCBib29sIF9faTkxNV9pbmplY3RfbG9h ZF9mYWlsdXJlKGNvbnN0IGNoYXIKPiAqZnVuYywgaW50IGxpbmUpOwo+IMKgI2RlZmluZSBpOTE1 X2luamVjdF9sb2FkX2ZhaWx1cmUoKSBcCj4gwqAJX19pOTE1X2luamVjdF9sb2FkX2ZhaWx1cmUo X19mdW5jX18sIF9fTElORV9fKQo+IMKgCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArCXVpbnQzMl90 IHZhbDsKPiArfSB1aW50X2ZpeGVkXzE2XzE2X3Q7Cj4gKwo+ICsjZGVmaW5lIEZQXzE2XzE2X01B WCAoeyBcCj4gKwkJdWludF9maXhlZF8xNl8xNl90IGZwOyBcCj4gKwkJZnAudmFsID0gVUlOVF9N QVg7IFwKPiArCQlmcDsgXAo+ICt9KQo+ICsKPiArc3RhdGljIGlubGluZSB1aW50X2ZpeGVkXzE2 XzE2X3QgdTMyX3RvX2ZwXzE2XzE2KHVpbnQzMl90IHZhbCkKCkluIHRoZSB0eXBlIG5hbWUgdGhl IHBhdGNoIHVzZXMgImZpeGVkIiwgYnV0IGluIHNvbWUgZnVuY3Rpb25zIGl0IHVzZXMKImZwIi4g SSBrbm93IHRoYXQgZnAgaXMgc3VwcG9zZWQgdG8gaGVscCBmdW5jdGlvbiBuYW1lcyBzaG9ydGVy LCBidXQKSU1ITyB3ZSBzaG91bGQgc3RpY2sgd2l0aCB0aGUgc2FtZSB3b3JkIGFsbCB0aGUgdGlt ZS4gTXkgc3VnZ2VzdGlvbiBpcwp0byBrZWVwICJmaXhlZCIgZXZlcnl3aGVyZSwgYmVjYXVzZSB0 aGUgZGVmaW5pdGlvbiBvZiAiZnAiIGlzIG5vdApvYnZpb3VzIHRvIGV2ZXJ5Ym9keSAoZml4ZWQg cG9pbnQ/IGZsb2F0aW5nIHBvaW50PyBmcmFtZSBwb2ludGVyPwpmdW5jdGlvbmFsIHByb2dyYW1t aW5nPykuCgoKPiArewo+ICsJdWludF9maXhlZF8xNl8xNl90IGZwOwo+ICsKPiArCVdBUk5fT04o dmFsID4+IDE2KTsKPiArCj4gKwlmcC52YWwgPSB2YWwgPDwgMTY7Cj4gKwlyZXR1cm4gZnA7Cj4g K30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgZnBfMTZfMTZfdG9fdTMyX3JvdW5kX3Vw KHVpbnRfZml4ZWRfMTZfMTZfdAo+IGZwKQo+ICt7Cj4gKwlyZXR1cm4gRElWX1JPVU5EX1VQKGZw LnZhbCwgMSA8PCAxNik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgZnBfMTZf MTZfdG9fdTMyKHVpbnRfZml4ZWRfMTZfMTZfdCBmcCkKPiArewo+ICsJcmV0dXJuIChmcC52YWwg LyAxIDw8IDE2KTsKClRoaXMgaXMgZGl2aWRpbmcgYnkgMSBhbmQgdGhlbiBzaGlmdGluZy4gRG9l c24ndCBsb29rIGNvcnJlY3QuCgoKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1aW50X2ZpeGVk XzE2XzE2X3QgbWluX2ZwXzE2XzE2KHVpbnRfZml4ZWRfMTZfMTZfdAo+IG1pbjEsCj4gKwkJCQkJ CXVpbnRfZml4ZWRfMTZfMTZfdAo+IG1pbjIpCj4gK3sKPiArCXVpbnRfZml4ZWRfMTZfMTZfdCBt aW47Cj4gKwo+ICsJbWluLnZhbCA9IG1pbihtaW4xLnZhbCwgbWluMi52YWwpOwo+ICsJcmV0dXJu IG1pbjsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1aW50X2ZpeGVkXzE2XzE2X3QgbWF4X2Zw XzE2XzE2KHVpbnRfZml4ZWRfMTZfMTZfdAo+IG1heDEsCj4gKwkJCQkJCXVpbnRfZml4ZWRfMTZf MTZfdAo+IG1heDIpCj4gK3sKPiArCXVpbnRfZml4ZWRfMTZfMTZfdCBtYXg7Cj4gKwo+ICsJbWF4 LnZhbCA9IG1heChtYXgxLnZhbCwgbWF4Mi52YWwpOwo+ICsJcmV0dXJuIG1heDsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSB1aW50X2ZpeGVkXzE2XzE2X3QgZnBfMTZfMTZfZGl2X3JvdW5kX3Vw KHVpbnQzMl90IHZhbCwKPiB1aW50MzJfdCBkKQo+ICt7Cj4gKwl1aW50X2ZpeGVkXzE2XzE2X3Qg ZnAsIHJlczsKPiArCj4gKwlmcCA9IHUzMl90b19mcF8xNl8xNih2YWwpOwo+ICsJcmVzLnZhbCA9 IERJVl9ST1VORF9VUChmcC52YWwsIGQpOwo+ICsJcmV0dXJuIHJlczsKPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSB1aW50X2ZpeGVkXzE2XzE2X3QgZnBfMTZfMTZfZGl2X3JvdW5kX3VwX3VsbCh1 aW50NjRfdAo+IHZhbCwKPiArCQkJCQkJCQl1aW50Cj4gMzJfdCBkKQoKSSdkIGVuZCB0aGUgbmFt ZSB3aXRoICJ1NjQiIGluc3RlYWQgb2YgInVsbCIgc2luY2UgaXQncyBhbiB1aW50NjRfdAp0eXBl LCBub3QgdW5zaWduZWQgbG9uZyBsb25nLgoKCj4gK3sKPiArCXVpbnRfZml4ZWRfMTZfMTZfdCBy ZXM7Cj4gKwl1aW50NjRfdCBpbnRlcm1fdmFsOwo+ICsKPiArCVdBUk5fT04odmFsID4+IDQ4KTsK PiArCXZhbCA8PD0gMTY7Cj4gKwlpbnRlcm1fdmFsID0gRElWX1JPVU5EX1VQX1VMTCh2YWwsIGQp Owo+ICsJV0FSTl9PTihpbnRlcm1fdmFsID4+IDMyKTsKPiArCXJlcy52YWwgPSAodWludDMyX3Qp IGludGVybV92YWw7Cj4gKwo+ICsJcmV0dXJuIHJlczsKPiArfQo+ICsKPiArc3RhdGljIGlubGlu ZSB1aW50X2ZpeGVkXzE2XzE2X3QgbXVsX2ZwXzE2XzE2X3UzMih1aW50MzJfdCB2YWwsCj4gKwkJ CQkJCXVpbnRfZml4ZWRfMTZfMTZfdAo+IG11bCkKPiArewo+ICsJdWludDY0X3QgaW50ZXJtZWRp YXRlX3ZhbDsKPiArCXVpbnRfZml4ZWRfMTZfMTZfdCBmcDsKPiArCj4gKwlpbnRlcm1lZGlhdGVf dmFsID0gKHVpbnQ2NF90KSB2YWwgKiBtdWwudmFsOwo+ICsJV0FSTl9PTihpbnRlcm1lZGlhdGVf dmFsID4+IDMyKTsKPiArCWZwLnZhbCA9ICh1aW50MzJfdCkgaW50ZXJtZWRpYXRlX3ZhbDsKPiAr CXJldHVybiBmcDsKPiArfQo+ICsKPiDCoHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqeWVzbm8o Ym9vbCB2KQo+IMKgewo+IMKgCXJldHVybiB2ID8gInllcyIgOiAibm8iOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gaW5kZXggZDgwOTBhYS4uN2M3ODhhYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IEBAIC0zNTE1LDMzICszNTE1LDM3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2Rk YihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ICpjc3RhdGUsCj4gwqAgKiBmb3IgdGhlIHJlYWQg bGF0ZW5jeSkgYW5kIGNwcCBzaG91bGQgYWx3YXlzIGJlIDw9IDgsIHNvIHRoYXQKPiDCoCAqIHNo b3VsZCBhbGxvdyBwaXhlbF9yYXRlIHVwIHRvIH4yIEdIeiB3aGljaCBzZWVtcyBzdWZmaWNpZW50 IHNpbmNlCj4gbWF4Cj4gwqAgKiAyeGNkY2xrIGlzIDEzNTAgTUh6IGFuZCB0aGUgcGl4ZWwgcmF0 ZSBzaG91bGQgbmV2ZXIgZXhjZWVkIHRoYXQuCj4gKyAqIEJvdGggTWV0aG9kMSAmIE1ldGhvZDIg cmV0dXJucyBmaXhlZHBvaW50IDE2LjE2IG91dHB1dAoKVGhpcyBsaW5lIGlzIG5vdCBuZWVkZWQg YW55bW9yZTogZnVuY3Rpb24gc2lnbmF0dXJlcyBhcmUgc2F5aW5nIGl0IG5vdy4KCgo+IMKgKi8K PiAtc3RhdGljIHVpbnQzMl90IHNrbF93bV9tZXRob2QxKHVpbnQzMl90IHBpeGVsX3JhdGUsIHVp bnQ4X3QgY3BwLAo+IHVpbnQzMl90IGxhdGVuY3kpCj4gK3N0YXRpYyB1aW50X2ZpeGVkXzE2XzE2 X3Qgc2tsX3dtX21ldGhvZDEodWludDMyX3QgcGl4ZWxfcmF0ZSwKPiB1aW50OF90IGNwcCwKPiAr CQkJCQnCoHVpbnQzMl90IGxhdGVuY3kpCj4gwqB7Cj4gLQl1aW50MzJfdCB3bV9pbnRlcm1lZGlh dGVfdmFsLCByZXQ7Cj4gKwl1aW50NjRfdCB3bV9pbnRlcm1lZGlhdGVfdmFsOwoKV2h5IGFyZSB3 ZSB1c2luZyB1aW50NjRfdCBub3c/IElmIHdlIHdlcmVuJ3Qgb3ZlcmZsb3dpbmcgYmVmb3JlLCB3 ZQpzaG91bGRuJ3QgYmUgb3ZlcmZsb3dpbmcgbm93LCBzaG91bGQgd2U/IElzIHRoaXMgYSBzZXBh cmF0ZSBidWcgZml4PwoKRXZlcnl0aGluZyBlbHNlIGxvb2tzIGdvb2QuIFRoYW5rcyBmb3IgdGhl IGltcHJvdmVtZW50cyEKCgo+ICsJdWludF9maXhlZF8xNl8xNl90IHJldDsKPiDCoAo+IMKgCWlm IChsYXRlbmN5ID09IDApCj4gLQkJcmV0dXJuIFVJTlRfTUFYOwo+IC0KPiAtCXdtX2ludGVybWVk aWF0ZV92YWwgPSBsYXRlbmN5ICogcGl4ZWxfcmF0ZSAqIGNwcCAvIDUxMjsKPiAtCXJldCA9IERJ Vl9ST1VORF9VUCh3bV9pbnRlcm1lZGlhdGVfdmFsLCAxMDAwKTsKPiArCQlyZXR1cm4gRlBfMTZf MTZfTUFYOwo+IMKgCj4gKwl3bV9pbnRlcm1lZGlhdGVfdmFsID0gbGF0ZW5jeSAqIHBpeGVsX3Jh dGUgKiBjcHA7Cj4gKwlyZXQgPSBmcF8xNl8xNl9kaXZfcm91bmRfdXBfdWxsKHdtX2ludGVybWVk aWF0ZV92YWwsIDEwMDAgKgo+IDUxMik7Cj4gwqAJcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgdWludDMyX3Qgc2tsX3dtX21ldGhvZDIodWludDMyX3QgcGl4ZWxfcmF0ZSwgdWludDMy X3QKPiBwaXBlX2h0b3RhbCwKPiAtCQkJwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBsYXRlbmN5LCB1 aW50MzJfdAo+IHBsYW5lX2Jsb2Nrc19wZXJfbGluZSkKPiArc3RhdGljIHVpbnRfZml4ZWRfMTZf MTZfdCBza2xfd21fbWV0aG9kMih1aW50MzJfdCBwaXhlbF9yYXRlLAo+ICsJCQl1aW50MzJfdCBw aXBlX2h0b3RhbCwKPiArCQkJdWludDMyX3QgbGF0ZW5jeSwKPiArCQkJdWludF9maXhlZF8xNl8x Nl90IHBsYW5lX2Jsb2Nrc19wZXJfbGluZSkKPiDCoHsKPiAtCXVpbnQzMl90IHJldDsKPiDCoAl1 aW50MzJfdCB3bV9pbnRlcm1lZGlhdGVfdmFsOwo+ICsJdWludF9maXhlZF8xNl8xNl90IHJldDsK PiDCoAo+IMKgCWlmIChsYXRlbmN5ID09IDApCj4gLQkJcmV0dXJuIFVJTlRfTUFYOwo+ICsJCXJl dHVybiBGUF8xNl8xNl9NQVg7Cj4gwqAKPiDCoAl3bV9pbnRlcm1lZGlhdGVfdmFsID0gbGF0ZW5j eSAqIHBpeGVsX3JhdGU7Cj4gLQlyZXQgPSBESVZfUk9VTkRfVVAod21faW50ZXJtZWRpYXRlX3Zh bCwgcGlwZV9odG90YWwgKiAxMDAwKQo+ICoKPiAtCQkJCXBsYW5lX2Jsb2Nrc19wZXJfbGluZTsK PiAtCj4gKwl3bV9pbnRlcm1lZGlhdGVfdmFsID0gRElWX1JPVU5EX1VQKHdtX2ludGVybWVkaWF0 ZV92YWwsCj4gKwkJCQkJCQlwaXBlX2h0b3RhbAo+ICogMTAwMCk7Cj4gKwlyZXQgPSBtdWxfZnBf MTZfMTZfdTMyKHdtX2ludGVybWVkaWF0ZV92YWwsCj4gcGxhbmVfYmxvY2tzX3Blcl9saW5lKTsK PiDCoAlyZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gQEAgLTM1ODEsMTQgKzM1ODUsMTcgQEAgc3Rh dGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QKPiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiDCoAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSAmaW50 ZWxfcHN0YXRlLT5iYXNlOwo+IMKgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcHN0YXRl LT5mYjsKPiDCoAl1aW50MzJfdCBsYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5W2xl dmVsXTsKPiAtCXVpbnQzMl90IG1ldGhvZDEsIG1ldGhvZDI7Cj4gLQl1aW50MzJfdCBwbGFuZV9i eXRlc19wZXJfbGluZSwgcGxhbmVfYmxvY2tzX3Blcl9saW5lOwo+ICsJdWludF9maXhlZF8xNl8x Nl90IG1ldGhvZDEsIG1ldGhvZDI7Cj4gKwl1aW50X2ZpeGVkXzE2XzE2X3QgcGxhbmVfYmxvY2tz X3Blcl9saW5lOwo+ICsJdWludF9maXhlZF8xNl8xNl90IHNlbGVjdGVkX3Jlc3VsdDsKPiArCXVp bnQzMl90IGludGVybV9wYnBsOwo+ICsJdWludDMyX3QgcGxhbmVfYnl0ZXNfcGVyX2xpbmU7Cj4g wqAJdWludDMyX3QgcmVzX2Jsb2NrcywgcmVzX2xpbmVzOwo+IC0JdWludDMyX3Qgc2VsZWN0ZWRf cmVzdWx0Owo+IMKgCXVpbnQ4X3QgY3BwOwo+IMKgCXVpbnQzMl90IHdpZHRoID0gMCwgaGVpZ2h0 ID0gMDsKPiDCoAl1aW50MzJfdCBwbGFuZV9waXhlbF9yYXRlOwo+IC0JdWludDMyX3QgeV90aWxl X21pbmltdW0sIHlfbWluX3NjYW5saW5lczsKPiArCXVpbnRfZml4ZWRfMTZfMTZfdCB5X3RpbGVf bWluaW11bTsKPiArCXVpbnQzMl90IHlfbWluX3NjYW5saW5lczsKPiDCoAlzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSA9Cj4gwqAJCXRvX2ludGVsX2F0b21pY19zdGF0ZShjc3RhdGUt PmJhc2Uuc3RhdGUpOwo+IMKgCWJvb2wgYXBwbHlfbWVtb3J5X2J3X3dhID0gc2tsX25lZWRzX21l bW9yeV9id193YShzdGF0ZSk7Cj4gQEAgLTM2NDcsMTQgKzM2NTQsMTYgQEAgc3RhdGljIGludCBz a2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiDCoAo+IMKgCXBsYW5lX2J5dGVzX3Blcl9saW5lID0gd2lkdGggKiBjcHA7Cj4gwqAJ aWYgKHlfdGlsZWQpIHsKPiArCQlpbnRlcm1fcGJwbCA9IERJVl9ST1VORF9VUChwbGFuZV9ieXRl c19wZXJfbGluZSAqCj4gKwkJCQkJCXlfbWluX3NjYW5saW5lcywKPiA1MTIpOwo+IMKgCQlwbGFu ZV9ibG9ja3NfcGVyX2xpbmUgPQo+IC0JCcKgwqDCoMKgwqDCoERJVl9ST1VORF9VUChwbGFuZV9i eXRlc19wZXJfbGluZSAqCj4geV9taW5fc2NhbmxpbmVzLCA1MTIpOwo+IC0JCXBsYW5lX2Jsb2Nr c19wZXJfbGluZSAvPSB5X21pbl9zY2FubGluZXM7Cj4gKwkJwqDCoMKgwqDCoMKgZnBfMTZfMTZf ZGl2X3JvdW5kX3VwKGludGVybV9wYnBsLAo+IHlfbWluX3NjYW5saW5lcyk7Cj4gwqAJfSBlbHNl IGlmICh4X3RpbGVkKSB7Cj4gLQkJcGxhbmVfYmxvY2tzX3Blcl9saW5lID0KPiBESVZfUk9VTkRf VVAocGxhbmVfYnl0ZXNfcGVyX2xpbmUsIDUxMik7Cj4gKwkJaW50ZXJtX3BicGwgPSBESVZfUk9V TkRfVVAocGxhbmVfYnl0ZXNfcGVyX2xpbmUsCj4gNTEyKTsKPiArCQlwbGFuZV9ibG9ja3NfcGVy X2xpbmUgPQo+IHUzMl90b19mcF8xNl8xNihpbnRlcm1fcGJwbCk7Cj4gwqAJfSBlbHNlIHsKPiAt CQlwbGFuZV9ibG9ja3NfcGVyX2xpbmUgPQo+IERJVl9ST1VORF9VUChwbGFuZV9ieXRlc19wZXJf bGluZSwgNTEyKQo+IC0JCQkJCSsgMTsKPiArCQlpbnRlcm1fcGJwbCA9IERJVl9ST1VORF9VUChw bGFuZV9ieXRlc19wZXJfbGluZSwKPiA1MTIpICsgMTsKPiArCQlwbGFuZV9ibG9ja3NfcGVyX2xp bmUgPQo+IHUzMl90b19mcF8xNl8xNihpbnRlcm1fcGJwbCk7Cj4gwqAJfQo+IMKgCj4gwqAJbWV0 aG9kMSA9IHNrbF93bV9tZXRob2QxKHBsYW5lX3BpeGVsX3JhdGUsIGNwcCwgbGF0ZW5jeSk7Cj4g QEAgLTM2NjMsMjYgKzM2NzIsMjkgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShj b25zdCBzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCQnCoGxhdGVu Y3ksCj4gwqAJCQkJwqBwbGFuZV9ibG9ja3NfcGVyX2xpbmUpOwo+IMKgCj4gLQl5X3RpbGVfbWlu aW11bSA9IHBsYW5lX2Jsb2Nrc19wZXJfbGluZSAqIHlfbWluX3NjYW5saW5lczsKPiArCXlfdGls ZV9taW5pbXVtID0gbXVsX2ZwXzE2XzE2X3UzMih5X21pbl9zY2FubGluZXMsCj4gKwkJCQkJCXBs YW5lX2Jsb2Nrc19wZXJfbGluCj4gZSk7Cj4gwqAKPiDCoAlpZiAoeV90aWxlZCkgewo+IC0JCXNl bGVjdGVkX3Jlc3VsdCA9IG1heChtZXRob2QyLCB5X3RpbGVfbWluaW11bSk7Cj4gKwkJc2VsZWN0 ZWRfcmVzdWx0ID0gbWF4X2ZwXzE2XzE2KG1ldGhvZDIsCj4geV90aWxlX21pbmltdW0pOwo+IMKg CX0gZWxzZSB7Cj4gwqAJCWlmICgoY3BwICogY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19odG90YWwgLwo+IDUxMiA8IDEpICYmCj4gwqAJCcKgwqDCoMKgKHBsYW5lX2J5dGVzX3Blcl9s aW5lIC8gNTEyIDwgMSkpCj4gwqAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwo+IC0JCWVs c2UgaWYgKChkZGJfYWxsb2NhdGlvbiAvIHBsYW5lX2Jsb2Nrc19wZXJfbGluZSkgPj0KPiAxKQo+ IC0JCQlzZWxlY3RlZF9yZXN1bHQgPSBtaW4obWV0aG9kMSwgbWV0aG9kMik7Cj4gKwkJZWxzZSBp ZiAoKGRkYl9hbGxvY2F0aW9uIC8KPiArCQkJZnBfMTZfMTZfdG9fdTMyX3JvdW5kX3VwKHBsYW5l X2Jsb2Nrc19wZXJfbGkKPiBuZSkpID49IDEpCj4gKwkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9m cF8xNl8xNihtZXRob2QxLAo+IG1ldGhvZDIpOwo+CQllbHNlCj4gwqAJCQlzZWxlY3RlZF9yZXN1 bHQgPSBtZXRob2QxOwo+IMKgCX0KPiDCoAo+IC0JcmVzX2Jsb2NrcyA9IHNlbGVjdGVkX3Jlc3Vs dCArIDE7Cj4gLQlyZXNfbGluZXMgPSBESVZfUk9VTkRfVVAoc2VsZWN0ZWRfcmVzdWx0LAo+IHBs YW5lX2Jsb2Nrc19wZXJfbGluZSk7Cj4gKwlyZXNfYmxvY2tzID0gZnBfMTZfMTZfdG9fdTMyX3Jv dW5kX3VwKHNlbGVjdGVkX3Jlc3VsdCkgKyAxOwo+ICsJcmVzX2xpbmVzID0gRElWX1JPVU5EX1VQ KHNlbGVjdGVkX3Jlc3VsdC52YWwsCj4gKwkJCQkJcGxhbmVfYmxvY2tzX3Blcl9saW5lLnZhbCk7 Cj4gwqAKPiDCoAlpZiAobGV2ZWwgPj0gMSAmJiBsZXZlbCA8PSA3KSB7Cj4gwqAJCWlmICh5X3Rp bGVkKSB7Cj4gLQkJCXJlc19ibG9ja3MgKz0geV90aWxlX21pbmltdW07Cj4gKwkJCXJlc19ibG9j a3MgKz0KPiBmcF8xNl8xNl90b191MzJfcm91bmRfdXAoeV90aWxlX21pbmltdW0pOwo+IMKgCQkJ cmVzX2xpbmVzICs9IHlfbWluX3NjYW5saW5lczsKPiDCoAkJfSBlbHNlIHsKPiDCoAkJCXJlc19i bG9ja3MrKzsKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==