From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v3 29/37] drm/i915: Allow i915 to manage the vma offset nodes instead of drm core Date: Fri, 9 Aug 2019 23:26:35 +0100 Message-ID: <20190809222643.23142-30-matthew.auld@intel.com> References: <20190809222643.23142-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809222643.23142-1-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: Abdiel Janulgue , Daniele Ceraolo Spurio , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgoK VGhpcyBlbmFibGVzIHVzIHRvIHN0b3JlIGV4dHJhIGRhdGEgd2l0aGluIHZtYS0+dm1fcHJpdmF0 ZV9kYXRhIGFuZCBhc3NpZ24KdGhlIHBhZ2VmYXVsdCBvcHMgZm9yIGVhY2ggbW1hcCBpbnN0YW5j ZS4KCldlIHJlcGxhY2UgdGhlIGNvcmUgZHJtX2dlbV9tbWFwIGltcGxlbWVudGF0aW9uIHRvIG92 ZXJjb21lIHRoZSBsaW1pdGF0aW9uCmluIGhhdmluZyBvbmx5IGEgc2luZ2xlIG9mZnNldCBub2Rl IHBlciBnZW0gb2JqZWN0LCBhbGxvd2luZyB1cyB0byBoYXZlCm11bHRpcGxlIG9mZnNldHMgcGVy IG9iamVjdC4gVGhpcyBlbmFibGVzIGEgbWFwcGluZyBpbnN0YW5jZSB0byB1c2UgdW5pcXVlCmZh dWx0LWhhZGxlcnMsIHBlciBvYmplY3QuCgpTaWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxndWUg PGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhbmllbGUgQ2Vy YW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyAgICAgIHwgMTgzICsrKysrKysrKysr KysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jICAgIHwg IDE2ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmggICAgfCAg IDcgKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oICB8ICAx OCArKwogLi4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jICAgIHwgIDEy ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAgICAgICAgfCAgMTMg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgICB8ICAgOSAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgICAgICAgICAgICB8ICAyMSArLQog OSBmaWxlcyBjaGFuZ2VkLCAyNDQgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKaW5kZXggMWU3MzExNDkzNTMwLi5k NGE5ZDU5ODAzYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9tbWFuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYwpA QCAtMjIxLDcgKzIyMSw4IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2Zh dWx0ICp2bWYpCiB7CiAjZGVmaW5lIE1JTl9DSFVOS19QQUdFUyAoU1pfMU0gPj4gUEFHRV9TSElG VCkKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmFyZWEgPSB2bWYtPnZtYTsKLQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdG9faW50ZWxfYm8oYXJlYS0+dm1fcHJpdmF0ZV9kYXRh KTsKKwlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqcHJpdiA9IGFyZWEtPnZtX3ByaXZhdGVfZGF0 YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gcHJpdi0+b2JqOwogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0g PSAmaTkxNS0+cnVudGltZV9wbTsKQEAgLTM3MywxMyArMzc0LDE1IEBAIHZtX2ZhdWx0X3QgaTkx NV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiB2b2lkIF9faTkxNV9nZW1fb2JqZWN0 X3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICptbW87CiAKIAlHRU1f QlVHX09OKCFvYmotPnVzZXJmYXVsdF9jb3VudCk7CiAKIAlvYmotPnVzZXJmYXVsdF9jb3VudCA9 IDA7CiAJbGlzdF9kZWwoJm9iai0+dXNlcmZhdWx0X2xpbmspOwotCWRybV92bWFfbm9kZV91bm1h cCgmb2JqLT5iYXNlLnZtYV9ub2RlLAotCQkJICAgb2JqLT5iYXNlLmRldi0+YW5vbl9pbm9kZS0+ aV9tYXBwaW5nKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1tbywgJm9iai0+bW1hcF9vZmZzZXRz LCBvZmZzZXQpCisJCWRybV92bWFfbm9kZV91bm1hcCgmbW1vLT52bWFfbm9kZSwKKwkJCQkgICBv YmotPmJhc2UuZGV2LT5hbm9uX2lub2RlLT5pX21hcHBpbmcpOwogCiAJZm9yX2VhY2hfZ2d0dF92 bWEodm1hLCBvYmopCiAJCWk5MTVfdm1hX3Vuc2V0X3VzZXJmYXVsdCh2bWEpOwpAQCAtNDMzLDE0 ICs0MzYsMzEgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRp bWVfcG0sIHdha2VyZWYpOwogfQogCi1zdGF0aWMgaW50IGNyZWF0ZV9tbWFwX29mZnNldChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIHZvaWQgaW5pdF9tbWFwX29mZnNl dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJICAgICBzdHJ1Y3QgaTkxNV9t bWFwX29mZnNldCAqbW1vKQoreworCW11dGV4X2xvY2soJm9iai0+bW1vX2xvY2spOworCWtyZWZf aW5pdCgmbW1vLT5yZWYpOworCWxpc3RfYWRkKCZtbW8tPm9mZnNldCwgJm9iai0+bW1hcF9vZmZz ZXRzKTsKKwltdXRleF91bmxvY2soJm9iai0+bW1vX2xvY2spOworfQorCitzdGF0aWMgaW50IGNy ZWF0ZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJICAg ICAgc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IG9iai0+YmFzZS5kZXY7CiAJaW50IGVycjsKIAotCWVyciA9IGRybV9nZW1fY3JlYXRl X21tYXBfb2Zmc2V0KCZvYmotPmJhc2UpOwotCWlmIChsaWtlbHkoIWVycikpCisJZHJtX3ZtYV9u b2RlX3Jlc2V0KCZtbW8tPnZtYV9ub2RlKTsKKwlpZiAobW1vLT5maWxlKQorCQlkcm1fdm1hX25v ZGVfYWxsb3coJm1tby0+dm1hX25vZGUsIG1tby0+ZmlsZSk7CisJZXJyID0gZHJtX3ZtYV9vZmZz ZXRfYWRkKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyLCAmbW1vLT52bWFfbm9kZSwKKwkJCQkgb2Jq LT5iYXNlLnNpemUgLyBQQUdFX1NJWkUpOworCWlmIChsaWtlbHkoIWVycikpIHsKKwkJaW5pdF9t bWFwX29mZnNldChvYmosIG1tbyk7CiAJCXJldHVybiAwOworCX0KIAogCS8qIEF0dGVtcHQgdG8g cmVhcCBzb21lIG1tYXAgc3BhY2UgZnJvbSBkZWFkIG9iamVjdHMgKi8KIAlkbyB7CkBAIC00NTEs MzIgKzQ3MSw0OSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQogCQkJYnJlYWs7CiAKIAkJaTkxNV9nZW1fZHJhaW5fZnJlZWRf b2JqZWN0cyhpOTE1KTsKLQkJZXJyID0gZHJtX2dlbV9jcmVhdGVfbW1hcF9vZmZzZXQoJm9iai0+ YmFzZSk7Ci0JCWlmICghZXJyKQorCQllcnIgPSBkcm1fdm1hX29mZnNldF9hZGQoZGV2LT52bWFf b2Zmc2V0X21hbmFnZXIsICZtbW8tPnZtYV9ub2RlLAorCQkJCQkgb2JqLT5iYXNlLnNpemUgLyBQ QUdFX1NJWkUpOworCQlpZiAoIWVycikgeworCQkJaW5pdF9tbWFwX29mZnNldChvYmosIG1tbyk7 CiAJCQlicmVhazsKKwkJfQogCiAJfSB3aGlsZSAoZmx1c2hfZGVsYXllZF93b3JrKCZpOTE1LT5n ZW0ucmV0aXJlX3dvcmspKTsKIAogCXJldHVybiBlcnI7CiB9CiAKLWludAotaTkxNV9nZW1fbW1h cF9ndHQoc3RydWN0IGRybV9maWxlICpmaWxlLAotCQkgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Ci0JCSAgdTMyIGhhbmRsZSwKLQkJICB1NjQgKm9mZnNldCkKK3N0YXRpYyBpbnQKK19fYXNzaWdu X2dlbV9vYmplY3RfbW1hcF9kYXRhKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKKwkJCSAgICAgIHUz MiBoYW5kbGUsCisJCQkgICAgICBlbnVtIGk5MTVfbW1hcF90eXBlIG1tYXBfdHlwZSwKKwkJCSAg ICAgIHU2NCAqb2Zmc2V0KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJ c3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbzsKIAlpbnQgcmV0OwogCiAJb2JqID0gaTkxNV9n ZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBoYW5kbGUpOwogCWlmICghb2JqKQogCQlyZXR1cm4gLUVO T0VOVDsKIAotCXJldCA9IGNyZWF0ZV9tbWFwX29mZnNldChvYmopOwotCWlmIChyZXQgPT0gMCkK LQkJKm9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmb2JqLT5iYXNlLnZtYV9ub2Rl KTsKKwltbW8gPSBremFsbG9jKHNpemVvZigqbW1vKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtbW8p IHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnI7CisJfQogCisJbW1vLT5maWxlID0gZmls ZTsKKwlyZXQgPSBjcmVhdGVfbW1hcF9vZmZzZXQob2JqLCBtbW8pOworCWlmIChyZXQpIHsKKwkJ a2ZyZWUobW1vKTsKKwkJZ290byBlcnI7CisJfQorCisJbW1vLT5tbWFwX3R5cGUgPSBtbWFwX3R5 cGU7CisJbW1vLT5vYmogPSBvYmo7CisJKm9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRk cigmbW1vLT52bWFfbm9kZSk7CitlcnI6CiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwogCXJl dHVybiByZXQ7CiB9CkBAIC01MDAsOSArNTM3LDExOSBAQCBpbnQKIGk5MTVfZ2VtX21tYXBfZ3R0 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX2d0dCAqYXJncyA9IGRh dGE7CisJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCAqYXJncyA9IGRhdGE7CisKKwly ZXR1cm4gX19hc3NpZ25fZ2VtX29iamVjdF9tbWFwX2RhdGEoZmlsZSwgYXJncy0+aGFuZGxlLAor CQkJCQkgICAgIEk5MTVfTU1BUF9UWVBFX0dUVCwKKwkJCQkJICAgICAmYXJncy0+b2Zmc2V0KTsK K30KKwordm9pZCBpOTE1X21tYXBfb2Zmc2V0X29iamVjdF9yZWxlYXNlKHN0cnVjdCBrcmVmICpy ZWYpCit7CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbyA9IGNvbnRhaW5lcl9vZihyZWYs CisJCQkJCQkgICAgc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQsCisJCQkJCQkgICAgcmVmKTsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gbW1vLT5vYmo7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7CisKKwlpZiAobW1vLT5maWxlKQorCQlkcm1fdm1h X25vZGVfcmV2b2tlKCZtbW8tPnZtYV9ub2RlLCBtbW8tPmZpbGUpOworCWRybV92bWFfb2Zmc2V0 X3JlbW92ZShkZXYtPnZtYV9vZmZzZXRfbWFuYWdlciwgJm1tby0+dm1hX25vZGUpOworCWxpc3Rf ZGVsKCZtbW8tPm9mZnNldCk7CisKKwlrZnJlZShtbW8pOworfQorCitzdGF0aWMgdm9pZCBpOTE1 X2dlbV92bV9vcGVuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBpOTE1 X21tYXBfb2Zmc2V0ICpwcml2ID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CisJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IHByaXYtPm9iajsKKworCWk5MTVfZ2VtX29iamVjdF9nZXQo b2JqKTsKKwlrcmVmX2dldCgmcHJpdi0+cmVmKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1f dm1fY2xvc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGk5MTVfbW1h cF9vZmZzZXQgKnByaXYgPSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0gcHJpdi0+b2JqOwogCi0JcmV0dXJuIGk5MTVfZ2VtX21tYXBfZ3R0 KGZpbGUsIGRldiwgYXJncy0+aGFuZGxlLCAmYXJncy0+b2Zmc2V0KTsKKwlpOTE1X2dlbV9vYmpl Y3RfcHV0KG9iaik7CisJa3JlZl9wdXQoJnByaXYtPnJlZiwgaTkxNV9tbWFwX29mZnNldF9vYmpl Y3RfcmVsZWFzZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1 Y3QgaTkxNV9nZW1fZ3R0X3ZtX29wcyA9IHsKKwkuZmF1bHQgPSBpOTE1X2dlbV9mYXVsdCwKKwku b3BlbiA9IGk5MTVfZ2VtX3ZtX29wZW4sCisJLmNsb3NlID0gaTkxNV9nZW1fdm1fY2xvc2UsCit9 OworCisvKiBUaGlzIG92ZXJjb21lcyB0aGUgbGltaXRhdGlvbiBpbiBkcm1fZ2VtX21tYXAncyBh c3NpZ25tZW50IG9mIGEKKyAqIGRybV9nZW1fb2JqZWN0IGFzIHRoZSB2bWEtPnZtX3ByaXZhdGVf ZGF0YS4gU2luY2Ugd2UgbmVlZCB0bworICogYmUgYWJsZSB0byByZXNvbHZlIG11bHRpcGxlIG1t YXAgb2Zmc2V0cyB3aGljaCBjb3VsZCBiZSB0aWVkCisgKiB0byBhIHNpbmdsZSBnZW0gb2JqZWN0 LgorICovCitpbnQgaTkxNV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5vZGU7CisJ c3RydWN0IGRybV9maWxlICpwcml2ID0gZmlscC0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBwcml2LT5taW5vci0+ZGV2OworCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0 ICptbW8gPSBOVUxMOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKKworCWlm IChkcm1fZGV2X2lzX3VucGx1Z2dlZChkZXYpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWRybV92 bWFfb2Zmc2V0X2xvY2tfbG9va3VwKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyKTsKKwlub2RlID0g ZHJtX3ZtYV9vZmZzZXRfZXhhY3RfbG9va3VwX2xvY2tlZChkZXYtPnZtYV9vZmZzZXRfbWFuYWdl ciwKKwkJCQkJCSAgdm1hLT52bV9wZ29mZiwKKwkJCQkJCSAgdm1hX3BhZ2VzKHZtYSkpOworCWlm IChsaWtlbHkobm9kZSkpIHsKKwkgICAgICAgIG1tbyA9IGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1 Y3QgaTkxNV9tbWFwX29mZnNldCwKKwkJCQkgICB2bWFfbm9kZSk7CisJCS8qCisJCSAqIFRha2Ug YSByZWYgZm9yIG91ciBtbWFwX29mZnNldCBhbmQgZ2VtIG9iamVjdHMuIFRoZSByZWZlcmVuY2Ug aXMgY2xlYW5lZAorCQkgKiB1cCB3aGVuIHRoZSB2bWEgaXMgY2xvc2VkLgorCQkgKgorCQkgKiBT a2lwIDAtcmVmY250ZWQgb2JqZWN0cyBhcyBpdCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBk ZXN0cm95ZWQKKwkJICogYW5kIHdpbGwgYmUgaW52YWxpZCB3aGVuIHRoZSB2bWEgbWFuYWdlciBs b2NrIGlzIHJlbGVhc2VkLgorCQkgKi8KKwkJaWYgKGtyZWZfZ2V0X3VubGVzc196ZXJvKCZtbW8t PnJlZikpIHsKKwkJCW9iaiA9ICZtbW8tPm9iai0+YmFzZTsKKwkJCWlmICgha3JlZl9nZXRfdW5s ZXNzX3plcm8oJm9iai0+cmVmY291bnQpKQorCQkJCW9iaiA9IE5VTEw7CisJCX0KKwl9CisJZHJt X3ZtYV9vZmZzZXRfdW5sb2NrX2xvb2t1cChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlcik7CisKKwlp ZiAoIW9iaikgeworCQlpZiAobW1vKQorCQkJa3JlZl9wdXQoJm1tby0+cmVmLCBpOTE1X21tYXBf b2Zmc2V0X29iamVjdF9yZWxlYXNlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKCFk cm1fdm1hX25vZGVfaXNfYWxsb3dlZChub2RlLCBwcml2KSkgeworCQlkcm1fZ2VtX29iamVjdF9w dXRfdW5sb2NrZWQob2JqKTsKKwkJcmV0dXJuIC1FQUNDRVM7CisJfQorCisJaWYgKHRvX2ludGVs X2JvKG9iaiktPnJlYWRvbmx5KSB7CisJCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpIHsK KwkJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOworCQkJcmV0dXJuIC1FSU5WQUw7 CisJCX0KKworCQl2bWEtPnZtX2ZsYWdzICY9IH5WTV9NQVlXUklURTsKKwl9CisKKwl2bWEtPnZt X2ZsYWdzIHw9IFZNX1BGTk1BUCB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUDsKKwl2bWEt PnZtX3BhZ2VfcHJvdCA9IHBncHJvdF93cml0ZWNvbWJpbmUodm1fZ2V0X3BhZ2VfcHJvdCh2bWEt PnZtX2ZsYWdzKSk7CisJdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGVjcnlwdGVkKHZtYS0+ dm1fcGFnZV9wcm90KTsKKwl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IG1tbzsKKworCXZtYS0+dm1f b3BzID0gJmk5MTVfZ2VtX2d0dF92bV9vcHM7CisKKwlyZXR1cm4gMDsKIH0KIAogI2lmIElTX0VO QUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5jCmluZGV4IDM5MjljM2E2YjI4MS4uMjRmNzM3YjAwZTg0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCkBAIC02OCw2ICs2OCw5 IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAogCUlOSVRfTElTVF9IRUFEKCZvYmotPmx1dF9saXN0KTsKIAorCW11dGV4X2luaXQo Jm9iai0+bW1vX2xvY2spOworCUlOSVRfTElTVF9IRUFEKCZvYmotPm1tYXBfb2Zmc2V0cyk7CisK IAlpbml0X3JjdV9oZWFkKCZvYmotPnJjdSk7CiAKIAlvYmotPm9wcyA9IG9wczsKQEAgLTEwOCw2 ICsxMTEsNyBAQCB2b2lkIGk5MTVfZ2VtX2Nsb3NlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmdlbSwgc3RydWN0IGRybV9maWxlICpmaWxlKQogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSB0b19pbnRlbF9ibyhnZW0pOwogCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZh dGUgKmZwcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7CiAJc3RydWN0IGk5MTVfbHV0X2hhbmRsZSAq bHV0LCAqbG47CisJc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQgKm1tbywgKm9uOwogCUxJU1RfSEVB RChjbG9zZSk7CiAKIAlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwpAQCAtMTIyLDYgKzEyNiwx MSBAQCB2b2lkIGk5MTVfZ2VtX2Nsb3NlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdl bSwgc3RydWN0IGRybV9maWxlICpmaWxlKQogCX0KIAlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9i aik7CiAKKwltdXRleF9sb2NrKCZvYmotPm1tb19sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUobW1vLCBvbiwgJm9iai0+bW1hcF9vZmZzZXRzLCBvZmZzZXQpCisJCWtyZWZfcHV0KCZt bW8tPnJlZiwgaTkxNV9tbWFwX29mZnNldF9vYmplY3RfcmVsZWFzZSk7CisJbXV0ZXhfdW5sb2Nr KCZvYmotPm1tb19sb2NrKTsKKwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsdXQsIGxuLCAm Y2xvc2UsIG9ial9saW5rKSB7CiAJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBsdXQt PmN0eDsKIAkJc3RydWN0IGk5MTVfdm1hICp2bWE7CkBAIC0xNzAsNiArMTc5LDcgQEAgc3RhdGlj IHZvaWQgX19pOTE1X2dlbV9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCiAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsK IAlsbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwgb24sIGZyZWVkLCBmcmVlZCkgewogCQlz dHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOworCQlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1v LCAqb247CiAKIAkJdHJhY2VfaTkxNV9nZW1fb2JqZWN0X2Rlc3Ryb3kob2JqKTsKIApAQCAtMTgz LDYgKzE5Myw3IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAogCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZvYmotPnZt YS5saXN0KSk7CiAJCUdFTV9CVUdfT04oIVJCX0VNUFRZX1JPT1QoJm9iai0+dm1hLnRyZWUpKTsK IAorCQlpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKG9iaik7CiAJCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmb2Jq LT5iaW5kX2NvdW50KSk7CkBAIC0yMDMsNiArMjE0LDExIEBAIHN0YXRpYyB2b2lkIF9faTkxNV9n ZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQlpZiAob2Jq LT5vcHMtPnJlbGVhc2UpCiAJCQlvYmotPm9wcy0+cmVsZWFzZShvYmopOwogCisJCW11dGV4X2xv Y2soJm9iai0+bW1vX2xvY2spOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobW1vLCBvbiwg Jm9iai0+bW1hcF9vZmZzZXRzLCBvZmZzZXQpCisJCQlrcmVmX3B1dCgmbW1vLT5yZWYsIGk5MTVf bW1hcF9vZmZzZXRfb2JqZWN0X3JlbGVhc2UpOworCQltdXRleF91bmxvY2soJm9iai0+bW1vX2xv Y2spOworCiAJCS8qIEJ1dCBrZWVwIHRoZSBwb2ludGVyIGFsaXZlIGZvciBSQ1UtcHJvdGVjdGVk IGxvb2t1cHMgKi8KIAkJY2FsbF9yY3UoJm9iai0+cmN1LCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0 X3JjdSk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCmlu ZGV4IDFjYmM2MzQ3MDIxMi4uMmJiMGM3NzljODUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX29iamVjdC5oCkBAIC0xMzEsMTMgKzEzMSwxMyBAQCBpOTE1X2dlbV9vYmpl Y3RfaXNfdm9sYXRpbGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHN0 YXRpYyBpbmxpbmUgdm9pZAogaTkxNV9nZW1fb2JqZWN0X3NldF9yZWFkb25seShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCW9iai0+YmFzZS52bWFfbm9kZS5yZWFkb25seSA9 IHRydWU7CisJb2JqLT5yZWFkb25seSA9IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAog aTkxNV9nZW1fb2JqZWN0X2lzX3JlYWRvbmx5KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiB7Ci0JcmV0dXJuIG9iai0+YmFzZS52bWFfbm9kZS5yZWFkb25seTsKKwlyZXR1 cm4gb2JqLT5yZWFkb25seTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCkBAIC00MzUsNiArNDM1 LDkgQEAgaW50IGk5MTVfZ2VtX29iamVjdF93YWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCiBpbnQgaTkxNV9nZW1fb2JqZWN0X3dhaXRfcHJpb3JpdHkoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAkJCQkgIHVuc2lnbmVkIGludCBmbGFncywKIAkJCQkgIGNvbnN0 IHN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgKmF0dHIpOworCit2b2lkIGk5MTVfbW1hcF9vZmZzZXRf b2JqZWN0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZik7CisKICNkZWZpbmUgSTkxNV9QUklPUklU WV9ESVNQTEFZIEk5MTVfVVNFUl9QUklPUklUWShJOTE1X1BSSU9SSVRZX01BWCkKIAogI2VuZGlm CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5 cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgK aW5kZXggY2QwNjA1MWViNzk3Li5hMzc0NWY3ZDU3YTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKQEAgLTYyLDYgKzYyLDE5IEBAIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyB7CiAJdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogfTsKIAorZW51bSBpOTE1X21tYXBfdHlwZSB7CisJ STkxNV9NTUFQX1RZUEVfR1RUID0gMCwKK307CisKK3N0cnVjdCBpOTE1X21tYXBfb2Zmc2V0IHsK KwlzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSB2bWFfbm9kZTsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCogb2JqOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKKwllbnVtIGk5MTVfbW1h cF90eXBlIG1tYXBfdHlwZTsKKwlzdHJ1Y3Qga3JlZiByZWY7CisJc3RydWN0IGxpc3RfaGVhZCBv ZmZzZXQ7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGRybV9n ZW1fb2JqZWN0IGJhc2U7CiAKQEAgLTExNyw2ICsxMzAsMTEgQEAgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgewogCXVuc2lnbmVkIGludCB1c2VyZmF1bHRfY291bnQ7CiAJc3RydWN0IGxpc3Rf aGVhZCB1c2VyZmF1bHRfbGluazsKIAorCS8qIFByb3RlY3RzIGFjY2VzcyB0byBtbWFwIG9mZnNl dHMgKi8KKwlzdHJ1Y3QgbXV0ZXggbW1vX2xvY2s7CisJc3RydWN0IGxpc3RfaGVhZCBtbWFwX29m ZnNldHM7CisJYm9vbCByZWFkb25seToxOworCiAJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0cnVj dCBsaXN0X2hlYWQgc3RfbGluayk7CiAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwppbmRleCBm YTgzNzQ1YWJjYzAuLjRlMzM2ZDY4ZDZlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKQEAgLTM3MSwxNSArMzcxLDIwIEBAIHN0 YXRpYyBib29sIGFzc2VydF9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKIAkJCSAgICAgICBpbnQgZXhwZWN0ZWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iajsKKwkvKiByZWZjb3VudGVkIGluIGNyZWF0ZV9tbWFwX29mZnNldCAqLworCXN0cnVj dCBpOTE1X21tYXBfb2Zmc2V0ICptbW8gPSBremFsbG9jKHNpemVvZigqbW1vKSwgR0ZQX0tFUk5F TCk7CiAJaW50IGVycjsKIAogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwo aTkxNSwgc2l6ZSk7CiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwog Ci0JZXJyID0gY3JlYXRlX21tYXBfb2Zmc2V0KG9iaik7CisJZXJyID0gY3JlYXRlX21tYXBfb2Zm c2V0KG9iaiwgbW1vKTsKIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CiAKKwlpZiAoZXJyKQor CQlrZnJlZShtbW8pOworCiAJcmV0dXJuIGVyciA9PSBleHBlY3RlZDsKIH0KIApAQCAtNDIyLDYg KzQyNyw4IEBAIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJn KQogCXN0cnVjdCBkcm1fbW0gKm1tID0gJmk5MTUtPmRybS52bWFfb2Zmc2V0X21hbmFnZXItPnZt X2FkZHJfc3BhY2VfbW07CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1 Y3QgZHJtX21tX25vZGUgcmVzdiwgKmhvbGU7CisJLyogcmVmY291bnRlZCBpbiBjcmVhdGVfbW1h cF9vZmZzZXQgKi8KKwlzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vID0ga3phbGxvYyhzaXpl b2YoKm1tbyksIEdGUF9LRVJORUwpOwogCXU2NCBob2xlX3N0YXJ0LCBob2xlX2VuZDsKIAlpbnQg bG9vcCwgZXJyOwogCkBAIC00NjUsOSArNDcyLDEwIEBAIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zm c2V0X2V4aGF1c3Rpb24odm9pZCAqYXJnKQogCQlnb3RvIG91dDsKIAl9CiAKLQllcnIgPSBjcmVh dGVfbW1hcF9vZmZzZXQob2JqKTsKKwllcnIgPSBjcmVhdGVfbW1hcF9vZmZzZXQob2JqLCBtbW8p OwogCWlmIChlcnIpIHsKIAkJcHJfZXJyKCJVbmFibGUgdG8gaW5zZXJ0IG9iamVjdCBpbnRvIHJl Y2xhaW1lZCBob2xlXG4iKTsKKwkJa2ZyZWUobW1vKTsKIAkJZ290byBlcnJfb2JqOwogCX0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKaW5kZXggZWM4NTc0MGRlOTQyLi40OTY4 YzhjNzYzM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwpAQCAtNjI4LDYg KzYyOCw3IEBAIHN0YXRpYyB2b2lkIHJldm9rZV9tbWFwcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQog CiAJZm9yIChpID0gMDsgaSA8IGd0LT5nZ3R0LT5udW1fZmVuY2VzOyBpKyspIHsKIAkJc3RydWN0 IGRybV92bWFfb2Zmc2V0X25vZGUgKm5vZGU7CisJCXN0cnVjdCBpOTE1X21tYXBfb2Zmc2V0ICpt bW87CiAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCQl1NjQgdm1hX29mZnNldDsKIApAQCAtNjQx LDEwICs2NDIsMjAgQEAgc3RhdGljIHZvaWQgcmV2b2tlX21tYXBzKHN0cnVjdCBpbnRlbF9ndCAq Z3QpCiAJCUdFTV9CVUdfT04odm1hLT5mZW5jZSAhPSAmZ3QtPmdndHQtPmZlbmNlX3JlZ3NbaV0p OwogCQlub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOwogCQl2bWFfb2Zmc2V0ID0gdm1h LT5nZ3R0X3ZpZXcucGFydGlhbC5vZmZzZXQgPDwgUEFHRV9TSElGVDsKLQkJdW5tYXBfbWFwcGlu Z19yYW5nZShndC0+aTkxNS0+ZHJtLmFub25faW5vZGUtPmlfbWFwcGluZywKKworCQltdXRleF9s b2NrKCZ2bWEtPm9iai0+bW1vX2xvY2spOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1tbywgJnZt YS0+b2JqLT5tbWFwX29mZnNldHMsIG9mZnNldCkgeworCQkJbm9kZSA9ICZtbW8tPnZtYV9ub2Rl OworCQkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJm5vZGUtPnZtX25vZGUpIHx8CisJCQkg ICAgbW1vLT5tbWFwX3R5cGUgIT0gSTkxNV9NTUFQX1RZUEVfR1RUKQorCQkJCWNvbnRpbnVlOwor CisJCQl1bm1hcF9tYXBwaW5nX3JhbmdlKGd0LT5pOTE1LT5kcm0uYW5vbl9pbm9kZS0+aV9tYXBw aW5nLAogCQkJCSAgICBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIobm9kZSkgKyB2bWFfb2Zmc2V0 LAogCQkJCSAgICB2bWEtPnNpemUsCiAJCQkJICAgIDEpOworCQl9CisJCW11dGV4X3VubG9jaygm dm1hLT5vYmotPm1tb19sb2NrKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4 IDIyZTg3YWUzNjYyMS4uZmNlZTA2ZWQzNDY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAg LTI2NTgsMTggKzI2NTgsMTIgQEAgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgaTkxNV9wbV9vcHMg PSB7CiAJLnJ1bnRpbWVfcmVzdW1lID0gaW50ZWxfcnVudGltZV9yZXN1bWUsCiB9OwogCi1zdGF0 aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGk5MTVfZ2VtX3ZtX29wcyA9IHsK LQkuZmF1bHQgPSBpOTE1X2dlbV9mYXVsdCwKLQkub3BlbiA9IGRybV9nZW1fdm1fb3BlbiwKLQku Y2xvc2UgPSBkcm1fZ2VtX3ZtX2Nsb3NlLAotfTsKLQogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgaTkxNV9kcml2ZXJfZm9wcyA9IHsKIAkub3duZXIgPSBUSElTX01PRFVMRSwK IAkub3BlbiA9IGRybV9vcGVuLAogCS5yZWxlYXNlID0gZHJtX3JlbGVhc2UsCiAJLnVubG9ja2Vk X2lvY3RsID0gZHJtX2lvY3RsLAotCS5tbWFwID0gZHJtX2dlbV9tbWFwLAorCS5tbWFwID0gaTkx NV9nZW1fbW1hcCwKIAkucG9sbCA9IGRybV9wb2xsLAogCS5yZWFkID0gZHJtX3JlYWQsCiAJLmNv bXBhdF9pb2N0bCA9IGk5MTVfY29tcGF0X2lvY3RsLApAQCAtMjc1OCw3ICsyNzUyLDYgQEAgc3Rh dGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKIAogCS5nZW1fY2xvc2Vfb2JqZWN0ID0g aTkxNV9nZW1fY2xvc2Vfb2JqZWN0LAogCS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQgPSBpOTE1 X2dlbV9mcmVlX29iamVjdCwKLQkuZ2VtX3ZtX29wcyA9ICZpOTE1X2dlbV92bV9vcHMsCiAKIAku cHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCiAJLnByaW1l X2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKaW5kZXggMTgyZWQ2YjQ2YWE1Li41YTViOTA2NzBlMTYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaApAQCAtMjM5Niw2ICsyMzk2LDcgQEAgaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lk bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogdm9pZCBpOTE1X2dlbV9zdXNw ZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGk5MTVfZ2VtX3N1 c3BlbmRfbGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1 X2dlbV9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2ludCBpOTE1 X2dlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7 CiB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKIAogaW50 IGk5MTVfZ2VtX29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwppbmRleCA0MTgzYjBlMTAzMjQuLmVj MmE0MWUxYTA0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCkBAIC04NjUsNyArODY1LDggQEAg c3RhdGljIHZvaWQgX19pOTE1X3ZtYV9pb3VubWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCiB2 b2lkIGk5MTVfdm1hX3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVj dCBkcm1fdm1hX29mZnNldF9ub2RlICpub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOwor CXN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2RlICpub2RlOworCXN0cnVjdCBpOTE1X21tYXBfb2Zm c2V0ICptbW87CiAJdTY0IHZtYV9vZmZzZXQ7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEt PnZtLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKQEAgLTg3NywxMCArODc4LDIwIEBAIHZvaWQg aTkxNV92bWFfcmV2b2tlX21tYXAoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJR0VNX0JVR19PTigh dm1hLT5vYmotPnVzZXJmYXVsdF9jb3VudCk7CiAKIAl2bWFfb2Zmc2V0ID0gdm1hLT5nZ3R0X3Zp ZXcucGFydGlhbC5vZmZzZXQgPDwgUEFHRV9TSElGVDsKLQl1bm1hcF9tYXBwaW5nX3JhbmdlKHZt YS0+dm0tPmk5MTUtPmRybS5hbm9uX2lub2RlLT5pX21hcHBpbmcsCi0JCQkgICAgZHJtX3ZtYV9u b2RlX29mZnNldF9hZGRyKG5vZGUpICsgdm1hX29mZnNldCwKLQkJCSAgICB2bWEtPnNpemUsCi0J CQkgICAgMSk7CisKKwltdXRleF9sb2NrKCZ2bWEtPm9iai0+bW1vX2xvY2spOworCWxpc3RfZm9y X2VhY2hfZW50cnkobW1vLCAmdm1hLT5vYmotPm1tYXBfb2Zmc2V0cywgb2Zmc2V0KSB7CisJCW5v ZGUgPSAmbW1vLT52bWFfbm9kZTsKKwkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJm5vZGUt PnZtX25vZGUpIHx8CisJCSAgICBtbW8tPm1tYXBfdHlwZSAhPSBJOTE1X01NQVBfVFlQRV9HVFQp CisJCQljb250aW51ZTsKKworCQl1bm1hcF9tYXBwaW5nX3JhbmdlKHZtYS0+dm0tPmk5MTUtPmRy bS5hbm9uX2lub2RlLT5pX21hcHBpbmcsCisJCQkJICAgIGRybV92bWFfbm9kZV9vZmZzZXRfYWRk cihub2RlKSArIHZtYV9vZmZzZXQsCisJCQkJICAgIHZtYS0+c2l6ZSwKKwkJCQkgICAgMSk7CisJ fQorCW11dGV4X3VubG9jaygmdm1hLT5vYmotPm1tb19sb2NrKTsKIAogCWk5MTVfdm1hX3Vuc2V0 X3VzZXJmYXVsdCh2bWEpOwogCWlmICghLS12bWEtPm9iai0+dXNlcmZhdWx0X2NvdW50KQotLSAK Mi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=