From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH 05/12] drm/i915/bdw: implement alloc/free for 4lvl Date: Fri, 20 Feb 2015 17:45:59 +0000 Message-ID: <1424454366-19006-6-git-send-email-michel.thierry@intel.com> References: <1424454366-19006-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 977E06E710 for ; Fri, 20 Feb 2015 09:46:45 -0800 (PST) In-Reply-To: <1424454366-19006-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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQmVuIFdpZGF3c2t5IDxiZW5qYW1pbi53aWRhd3NreUBpbnRlbC5jb20+CgpUaGUgY29k ZSBmb3IgNGx2bCB3b3JrcyBqdXN0IGFzIG9uZSB3b3VsZCBleHBlY3QsIGFuZCBuaWNlbHkgaXQg aXMgYWJsZQp0byBjYWxsIGludG8gdGhlIGV4aXN0aW5nIDNsdmwgcGFnZSB0YWJsZSBjb2RlIHRv IGhhbmRsZSBhbGwgb2YgdGhlCmxvd2VyIGxldmVscy4KClBNTDQgaGFzIG5vIHNwZWNpYWwgYXR0 cmlidXRlcywgYW5kIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGEgUE1MNC4KU28gc2ltcGx5IGluaXRp YWxpemUgaXQgYXQgY3JlYXRpb24sIGFuZCBkZXN0cm95IGl0IGF0IHRoZSBlbmQuCgp2MjogUmV0 dXJuIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGdlbjhfYWxsb2NfdmFfcmFuZ2VfNGx2bCB0byBr ZWVwIHRoZQpjb21waWxlciBoYXBweS4gQW5kIGRlZmluZSByZXQgb25seSBpbiBvbmUgcGxhY2Uu ClVwZGF0ZWQgZ2VuOF9wcGd0dF91bm1hcF9wYWdlcyBhbmQgZ2VuOF9wcGd0dF9mcmVlIHRvIGhh bmRsZSA0bHZsLgoKU2lnbmVkLW9mZi1ieTogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0 PgpTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29t PiAodjIpCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCAyNDAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaCB8ICAxMSArLQogMiBmaWxlcyBjaGFuZ2VkLCAyMTcgaW5zZXJ0aW9ucygr KSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCAx ZWRjYzE3Li5lZGFkYTMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtNDgz LDkgKzQ4MywxMiBAQCBzdGF0aWMgdm9pZCBfX3BkcF9maW5pKHN0cnVjdCBpOTE1X3BhZ2VfZGly ZWN0b3J5X3BvaW50ZXJfZW50cnkgKnBkcCkKIHN0YXRpYyB2b2lkIHVubWFwX2FuZF9mcmVlX3Bk cChzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAsCiAJCQkgICAg c3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQlfX3BkcF9maW5pKHBkcCk7Ci0JaWYgKFVTRVNf RlVMTF80OEJJVF9QUEdUVChkZXYpKQorCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkg eworCQlfX3BkcF9maW5pKHBkcCk7CisJCWk5MTVfZG1hX3VubWFwX3NpbmdsZShwZHAsIGRldik7 CisJCV9fZnJlZV9wYWdlKHBkcC0+cGFnZSk7CiAJCWtmcmVlKHBkcCk7CisJfQogfQogCiBzdGF0 aWMgaW50IF9fcGRwX2luaXQoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRy eSAqcGRwLApAQCAtNTExLDYgKzUxNCw2MCBAQCBzdGF0aWMgaW50IF9fcGRwX2luaXQoc3RydWN0 IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwLAogCXJldHVybiAwOwogfQog CitzdGF0aWMgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqYWxsb2Nf cGRwX3NpbmdsZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCisJCQkJCSAgICAgICBzdHJ1 Y3QgaTkxNV9wbWw0ICpwbWw0KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+ YmFzZS5kZXY7CisJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRw OworCWludCByZXQ7CisKKwlCVUdfT04oIVVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpKTsKKwor CXBkcCA9IGttYWxsb2Moc2l6ZW9mKCpwZHApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBkcCkKKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlwZHAtPnBhZ2UgPSBhbGxvY19wYWdlKEdGUF9L RVJORUwgfCBHRlBfRE1BMzIgfCBfX0dGUF9aRVJPKTsKKwlpZiAoIXBkcC0+cGFnZSkgeworCQlr ZnJlZShwZHApOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisKKwlyZXQgPSBfX3Bk cF9pbml0KHBkcCwgZGV2KTsKKwlpZiAocmV0KSB7CisJCV9fZnJlZV9wYWdlKHBkcC0+cGFnZSk7 CisJCWtmcmVlKHBkcCk7CisJCXJldHVybiBFUlJfUFRSKHJldCk7CisJfQorCisJaTkxNV9kbWFf bWFwX3B4X3NpbmdsZShwZHAsIGRldik7CisKKwlyZXR1cm4gcGRwOworfQorCitzdGF0aWMgdm9p ZCBwbWw0X2Zpbmkoc3RydWN0IGk5MTVfcG1sNCAqcG1sNCkKK3sKKwlzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQgPQorCQljb250YWluZXJfb2YocG1sNCwgc3RydWN0IGk5MTVfaHdfcHBndHQs IHBtbDQpOworCWk5MTVfZG1hX3VubWFwX3NpbmdsZShwbWw0LCBwcGd0dC0+YmFzZS5kZXYpOwor CV9fZnJlZV9wYWdlKHBtbDQtPnBhZ2UpOworCS8qIEhBQ0sgKi8KKwlwbWw0LT5wYWdlID0gTlVM TDsKK30KKworc3RhdGljIGludCBwbWw0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 KQoreworCXN0cnVjdCBpOTE1X3BtbDQgKnBtbDQgPSAmcHBndHQtPnBtbDQ7CisKKwlwbWw0LT5w YWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7CisJaWYgKCFwbWw0LT5w YWdlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWk5MTVfZG1hX21hcF9weF9zaW5nbGUocG1sNCwg cHBndHQtPmJhc2UuZGV2KTsKKworCXJldHVybiAwOworfQorCiAvKiBCcm9hZHdlbGwgUGFnZSBE aXJlY3RvcnkgUG9pbnRlciBEZXNjcmlwdG9ycyAqLwogc3RhdGljIGludCBnZW44X3dyaXRlX3Bk cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJICB1bnNpZ25lZCBlbnRyeSwKQEAg LTcxMiwxNCArNzY5LDEzIEBAIHN0YXRpYyB2b2lkIGdlbjhfZnJlZV9wYWdlX3RhYmxlcyhzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQsIHN0cnVjdCBkCiAJfQogfQogCi1zdGF0 aWMgdm9pZCBnZW44X3BwZ3R0X3VubWFwX3BhZ2VzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCkKK3N0YXRpYyB2b2lkIGdlbjhfcHBndHRfdW5tYXBfcGFnZXNfM2x2bChzdHJ1Y3QgaTkxNV9w YWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAsCisJCQkJCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiB7Ci0Jc3RydWN0IHBjaV9kZXYgKmh3ZGV2ID0gcHBndHQtPmJhc2UuZGV2LT5wZGV2 OwotCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkgKnBkcCA9ICZwcGd0 dC0+cGRwOyAvKiBGSVhNRTogNDhiICovCisJc3RydWN0IHBjaV9kZXYgKmh3ZGV2ID0gZGV2LT5w ZGV2OwogCWludCBpLCBqOwogCi0JZm9yX2VhY2hfc2V0X2JpdChpLCBwZHAtPnVzZWRfcGRwZXMs Ci0JCQlJOTE1X1BEUEVTX1BFUl9QRFAocHBndHQtPmJhc2UuZGV2KSkgeworCWZvcl9lYWNoX3Nl dF9iaXQoaSwgcGRwLT51c2VkX3BkcGVzLCBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KSkgewogCQlz dHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQ7CiAKIAkJaWYgKFdBUk5fT04oIXBk cC0+cGFnZV9kaXJlY3RvcnlbaV0pKQpAQCAtNzQ3LDI3ICs4MDMsNzMgQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF91bm1hcF9wYWdlcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJfQog fQogCi1zdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2ZyZWUoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0KQorc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF91bm1hcF9wYWdlc180bHZsKHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCkKIHsKKwlzdHJ1Y3QgcGNpX2RldiAqaHdkZXYgPSBwcGd0dC0+YmFz ZS5kZXYtPnBkZXY7CiAJaW50IGk7CiAKLQlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0 dC0+YmFzZS5kZXYpKSB7Ci0JCWZvcl9lYWNoX3NldF9iaXQoaSwgcHBndHQtPnBkcC51c2VkX3Bk cGVzLAotCQkJCSBJOTE1X1BEUEVTX1BFUl9QRFAocHBndHQtPmJhc2UuZGV2KSkgewotCQkJaWYg KFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pKQotCQkJCWNvbnRpbnVlOwor CWZvcl9lYWNoX3NldF9iaXQoaSwgcHBndHQtPnBtbDQudXNlZF9wbWw0ZXMsIEdFTjhfUE1MNEVT X1BFUl9QTUw0KSB7CisJCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkg KnBkcDsKIAotCQkJZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rv cnlbaV0sCi0JCQkJCSAgICAgIHBwZ3R0LT5iYXNlLmRldik7Ci0JCQl1bm1hcF9hbmRfZnJlZV9w ZChwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLAotCQkJCQkgIHBwZ3R0LT5iYXNlLmRldik7 Ci0JCX0KLQkJdW5tYXBfYW5kX2ZyZWVfcGRwKCZwcGd0dC0+cGRwLCBwcGd0dC0+YmFzZS5kZXYp OwotCX0gZWxzZSB7Ci0JCUJVRygpOyAvKiB0byBiZSBpbXBsZW1lbnRlZCBsYXRlciAqLworCQlp ZiAoV0FSTl9PTighcHBndHQtPnBtbDQucGRwc1tpXSkpCisJCQljb250aW51ZTsKKworCQlwZHAg PSBwcGd0dC0+cG1sNC5wZHBzW2ldOworCQlpZiAoIXBkcC0+ZGFkZHIpCisJCQlwY2lfdW5tYXBf cGFnZShod2RldiwgcGRwLT5kYWRkciwgUEFHRV9TSVpFLAorCQkJCSAgICAgICBQQ0lfRE1BX0JJ RElSRUNUSU9OQUwpOworCisJCWdlbjhfcHBndHRfdW5tYXBfcGFnZXNfM2x2bChwcGd0dC0+cG1s NC5wZHBzW2ldLAorCQkJCQkgICAgcHBndHQtPmJhc2UuZGV2KTsKIAl9CiB9CiAKK3N0YXRpYyB2 b2lkIGdlbjhfcHBndHRfdW5tYXBfcGFnZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQor eworCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpCisJCWdlbjhf cHBndHRfdW5tYXBfcGFnZXNfM2x2bCgmcHBndHQtPnBkcCwgcHBndHQtPmJhc2UuZGV2KTsKKwll bHNlCisJCWdlbjhfcHBndHRfdW5tYXBfcGFnZXNfNGx2bChwcGd0dCk7Cit9CisKK3N0YXRpYyB2 b2lkIGdlbjhfcHBndHRfZnJlZV8zbHZsKHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50 ZXJfZW50cnkgKnBkcCwKKwkJCQkgc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlpbnQgaTsK KworCWZvcl9lYWNoX3NldF9iaXQoaSwgcGRwLT51c2VkX3BkcGVzLCBJOTE1X1BEUEVTX1BFUl9Q RFAoZGV2KSkgeworCQlpZiAoV0FSTl9PTighcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSkpCisJCQlj b250aW51ZTsKKworCQlnZW44X2ZyZWVfcGFnZV90YWJsZXMocGRwLT5wYWdlX2RpcmVjdG9yeVtp XSwgZGV2KTsKKwkJdW5tYXBfYW5kX2ZyZWVfcGQocGRwLT5wYWdlX2RpcmVjdG9yeVtpXSwgZGV2 KTsKKwl9CisKKwl1bm1hcF9hbmRfZnJlZV9wZHAocGRwLCBkZXYpOworfQorCitzdGF0aWMgdm9p ZCBnZW44X3BwZ3R0X2ZyZWVfNGx2bChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCit7CisJ aW50IGk7CisKKwlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wbWw0LnVzZWRfcG1sNGVzLCBH RU44X1BNTDRFU19QRVJfUE1MNCkgeworCQlpZiAoV0FSTl9PTighcHBndHQtPnBtbDQucGRwc1tp XSkpCisJCQljb250aW51ZTsKKworCQlnZW44X3BwZ3R0X2ZyZWVfM2x2bChwcGd0dC0+cG1sNC5w ZHBzW2ldLCBwcGd0dC0+YmFzZS5kZXYpOworCX0KKworCXBtbDRfZmluaSgmcHBndHQtPnBtbDQp OworfQorCitzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2ZyZWUoc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0KQoreworCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikp CisJCWdlbjhfcHBndHRfZnJlZV8zbHZsKCZwcGd0dC0+cGRwLCBwcGd0dC0+YmFzZS5kZXYpOwor CWVsc2UKKwkJZ2VuOF9wcGd0dF9mcmVlXzRsdmwocHBndHQpOworfQorCiBzdGF0aWMgdm9pZCBn ZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiB7CiAJc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KQEAgLTEwNDAsMTIgKzExNDIsNzQgQEAgZXJyX291 dDoKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9fbm9yZXR1cm4gZ2VuOF9hbGxvY192 YV9yYW5nZV80bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAotCQkJCQkgICAgICAg c3RydWN0IGk5MTVfcG1sNCAqcG1sNCwKLQkJCQkJICAgICAgIHVpbnQ2NF90IHN0YXJ0LAotCQkJ CQkgICAgICAgdWludDY0X3QgbGVuZ3RoKQorc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3Jhbmdl XzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkJICAgIHN0cnVjdCBpOTE1 X3BtbDQgKnBtbDQsCisJCQkJICAgIHVpbnQ2NF90IHN0YXJ0LAorCQkJCSAgICB1aW50NjRfdCBs ZW5ndGgpCiB7Ci0JQlVHKCk7IC8qIHRvIGJlIGltcGxlbWVudGVkIGxhdGVyICovCisJREVDTEFS RV9CSVRNQVAobmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KTsKKwlzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQgPQorCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0 LCBiYXNlKTsKKwlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHA7 CisJY29uc3QgdWludDY0X3Qgb3JpZ19zdGFydCA9IHN0YXJ0OworCWNvbnN0IHVpbnQ2NF90IG9y aWdfbGVuZ3RoID0gbGVuZ3RoOworCXVpbnQ2NF90IHRlbXAsIHBtbDRlOworCWludCByZXQgPSAw OworCisJLyogRG8gdGhlIHBtbDQgYWxsb2NhdGlvbnMgZmlyc3QsIHNvIHdlIGRvbid0IG5lZWQg dG8gdHJhY2sgdGhlIG5ld2x5CisJICogYWxsb2NhdGVkIHRhYmxlcyBiZWxvdyB0aGUgcGRwICov CisJYml0bWFwX3plcm8obmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KTsKKworCS8qIFRo ZSBwYWdlX2RpcmVjdG9yeWVjdG9yeSBhbmQgcGFnZXRhYmxlIGFsbG9jYXRpb25zIGFyZSBkb25l IGluIHRoZSBzaGFyZWQgMworCSAqIGFuZCA0IGxldmVsIGNvZGUuIEp1c3QgYWxsb2NhdGUgdGhl IHBkcHMuCisJICovCisJZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5n dGgsIHRlbXAsIHBtbDRlKSB7CisJCWlmICghcGRwKSB7CisJCQlXQVJOX09OKHRlc3RfYml0KHBt bDRlLCBwbWw0LT51c2VkX3BtbDRlcykpOworCQkJcGRwID0gYWxsb2NfcGRwX3NpbmdsZShwcGd0 dCwgcG1sNCk7CisJCQlpZiAoSVNfRVJSKHBkcCkpCisJCQkJZ290byBlcnJfYWxsb2M7CisKKwkJ CXBtbDQtPnBkcHNbcG1sNGVdID0gcGRwOworCQkJc2V0X2JpdChwbWw0ZSwgbmV3X3BkcHMpOwor CQkJdHJhY2VfaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5X2FsbG9jKCZwcGd0dC0+ YmFzZSwgcG1sNGUsCisJCQkJCQkgICBwbWw0ZSA8PCBHRU44X1BNTDRFX1NISUZULAorCQkJCQkJ ICAgR0VOOF9QTUw0RV9TSElGVCk7CisKKwkJfQorCX0KKworCVdBUk4oYml0bWFwX3dlaWdodChu ZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpID4gMiwKKwkgICAgICJUaGUgYWxsb2NhdGlv biBoYXMgc3Bhbm5lZCBtb3JlIHRoYW4gNTEyR0IuICIKKwkgICAgICJJdCBpcyBoaWdobHkgbGlr ZWx5IHRoaXMgaXMgaW5jb3JyZWN0LiIpOworCisJc3RhcnQgPSBvcmlnX3N0YXJ0OworCWxlbmd0 aCA9IG9yaWdfbGVuZ3RoOworCisJZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0 LCBsZW5ndGgsIHRlbXAsIHBtbDRlKSB7CisJCUJVR19PTighcGRwKTsKKworCQlyZXQgPSBnZW44 X2FsbG9jX3ZhX3JhbmdlXzNsdmwodm0sIHBkcCwgc3RhcnQsIGxlbmd0aCk7CisJCWlmIChyZXQp CisJCQlnb3RvIGVycl9vdXQ7CisJfQorCisJYml0bWFwX29yKHBtbDQtPnVzZWRfcG1sNGVzLCBu ZXdfcGRwcywgcG1sNC0+dXNlZF9wbWw0ZXMsCisJCSAgR0VOOF9QTUw0RVNfUEVSX1BNTDQpOwor CisJcmV0dXJuIDA7CisKK2Vycl9vdXQ6CisJc3RhcnQgPSBvcmlnX3N0YXJ0OworCWxlbmd0aCA9 IG9yaWdfbGVuZ3RoOworCWdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwgbGVu Z3RoLCB0ZW1wLCBwbWw0ZSkKKwkJZ2VuOF9wcGd0dF9mcmVlXzNsdmwocGRwLCB2bS0+ZGV2KTsK KworZXJyX2FsbG9jOgorCWZvcl9lYWNoX3NldF9iaXQocG1sNGUsIG5ld19wZHBzLCBHRU44X1BN TDRFU19QRVJfUE1MNCkKKwkJdW5tYXBfYW5kX2ZyZWVfcGRwKHBkcCwgdm0tPmRldik7CisKKwly ZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCkBAIC0xMDU0LDE2ICsxMjE4LDE5IEBAIHN0YXRpYyBpbnQg Z2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQogCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1 X2h3X3BwZ3R0LCBiYXNlKTsKIAotCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHZtLT5kZXYp KQotCQlyZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHZtLCAmcHBndHQtPnBkcCwgc3Rh cnQsIGxlbmd0aCk7Ci0JZWxzZQorCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikp CiAJCXJldHVybiBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwodm0sICZwcGd0dC0+cG1sNCwgc3Rh cnQsIGxlbmd0aCk7CisJZWxzZQorCQlyZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHZt LCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjhfcHBn dHRfZmluaV9jb21tb24oc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogewogCXVubWFwX2Fu ZF9mcmVlX3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBwcGd0dC0+YmFzZS5kZXYpOwotCXVubWFwX2Fu ZF9mcmVlX3BkcCgmcHBndHQtPnBkcCwgcHBndHQtPmJhc2UuZGV2KTsKKwlpZiAoVVNFU19GVUxM XzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpCisJCXBtbDRfZmluaSgmcHBndHQtPnBtbDQp OworCWVsc2UKKwkJdW5tYXBfYW5kX2ZyZWVfcGRwKCZwcGd0dC0+cGRwLCBwcGd0dC0+YmFzZS5k ZXYpOwogfQogCiAvKioKQEAgLTEwODYsMTQgKzEyNTMsMjEgQEAgc3RhdGljIGludCBnZW44X3Bw Z3R0X2luaXRfY29tbW9uKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgdWludDY0X3Qgc2l6 ZSkKIAogCXBwZ3R0LT5zd2l0Y2hfbW0gPSBnZW44X21tX3N3aXRjaDsKIAotCWlmICghVVNFU19G VUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKKwlpZiAoVVNFU19GVUxMXzQ4QklU X1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKKwkJaW50IHJldCA9IHBtbDRfaW5pdChwcGd0dCk7 CisJCWlmIChyZXQpIHsKKwkJCXVubWFwX2FuZF9mcmVlX3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBw cGd0dC0+YmFzZS5kZXYpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0gZWxzZSB7CiAJCWludCBy ZXQgPSBfX3BkcF9pbml0KCZwcGd0dC0+cGRwLCBmYWxzZSk7CiAJCWlmIChyZXQpIHsKIAkJCXVu bWFwX2FuZF9mcmVlX3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBwcGd0dC0+YmFzZS5kZXYpOwogCQkJ cmV0dXJuIHJldDsKIAkJfQotCX0gZWxzZQotCQlyZXR1cm4gLUVQRVJNOyAvKiBOb3QgeWV0IGlt cGxlbWVudGVkICovCisKKwkJdHJhY2VfaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5 X2FsbG9jKCZwcGd0dC0+YmFzZSwgMCwgMCwgR0VOOF9QTUw0RV9TSElGVCk7CisJfQogCiAJcmV0 dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDE0NDg1OGUuLjE0 NzdmNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC04Nyw2ICs4Nyw3IEBA IHR5cGVkZWYgZ2VuOF9ndHRfcHRlX3QgZ2VuOF9wcGd0dF9wZGVfdDsKICAqLwogI2RlZmluZSBH RU44X1BNTDRFU19QRVJfUE1MNAkJNTEyCiAjZGVmaW5lIEdFTjhfUE1MNEVfU0hJRlQJCTM5Cisj ZGVmaW5lIEdFTjhfUE1MNEVfTUFTSwkJCShHRU44X1BNTDRFU19QRVJfUE1MNCAtIDEpCiAjZGVm aW5lIEdFTjhfUERQRV9TSElGVAkJCTMwCiAvKiBOQjogR0VOOF9QRFBFX01BU0sgaXMgdW50cnVl IGZvciAzMmIgcGxhdGZvcm1zLCBidXQgaXQgaGFzIG5vIGltcGFjdCBvbiAzMmIgcGFnZQogICog dGFibGVzICovCkBAIC00MjcsNiArNDI4LDE0IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2Vu Nl9wZGVfaW5kZXgodWludDMyX3QgYWRkcikKIAkgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3Ro KSwJCQkJCVwKIAkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQogCisjZGVmaW5l IGdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVy KQlcCisJZm9yIChpdGVyID0gZ2VuOF9wbWw0ZV9pbmRleChzdGFydCksIHBkcCA9IChwbWw0KS0+ cGRwc1tpdGVyXTsJXAorCSAgICAgbGVuZ3RoID4gMCAmJiBpdGVyIDwgR0VOOF9QTUw0RVNfUEVS X1BNTDQ7CQkJXAorCSAgICAgcGRwID0gKHBtbDQpLT5wZHBzWysraXRlcl0sCQkJCVwKKwkgICAg IHRlbXAgPSBBTElHTihzdGFydCsxLCAxVUxMIDw8IEdFTjhfUE1MNEVfU0hJRlQpIC0gc3RhcnQs CVwKKwkgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwJCQkJCVwKKwkgICAgIHN0YXJ0ICs9 IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQorCiAjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZShwZCwg cGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyKQkJXAogCWdlbjhfZm9yX2VhY2hfcGRwZV9l KHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIsIEk5MTVfUERQRVNfUEVSX1BEUChk ZXYpKQogCkBAIC00NTgsNyArNDY3LDcgQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW44X3Bk cGVfaW5kZXgodWludDY0X3QgYWRkcmVzcykKIAogc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW44 X3BtbDRlX2luZGV4KHVpbnQ2NF90IGFkZHJlc3MpCiB7Ci0JQlVHKCk7IC8qIEZvciA2NEIgKi8K KwlyZXR1cm4gKGFkZHJlc3MgPj4gR0VOOF9QTUw0RV9TSElGVCkgJiBHRU44X1BNTDRFX01BU0s7 CiB9CiAKIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGdlbjhfcHRlX2NvdW50KHVpbnQ2NF90IGFkZHIs IHVpbnQ2NF90IGxlbmd0aCkKLS0gCjIuMS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=