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=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 06185C433DF for ; Fri, 5 Jun 2020 12:23:59 +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 D9EF8206E6 for ; Fri, 5 Jun 2020 12:23:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D9EF8206E6 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 71C646E8B7; Fri, 5 Jun 2020 12:23:53 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0747C6E144 for ; Fri, 5 Jun 2020 12:23:47 +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 21406195-1500050 for multiple; Fri, 05 Jun 2020 13:23:38 +0100 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Fri, 5 Jun 2020 13:23:31 +0100 Message-Id: <20200605122334.2798-7-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200605122334.2798-1-chris@chris-wilson.co.uk> References: <20200605122334.2798-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 07/10] drm/i915/gt: Infrastructure for ring scheduling 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" QnVpbGQgYSBiYXJlIGJvbmVzIHNjaGVkdWxlciB0byBzaXQgb24gdG9wIHRoZSBnbG9iYWwgbGVn YWN5IHJpbmdidWZmZXIKc3VibWlzc2lvbi4gVGhpcyB2aXJ0dWFsIGV4ZWNsaXN0cyBzY2hlbWUg c2hvdWxkIGJlIGFwcGxpY2FibGUgdG8gYWxsCm9sZGVyIHBsYXRmb3Jtcy4KCkEga2V5IHByb2Js ZW0gd2UgaGF2ZSB3aXRoIHRoZSBsZWdhY3kgcmluZyBidWZmZXIgc3VibWlzc2lvbiBpcyB0aGF0 IGl0Cm9ubHkgYWxsb3dzIGZvciBGSUZPIHF1ZXVpbmcuIEFsbCBjbGllbnRzIHNoYXJlIHRoZSBn bG9iYWwgcmVxdWVzdCBxdWV1ZQphbmQgbXVzdCBjb250ZW5kIGZvciBpdHMgbG9jayB3aGVuIHN1 Ym1pdHRpbmcuIEFzIGFueSBjbGllbnQgbWF5IG5lZWQgdG8Kd2FpdCBmb3IgZXh0ZXJuYWwgZXZl bnRzLCBhbGwgY2xpZW50cyBtdXN0IHRoZW4gd2FpdC4gSG93ZXZlciwgaWYgd2UKc3RhZ2UgZWFj aCBjbGllbnQgaW50byB0aGVpciBvd24gdmlydHVhbCByaW5nYnVmZmVyIHdpdGggdGhlaXIgb3du CnRpbWVsaW5lcywgd2UgY2FuIGNvcHkgdGhlIGNsaWVudCByZXF1ZXN0cyBpbnRvIHRoZSBnbG9i YWwgcmluZ2J1ZmZlcgpvbmx5IHdoZW4gdGhleSBhcmUgcmVhZHksIHJlb3JkZXJpbmcgdGhlIHN1 Ym1pc3Npb24gYXJvdW5kIHN0YWxscy4KRnVydGhlcm1vcmUsIHRoZSBhYmlsaXR5IHRvIHJlb3Jk ZXIgZ2l2ZXMgdXMgcnVkaW1lbnRhcmlseSBwcmlvcml0eQpzb3J0aW5nIC0tIGFsdGhvdWdoIHdp dGhvdXQgcHJlZW1wdGlvbiBzdXBwb3J0LCBvbmNlIHNvbWV0aGluZyBpcyBvbiB0aGUKR1BVIGl0 IHN0YXlzIG9uIHRoZSBHUFUsIGFuZCBzbyBpdCBpcyBzdGlsbCBwb3NzaWJsZSBmb3IgYSBob2cg dG8gZGVsYXkKYSBoaWdoIHByaW9yaXR5IHJlcXVlc3QgKHN1Y2ggYXMgdXBkYXRpbmcgdGhlIGRp c3BsYXkpLiBIb3dldmVyLCBpdCBkb2VzCm1lYW5zIHRoYXQgaW4ga2VlcGluZyBhIHNob3J0IHN1 Ym1pc3Npb24gcXVldWUsIHRoZSBoaWdoIHByaW9yaXR5CnJlcXVlc3Qgd2lsbCBiZSBuZXh0LiBU aGlzIGRlc2lnbiByZXNlbWJsZXMgdGhlIG9sZCBndWMgc3VibWlzc2lvbgpzY2hlZHVsZXIsIGZv ciByZW9yZGVyaW5nIHJlcXVlc3RzIG9udG8gYSBnbG9iYWwgd29ya3F1ZXVlLgoKVGhlIGltcGxl bWVudGF0aW9uIHVzZXMgdGhlIE1JX1VTRVJfSU5URVJSVVBUIGF0IHRoZSBlbmQgb2YgZXZlcnkK cmVxdWVzdCB0byB0cmFjayBjb21wbGV0aW9uLCBzbyBpcyBtb3JlIGludGVycnVwdCBoYXBweSB0 aGFuIGV4ZWNsaXN0cwpbd2hpY2ggaGFzIGFuIGludGVycnVwdCBmb3IgZWFjaCBjb250ZXh0IGV2 ZW50LCBhbGJlaXQgdHdvXS4gT3VyCmludGVycnVwdHMgb24gdGhlc2Ugc3lzdGVtIGFyZSByZWxh dGl2ZWx5IGhlYXZ5LCBhbmQgaW4gdGhlIHBhc3Qgd2UgaGF2ZQpiZWVuIGFibGUgdG8gY29tcGxl dGVseSBzdGFydmUgU2FuZHlicmlnZSBieSB0aGUgaW50ZXJydXB0IHRyYWZmaWMuIE91cgppbnRl cnJ1cHQgaGFuZGxlcnMgYXJlIGJlaW5nIG11Y2ggYmV0dGVyIChpbiBwYXJ0IG9mZmxvYWRpbmcg dGhlIHdvcmsgdG8KYm90dG9tIGhhbHZlcyBsZWF2aW5nIHRoZSBpbnRlcnJ1cHQgaXRzZWxmIG9u bHkgZGVhbGluZyB3aXRoIGFja2luZyB0aGUKcmVnaXN0ZXJzKSBidXQgd2UgY2FuIHN0aWxsIHNl ZSB0aGUgaW1wYWN0IG9mIHN0YXJ2YXRpb24gaW4gdGhlIHVuZXZlbgpzdWJtaXNzaW9uIGxhdGVu Y3kgb24gYSBzYXR1cmF0ZWQgc3lzdGVtLgoKT3ZlcmFsbCB0aG91Z2gsIHRoZSBzaG9ydCBzdW1p c3Npb24gcXVldWVzIGFuZCBleHRyYSBpbnRlcnJ1cHRzIGRvIG5vdAphcHBlYXIgdG8gYmUgYWZm ZWN0aW5nIHRocm91Z2hwdXQgKCstMTAlLCBzb21lIHRhc2tzIGV2ZW4gaW1wcm92ZSB0byB0aGUK cmVkdWNlZCByZXF1ZXN0IG92ZXJoZWFkcykgYW5kIGltcHJvdmUgbGF0ZW5jeS4gW1doaWNoIGlz IGEgbWFzc2l2ZQppbXByb3ZlbWVudCBzaW5jZSB0aGUgaW50cm9kdWN0aW9uIG9mIFNhbmR5YnJp ZGdlIV0KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8 ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCAgICAgICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggIHwgICAx ICsKIC4uLi9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zY2hlZHVsZXIuYyAgICB8IDc2MCAr KysrKysrKysrKysrKysrKysKIC4uLi9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNz aW9uLmMgICB8ICAxMyArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Np b24uaCAgIHwgIDE2ICsKIDYgZmlsZXMgY2hhbmdlZCwgNzg2IGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfcmluZ19zY2hlZHVsZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA0 MWEyN2ZkNWRiYzcuLjZkOThhNzRkYTQxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTEwOSw2 ICsxMDksNyBAQCBndC15ICs9IFwKIAlndC9pbnRlbF9yZW5kZXJzdGF0ZS5vIFwKIAlndC9pbnRl bF9yZXNldC5vIFwKIAlndC9pbnRlbF9yaW5nLm8gXAorCWd0L2ludGVsX3Jpbmdfc2NoZWR1bGVy Lm8gXAogCWd0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5vIFwKIAlndC9pbnRlbF9ycHMubyBcCiAJ Z3QvaW50ZWxfc3NldS5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKaW5k ZXggMDQzNDYyYjZjZTFmLi4wODE3NjExNzc1N2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZS5oCkBAIC0yMDksNiArMjA5LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51 cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGludCBpbnRlbF9lbmdp bmVfcmVzdW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIGludCBpbnRlbF9y aW5nX3N1Ym1pc3Npb25fc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK2lu dCBpbnRlbF9yaW5nX3NjaGVkdWxlcl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpOwogCiBpbnQgaW50ZWxfZW5naW5lX3N0b3BfY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKIHZvaWQgaW50ZWxfZW5naW5lX2NhbmNlbF9zdG9wX2NzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV90eXBlcy5oCmluZGV4IDA3M2MzNzY5ZThjYy4uNWQ3MjY5MGZkODNlIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaApAQCAtMzU5LDYgKzM1OSw3IEBA IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCXN0cnVjdCB7CiAJCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nOwogCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lOworCQlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY29udGV4dDsKIAl9IGxlZ2FjeTsKIAogCS8qCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zY2hlZHVsZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmM4Y2Q0MzVkMWM1MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc2NoZWR1bGVyLmMKQEAgLTAsMCArMSw3NjAg QEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlIDxsaW51eC9sb2cyLmg+CisK KyNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5j bHVkZSAiaW50ZWxfY29udGV4dC5oIgorI2luY2x1ZGUgImludGVsX2d0LmgiCisjaW5jbHVkZSAi aW50ZWxfZ3RfcG0uaCIKKyNpbmNsdWRlICJpbnRlbF9ndF9yZXF1ZXN0cy5oIgorI2luY2x1ZGUg ImludGVsX3Jlc2V0LmgiCisjaW5jbHVkZSAiaW50ZWxfcmluZy5oIgorI2luY2x1ZGUgImludGVs X3Jpbmdfc3VibWlzc2lvbi5oIgorI2luY2x1ZGUgInNobWVtX3V0aWxzLmgiCisKKy8qCisgKiBS b3VnaCBlc3RpbWF0ZSBvZiB0aGUgdHlwaWNhbCByZXF1ZXN0IHNpemUsIHBlcmZvcm1pbmcgYSBm bHVzaCwKKyAqIHNldC1jb250ZXh0IGFuZCB0aGVuIGVtaXR0aW5nIHRoZSBiYXRjaC4KKyAqLwor I2RlZmluZSBMRUdBQ1lfUkVRVUVTVF9TSVpFIDIwMAorCitzdGF0aWMgaW5saW5lIGludCBycV9w cmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXJldHVybiBycS0+c2NoZWQu YXR0ci5wcmlvcml0eTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAq dG9fcHJpb2xpc3Qoc3RydWN0IHJiX25vZGUgKnJiKQoreworCXJldHVybiByYl9lbnRyeShyYiwg c3RydWN0IGk5MTVfcHJpb2xpc3QsIG5vZGUpOworfQorCitzdGF0aWMgaW5saW5lIGludCBxdWV1 ZV9wcmlvKHN0cnVjdCByYl9ub2RlICpyYikKK3sKKwlyZXR1cm4gcmIgPyB0b19wcmlvbGlzdChy YiktPnByaW9yaXR5IDogSU5UX01JTjsKK30KKworc3RhdGljIGlubGluZSBib29sIHJlc2V0X2lu X3Byb2dyZXNzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICplbCkKK3sKKwly ZXR1cm4gdW5saWtlbHkoIV9fdGFza2xldF9pc19lbmFibGVkKCZlbC0+dGFza2xldCkpOworfQor CitzdGF0aWMgdm9pZAorc2V0X2N1cnJlbnRfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAq KnB0ciwgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCWlmIChjZSkKKwkJaW50ZWxfY29u dGV4dF9nZXQoY2UpOworCisJY2UgPSB4Y2hnKHB0ciwgY2UpOworCisJaWYgKGNlKQorCQlpbnRl bF9jb250ZXh0X3B1dChjZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKK3Nj aGVkdWxlX2luKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCit7CisJX19pbnRlbF9ndF9wbV9nZXQoZW5naW5lLT5ndCk7CisJcmV0dXJuIGk5 MTVfcmVxdWVzdF9nZXQocnEpOworfQorCitzdGF0aWMgdm9pZAorc2NoZWR1bGVfb3V0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJ c3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmNvbnRleHQ7CisKKwlpZiAobGlzdF9pc19s YXN0X3JjdSgmcnEtPmxpbmssICZjZS0+dGltZWxpbmUtPnJlcXVlc3RzKSkKKwkJaW50ZWxfZW5n aW5lX2FkZF9yZXRpcmUoZW5naW5lLCBjZS0+dGltZWxpbmUpOworCisJaTkxNV9yZXF1ZXN0X3B1 dChycSk7CisJaW50ZWxfZ3RfcG1fcHV0X2FzeW5jKGVuZ2luZS0+Z3QpOworfQorCitzdGF0aWMg dm9pZCByZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGVsID0gJmVuZ2luZS0+ZXhlY2xp c3RzOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlHRU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUt Pm5hbWUpOworCisJX190YXNrbGV0X2Rpc2FibGVfc3luY19vbmNlKCZlbC0+dGFza2xldCk7CisJ R0VNX0JVR19PTighcmVzZXRfaW5fcHJvZ3Jlc3MoZWwpKTsKKworCS8qIEFuZCBmbHVzaCBhbnkg Y3VycmVudCBkaXJlY3Qgc3VibWlzc2lvbi4gKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5l LT5hY3RpdmUubG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+ YWN0aXZlLmxvY2ssIGZsYWdzKTsKKworCWludGVsX3Jpbmdfc3VibWlzc2lvbl9yZXNldF9wcmVw YXJlKGVuZ2luZSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc2V0X3F1ZXVlX3ByaW9yaXR5KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNs aXN0cyAqIGNvbnN0IGVsID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCisJZWwtPnF1ZXVlX3ByaW9y aXR5X2hpbnQgPSBxdWV1ZV9wcmlvKHJiX2ZpcnN0X2NhY2hlZCgmZWwtPnF1ZXVlKSk7Cit9CisK K3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKK19fdW53aW5kX2luY29tcGxldGVfcmVxdWVz dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLCAqcm4sICphY3RpdmUgPSBOVUxMOworCXN0cnVjdCBsaXN0X2hlYWQgKnVuaW5pdGlh bGl6ZWRfdmFyKHBsKTsKKwlpbnQgcHJpbyA9IEk5MTVfUFJJT1JJVFlfSU5WQUxJRDsKKworCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+YWN0aXZlLmxvY2spOworCisJbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlX3JldmVyc2UocnEsIHJuLAorCQkJCQkgJmVuZ2luZS0+YWN0aXZlLnJlcXVl c3RzLAorCQkJCQkgc2NoZWQubGluaykgeworCQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChy cSkpCisJCQlicmVhazsKKworCQlfX2k5MTVfcmVxdWVzdF91bnN1Ym1pdChycSk7CisKKwkJR0VN X0JVR19PTihycV9wcmlvKHJxKSA9PSBJOTE1X1BSSU9SSVRZX0lOVkFMSUQpOworCQlpZiAocnFf cHJpbyhycSkgIT0gcHJpbykgeworCQkJcHJpbyA9IHJxX3ByaW8ocnEpOworCQkJcGwgPSBpOTE1 X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChlbmdpbmUsIHByaW8pOworCQl9CisJCUdFTV9CVUdfT04o UkJfRU1QVFlfUk9PVCgmZW5naW5lLT5leGVjbGlzdHMucXVldWUucmJfcm9vdCkpOworCisJCWxp c3RfbW92ZSgmcnEtPnNjaGVkLmxpbmssIHBsKTsKKwkJc2V0X2JpdChJOTE1X0ZFTkNFX0ZMQUdf UFFVRVVFLCAmcnEtPmZlbmNlLmZsYWdzKTsKKworCQlhY3RpdmUgPSBycTsKKwl9CisKKwlyZXNl dF9xdWV1ZV9wcmlvcml0eShlbmdpbmUpOworCisJcmV0dXJuIGFjdGl2ZTsKK30KKworc3RhdGlj IGlubGluZSB2b2lkIGNsZWFyX3BvcnRzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKipwb3J0cywgaW50 IGNvdW50KQoreworCW1lbXNldF9wKCh2b2lkICoqKXBvcnRzLCBOVUxMLCBjb3VudCk7Cit9CisK K3N0YXRpYyB2b2lkIGNhbmNlbF9wb3J0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGVsID0g JmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKiBjb25zdCAqcG9ydDsK KworCWNsZWFyX3BvcnRzKGVsLT5wZW5kaW5nLCBBUlJBWV9TSVpFKGVsLT5wZW5kaW5nKSk7CisJ Zm9yIChwb3J0ID0geGNoZygmZWwtPmFjdGl2ZSwgZWwtPnBlbmRpbmcpOyAqcG9ydDsgcG9ydCsr KQorCQlzY2hlZHVsZV9vdXQoZW5naW5lLCAqcG9ydCk7CisJY2xlYXJfcG9ydHMoZWwtPmluZmxp Z2h0LCBBUlJBWV9TSVpFKGVsLT5pbmZsaWdodCkpOworCisJc21wX3dtYigpOyAvKiBjb21wbGV0 ZSB0aGUgc2VxbG9jayBmb3IgZXhlY2xpc3RzX2FjdGl2ZSgpICovCisJV1JJVEVfT05DRShlbC0+ YWN0aXZlLCBlbC0+aW5mbGlnaHQpOworfQorCitzdGF0aWMgdm9pZCBfX3JpbmdfcmV3aW5kKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgYm9vbCBzdGFsbGVkKQoreworCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOworCisJcnEgPSBfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVu Z2luZSk7CisJaWYgKHJxICYmIGk5MTVfcmVxdWVzdF9zdGFydGVkKHJxKSkKKwkJX19pOTE1X3Jl cXVlc3RfcmVzZXQocnEsIHN0YWxsZWQpOworCisJY2FuY2VsX3BvcnRfcmVxdWVzdHMoZW5naW5l KTsKKworCS8qIENsZWFyIHRoZSBnbG9iYWwgc3VibWlzc2lvbiBzdGF0ZSwgd2Ugd2lsbCBzdWJt aXQgZnJvbSBzY3JhdGNoICovCisJaW50ZWxfcmluZ19yZXNldChlbmdpbmUtPmxlZ2FjeS5yaW5n LCAwKTsKKwlzZXRfY3VycmVudF9jb250ZXh0KCZlbmdpbmUtPmxlZ2FjeS5jb250ZXh0LCBOVUxM KTsKK30KKworc3RhdGljIHZvaWQgcmluZ19yZXNldF9yZXdpbmQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwor CXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7CisJX19yaW5n X3Jld2luZChlbmdpbmUsIHN0YWxsZWQpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2lu ZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgbm9wX3N1Ym1pc3Npb25f dGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq IGNvbnN0IGVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsKKworCS8qIFRo ZSBkcml2ZXIgaXMgd2VkZ2VkOyBkb24ndCBwcm9jZXNzIGFueSBtb3JlIGV2ZW50cy4gKi8KKwlX UklURV9PTkNFKGVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQsIElOVF9NSU4p OworfQorCitzdGF0aWMgdm9pZCByaW5nX3Jlc2V0X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBl bCA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJuOwor CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IHJiX25vZGUgKnJiOworCisJc3Bpbl9sb2Nr X2lycXNhdmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKKworCV9fcmluZ19yZXdpbmQo ZW5naW5lLCB0cnVlKTsKKworCS8qIE1hcmsgYWxsIHN1Ym1pdHRlZCByZXF1ZXN0cyBhcyBza2lw cGVkLiAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZlbmdpbmUtPmFjdGl2ZS5yZXF1ZXN0 cywgc2NoZWQubGluaykgeworCQlpOTE1X3JlcXVlc3Rfc2V0X2Vycm9yX29uY2UocnEsIC1FSU8p OworCQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShycSk7CisJfQorCisJLyogRmx1c2ggdGhl IHF1ZXVlZCByZXF1ZXN0cyB0byB0aGUgdGltZWxpbmUgbGlzdCAoZm9yIHJldGlyaW5nKS4gKi8K Kwl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZlbC0+cXVldWUpKSkgeworCQlzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKKwkJaW50IGk7CisKKwkJcHJpb2xp c3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCwgaSkgeworCQkJaTkxNV9yZXF1 ZXN0X3NldF9lcnJvcl9vbmNlKHJxLCAtRUlPKTsKKwkJCWk5MTVfcmVxdWVzdF9tYXJrX2NvbXBs ZXRlKHJxKTsKKwkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7CisJCX0KKworCQlyYl9lcmFz ZV9jYWNoZWQoJnAtPm5vZGUsICZlbC0+cXVldWUpOworCQlpOTE1X3ByaW9saXN0X2ZyZWUocCk7 CisJfQorCisJZWwtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBJTlRfTUlOOworCWVsLT5xdWV1ZSA9 IFJCX1JPT1RfQ0FDSEVEOworCisJLyogUmVtYWluaW5nIF91bnJlYWR5XyByZXF1ZXN0cyB3aWxs IGJlIG5vcCdlZCB3aGVuIHN1Ym1pdHRlZCAqLworCisJR0VNX0JVR19PTihfX3Rhc2tsZXRfaXNf ZW5hYmxlZCgmZWwtPnRhc2tsZXQpKTsKKwllbC0+dGFza2xldC5mdW5jID0gbm9wX3N1Ym1pc3Np b25fdGFza2xldDsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+YWN0aXZlLmxv Y2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNv bnN0IGVsID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCisJaW50ZWxfcmluZ19zdWJtaXNzaW9uX3Jl c2V0X2ZpbmlzaChlbmdpbmUpOworCisJaWYgKF9fdGFza2xldF9lbmFibGUoJmVsLT50YXNrbGV0 KSkKKwkJdGFza2xldF9oaV9zY2hlZHVsZSgmZWwtPnRhc2tsZXQpOworfQorCitzdGF0aWMgdTMy ICpyaW5nX21hcChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdTMyIGxlbikKK3sKKwl1MzIgKnZh OworCisJaWYgKHVubGlrZWx5KHJpbmctPnRhaWwgKyBsZW4gPiByaW5nLT5lZmZlY3RpdmVfc2l6 ZSkpIHsKKwkJbWVtc2V0KHJpbmctPnZhZGRyICsgcmluZy0+dGFpbCwgMCwgcmluZy0+c2l6ZSAt IHJpbmctPnRhaWwpOworCQlyaW5nLT50YWlsID0gMDsKKwl9CisKKwl2YSA9IHJpbmctPnZhZGRy ICsgcmluZy0+dGFpbDsKKwlyaW5nLT50YWlsID0gaW50ZWxfcmluZ193cmFwKHJpbmcsIHJpbmct PnRhaWwgKyBsZW4pOworCisJcmV0dXJuIHZhOworfQorCitzdGF0aWMgaW5saW5lIHUzMiAqcmlu Z19tYXBfZHcoc3RydWN0IGludGVsX3JpbmcgKnJpbmcsIHUzMiBsZW4pCit7CisJcmV0dXJuIHJp bmdfbWFwKHJpbmcsIGxlbiAqIHNpemVvZih1MzIpKTsKK30KKworc3RhdGljIHZvaWQgcmluZ19j b3B5KHN0cnVjdCBpbnRlbF9yaW5nICpkc3QsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9y aW5nICpzcmMsCisJCSAgICAgIHUzMiBzdGFydCwgdTMyIGVuZCkKK3sKKwl1bnNpZ25lZCBpbnQg bGVuOworCXZvaWQgKm91dDsKKworCWxlbiA9IGVuZCAtIHN0YXJ0OworCWlmIChlbmQgPCBzdGFy dCkKKwkJbGVuICs9IHNyYy0+c2l6ZTsKKwlvdXQgPSByaW5nX21hcChkc3QsIGxlbik7CisKKwlp ZiAoZW5kIDwgc3RhcnQpIHsKKwkJbGVuID0gc3JjLT5zaXplIC0gc3RhcnQ7CisJCW1lbWNweShv dXQsIHNyYy0+dmFkZHIgKyBzdGFydCwgbGVuKTsKKwkJb3V0ICs9IGxlbjsKKwkJc3RhcnQgPSAw OworCX0KKworCW1lbWNweShvdXQsIHNyYy0+dmFkZHIgKyBzdGFydCwgZW5kIC0gc3RhcnQpOwor fQorCitzdGF0aWMgdm9pZCBzd2l0Y2hfY29udGV4dChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywg c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpyaW5nX3N1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyA9IHJxLT5lbmdpbmUtPmxlZ2FjeS5yaW5nOworCisJX19pOTE1X3JlcXVl c3Rfc3VibWl0KHJxKTsKKworCWlmIChycS0+ZW5naW5lLT5sZWdhY3kuY29udGV4dCAhPSBycS0+ Y29udGV4dCkgeworCQlzd2l0Y2hfY29udGV4dChyaW5nLCBycSk7CisJCXNldF9jdXJyZW50X2Nv bnRleHQoJnJxLT5lbmdpbmUtPmxlZ2FjeS5jb250ZXh0LCBycS0+Y29udGV4dCk7CisJfQorCisJ cmluZ19jb3B5KHJpbmcsIHJxLT5yaW5nLCBycS0+aGVhZCwgcnEtPnRhaWwpOworCXJldHVybiBy cTsKK30KKworc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKioKK2NvcHlfYWN0aXZlKHN0cnVj dCBpOTE1X3JlcXVlc3QgKipwb3J0LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgKmFjdGl2 ZSkKK3sKKwl3aGlsZSAoKmFjdGl2ZSkKKwkJKnBvcnQrKyA9ICphY3RpdmUrKzsKKworCXJldHVy biBwb3J0OworfQorCitzdGF0aWMgdm9pZCBfX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZWwg PSAmZW5naW5lLT5leGVjbGlzdHM7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqKiBjb25zdCBsYXN0 X3BvcnQgPSBlbC0+cGVuZGluZyArIGVsLT5wb3J0X21hc2s7CisJc3RydWN0IGk5MTVfcmVxdWVz dCAqKnBvcnQsICpsYXN0OworCXN0cnVjdCByYl9ub2RlICpyYjsKKworCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJmVuZ2luZS0+YWN0aXZlLmxvY2spOworCisJcG9ydCA9IGNvcHlfYWN0aXZlKGVsLT5w ZW5kaW5nLCBlbC0+YWN0aXZlKTsKKwlpZiAocG9ydCA+IGxhc3RfcG9ydCkKKwkJcmV0dXJuOwor CisJbGFzdCA9IE5VTEw7CisJd2hpbGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmZWwtPnF1ZXVl KSkpIHsKKwkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0b19wcmlvbGlzdChyYik7CisJCXN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47CisJCWludCBpOworCisJCXByaW9saXN0X2Zvcl9l YWNoX3JlcXVlc3RfY29uc3VtZShycSwgcm4sIHAsIGkpIHsKKwkJCUdFTV9CVUdfT04ocnEgPT0g bGFzdCk7CisJCQlpZiAobGFzdCAmJiBycS0+Y29udGV4dCAhPSBsYXN0LT5jb250ZXh0KSB7CisJ CQkJaWYgKHBvcnQgPT0gbGFzdF9wb3J0KQorCQkJCQlnb3RvIGRvbmU7CisKKwkJCQkqcG9ydCsr ID0gc2NoZWR1bGVfaW4oZW5naW5lLCBsYXN0KTsKKwkJCX0KKworCQkJbGFzdCA9IHJpbmdfc3Vi bWl0KHJxKTsKKwkJfQorCisJCXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJmVsLT5xdWV1ZSk7 CisJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKKwl9CisKK2RvbmU6CisJZWwtPnF1ZXVlX3ByaW9y aXR5X2hpbnQgPSBxdWV1ZV9wcmlvKHJiKTsKKwlpZiAobGFzdCkgeworCQkqcG9ydCsrID0gc2No ZWR1bGVfaW4oZW5naW5lLCBsYXN0KTsKKwkJKnBvcnQrKyA9IE5VTEw7CisJCVdSSVRFX09OQ0Uo ZWwtPmFjdGl2ZSwgZWwtPnBlbmRpbmcpOworCisJCXdtYigpOyAvKiBwYXJhbm9pZCBmbHVzaCBv ZiBXQ0IgYmVmb3JlIFJJTkdfVEFJTCB3cml0ZSAqLworCQlFTkdJTkVfV1JJVEUoZW5naW5lLCBS SU5HX1RBSUwsIGVuZ2luZS0+bGVnYWN5LnJpbmctPnRhaWwpOworCQltZW1jcHkoZWwtPmluZmxp Z2h0LCBlbC0+cGVuZGluZywKKwkJICAgICAgIChwb3J0IC0gZWwtPnBlbmRpbmcpICogc2l6ZW9m KCpwb3J0KSk7CisKKwkJV1JJVEVfT05DRShlbC0+YWN0aXZlLCBlbC0+aW5mbGlnaHQpOworCQlH RU1fQlVHX09OKCEqZWwtPmFjdGl2ZSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBfX3N1Ym1pc3Np b25fdGFza2xldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGlu dGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBlbCA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKworCXdoaWxlICgocnEgPSAqZWwtPmFjdGl2ZSkpIHsK KwkJaWYgKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKKwkJCWJyZWFrOworCisJCXNjaGVk dWxlX291dChlbmdpbmUsIHJxKTsKKwkJZWwtPmFjdGl2ZSsrOworCX0KKworCWlmIChlbC0+cXVl dWVfcHJpb3JpdHlfaGludCAhPSBJTlRfTUlOKQorCQlfX2RlcXVldWUoZW5naW5lKTsKK30KKwor c3RhdGljIHZvaWQgc3VibWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lID0gKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKilkYXRhOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOworCV9fc3VibWlzc2lvbl90YXNrbGV0KGVu Z2luZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxh Z3MpOworfQorCitzdGF0aWMgdm9pZCBxdWV1ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKKwkJCSAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJR0VNX0JVR19P TighbGlzdF9lbXB0eSgmcnEtPnNjaGVkLmxpbmspKTsKKwlsaXN0X2FkZF90YWlsKCZycS0+c2No ZWQubGluaywKKwkJICAgICAgaTkxNV9zY2hlZF9sb29rdXBfcHJpb2xpc3QoZW5naW5lLCBycV9w cmlvKHJxKSkpOworCXNldF9iaXQoSTkxNV9GRU5DRV9GTEFHX1BRVUVVRSwgJnJxLT5mZW5jZS5m bGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fc3VibWl0X3F1ZXVlX2ltbShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBj b25zdCBlbCA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKworCWlmIChyZXNldF9pbl9wcm9ncmVzcyhl bCkpCisJCXJldHVybjsgLyogZGVmZXIgdW50aWwgd2UgcmVzdGFydCB0aGUgZW5naW5lIGZvbGxv d2luZyByZXNldCAqLworCisJX19zdWJtaXNzaW9uX3Rhc2tsZXQoZW5naW5lKTsKK30KKworc3Rh dGljIHZvaWQgc3VibWl0X3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJ CSBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2V4ZWNsaXN0cyAqZWwgPSAmZW5naW5lLT5leGVjbGlzdHM7CisKKwlpZiAocnFfcHJpbyhycSkg PD0gZWwtPnF1ZXVlX3ByaW9yaXR5X2hpbnQpCisJCXJldHVybjsKKworCWVsLT5xdWV1ZV9wcmlv cml0eV9oaW50ID0gcnFfcHJpbyhycSk7CisJX19zdWJtaXRfcXVldWVfaW1tKGVuZ2luZSk7Cit9 CisKK3N0YXRpYyB2b2lkIHN1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQor eworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdpbmU7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPmFjdGl2ZS5sb2Nr LCBmbGFncyk7CisKKwlxdWV1ZV9yZXF1ZXN0KGVuZ2luZSwgcnEpOworCisJR0VNX0JVR19PTihS Ql9FTVBUWV9ST09UKCZlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZS5yYl9yb290KSk7CisJR0VNX0JV R19PTihsaXN0X2VtcHR5KCZycS0+c2NoZWQubGluaykpOworCisJc3VibWl0X3F1ZXVlKGVuZ2lu ZSwgcnEpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywg ZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBzdWJtaXNzaW9uX3Bhcmsoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQoreworCUdFTV9CVUdfT04oZW5naW5lLT5leGVjbGlzdHMucXVldWVf cHJpb3JpdHlfaGludCAhPSBJTlRfTUlOKTsKKwlpbnRlbF9lbmdpbmVfdW5waW5fYnJlYWRjcnVt YnNfaXJxKGVuZ2luZSk7CisJc3VibWlzc2lvbl90YXNrbGV0KCh1bnNpZ25lZCBsb25nKWVuZ2lu ZSk7IC8qIGRyYWluIHRoZSBzdWJtaXQgcXVldWUgKi8KK30KKworc3RhdGljIHZvaWQgc3VibWlz c2lvbl91bnBhcmsoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWludGVsX2Vu Z2luZV9waW5fYnJlYWRjcnVtYnNfaXJxKGVuZ2luZSk7Cit9CisKK3N0YXRpYyB2b2lkIHJpbmdf Y29udGV4dF9kZXN0cm95KHN0cnVjdCBrcmVmICpyZWYpCit7CisJc3RydWN0IGludGVsX2NvbnRl eHQgKmNlID0gY29udGFpbmVyX29mKHJlZiwgdHlwZW9mKCpjZSksIHJlZik7CisKKwlHRU1fQlVH X09OKGludGVsX2NvbnRleHRfaXNfcGlubmVkKGNlKSk7CisKKwlpZiAoY2UtPnN0YXRlKQorCQlp OTE1X3ZtYV9wdXQoY2UtPnN0YXRlKTsKKwlpZiAodGVzdF9iaXQoQ09OVEVYVF9BTExPQ19CSVQs ICZjZS0+ZmxhZ3MpKQorCQlpbnRlbF9yaW5nX3B1dChjZS0+cmluZyk7CisKKwlpbnRlbF9jb250 ZXh0X2ZpbmkoY2UpOworCWludGVsX2NvbnRleHRfZnJlZShjZSk7Cit9CisKK3N0YXRpYyB2b2lk IHJpbmdfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7Cit9CisKK3N0 YXRpYyBpbnQgYWxsb2NfY29udGV4dF92bWEoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQorCit7 CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gY2UtPmVuZ2luZTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCWludCBl cnI7CisKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3NobWVtKGVuZ2luZS0+aTkxNSwg ZW5naW5lLT5jb250ZXh0X3NpemUpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIFBUUl9F UlIob2JqKTsKKworCS8qCisJICogVHJ5IHRvIG1ha2UgdGhlIGNvbnRleHQgdXRpbGl6ZSBMMyBh cyB3ZWxsIGFzIExMQy4KKwkgKgorCSAqIE9uIFZMViB3ZSBkb24ndCBoYXZlIEwzIGNvbnRyb2xz IGluIHRoZSBQVEVzIHNvIHdlCisJICogc2hvdWxkbid0IHRvdWNoIHRoZSBjYWNoZSBsZXZlbCwg ZXNwZWNpYWxseSBhcyB0aGF0CisJICogd291bGQgbWFrZSB0aGUgb2JqZWN0IHNub29wZWQgd2hp Y2ggbWlnaHQgaGF2ZSBhCisJICogbmVnYXRpdmUgcGVyZm9ybWFuY2UgaW1wYWN0LgorCSAqCisJ ICogU25vb3BpbmcgaXMgcmVxdWlyZWQgb24gbm9uLWxsYyBwbGF0Zm9ybXMgaW4gZXhlY2xpc3QK KwkgKiBtb2RlLCBidXQgc2luY2UgYWxsIEdHVFQgYWNjZXNzZXMgdXNlIFBBVCBlbnRyeSAwIHdl CisJICogZ2V0IHNub29waW5nIGFueXdheSByZWdhcmRsZXNzIG9mIGNhY2hlX2xldmVsLgorCSAq CisJICogVGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIEl2eSBCcmlkZ2UgZGV2aWNlcyBzaW5j ZQorCSAqIGxhdGVyIHBsYXRmb3JtcyBkb24ndCBoYXZlIEwzIGNvbnRyb2wgYml0cyBpbiB0aGUg UFRFLgorCSAqLworCWlmIChJU19JVllCUklER0UoZW5naW5lLT5pOTE1KSkKKwkJaTkxNV9nZW1f b2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBJOTE1X0NBQ0hFX0wzX0xMQyk7CisKKwlp ZiAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKSB7CisJCXZvaWQgKnZhZGRyOworCisJCXZhZGRyID0g aTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7CisJCWlmIChJU19FUlIo dmFkZHIpKSB7CisJCQllcnIgPSBQVFJfRVJSKHZhZGRyKTsKKwkJCWdvdG8gZXJyX29iajsKKwkJ fQorCisJCXNobWVtX3JlYWQoZW5naW5lLT5kZWZhdWx0X3N0YXRlLCAwLAorCQkJICAgdmFkZHIs IGVuZ2luZS0+Y29udGV4dF9zaXplKTsKKwkJX19zZXRfYml0KENPTlRFWFRfVkFMSURfQklULCAm Y2UtPmZsYWdzKTsKKworCQlpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFwKG9iaik7CisJCWk5MTVf Z2VtX29iamVjdF91bnBpbl9tYXAob2JqKTsKKwl9CisKKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5j ZShvYmosICZlbmdpbmUtPmd0LT5nZ3R0LT52bSwgTlVMTCk7CisJaWYgKElTX0VSUih2bWEpKSB7 CisJCWVyciA9IFBUUl9FUlIodm1hKTsKKwkJZ290byBlcnJfb2JqOworCX0KKworCWNlLT5zdGF0 ZSA9IHZtYTsKKwlyZXR1cm4gMDsKKworZXJyX29iajoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9i aik7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBhbGxvY190aW1lbGluZShzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0g Y2UtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsOworCXN0cnVjdCBpOTE1X3Zt YSAqaHdzcDsKKworCS8qCisJICogVXNlIHRoZSBzdGF0aWMgZ2xvYmFsIEhXU1AgZm9yIHRoZSBr ZXJuZWwgY29udGV4dCwgYW5kCisJICogYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgY2FjaGVsaW5l IGZvciBldmVyeW9uZSBlbHNlLgorCSAqLworCWh3c3AgPSBOVUxMOworCWlmICh1bmxpa2VseShp bnRlbF9jb250ZXh0X2lzX2JhcnJpZXIoY2UpKSkKKwkJaHdzcCA9IGVuZ2luZS0+c3RhdHVzX3Bh Z2Uudm1hOworCisJdGwgPSBpbnRlbF90aW1lbGluZV9jcmVhdGUoZW5naW5lLT5ndCwgaHdzcCk7 CisJaWYgKElTX0VSUih0bCkpCisJCXJldHVybiBQVFJfRVJSKHRsKTsKKworCWNlLT50aW1lbGlu ZSA9IHRsOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJpbmdfY29udGV4dF9hbGxvYyhz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gY2UtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKKwlpbnQgZXJyOwor CisJR0VNX0JVR19PTihjZS0+c3RhdGUpOworCWlmIChlbmdpbmUtPmNvbnRleHRfc2l6ZSkgewor CQllcnIgPSBhbGxvY19jb250ZXh0X3ZtYShjZSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJy OworCX0KKworCWlmICghY2UtPnRpbWVsaW5lKSB7CisJCWVyciA9IGFsbG9jX3RpbWVsaW5lKGNl KTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyX3ZtYTsKKwl9CisKKwlyaW5nID0gaW50ZWxfZW5n aW5lX2NyZWF0ZV9yaW5nKGVuZ2luZSwKKwkJCQkJKHVuc2lnbmVkIGxvbmcpY2UtPnJpbmcgfAor CQkJCQlJTlRFTF9SSU5HX0NSRUFURV9JTlRFUk5BTCk7CisJaWYgKElTX0VSUihyaW5nKSkgewor CQllcnIgPSBQVFJfRVJSKHJpbmcpOworCQlnb3RvIGVycl90aW1lbGluZTsKKwl9CisJY2UtPnJp bmcgPSByaW5nOworCisJcmV0dXJuIDA7CisKK2Vycl90aW1lbGluZToKKwlpbnRlbF90aW1lbGlu ZV9wdXQoY2UtPnRpbWVsaW5lKTsKK2Vycl92bWE6CisJaWYgKGNlLT5zdGF0ZSkgeworCQlpOTE1 X3ZtYV9wdXQoY2UtPnN0YXRlKTsKKwkJY2UtPnN0YXRlID0gTlVMTDsKKwl9CisJcmV0dXJuIGVy cjsKK30KKworc3RhdGljIGludCByaW5nX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmluZ19jb250ZXh0X3Jlc2V0 KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlpbnRlbF9yaW5nX3Jlc2V0KGNlLT5yaW5n LCAwKTsKKwljbGVhcl9iaXQoQ09OVEVYVF9WQUxJRF9CSVQsICZjZS0+ZmxhZ3MpOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIHJpbmdfY29udGV4dF9vcHMgPSB7 CisJLmFsbG9jID0gcmluZ19jb250ZXh0X2FsbG9jLAorCisJLnBpbiA9IHJpbmdfY29udGV4dF9w aW4sCisJLnVucGluID0gcmluZ19jb250ZXh0X3VucGluLAorCisJLmVudGVyID0gaW50ZWxfY29u dGV4dF9lbnRlcl9lbmdpbmUsCisJLmV4aXQgPSBpbnRlbF9jb250ZXh0X2V4aXRfZW5naW5lLAor CisJLnJlc2V0ID0gcmluZ19jb250ZXh0X3Jlc2V0LAorCS5kZXN0cm95ID0gcmluZ19jb250ZXh0 X2Rlc3Ryb3ksCit9OworCitzdGF0aWMgaW50IHJpbmdfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSkKK3sKKwlpbnQgcmV0OworCisJR0VNX0JVR19PTighaW50ZWxfY29udGV4 dF9pc19waW5uZWQocnEtPmNvbnRleHQpKTsKKworCS8qCisJICogRmx1c2ggZW5vdWdoIHNwYWNl IHRvIHJlZHVjZSB0aGUgbGlrZWxpaG9vZCBvZiB3YWl0aW5nIGFmdGVyCisJICogd2Ugc3RhcnQg YnVpbGRpbmcgdGhlIHJlcXVlc3QgLSBpbiB3aGljaCBjYXNlIHdlIHdpbGwganVzdAorCSAqIGhh dmUgdG8gcmVwZWF0IHdvcmsuCisJICovCisJcnEtPnJlc2VydmVkX3NwYWNlICs9IExFR0FDWV9S RVFVRVNUX1NJWkU7CisKKwkvKiBVbmNvbmRpdGlvbmFsbHkgaW52YWxpZGF0ZSBHUFUgY2FjaGVz IGFuZCBUTEJzLiAqLworCXJldCA9IHJxLT5lbmdpbmUtPmVtaXRfZmx1c2gocnEsIEVNSVRfSU5W QUxJREFURSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJxLT5yZXNlcnZlZF9zcGFj ZSAtPSBMRUdBQ1lfUkVRVUVTVF9TSVpFOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBz ZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sK KwllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gc3VibWl0X3JlcXVlc3Q7CisJZW5naW5lLT5leGVj bGlzdHMudGFza2xldC5mdW5jID0gc3VibWlzc2lvbl90YXNrbGV0OworfQorCitzdGF0aWMgdm9p ZCByaW5nX3JlbGVhc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWludGVs X2VuZ2luZV9jbGVhbnVwX2NvbW1vbihlbmdpbmUpOworCisJc2V0X2N1cnJlbnRfY29udGV4dCgm ZW5naW5lLT5sZWdhY3kuY29udGV4dCwgTlVMTCk7CisKKwlpbnRlbF9yaW5nX3VucGluKGVuZ2lu ZS0+bGVnYWN5LnJpbmcpOworCWludGVsX3JpbmdfcHV0KGVuZ2luZS0+bGVnYWN5LnJpbmcpOwor fQorCitzdGF0aWMgdm9pZCBzZXR1cF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQoreworfQorCitzdGF0aWMgdm9pZCBzZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5p OTE1OworCisJLyogZ2VuOCsgYXJlIG9ubHkgc3VwcG9ydGVkIHdpdGggZXhlY2xpc3RzICovCisJ R0VNX0JVR19PTihJTlRFTF9HRU4oaTkxNSkgPj0gOCk7CisJR0VNX0JVR19PTihJTlRFTF9HRU4o aTkxNSkgPCA4KTsKKworCXNldHVwX2lycShlbmdpbmUpOworCisJZW5naW5lLT5wYXJrID0gc3Vi bWlzc2lvbl9wYXJrOworCWVuZ2luZS0+dW5wYXJrID0gc3VibWlzc2lvbl91bnBhcms7CisJZW5n aW5lLT5zY2hlZHVsZSA9IGk5MTVfc2NoZWR1bGU7CisKKwllbmdpbmUtPnJlc3VtZSA9IGludGVs X3Jpbmdfc3VibWlzc2lvbl9yZXN1bWU7CisJZW5naW5lLT5yZXNldC5wcmVwYXJlID0gcmVzZXRf cHJlcGFyZTsKKwllbmdpbmUtPnJlc2V0LnJld2luZCA9IHJpbmdfcmVzZXRfcmV3aW5kOworCWVu Z2luZS0+cmVzZXQuY2FuY2VsID0gcmluZ19yZXNldF9jYW5jZWw7CisJZW5naW5lLT5yZXNldC5m aW5pc2ggPSByZXNldF9maW5pc2g7CisKKwllbmdpbmUtPmNvcHMgPSAmcmluZ19jb250ZXh0X29w czsKKwllbmdpbmUtPnJlcXVlc3RfYWxsb2MgPSByaW5nX3JlcXVlc3RfYWxsb2M7CisKKwllbmdp bmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24gPSBzZXRfZGVmYXVsdF9zdWJtaXNzaW9uOworfQor CitzdGF0aWMgdm9pZCBzZXR1cF9yY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQor eworfQorCitzdGF0aWMgdm9pZCBzZXR1cF92Y3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQoreworfQorCitzdGF0aWMgdm9pZCBzZXR1cF9iY3Moc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworfQorCitzdGF0aWMgdm9pZCBzZXR1cF92ZWNzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlHRU1fQlVHX09OKCFJU19IQVNXRUxMKGVuZ2luZS0+aTkx NSkpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGdsb2JhbF9yaW5nX3NpemUodm9pZCkKK3sK KwkvKiBFbm91Z2ggc3BhY2UgdG8gaG9sZCAyIGNsaWVudHMgYW5kIHRoZSBjb250ZXh0IHN3aXRj aCAqLworCXJldHVybiByb3VuZHVwX3Bvd19vZl90d28oRVhFQ0xJU1RfTUFYX1BPUlRTICogU1pf MTZLICsgU1pfNEspOworfQorCitpbnQgaW50ZWxfcmluZ19zY2hlZHVsZXJfc2V0dXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwor CWludCBlcnI7CisKKwlHRU1fQlVHX09OKEhBU19FWEVDTElTVFMoZW5naW5lLT5pOTE1KSk7CisK Kwl0YXNrbGV0X2luaXQoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQsCisJCSAgICAgc3VibWlz c2lvbl90YXNrbGV0LCAodW5zaWduZWQgbG9uZyllbmdpbmUpOworCisJc2V0dXBfY29tbW9uKGVu Z2luZSk7CisKKwlzd2l0Y2ggKGVuZ2luZS0+Y2xhc3MpIHsKKwljYXNlIFJFTkRFUl9DTEFTUzoK KwkJc2V0dXBfcmNzKGVuZ2luZSk7CisJCWJyZWFrOworCWNhc2UgVklERU9fREVDT0RFX0NMQVNT OgorCQlzZXR1cF92Y3MoZW5naW5lKTsKKwkJYnJlYWs7CisJY2FzZSBDT1BZX0VOR0lORV9DTEFT UzoKKwkJc2V0dXBfYmNzKGVuZ2luZSk7CisJCWJyZWFrOworCWNhc2UgVklERU9fRU5IQU5DRU1F TlRfQ0xBU1M6CisJCXNldHVwX3ZlY3MoZW5naW5lKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJ TUlTU0lOR19DQVNFKGVuZ2luZS0+Y2xhc3MpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwly aW5nID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKGVuZ2luZSwgZ2xvYmFsX3Jpbmdfc2l6ZSgp KTsKKwlpZiAoSVNfRVJSKHJpbmcpKSB7CisJCWVyciA9IFBUUl9FUlIocmluZyk7CisJCWdvdG8g ZXJyOworCX0KKworCWVyciA9IGludGVsX3JpbmdfcGluKHJpbmcpOworCWlmIChlcnIpCisJCWdv dG8gZXJyX3Jpbmc7CisKKwlHRU1fQlVHX09OKGVuZ2luZS0+bGVnYWN5LnJpbmcpOworCWVuZ2lu ZS0+bGVnYWN5LnJpbmcgPSByaW5nOworCisJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9O RUVEU19CUkVBRENSVU1CX1RBU0tMRVQ7CisKKwkvKiBGaW5hbGx5LCB0YWtlIG93bmVyc2hpcCBh bmQgcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAhICovCisJZW5naW5lLT5yZWxlYXNlID0gcmlu Z19yZWxlYXNlOworCXJldHVybiAwOworCitlcnJfcmluZzoKKwlpbnRlbF9yaW5nX3B1dChyaW5n KTsKK2VycjoKKwlpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oZW5naW5lKTsKKwlyZXR1cm4g ZXJyOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19z dWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Np b24uYwppbmRleCA2OGEwODQ4NmZjODcuLjRjZjdjNjQ4NjIyMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMKQEAgLTM2LDYgKzM2LDcgQEAK ICNpbmNsdWRlICJpbnRlbF9ndC5oIgogI2luY2x1ZGUgImludGVsX3Jlc2V0LmgiCiAjaW5jbHVk ZSAiaW50ZWxfcmluZy5oIgorI2luY2x1ZGUgImludGVsX3Jpbmdfc3VibWlzc2lvbi5oIgogI2lu Y2x1ZGUgInNobWVtX3V0aWxzLmgiCiAKIC8qIFJvdWdoIGVzdGltYXRlIG9mIHRoZSB0eXBpY2Fs IHJlcXVlc3Qgc2l6ZSwgcGVyZm9ybWluZyBhIGZsdXNoLApAQCAtMjE0LDcgKzIxNSw3IEBAIHN0 YXRpYyB2b2lkIHNldF9wcF9kaXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0K IH0KIAotc3RhdGljIGludCB4Y3NfcmVzdW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKK2ludCBpbnRlbF9yaW5nX3N1Ym1pc3Npb25fcmVzdW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdp bmUtPmk5MTU7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBlbmdpbmUtPmxlZ2FjeS5yaW5n OwpAQCAtMzE4LDcgKzMxOSw3IEBAIHN0YXRpYyBpbnQgeGNzX3Jlc3VtZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgcmVzZXRf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit2b2lkIGludGVsX3Jpbmdf c3VibWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBlbmdpbmUtPnVuY29yZTsKIAljb25z dCB1MzIgYmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOwpAQCAtNDI1LDcgKzQyNiw3IEBAIHN0YXRp YyB2b2lkIHJlc2V0X3Jld2luZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wg c3RhbGxlZCkKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBm bGFncyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCit2b2lkIGludGVsX3Jpbmdfc3VibWlzc2lvbl9yZXNldF9maW5pc2goc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogfQogCkBAIC0xMDU2LDExICsxMDU3LDEx IEBAIHN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAKIAlzZXR1cF9pcnEoZW5naW5lKTsKIAotCWVuZ2luZS0+cmVzdW1lID0geGNzX3Jlc3Vt ZTsKLQllbmdpbmUtPnJlc2V0LnByZXBhcmUgPSByZXNldF9wcmVwYXJlOworCWVuZ2luZS0+cmVz dW1lID0gaW50ZWxfcmluZ19zdWJtaXNzaW9uX3Jlc3VtZTsKKwllbmdpbmUtPnJlc2V0LnByZXBh cmUgPSBpbnRlbF9yaW5nX3N1Ym1pc3Npb25fcmVzZXRfcHJlcGFyZTsKIAllbmdpbmUtPnJlc2V0 LnJld2luZCA9IHJlc2V0X3Jld2luZDsKIAllbmdpbmUtPnJlc2V0LmNhbmNlbCA9IHJlc2V0X2Nh bmNlbDsKLQllbmdpbmUtPnJlc2V0LmZpbmlzaCA9IHJlc2V0X2ZpbmlzaDsKKwllbmdpbmUtPnJl c2V0LmZpbmlzaCA9IGludGVsX3Jpbmdfc3VibWlzc2lvbl9yZXNldF9maW5pc2g7CiAKIAllbmdp bmUtPmNvcHMgPSAmcmluZ19jb250ZXh0X29wczsKIAllbmdpbmUtPnJlcXVlc3RfYWxsb2MgPSBy aW5nX3JlcXVlc3RfYWxsb2M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yaW5nX3N1Ym1pc3Npb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jp bmdfc3VibWlzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u NzAxZWIwMzNlMDU1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfcmluZ19zdWJtaXNzaW9uLmgKQEAgLTAsMCArMSwxNiBAQAorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVCAqLworLyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBv cmF0aW9uCisgKi8KKworI2lmbmRlZiBfX0lOVEVMX1JJTkdfU1VCTUlTU0lPTl9IX18KKyNkZWZp bmUgX19JTlRFTF9SSU5HX1NVQk1JU1NJT05fSF9fCisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfY3M7 CisKK3ZvaWQgaW50ZWxfcmluZ19zdWJtaXNzaW9uX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKK3ZvaWQgaW50ZWxfcmluZ19zdWJtaXNzaW9uX3Jlc2V0X2Zp bmlzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCitpbnQgaW50ZWxfcmluZ19z dWJtaXNzaW9uX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCisjZW5k aWYgLyogX19JTlRFTF9SSU5HX1NVQk1JU1NJT05fSF9fICovCi0tIAoyLjIwLjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=