From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v2 13/16] drm/i915/gen9: Propagate watermark calculation failures up the call chain Date: Thu, 21 Apr 2016 14:19:33 +0200 Message-ID: <5718C555.1000709@linux.intel.com> References: <1461119183-14267-1-git-send-email-matthew.d.roper@intel.com> <1461119183-14267-14-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 0A0576EC9C for ; Thu, 21 Apr 2016 12:19:36 +0000 (UTC) In-Reply-To: <1461119183-14267-14-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjAtMDQtMTYgb20gMDQ6MjYgc2NocmVlZiBNYXR0IFJvcGVyOgo+IE9uY2Ugd2UgbW92ZSB3 YXRlcm1hcmsgY2FsY3VsYXRpb24gdG8gdGhlIGF0b21pYyBjaGVjayBwaGFzZSwgd2UnbGwgd2Fu dAo+IHRvIHN0YXJ0IHJlamVjdGluZyBkaXNwbGF5IGNvbmZpZ3VyYXRpb25zIHRoYXQgZXhjZWVk IG91dCB3YXRlcm1hcmsKPiBsaW1pdHMuICBBdCB0aGUgbW9tZW50IHdlIGp1c3QgYXNzdW1lIHRo YXQgdGhlcmUncyBhbHdheXMgYSB2YWxpZCBzZXQgb2YKPiB3YXRlcm1hcmtzLCBldmVuIHRob3Vn aCB0aGlzIG1heSBub3QgYWN0dWFsbHkgYmUgdHJ1ZS4gIExldCdzIHByZXBhcmUgYnkKPiBwYXNz aW5nIHJldHVybiBjb2RlcyB1cCB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIGluIHByZXBhcmF0aW9u Lgo+Cj4gU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4KPiBSZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp bnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIHwgMTAgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCA5 MCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2Vk LCA2MSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBpbmRleCA4MGQ4Zjc3Li43ZThmYTg4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMzMxMiw3ICsxMzMxMiw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ICAgKiBwaGFzZS4gIFRoZSBjb2RlIGhlcmUgc2hvdWxkIGJlIHJ1biBhZnRlciB0aGUgcGVyLWNy dGMgYW5kIHBlci1wbGFuZSAnY2hlY2snCj4gICAqIGhhbmRsZXJzIHRvIGVuc3VyZSB0aGF0IGFs bCBkZXJpdmVkIHN0YXRlIGhhcyBiZWVuIHVwZGF0ZWQuCj4gICAqLwo+IC1zdGF0aWMgdm9pZCBj YWxjX3dhdGVybWFya19kYXRhKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc3Rh dGljIGludCBjYWxjX3dhdGVybWFya19kYXRhKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gQEAgLTEzMzQ4 LDcgKzEzMzQ4LDkgQEAgc3RhdGljIHZvaWQgY2FsY193YXRlcm1hcmtfZGF0YShzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJLyogSXMgdGhlcmUgcGxhdGZvcm0tc3BlY2lm aWMgd2F0ZXJtYXJrIGluZm9ybWF0aW9uIHRvIGNhbGN1bGF0ZT8gKi8KPiAgCWlmIChkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX2dsb2JhbF93YXRlcm1hcmtzKQo+IC0JCWRldl9wcml2LT5kaXNw bGF5LmNvbXB1dGVfZ2xvYmFsX3dhdGVybWFya3Moc3RhdGUpOwo+ICsJCXJldHVybiBkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX2dsb2JhbF93YXRlcm1hcmtzKHN0YXRlKTsKPiArCj4gKwlyZXR1 cm4gMDsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTEzNDMyLDkgKzEzNDM0LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlyZXR1cm4g cmV0Owo+ICAKPiAgCWludGVsX2ZiY19jaG9vc2VfY3J0YyhkZXZfcHJpdiwgc3RhdGUpOwo+IC0J Y2FsY193YXRlcm1hcmtfZGF0YShzdGF0ZSk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4g Y2FsY193YXRlcm1hcmtfZGF0YShzdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxf YXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gaW5kZXggMjFmZGUwNS4uZjA3MDU0YSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IEBAIC0zMjQxLDEzICszMjQxLDE0IEBAIHN0YXRpYyBib29sIHNrbF9kZGJf YWxsb2NhdGlvbl9jaGFuZ2VkKGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ld19k ZGIsCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIHNrbF9jb21wdXRl X3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJ CSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+IC0JCQkJIHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlLAo+IC0JCQkJIHVpbnQxNl90IGRkYl9hbGxvY2F0aW9u LAo+IC0JCQkJIGludCBsZXZlbCwKPiAtCQkJCSB1aW50MTZfdCAqb3V0X2Jsb2NrcywgLyogb3V0 ICovCj4gLQkJCQkgdWludDhfdCAqb3V0X2xpbmVzIC8qIG91dCAqLykKPiArc3RhdGljIGludCBz a2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICsJCQkJc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUsCj4gKwkJCQl1aW50MTZfdCBkZGJfYWxs b2NhdGlvbiwKPiArCQkJCWludCBsZXZlbCwKPiArCQkJCXVpbnQxNl90ICpvdXRfYmxvY2tzLCAv KiBvdXQgKi8KPiArCQkJCXVpbnQ4X3QgKm91dF9saW5lcywgLyogb3V0ICovCj4gKwkJCQlib29s ICplbmFibGVkIC8qIG91dCAqLykKPiAgewo+ICAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0 YXRlID0gJmludGVsX3BzdGF0ZS0+YmFzZTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcHN0YXRlLT5mYjsKPiBAQCAtMzI1OSw4ICszMjYwLDEwIEBAIHN0YXRpYyBib29sIHNrbF9j b21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCXVpbnQ4X3QgY3BwOwo+ICAJdWludDMyX3Qgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwo+ICAK PiAtCWlmIChsYXRlbmN5ID09IDAgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUgfHwgIWludGVsX3Bz dGF0ZS0+dmlzaWJsZSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwlpZiAobGF0ZW5jeSA9PSAwIHx8 ICFjc3RhdGUtPmJhc2UuYWN0aXZlIHx8ICFpbnRlbF9wc3RhdGUtPnZpc2libGUpIHsKPiArCQkq ZW5hYmxlZCA9IGZhbHNlOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICAKPiAgCXdpZHRoID0gZHJt X3JlY3Rfd2lkdGgoJmludGVsX3BzdGF0ZS0+c3JjKSA+PiAxNjsKPiAgCWhlaWdodCA9IGRybV9y ZWN0X2hlaWdodCgmaW50ZWxfcHN0YXRlLT5zcmMpID4+IDE2Owo+IEBAIC0zMzIxLDEzICszMzI0 LDE2IEBAIHN0YXRpYyBib29sIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJcmVzX2Jsb2NrcysrOwo+ICAJfQo+ICAKPiAt CWlmIChyZXNfYmxvY2tzID49IGRkYl9hbGxvY2F0aW9uIHx8IHJlc19saW5lcyA+IDMxKQo+IC0J CXJldHVybiBmYWxzZTsKPiArCWlmIChyZXNfYmxvY2tzID49IGRkYl9hbGxvY2F0aW9uIHx8IHJl c19saW5lcyA+IDMxKSB7Cj4gKwkJKmVuYWJsZWQgPSBmYWxzZTsKPiArCQlyZXR1cm4gMDsKPiAr CX0KPiAgCj4gIAkqb3V0X2Jsb2NrcyA9IHJlc19ibG9ja3M7Cj4gIAkqb3V0X2xpbmVzID0gcmVz X2xpbmVzOwo+ICsJKmVuYWJsZWQgPSB0cnVlOwo+ICAKPiAtCXJldHVybiB0cnVlOwo+ICsJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQKPiBAQCAtMzM0NSw2ICszMzUxLDcgQEAgc2ts X2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGU7Cj4gIAl1aW50MTZf dCBkZGJfYmxvY2tzOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJ aW50IHJldDsKPiAgCj4gIAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxf Y3J0YywgaW50ZWxfcGxhbmUpIHsKPiAgCQlpbnQgaSA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9w bGFuZSk7Cj4gQEAgLTMzNzQsMTMgKzMzODEsMTYgQEAgc2tsX2NvbXB1dGVfd21fbGV2ZWwoY29u c3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCQlkZGJfYmxvY2tz ID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW2ldKTsKPiAgCj4gLQkJcmVz dWx0LT5wbGFuZV9lbltpXSA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRldl9wcml2LAo+IC0JCQkJ CQljc3RhdGUsCj4gLQkJCQkJCWludGVsX3BzdGF0ZSwKPiAtCQkJCQkJZGRiX2Jsb2NrcywKPiAt CQkJCQkJbGV2ZWwsCj4gLQkJCQkJCSZyZXN1bHQtPnBsYW5lX3Jlc19iW2ldLAo+IC0JCQkJCQkm cmVzdWx0LT5wbGFuZV9yZXNfbFtpXSk7Cj4gKwkJcmV0ID0gc2tsX2NvbXB1dGVfcGxhbmVfd20o ZGV2X3ByaXYsCj4gKwkJCQkJICAgY3N0YXRlLAo+ICsJCQkJCSAgIGludGVsX3BzdGF0ZSwKPiAr CQkJCQkgICBkZGJfYmxvY2tzLAo+ICsJCQkJCSAgIGxldmVsLAo+ICsJCQkJCSAgICZyZXN1bHQt PnBsYW5lX3Jlc19iW2ldLAo+ICsJCQkJCSAgICZyZXN1bHQtPnBsYW5lX3Jlc19sW2ldLAo+ICsJ CQkJCSAgICZyZXN1bHQtPnBsYW5lX2VuW2ldKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4g cmV0Owo+ICAJfQo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC0zNDE3LDIxICszNDI3LDI2IEBAIHN0 YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZSwKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2tsX2J1aWxkX3BpcGVf d20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAtCQkJICAgICAgc3RydWN0IHNr bF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+IC0JCQkgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBp cGVfd20pCj4gK3N0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKPiArCQkJICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIs Cj4gKwkJCSAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3N0YXRlLT5iYXNlLmNydGMtPmRldjsKPiAgCWNvbnN0IHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlpbnQg bGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiArCWludCByZXQ7Cj4g IAo+ICAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0J CXNrbF9jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBkZGIsIGNzdGF0ZSwKPiAtCQkJCSAgICAg bGV2ZWwsICZwaXBlX3dtLT53bVtsZXZlbF0pOwo+ICsJCXJldCA9IHNrbF9jb21wdXRlX3dtX2xl dmVsKGRldl9wcml2LCBkZGIsIGNzdGF0ZSwKPiArCQkJCQkgICBsZXZlbCwgJnBpcGVfd20tPndt W2xldmVsXSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCXBpcGVf d20tPmxpbmV0aW1lID0gc2tsX2NvbXB1dGVfbGluZXRpbWVfd20oY3N0YXRlKTsKPiAgCj4gIAlz a2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNzdGF0ZSwgJnBpcGVfd20tPnRyYW5zX3dtKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfd21fcmVz dWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IEBAIC0zNjc4LDIxICszNjkzLDI3IEBAIHN0 YXRpYyB2b2lkIHNrbF9mbHVzaF93bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBza2xfdXBkYXRlX3BpcGVfd20o c3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4gLQkJCSAgICAgICBzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uICpkZGIsIC8qIG91dCAqLwo+IC0JCQkgICAgICAgc3RydWN0IHNrbF9waXBl X3dtICpwaXBlX3dtIC8qIG91dCAqLykKPiArc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20o c3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4gKwkJCSAgICAgIHN0cnVjdCBza2xfZGRi X2FsbG9jYXRpb24gKmRkYiwgLyogb3V0ICovCj4gKwkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93 bSAqcGlwZV93bSwgLyogb3V0ICovCj4gKwkJCSAgICAgIGJvb2wgKmNoYW5nZWQgLyogb3V0ICov KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3N0YXRlLT5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUg PSB0b19pbnRlbF9jcnRjX3N0YXRlKGNzdGF0ZSk7Cj4gKwlpbnQgcmV0Owo+ICAKPiAtCXNrbF9i dWlsZF9waXBlX3dtKGludGVsX2NzdGF0ZSwgZGRiLCBwaXBlX3dtKTsKPiArCXJldCA9IHNrbF9i dWlsZF9waXBlX3dtKGludGVsX2NzdGF0ZSwgZGRiLCBwaXBlX3dtKTsKPiArCWlmIChyZXQpCj4g KwkJcmV0dXJuIHJldDsKPiAgCj4gIAlpZiAoIW1lbWNtcCgmaW50ZWxfY3J0Yy0+d20uYWN0aXZl LnNrbCwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCj4gLQkJcmV0dXJuIGZhbHNlOwo+ICsJ CSpjaGFuZ2VkID0gZmFsc2U7Cj4gKwllbHNlCj4gKwkJKmNoYW5nZWQgPSB0cnVlOwo+ICAKPiAg CWludGVsX2NydGMtPndtLmFjdGl2ZS5za2wgPSAqcGlwZV93bTsKPiAgCj4gLQlyZXR1cm4gdHJ1 ZTsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX290aGVy X3BpcGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBAQCAtMzcyNSw4ICszNzQ2LDggQEAg c3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9vdGhlcl9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAkJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAt CQl3bV9jaGFuZ2VkID0gc2tsX3VwZGF0ZV9waXBlX3dtKGludGVsX2NydGMtPmJhc2Uuc3RhdGUs Cj4gLQkJCQkJCSZyLT5kZGIsICZwaXBlX3dtKTsKPiArCQlza2xfdXBkYXRlX3BpcGVfd20oaW50 ZWxfY3J0Yy0+YmFzZS5zdGF0ZSwKPiArCQkJCSAgICZyLT5kZGIsICZwaXBlX3dtLCAmd21fY2hh bmdlZCk7Cj4gIAo+ICAJCS8qCj4gIAkJICogSWYgd2UgZW5kIHVwIHJlLWNvbXB1dGluZyB0aGUg b3RoZXIgcGlwZSBXTSB2YWx1ZXMsIGl0J3MKPiBAQCAtMzgyNywxNCArMzg0OCwxNSBAQCBzdGF0 aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBz a2xfd21fdmFsdWVzICpyZXN1bHRzID0gJmRldl9wcml2LT53bS5za2xfcmVzdWx0czsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PnN0YXRlKTsKPiAgCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSA9ICZjc3RhdGUtPndtLnNr bC5vcHRpbWFsOwo+IC0KPiArCWJvb2wgd21fY2hhbmdlZDsKPiAgCj4gIAkvKiBDbGVhciBhbGwg ZGlydHkgZmxhZ3MgKi8KPiAgCXJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKPiAgCj4gIAlza2xf Y2xlYXJfd20ocmVzdWx0cywgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gIAo+IC0JaWYgKCFza2xfdXBk YXRlX3BpcGVfd20oY3J0Yy0+c3RhdGUsICZyZXN1bHRzLT5kZGIsIHBpcGVfd20pKQo+ICsJc2ts X3VwZGF0ZV9waXBlX3dtKGNydGMtPnN0YXRlLCAmcmVzdWx0cy0+ZGRiLCBwaXBlX3dtLCAmd21f Y2hhbmdlZCk7Cj4gKwlpZiAoIXdtX2NoYW5nZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCXNrbF9j b21wdXRlX3dtX3Jlc3VsdHMoZGV2LCBwaXBlX3dtLCByZXN1bHRzLCBpbnRlbF9jcnRjKTsKV2l0 aCB0aGUgbml0cGlja3MgZml4ZWQsIGFuZCB3aXRoIENJIGhhcHB5LgoKUmV2aWV3ZWQtYnk6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=