From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 23/41] drm/i915: Move object release to a freelist + worker Date: Fri, 14 Oct 2016 13:18:15 +0100 Message-ID: <20161014121833.439-24-chris@chris-wilson.co.uk> References: <20161014121833.439-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-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id ACE706EC27 for ; Fri, 14 Oct 2016 12:19:05 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id x23so12174816lfi.1 for ; Fri, 14 Oct 2016 05:19:05 -0700 (PDT) In-Reply-To: <20161014121833.439-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 Y2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jICAgICAgfCAgMTUgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAg ICAgIHwgIDE5ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAg fCAgNDQgKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAg fCAxNjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8ICAxNCArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3RpbGluZy5jICAgfCAgMjEgKystLQogNiBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0 aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpp bmRleCAxMThiZDM1Zjc1MGMuLjI3ZmQ1MzcwZjBjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKQEAgLTQ4NzMsMTAgKzQ4NzMsMTIgQEAgREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUo aTkxNV9yaW5nX3Rlc3RfaXJxX2ZvcHMsCiAjZGVmaW5lIERST1BfQk9VTkQgMHgyCiAjZGVmaW5l IERST1BfUkVUSVJFIDB4NAogI2RlZmluZSBEUk9QX0FDVElWRSAweDgKLSNkZWZpbmUgRFJPUF9B TEwgKERST1BfVU5CT1VORCB8IFwKLQkJICBEUk9QX0JPVU5EIHwgXAotCQkgIERST1BfUkVUSVJF IHwgXAotCQkgIERST1BfQUNUSVZFKQorI2RlZmluZSBEUk9QX0ZSRUVEIDB4MTAKKyNkZWZpbmUg RFJPUF9BTEwgKERST1BfVU5CT1VORAl8IFwKKwkJICBEUk9QX0JPVU5ECXwgXAorCQkgIERST1Bf UkVUSVJFCXwgXAorCQkgIERST1BfQUNUSVZFCXwgXAorCQkgIERST1BfRlJFRUQpCiBzdGF0aWMg aW50CiBpOTE1X2Ryb3BfY2FjaGVzX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKIHsKQEAgLTQ5 MjAsNiArNDkyMiwxMSBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQgdmFs KQogdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCisJaWYgKHZh bCAmIERST1BfRlJFRUQpIHsKKwkJc3luY2hyb25pemVfcmN1KCk7CisJCWZsdXNoX3dvcmsoJmRl dl9wcml2LT5tbS5mcmVlX3dvcmspOworCX0KKwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCmluZGV4IDViNzJkYTZkNDVhMi4uYzQ2Zjk2ZDhiYjM4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKQEAgLTUzNywxNCArNTM3LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyBpOTE1X3N3aXRjaGVyb29fb3BzID0gewogCS5jYW5f c3dpdGNoID0gaTkxNV9zd2l0Y2hlcm9vX2Nhbl9zd2l0Y2gsCiB9OwogCi1zdGF0aWMgdm9pZCBp OTE1X2dlbV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBpOTE1X2dl bV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQltdXRleF9sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaTkxNV9nZW1fY2xlYW51cF9lbmdpbmVzKGRldik7Ci0J aTkxNV9nZW1fY29udGV4dF9maW5pKGRldik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVf Z2VtX2NsZWFudXBfZW5naW5lcygmZGV2X3ByaXYtPmRybSk7CisJaTkxNV9nZW1fY29udGV4dF9m aW5pKCZkZXZfcHJpdi0+ZHJtKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0 X211dGV4KTsKKworCXN5bmNocm9uaXplX3JjdSgpOworCWZsdXNoX3dvcmsoJmRldl9wcml2LT5t bS5mcmVlX3dvcmspOwogCi0JV0FSTl9PTighbGlzdF9lbXB0eSgmdG9faTkxNShkZXYpLT5jb250 ZXh0X2xpc3QpKTsKKwlXQVJOX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+Y29udGV4dF9saXN0 KSk7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQpAQCAtNjE5LDcgKzYyMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVz ZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogY2xlYW51cF9nZW06CiAJaWYgKGk5MTVf Z2VtX3N1c3BlbmQoZGV2KSkKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaWRsZSBoYXJkd2FyZTsg Y29udGludWluZyB0byB1bmxvYWQhXG4iKTsKLQlpOTE1X2dlbV9maW5pKGRldik7CisJaTkxNV9n ZW1fZmluaShkZXZfcHJpdik7CiBjbGVhbnVwX2lycToKIAlpbnRlbF9ndWNfZmluaShkZXYpOwog CWRybV9pcnFfdW5pbnN0YWxsKGRldik7CkBAIC0xMjk5LDcgKzEzMDIsNyBAQCB2b2lkIGk5MTVf ZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWRyYWluX3dvcmtxdWV1ZShk ZXZfcHJpdi0+d3EpOwogCiAJaW50ZWxfZ3VjX2ZpbmkoZGV2KTsKLQlpOTE1X2dlbV9maW5pKGRl dik7CisJaTkxNV9nZW1fZmluaShkZXZfcHJpdik7CiAJaW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRl dl9wcml2KTsKIAogCWludGVsX3Bvd2VyX2RvbWFpbnNfZmluaShkZXZfcHJpdik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAppbmRleCBlMDY2Mjg0YWFjZTkuLmUyZmU1MGI2YjQ5MyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCkBAIC0xMzU1LDggKzEzNTUsOCBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0g ewogCXN0cnVjdCBsaXN0X2hlYWQgYm91bmRfbGlzdDsKIAkvKioKIAkgKiBMaXN0IG9mIG9iamVj dHMgd2hpY2ggYXJlIG5vdCBib3VuZCB0byB0aGUgR1RUICh0aHVzCi0JICogYXJlIGlkbGUgYW5k IG5vdCB1c2VkIGJ5IHRoZSBHUFUpIGJ1dCBzdGlsbCBoYXZlCi0JICogKHByZXN1bWFibHkgdW5j YWNoZWQpIHBhZ2VzIHN0aWxsIGF0dGFjaGVkLgorCSAqIGFyZSBpZGxlIGFuZCBub3QgdXNlZCBi eSB0aGUgR1BVKS4gVGhlc2Ugb2JqZWN0cyBtYXkgb3IgbWF5CisJICogbm90IGFjdHVhbGx5IGhh dmUgYW55IHBhZ2VzIGF0dGFjaGVkLgogCSAqLwogCXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9s aXN0OwogCkBAIC0xMzY1LDYgKzEzNjUsMTIgQEAgc3RydWN0IGk5MTVfZ2VtX21tIHsKIAkgKi8K IAlzdHJ1Y3QgbGlzdF9oZWFkIHVzZXJmYXVsdF9saXN0OwogCisJLyoqCisJICogTGlzdCBvZiBv YmplY3RzIHdoaWNoIGFyZSBwZW5kaW5nIGRlc3RydWN0aW9uLgorCSAqLworCXN0cnVjdCBsbGlz dF9oZWFkIGZyZWVfbGlzdDsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrOworCiAJLyoq IFVzYWJsZSBwb3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAqLwogCXVuc2lnbmVkIGxvbmcgc3Rv bGVuX2Jhc2U7IC8qIGxpbWl0ZWQgdG8gbG93IG1lbW9yeSAoMzItYml0KSAqLwogCkBAIC0yMjEx LDYgKzIyMTcsMTAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCS8qKiBTdG9sZW4g bWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBiYWNrZWQgYnkgc2htZW0u ICovCiAJc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47CiAJc3RydWN0IGxpc3RfaGVhZCBnbG9i YWxfbGlzdDsKKwl1bmlvbiB7CisJCXN0cnVjdCByY3VfaGVhZCByY3U7CisJCXN0cnVjdCBsbGlz dF9ub2RlIGZyZWVkOworCX07CiAKIAkvKioKIAkgKiBXaGV0aGVyIHRoZSBvYmplY3QgaXMgY3Vy cmVudGx5IGluIHRoZSBHR1RUIG1tYXAuCkBAIC0yMzI4LDEwICsyMzM4LDM4IEBAIHRvX2ludGVs X2JvKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtKQogCXJldHVybiBjb250YWluZXJfb2YoZ2Vt LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgYmFzZSk7CiB9CiAKKy8qKgorICogaTkxNV9n ZW1fb2JqZWN0X2xvb2t1cF9yY3UgLSBsb29rIHVwIGEgdGVtcG9yYXJ5IEdFTSBvYmplY3QgZnJv bSBpdHMgaGFuZGxlCisgKiBAZmlscDogRFJNIGZpbGUgcHJpdmF0ZSBkYXRlCisgKiBAaGFuZGxl OiB1c2Vyc3BhY2UgaGFuZGxlCisgKgorICogUmV0dXJuczoKKyAqCisgKiBBIHBvaW50ZXIgdG8g dGhlIG9iamVjdCBuYW1lZCBieSB0aGUgaGFuZGxlIGlmIHN1Y2ggZXhpc3RzIG9uIEBmaWxwLCBO VUxMCisgKiBvdGhlcndpc2UuIFRoaXMgb2JqZWN0IGlzIG9ubHkgdmFsaWQgd2hpbHN0IHVuZGVy IHRoZSBSQ1UgcmVhZCBsb2NrLCBhbmQKKyAqIG5vdGUgY2FyZWZ1bGx5IHRoZSBvYmplY3QgbWF5 IGJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4KKyAqLworc3RhdGljIGlubGlu ZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitpOTE1X2dlbV9vYmplY3RfbG9va3VwX3Jj dShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHUzMiBoYW5kbGUpCit7CisjaWZkZWYgQ09ORklHX0xP Q0tERVAKKwlXQVJOX09OKGRlYnVnX2xvY2tzICYmICFsb2NrX2lzX2hlbGQoJnJjdV9sb2NrX21h cCkpOworI2VuZGlmCisJcmV0dXJuIGlkcl9maW5kKCZmaWxlLT5vYmplY3RfaWRyLCBoYW5kbGUp OworfQorCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKIGk5MTVf Z2VtX29iamVjdF9sb29rdXAoc3RydWN0IGRybV9maWxlICpmaWxlLCB1MzIgaGFuZGxlKQogewot CXJldHVybiB0b19pbnRlbF9ibyhkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgaGFuZGxlKSk7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKworCXJjdV9yZWFkX2xvY2soKTsK KwlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShmaWxlLCBoYW5kbGUpOworCWlmIChv YmogJiYgIWtyZWZfZ2V0X3VubGVzc196ZXJvKCZvYmotPmJhc2UucmVmY291bnQpKQorCQlvYmog PSBOVUxMOworCXJjdV9yZWFkX3VubG9jaygpOworCisJcmV0dXJuIG9iajsKIH0KIAogX19kZXBy ZWNhdGVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBmMjUwZDViZjAzNDYuLmMwY2IxYTQ4 MmE2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk ZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogCitzdGF0aWMgdm9p ZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpOwogc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9kb21haW4o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9v YmplY3RfZmx1c2hfY3B1X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKTsKIApAQCAtNjQ3LDYgKzY0OCw4IEBAIGk5MTVfZ2VtX2NyZWF0ZV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fY3Jl YXRlICphcmdzID0gZGF0YTsKIAorCWk5MTVfZ2VtX2ZsdXNoX2ZyZWVfb2JqZWN0cyh0b19pOTE1 KGRldikpOworCiAJcmV0dXJuIGk5MTVfZ2VtX2NyZWF0ZShmaWxlLCBkZXYsCiAJCQkgICAgICAg YXJncy0+c2l6ZSwgJmFyZ3MtPmhhbmRsZSk7CiB9CkBAIC0zNTM2LDEwICszNTM5LDE0IEBAIGlu dCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyAqYXJncyA9IGRhdGE7CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlpbnQgZXJyID0gMDsKIAotCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgYXJncy0+aGFuZGxlKTsKLQlpZiAoIW9iaikK LQkJcmV0dXJuIC1FTk9FTlQ7CisJcmN1X3JlYWRfbG9jaygpOworCW9iaiA9IGk5MTVfZ2VtX29i amVjdF9sb29rdXBfcmN1KGZpbGUsIGFyZ3MtPmhhbmRsZSk7CisJaWYgKCFvYmopIHsKKwkJZXJy ID0gLUVOT0VOVDsKKwkJZ290byBvdXQ7CisJfQogCiAJc3dpdGNoIChvYmotPmNhY2hlX2xldmVs KSB7CiAJY2FzZSBJOTE1X0NBQ0hFX0xMQzoKQEAgLTM1NTUsOSArMzU2Miw5IEBAIGludCBpOTE1 X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCQlhcmdzLT5jYWNoaW5nID0gSTkxNV9DQUNISU5HX05PTkU7CiAJCWJyZWFrOwogCX0KLQot CWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKLQlyZXR1cm4gMDsKK291dDoKKwly Y3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gZXJyOwogfQogCiBpbnQgaTkxNV9nZW1fc2V0X2Nh Y2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKQEAgLTQwOTks MTAgKzQxMDYsMTQgQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogCXN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSAqYXJncyA9IGRhdGE7CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAl1bnNpZ25lZCBsb25nIGFjdGl2ZTsK KwlpbnQgZXJyOwogCi0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5o YW5kbGUpOwotCWlmICghb2JqKQotCQlyZXR1cm4gLUVOT0VOVDsKKwlyY3VfcmVhZF9sb2NrKCk7 CisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UoZmlsZSwgYXJncy0+aGFuZGxlKTsK KwlpZiAoIW9iaikgeworCQllcnIgPSAtRU5PRU5UOworCQlnb3RvIG91dDsKKwl9CiAKIAlhcmdz LT5idXN5ID0gMDsKIAlhY3RpdmUgPSBfX0k5MTVfQk9fQUNUSVZFKG9iaik7CkBAIC00MTMyLDcg KzQxNDMsNiBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJCSAqIGFyZSBidXN5IGlzIG5vdCBjb21wbGV0ZWx5IHJlbGlhYmxlIC0gd2Ug b25seSBndWFyYW50ZWUKIAkJICogdGhhdCB0aGUgb2JqZWN0IHdhcyBidXN5LgogCQkgKi8KLQkJ cmN1X3JlYWRfbG9jaygpOwogCiAJCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkKIAkJCWFy Z3MtPmJ1c3kgfD0gYnVzeV9jaGVja19yZWFkZXIoJm9iai0+bGFzdF9yZWFkW2lkeF0pOwpAQCAt NDE1MCwxMiArNDE2MCwxMSBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAqIHRoZSByZXN1bHQuCiAJCSAqLwogCQlhcmdzLT5idXN5 IHw9IGJ1c3lfY2hlY2tfd3JpdGVyKCZvYmotPmxhc3Rfd3JpdGUpOwotCi0JCXJjdV9yZWFkX3Vu bG9jaygpOwogCX0KIAotCWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKLQlyZXR1 cm4gMDsKK291dDoKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gZXJyOwogfQogCiBpbnQK QEAgLTQzMDMsNyArNDMxMiw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dl bV9vYmplY3RfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIGZhaWw6CiAJaTkxNV9n ZW1fb2JqZWN0X2ZyZWUob2JqKTsKLQogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKQEAgLTQz MzEsMTYgKzQzMzksNjkgQEAgc3RhdGljIGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gYXRvbWljX2xvbmdfcmVhZCgm b2JqLT5iYXNlLmZpbHAtPmZfY291bnQpID09IDE7CiB9CiAKLXZvaWQgaTkxNV9nZW1fZnJlZV9v YmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQorc3RhdGljIHZvaWQgX19pOTE1 X2dlbV9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJICAg IHN0cnVjdCBsbGlzdF9ub2RlICpmcmVlZCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gdG9faW50ZWxfYm8oZ2VtX29iaik7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IG9iai0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqbmV4dDsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLCAqb247CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7CisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaW50ZWxfcnVudGlt ZV9wbV9nZXQoaTkxNSk7CisJbGxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCBmcmVlZCwgZnJlZWQp IHsKKwkJc3RydWN0IGk5MTVfdm1hICp2bWEsICp2bjsKKworCQl0cmFjZV9pOTE1X2dlbV9vYmpl Y3RfZGVzdHJveShvYmopOworCisJCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2 ZShvYmopKTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sCisJCQkJCSAmb2Jq LT52bWFfbGlzdCwgb2JqX2xpbmspIHsKKwkJCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX2dndHQo dm1hKSk7CisJCQlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKKwkJCXZtYS0+ ZmxhZ3MgJj0gfkk5MTVfVk1BX1BJTl9NQVNLOworCQkJaTkxNV92bWFfY2xvc2Uodm1hKTsKKwkJ fQorCisJCWxpc3RfZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKKwl9CisJaW50ZWxfcnVudGltZV9w bV9wdXQoaTkxNSk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwor CWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2JqLCBvbiwgZnJlZWQsIGZyZWVkKSB7CisJCUdF TV9CVUdfT04ob2JqLT5iaW5kX2NvdW50KTsKKwkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmb2Jq LT5mcm9udGJ1ZmZlcl9iaXRzKSk7CisKKwkJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQorCQkJb2Jq LT5vcHMtPnJlbGVhc2Uob2JqKTsKKworCQlpZiAoV0FSTl9PTihpOTE1X2dlbV9vYmplY3RfaGFz X3Bpbm5lZF9wYWdlcyhvYmopKSkKKwkJCWF0b21pY19zZXQoJm9iai0+bW0ucGFnZXNfcGluX2Nv dW50LCAwKTsKKwkJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJCUdFTV9CVUdf T04ob2JqLT5tbS5wYWdlcyk7CisKKwkJaWYgKG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoKQorCQkJ ZHJtX3ByaW1lX2dlbV9kZXN0cm95KCZvYmotPmJhc2UsIE5VTEwpOworCisJCWRybV9nZW1fb2Jq ZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7CisJCWk5MTVfZ2VtX2luZm9fcmVtb3ZlX29iaihpOTE1 LCBvYmotPmJhc2Uuc2l6ZSk7CisKKwkJa2ZyZWUob2JqLT5iaXRfMTcpOworCQlpOTE1X2dlbV9v YmplY3RfZnJlZShvYmopOworCX0KK30KIAotCXRyYWNlX2k5MTVfZ2VtX29iamVjdF9kZXN0cm95 KG9iaik7CitzdGF0aWMgdm9pZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0IGxsaXN0X25vZGUgKmZyZWVkOworCisJ ZnJlZWQgPSBsbGlzdF9kZWxfYWxsKCZpOTE1LT5tbS5mcmVlX2xpc3QpOworCWlmICh1bmxpa2Vs eShmcmVlZCkpCisJCV9faTkxNV9nZW1fZnJlZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKK30KKwor c3RhdGljIHZvaWQgX19pOTE1X2dlbV9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKHdv cmssIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLCBtbS5mcmVlX3dvcmspOworCXN0cnVjdCBsbGlz dF9ub2RlICpmcmVlZDsKIAogCS8qIEFsbCBmaWxlLW93bmVkIFZNQSBzaG91bGQgaGF2ZSBiZWVu IHJlbGVhc2VkIGJ5IHRoaXMgcG9pbnQgdGhyb3VnaAogCSAqIGk5MTVfZ2VtX2Nsb3NlX29iamVj dCgpLCBvciBlYXJsaWVyIGJ5IGk5MTVfZ2VtX2NvbnRleHRfY2xvc2UoKS4KQEAgLTQzNDksNDIg KzQ0MTAsNDQgQEAgdm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmdlbV9vYmopCiAJICogdGhlIEdUVCBlaXRoZXIgZm9yIHRoZSB1c2VyIG9yIGZvciBzY2Fu b3V0KS4gVGhvc2UgVk1BIHN0aWxsIG5lZWQgdG8KIAkgKiB1bmJvdW5kIG5vdy4KIAkgKi8KLQls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmb2JqLT52bWFfbGlzdCwgb2JqX2xp bmspIHsKLQkJR0VNX0JVR19PTighaTkxNV92bWFfaXNfZ2d0dCh2bWEpKTsKLQkJR0VNX0JVR19P TihpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSk7Ci0JCXZtYS0+ZmxhZ3MgJj0gfkk5MTVfVk1BX1BJ Tl9NQVNLOwotCQlpOTE1X3ZtYV9jbG9zZSh2bWEpOwotCX0KLQlHRU1fQlVHX09OKG9iai0+Ymlu ZF9jb3VudCk7CiAKLQlXQVJOX09OKGF0b21pY19yZWFkKCZvYmotPmZyb250YnVmZmVyX2JpdHMp KTsKKwl3aGlsZSAoKGZyZWVkID0gbGxpc3RfZGVsX2FsbCgmaTkxNS0+bW0uZnJlZV9saXN0KSkp CisJCV9faTkxNV9nZW1fZnJlZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKK30KIAotCWlmIChvYmot Pm1tLnBhZ2VzICYmIG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfV0lMTE5FRUQgJiYKLQkgICAg ZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAmJgotCSAgICBpOTE1 X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSkKLQkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFn ZXMob2JqKTsKK3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RfcmN1KHN0cnVjdCBy Y3VfaGVhZCAqaGVhZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0KKwkJ Y29udGFpbmVyX29mKGhlYWQsIHR5cGVvZigqb2JqKSwgcmN1KTsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CiAKLQlpZiAob2JqLT5vcHMt PnJlbGVhc2UpCi0JCW9iai0+b3BzLT5yZWxlYXNlKG9iaik7CisJLyogV2UgY2FuJ3Qgc2ltcGx5 IHVzZSBjYWxsX3JjdSgpIGZyb20gaTkxNV9nZW1fZnJlZV9vYmplY3QoKQorCSAqIGFzIHdlIG5l ZWQgdG8gYmxvY2sgd2hpbHN0IHVuYmluZGluZywgYW5kIHRoZSBjYWxsX3JjdQorCSAqIHRhc2sg bWF5IGJlIGNhbGxlZCBmcm9tIHNvZnRpcnEgY29udGV4dC4gU28gd2UgdGFrZSBhCisJICogZGV0 b3VyIHRocm91Z2ggYSB3b3JrZXIuCisJICovCisJaWYgKGxsaXN0X2FkZCgmb2JqLT5mcmVlZCwg Jmk5MTUtPm1tLmZyZWVfbGlzdCkpCisJCXNjaGVkdWxlX3dvcmsoJmk5MTUtPm1tLmZyZWVfd29y ayk7Cit9CisKK3ZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpnZW1fb2JqKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0b19pbnRl bF9ibyhnZW1fb2JqKTsKIAotCWlmIChXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVk X3BhZ2VzKG9iaikpKQotCQlhdG9taWNfc2V0KCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwgMCk7 CiAJaWYgKGRpc2NhcmRfYmFja2luZ19zdG9yYWdlKG9iaikpCiAJCW9iai0+bW0ubWFkdiA9IEk5 MTVfTUFEVl9ET05UTkVFRDsKLQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKIAot CUdFTV9CVUdfT04ob2JqLT5tbS5wYWdlcyk7Ci0KLQlpZiAob2JqLT5iYXNlLmltcG9ydF9hdHRh Y2gpCi0JCWRybV9wcmltZV9nZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBOVUxMKTsKLQotCWRybV9n ZW1fb2JqZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7Ci0JaTkxNV9nZW1faW5mb19yZW1vdmVfb2Jq KGRldl9wcml2LCBvYmotPmJhc2Uuc2l6ZSk7Ci0KLQlrZnJlZShvYmotPmJpdF8xNyk7Ci0JaTkx NV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsKKwlpZiAob2JqLT5tbS5wYWdlcyAmJiBvYmotPm1tLm1h ZHYgPT0gSTkxNV9NQURWX1dJTExORUVEICYmCisJICAgIHRvX2k5MTUob2JqLT5iYXNlLmRldikt PnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAmJgorCSAgICBpOTE1X2dlbV9vYmpl Y3RfaXNfdGlsZWQob2JqKSkKKwkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsK IAotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwkvKiBCZWZvcmUgd2UgZnJlZSB0 aGUgb2JqZWN0LCBtYWtlIHN1cmUgYW55IHB1cmUgUkNVLW9ubHkKKwkgKiByZWFkLXNpZGUgY3Jp dGljYWwgc2VjdGlvbnMgYXJlIGNvbXBsZXRlLCBlLmcuCisJICogaTkxNV9nZW1fYnVzeV9pb2N0 bCgpLiBGb3IgdGhlIGNvcnJlc3BvbmRpbmcgc3luY2hyb25pemVkCisJICogbG9va3VwIHNlZSBp OTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdSgpLgorCSAqLworCWNhbGxfcmN1KCZvYmotPnJjdSwg X19pOTE1X2dlbV9mcmVlX29iamVjdF9yY3UpOwogfQogCiB2b2lkIF9faTkxNV9nZW1fb2JqZWN0 X3JlbGVhc2VfdW5sZXNzX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQpA QCAtNDQzMyw2ICs0NDk2LDcgQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5ncHVfZXJyb3Iu aGFuZ2NoZWNrX3dvcmspOwogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPmd0 LnJldGlyZV93b3JrKTsKIAlmbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ndC5pZGxlX3dv cmspOworCWZsdXNoX3dvcmsoJmRldl9wcml2LT5tbS5mcmVlX3dvcmspOwogCiAJLyogQXNzZXJ0 IHRoYXQgd2Ugc3VjZXNzZnVsbHkgZmx1c2hlZCBhbGwgdGhlIHdvcmsgYW5kCiAJICogcmVzZXQg dGhlIEdQVSBiYWNrIHRvIGl0cyBpZGxlLCBsb3cgcG93ZXIgc3RhdGUuCkBAIC00NzQ2LDYgKzQ4 MTAsOCBAQCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCQkg IE5VTEwpOwogCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOworCUlO SVRfV09SSygmZGV2X3ByaXYtPm1tLmZyZWVfd29yaywgX19pOTE1X2dlbV9mcmVlX3dvcmspOwor CWluaXRfbGxpc3RfaGVhZCgmZGV2X3ByaXYtPm1tLmZyZWVfbGlzdCk7CiAJSU5JVF9MSVNUX0hF QUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJp di0+bW0uYm91bmRfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5mZW5jZV9s aXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2Vy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCmluZGV4IGM4YTRj NDBlYzJjMi4uMDI0MTY1OGFmMTZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zaHJpbmtlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3No cmlua2VyLmMKQEAgLTIwMSw2ICsyMDEsMTAgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJCSAgICAgICB0eXBlb2YoKm9iaiksCiAJCQkJ CQkgICAgICAgZ2xvYmFsX2xpc3QpKSkgewogCQkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFs X2xpc3QsICZzdGlsbF9pbl9saXN0KTsKKwkJCWlmICghb2JqLT5tbS5wYWdlcykgeworCQkJCWxp c3RfZGVsX2luaXQoJm9iai0+Z2xvYmFsX2xpc3QpOworCQkJCWNvbnRpbnVlOworCQkJfQogCiAJ CQlpZiAoZmxhZ3MgJiBJOTE1X1NIUklOS19QVVJHRUFCTEUgJiYKIAkJCSAgICBvYmotPm1tLm1h ZHYgIT0gSTkxNV9NQURWX0RPTlRORUVEKQpAQCAtMjE4LDggKzIyMiw2IEBAIGk5MTVfZ2VtX3No cmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlpZiAoIWNhbl9yZWxl YXNlX3BhZ2VzKG9iaikpCiAJCQkJY29udGludWU7CiAKLQkJCWk5MTVfZ2VtX29iamVjdF9nZXQo b2JqKTsKLQogCQkJaWYgKHVuc2FmZV9kcm9wX3BhZ2VzKG9iaikpIHsKIAkJCQltdXRleF9sb2Nr KCZvYmotPm1tLmxvY2spOwogCQkJCWlmICghb2JqLT5tbS5wYWdlcykgewpAQCAtMjI4LDggKzIz MCw2IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJfQogCQkJCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKIAkJCX0KLQotCQkJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOwogCQl9CiAJCWxpc3Rfc3BsaWNlKCZzdGlsbF9pbl9saXN0 LCBwaGFzZS0+bGlzdCk7CiAJfQpAQCAtMzk2LDEyICszOTYsMTggQEAgaTkxNV9nZW1fc2hyaW5r ZXJfb29tKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZv aWQgKnB0cikKIAkgKi8KIAl1bmJvdW5kID0gYm91bmQgPSB1bmV2aWN0YWJsZSA9IDA7CiAJbGlz dF9mb3JfZWFjaF9lbnRyeShvYmosICZkZXZfcHJpdi0+bW0udW5ib3VuZF9saXN0LCBnbG9iYWxf bGlzdCkgeworCQlpZiAoIW9iai0+bW0ucGFnZXMpCisJCQljb250aW51ZTsKKwogCQlpZiAoIWNh bl9yZWxlYXNlX3BhZ2VzKG9iaikpCiAJCQl1bmV2aWN0YWJsZSArPSBvYmotPmJhc2Uuc2l6ZSA+ PiBQQUdFX1NISUZUOwogCQllbHNlCiAJCQl1bmJvdW5kICs9IG9iai0+YmFzZS5zaXplID4+IFBB R0VfU0hJRlQ7CiAJfQogCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmZGV2X3ByaXYtPm1tLmJv dW5kX2xpc3QsIGdsb2JhbF9saXN0KSB7CisJCWlmICghb2JqLT5tbS5wYWdlcykKKwkJCWNvbnRp bnVlOworCiAJCWlmICghY2FuX3JlbGVhc2VfcGFnZXMob2JqKSkKIAkJCXVuZXZpY3RhYmxlICs9 IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fdGlsaW5nLmMKaW5kZXggNjYwODc5OWVlMWY5Li5jNjNhOWNmNGRhMzMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCkBAIC0zMjUsMTIgKzMyNSwxOSBAQCBp OTE1X2dlbV9nZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ c3RydWN0IGRybV9pOTE1X2dlbV9nZXRfdGlsaW5nICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKKwlpbnQgZXJyID0gLUVOT0VOVDsKKworCXJjdV9yZWFkX2xvY2so KTsKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShmaWxlLCBhcmdzLT5oYW5kbGUp OworCWlmIChvYmopIHsKKwkJYXJncy0+dGlsaW5nX21vZGUgPQorCQkJUkVBRF9PTkNFKG9iai0+ dGlsaW5nX2FuZF9zdHJpZGUpICYgVElMSU5HX01BU0s7CisJCWVyciA9IDA7CisJfQorCXJjdV9y ZWFkX3VubG9jaygpOworCWlmICh1bmxpa2VseShlcnIpKQorCQlyZXR1cm4gZXJyOwogCi0Jb2Jq ID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5kbGUpOwotCWlmICghb2Jq KQotCQlyZXR1cm4gLUVOT0VOVDsKLQotCWFyZ3MtPnRpbGluZ19tb2RlID0gUkVBRF9PTkNFKG9i ai0+dGlsaW5nX2FuZF9zdHJpZGUpICYgVElMSU5HX01BU0s7CiAJc3dpdGNoIChhcmdzLT50aWxp bmdfbW9kZSkgewogCWNhc2UgSTkxNV9USUxJTkdfWDoKIAkJYXJncy0+c3dpenpsZV9tb2RlID0g ZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVfeDsKQEAgLTMzOCwxMSArMzQ1LDEwIEBAIGk5MTVf Z2VtX2dldF90aWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAljYXNl IEk5MTVfVElMSU5HX1k6CiAJCWFyZ3MtPnN3aXp6bGVfbW9kZSA9IGRldl9wcml2LT5tbS5iaXRf Nl9zd2l6emxlX3k7CiAJCWJyZWFrOworCWRlZmF1bHQ6CiAJY2FzZSBJOTE1X1RJTElOR19OT05F OgogCQlhcmdzLT5zd2l6emxlX21vZGUgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKIAkJYnJl YWs7Ci0JZGVmYXVsdDoKLQkJRFJNX0VSUk9SKCJ1bmtub3duIHRpbGluZyBtb2RlXG4iKTsKIAl9 CiAKIAkvKiBIaWRlIGJpdCAxNyBmcm9tIHRoZSB1c2VyIC0tIHNlZSBjb21tZW50IGluIGk5MTVf Z2VtX3NldF90aWxpbmcgKi8KQEAgLTM1NSw2ICszNjEsNSBAQCBpOTE1X2dlbV9nZXRfdGlsaW5n KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKGFyZ3MtPnN3aXp6bGVf bW9kZSA9PSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMF8xNykKIAkJYXJncy0+c3dpenpsZV9tb2Rl ID0gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTA7CiAKLQlpOTE1X2dlbV9vYmplY3RfcHV0X3VubG9j a2VkKG9iaik7CiAJcmV0dXJuIDA7CiB9Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==