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.8 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 80290C48BD1 for ; Tue, 8 Jun 2021 11:03: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 556A56128D for ; Tue, 8 Jun 2021 11:03:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 556A56128D 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 4D92C6EBAC; Tue, 8 Jun 2021 11:03:56 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0BF2D6EBA7; Tue, 8 Jun 2021 11:03:54 +0000 (UTC) IronPort-SDR: SD3QQfUWLYo6QekMperh+6wtm1QCr44ILuI8YvPhKeLet3u3eEGVN25dhms0C1zhk9YTXIGWpn Fyj1l7a8VDrg== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="268674822" X-IronPort-AV: E=Sophos;i="5.83,257,1616482800"; d="scan'208";a="268674822" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2021 04:03:53 -0700 IronPort-SDR: TvAMsoPj7/cu0PmNOLgFBSXYIYHxdUf5hMGLPSAFirtKRD8s3OV86XkN7tzS7LA1EibSgMfg7e SqNtrXhVDAbQ== X-IronPort-AV: E=Sophos;i="5.83,257,1616482800"; d="scan'208";a="552237246" Received: from mrahim1x-mobl.gar.corp.intel.com (HELO mwauld-desk1.intel.com) ([10.215.170.251]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2021 04:03:50 -0700 From: Matthew Auld To: intel-gfx@lists.freedesktop.org Date: Tue, 8 Jun 2021 12:02:53 +0100 Message-Id: <20210608110254.169357-7-matthew.auld@intel.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210608110254.169357-1-matthew.auld@intel.com> References: <20210608110254.169357-1-matthew.auld@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v3 6/7] drm/i915/ttm: switch over to ttm_buddy_man 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: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" TW92ZSBiYWNrIHRvIHRoZSBidWRkeSBhbGxvY2F0b3IgZm9yIG1hbmFnaW5nIGRldmljZSBsb2Nh bCBtZW1vcnksIGFuZApyZXN0b3JlIHRoZSBsb3N0IG1vY2sgc2VsZnRlc3RzLiBLZWVwIGFyb3Vu ZCB0aGUgcmFuZ2UgbWFuYWdlciByZWxhdGVkCmJpdHMsIHNpbmNlIHdlIGxpa2VseSBuZWVkIHRo aXMgZm9yIG1hbmFnaW5nIHN0b2xlbiBhdCBzb21lIHBvaW50LiBGb3IKc3RvbGVuIHdlIGFsc28g ZG9uJ3QgbmVlZCB0byByZXNlcnZlIGFueXRoaW5nIHNvIG5vIG5lZWQgdG8gc3VwcG9ydCBhCmdl bmVyaWMgcmVzZXJ2ZSBpbnRlcmZhY2UuCgp2MihUaG9tYXMpOgogICAgLSBiby0+cGFnZV9hbGln bm1lbnQgaXMgaW4gcGFnZSB1bml0cywgbm90IGJ5dGVzCgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3 IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhv bWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBUaG9tYXMgSGVsbHN0 csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jICAgICAgIHwgIDIwICstLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jICAgIHwgIDU1ICstLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oICAgIHwgIDE3IC0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMgICAgICAgfCAxMTcgKysrKystLS0tLS0tCiAu Li4vZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYyAgfCAxNzAgKysrKysr KysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24u YyAgfCAgMTIgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2VydGlvbnMoKyksIDIxNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f dHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMKaW5kZXggNTUw NDUzMTBhMzAwLi42ZTQ1ZTU2NGU3MzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV90dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fdHRtLmMKQEAgLTE4MSwxMSArMTgxLDcgQEAgc3RhdGljIGJvb2wgaTkxNV90dG1fZXZpY3Rp b25fdmFsdWFibGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gaTkxNV90dG1fdG9fZ2VtKGJvKTsKIAogCS8qIFdpbGwgZG8g Zm9yIG5vdy4gT3VyIHBpbm5lZCBvYmplY3RzIGFyZSBzdGlsbCBvbiBUVE0ncyBMUlUgbGlzdHMg Ki8KLQlpZiAoIWk5MTVfZ2VtX29iamVjdF9ldmljdGFibGUob2JqKSkKLQkJcmV0dXJuIGZhbHNl OwotCi0JLyogVGhpcyBpc24ndCB2YWxpZCB3aXRoIGEgYnVkZHkgYWxsb2NhdG9yICovCi0JcmV0 dXJuIHR0bV9ib19ldmljdGlvbl92YWx1YWJsZShibywgcGxhY2UpOworCXJldHVybiBpOTE1X2dl bV9vYmplY3RfZXZpY3RhYmxlKG9iaik7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfdHRtX2V2aWN0 X2ZsYWdzKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCkBAIC02NTcsMjAgKzY1Myw4IEBA IGludCBfX2k5MTVfZ2VtX3R0bV9vYmplY3RfaW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbWVtLAogCXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbG9ja19jbGFzczsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1lbS0+aTkxNTsKIAllbnVtIHR0bV9ib190eXBl IGJvX3R5cGU7Ci0Jc2l6ZV90IGFsaWdubWVudCA9IDA7CiAJaW50IHJldDsKIAotCS8qIEFkanVz dCBhbGlnbm1lbnQgdG8gR1BVLSBhbmQgQ1BVIGh1Z2UgcGFnZSBzaXplcy4gKi8KLQotCWlmICht ZW0tPmlzX3JhbmdlX21hbmFnZXIpIHsKLQkJaWYgKHNpemUgPj0gU1pfMUcpCi0JCQlhbGlnbm1l bnQgPSBTWl8xRyA+PiBQQUdFX1NISUZUOwotCQllbHNlIGlmIChzaXplID49IFNaXzJNKQotCQkJ YWxpZ25tZW50ID0gU1pfMk0gPj4gUEFHRV9TSElGVDsKLQkJZWxzZSBpZiAoc2l6ZSA+PSBTWl82 NEspCi0JCQlhbGlnbm1lbnQgPSBTWl82NEsgPj4gUEFHRV9TSElGVDsKLQl9Ci0KIAlkcm1fZ2Vt X3ByaXZhdGVfb2JqZWN0X2luaXQoJmk5MTUtPmRybSwgJm9iai0+YmFzZSwgc2l6ZSk7CiAJaTkx NV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fdHRtX29ial9vcHMsICZsb2NrX2NsYXNz LCBmbGFncyk7CiAJaTkxNV9nZW1fb2JqZWN0X2luaXRfbWVtb3J5X3JlZ2lvbihvYmosIG1lbSk7 CkBAIC02OTIsNyArNjc2LDcgQEAgaW50IF9faTkxNV9nZW1fdHRtX29iamVjdF9pbml0KHN0cnVj dCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCiAJICovCiAJb2JqLT5iYXNlLnZtYV9ub2RlLmRy aXZlcl9wcml2YXRlID0gaTkxNV9nZW1fdG9fdHRtKG9iaik7CiAJcmV0ID0gdHRtX2JvX2luaXQo Jmk5MTUtPmJkZXYsIGk5MTVfZ2VtX3RvX3R0bShvYmopLCBzaXplLAotCQkJICBib190eXBlLCAm aTkxNV9zeXNfcGxhY2VtZW50LCBhbGlnbm1lbnQsCisJCQkgIGJvX3R5cGUsICZpOTE1X3N5c19w bGFjZW1lbnQsIDEsCiAJCQkgIHRydWUsIE5VTEwsIE5VTEwsIGk5MTVfdHRtX2JvX2Rlc3Ryb3kp OwogCiAJaWYgKCFyZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9t ZW1vcnlfcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9u LmMKaW5kZXggMTJmYjU0MjNmZDVlLi5kZjU5Zjg4NGQzN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJp bnRlbF9tZW1vcnlfcmVnaW9uLmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJp OTE1X3R0bV9idWRkeV9tYW5hZ2VyLmgiCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCXUxNiBj bGFzczsKQEAgLTI4LDExICsyOSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCX0sCiB9Owog Ci1zdHJ1Y3QgaW50ZWxfcmVnaW9uX3Jlc2VydmUgewotCXN0cnVjdCBsaXN0X2hlYWQgbGluazsK LQlzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXM7Ci19OwotCiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3Jl Z2lvbiAqCiBpbnRlbF9tZW1vcnlfcmVnaW9uX2xvb2t1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKIAkJCSAgIHUxNiBjbGFzcywgdTE2IGluc3RhbmNlKQpAQCAtNjMsMjcgKzU5LDYg QEAgaW50ZWxfbWVtb3J5X3JlZ2lvbl9ieV90eXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAogCXJldHVybiBOVUxMOwogfQogCi0vKioKLSAqIGludGVsX21lbW9yeV9yZWdpb25fdW5y ZXNlcnZlIC0gVW5yZXNlcnZlIGFsbCBwcmV2aW91c2x5IHJlc2VydmVkCi0gKiByYW5nZXMKLSAq IEBtZW06IFRoZSByZWdpb24gY29udGFpbmluZyB0aGUgcmVzZXJ2ZWQgcmFuZ2VzLgotICovCi12 b2lkIGludGVsX21lbW9yeV9yZWdpb25fdW5yZXNlcnZlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uICptZW0pCi17Ci0Jc3RydWN0IGludGVsX3JlZ2lvbl9yZXNlcnZlICpyZXNlcnZlLCAqbmV4 dDsKLQotCWlmICghbWVtLT5wcml2X29wcyB8fCAhbWVtLT5wcml2X29wcy0+ZnJlZSkKLQkJcmV0 dXJuOwotCi0JbXV0ZXhfbG9jaygmbWVtLT5tbV9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUocmVzZXJ2ZSwgbmV4dCwgJm1lbS0+cmVzZXJ2ZWQsIGxpbmspIHsKLQkJbGlzdF9kZWwo JnJlc2VydmUtPmxpbmspOwotCQltZW0tPnByaXZfb3BzLT5mcmVlKG1lbSwgcmVzZXJ2ZS0+cmVz KTsKLQkJa2ZyZWUocmVzZXJ2ZSk7Ci0JfQotCW11dGV4X3VubG9jaygmbWVtLT5tbV9sb2NrKTsK LX0KLQogLyoqCiAgKiBpbnRlbF9tZW1vcnlfcmVnaW9uX3Jlc2VydmUgLSBSZXNlcnZlIGEgbWVt b3J5IHJhbmdlCiAgKiBAbWVtOiBUaGUgcmVnaW9uIGZvciB3aGljaCB3ZSB3YW50IHRvIHJlc2Vy dmUgYSByYW5nZS4KQEAgLTk2LDI4ICs3MSwxMSBAQCBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9y ZXNlcnZlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCiAJCQkJcmVzb3VyY2Vfc2l6 ZV90IG9mZnNldCwKIAkJCQlyZXNvdXJjZV9zaXplX3Qgc2l6ZSkKIHsKLQlpbnQgcmV0OwotCXN0 cnVjdCBpbnRlbF9yZWdpb25fcmVzZXJ2ZSAqcmVzZXJ2ZTsKLQotCWlmICghbWVtLT5wcml2X29w cyB8fCAhbWVtLT5wcml2X29wcy0+cmVzZXJ2ZSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlyZXNl cnZlID0ga3phbGxvYyhzaXplb2YoKnJlc2VydmUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJlc2Vy dmUpCi0JCXJldHVybiAtRU5PTUVNOworCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFu ID0gbWVtLT5yZWdpb25fcHJpdmF0ZTsKIAotCXJlc2VydmUtPnJlcyA9IG1lbS0+cHJpdl9vcHMt PnJlc2VydmUobWVtLCBvZmZzZXQsIHNpemUpOwotCWlmIChJU19FUlIocmVzZXJ2ZS0+cmVzKSkg ewotCQlyZXQgPSBQVFJfRVJSKHJlc2VydmUtPnJlcyk7Ci0JCWtmcmVlKHJlc2VydmUpOwotCQly ZXR1cm4gcmV0OwotCX0KLQotCW11dGV4X2xvY2soJm1lbS0+bW1fbG9jayk7Ci0JbGlzdF9hZGRf dGFpbCgmcmVzZXJ2ZS0+bGluaywgJm1lbS0+cmVzZXJ2ZWQpOwotCW11dGV4X3VubG9jaygmbWVt LT5tbV9sb2NrKTsKKwlHRU1fQlVHX09OKG1lbS0+aXNfcmFuZ2VfbWFuYWdlcik7CiAKLQlyZXR1 cm4gMDsKKwlyZXR1cm4gaTkxNV90dG1fYnVkZHlfbWFuX3Jlc2VydmUobWFuLCBvZmZzZXQsIHNp emUpOwogfQogCiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqCkBAIC0xNDksOSArMTA3LDYg QEAgaW50ZWxfbWVtb3J5X3JlZ2lvbl9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCiAKIAltdXRleF9pbml0KCZtZW0tPm9iamVjdHMubG9jayk7CiAJSU5JVF9MSVNUX0hFQUQo Jm1lbS0+b2JqZWN0cy5saXN0KTsKLQlJTklUX0xJU1RfSEVBRCgmbWVtLT5yZXNlcnZlZCk7Ci0K LQltdXRleF9pbml0KCZtZW0tPm1tX2xvY2spOwogCiAJaWYgKG9wcy0+aW5pdCkgewogCQllcnIg PSBvcHMtPmluaXQobWVtKTsKQEAgLTE4MiwxMSArMTM3LDkgQEAgc3RhdGljIHZvaWQgX19pbnRl bF9tZW1vcnlfcmVnaW9uX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpCiAJc3RydWN0IGludGVs X21lbW9yeV9yZWdpb24gKm1lbSA9CiAJCWNvbnRhaW5lcl9vZihrcmVmLCB0eXBlb2YoKm1lbSks IGtyZWYpOwogCi0JaW50ZWxfbWVtb3J5X3JlZ2lvbl91bnJlc2VydmUobWVtKTsKIAlpZiAobWVt LT5vcHMtPnJlbGVhc2UpCiAJCW1lbS0+b3BzLT5yZWxlYXNlKG1lbSk7CiAKLQltdXRleF9kZXN0 cm95KCZtZW0tPm1tX2xvY2spOwogCW11dGV4X2Rlc3Ryb3koJm1lbS0+b2JqZWN0cy5sb2NrKTsK IAlrZnJlZShtZW0pOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bWVtb3J5X3JlZ2lvbi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lv bi5oCmluZGV4IGM3ZTYzNWQ2MmUxYS4uYjA0ZmIyMjcyNmQ5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oCkBAIC01OSwxOSArNTksMTAgQEAgc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb25fb3BzIHsKIAkJCSAgIHVuc2lnbmVkIGludCBmbGFncyk7CiB9Owog Ci1zdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9wcml2YXRlX29wcyB7Ci0Jc3RydWN0IHR0bV9y ZXNvdXJjZSAqKCpyZXNlcnZlKShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAotCQkJ CQlyZXNvdXJjZV9zaXplX3Qgb2Zmc2V0LAotCQkJCQlyZXNvdXJjZV9zaXplX3Qgc2l6ZSk7Ci0J dm9pZCAoKmZyZWUpKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCi0JCSAgICAgc3Ry dWN0IHR0bV9yZXNvdXJjZSAqcmVzKTsKLX07Ci0KIHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKIAogCWNvbnN0IHN0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uX29wcyAqb3BzOwotCWNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uX3ByaXZhdGVfb3BzICpwcml2X29wczsKIAogCXN0cnVjdCBpb19tYXBwaW5nIGlvbWFwOwog CXN0cnVjdCByZXNvdXJjZSByZWdpb247CkBAIC03OSw4ICs3MCw2IEBAIHN0cnVjdCBpbnRlbF9t ZW1vcnlfcmVnaW9uIHsKIAkvKiBGb3IgZmFrZSBMTUVNICovCiAJc3RydWN0IGRybV9tbV9ub2Rl IGZha2VfbWFwcGFibGU7CiAKLQlzdHJ1Y3QgbXV0ZXggbW1fbG9jazsKLQogCXN0cnVjdCBrcmVm IGtyZWY7CiAKIAlyZXNvdXJjZV9zaXplX3QgaW9fc3RhcnQ7CkBAIC05NCw4ICs4Myw2IEBAIHN0 cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uIHsKIAljaGFyIG5hbWVbMTZdOwogCWJvb2wgcHJpdmF0 ZTsgLyogbm90IGZvciB1c2Vyc3BhY2UgKi8KIAotCXN0cnVjdCBsaXN0X2hlYWQgcmVzZXJ2ZWQ7 Ci0KIAlkbWFfYWRkcl90IHJlbWFwX2FkZHI7CiAKIAlzdHJ1Y3QgewpAQCAtMTAzLDggKzkwLDYg QEAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gewogCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 CiAJfSBvYmplY3RzOwogCi0Jc2l6ZV90IGNodW5rX3NpemU7Ci0JdW5zaWduZWQgaW50IG1heF9v cmRlcjsKIAlib29sIGlzX3JhbmdlX21hbmFnZXI7CiAKIAl2b2lkICpyZWdpb25fcHJpdmF0ZTsK QEAgLTEzOCw4ICsxMjMsNiBAQCBfX3ByaW50ZigyLCAzKSB2b2lkCiBpbnRlbF9tZW1vcnlfcmVn aW9uX3NldF9uYW1lKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCiAJCQkgICAgIGNv bnN0IGNoYXIgKmZtdCwgLi4uKTsKIAotdm9pZCBpbnRlbF9tZW1vcnlfcmVnaW9uX3VucmVzZXJ2 ZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKTsKLQogaW50IGludGVsX21lbW9yeV9y ZWdpb25fcmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCQkJCXJlc291 cmNlX3NpemVfdCBvZmZzZXQsCiAJCQkJcmVzb3VyY2Vfc2l6ZV90IHNpemUpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5jCmluZGV4IGY5ZDYxNjU0NDcyOC4uODE2ZTA4MjM5 YTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5jCkBAIC04LDYgKzgs NyBAQAogCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3NjYXR0ZXJsaXN0 LmgiCisjaW5jbHVkZSAiaTkxNV90dG1fYnVkZHlfbWFuYWdlci5oIgogCiAjaW5jbHVkZSAiaW50 ZWxfcmVnaW9uX3R0bS5oIgogCkBAIC02Nyw3MiArNjgsMjggQEAgaW50IGludGVsX3JlZ2lvbl90 b190dG1fdHlwZShjb25zdCBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQogCXJldHVy biB0eXBlOwogfQogCi1zdGF0aWMgc3RydWN0IHR0bV9yZXNvdXJjZSAqCi1pbnRlbF9yZWdpb25f dHRtX3Jlc291cmNlX3Jlc2VydmUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKLQkJ CSAgICAgIHJlc291cmNlX3NpemVfdCBvZmZzZXQsCi0JCQkgICAgICByZXNvdXJjZV9zaXplX3Qg c2l6ZSkKLXsKLQlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9IG1lbS0+cmVnaW9u X3ByaXZhdGU7Ci0Jc3RydWN0IHR0bV9wbGFjZSBwbGFjZSA9IHt9OwotCXN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCBtb2NrX2JvID0ge307Ci0Jc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzOwotCWlu dCByZXQ7Ci0KLQkvKgotCSAqIEhhdmluZyB0byB1c2UgYSBtb2NrX2JvIGlzIHVuZm9ydHVuYXRl IGJ1dCBzdGVtcyBmcm9tIHNvbWUKLQkgKiBkcml2ZXJzIGhhdmluZyBwcml2YXRlIG1hbmFnZXJz IHRoYXQgaW5zaXN0IHRvIGtub3cgd2hhdCB0aGUKLQkgKiBhbGxvY2F0ZSBtZW1vcnkgaXMgaW50 ZW5kZWQgZm9yLCB1c2luZyBpdCB0byBzZW5kIHByaXZhdGUKLQkgKiBkYXRhIHRvIHRoZSBtYW5h Z2VyLiBBbHNvIHJlY2VudGx5IHRoZSBibyBoYXMgYmVlbiB1c2VkIHRvIHNlbmQKLQkgKiBhbGln bm1lbnQgaW5mbyB0byB0aGUgbWFuYWdlci4gQXNzdW1lIHRoYXQgYXBhcnQgZnJvbSB0aGUgbGF0 dGVyLAotCSAqIG5vbmUgb2YgdGhlIG1hbmFnZXJzIHdlIHVzZSB3aWxsIGV2ZXIgYWNjZXNzIHRo ZSBidWZmZXIgb2JqZWN0Ci0JICogbWVtYmVycywgaG9waW5nIHdlIGNhbiBwYXNzIHRoZSBhbGln bm1lbnQgaW5mbyBpbiB0aGUKLQkgKiBzdHJ1Y3QgdHRtX3BsYWNlIGluIHRoZSBmdXR1cmUuCi0J ICovCi0KLQlwbGFjZS5mcGZuID0gb2Zmc2V0ID4+IFBBR0VfU0hJRlQ7Ci0JcGxhY2UubHBmbiA9 IHBsYWNlLmZwZm4gKyAoc2l6ZSA+PiBQQUdFX1NISUZUKTsKLQltb2NrX2JvLmJhc2Uuc2l6ZSA9 IHNpemU7Ci0JcmV0ID0gbWFuLT5mdW5jLT5hbGxvYyhtYW4sICZtb2NrX2JvLCAmcGxhY2UsICZy ZXMpOwotCWlmIChyZXQgPT0gLUVOT1NQQykKLQkJcmV0ID0gLUVOWElPOwotCi0JcmV0dXJuIHJl dCA/IEVSUl9QVFIocmV0KSA6IHJlczsKLX0KLQogLyoqCi0gKiBpbnRlbF9yZWdpb25fdHRtX3Jl c291cmNlX2ZyZWUgLSBGcmVlIGEgcmVzb3VyY2UgYWxsb2NhdGVkIGZyb20gYSByZXNvdXJjZSBt YW5hZ2VyCi0gKiBAbWVtOiBUaGUgcmVnaW9uIHRoZSByZXNvdXJjZSB3YXMgYWxsb2NhdGVkIGZy b20uCi0gKiBAcmVzOiBUaGUgb3BhcXVlIHJlc291cmNlIHJlcHJlc2VudGluZyBhbiBhbGxvY2F0 aW9uLgorICogaW50ZWxfcmVnaW9uX3R0bV9pbml0IC0gSW5pdGlhbGl6ZSBhIG1lbW9yeSByZWdp b24gZm9yIFRUTS4KKyAqIEBtZW06IFRoZSByZWdpb24gdG8gaW5pdGlhbGl6ZS4KKyAqCisgKiBU aGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIGEgc3VpdGFibGUgVFRNIHJlc291cmNlIG1hbmFnZXIg Zm9yIHRoZQorICogcmVnaW9uLCBhbmQgaWYgaXQncyBhIExNRU0gcmVnaW9uIHR5cGUsIGF0dGFj aGVzIGl0IHRvIHRoZSBUVE0KKyAqIGRldmljZS4gTU9DSyByZWdpb25zIGFyZSBOT1QgYXR0YWNo ZWQgdG8gdGhlIFRUTSBkZXZpY2UsIHNpbmNlIHdlIGRvbid0CisgKiBoYXZlIG9uZSBmb3IgdGhl IG1vY2sgc2VsZnRlc3RzLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBl cnJvciBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLXZvaWQgaW50ZWxfcmVnaW9uX3R0bV9yZXNvdXJj ZV9mcmVlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCi0JCQkJICAgIHN0cnVjdCB0 dG1fcmVzb3VyY2UgKnJlcykKLXsKLQlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9 IG1lbS0+cmVnaW9uX3ByaXZhdGU7Ci0KLQltYW4tPmZ1bmMtPmZyZWUobWFuLCByZXMpOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fcHJpdmF0ZV9vcHMgcHJp dl9vcHMgPSB7Ci0JLnJlc2VydmUgPSBpbnRlbF9yZWdpb25fdHRtX3Jlc291cmNlX3Jlc2VydmUs Ci0JLmZyZWUgPSBpbnRlbF9yZWdpb25fdHRtX3Jlc291cmNlX2ZyZWUsCi19OwotCiBpbnQgaW50 ZWxfcmVnaW9uX3R0bV9pbml0KHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0pCiB7CiAJ c3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSAmbWVtLT5pOTE1LT5iZGV2OwogCWludCBtZW1fdHlw ZSA9IGludGVsX3JlZ2lvbl90b190dG1fdHlwZShtZW0pOwogCWludCByZXQ7CiAKLQlyZXQgPSB0 dG1fcmFuZ2VfbWFuX2luaXQoYmRldiwgbWVtX3R5cGUsIGZhbHNlLAotCQkJCSByZXNvdXJjZV9z aXplKCZtZW0tPnJlZ2lvbikgPj4gUEFHRV9TSElGVCk7CisJcmV0ID0gaTkxNV90dG1fYnVkZHlf bWFuX2luaXQoYmRldiwgbWVtX3R5cGUsIGZhbHNlLAorCQkJCSAgICAgIHJlc291cmNlX3NpemUo Jm1lbS0+cmVnaW9uKSwgUEFHRV9TSVpFKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0J bWVtLT5jaHVua19zaXplID0gUEFHRV9TSVpFOwotCW1lbS0+bWF4X29yZGVyID0KLQkJZ2V0X29y ZGVyKHJvdW5kZG93bl9wb3dfb2ZfdHdvKHJlc291cmNlX3NpemUoJm1lbS0+cmVnaW9uKSkpOwot CW1lbS0+aXNfcmFuZ2VfbWFuYWdlciA9IHRydWU7Ci0JbWVtLT5wcml2X29wcyA9ICZwcml2X29w czsKIAltZW0tPnJlZ2lvbl9wcml2YXRlID0gdHRtX21hbmFnZXJfdHlwZShiZGV2LCBtZW1fdHlw ZSk7CiAKIAlyZXR1cm4gMDsKQEAgLTE1MCw4ICsxMDcsOCBAQCB2b2lkIGludGVsX3JlZ2lvbl90 dG1fZmluaShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQogewogCWludCByZXQ7CiAK LQlyZXQgPSB0dG1fcmFuZ2VfbWFuX2ZpbmkoJm1lbS0+aTkxNS0+YmRldiwKLQkJCQkgaW50ZWxf cmVnaW9uX3RvX3R0bV90eXBlKG1lbSkpOworCXJldCA9IGk5MTVfdHRtX2J1ZGR5X21hbl9maW5p KCZtZW0tPmk5MTUtPmJkZXYsCisJCQkJICAgICAgaW50ZWxfcmVnaW9uX3RvX3R0bV90eXBlKG1l bSkpOwogCUdFTV9XQVJOX09OKHJldCk7CiAJbWVtLT5yZWdpb25fcHJpdmF0ZSA9IE5VTEw7CiB9 CkBAIC0xNzQsOSArMTMxLDExIEBAIHN0cnVjdCBzZ190YWJsZSAqaW50ZWxfcmVnaW9uX3R0bV9y ZXNvdXJjZV90b19zdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtCiAJc3RydWN0IHR0 bV9yYW5nZV9tZ3Jfbm9kZSAqcmFuZ2Vfbm9kZSA9CiAJCWNvbnRhaW5lcl9vZihyZXMsIHR5cGVv ZigqcmFuZ2Vfbm9kZSksIGJhc2UpOwogCi0JR0VNX1dBUk5fT04oIW1lbS0+aXNfcmFuZ2VfbWFu YWdlcik7Ci0JcmV0dXJuIGk5MTVfc2dfZnJvbV9tbV9ub2RlKCZyYW5nZV9ub2RlLT5tbV9ub2Rl c1swXSwKLQkJCQkgICAgbWVtLT5yZWdpb24uc3RhcnQpOworCWlmIChtZW0tPmlzX3JhbmdlX21h bmFnZXIpCisJCXJldHVybiBpOTE1X3NnX2Zyb21fbW1fbm9kZSgmcmFuZ2Vfbm9kZS0+bW1fbm9k ZXNbMF0sCisJCQkJCSAgICBtZW0tPnJlZ2lvbi5zdGFydCk7CisJZWxzZQorCQlyZXR1cm4gaTkx NV9zZ19mcm9tX2J1ZGR5X3Jlc291cmNlKHJlcywgbWVtLT5yZWdpb24uc3RhcnQpOwogfQogCiAj aWZkZWYgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUCkBAIC0yMDYsMjUgKzE2NSwzNSBAQCBpbnRl bF9yZWdpb25fdHRtX3Jlc291cmNlX2FsbG9jKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICpt ZW0sCiAJc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzOwogCWludCByZXQ7CiAKLQkvKgotCSAqIFdl IGlnbm9yZSB0aGUgZmxhZ3MgZm9yIG5vdyBzaW5jZSB3ZSdyZSB1c2luZyB0aGUgcmFuZ2UKLQkg KiBtYW5hZ2VyIGFuZCBjb250aWdvdXMgYW5kIG1pbiBwYWdlIHNpemUgd291bGQgYmUgZnVsZmls bGVkCi0JICogYnkgZGVmYXVsdCBpZiBzaXplIGlzIG1pbiBwYWdlIHNpemUgYWxpZ25lZC4KLQkg Ki8KIAltb2NrX2JvLmJhc2Uuc2l6ZSA9IHNpemU7Ci0KLQlpZiAobWVtLT5pc19yYW5nZV9tYW5h Z2VyKSB7Ci0JCWlmIChzaXplID49IFNaXzFHKQotCQkJbW9ja19iby5wYWdlX2FsaWdubWVudCA9 IFNaXzFHID4+IFBBR0VfU0hJRlQ7Ci0JCWVsc2UgaWYgKHNpemUgPj0gU1pfMk0pCi0JCQltb2Nr X2JvLnBhZ2VfYWxpZ25tZW50ID0gU1pfMk0gPj4gUEFHRV9TSElGVDsKLQkJZWxzZSBpZiAoc2l6 ZSA+PSBTWl82NEspCi0JCQltb2NrX2JvLnBhZ2VfYWxpZ25tZW50ID0gU1pfNjRLID4+IFBBR0Vf U0hJRlQ7Ci0JfQorCW1vY2tfYm8ucGFnZV9hbGlnbm1lbnQgPSAxOworCXBsYWNlLmZsYWdzID0g ZmxhZ3M7CiAKIAlyZXQgPSBtYW4tPmZ1bmMtPmFsbG9jKG1hbiwgJm1vY2tfYm8sICZwbGFjZSwg JnJlcyk7CiAJaWYgKHJldCA9PSAtRU5PU1BDKQogCQlyZXQgPSAtRU5YSU87CiAJcmV0dXJuIHJl dCA/IEVSUl9QVFIocmV0KSA6IHJlczsKIH0KKwogI2VuZGlmCisKK3ZvaWQgaW50ZWxfcmVnaW9u X3R0bV9ub2RlX2ZyZWUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKKwkJCQlzdHJ1 Y3QgdHRtX3Jlc291cmNlICpyZXMpCit7CisJc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICpt YW4gPSBtZW0tPnJlZ2lvbl9wcml2YXRlOworCisJbWFuLT5mdW5jLT5mcmVlKG1hbiwgcmVzKTsK K30KKworLyoqCisgKiBpbnRlbF9yZWdpb25fdHRtX3Jlc291cmNlX2ZyZWUgLSBGcmVlIGEgcmVz b3VyY2UgYWxsb2NhdGVkIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VyCisgKiBAbWVtOiBUaGUgcmVn aW9uIHRoZSByZXNvdXJjZSB3YXMgYWxsb2NhdGVkIGZyb20uCisgKiBAcmVzOiBUaGUgb3BhcXVl IHJlc291cmNlIHJlcHJlc2VudGluZyBhbiBhbGxvY2F0aW9uLgorICovCit2b2lkIGludGVsX3Jl Z2lvbl90dG1fcmVzb3VyY2VfZnJlZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAor CQkJCSAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMpCit7CisJc3RydWN0IHR0bV9yZXNvdXJj ZV9tYW5hZ2VyICptYW4gPSBtZW0tPnJlZ2lvbl9wcml2YXRlOworCisJbWFuLT5mdW5jLT5mcmVl KG1hbiwgcmVzKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfbWVtb3J5X3JlZ2lvbi5jCmluZGV4IGM4NWQ1MTZiODVjZC4uZTlkNDZlZmE3M2NhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3Jl Z2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlf cmVnaW9uLmMKQEAgLTIwLDcgKzIwLDkgQEAKICNpbmNsdWRlICJnZW0vc2VsZnRlc3RzL21vY2tf Y29udGV4dC5oIgogI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgiCiAjaW5jbHVkZSAi Z3QvaW50ZWxfZ3QuaCIKKyNpbmNsdWRlICJpOTE1X2J1ZGR5LmgiCiAjaW5jbHVkZSAiaTkxNV9t ZW1jcHkuaCIKKyNpbmNsdWRlICJpOTE1X3R0bV9idWRkeV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAi c2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmgiCiAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfcmFu ZG9tLmgiCiAKQEAgLTU3LDEwICs1OSw5IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfZmlsbCh2b2lk ICphcmcpCiAJTElTVF9IRUFEKG9iamVjdHMpOwogCWludCBlcnIgPSAwOwogCi0JcGFnZV9zaXpl ID0gbWVtLT5jaHVua19zaXplOworCXBhZ2Vfc2l6ZSA9IFBBR0VfU0laRTsKKwltYXhfcGFnZXMg PSBkaXY2NF91NjQodG90YWwsIHBhZ2Vfc2l6ZSk7CiAJcmVtID0gdG90YWw7Ci1yZXRyeToKLQlt YXhfcGFnZXMgPSBkaXY2NF91NjQocmVtLCBwYWdlX3NpemUpOwogCiAJZm9yX2VhY2hfcHJpbWVf bnVtYmVyX2Zyb20ocGFnZV9udW0sIDEsIG1heF9wYWdlcykgewogCQlyZXNvdXJjZV9zaXplX3Qg c2l6ZSA9IHBhZ2VfbnVtICogcGFnZV9zaXplOwpAQCAtODYsMTEgKzg3LDYgQEAgc3RhdGljIGlu dCBpZ3RfbW9ja19maWxsKHZvaWQgKmFyZykKIAkJZXJyID0gMDsKIAlpZiAoZXJyID09IC1FTlhJ TykgewogCQlpZiAocGFnZV9udW0gKiBwYWdlX3NpemUgPD0gcmVtKSB7Ci0JCQlpZiAobWVtLT5p c19yYW5nZV9tYW5hZ2VyICYmIG1heF9wYWdlcyA+IDEpIHsKLQkJCQltYXhfcGFnZXMgPj49IDE7 Ci0JCQkJZ290byByZXRyeTsKLQkJCX0KLQogCQkJcHJfZXJyKCIlcyBmYWlsZWQsIHNwYWNlIHN0 aWxsIGxlZnQgaW4gcmVnaW9uXG4iLAogCQkJICAgICAgIF9fZnVuY19fKTsKIAkJCWVyciA9IC1F SU5WQUw7CkBAIC0xNTcsNiArMTUzLDcgQEAgc3RhdGljIGJvb2wgaXNfY29udGlndW91cyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogc3RhdGljIGludCBpZ3RfbW9ja19yZXNlcnZl KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtID0gYXJnOwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gbWVtLT5pOTE1OwogCXJlc291cmNlX3Np emVfdCBhdmFpbCA9IHJlc291cmNlX3NpemUoJm1lbS0+cmVnaW9uKTsKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOwogCWNvbnN0IHUzMiBjaHVua19zaXplID0gU1pfMzJNOwpAQCAt MTY2LDE2ICsxNjMsMTggQEAgc3RhdGljIGludCBpZ3RfbW9ja19yZXNlcnZlKHZvaWQgKmFyZykK IAlMSVNUX0hFQUQob2JqZWN0cyk7CiAJaW50IGVyciA9IDA7CiAKLQlpZiAoIWxpc3RfZW1wdHko Jm1lbS0+cmVzZXJ2ZWQpKSB7Ci0JCXByX2VycigiJXMgcmVnaW9uIHJlc2VydmVkIGxpc3QgaXMg bm90IGVtcHR5XG4iLCBfX2Z1bmNfXyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQogCWNvdW50 ID0gYXZhaWwgLyBjaHVua19zaXplOwogCW9yZGVyID0gaTkxNV9yYW5kb21fb3JkZXIoY291bnQs ICZwcm5nKTsKIAlpZiAoIW9yZGVyKQogCQlyZXR1cm4gMDsKIAorCW1lbSA9IG1vY2tfcmVnaW9u X2NyZWF0ZShpOTE1LCAwLCBTWl8yRywgSTkxNV9HVFRfUEFHRV9TSVpFXzRLLCAwKTsKKwlpZiAo SVNfRVJSKG1lbSkpIHsKKwkJcHJfZXJyKCJmYWlsZWQgdG8gY3JlYXRlIG1lbW9yeSByZWdpb25c biIpOworCQllcnIgPSBQVFJfRVJSKG1lbSk7CisJCWdvdG8gb3V0X2Nsb3NlOworCX0KKwogCS8q IFJlc2VydmUgYSBidW5jaCBvZiByYW5nZXMgd2l0aGluIHRoZSByZWdpb24gKi8KIAlmb3IgKGkg PSAwOyBpIDwgY291bnQ7ICsraSkgewogCQl1NjQgc3RhcnQgPSBvcmRlcltpXSAqIGNodW5rX3Np emU7CkBAIC0yMDUsMTggKzIwNCwxMiBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3Jlc2VydmUodm9p ZCAqYXJnKQogCWRvIHsKIAkJdTMyIHNpemUgPSBpOTE1X3ByYW5kb21fdTMyX21heF9zdGF0ZShj dXJfYXZhaWwsICZwcm5nKTsKIAotcmV0cnk6CiAJCXNpemUgPSBtYXhfdCh1MzIsIHJvdW5kX3Vw KHNpemUsIFBBR0VfU0laRSksIFBBR0VfU0laRSk7CiAJCW9iaiA9IGlndF9vYmplY3RfY3JlYXRl KG1lbSwgJm9iamVjdHMsIHNpemUsIDApOwogCQlpZiAoSVNfRVJSKG9iaikpIHsKLQkJCWlmIChQ VFJfRVJSKG9iaikgPT0gLUVOWElPKSB7Ci0JCQkJaWYgKG1lbS0+aXNfcmFuZ2VfbWFuYWdlciAm JgotCQkJCSAgICBzaXplID4gbWVtLT5jaHVua19zaXplKSB7Ci0JCQkJCXNpemUgPj49IDE7Ci0J CQkJCWdvdG8gcmV0cnk7Ci0JCQkJfQorCQkJaWYgKFBUUl9FUlIob2JqKSA9PSAtRU5YSU8pCiAJ CQkJYnJlYWs7Ci0JCQl9CisKIAkJCWVyciA9IFBUUl9FUlIob2JqKTsKIAkJCWdvdG8gb3V0X2Ns b3NlOwogCQl9CkBAIC0yMzIsNyArMjI1LDcgQEAgc3RhdGljIGludCBpZ3RfbW9ja19yZXNlcnZl KHZvaWQgKmFyZykKIG91dF9jbG9zZToKIAlrZnJlZShvcmRlcik7CiAJY2xvc2Vfb2JqZWN0cyht ZW0sICZvYmplY3RzKTsKLQlpbnRlbF9tZW1vcnlfcmVnaW9uX3VucmVzZXJ2ZShtZW0pOworCWlu dGVsX21lbW9yeV9yZWdpb25fcHV0KG1lbSk7CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtMjUyLDcg KzI0NSw3IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfY29udGlndW91cyh2b2lkICphcmcpCiAJdG90 YWwgPSByZXNvdXJjZV9zaXplKCZtZW0tPnJlZ2lvbik7CiAKIAkvKiBNaW4gc2l6ZSAqLwotCW9i aiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIG1lbS0+Y2h1bmtfc2l6ZSwKKwlv YmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCBQQUdFX1NJWkUsCiAJCQkJSTkx NV9CT19BTExPQ19DT05USUdVT1VTKTsKIAlpZiAoSVNfRVJSKG9iaikpCiAJCXJldHVybiBQVFJf RVJSKG9iaik7CkBAIC0zMzMsMTcgKzMyNiwxNSBAQCBzdGF0aWMgaW50IGlndF9tb2NrX2NvbnRp Z3VvdXModm9pZCAqYXJnKQogCW1pbiA9IHRhcmdldDsKIAl0YXJnZXQgPSB0b3RhbCA+PiAxOwog Ci0JaWYgKCFtZW0tPmlzX3JhbmdlX21hbmFnZXIpIHsKLQkJLyogTWFrZSBzdXJlIHdlIGNhbiBz dGlsbCBhbGxvY2F0ZSBhbGwgdGhlIGZyYWdtZW50ZWQgc3BhY2UgKi8KLQkJb2JqID0gaWd0X29i amVjdF9jcmVhdGUobWVtLCAmb2JqZWN0cywgdGFyZ2V0LCAwKTsKLQkJaWYgKElTX0VSUihvYmop KSB7Ci0JCQllcnIgPSBQVFJfRVJSKG9iaik7Ci0JCQlnb3RvIGVycl9jbG9zZV9vYmplY3RzOwot CQl9Ci0KLQkJaWd0X29iamVjdF9yZWxlYXNlKG9iaik7CisJLyogTWFrZSBzdXJlIHdlIGNhbiBz dGlsbCBhbGxvY2F0ZSBhbGwgdGhlIGZyYWdtZW50ZWQgc3BhY2UgKi8KKwlvYmogPSBpZ3Rfb2Jq ZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCB0YXJnZXQsIDApOworCWlmIChJU19FUlIob2JqKSkg eworCQllcnIgPSBQVFJfRVJSKG9iaik7CisJCWdvdG8gZXJyX2Nsb3NlX29iamVjdHM7CiAJfQog CisJaWd0X29iamVjdF9yZWxlYXNlKG9iaik7CisKIAkvKgogCSAqIEV2ZW4gdGhvdWdoIHdlIGhh dmUgZW5vdWdoIGZyZWUgc3BhY2UsIHdlIGRvbid0IGhhdmUgYSBiaWcgZW5vdWdoCiAJICogY29u dGlndW91cyBibG9jay4gTWFrZSBzdXJlIHRoYXQgaG9sZHMgdHJ1ZS4KQEAgLTM2Miw3ICszNTMs NyBAQCBzdGF0aWMgaW50IGlndF9tb2NrX2NvbnRpZ3VvdXModm9pZCAqYXJnKQogCQl9CiAKIAkJ dGFyZ2V0ID4+PSAxOwotCX0gd2hpbGUgKHRhcmdldCA+PSBtZW0tPmNodW5rX3NpemUpOworCX0g d2hpbGUgKHRhcmdldCA+PSBQQUdFX1NJWkUpOwogCiBlcnJfY2xvc2Vfb2JqZWN0czoKIAlsaXN0 X3NwbGljZV90YWlsKCZob2xlcywgJm9iamVjdHMpOwpAQCAtMzc0LDcgKzM2NSw5IEBAIHN0YXRp YyBpbnQgaWd0X21vY2tfc3BsaW50ZXJlZF9yZWdpb24odm9pZCAqYXJnKQogewogCXN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uICptZW0gPSBhcmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBtZW0tPmk5MTU7CisJc3RydWN0IGk5MTVfdHRtX2J1ZGR5X3Jlc291cmNlICpyZXM7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV9idWRkeV9t bSAqbW07CiAJdW5zaWduZWQgaW50IGV4cGVjdGVkX29yZGVyOwogCUxJU1RfSEVBRChvYmplY3Rz KTsKIAl1NjQgc2l6ZTsKQEAgLTM4Miw3ICszNzUsNyBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3Nw bGludGVyZWRfcmVnaW9uKHZvaWQgKmFyZykKIAogCS8qCiAJICogU2FuaXR5IGNoZWNrIHdlIGNh biBzdGlsbCBhbGxvY2F0ZSBldmVyeXRoaW5nIGV2ZW4gaWYgdGhlCi0JICogbWF4X29yZGVyICE9 IG1tLnNpemUuIGkuZSBvdXIgc3RhcnRpbmcgYWRkcmVzcyBzcGFjZSBzaXplIGlzIG5vdCBhCisJ ICogbW0ubWF4X29yZGVyICE9IG1tLnNpemUuIGkuZSBvdXIgc3RhcnRpbmcgYWRkcmVzcyBzcGFj ZSBzaXplIGlzIG5vdCBhCiAJICogcG93ZXItb2YtdHdvLgogCSAqLwogCkBAIC0zOTEsMjAgKzM4 NCwyOSBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3NwbGludGVyZWRfcmVnaW9uKHZvaWQgKmFyZykK IAlpZiAoSVNfRVJSKG1lbSkpCiAJCXJldHVybiBQVFJfRVJSKG1lbSk7CiAKLQlleHBlY3RlZF9v cmRlciA9IGdldF9vcmRlcihyb3VuZGRvd25fcG93X29mX3R3byhzaXplKSk7Ci0JaWYgKG1lbS0+ bWF4X29yZGVyICE9IGV4cGVjdGVkX29yZGVyKSB7Ci0JCXByX2VycigiJXMgb3JkZXIgbWlzbWF0 Y2goJXUgIT0gJXUpXG4iLAotCQkgICAgICAgX19mdW5jX18sIG1lbS0+bWF4X29yZGVyLCBleHBl Y3RlZF9vcmRlcik7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0X3B1dDsKLQl9Ci0KIAlv YmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCBzaXplLCAwKTsKIAlpZiAoSVNf RVJSKG9iaikpIHsKIAkJZXJyID0gUFRSX0VSUihvYmopOwogCQlnb3RvIG91dF9jbG9zZTsKIAl9 CiAKKwlyZXMgPSB0b190dG1fYnVkZHlfcmVzb3VyY2Uob2JqLT5tbS5yZXMpOworCW1tID0gcmVz LT5tbTsKKwlpZiAobW0tPnNpemUgIT0gc2l6ZSkgeworCQlwcl9lcnIoIiVzIHNpemUgbWlzbWF0 Y2goJWxsdSAhPSAlbGx1KVxuIiwKKwkJICAgICAgIF9fZnVuY19fLCBtbS0+c2l6ZSwgc2l6ZSk7 CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X3B1dDsKKwl9CisKKwlleHBlY3RlZF9vcmRl ciA9IGdldF9vcmRlcihyb3VuZGRvd25fcG93X29mX3R3byhzaXplKSk7CisJaWYgKG1tLT5tYXhf b3JkZXIgIT0gZXhwZWN0ZWRfb3JkZXIpIHsKKwkJcHJfZXJyKCIlcyBvcmRlciBtaXNtYXRjaCgl dSAhPSAldSlcbiIsCisJCSAgICAgICBfX2Z1bmNfXywgbW0tPm1heF9vcmRlciwgZXhwZWN0ZWRf b3JkZXIpOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dF9wdXQ7CisJfQorCiAJY2xvc2Vf b2JqZWN0cyhtZW0sICZvYmplY3RzKTsKIAogCS8qCkBAIC00MTUsMTUgKzQxNywxMiBAQCBzdGF0 aWMgaW50IGlndF9tb2NrX3NwbGludGVyZWRfcmVnaW9uKHZvaWQgKmFyZykKIAkgKiBzdXJlIHRo YXQgZG9lcyBpbmRlZWQgaG9sZCB0cnVlLgogCSAqLwogCi0JaWYgKCFtZW0tPmlzX3JhbmdlX21h bmFnZXIpIHsKLQkJb2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCAmb2JqZWN0cywgc2l6ZSwK LQkJCQkJSTkxNV9CT19BTExPQ19DT05USUdVT1VTKTsKLQkJaWYgKCFJU19FUlIob2JqKSkgewot CQkJcHJfZXJyKCIlcyB0b28gbGFyZ2UgY29udGlndW91cyBhbGxvY2F0aW9uIHdhcyBub3QgcmVq ZWN0ZWRcbiIsCi0JCQkgICAgICAgX19mdW5jX18pOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdv dG8gb3V0X2Nsb3NlOwotCQl9CisJb2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCAmb2JqZWN0 cywgc2l6ZSwgSTkxNV9CT19BTExPQ19DT05USUdVT1VTKTsKKwlpZiAoIUlTX0VSUihvYmopKSB7 CisJCXByX2VycigiJXMgdG9vIGxhcmdlIGNvbnRpZ3VvdXMgYWxsb2NhdGlvbiB3YXMgbm90IHJl amVjdGVkXG4iLAorCQkgICAgICAgX19mdW5jX18pOworCQllcnIgPSAtRUlOVkFMOworCQlnb3Rv IG91dF9jbG9zZTsKIAl9CiAKIAlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3Rz LCByb3VuZGRvd25fcG93X29mX3R3byhzaXplKSwKQEAgLTQ0Miw2ICs0NDEsNzQgQEAgc3RhdGlj IGludCBpZ3RfbW9ja19zcGxpbnRlcmVkX3JlZ2lvbih2b2lkICphcmcpCiAJcmV0dXJuIGVycjsK IH0KIAorI2lmbmRlZiBTWl84RworI2RlZmluZSBTWl84RyBCSVRfVUxMKDMzKQorI2VuZGlmCisK K3N0YXRpYyBpbnQgaWd0X21vY2tfbWF4X3NlZ21lbnQodm9pZCAqYXJnKQoreworCWNvbnN0IHVu c2lnbmVkIGludCBtYXhfc2VnbWVudCA9IGk5MTVfc2dfc2VnbWVudF9zaXplKCk7CisJc3RydWN0 IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9IGFyZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IG1lbS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV90dG1fYnVkZHlfcmVzb3VyY2UgKnJl czsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X2J1ZGR5 X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgaTkxNV9idWRkeV9tbSAqbW07CisJc3RydWN0IGxpc3Rf aGVhZCAqYmxvY2tzOworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJTElTVF9IRUFEKG9iamVj dHMpOworCXU2NCBzaXplOworCWludCBlcnIgPSAwOworCisJLyoKKwkgKiBXaGlsZSB3ZSBtYXkg Y3JlYXRlIHZlcnkgbGFyZ2UgY29udGlndW91cyBibG9ja3MsIHdlIG1heSBuZWVkCisJICogdG8g YnJlYWsgdGhvc2UgZG93biBmb3IgY29uc3VtcHRpb24gZWxzZXdoZXJlLiBJbiBwYXJ0aWN1bGFy LAorCSAqIGRtYS1tYXBwaW5nIHdpdGggc2NhdHRlcmxpc3QgZWxlbWVudHMgaGF2ZSBhbiBpbXBs aWNpdCBsaW1pdCBvZgorCSAqIFVJTlRfTUFYIG9uIGVhY2ggZWxlbWVudC4KKwkgKi8KKworCXNp emUgPSBTWl84RzsKKwltZW0gPSBtb2NrX3JlZ2lvbl9jcmVhdGUoaTkxNSwgMCwgc2l6ZSwgUEFH RV9TSVpFLCAwKTsKKwlpZiAoSVNfRVJSKG1lbSkpCisJCXJldHVybiBQVFJfRVJSKG1lbSk7CisK KwlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCBzaXplLCAwKTsKKwlpZiAo SVNfRVJSKG9iaikpIHsKKwkJZXJyID0gUFRSX0VSUihvYmopOworCQlnb3RvIG91dF9wdXQ7CisJ fQorCisJcmVzID0gdG9fdHRtX2J1ZGR5X3Jlc291cmNlKG9iai0+bW0ucmVzKTsKKwlibG9ja3Mg PSAmcmVzLT5ibG9ja3M7CisJbW0gPSByZXMtPm1tOworCXNpemUgPSAwOworCWxpc3RfZm9yX2Vh Y2hfZW50cnkoYmxvY2ssIGJsb2NrcywgbGluaykgeworCQlpZiAoaTkxNV9idWRkeV9ibG9ja19z aXplKG1tLCBibG9jaykgPiBzaXplKQorCQkJc2l6ZSA9IGk5MTVfYnVkZHlfYmxvY2tfc2l6ZSht bSwgYmxvY2spOworCX0KKwlpZiAoc2l6ZSA8IG1heF9zZWdtZW50KSB7CisJCXByX2VycigiJXM6 IEZhaWxlZCB0byBjcmVhdGUgYSBodWdlIGNvbnRpZ3VvdXMgYmxvY2sgWz4gJXVdLCBsYXJnZXN0 IGJsb2NrICVsbGRcbiIsCisJCSAgICAgICBfX2Z1bmNfXywgbWF4X3NlZ21lbnQsIHNpemUpOwor CQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dF9jbG9zZTsKKwl9CisKKwlmb3IgKHNnID0gb2Jq LT5tbS5wYWdlcy0+c2dsOyBzZzsgc2cgPSBzZ19uZXh0KHNnKSkgeworCQlpZiAoc2ctPmxlbmd0 aCA+IG1heF9zZWdtZW50KSB7CisJCQlwcl9lcnIoIiVzOiBDcmVhdGVkIGFuIG92ZXJzaXplZCBz Y2F0dGVybGlzdCBlbnRyeSwgJXUgPiAldVxuIiwKKwkJCSAgICAgICBfX2Z1bmNfXywgc2ctPmxl bmd0aCwgbWF4X3NlZ21lbnQpOworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0X2Nsb3Nl OworCQl9CisJfQorCitvdXRfY2xvc2U6CisJY2xvc2Vfb2JqZWN0cyhtZW0sICZvYmplY3RzKTsK K291dF9wdXQ6CisJaW50ZWxfbWVtb3J5X3JlZ2lvbl9wdXQobWVtKTsKKwlyZXR1cm4gZXJyOwor fQorCiBzdGF0aWMgaW50IGlndF9ncHVfd3JpdGVfZHcoc3RydWN0IGludGVsX2NvbnRleHQgKmNl LAogCQkJICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJICAgIHUzMiBkd29yZCwKQEAgLTEw NDYsNiArMTExMyw3IEBAIGludCBpbnRlbF9tZW1vcnlfcmVnaW9uX21vY2tfc2VsZnRlc3RzKHZv aWQpCiAJCVNVQlRFU1QoaWd0X21vY2tfZmlsbCksCiAJCVNVQlRFU1QoaWd0X21vY2tfY29udGln dW91cyksCiAJCVNVQlRFU1QoaWd0X21vY2tfc3BsaW50ZXJlZF9yZWdpb24pLAorCQlTVUJURVNU KGlndF9tb2NrX21heF9zZWdtZW50KSwKIAl9OwogCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u ICptZW07CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jCmluZGV4IDYxMjBkNDNmZTUwNC4uNjllMjE5 MTRlZGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19y ZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24u YwpAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCDCqSAyMDE5LTIwMjEgSW50ZWwgQ29ycG9y YXRpb24KICAqLwogCisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fcGxhY2VtZW50Lmg+CiAjaW5jbHVk ZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KIAogI2luY2x1ZGUgPGRybS90dG0vdHRtX3BsYWNlbWVu dC5oPgpAQCAtMjUsMTAgKzI2LDExIEBAIHN0YXRpYyBpbnQgbW9ja19yZWdpb25fZ2V0X3BhZ2Vz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJdW5zaWduZWQgaW50IGZsYWdz OwogCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CisJaW50IGVycjsKIAogCWZsYWdzID0gSTkxNV9B TExPQ19NSU5fUEFHRV9TSVpFOwogCWlmIChvYmotPmZsYWdzICYgSTkxNV9CT19BTExPQ19DT05U SUdVT1VTKQotCQlmbGFncyB8PSBJOTE1X0FMTE9DX0NPTlRJR1VPVVM7CisJCWZsYWdzIHw9IFRU TV9QTF9GTEFHX0NPTlRJR1VPVVM7CiAKIAlvYmotPm1tLnJlcyA9IGludGVsX3JlZ2lvbl90dG1f cmVzb3VyY2VfYWxsb2Mob2JqLT5tbS5yZWdpb24sCiAJCQkJCQkgICAgICBvYmotPmJhc2Uuc2l6 ZSwKQEAgLTM4LDEzICs0MCwxNyBAQCBzdGF0aWMgaW50IG1vY2tfcmVnaW9uX2dldF9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJcGFnZXMgPSBpbnRlbF9yZWdpb25f dHRtX3Jlc291cmNlX3RvX3N0KG9iai0+bW0ucmVnaW9uLCBvYmotPm1tLnJlcyk7CiAJaWYgKElT X0VSUihwYWdlcykpIHsKLQkJaW50ZWxfcmVnaW9uX3R0bV9yZXNvdXJjZV9mcmVlKG9iai0+bW0u cmVnaW9uLCBvYmotPm1tLnJlcyk7Ci0JCXJldHVybiBQVFJfRVJSKHBhZ2VzKTsKKwkJZXJyID0g UFRSX0VSUihwYWdlcyk7CisJCWdvdG8gZXJyX2ZyZWVfbW1fbm9kZTsKIAl9CiAKIAlfX2k5MTVf Z2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBwYWdlcywgaTkxNV9zZ19kbWFfc2l6ZXMocGFnZXMt PnNnbCkpOwogCiAJcmV0dXJuIDA7CisKK2Vycl9mcmVlX21tX25vZGU6CisJaW50ZWxfcmVnaW9u X3R0bV9yZXNvdXJjZV9mcmVlKG9iai0+bW0ucmVnaW9uLCBvYmotPm1tLnJlcyk7CisJcmV0dXJu IGVycjsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBt b2NrX3JlZ2lvbl9vYmpfb3BzID0gewotLSAKMi4yNi4zCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK