From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v4 06/18] drm/i915/gen8: implement alloc/free for 4lvl Date: Tue, 7 Jul 2015 16:14:51 +0100 Message-ID: <1436282103-5854-7-git-send-email-michel.thierry@intel.com> References: <1436282103-5854-1-git-send-email-michel.thierry@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 ESMTP id 8C8596EA41 for ; Tue, 7 Jul 2015 08:15:11 -0700 (PDT) In-Reply-To: <1436282103-5854-1-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org UE1MNCBoYXMgbm8gc3BlY2lhbCBhdHRyaWJ1dGVzLCBhbmQgdGhlcmUgd2lsbCBhbHdheXMgYmUg YSBQTUw0LgpTbyBzaW1wbHkgaW5pdGlhbGl6ZSBpdCBhdCBjcmVhdGlvbiwgYW5kIGRlc3Ryb3kg aXQgYXQgdGhlIGVuZC4KClRoZSBjb2RlIGZvciA0bHZsIGlzIGFibGUgdG8gY2FsbCBpbnRvIHRo ZSBleGlzdGluZyAzbHZsIHBhZ2UgdGFibGUgY29kZQp0byBoYW5kbGUgYWxsIG9mIHRoZSBsb3dl ciBsZXZlbHMuCgp2MjogUmV0dXJuIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGdlbjhfYWxsb2Nf dmFfcmFuZ2VfNGx2bCB0byBrZWVwIHRoZQpjb21waWxlciBoYXBweS4gQW5kIGRlZmluZSByZXQg b25seSBpbiBvbmUgcGxhY2UuClVwZGF0ZWQgZ2VuOF9wcGd0dF91bm1hcF9wYWdlcyBhbmQgZ2Vu OF9wcGd0dF9mcmVlIHRvIGhhbmRsZSA0bHZsLgp2MzogVXNlIGk5MTVfZG1hX3VubWFwX3Npbmds ZSBpbnN0ZWFkIG9mIHBjaSBBUEkuIEZpeCBhCmNvdXBsZSBvZiBpbmNvcnJlY3QgY2hlY2tzIHdo ZW4gdW5tYXBwaW5nIHBkcCBhbmQgcGQgcGFnZXMgKEFrYXNoKS4KdjQ6IENhbGwgX19wZHBfZmlu aSBhbHNvIGZvciAzMmIgUFBHVFQuIENsZWFuIHVwIGFsbG9jX3BkcCBwYXJhbSBsaXN0Lgp2NTog UHJldmVudCAoaGFybWxlc3MpIG91dCBvZiByYW5nZSBhY2Nlc3MgaW4gZ2VuOF9mb3JfZWFjaF9w bWw0ZS4KdjY6IFNpbXBsaWZ5IGFsbG9jX3ZtYV9yYW5nZV80bHZsIGFuZCBnZW44X3BwZ3R0X2lu aXRfY29tbW9uIGVycm9yCnBhdGhzLiAoQWthc2gpCnY3OiBSZWJhc2UsIHMvZ2VuOF9wcGd0dF9m cmVlXyovZ2VuOF9wcGd0dF9jbGVhbnVwXyovLgp2ODogQ2hhbmdlIGxvY2F0aW9uIG9mIHBtbDRf aW5pdC9maW5pLiBJdCB3aWxsIG1ha2UgbmV4dCBwYXRjaGVzCmNsZWFuZXIuCnY5OiBSZWJhc2Ug YWZ0ZXIgTWlrYSdzIHBwZ3R0IGNsZWFudXAgLyBzY3JhdGNoIG1lcmdlIHBhdGNoIHNlcmllcywg d2hpbGUKdHJ5aW5nIHRvIHJldXNlIGFzIG11Y2ggYXMgcG9zc2libGUgZm9yIHBkcCBhbGxvYy4g cG1sNF9pbml0L2ZpbmkKcmVwbGFjZWQgYnkgc2V0dXAvY2xlYW51cF9weCBtYWNyb3MuCnYxMDog UmViYXNlIGFmdGVyIE1pa2EncyBtZXJnZWQgcHBndHQgY2xlYW51cCBwYXRjaCBzZXJpZXMuCnYx MTogUmViYXNlIGFmdGVyIGZpbmFsIG1lcmdlZCB2ZXJzaW9uIG9mIE1pa2EncyBwcGd0dC9zY3Jh dGNoCnBhdGNoZXMuCnYxMjogRml4IHBkcGUgc3RhcnQgdmFsdWUgaW4gdHJhY2UgKEFrYXNoKQoK Q2M6IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBCZW4g V2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+ClNpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGllcnJ5 IDxtaWNoZWwudGhpZXJyeUBpbnRlbC5jb20+ICh2MispCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMgfCAxNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCB8ICAxMiArKy0KIDIgZmls ZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggNDI1Y2U2NS4uMzNkZjliNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTU2MCwxMiArNTYwLDQ0IEBAIHN0YXRpYyB2b2lkIF9f cGRwX2Zpbmkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwKQogCXBkcC0+ cGFnZV9kaXJlY3RvcnkgPSBOVUxMOwogfQogCitzdGF0aWMgc3RydWN0CitpOTE1X3BhZ2VfZGly ZWN0b3J5X3BvaW50ZXIgKmFsbG9jX3BkcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0 cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcDsKKwlpbnQgcmV0ID0gLUVOT01F TTsKKworCVdBUk5fT04oIVVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpKTsKKworCXBkcCA9IGt6 YWxsb2Moc2l6ZW9mKCpwZHApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBkcCkKKwkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7CisKKwlyZXQgPSBfX3BkcF9pbml0KGRldiwgcGRwKTsKKwlpZiAocmV0 KQorCQlnb3RvIGZhaWxfYml0bWFwOworCisJcmV0ID0gc2V0dXBfcHgoZGV2LCBwZHApOworCWlm IChyZXQpCisJCWdvdG8gZmFpbF9wYWdlX207CisKKwlyZXR1cm4gcGRwOworCitmYWlsX3BhZ2Vf bToKKwlfX3BkcF9maW5pKHBkcCk7CitmYWlsX2JpdG1hcDoKKwlrZnJlZShwZHApOworCisJcmV0 dXJuIEVSUl9QVFIocmV0KTsKK30KKwogc3RhdGljIHZvaWQgZnJlZV9wZHAoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpw ZHApCiB7CiAJX19wZHBfZmluaShwZHApOwotCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2 KSkKKwlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikpIHsKKwkJY2xlYW51cF9weChkZXYs IHBkcCk7CiAJCWtmcmVlKHBkcCk7CisJfQogfQogCiAvKiBCcm9hZHdlbGwgUGFnZSBEaXJlY3Rv cnkgUG9pbnRlciBEZXNjcmlwdG9ycyAqLwpAQCAtNzU5LDI4ICs3OTEsNDYgQEAgc3RhdGljIHZv aWQgZ2VuOF9mcmVlX3NjcmF0Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiAJZnJl ZV9zY3JhdGNoX3BhZ2UoZGV2LCB2bS0+c2NyYXRjaF9wYWdlKTsKIH0KIAotc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQorc3RhdGlj IHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJ CQkgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwKQogewotCXN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Ci0JCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVf aHdfcHBndHQsIGJhc2UpOwogCWludCBpOwogCi0JaWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQo cHBndHQtPmJhc2UuZGV2KSkgewotCQlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNl ZF9wZHBlcywKLQkJCQkgSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5iYXNlLmRldikpIHsKLQkJ CWlmIChXQVJOX09OKCFwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldKSkKLQkJCQljb250aW51 ZTsKKwlmb3JfZWFjaF9zZXRfYml0KGksIHBkcC0+dXNlZF9wZHBlcywgSTkxNV9QRFBFU19QRVJf UERQKGRldikpIHsKKwkJaWYgKFdBUk5fT04oIXBkcC0+cGFnZV9kaXJlY3RvcnlbaV0pKQorCQkJ Y29udGludWU7CiAKLQkJCWdlbjhfZnJlZV9wYWdlX3RhYmxlcyhwcGd0dC0+YmFzZS5kZXYsCi0J CQkJCSAgICAgIHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pOwotCQkJZnJlZV9wZChwcGd0 dC0+YmFzZS5kZXYsCi0JCQkJcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXSk7Ci0JCX0KLQkJ ZnJlZV9wZHAocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBkcCk7Ci0JfSBlbHNlIHsKLQkJV0FS Tl9PTigxKTsgLyogdG8gYmUgaW1wbGVtZW50ZWQgbGF0ZXIgKi8KKwkJZ2VuOF9mcmVlX3BhZ2Vf dGFibGVzKGRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSk7CisJCWZyZWVfcGQoZGV2LCBwZHAt PnBhZ2VfZGlyZWN0b3J5W2ldKTsKKwl9CisKKwlmcmVlX3BkcChkZXYsIHBkcCk7Cit9CisKK3N0 YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cF80bHZsKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCkKK3sKKwlpbnQgaTsKKworCWZvcl9lYWNoX3NldF9iaXQoaSwgcHBndHQtPnBtbDQudXNl ZF9wbWw0ZXMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KSB7CisJCWlmIChXQVJOX09OKCFwcGd0dC0+ cG1sNC5wZHBzW2ldKSkKKwkJCWNvbnRpbnVlOworCisJCWdlbjhfcHBndHRfY2xlYW51cF8zbHZs KHBwZ3R0LT5iYXNlLmRldiwgcHBndHQtPnBtbDQucGRwc1tpXSk7CiAJfQogCisJY2xlYW51cF9w eChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cG1sNCk7Cit9CisKK3N0YXRpYyB2b2lkIGdlbjhf cHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKK3sKKwlzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQgPQorCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3 X3BwZ3R0LCBiYXNlKTsKKworCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNl LmRldikpCisJCWdlbjhfcHBndHRfY2xlYW51cF8zbHZsKHBwZ3R0LT5iYXNlLmRldiwgJnBwZ3R0 LT5wZHApOworCWVsc2UKKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzRsdmwocHBndHQpOworCiAJZ2Vu OF9mcmVlX3NjcmF0Y2godm0pOwogfQogCkBAIC0xMDc1LDggKzExMjUsNjEgQEAgc3RhdGljIGlu dCBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s CiAJCQkJICAgIHVpbnQ2NF90IHN0YXJ0LAogCQkJCSAgICB1aW50NjRfdCBsZW5ndGgpCiB7Ci0J V0FSTl9PTigxKTsgLyogdG8gYmUgaW1wbGVtZW50ZWQgbGF0ZXIgKi8KKwlERUNMQVJFX0JJVE1B UChuZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpOworCXN0cnVjdCBpOTE1X3BhZ2VfZGly ZWN0b3J5X3BvaW50ZXIgKnBkcDsKKwljb25zdCB1aW50NjRfdCBvcmlnX3N0YXJ0ID0gc3RhcnQ7 CisJY29uc3QgdWludDY0X3Qgb3JpZ19sZW5ndGggPSBsZW5ndGg7CisJdWludDY0X3QgdGVtcCwg cG1sNGU7CisJaW50IHJldCA9IDA7CisKKwkvKiBEbyB0aGUgcG1sNCBhbGxvY2F0aW9ucyBmaXJz dCwgc28gd2UgZG9uJ3QgbmVlZCB0byB0cmFjayB0aGUgbmV3bHkKKwkgKiBhbGxvY2F0ZWQgdGFi bGVzIGJlbG93IHRoZSBwZHAgKi8KKwliaXRtYXBfemVybyhuZXdfcGRwcywgR0VOOF9QTUw0RVNf UEVSX1BNTDQpOworCisJLyogVGhlIHBhZ2VkaXJlY3RvcnkgYW5kIHBhZ2V0YWJsZSBhbGxvY2F0 aW9ucyBhcmUgZG9uZSBpbiB0aGUgc2hhcmVkIDMKKwkgKiBhbmQgNCBsZXZlbCBjb2RlLiBKdXN0 IGFsbG9jYXRlIHRoZSBwZHBzLgorCSAqLworCWdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0 LCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwbWw0ZSkgeworCQlpZiAoIXBkcCkgeworCQkJV0FSTl9P Tih0ZXN0X2JpdChwbWw0ZSwgcG1sNC0+dXNlZF9wbWw0ZXMpKTsKKwkJCXBkcCA9IGFsbG9jX3Bk cCh2bS0+ZGV2KTsKKwkJCWlmIChJU19FUlIocGRwKSkKKwkJCQlnb3RvIGVycl9vdXQ7CisKKwkJ CXBtbDQtPnBkcHNbcG1sNGVdID0gcGRwOworCQkJX19zZXRfYml0KHBtbDRlLCBuZXdfcGRwcyk7 CisJCQl0cmFjZV9pOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnlfYWxsb2Modm0sCisJ CQkJCQkJCSAgICAgIHBtbDRlLAorCQkJCQkJCQkgICAgICBzdGFydCwKKwkJCQkJCQkJICAgICAg R0VOOF9QTUw0RV9TSElGVCk7CisJCX0KKwl9CisKKwlXQVJOKGJpdG1hcF93ZWlnaHQobmV3X3Bk cHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KSA+IDIsCisJICAgICAiVGhlIGFsbG9jYXRpb24gaGFz IHNwYW5uZWQgbW9yZSB0aGFuIDUxMkdCLiAiCisJICAgICAiSXQgaXMgaGlnaGx5IGxpa2VseSB0 aGlzIGlzIGluY29ycmVjdC4iKTsKKworCXN0YXJ0ID0gb3JpZ19zdGFydDsKKwlsZW5ndGggPSBv cmlnX2xlbmd0aDsKKworCWdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwgbGVu Z3RoLCB0ZW1wLCBwbWw0ZSkgeworCQlXQVJOX09OKCFwZHApOworCisJCXJldCA9IGdlbjhfYWxs b2NfdmFfcmFuZ2VfM2x2bCh2bSwgcGRwLCBzdGFydCwgbGVuZ3RoKTsKKwkJaWYgKHJldCkKKwkJ CWdvdG8gZXJyX291dDsKKwl9CisKKwliaXRtYXBfb3IocG1sNC0+dXNlZF9wbWw0ZXMsIG5ld19w ZHBzLCBwbWw0LT51c2VkX3BtbDRlcywKKwkJICBHRU44X1BNTDRFU19QRVJfUE1MNCk7CisKIAly ZXR1cm4gMDsKKworZXJyX291dDoKKwlmb3JfZWFjaF9zZXRfYml0KHBtbDRlLCBuZXdfcGRwcywg R0VOOF9QTUw0RVNfUEVSX1BNTDQpCisJCWdlbjhfcHBndHRfY2xlYW51cF8zbHZsKHZtLT5kZXYs IHBtbDQtPnBkcHNbcG1sNGVdKTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgZ2Vu OF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKQEAgLTEwODUs MTAgKzExODgsMTAgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLAogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CiAJCWNv bnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwogCi0JaWYgKCFVU0VT X0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikpCi0JCXJldHVybiBnZW44X2FsbG9jX3ZhX3Jhbmdl XzNsdmwodm0sICZwcGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoKTsKLQllbHNlCisJaWYgKFVTRVNf RlVMTF80OEJJVF9QUEdUVCh2bS0+ZGV2KSkKIAkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2Vf NGx2bCh2bSwgJnBwZ3R0LT5wbWw0LCBzdGFydCwgbGVuZ3RoKTsKKwllbHNlCisJCXJldHVybiBn ZW44X2FsbG9jX3ZhX3JhbmdlXzNsdmwodm0sICZwcGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoKTsK IH0KIAogLyoKQEAgLTExMTYsOSArMTIxOSwxNCBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5p dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAKIAlwcGd0dC0+c3dpdGNoX21tID0gZ2Vu OF9tbV9zd2l0Y2g7CiAKLQlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5k ZXYpKSB7Ci0JCXJldCA9IF9fcGRwX2luaXQoZmFsc2UsICZwcGd0dC0+cGRwKTsKKwlpZiAoVVNF U19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKKwkJcmV0ID0gc2V0dXBfcHgo cHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBtbDQpOworCQlpZiAocmV0KQorCQkJZ290byBmcmVl X3NjcmF0Y2g7CiAKKwkJcHBndHQtPmJhc2UudG90YWwgPSAxVUxMIDw8IDQ4OworCX0gZWxzZSB7 CisJCXJldCA9IF9fcGRwX2luaXQoZmFsc2UsICZwcGd0dC0+cGRwKTsKIAkJaWYgKHJldCkKIAkJ CWdvdG8gZnJlZV9zY3JhdGNoOwogCkBAIC0xMTMwLDkgKzEyMzgsMTAgQEAgc3RhdGljIGludCBn ZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCQkJICogMkdpQiku CiAJCQkgKi8KIAkJCXBwZ3R0LT5iYXNlLnRvdGFsID0gdG9faTkxNShwcGd0dC0+YmFzZS5kZXYp LT5ndHQuYmFzZS50b3RhbDsKLQl9IGVsc2UgewotCQlwcGd0dC0+YmFzZS50b3RhbCA9IDFVTEwg PDwgNDg7Ci0JCXJldHVybiAtRVBFUk07IC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQgKi8KKworCQl0 cmFjZV9pOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnlfYWxsb2MoJnBwZ3R0LT5iYXNl LAorCQkJCQkJCSAgICAgIDAsIDAsCisJCQkJCQkJICAgICAgR0VOOF9QTUw0RV9TSElGVCk7CiAJ fQogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDZmYTgy NGUuLjY2MGM5YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC05NSw2ICs5 NSw3IEBAIHR5cGVkZWYgdWludDY0X3QgZ2VuOF9wZGVfdDsKICAqLwogI2RlZmluZSBHRU44X1BN TDRFU19QRVJfUE1MNAkJNTEyCiAjZGVmaW5lIEdFTjhfUE1MNEVfU0hJRlQJCTM5CisjZGVmaW5l IEdFTjhfUE1MNEVfTUFTSwkJCShHRU44X1BNTDRFU19QRVJfUE1MNCAtIDEpCiAjZGVmaW5lIEdF TjhfUERQRV9TSElGVAkJCTMwCiAvKiBOQjogR0VOOF9QRFBFX01BU0sgaXMgdW50cnVlIGZvciAz MmIgcGxhdGZvcm1zLCBidXQgaXQgaGFzIG5vIGltcGFjdCBvbiAzMmIgcGFnZQogICogdGFibGVz ICovCkBAIC00NjQsNiArNDY1LDE0IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuNl9wZGVf aW5kZXgodWludDMyX3QgYWRkcikKIAkgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwJCQkJ CVwKIAkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQogCisjZGVmaW5lIGdlbjhf Zm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyKQlcCisJ Zm9yIChpdGVyID0gZ2VuOF9wbWw0ZV9pbmRleChzdGFydCk7CVwKKwkgICAgIHBkcCA9IChwbWw0 KS0+cGRwc1tpdGVyXSwgbGVuZ3RoID4gMCAmJiBpdGVyIDwgR0VOOF9QTUw0RVNfUEVSX1BNTDQ7 CVwKKwkgICAgIGl0ZXIrKywJCQkJXAorCSAgICAgdGVtcCA9IEFMSUdOKHN0YXJ0KzEsIDFVTEwg PDwgR0VOOF9QTUw0RV9TSElGVCkgLSBzdGFydCwJXAorCSAgICAgdGVtcCA9IG1pbih0ZW1wLCBs ZW5ndGgpLAkJCQkJXAorCSAgICAgc3RhcnQgKz0gdGVtcCwgbGVuZ3RoIC09IHRlbXApCisKICNk ZWZpbmUgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0 ZXIpCQlcCiAJZ2VuOF9mb3JfZWFjaF9wZHBlX2UocGQsIHBkcCwgc3RhcnQsIGxlbmd0aCwgdGVt cCwgaXRlciwgSTkxNV9QRFBFU19QRVJfUERQKGRldikpCiAKQEAgLTQ4NCw4ICs0OTMsNyBAQCBz dGF0aWMgaW5saW5lIHVpbnQzMl90IGdlbjhfcGRwZV9pbmRleCh1aW50NjRfdCBhZGRyZXNzKQog CiBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGdlbjhfcG1sNGVfaW5kZXgodWludDY0X3QgYWRkcmVz cykKIHsKLQlXQVJOX09OKDEpOyAvKiBGb3IgNjRCICovCi0JcmV0dXJuIDA7CisJcmV0dXJuIChh ZGRyZXNzID4+IEdFTjhfUE1MNEVfU0hJRlQpICYgR0VOOF9QTUw0RV9NQVNLOwogfQogCiBzdGF0 aWMgaW5saW5lIHNpemVfdCBnZW44X3B0ZV9jb3VudCh1aW50NjRfdCBhZGRyZXNzLCB1aW50NjRf dCBsZW5ndGgpCi0tIAoyLjQuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK