From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v7 07/19] drm/i915/gen8: implement alloc/free for 4lvl Date: Thu, 30 Jul 2015 11:05:29 +0100 Message-ID: <1438250729-22955-1-git-send-email-michel.thierry@intel.com> References: <1438187043-34267-8-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 E45B47A11F for ; Thu, 30 Jul 2015 03:05:32 -0700 (PDT) In-Reply-To: <1438187043-34267-8-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 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 dGNoCnBhdGNoZXMuCnYxMjogRml4IHBkcGUgc3RhcnQgdmFsdWUgaW4gdHJhY2UgKEFrYXNoKQp2 MTM6IERlZmluZSBhbGwgNGx2bCBmdW5jdGlvbnMgaW4gdGhpcyBwYXRjaCBkaXJlY3RseSwgaW5z dGVhZCBvZgpwcmV2aW91cyBwYXRjaGVzLCBhZGQgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVy X2VudHJ5X2FsbG9jIGhlcmUsCnVzZSB0ZXN0X2JpdCB0byBkZXRlY3Qgd2hlbiBwZHAgaXMgYWxy ZWFkeSBhbGxvY2F0ZWQgKEFrYXNoKS4KdjE0OiBNb3ZlIHBkcCBhbGxvY2F0aW9uIGludG8gYSBu ZXcgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcnBvaW50ZXJzCmZ1bnRpb24sIGFzIHdlIGRvIGZv ciBwZHMgYW5kIHB0czsgbW92ZSBwZCBhbmQgcGRwIHNldHVwIGZ1bmN0aW9ucyB0bwp0aGlzIHBh dGNoIChBa2FzaCkuCnYxNTogQWRkZWQga2ZyZWUocGRwKSBmcm9tIHByZXZpb3VzIHBhdGNoIHRv IHRoaXMgKEFrYXNoKS4KCkNjOiBBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0PgpTaWduZWQtb2ZmLWJ5 OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPiAodjIrKQotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHwgMjM5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0Lmgg fCAgMTUgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggICB8ICAgOCArKwog MyBmaWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCAzMjg4MTU0Li5jNDk4ZWFhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMjEwLDYgKzIxMCw5IEBAIHN0YXRpYyBnZW44 X3BkZV90IGdlbjhfcGRlX2VuY29kZShjb25zdCBkbWFfYWRkcl90IGFkZHIsCiAJcmV0dXJuIHBk ZTsKIH0KIAorI2RlZmluZSBnZW44X3BkcGVfZW5jb2RlIGdlbjhfcGRlX2VuY29kZQorI2RlZmlu ZSBnZW44X3BtbDRlX2VuY29kZSBnZW44X3BkZV9lbmNvZGUKKwogc3RhdGljIGdlbjZfcHRlX3Qg c25iX3B0ZV9lbmNvZGUoZG1hX2FkZHJfdCBhZGRyLAogCQkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2 ZWwgbGV2ZWwsCiAJCQkJIGJvb2wgdmFsaWQsIHUzMiB1bnVzZWQpCkBAIC01NTksMTAgKzU2Miw3 MyBAQCBzdGF0aWMgdm9pZCBfX3BkcF9maW5pKHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3Bv aW50ZXIgKnBkcCkKIAlwZHAtPnBhZ2VfZGlyZWN0b3J5ID0gTlVMTDsKIH0KIAorc3RhdGljIHN0 cnVjdAoraTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICphbGxvY19wZHAoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHA7 CisJaW50IHJldCA9IC1FTk9NRU07CisKKwlXQVJOX09OKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQo ZGV2KSk7CisKKwlwZHAgPSBremFsbG9jKHNpemVvZigqcGRwKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCFwZHApCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJcmV0ID0gX19wZHBfaW5pdChk ZXYsIHBkcCk7CisJaWYgKHJldCkKKwkJZ290byBmYWlsX2JpdG1hcDsKKworCXJldCA9IHNldHVw X3B4KGRldiwgcGRwKTsKKwlpZiAocmV0KQorCQlnb3RvIGZhaWxfcGFnZV9tOworCisJcmV0dXJu IHBkcDsKKworZmFpbF9wYWdlX206CisJX19wZHBfZmluaShwZHApOworZmFpbF9iaXRtYXA6CisJ a2ZyZWUocGRwKTsKKworCXJldHVybiBFUlJfUFRSKHJldCk7Cit9CisKIHN0YXRpYyB2b2lkIGZy ZWVfcGRwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgICAgc3RydWN0IGk5MTVfcGFnZV9k aXJlY3RvcnlfcG9pbnRlciAqcGRwKQogewogCV9fcGRwX2ZpbmkocGRwKTsKKwlpZiAoVVNFU19G VUxMXzQ4QklUX1BQR1RUKGRldikpIHsKKwkJY2xlYW51cF9weChkZXYsIHBkcCk7CisJCWtmcmVl KHBkcCk7CisJfQorfQorCitzdGF0aWMgdm9pZAorZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeShz dHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCisJCQkgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0 b3J5X3BvaW50ZXIgKnBkcCwKKwkJCSAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkLAor CQkJICBpbnQgaW5kZXgpCit7CisJZ2VuOF9wcGd0dF9wZHBlX3QgKnBhZ2VfZGlyZWN0b3J5cG87 CisKKwlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKQorCQlyZXR1 cm47CisKKwlwYWdlX2RpcmVjdG9yeXBvID0ga21hcF9weChwZHApOworCXBhZ2VfZGlyZWN0b3J5 cG9baW5kZXhdID0gZ2VuOF9wZHBlX2VuY29kZShweF9kbWEocGQpLCBJOTE1X0NBQ0hFX0xMQyk7 CisJa3VubWFwX3B4KHBwZ3R0LCBwYWdlX2RpcmVjdG9yeXBvKTsKK30KKworc3RhdGljIHZvaWQK K2dlbjhfc2V0dXBfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcihzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsCisJCQkJICBzdHJ1Y3QgaTkxNV9wbWw0ICpwbWw0LAorCQkJCSAgc3RydWN0IGk5MTVf cGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwLAorCQkJCSAgaW50IGluZGV4KQoreworCWdlbjhf cHBndHRfcG1sNGVfdCAqcGFnZW1hcCA9IGttYXBfcHgocG1sNCk7CisKKwlXQVJOX09OKCFVU0VT X0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSk7CisJcGFnZW1hcFtpbmRleF0gPSBn ZW44X3BtbDRlX2VuY29kZShweF9kbWEocGRwKSwgSTkxNV9DQUNIRV9MTEMpOworCWt1bm1hcF9w eChwcGd0dCwgcGFnZW1hcCk7CiB9CiAKIC8qIEJyb2Fkd2VsbCBQYWdlIERpcmVjdG9yeSBQb2lu dGVyIERlc2NyaXB0b3JzICovCkBAIC03ODUsMTIgKzg1MSw5IEBAIHN0YXRpYyB2b2lkIGdlbjhf ZnJlZV9zY3JhdGNoKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogCWZyZWVfc2NyYXRj aF9wYWdlKGRldiwgdm0tPnNjcmF0Y2hfcGFnZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjhfcHBn dHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKK3N0YXRpYyB2b2lkIGdl bjhfcHBndHRfY2xlYW51cF8zbHZsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICAgIHN0 cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCkKIHsKLQlzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQgPQotCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0 LCBiYXNlKTsKLQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAgPSAmcHBn dHQtPnBkcDsgLyogRklYTUU6IDQ4YiAqLwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0 dC0+YmFzZS5kZXY7CiAJaW50IGk7CiAKIAlmb3JfZWFjaF9zZXRfYml0KGksIHBkcC0+dXNlZF9w ZHBlcywgSTkxNV9QRFBFU19QRVJfUERQKGRldikpIHsKQEAgLTgwMiw2ICs4NjUsMzEgQEAgc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt KQogCX0KIAogCWZyZWVfcGRwKGRldiwgcGRwKTsKK30KKworc3RhdGljIHZvaWQgZ2VuOF9wcGd0 dF9jbGVhbnVwXzRsdmwoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQoreworCWludCBpOwor CisJZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cG1sNC51c2VkX3BtbDRlcywgR0VOOF9QTUw0 RVNfUEVSX1BNTDQpIHsKKwkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wbWw0LnBkcHNbaV0pKQorCQkJ Y29udGludWU7CisKKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2LCBw cGd0dC0+cG1sNC5wZHBzW2ldKTsKKwl9CisKKwljbGVhbnVwX3B4KHBwZ3R0LT5iYXNlLmRldiwg JnBwZ3R0LT5wbWw0KTsKK30KKworc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQoreworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCA9CisJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOworCisJ aWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkKKwkJZ2VuOF9wcGd0 dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBkcCk7CisJZWxzZQorCQln ZW44X3BwZ3R0X2NsZWFudXBfNGx2bChwcGd0dCk7CiAKIAlnZW44X2ZyZWVfc2NyYXRjaCh2bSk7 CiB9CkBAIC05MjMsNiArMTAxMSw2MCBAQCB1bndpbmRfb3V0OgogCXJldHVybiAtRU5PTUVNOwog fQogCisvKioKKyAqIGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJwb2ludGVycygpIC0gQWxsb2Nh dGUgcGRwcyBmb3IgVkEgcmFuZ2UuCisgKiBAdm06CU1hc3RlciB2bSBzdHJ1Y3R1cmUuCisgKiBA cG1sNDoJUGFnZSBtYXAgbGV2ZWwgNCBmb3IgdGhpcyBhZGRyZXNzIHJhbmdlLgorICogQHN0YXJ0 OglTdGFydGluZyB2aXJ0dWFsIGFkZHJlc3MgdG8gYmVnaW4gYWxsb2NhdGlvbnMuCisgKiBAbGVu Z3RoOglTaXplIG9mIHRoZSBhbGxvY2F0aW9ucy4KKyAqIEBuZXdfcGRwczoJQml0bWFwIHNldCBi eSBmdW5jdGlvbiB3aXRoIG5ldyBhbGxvY2F0aW9ucy4gTGlrZWx5IHVzZWQgYnkgdGhlCisgKgkJ Y2FsbGVyIHRvIGZyZWUgb24gZXJyb3IuCisgKgorICogQWxsb2NhdGUgdGhlIHJlcXVpcmVkIG51 bWJlciBvZiBwYWdlIGRpcmVjdG9yeSBwb2ludGVycy4gRXh0cmVtZWx5IHNpbWlsYXIgdG8KKyAq IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3RvcmllcygpIGFuZCBnZW44X3BwZ3R0X2FsbG9j X3BhZ2V0YWJzKCkuCisgKiBUaGUgbWFpbiBkaWZmZXJlbmNlIGlzIGhlcmUgd2UgYXJlIGxpbWl0 ZWQgYnkgdGhlIHBtbDQgYm91bmRhcnkgKGluc3RlYWQgb2YKKyAqIHRoZSBwYWdlIGRpcmVjdG9y eSBwb2ludGVyKS4KKyAqCisgKiBSZXR1cm46IDAgaWYgc3VjY2VzczsgbmVnYXRpdmUgZXJyb3Ig Y29kZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBpbnQKK2dlbjhfcHBndHRfYWxsb2NfcGFnZV9k aXJwb2ludGVycyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkgIHN0cnVjdCBp OTE1X3BtbDQgKnBtbDQsCisJCQkJICB1aW50NjRfdCBzdGFydCwKKwkJCQkgIHVpbnQ2NF90IGxl bmd0aCwKKwkJCQkgIHVuc2lnbmVkIGxvbmcgKm5ld19wZHBzKQoreworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSB2bS0+ZGV2OworCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIg KnBkcDsKKwl1aW50NjRfdCB0ZW1wOworCXVpbnQzMl90IHBtbDRlOworCisJV0FSTl9PTighYml0 bWFwX2VtcHR5KG5ld19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCkpOworCisJZ2VuOF9mb3Jf ZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIHBtbDRlKSB7CisJCWlm ICghdGVzdF9iaXQocG1sNGUsIHBtbDQtPnVzZWRfcG1sNGVzKSkgeworCQkJcGRwID0gYWxsb2Nf cGRwKGRldik7CisJCQlpZiAoSVNfRVJSKHBkcCkpCisJCQkJZ290byB1bndpbmRfb3V0OworCisJ CQlwbWw0LT5wZHBzW3BtbDRlXSA9IHBkcDsKKwkJCV9fc2V0X2JpdChwbWw0ZSwgbmV3X3BkcHMp OworCQkJdHJhY2VfaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5X2FsbG9jKHZtLAor CQkJCQkJCQkgICAgICBwbWw0ZSwKKwkJCQkJCQkJICAgICAgc3RhcnQsCisJCQkJCQkJCSAgICAg IEdFTjhfUE1MNEVfU0hJRlQpOworCQl9CisJfQorCisJcmV0dXJuIDA7CisKK3Vud2luZF9vdXQ6 CisJZm9yX2VhY2hfc2V0X2JpdChwbWw0ZSwgbmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0 KQorCQlmcmVlX3BkcChkZXYsIHBtbDQtPnBkcHNbcG1sNGVdKTsKKworCXJldHVybiAtRU5PTUVN OworfQorCiBzdGF0aWMgdm9pZAogZnJlZV9nZW44X3RlbXBfYml0bWFwcyh1bnNpZ25lZCBsb25n ICpuZXdfcGRzLCB1bnNpZ25lZCBsb25nICoqbmV3X3B0cywKIAkJICAgICAgIHVpbnQzMl90IHBk cGVzKQpAQCAtOTg0LDE0ICsxMTI2LDE1IEBAIHN0YXRpYyB2b2lkIG1hcmtfdGxic19kaXJ0eShz dHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJcHBndHQtPnBkX2RpcnR5X3JpbmdzID0gSU5U RUxfSU5GTyhwcGd0dC0+YmFzZS5kZXYpLT5yaW5nX21hc2s7CiB9CiAKLXN0YXRpYyBpbnQgZ2Vu OF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKLQkJCSAgICAg ICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbGVuZ3RoKQorc3RhdGljIGludCBnZW44X2FsbG9j X3ZhX3JhbmdlXzNsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkJICAgIHN0 cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCwKKwkJCQkgICAgdWludDY0X3Qg c3RhcnQsCisJCQkJICAgIHVpbnQ2NF90IGxlbmd0aCkKIHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQgPQogCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNl KTsKIAl1bnNpZ25lZCBsb25nICpuZXdfcGFnZV9kaXJzLCAqKm5ld19wYWdlX3RhYmxlczsKIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0tPmRldjsKLQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeV9wb2ludGVyICpwZHAgPSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4YiAqLwogCXN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKIAljb25zdCB1aW50NjRfdCBvcmlnX3N0YXJ0ID0g c3RhcnQ7CiAJY29uc3QgdWludDY0X3Qgb3JpZ19sZW5ndGggPSBsZW5ndGg7CkBAIC0xMDcyLDYg KzEyMTUsNyBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCiAKIAkJa3VubWFwX3B4KHBwZ3R0LCBwYWdlX2RpcmVjdG9yeSk7CiAJ CV9fc2V0X2JpdChwZHBlLCBwZHAtPnVzZWRfcGRwZXMpOworCQlnZW44X3NldHVwX3BhZ2VfZGly ZWN0b3J5KHBwZ3R0LCBwZHAsIHBkLCBwZHBlKTsKIAl9CiAKIAlmcmVlX2dlbjhfdGVtcF9iaXRt YXBzKG5ld19wYWdlX2RpcnMsIG5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwpAQCAtMTA5Miw2ICsx MjM2LDY4IEBAIGVycl9vdXQ6CiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBnZW44X2Fs bG9jX3ZhX3JhbmdlXzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkJICAg IHN0cnVjdCBpOTE1X3BtbDQgKnBtbDQsCisJCQkJICAgIHVpbnQ2NF90IHN0YXJ0LAorCQkJCSAg ICB1aW50NjRfdCBsZW5ndGgpCit7CisJREVDTEFSRV9CSVRNQVAobmV3X3BkcHMsIEdFTjhfUE1M NEVTX1BFUl9QTUw0KTsKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQorCQkJY29udGFp bmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CisJc3RydWN0IGk5MTVfcGFn ZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOworCXVpbnQ2NF90IHRlbXAsIHBtbDRlOworCWludCBy ZXQgPSAwOworCisJLyogRG8gdGhlIHBtbDQgYWxsb2NhdGlvbnMgZmlyc3QsIHNvIHdlIGRvbid0 IG5lZWQgdG8gdHJhY2sgdGhlIG5ld2x5CisJICogYWxsb2NhdGVkIHRhYmxlcyBiZWxvdyB0aGUg cGRwICovCisJYml0bWFwX3plcm8obmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KTsKKwor CS8qIFRoZSBwYWdlZGlyZWN0b3J5IGFuZCBwYWdldGFibGUgYWxsb2NhdGlvbnMgYXJlIGRvbmUg aW4gdGhlIHNoYXJlZCAzCisJICogYW5kIDQgbGV2ZWwgY29kZS4gSnVzdCBhbGxvY2F0ZSB0aGUg cGRwcy4KKwkgKi8KKwlyZXQgPSBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlycG9pbnRlcnModm0s IHBtbDQsIHN0YXJ0LCBsZW5ndGgsCisJCQkJCQluZXdfcGRwcyk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCVdBUk4oYml0bWFwX3dlaWdodChuZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVS X1BNTDQpID4gMiwKKwkgICAgICJUaGUgYWxsb2NhdGlvbiBoYXMgc3Bhbm5lZCBtb3JlIHRoYW4g NTEyR0IuICIKKwkgICAgICJJdCBpcyBoaWdobHkgbGlrZWx5IHRoaXMgaXMgaW5jb3JyZWN0LiIp OworCisJZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAs IHBtbDRlKSB7CisJCVdBUk5fT04oIXBkcCk7CisKKwkJcmV0ID0gZ2VuOF9hbGxvY192YV9yYW5n ZV8zbHZsKHZtLCBwZHAsIHN0YXJ0LCBsZW5ndGgpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJf b3V0OworCisJCWdlbjhfc2V0dXBfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcihwcGd0dCwgcG1sNCwg cGRwLCBwbWw0ZSk7CisJfQorCisJYml0bWFwX29yKHBtbDQtPnVzZWRfcG1sNGVzLCBuZXdfcGRw cywgcG1sNC0+dXNlZF9wbWw0ZXMsCisJCSAgR0VOOF9QTUw0RVNfUEVSX1BNTDQpOworCisJcmV0 dXJuIDA7CisKK2Vycl9vdXQ6CisJZm9yX2VhY2hfc2V0X2JpdChwbWw0ZSwgbmV3X3BkcHMsIEdF TjhfUE1MNEVTX1BFUl9QTUw0KQorCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bCh2bS0+ZGV2LCBw bWw0LT5wZHBzW3BtbDRlXSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGdlbjhf YWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkgICAgICAg dWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbmd0aCkKK3sKKwlzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQgPQorCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNl KTsKKworCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikpCisJCXJldHVybiBnZW44 X2FsbG9jX3ZhX3JhbmdlXzRsdmwodm0sICZwcGd0dC0+cG1sNCwgc3RhcnQsIGxlbmd0aCk7CisJ ZWxzZQorCQlyZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHZtLCAmcHBndHQtPnBkcCwg c3RhcnQsIGxlbmd0aCk7Cit9CisKIC8qCiAgKiBHRU44IGxlZ2FjeSBwcGd0dCBwcm9ncmFtbWlu ZyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCBhIG1heCA0IFBEUCByZWdpc3RlcnMKICAqIHdpdGgg YSBuZXQgZWZmZWN0IHJlc2VtYmxpbmcgYSAyLWxldmVsIHBhZ2UgdGFibGUgaW4gbm9ybWFsIHg4 NiB0ZXJtcy4gRWFjaApAQCAtMTExNyw5ICsxMzIzLDE0IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0 dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAogCXBwZ3R0LT5zd2l0Y2hfbW0g PSBnZW44X21tX3N3aXRjaDsKIAotCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5i YXNlLmRldikpIHsKLQkJcmV0ID0gX19wZHBfaW5pdChmYWxzZSwgJnBwZ3R0LT5wZHApOworCWlm IChVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkgeworCQlyZXQgPSBzZXR1 cF9weChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cG1sNCk7CisJCWlmIChyZXQpCisJCQlnb3Rv IGZyZWVfc2NyYXRjaDsKIAorCQlwcGd0dC0+YmFzZS50b3RhbCA9IDFVTEwgPDwgNDg7CisJfSBl bHNlIHsKKwkJcmV0ID0gX19wZHBfaW5pdChmYWxzZSwgJnBwZ3R0LT5wZHApOwogCQlpZiAocmV0 KQogCQkJZ290byBmcmVlX3NjcmF0Y2g7CiAKQEAgLTExMzEsMTAgKzEzNDIsMTAgQEAgc3RhdGlj IGludCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCQkJICog MkdpQikuCiAJCQkgKi8KIAkJCXBwZ3R0LT5iYXNlLnRvdGFsID0gdG9faTkxNShwcGd0dC0+YmFz ZS5kZXYpLT5ndHQuYmFzZS50b3RhbDsKLQl9IGVsc2UgewotCQlwcGd0dC0+YmFzZS50b3RhbCA9 IDFVTEwgPDwgNDg7Ci0JCXJldCA9IC1FUEVSTTsgLyogTm90IHlldCBpbXBsZW1lbnRlZCAqLwot CQlnb3RvIGZyZWVfc2NyYXRjaDsKKworCQl0cmFjZV9pOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50 ZXJfZW50cnlfYWxsb2MoJnBwZ3R0LT5iYXNlLAorCQkJCQkJCSAgICAgIDAsIDAsCisJCQkJCQkJ ICAgICAgR0VOOF9QTUw0RV9TSElGVCk7CiAJfQogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDA0YmM2NmYuLjExZDQ0YjMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCkBAIC0zOSw2ICszOSw4IEBAIHN0cnVjdCBkcm1faTkxNV9maWxlX3By aXZhdGU7CiB0eXBlZGVmIHVpbnQzMl90IGdlbjZfcHRlX3Q7CiB0eXBlZGVmIHVpbnQ2NF90IGdl bjhfcHRlX3Q7CiB0eXBlZGVmIHVpbnQ2NF90IGdlbjhfcGRlX3Q7Cit0eXBlZGVmIHVpbnQ2NF90 IGdlbjhfcHBndHRfcGRwZV90OwordHlwZWRlZiB1aW50NjRfdCBnZW44X3BwZ3R0X3BtbDRlX3Q7 CiAKICNkZWZpbmUgZ3R0X3RvdGFsX2VudHJpZXMoZ3R0KSAoKGd0dCkuYmFzZS50b3RhbCA+PiBQ QUdFX1NISUZUKQogCkBAIC05NSw2ICs5Nyw3IEBAIHR5cGVkZWYgdWludDY0X3QgZ2VuOF9wZGVf dDsKICAqLwogI2RlZmluZSBHRU44X1BNTDRFU19QRVJfUE1MNAkJNTEyCiAjZGVmaW5lIEdFTjhf UE1MNEVfU0hJRlQJCTM5CisjZGVmaW5lIEdFTjhfUE1MNEVfTUFTSwkJCShHRU44X1BNTDRFU19Q RVJfUE1MNCAtIDEpCiAjZGVmaW5lIEdFTjhfUERQRV9TSElGVAkJCTMwCiAvKiBOQjogR0VOOF9Q RFBFX01BU0sgaXMgdW50cnVlIGZvciAzMmIgcGxhdGZvcm1zLCBidXQgaXQgaGFzIG5vIGltcGFj dCBvbiAzMmIgcGFnZQogICogdGFibGVzICovCkBAIC00NjUsNiArNDY4LDE1IEBAIHN0YXRpYyBp bmxpbmUgdWludDMyX3QgZ2VuNl9wZGVfaW5kZXgodWludDMyX3QgYWRkcikKIAkgICAgIHRlbXAg PSBtaW4odGVtcCwgbGVuZ3RoKSwJCQkJCVwKIAkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAt PSB0ZW1wKQogCisjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwg bGVuZ3RoLCB0ZW1wLCBpdGVyKQlcCisJZm9yIChpdGVyID0gZ2VuOF9wbWw0ZV9pbmRleChzdGFy dCk7CVwKKwkgICAgIHBkcCA9IChwbWw0KS0+cGRwc1tpdGVyXSwgXAorCSAgICAgbGVuZ3RoID4g MCAmJiBpdGVyIDwgR0VOOF9QTUw0RVNfUEVSX1BNTDQ7IFwKKwkgICAgIGl0ZXIrKywJCQkJXAor CSAgICAgdGVtcCA9IEFMSUdOKHN0YXJ0KzEsIDFVTEwgPDwgR0VOOF9QTUw0RV9TSElGVCkgLSBz dGFydCwJXAorCSAgICAgdGVtcCA9IG1pbih0ZW1wLCBsZW5ndGgpLAkJCQkJXAorCSAgICAgc3Rh cnQgKz0gdGVtcCwgbGVuZ3RoIC09IHRlbXApCisKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2Vu OF9wdGVfaW5kZXgodWludDY0X3QgYWRkcmVzcykKIHsKIAlyZXR1cm4gaTkxNV9wdGVfaW5kZXgo YWRkcmVzcywgR0VOOF9QREVfU0hJRlQpOwpAQCAtNDgyLDggKzQ5NCw3IEBAIHN0YXRpYyBpbmxp bmUgdWludDMyX3QgZ2VuOF9wZHBlX2luZGV4KHVpbnQ2NF90IGFkZHJlc3MpCiAKIHN0YXRpYyBp bmxpbmUgdWludDMyX3QgZ2VuOF9wbWw0ZV9pbmRleCh1aW50NjRfdCBhZGRyZXNzKQogewotCVdB Uk5fT04oMSk7IC8qIEZvciA2NEIgKi8KLQlyZXR1cm4gMDsKKwlyZXR1cm4gKGFkZHJlc3MgPj4g R0VOOF9QTUw0RV9TSElGVCkgJiBHRU44X1BNTDRFX01BU0s7CiB9CiAKIHN0YXRpYyBpbmxpbmUg c2l6ZV90IGdlbjhfcHRlX2NvdW50KHVpbnQ2NF90IGFkZHJlc3MsIHVpbnQ2NF90IGxlbmd0aCkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAppbmRleCBmMjMwZDc2Li5lNmI1Yzc0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90cmFjZS5oCkBAIC0yMjEsNiArMjIxLDE0IEBAIERFRklORV9FVkVOVF9Q UklOVChpOTE1X3B4X2VudHJ5LCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5X2FsbG9jLAogCQkJ ICAgICBfX2VudHJ5LT52bSwgX19lbnRyeS0+cHgsIF9fZW50cnktPnN0YXJ0LCBfX2VudHJ5LT5l bmQpCiApOwogCitERUZJTkVfRVZFTlRfUFJJTlQoaTkxNV9weF9lbnRyeSwgaTkxNV9wYWdlX2Rp cmVjdG9yeV9wb2ludGVyX2VudHJ5X2FsbG9jLAorCQkgICBUUF9QUk9UTyhzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwgdTMyIHBtbDRlLCB1NjQgc3RhcnQsIHU2NCBwbWw0ZV9zaGlmdCks CisJCSAgIFRQX0FSR1Modm0sIHBtbDRlLCBzdGFydCwgcG1sNGVfc2hpZnQpLAorCisJCSAgIFRQ X3ByaW50aygidm09JXAsIHBtbDRlPSVkICgweCVsbHgtMHglbGx4KSIsCisJCQkgICAgIF9fZW50 cnktPnZtLCBfX2VudHJ5LT5weCwgX19lbnRyeS0+c3RhcnQsIF9fZW50cnktPmVuZCkKKyk7CisK IC8qIEF2b2lkIGV4dHJhIG1hdGggYmVjYXVzZSB3ZSBvbmx5IHN1cHBvcnQgdHdvIHNpemVzLiBU aGUgZm9ybWF0IGlzIGRlZmluZWQgYnkKICAqIGJpdG1hcF9zY25wcmludGYuIEVhY2ggMzIgYml0 cyBpcyA4IEhFWCBkaWdpdHMgZm9sbG93ZWQgYnkgY29tbWEgKi8KICNkZWZpbmUgVFJBQ0VfUFRf U0laRShiaXRzKSBcCi0tIAoyLjUuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK