From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [PATCH 1/4] drm/i915: Allow i915 to manage the vma offset nodes instead of drm core Date: Thu, 14 Nov 2019 21:09:07 +0200 Message-ID: <20191114190910.20380-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1A6DD6E3E5 for ; Thu, 14 Nov 2019 19:09:24 +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 ICAgZHVyaW5nIEdQVSByZXNldC4KIC0gUmViYXNlLgp2MzoKIC0gU2ltcGxpZnkgbW1vIHRyYWNr aW5nCnY0OgogLSB1c2Ugdm1hLT5tbW8gaW4gX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFw X2d0dAp2NToKIC0gUmV2b2tlIENQVSBtbWFwcyBvbiBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKCkg c2luY2UgdW5saWtlIEdUVAogICBtbWFwcywgdGhleSBkb24ndCBoYXZlIGJvdW5kIGk5MTVfdm1h cyBvYmplY3RzLiBSZWJhc2UuCgpTaWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxndWUgPGFiZGll bC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+CkNjOiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVs ZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5p bnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMgICAgfCAgIDIgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMgICAgICB8IDIzNSArKysr KysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu YyAgICB8ICAxMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmgg ICAgfCAgIDggKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5o ICB8ICAxOSArKwogLi4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jICAg IHwgIDEyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAgICAgICAg fCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgICB8 ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwg ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAg IDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgICAgICAgICAgICB8ICAx NSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAgIHwgICAz ICsKIDEyIGZpbGVzIGNoYW5nZWQsIDI3OCBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMKaW5kZXggZTJhZjYz YWY2N2FkLi5kNmM1NjI3MmU3ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9kb21haW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fZG9tYWluLmMKQEAgLTI1NSw3ICsyNTUsNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3NldF9j YWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJfQogCiAJCQlp ZiAob2JqLT51c2VyZmF1bHRfY291bnQpCi0JCQkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9t bWFwKG9iaik7CisJCQkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0dChvYmopOwog CiAJCQkvKgogCQkJICogQXMgd2Ugbm8gbG9uZ2VyIG5lZWQgYSBmZW5jZSBmb3IgR1RUIGFjY2Vz cywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jCmluZGV4IGQ2MDk3MzYw M2NjMS4uZTJkZjYzNzljN2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fbW1hbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9t bWFuLmMKQEAgLTIxOSw3ICsyMTksOCBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVj dCB2bV9mYXVsdCAqdm1mKQogewogI2RlZmluZSBNSU5fQ0hVTktfUEFHRVMgKFNaXzFNID4+IFBB R0VfU0hJRlQpCiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICphcmVhID0gdm1mLT52bWE7Ci0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHRvX2ludGVsX2JvKGFyZWEtPnZtX3ByaXZh dGVfZGF0YSk7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKnByaXYgPSBhcmVhLT52bV9wcml2 YXRlX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHByaXYtPm9iajsK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfcnVudGltZV9w bSAqcnBtID0gJmk5MTUtPnJ1bnRpbWVfcG07CkBAIC0zMTIsNiArMzEzLDkgQEAgdm1fZmF1bHRf dCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJbGlzdF9hZGQoJm9iai0+ dXNlcmZhdWx0X2xpbmssICZpOTE1LT5nZ3R0LnVzZXJmYXVsdF9saXN0KTsKIAltdXRleF91bmxv Y2soJmk5MTUtPmdndHQudm0ubXV0ZXgpOwogCisJLyogVHJhY2sgdGhlIG1tbyBhc3NvY2lhdGVk IHdpdGggdGhlIGZlbmNlZCB2bWEgKi8KKwl2bWEtPm1tbyA9IHByaXY7CisKIAlpZiAoSVNfQUNU SVZFKENPTkZJR19EUk1fSTkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQpKQogCQlpbnRlbF93YWtl cmVmX2F1dG8oJmk5MTUtPmdndHQudXNlcmZhdWx0X3dha2VyZWYsCiAJCQkJICAgbXNlY3NfdG9f amlmZmllc190aW1lb3V0KENPTkZJR19EUk1fSTkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQpKTsK QEAgLTM1OCw3ICszNjIsNyBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9m YXVsdCAqdm1mKQogCX0KIH0KIAotdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3ZvaWQgX19pOTE1X2dlbV9vYmplY3Rf cmVsZWFzZV9tbWFwX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwogCkBAIC0zNjYsMjAgKzM3MCwxNiBAQCB2b2lkIF9faTkxNV9n ZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog CiAJb2JqLT51c2VyZmF1bHRfY291bnQgPSAwOwogCWxpc3RfZGVsKCZvYmotPnVzZXJmYXVsdF9s aW5rKTsKLQlkcm1fdm1hX25vZGVfdW5tYXAoJm9iai0+YmFzZS52bWFfbm9kZSwKLQkJCSAgIG9i ai0+YmFzZS5kZXYtPmFub25faW5vZGUtPmlfbWFwcGluZyk7CiAKLQlmb3JfZWFjaF9nZ3R0X3Zt YSh2bWEsIG9iaikKKwlmb3JfZWFjaF9nZ3R0X3ZtYSh2bWEsIG9iaikgeworCQlpZiAodm1hLT5t bW8pCisJCQlkcm1fdm1hX25vZGVfdW5tYXAoJnZtYS0+bW1vLT52bWFfbm9kZSwKKwkJCQkJICAg b2JqLT5iYXNlLmRldi0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nKTsKIAkJaTkxNV92bWFfdW5zZXRf dXNlcmZhdWx0KHZtYSk7CisJfQogfQogCiAvKioKLSAqIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNl X21tYXAgLSByZW1vdmUgcGh5c2ljYWwgcGFnZSBtYXBwaW5ncwotICogQG9iajogb2JqIGluIHF1 ZXN0aW9uCi0gKgotICogUHJlc2VydmUgdGhlIHJlc2VydmF0aW9uIG9mIHRoZSBtbWFwcGluZyB3 aXRoIHRoZSBEUk0gY29yZSBjb2RlLCBidXQKLSAqIHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIHRo ZSBwYWdlcyBiYWNrIHRvIHRoZSBzeXN0ZW0uCi0gKgogICogSXQgaXMgdml0YWwgdGhhdCB3ZSBy ZW1vdmUgdGhlIHBhZ2UgbWFwcGluZyBpZiB3ZSBoYXZlIG1hcHBlZCBhIHRpbGVkCiAgKiBvYmpl Y3QgdGhyb3VnaCB0aGUgR1RUIGFuZCB0aGVuIGxvc2UgdGhlIGZlbmNlIHJlZ2lzdGVyIGR1ZSB0 bwogICogcmVzb3VyY2UgcHJlc3N1cmUuIFNpbWlsYXJseSBpZiB0aGUgb2JqZWN0IGhhcyBiZWVu IG1vdmVkIG91dCBvZiB0aGUKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIF9faTkxNV9nZW1fb2Jq ZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogICogbWFw cGluZyB3aWxsIHRoZW4gdHJpZ2dlciBhIHBhZ2UgZmF1bHQgb24gdGhlIG5leHQgdXNlciBhY2Nl c3MsIGFsbG93aW5nCiAgKiBmaXh1cCBieSBpOTE1X2dlbV9mYXVsdCgpLgogICovCi12b2lkIGk5 MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwpA QCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCWlmICghb2JqLT51c2VyZmF1bHRfY291bnQp CiAJCWdvdG8gb3V0OwogCi0JX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKG9iaik7CisJ X19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0dChvYmopOwogCiAJLyogRW5zdXJlIHRo YXQgdGhlIENQVSdzIFBURSBhcmUgcmV2b2tlZCBhbmQgdGhlcmUgYXJlIG5vdCBvdXRzdGFuZGlu ZwogCSAqIG1lbW9yeSB0cmFuc2FjdGlvbnMgZnJvbSB1c2Vyc3BhY2UgYmVmb3JlIHdlIHJldHVy bi4gVGhlIFRMQgpAQCAtNDIyLDE1ICs0MjIsNjMgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfcmVs ZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaW50ZWxfcnVudGlt ZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwogfQogCi1zdGF0aWMgaW50IGNy ZWF0ZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQordm9pZCBp OTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQoreworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW87CisKKwltdXRleF9s b2NrKCZvYmotPm1tb19sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1tbywgJm9iai0+bW1h cF9vZmZzZXRzLCBvZmZzZXQpIHsKKwkJLyogdm1hX25vZGVfdW5tYXAgZm9yIEdUVCBtbWFwcyBo YW5kbGVkIGFscmVhZHkgaW4KKwkJICogX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0 dAorCQkgKi8KKwkJaWYgKG1tby0+bW1hcF90eXBlICE9IEk5MTVfTU1BUF9UWVBFX0dUVCkKKwkJ CWRybV92bWFfbm9kZV91bm1hcCgmbW1vLT52bWFfbm9kZSwKKwkJCQkJICAgb2JqLT5iYXNlLmRl di0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1tb19s b2NrKTsKK30KKworLyoqCisgKiBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwIC0gcmVtb3Zl IHBoeXNpY2FsIHBhZ2UgbWFwcGluZ3MKKyAqIEBvYmo6IG9iaiBpbiBxdWVzdGlvbgorICoKKyAq IFByZXNlcnZlIHRoZSByZXNlcnZhdGlvbiBvZiB0aGUgbW1hcHBpbmcgd2l0aCB0aGUgRFJNIGNv cmUgY29kZSwgYnV0CisgKiByZWxpbnF1aXNoIG93bmVyc2hpcCBvZiB0aGUgcGFnZXMgYmFjayB0 byB0aGUgc3lzdGVtLgorICovCit2b2lkIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9tbWFwX2d0dChvYmopOworCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfb2Zmc2V0KG9i aik7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKKwkJCSAgICAgc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbykKK3sK KwltdXRleF9sb2NrKCZvYmotPm1tb19sb2NrKTsKKwlsaXN0X2FkZCgmbW1vLT5vZmZzZXQsICZv YmotPm1tYXBfb2Zmc2V0cyk7CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1tb19sb2NrKTsKKworCW1t by0+b2JqID0gb2JqOworCW1tby0+ZGV2ID0gb2JqLT5iYXNlLmRldjsKK30KKworc3RhdGljIGlu dCBjcmVhdGVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJ CSAgICAgIHN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8pCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9n dCAqZ3QgPSAmaTkxNS0+Z3Q7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5k ZXY7CiAJaW50IGVycjsKIAotCWVyciA9IGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0KCZvYmot PmJhc2UpOwotCWlmIChsaWtlbHkoIWVycikpCisJZHJtX3ZtYV9ub2RlX3Jlc2V0KCZtbW8tPnZt YV9ub2RlKTsKKwlpZiAobW1vLT5maWxlKQorCQlkcm1fdm1hX25vZGVfYWxsb3coJm1tby0+dm1h X25vZGUsIG1tby0+ZmlsZSk7CisJZXJyID0gZHJtX3ZtYV9vZmZzZXRfYWRkKGRldi0+dm1hX29m ZnNldF9tYW5hZ2VyLCAmbW1vLT52bWFfbm9kZSwKKwkJCQkgb2JqLT5iYXNlLnNpemUgLyBQQUdF X1NJWkUpOworCWlmIChsaWtlbHkoIWVycikpIHsKKwkJaW5pdF9tbWFwX29mZnNldChvYmosIG1t byk7CiAJCXJldHVybiAwOworCX0KIAogCS8qIEF0dGVtcHQgdG8gcmVhcCBzb21lIG1tYXAgc3Bh Y2UgZnJvbSBkZWFkIG9iamVjdHMgKi8KIAllcnIgPSBpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNf dGltZW91dChndCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwpAQCAtNDM4LDM0ICs0ODYsNTAgQEAg c3RhdGljIGludCBjcmVhdGVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIAkJcmV0dXJuIGVycjsKIAogCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoaTkx NSk7Ci0JcmV0dXJuIGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0KCZvYmotPmJhc2UpOworCWVy ciA9IGRybV92bWFfb2Zmc2V0X2FkZChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlciwgJm1tby0+dm1h X25vZGUsCisJCQkJIG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFKTsKKwlpZiAoZXJyKQorCQly ZXR1cm4gZXJyOworCisJaW5pdF9tbWFwX29mZnNldChvYmosIG1tbyk7CisJcmV0dXJuIDA7CiB9 CiAKLWludAotaTkxNV9nZW1fbW1hcF9ndHQoc3RydWN0IGRybV9maWxlICpmaWxlLAotCQkgIHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCSAgdTMyIGhhbmRsZSwKLQkJICB1NjQgKm9mZnNldCkK K3N0YXRpYyBpbnQKK19fYXNzaWduX2dlbV9vYmplY3RfbW1hcF9kYXRhKHN0cnVjdCBkcm1fZmls ZSAqZmlsZSwKKwkJCSAgICAgIHUzMiBoYW5kbGUsCisJCQkgICAgICBlbnVtIGk5MTVfbW1hcF90 eXBlIG1tYXBfdHlwZSwKKwkJCSAgICAgIHU2NCAqb2Zmc2V0KQogewogCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbzsKIAlpbnQg cmV0OwogCi0JaWYgKCFpOTE1X2dndHRfaGFzX2FwZXJ0dXJlKCZ0b19pOTE1KGRldiktPmdndHQp KQotCQlyZXR1cm4gLUVOT0RFVjsKLQogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmls ZSwgaGFuZGxlKTsKIAlpZiAoIW9iaikKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlpZiAoaTkxNV9n ZW1fb2JqZWN0X25ldmVyX2JpbmRfZ2d0dChvYmopKSB7CisJaWYgKG1tYXBfdHlwZSA9PSBJOTE1 X01NQVBfVFlQRV9HVFQgJiYKKwkgICAgaTkxNV9nZW1fb2JqZWN0X25ldmVyX2JpbmRfZ2d0dChv YmopKSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJCWdvdG8gb3V0OwogCX0KIAotCXJldCA9IGNyZWF0 ZV9tbWFwX29mZnNldChvYmopOwotCWlmIChyZXQgPT0gMCkKLQkJKm9mZnNldCA9IGRybV92bWFf bm9kZV9vZmZzZXRfYWRkcigmb2JqLT5iYXNlLnZtYV9ub2RlKTsKKwltbW8gPSBremFsbG9jKHNp emVvZigqbW1vKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtbW8pIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJZ290byBvdXQ7CisJfQogCisJbW1vLT5maWxlID0gZmlsZTsKKwlyZXQgPSBjcmVhdGVfbW1h cF9vZmZzZXQob2JqLCBtbW8pOworCWlmIChyZXQpIHsKKwkJa2ZyZWUobW1vKTsKKwkJZ290byBv dXQ7CisJfQorCisJbW1vLT5tbWFwX3R5cGUgPSBtbWFwX3R5cGU7CisJKm9mZnNldCA9IGRybV92 bWFfbm9kZV9vZmZzZXRfYWRkcigmbW1vLT52bWFfbm9kZSk7CiBvdXQ6CiAJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOwogCXJldHVybiByZXQ7CkBAIC00OTIsNyArNTU2LDExOCBAQCBpOTE1X2dl bV9tbWFwX2d0dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogewog CXN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9ndHQgKmFyZ3MgPSBkYXRhOwogCi0JcmV0dXJuIGk5 MTVfZ2VtX21tYXBfZ3R0KGZpbGUsIGRldiwgYXJncy0+aGFuZGxlLCAmYXJncy0+b2Zmc2V0KTsK KwlyZXR1cm4gX19hc3NpZ25fZ2VtX29iamVjdF9tbWFwX2RhdGEoZmlsZSwgYXJncy0+aGFuZGxl LAorCQkJCQkgICAgIEk5MTVfTU1BUF9UWVBFX0dUVCwKKwkJCQkJICAgICAmYXJncy0+b2Zmc2V0 KTsKK30KKwordm9pZCBpOTE1X21tYXBfb2Zmc2V0X2Rlc3Ryb3koc3RydWN0IGk5MTVfbW1hcF9v ZmZzZXQgKm1tbywgc3RydWN0IG11dGV4ICptdXRleCkKK3sKKwlpZiAobW1vLT5maWxlKQorCQlk cm1fdm1hX25vZGVfcmV2b2tlKCZtbW8tPnZtYV9ub2RlLCBtbW8tPmZpbGUpOworCWRybV92bWFf b2Zmc2V0X3JlbW92ZShtbW8tPmRldi0+dm1hX29mZnNldF9tYW5hZ2VyLCAmbW1vLT52bWFfbm9k ZSk7CisKKwltdXRleF9sb2NrKG11dGV4KTsKKwlsaXN0X2RlbCgmbW1vLT5vZmZzZXQpOworCW11 dGV4X3VubG9jayhtdXRleCk7CisKKwlrZnJlZShtbW8pOworfQorCitzdGF0aWMgdm9pZCBpOTE1 X2dlbV92bV9vcGVuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBpOTE1 X21tYXBfb2Zmc2V0ICptbW8gPSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gbW1vLT5vYmo7CisKKwlHRU1fQlVHX09OKCFvYmopOworCWk5 MTVfZ2VtX29iamVjdF9nZXQob2JqKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1fdm1fY2xv c2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZz ZXQgKm1tbyA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBtbW8tPm9iajsKKworCUdFTV9CVUdfT04oIW9iaik7CisJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3Ry dWN0IGk5MTVfZ2VtX2d0dF92bV9vcHMgPSB7CisJLmZhdWx0ID0gaTkxNV9nZW1fZmF1bHQsCisJ Lm9wZW4gPSBpOTE1X2dlbV92bV9vcGVuLAorCS5jbG9zZSA9IGk5MTVfZ2VtX3ZtX2Nsb3NlLAor fTsKKworLyogVGhpcyBvdmVyY29tZXMgdGhlIGxpbWl0YXRpb24gaW4gZHJtX2dlbV9tbWFwJ3Mg YXNzaWdubWVudCBvZiBhCisgKiBkcm1fZ2VtX29iamVjdCBhcyB0aGUgdm1hLT52bV9wcml2YXRl X2RhdGEuIFNpbmNlIHdlIG5lZWQgdG8KKyAqIGJlIGFibGUgdG8gcmVzb2x2ZSBtdWx0aXBsZSBt bWFwIG9mZnNldHMgd2hpY2ggY291bGQgYmUgdGllZAorICogdG8gYSBzaW5nbGUgZ2VtIG9iamVj dC4KKyAqLworaW50IGk5MTVfZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2RlICpub2RlOwor CXN0cnVjdCBkcm1fZmlsZSAqcHJpdiA9IGZpbHAtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcHJpdi0+bWlub3ItPmRldjsKKwlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNl dCAqbW1vID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7CisKKwlp ZiAoZHJtX2Rldl9pc191bnBsdWdnZWQoZGV2KSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlkcm1f dm1hX29mZnNldF9sb2NrX2xvb2t1cChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlcik7CisJbm9kZSA9 IGRybV92bWFfb2Zmc2V0X2V4YWN0X2xvb2t1cF9sb2NrZWQoZGV2LT52bWFfb2Zmc2V0X21hbmFn ZXIsCisJCQkJCQkgIHZtYS0+dm1fcGdvZmYsCisJCQkJCQkgIHZtYV9wYWdlcyh2bWEpKTsKKwlp ZiAobGlrZWx5KG5vZGUpKSB7CisJCW1tbyA9IGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgaTkx NV9tbWFwX29mZnNldCwKKwkJCQkgICB2bWFfbm9kZSk7CisJCS8qCisJCSAqIEluIG91ciBkZXBl bmRlbmN5IGNoYWluLCB0aGUgZHJtX3ZtYV9vZmZzZXRfbm9kZQorCQkgKiBkZXBlbmRzIG9uIHRo ZSB2YWxpZGl0eSBvZiB0aGUgbW1vLCB3aGljaCBkZXBlbmRzIG9uCisJCSAqIHRoZSBnZW0gb2Jq ZWN0LiBIb3dldmVyIHRoZSBvbmx5IHJlZmVyZW5jZSB3ZSBoYXZlCisJCSAqIGF0IHRoaXMgcG9p bnQgaXMgdGhlIG1tbyAoYXMgdGhlIHBhcmVudCBvZiB0aGUgbm9kZSkuCisJCSAqIFRyeSB0byBj aGVjayBpZiB0aGUgZ2VtIG9iamVjdCB3YXMgYXQgbGVhc3QgY2xlYXJlZC4KKwkJICovCisJCWlm ICghbW1vIHx8ICFtbW8tPm9iaikgeworCQkJZHJtX3ZtYV9vZmZzZXRfdW5sb2NrX2xvb2t1cChk ZXYtPnZtYV9vZmZzZXRfbWFuYWdlcik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQkvKgor CQkgKiBTa2lwIDAtcmVmY250ZWQgb2JqZWN0cyBhcyBpdCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBi ZWluZworCQkgKiBkZXN0cm95ZWQgYW5kIHdpbGwgYmUgaW52YWxpZCB3aGVuIHRoZSB2bWEgbWFu YWdlciBsb2NrCisJCSAqIGlzIHJlbGVhc2VkLgorCQkgKi8KKwkJb2JqID0gJm1tby0+b2JqLT5i YXNlOworCQlpZiAoIWtyZWZfZ2V0X3VubGVzc196ZXJvKCZvYmotPnJlZmNvdW50KSkKKwkJCW9i aiA9IE5VTEw7CisKKwl9CisJZHJtX3ZtYV9vZmZzZXRfdW5sb2NrX2xvb2t1cChkZXYtPnZtYV9v ZmZzZXRfbWFuYWdlcik7CisKKwlpZiAoIW9iaikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAo IWRybV92bWFfbm9kZV9pc19hbGxvd2VkKG5vZGUsIHByaXYpKSB7CisJCWRybV9nZW1fb2JqZWN0 X3B1dF91bmxvY2tlZChvYmopOworCQlyZXR1cm4gLUVBQ0NFUzsKKwl9CisKKwlpZiAodG9faW50 ZWxfYm8ob2JqKS0+cmVhZG9ubHkpIHsKKwkJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9XUklURSkg eworCQkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCQl2bWEtPnZtX2ZsYWdzICY9IH5WTV9NQVlXUklURTsKKwl9CisKKwl2bWEtPnZt X2ZsYWdzIHw9IFZNX1BGTk1BUCB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUDsKKwl2bWEt PnZtX3BhZ2VfcHJvdCA9IHBncHJvdF93cml0ZWNvbWJpbmUodm1fZ2V0X3BhZ2VfcHJvdCh2bWEt PnZtX2ZsYWdzKSk7CisJdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGVjcnlwdGVkKHZtYS0+ dm1fcGFnZV9wcm90KTsKKwl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IG1tbzsKKworCXZtYS0+dm1f b3BzID0gJmk5MTVfZ2VtX2d0dF92bV9vcHM7CisKKwlyZXR1cm4gMDsKIH0KIAogI2lmIElTX0VO QUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5jCmluZGV4IGRiMTAzZDNjODc2MC4uMzBjNDRjOGZkNTU3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCkBAIC02MSw2ICs2MSw5 IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAogCUlOSVRfTElTVF9IRUFEKCZvYmotPmx1dF9saXN0KTsKIAorCW11dGV4X2luaXQo Jm9iai0+bW1vX2xvY2spOworCUlOSVRfTElTVF9IRUFEKCZvYmotPm1tYXBfb2Zmc2V0cyk7CisK IAlpbml0X3JjdV9oZWFkKCZvYmotPnJjdSk7CiAKIAlvYmotPm9wcyA9IG9wczsKQEAgLTE1OCw2 ICsxNjEsOCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAogCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgm aTkxNS0+cnVudGltZV9wbSk7CiAJbGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG9uLCBm cmVlZCwgZnJlZWQpIHsKKwkJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbywgKm1uOworCiAJ CXRyYWNlX2k5MTVfZ2VtX29iamVjdF9kZXN0cm95KG9iaik7CiAKIAkJaWYgKCFsaXN0X2VtcHR5 KCZvYmotPnZtYS5saXN0KSkgewpAQCAtMTgzLDYgKzE4OCwxNCBAQCBzdGF0aWMgdm9pZCBfX2k5 MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCXNw aW5fdW5sb2NrKCZvYmotPnZtYS5sb2NrKTsKIAkJfQogCisJCWk5MTVfZ2VtX29iamVjdF9yZWxl YXNlX21tYXAob2JqKTsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobW1vLCBtbiwgJm9i ai0+bW1hcF9vZmZzZXRzLCBvZmZzZXQpIHsKKwkJCW1tby0+b2JqID0gTlVMTDsKKwkJCWk5MTVf bW1hcF9vZmZzZXRfZGVzdHJveShtbW8sICZvYmotPm1tb19sb2NrKTsKKwkJfQorCisJCUdFTV9C VUdfT04oIWxpc3RfZW1wdHkoJm9iai0+bW1hcF9vZmZzZXRzKSk7CiAJCUdFTV9CVUdfT04oYXRv bWljX3JlYWQoJm9iai0+YmluZF9jb3VudCkpOwogCQlHRU1fQlVHX09OKG9iai0+dXNlcmZhdWx0 X2NvdW50KTsKIAkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmb2JqLT5sdXRfbGlzdCkpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCmluZGV4IGU1NzUwZDUwNmNj OS4uMzE0Y2JhNTdiMTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5oCkBAIC0xMzIsMTMgKzEzMiwxMyBAQCB2b2lkIGk5MTVfZ2VtX29iamVjdF91bmxvY2tf ZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIHN0YXRpYyBpbmxpbmUgdm9p ZAogaTkxNV9nZW1fb2JqZWN0X3NldF9yZWFkb25seShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogewotCW9iai0+YmFzZS52bWFfbm9kZS5yZWFkb25seSA9IHRydWU7CisJb2JqLT5y ZWFkb25seSA9IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAogaTkxNV9nZW1fb2JqZWN0 X2lzX3JlYWRvbmx5KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0J cmV0dXJuIG9iai0+YmFzZS52bWFfbm9kZS5yZWFkb25seTsKKwlyZXR1cm4gb2JqLT5yZWFkb25s eTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCkBAIC0zODcsOCArMzg3LDkgQEAgc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIH0KIAotdm9p ZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaik7Cit2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9ndHQoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNl X21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cit2b2lkIGk5MTVfZ2VtX29i amVjdF9yZWxlYXNlX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop OwogCiB2b2lkCiBpOTE1X2dlbV9vYmplY3RfZmx1c2hfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCkBAIC00NzMsNSArNDc0LDYgQEAgaW50IGk5MTVfZ2VtX29i amVjdF93YWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiBpbnQgaTkxNV9nZW1f b2JqZWN0X3dhaXRfcHJpb3JpdHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJ CQkgIHVuc2lnbmVkIGludCBmbGFncywKIAkJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkX2F0 dHIgKmF0dHIpOwordm9pZCBpOTE1X21tYXBfb2Zmc2V0X2Rlc3Ryb3koc3RydWN0IGk5MTVfbW1h cF9vZmZzZXQgKm1tbywgc3RydWN0IG11dGV4ICptdXRleCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCmluZGV4IDE1Zjgy OTdkYzM0ZS4uNjMyZDZiODA0Y2ZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCkBAIC02Myw2ICs2MywyMCBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdF9vcHMgewogCXZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKTsKIH07CiAKK2VudW0gaTkxNV9tbWFwX3R5cGUgeworCUk5MTVfTU1BUF9U WVBFX0dUVCA9IDAsCit9OworCitzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCB7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldjsKKwlzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSB2bWFfbm9kZTsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsK KwllbnVtIGk5MTVfbW1hcF90eXBlIG1tYXBfdHlwZTsKKworCXN0cnVjdCBsaXN0X2hlYWQgb2Zm c2V0OworfTsKKwogc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBkcm1fZ2Vt X29iamVjdCBiYXNlOwogCkBAIC0xMTgsNiArMTMyLDExIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0IHsKIAl1bnNpZ25lZCBpbnQgdXNlcmZhdWx0X2NvdW50OwogCXN0cnVjdCBsaXN0X2hl YWQgdXNlcmZhdWx0X2xpbms7CiAKKwkvKiBQcm90ZWN0cyBhY2Nlc3MgdG8gbW1hcCBvZmZzZXRz ICovCisJc3RydWN0IG11dGV4IG1tb19sb2NrOworCXN0cnVjdCBsaXN0X2hlYWQgbW1hcF9vZmZz ZXRzOworCWJvb2wgcmVhZG9ubHk6MTsKKwogCUk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3Qg bGlzdF9oZWFkIHN0X2xpbmspOwogCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKaW5kZXggOWYx YTY5MDI3YTA0Li43NzYxZDJlMDk3MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCkBAIC01NjQsMTUgKzU2NCwyMCBAQCBzdGF0 aWMgYm9vbCBhc3NlcnRfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CiAJCQkgICAgICAgaW50IGV4cGVjdGVkKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7CisJLyogT3duZXJzaGlwIHRyYW5zZmVycmVkIHRvIHBhcmVudCBnZW0gb2JqZWN0IGlu IGNyZWF0ZV9tbWFwX29mZnNldCAqLworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8gPSBr emFsbG9jKHNpemVvZigqbW1vKSwgR0ZQX0tFUk5FTCk7CiAJaW50IGVycjsKIAogCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgc2l6ZSk7CiAJaWYgKElTX0VSUihv YmopKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwogCi0JZXJyID0gY3JlYXRlX21tYXBfb2Zmc2V0 KG9iaik7CisJZXJyID0gY3JlYXRlX21tYXBfb2Zmc2V0KG9iaiwgbW1vKTsKKwlpZiAoZXJyKQor CQlrZnJlZShtbW8pOwogCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIAorCiAJcmV0dXJuIGVy ciA9PSBleHBlY3RlZDsKIH0KIApAQCAtNjA4LDYgKzYxMyw4IEBAIHN0YXRpYyBpbnQgaWd0X21t YXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJnKQogCXN0cnVjdCBkcm1fbW0gKm1tID0gJmk5 MTUtPmRybS52bWFfb2Zmc2V0X21hbmFnZXItPnZtX2FkZHJfc3BhY2VfbW07CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgZHJtX21tX25vZGUgKmhvbGUsICpuZXh0 OworCS8qIE93bmVyc2hpcCB0cmFuc2ZlcnJlZCB0byBwYXJlbnQgZ2VtIG9iamVjdCBpbiBjcmVh dGVfbW1hcF9vZmZzZXQgKi8KKwlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vID0ga3phbGxv YyhzaXplb2YoKm1tbyksIEdGUF9LRVJORUwpOwogCWludCBsb29wLCBlcnI7CiAKIAkvKiBEaXNh YmxlIGJhY2tncm91bmQgcmVhcGVyICovCkBAIC02NzIsOSArNjc5LDEwIEBAIHN0YXRpYyBpbnQg aWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJnKQogCQlnb3RvIG91dDsKIAl9CiAK LQllcnIgPSBjcmVhdGVfbW1hcF9vZmZzZXQob2JqKTsKKwllcnIgPSBjcmVhdGVfbW1hcF9vZmZz ZXQob2JqLCBtbW8pOwogCWlmIChlcnIpIHsKIAkJcHJfZXJyKCJVbmFibGUgdG8gaW5zZXJ0IG9i amVjdCBpbnRvIHJlY2xhaW1lZCBob2xlXG4iKTsKKwkJa2ZyZWUobW1vKTsKIAkJZ290byBlcnJf b2JqOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVz ZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKaW5kZXggYjcwMDdj ZDc4YzZmLi43NzdlYWE0ODM2NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3Jlc2V0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQu YwpAQCAtNjc4LDggKzY3OCwxMyBAQCBzdGF0aWMgdm9pZCByZXZva2VfbW1hcHMoc3RydWN0IGlu dGVsX2d0ICpndCkKIAkJCWNvbnRpbnVlOwogCiAJCUdFTV9CVUdfT04odm1hLT5mZW5jZSAhPSAm Z3QtPmdndHQtPmZlbmNlX3JlZ3NbaV0pOwotCQlub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9u b2RlOworCisJCWlmICghdm1hLT5tbW8pCisJCQljb250aW51ZTsKKworCQlub2RlID0gJnZtYS0+ bW1vLT52bWFfbm9kZTsKIAkJdm1hX29mZnNldCA9IHZtYS0+Z2d0dF92aWV3LnBhcnRpYWwub2Zm c2V0IDw8IFBBR0VfU0hJRlQ7CisKIAkJdW5tYXBfbWFwcGluZ19yYW5nZShndC0+aTkxNS0+ZHJt LmFub25faW5vZGUtPmlfbWFwcGluZywKIAkJCQkgICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRy KG5vZGUpICsgdm1hX29mZnNldCwKIAkJCQkgICAgdm1hLT5zaXplLApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKaW5kZXggOGQ3MDQ5NzkyZDYyLi41ZmUwNzE2NDA4OTMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwpAQCAtMjY2MiwxOCArMjY2MiwxMiBAQCBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBp OTE1X3BtX29wcyA9IHsKIAkucnVudGltZV9yZXN1bWUgPSBpbnRlbF9ydW50aW1lX3Jlc3VtZSwK IH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgaTkxNV9nZW1f dm1fb3BzID0gewotCS5mYXVsdCA9IGk5MTVfZ2VtX2ZhdWx0LAotCS5vcGVuID0gZHJtX2dlbV92 bV9vcGVuLAotCS5jbG9zZSA9IGRybV9nZW1fdm1fY2xvc2UsCi19OwotCiBzdGF0aWMgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2RyaXZlcl9mb3BzID0gewogCS5vd25lciA9IFRI SVNfTU9EVUxFLAogCS5vcGVuID0gZHJtX29wZW4sCiAJLnJlbGVhc2UgPSBkcm1fcmVsZWFzZSwK IAkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGwsCi0JLm1tYXAgPSBkcm1fZ2VtX21tYXAsCisJ Lm1tYXAgPSBpOTE1X2dlbV9tbWFwLAogCS5wb2xsID0gZHJtX3BvbGwsCiAJLnJlYWQgPSBkcm1f cmVhZCwKIAkuY29tcGF0X2lvY3RsID0gaTkxNV9jb21wYXRfaW9jdGwsCkBAIC0yNzYyLDcgKzI3 NTYsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewogCiAJLmdlbV9jbG9z ZV9vYmplY3QgPSBpOTE1X2dlbV9jbG9zZV9vYmplY3QsCiAJLmdlbV9mcmVlX29iamVjdF91bmxv Y2tlZCA9IGk5MTVfZ2VtX2ZyZWVfb2JqZWN0LAotCS5nZW1fdm1fb3BzID0gJmk5MTVfZ2VtX3Zt X29wcywKIAogCS5wcmltZV9oYW5kbGVfdG9fZmQgPSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19m ZCwKIAkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUsCkBA IC0yNzczLDcgKzI3NjYsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewog CS5nZXRfc2Nhbm91dF9wb3NpdGlvbiA9IGk5MTVfZ2V0X2NydGNfc2Nhbm91dHBvcywKIAogCS5k dW1iX2NyZWF0ZSA9IGk5MTVfZ2VtX2R1bWJfY3JlYXRlLAotCS5kdW1iX21hcF9vZmZzZXQgPSBp OTE1X2dlbV9tbWFwX2d0dCwKIAkuaW9jdGxzID0gaTkxNV9pb2N0bHMsCiAJLm51bV9pb2N0bHMg PSBBUlJBWV9TSVpFKGk5MTVfaW9jdGxzKSwKIAkuZm9wcyA9ICZpOTE1X2RyaXZlcl9mb3BzLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMTc3OWY2MDBmY2ZiLi45NjhjNTNiZmI1N2IgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTg2MSw4ICsxODYxLDYgQEAgaTkxNV9tdXRleF9s b2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIGludCBpOTE1X2dlbV9k dW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJCSBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkJIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7Ci1pbnQg aTkxNV9nZW1fbW1hcF9ndHQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCi0JCSAgICAgIHUzMiBoYW5kbGUsIHU2NCAqb2Zmc2V0KTsKIGludCBpOTE1 X2dlbV9tbWFwX2d0dF92ZXJzaW9uKHZvaWQpOwogCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2Vt X3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKQEAg LTE4ODYsNiArMTg4NCw3IEBAIHZvaWQgaTkxNV9nZW1fZHJpdmVyX3JlbGVhc2Uoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fcmVzdW1l KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CitpbnQgaTkxNV9nZW1fbW1hcChz dHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogdm1fZmF1bHRf dCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7CiAKIGludCBpOTE1X2dlbV9v cGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNDNjNTMyNzU2YzdjLi5hMWRhOWI2ZDAzMWIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMTQ1LDYgKzE0NSw5IEBAIGludCBpOTE1X2dl bV9vYmplY3RfdW5iaW5kKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJbGlzdF9z cGxpY2UoJnN0aWxsX2luX2xpc3QsICZvYmotPnZtYS5saXN0KTsKIAlzcGluX3VubG9jaygmb2Jq LT52bWEubG9jayk7CiAKKwlpZiAoZmxhZ3MgJiBJOTE1X0dFTV9PQkpFQ1RfVU5CSU5EX0FDVElW RSkKKwkJaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9vZmZzZXQob2JqKTsKKwogCXJldHVy biByZXQ7CiB9CiAKQEAgLTg1NCw3ICs4NTcsNyBAQCB2b2lkIGk5MTVfZ2VtX3J1bnRpbWVfc3Vz cGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShvYmosIG9uLAogCQkJCSAmaTkxNS0+Z2d0dC51c2VyZmF1bHRfbGlzdCwgdXNlcmZh dWx0X2xpbmspCi0JCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChvYmopOworCQlfX2k5 MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KG9iaik7CiAKIAkvKgogCSAqIFRoZSBmZW5j ZSB3aWxsIGJlIGxvc3Qgd2hlbiB0aGUgZGV2aWNlIHBvd2VycyBkb3duLiBJZiBhbnkgd2VyZQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmMKaW5kZXggZTU1MTJmMjZlMjBhLi44YzFhYWI5Yjk2MjcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuYwpAQCAtMTA1NCw3ICsxMDU0LDcgQEAgc3RhdGljIHZvaWQg X19pOTE1X3ZtYV9pb3VubWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCiB2b2lkIGk5MTVfdm1h X3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBkcm1fdm1hX29m ZnNldF9ub2RlICpub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOworCXN0cnVjdCBkcm1f dm1hX29mZnNldF9ub2RlICpub2RlOwogCXU2NCB2bWFfb2Zmc2V0OwogCiAJbG9ja2RlcF9hc3Nl cnRfaGVsZCgmdm1hLT52bS0+bXV0ZXgpOwpAQCAtMTA2NiwxMCArMTA2NiwxNSBAQCB2b2lkIGk5 MTVfdm1hX3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCUdFTV9CVUdfT04oIXZt YS0+b2JqLT51c2VyZmF1bHRfY291bnQpOwogCiAJdm1hX29mZnNldCA9IHZtYS0+Z2d0dF92aWV3 LnBhcnRpYWwub2Zmc2V0IDw8IFBBR0VfU0hJRlQ7Ci0JdW5tYXBfbWFwcGluZ19yYW5nZSh2bWEt PnZtLT5pOTE1LT5kcm0uYW5vbl9pbm9kZS0+aV9tYXBwaW5nLAotCQkJICAgIGRybV92bWFfbm9k ZV9vZmZzZXRfYWRkcihub2RlKSArIHZtYV9vZmZzZXQsCi0JCQkgICAgdm1hLT5zaXplLAotCQkJ ICAgIDEpOworCisJaWYgKHZtYS0+bW1vKSB7CisJCW5vZGUgPSAmdm1hLT5tbW8tPnZtYV9ub2Rl OworCisJCXVubWFwX21hcHBpbmdfcmFuZ2Uodm1hLT52bS0+aTkxNS0+ZHJtLmFub25faW5vZGUt PmlfbWFwcGluZywKKwkJCQkgICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKG5vZGUpICsgdm1h X29mZnNldCwKKwkJCQkgICAgdm1hLT5zaXplLAorCQkJCSAgICAxKTsKKwl9CiAKIAlpOTE1X3Zt YV91bnNldF91c2VyZmF1bHQodm1hKTsKIAlpZiAoIS0tdm1hLT5vYmotPnVzZXJmYXVsdF9jb3Vu dCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCmluZGV4IDQ2NTkzMjgxM2JjNS4uZjA5ZjRmNTEzYzQx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKQEAgLTYzLDYgKzYzLDkgQEAgc3RydWN0IGk5MTVf dm1hIHsKIAl1NjQgZGlzcGxheV9hbGlnbm1lbnQ7CiAJc3RydWN0IGk5MTVfcGFnZV9zaXplcyBw YWdlX3NpemVzOwogCisJLyogbW1hcC1vZmZzZXQgYXNzb2NpYXRlZCB3aXRoIGZlbmNpbmcgZm9y IHRoaXMgdm1hICovCisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQJKm1tbzsKKwogCXUzMiBmZW5j ZV9zaXplOwogCXUzMiBmZW5jZV9hbGlnbm1lbnQ7CiAKLS0gCjIuMjMuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CEC5EC432C3 for ; Thu, 14 Nov 2019 19:09:28 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B469120723 for ; Thu, 14 Nov 2019 19:09:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B469120723 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A0CEE6EEBA; Thu, 14 Nov 2019 19:09:26 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1A6DD6E3E5 for ; Thu, 14 Nov 2019 19:09:24 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Nov 2019 11:09:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,304,1569308400"; d="scan'208";a="203152978" Received: from thijsmet-mobl2.ger.corp.intel.com (HELO skylake-nuc.ger.corp.intel.com) ([10.249.254.150]) by fmsmga008.fm.intel.com with ESMTP; 14 Nov 2019 11:09:16 -0800 From: Abdiel Janulgue To: intel-gfx@lists.freedesktop.org Date: Thu, 14 Nov 2019 21:09:07 +0200 Message-Id: <20191114190910.20380-1-abdiel.janulgue@linux.intel.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 1/4] drm/i915: Allow i915 to manage the vma offset nodes instead of drm core X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Matthew Auld Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191114190907.SzD3Q3CFaukmeHuZVVnOg9F-hy14DGhqkbma5HdkXy8@z> SGF2ZSBpOTE1IHJlcGxhY2UgdGhlIGNvcmUgZHJtX2dlbV9tbWFwIGltcGxlbWVudGF0aW9uIHRv IG92ZXJjb21lIGl0cwpsaW1pdGF0aW9uIGluIGhhdmluZyBvbmx5IGEgc2luZ2xlIG1tYXAgb2Zm c2V0IG5vZGUgcGVyIGdlbSBvYmplY3QuClRoaXMgY2hhbmdlIGFsbG93cyB1cyB0byBoYXZlIG11 bHRpcGxlIG1tYXAgb2Zmc2V0cyBwZXIgb2JqZWN0IGFuZAplbmFibGVzIGEgbW1hcHBpbmcgaW5z dGFuY2UgdG8gdXNlIHVuaXF1ZSBmYXVsdC1oYW5kbGVycyBwZXIgdXNlciB2bWEuCgpUaGlzIGFs bG93cyBpOTE1IHRvIHN0b3JlIGV4dHJhIGRhdGEgd2l0aGluIHZtYS0+dm1fcHJpdmF0ZV9kYXRh IGFuZAphc3NpZ24gdGhlIHBhZ2VmYXVsdCBvcHMgZm9yIGVhY2ggbW1hcCBpbnN0YW5jZSBhbGxv d2luZyBvYmplY3RzIHRvIHVzZQptdWx0aXBsZSBmYXVsdCBoYW5kbGVycyBkZXBlbmRpbmcgb24g aXRzIGJhY2tpbmcgc3RvcmFnZS4KCnYyOgogLSBGaXggcmFjZSBjb25kaXRpb24gZXhwb3NlZCBi eSBnZW1fbW1hcF9ndHRAY2xvc2UtcmFjZS4gU2ltcGxpZnkKICAgbGlmZXRpbWUgbWFuYWdlbWVu dCBvZiB0aGUgbW1hcCBvZmZzZXQgb2JqZWN0cyBiZSBlbnN1cmluZyBpdCBpcwogICBvd25lZCBi eSB0aGUgcGFyZW50IGdlbSBvYmplY3QgaW5zdGVhZCBvZiByZWZjb3VudGluZy4KIC0gVHJhY2sg bW1vIHVzZWQgYnkgZmVuY2luZyB0byBBdm9pZCBsb2NraW5nIHdoZW4gcmV2b2tpbmcgbW1hcHMK ICAgZHVyaW5nIEdQVSByZXNldC4KIC0gUmViYXNlLgp2MzoKIC0gU2ltcGxpZnkgbW1vIHRyYWNr aW5nCnY0OgogLSB1c2Ugdm1hLT5tbW8gaW4gX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFw X2d0dAp2NToKIC0gUmV2b2tlIENQVSBtbWFwcyBvbiBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKCkg c2luY2UgdW5saWtlIEdUVAogICBtbWFwcywgdGhleSBkb24ndCBoYXZlIGJvdW5kIGk5MTVfdm1h cyBvYmplY3RzLiBSZWJhc2UuCgpTaWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxndWUgPGFiZGll bC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+CkNjOiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVs ZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5p bnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMgICAgfCAgIDIgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMgICAgICB8IDIzNSArKysr KysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu YyAgICB8ICAxMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmgg ICAgfCAgIDggKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5o ICB8ICAxOSArKwogLi4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jICAg IHwgIDEyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAgICAgICAg fCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgICB8 ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwg ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAg IDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgICAgICAgICAgICB8ICAx NSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAgIHwgICAz ICsKIDEyIGZpbGVzIGNoYW5nZWQsIDI3OCBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMKaW5kZXggZTJhZjYz YWY2N2FkLi5kNmM1NjI3MmU3ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9kb21haW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fZG9tYWluLmMKQEAgLTI1NSw3ICsyNTUsNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3NldF9j YWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJfQogCiAJCQlp ZiAob2JqLT51c2VyZmF1bHRfY291bnQpCi0JCQkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9t bWFwKG9iaik7CisJCQkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0dChvYmopOwog CiAJCQkvKgogCQkJICogQXMgd2Ugbm8gbG9uZ2VyIG5lZWQgYSBmZW5jZSBmb3IgR1RUIGFjY2Vz cywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jCmluZGV4IGQ2MDk3MzYw M2NjMS4uZTJkZjYzNzljN2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fbW1hbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9t bWFuLmMKQEAgLTIxOSw3ICsyMTksOCBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVj dCB2bV9mYXVsdCAqdm1mKQogewogI2RlZmluZSBNSU5fQ0hVTktfUEFHRVMgKFNaXzFNID4+IFBB R0VfU0hJRlQpCiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICphcmVhID0gdm1mLT52bWE7Ci0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHRvX2ludGVsX2JvKGFyZWEtPnZtX3ByaXZh dGVfZGF0YSk7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKnByaXYgPSBhcmVhLT52bV9wcml2 YXRlX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHByaXYtPm9iajsK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfcnVudGltZV9w bSAqcnBtID0gJmk5MTUtPnJ1bnRpbWVfcG07CkBAIC0zMTIsNiArMzEzLDkgQEAgdm1fZmF1bHRf dCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJbGlzdF9hZGQoJm9iai0+ dXNlcmZhdWx0X2xpbmssICZpOTE1LT5nZ3R0LnVzZXJmYXVsdF9saXN0KTsKIAltdXRleF91bmxv Y2soJmk5MTUtPmdndHQudm0ubXV0ZXgpOwogCisJLyogVHJhY2sgdGhlIG1tbyBhc3NvY2lhdGVk IHdpdGggdGhlIGZlbmNlZCB2bWEgKi8KKwl2bWEtPm1tbyA9IHByaXY7CisKIAlpZiAoSVNfQUNU SVZFKENPTkZJR19EUk1fSTkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQpKQogCQlpbnRlbF93YWtl cmVmX2F1dG8oJmk5MTUtPmdndHQudXNlcmZhdWx0X3dha2VyZWYsCiAJCQkJICAgbXNlY3NfdG9f amlmZmllc190aW1lb3V0KENPTkZJR19EUk1fSTkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQpKTsK QEAgLTM1OCw3ICszNjIsNyBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9m YXVsdCAqdm1mKQogCX0KIH0KIAotdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3ZvaWQgX19pOTE1X2dlbV9vYmplY3Rf cmVsZWFzZV9tbWFwX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwogCkBAIC0zNjYsMjAgKzM3MCwxNiBAQCB2b2lkIF9faTkxNV9n ZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog CiAJb2JqLT51c2VyZmF1bHRfY291bnQgPSAwOwogCWxpc3RfZGVsKCZvYmotPnVzZXJmYXVsdF9s aW5rKTsKLQlkcm1fdm1hX25vZGVfdW5tYXAoJm9iai0+YmFzZS52bWFfbm9kZSwKLQkJCSAgIG9i ai0+YmFzZS5kZXYtPmFub25faW5vZGUtPmlfbWFwcGluZyk7CiAKLQlmb3JfZWFjaF9nZ3R0X3Zt YSh2bWEsIG9iaikKKwlmb3JfZWFjaF9nZ3R0X3ZtYSh2bWEsIG9iaikgeworCQlpZiAodm1hLT5t bW8pCisJCQlkcm1fdm1hX25vZGVfdW5tYXAoJnZtYS0+bW1vLT52bWFfbm9kZSwKKwkJCQkJICAg b2JqLT5iYXNlLmRldi0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nKTsKIAkJaTkxNV92bWFfdW5zZXRf dXNlcmZhdWx0KHZtYSk7CisJfQogfQogCiAvKioKLSAqIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNl X21tYXAgLSByZW1vdmUgcGh5c2ljYWwgcGFnZSBtYXBwaW5ncwotICogQG9iajogb2JqIGluIHF1 ZXN0aW9uCi0gKgotICogUHJlc2VydmUgdGhlIHJlc2VydmF0aW9uIG9mIHRoZSBtbWFwcGluZyB3 aXRoIHRoZSBEUk0gY29yZSBjb2RlLCBidXQKLSAqIHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIHRo ZSBwYWdlcyBiYWNrIHRvIHRoZSBzeXN0ZW0uCi0gKgogICogSXQgaXMgdml0YWwgdGhhdCB3ZSBy ZW1vdmUgdGhlIHBhZ2UgbWFwcGluZyBpZiB3ZSBoYXZlIG1hcHBlZCBhIHRpbGVkCiAgKiBvYmpl Y3QgdGhyb3VnaCB0aGUgR1RUIGFuZCB0aGVuIGxvc2UgdGhlIGZlbmNlIHJlZ2lzdGVyIGR1ZSB0 bwogICogcmVzb3VyY2UgcHJlc3N1cmUuIFNpbWlsYXJseSBpZiB0aGUgb2JqZWN0IGhhcyBiZWVu IG1vdmVkIG91dCBvZiB0aGUKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIF9faTkxNV9nZW1fb2Jq ZWN0X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogICogbWFw cGluZyB3aWxsIHRoZW4gdHJpZ2dlciBhIHBhZ2UgZmF1bHQgb24gdGhlIG5leHQgdXNlciBhY2Nl c3MsIGFsbG93aW5nCiAgKiBmaXh1cCBieSBpOTE1X2dlbV9mYXVsdCgpLgogICovCi12b2lkIGk5 MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwpA QCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCWlmICghb2JqLT51c2VyZmF1bHRfY291bnQp CiAJCWdvdG8gb3V0OwogCi0JX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKG9iaik7CisJ X19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0dChvYmopOwogCiAJLyogRW5zdXJlIHRo YXQgdGhlIENQVSdzIFBURSBhcmUgcmV2b2tlZCBhbmQgdGhlcmUgYXJlIG5vdCBvdXRzdGFuZGlu ZwogCSAqIG1lbW9yeSB0cmFuc2FjdGlvbnMgZnJvbSB1c2Vyc3BhY2UgYmVmb3JlIHdlIHJldHVy bi4gVGhlIFRMQgpAQCAtNDIyLDE1ICs0MjIsNjMgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfcmVs ZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaW50ZWxfcnVudGlt ZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwogfQogCi1zdGF0aWMgaW50IGNy ZWF0ZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQordm9pZCBp OTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQoreworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW87CisKKwltdXRleF9s b2NrKCZvYmotPm1tb19sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1tbywgJm9iai0+bW1h cF9vZmZzZXRzLCBvZmZzZXQpIHsKKwkJLyogdm1hX25vZGVfdW5tYXAgZm9yIEdUVCBtbWFwcyBo YW5kbGVkIGFscmVhZHkgaW4KKwkJICogX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwX2d0 dAorCQkgKi8KKwkJaWYgKG1tby0+bW1hcF90eXBlICE9IEk5MTVfTU1BUF9UWVBFX0dUVCkKKwkJ CWRybV92bWFfbm9kZV91bm1hcCgmbW1vLT52bWFfbm9kZSwKKwkJCQkJICAgb2JqLT5iYXNlLmRl di0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1tb19s b2NrKTsKK30KKworLyoqCisgKiBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwIC0gcmVtb3Zl IHBoeXNpY2FsIHBhZ2UgbWFwcGluZ3MKKyAqIEBvYmo6IG9iaiBpbiBxdWVzdGlvbgorICoKKyAq IFByZXNlcnZlIHRoZSByZXNlcnZhdGlvbiBvZiB0aGUgbW1hcHBpbmcgd2l0aCB0aGUgRFJNIGNv cmUgY29kZSwgYnV0CisgKiByZWxpbnF1aXNoIG93bmVyc2hpcCBvZiB0aGUgcGFnZXMgYmFjayB0 byB0aGUgc3lzdGVtLgorICovCit2b2lkIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9tbWFwX2d0dChvYmopOworCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfb2Zmc2V0KG9i aik7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKKwkJCSAgICAgc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbykKK3sK KwltdXRleF9sb2NrKCZvYmotPm1tb19sb2NrKTsKKwlsaXN0X2FkZCgmbW1vLT5vZmZzZXQsICZv YmotPm1tYXBfb2Zmc2V0cyk7CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1tb19sb2NrKTsKKworCW1t by0+b2JqID0gb2JqOworCW1tby0+ZGV2ID0gb2JqLT5iYXNlLmRldjsKK30KKworc3RhdGljIGlu dCBjcmVhdGVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJ CSAgICAgIHN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8pCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9n dCAqZ3QgPSAmaTkxNS0+Z3Q7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5k ZXY7CiAJaW50IGVycjsKIAotCWVyciA9IGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0KCZvYmot PmJhc2UpOwotCWlmIChsaWtlbHkoIWVycikpCisJZHJtX3ZtYV9ub2RlX3Jlc2V0KCZtbW8tPnZt YV9ub2RlKTsKKwlpZiAobW1vLT5maWxlKQorCQlkcm1fdm1hX25vZGVfYWxsb3coJm1tby0+dm1h X25vZGUsIG1tby0+ZmlsZSk7CisJZXJyID0gZHJtX3ZtYV9vZmZzZXRfYWRkKGRldi0+dm1hX29m ZnNldF9tYW5hZ2VyLCAmbW1vLT52bWFfbm9kZSwKKwkJCQkgb2JqLT5iYXNlLnNpemUgLyBQQUdF X1NJWkUpOworCWlmIChsaWtlbHkoIWVycikpIHsKKwkJaW5pdF9tbWFwX29mZnNldChvYmosIG1t byk7CiAJCXJldHVybiAwOworCX0KIAogCS8qIEF0dGVtcHQgdG8gcmVhcCBzb21lIG1tYXAgc3Bh Y2UgZnJvbSBkZWFkIG9iamVjdHMgKi8KIAllcnIgPSBpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNf dGltZW91dChndCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwpAQCAtNDM4LDM0ICs0ODYsNTAgQEAg c3RhdGljIGludCBjcmVhdGVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIAkJcmV0dXJuIGVycjsKIAogCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoaTkx NSk7Ci0JcmV0dXJuIGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0KCZvYmotPmJhc2UpOworCWVy ciA9IGRybV92bWFfb2Zmc2V0X2FkZChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlciwgJm1tby0+dm1h X25vZGUsCisJCQkJIG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFKTsKKwlpZiAoZXJyKQorCQly ZXR1cm4gZXJyOworCisJaW5pdF9tbWFwX29mZnNldChvYmosIG1tbyk7CisJcmV0dXJuIDA7CiB9 CiAKLWludAotaTkxNV9nZW1fbW1hcF9ndHQoc3RydWN0IGRybV9maWxlICpmaWxlLAotCQkgIHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCSAgdTMyIGhhbmRsZSwKLQkJICB1NjQgKm9mZnNldCkK K3N0YXRpYyBpbnQKK19fYXNzaWduX2dlbV9vYmplY3RfbW1hcF9kYXRhKHN0cnVjdCBkcm1fZmls ZSAqZmlsZSwKKwkJCSAgICAgIHUzMiBoYW5kbGUsCisJCQkgICAgICBlbnVtIGk5MTVfbW1hcF90 eXBlIG1tYXBfdHlwZSwKKwkJCSAgICAgIHU2NCAqb2Zmc2V0KQogewogCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbzsKIAlpbnQg cmV0OwogCi0JaWYgKCFpOTE1X2dndHRfaGFzX2FwZXJ0dXJlKCZ0b19pOTE1KGRldiktPmdndHQp KQotCQlyZXR1cm4gLUVOT0RFVjsKLQogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmls ZSwgaGFuZGxlKTsKIAlpZiAoIW9iaikKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlpZiAoaTkxNV9n ZW1fb2JqZWN0X25ldmVyX2JpbmRfZ2d0dChvYmopKSB7CisJaWYgKG1tYXBfdHlwZSA9PSBJOTE1 X01NQVBfVFlQRV9HVFQgJiYKKwkgICAgaTkxNV9nZW1fb2JqZWN0X25ldmVyX2JpbmRfZ2d0dChv YmopKSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJCWdvdG8gb3V0OwogCX0KIAotCXJldCA9IGNyZWF0 ZV9tbWFwX29mZnNldChvYmopOwotCWlmIChyZXQgPT0gMCkKLQkJKm9mZnNldCA9IGRybV92bWFf bm9kZV9vZmZzZXRfYWRkcigmb2JqLT5iYXNlLnZtYV9ub2RlKTsKKwltbW8gPSBremFsbG9jKHNp emVvZigqbW1vKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtbW8pIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJZ290byBvdXQ7CisJfQogCisJbW1vLT5maWxlID0gZmlsZTsKKwlyZXQgPSBjcmVhdGVfbW1h cF9vZmZzZXQob2JqLCBtbW8pOworCWlmIChyZXQpIHsKKwkJa2ZyZWUobW1vKTsKKwkJZ290byBv dXQ7CisJfQorCisJbW1vLT5tbWFwX3R5cGUgPSBtbWFwX3R5cGU7CisJKm9mZnNldCA9IGRybV92 bWFfbm9kZV9vZmZzZXRfYWRkcigmbW1vLT52bWFfbm9kZSk7CiBvdXQ6CiAJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOwogCXJldHVybiByZXQ7CkBAIC00OTIsNyArNTU2LDExOCBAQCBpOTE1X2dl bV9tbWFwX2d0dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogewog CXN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9ndHQgKmFyZ3MgPSBkYXRhOwogCi0JcmV0dXJuIGk5 MTVfZ2VtX21tYXBfZ3R0KGZpbGUsIGRldiwgYXJncy0+aGFuZGxlLCAmYXJncy0+b2Zmc2V0KTsK KwlyZXR1cm4gX19hc3NpZ25fZ2VtX29iamVjdF9tbWFwX2RhdGEoZmlsZSwgYXJncy0+aGFuZGxl LAorCQkJCQkgICAgIEk5MTVfTU1BUF9UWVBFX0dUVCwKKwkJCQkJICAgICAmYXJncy0+b2Zmc2V0 KTsKK30KKwordm9pZCBpOTE1X21tYXBfb2Zmc2V0X2Rlc3Ryb3koc3RydWN0IGk5MTVfbW1hcF9v ZmZzZXQgKm1tbywgc3RydWN0IG11dGV4ICptdXRleCkKK3sKKwlpZiAobW1vLT5maWxlKQorCQlk cm1fdm1hX25vZGVfcmV2b2tlKCZtbW8tPnZtYV9ub2RlLCBtbW8tPmZpbGUpOworCWRybV92bWFf b2Zmc2V0X3JlbW92ZShtbW8tPmRldi0+dm1hX29mZnNldF9tYW5hZ2VyLCAmbW1vLT52bWFfbm9k ZSk7CisKKwltdXRleF9sb2NrKG11dGV4KTsKKwlsaXN0X2RlbCgmbW1vLT5vZmZzZXQpOworCW11 dGV4X3VubG9jayhtdXRleCk7CisKKwlrZnJlZShtbW8pOworfQorCitzdGF0aWMgdm9pZCBpOTE1 X2dlbV92bV9vcGVuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBpOTE1 X21tYXBfb2Zmc2V0ICptbW8gPSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gbW1vLT5vYmo7CisKKwlHRU1fQlVHX09OKCFvYmopOworCWk5 MTVfZ2VtX29iamVjdF9nZXQob2JqKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1fdm1fY2xv c2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZz ZXQgKm1tbyA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBtbW8tPm9iajsKKworCUdFTV9CVUdfT04oIW9iaik7CisJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3Ry dWN0IGk5MTVfZ2VtX2d0dF92bV9vcHMgPSB7CisJLmZhdWx0ID0gaTkxNV9nZW1fZmF1bHQsCisJ Lm9wZW4gPSBpOTE1X2dlbV92bV9vcGVuLAorCS5jbG9zZSA9IGk5MTVfZ2VtX3ZtX2Nsb3NlLAor fTsKKworLyogVGhpcyBvdmVyY29tZXMgdGhlIGxpbWl0YXRpb24gaW4gZHJtX2dlbV9tbWFwJ3Mg YXNzaWdubWVudCBvZiBhCisgKiBkcm1fZ2VtX29iamVjdCBhcyB0aGUgdm1hLT52bV9wcml2YXRl X2RhdGEuIFNpbmNlIHdlIG5lZWQgdG8KKyAqIGJlIGFibGUgdG8gcmVzb2x2ZSBtdWx0aXBsZSBt bWFwIG9mZnNldHMgd2hpY2ggY291bGQgYmUgdGllZAorICogdG8gYSBzaW5nbGUgZ2VtIG9iamVj dC4KKyAqLworaW50IGk5MTVfZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2RlICpub2RlOwor CXN0cnVjdCBkcm1fZmlsZSAqcHJpdiA9IGZpbHAtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcHJpdi0+bWlub3ItPmRldjsKKwlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNl dCAqbW1vID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7CisKKwlp ZiAoZHJtX2Rldl9pc191bnBsdWdnZWQoZGV2KSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlkcm1f dm1hX29mZnNldF9sb2NrX2xvb2t1cChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlcik7CisJbm9kZSA9 IGRybV92bWFfb2Zmc2V0X2V4YWN0X2xvb2t1cF9sb2NrZWQoZGV2LT52bWFfb2Zmc2V0X21hbmFn ZXIsCisJCQkJCQkgIHZtYS0+dm1fcGdvZmYsCisJCQkJCQkgIHZtYV9wYWdlcyh2bWEpKTsKKwlp ZiAobGlrZWx5KG5vZGUpKSB7CisJCW1tbyA9IGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgaTkx NV9tbWFwX29mZnNldCwKKwkJCQkgICB2bWFfbm9kZSk7CisJCS8qCisJCSAqIEluIG91ciBkZXBl bmRlbmN5IGNoYWluLCB0aGUgZHJtX3ZtYV9vZmZzZXRfbm9kZQorCQkgKiBkZXBlbmRzIG9uIHRo ZSB2YWxpZGl0eSBvZiB0aGUgbW1vLCB3aGljaCBkZXBlbmRzIG9uCisJCSAqIHRoZSBnZW0gb2Jq ZWN0LiBIb3dldmVyIHRoZSBvbmx5IHJlZmVyZW5jZSB3ZSBoYXZlCisJCSAqIGF0IHRoaXMgcG9p bnQgaXMgdGhlIG1tbyAoYXMgdGhlIHBhcmVudCBvZiB0aGUgbm9kZSkuCisJCSAqIFRyeSB0byBj aGVjayBpZiB0aGUgZ2VtIG9iamVjdCB3YXMgYXQgbGVhc3QgY2xlYXJlZC4KKwkJICovCisJCWlm ICghbW1vIHx8ICFtbW8tPm9iaikgeworCQkJZHJtX3ZtYV9vZmZzZXRfdW5sb2NrX2xvb2t1cChk ZXYtPnZtYV9vZmZzZXRfbWFuYWdlcik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQkvKgor CQkgKiBTa2lwIDAtcmVmY250ZWQgb2JqZWN0cyBhcyBpdCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBi ZWluZworCQkgKiBkZXN0cm95ZWQgYW5kIHdpbGwgYmUgaW52YWxpZCB3aGVuIHRoZSB2bWEgbWFu YWdlciBsb2NrCisJCSAqIGlzIHJlbGVhc2VkLgorCQkgKi8KKwkJb2JqID0gJm1tby0+b2JqLT5i YXNlOworCQlpZiAoIWtyZWZfZ2V0X3VubGVzc196ZXJvKCZvYmotPnJlZmNvdW50KSkKKwkJCW9i aiA9IE5VTEw7CisKKwl9CisJZHJtX3ZtYV9vZmZzZXRfdW5sb2NrX2xvb2t1cChkZXYtPnZtYV9v ZmZzZXRfbWFuYWdlcik7CisKKwlpZiAoIW9iaikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAo IWRybV92bWFfbm9kZV9pc19hbGxvd2VkKG5vZGUsIHByaXYpKSB7CisJCWRybV9nZW1fb2JqZWN0 X3B1dF91bmxvY2tlZChvYmopOworCQlyZXR1cm4gLUVBQ0NFUzsKKwl9CisKKwlpZiAodG9faW50 ZWxfYm8ob2JqKS0+cmVhZG9ubHkpIHsKKwkJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9XUklURSkg eworCQkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCQl2bWEtPnZtX2ZsYWdzICY9IH5WTV9NQVlXUklURTsKKwl9CisKKwl2bWEtPnZt X2ZsYWdzIHw9IFZNX1BGTk1BUCB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUDsKKwl2bWEt PnZtX3BhZ2VfcHJvdCA9IHBncHJvdF93cml0ZWNvbWJpbmUodm1fZ2V0X3BhZ2VfcHJvdCh2bWEt PnZtX2ZsYWdzKSk7CisJdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGVjcnlwdGVkKHZtYS0+ dm1fcGFnZV9wcm90KTsKKwl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IG1tbzsKKworCXZtYS0+dm1f b3BzID0gJmk5MTVfZ2VtX2d0dF92bV9vcHM7CisKKwlyZXR1cm4gMDsKIH0KIAogI2lmIElTX0VO QUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5jCmluZGV4IGRiMTAzZDNjODc2MC4uMzBjNDRjOGZkNTU3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCkBAIC02MSw2ICs2MSw5 IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAogCUlOSVRfTElTVF9IRUFEKCZvYmotPmx1dF9saXN0KTsKIAorCW11dGV4X2luaXQo Jm9iai0+bW1vX2xvY2spOworCUlOSVRfTElTVF9IRUFEKCZvYmotPm1tYXBfb2Zmc2V0cyk7CisK IAlpbml0X3JjdV9oZWFkKCZvYmotPnJjdSk7CiAKIAlvYmotPm9wcyA9IG9wczsKQEAgLTE1OCw2 ICsxNjEsOCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAogCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgm aTkxNS0+cnVudGltZV9wbSk7CiAJbGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG9uLCBm cmVlZCwgZnJlZWQpIHsKKwkJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbywgKm1uOworCiAJ CXRyYWNlX2k5MTVfZ2VtX29iamVjdF9kZXN0cm95KG9iaik7CiAKIAkJaWYgKCFsaXN0X2VtcHR5 KCZvYmotPnZtYS5saXN0KSkgewpAQCAtMTgzLDYgKzE4OCwxNCBAQCBzdGF0aWMgdm9pZCBfX2k5 MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCXNw aW5fdW5sb2NrKCZvYmotPnZtYS5sb2NrKTsKIAkJfQogCisJCWk5MTVfZ2VtX29iamVjdF9yZWxl YXNlX21tYXAob2JqKTsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobW1vLCBtbiwgJm9i ai0+bW1hcF9vZmZzZXRzLCBvZmZzZXQpIHsKKwkJCW1tby0+b2JqID0gTlVMTDsKKwkJCWk5MTVf bW1hcF9vZmZzZXRfZGVzdHJveShtbW8sICZvYmotPm1tb19sb2NrKTsKKwkJfQorCisJCUdFTV9C VUdfT04oIWxpc3RfZW1wdHkoJm9iai0+bW1hcF9vZmZzZXRzKSk7CiAJCUdFTV9CVUdfT04oYXRv bWljX3JlYWQoJm9iai0+YmluZF9jb3VudCkpOwogCQlHRU1fQlVHX09OKG9iai0+dXNlcmZhdWx0 X2NvdW50KTsKIAkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmb2JqLT5sdXRfbGlzdCkpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCmluZGV4IGU1NzUwZDUwNmNj OS4uMzE0Y2JhNTdiMTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5oCkBAIC0xMzIsMTMgKzEzMiwxMyBAQCB2b2lkIGk5MTVfZ2VtX29iamVjdF91bmxvY2tf ZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIHN0YXRpYyBpbmxpbmUgdm9p ZAogaTkxNV9nZW1fb2JqZWN0X3NldF9yZWFkb25seShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogewotCW9iai0+YmFzZS52bWFfbm9kZS5yZWFkb25seSA9IHRydWU7CisJb2JqLT5y ZWFkb25seSA9IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAogaTkxNV9nZW1fb2JqZWN0 X2lzX3JlYWRvbmx5KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0J cmV0dXJuIG9iai0+YmFzZS52bWFfbm9kZS5yZWFkb25seTsKKwlyZXR1cm4gb2JqLT5yZWFkb25s eTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCkBAIC0zODcsOCArMzg3LDkgQEAgc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIH0KIAotdm9p ZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaik7Cit2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9ndHQoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNl X21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cit2b2lkIGk5MTVfZ2VtX29i amVjdF9yZWxlYXNlX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop OwogCiB2b2lkCiBpOTE1X2dlbV9vYmplY3RfZmx1c2hfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCkBAIC00NzMsNSArNDc0LDYgQEAgaW50IGk5MTVfZ2VtX29i amVjdF93YWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiBpbnQgaTkxNV9nZW1f b2JqZWN0X3dhaXRfcHJpb3JpdHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJ CQkgIHVuc2lnbmVkIGludCBmbGFncywKIAkJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkX2F0 dHIgKmF0dHIpOwordm9pZCBpOTE1X21tYXBfb2Zmc2V0X2Rlc3Ryb3koc3RydWN0IGk5MTVfbW1h cF9vZmZzZXQgKm1tbywgc3RydWN0IG11dGV4ICptdXRleCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCmluZGV4IDE1Zjgy OTdkYzM0ZS4uNjMyZDZiODA0Y2ZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCkBAIC02Myw2ICs2MywyMCBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdF9vcHMgewogCXZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKTsKIH07CiAKK2VudW0gaTkxNV9tbWFwX3R5cGUgeworCUk5MTVfTU1BUF9U WVBFX0dUVCA9IDAsCit9OworCitzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCB7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldjsKKwlzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSB2bWFfbm9kZTsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsK KwllbnVtIGk5MTVfbW1hcF90eXBlIG1tYXBfdHlwZTsKKworCXN0cnVjdCBsaXN0X2hlYWQgb2Zm c2V0OworfTsKKwogc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBkcm1fZ2Vt X29iamVjdCBiYXNlOwogCkBAIC0xMTgsNiArMTMyLDExIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0IHsKIAl1bnNpZ25lZCBpbnQgdXNlcmZhdWx0X2NvdW50OwogCXN0cnVjdCBsaXN0X2hl YWQgdXNlcmZhdWx0X2xpbms7CiAKKwkvKiBQcm90ZWN0cyBhY2Nlc3MgdG8gbW1hcCBvZmZzZXRz ICovCisJc3RydWN0IG11dGV4IG1tb19sb2NrOworCXN0cnVjdCBsaXN0X2hlYWQgbW1hcF9vZmZz ZXRzOworCWJvb2wgcmVhZG9ubHk6MTsKKwogCUk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3Qg bGlzdF9oZWFkIHN0X2xpbmspOwogCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKaW5kZXggOWYx YTY5MDI3YTA0Li43NzYxZDJlMDk3MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCkBAIC01NjQsMTUgKzU2NCwyMCBAQCBzdGF0 aWMgYm9vbCBhc3NlcnRfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CiAJCQkgICAgICAgaW50IGV4cGVjdGVkKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7CisJLyogT3duZXJzaGlwIHRyYW5zZmVycmVkIHRvIHBhcmVudCBnZW0gb2JqZWN0IGlu IGNyZWF0ZV9tbWFwX29mZnNldCAqLworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW8gPSBr emFsbG9jKHNpemVvZigqbW1vKSwgR0ZQX0tFUk5FTCk7CiAJaW50IGVycjsKIAogCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgc2l6ZSk7CiAJaWYgKElTX0VSUihv YmopKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwogCi0JZXJyID0gY3JlYXRlX21tYXBfb2Zmc2V0 KG9iaik7CisJZXJyID0gY3JlYXRlX21tYXBfb2Zmc2V0KG9iaiwgbW1vKTsKKwlpZiAoZXJyKQor CQlrZnJlZShtbW8pOwogCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIAorCiAJcmV0dXJuIGVy ciA9PSBleHBlY3RlZDsKIH0KIApAQCAtNjA4LDYgKzYxMyw4IEBAIHN0YXRpYyBpbnQgaWd0X21t YXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJnKQogCXN0cnVjdCBkcm1fbW0gKm1tID0gJmk5 MTUtPmRybS52bWFfb2Zmc2V0X21hbmFnZXItPnZtX2FkZHJfc3BhY2VfbW07CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgZHJtX21tX25vZGUgKmhvbGUsICpuZXh0 OworCS8qIE93bmVyc2hpcCB0cmFuc2ZlcnJlZCB0byBwYXJlbnQgZ2VtIG9iamVjdCBpbiBjcmVh dGVfbW1hcF9vZmZzZXQgKi8KKwlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vID0ga3phbGxv YyhzaXplb2YoKm1tbyksIEdGUF9LRVJORUwpOwogCWludCBsb29wLCBlcnI7CiAKIAkvKiBEaXNh YmxlIGJhY2tncm91bmQgcmVhcGVyICovCkBAIC02NzIsOSArNjc5LDEwIEBAIHN0YXRpYyBpbnQg aWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJnKQogCQlnb3RvIG91dDsKIAl9CiAK LQllcnIgPSBjcmVhdGVfbW1hcF9vZmZzZXQob2JqKTsKKwllcnIgPSBjcmVhdGVfbW1hcF9vZmZz ZXQob2JqLCBtbW8pOwogCWlmIChlcnIpIHsKIAkJcHJfZXJyKCJVbmFibGUgdG8gaW5zZXJ0IG9i amVjdCBpbnRvIHJlY2xhaW1lZCBob2xlXG4iKTsKKwkJa2ZyZWUobW1vKTsKIAkJZ290byBlcnJf b2JqOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVz ZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKaW5kZXggYjcwMDdj ZDc4YzZmLi43NzdlYWE0ODM2NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3Jlc2V0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQu YwpAQCAtNjc4LDggKzY3OCwxMyBAQCBzdGF0aWMgdm9pZCByZXZva2VfbW1hcHMoc3RydWN0IGlu dGVsX2d0ICpndCkKIAkJCWNvbnRpbnVlOwogCiAJCUdFTV9CVUdfT04odm1hLT5mZW5jZSAhPSAm Z3QtPmdndHQtPmZlbmNlX3JlZ3NbaV0pOwotCQlub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9u b2RlOworCisJCWlmICghdm1hLT5tbW8pCisJCQljb250aW51ZTsKKworCQlub2RlID0gJnZtYS0+ bW1vLT52bWFfbm9kZTsKIAkJdm1hX29mZnNldCA9IHZtYS0+Z2d0dF92aWV3LnBhcnRpYWwub2Zm c2V0IDw8IFBBR0VfU0hJRlQ7CisKIAkJdW5tYXBfbWFwcGluZ19yYW5nZShndC0+aTkxNS0+ZHJt LmFub25faW5vZGUtPmlfbWFwcGluZywKIAkJCQkgICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRy KG5vZGUpICsgdm1hX29mZnNldCwKIAkJCQkgICAgdm1hLT5zaXplLApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKaW5kZXggOGQ3MDQ5NzkyZDYyLi41ZmUwNzE2NDA4OTMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwpAQCAtMjY2MiwxOCArMjY2MiwxMiBAQCBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBp OTE1X3BtX29wcyA9IHsKIAkucnVudGltZV9yZXN1bWUgPSBpbnRlbF9ydW50aW1lX3Jlc3VtZSwK IH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgaTkxNV9nZW1f dm1fb3BzID0gewotCS5mYXVsdCA9IGk5MTVfZ2VtX2ZhdWx0LAotCS5vcGVuID0gZHJtX2dlbV92 bV9vcGVuLAotCS5jbG9zZSA9IGRybV9nZW1fdm1fY2xvc2UsCi19OwotCiBzdGF0aWMgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2RyaXZlcl9mb3BzID0gewogCS5vd25lciA9IFRI SVNfTU9EVUxFLAogCS5vcGVuID0gZHJtX29wZW4sCiAJLnJlbGVhc2UgPSBkcm1fcmVsZWFzZSwK IAkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGwsCi0JLm1tYXAgPSBkcm1fZ2VtX21tYXAsCisJ Lm1tYXAgPSBpOTE1X2dlbV9tbWFwLAogCS5wb2xsID0gZHJtX3BvbGwsCiAJLnJlYWQgPSBkcm1f cmVhZCwKIAkuY29tcGF0X2lvY3RsID0gaTkxNV9jb21wYXRfaW9jdGwsCkBAIC0yNzYyLDcgKzI3 NTYsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewogCiAJLmdlbV9jbG9z ZV9vYmplY3QgPSBpOTE1X2dlbV9jbG9zZV9vYmplY3QsCiAJLmdlbV9mcmVlX29iamVjdF91bmxv Y2tlZCA9IGk5MTVfZ2VtX2ZyZWVfb2JqZWN0LAotCS5nZW1fdm1fb3BzID0gJmk5MTVfZ2VtX3Zt X29wcywKIAogCS5wcmltZV9oYW5kbGVfdG9fZmQgPSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19m ZCwKIAkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUsCkBA IC0yNzczLDcgKzI3NjYsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewog CS5nZXRfc2Nhbm91dF9wb3NpdGlvbiA9IGk5MTVfZ2V0X2NydGNfc2Nhbm91dHBvcywKIAogCS5k dW1iX2NyZWF0ZSA9IGk5MTVfZ2VtX2R1bWJfY3JlYXRlLAotCS5kdW1iX21hcF9vZmZzZXQgPSBp OTE1X2dlbV9tbWFwX2d0dCwKIAkuaW9jdGxzID0gaTkxNV9pb2N0bHMsCiAJLm51bV9pb2N0bHMg PSBBUlJBWV9TSVpFKGk5MTVfaW9jdGxzKSwKIAkuZm9wcyA9ICZpOTE1X2RyaXZlcl9mb3BzLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMTc3OWY2MDBmY2ZiLi45NjhjNTNiZmI1N2IgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTg2MSw4ICsxODYxLDYgQEAgaTkxNV9tdXRleF9s b2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIGludCBpOTE1X2dlbV9k dW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJCSBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkJIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7Ci1pbnQg aTkxNV9nZW1fbW1hcF9ndHQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCi0JCSAgICAgIHUzMiBoYW5kbGUsIHU2NCAqb2Zmc2V0KTsKIGludCBpOTE1 X2dlbV9tbWFwX2d0dF92ZXJzaW9uKHZvaWQpOwogCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2Vt X3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKQEAg LTE4ODYsNiArMTg4NCw3IEBAIHZvaWQgaTkxNV9nZW1fZHJpdmVyX3JlbGVhc2Uoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fcmVzdW1l KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CitpbnQgaTkxNV9nZW1fbW1hcChz dHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogdm1fZmF1bHRf dCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7CiAKIGludCBpOTE1X2dlbV9v cGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNDNjNTMyNzU2YzdjLi5hMWRhOWI2ZDAzMWIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMTQ1LDYgKzE0NSw5IEBAIGludCBpOTE1X2dl bV9vYmplY3RfdW5iaW5kKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJbGlzdF9z cGxpY2UoJnN0aWxsX2luX2xpc3QsICZvYmotPnZtYS5saXN0KTsKIAlzcGluX3VubG9jaygmb2Jq LT52bWEubG9jayk7CiAKKwlpZiAoZmxhZ3MgJiBJOTE1X0dFTV9PQkpFQ1RfVU5CSU5EX0FDVElW RSkKKwkJaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcF9vZmZzZXQob2JqKTsKKwogCXJldHVy biByZXQ7CiB9CiAKQEAgLTg1NCw3ICs4NTcsNyBAQCB2b2lkIGk5MTVfZ2VtX3J1bnRpbWVfc3Vz cGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShvYmosIG9uLAogCQkJCSAmaTkxNS0+Z2d0dC51c2VyZmF1bHRfbGlzdCwgdXNlcmZh dWx0X2xpbmspCi0JCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbW1hcChvYmopOworCQlfX2k5 MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXBfZ3R0KG9iaik7CiAKIAkvKgogCSAqIFRoZSBmZW5j ZSB3aWxsIGJlIGxvc3Qgd2hlbiB0aGUgZGV2aWNlIHBvd2VycyBkb3duLiBJZiBhbnkgd2VyZQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmMKaW5kZXggZTU1MTJmMjZlMjBhLi44YzFhYWI5Yjk2MjcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuYwpAQCAtMTA1NCw3ICsxMDU0LDcgQEAgc3RhdGljIHZvaWQg X19pOTE1X3ZtYV9pb3VubWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCiB2b2lkIGk5MTVfdm1h X3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBkcm1fdm1hX29m ZnNldF9ub2RlICpub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOworCXN0cnVjdCBkcm1f dm1hX29mZnNldF9ub2RlICpub2RlOwogCXU2NCB2bWFfb2Zmc2V0OwogCiAJbG9ja2RlcF9hc3Nl cnRfaGVsZCgmdm1hLT52bS0+bXV0ZXgpOwpAQCAtMTA2NiwxMCArMTA2NiwxNSBAQCB2b2lkIGk5 MTVfdm1hX3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCUdFTV9CVUdfT04oIXZt YS0+b2JqLT51c2VyZmF1bHRfY291bnQpOwogCiAJdm1hX29mZnNldCA9IHZtYS0+Z2d0dF92aWV3 LnBhcnRpYWwub2Zmc2V0IDw8IFBBR0VfU0hJRlQ7Ci0JdW5tYXBfbWFwcGluZ19yYW5nZSh2bWEt PnZtLT5pOTE1LT5kcm0uYW5vbl9pbm9kZS0+aV9tYXBwaW5nLAotCQkJICAgIGRybV92bWFfbm9k ZV9vZmZzZXRfYWRkcihub2RlKSArIHZtYV9vZmZzZXQsCi0JCQkgICAgdm1hLT5zaXplLAotCQkJ ICAgIDEpOworCisJaWYgKHZtYS0+bW1vKSB7CisJCW5vZGUgPSAmdm1hLT5tbW8tPnZtYV9ub2Rl OworCisJCXVubWFwX21hcHBpbmdfcmFuZ2Uodm1hLT52bS0+aTkxNS0+ZHJtLmFub25faW5vZGUt PmlfbWFwcGluZywKKwkJCQkgICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKG5vZGUpICsgdm1h X29mZnNldCwKKwkJCQkgICAgdm1hLT5zaXplLAorCQkJCSAgICAxKTsKKwl9CiAKIAlpOTE1X3Zt YV91bnNldF91c2VyZmF1bHQodm1hKTsKIAlpZiAoIS0tdm1hLT5vYmotPnVzZXJmYXVsdF9jb3Vu dCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCmluZGV4IDQ2NTkzMjgxM2JjNS4uZjA5ZjRmNTEzYzQx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKQEAgLTYzLDYgKzYzLDkgQEAgc3RydWN0IGk5MTVf dm1hIHsKIAl1NjQgZGlzcGxheV9hbGlnbm1lbnQ7CiAJc3RydWN0IGk5MTVfcGFnZV9zaXplcyBw YWdlX3NpemVzOwogCisJLyogbW1hcC1vZmZzZXQgYXNzb2NpYXRlZCB3aXRoIGZlbmNpbmcgZm9y IHRoaXMgdm1hICovCisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQJKm1tbzsKKwogCXUzMiBmZW5j ZV9zaXplOwogCXUzMiBmZW5jZV9hbGlnbm1lbnQ7CiAKLS0gCjIuMjMuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4