From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [PATCH 1/5] drm/i915: Allow i915 to manage the vma offset nodes instead of drm core Date: Wed, 23 Oct 2019 11:30:26 +0300 Message-ID: <20191023083030.27892-1-abdiel.janulgue@linux.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 ESMTPS id 25F0E6E9D8 for ; Wed, 23 Oct 2019 08:30:39 +0000 (UTC) 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: Matthew Auld List-Id: intel-gfx@lists.freedesktop.org SGF2ZSBpOTE1IHJlcGxhY2UgdGhlIGNvcmUgZHJtX2dlbV9tbWFwIGltcGxlbWVudGF0aW9uIHRv IG92ZXJjb21lIGl0cwpsaW1pdGF0aW9uIGluIGhhdmluZyBvbmx5IGEgc2luZ2xlIG1tYXAgb2Zm c2V0IG5vZGUgcGVyIGdlbSBvYmplY3QuClRoaXMgY2hhbmdlIGFsbG93cyB1cyB0byBoYXZlIG11 bHRpcGxlIG1tYXAgb2Zmc2V0cyBwZXIgb2JqZWN0IGFuZAplbmFibGVzIGEgbW1hcHBpbmcgaW5z dGFuY2UgdG8gdXNlIHVuaXF1ZSBmYXVsdC1oYW5kbGVycyBwZXIgdXNlciB2bWEuCgpUaGlzIGFs bG93cyBpOTE1IHRvIHN0b3JlIGV4dHJhIGRhdGEgd2l0aGluIHZtYS0+dm1fcHJpdmF0ZV9kYXRh IGFuZAphc3NpZ24gdGhlIHBhZ2VmYXVsdCBvcHMgZm9yIGVhY2ggbW1hcCBpbnN0YW5jZSBhbGxv d2luZyBvYmplY3RzIHRvIHVzZQptdWx0aXBsZSBmYXVsdCBoYW5kbGVycyBkZXBlbmRpbmcgb24g aXRzIGJhY2tpbmcgc3RvcmFnZS4KCnYyOgogLSBGaXggcmFjZSBjb25kaXRpb24gZXhwb3NlZCBi eSBnZW1fbW1hcF9ndHRAY2xvc2UtcmFjZS4gU2ltcGxpZnkKICAgbGlmZXRpbWUgbWFuYWdlbWVu dCBvZiB0aGUgbW1hcCBvZmZzZXQgb2JqZWN0cyBiZSBlbnN1cmluZyBpdCBpcwogICBvd25lZCBi eSB0aGUgcGFyZW50IGdlbSBvYmplY3QgaW5zdGVhZCBvZiByZWZjb3VudGluZy4KIC0gVHJhY2sg bW1vIHVzZWQgYnkgZmVuY2luZyB0byBBdm9pZCBsb2NraW5nIHdoZW4gcmV2b2tpbmcgbW1hcHMK ICAgZHVyaW5nIEdQVSByZXNldC4KIC0gUmViYXNlLgp2MzoKLSBTaW1wbGlmeSBtbW8gdHJhY2tp bmcKdjQ6Ci0gdXNlIHZtYS0+bW1vIGluIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9n dHQKClNpZ25lZC1vZmYtYnk6IEFiZGllbCBKYW51bGd1ZSA8YWJkaWVsLmphbnVsZ3VlQGxpbnV4 LmludGVsLmNvbT4KQ2M6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KQ2M6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyAgICAgIHwgMjI5ICsrKysrKysrKysrKysrKystLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jICAgIHwgIDEzICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaCAgICB8ICAgOSArLQogLi4u L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggIHwgIDE5ICsrCiAuLi4v ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMgICAgfCAgMTIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgICAgICAgICB8ICAgNyArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgIDEwICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgICAgIHwgIDE1ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5oICAgICAgICAgICAgICAgfCAgIDMgKwogMTIgZmlsZXMgY2hh bmdlZCwgMjc0IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwppbmRleCA5OTM3YjRjMzQxZjEuLjQwNzkyZDIw MTdhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFp bi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwpAQCAt MjU0LDcgKzI1NCw3IEBAIGludCBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQl9CiAKIAkJCWlmIChvYmotPnVzZXJmYXVs dF9jb3VudCkKLQkJCQlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAob2JqKTsKKwkJCQlf X2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KG9iaik7CiAKIAkJCS8qCiAJCQkgKiBB cyB3ZSBubyBsb25nZXIgbmVlZCBhIGZlbmNlIGZvciBHVFQgYWNjZXNzLApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKaW5kZXggZmQ0MTIyZDhjMGE5Li4zNDkxYmIwNjYw NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYwpAQCAtMjE5LDcg KzIxOSw4IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYp CiB7CiAjZGVmaW5lIE1JTl9DSFVOS19QQUdFUyAoU1pfMU0gPj4gUEFHRV9TSElGVCkKIAlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmFyZWEgPSB2bWYtPnZtYTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gdG9faW50ZWxfYm8oYXJlYS0+dm1fcHJpdmF0ZV9kYXRhKTsKKwlzdHJ1 Y3QgaTkxNV9tbWFwX29mZnNldCAqcHJpdiA9IGFyZWEtPnZtX3ByaXZhdGVfZGF0YTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gcHJpdi0+b2JqOwogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+ cnVudGltZV9wbTsKQEAgLTMxMiw2ICszMTMsOSBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0 KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCQlsaXN0X2FkZCgmb2JqLT51c2VyZmF1bHRfbGluaywg Jmk5MTUtPmdndHQudXNlcmZhdWx0X2xpc3QpOwogCW11dGV4X3VubG9jaygmaTkxNS0+Z2d0dC52 bS5tdXRleCk7CiAKKwkvKiBUcmFjayB0aGUgbW1vIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmVuY2Vk IHZtYSAqLworCXZtYS0+bW1vID0gcHJpdjsKKwogCWlmIChDT05GSUdfRFJNX0k5MTVfVVNFUkZB VUxUX0FVVE9TVVNQRU5EKQogCQlpbnRlbF93YWtlcmVmX2F1dG8oJmk5MTUtPmdndHQudXNlcmZh dWx0X3dha2VyZWYsCiAJCQkJICAgbXNlY3NfdG9famlmZmllc190aW1lb3V0KENPTkZJR19EUk1f STkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQpKTsKQEAgLTM1OCw3ICszNjIsNyBAQCB2bV9mYXVs dF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCX0KIH0KIAotdm9pZCBf X2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKK3ZvaWQgX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0dChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCkBAIC0z NjYsMjAgKzM3MCwxNiBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJb2JqLT51c2VyZmF1bHRfY291bnQgPSAw OwogCWxpc3RfZGVsKCZvYmotPnVzZXJmYXVsdF9saW5rKTsKLQlkcm1fdm1hX25vZGVfdW5tYXAo Jm9iai0+YmFzZS52bWFfbm9kZSwKLQkJCSAgIG9iai0+YmFzZS5kZXYtPmFub25faW5vZGUtPmlf bWFwcGluZyk7CiAKLQlmb3JfZWFjaF9nZ3R0X3ZtYSh2bWEsIG9iaikKKwlmb3JfZWFjaF9nZ3R0 X3ZtYSh2bWEsIG9iaikgeworCQlpZiAodm1hLT5tbW8pCisJCQlkcm1fdm1hX25vZGVfdW5tYXAo JnZtYS0+bW1vLT52bWFfbm9kZSwKKwkJCQkJICAgb2JqLT5iYXNlLmRldi0+YW5vbl9pbm9kZS0+ aV9tYXBwaW5nKTsKIAkJaTkxNV92bWFfdW5zZXRfdXNlcmZhdWx0KHZtYSk7CisJfQogfQogCiAv KioKLSAqIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAgLSByZW1vdmUgcGh5c2ljYWwgcGFn ZSBtYXBwaW5ncwotICogQG9iajogb2JqIGluIHF1ZXN0aW9uCi0gKgotICogUHJlc2VydmUgdGhl IHJlc2VydmF0aW9uIG9mIHRoZSBtbWFwcGluZyB3aXRoIHRoZSBEUk0gY29yZSBjb2RlLCBidXQK LSAqIHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIHRoZSBwYWdlcyBiYWNrIHRvIHRoZSBzeXN0ZW0u Ci0gKgogICogSXQgaXMgdml0YWwgdGhhdCB3ZSByZW1vdmUgdGhlIHBhZ2UgbWFwcGluZyBpZiB3 ZSBoYXZlIG1hcHBlZCBhIHRpbGVkCiAgKiBvYmplY3QgdGhyb3VnaCB0aGUgR1RUIGFuZCB0aGVu IGxvc2UgdGhlIGZlbmNlIHJlZ2lzdGVyIGR1ZSB0bwogICogcmVzb3VyY2UgcHJlc3N1cmUuIFNp bWlsYXJseSBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIG1vdmVkIG91dCBvZiB0aGUKQEAgLTM4Nyw3 ICszODcsNyBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogICogbWFwcGluZyB3aWxsIHRoZW4gdHJpZ2dlciBhIHBh Z2UgZmF1bHQgb24gdGhlIG5leHQgdXNlciBhY2Nlc3MsIGFsbG93aW5nCiAgKiBmaXh1cCBieSBp OTE1X2dlbV9mYXVsdCgpLgogICovCi12b2lkIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX29i amVjdF9yZWxlYXNlX21tYXBfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYp OwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgaTkx NV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogCWlmICghb2JqLT51c2VyZmF1bHRfY291bnQpCiAJCWdvdG8gb3V0OwogCi0JX19pOTE1X2dl bV9vYmplY3RfcmVsZWFzZV9tbWFwKG9iaik7CisJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9t bWFwX2d0dChvYmopOwogCiAJLyogRW5zdXJlIHRoYXQgdGhlIENQVSdzIFBURSBhcmUgcmV2b2tl ZCBhbmQgdGhlcmUgYXJlIG5vdCBvdXRzdGFuZGluZwogCSAqIG1lbW9yeSB0cmFuc2FjdGlvbnMg ZnJvbSB1c2Vyc3BhY2UgYmVmb3JlIHdlIHJldHVybi4gVGhlIFRMQgpAQCAtNDIyLDE1ICs0MjIs NjMgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0s IHdha2VyZWYpOwogfQogCi1zdGF0aWMgaW50IGNyZWF0ZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVh c2VfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1 Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vOworCisJbXV0ZXhfbG9jaygmb2JqLT5tbW9fbG9jayk7 CisJbGlzdF9mb3JfZWFjaF9lbnRyeShtbW8sICZvYmotPm1tYXBfb2Zmc2V0cywgb2Zmc2V0KSB7 CisJCS8qIHZtYV9ub2RlX3VubWFwIGZvciBHVFQgbW1hcHMgaGFuZGxlZCBhbHJlYWR5IGluCisJ CSAqIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9ndHQKKwkJICovCisJCWlmIChtbW8t Pm1tYXBfdHlwZSAhPSBJOTE1X01NQVBfVFlQRV9HVFQpCisJCQlkcm1fdm1hX25vZGVfdW5tYXAo Jm1tby0+dm1hX25vZGUsCisJCQkJCSAgIG9iai0+YmFzZS5kZXYtPmFub25faW5vZGUtPmlfbWFw cGluZyk7CisJfQorCW11dGV4X3VubG9jaygmb2JqLT5tbW9fbG9jayk7Cit9CisKKy8qKgorICog aTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcCAtIHJlbW92ZSBwaHlzaWNhbCBwYWdlIG1hcHBp bmdzCisgKiBAb2JqOiBvYmogaW4gcXVlc3Rpb24KKyAqCisgKiBQcmVzZXJ2ZSB0aGUgcmVzZXJ2 YXRpb24gb2YgdGhlIG1tYXBwaW5nIHdpdGggdGhlIERSTSBjb3JlIGNvZGUsIGJ1dAorICogcmVs aW5xdWlzaCBvd25lcnNoaXAgb2YgdGhlIHBhZ2VzIGJhY2sgdG8gdGhlIHN5c3RlbS4KKyAqLwor dm9pZCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCit7CisJaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9ndHQob2JqKTsKKwlp OTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX29mZnNldChvYmopOworfQorCitzdGF0aWMgdm9p ZCBpbml0X21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkg ICAgIHN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8pCit7CisJbXV0ZXhfbG9jaygmb2JqLT5t bW9fbG9jayk7CisJbGlzdF9hZGQoJm1tby0+b2Zmc2V0LCAmb2JqLT5tbWFwX29mZnNldHMpOwor CW11dGV4X3VubG9jaygmb2JqLT5tbW9fbG9jayk7CisKKwltbW8tPm9iaiA9IG9iajsKKwltbW8t PmRldiA9IG9iai0+YmFzZS5kZXY7Cit9CisKK3N0YXRpYyBpbnQgY3JlYXRlX21tYXBfb2Zmc2V0 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgICBzdHJ1Y3QgaTkxNV9t bWFwX29mZnNldCAqbW1vKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9f aTkxNShvYmotPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gJmk5MTUtPmd0Owor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCWludCBlcnI7CiAKLQll cnIgPSBkcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldCgmb2JqLT5iYXNlKTsKLQlpZiAobGlrZWx5 KCFlcnIpKQorCWRybV92bWFfbm9kZV9yZXNldCgmbW1vLT52bWFfbm9kZSk7CisJaWYgKG1tby0+ ZmlsZSkKKwkJZHJtX3ZtYV9ub2RlX2FsbG93KCZtbW8tPnZtYV9ub2RlLCBtbW8tPmZpbGUpOwor CWVyciA9IGRybV92bWFfb2Zmc2V0X2FkZChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlciwgJm1tby0+ dm1hX25vZGUsCisJCQkJIG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFKTsKKwlpZiAobGlrZWx5 KCFlcnIpKSB7CisJCWluaXRfbW1hcF9vZmZzZXQob2JqLCBtbW8pOwogCQlyZXR1cm4gMDsKKwl9 CiAKIAkvKiBBdHRlbXB0IHRvIHJlYXAgc29tZSBtbWFwIHNwYWNlIGZyb20gZGVhZCBvYmplY3Rz ICovCiAJZXJyID0gaW50ZWxfZ3RfcmV0aXJlX3JlcXVlc3RzX3RpbWVvdXQoZ3QsIE1BWF9TQ0hF RFVMRV9USU1FT1VUKTsKQEAgLTQzOCwxNiArNDg2LDIzIEBAIHN0YXRpYyBpbnQgY3JlYXRlX21t YXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCXJldHVybiBlcnI7 CiAKIAlpOTE1X2dlbV9kcmFpbl9mcmVlZF9vYmplY3RzKGk5MTUpOwotCXJldHVybiBkcm1fZ2Vt X2NyZWF0ZV9tbWFwX29mZnNldCgmb2JqLT5iYXNlKTsKKwllcnIgPSBkcm1fdm1hX29mZnNldF9h ZGQoZGV2LT52bWFfb2Zmc2V0X21hbmFnZXIsICZtbW8tPnZtYV9ub2RlLAorCQkJCSBvYmotPmJh c2Uuc2l6ZSAvIFBBR0VfU0laRSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWluaXRf bW1hcF9vZmZzZXQob2JqLCBtbW8pOworCXJldHVybiAwOwogfQogCi1pbnQKLWk5MTVfZ2VtX21t YXBfZ3R0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKLQkJICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAotCQkgIHUzMiBoYW5kbGUsCi0JCSAgdTY0ICpvZmZzZXQpCitzdGF0aWMgaW50CitfX2Fzc2ln bl9nZW1fb2JqZWN0X21tYXBfZGF0YShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCQkgICAgICB1 MzIgaGFuZGxlLAorCQkJICAgICAgZW51bSBpOTE1X21tYXBfdHlwZSBtbWFwX3R5cGUsCisJCQkg ICAgICB1NjQgKm9mZnNldCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwor CXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW87CiAJaW50IHJldDsKIAogCW9iaiA9IGk5MTVf Z2VtX29iamVjdF9sb29rdXAoZmlsZSwgaGFuZGxlKTsKQEAgLTQ1OSwxMCArNTE0LDIxIEBAIGk5 MTVfZ2VtX21tYXBfZ3R0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKIAkJZ290byBvdXQ7CiAJfQog Ci0JcmV0ID0gY3JlYXRlX21tYXBfb2Zmc2V0KG9iaik7Ci0JaWYgKHJldCA9PSAwKQotCQkqb2Zm c2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKCZvYmotPmJhc2Uudm1hX25vZGUpOworCW1t byA9IGt6YWxsb2Moc2l6ZW9mKCptbW8pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1tbykgeworCQly ZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisKKwltbW8tPmZpbGUgPSBmaWxlOworCXJl dCA9IGNyZWF0ZV9tbWFwX29mZnNldChvYmosIG1tbyk7CisJaWYgKHJldCkgeworCQlrZnJlZSht bW8pOworCQlnb3RvIG91dDsKKwl9CiAKKwltbW8tPm1tYXBfdHlwZSA9IG1tYXBfdHlwZTsKKwkq b2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKCZtbW8tPnZtYV9ub2RlKTsKIG91dDoK IAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CiAJcmV0dXJuIHJldDsKQEAgLTQ4OSw3ICs1NTUs MTE4IEBAIGk5MTVfZ2VtX21tYXBfZ3R0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX2d0dCAqYXJncyA9IGRhdGE7 CiAKLQlyZXR1cm4gaTkxNV9nZW1fbW1hcF9ndHQoZmlsZSwgZGV2LCBhcmdzLT5oYW5kbGUsICZh cmdzLT5vZmZzZXQpOworCXJldHVybiBfX2Fzc2lnbl9nZW1fb2JqZWN0X21tYXBfZGF0YShmaWxl LCBhcmdzLT5oYW5kbGUsCisJCQkJCSAgICAgSTkxNV9NTUFQX1RZUEVfR1RULAorCQkJCQkgICAg ICZhcmdzLT5vZmZzZXQpOworfQorCit2b2lkIGk5MTVfbW1hcF9vZmZzZXRfZGVzdHJveShzdHJ1 Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQoreworCWlmICht bW8tPmZpbGUpCisJCWRybV92bWFfbm9kZV9yZXZva2UoJm1tby0+dm1hX25vZGUsIG1tby0+Zmls ZSk7CisJZHJtX3ZtYV9vZmZzZXRfcmVtb3ZlKG1tby0+ZGV2LT52bWFfb2Zmc2V0X21hbmFnZXIs ICZtbW8tPnZtYV9ub2RlKTsKKworCW11dGV4X2xvY2sobXV0ZXgpOworCWxpc3RfZGVsKCZtbW8t Pm9mZnNldCk7CisJbXV0ZXhfdW5sb2NrKG11dGV4KTsKKworCWtmcmVlKG1tbyk7Cit9CisKK3N0 YXRpYyB2b2lkIGk5MTVfZ2VtX3ZtX29wZW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7 CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbyA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOwor CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBtbW8tPm9iajsKKworCUdFTV9CVUdf T04oIW9iaik7CisJaTkxNV9nZW1fb2JqZWN0X2dldChvYmopOworfQorCitzdGF0aWMgdm9pZCBp OTE1X2dlbV92bV9jbG9zZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3Qg aTkxNV9tbWFwX29mZnNldCAqbW1vID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CisJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IG1tby0+b2JqOworCisJR0VNX0JVR19PTighb2JqKTsK KwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1f b3BlcmF0aW9uc19zdHJ1Y3QgaTkxNV9nZW1fZ3R0X3ZtX29wcyA9IHsKKwkuZmF1bHQgPSBpOTE1 X2dlbV9mYXVsdCwKKwkub3BlbiA9IGk5MTVfZ2VtX3ZtX29wZW4sCisJLmNsb3NlID0gaTkxNV9n ZW1fdm1fY2xvc2UsCit9OworCisvKiBUaGlzIG92ZXJjb21lcyB0aGUgbGltaXRhdGlvbiBpbiBk cm1fZ2VtX21tYXAncyBhc3NpZ25tZW50IG9mIGEKKyAqIGRybV9nZW1fb2JqZWN0IGFzIHRoZSB2 bWEtPnZtX3ByaXZhdGVfZGF0YS4gU2luY2Ugd2UgbmVlZCB0bworICogYmUgYWJsZSB0byByZXNv bHZlIG11bHRpcGxlIG1tYXAgb2Zmc2V0cyB3aGljaCBjb3VsZCBiZSB0aWVkCisgKiB0byBhIHNp bmdsZSBnZW0gb2JqZWN0LgorICovCitpbnQgaTkxNV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmls cCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGRybV92bWFfb2Zmc2V0 X25vZGUgKm5vZGU7CisJc3RydWN0IGRybV9maWxlICpwcml2ID0gZmlscC0+cHJpdmF0ZV9kYXRh OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwcml2LT5taW5vci0+ZGV2OworCXN0cnVjdCBp OTE1X21tYXBfb2Zmc2V0ICptbW8gPSBOVUxMOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq ID0gTlVMTDsKKworCWlmIChkcm1fZGV2X2lzX3VucGx1Z2dlZChkZXYpKQorCQlyZXR1cm4gLUVO T0RFVjsKKworCWRybV92bWFfb2Zmc2V0X2xvY2tfbG9va3VwKGRldi0+dm1hX29mZnNldF9tYW5h Z2VyKTsKKwlub2RlID0gZHJtX3ZtYV9vZmZzZXRfZXhhY3RfbG9va3VwX2xvY2tlZChkZXYtPnZt YV9vZmZzZXRfbWFuYWdlciwKKwkJCQkJCSAgdm1hLT52bV9wZ29mZiwKKwkJCQkJCSAgdm1hX3Bh Z2VzKHZtYSkpOworCWlmIChsaWtlbHkobm9kZSkpIHsKKwkJbW1vID0gY29udGFpbmVyX29mKG5v ZGUsIHN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0LAorCQkJCSAgIHZtYV9ub2RlKTsKKwkJLyoKKwkJ ICogSW4gb3VyIGRlcGVuZGVuY3kgY2hhaW4sIHRoZSBkcm1fdm1hX29mZnNldF9ub2RlCisJCSAq IGRlcGVuZHMgb24gdGhlIHZhbGlkaXR5IG9mIHRoZSBtbW8sIHdoaWNoIGRlcGVuZHMgb24KKwkJ ICogdGhlIGdlbSBvYmplY3QuIEhvd2V2ZXIgdGhlIG9ubHkgcmVmZXJlbmNlIHdlIGhhdmUKKwkJ ICogYXQgdGhpcyBwb2ludCBpcyB0aGUgbW1vIChhcyB0aGUgcGFyZW50IG9mIHRoZSBub2RlKS4K KwkJICogVHJ5IHRvIGNoZWNrIGlmIHRoZSBnZW0gb2JqZWN0IHdhcyBhdCBsZWFzdCBjbGVhcmVk LgorCQkgKi8KKwkJaWYgKCFtbW8gfHwgIW1tby0+b2JqKSB7CisJCQlkcm1fdm1hX29mZnNldF91 bmxvY2tfbG9va3VwKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyKTsKKwkJCXJldHVybiAtRUlOVkFM OworCQl9CisJCS8qCisJCSAqIFNraXAgMC1yZWZjbnRlZCBvYmplY3RzIGFzIGl0IGlzIGluIHRo ZSBwcm9jZXNzIG9mIGJlaW5nCisJCSAqIGRlc3Ryb3llZCBhbmQgd2lsbCBiZSBpbnZhbGlkIHdo ZW4gdGhlIHZtYSBtYW5hZ2VyIGxvY2sKKwkJICogaXMgcmVsZWFzZWQuCisJCSAqLworCQlvYmog PSAmbW1vLT5vYmotPmJhc2U7CisJCWlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJm9iai0+cmVm Y291bnQpKQorCQkJb2JqID0gTlVMTDsKKworCX0KKwlkcm1fdm1hX29mZnNldF91bmxvY2tfbG9v a3VwKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyKTsKKworCWlmICghb2JqKQorCQlyZXR1cm4gLUVJ TlZBTDsKKworCWlmICghZHJtX3ZtYV9ub2RlX2lzX2FsbG93ZWQobm9kZSwgcHJpdikpIHsKKwkJ ZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CisJCXJldHVybiAtRUFDQ0VTOworCX0K KworCWlmICh0b19pbnRlbF9ibyhvYmopLT5yZWFkb25seSkgeworCQlpZiAodm1hLT52bV9mbGFn cyAmIFZNX1dSSVRFKSB7CisJCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKKwkJ CXJldHVybiAtRUlOVkFMOworCQl9CisJCXZtYS0+dm1fZmxhZ3MgJj0gflZNX01BWVdSSVRFOwor CX0KKworCXZtYS0+dm1fZmxhZ3MgfD0gVk1fUEZOTUFQIHwgVk1fRE9OVEVYUEFORCB8IFZNX0RP TlREVU1QOworCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bV9nZXRf cGFnZV9wcm90KHZtYS0+dm1fZmxhZ3MpKTsKKwl2bWEtPnZtX3BhZ2VfcHJvdCA9IHBncHJvdF9k ZWNyeXB0ZWQodm1hLT52bV9wYWdlX3Byb3QpOworCXZtYS0+dm1fcHJpdmF0ZV9kYXRhID0gbW1v OworCisJdm1hLT52bV9vcHMgPSAmaTkxNV9nZW1fZ3R0X3ZtX29wczsKKworCXJldHVybiAwOwog fQogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKaW5kZXggYTUwMjk2Y2NlMGQ4Li5hNDRi OTgzNDc5NGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9v YmplY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMK QEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogCiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+bHV0X2xpc3QpOwog CisJbXV0ZXhfaW5pdCgmb2JqLT5tbW9fbG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJm9iai0+bW1h cF9vZmZzZXRzKTsKKwogCWluaXRfcmN1X2hlYWQoJm9iai0+cmN1KTsKIAogCW9iai0+b3BzID0g b3BzOwpAQCAtMTU2LDYgKzE1OSw4IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmpl Y3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCiAJd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKIAlsbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKG9iaiwgb24sIGZyZWVkLCBmcmVlZCkgeworCQlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAq bW1vLCAqbW47CisKIAkJdHJhY2VfaTkxNV9nZW1fb2JqZWN0X2Rlc3Ryb3kob2JqKTsKIAogCQlp ZiAoIWxpc3RfZW1wdHkoJm9iai0+dm1hLmxpc3QpKSB7CkBAIC0xODEsNiArMTg2LDE0IEBAIHN0 YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAogCQkJc3Bpbl91bmxvY2soJm9iai0+dm1hLmxvY2spOwogCQl9CiAKKwkJaTkxNV9n ZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChvYmopOworCisJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShtbW8sIG1uLCAmb2JqLT5tbWFwX29mZnNldHMsIG9mZnNldCkgeworCQkJbW1vLT5vYmogPSBO VUxMOworCQkJaTkxNV9tbWFwX29mZnNldF9kZXN0cm95KG1tbywgJm9iai0+bW1vX2xvY2spOwor CQl9CisKKwkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmb2JqLT5tbWFwX29mZnNldHMpKTsKIAkJ R0VNX0JVR19PTihhdG9taWNfcmVhZCgmb2JqLT5iaW5kX2NvdW50KSk7CiAJCUdFTV9CVUdfT04o b2JqLT51c2VyZmF1bHRfY291bnQpOwogCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZvYmotPmx1 dF9saXN0KSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f b2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKaW5k ZXggYWVhZDdlNjcyNWY5Li5lZjQwOTg5NzYxMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0LmgKQEAgLTEzMiwxMyArMTMyLDEzIEBAIHZvaWQgaTkxNV9nZW1f b2JqZWN0X3VubG9ja19mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogc3Rh dGljIGlubGluZSB2b2lkCiBpOTE1X2dlbV9vYmplY3Rfc2V0X3JlYWRvbmx5KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0Jb2JqLT5iYXNlLnZtYV9ub2RlLnJlYWRvbmx5ID0g dHJ1ZTsKKwlvYmotPnJlYWRvbmx5ID0gdHJ1ZTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCiBp OTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKLQlyZXR1cm4gb2JqLT5iYXNlLnZtYV9ub2RlLnJlYWRvbmx5OworCXJldHVy biBvYmotPnJlYWRvbmx5OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wKQEAgLTM3Niw3ICszNzYs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhv YmopOwogfQogCi12b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9t bWFwX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgaTkxNV9nZW1f b2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIAog dm9pZApAQCAtNDYyLDYgKzQ2Miw5IEBAIGludCBpOTE1X2dlbV9vYmplY3Rfd2FpdChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogaW50IGk5MTVfZ2VtX29iamVjdF93YWl0X3ByaW9y aXR5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJICB1bnNpZ25lZCBpbnQg ZmxhZ3MsCiAJCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKTsKKwordm9p ZCBpOTE1X21tYXBfb2Zmc2V0X2Rlc3Ryb3koc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbywg c3RydWN0IG11dGV4ICptdXRleCk7CisKICNkZWZpbmUgSTkxNV9QUklPUklUWV9ESVNQTEFZIEk5 MTVfVVNFUl9QUklPUklUWShJOTE1X1BSSU9SSVRZX01BWCkKIAogI2VuZGlmCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKaW5kZXggYTM4N2Uz ZWU3MjhiLi5jNWMzMDViZDk5MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKQEAgLTYyLDYgKzYyLDIwIEBAIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0X29wcyB7CiAJdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopOwogfTsKIAorZW51bSBpOTE1X21tYXBfdHlwZSB7CisJSTkxNV9NTUFQX1RZ UEVfR1RUID0gMCwKK307CisKK3N0cnVjdCBpOTE1X21tYXBfb2Zmc2V0IHsKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2OworCXN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2RlIHZtYV9ub2RlOworCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGRybV9maWxlICpmaWxlOwor CWVudW0gaTkxNV9tbWFwX3R5cGUgbW1hcF90eXBlOworCisJc3RydWN0IGxpc3RfaGVhZCBvZmZz ZXQ7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGRybV9nZW1f b2JqZWN0IGJhc2U7CiAKQEAgLTExNyw2ICsxMzEsMTEgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgewogCXVuc2lnbmVkIGludCB1c2VyZmF1bHRfY291bnQ7CiAJc3RydWN0IGxpc3RfaGVh ZCB1c2VyZmF1bHRfbGluazsKIAorCS8qIFByb3RlY3RzIGFjY2VzcyB0byBtbWFwIG9mZnNldHMg Ki8KKwlzdHJ1Y3QgbXV0ZXggbW1vX2xvY2s7CisJc3RydWN0IGxpc3RfaGVhZCBtbWFwX29mZnNl dHM7CisJYm9vbCByZWFkb25seToxOworCiAJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0cnVjdCBs aXN0X2hlYWQgc3RfbGluayk7CiAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwppbmRleCBkNDVh OTM5MjhmZjUuLjAxZDFhYTVlZDhjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKQEAgLTU1NywxNSArNTU3LDIwIEBAIHN0YXRp YyBib29sIGFzc2VydF9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK IAkJCSAgICAgICBpbnQgZXhwZWN0ZWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKKwkvKiBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gcGFyZW50IGdlbSBvYmplY3QgaW4g Y3JlYXRlX21tYXBfb2Zmc2V0ICovCisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbyA9IGt6 YWxsb2Moc2l6ZW9mKCptbW8pLCBHRlBfS0VSTkVMKTsKIAlpbnQgZXJyOwogCiAJb2JqID0gaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBzaXplKTsKIAlpZiAoSVNfRVJSKG9i aikpCiAJCXJldHVybiBQVFJfRVJSKG9iaik7CiAKLQllcnIgPSBjcmVhdGVfbW1hcF9vZmZzZXQo b2JqKTsKKwllcnIgPSBjcmVhdGVfbW1hcF9vZmZzZXQob2JqLCBtbW8pOworCWlmIChlcnIpCisJ CWtmcmVlKG1tbyk7CiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwogCisKIAlyZXR1cm4gZXJy ID09IGV4cGVjdGVkOwogfQogCkBAIC02MDEsNiArNjA2LDggQEAgc3RhdGljIGludCBpZ3RfbW1h cF9vZmZzZXRfZXhoYXVzdGlvbih2b2lkICphcmcpCiAJc3RydWN0IGRybV9tbSAqbW0gPSAmaTkx NS0+ZHJtLnZtYV9vZmZzZXRfbWFuYWdlci0+dm1fYWRkcl9zcGFjZV9tbTsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBkcm1fbW1fbm9kZSByZXN2LCAqaG9sZTsK KwkvKiBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gcGFyZW50IGdlbSBvYmplY3QgaW4gY3JlYXRl X21tYXBfb2Zmc2V0ICovCisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbyA9IGt6YWxsb2Mo c2l6ZW9mKCptbW8pLCBHRlBfS0VSTkVMKTsKIAl1NjQgaG9sZV9zdGFydCwgaG9sZV9lbmQ7CiAJ aW50IGxvb3AsIGVycjsKIApAQCAtNjQ0LDkgKzY1MSwxMCBAQCBzdGF0aWMgaW50IGlndF9tbWFw X29mZnNldF9leGhhdXN0aW9uKHZvaWQgKmFyZykKIAkJZ290byBvdXQ7CiAJfQogCi0JZXJyID0g Y3JlYXRlX21tYXBfb2Zmc2V0KG9iaik7CisJZXJyID0gY3JlYXRlX21tYXBfb2Zmc2V0KG9iaiwg bW1vKTsKIAlpZiAoZXJyKSB7CiAJCXByX2VycigiVW5hYmxlIHRvIGluc2VydCBvYmplY3QgaW50 byByZWNsYWltZWQgaG9sZVxuIik7CisJCWtmcmVlKG1tbyk7CiAJCWdvdG8gZXJyX29iajsKIAl9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCmluZGV4IGJmOGQxZWQ0YjFkOC4u NWU5ODVjMGNiOTQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9y ZXNldC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKQEAgLTY2 Nyw4ICs2NjcsMTMgQEAgc3RhdGljIHZvaWQgcmV2b2tlX21tYXBzKHN0cnVjdCBpbnRlbF9ndCAq Z3QpCiAJCQljb250aW51ZTsKIAogCQlHRU1fQlVHX09OKHZtYS0+ZmVuY2UgIT0gJmd0LT5nZ3R0 LT5mZW5jZV9yZWdzW2ldKTsKLQkJbm9kZSA9ICZ2bWEtPm9iai0+YmFzZS52bWFfbm9kZTsKKwor CQlpZiAoIXZtYS0+bW1vKQorCQkJY29udGludWU7CisKKwkJbm9kZSA9ICZ2bWEtPm1tby0+dm1h X25vZGU7CiAJCXZtYV9vZmZzZXQgPSB2bWEtPmdndHRfdmlldy5wYXJ0aWFsLm9mZnNldCA8PCBQ QUdFX1NISUZUOworCiAJCXVubWFwX21hcHBpbmdfcmFuZ2UoZ3QtPmk5MTUtPmRybS5hbm9uX2lu b2RlLT5pX21hcHBpbmcsCiAJCQkJICAgIGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcihub2RlKSAr IHZtYV9vZmZzZXQsCiAJCQkJICAgIHZtYS0+c2l6ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmlu ZGV4IDUxMzhkMWVlZDMwNi4uN2RiYTliMmVhMDBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK QEAgLTI2NDYsMTggKzI2NDYsMTIgQEAgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgaTkxNV9wbV9v cHMgPSB7CiAJLnJ1bnRpbWVfcmVzdW1lID0gaW50ZWxfcnVudGltZV9yZXN1bWUsCiB9OwogCi1z dGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGk5MTVfZ2VtX3ZtX29wcyA9 IHsKLQkuZmF1bHQgPSBpOTE1X2dlbV9mYXVsdCwKLQkub3BlbiA9IGRybV9nZW1fdm1fb3BlbiwK LQkuY2xvc2UgPSBkcm1fZ2VtX3ZtX2Nsb3NlLAotfTsKLQogc3RhdGljIGNvbnN0IHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgaTkxNV9kcml2ZXJfZm9wcyA9IHsKIAkub3duZXIgPSBUSElTX01PRFVM RSwKIAkub3BlbiA9IGRybV9vcGVuLAogCS5yZWxlYXNlID0gZHJtX3JlbGVhc2UsCiAJLnVubG9j a2VkX2lvY3RsID0gZHJtX2lvY3RsLAotCS5tbWFwID0gZHJtX2dlbV9tbWFwLAorCS5tbWFwID0g aTkxNV9nZW1fbW1hcCwKIAkucG9sbCA9IGRybV9wb2xsLAogCS5yZWFkID0gZHJtX3JlYWQsCiAJ LmNvbXBhdF9pb2N0bCA9IGk5MTVfY29tcGF0X2lvY3RsLApAQCAtMjc0Niw3ICsyNzQwLDYgQEAg c3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKIAogCS5nZW1fY2xvc2Vfb2JqZWN0 ID0gaTkxNV9nZW1fY2xvc2Vfb2JqZWN0LAogCS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQgPSBp OTE1X2dlbV9mcmVlX29iamVjdCwKLQkuZ2VtX3ZtX29wcyA9ICZpOTE1X2dlbV92bV9vcHMsCiAK IAkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCiAJLnBy aW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLApAQCAtMjc1Nyw3 ICsyNzUwLDYgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKIAkuZ2V0X3Nj YW5vdXRfcG9zaXRpb24gPSBpOTE1X2dldF9jcnRjX3NjYW5vdXRwb3MsCiAKIAkuZHVtYl9jcmVh dGUgPSBpOTE1X2dlbV9kdW1iX2NyZWF0ZSwKLQkuZHVtYl9tYXBfb2Zmc2V0ID0gaTkxNV9nZW1f bW1hcF9ndHQsCiAJLmlvY3RscyA9IGk5MTVfaW9jdGxzLAogCS5udW1faW9jdGxzID0gQVJSQVlf U0laRShpOTE1X2lvY3RscyksCiAJLmZvcHMgPSAmaTkxNV9kcml2ZXJfZm9wcywKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCmluZGV4IDg4ODJjMDkwOGMzYi4uZWQwZmMxZDZkZmFiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKQEAgLTE5MzIsOCArMTkzMiw2IEBAIGk5MTVfbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiBpbnQgaTkxNV9nZW1fZHVtYl9jcmVh dGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJCQkgc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkJCSBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpOwotaW50IGk5MTVfZ2Vt X21tYXBfZ3R0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCBzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAotCQkgICAgICB1MzIgaGFuZGxlLCB1NjQgKm9mZnNldCk7CiBpbnQgaTkxNV9nZW1fbW1h cF9ndHRfdmVyc2lvbih2b2lkKTsKIAogaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zZXRfZ2xv YmFsX3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBzZXFubyk7CkBAIC0xOTU4LDYg KzE5NTYsNyBAQCB2b2lkIGk5MTVfZ2VtX2RyaXZlcl9yZWxlYXNlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9sYXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworaW50IGk5MTVfZ2VtX21tYXAoc3RydWN0IGZp bGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKIHZtX2ZhdWx0X3QgaTkxNV9n ZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpOwogCiBpbnQgaTkxNV9nZW1fb3BlbihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCmluZGV4IGI4ODI5ODgwNTZiZC4uNGZlY2UxYzVlNWMwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIGk5MTVfZ2VtX3J1bnRp bWVfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShvYmosIG9uLAogCQkJCSAmaTkxNS0+Z2d0dC51c2VyZmF1bHRfbGlzdCwg dXNlcmZhdWx0X2xpbmspCi0JCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChvYmopOwor CQlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KG9iaik7CiAKIAkvKgogCSAqIFRo ZSBmZW5jZSB3aWxsIGJlIGxvc3Qgd2hlbiB0aGUgZGV2aWNlIHBvd2VycyBkb3duLiBJZiBhbnkg d2VyZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKaW5kZXggZDczM2JjZjI2MmYwLi45OGQ0NTQ1YTMz MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgc3RhdGlj IHZvaWQgX19pOTE1X3ZtYV9pb3VubWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCiB2b2lkIGk5 MTVfdm1hX3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBkcm1f dm1hX29mZnNldF9ub2RlICpub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOworCXN0cnVj dCBkcm1fdm1hX29mZnNldF9ub2RlICpub2RlOwogCXU2NCB2bWFfb2Zmc2V0OwogCiAJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmdm1hLT52bS0+bXV0ZXgpOwpAQCAtMTA3MCwxMCArMTA3MCwxNSBAQCB2 b2lkIGk5MTVfdm1hX3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCUdFTV9CVUdf T04oIXZtYS0+b2JqLT51c2VyZmF1bHRfY291bnQpOwogCiAJdm1hX29mZnNldCA9IHZtYS0+Z2d0 dF92aWV3LnBhcnRpYWwub2Zmc2V0IDw8IFBBR0VfU0hJRlQ7Ci0JdW5tYXBfbWFwcGluZ19yYW5n ZSh2bWEtPnZtLT5pOTE1LT5kcm0uYW5vbl9pbm9kZS0+aV9tYXBwaW5nLAotCQkJICAgIGRybV92 bWFfbm9kZV9vZmZzZXRfYWRkcihub2RlKSArIHZtYV9vZmZzZXQsCi0JCQkgICAgdm1hLT5zaXpl LAotCQkJICAgIDEpOworCisJaWYgKHZtYS0+bW1vKSB7CisJCW5vZGUgPSAmdm1hLT5tbW8tPnZt YV9ub2RlOworCisJCXVubWFwX21hcHBpbmdfcmFuZ2Uodm1hLT52bS0+aTkxNS0+ZHJtLmFub25f aW5vZGUtPmlfbWFwcGluZywKKwkJCQkgICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKG5vZGUp ICsgdm1hX29mZnNldCwKKwkJCQkgICAgdm1hLT5zaXplLAorCQkJCSAgICAxKTsKKwl9CiAKIAlp OTE1X3ZtYV91bnNldF91c2VyZmF1bHQodm1hKTsKIAlpZiAoIS0tdm1hLT5vYmotPnVzZXJmYXVs dF9jb3VudCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCmluZGV4IDQ2NTkzMjgxM2JjNS4uZjA5ZjRm NTEzYzQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKQEAgLTYzLDYgKzYzLDkgQEAgc3RydWN0 IGk5MTVfdm1hIHsKIAl1NjQgZGlzcGxheV9hbGlnbm1lbnQ7CiAJc3RydWN0IGk5MTVfcGFnZV9z aXplcyBwYWdlX3NpemVzOwogCisJLyogbW1hcC1vZmZzZXQgYXNzb2NpYXRlZCB3aXRoIGZlbmNp bmcgZm9yIHRoaXMgdm1hICovCisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQJKm1tbzsKKwogCXUz MiBmZW5jZV9zaXplOwogCXUzMiBmZW5jZV9hbGlnbm1lbnQ7CiAKLS0gCjIuMjMuMAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4