From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 24/41] drm/i915: Move object release to a freelist + worker Date: Thu, 20 Oct 2016 16:04:06 +0100 Message-ID: <20161020150423.4560-25-chris@chris-wilson.co.uk> References: <20161020150423.4560-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-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id B49C36EBA3 for ; Thu, 20 Oct 2016 15:04:56 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id b75so717902lfg.3 for ; Thu, 20 Oct 2016 08:04:56 -0700 (PDT) In-Reply-To: <20161020150423.4560-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 ZXZlbnQgcmVzb3VyY2Ugc3RhcnZhdGlvbiAoaW4gcGFydGljdWxhciwKZmlsZXMpLgoKdjI6IFJl dHVybiBlYXJseSBpbiBpOTE1X2dlbV90aWxpbmcoKSBpb2N0bCB0byBza2lwIG92ZXIgc3VwZXJm bHVvdXMKd29yayBvbiBlcnJvci4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMu bGFodGluZW5AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICAgICAgfCAgMTUgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j ICAgICAgICAgIHwgIDE5ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg ICAgICAgfCAgNDQgKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAg ICAgICAgfCAxNjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8ICAxNCArKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3RpbGluZy5jICAgfCAgMjEgKystLQogNiBmaWxlcyBjaGFuZ2VkLCAyMDIg aW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwppbmRleCA0ODkzYTNiNjJhNjguLjI3ODBiMDdlMDRjMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKQEAgLTQ4ODksMTAgKzQ4ODksMTIgQEAgREVGSU5FX1NJTVBMRV9BVFRS SUJVVEUoaTkxNV9yaW5nX3Rlc3RfaXJxX2ZvcHMsCiAjZGVmaW5lIERST1BfQk9VTkQgMHgyCiAj ZGVmaW5lIERST1BfUkVUSVJFIDB4NAogI2RlZmluZSBEUk9QX0FDVElWRSAweDgKLSNkZWZpbmUg RFJPUF9BTEwgKERST1BfVU5CT1VORCB8IFwKLQkJICBEUk9QX0JPVU5EIHwgXAotCQkgIERST1Bf UkVUSVJFIHwgXAotCQkgIERST1BfQUNUSVZFKQorI2RlZmluZSBEUk9QX0ZSRUVEIDB4MTAKKyNk ZWZpbmUgRFJPUF9BTEwgKERST1BfVU5CT1VORAl8IFwKKwkJICBEUk9QX0JPVU5ECXwgXAorCQkg IERST1BfUkVUSVJFCXwgXAorCQkgIERST1BfQUNUSVZFCXwgXAorCQkgIERST1BfRlJFRUQpCiBz dGF0aWMgaW50CiBpOTE1X2Ryb3BfY2FjaGVzX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKIHsK QEAgLTQ5MzYsNiArNDkzOCwxMSBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1 NjQgdmFsKQogdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCisJ aWYgKHZhbCAmIERST1BfRlJFRUQpIHsKKwkJc3luY2hyb25pemVfcmN1KCk7CisJCWZsdXNoX3dv cmsoJmRldl9wcml2LT5tbS5mcmVlX3dvcmspOworCX0KKwogCXJldHVybiByZXQ7CiB9CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDk5ZTRlMDQ0ZTk1OC4uZGQ5Y2VhOGVjMjVjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTUzNywxNCArNTM3LDE3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyBpOTE1X3N3aXRjaGVyb29fb3BzID0gewog CS5jYW5fc3dpdGNoID0gaTkxNV9zd2l0Y2hlcm9vX2Nhbl9zd2l0Y2gsCiB9OwogCi1zdGF0aWMg dm9pZCBpOTE1X2dlbV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBp OTE1X2dlbV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaTkxNV9nZW1fY2xlYW51cF9lbmdpbmVzKGRl dik7Ci0JaTkxNV9nZW1fY29udGV4dF9maW5pKGRldik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwor CWk5MTVfZ2VtX2NsZWFudXBfZW5naW5lcygmZGV2X3ByaXYtPmRybSk7CisJaTkxNV9nZW1fY29u dGV4dF9maW5pKCZkZXZfcHJpdi0+ZHJtKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKKworCXN5bmNocm9uaXplX3JjdSgpOworCWZsdXNoX3dvcmsoJmRldl9w cml2LT5tbS5mcmVlX3dvcmspOwogCi0JV0FSTl9PTighbGlzdF9lbXB0eSgmdG9faTkxNShkZXYp LT5jb250ZXh0X2xpc3QpKTsKKwlXQVJOX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+Y29udGV4 dF9saXN0KSk7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQpAQCAtNjE5LDcgKzYyMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2Fk X21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogY2xlYW51cF9nZW06CiAJaWYg KGk5MTVfZ2VtX3N1c3BlbmQoZGV2KSkKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaWRsZSBoYXJk d2FyZTsgY29udGludWluZyB0byB1bmxvYWQhXG4iKTsKLQlpOTE1X2dlbV9maW5pKGRldik7CisJ aTkxNV9nZW1fZmluaShkZXZfcHJpdik7CiBjbGVhbnVwX2lycToKIAlpbnRlbF9ndWNfZmluaShk ZXYpOwogCWRybV9pcnFfdW5pbnN0YWxsKGRldik7CkBAIC0xMzAzLDcgKzEzMDYsNyBAQCB2b2lk IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWRyYWluX3dvcmtx dWV1ZShkZXZfcHJpdi0+d3EpOwogCiAJaW50ZWxfZ3VjX2ZpbmkoZGV2KTsKLQlpOTE1X2dlbV9m aW5pKGRldik7CisJaTkxNV9nZW1fZmluaShkZXZfcHJpdik7CiAJaW50ZWxfZmJjX2NsZWFudXBf Y2ZiKGRldl9wcml2KTsKIAogCWludGVsX3Bvd2VyX2RvbWFpbnNfZmluaShkZXZfcHJpdik7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA0ODc2MTQxZDUzOWIuLjQ0NmZhNDI4Yzc2NCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xMzU2LDggKzEzNTYsOCBAQCBzdHJ1Y3QgaTkxNV9n ZW1fbW0gewogCXN0cnVjdCBsaXN0X2hlYWQgYm91bmRfbGlzdDsKIAkvKioKIAkgKiBMaXN0IG9m IG9iamVjdHMgd2hpY2ggYXJlIG5vdCBib3VuZCB0byB0aGUgR1RUICh0aHVzCi0JICogYXJlIGlk bGUgYW5kIG5vdCB1c2VkIGJ5IHRoZSBHUFUpIGJ1dCBzdGlsbCBoYXZlCi0JICogKHByZXN1bWFi bHkgdW5jYWNoZWQpIHBhZ2VzIHN0aWxsIGF0dGFjaGVkLgorCSAqIGFyZSBpZGxlIGFuZCBub3Qg dXNlZCBieSB0aGUgR1BVKS4gVGhlc2Ugb2JqZWN0cyBtYXkgb3IgbWF5CisJICogbm90IGFjdHVh bGx5IGhhdmUgYW55IHBhZ2VzIGF0dGFjaGVkLgogCSAqLwogCXN0cnVjdCBsaXN0X2hlYWQgdW5i b3VuZF9saXN0OwogCkBAIC0xMzY2LDYgKzEzNjYsMTIgQEAgc3RydWN0IGk5MTVfZ2VtX21tIHsK IAkgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIHVzZXJmYXVsdF9saXN0OwogCisJLyoqCisJICogTGlz dCBvZiBvYmplY3RzIHdoaWNoIGFyZSBwZW5kaW5nIGRlc3RydWN0aW9uLgorCSAqLworCXN0cnVj dCBsbGlzdF9oZWFkIGZyZWVfbGlzdDsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrOwor CiAJLyoqIFVzYWJsZSBwb3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAqLwogCXVuc2lnbmVkIGxv bmcgc3RvbGVuX2Jhc2U7IC8qIGxpbWl0ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwogCkBA IC0yMjExLDYgKzIyMTcsMTAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCS8qKiBT dG9sZW4gbWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBiYWNrZWQgYnkg c2htZW0uICovCiAJc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVh ZCBnbG9iYWxfbGlzdDsKKwl1bmlvbiB7CisJCXN0cnVjdCByY3VfaGVhZCByY3U7CisJCXN0cnVj dCBsbGlzdF9ub2RlIGZyZWVkOworCX07CiAKIAkvKioKIAkgKiBXaGV0aGVyIHRoZSBvYmplY3Qg aXMgY3VycmVudGx5IGluIHRoZSBHR1RUIG1tYXAuCkBAIC0yMzI4LDEwICsyMzM4LDM4IEBAIHRv X2ludGVsX2JvKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtKQogCXJldHVybiBjb250YWluZXJf b2YoZ2VtLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgYmFzZSk7CiB9CiAKKy8qKgorICog aTkxNV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UgLSBsb29rIHVwIGEgdGVtcG9yYXJ5IEdFTSBvYmpl Y3QgZnJvbSBpdHMgaGFuZGxlCisgKiBAZmlscDogRFJNIGZpbGUgcHJpdmF0ZSBkYXRlCisgKiBA aGFuZGxlOiB1c2Vyc3BhY2UgaGFuZGxlCisgKgorICogUmV0dXJuczoKKyAqCisgKiBBIHBvaW50 ZXIgdG8gdGhlIG9iamVjdCBuYW1lZCBieSB0aGUgaGFuZGxlIGlmIHN1Y2ggZXhpc3RzIG9uIEBm aWxwLCBOVUxMCisgKiBvdGhlcndpc2UuIFRoaXMgb2JqZWN0IGlzIG9ubHkgdmFsaWQgd2hpbHN0 IHVuZGVyIHRoZSBSQ1UgcmVhZCBsb2NrLCBhbmQKKyAqIG5vdGUgY2FyZWZ1bGx5IHRoZSBvYmpl Y3QgbWF5IGJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4KKyAqLworc3RhdGlj IGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitpOTE1X2dlbV9vYmplY3RfbG9v a3VwX3JjdShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHUzMiBoYW5kbGUpCit7CisjaWZkZWYgQ09O RklHX0xPQ0tERVAKKwlXQVJOX09OKGRlYnVnX2xvY2tzICYmICFsb2NrX2lzX2hlbGQoJnJjdV9s b2NrX21hcCkpOworI2VuZGlmCisJcmV0dXJuIGlkcl9maW5kKCZmaWxlLT5vYmplY3RfaWRyLCBo YW5kbGUpOworfQorCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoK IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoc3RydWN0IGRybV9maWxlICpmaWxlLCB1MzIgaGFuZGxl KQogewotCXJldHVybiB0b19pbnRlbF9ibyhkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgaGFu ZGxlKSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKworCXJjdV9yZWFkX2xv Y2soKTsKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShmaWxlLCBoYW5kbGUpOwor CWlmIChvYmogJiYgIWtyZWZfZ2V0X3VubGVzc196ZXJvKCZvYmotPmJhc2UucmVmY291bnQpKQor CQlvYmogPSBOVUxMOworCXJjdV9yZWFkX3VubG9jaygpOworCisJcmV0dXJuIG9iajsKIH0KIAog X19kZXByZWNhdGVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA2OTdhODM4MjM5MjAuLjU1 ODEzZjljZWE3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00Miw2ICs0Miw3IEBACiAj aW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogCitzdGF0 aWMgdm9pZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpOwogc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9k b21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZCBpOTE1 X2dlbV9vYmplY3RfZmx1c2hfY3B1X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKTsKIApAQCAtNjQ3LDYgKzY0OCw4IEBAIGk5MTVfZ2VtX2NyZWF0ZV9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogewogCXN0cnVjdCBkcm1faTkxNV9n ZW1fY3JlYXRlICphcmdzID0gZGF0YTsKIAorCWk5MTVfZ2VtX2ZsdXNoX2ZyZWVfb2JqZWN0cyh0 b19pOTE1KGRldikpOworCiAJcmV0dXJuIGk5MTVfZ2VtX2NyZWF0ZShmaWxlLCBkZXYsCiAJCQkg ICAgICAgYXJncy0+c2l6ZSwgJmFyZ3MtPmhhbmRsZSk7CiB9CkBAIC0zNTI3LDEwICszNTMwLDE0 IEBAIGludCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyAqYXJncyA9IGRh dGE7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlpbnQgZXJyID0gMDsKIAot CW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgYXJncy0+aGFuZGxlKTsKLQlpZiAo IW9iaikKLQkJcmV0dXJuIC1FTk9FTlQ7CisJcmN1X3JlYWRfbG9jaygpOworCW9iaiA9IGk5MTVf Z2VtX29iamVjdF9sb29rdXBfcmN1KGZpbGUsIGFyZ3MtPmhhbmRsZSk7CisJaWYgKCFvYmopIHsK KwkJZXJyID0gLUVOT0VOVDsKKwkJZ290byBvdXQ7CisJfQogCiAJc3dpdGNoIChvYmotPmNhY2hl X2xldmVsKSB7CiAJY2FzZSBJOTE1X0NBQ0hFX0xMQzoKQEAgLTM1NDYsOSArMzU1Myw5IEBAIGlu dCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCQlhcmdzLT5jYWNoaW5nID0gSTkxNV9DQUNISU5HX05PTkU7CiAJCWJyZWFrOwog CX0KLQotCWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKLQlyZXR1cm4gMDsKK291 dDoKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gZXJyOwogfQogCiBpbnQgaTkxNV9nZW1f c2V0X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKQEAg LTQwOTAsMTAgKzQwOTcsMTQgQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSAqYXJncyA9IGRh dGE7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAl1bnNpZ25lZCBsb25nIGFj dGl2ZTsKKwlpbnQgZXJyOwogCi0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBh cmdzLT5oYW5kbGUpOwotCWlmICghb2JqKQotCQlyZXR1cm4gLUVOT0VOVDsKKwlyY3VfcmVhZF9s b2NrKCk7CisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UoZmlsZSwgYXJncy0+aGFu ZGxlKTsKKwlpZiAoIW9iaikgeworCQllcnIgPSAtRU5PRU5UOworCQlnb3RvIG91dDsKKwl9CiAK IAlhcmdzLT5idXN5ID0gMDsKIAlhY3RpdmUgPSBfX0k5MTVfQk9fQUNUSVZFKG9iaik7CkBAIC00 MTIzLDcgKzQxMzQsNiBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCSAqIGFyZSBidXN5IGlzIG5vdCBjb21wbGV0ZWx5IHJlbGlhYmxl IC0gd2Ugb25seSBndWFyYW50ZWUKIAkJICogdGhhdCB0aGUgb2JqZWN0IHdhcyBidXN5LgogCQkg Ki8KLQkJcmN1X3JlYWRfbG9jaygpOwogCiAJCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkK IAkJCWFyZ3MtPmJ1c3kgfD0gYnVzeV9jaGVja19yZWFkZXIoJm9iai0+bGFzdF9yZWFkW2lkeF0p OwpAQCAtNDE0MSwxMiArNDE1MSwxMSBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAqIHRoZSByZXN1bHQuCiAJCSAqLwogCQlhcmdz LT5idXN5IHw9IGJ1c3lfY2hlY2tfd3JpdGVyKCZvYmotPmxhc3Rfd3JpdGUpOwotCi0JCXJjdV9y ZWFkX3VubG9jaygpOwogCX0KIAotCWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsK LQlyZXR1cm4gMDsKK291dDoKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gZXJyOwogfQog CiBpbnQKQEAgLTQzMDksNyArNDMxOCw2IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCiAKIGZhaWw6CiAJaTkxNV9nZW1fb2JqZWN0X2Zy ZWUob2JqKTsKLQogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKQEAgLTQzMzcsMTYgKzQzNDUs NjkgQEAgc3RhdGljIGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gYXRvbWljX2xvbmdfcmVhZCgmb2JqLT5iYXNlLmZp bHAtPmZfY291bnQpID09IDE7CiB9CiAKLXZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQorc3RhdGljIHZvaWQgX19pOTE1X2dlbV9mcmVlX29i amVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJICAgIHN0cnVjdCBsbGlz dF9ub2RlICpmcmVlZCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdG9f aW50ZWxfYm8oZ2VtX29iaik7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5k ZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwot CXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqbmV4dDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLCAqb247CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJbXV0ZXhf bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkx NSk7CisJbGxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCBmcmVlZCwgZnJlZWQpIHsKKwkJc3RydWN0 IGk5MTVfdm1hICp2bWEsICp2bjsKKworCQl0cmFjZV9pOTE1X2dlbV9vYmplY3RfZGVzdHJveShv YmopOworCisJCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShvYmopKTsKKwkJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sCisJCQkJCSAmb2JqLT52bWFfbGlzdCwg b2JqX2xpbmspIHsKKwkJCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX2dndHQodm1hKSk7CisJCQlH RU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKKwkJCXZtYS0+ZmxhZ3MgJj0gfkk5 MTVfVk1BX1BJTl9NQVNLOworCQkJaTkxNV92bWFfY2xvc2Uodm1hKTsKKwkJfQorCisJCWxpc3Rf ZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKKwl9CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7 CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWxsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUob2JqLCBvbiwgZnJlZWQsIGZyZWVkKSB7CisJCUdFTV9CVUdfT04ob2Jq LT5iaW5kX2NvdW50KTsKKwkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmb2JqLT5mcm9udGJ1ZmZl cl9iaXRzKSk7CisKKwkJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQorCQkJb2JqLT5vcHMtPnJlbGVh c2Uob2JqKTsKKworCQlpZiAoV0FSTl9PTihpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdl cyhvYmopKSkKKwkJCWF0b21pY19zZXQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50LCAwKTsKKwkJ X19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJCUdFTV9CVUdfT04ob2JqLT5tbS5w YWdlcyk7CisKKwkJaWYgKG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoKQorCQkJZHJtX3ByaW1lX2dl bV9kZXN0cm95KCZvYmotPmJhc2UsIE5VTEwpOworCisJCWRybV9nZW1fb2JqZWN0X3JlbGVhc2Uo Jm9iai0+YmFzZSk7CisJCWk5MTVfZ2VtX2luZm9fcmVtb3ZlX29iaihpOTE1LCBvYmotPmJhc2Uu c2l6ZSk7CisKKwkJa2ZyZWUob2JqLT5iaXRfMTcpOworCQlpOTE1X2dlbV9vYmplY3RfZnJlZShv YmopOworCX0KK30KIAotCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9kZXN0cm95KG9iaik7CitzdGF0 aWMgdm9pZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCit7CisJc3RydWN0IGxsaXN0X25vZGUgKmZyZWVkOworCisJZnJlZWQgPSBsbGlz dF9kZWxfYWxsKCZpOTE1LT5tbS5mcmVlX2xpc3QpOworCWlmICh1bmxpa2VseShmcmVlZCkpCisJ CV9faTkxNV9nZW1fZnJlZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKK30KKworc3RhdGljIHZvaWQg X19pOTE1X2dlbV9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlLCBtbS5mcmVlX3dvcmspOworCXN0cnVjdCBsbGlzdF9ub2RlICpmcmVl ZDsKIAogCS8qIEFsbCBmaWxlLW93bmVkIFZNQSBzaG91bGQgaGF2ZSBiZWVuIHJlbGVhc2VkIGJ5 IHRoaXMgcG9pbnQgdGhyb3VnaAogCSAqIGk5MTVfZ2VtX2Nsb3NlX29iamVjdCgpLCBvciBlYXJs aWVyIGJ5IGk5MTVfZ2VtX2NvbnRleHRfY2xvc2UoKS4KQEAgLTQzNTUsNDIgKzQ0MTYsNDQgQEAg dm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmop CiAJICogdGhlIEdUVCBlaXRoZXIgZm9yIHRoZSB1c2VyIG9yIGZvciBzY2Fub3V0KS4gVGhvc2Ug Vk1BIHN0aWxsIG5lZWQgdG8KIAkgKiB1bmJvdW5kIG5vdy4KIAkgKi8KLQlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmb2JqLT52bWFfbGlzdCwgb2JqX2xpbmspIHsKLQkJR0VN X0JVR19PTighaTkxNV92bWFfaXNfZ2d0dCh2bWEpKTsKLQkJR0VNX0JVR19PTihpOTE1X3ZtYV9p c19hY3RpdmUodm1hKSk7Ci0JCXZtYS0+ZmxhZ3MgJj0gfkk5MTVfVk1BX1BJTl9NQVNLOwotCQlp OTE1X3ZtYV9jbG9zZSh2bWEpOwotCX0KLQlHRU1fQlVHX09OKG9iai0+YmluZF9jb3VudCk7CiAK LQlXQVJOX09OKGF0b21pY19yZWFkKCZvYmotPmZyb250YnVmZmVyX2JpdHMpKTsKKwl3aGlsZSAo KGZyZWVkID0gbGxpc3RfZGVsX2FsbCgmaTkxNS0+bW0uZnJlZV9saXN0KSkpCisJCV9faTkxNV9n ZW1fZnJlZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKK30KIAotCWlmIChvYmotPm1tLnBhZ2VzICYm IG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfV0lMTE5FRUQgJiYKLQkgICAgZGV2X3ByaXYtPnF1 aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAmJgotCSAgICBpOTE1X2dlbV9vYmplY3Rf aXNfdGlsZWQob2JqKSkKLQkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKK3N0 YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVh ZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0KKwkJY29udGFpbmVyX29m KGhlYWQsIHR5cGVvZigqb2JqKSwgcmN1KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CiAKLQlpZiAob2JqLT5vcHMtPnJlbGVhc2UpCi0J CW9iai0+b3BzLT5yZWxlYXNlKG9iaik7CisJLyogV2UgY2FuJ3Qgc2ltcGx5IHVzZSBjYWxsX3Jj dSgpIGZyb20gaTkxNV9nZW1fZnJlZV9vYmplY3QoKQorCSAqIGFzIHdlIG5lZWQgdG8gYmxvY2sg d2hpbHN0IHVuYmluZGluZywgYW5kIHRoZSBjYWxsX3JjdQorCSAqIHRhc2sgbWF5IGJlIGNhbGxl ZCBmcm9tIHNvZnRpcnEgY29udGV4dC4gU28gd2UgdGFrZSBhCisJICogZGV0b3VyIHRocm91Z2gg YSB3b3JrZXIuCisJICovCisJaWYgKGxsaXN0X2FkZCgmb2JqLT5mcmVlZCwgJmk5MTUtPm1tLmZy ZWVfbGlzdCkpCisJCXNjaGVkdWxlX3dvcmsoJmk5MTUtPm1tLmZyZWVfd29yayk7Cit9CisKK3Zv aWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQor eworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0b19pbnRlbF9ibyhnZW1fb2Jq KTsKIAotCWlmIChXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikp KQotCQlhdG9taWNfc2V0KCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwgMCk7CiAJaWYgKGRpc2Nh cmRfYmFja2luZ19zdG9yYWdlKG9iaikpCiAJCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9ET05U TkVFRDsKLQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKIAotCUdFTV9CVUdfT04o b2JqLT5tbS5wYWdlcyk7Ci0KLQlpZiAob2JqLT5iYXNlLmltcG9ydF9hdHRhY2gpCi0JCWRybV9w cmltZV9nZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBOVUxMKTsKLQotCWRybV9nZW1fb2JqZWN0X3Jl bGVhc2UoJm9iai0+YmFzZSk7Ci0JaTkxNV9nZW1faW5mb19yZW1vdmVfb2JqKGRldl9wcml2LCBv YmotPmJhc2Uuc2l6ZSk7Ci0KLQlrZnJlZShvYmotPmJpdF8xNyk7Ci0JaTkxNV9nZW1fb2JqZWN0 X2ZyZWUob2JqKTsKKwlpZiAob2JqLT5tbS5wYWdlcyAmJiBvYmotPm1tLm1hZHYgPT0gSTkxNV9N QURWX1dJTExORUVEICYmCisJICAgIHRvX2k5MTUob2JqLT5iYXNlLmRldiktPnF1aXJrcyAmIFFV SVJLX1BJTl9TV0laWkxFRF9QQUdFUyAmJgorCSAgICBpOTE1X2dlbV9vYmplY3RfaXNfdGlsZWQo b2JqKSkKKwkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIAotCWludGVsX3J1 bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwkvKiBCZWZvcmUgd2UgZnJlZSB0aGUgb2JqZWN0LCBt YWtlIHN1cmUgYW55IHB1cmUgUkNVLW9ubHkKKwkgKiByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlv bnMgYXJlIGNvbXBsZXRlLCBlLmcuCisJICogaTkxNV9nZW1fYnVzeV9pb2N0bCgpLiBGb3IgdGhl IGNvcnJlc3BvbmRpbmcgc3luY2hyb25pemVkCisJICogbG9va3VwIHNlZSBpOTE1X2dlbV9vYmpl Y3RfbG9va3VwX3JjdSgpLgorCSAqLworCWNhbGxfcmN1KCZvYmotPnJjdSwgX19pOTE1X2dlbV9m cmVlX29iamVjdF9yY3UpOwogfQogCiB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfdW5s ZXNzX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQpAQCAtNDQzOSw2ICs0 NTAyLDcgQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlj YW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dv cmspOwogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPmd0LnJldGlyZV93b3Jr KTsKIAlmbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ndC5pZGxlX3dvcmspOworCWZsdXNo X3dvcmsoJmRldl9wcml2LT5tbS5mcmVlX3dvcmspOwogCiAJLyogQXNzZXJ0IHRoYXQgd2Ugc3Vj ZXNzZnVsbHkgZmx1c2hlZCBhbGwgdGhlIHdvcmsgYW5kCiAJICogcmVzZXQgdGhlIEdQVSBiYWNr IHRvIGl0cyBpZGxlLCBsb3cgcG93ZXIgc3RhdGUuCkBAIC00NzUyLDYgKzQ4MTYsOCBAQCBpOTE1 X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCQkgIE5VTEwpOwogCiAJ SU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOworCUlOSVRfV09SSygmZGV2 X3ByaXYtPm1tLmZyZWVfd29yaywgX19pOTE1X2dlbV9mcmVlX3dvcmspOworCWluaXRfbGxpc3Rf aGVhZCgmZGV2X3ByaXYtPm1tLmZyZWVfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2 LT5tbS51bmJvdW5kX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uYm91bmRf bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCmluZGV4IGM4YTRjNDBlYzJjMi4uMDI0 MTY1OGFmMTZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJp bmtlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKQEAg LTIwMSw2ICsyMDEsMTAgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCQkJCSAgICAgICB0eXBlb2YoKm9iaiksCiAJCQkJCQkgICAgICAgZ2xv YmFsX2xpc3QpKSkgewogCQkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZzdGls bF9pbl9saXN0KTsKKwkJCWlmICghb2JqLT5tbS5wYWdlcykgeworCQkJCWxpc3RfZGVsX2luaXQo Jm9iai0+Z2xvYmFsX2xpc3QpOworCQkJCWNvbnRpbnVlOworCQkJfQogCiAJCQlpZiAoZmxhZ3Mg JiBJOTE1X1NIUklOS19QVVJHRUFCTEUgJiYKIAkJCSAgICBvYmotPm1tLm1hZHYgIT0gSTkxNV9N QURWX0RPTlRORUVEKQpAQCAtMjE4LDggKzIyMiw2IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlpZiAoIWNhbl9yZWxlYXNlX3BhZ2VzKG9i aikpCiAJCQkJY29udGludWU7CiAKLQkJCWk5MTVfZ2VtX29iamVjdF9nZXQob2JqKTsKLQogCQkJ aWYgKHVuc2FmZV9kcm9wX3BhZ2VzKG9iaikpIHsKIAkJCQltdXRleF9sb2NrKCZvYmotPm1tLmxv Y2spOwogCQkJCWlmICghb2JqLT5tbS5wYWdlcykgewpAQCAtMjI4LDggKzIzMCw2IEBAIGk5MTVf Z2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJfQogCQkJ CW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKIAkJCX0KLQotCQkJaTkxNV9nZW1fb2JqZWN0 X3B1dChvYmopOwogCQl9CiAJCWxpc3Rfc3BsaWNlKCZzdGlsbF9pbl9saXN0LCBwaGFzZS0+bGlz dCk7CiAJfQpAQCAtMzk2LDEyICszOTYsMTggQEAgaTkxNV9nZW1fc2hyaW5rZXJfb29tKHN0cnVj dCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cikKIAkg Ki8KIAl1bmJvdW5kID0gYm91bmQgPSB1bmV2aWN0YWJsZSA9IDA7CiAJbGlzdF9mb3JfZWFjaF9l bnRyeShvYmosICZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0LCBnbG9iYWxfbGlzdCkgeworCQlp ZiAoIW9iai0+bW0ucGFnZXMpCisJCQljb250aW51ZTsKKwogCQlpZiAoIWNhbl9yZWxlYXNlX3Bh Z2VzKG9iaikpCiAJCQl1bmV2aWN0YWJsZSArPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZU OwogCQllbHNlCiAJCQl1bmJvdW5kICs9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7CiAJ fQogCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QsIGds b2JhbF9saXN0KSB7CisJCWlmICghb2JqLT5tbS5wYWdlcykKKwkJCWNvbnRpbnVlOworCiAJCWlm ICghY2FuX3JlbGVhc2VfcGFnZXMob2JqKSkKIAkJCXVuZXZpY3RhYmxlICs9IG9iai0+YmFzZS5z aXplID4+IFBBR0VfU0hJRlQ7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3RpbGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGls aW5nLmMKaW5kZXggNjYwODc5OWVlMWY5Li5jNjNhOWNmNGRhMzMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3RpbGluZy5jCkBAIC0zMjUsMTIgKzMyNSwxOSBAQCBpOTE1X2dlbV9nZXRf dGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJc3RydWN0IGRybV9p OTE1X2dlbV9nZXRfdGlsaW5nICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKKwlpbnQgZXJyID0gLUVOT0VOVDsKKworCXJjdV9yZWFkX2xvY2soKTsKKwlvYmogPSBp OTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShmaWxlLCBhcmdzLT5oYW5kbGUpOworCWlmIChvYmop IHsKKwkJYXJncy0+dGlsaW5nX21vZGUgPQorCQkJUkVBRF9PTkNFKG9iai0+dGlsaW5nX2FuZF9z dHJpZGUpICYgVElMSU5HX01BU0s7CisJCWVyciA9IDA7CisJfQorCXJjdV9yZWFkX3VubG9jaygp OworCWlmICh1bmxpa2VseShlcnIpKQorCQlyZXR1cm4gZXJyOwogCi0Jb2JqID0gaTkxNV9nZW1f b2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5kbGUpOwotCWlmICghb2JqKQotCQlyZXR1cm4g LUVOT0VOVDsKLQotCWFyZ3MtPnRpbGluZ19tb2RlID0gUkVBRF9PTkNFKG9iai0+dGlsaW5nX2Fu ZF9zdHJpZGUpICYgVElMSU5HX01BU0s7CiAJc3dpdGNoIChhcmdzLT50aWxpbmdfbW9kZSkgewog CWNhc2UgSTkxNV9USUxJTkdfWDoKIAkJYXJncy0+c3dpenpsZV9tb2RlID0gZGV2X3ByaXYtPm1t LmJpdF82X3N3aXp6bGVfeDsKQEAgLTMzOCwxMSArMzQ1LDEwIEBAIGk5MTVfZ2VtX2dldF90aWxp bmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAljYXNlIEk5MTVfVElMSU5H X1k6CiAJCWFyZ3MtPnN3aXp6bGVfbW9kZSA9IGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3k7 CiAJCWJyZWFrOworCWRlZmF1bHQ6CiAJY2FzZSBJOTE1X1RJTElOR19OT05FOgogCQlhcmdzLT5z d2l6emxlX21vZGUgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKIAkJYnJlYWs7Ci0JZGVmYXVs dDoKLQkJRFJNX0VSUk9SKCJ1bmtub3duIHRpbGluZyBtb2RlXG4iKTsKIAl9CiAKIAkvKiBIaWRl IGJpdCAxNyBmcm9tIHRoZSB1c2VyIC0tIHNlZSBjb21tZW50IGluIGk5MTVfZ2VtX3NldF90aWxp bmcgKi8KQEAgLTM1NSw2ICszNjEsNSBAQCBpOTE1X2dlbV9nZXRfdGlsaW5nKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKGFyZ3MtPnN3aXp6bGVfbW9kZSA9PSBJOTE1 X0JJVF82X1NXSVpaTEVfOV8xMF8xNykKIAkJYXJncy0+c3dpenpsZV9tb2RlID0gSTkxNV9CSVRf Nl9TV0laWkxFXzlfMTA7CiAKLQlpOTE1X2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiAJ cmV0dXJuIDA7CiB9Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==