From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [PATCH v3 1/5] drm/i915: Allow i915 to manage the vma offset nodes instead of drm core Date: Tue, 15 Oct 2019 11:37:20 +0300 Message-ID: <20191015083724.24390-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 mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9FB416E781 for ; Tue, 15 Oct 2019 08:37:40 +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 bmcKClNpZ25lZC1vZmYtYnk6IEFiZGllbCBKYW51bGd1ZSA8YWJkaWVsLmphbnVsZ3VlQGxpbnV4 LmludGVsLmNvbT4KQ2M6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KQ2M6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyAgICAgIHwgMjMyICsrKysrKysrKysrKysrKystLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jICAgIHwgIDEzICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaCAgICB8ICAgOSArLQogLi4u L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggIHwgIDE5ICsrCiAuLi4v ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMgICAgfCAgMTIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgICAgICAgICB8ICAgNyArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgIDEwICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgICAgIHwgIDE1ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5oICAgICAgICAgICAgICAgfCAgIDQgKwogMTIgZmlsZXMgY2hh bmdlZCwgMjc5IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwppbmRleCA5OTM3YjRjMzQxZjEuLjQwNzkyZDIw MTdhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFp bi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwpAQCAt MjU0LDcgKzI1NCw3IEBAIGludCBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQl9CiAKIAkJCWlmIChvYmotPnVzZXJmYXVs dF9jb3VudCkKLQkJCQlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAob2JqKTsKKwkJCQlf X2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KG9iaik7CiAKIAkJCS8qCiAJCQkgKiBB cyB3ZSBubyBsb25nZXIgbmVlZCBhIGZlbmNlIGZvciBHVFQgYWNjZXNzLApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKaW5kZXggZmQ0MTIyZDhjMGE5Li40ZmI0NmNiZjFi Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYwpAQCAtMjE5LDcg KzIxOSw4IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYp CiB7CiAjZGVmaW5lIE1JTl9DSFVOS19QQUdFUyAoU1pfMU0gPj4gUEFHRV9TSElGVCkKIAlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmFyZWEgPSB2bWYtPnZtYTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gdG9faW50ZWxfYm8oYXJlYS0+dm1fcHJpdmF0ZV9kYXRhKTsKKwlzdHJ1 Y3QgaTkxNV9tbWFwX29mZnNldCAqcHJpdiA9IGFyZWEtPnZtX3ByaXZhdGVfZGF0YTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gcHJpdi0+b2JqOwogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+ cnVudGltZV9wbTsKQEAgLTMxMiw2ICszMTMsOSBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0 KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCQlsaXN0X2FkZCgmb2JqLT51c2VyZmF1bHRfbGluaywg Jmk5MTUtPmdndHQudXNlcmZhdWx0X2xpc3QpOwogCW11dGV4X3VubG9jaygmaTkxNS0+Z2d0dC52 bS5tdXRleCk7CiAKKwkvKiBUcmFjayB0aGUgbW1vIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmVuY2Vk IHZtYSAqLworCXZtYS0+bW1vID0gcHJpdjsKKwogCWlmIChDT05GSUdfRFJNX0k5MTVfVVNFUkZB VUxUX0FVVE9TVVNQRU5EKQogCQlpbnRlbF93YWtlcmVmX2F1dG8oJmk5MTUtPmdndHQudXNlcmZh dWx0X3dha2VyZWYsCiAJCQkJICAgbXNlY3NfdG9famlmZmllc190aW1lb3V0KENPTkZJR19EUk1f STkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQpKTsKQEAgLTM1OCwyOCArMzYyLDI5IEBAIHZtX2Zh dWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJfQogfQogCi12b2lk IF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJc3Ry dWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbzsKIAogCUdFTV9CVUdfT04oIW9iai0+dXNlcmZhdWx0 X2NvdW50KTsKIAogCW9iai0+dXNlcmZhdWx0X2NvdW50ID0gMDsKIAlsaXN0X2RlbCgmb2JqLT51 c2VyZmF1bHRfbGluayk7Ci0JZHJtX3ZtYV9ub2RlX3VubWFwKCZvYmotPmJhc2Uudm1hX25vZGUs Ci0JCQkgICBvYmotPmJhc2UuZGV2LT5hbm9uX2lub2RlLT5pX21hcHBpbmcpOworCisJbXV0ZXhf bG9jaygmb2JqLT5tbW9fbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShtbW8sICZvYmotPm1t YXBfb2Zmc2V0cywgb2Zmc2V0KSB7CisJCWlmIChtbW8tPm1tYXBfdHlwZSA9PSBJOTE1X01NQVBf VFlQRV9HVFQpCisJCQlkcm1fdm1hX25vZGVfdW5tYXAoJm1tby0+dm1hX25vZGUsCisJCQkJCSAg IG9iai0+YmFzZS5kZXYtPmFub25faW5vZGUtPmlfbWFwcGluZyk7CisJfQorCW11dGV4X3VubG9j aygmb2JqLT5tbW9fbG9jayk7CiAKIAlmb3JfZWFjaF9nZ3R0X3ZtYSh2bWEsIG9iaikKIAkJaTkx NV92bWFfdW5zZXRfdXNlcmZhdWx0KHZtYSk7CiB9CiAKIC8qKgotICogaTkxNV9nZW1fb2JqZWN0 X3JlbGVhc2VfbW1hcCAtIHJlbW92ZSBwaHlzaWNhbCBwYWdlIG1hcHBpbmdzCi0gKiBAb2JqOiBv YmogaW4gcXVlc3Rpb24KLSAqCi0gKiBQcmVzZXJ2ZSB0aGUgcmVzZXJ2YXRpb24gb2YgdGhlIG1t YXBwaW5nIHdpdGggdGhlIERSTSBjb3JlIGNvZGUsIGJ1dAotICogcmVsaW5xdWlzaCBvd25lcnNo aXAgb2YgdGhlIHBhZ2VzIGJhY2sgdG8gdGhlIHN5c3RlbS4KLSAqCiAgKiBJdCBpcyB2aXRhbCB0 aGF0IHdlIHJlbW92ZSB0aGUgcGFnZSBtYXBwaW5nIGlmIHdlIGhhdmUgbWFwcGVkIGEgdGlsZWQK ICAqIG9iamVjdCB0aHJvdWdoIHRoZSBHVFQgYW5kIHRoZW4gbG9zZSB0aGUgZmVuY2UgcmVnaXN0 ZXIgZHVlIHRvCiAgKiByZXNvdXJjZSBwcmVzc3VyZS4gU2ltaWxhcmx5IGlmIHRoZSBvYmplY3Qg aGFzIGJlZW4gbW92ZWQgb3V0IG9mIHRoZQpAQCAtMzg3LDcgKzM5Miw3IEBAIHZvaWQgX19pOTE1 X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiAgKiBtYXBwaW5nIHdpbGwgdGhlbiB0cmlnZ2VyIGEgcGFnZSBmYXVsdCBvbiB0aGUgbmV4dCB1 c2VyIGFjY2VzcywgYWxsb3dpbmcKICAqIGZpeHVwIGJ5IGk5MTVfZ2VtX2ZhdWx0KCkuCiAgKi8K LXZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQorc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9ndHQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CiAJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7CkBAIC00MDYsNyArNDExLDcgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9t bWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaWYgKCFvYmotPnVzZXJmYXVs dF9jb3VudCkKIAkJZ290byBvdXQ7CiAKLQlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAo b2JqKTsKKwlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KG9iaik7CiAKIAkvKiBF bnN1cmUgdGhhdCB0aGUgQ1BVJ3MgUFRFIGFyZSByZXZva2VkIGFuZCB0aGVyZSBhcmUgbm90IG91 dHN0YW5kaW5nCiAJICogbWVtb3J5IHRyYW5zYWN0aW9ucyBmcm9tIHVzZXJzcGFjZSBiZWZvcmUg d2UgcmV0dXJuLiBUaGUgVExCCkBAIC00MjIsMTUgKzQyNyw2MyBAQCB2b2lkIGk5MTVfZ2VtX29i amVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlpbnRl bF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7CiB9CiAKLXN0YXRp YyBpbnQgY3JlYXRlX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CitzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX29mZnNldChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICpt bW87CisKKwltdXRleF9sb2NrKCZvYmotPm1tb19sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 KG1tbywgJm9iai0+bW1hcF9vZmZzZXRzLCBvZmZzZXQpIHsKKwkJLyogdm1hX25vZGVfdW5tYXAg Zm9yIEdUVCBtbWFwcyBoYW5kbGVkIGFscmVhZHkgaW4KKwkJICogX19pOTE1X2dlbV9vYmplY3Rf cmVsZWFzZV9tbWFwX2d0dAorCQkgKi8KKwkJaWYgKG1tby0+bW1hcF90eXBlICE9IEk5MTVfTU1B UF9UWVBFX0dUVCkKKwkJCWRybV92bWFfbm9kZV91bm1hcCgmbW1vLT52bWFfbm9kZSwKKwkJCQkJ ICAgb2JqLT5iYXNlLmRldi0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nKTsKKwl9CisJbXV0ZXhfdW5s b2NrKCZvYmotPm1tb19sb2NrKTsKK30KKworLyoqCisgKiBpOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9tbWFwIC0gcmVtb3ZlIHBoeXNpY2FsIHBhZ2UgbWFwcGluZ3MKKyAqIEBvYmo6IG9iaiBpbiBx dWVzdGlvbgorICoKKyAqIFByZXNlcnZlIHRoZSByZXNlcnZhdGlvbiBvZiB0aGUgbW1hcHBpbmcg d2l0aCB0aGUgRFJNIGNvcmUgY29kZSwgYnV0CisgKiByZWxpbnF1aXNoIG93bmVyc2hpcCBvZiB0 aGUgcGFnZXMgYmFjayB0byB0aGUgc3lzdGVtLgorICovCit2b2lkIGk5MTVfZ2VtX29iamVjdF9y ZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpOTE1X2dl bV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0dChvYmopOworCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNl X21tYXBfb2Zmc2V0KG9iaik7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfbW1hcF9vZmZzZXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCSAgICAgc3RydWN0IGk5MTVfbW1hcF9v ZmZzZXQgKm1tbykKK3sKKwltdXRleF9sb2NrKCZvYmotPm1tb19sb2NrKTsKKwlsaXN0X2FkZCgm bW1vLT5vZmZzZXQsICZvYmotPm1tYXBfb2Zmc2V0cyk7CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1t b19sb2NrKTsKKworCW1tby0+b2JqID0gb2JqOworCW1tby0+ZGV2ID0gb2JqLT5iYXNlLmRldjsK K30KKworc3RhdGljIGludCBjcmVhdGVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKKwkJCSAgICAgIHN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8pCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwog CXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+Z3Q7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IG9iai0+YmFzZS5kZXY7CiAJaW50IGVycjsKIAotCWVyciA9IGRybV9nZW1fY3JlYXRlX21t YXBfb2Zmc2V0KCZvYmotPmJhc2UpOwotCWlmIChsaWtlbHkoIWVycikpCisJZHJtX3ZtYV9ub2Rl X3Jlc2V0KCZtbW8tPnZtYV9ub2RlKTsKKwlpZiAobW1vLT5maWxlKQorCQlkcm1fdm1hX25vZGVf YWxsb3coJm1tby0+dm1hX25vZGUsIG1tby0+ZmlsZSk7CisJZXJyID0gZHJtX3ZtYV9vZmZzZXRf YWRkKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyLCAmbW1vLT52bWFfbm9kZSwKKwkJCQkgb2JqLT5i YXNlLnNpemUgLyBQQUdFX1NJWkUpOworCWlmIChsaWtlbHkoIWVycikpIHsKKwkJaW5pdF9tbWFw X29mZnNldChvYmosIG1tbyk7CiAJCXJldHVybiAwOworCX0KIAogCS8qIEF0dGVtcHQgdG8gcmVh cCBzb21lIG1tYXAgc3BhY2UgZnJvbSBkZWFkIG9iamVjdHMgKi8KIAllcnIgPSBpbnRlbF9ndF9y ZXRpcmVfcmVxdWVzdHNfdGltZW91dChndCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwpAQCAtNDM4 LDE2ICs0OTEsMjMgQEAgc3RhdGljIGludCBjcmVhdGVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIAkJcmV0dXJuIGVycjsKIAogCWk5MTVfZ2VtX2RyYWluX2Zy ZWVkX29iamVjdHMoaTkxNSk7Ci0JcmV0dXJuIGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0KCZv YmotPmJhc2UpOworCWVyciA9IGRybV92bWFfb2Zmc2V0X2FkZChkZXYtPnZtYV9vZmZzZXRfbWFu YWdlciwgJm1tby0+dm1hX25vZGUsCisJCQkJIG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFKTsK KwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaW5pdF9tbWFwX29mZnNldChvYmosIG1tbyk7 CisJcmV0dXJuIDA7CiB9CiAKLWludAotaTkxNV9nZW1fbW1hcF9ndHQoc3RydWN0IGRybV9maWxl ICpmaWxlLAotCQkgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCSAgdTMyIGhhbmRsZSwKLQkJ ICB1NjQgKm9mZnNldCkKK3N0YXRpYyBpbnQKK19fYXNzaWduX2dlbV9vYmplY3RfbW1hcF9kYXRh KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKKwkJCSAgICAgIHUzMiBoYW5kbGUsCisJCQkgICAgICBl bnVtIGk5MTVfbW1hcF90eXBlIG1tYXBfdHlwZSwKKwkJCSAgICAgIHU2NCAqb2Zmc2V0KQogewog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZz ZXQgKm1tbzsKIAlpbnQgcmV0OwogCiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxl LCBoYW5kbGUpOwpAQCAtNDU5LDEwICs1MTksMjEgQEAgaTkxNV9nZW1fbW1hcF9ndHQoc3RydWN0 IGRybV9maWxlICpmaWxlLAogCQlnb3RvIG91dDsKIAl9CiAKLQlyZXQgPSBjcmVhdGVfbW1hcF9v ZmZzZXQob2JqKTsKLQlpZiAocmV0ID09IDApCi0JCSpvZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zm c2V0X2FkZHIoJm9iai0+YmFzZS52bWFfbm9kZSk7CisJbW1vID0ga3phbGxvYyhzaXplb2YoKm1t byksIEdGUF9LRVJORUwpOworCWlmICghbW1vKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8g b3V0OworCX0KKworCW1tby0+ZmlsZSA9IGZpbGU7CisJcmV0ID0gY3JlYXRlX21tYXBfb2Zmc2V0 KG9iaiwgbW1vKTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKG1tbyk7CisJCWdvdG8gb3V0OworCX0K IAorCW1tby0+bW1hcF90eXBlID0gbW1hcF90eXBlOworCSpvZmZzZXQgPSBkcm1fdm1hX25vZGVf b2Zmc2V0X2FkZHIoJm1tby0+dm1hX25vZGUpOwogb3V0OgogCWk5MTVfZ2VtX29iamVjdF9wdXQo b2JqKTsKIAlyZXR1cm4gcmV0OwpAQCAtNDg5LDcgKzU2MCwxMTggQEAgaTkxNV9nZW1fbW1hcF9n dHRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX21tYXBfZ3R0ICphcmdzID0gZGF0YTsKIAotCXJldHVybiBpOTE1X2dlbV9t bWFwX2d0dChmaWxlLCBkZXYsIGFyZ3MtPmhhbmRsZSwgJmFyZ3MtPm9mZnNldCk7CisJcmV0dXJu IF9fYXNzaWduX2dlbV9vYmplY3RfbW1hcF9kYXRhKGZpbGUsIGFyZ3MtPmhhbmRsZSwKKwkJCQkJ ICAgICBJOTE1X01NQVBfVFlQRV9HVFQsCisJCQkJCSAgICAgJmFyZ3MtPm9mZnNldCk7Cit9CisK K3ZvaWQgaTkxNV9tbWFwX29mZnNldF9kZXN0cm95KHN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICpt bW8sIHN0cnVjdCBtdXRleCAqbXV0ZXgpCit7CisJaWYgKG1tby0+ZmlsZSkKKwkJZHJtX3ZtYV9u b2RlX3Jldm9rZSgmbW1vLT52bWFfbm9kZSwgbW1vLT5maWxlKTsKKwlkcm1fdm1hX29mZnNldF9y ZW1vdmUobW1vLT5kZXYtPnZtYV9vZmZzZXRfbWFuYWdlciwgJm1tby0+dm1hX25vZGUpOworCisJ bXV0ZXhfbG9jayhtdXRleCk7CisJbGlzdF9kZWwoJm1tby0+b2Zmc2V0KTsKKwltdXRleF91bmxv Y2sobXV0ZXgpOworCisJa2ZyZWUobW1vKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1fdm1f b3BlbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3QgaTkxNV9tbWFwX29m ZnNldCAqbW1vID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IG1tby0+b2JqOworCisJR0VNX0JVR19PTighb2JqKTsKKwlpOTE1X2dlbV9v YmplY3RfZ2V0KG9iaik7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3ZtX2Nsb3NlKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8g PSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0gbW1vLT5vYmo7CisKKwlHRU1fQlVHX09OKCFvYmopOworCWk5MTVfZ2VtX29iamVjdF9wdXQo b2JqKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBpOTE1 X2dlbV9ndHRfdm1fb3BzID0geworCS5mYXVsdCA9IGk5MTVfZ2VtX2ZhdWx0LAorCS5vcGVuID0g aTkxNV9nZW1fdm1fb3BlbiwKKwkuY2xvc2UgPSBpOTE1X2dlbV92bV9jbG9zZSwKK307CisKKy8q IFRoaXMgb3ZlcmNvbWVzIHRoZSBsaW1pdGF0aW9uIGluIGRybV9nZW1fbW1hcCdzIGFzc2lnbm1l bnQgb2YgYQorICogZHJtX2dlbV9vYmplY3QgYXMgdGhlIHZtYS0+dm1fcHJpdmF0ZV9kYXRhLiBT aW5jZSB3ZSBuZWVkIHRvCisgKiBiZSBhYmxlIHRvIHJlc29sdmUgbXVsdGlwbGUgbW1hcCBvZmZz ZXRzIHdoaWNoIGNvdWxkIGJlIHRpZWQKKyAqIHRvIGEgc2luZ2xlIGdlbSBvYmplY3QuCisgKi8K K2ludCBpOTE1X2dlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSkKK3sKKwlzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZTsKKwlzdHJ1Y3Qg ZHJtX2ZpbGUgKnByaXYgPSBmaWxwLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IHByaXYtPm1pbm9yLT5kZXY7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbyA9 IE5VTEw7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBOVUxMOworCisJaWYgKGRybV9k ZXZfaXNfdW5wbHVnZ2VkKGRldikpCisJCXJldHVybiAtRU5PREVWOworCisJZHJtX3ZtYV9vZmZz ZXRfbG9ja19sb29rdXAoZGV2LT52bWFfb2Zmc2V0X21hbmFnZXIpOworCW5vZGUgPSBkcm1fdm1h X29mZnNldF9leGFjdF9sb29rdXBfbG9ja2VkKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyLAorCQkJ CQkJICB2bWEtPnZtX3Bnb2ZmLAorCQkJCQkJICB2bWFfcGFnZXModm1hKSk7CisJaWYgKGxpa2Vs eShub2RlKSkgeworCQltbW8gPSBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IGk5MTVfbW1hcF9v ZmZzZXQsCisJCQkJICAgdm1hX25vZGUpOworCQkvKgorCQkgKiBJbiBvdXIgZGVwZW5kZW5jeSBj aGFpbiwgdGhlIGRybV92bWFfb2Zmc2V0X25vZGUKKwkJICogZGVwZW5kcyBvbiB0aGUgdmFsaWRp dHkgb2YgdGhlIG1tbywgd2hpY2ggZGVwZW5kcyBvbgorCQkgKiB0aGUgZ2VtIG9iamVjdC4gSG93 ZXZlciB0aGUgb25seSByZWZlcmVuY2Ugd2UgaGF2ZQorCQkgKiBhdCB0aGlzIHBvaW50IGlzIHRo ZSBtbW8gKGFzIHRoZSBwYXJlbnQgb2YgdGhlIG5vZGUpLgorCQkgKiBUcnkgdG8gY2hlY2sgaWYg dGhlIGdlbSBvYmplY3Qgd2FzIGF0IGxlYXN0IGNsZWFyZWQuCisJCSAqLworCQlpZiAoIW1tbyB8 fCAhbW1vLT5vYmopIHsKKwkJCWRybV92bWFfb2Zmc2V0X3VubG9ja19sb29rdXAoZGV2LT52bWFf b2Zmc2V0X21hbmFnZXIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJLyoKKwkJICogU2tp cCAwLXJlZmNudGVkIG9iamVjdHMgYXMgaXQgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcKKwkJ ICogZGVzdHJveWVkIGFuZCB3aWxsIGJlIGludmFsaWQgd2hlbiB0aGUgdm1hIG1hbmFnZXIgbG9j aworCQkgKiBpcyByZWxlYXNlZC4KKwkJICovCisJCW9iaiA9ICZtbW8tPm9iai0+YmFzZTsKKwkJ aWYgKCFrcmVmX2dldF91bmxlc3NfemVybygmb2JqLT5yZWZjb3VudCkpCisJCQlvYmogPSBOVUxM OworCisJfQorCWRybV92bWFfb2Zmc2V0X3VubG9ja19sb29rdXAoZGV2LT52bWFfb2Zmc2V0X21h bmFnZXIpOworCisJaWYgKCFvYmopCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFkcm1fdm1h X25vZGVfaXNfYWxsb3dlZChub2RlLCBwcml2KSkgeworCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5s b2NrZWQob2JqKTsKKwkJcmV0dXJuIC1FQUNDRVM7CisJfQorCisJaWYgKHRvX2ludGVsX2JvKG9i aiktPnJlYWRvbmx5KSB7CisJCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpIHsKKwkJCWRy bV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0K KwkJdm1hLT52bV9mbGFncyAmPSB+Vk1fTUFZV1JJVEU7CisJfQorCisJdm1hLT52bV9mbGFncyB8 PSBWTV9QRk5NQVAgfCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVA7CisJdm1hLT52bV9wYWdl X3Byb3QgPSBwZ3Byb3Rfd3JpdGVjb21iaW5lKHZtX2dldF9wYWdlX3Byb3Qodm1hLT52bV9mbGFn cykpOworCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X2RlY3J5cHRlZCh2bWEtPnZtX3BhZ2Vf cHJvdCk7CisJdm1hLT52bV9wcml2YXRlX2RhdGEgPSBtbW87CisKKwl2bWEtPnZtX29wcyA9ICZp OTE1X2dlbV9ndHRfdm1fb3BzOworCisJcmV0dXJuIDA7CiB9CiAKICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9vYmplY3QuYwppbmRleCBkYmY5YmU5YTc5ZjQuLjhhYmNkNTIwMjM3NCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYwpAQCAtNTgsNiArNTgsOSBAQCB2b2lk IGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAK IAlJTklUX0xJU1RfSEVBRCgmb2JqLT5sdXRfbGlzdCk7CiAKKwltdXRleF9pbml0KCZvYmotPm1t b19sb2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmb2JqLT5tbWFwX29mZnNldHMpOworCiAJaW5pdF9y Y3VfaGVhZCgmb2JqLT5yY3UpOwogCiAJb2JqLT5vcHMgPSBvcHM7CkBAIC0xNTUsNiArMTU4LDgg QEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiAKIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1 bnRpbWVfcG0pOwogCWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2JqLCBvbiwgZnJlZWQsIGZy ZWVkKSB7CisJCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8sICptbjsKKwogCQl0cmFjZV9p OTE1X2dlbV9vYmplY3RfZGVzdHJveShvYmopOwogCiAJCWlmICghbGlzdF9lbXB0eSgmb2JqLT52 bWEubGlzdCkpIHsKQEAgLTE4MCw2ICsxODUsMTQgQEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9m cmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQlzcGluX3VubG9j aygmb2JqLT52bWEubG9jayk7CiAJCX0KIAorCQlpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFw KG9iaik7CisKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1tbywgbW4sICZvYmotPm1tYXBf b2Zmc2V0cywgb2Zmc2V0KSB7CisJCQltbW8tPm9iaiA9IE5VTEw7CisJCQlpOTE1X21tYXBfb2Zm c2V0X2Rlc3Ryb3kobW1vLCAmb2JqLT5tbW9fbG9jayk7CisJCX0KKworCQlHRU1fQlVHX09OKCFs aXN0X2VtcHR5KCZvYmotPm1tYXBfb2Zmc2V0cykpOwogCQlHRU1fQlVHX09OKGF0b21pY19yZWFk KCZvYmotPmJpbmRfY291bnQpKTsKIAkJR0VNX0JVR19PTihvYmotPnVzZXJmYXVsdF9jb3VudCk7 CiAJCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJm9iai0+bHV0X2xpc3QpKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaAppbmRleCBjNWUxNGM5YzgwNWMuLmY4ZWRm MDhjMTlhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaApA QCAtMTMwLDEzICsxMzAsMTMgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5sb2NrX2ZlbmNlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiBzdGF0aWMgaW5saW5lIHZvaWQKIGk5MTVf Z2VtX29iamVjdF9zZXRfcmVhZG9ubHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IHsKLQlvYmotPmJhc2Uudm1hX25vZGUucmVhZG9ubHkgPSB0cnVlOworCW9iai0+cmVhZG9ubHkg PSB0cnVlOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wKIGk5MTVfZ2VtX29iamVjdF9pc19yZWFk b25seShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCXJldHVybiBv YmotPmJhc2Uudm1hX25vZGUucmVhZG9ubHk7CisJcmV0dXJuIG9iai0+cmVhZG9ubHk7CiB9CiAK IHN0YXRpYyBpbmxpbmUgYm9vbApAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CiB9CiAKLXZvaWQgX19pOTE1 X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Owordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopOwogdm9pZCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogCiB2b2lkCkBAIC00NjAsNiArNDYwLDkg QEAgaW50IGk5MTVfZ2VtX29iamVjdF93YWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCiBpbnQgaTkxNV9nZW1fb2JqZWN0X3dhaXRfcHJpb3JpdHkoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKIAkJCQkgIHVuc2lnbmVkIGludCBmbGFncywKIAkJCQkgIGNvbnN0IHN0 cnVjdCBpOTE1X3NjaGVkX2F0dHIgKmF0dHIpOworCit2b2lkIGk5MTVfbW1hcF9vZmZzZXRfZGVz dHJveShzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KTsK KwogI2RlZmluZSBJOTE1X1BSSU9SSVRZX0RJU1BMQVkgSTkxNV9VU0VSX1BSSU9SSVRZKEk5MTVf UFJJT1JJVFlfTUFYKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9vYmplY3RfdHlwZXMuaAppbmRleCBhMzg3ZTNlZTcyOGIuLmM1YzMwNWJkOTkyNyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBl cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMu aApAQCAtNjIsNiArNjIsMjAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIHsKIAl2 b2lkICgqcmVsZWFzZSkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiB9OwogCitl bnVtIGk5MTVfbW1hcF90eXBlIHsKKwlJOTE1X01NQVBfVFlQRV9HVFQgPSAwLAorfTsKKworc3Ry dWN0IGk5MTVfbW1hcF9vZmZzZXQgeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CisJc3RydWN0 IGRybV92bWFfb2Zmc2V0X25vZGUgdm1hX25vZGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iajsKKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7CisJZW51bSBpOTE1X21tYXBfdHlwZSBt bWFwX3R5cGU7CisKKwlzdHJ1Y3QgbGlzdF9oZWFkIG9mZnNldDsKK307CisKIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgYmFzZTsKIApAQCAtMTE3 LDYgKzEzMSwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJdW5zaWduZWQgaW50 IHVzZXJmYXVsdF9jb3VudDsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHVzZXJmYXVsdF9saW5rOwogCisJ LyogUHJvdGVjdHMgYWNjZXNzIHRvIG1tYXAgb2Zmc2V0cyAqLworCXN0cnVjdCBtdXRleCBtbW9f bG9jazsKKwlzdHJ1Y3QgbGlzdF9oZWFkIG1tYXBfb2Zmc2V0czsKKwlib29sIHJlYWRvbmx5OjE7 CisKIAlJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3RydWN0IGxpc3RfaGVhZCBzdF9saW5rKTsKIAog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9z ZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCmluZGV4IGNmYTUyYzUyNTY5MS4uMjNjMjM2M2RiYjJk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2Vt X21tYW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2Vt X21tYW4uYwpAQCAtNTU3LDE1ICs1NTcsMjAgQEAgc3RhdGljIGJvb2wgYXNzZXJ0X21tYXBfb2Zm c2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJICAgICAgIGludCBleHBlY3Rl ZCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCS8qIE93bmVyc2hpcCB0 cmFuc2ZlcnJlZCB0byBwYXJlbnQgZ2VtIG9iamVjdCBpbiBjcmVhdGVfbW1hcF9vZmZzZXQgKi8K KwlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vID0ga3phbGxvYyhzaXplb2YoKm1tbyksIEdG UF9LRVJORUwpOwogCWludCBlcnI7CiAKIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2lu dGVybmFsKGk5MTUsIHNpemUpOwogCWlmIChJU19FUlIob2JqKSkKIAkJcmV0dXJuIFBUUl9FUlIo b2JqKTsKIAotCWVyciA9IGNyZWF0ZV9tbWFwX29mZnNldChvYmopOworCWVyciA9IGNyZWF0ZV9t bWFwX29mZnNldChvYmosIG1tbyk7CisJaWYgKGVycikKKwkJa2ZyZWUobW1vKTsKIAlpOTE1X2dl bV9vYmplY3RfcHV0KG9iaik7CiAKKwogCXJldHVybiBlcnIgPT0gZXhwZWN0ZWQ7CiB9CiAKQEAg LTYwMSw2ICs2MDYsOCBAQCBzdGF0aWMgaW50IGlndF9tbWFwX29mZnNldF9leGhhdXN0aW9uKHZv aWQgKmFyZykKIAlzdHJ1Y3QgZHJtX21tICptbSA9ICZpOTE1LT5kcm0udm1hX29mZnNldF9tYW5h Z2VyLT52bV9hZGRyX3NwYWNlX21tOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 CiAJc3RydWN0IGRybV9tbV9ub2RlIHJlc3YsICpob2xlOworCS8qIE93bmVyc2hpcCB0cmFuc2Zl cnJlZCB0byBwYXJlbnQgZ2VtIG9iamVjdCBpbiBjcmVhdGVfbW1hcF9vZmZzZXQgKi8KKwlzdHJ1 Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vID0ga3phbGxvYyhzaXplb2YoKm1tbyksIEdGUF9LRVJO RUwpOwogCXU2NCBob2xlX3N0YXJ0LCBob2xlX2VuZDsKIAlpbnQgbG9vcCwgZXJyOwogCkBAIC02 NDQsOSArNjUxLDEwIEBAIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9p ZCAqYXJnKQogCQlnb3RvIG91dDsKIAl9CiAKLQllcnIgPSBjcmVhdGVfbW1hcF9vZmZzZXQob2Jq KTsKKwllcnIgPSBjcmVhdGVfbW1hcF9vZmZzZXQob2JqLCBtbW8pOwogCWlmIChlcnIpIHsKIAkJ cHJfZXJyKCJVbmFibGUgdG8gaW5zZXJ0IG9iamVjdCBpbnRvIHJlY2xhaW1lZCBob2xlXG4iKTsK KwkJa2ZyZWUobW1vKTsKIAkJZ290byBlcnJfb2JqOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3Jlc2V0LmMKaW5kZXggNzc0NDVkMTAwY2E4Li4yMDU3MjFhOWE0NjAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwpAQCAtNjY3LDggKzY2NywxMyBAQCBzdGF0aWMg dm9pZCByZXZva2VfbW1hcHMoc3RydWN0IGludGVsX2d0ICpndCkKIAkJCWNvbnRpbnVlOwogCiAJ CUdFTV9CVUdfT04odm1hLT5mZW5jZSAhPSAmZ3QtPmdndHQtPmZlbmNlX3JlZ3NbaV0pOwotCQlu b2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOworCisJCWlmICghdm1hLT5tbW8pCisJCQlj b250aW51ZTsKKworCQlub2RlID0gJnZtYS0+bW1vLT52bWFfbm9kZTsKIAkJdm1hX29mZnNldCA9 IHZtYS0+Z2d0dF92aWV3LnBhcnRpYWwub2Zmc2V0IDw8IFBBR0VfU0hJRlQ7CisKIAkJdW5tYXBf bWFwcGluZ19yYW5nZShndC0+aTkxNS0+ZHJtLmFub25faW5vZGUtPmlfbWFwcGluZywKIAkJCQkg ICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKG5vZGUpICsgdm1hX29mZnNldCwKIAkJCQkgICAg dm1hLT5zaXplLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggZjAyYTM0NzIyMjE3Li5kY2Yy Mjk4MWZkZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMjY0NiwxOCArMjY0NiwxMiBA QCBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBpOTE1X3BtX29wcyA9IHsKIAkucnVudGltZV9yZXN1 bWUgPSBpbnRlbF9ydW50aW1lX3Jlc3VtZSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1f b3BlcmF0aW9uc19zdHJ1Y3QgaTkxNV9nZW1fdm1fb3BzID0gewotCS5mYXVsdCA9IGk5MTVfZ2Vt X2ZhdWx0LAotCS5vcGVuID0gZHJtX2dlbV92bV9vcGVuLAotCS5jbG9zZSA9IGRybV9nZW1fdm1f Y2xvc2UsCi19OwotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2Ry aXZlcl9mb3BzID0gewogCS5vd25lciA9IFRISVNfTU9EVUxFLAogCS5vcGVuID0gZHJtX29wZW4s CiAJLnJlbGVhc2UgPSBkcm1fcmVsZWFzZSwKIAkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGws Ci0JLm1tYXAgPSBkcm1fZ2VtX21tYXAsCisJLm1tYXAgPSBpOTE1X2dlbV9tbWFwLAogCS5wb2xs ID0gZHJtX3BvbGwsCiAJLnJlYWQgPSBkcm1fcmVhZCwKIAkuY29tcGF0X2lvY3RsID0gaTkxNV9j b21wYXRfaW9jdGwsCkBAIC0yNzQ2LDcgKzI3NDAsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2 ZXIgZHJpdmVyID0gewogCiAJLmdlbV9jbG9zZV9vYmplY3QgPSBpOTE1X2dlbV9jbG9zZV9vYmpl Y3QsCiAJLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGk5MTVfZ2VtX2ZyZWVfb2JqZWN0LAot CS5nZW1fdm1fb3BzID0gJmk5MTVfZ2VtX3ZtX29wcywKIAogCS5wcmltZV9oYW5kbGVfdG9fZmQg PSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZCwKIAkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJt X2dlbV9wcmltZV9mZF90b19oYW5kbGUsCkBAIC0yNzU3LDcgKzI3NTAsNiBAQCBzdGF0aWMgc3Ry dWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewogCS5nZXRfc2Nhbm91dF9wb3NpdGlvbiA9IGk5MTVf Z2V0X2NydGNfc2Nhbm91dHBvcywKIAogCS5kdW1iX2NyZWF0ZSA9IGk5MTVfZ2VtX2R1bWJfY3Jl YXRlLAotCS5kdW1iX21hcF9vZmZzZXQgPSBpOTE1X2dlbV9tbWFwX2d0dCwKIAkuaW9jdGxzID0g aTkxNV9pb2N0bHMsCiAJLm51bV9pb2N0bHMgPSBBUlJBWV9TSVpFKGk5MTVfaW9jdGxzKSwKIAku Zm9wcyA9ICZpOTE1X2RyaXZlcl9mb3BzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggYzQ2 YjMzOTA2NGMwLi4yYjA2Yzk1N2U2MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTkz MSw4ICsxOTMxLDYgQEAgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIGludCBpOTE1X2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdiwKIAkJCSBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJIHN0cnVjdCBkcm1fbW9k ZV9jcmVhdGVfZHVtYiAqYXJncyk7Ci1pbnQgaTkxNV9nZW1fbW1hcF9ndHQoc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCSAgICAgIHUzMiBoYW5k bGUsIHU2NCAqb2Zmc2V0KTsKIGludCBpOTE1X2dlbV9tbWFwX2d0dF92ZXJzaW9uKHZvaWQpOwog CiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKQEAgLTE5NTcsNiArMTk1NSw3IEBAIHZvaWQgaTkxNV9n ZW1fZHJpdmVyX3JlbGVhc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZv aWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog dm9pZCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKIHZvaWQgaTkxNV9nZW1fcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CitpbnQgaTkxNV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEpOwogdm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1 bHQgKnZtZik7CiAKIGludCBpOTE1X2dlbV9vcGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXgg MGRkYmQzYTVmYjhkLi5lNjBmZmFlNGIxMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAt ODUzLDcgKzg1Myw3IEBAIHZvaWQgaTkxNV9nZW1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwgb24s CiAJCQkJICZpOTE1LT5nZ3R0LnVzZXJmYXVsdF9saXN0LCB1c2VyZmF1bHRfbGluaykKLQkJX19p OTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKG9iaik7CisJCV9faTkxNV9nZW1fb2JqZWN0X3Jl bGVhc2VfbW1hcF9ndHQob2JqKTsKIAogCS8qCiAJICogVGhlIGZlbmNlIHdpbGwgYmUgbG9zdCB3 aGVuIHRoZSBkZXZpY2UgcG93ZXJzIGRvd24uIElmIGFueSB3ZXJlCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 bWEuYwppbmRleCA5ZmRjZDRlMmM3OTkuLmE5ZTJmMDMzZjA1YiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3ZtYS5jCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfdm1hX2lvdW5t YXAoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAKIHZvaWQgaTkxNV92bWFfcmV2b2tlX21tYXAoc3Ry dWN0IGk5MTVfdm1hICp2bWEpCiB7Ci0Jc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5vZGUg PSAmdm1hLT5vYmotPmJhc2Uudm1hX25vZGU7CisJc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUg Km5vZGU7CiAJdTY0IHZtYV9vZmZzZXQ7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZt LT5tdXRleCk7CkBAIC0xMDcwLDEwICsxMDcwLDE1IEBAIHZvaWQgaTkxNV92bWFfcmV2b2tlX21t YXAoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJR0VNX0JVR19PTighdm1hLT5vYmotPnVzZXJmYXVs dF9jb3VudCk7CiAKIAl2bWFfb2Zmc2V0ID0gdm1hLT5nZ3R0X3ZpZXcucGFydGlhbC5vZmZzZXQg PDwgUEFHRV9TSElGVDsKLQl1bm1hcF9tYXBwaW5nX3JhbmdlKHZtYS0+dm0tPmk5MTUtPmRybS5h bm9uX2lub2RlLT5pX21hcHBpbmcsCi0JCQkgICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKG5v ZGUpICsgdm1hX29mZnNldCwKLQkJCSAgICB2bWEtPnNpemUsCi0JCQkgICAgMSk7CisKKwlpZiAo dm1hLT5tbW8pIHsKKwkJbm9kZSA9ICZ2bWEtPm1tby0+dm1hX25vZGU7CisKKwkJdW5tYXBfbWFw cGluZ19yYW5nZSh2bWEtPnZtLT5pOTE1LT5kcm0uYW5vbl9pbm9kZS0+aV9tYXBwaW5nLAorCQkJ CSAgICBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIobm9kZSkgKyB2bWFfb2Zmc2V0LAorCQkJCSAg ICB2bWEtPnNpemUsCisJCQkJICAgIDEpOworCX0KIAogCWk5MTVfdm1hX3Vuc2V0X3VzZXJmYXVs dCh2bWEpOwogCWlmICghLS12bWEtPm9iai0+dXNlcmZhdWx0X2NvdW50KQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdm1hLmgKaW5kZXggODU4OTA4ZTNkMWNjLi4zNGFmZDFhNTllYTUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV92bWEuaApAQCAtNjMsNiArNjMsMTAgQEAgc3RydWN0IGk5MTVfdm1hIHsKIAl1NjQgZGlz cGxheV9hbGlnbm1lbnQ7CiAJc3RydWN0IGk5MTVfcGFnZV9zaXplcyBwYWdlX3NpemVzOwogCisJ LyogbW1hcC1vZmZzZXQgYXNzb2NpYXRlZCB3aXRoIGZlbmNpbmcgZm9yIHRoaXMgdm1hICovCisJ c3RydWN0IGk5MTVfbW1hcF9vZmZzZXQJKm1tbzsKKwlzdHJ1Y3QgbGlzdF9oZWFkIG1tb19saW5r OworCiAJdTMyIGZlbmNlX3NpemU7CiAJdTMyIGZlbmNlX2FsaWdubWVudDsKIAotLSAKMi4yMy4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=