From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH v4 2/8] drm/i915/skl: New ddb allocation algorithm Date: Fri, 04 Nov 2016 17:25:44 -0200 Message-ID: <1478287544.2535.163.camel@intel.com> References: <20161013105826.9710-1-mahesh1.kumar@intel.com> <20161013105826.9710-3-mahesh1.kumar@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 ESMTPS id BB5706EA76 for ; Fri, 4 Nov 2016 19:25:48 +0000 (UTC) In-Reply-To: <20161013105826.9710-3-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: "Kumar, Mahesh" , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE2LTEwLTEzIMOgcyAxNjoyOCArMDUzMCwgS3VtYXIsIE1haGVzaCBlc2NyZXZl dToKPiBGcm9tOiBNYWhlc2ggS3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+IAo+IFRo aXMgcGF0Y2ggaW1wbGVtZW50cyBuZXcgRERCIGFsbG9jYXRpb24gYWxnb3JpdGhtIGFzIHBlciBI VyB0ZWFtCj4gcmVjb21tZW5kYXRpb24uIFRoaXMgYWxnbyB0YWtlY2FyZSBvZiBzY2VuYXJpbyB3 aGVyZSB3ZSBhbGxvY2F0ZSBsZXNzCj4gRERCCj4gZm9yIHRoZSBwbGFuZXMgd2l0aCBsb3dlciBy ZWxhdGl2ZSBwaXhlbCByYXRlLCBidXQgdGhleSByZXF1aXJlIG1vcmUKPiBEREIKPiB0byB3b3Jr Lgo+IEl0IGFsc28gdGFrZXMgY2FyZSBvZiBlbmFibGluZyBzYW1lIHdhdGVybWFyayBsZXZlbCBm b3IgZWFjaAo+IHBsYW5lLCBmb3IgZWZmaWNpZW50IHBvd2VyIHNhdmluZy4KPiAKPiBDaGFuZ2Vz IHNpbmNlIHYxOgo+IMKgLSBSZWJhc2Ugb24gdG9wIG9mIFBhdWxvJ3MgcGF0Y2ggc2VyaWVzCj4g Cj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiDCoC0gRml4IHRoZSBmb3IgbG9vcCBjb25kaXRpb24gdG8g ZW5hYmxlIFdNCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MzoKPiDCoC0gRml4IGNyYXNoIGluIGN1cnNv ciBpLWctdCByZXBvcnRlZCBieSBNYWFydGVuCj4gwqAtIFJlYmFzZSBhZnRlciBhZGRyZXNzaW5n IFBhdWxvJ3MgY29tbWVudHMKPiDCoC0gRmV3IG90aGVyIFVMVCBmaXhlcwo+IAoKVGhpcyB3aWxs IHJlcXVpcmUgYSBodWdlIHJlYmFzZSBkdWUgdG8gdGhlIHRoaW5ncyB0aGF0IHdlcmUgYWxyZWFk eQptZXJnZWQgYW5kIHRob3NlIHdobyBhcmUgYWJvdXQgdG8gYmUgbWVyZ2VkLiBBbHNvLCB0aGlz IGlzIGEgZ2VuZXJhbAppbXByb3ZlbWVudCB3aGlsZSB0aGUgb3RoZXIgcGF0Y2hlcyBhcmUgYnVn IGZpeGVzLiBDYW4geW91IHBsZWFzZSBtb3ZlCnRoaXMgdG8gdGhlIGVuZCBvZiB0aGUgc2VyaWVz PyBJJ2QgcmVhbGx5IGxpa2UgdG8gZ2V0IHRoZSBvdGhlciB0aGluZ3MKbWVyZ2VkIGZpcnN0LCBp biBjYXNlIHdlIGRlY2lkZSB0byBiYWNrcG9ydCB0aGUgZml4ZXMuCgoKPiBTaWduZWQtb2ZmLWJ5 OiBNYWhlc2ggS3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8IDE0OSArKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0KPiAtLS0tLS0tLS0tCj4gwqAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwg NzAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCAwOTgz MzZkLi44NGVjNmIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTMzNDQsNiAr MzM0NCw3IEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUK PiAqcHN0YXRlLAo+IMKgCj4gwqBzdGF0aWMgaW50Cj4gwqBza2xfYWxsb2NhdGVfcGlwZV9kZGIo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiArCQnCoMKgwqDCoMKgwqBzdHJ1Y3Qg c2tsX3BpcGVfd20gKnBpcGVfd20sCj4gwqAJCcKgwqDCoMKgwqDCoHN0cnVjdCBza2xfZGRiX2Fs bG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOwo+IEBAIC0zMzU5LDggKzMzNjAsMTIgQEAg c2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gKmNzdGF0ZSwK PiDCoAl1aW50MTZfdCAqbWluaW11bSA9IGNzdGF0ZS0+d20uc2tsLm1pbmltdW1fYmxvY2tzOwo+ IMKgCXVpbnQxNl90ICp5X21pbmltdW0gPSBjc3RhdGUtPndtLnNrbC5taW5pbXVtX3lfYmxvY2tz Owo+IMKgCXVuc2lnbmVkIGludCB0b3RhbF9kYXRhX3JhdGU7Cj4gKwl1aW50MTZfdCB0b3RhbF9t aW5fYmxvY2tzID0gMDsKPiArCXVpbnQxNl90IHRvdGFsX2xldmVsX2RkYiA9IDA7Cj4gwqAJaW50 IG51bV9hY3RpdmU7Cj4gLQlpbnQgaWQsIGk7Cj4gKwlpbnQgbWF4X2xldmVsLCBsZXZlbDsKPiAr CWludCBpZCwgaSwgcmV0ID0gMDsKPiArCj4gwqAKPiDCoAlpZiAoV0FSTl9PTighc3RhdGUpKQo+ IMKgCQlyZXR1cm4gMDsKPiBAQCAtMzQwOSwxOSArMzQxNCw0MiBAQCBza2xfYWxsb2NhdGVfcGlw ZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiAqY3N0YXRlLAo+IMKgCX0KPiDCoAo+IMKg CWZvciAoaSA9IDA7IGkgPCBQTEFORV9DVVJTT1I7IGkrKykgewo+IC0JCWFsbG9jX3NpemUgLT0g bWluaW11bVtpXTsKPiAtCQlhbGxvY19zaXplIC09IHlfbWluaW11bVtpXTsKPiArCQl0b3RhbF9t aW5fYmxvY2tzICs9IG1pbmltdW1baV07Cj4gKwkJdG90YWxfbWluX2Jsb2NrcyArPSB5X21pbmlt dW1baV07Cj4gwqAJfQo+IMKgCj4gLQkvKgo+IC0JwqAqIDIuIERpc3RyaWJ1dGUgdGhlIHJlbWFp bmluZyBzcGFjZSBpbiBwcm9wb3J0aW9uIHRvIHRoZQo+IGFtb3VudCBvZgo+IC0JwqAqIGRhdGEg ZWFjaCBwbGFuZSBuZWVkcyB0byBmZXRjaCBmcm9tIG1lbW9yeS4KPiAtCcKgKgo+IC0JwqAqIEZJ WE1FOiB3ZSBtYXkgbm90IGFsbG9jYXRlIGV2ZXJ5IHNpbmdsZSBibG9jayBoZXJlLgo+IC0JwqAq Lwo+ICsJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsgbGV2ZWwgPj0gMDsgbGV2 ZWwtLSkgewo+ICsJCXRvdGFsX2xldmVsX2RkYiA9IDA7Cj4gKwkJZm9yIChpID0gMDsgaSA8IFBM QU5FX0NVUlNPUjsgaSsrKSB7Cj4gKwkJCS8qCj4gKwkJCcKgKiBUT0RPOiBXZSBzaG91bGQgY2Fs Y3VsYXRlIHdhdGVybWFyawo+IHZhbHVlcyBmb3IgWS9VVgo+ICsJCQnCoCogcGxhbmUgYm90aCBp biBjYXNlIG9mIE5WMTIgZm9ybWF0IGFuZCB1c2UKPiBib3RoIHZhbHVlcwo+ICsJCQnCoCogZm9y IGRkYiBjYWxjdWxhdGlvbiwgQXMgTlYxMiBpcyBkaXNhYmxlZAo+IGFzIG9mIG5vdy4KPiArCQkJ wqAqIHVzaW5nIG9ubHkgc2luZ2xlIHBsYW5lIHZhbHVlIGhlcmUuCj4gKwkJCcKgKi8KPiArCQkJ dWludDE2X3QgbWluID0gbWluaW11bVtpXSArIHlfbWluaW11bVtpXTsKPiArCQkJdWludDE2X3Qg cGxhbmVfbGV2ZWxfZGRiX3dtID0KPiArCQkJCW1heChwaXBlX3dtLQo+ID53bVtsZXZlbF0ucGxh bmVfcmVzX2JbaV0sIG1pbik7Cj4gKwkJCXRvdGFsX2xldmVsX2RkYiArPSBwbGFuZV9sZXZlbF9k ZGJfd207Cj4gKwkJfQo+ICsKPiArCQlpZiAodG90YWxfbGV2ZWxfZGRiIDw9IGFsbG9jX3NpemUp Cj4gKwkJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWlmICgobGV2ZWwgPCAwKSB8fCAodG90YWxfbWlu X2Jsb2NrcyA+IGFsbG9jX3NpemUpKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVkIGRp c3BsYXkgY29uZmlndXJhdGlvbgo+IGV4Y2VlZHMgc3lzdGVtIEREQiBsaW1pdGF0aW9ucyIpOwo+ ICsJCURSTV9ERUJVR19LTVMoIm1pbmltdW0gcmVxdWlyZWQgJWQvJWRcbiIsIChsZXZlbCA8Cj4g MCkgPwo+ICsJCQkJdG90YWxfbGV2ZWxfZGRiIDogdG90YWxfbWluX2Jsb2NrcywKPiBhbGxvY19z aXplKTsKPiArCQlyZXQgPSAtRUlOVkFMOwo+ICsJCWdvdG8gZXhpdDsKPiArCX0KPiArCW1heF9s ZXZlbCA9IGxldmVsOwo+ICsJYWxsb2Nfc2l6ZSAtPSB0b3RhbF9sZXZlbF9kZGI7Cj4gKwo+IMKg CXRvdGFsX2RhdGFfcmF0ZSA9IHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0 ZSk7Cj4gwqAJaWYgKHRvdGFsX2RhdGFfcmF0ZSA9PSAwKQo+IC0JCXJldHVybiAwOwo+ICsJCWdv dG8gZXhpdDsKPiDCoAo+IMKgCXN0YXJ0ID0gYWxsb2MtPnN0YXJ0Owo+IMKgCWZvcl9lYWNoX2lu dGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewo+IEBAIC0z NDM2LDcgKzM0NjQsOCBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNf c3RhdGUKPiAqY3N0YXRlLAo+IMKgCQnCoCogcHJvbW90ZSB0aGUgZXhwcmVzc2lvbiB0byA2NCBi aXRzIHRvIGF2b2lkCj4gb3ZlcmZsb3dpbmcsIHRoZQo+IMKgCQnCoCogcmVzdWx0IGlzIDwgYXZh aWxhYmxlIGFzIGRhdGFfcmF0ZSAvCj4gdG90YWxfZGF0YV9yYXRlIDwgMQo+IMKgCQnCoCovCj4g LQkJcGxhbmVfYmxvY2tzID0gbWluaW11bVtpZF07Cj4gKwkJcGxhbmVfYmxvY2tzID0gbWF4KHBp cGVfd20tCj4gPndtW21heF9sZXZlbF0ucGxhbmVfcmVzX2JbaWRdLAo+ICsJCQkJCW1pbmltdW1b aWRdKTsKPiDCoAkJcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUg Kgo+IGRhdGFfcmF0ZSwKPiDCoAkJCQkJdG90YWxfZGF0YV9yYXRlKTsKPiDCoAo+IEBAIC0zNDQ0 LDEyICszNDczLDEzIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZQo+ICpjc3RhdGUsCj4gwqAJCWlmIChkYXRhX3JhdGUpIHsKPiDCoAkJCWRkYi0+cGxhbmVb cGlwZV1baWRdLnN0YXJ0ID0gc3RhcnQ7Cj4gwqAJCQlkZGItPnBsYW5lW3BpcGVdW2lkXS5lbmQg PSBzdGFydCArCj4gcGxhbmVfYmxvY2tzOwo+ICsJCQlzdGFydCArPSBwbGFuZV9ibG9ja3M7Cj4g wqAJCX0KPiDCoAo+IC0JCXN0YXJ0ICs9IHBsYW5lX2Jsb2NrczsKPiAtCj4gwqAJCS8qCj4gwqAJ CcKgKiBhbGxvY2F0aW9uIGZvciB5X3BsYW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1hdDoKPiArCQnC oCogVE9ETzogT25jZSB3ZSBzdGFydCBjYWxjdWxhdGluZyB3YXRlcm1hcmsgdmFsdWVzCj4gZm9y IFkvVVYKPiArCQnCoCogcGxhbmUgYm90aCBjb25zaWRlciBpdCBmb3IgaW5pdGlhbCBhbGxvd2Vk IHdtCj4gYmxvY2tzLgo+IMKgCQnCoCovCj4gwqAJCXlfZGF0YV9yYXRlID0gY3N0YXRlLT53bS5z a2wucGxhbmVfeV9kYXRhX3JhdGVbaWRdOwo+IMKgCj4gQEAgLTM0NjAsMTIgKzM0OTAsMjkgQEAg c2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gKmNzdGF0ZSwK PiDCoAkJaWYgKHlfZGF0YV9yYXRlKSB7Cj4gwqAJCQlkZGItPnlfcGxhbmVbcGlwZV1baWRdLnN0 YXJ0ID0gc3RhcnQ7Cj4gwqAJCQlkZGItPnlfcGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsK PiB5X3BsYW5lX2Jsb2NrczsKPiArCQkJc3RhcnQgKz0geV9wbGFuZV9ibG9ja3M7Cj4gwqAJCX0K PiDCoAo+IC0JCXN0YXJ0ICs9IHlfcGxhbmVfYmxvY2tzOwo+ICsJCS8qCj4gKwkJwqAqIE5vdyBl bmFibGUgYWxsIGxldmVscyBpbiBXTSBzdHJ1Y3R1cmUgd2hpY2ggY2FuCj4gYmUgZW5hYmxlZAo+ ICsJCcKgKiB1c2luZyBjdXJyZW50IEREQiBhbGxvY2F0aW9uCj4gKwkJwqAqLwo+ICsJCWZvciAo aSA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsgaSA+PSAwOyBpLS0pIHsKPiArCQkJaWYgKGkgPiBt YXhfbGV2ZWwgfHwgcGlwZV93bS0KPiA+d21baV0ucGxhbmVfcmVzX2xbaWRdID4gMzEKPiArCQkJ CQl8fCBwaXBlX3dtLQo+ID53bVtpXS5wbGFuZV9yZXNfYltpZF0gPT0gMAo+ICsJCQkJCXx8IHBp cGVfd20tCj4gPndtW2ldLnBsYW5lX3Jlc19iW2lkXSA+PQo+ICsJCQkJCXNrbF9kZGJfZW50cnlf c2l6ZSgmZGRiLQo+ID5wbGFuZVtwaXBlXVtpZF0pKSB7Cj4gKwkJCQlwaXBlX3dtLT53bVtpXS5w bGFuZV9lbltpZF0gPSBmYWxzZTsKPiArCQkJCXBpcGVfd20tPndtW2ldLnBsYW5lX3Jlc19iW2lk XSA9IDA7Cj4gKwkJCQlwaXBlX3dtLT53bVtpXS5wbGFuZV9yZXNfbFtpZF0gPSAwOwo+ICsJCQl9 IGVsc2Ugewo+ICsJCQkJcGlwZV93bS0+d21baV0ucGxhbmVfZW5baWRdID0gdHJ1ZTsKPiArCQkJ fQo+ICsJCX0KPiDCoAl9Cj4gwqAKPiAtCXJldHVybiAwOwo+ICtleGl0Ogo+ICsJcmV0dXJuIHJl dDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHVpbnQzMl90IHNrbF9waXBlX3BpeGVsX3JhdGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiAqY29uZmlnKQo+IEBAIC0zNTM2LDExICszNTgz LDkgQEAgc3RhdGljIHVpbnQzMl90Cj4gc2tsX2FkanVzdGVkX3BsYW5lX3BpeGVsX3JhdGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdAo+IMKgc3RhdGljIGludCBza2xfY29tcHV0 ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiDC oAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+IMKgCQkJCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZQo+ICppbnRlbF9wc3RhdGUsCj4gLQkJCQl1aW50MTZfdCBkZGJfYWxsb2Nh dGlvbiwKPiDCoAkJCQlpbnQgbGV2ZWwsCj4gwqAJCQkJdWludDE2X3QgKm91dF9ibG9ja3MsIC8q IG91dCAqLwo+IC0JCQkJdWludDhfdCAqb3V0X2xpbmVzLCAvKiBvdXQgKi8KPiAtCQkJCWJvb2wg KmVuYWJsZWQgLyogb3V0ICovKQo+ICsJCQkJdWludDhfdCAqb3V0X2xpbmVzIC8qIG91dCAqLykK PiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSAmaW50ZWxfcHN0YXRl LT5iYXNlOwo+IMKgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcHN0YXRlLT5mYjsKPiBA QCAtMzU1NCwxMCArMzU5OSw4IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29u c3Qgc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJdWludDMyX3QgcGxh bmVfcGl4ZWxfcmF0ZTsKPiDCoAl1aW50MzJfdCB5X3RpbGVfbWluaW11bSwgeV9taW5fc2Nhbmxp bmVzOwo+IMKgCj4gLQlpZiAobGF0ZW5jeSA9PSAwIHx8ICFjc3RhdGUtPmJhc2UuYWN0aXZlIHx8 ICFpbnRlbF9wc3RhdGUtCj4gPmJhc2UudmlzaWJsZSkgewo+IC0JCSplbmFibGVkID0gZmFsc2U7 Cj4gKwlpZiAobGF0ZW5jeSA9PSAwIHx8ICFjc3RhdGUtPmJhc2UuYWN0aXZlIHx8ICFpbnRlbF9w c3RhdGUtCj4gPmJhc2UudmlzaWJsZSkKPiDCoAkJcmV0dXJuIDA7Cj4gLQl9Cj4gwqAKPiDCoAl3 aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiDC oAloZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJmludGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+IEBAIC0zNjQyLDQ3ICszNjg1LDIyIEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVf d20oY29uc3Qgc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCX0KPiDC oAl9Cj4gwqAKPiAtCWlmIChyZXNfYmxvY2tzID49IGRkYl9hbGxvY2F0aW9uIHx8IHJlc19saW5l cyA+IDMxKSB7Cj4gLQkJKmVuYWJsZWQgPSBmYWxzZTsKPiAtCj4gLQkJLyoKPiAtCQnCoCogSWYg dGhlcmUgYXJlIG5vIHZhbGlkIGxldmVsIDAgd2F0ZXJtYXJrcywgdGhlbiB3ZQo+IGNhbid0Cj4g LQkJwqAqIHN1cHBvcnQgdGhpcyBkaXNwbGF5IGNvbmZpZ3VyYXRpb24uCj4gLQkJwqAqLwo+IC0J CWlmIChsZXZlbCkgewo+IC0JCQlyZXR1cm4gMDsKPiAtCQl9IGVsc2Ugewo+IC0JCQlEUk1fREVC VUdfS01TKCJSZXF1ZXN0ZWQgZGlzcGxheQo+IGNvbmZpZ3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0g d2F0ZXJtYXJrIGxpbWl0YXRpb25zXG4iKTsKPiAtCQkJRFJNX0RFQlVHX0tNUygiUGxhbmUgJWQu JWQ6IGJsb2NrcyByZXF1aXJlZAo+ID0gJXUvJXUsIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIs Cj4gLQkJCQnCoMKgwqDCoMKgwqB0b19pbnRlbF9jcnRjKGNzdGF0ZS0KPiA+YmFzZS5jcnRjKS0+ cGlwZSwKPiAtCQkJCcKgwqDCoMKgwqDCoHNrbF93bV9wbGFuZV9pZCh0b19pbnRlbF9wbGFuZQo+ IChwc3RhdGUtPnBsYW5lKSksCj4gLQkJCQnCoMKgwqDCoMKgwqByZXNfYmxvY2tzLCBkZGJfYWxs b2NhdGlvbiwKPiByZXNfbGluZXMpOwo+IC0KPiAtCQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQkJfQo+ IC0JfQo+IC0KPiDCoAkqb3V0X2Jsb2NrcyA9IHJlc19ibG9ja3M7Cj4gwqAJKm91dF9saW5lcyA9 IHJlc19saW5lczsKPiAtCSplbmFibGVkID0gdHJ1ZTsKPiDCoAo+IMKgCXJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqBzdGF0aWMgaW50Cj4gwqBza2xfY29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJwqDCoMKgwqDCoHN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKmRkYiwKPiDCoAkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUsCj4gwqAJCcKgwqDCoMKgwqBpbnQgbGV2ZWwsCj4gwqAJCcKgwqDCoMKgwqBz dHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOwo+IC0Jc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0KPiA+YmFzZS5jcnRjKTsKPiDCoAlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiDCoAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3Bs YW5lOwo+IMKgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlOwo+IC0JdWlu dDE2X3QgZGRiX2Jsb2NrczsKPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK PiDCoAlpbnQgcmV0Owo+IMKgCj4gwqAJLyoKPiBAQCAtMzcyMSwxNiArMzczOSwxMiBAQCBza2xf Y29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiDCoAo+IMKgCQlXQVJOX09OKCFpbnRlbF9wc3RhdGUtPmJhc2UuZmIpOwo+IMKgCj4gLQkJ ZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLQo+ID5wbGFuZVtwaXBlXVtpXSk7 Cj4gLQo+IMKgCQlyZXQgPSBza2xfY29tcHV0ZV9wbGFuZV93bShkZXZfcHJpdiwKPiDCoAkJCQkJ wqDCoMKgY3N0YXRlLAo+IMKgCQkJCQnCoMKgwqBpbnRlbF9wc3RhdGUsCj4gLQkJCQkJwqDCoMKg ZGRiX2Jsb2NrcywKPiDCoAkJCQkJwqDCoMKgbGV2ZWwsCj4gwqAJCQkJCcKgwqDCoCZyZXN1bHQt PnBsYW5lX3Jlc19iW2ldLAo+IC0JCQkJCcKgwqDCoCZyZXN1bHQtPnBsYW5lX3Jlc19sW2ldLAo+ IC0JCQkJCcKgwqDCoCZyZXN1bHQtPnBsYW5lX2VuW2ldKTsKPiArCQkJCQnCoMKgwqAmcmVzdWx0 LT5wbGFuZV9yZXNfbFtpXSk7Cj4gwqAJCWlmIChyZXQpCj4gwqAJCQlyZXR1cm4gcmV0Owo+IMKg CX0KPiBAQCAtMzc3OSwxMSArMzc5MywxNSBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9waXBlX3dt KHN0cnVjdAo+IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiDCoAlpbnQgcmV0Owo+IMKgCj4g wqAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCXJl dCA9IHNrbF9jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBkZGIsIGNzdGF0ZSwKPiArCQlyZXQg PSBza2xfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgY3N0YXRlLAo+IMKgCQkJCQnCoMKgwqBs ZXZlbCwgJnBpcGVfd20tCj4gPndtW2xldmVsXSk7Cj4gwqAJCWlmIChyZXQpCj4gwqAJCQlyZXR1 cm4gcmV0Owo+IMKgCX0KPiArCXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIHBp cGVfd20sIGRkYik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+IMKgCXBpcGVf d20tPmxpbmV0aW1lID0gc2tsX2NvbXB1dGVfbGluZXRpbWVfd20oY3N0YXRlKTsKPiDCoAo+IMKg CXNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY3N0YXRlLCAmcGlwZV93bS0+dHJhbnNfd20pOwo+ IEBAIC00MDA2LDEzICs0MDI0LDEyIEBAIHNrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1 Y3QKPiBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQK PiAtc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc2ts X2luY2x1ZGVfYWZmZWN0ZWRfcGlwZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ IMKgewo+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+IMKgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiDCoAlzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Cj4gdG9faW50ZWxfYXRvbWljX3N0YXRl KHN0YXRlKTsKPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAtCXN0cnVjdCBz a2xfZGRiX2FsbG9jYXRpb24gKmRkYiA9ICZpbnRlbF9zdGF0ZS0KPiA+d21fcmVzdWx0cy5kZGI7 Cj4gwqAJdWludDMyX3QgcmVhbGxvY19waXBlcyA9IHBpcGVzX21vZGlmaWVkKHN0YXRlKTsKPiDC oAlpbnQgcmV0Owo+IMKgCj4gQEAgLTQwNjQsMTQgKzQwODEsNiBAQCBza2xfY29tcHV0ZV9kZGIo c3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiAqc3RhdGUpCj4gwqAJCWNzdGF0ZSA9IGludGVsX2F0 b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwKPiBpbnRlbF9jcnRjKTsKPiDCoAkJaWYgKElTX0VS Uihjc3RhdGUpKQo+IMKgCQkJcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsKPiAtCj4gLQkJcmV0ID0g c2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgZGRiKTsKPiAtCQlpZiAocmV0KQo+IC0JCQly ZXR1cm4gcmV0Owo+IC0KPiAtCQlyZXQgPSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoY3N0 YXRlKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IMKgCX0KPiDCoAo+IMKgCXJl dHVybiAwOwo+IEBAIC00MTIyLDE5ICs0MTMxLDE1IEBAIHNrbF9jb21wdXRlX3dtKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlCj4gKnN0YXRlKQo+IMKgCS8qIENsZWFyIGFsbCBkaXJ0eSBmbGFncyAq Lwo+IMKgCXJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKPiDCoAo+IC0JcmV0ID0gc2tsX2NvbXB1 dGVfZGRiKHN0YXRlKTsKPiArCXJldCA9IHNrbF9pbmNsdWRlX2FmZmVjdGVkX3BpcGVzKHN0YXRl KTsKPiDCoAlpZiAocmV0KQo+IMKgCQlyZXR1cm4gcmV0Owo+IMKgCj4gwqAJLyoKPiDCoAnCoCog Q2FsY3VsYXRlIFdNJ3MgZm9yIGFsbCBwaXBlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMKPiB0cmFu c2FjdGlvbi4KPiAtCcKgKiBOb3RlIHRoYXQgdGhlIEREQiBhbGxvY2F0aW9uIGFib3ZlIG1heSBo YXZlIGFkZGVkIG1vcmUKPiBDUlRDJ3MgdGhhdAo+IC0JwqAqIHdlcmVuJ3Qgb3RoZXJ3aXNlIGJl aW5nIG1vZGlmaWVkIChhbmQgc2V0IGJpdHMgaW4KPiBkaXJ0eV9waXBlcykgaWYKPiAtCcKgKiBw aXBlIGFsbG9jYXRpb25zIGhhZCB0byBjaGFuZ2UuCj4gLQnCoCoKPiAtCcKgKiBGSVhNRTrCoMKg Tm93IHRoYXQgd2UncmUgZG9pbmcgdGhpcyBpbiB0aGUgYXRvbWljIGNoZWNrCj4gcGhhc2UsIHdl Cj4gLQnCoCogc2hvdWxkIGFsbG93IHNrbF91cGRhdGVfcGlwZV93bSgpIHRvIHJldHVybiBmYWls dXJlIGluCj4gY2FzZXMgd2hlcmUKPiAtCcKgKiBubyBzdWl0YWJsZSB3YXRlcm1hcmsgdmFsdWVz IGNhbiBiZSBmb3VuZC4KPiArCcKgKiBOb3RlIHRoYXQgYWZmZWN0ZWQgcGlwZSBjYWxjdWxhdGlv biBhYm92ZSBtYXkgaGF2ZSBhZGRlZAo+IG1vcmUKPiArCcKgKiBDUlRDJ3MgdGhhdCB3ZXJlbid0 IG90aGVyd2lzZSBiZWluZyBtb2RpZmllZCAoYW5kIHNldAo+IGJpdHMgaW4KPiArCcKgKiBkaXJ0 eV9waXBlcykgaWYgcGlwZSBhbGxvY2F0aW9ucyBoYWQgdG8gY2hhbmdlLgo+IMKgCcKgKi8KPiDC oAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPiDCoAkJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IEBA IC00MTUwLDYgKzQxNTUsMTAgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+IMKgCQlpZiAoY2hhbmdlZCkKPiDCoAkJCXJlc3VsdHMtPmRpcnR5X3BpcGVz IHw9IGRybV9jcnRjX21hc2soY3J0Yyk7Cj4gwqAKPiArCQlyZXQgPSBza2xfZGRiX2FkZF9hZmZl Y3RlZF9wbGFuZXMoaW50ZWxfY3N0YXRlKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0 Owo+ICsKPiDCoAkJaWYgKChyZXN1bHRzLT5kaXJ0eV9waXBlcyAmIGRybV9jcnRjX21hc2soY3J0 YykpID09Cj4gMCkKPiDCoAkJCS8qIFRoaXMgcGlwZSdzIFdNJ3MgZGlkIG5vdCBjaGFuZ2UgKi8K PiDCoAkJCWNvbnRpbnVlOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK