From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C34EC433E9 for ; Mon, 1 Feb 2021 08:57:51 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 82F2664E41 for ; Mon, 1 Feb 2021 08:57:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 82F2664E41 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6A0566E4F9; Mon, 1 Feb 2021 08:57:36 +0000 (UTC) Received: from fireflyinternet.com (unknown [77.68.26.236]) by gabe.freedesktop.org (Postfix) with ESMTPS id 741AA6E4B0 for ; Mon, 1 Feb 2021 08:57:33 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from build.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 23757750-1500050 for multiple; Mon, 01 Feb 2021 08:57:21 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Mon, 1 Feb 2021 08:56:53 +0000 Message-Id: <20210201085715.27435-35-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210201085715.27435-1-chris@chris-wilson.co.uk> References: <20210201085715.27435-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 35/57] drm/i915: Replace priolist rbtree with a skiplist X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Wilson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" UmVwbGFjZSB0aGUgcHJpb2xpc3QgcmJ0cmVlIHdpdGggYSBza2lwbGlzdC4gVGhlIGNydWNpYWwg ZGlmZmVyZW5jZSBpcwp0aGF0IHdhbGtpbmcgYW5kIHJlbW92aW5nIHRoZSBmaXJzdCBlbGVtZW50 IG9mIGEgc2tpcGxpc3QgaXMgTygxKSwgYnV0Ck8obGdOKSBmb3IgYW4gcmJ0cmVlLCBhcyB3ZSBu ZWVkIHRvIHJlYmFsYW5jZSBvbiByZW1vdmUuIFRoaXMgaXMgYQpoaW5kcmFuY2UgZm9yIHN1Ym1p c3Npb24gbGF0ZW5jeSBhcyBpdCBvY2N1cnMgYmV0d2VlbiBwaWNraW5nIGEgcmVxdWVzdApmb3Ig dGhlIHByaW9saXN0IGFuZCBzdWJtaXR0aW5nIGl0IHRvIGhhcmR3YXJlLCBhcyB3ZWxsIGVmZmVj dGl2ZWx5CnRyaXBsaW5nIHRoZSBudW1iZXIgb2YgTyhsZ04pIG9wZXJhdGlvbnMgcmVxdWlyZWQg dW5kZXIgdGhlIGlycW9mZiBsb2NrLgpUaGlzIGlzIGNyaXRpY2FsIHRvIHJlZHVjaW5nIHRoZSBs YXRlbmN5IGppdHRlciB3aXRoIG11bHRpcGxlIGNsaWVudHMuCgpUaGUgZG93bnNpZGVzIHRvIHNr aXBsaXN0cyBhcmUgdGhhdCBsb29rdXAvaW5zZXJ0aW9uIGlzIG9ubHkKcHJvYmFiaWxpc3RpY2Fs bHkgTyhsZ04pIGFuZCB0aGVyZSBpcyBhIHNpZ25pZmljYW50IG1lbW9yeSBwZW5hbHR5IHRvCmFz IGVhY2ggc2tpcCBub2RlIGlzIGxhcmdlciB0aGFuIHRoZSByYnRyZWUgZXF1aXZhbGVudC4gRnVy dGhlcm1vcmUsIHdlCmRvbid0IHVzZSBkeW5hbWljIGFycmF5cyBmb3IgdGhlIHNraXBsaXN0LCBz byB0aGUgYWxsb2NhdGlvbiBpcyBmaXhlZCwKYW5kIGltcG9zZXMgYW4gdXBwZXIgYm91bmQgb24g dGhlIHNjYWxhYmlsaXR5IHdydCB0byB0aGUgbnVtYmVyIG9mCmluZmxpZ2h0IHJlcXVlc3RzLgoK SW4gdGhlIGZvbGxvd2luZyBwYXRjaGVzLCB3ZSBpbnRyb2R1Y2UgYSBuZXcgc29ydCBrZXkgdG8g dGhlIHNjaGVkdWxlciwKYSB2aXJ0dWFsIGRlYWRsaW5lLiBUaGlzIGltcG9zZXMgYSBkaWZmZXJl bnQgc3RydWN0dXJlIHRvIHRoZSB0cmVlLgpVc2luZyBhIHByaW9yaXR5IHNvcnQsIHdlIGhhdmUg dmVyeSBmZXcgcHJpb3JpdHkgbGV2ZWxzIGFjdGl2ZSBhdCBhbnkKdGltZSwgbW9zdCBsaWtlbHkg anVzdCB0aGUgZGVmYXVsdCBwcmlvcml0eSBhbmQgc28gdGhlIHJidHJlZSBkZWdlbmVyYXRlcwp0 byBhIHNpbmdsZSBlbGVtZW50cyBjb250YWluaW5nIHRoZSBsaXN0IG9mIGFsbCByZWFkeSByZXF1 ZXN0cy4gVGhlCmRlYWRsaW5lcyBpbiBjb250cmFzdCBhcmUgdmVyeSBzcGFyc2UsIGFuZCB0eXBp Y2FsbHkgZWFjaCByZXF1ZXN0IGhhcyBhCnVuaXF1ZSBkZWFkbGluZS4gSW5zdGVhZCBvZiBiZWlu ZyBhYmxlIHRvIHNpbXBseSB3YWxrIHRoZSBsaXN0IGR1cmluZwpkZXF1ZXVlLCB3aXRoIHRoZSBk ZWFkbGluZSBzY2hlZHVsZXIgd2UgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIGJzdApvbiB0 aGUgY3JpdGljYWwgc3VibWlzc2lvbiBwYXRoLiBTa2lwbGlzdHMgYXJlIHZhc3RseSBzdXBlcmlv ciBpbiB0aGlzCmluc3RhbmNlIGR1ZSB0byB0aGUgTygxKSBpdGVyYXRpb24gZHVyaW5nIGRlcXVl dWUsIHdpdGggdmVyeSBzaW1pbGFyCmNoYXJhY3RlcmlzdGljcyBbb24gYXZlcmFnZV0gdG8gdGhl IHJidHJlZSBmb3IgaW5zZXJ0aW9uLgoKVGhpcyBtZWFucyB0aGF0IGJ5IHVzaW5nIHNraXBsaXN0 cyB3ZSBjYW4gaW50cm9kdWNlIGEgc3BhcnNlIHNvcnQga2V5CndpdGhvdXQgZGVncmFkaW5nIGxh dGVuY3kgb24gdGhlIGNyaXRpY2FsIHN1Ym1pc3Npb24gcGF0aC4KCkFzIGFuIGV4YW1wbGUsIG9u ZSBzaW1wbGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gZG8gbG90cyBvZgpzZW1pLWluZGVwZW5kZW50 IHdvcmsgd2l0aG91dCBhbnkgcHJpb3JpdHkgbWFuYWdlbWVudCAoZ2VtX2V4ZWNfcGFyYWxsZWwp LAp0aGUgbG9jayBob2xkIHRpbWVzIHdlcmU6Clt3b3JzdF0gICAgICAgIFt0b3RhbF0gICAgW2F2 Z10KIDk3My4wNSAgICAgNjMwMTU4NC44NCAgICAgMC4zNSAjIHBsYWluIHJidHJlZQogNTU5Ljgy ICAgICA1NDI0OTE1LjI1ICAgICAwLjMzICMgYmVzdCByYnRyZWUgd2l0aCBwcnVuaW5nCiAyMDgu MjEgICAgIDM4OTg3ODQuMDkgICAgIDAuMjQgIyBza2lwbGlzdAogIDM0LjA1ICAgICA1Nzg0MTA2 LjAxICAgICAwLjMyICMgcmJ0cmVlIHdpdGhvdXQgZGVhZGxpbmVzCiAgMjMuMzUgICAgIDQxNTI5 OTkuODAgICAgIDAuMjQgIyBza2lwbGlzdCB3aXRob3V0IGRlYWRsaW5lcwoKQmFzZWQgb24gdGhl IHNraXBsaXN0IGltcGxlbWVudGF0aW9uIGJ5IERyIENvbiBLb2xpdmFzIGZvciBNdVFTUy4KClJl ZmVyZW5jZXM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NraXBfbGlzdApTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiAuLi4v ZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYyAgfCAgNTIgKystLQogLi4u L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgIDMxICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmggICAgfCAgNjQgKysrLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYyAgICAgICAgIHwgMjg4ICsrKysrKysr KysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaCAgICAgICAg IHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5oICAg fCAgIDIgKy0KIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oICB8 ICAgMSArCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NjaGVkdWxlci5jICAgfCAg NTMgKysrLQogOCBmaWxlcyBjaGFuZ2VkLCAzODMgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0 c19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNf c3VibWlzc2lvbi5jCmluZGV4IDdlYzMzYmQ3M2Q5NS4uMWEzM2MzM2M5NmM0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMK QEAgLTI1MiwxMSArMjUyLDYgQEAgc3RhdGljIHZvaWQgcmluZ19zZXRfcGF1c2VkKGNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHN0YXRlKQogCQl3bWIoKTsKIH0KIAot c3RhdGljIHN0cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJfbm9kZSAq cmIpCi17Ci0JcmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCwgbm9kZSk7 Ci19Ci0KIHN0YXRpYyBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK IHsKIAlyZXR1cm4gUkVBRF9PTkNFKHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5KTsKQEAgLTI4MCwx NSArMjc1LDI3IEBAIHN0YXRpYyBpbnQgZWZmZWN0aXZlX3ByaW8oY29uc3Qgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEpCiAJcmV0dXJuIHByaW87CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpmaXJzdF9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkICpzZSkKK3sKKwlzdHJ1 Y3QgaTkxNV9wcmlvbGlzdCAqcGwgPSBzZS0+cXVldWUuc2VudGluZWwubmV4dFswXTsKKworCWlm IChwbCA9PSAmc2UtPnF1ZXVlLnNlbnRpbmVsKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBs aXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnBsLT5yZXF1ZXN0cywKKwkJCQkJc3RydWN0IGk5MTVf cmVxdWVzdCwKKwkJCQkJc2NoZWQubGluayk7Cit9CisKIHN0YXRpYyBpbnQgcXVldWVfcHJpbyhj b25zdCBzdHJ1Y3QgaTkxNV9zY2hlZCAqc2UpCiB7Ci0Jc3RydWN0IHJiX25vZGUgKnJiOworCXN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCi0JcmIgPSByYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1 ZSk7Ci0JaWYgKCFyYikKKwlycSA9IGZpcnN0X3JlcXVlc3Qoc2UpOworCWlmICghcnEpCiAJCXJl dHVybiBJTlRfTUlOOwogCi0JcmV0dXJuIHRvX3ByaW9saXN0KHJiKS0+cHJpb3JpdHk7CisJcmV0 dXJuIHJxX3ByaW8ocnEpOwogfQogCiBzdGF0aWMgaW50IHZpcnR1YWxfcHJpbyhjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZWwpCkBAIC0yOTgsNyArMzA1LDcgQEAgc3RhdGlj IGludCB2aXJ0dWFsX3ByaW8oY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmVs KQogCXJldHVybiByYiA/IHJiX2VudHJ5KHJiLCBzdHJ1Y3QgdmVfbm9kZSwgcmIpLT5wcmlvIDog SU5UX01JTjsKIH0KIAotc3RhdGljIGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKK3N0YXRpYyBib29sIG5lZWRfcHJlZW1wdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp CiB7CiAJY29uc3Qgc3RydWN0IGk5MTVfc2NoZWQgKnNlID0gJmVuZ2luZS0+c2NoZWQ7CkBAIC0x MTQzLDYgKzExNTAsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqKiBjb25zdCBsYXN0 X3BvcnQgPSBwb3J0ICsgZXhlY2xpc3RzLT5wb3J0X21hc2s7CiAJc3RydWN0IGk5MTVfcmVxdWVz dCAqbGFzdCwgKiBjb25zdCAqYWN0aXZlOwogCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmU7CisJ c3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsOwogCXN0cnVjdCByYl9ub2RlICpyYjsKIAlib29sIHN1 Ym1pdCA9IGZhbHNlOwogCkBAIC0xMzUzLDExICsxMzYxLDEwIEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJCWJyZWFrOwog CX0KIAotCXdoaWxlICgocmIgPSByYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSkpKSB7Ci0JCXN0 cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOworCWZvcl9lYWNoX3ByaW9s aXN0KHBsLCAmc2UtPnF1ZXVlKSB7CiAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47CiAK LQkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCkgeworCQlwcmlv bGlzdF9mb3JfZWFjaF9yZXF1ZXN0X3NhZmUocnEsIHJuLCBwbCkgewogCQkJYm9vbCBtZXJnZSA9 IHRydWU7CiAKIAkJCS8qCkBAIC0xNDMyLDggKzE0MzksNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlz dHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCQl9CiAJCX0KIAot CQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5vZGUsICZzZS0+cXVldWUpOwotCQlpOTE1X3ByaW9saXN0 X2ZyZWUocCk7CisJCWk5MTVfcHJpb2xpc3RfYWR2YW5jZSgmc2UtPnF1ZXVlLCBwbCk7CiAJfQog ZG9uZToKIAkqcG9ydCsrID0gaTkxNV9yZXF1ZXN0X2dldChsYXN0KTsKQEAgLTE0NTQsNyArMTQ2 MCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAkgKiByZXF1ZXN0IHRyaWdnZXJpbmcgcHJlZW1wdGlvbiBvbiB0aGUgbmV4 dCBkZXF1ZXVlIChvciBzdWJzZXF1ZW50CiAJICogaW50ZXJydXB0IGZvciBzZWNvbmRhcnkgcG9y dHMpLgogCSAqLwotCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9IHF1ZXVlX3ByaW8o c2UpOworCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9IHBsLT5wcmlvcml0eTsKIAlz cGluX3VubG9jaygmc2UtPmxvY2spOwogCiAJLyoKQEAgLTI2NDUsNiArMjY1MSw3IEBAIHN0YXRp YyB2b2lkIGV4ZWNsaXN0c19yZXNldF9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0g JmVuZ2luZS0+ZXhlY2xpc3RzOwogCXN0cnVjdCBpOTE1X3NjaGVkICpzZSA9IGludGVsX2VuZ2lu ZV9nZXRfc2NoZWR1bGVyKGVuZ2luZSk7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsK KwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7CiAJc3RydWN0IHJiX25vZGUgKnJiOwogCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CiAKQEAgLTI2NzUsMTggKzI2ODIsMTQgQEAgc3RhdGljIHZvaWQgZXhl Y2xpc3RzX3Jlc2V0X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaW50 ZWxfZW5naW5lX3NpZ25hbF9icmVhZGNydW1icyhlbmdpbmUpOwogCiAJLyogRmx1c2ggdGhlIHF1 ZXVlZCByZXF1ZXN0cyB0byB0aGUgdGltZWxpbmUgbGlzdCAoZm9yIHJldGlyaW5nKS4gKi8KLQl3 aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZzZS0+cXVldWUpKSkgewotCQlzdHJ1Y3QgaTkx NV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKLQotCQlwcmlvbGlzdF9mb3JfZWFjaF9y ZXF1ZXN0X2NvbnN1bWUocnEsIHJuLCBwKSB7CisJZm9yX2VhY2hfcHJpb2xpc3QocGwsICZzZS0+ cXVldWUpIHsKKwkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9zYWZlKHJxLCBybiwgcGwpIHsK IAkJCWlmIChpOTE1X3JlcXVlc3RfbWFya19laW8ocnEpKSB7CiAJCQkJX19pOTE1X3JlcXVlc3Rf c3VibWl0KHJxKTsKIAkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKIAkJCX0KIAkJfQotCi0JCXJi X2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJnNlLT5xdWV1ZSk7Ci0JCWk5MTVfcHJpb2xpc3RfZnJl ZShwKTsKKwkJaTkxNV9wcmlvbGlzdF9hZHZhbmNlKCZzZS0+cXVldWUsIHBsKTsKIAl9CiAJR0VN X0JVR19PTighaTkxNV9zY2hlZF9pc19pZGxlKHNlKSk7CiAKQEAgLTI3MjAsNyArMjcyMyw2IEBA IHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCS8qIFJlbWFpbmluZyBfdW5yZWFkeV8gcmVxdWVzdHMgd2lsbCBiZSBub3An ZWQgd2hlbiBzdWJtaXR0ZWQgKi8KIAogCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9 IElOVF9NSU47Ci0Jc2UtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7CiAKIAlHRU1fQlVHX09OKF9f dGFza2xldF9pc19lbmFibGVkKCZzZS0+dGFza2xldCkpOwogCXNlLT50YXNrbGV0LmNhbGxiYWNr ID0gbm9wX3N1Ym1pc3Npb25fdGFza2xldDsKQEAgLTMxOTEsNiArMzE5Myw4IEBAIHN0YXRpYyB2 b2lkIHZpcnR1YWxfY29udGV4dF9leGl0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAogCWZv ciAobiA9IDA7IG4gPCB2ZS0+bnVtX3NpYmxpbmdzOyBuKyspCiAJCWludGVsX2VuZ2luZV9wbV9w dXQodmUtPnNpYmxpbmdzW25dKTsKKworCWk5MTVfc2NoZWRfcGFyayhpbnRlbF9lbmdpbmVfZ2V0 X3NjaGVkdWxlcigmdmUtPmJhc2UpKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9j b250ZXh0X29wcyB2aXJ0dWFsX2NvbnRleHRfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggZThjNjZkODY4YzU5Li43 NWUyNWQ0MTkyNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYwpAQCAtNTksMTEgKzU5LDYgQEAKIAogI2RlZmluZSBHVUNfUkVRVUVT VF9TSVpFIDY0IC8qIGJ5dGVzICovCiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcHJpb2xp c3QgKnRvX3ByaW9saXN0KHN0cnVjdCByYl9ub2RlICpyYikKLXsKLQlyZXR1cm4gcmJfZW50cnko cmIsIHN0cnVjdCBpOTE1X3ByaW9saXN0LCBub2RlKTsKLX0KLQogc3RhdGljIHN0cnVjdCBndWNf c3RhZ2VfZGVzYyAqX19nZXRfc3RhZ2VfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBp ZCkKIHsKIAlzdHJ1Y3QgZ3VjX3N0YWdlX2Rlc2MgKmJhc2UgPSBndWMtPnN0YWdlX2Rlc2NfcG9v bF92YWRkcjsKQEAgLTE4Niw4ICsxODEsOCBAQCBzdGF0aWMgdm9pZCBfX2d1Y19kZXF1ZXVlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqIGNv bnN0IGxhc3RfcG9ydCA9IGZpcnN0ICsgZXhlY2xpc3RzLT5wb3J0X21hc2s7CiAJc3RydWN0IGk5 MTVfcmVxdWVzdCAqbGFzdCA9IGZpcnN0WzBdOwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipwb3J0 OworCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbDsKIAlib29sIHN1Ym1pdCA9IGZhbHNlOwotCXN0 cnVjdCByYl9ub2RlICpyYjsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNlLT5sb2NrKTsKIApA QCAtMjA0LDExICsxOTksMTAgQEAgc3RhdGljIHZvaWQgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICogZXZlbnQuCiAJICovCiAJcG9ydCA9IGZpcnN0Owot CXdoaWxlICgocmIgPSByYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSkpKSB7Ci0JCXN0cnVjdCBp OTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOworCWZvcl9lYWNoX3ByaW9saXN0KHBs LCAmc2UtPnF1ZXVlKSB7CiAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47CiAKLQkJcHJp b2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCkgeworCQlwcmlvbGlzdF9m b3JfZWFjaF9yZXF1ZXN0X3NhZmUocnEsIHJuLCBwbCkgewogCQkJaWYgKGxhc3QgJiYgcnEtPmNv bnRleHQgIT0gbGFzdC0+Y29udGV4dCkgewogCQkJCWlmIChwb3J0ID09IGxhc3RfcG9ydCkKIAkJ CQkJZ290byBkb25lOwpAQCAtMjI0LDEyICsyMTgsMTAgQEAgc3RhdGljIHZvaWQgX19ndWNfZGVx dWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCQlsYXN0ID0gcnE7CiAJCX0K IAotCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5vZGUsICZzZS0+cXVldWUpOwotCQlpOTE1X3ByaW9s aXN0X2ZyZWUocCk7CisJCWk5MTVfcHJpb2xpc3RfYWR2YW5jZSgmc2UtPnF1ZXVlLCBwbCk7CiAJ fQogZG9uZToKLQlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPQotCQlyYiA/IHRvX3By aW9saXN0KHJiKS0+cHJpb3JpdHkgOiBJTlRfTUlOOworCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3Jp dHlfaGludCA9IHBsLT5wcmlvcml0eTsKIAlpZiAoc3VibWl0KSB7CiAJCSpwb3J0ID0gc2NoZWR1 bGVfaW4obGFzdCwgcG9ydCAtIGV4ZWNsaXN0cy0+aW5mbGlnaHQpOwogCQkqKytwb3J0ID0gTlVM TDsKQEAgLTMzMCw3ICszMjIsNyBAQCBzdGF0aWMgdm9pZCBndWNfcmVzZXRfY2FuY2VsKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0 cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKIAlzdHJ1Y3QgaTkxNV9z Y2hlZCAqc2UgPSBpbnRlbF9lbmdpbmVfZ2V0X3NjaGVkdWxlcihlbmdpbmUpOwogCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCAqcm47Ci0Jc3RydWN0IHJiX25vZGUgKnJiOworCXN0cnVjdCBpOTE1 X3ByaW9saXN0ICpwOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlFTkdJTkVfVFJBQ0UoZW5n aW5lLCAiXG4iKTsKQEAgLTM1OCwyNSArMzUwLDIwIEBAIHN0YXRpYyB2b2lkIGd1Y19yZXNldF9j YW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIAogCS8qIEZsdXNoIHRo ZSBxdWV1ZWQgcmVxdWVzdHMgdG8gdGhlIHRpbWVsaW5lIGxpc3QgKGZvciByZXRpcmluZykuICov Ci0Jd2hpbGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmc2UtPnF1ZXVlKSkpIHsKLQkJc3RydWN0 IGk5MTVfcHJpb2xpc3QgKnAgPSB0b19wcmlvbGlzdChyYik7Ci0KLQkJcHJpb2xpc3RfZm9yX2Vh Y2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCkgeworCWZvcl9lYWNoX3ByaW9saXN0KHAsICZz ZS0+cXVldWUpIHsKKwkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9zYWZlKHJxLCBybiwgcCkg ewogCQkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOwogCQkJX19pOTE1X3JlcXVlc3Rf c3VibWl0KHJxKTsKIAkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnJxLT5mZW5jZSwgLUVJTyk7CiAJ CQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShycSk7CiAJCX0KLQotCQlyYl9lcmFzZV9jYWNo ZWQoJnAtPm5vZGUsICZzZS0+cXVldWUpOwotCQlpOTE1X3ByaW9saXN0X2ZyZWUocCk7CisJCWk5 MTVfcHJpb2xpc3RfYWR2YW5jZSgmc2UtPnF1ZXVlLCBwKTsKIAl9CiAJR0VNX0JVR19PTighaTkx NV9zY2hlZF9pc19pZGxlKHNlKSk7CiAKIAkvKiBSZW1haW5pbmcgX3VucmVhZHlfIHJlcXVlc3Rz IHdpbGwgYmUgbm9wJ2VkIHdoZW4gc3VibWl0dGVkICovCiAKIAlleGVjbGlzdHMtPnF1ZXVlX3By aW9yaXR5X2hpbnQgPSBJTlRfTUlOOwotCXNlLT5xdWV1ZSA9IFJCX1JPT1RfQ0FDSEVEOwogCiAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2UtPmxvY2ssIGZsYWdzKTsKIH0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaAppbmRleCBiYzJmYTg0Zjk4YTguLmVlNzQ4 MmI5YzgxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wcmlvbGlzdF90 eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaApA QCAtMzgsMTAgKzM4LDcyIEBAIGVudW0gewogI2RlZmluZSBJOTE1X1BSSU9SSVRZX1VOUFJFRU1Q VEFCTEUgSU5UX01BWAogI2RlZmluZSBJOTE1X1BSSU9SSVRZX0JBUlJJRVIgKEk5MTVfUFJJT1JJ VFlfVU5QUkVFTVBUQUJMRSAtIDEpCiAKKy8qCisgKiBUaGUgc2xhYiByZXR1cm5zIHBvd2VyLW9m LXR3byBjaHVua3Mgb2YgbWVtb3J5LCBzbyBmaWxsIG91dCB0aGUKKyAqIG5vZGUgdG8gdGhlIG5l eHQgY2FjaGVsaW5lLgorICoKKyAqIFdlIGNhbiBlc3RpbWF0ZSBob3cgbWFueSByZXF1ZXN0cyB0 aGUgc2tpcGxpc3Qgd2lsbCBzY2FsZSB0byBiYXNlZAorICogb24gaXRzIGhlaWdodDoKKyAqICAg MTEgPT4gIDQgbWlsbGlvbiByZXF1ZXN0cworICogICAxMiA9PiAxNiBtaWxsaW9uIHJlcXVlc3Rz CisgKi8KKyNpZmRlZiBDT05GSUdfNjRCSVQKKyNkZWZpbmUgSTkxNV9QUklPTElTVF9IRUlHSFQg MTIKKyNlbHNlCisjZGVmaW5lIEk5MTVfUFJJT0xJU1RfSEVJR0hUIDExCisjZW5kaWYKKworLyoK KyAqIGk5MTVfcHJpb2xpc3QgZm9ybXMgYSBza2lwbGlzdC4gVGhlIHNraXBsaXN0IGlzIGJ1aWx0 IGluIGxheWVycywKKyAqIHN0YXJ0aW5nIGF0IHRoZSBiYXNlIFswXSBpcyBhIHNpbmdseSBsaW5r ZWQgbGlzdCBvZiBhbGwgaTkxNV9wcmlvbGlzdC4KKyAqIEVhY2ggaGlnaGVyIGxheWVyIGNvbnRh aW5zIGEgZnJhY3Rpb24gb2YgdGhlIGk5MTVfcHJpb2xpc3QgZnJvbSB0aGUKKyAqIHByZXZpb3Vz IGxheWVyOgorICoKKyAqIFNbMF0gMDEyMzQ1Njc4OUFCQ0RFRjAxMjM0NTY3ODlBQkNERUYwMTIz NDU2Nzg5QUJDREVGMDEyMzQ1Njc4OUFCQ0RFRiBTCisgKiBFWzFdID4xPjM+NT43Pjk+Qj5EPkY+ MT4zPjU+Nz45PkI+RD5GPjE+Mz41Pjc+OT5CPkQ+Rj4xPjM+NT43Pjk+Qj5EPkYgRQorICogTlsy XSAtLT4zLS0+Ny0tPkItLT5GLS0+My0tPjctLT5CLS0+Ri0tPjMtLT43LS0+Qi0tPkYtLT4zLS0+ Ny0tPkItLT5GIE4KKyAqIFRbM10gLS0tLS0tPjctLS0tLS0+Ri0tLS0tLS03LS0tLS0tPkYtLS0t LS0+Ny0tLS0tLT5GLS0tLS0tPjctLS0tLS0+RiBUCisgKiBJWzRdIC0tLS0tLS0tLS0tLS0tPkYt LS0tLS0tLS0tLS0tLT5GLS0tLS0tLS0tLS0tLS0+Ri0tLS0tLS0tLS0tLS0tPkYgSQorICogTls1 XSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ri0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLT5GIE4KKyAqIEVbNl0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPkYtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBFCisgKiBMWzddIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gTAorICoKKyAq IFRvIGl0ZXJhdGUgdGhyb3VnaCBhbGwgYWN0aXZlIGk5MTVfcHJpb2xpc3QsIHdlIG9ubHkgbmVl ZCB0byBmb2xsb3cKKyAqIHRoZSBjaGFpbiBpbiBpOTE1X3ByaW9saXN0Lm5leHRbMF0gKHNlZSBm b3JfZWFjaF9wcmlvbGlzdCgpKS4KKyAqCisgKiBUbyBxdWlja2x5IGZpbmQgYSBzcGVjaWZpYyBr ZXkgKG9yIGluc2VydCBwb2ludCksIHdlIGNhbiBwZXJmb3JtIGEgYmluYXJ5CisgKiBzZWFyY2gg Ynkgc3RhcnRpbmcgYXQgdGhlIGhpZ2hlc3QgbGV2ZWwgYW5kIGZvbGxvd2luZyB0aGUgbGlua2Vk IGxpc3QKKyAqIGF0IHRoYXQgbGV2ZWwgdW50aWwgd2UgZWl0aGVyIGZpbmQgdGhlIG5vZGUsIG9y IGhhdmUgZ29uZSBwYXNzZWQgdGhlIGtleS4KKyAqIFRoZW4gd2UgZGVzY2VuZCBhIGxldmVsLCBh bmQgc3RhcnQgd2Fsa2luZyB0aGUgbGlzdCBhZ2FpbiBzdGFydGluZyBmcm9tCisgKiB0aGUgY3Vy cmVudCBwb3NpdGlvbiwgdW50aWwgZXZlbnR1YWxseSB3ZSBmaW5kIG91ciBrZXksIG9yIHdlIHJ1 biBvdXQgb2YKKyAqIGxldmVscy4KKyAqCisgKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr aS9Ta2lwX2xpc3QKKyAqLwogc3RydWN0IGk5MTVfcHJpb2xpc3QgewogCXN0cnVjdCBsaXN0X2hl YWQgcmVxdWVzdHM7Ci0Jc3RydWN0IHJiX25vZGUgbm9kZTsKIAlpbnQgcHJpb3JpdHk7CisKKwlp bnQgbGV2ZWw7CisJc3RydWN0IGk5MTVfcHJpb2xpc3QgKm5leHRbSTkxNV9QUklPTElTVF9IRUlH SFRdOwogfTsKIAorc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCB7CisJc3RydWN0IGk5MTVfcHJp b2xpc3Qgc2VudGluZWw7CisJdTMyIHBybmc7Cit9OworCisjZGVmaW5lIGk5MTVfcHJpb2xpc3Rf aXNfZW1wdHkocm9vdCkgKChyb290KS0+c2VudGluZWwubGV2ZWwgPCAwKQorCisjZGVmaW5lIGZv cl9lYWNoX3ByaW9saXN0KHAsIHJvb3QpIFwKKwlmb3IgKChwKSA9IChyb290KS0+c2VudGluZWwu bmV4dFswXTsgXAorCSAgICAgKHApICE9ICYocm9vdCktPnNlbnRpbmVsOyBcCisJICAgICAocCkg PSAocCktPm5leHRbMF0pCisKKyNkZWZpbmUgcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdChpdCwg cGxpc3QpIFwKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0LCAmKHBsaXN0KS0+cmVxdWVzdHMsIHNj aGVkLmxpbmspCisKKyNkZWZpbmUgcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9zYWZlKGl0LCBu LCBwbGlzdCkgXAorCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdCwgbiwgJihwbGlzdCktPnJl cXVlc3RzLCBzY2hlZC5saW5rKQorCiAjZW5kaWYgLyogX0k5MTVfUFJJT0xJU1RfVFlQRVNfSF8g Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCmluZGV4IDQ4MzM2NDM0YmZmMy4u OTkxZDQ4NmIzYmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVk dWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKQEAgLTQs NyArNCw5IEBACiAgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgogICovCiAK KyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2lu Y2x1ZGUgPGxpbnV4L3ByYW5kb20uaD4KIAogI2luY2x1ZGUgImd0L2ludGVsX3JpbmcuaCIKICNp bmNsdWRlICJndC9pbnRlbF9scmNfcmVnLmgiCkBAIC0xMzksNiArMTQxLDE2IEBAIHN0YXRpYyBi b29sIG5vdF9leGVjdXRpbmcoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJcmV0dXJu IGZhbHNlOwogfQogCitzdGF0aWMgdm9pZCBpbml0X3ByaW9saXN0KHN0cnVjdCBpOTE1X3ByaW9s aXN0X3Jvb3QgKmNvbnN0IHJvb3QpCit7CisJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsID0gJnJv b3QtPnNlbnRpbmVsOworCisJbWVtc2V0X3AoKHZvaWQgKiopcGwtPm5leHQsIHBsLCBBUlJBWV9T SVpFKHBsLT5uZXh0KSk7CisJcGwtPnJlcXVlc3RzLnByZXYgPSBOVUxMOworCXBsLT5wcmlvcml0 eSA9IElOVF9NSU47CisJcGwtPmxldmVsID0gLTE7Cit9CisKIHZvaWQgaTkxNV9zY2hlZF9pbml0 KHN0cnVjdCBpOTE1X3NjaGVkICpzZSwKIAkJICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCSAg ICAgY29uc3QgY2hhciAqbmFtZSwKQEAgLTE1Myw5ICsxNjUsOSBAQCB2b2lkIGk5MTVfc2NoZWRf aW5pdChzdHJ1Y3QgaTkxNV9zY2hlZCAqc2UsCiAKIAlzZS0+bWFzayA9IG1hc2s7CiAKKwlpbml0 X3ByaW9saXN0KCZzZS0+cXVldWUpOwogCUlOSVRfTElTVF9IRUFEKCZzZS0+cmVxdWVzdHMpOwog CUlOSVRfTElTVF9IRUFEKCZzZS0+aG9sZCk7Ci0Jc2UtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7 CiAKIAlpOTE1X3NjaGVkX2luaXRfaXBpKCZzZS0+aXBpKTsKIApAQCAtMTc2LDggKzE4OCw2MCBA QCB2b2lkIGk5MTVfc2NoZWRfaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZCAqc2UsCiAjZW5kaWYKIH0K IAorX19tYXliZV91bnVzZWQgc3RhdGljIGJvb2wgcHJpb2xpc3RfaWRsZShzdHJ1Y3QgaTkxNV9w cmlvbGlzdF9yb290ICpyb290KQoreworCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbCA9ICZyb290 LT5zZW50aW5lbDsKKwlpbnQgbHZsOworCisJZm9yIChsdmwgPSAwOyBsdmwgPCBBUlJBWV9TSVpF KHBsLT5uZXh0KTsgbHZsKyspIHsKKwkJaWYgKHBsLT5uZXh0W2x2bF0gIT0gcGwpIHsKKwkJCUdF TV9UUkFDRV9FUlIoInJvb3RbJWRdIGlzIG5vdCBlbXB0eVxuIiwgbHZsKTsKKwkJCXJldHVybiBm YWxzZTsKKwkJfQorCX0KKworCWlmIChwbC0+bGV2ZWwgIT0gLTEpIHsKKwkJR0VNX1RSQUNFX0VS Uigicm9vdCBpcyBub3QgY2xlYXI6ICVkXG4iLCBwbC0+bGV2ZWwpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBsX2VtcHR5KHN0cnVjdCBs aXN0X2hlYWQgKnN0KQoreworCXJldHVybiAhc3QtPnByZXY7Cit9CisKK3N0YXRpYyB2b2lkIHBs X3B1c2goc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsLCBzdHJ1Y3QgbGlzdF9oZWFkICpzdCkKK3sK KwkvKiBLZWVwIGxpc3RfZW1wdHkoJnBsLT5yZXF1ZXN0cykgdmFsaWQgZm9yIGNvbmN1cnJlbnQg cmVhZGVycyAqLworCXBsLT5yZXF1ZXN0cy5wcmV2ID0gc3QtPnByZXY7CisJc3QtPnByZXYgPSAm cGwtPnJlcXVlc3RzOworCUdFTV9CVUdfT04ocGxfZW1wdHkoc3QpKTsKK30KKworc3RhdGljIHN0 cnVjdCBpOTE1X3ByaW9saXN0ICpwbF9wb3Aoc3RydWN0IGxpc3RfaGVhZCAqc3QpCit7CisJc3Ry dWN0IGk5MTVfcHJpb2xpc3QgKnBsOworCisJR0VNX0JVR19PTihwbF9lbXB0eShzdCkpOworCXBs ID0gY29udGFpbmVyX29mKHN0LT5wcmV2LCB0eXBlb2YoKnBsKSwgcmVxdWVzdHMpOworCXN0LT5w cmV2ID0gcGwtPnJlcXVlc3RzLnByZXY7CisKKwlyZXR1cm4gcGw7Cit9CisKIHZvaWQgaTkxNV9z Y2hlZF9wYXJrKHN0cnVjdCBpOTE1X3NjaGVkICpzZSkKIHsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlz dF9yb290ICpyb290ID0gJnNlLT5xdWV1ZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0ID0gJnJv b3QtPnNlbnRpbmVsLnJlcXVlc3RzOworCisJR0VNX0JVR19PTighcHJpb2xpc3RfaWRsZShyb290 KSk7CisKKwl3aGlsZSAoIXBsX2VtcHR5KGxpc3QpKQorCQlrbWVtX2NhY2hlX2ZyZWUoZ2xvYmFs LnNsYWJfcHJpb3JpdGllcywgcGxfcG9wKGxpc3QpKTsKKwogCUdFTV9CVUdfT04oIWk5MTVfc2No ZWRfaXNfaWRsZShzZSkpOwogCXNlLT5ub19wcmlvbGlzdCA9IGZhbHNlOwogfQpAQCAtMjUzLDcw ICszMTcsNzEgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVfc2lnbmFsZWQoY29uc3Qgc3RydWN0 IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKIAlyZXR1cm4gaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChu b2RlX3RvX3JlcXVlc3Qobm9kZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3By aW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJfbm9kZSAqcmIpCitzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGludCByYW5kb21fbGV2ZWwoc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqcm9vdCkK IHsKLQlyZXR1cm4gcmJfZW50cnkocmIsIHN0cnVjdCBpOTE1X3ByaW9saXN0LCBub2RlKTsKLX0K LQotc3RhdGljIHZvaWQgYXNzZXJ0X3ByaW9saXN0cyhzdHJ1Y3QgaTkxNV9zY2hlZCAqIGNvbnN0 IHNlKQotewotCXN0cnVjdCByYl9ub2RlICpyYjsKLQlsb25nIGxhc3RfcHJpbzsKLQotCWlmICgh SVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSkKLQkJcmV0dXJuOwotCi0JR0VN X0JVR19PTihyYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSkgIT0KLQkJICAgcmJfZmlyc3QoJnNl LT5xdWV1ZS5yYl9yb290KSk7Ci0KLQlsYXN0X3ByaW8gPSBJTlRfTUFYOwotCWZvciAocmIgPSBy Yl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSk7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Ci0JCWNv bnN0IHN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOwotCi0JCUdFTV9C VUdfT04ocC0+cHJpb3JpdHkgPiBsYXN0X3ByaW8pOwotCQlsYXN0X3ByaW8gPSBwLT5wcmlvcml0 eTsKLQl9CisJLyoKKwkgKiBHaXZlbiBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uIG9mIHJhbmRvbSBu dW1iZXJzIG92ZXIgdGhlIHUzMiwgdGhlbgorCSAqIHRoZSBwcm9iYWJpbGl0eSBlYWNoIGJpdCBi ZWluZyB1bnNldCBpcyBQPTAuNS4gVGhlIHByb2JhYmlsaXR5IG9mIGEKKwkgKiBzdWNjZXNzaXZl IHNlcXVlbmNlIG9mIGJpdHMgYmVpbmcgdW5zZXQgaXMgUChuKSA9IDAuNV5uIFtuID4gMF0uCisJ ICogICBQKGxldmVsOjEpID0gMC41CisJICogICBQKGxldmVsOjIpID0gMC4yNQorCSAqICAgUChs ZXZlbDozKSA9IDAuMTI1CisJICogICBQKGxldmVsOjQpID0gMC4wNjI1CisJICogICAuLi4KKwkg KiBTbyB3ZSBjYW4gdXNlIGZmcygpIG9uIGEgZ29vZCByYW5kb20gbnVtYmVyIGdlbmVyYXRvciB0 byBwaWNrIG91cgorCSAqIGxldmVsLiBXZSBkaXZpZGUgYnkgdHdvIHRvIHJlZHVjZSB0aGUgcHJv YmFiaWxpdHkgb2YgY2hvb3NpbmcgYQorCSAqIGxldmVsIHRvIC4yNSwgYXMgdGhlIGNvc3Qgb2Yg ZGVzY2VuZGluZyBhIGxldmVsIGlzIHRoZSBzYW1lIGFzCisJICogZm9sbG93aW5nIGFuIGV4dHJh IGxpbmsgaW4gdGhlIGNoYWluIGF0IHRoYXQgbGV2ZWwgKHNvIHdlIGNhbgorCSAqIHBhY2sgbW9y ZSBub2RlcyBpbnRvIGZld2VyIGxldmVscyB3aXRob3V0IGluY3VycmluZyBleHRyYSBjb3N0LAor CSAqIGFuZCBhbGxvdyBzY2FsaW5nIHRvIGhpZ2hlciB2b2x1bWVzIG9mIHJlcXVlc3RzIHdpdGhv dXQgZXhwYW5kaW5nCisJICogdGhlIGhlaWdodCBvZiB0aGUgc2tpcGxpc3QpLgorCSAqLworCXJv b3QtPnBybmcgPSBuZXh0X3BzZXVkb19yYW5kb20zMihyb290LT5wcm5nKTsKKwlyZXR1cm4gIF9f ZmZzKHJvb3QtPnBybmcpIC8gMjsKIH0KIAogc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgKgogbG9v a3VwX3ByaW9saXN0KHN0cnVjdCBpOTE1X3NjaGVkICpzZSwgaW50IHByaW8pCiB7Ci0Jc3RydWN0 IGk5MTVfcHJpb2xpc3QgKnA7Ci0Jc3RydWN0IHJiX25vZGUgKipwYXJlbnQsICpyYjsKLQlib29s IGZpcnN0ID0gdHJ1ZTsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdXBkYXRlW0k5MTVfUFJJT0xJ U1RfSEVJR0hUXTsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpyb290ID0gJnNlLT5xdWV1 ZTsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwsICp0bXA7CisJaW50IGx2bDsKIAogCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJnNlLT5sb2NrKTsKLQlhc3NlcnRfcHJpb2xpc3RzKHNlKTsKLQogCWlm ICh1bmxpa2VseShzZS0+bm9fcHJpb2xpc3QpKQogCQlwcmlvID0gSTkxNV9QUklPUklUWV9OT1JN QUw7CiAKKwlmb3JfZWFjaF9wcmlvbGlzdChwbCwgcm9vdCkgeyAvKiByZWN5Y2xlIGFueSBlbXB0 eSBlbGVtZW50cyBiZWZvcmUgdXMgKi8KKwkJaWYgKHBsLT5wcmlvcml0eSA8PSBwcmlvIHx8ICFs aXN0X2VtcHR5KCZwbC0+cmVxdWVzdHMpKQorCQkJYnJlYWs7CisKKwkJaTkxNV9wcmlvbGlzdF9h ZHZhbmNlKHJvb3QsIHBsKTsKKwl9CisKIGZpbmRfcHJpb2xpc3Q6Ci0JLyogbW9zdCBwb3NpdGl2 ZSBwcmlvcml0eSBpcyBzY2hlZHVsZWQgZmlyc3QsIGVxdWFsIHByaW9yaXRpZXMgZmlmbyAqLwot CXJiID0gTlVMTDsKLQlwYXJlbnQgPSAmc2UtPnF1ZXVlLnJiX3Jvb3QucmJfbm9kZTsKLQl3aGls ZSAoKnBhcmVudCkgewotCQlyYiA9ICpwYXJlbnQ7Ci0JCXAgPSB0b19wcmlvbGlzdChyYik7Ci0J CWlmIChwcmlvID4gcC0+cHJpb3JpdHkpIHsKLQkJCXBhcmVudCA9ICZyYi0+cmJfbGVmdDsKLQkJ fSBlbHNlIGlmIChwcmlvIDwgcC0+cHJpb3JpdHkpIHsKLQkJCXBhcmVudCA9ICZyYi0+cmJfcmln aHQ7Ci0JCQlmaXJzdCA9IGZhbHNlOwotCQl9IGVsc2UgewotCQkJcmV0dXJuICZwLT5yZXF1ZXN0 czsKLQkJfQorCXBsID0gJnJvb3QtPnNlbnRpbmVsOworCWx2bCA9IHBsLT5sZXZlbDsKKwl3aGls ZSAobHZsID49IDApIHsKKwkJd2hpbGUgKHRtcCA9IHBsLT5uZXh0W2x2bF0sIHRtcC0+cHJpb3Jp dHkgPj0gcHJpbykKKwkJCXBsID0gdG1wOworCQlpZiAocGwtPnByaW9yaXR5ID09IHByaW8pCisJ CQlnb3RvIG91dDsKKwkJdXBkYXRlW2x2bC0tXSA9IHBsOwogCX0KIAogCWlmIChwcmlvID09IEk5 MTVfUFJJT1JJVFlfTk9STUFMKSB7Ci0JCXAgPSAmc2UtPmRlZmF1bHRfcHJpb2xpc3Q7CisJCXBs ID0gJnNlLT5kZWZhdWx0X3ByaW9saXN0OworCX0gZWxzZSBpZiAoIXBsX2VtcHR5KCZyb290LT5z ZW50aW5lbC5yZXF1ZXN0cykpIHsKKwkJcGwgPSBwbF9wb3AoJnJvb3QtPnNlbnRpbmVsLnJlcXVl c3RzKTsKIAl9IGVsc2UgewotCQlwID0ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xhYl9wcmlv cml0aWVzLCBHRlBfQVRPTUlDKTsKKwkJcGwgPSBrbWVtX2NhY2hlX2FsbG9jKGdsb2JhbC5zbGFi X3ByaW9yaXRpZXMsIEdGUF9BVE9NSUMpOwogCQkvKiBDb252ZXJ0IGFuIGFsbG9jYXRpb24gZmFp bHVyZSB0byBhIHByaW9yaXR5IGJ1bXAgKi8KLQkJaWYgKHVubGlrZWx5KCFwKSkgeworCQlpZiAo dW5saWtlbHkoIXBsKSkgewogCQkJcHJpbyA9IEk5MTVfUFJJT1JJVFlfTk9STUFMOyAvKiByZWN1 cnNlcyBqdXN0IG9uY2UgKi8KIAotCQkJLyogVG8gbWFpbnRhaW4gb3JkZXJpbmcgd2l0aCBhbGwg cmVuZGVyaW5nLCBhZnRlciBhbgorCQkJLyoKKwkJCSAqIFRvIG1haW50YWluIG9yZGVyaW5nIHdp dGggYWxsIHJlbmRlcmluZywgYWZ0ZXIgYW4KIAkJCSAqIGFsbG9jYXRpb24gZmFpbHVyZSB3ZSBo YXZlIHRvIGRpc2FibGUgYWxsIHNjaGVkdWxpbmcuCiAJCQkgKiBSZXF1ZXN0cyB3aWxsIHRoZW4g YmUgZXhlY3V0ZWQgaW4gZmlmbywgYW5kIHNjaGVkdWxlCiAJCQkgKiB3aWxsIGVuc3VyZSB0aGF0 IGRlcGVuZGVuY2llcyBhcmUgZW1pdHRlZCBpbiBmaWZvLgpAQCAtMzI5LDE4ICszOTQsMTIyIEBA IGxvb2t1cF9wcmlvbGlzdChzdHJ1Y3QgaTkxNV9zY2hlZCAqc2UsIGludCBwcmlvKQogCQl9CiAJ fQogCi0JcC0+cHJpb3JpdHkgPSBwcmlvOwotCUlOSVRfTElTVF9IRUFEKCZwLT5yZXF1ZXN0cyk7 CisJcGwtPnByaW9yaXR5ID0gcHJpbzsKKwlJTklUX0xJU1RfSEVBRCgmcGwtPnJlcXVlc3RzKTsK IAotCXJiX2xpbmtfbm9kZSgmcC0+bm9kZSwgcmIsIHBhcmVudCk7Ci0JcmJfaW5zZXJ0X2NvbG9y X2NhY2hlZCgmcC0+bm9kZSwgJnNlLT5xdWV1ZSwgZmlyc3QpOworCWx2bCA9IHJhbmRvbV9sZXZl bChyb290KTsKKwlpZiAobHZsID4gcm9vdC0+c2VudGluZWwubGV2ZWwpIHsKKwkJaWYgKHJvb3Qt PnNlbnRpbmVsLmxldmVsIDwgSTkxNV9QUklPTElTVF9IRUlHSFQgLSAxKSB7CisJCQlsdmwgPSAr K3Jvb3QtPnNlbnRpbmVsLmxldmVsOworCQkJdXBkYXRlW2x2bF0gPSAmcm9vdC0+c2VudGluZWw7 CisJCX0gZWxzZSB7CisJCQlsdmwgPSBJOTE1X1BSSU9MSVNUX0hFSUdIVCAtIDE7CisJCX0KKwl9 CisJR0VNX0JVR19PTihsdmwgPCAwKTsKKwlHRU1fQlVHX09OKGx2bCA+PSBBUlJBWV9TSVpFKHBs LT5uZXh0KSk7CiAKLQlyZXR1cm4gJnAtPnJlcXVlc3RzOworCXBsLT5sZXZlbCA9IGx2bDsKKwlk byB7CisJCXRtcCA9IHVwZGF0ZVtsdmxdOworCQlwbC0+bmV4dFtsdmxdID0gdG1wLT5uZXh0W2x2 bF07CisJCXRtcC0+bmV4dFtsdmxdID0gcGw7CisJfSB3aGlsZSAoLS1sdmwgPj0gMCk7CisKKwlp ZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSkgeworCQlzdHJ1Y3QgaTkx NV9wcmlvbGlzdCAqY2hrOworCisJCWNoayA9ICZyb290LT5zZW50aW5lbDsKKwkJbHZsID0gY2hr LT5sZXZlbDsKKwkJZG8geworCQkJd2hpbGUgKHRtcCA9IGNoay0+bmV4dFtsdmxdLCB0bXAtPnBy aW9yaXR5ID49IHByaW8pCisJCQkJY2hrID0gdG1wOworCQl9IHdoaWxlICgtLWx2bCA+PSAwKTsK KworCQlHRU1fQlVHX09OKGNoayAhPSBwbCk7CisJfQorCitvdXQ6CisJR0VNX0JVR19PTihwbCA9 PSAmcm9vdC0+c2VudGluZWwpOworCXJldHVybiAmcGwtPnJlcXVlc3RzOwogfQogCi12b2lkIF9f aTkxNV9wcmlvbGlzdF9mcmVlKHN0cnVjdCBpOTE1X3ByaW9saXN0ICpwKQorc3RhdGljIHZvaWQg X19yZW1vdmVfcHJpb2xpc3Qoc3RydWN0IGk5MTVfc2NoZWQgKnNlLCBzdHJ1Y3QgbGlzdF9oZWFk ICpwbGlzdCkKIHsKLQlrbWVtX2NhY2hlX2ZyZWUoZ2xvYmFsLnNsYWJfcHJpb3JpdGllcywgcCk7 CisJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqcm9vdCA9ICZzZS0+cXVldWU7CisJc3RydWN0 IGk5MTVfcHJpb2xpc3QgKnBsLCAqdG1wOworCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpvbGQgPQor CQljb250YWluZXJfb2YocGxpc3QsIHN0cnVjdCBpOTE1X3ByaW9saXN0LCByZXF1ZXN0cyk7CisJ aW50IHByaW8gPSBvbGQtPnByaW9yaXR5OworCWludCBsdmw7CisKKwlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZzZS0+bG9jayk7CisJR0VNX0JVR19PTighbGlzdF9lbXB0eShwbGlzdCkpOworCisJcGwg PSAmcm9vdC0+c2VudGluZWw7CisJbHZsID0gcGwtPmxldmVsOworCUdFTV9CVUdfT04obHZsIDwg MCk7CisKKwlpZiAocHJpbyAhPSBJOTE1X1BSSU9SSVRZX05PUk1BTCkKKwkJcGxfcHVzaChvbGQs ICZwbC0+cmVxdWVzdHMpOworCisJZG8geworCQl3aGlsZSAodG1wID0gcGwtPm5leHRbbHZsXSwg dG1wLT5wcmlvcml0eSA+IHByaW8pCisJCQlwbCA9IHRtcDsKKwkJaWYgKGx2bCA8PSBvbGQtPmxl dmVsKSB7CisJCQlwbC0+bmV4dFtsdmxdID0gb2xkLT5uZXh0W2x2bF07CisJCQlpZiAocGwgPT0g JnJvb3QtPnNlbnRpbmVsICYmIG9sZC0+bmV4dFtsdmxdID09IHBsKSB7CisJCQkJR0VNX0JVR19P TihwbC0+bGV2ZWwgIT0gbHZsKTsKKwkJCQlwbC0+bGV2ZWwtLTsKKwkJCX0KKwkJfQorCX0gd2hp bGUgKC0tbHZsID49IDApOworCUdFTV9CVUdfT04odG1wICE9IG9sZCk7Cit9CisKK3N0YXRpYyB2 b2lkIHJlbW92ZV9mcm9tX3ByaW9saXN0KHN0cnVjdCBpOTE1X3NjaGVkICpzZSwKKwkJCQkgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisJCQkJ IGJvb2wgdGFpbCkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2ID0gcnEtPnNjaGVkLmxpbmsu cHJldjsKKworCUdFTV9CVUdfT04oIWk5MTVfcmVxdWVzdF9pbl9wcmlvcml0eV9xdWV1ZShycSkp OworCisJX19saXN0X2RlbF9lbnRyeSgmcnEtPnNjaGVkLmxpbmspOworCWlmICh0YWlsKQorCQls aXN0X2FkZF90YWlsKCZycS0+c2NoZWQubGluaywgbGlzdCk7CisJZWxzZQorCQlsaXN0X2FkZCgm cnEtPnNjaGVkLmxpbmssIGxpc3QpOworCisJLyogSWYgd2UganVzdCByZW1vdmVkIHRoZSBsYXN0 IGVsZW1lbnQgaW4gdGhlIG9sZCBwbGlzdCwgZGVsZXRlIGl0ICovCisJaWYgKGxpc3RfZW1wdHko cHJldikpCisJCV9fcmVtb3ZlX3ByaW9saXN0KHNlLCBwcmV2KTsKK30KKwordm9pZCBpOTE1X3By aW9saXN0X2FkdmFuY2Uoc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqcm9vdCwKKwkJCSAgIHN0 cnVjdCBpOTE1X3ByaW9saXN0ICpwbCkKK3sKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqIGNvbnN0 IHMgPSAmcm9vdC0+c2VudGluZWw7CisJaW50IGx2bDsKKworCUdFTV9CVUdfT04oIWxpc3RfZW1w dHkoJnBsLT5yZXF1ZXN0cykpOworCUdFTV9CVUdfT04ocGwgIT0gcy0+bmV4dFswXSk7CisJR0VN X0JVR19PTihwbCA9PSBzKTsKKworCS8qIEtlZXAgcGwtPm5leHRbMF0gdmFsaWQgZm9yIGZvcl9l YWNoX3ByaW9saXN0IGl0ZXJhdGlvbiAqLworCWlmIChwbC0+cHJpb3JpdHkgIT0gSTkxNV9QUklP UklUWV9OT1JNQUwpCisJCXBsX3B1c2gocGwsICZzLT5yZXF1ZXN0cyk7CisKKwlsdmwgPSBwbC0+ bGV2ZWw7CisJR0VNX0JVR19PTihsdmwgPCAwKTsKKwlkbyB7CisJCXMtPm5leHRbbHZsXSA9IHBs LT5uZXh0W2x2bF07CisJCWlmIChwbC0+bmV4dFtsdmxdID09IHMpIHsKKwkJCUdFTV9CVUdfT04o cy0+bGV2ZWwgIT0gbHZsKTsKKwkJCXMtPmxldmVsLS07CisJCX0KKwl9IHdoaWxlICgtLWx2bCA+ PSAwKTsKIH0KIAogc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgpAQCAtNDkzLDcgKzY2Miw3 IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9yZXF1ZXN0X3NldF9wcmlvcml0eShzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwgaW50IHByaW8pCiAKIAkJR0VNX0JVR19PTihycS0+ZW5naW5lICE9IGVuZ2lu ZSk7CiAJCWlmIChpOTE1X3JlcXVlc3RfaW5fcHJpb3JpdHlfcXVldWUocnEpKQotCQkJbGlzdF9t b3ZlX3RhaWwoJnJxLT5zY2hlZC5saW5rLCBwbGlzdCk7CisJCQlyZW1vdmVfZnJvbV9wcmlvbGlz dChzZSwgcnEsIHBsaXN0LCB0cnVlKTsKIAogCQkvKiBEZWZlciAodGFza2xldCkgc3VibWlzc2lv biB1bnRpbCBhZnRlciBhbGwgdXBkYXRlcy4gKi8KIAkJa2lja19zdWJtaXNzaW9uKGVuZ2luZSwg cnEsIHByaW8pOwpAQCAtNjI5LDggKzc5OCw3IEBAIHZvaWQgX19pOTE1X3NjaGVkX2RlZmVyX3Jl cXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAJCS8qIE5vdGUgbGlzdCBp cyByZXZlcnNlZCBmb3Igd2FpdGVycyB3cnQgc2lnbmFsIGhpZXJhcmNoeSAqLwogCQlHRU1fQlVH X09OKHJxLT5lbmdpbmUgIT0gZW5naW5lKTsKLQkJR0VNX0JVR19PTighaTkxNV9yZXF1ZXN0X2lu X3ByaW9yaXR5X3F1ZXVlKHJxKSk7Ci0JCWxpc3RfbW92ZSgmcnEtPnNjaGVkLmxpbmssICZkZnMp OworCQlyZW1vdmVfZnJvbV9wcmlvbGlzdChzZSwgcnEsICZkZnMsIGZhbHNlKTsKIAogCQkvKiBU cmFjayBvdXIgdmlzaXQsIGFuZCBwcmV2ZW50IGR1cGxpY2F0ZSBwcm9jZXNzaW5nICovCiAJCWNs ZWFyX2JpdChJOTE1X0ZFTkNFX0ZMQUdfUFFVRVVFLCAmcnEtPmZlbmNlLmZsYWdzKTsKQEAgLTEy MDcsOSArMTM3NSw5IEBAIHZvaWQgaTkxNV9zY2hlZF9zaG93KHN0cnVjdCBkcm1fcHJpbnRlciAq bSwKIAkJICAgICB1bnNpZ25lZCBpbnQgbWF4KQogewogCWNvbnN0IHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLCAqbGFzdDsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7CiAJdW5zaWduZWQgbG9u ZyBmbGFnczsKIAl1bnNpZ25lZCBpbnQgY291bnQ7Ci0Jc3RydWN0IHJiX25vZGUgKnJiOwogCiAJ cmN1X3JlYWRfbG9jaygpOwogCXNwaW5fbG9ja19pcnFzYXZlKCZzZS0+bG9jaywgZmxhZ3MpOwpA QCAtMTI2MywxMCArMTQzMSw4IEBAIHZvaWQgaTkxNV9zY2hlZF9zaG93KHN0cnVjdCBkcm1fcHJp bnRlciAqbSwKIAogCWxhc3QgPSBOVUxMOwogCWNvdW50ID0gMDsKLQlmb3IgKHJiID0gcmJfZmly c3RfY2FjaGVkKCZzZS0+cXVldWUpOyByYjsgcmIgPSByYl9uZXh0KHJiKSkgewotCQlzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCAqcCA9IHJiX2VudHJ5KHJiLCB0eXBlb2YoKnApLCBub2RlKTsKLQotCQlw cmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0KHJxLCBwKSB7CisJZm9yX2VhY2hfcHJpb2xpc3QocGws ICZzZS0+cXVldWUpIHsKKwkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdChycSwgcGwpIHsKIAkJ CWlmIChjb3VudCsrIDwgbWF4IC0gMSkKIAkJCQlzaG93X3JlcXVlc3QobSwgcnEsICJcdFx0Iiwg MCk7CiAJCQllbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVk dWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAppbmRleCA1MWJj YTIzYTU2MTcuLjdmOWVlM2RjNjU1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zY2hlZHVsZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxl ci5oCkBAIC0yNCwxMiArMjQsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwogCQkgICMjX19W QV9BUkdTX18pOwkJCQkJXAogfSB3aGlsZSAoMCkKIAotI2RlZmluZSBwcmlvbGlzdF9mb3JfZWFj aF9yZXF1ZXN0KGl0LCBwbGlzdCkgXAotCWxpc3RfZm9yX2VhY2hfZW50cnkoaXQsICYocGxpc3Qp LT5yZXF1ZXN0cywgc2NoZWQubGluaykKLQotI2RlZmluZSBwcmlvbGlzdF9mb3JfZWFjaF9yZXF1 ZXN0X2NvbnN1bWUoaXQsIG4sIHBsaXN0KSBcCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGl0 LCBuLCAmKHBsaXN0KS0+cmVxdWVzdHMsIHNjaGVkLmxpbmspCi0KIHZvaWQgaTkxNV9zY2hlZF9u b2RlX2luaXQoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7CiB2b2lkIGk5MTVfc2NoZWRf bm9kZV9yZWluaXQoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7CiAKQEAgLTgwLDcgKzc0 LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHJpb2xpc3RfZnJlZShzdHJ1Y3QgaTkxNV9w cmlvbGlzdCAqcCkKIAogc3RhdGljIGlubGluZSBib29sIGk5MTVfc2NoZWRfaXNfaWRsZShjb25z dCBzdHJ1Y3QgaTkxNV9zY2hlZCAqc2UpCiB7Ci0JcmV0dXJuIFJCX0VNUFRZX1JPT1QoJnNlLT5x dWV1ZS5yYl9yb290KTsKKwlyZXR1cm4gaTkxNV9wcmlvbGlzdF9pc19lbXB0eSgmc2UtPnF1ZXVl KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCkBAIC0xMjQsNiArMTE4LDkgQEAgc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfc2NoZWRfZmx1c2goc3RydWN0IGk5MTVfc2NoZWQgKnNlKQogCV9faTkx NV9zY2hlZF9mbHVzaChzZSwgdHJ1ZSk7CiB9CiAKK3ZvaWQgaTkxNV9wcmlvbGlzdF9hZHZhbmNl KHN0cnVjdCBpOTE1X3ByaW9saXN0X3Jvb3QgKnJvb3QsCisJCQkgICBzdHJ1Y3QgaTkxNV9wcmlv bGlzdCAqb2xkKTsKKwogdm9pZCBpOTE1X3JlcXVlc3Rfc2hvd193aXRoX3NjaGVkdWxlKHN0cnVj dCBkcm1fcHJpbnRlciAqbSwKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LAogCQkJCSAgICAgY29uc3QgY2hhciAqcHJlZml4LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc2NoZWR1bGVyX3R5cGVzLmgKaW5kZXggNzI3MWEwMjU5YTU2Li5hZDM1ZmFiZjlmNmUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaApAQCAtNjUsNyAr NjUsNyBAQCBzdHJ1Y3QgaTkxNV9zY2hlZCB7CiAJLyoqCiAJICogQHF1ZXVlOiBxdWV1ZSBvZiBy ZXF1ZXN0cywgaW4gcHJpb3JpdHkgbGlzdHMKIAkgKi8KLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQg cXVldWU7CisJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCBxdWV1ZTsKIAogCS8qKgogCSAqIEB0 YXNrbGV0OiBzb2Z0aXJxIHRhc2tsZXQgZm9yIGJvdHRvbSBoYWxmCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAppbmRleCAzZGIz NGQzZWVhNTguLjk0NmM5MzQ0MWMxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCkBAIC0yNSw2ICsyNSw3IEBAIHNlbGZ0 ZXN0KHJpbmcsIGludGVsX3JpbmdfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChlbmdpbmUsIGlu dGVsX2VuZ2luZV9jc19tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHRpbWVsaW5lcywgaW50ZWxf dGltZWxpbmVfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChyZXF1ZXN0cywgaTkxNV9yZXF1ZXN0 X21vY2tfc2VsZnRlc3RzKQorc2VsZnRlc3Qoc2NoZWR1bGVyLCBpOTE1X3NjaGVkdWxlcl9tb2Nr X3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KG9iamVjdHMsIGk5MTVfZ2VtX29iamVjdF9tb2NrX3NlbGZ0 ZXN0cykKIHNlbGZ0ZXN0KHBoeXMsIGk5MTVfZ2VtX3BoeXNfbW9ja19zZWxmdGVzdHMpCiBzZWxm dGVzdChkbWFidWYsIGk5MTVfZ2VtX2RtYWJ1Zl9tb2NrX3NlbGZ0ZXN0cykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NjaGVkdWxlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2NoZWR1bGVyLmMKaW5kZXggZGJiZWZkMGRh MmYyLi5mMTc5ZjFjYjc2MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X3NjaGVkdWxlci5jCkBAIC0xMiw2ICsxMiw1NCBAQAogI2luY2x1ZGUgInNlbGZ0ZXN0 cy9pZ3Rfc3Bpbm5lci5oIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oIgogCitz dGF0aWMgaW50IG1vY2tfc2tpcGxpc3RfbGV2ZWxzKHZvaWQgKmR1bW15KQoreworCXN0cnVjdCBp OTE1X3ByaW9saXN0X3Jvb3Qgcm9vdCA9IHt9OworCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbCA9 ICZyb290LnNlbnRpbmVsOworCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKKwl1bnNpZ25lZCBsb25n IHRvdGFsOworCWludCBjb3VudCwgbHZsOworCisJdG90YWwgPSAwOworCWRvIHsKKwkJZm9yIChj b3VudCA9IDA7IGNvdW50IDwgMTYzODQ7IGNvdW50KyspIHsKKwkJCWx2bCA9IHJhbmRvbV9sZXZl bCgmcm9vdCk7CisJCQlpZiAobHZsID4gcGwtPmxldmVsKSB7CisJCQkJaWYgKGx2bCA8IEk5MTVf UFJJT0xJU1RfSEVJR0hUIC0gMSkKKwkJCQkJbHZsID0gKytwbC0+bGV2ZWw7CisJCQkJZWxzZQor CQkJCQlsdmwgPSBJOTE1X1BSSU9MSVNUX0hFSUdIVCAtIDE7CisJCQl9CisKKwkJCXBsLT5uZXh0 W2x2bF0gPSBwdHJfaW5jKHBsLT5uZXh0W2x2bF0pOworCQl9CisJCXRvdGFsICs9IGNvdW50Owor CX0gd2hpbGUgKCFfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7CisKKwlwcl9pbmZvKCJU b3RhbCAlOWx1XG4iLCB0b3RhbCk7CisJZm9yIChsdmwgPSAwOyBsdmwgPD0gcGwtPmxldmVsOyBs dmwrKykgeworCQlpbnQgeCA9IGlsb2cyKCh1bnNpZ25lZCBsb25nKXBsLT5uZXh0W2x2bF0pOwor CQljaGFyIHJvd1s4MF07CisKKwkJbWVtc2V0KHJvdywgJyonLCB4KTsKKwkJcm93W3hdID0gJ1ww JzsKKworCQlwcl9pbmZvKCIgWyUyZF0gJTlsdSAlc1xuIiwKKwkJCWx2bCwgKHVuc2lnbmVkIGxv bmcpcGwtPm5leHRbbHZsXSwgcm93KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50IGk5MTVf c2NoZWR1bGVyX21vY2tfc2VsZnRlc3RzKHZvaWQpCit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKKwkJU1VCVEVTVChtb2NrX3NraXBsaXN0X2xldmVscyks CisJfTsKKworCXJldHVybiBpOTE1X3N1YnRlc3RzKHRlc3RzLCBOVUxMKTsKK30KKwogc3RhdGlj IHZvaWQgc2NoZWR1bGluZ19kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKIAllbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IDA7CkBAIC04MCw5ICsxMjgs OSBAQCBzdGF0aWMgaW50IGFsbF9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAogc3RhdGljIGJvb2wgY2hlY2tfY29udGV4dF9vcmRlcihzdHJ1Y3QgaTkxNV9zY2hlZCAqc2Up CiB7CiAJdTY0IGxhc3Rfc2Vxbm8sIGxhc3RfY29udGV4dDsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlz dCAqcDsKIAl1bnNpZ25lZCBsb25nIGNvdW50OwogCWJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0Jc3Ry dWN0IHJiX25vZGUgKnJiOwogCWludCBsYXN0X3ByaW87CiAKIAkvKiBXZSBleHBlY3QgdGhlIGV4 ZWN1dGlvbiBvcmRlciB0byBmb2xsb3cgYXNjZW5kaW5nIGZlbmNlLWNvbnRleHQgKi8KQEAgLTky LDggKzE0MCw3IEBAIHN0YXRpYyBib29sIGNoZWNrX2NvbnRleHRfb3JkZXIoc3RydWN0IGk5MTVf c2NoZWQgKnNlKQogCWxhc3RfY29udGV4dCA9IDA7CiAJbGFzdF9zZXFubyA9IDA7CiAJbGFzdF9w cmlvID0gMDsKLQlmb3IgKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZzZS0+cXVldWUpOyByYjsgcmIg PSByYl9uZXh0KHJiKSkgewotCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHJiX2VudHJ5KHJi LCB0eXBlb2YoKnApLCBub2RlKTsKKwlmb3JfZWFjaF9wcmlvbGlzdChwLCAmc2UtPnF1ZXVlKSB7 CiAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCiAJCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVl c3QocnEsIHApIHsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==