From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 23/42] drm/i915: Move object release to a freelist + worker Date: Fri, 7 Oct 2016 10:46:16 +0100 Message-ID: <20161007094635.28319-24-chris@chris-wilson.co.uk> References: <20161007094635.28319-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id E14426EB44 for ; Fri, 7 Oct 2016 09:47:08 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id i130so2096797wmg.0 for ; Fri, 07 Oct 2016 02:47:08 -0700 (PDT) In-Reply-To: <20161007094635.28319-1-chris@chris-wilson.co.uk> 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 List-Id: intel-gfx@lists.freedesktop.org V2Ugd2FudCB0byBoaWRlIHRoZSBsYXRlbmN5IG9mIHJlbGVhc2luZyBvYmplY3RzIGFuZCB0aGVp ciBiYWNraW5nCnN0b3JhZ2UgZnJvbSB0aGUgc3VibWlzc2lvbiwgc28gd2UgbW92ZSB0aGUgYWN0 dWFsIGZyZWUgdG8gYSB3b3JrZXIuClRoaXMgYWxsb3dzIHVzIHRvIHN3aXRjaCB0byBzdHJ1Y3Rf bXV0ZXggZnJlZWluZyBvZiB0aGUgb2JqZWN0IGluIHRoZQpuZXh0IHBhdGNoLgoKRnVydGhlcm1v cmUsIGlmIHdlIGtub3cgdGhhdCB0aGUgb2JqZWN0IHdlIGFyZSBkZXJlZmVyZW5jaW5nIHJlbWFp bnMgdmFsaWQKZm9yIHRoZSBkdXJhdGlvbiBvZiBvdXIgYWNjZXNzLCB3ZSBjYW4gZm9yZ28gdGhl IHVzdWFsIHN5bmNocm9uaXNhdGlvbgpiYXJyaWVycyBhbmQgYXRvbWljIHJlZmVyZW5jZSBjb3Vu dGluZy4gVG8gZW5zdXJlIHRoaXMgd2UgZGVmZXIgZnJlZWluZwphbiBvYmplY3QgdGlsIGFmdGVy IGFuIFJDVSBncmFjZSBwZXJpb2QsIHN1Y2ggdGhhdCBhbnkgbG9va3VwIG9mIHRoZQpvYmplY3Qg d2l0aGluIGFuIFJDVSByZWFkIGNyaXRpY2FsIHNlY3Rpb24gd2lsbCByZW1haW4gdmFsaWQgdW50 aWwKYWZ0ZXIgd2UgZXhpdCB0aGF0IGNyaXRpY2FsIHNlY3Rpb24uIFdlIGFsc28gZW1wbG95IHRo aXMgZGVsYXkgZm9yCnJhdGUtbGltaXRpbmcgdGhlIHNlcmlhbGlzYXRpb24gb24gcmVhbGxvY2F0 aW9uIC0gd2UgaGF2ZSB0byBzbG93IGRvd24Kb2JqZWN0IGNyZWF0aW9uIGluIG9yZGVyIHRvIHBy ZXZlbnQgcmVzb3VyY2Ugc3RhcnZhdGlvbiAoaW4gcGFydGljdWxhciwKZmlsZXMpLgoKU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICB8ICAxNSArKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICA0NCArKysrKysrLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICB8IDE2NiArKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIHwgIDE0ICsr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgICB8ICAyMSArKy0tCiA2 IGZpbGVzIGNoYW5nZWQsIDE5MyBpbnNlcnRpb25zKCspLCA3MCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGI4MDdkZGY2NWUwNC4uMTQ0MDEzODc1NTEz IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtNDg3MiwxMCArNDg3MiwxMiBA QCBERUZJTkVfU0lNUExFX0FUVFJJQlVURShpOTE1X3JpbmdfdGVzdF9pcnFfZm9wcywKICNkZWZp bmUgRFJPUF9CT1VORCAweDIKICNkZWZpbmUgRFJPUF9SRVRJUkUgMHg0CiAjZGVmaW5lIERST1Bf QUNUSVZFIDB4OAotI2RlZmluZSBEUk9QX0FMTCAoRFJPUF9VTkJPVU5EIHwgXAotCQkgIERST1Bf Qk9VTkQgfCBcCi0JCSAgRFJPUF9SRVRJUkUgfCBcCi0JCSAgRFJPUF9BQ1RJVkUpCisjZGVmaW5l IERST1BfRlJFRUQgMHgxMAorI2RlZmluZSBEUk9QX0FMTCAoRFJPUF9VTkJPVU5ECXwgXAorCQkg IERST1BfQk9VTkQJfCBcCisJCSAgRFJPUF9SRVRJUkUJfCBcCisJCSAgRFJPUF9BQ1RJVkUJfCBc CisJCSAgRFJPUF9GUkVFRCkKIHN0YXRpYyBpbnQKIGk5MTVfZHJvcF9jYWNoZXNfZ2V0KHZvaWQg KmRhdGEsIHU2NCAqdmFsKQogewpAQCAtNDkxOSw2ICs0OTIxLDExIEBAIGk5MTVfZHJvcF9jYWNo ZXNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiB1bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7CiAKKwlpZiAodmFsICYgRFJPUF9GUkVFRCkgeworCQlzeW5jaHJvbml6 ZV9yY3UoKTsKKwkJZmx1c2hfd29yaygmZGV2X3ByaXYtPm1tLmZyZWVfd29yayk7CisJfQorCiAJ cmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggODlkMzIyMjE1Yzg0 Li5mN2Q0OGY5Nzk5M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNTYzLDYgKzU2Myw5 IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlp OTE1X2dlbV9jb250ZXh0X2ZpbmkoZGV2KTsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKIAorCXN5bmNocm9uaXplX3JjdSgpOworCWZsdXNoX3dvcmsoJmRldl9wcml2LT5tbS5m cmVlX3dvcmspOworCiAJV0FSTl9PTighbGlzdF9lbXB0eSgmdG9faTkxNShkZXYpLT5jb250ZXh0 X2xpc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggN2U5ZGYxOTBjODkxLi5l NzlhNWNiNzhiNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTM1NCwxMSArMTM1NCwx NyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0gewogCXN0cnVjdCBsaXN0X2hlYWQgYm91bmRfbGlzdDsK IAkvKioKIAkgKiBMaXN0IG9mIG9iamVjdHMgd2hpY2ggYXJlIG5vdCBib3VuZCB0byB0aGUgR1RU ICh0aHVzCi0JICogYXJlIGlkbGUgYW5kIG5vdCB1c2VkIGJ5IHRoZSBHUFUpIGJ1dCBzdGlsbCBo YXZlCi0JICogKHByZXN1bWFibHkgdW5jYWNoZWQpIHBhZ2VzIHN0aWxsIGF0dGFjaGVkLgorCSAq IGFyZSBpZGxlIGFuZCBub3QgdXNlZCBieSB0aGUgR1BVKS4gVGhlc2Ugb2JqZWN0cyBtYXkgb3Ig bWF5CisJICogbm90IGFjdHVhbGx5IGhhdmUgYW55IHBhZ2VzIGF0dGFjaGVkLgogCSAqLwogCXN0 cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0OwogCisJLyoqCisJICogTGlzdCBvZiBvYmplY3Rz IHdoaWNoIGFyZSBwZW5kaW5nIGRlc3RydWN0aW9uLgorCSAqLworCXN0cnVjdCBsbGlzdF9oZWFk IGZyZWVfbGlzdDsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrOworCiAJLyoqIFVzYWJs ZSBwb3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAqLwogCXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jh c2U7IC8qIGxpbWl0ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwogCkBAIC0yMjE0LDYgKzIy MjAsMTAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCS8qKiBTdG9sZW4gbWVtb3J5 IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBiYWNrZWQgYnkgc2htZW0uICovCiAJ c3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlz dDsKKwl1bmlvbiB7CisJCXN0cnVjdCByY3VfaGVhZCByY3U7CisJCXN0cnVjdCBsbGlzdF9ub2Rl IGZyZWVkOworCX07CiAKIAkvKiogVXNlZCBpbiBleGVjYnVmIHRvIHRlbXBvcmFyaWx5IGhvbGQg YSByZWYgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIG9ial9leGVjX2xpbms7CkBAIC0yMzMzLDEwICsy MzQzLDM4IEBAIHRvX2ludGVsX2JvKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtKQogCXJldHVy biBjb250YWluZXJfb2YoZ2VtLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgYmFzZSk7CiB9 CiAKKy8qKgorICogaTkxNV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UgLSBsb29rIHVwIGEgdGVtcG9y YXJ5IEdFTSBvYmplY3QgZnJvbSBpdHMgaGFuZGxlCisgKiBAZmlscDogRFJNIGZpbGUgcHJpdmF0 ZSBkYXRlCisgKiBAaGFuZGxlOiB1c2Vyc3BhY2UgaGFuZGxlCisgKgorICogUmV0dXJuczoKKyAq CisgKiBBIHBvaW50ZXIgdG8gdGhlIG9iamVjdCBuYW1lZCBieSB0aGUgaGFuZGxlIGlmIHN1Y2gg ZXhpc3RzIG9uIEBmaWxwLCBOVUxMCisgKiBvdGhlcndpc2UuIFRoaXMgb2JqZWN0IGlzIG9ubHkg dmFsaWQgd2hpbHN0IHVuZGVyIHRoZSBSQ1UgcmVhZCBsb2NrLCBhbmQKKyAqIG5vdGUgY2FyZWZ1 bGx5IHRoZSBvYmplY3QgbWF5IGJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4K KyAqLworc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitpOTE1X2dl bV9vYmplY3RfbG9va3VwX3JjdShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHUzMiBoYW5kbGUpCit7 CisjaWZkZWYgQ09ORklHX0xPQ0tERVAKKwlXQVJOX09OKCFsb2NrX2lzX2hlbGQoJnJjdV9sb2Nr X21hcCkpOworI2VuZGlmCisJcmV0dXJuIGlkcl9maW5kKCZmaWxlLT5vYmplY3RfaWRyLCBoYW5k bGUpOworfQorCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKIGk5 MTVfZ2VtX29iamVjdF9sb29rdXAoc3RydWN0IGRybV9maWxlICpmaWxlLCB1MzIgaGFuZGxlKQog ewotCXJldHVybiB0b19pbnRlbF9ibyhkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgaGFuZGxl KSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKworCXJjdV9yZWFkX2xvY2so KTsKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShmaWxlLCBoYW5kbGUpOworCWlm IChvYmogJiYgIWtyZWZfZ2V0X3VubGVzc196ZXJvKCZvYmotPmJhc2UucmVmY291bnQpKQorCQlv YmogPSBOVUxMOworCXJjdV9yZWFkX3VubG9jaygpOworCisJcmV0dXJuIG9iajsKIH0KIAogX19k ZXByZWNhdGVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA4MDA2OWYwZmE5YWMuLjdjZDQ5 ZGQxZDNmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5j bHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogCitzdGF0aWMg dm9pZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpOwogc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9kb21h aW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZCBpOTE1X2dl bV9vYmplY3RfZmx1c2hfY3B1X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKTsKIApAQCAtNjQ3LDYgKzY0OCw4IEBAIGk5MTVfZ2VtX2NyZWF0ZV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogewogCXN0cnVjdCBkcm1faTkxNV9nZW1f Y3JlYXRlICphcmdzID0gZGF0YTsKIAorCWk5MTVfZ2VtX2ZsdXNoX2ZyZWVfb2JqZWN0cyh0b19p OTE1KGRldikpOworCiAJcmV0dXJuIGk5MTVfZ2VtX2NyZWF0ZShmaWxlLCBkZXYsCiAJCQkgICAg ICAgYXJncy0+c2l6ZSwgJmFyZ3MtPmhhbmRsZSk7CiB9CkBAIC0zNDY5LDEwICszNDcyLDE0IEBA IGludCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyAqYXJncyA9IGRhdGE7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlpbnQgZXJyID0gMDsKIAotCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgYXJncy0+aGFuZGxlKTsKLQlpZiAoIW9i aikKLQkJcmV0dXJuIC1FTk9FTlQ7CisJcmN1X3JlYWRfbG9jaygpOworCW9iaiA9IGk5MTVfZ2Vt X29iamVjdF9sb29rdXBfcmN1KGZpbGUsIGFyZ3MtPmhhbmRsZSk7CisJaWYgKCFvYmopIHsKKwkJ ZXJyID0gLUVOT0VOVDsKKwkJZ290byBvdXQ7CisJfQogCiAJc3dpdGNoIChvYmotPmNhY2hlX2xl dmVsKSB7CiAJY2FzZSBJOTE1X0NBQ0hFX0xMQzoKQEAgLTM0ODgsOSArMzQ5NSw5IEBAIGludCBp OTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCQlhcmdzLT5jYWNoaW5nID0gSTkxNV9DQUNISU5HX05PTkU7CiAJCWJyZWFrOwogCX0K LQotCWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKLQlyZXR1cm4gMDsKK291dDoK KwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gZXJyOwogfQogCiBpbnQgaTkxNV9nZW1fc2V0 X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKQEAgLTQw MDEsMTAgKzQwMDgsMTQgQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSAqYXJncyA9IGRhdGE7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAl1bnNpZ25lZCBsb25nIGFjdGl2 ZTsKKwlpbnQgZXJyOwogCi0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdz LT5oYW5kbGUpOwotCWlmICghb2JqKQotCQlyZXR1cm4gLUVOT0VOVDsKKwlyY3VfcmVhZF9sb2Nr KCk7CisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UoZmlsZSwgYXJncy0+aGFuZGxl KTsKKwlpZiAoIW9iaikgeworCQllcnIgPSAtRU5PRU5UOworCQlnb3RvIG91dDsKKwl9CiAKIAlh cmdzLT5idXN5ID0gMDsKIAlhY3RpdmUgPSBfX0k5MTVfQk9fQUNUSVZFKG9iaik7CkBAIC00MDM0 LDcgKzQwNDUsNiBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJCSAqIGFyZSBidXN5IGlzIG5vdCBjb21wbGV0ZWx5IHJlbGlhYmxlIC0g d2Ugb25seSBndWFyYW50ZWUKIAkJICogdGhhdCB0aGUgb2JqZWN0IHdhcyBidXN5LgogCQkgKi8K LQkJcmN1X3JlYWRfbG9jaygpOwogCiAJCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkKIAkJ CWFyZ3MtPmJ1c3kgfD0gYnVzeV9jaGVja19yZWFkZXIoJm9iai0+bGFzdF9yZWFkW2lkeF0pOwpA QCAtNDA1MiwxMiArNDA2MiwxMSBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAqIHRoZSByZXN1bHQuCiAJCSAqLwogCQlhcmdzLT5i dXN5IHw9IGJ1c3lfY2hlY2tfd3JpdGVyKCZvYmotPmxhc3Rfd3JpdGUpOwotCi0JCXJjdV9yZWFk X3VubG9jaygpOwogCX0KIAotCWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKLQly ZXR1cm4gMDsKK291dDoKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gZXJyOwogfQogCiBp bnQKQEAgLTQyMDQsNyArNDIxMyw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICppOTE1 X2dlbV9vYmplY3RfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIGZhaWw6CiAJaTkx NV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsKLQogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKQEAg LTQyMzIsMTYgKzQyNDAsNjkgQEAgc3RhdGljIGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gYXRvbWljX2xvbmdfcmVh ZCgmb2JqLT5iYXNlLmZpbHAtPmZfY291bnQpID09IDE7CiB9CiAKLXZvaWQgaTkxNV9nZW1fZnJl ZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQorc3RhdGljIHZvaWQgX19p OTE1X2dlbV9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJ ICAgIHN0cnVjdCBsbGlzdF9ub2RlICpmcmVlZCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqID0gdG9faW50ZWxfYm8oZ2VtX29iaik7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IG9iai0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqbmV4dDsKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLCAqb247CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZf cHJpdik7CisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaW50ZWxfcnVu dGltZV9wbV9nZXQoaTkxNSk7CisJbGxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCBmcmVlZCwgZnJl ZWQpIHsKKwkJc3RydWN0IGk5MTVfdm1hICp2bWEsICp2bjsKKworCQl0cmFjZV9pOTE1X2dlbV9v YmplY3RfZGVzdHJveShvYmopOworCisJCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2lzX2Fj dGl2ZShvYmopKTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sCisJCQkJCSAm b2JqLT52bWFfbGlzdCwgb2JqX2xpbmspIHsKKwkJCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX2dn dHQodm1hKSk7CisJCQlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKKwkJCXZt YS0+ZmxhZ3MgJj0gfkk5MTVfVk1BX1BJTl9NQVNLOworCQkJaTkxNV92bWFfY2xvc2Uodm1hKTsK KwkJfQorCisJCWxpc3RfZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKKwl9CisJaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK KworCWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2JqLCBvbiwgZnJlZWQsIGZyZWVkKSB7CisJ CUdFTV9CVUdfT04ob2JqLT5iaW5kX2NvdW50KTsKKwkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgm b2JqLT5mcm9udGJ1ZmZlcl9iaXRzKSk7CisKKwkJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQorCQkJ b2JqLT5vcHMtPnJlbGVhc2Uob2JqKTsKKworCQlpZiAoV0FSTl9PTihpOTE1X2dlbV9vYmplY3Rf aGFzX3Bpbm5lZF9wYWdlcyhvYmopKSkKKwkJCWF0b21pY19zZXQoJm9iai0+bW0ucGFnZXNfcGlu X2NvdW50LCAwKTsKKwkJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJCUdFTV9C VUdfT04ob2JqLT5tbS5wYWdlcyk7CisKKwkJaWYgKG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoKQor CQkJZHJtX3ByaW1lX2dlbV9kZXN0cm95KCZvYmotPmJhc2UsIE5VTEwpOworCisJCWRybV9nZW1f b2JqZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7CisJCWk5MTVfZ2VtX2luZm9fcmVtb3ZlX29iaihp OTE1LCBvYmotPmJhc2Uuc2l6ZSk7CisKKwkJa2ZyZWUob2JqLT5iaXRfMTcpOworCQlpOTE1X2dl bV9vYmplY3RfZnJlZShvYmopOworCX0KK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1fZmx1c2hf ZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBs bGlzdF9ub2RlICpmcmVlZDsKIAotCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9kZXN0cm95KG9iaik7 CisJZnJlZWQgPSBsbGlzdF9kZWxfYWxsKCZpOTE1LT5tbS5mcmVlX2xpc3QpOworCWlmICh1bmxp a2VseShmcmVlZCkpCisJCV9faTkxNV9nZW1fZnJlZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKK30K Kworc3RhdGljIHZvaWQgX19pOTE1X2dlbV9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29m KHdvcmssIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLCBtbS5mcmVlX3dvcmspOworCXN0cnVjdCBs bGlzdF9ub2RlICpmcmVlZDsKIAogCS8qIEFsbCBmaWxlLW93bmVkIFZNQSBzaG91bGQgaGF2ZSBi ZWVuIHJlbGVhc2VkIGJ5IHRoaXMgcG9pbnQgdGhyb3VnaAogCSAqIGk5MTVfZ2VtX2Nsb3NlX29i amVjdCgpLCBvciBlYXJsaWVyIGJ5IGk5MTVfZ2VtX2NvbnRleHRfY2xvc2UoKS4KQEAgLTQyNTAs NDIgKzQzMTEsNDQgQEAgdm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdlbV9vYmopCiAJICogdGhlIEdUVCBlaXRoZXIgZm9yIHRoZSB1c2VyIG9yIGZvciBz Y2Fub3V0KS4gVGhvc2UgVk1BIHN0aWxsIG5lZWQgdG8KIAkgKiB1bmJvdW5kIG5vdy4KIAkgKi8K LQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmb2JqLT52bWFfbGlzdCwgb2Jq X2xpbmspIHsKLQkJR0VNX0JVR19PTighaTkxNV92bWFfaXNfZ2d0dCh2bWEpKTsKLQkJR0VNX0JV R19PTihpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSk7Ci0JCXZtYS0+ZmxhZ3MgJj0gfkk5MTVfVk1B X1BJTl9NQVNLOwotCQlpOTE1X3ZtYV9jbG9zZSh2bWEpOwotCX0KLQlHRU1fQlVHX09OKG9iai0+ YmluZF9jb3VudCk7CiAKLQlXQVJOX09OKGF0b21pY19yZWFkKCZvYmotPmZyb250YnVmZmVyX2Jp dHMpKTsKKwl3aGlsZSAoKGZyZWVkID0gbGxpc3RfZGVsX2FsbCgmaTkxNS0+bW0uZnJlZV9saXN0 KSkpCisJCV9faTkxNV9nZW1fZnJlZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKK30KIAotCWlmIChv YmotPm1tLnBhZ2VzICYmIG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfV0lMTE5FRUQgJiYKLQkg ICAgZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAmJgotCSAgICBp OTE1X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSkKLQkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5f cGFnZXMob2JqKTsKK3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RfcmN1KHN0cnVj dCByY3VfaGVhZCAqaGVhZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0K KwkJY29udGFpbmVyX29mKGhlYWQsIHR5cGVvZigqb2JqKSwgcmN1KTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CisKKwkvKiBXZSBjYW4n dCBzaW1wbHkgdXNlIGNhbGxfcmN1KCkgZnJvbSBpOTE1X2dlbV9mcmVlX29iamVjdCgpCisJICog YXMgd2UgbmVlZCB0byBibG9jayB3aGlsc3QgdW5iaW5kaW5nLCBhbmQgdGhlIGNhbGxfcmN1CisJ ICogdGFzayBtYXkgYmUgY2FsbGVkIGZyb20gc29mdGlycSBjb250ZXh0LiBTbyB3ZSB0YWtlIGEK KwkgKiBkZXRvdXIgdGhyb3VnaCBhIHdvcmtlci4KKwkgKi8KKwlpZiAobGxpc3RfYWRkKCZvYmot PmZyZWVkLCAmaTkxNS0+bW0uZnJlZV9saXN0KSkKKwkJc2NoZWR1bGVfd29yaygmaTkxNS0+bW0u ZnJlZV93b3JrKTsKK30KIAotCWlmIChvYmotPm9wcy0+cmVsZWFzZSkKLQkJb2JqLT5vcHMtPnJl bGVhc2Uob2JqKTsKK3ZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnZW1fb2JqKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0b19p bnRlbF9ibyhnZW1fb2JqKTsKIAotCWlmIChXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9oYXNfcGlu bmVkX3BhZ2VzKG9iaikpKQotCQlhdG9taWNfc2V0KCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwg MCk7CiAJaWYgKGRpc2NhcmRfYmFja2luZ19zdG9yYWdlKG9iaikpCiAJCW9iai0+bW0ubWFkdiA9 IEk5MTVfTUFEVl9ET05UTkVFRDsKLQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsK IAotCUdFTV9CVUdfT04ob2JqLT5tbS5wYWdlcyk7Ci0KLQlpZiAob2JqLT5iYXNlLmltcG9ydF9h dHRhY2gpCi0JCWRybV9wcmltZV9nZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBOVUxMKTsKLQotCWRy bV9nZW1fb2JqZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7Ci0JaTkxNV9nZW1faW5mb19yZW1vdmVf b2JqKGRldl9wcml2LCBvYmotPmJhc2Uuc2l6ZSk7Ci0KLQlrZnJlZShvYmotPmJpdF8xNyk7Ci0J aTkxNV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsKKwlpZiAob2JqLT5tbS5wYWdlcyAmJiBvYmotPm1t Lm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEICYmCisJICAgIHRvX2k5MTUob2JqLT5iYXNlLmRl diktPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAmJgorCSAgICBpOTE1X2dlbV9v YmplY3RfaXNfdGlsZWQob2JqKSkKKwkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2Jq KTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwkvKiBCZWZvcmUgd2UgZnJl ZSB0aGUgb2JqZWN0LCBtYWtlIHN1cmUgYW55IHB1cmUgUkNVLW9ubHkKKwkgKiByZWFkLXNpZGUg Y3JpdGljYWwgc2VjdGlvbnMgYXJlIGNvbXBsZXRlLCBlLmcuCisJICogaTkxNV9nZW1fYnVzeV9p b2N0bCgpLiBGb3IgdGhlIGNvcnJlc3BvbmRpbmcgc3luY2hyb25pemVkCisJICogbG9va3VwIHNl ZSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdSgpLgorCSAqLworCWNhbGxfcmN1KCZvYmotPnJj dSwgX19pOTE1X2dlbV9mcmVlX29iamVjdF9yY3UpOwogfQogCiB2b2lkIF9faTkxNV9nZW1fb2Jq ZWN0X3JlbGVhc2VfdW5sZXNzX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQpAQCAtNDMzNCw2ICs0Mzk3LDcgQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5ncHVfZXJy b3IuaGFuZ2NoZWNrX3dvcmspOwogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYt Pmd0LnJldGlyZV93b3JrKTsKIAlmbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ndC5pZGxl X3dvcmspOworCWZsdXNoX3dvcmsoJmRldl9wcml2LT5tbS5mcmVlX3dvcmspOwogCiAJLyogQXNz ZXJ0IHRoYXQgd2Ugc3VjZXNzZnVsbHkgZmx1c2hlZCBhbGwgdGhlIHdvcmsgYW5kCiAJICogcmVz ZXQgdGhlIEdQVSBiYWNrIHRvIGl0cyBpZGxlLCBsb3cgcG93ZXIgc3RhdGUuCkBAIC00NjMwLDYg KzQ2OTQsOCBAQCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJ CQkgIE5VTEwpOwogCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOwor CUlOSVRfV09SSygmZGV2X3ByaXYtPm1tLmZyZWVfd29yaywgX19pOTE1X2dlbV9mcmVlX3dvcmsp OworCWluaXRfbGxpc3RfaGVhZCgmZGV2X3ByaXYtPm1tLmZyZWVfbGlzdCk7CiAJSU5JVF9MSVNU X0hFQUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZf cHJpdi0+bW0uYm91bmRfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5j ZV9saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlu a2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCmluZGV4IDg2 OGRhMGJhZTc1MS4uZmE3MjQ3M2RjN2Y1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9zaHJpbmtlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3Nocmlua2VyLmMKQEAgLTIwMSw2ICsyMDEsMTAgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJCSAgICAgICB0eXBlb2YoKm9iaiksCiAJ CQkJCQkgICAgICAgZ2xvYmFsX2xpc3QpKSkgewogCQkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xv YmFsX2xpc3QsICZzdGlsbF9pbl9saXN0KTsKKwkJCWlmICghb2JqLT5tbS5wYWdlcykgeworCQkJ CWxpc3RfZGVsX2luaXQoJm9iai0+Z2xvYmFsX2xpc3QpOworCQkJCWNvbnRpbnVlOworCQkJfQog CiAJCQlpZiAoZmxhZ3MgJiBJOTE1X1NIUklOS19QVVJHRUFCTEUgJiYKIAkJCSAgICBvYmotPm1t Lm1hZHYgIT0gSTkxNV9NQURWX0RPTlRORUVEKQpAQCAtMjE3LDggKzIyMSw2IEBAIGk5MTVfZ2Vt X3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlpZiAoIWNhbl9y ZWxlYXNlX3BhZ2VzKG9iaikpCiAJCQkJY29udGludWU7CiAKLQkJCWk5MTVfZ2VtX29iamVjdF9n ZXQob2JqKTsKLQogCQkJaWYgKHVuc2FmZV9kcm9wX3BhZ2VzKG9iaikpIHsKIAkJCQltdXRleF9s b2NrKCZvYmotPm1tLmxvY2spOwogCQkJCWlmICghb2JqLT5tbS5wYWdlcykgewpAQCAtMjI3LDgg KzIyOSw2IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkJfQogCQkJCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKIAkJCX0KLQotCQkJ aTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwogCQl9CiAJCWxpc3Rfc3BsaWNlKCZzdGlsbF9pbl9s aXN0LCBwaGFzZS0+bGlzdCk7CiAJfQpAQCAtMzk1LDEyICszOTUsMTggQEAgaTkxNV9nZW1fc2hy aW5rZXJfb29tKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQs IHZvaWQgKnB0cikKIAkgKi8KIAl1bmJvdW5kID0gYm91bmQgPSB1bmV2aWN0YWJsZSA9IDA7CiAJ bGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0LCBnbG9i YWxfbGlzdCkgeworCQlpZiAoIW9iai0+bW0ucGFnZXMpCisJCQljb250aW51ZTsKKwogCQlpZiAo IWNhbl9yZWxlYXNlX3BhZ2VzKG9iaikpCiAJCQl1bmV2aWN0YWJsZSArPSBvYmotPmJhc2Uuc2l6 ZSA+PiBQQUdFX1NISUZUOwogCQllbHNlCiAJCQl1bmJvdW5kICs9IG9iai0+YmFzZS5zaXplID4+ IFBBR0VfU0hJRlQ7CiAJfQogCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmZGV2X3ByaXYtPm1t LmJvdW5kX2xpc3QsIGdsb2JhbF9saXN0KSB7CisJCWlmICghb2JqLT5tbS5wYWdlcykKKwkJCWNv bnRpbnVlOworCiAJCWlmICghY2FuX3JlbGVhc2VfcGFnZXMob2JqKSkKIAkJCXVuZXZpY3RhYmxl ICs9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fdGlsaW5nLmMKaW5kZXggMTFlMmUwZjU3YWMxLi5lYzQ4ZTQwM2FkZmUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCkBAIC0zMjgsMTIgKzMyOCwxNyBA QCBpOTE1X2dlbV9nZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJc3RydWN0IGRybV9pOTE1X2dlbV9nZXRfdGlsaW5nICphcmdzID0gZGF0YTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKKwlpbnQgZXJyID0gLUVOT0VOVDsKKworCXJjdV9yZWFkX2xv Y2soKTsKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShmaWxlLCBhcmdzLT5oYW5k bGUpOworCWlmIChvYmopIHsKKwkJYXJncy0+dGlsaW5nX21vZGUgPQorCQkJUkVBRF9PTkNFKG9i ai0+dGlsaW5nX2FuZF9zdHJpZGUpICYgVElMSU5HX01BU0s7CisJCWVyciA9IDA7CisJfQorCXJj dV9yZWFkX3VubG9jaygpOwogCi0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBh cmdzLT5oYW5kbGUpOwotCWlmICghb2JqKQotCQlyZXR1cm4gLUVOT0VOVDsKLQotCWFyZ3MtPnRp bGluZ19tb2RlID0gUkVBRF9PTkNFKG9iai0+dGlsaW5nX2FuZF9zdHJpZGUpICYgVElMSU5HX01B U0s7CiAJc3dpdGNoIChhcmdzLT50aWxpbmdfbW9kZSkgewogCWNhc2UgSTkxNV9USUxJTkdfWDoK IAkJYXJncy0+c3dpenpsZV9tb2RlID0gZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVfeDsKQEAg LTM0MSwxMSArMzQ2LDEwIEBAIGk5MTVfZ2VtX2dldF90aWxpbmcoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAljYXNlIEk5MTVfVElMSU5HX1k6CiAJCWFyZ3MtPnN3aXp6bGVf bW9kZSA9IGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3k7CiAJCWJyZWFrOworCWRlZmF1bHQ6 CiAJY2FzZSBJOTE1X1RJTElOR19OT05FOgogCQlhcmdzLT5zd2l6emxlX21vZGUgPSBJOTE1X0JJ VF82X1NXSVpaTEVfTk9ORTsKIAkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJRFJNX0VSUk9SKCJ1bmtu b3duIHRpbGluZyBtb2RlXG4iKTsKIAl9CiAKIAkvKiBIaWRlIGJpdCAxNyBmcm9tIHRoZSB1c2Vy IC0tIHNlZSBjb21tZW50IGluIGk5MTVfZ2VtX3NldF90aWxpbmcgKi8KQEAgLTM1OCw2ICszNjIs NSBAQCBpOTE1X2dlbV9nZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAJaWYgKGFyZ3MtPnN3aXp6bGVfbW9kZSA9PSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMF8x NykKIAkJYXJncy0+c3dpenpsZV9tb2RlID0gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTA7CiAKLQlp OTE1X2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGVy cjsKIH0KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK