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, 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 7B968C4332D for ; Thu, 19 Mar 2020 22:52:07 +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 54FF8206D7 for ; Thu, 19 Mar 2020 22:52:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 54FF8206D7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com 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 E24996EA9A; Thu, 19 Mar 2020 22:52:06 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id B55EB6EA9B for ; Thu, 19 Mar 2020 22:52:05 +0000 (UTC) IronPort-SDR: Wp/iN8CjsTNXnZl2ki4PLuKC2rK/mArZO1B63uX4s98EFqAkAX7YdR78X2+mrzezxmkqBME6bf iud5sN1pGUpg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Mar 2020 15:52:05 -0700 IronPort-SDR: wXzMq/SlojBV0ZLAuX0CcAZM6lXlCg236xDX9OoF+ljv7nS2W64w41T6abOWRGGV8D20qQVxaY 1ZYX+6GKQudw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,573,1574150400"; d="scan'208";a="446464401" Received: from unerlige-desk.jf.intel.com ([10.165.21.208]) by fmsmga006.fm.intel.com with ESMTP; 19 Mar 2020 15:52:04 -0700 From: Umesh Nerlige Ramappa To: intel-gfx@lists.freedesktop.org, Lionel G Landwerlin , Ashutosh Dixit Date: Thu, 19 Mar 2020 15:52:01 -0700 Message-Id: <20200319225203.29679-2-umesh.nerlige.ramappa@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200319225203.29679-1-umesh.nerlige.ramappa@intel.com> References: <20200319225203.29679-1-umesh.nerlige.ramappa@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 1/3] drm/i915/perf: rework aging tail workaround 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoK V2UncmUgYWJvdXQgdG8gaW50cm9kdWNlIGFuIG9wdGlvbnMgdG8gb3BlbiB0aGUgcGVyZiBzdHJl YW0sIGdpdmluZwp0aGUgdXNlciBhYmlsaXR5IHRvIGNvbmZpZ3VyZSBob3cgb2Z0ZW4gaXQgd2Fu dHMgdGhlIGtlcm5lbCB0byBwb2xsCnRoZSBPQSByZWdpc3RlcnMgZm9yIGF2YWlsYWJsZSBkYXRh LgoKUmlnaHQgbm93IHRoZSB3b3JrYXJvdW5kIGFnYWluc3QgdGhlIE9BIHRhaWwgcG9pbnRlciBy YWNlIGNvbmRpdGlvbgpyZXF1aXJlcyBhdCBsZWFzdCB0d2ljZSB0aGUgaW50ZXJuYWwga2VybmVs IHBvbGxpbmcgdGltZXIgdG8gbWFrZSBhbnkKZGF0YSBhdmFpbGFibGUuCgpUaGlzIGNoYW5nZXMg aW50cm9kdWNlIGNoZWNrcyBvbiB0aGUgT0EgZGF0YSB3cml0dGVuIGludG8gdGhlIGNpcmN1bGFy CmJ1ZmZlciB0byBtYWtlIGFzIG11Y2ggZGF0YSBhcyBwb3NzaWJsZSBhdmFpbGFibGUgb24gdGhl IGZpcnN0Cml0ZXJhdGlvbiBvZiB0aGUgcG9sbGluZyB0aW1lci4KCnYyOiBVc2UgT0FfVEFLRU4g bWFjcm8gd2l0aG91dCB0aGUgZ3R0X29mZnNldCAoTGlvbmVsKQp2MzogKFVtZXNoKQotIFJlYmFz ZQotIENoYW5nZSByZXBvcnQgdG8gcmVwb3J0MzIgZnJvbSBiZWxvdyByZXZpZXcKICBodHRwczov L3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMzMwNzA0Lz9zZXJpZXM9NjY2OTcmcmV2 PTEKdjQ6IChBc2h1dG9zaCwgTGlvbmVsKQotIEZpeCBjaGVja3BhdGNoIGVycm9ycwotIEZpeCBh Z2luZ190aW1lc3RhbXAgaW5pdGlhbGl6YXRpb24KLSBDaGVjayBmb3Igb25seSBvbmUgdmFsaWQg bGFuZGVkIHJlcG9ydAotIEZpeCBjaGVjayBmb3IgdW5sYW5kZWQgcmVwb3J0CgpTaWduZWQtb2Zm LWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IFVtZXNoIE5lcmxpZ2UgUmFtYXBwYSA8dW1lc2gubmVybGlnZS5yYW1hcHBh QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICB8 IDE5NyArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmZfdHlwZXMuaCB8ICAyOSArKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMo KyksIDEzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IDMyMjJm NmNkODI1NS4uYzE0MjlkM2FjYWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMjIz LDI2ICsyMjMsMTcgQEAKICAqCiAgKiBBbHRob3VnaCB0aGlzIGNhbiBiZSBvYnNlcnZlZCBleHBs aWNpdGx5IHdoaWxlIGNvcHlpbmcgcmVwb3J0cyB0byB1c2Vyc3BhY2UKICAqIGJ5IGNoZWNraW5n IGZvciBhIHplcm9lZCByZXBvcnQtaWQgZmllbGQgaW4gdGFpbCByZXBvcnRzLCB3ZSB3YW50IHRv IGFjY291bnQKLSAqIGZvciB0aGlzIGVhcmxpZXIsIGFzIHBhcnQgb2YgdGhlIG9hX2J1ZmZlcl9j aGVjayB0byBhdm9pZCBsb3RzIG9mIHJlZHVuZGFudAotICogcmVhZCgpIGF0dGVtcHRzLgotICoK LSAqIEluIGVmZmVjdCB3ZSBkZWZpbmUgYSB0YWlsIHBvaW50ZXIgZm9yIHJlYWRpbmcgdGhhdCBs YWdzIHRoZSByZWFsIHRhaWwKLSAqIHBvaW50ZXIgYnkgYXQgbGVhc3QgJU9BX1RBSUxfTUFSR0lO X05TRUMgbmFub3NlY29uZHMsIHdoaWNoIGdpdmVzIGVub3VnaAotICogdGltZSBmb3IgdGhlIGNv cnJlc3BvbmRpbmcgcmVwb3J0cyB0byBiZWNvbWUgdmlzaWJsZSB0byB0aGUgQ1BVLgotICoKLSAq IFRvIG1hbmFnZSB0aGlzIHdlIGFjdHVhbGx5IHRyYWNrIHR3byB0YWlsIHBvaW50ZXJzOgotICog IDEpIEFuICdhZ2luZycgdGFpbCB3aXRoIGFuIGFzc29jaWF0ZWQgdGltZXN0YW1wIHRoYXQgaXMg dHJhY2tlZCB1bnRpbCB3ZQotICogICAgIGNhbiB0cnVzdCB0aGUgY29ycmVzcG9uZGluZyBkYXRh IGlzIHZpc2libGUgdG8gdGhlIENQVTsgYXQgd2hpY2ggcG9pbnQKLSAqICAgICBpdCBpcyBjb25z aWRlcmVkICdhZ2VkJy4KLSAqICAyKSBBbiAnYWdlZCcgdGFpbCB0aGF0IGNhbiBiZSB1c2VkIGZv ciByZWFkKClpbmcuCi0gKgotICogVGhlIHR3byBzZXBhcmF0ZSBwb2ludGVycyBsZXQgdXMgZGVj b3VwbGUgcmVhZCgpcyBmcm9tIHRhaWwgcG9pbnRlciBhZ2luZy4KLSAqCi0gKiBUaGUgdGFpbCBw b2ludGVycyBhcmUgY2hlY2tlZCBhbmQgdXBkYXRlZCBhdCBhIGxpbWl0ZWQgcmF0ZSB3aXRoaW4g YSBocnRpbWVyCi0gKiBjYWxsYmFjayAodGhlIHNhbWUgY2FsbGJhY2sgdGhhdCBpcyB1c2VkIGZv ciBkZWxpdmVyaW5nIEVQT0xMSU4gZXZlbnRzKQotICoKLSAqIEluaXRpYWxseSB0aGUgdGFpbHMg YXJlIG1hcmtlZCBpbnZhbGlkIHdpdGggJUlOVkFMSURfVEFJTF9QVFIgd2hpY2gKLSAqIGluZGlj YXRlcyB0aGF0IGFuIHVwZGF0ZWQgdGFpbCBwb2ludGVyIGlzIG5lZWRlZC4KKyAqIGZvciB0aGlz IGVhcmxpZXIsIGFzIHBhcnQgb2YgdGhlIG9hX2J1ZmZlcl9jaGVja191bmxvY2tlZCB0byBhdm9p ZCBsb3RzIG9mCisgKiByZWR1bmRhbnQgcmVhZCgpIGF0dGVtcHRzLgorICoKKyAqIFdlIHdvcmth cm91bmQgdGhpcyBpc3N1ZSBpbiBvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoKSBieSByZWFkaW5n IHRoZSByZXBvcnRzCisgKiBpbiB0aGUgT0EgYnVmZmVyLCBzdGFydGluZyBmcm9tIHRoZSB0YWls IHJlcG9ydGVkIGJ5IHRoZSBIVyB1bnRpbCB3ZSBmaW5kIDIKKyAqIGNvbnNlY3V0aXZlIHJlcG9y dHMgd2l0aCB0aGVpciBmaXJzdCAyIGR3b3JkcyBvZiBub3QgYXQgMC4gVGhvc2UgZHdvcmRzIGFy ZQorICogYWxzbyBzZXQgdG8gMCBvbmNlIHJlYWQgYW5kIHRoZSB3aG9sZSBidWZmZXIgaXMgY2xl YXJlZCB1cG9uIE9BIGJ1ZmZlcgorICogaW5pdGlhbGl6YXRpb24uIFRoZSBmaXJzdCBkd29yZCBp cyB0aGUgcmVhc29uIGZvciB0aGlzIHJlcG9ydCB3aGlsZSB0aGUKKyAqIHNlY29uZCBpcyB0aGUg dGltZXN0YW1wLCBtYWtpbmcgdGhlIGNoYW5jZXMgb2YgaGF2aW5nIHRob3NlIDIgZmllbGRzIGF0 IDAKKyAqIGZhaXJseSB1bmxpa2VseS4gQSBtb3JlIGRldGFpbGVkIGV4cGxhbmF0aW9uIGlzIGF2 YWlsYWJsZSBpbgorICogb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKCkuCiAgKgogICogTW9zdCBv ZiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBmb3IgdGhpcyB3b3JrYXJvdW5kIGFyZSBpbgog ICogb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKCkgYW5kIF9hcHBlbmRfb2FfcmVwb3J0cygpCkBA IC00NjUsMTAgKzQ1NiwxMCBAQCBzdGF0aWMgdTMyIGdlbjdfb2FfaHdfdGFpbF9yZWFkKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAgKi8KIHN0YXRpYyBib29sIG9hX2J1ZmZlcl9j aGVja191bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogeworCXUzMiBn dHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChzdHJlYW0tPm9hX2J1ZmZlci52bWEpOwogCWlu dCByZXBvcnRfc2l6ZSA9IHN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdF9zaXplOwogCXVuc2lnbmVk IGxvbmcgZmxhZ3M7Ci0JdW5zaWduZWQgaW50IGFnZWRfaWR4OwotCXUzMiBoZWFkLCBod190YWls LCBhZ2VkX3RhaWwsIGFnaW5nX3RhaWw7CisJdTMyIGh3X3RhaWw7CiAJdTY0IG5vdzsKIAogCS8q IFdlIGhhdmUgdG8gY29uc2lkZXIgdGhlICh1bmxpa2VseSkgcG9zc2liaWxpdHkgdGhhdCByZWFk KCkgZXJyb3JzCkBAIC00NzcsMTYgKzQ2OCw2IEBAIHN0YXRpYyBib29sIG9hX2J1ZmZlcl9jaGVj a191bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCSAqLwogCXNwaW5f bG9ja19pcnFzYXZlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwogCi0JLyog TkI6IFRoZSBoZWFkIHdlIG9ic2VydmUgaGVyZSBtaWdodCBlZmZlY3RpdmVseSBiZSBhIGxpdHRs ZSBvdXQgb2YKLQkgKiBkYXRlIChiZXR3ZWVuIGhlYWQgYW5kIHRhaWxzW2FnZWRfaWR4XS5vZmZz ZXQgaWYgdGhlcmUgaXMgY3VycmVudGx5Ci0JICogYSByZWFkKCkgaW4gcHJvZ3Jlc3MuCi0JICov Ci0JaGVhZCA9IHN0cmVhbS0+b2FfYnVmZmVyLmhlYWQ7Ci0KLQlhZ2VkX2lkeCA9IHN0cmVhbS0+ b2FfYnVmZmVyLmFnZWRfdGFpbF9pZHg7Ci0JYWdlZF90YWlsID0gc3RyZWFtLT5vYV9idWZmZXIu dGFpbHNbYWdlZF9pZHhdLm9mZnNldDsKLQlhZ2luZ190YWlsID0gc3RyZWFtLT5vYV9idWZmZXIu dGFpbHNbIWFnZWRfaWR4XS5vZmZzZXQ7Ci0KIAlod190YWlsID0gc3RyZWFtLT5wZXJmLT5vcHMu b2FfaHdfdGFpbF9yZWFkKHN0cmVhbSk7CiAKIAkvKiBUaGUgdGFpbCBwb2ludGVyIGluY3JlYXNl cyBpbiA2NCBieXRlIGluY3JlbWVudHMsCkBAIC00OTYsNjQgKzQ3Nyw2NCBAQCBzdGF0aWMgYm9v bCBvYV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSkKIAogCW5vdyA9IGt0aW1lX2dldF9tb25vX2Zhc3RfbnMoKTsKIAotCS8qIFVwZGF0ZSB0aGUg YWdlZCB0YWlsCi0JICoKLQkgKiBGbGlwIHRoZSB0YWlsIHBvaW50ZXIgYXZhaWxhYmxlIGZvciBy ZWFkKClzIG9uY2UgdGhlIGFnaW5nIHRhaWwgaXMKLQkgKiBvbGQgZW5vdWdoIHRvIHRydXN0IHRo YXQgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSB3aWxsIGJlIHZpc2libGUgdG8KLQkgKiB0aGUgQ1BV Li4uCi0JICoKLQkgKiBEbyB0aGlzIGJlZm9yZSB1cGRhdGluZyB0aGUgYWdpbmcgcG9pbnRlciBp biBjYXNlIHdlIG1heSBiZSBhYmxlIHRvCi0JICogaW1tZWRpYXRlbHkgc3RhcnQgYWdpbmcgYSBu ZXcgcG9pbnRlciB0b28gKGlmIG5ldyBkYXRhIGhhcyBiZWNvbWUKLQkgKiBhdmFpbGFibGUpIHdp dGhvdXQgbmVlZGluZyB0byB3YWl0IGZvciBhIGxhdGVyIGhydGltZXIgY2FsbGJhY2suCi0JICov Ci0JaWYgKGFnaW5nX3RhaWwgIT0gSU5WQUxJRF9UQUlMX1BUUiAmJgotCSAgICAoKG5vdyAtIHN0 cmVhbS0+b2FfYnVmZmVyLmFnaW5nX3RpbWVzdGFtcCkgPgotCSAgICAgT0FfVEFJTF9NQVJHSU5f TlNFQykpIHsKLQotCQlhZ2VkX2lkeCBePSAxOwotCQlzdHJlYW0tPm9hX2J1ZmZlci5hZ2VkX3Rh aWxfaWR4ID0gYWdlZF9pZHg7CisJaWYgKGh3X3RhaWwgPT0gc3RyZWFtLT5vYV9idWZmZXIuYWdp bmdfdGFpbCAmJgorCSAgIChub3cgLSBzdHJlYW0tPm9hX2J1ZmZlci5hZ2luZ190aW1lc3RhbXAp ID4gT0FfVEFJTF9NQVJHSU5fTlNFQykgeworCQkvKiBJZiB0aGUgSFcgdGFpbCBoYXNuJ3QgbW92 ZSBzaW5jZSB0aGUgbGFzdCBjaGVjayBhbmQgdGhlIEhXCisJCSAqIHRhaWwgaGFzIGJlZW4gYWdp bmcgZm9yIGxvbmcgZW5vdWdoLCBkZWNsYXJlIGl0IHRoZSBuZXcKKwkJICogdGFpbC4KKwkJICov CisJCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWwgPSBzdHJlYW0tPm9hX2J1ZmZlci5hZ2luZ190YWls OworCX0gZWxzZSB7CisJCXUzMiBoZWFkLCB0YWlsOwogCi0JCWFnZWRfdGFpbCA9IGFnaW5nX3Rh aWw7CisJCS8qIE5COiBUaGUgaGVhZCB3ZSBvYnNlcnZlIGhlcmUgbWlnaHQgZWZmZWN0aXZlbHkg YmUgYSBsaXR0bGUKKwkJICogb3V0IG9mIGRhdGUuIElmIGEgcmVhZCgpIGlzIGluIHByb2dyZXNz LCB0aGUgaGVhZCBjb3VsZCBiZQorCQkgKiBhbnl3aGVyZSBiZXR3ZWVuIHRoaXMgaGVhZCBhbmQg c3RyZWFtLT5vYV9idWZmZXIudGFpbC4KKwkJICovCisJCWhlYWQgPSBzdHJlYW0tPm9hX2J1ZmZl ci5oZWFkIC0gZ3R0X29mZnNldDsKIAotCQkvKiBNYXJrIHRoYXQgd2UgbmVlZCBhIG5ldyBwb2lu dGVyIHRvIHN0YXJ0IGFnaW5nLi4uICovCi0JCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzWyFhZ2Vk X2lkeF0ub2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKLQkJYWdpbmdfdGFpbCA9IElOVkFMSURf VEFJTF9QVFI7Ci0JfQorCQlod190YWlsIC09IGd0dF9vZmZzZXQ7CisJCXRhaWwgPSBod190YWls OwogCi0JLyogVXBkYXRlIHRoZSBhZ2luZyB0YWlsCi0JICoKLQkgKiBXZSB0aHJvdHRsZSBhZ2lu ZyB0YWlsIHVwZGF0ZXMgdW50aWwgd2UgaGF2ZSBhIG5ldyB0YWlsIHRoYXQKLQkgKiByZXByZXNl bnRzID49IG9uZSByZXBvcnQgbW9yZSBkYXRhIHRoYW4gaXMgYWxyZWFkeSBhdmFpbGFibGUgZm9y Ci0JICogcmVhZGluZy4gVGhpcyBlbnN1cmVzIHRoZXJlIHdpbGwgYmUgZW5vdWdoIGRhdGEgZm9y IGEgc3VjY2Vzc2Z1bAotCSAqIHJlYWQgb25jZSB0aGlzIG5ldyBwb2ludGVyIGhhcyBhZ2VkIGFu ZCBlbnN1cmVzIHdlIHdpbGwgZ2l2ZSB0aGUgbmV3Ci0JICogcG9pbnRlciB0aW1lIHRvIGFnZS4K LQkgKi8KLQlpZiAoYWdpbmdfdGFpbCA9PSBJTlZBTElEX1RBSUxfUFRSICYmCi0JICAgIChhZ2Vk X3RhaWwgPT0gSU5WQUxJRF9UQUlMX1BUUiB8fAotCSAgICAgT0FfVEFLRU4oaHdfdGFpbCwgYWdl ZF90YWlsKSA+PSByZXBvcnRfc2l6ZSkpIHsKLQkJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBzdHJl YW0tPm9hX2J1ZmZlci52bWE7Ci0JCXUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2 bWEpOwotCi0JCS8qIEJlIHBhcmFub2lkIGFuZCBkbyBhIGJvdW5kcyBjaGVjayBvbiB0aGUgcG9p bnRlciByZWFkIGJhY2sKLQkJICogZnJvbSBoYXJkd2FyZSwganVzdCBpbiBjYXNlIHNvbWUgc3B1 cmlvdXMgaGFyZHdhcmUgY29uZGl0aW9uCi0JCSAqIGNvdWxkIHB1dCB0aGUgdGFpbCBvdXQgb2Yg Ym91bmRzLi4uCisJCS8qIFdhbGsgdGhlIHN0cmVhbSBiYWNrd2FyZCB1bnRpbCB3ZSBmaW5kIGEg cmVwb3J0IHdpdGggZHdvcmQgMAorCQkgKiAmIDEgbm90IGF0IDAuIFNpbmNlIHRoZSBjaXJjdWxh ciBidWZmZXIgcG9pbnRlcnMgcHJvZ3Jlc3MgYnkKKwkJICogaW5jcmVtZW50cyBvZiA2NCBieXRl cyBhbmQgdGhhdCByZXBvcnRzIGNhbiBiZSB1cCB0byAyNTYKKwkJICogYnl0ZXMgbG9uZywgd2Ug Y2FuJ3QgdGVsbCB3aGV0aGVyIGEgcmVwb3J0IGhhcyBmdWxseSBsYW5kZWQKKwkJICogaW4gbWVt b3J5IGJlZm9yZSB0aGUgZmlyc3QgMiBkd29yZHMgb2YgdGhlIGZvbGxvd2luZyByZXBvcnQKKwkJ ICogaGF2ZSBlZmZlY3RpdmVseSBsYW5kZWQuCisJCSAqCisJCSAqIFRoaXMgaXMgYXNzdW1pbmcg dGhhdCB0aGUgd3JpdGVzIG9mIHRoZSBPQSB1bml0IGxhbmQgaW4KKwkJICogbWVtb3J5IGluIHRo ZSBvcmRlciB0aGV5IHdlcmUgd3JpdHRlbiB0by4KKwkJICogSWYgbm90IDogKOKVr8Kw4pahwrDv vInila/vuLUg4pS74pSB4pS7CiAJCSAqLwotCQlpZiAoaHdfdGFpbCA+PSBndHRfb2Zmc2V0ICYm Ci0JCSAgICBod190YWlsIDwgKGd0dF9vZmZzZXQgKyBPQV9CVUZGRVJfU0laRSkpIHsKLQkJCXN0 cmVhbS0+b2FfYnVmZmVyLnRhaWxzWyFhZ2VkX2lkeF0ub2Zmc2V0ID0KLQkJCQlhZ2luZ190YWls ID0gaHdfdGFpbDsKLQkJCXN0cmVhbS0+b2FfYnVmZmVyLmFnaW5nX3RpbWVzdGFtcCA9IG5vdzsK LQkJfSBlbHNlIHsKLQkJCWRybV9lcnIoJnN0cmVhbS0+cGVyZi0+aTkxNS0+ZHJtLAotCQkJCSJJ Z25vcmluZyBzcHVyaW91cyBvdXQgb2YgcmFuZ2UgT0EgYnVmZmVyIHRhaWwgcG9pbnRlciA9ICV4 XG4iLAotCQkJCWh3X3RhaWwpOworCQl3aGlsZSAoT0FfVEFLRU4odGFpbCwgaGVhZCkgPj0gcmVw b3J0X3NpemUpIHsKKwkJCXUzMiBwcmV2aW91c190YWlsID0gKHRhaWwgLSByZXBvcnRfc2l6ZSkg JiAoT0FfQlVGRkVSX1NJWkUgLSAxKTsKKwkJCXUzMiAqcmVwb3J0MzIgPSAodm9pZCAqKShzdHJl YW0tPm9hX2J1ZmZlci52YWRkciArIHByZXZpb3VzX3RhaWwpOworCisJCQkvKiBIZWFkIG9mIHRo ZSByZXBvcnQgaW5kaWNhdGVkIGJ5IHRoZSBIVyB0YWlsIHJlZ2lzdGVyIGhhcworCQkJICogaW5k ZWVkIGxhbmRlZCBpbnRvIG1lbW9yeS4KKwkJCSAqLworCQkJaWYgKHJlcG9ydDMyWzBdICE9IDAg fHwgcmVwb3J0MzJbMV0gIT0gMCkKKwkJCQlicmVhazsKKworCQkJdGFpbCA9IHByZXZpb3VzX3Rh aWw7CiAJCX0KKworCQlpZiAoKCh0YWlsIC0gaHdfdGFpbCkgJiAoT0FfQlVGRkVSX1NJWkUgLSAx KSkgPiByZXBvcnRfc2l6ZSAmJgorCQkgICAgX19yYXRlbGltaXQoJnN0cmVhbS0+cGVyZi0+dGFp bF9wb2ludGVyX3JhY2UpKQorCQkJRFJNX05PVEUoInVubGFuZGVkIHJlcG9ydChzKSBoZWFkPTB4 JXggIgorCQkJCSAidGFpbD0weCV4IGh3X3RhaWw9MHgleFxuIiwKKwkJCQkgaGVhZCwgdGFpbCwg aHdfdGFpbCk7CisKKwkJc3RyZWFtLT5vYV9idWZmZXIudGFpbCA9IGd0dF9vZmZzZXQgKyB0YWls OworCQlzdHJlYW0tPm9hX2J1ZmZlci5hZ2luZ190YWlsID0gZ3R0X29mZnNldCArIGh3X3RhaWw7 CisJCXN0cmVhbS0+b2FfYnVmZmVyLmFnaW5nX3RpbWVzdGFtcCA9IG5vdzsKIAl9CiAKIAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwog Ci0JcmV0dXJuIGFnZWRfdGFpbCA9PSBJTlZBTElEX1RBSUxfUFRSID8KLQkJZmFsc2UgOiBPQV9U QUtFTihhZ2VkX3RhaWwsIGhlYWQpID49IHJlcG9ydF9zaXplOworCXJldHVybiBPQV9UQUtFTihz dHJlYW0tPm9hX2J1ZmZlci50YWlsIC0gZ3R0X29mZnNldCwKKwkJCXN0cmVhbS0+b2FfYnVmZmVy LmhlYWQgLSBndHRfb2Zmc2V0KSA+PSByZXBvcnRfc2l6ZTsKIH0KIAogLyoqCkBAIC02NzEsNyAr NjUyLDYgQEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0sCiAJdTMyIG1hc2sgPSAoT0FfQlVGRkVSX1NJWkUgLSAxKTsKIAlz aXplX3Qgc3RhcnRfb2Zmc2V0ID0gKm9mZnNldDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXVu c2lnbmVkIGludCBhZ2VkX3RhaWxfaWR4OwogCXUzMiBoZWFkLCB0YWlsOwogCXUzMiB0YWtlbjsK IAlpbnQgcmV0ID0gMDsKQEAgLTY4MiwxOCArNjYyLDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF9hcHBl bmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCXNwaW5fbG9j a19pcnFzYXZlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwogCiAJaGVhZCA9 IHN0cmVhbS0+b2FfYnVmZmVyLmhlYWQ7Ci0JYWdlZF90YWlsX2lkeCA9IHN0cmVhbS0+b2FfYnVm ZmVyLmFnZWRfdGFpbF9pZHg7Ci0JdGFpbCA9IHN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzW2FnZWRf dGFpbF9pZHhdLm9mZnNldDsKKwl0YWlsID0gc3RyZWFtLT5vYV9idWZmZXIudGFpbDsKIAogCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0cmVhbS0+b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7 CiAKLQkvKgotCSAqIEFuIGludmFsaWQgdGFpbCBwb2ludGVyIGhlcmUgbWVhbnMgd2UncmUgc3Rp bGwgd2FpdGluZyBmb3IgdGhlIHBvbGwKLQkgKiBocnRpbWVyIGNhbGxiYWNrIHRvIGdpdmUgdXMg YSBwb2ludGVyCi0JICovCi0JaWYgKHRhaWwgPT0gSU5WQUxJRF9UQUlMX1BUUikKLQkJcmV0dXJu IC1FQUdBSU47Ci0KIAkvKgogCSAqIE5COiBvYV9idWZmZXIuaGVhZC90YWlsIGluY2x1ZGUgdGhl IGd0dF9vZmZzZXQgd2hpY2ggd2UgZG9uJ3Qgd2FudAogCSAqIHdoaWxlIGluZGV4aW5nIHJlbGF0 aXZlIHRvIG9hX2J1Zl9iYXNlLgpAQCAtODI3LDEzICs3OTksMTEgQEAgc3RhdGljIGludCBnZW44 X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCX0K IAogCQkvKgotCQkgKiBUaGUgYWJvdmUgcmVhc29uIGZpZWxkIHNhbml0eSBjaGVjayBpcyBiYXNl ZCBvbgotCQkgKiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBPQSBidWZmZXIgaXMgaW5pdGlhbGx5 Ci0JCSAqIHplcm9lZCBhbmQgd2UgcmVzZXQgdGhlIGZpZWxkIGFmdGVyIGNvcHlpbmcgc28gdGhl Ci0JCSAqIGNoZWNrIGlzIHN0aWxsIG1lYW5pbmdmdWwgb25jZSBvbGQgcmVwb3J0cyBzdGFydAot CQkgKiBiZWluZyBvdmVyd3JpdHRlbi4KKwkJICogQ2xlYXIgb3V0IHRoZSBmaXJzdCAyIGR3b3Jk IGFzIGEgbWVhbiB0byBkZXRlY3QgdW5sYW5kZWQKKwkJICogcmVwb3J0cy4KIAkJICovCiAJCXJl cG9ydDMyWzBdID0gMDsKKwkJcmVwb3J0MzJbMV0gPSAwOwogCX0KIAogCWlmIChzdGFydF9vZmZz ZXQgIT0gKm9mZnNldCkgewpAQCAtOTc0LDcgKzk0NCw2IEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBl bmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCXUzMiBtYXNr ID0gKE9BX0JVRkZFUl9TSVpFIC0gMSk7CiAJc2l6ZV90IHN0YXJ0X29mZnNldCA9ICpvZmZzZXQ7 CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQl1bnNpZ25lZCBpbnQgYWdlZF90YWlsX2lkeDsKIAl1 MzIgaGVhZCwgdGFpbDsKIAl1MzIgdGFrZW47CiAJaW50IHJldCA9IDA7CkBAIC05ODUsMTcgKzk1 NCwxMCBAQCBzdGF0aWMgaW50IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKIAlzcGluX2xvY2tfaXJxc2F2ZSgmc3RyZWFtLT5vYV9idWZmZXIu cHRyX2xvY2ssIGZsYWdzKTsKIAogCWhlYWQgPSBzdHJlYW0tPm9hX2J1ZmZlci5oZWFkOwotCWFn ZWRfdGFpbF9pZHggPSBzdHJlYW0tPm9hX2J1ZmZlci5hZ2VkX3RhaWxfaWR4OwotCXRhaWwgPSBz dHJlYW0tPm9hX2J1ZmZlci50YWlsc1thZ2VkX3RhaWxfaWR4XS5vZmZzZXQ7CisJdGFpbCA9IHN0 cmVhbS0+b2FfYnVmZmVyLnRhaWw7CiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0t Pm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwogCi0JLyogQW4gaW52YWxpZCB0YWlsIHBvaW50 ZXIgaGVyZSBtZWFucyB3ZSdyZSBzdGlsbCB3YWl0aW5nIGZvciB0aGUgcG9sbAotCSAqIGhydGlt ZXIgY2FsbGJhY2sgdG8gZ2l2ZSB1cyBhIHBvaW50ZXIKLQkgKi8KLQlpZiAodGFpbCA9PSBJTlZB TElEX1RBSUxfUFRSKQotCQlyZXR1cm4gLUVBR0FJTjsKLQogCS8qIE5COiBvYV9idWZmZXIuaGVh ZC90YWlsIGluY2x1ZGUgdGhlIGd0dF9vZmZzZXQgd2hpY2ggd2UgZG9uJ3Qgd2FudAogCSAqIHdo aWxlIGluZGV4aW5nIHJlbGF0aXZlIHRvIG9hX2J1Zl9iYXNlLgogCSAqLwpAQCAtMTA1MywxMyAr MTAxNSwxMSBAQCBzdGF0aWMgaW50IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJaWYgKHJldCkKIAkJCWJyZWFrOwogCi0JCS8qIFRoZSBh Ym92ZSByZXBvcnQtaWQgZmllbGQgc2FuaXR5IGNoZWNrIGlzIGJhc2VkIG9uCi0JCSAqIHRoZSBh c3N1bXB0aW9uIHRoYXQgdGhlIE9BIGJ1ZmZlciBpcyBpbml0aWFsbHkKLQkJICogemVyb2VkIGFu ZCB3ZSByZXNldCB0aGUgZmllbGQgYWZ0ZXIgY29weWluZyBzbyB0aGUKLQkJICogY2hlY2sgaXMg c3RpbGwgbWVhbmluZ2Z1bCBvbmNlIG9sZCByZXBvcnRzIHN0YXJ0Ci0JCSAqIGJlaW5nIG92ZXJ3 cml0dGVuLgorCQkvKiBDbGVhciBvdXQgdGhlIGZpcnN0IDIgZHdvcmRzIGFzIGEgbWVhbiB0byBk ZXRlY3QgdW5sYW5kZWQKKwkJICogcmVwb3J0cy4KIAkJICovCiAJCXJlcG9ydDMyWzBdID0gMDsK KwkJcmVwb3J0MzJbMV0gPSAwOwogCX0KIAogCWlmIChzdGFydF9vZmZzZXQgIT0gKm9mZnNldCkg ewpAQCAtMTQzOCw4ICsxMzk4LDggQEAgc3RhdGljIHZvaWQgZ2VuN19pbml0X29hX2J1ZmZlcihz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCQkJICAgZ3R0X29mZnNldCB8IE9BQlVG RkVSX1NJWkVfMTZNKTsKIAogCS8qIE1hcmsgdGhhdCB3ZSBuZWVkIHVwZGF0ZWQgdGFpbCBwb2lu dGVycyB0byByZWFkIGZyb20uLi4gKi8KLQlzdHJlYW0tPm9hX2J1ZmZlci50YWlsc1swXS5vZmZz ZXQgPSBJTlZBTElEX1RBSUxfUFRSOwotCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzWzFdLm9mZnNl dCA9IElOVkFMSURfVEFJTF9QVFI7CisJc3RyZWFtLT5vYV9idWZmZXIuYWdpbmdfdGFpbCA9IElO VkFMSURfVEFJTF9QVFI7CisJc3RyZWFtLT5vYV9idWZmZXIudGFpbCA9IGd0dF9vZmZzZXQ7CiAK IAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxh Z3MpOwogCkBAIC0xNDkyLDggKzE0NTIsOCBAQCBzdGF0aWMgdm9pZCBnZW44X2luaXRfb2FfYnVm ZmVyKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAJaW50ZWxfdW5jb3JlX3dyaXRl KHVuY29yZSwgR0VOOF9PQVRBSUxQVFIsIGd0dF9vZmZzZXQgJiBHRU44X09BVEFJTFBUUl9NQVNL KTsKIAogCS8qIE1hcmsgdGhhdCB3ZSBuZWVkIHVwZGF0ZWQgdGFpbCBwb2ludGVycyB0byByZWFk IGZyb20uLi4gKi8KLQlzdHJlYW0tPm9hX2J1ZmZlci50YWlsc1swXS5vZmZzZXQgPSBJTlZBTElE X1RBSUxfUFRSOwotCXN0cmVhbS0+b2FfYnVmZmVyLnRhaWxzWzFdLm9mZnNldCA9IElOVkFMSURf VEFJTF9QVFI7CisJc3RyZWFtLT5vYV9idWZmZXIuYWdpbmdfdGFpbCA9IElOVkFMSURfVEFJTF9Q VFI7CisJc3RyZWFtLT5vYV9idWZmZXIudGFpbCA9IGd0dF9vZmZzZXQ7CiAKIAkvKgogCSAqIFJl c2V0IHN0YXRlIHVzZWQgdG8gcmVjb2duaXNlIGNvbnRleHQgc3dpdGNoZXMsIGFmZmVjdGluZyB3 aGljaApAQCAtMTU0OCw4ICsxNTA4LDggQEAgc3RhdGljIHZvaWQgZ2VuMTJfaW5pdF9vYV9idWZm ZXIoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAkJCSAgIGd0dF9vZmZzZXQgJiBH RU4xMl9PQUdfT0FUQUlMUFRSX01BU0spOwogCiAJLyogTWFyayB0aGF0IHdlIG5lZWQgdXBkYXRl ZCB0YWlsIHBvaW50ZXJzIHRvIHJlYWQgZnJvbS4uLiAqLwotCXN0cmVhbS0+b2FfYnVmZmVyLnRh aWxzWzBdLm9mZnNldCA9IElOVkFMSURfVEFJTF9QVFI7Ci0Jc3RyZWFtLT5vYV9idWZmZXIudGFp bHNbMV0ub2Zmc2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKKwlzdHJlYW0tPm9hX2J1ZmZlci5hZ2lu Z190YWlsID0gSU5WQUxJRF9UQUlMX1BUUjsKKwlzdHJlYW0tPm9hX2J1ZmZlci50YWlsID0gZ3R0 X29mZnNldDsKIAogCS8qCiAJICogUmVzZXQgc3RhdGUgdXNlZCB0byByZWNvZ25pc2UgY29udGV4 dCBzd2l0Y2hlcywgYWZmZWN0aW5nIHdoaWNoCkBAIC00Mzk4LDYgKzQzNTgsMTEgQEAgdm9pZCBp OTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJcmF0ZWxpbWl0 X3NldF9mbGFncygmcGVyZi0+c3B1cmlvdXNfcmVwb3J0X3JzLAogCQkJCSAgICBSQVRFTElNSVRf TVNHX09OX1JFTEVBU0UpOwogCisJCXJhdGVsaW1pdF9zdGF0ZV9pbml0KCZwZXJmLT50YWlsX3Bv aW50ZXJfcmFjZSwKKwkJCQkgICAgIDUgKiBIWiwgMTApOworCQlyYXRlbGltaXRfc2V0X2ZsYWdz KCZwZXJmLT50YWlsX3BvaW50ZXJfcmFjZSwKKwkJCQkgICAgUkFURUxJTUlUX01TR19PTl9SRUxF QVNFKTsKKwogCQlhdG9taWM2NF9zZXQoJnBlcmYtPm5vYV9wcm9ncmFtbWluZ19kZWxheSwKIAkJ CSAgICAgNTAwICogMTAwMCAvKiA1MDB1cyAqLyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZl90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmX3R5cGVzLmgKaW5kZXggMzIyODljYmRhNjQ4Li42ZGJiNWVlNGM1NWMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZl90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZl90eXBlcy5oCkBAIC0yNzMsMjEgKzI3MywxMCBAQCBzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSB7CiAJCXNwaW5sb2NrX3QgcHRyX2xvY2s7CiAKIAkJLyoqCi0JCSAq IEB0YWlsczogT25lICdhZ2luZycgdGFpbCBwb2ludGVyIGFuZCBvbmUgJ2FnZWQnIHRhaWwgcG9p bnRlciByZWFkeSB0bwotCQkgKiB1c2VkIGZvciByZWFkaW5nLgotCQkgKgotCQkgKiBJbml0aWFs IHZhbHVlcyBvZiAweGZmZmZmZmZmIGFyZSBpbnZhbGlkIGFuZCBpbXBseSB0aGF0IGFuCi0JCSAq IHVwZGF0ZSBpcyByZXF1aXJlZCAoYW5kIHNob3VsZCBiZSBpZ25vcmVkIGJ5IGFuIGF0dGVtcHRl ZAotCQkgKiByZWFkKQorCQkgKiBAYWdpbmdfdGFpbDogVGhlIGxhc3QgSFcgdGFpbCByZXBvcnRl ZCBieSBIVy4gVGhlIGRhdGEKKwkJICogbWlnaHQgbm90IGhhdmUgbWFkZSBpdCB0byBtZW1vcnkg eWV0IHRob3VnaC4KIAkJICovCi0JCXN0cnVjdCB7Ci0JCQl1MzIgb2Zmc2V0OwotCQl9IHRhaWxz WzJdOwotCi0JCS8qKgotCQkgKiBAYWdlZF90YWlsX2lkeDogSW5kZXggZm9yIHRoZSBhZ2VkIHRh aWwgcmVhZHkgdG8gcmVhZCgpIGRhdGEgdXAgdG8uCi0JCSAqLwotCQl1bnNpZ25lZCBpbnQgYWdl ZF90YWlsX2lkeDsKKwkJdTMyIGFnaW5nX3RhaWw7CiAKIAkJLyoqCiAJCSAqIEBhZ2luZ190aW1l c3RhbXA6IEEgbW9ub3RvbmljIHRpbWVzdGFtcCBmb3Igd2hlbiB0aGUgY3VycmVudCBhZ2luZyB0 YWlsIHBvaW50ZXIKQEAgLTMwMyw2ICsyOTIsMTIgQEAgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0g ewogCQkgKiBPQSBidWZmZXIgZGF0YSB0byB1c2Vyc3BhY2UuCiAJCSAqLwogCQl1MzIgaGVhZDsK KworCQkvKioKKwkJICogQHRhaWw6IFRoZSBsYXN0IHRhaWwgdmVyaWZpZWQgdGFpbCB0aGF0IGNh biBiZSByZWFkIGJ5CisJCSAqIHVzZXJzcGFjZS4KKwkJICovCisJCXUzMiB0YWlsOwogCX0gb2Ff YnVmZmVyOwogCiAJLyoqCkBAIC00MjAsNiArNDE1LDEyIEBAIHN0cnVjdCBpOTE1X3BlcmYgewog CSAqLwogCXN0cnVjdCByYXRlbGltaXRfc3RhdGUgc3B1cmlvdXNfcmVwb3J0X3JzOwogCisJLyoq CisJICogRm9yIHJhdGUgbGltaXRpbmcgYW55IG5vdGlmaWNhdGlvbnMgb2YgdGFpbCBwb2ludGVy CisJICogcmFjZS4KKwkgKi8KKwlzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIHRhaWxfcG9pbnRlcl9y YWNlOworCiAJdTMyIGdlbjdfbGF0Y2hlZF9vYXN0YXR1czE7CiAJdTMyIGN0eF9vYWN0eGN0cmxf b2Zmc2V0OwogCXUzMiBjdHhfZmxleGV1MF9vZmZzZXQ7Ci0tIAoyLjIwLjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=