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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 E79A2C433ED for ; Wed, 12 May 2021 18:53: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 2523B611C9 for ; Wed, 12 May 2021 18:53:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2523B611C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.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 36EAA6ECB1; Wed, 12 May 2021 18:53:56 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73C0A6ECB1 for ; Wed, 12 May 2021 18:53:54 +0000 (UTC) IronPort-SDR: 2CrFNK5AByBKtaiT2KsH6vp2KRMdtdVkvmzkRsXG9pfzv9ywW9qIgmvb2UJXkBKWBvk7P7vRib Q8A6l5qm7j2w== X-IronPort-AV: E=McAfee;i="6200,9189,9982"; a="186913821" X-IronPort-AV: E=Sophos;i="5.82,295,1613462400"; d="scan'208";a="186913821" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2021 11:53:52 -0700 IronPort-SDR: oMn71KhF562XTLKAkb0J9E59WBR/h9BIRkV9Q4stf8gfqlfRraJCuUETjvIsbN3XnazQcxqrbw Mp8jZn22vg/Q== X-IronPort-AV: E=Sophos;i="5.82,295,1613462400"; d="scan'208";a="625537766" Received: from olovaszi-mobl1.ger.corp.intel.com (HELO localhost) ([10.252.33.202]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2021 11:53:48 -0700 From: Jani Nikula To: Ville Syrjala , intel-gfx@lists.freedesktop.org In-Reply-To: <20210421164849.12806-11-ville.syrjala@linux.intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20210421164849.12806-1-ville.syrjala@linux.intel.com> <20210421164849.12806-11-ville.syrjala@linux.intel.com> Date: Wed, 12 May 2021 21:53:45 +0300 Message-ID: <87im3nu6km.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 10/17] drm/i915: Clean up hsw/bdw/skl/kbl buf trans funcs 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" T24gV2VkLCAyMSBBcHIgMjAyMSwgVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+IHdyb3RlOgo+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4KPiBTcGxpdCB0aGUgaHN3L2Jkdy9za2wva2JsIGdldF9idWZfdHJh bnMoKSBmdW5jdGlvbnMgaW50bwo+IGNsZWFuIHBsYXRmb3JtIHNwZWNpZmljIHZhcmlhbnRzLgoK T25lIG9mIHRoZSBtb3N0IG9ibm94aW91cyBwYXRjaGVzIHRvIHJldmlldyBsYXRlbHksIGJ1dCBp dCB3YXMgd29ydGggaXQuCgpSZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGlu dGVsLmNvbT4KCj4KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k ZGlfYnVmX3RyYW5zLmMgICAgfCAzMDggKysrKysrKy0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFu Z2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgMTkwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmMKPiBpbmRleCAz N2E5YzNiMmMwM2MuLjFkNzg2NDBjNDM5ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5jCj4gQEAgLTEwMTIsMTAyICsxMDEy LDM0IEBAIGludGVsX2dldF9idWZfdHJhbnMoY29uc3Qgc3RydWN0IGludGVsX2RkaV9idWZfdHJh bnMgKmRkaV90cmFuc2xhdGlvbnMsIGludCAqbnVtCj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAqCj4gLWJkd19nZXRfYnVmX3RyYW5zX2VkcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gK2hzd19nZXRfYnVm X3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCSAgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJICBpbnQgKm5fZW50cmllcykKPiAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVy LT5iYXNlLmRldik7Cj4gLQo+IC0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsK PiAtCQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmYmR3X2RkaV90cmFuc2xhdGlvbnNfZWRw LAo+IC0JCQkJCSAgIG5fZW50cmllcyk7Cj4gLQl9IGVsc2Ugewo+IC0JCXJldHVybiBpbnRlbF9n ZXRfYnVmX3RyYW5zKCZiZHdfZGRpX3RyYW5zbGF0aW9uc19kcCwKPiAtCQkJCQkgICBuX2VudHJp ZXMpOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RkaV9idWZf dHJhbnMgKgo+IC1za2xfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwgaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+IC0KPiAtCWlmIChJU19TS0xf VUxYKGRldl9wcml2KSkgewo+IC0JCXJldHVybiBpbnRlbF9nZXRfYnVmX3RyYW5zKCZza2xfeV9k ZGlfdHJhbnNsYXRpb25zX2RwLAo+IC0JCQkJCSAgIG5fZW50cmllcyk7Cj4gLQl9IGVsc2UgaWYg KElTX1NLTF9VTFQoZGV2X3ByaXYpKSB7Cj4gLQkJcmV0dXJuIGludGVsX2dldF9idWZfdHJhbnMo JnNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHAsCj4gLQkJCQkJICAgbl9lbnRyaWVzKTsKPiAtCX0g ZWxzZSB7Cj4gLQkJcmV0dXJuIGludGVsX2dldF9idWZfdHJhbnMoJnNrbF9kZGlfdHJhbnNsYXRp b25zX2RwLAo+IC0JCQkJCSAgIG5fZW50cmllcyk7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAqCj4gLWtibF9nZXRfYnVmX3RyYW5zX2Rw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKPiAtewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gLQo+IC0JaWYgKElTX0tCTF9VTFgoZGV2X3ByaXYpIHx8Cj4gLQkgICAgSVNfQ0ZM X1VMWChkZXZfcHJpdikgfHwKPiAtCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgewo+IC0JCXJl dHVybiBpbnRlbF9nZXRfYnVmX3RyYW5zKCZrYmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwLAo+IC0J CQkJCSAgIG5fZW50cmllcyk7Cj4gLQl9IGVsc2UgaWYgKElTX0tCTF9VTFQoZGV2X3ByaXYpIHx8 Cj4gLQkJICAgSVNfQ0ZMX1VMVChkZXZfcHJpdikgfHwKPiAtCQkgICBJU19DTUxfVUxUKGRldl9w cml2KSkgewo+IC0JCXJldHVybiBpbnRlbF9nZXRfYnVmX3RyYW5zKCZrYmxfdV9kZGlfdHJhbnNs YXRpb25zX2RwLAo+IC0JCQkJCSAgIG5fZW50cmllcyk7Cj4gLQl9IGVsc2Ugewo+IC0JCXJldHVy biBpbnRlbF9nZXRfYnVmX3RyYW5zKCZrYmxfZGRpX3RyYW5zbGF0aW9uc19kcCwKPiAtCQkJCQkg ICBuX2VudHJpZXMpOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X2RkaV9idWZfdHJhbnMgKgo+IC1za2xfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlp ZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+IC0JCWlmIChJU19TS0xfVUxYKGRl dl9wcml2KSB8fAo+IC0JCSAgICBJU19LQkxfVUxYKGRldl9wcml2KSB8fAo+IC0JCSAgICBJU19D RkxfVUxYKGRldl9wcml2KSB8fAo+IC0JCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgewo+IC0J CQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHAs Cj4gLQkJCQkJCSAgIG5fZW50cmllcyk7Cj4gLQkJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldl9w cml2KSB8fAo+IC0JCQkgICBJU19LQkxfVUxUKGRldl9wcml2KSB8fAo+IC0JCQkgICBJU19DRkxf VUxUKGRldl9wcml2KSB8fAo+IC0JCQkgICBJU19DTUxfVUxUKGRldl9wcml2KSkgewo+IC0JCQly ZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19lZHAsCj4g LQkJCQkJCSAgIG5fZW50cmllcyk7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJcmV0dXJuIGludGVsX2dl dF9idWZfdHJhbnMoJnNrbF9kZGlfdHJhbnNsYXRpb25zX2VkcCwKPiAtCQkJCQkJICAgbl9lbnRy aWVzKTsKPiAtCQl9Cj4gLQl9Cj4gLQo+IC0JaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSB8fAo+ IC0JICAgIElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpIHx8Cj4gLQkgICAgSVNfQ09NRVRMQUtFKGRl dl9wcml2KSkKPiAtCQlyZXR1cm4ga2JsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRy aWVzKTsKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9BTkFMT0cpKQo+ICsJCXJldHVybiBpbnRlbF9nZXRfYnVmX3RyYW5zKCZoc3dfZGRpX3RyYW5z bGF0aW9uc19mZGksIG5fZW50cmllcyk7Cj4gKwllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKPiArCQlyZXR1cm4gaW50ZWxfZ2V0X2J1 Zl90cmFucygmaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSwgbl9lbnRyaWVzKTsKPiAgCWVsc2UK PiAtCQlyZXR1cm4gc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKPiAr CQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmaHN3X2RkaV90cmFuc2xhdGlvbnNfZHAsIG5f ZW50cmllcyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGRpX2J1Zl90 cmFucyAqCj4gLXNrbF9nZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpbnQgKm5fZW50cmllcykKPiArYmR3X2dldF9idWZfdHJhbnMoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiArCQkgIGludCAqbl9lbnRyaWVzKQo+ICB7Cj4gLQlpZiAoSVNfU0tM X1VMWChkZXZfcHJpdikgfHwKPiAtCSAgICBJU19LQkxfVUxYKGRldl9wcml2KSB8fAo+IC0JICAg IElTX0NGTF9VTFgoZGV2X3ByaXYpIHx8Cj4gLQkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsK PiAtCQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19o ZG1pLAo+IC0JCQkJCSAgIG5fZW50cmllcyk7Cj4gLQl9IGVsc2Ugewo+IC0JCXJldHVybiBpbnRl bF9nZXRfYnVmX3RyYW5zKCZza2xfZGRpX3RyYW5zbGF0aW9uc19oZG1pLAo+IC0JCQkJCSAgIG5f ZW50cmllcyk7Cj4gLQl9Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNy dGNfc3RhdGUsIElOVEVMX09VVFBVVF9BTkFMT0cpKQo+ICsJCXJldHVybiBpbnRlbF9nZXRfYnVm X3RyYW5zKCZiZHdfZGRpX3RyYW5zbGF0aW9uc19mZGksIG5fZW50cmllcyk7Cj4gKwllbHNlIGlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKPiAr CQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSwg bl9lbnRyaWVzKTsKPiArCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwg SU5URUxfT1VUUFVUX0VEUCkgJiYKPiArCQkgaTkxNS0+dmJ0LmVkcC5sb3dfdnN3aW5nKQo+ICsJ CXJldHVybiBpbnRlbF9nZXRfYnVmX3RyYW5zKCZiZHdfZGRpX3RyYW5zbGF0aW9uc19lZHAsIG5f ZW50cmllcyk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIGludGVsX2dldF9idWZfdHJhbnMoJmJkd19k ZGlfdHJhbnNsYXRpb25zX2RwLCBuX2VudHJpZXMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHNr bF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW51bSBwb3J0IHBvcnQsIGludCBuX2VudHJpZXMpCj4g QEAgLTExMjAsMTMxICsxMDUyLDEwOSBAQCBzdGF0aWMgaW50IHNrbF9idWZfdHJhbnNfbnVtX2Vu dHJpZXMoZW51bSBwb3J0IHBvcnQsIGludCBuX2VudHJpZXMpCj4gIH0KPiAgCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAqCj4gLWhzd19nZXRfYnVmX3RyYW5zX2Rw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKPiAtewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gLQo+IC0JaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSB8fAo+IC0JICAgIElTX0NP RkZFRUxBS0UoZGV2X3ByaXYpIHx8Cj4gLQkgICAgSVNfQ09NRVRMQUtFKGRldl9wcml2KSkgewo+ IC0JCWNvbnN0IHN0cnVjdCBpbnRlbF9kZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0K PiAtCQkJa2JsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKPiAtCQkqbl9l bnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRy aWVzKTsKPiAtCQlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKPiAtCX0gZWxzZSBpZiAoSVNfU0tZ TEFLRShkZXZfcHJpdikpIHsKPiAtCQljb25zdCBzdHJ1Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAq ZGRpX3RyYW5zbGF0aW9ucyA9Cj4gLQkJCXNrbF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5f ZW50cmllcyk7Cj4gLQkJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW5j b2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Cj4gLQkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7Cj4g LQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAtCQlyZXR1cm4gaW50ZWxf Z2V0X2J1Zl90cmFucygmYmR3X2RkaV90cmFuc2xhdGlvbnNfZHAsCj4gLQkJCQkJICAgbl9lbnRy aWVzKTsKPiAtCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKPiAtCQlyZXR1cm4g aW50ZWxfZ2V0X2J1Zl90cmFucygmaHN3X2RkaV90cmFuc2xhdGlvbnNfZHAsCj4gLQkJCQkJICAg bl9lbnRyaWVzKTsKPiAtCX0KPiAtCj4gLQkqbl9lbnRyaWVzID0gMDsKPiAtCXJldHVybiBOVUxM Owo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RkaV9idWZfdHJhbnMgKgo+ IC1oc3dfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGlu dCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlpZiAoRElTUExBWV9WRVIoZGV2 X3ByaXYpID09IDkgJiYgIUlTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gLQkJY29uc3Qgc3RydWN0 IGludGVsX2RkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQo+IC0JCQlza2xfZ2V0X2J1 Zl90cmFuc19lZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKPiAtCQkqbl9lbnRyaWVzID0gc2tsX2J1 Zl90cmFuc19udW1fZW50cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKPiAtCQlyZXR1 cm4gZGRpX3RyYW5zbGF0aW9uczsKPiAtCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2 KSkgewo+IC0JCXJldHVybiBiZHdfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2Rlciwgbl9lbnRyaWVz KTsKPiAtCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKPiAtCQlyZXR1cm4gaW50 ZWxfZ2V0X2J1Zl90cmFucygmaHN3X2RkaV90cmFuc2xhdGlvbnNfZHAsCj4gLQkJCQkJICAgbl9l bnRyaWVzKTsKPiAtCX0KPiAtCj4gLQkqbl9lbnRyaWVzID0gMDsKPiAtCXJldHVybiBOVUxMOwo+ IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RkaV9idWZfdHJhbnMgKgo+IC1o c3dfZ2V0X2J1Zl90cmFuc19mZGkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gK19z a2xfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucywK PiAgCQkgICAgICBpbnQgKm5fZW50cmllcykKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwlkZGlfdHJhbnNs YXRpb25zID0gaW50ZWxfZ2V0X2J1Zl90cmFucyhkZGlfdHJhbnNsYXRpb25zLCBuX2VudHJpZXMp Owo+ICsJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW5jb2Rlci0+cG9y dCwgKm5fZW50cmllcyk7Cj4gKwlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKPiArfQo+ICAKPiAt CWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gLQkJcmV0dXJuIGludGVsX2dldF9idWZf dHJhbnMoJmJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaSwKPiAtCQkJCQkgICBuX2VudHJpZXMpOwo+ IC0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewo+IC0JCXJldHVybiBpbnRlbF9n ZXRfYnVmX3RyYW5zKCZoc3dfZGRpX3RyYW5zbGF0aW9uc19mZGksCj4gLQkJCQkJICAgbl9lbnRy aWVzKTsKPiAtCX0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZGlfYnVmX3RyYW5zICoK PiArc2tsX3lfZ2V0X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAr CQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJICAg IGludCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAKPiAtCSpuX2VudHJpZXMgPSAwOwo+IC0J cmV0dXJuIE5VTEw7Cj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfSERNSSkpCj4gKwkJcmV0dXJuIGludGVsX2dldF9idWZfdHJhbnMoJnNrbF95X2Rk aV90cmFuc2xhdGlvbnNfaGRtaSwgbl9lbnRyaWVzKTsKPiArCWVsc2UgaWYgKGludGVsX2NydGNf aGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkgJiYKPiArCQkgaTkxNS0+dmJ0 LmVkcC5sb3dfdnN3aW5nKQo+ICsJCXJldHVybiBfc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rl ciwgJnNrbF95X2RkaV90cmFuc2xhdGlvbnNfZWRwLCBuX2VudHJpZXMpOwo+ICsJZWxzZQo+ICsJ CXJldHVybiBfc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2RlciwgJnNrbF95X2RkaV90cmFuc2xh dGlvbnNfZHAsIG5fZW50cmllcyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZGRpX2J1Zl90cmFucyAqCj4gLWhzd19nZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gLQkJICAgICAgIGludCAqbl9lbnRyaWVzKQo+ICtza2xfdV9n ZXRfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCSAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkgICAgaW50ICpuX2Vu dHJpZXMpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCj4gLQlpZiAoRElTUExBWV9WRVIoZGV2 X3ByaXYpID09IDkgJiYgIUlTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gLQkJcmV0dXJuIHNrbF9n ZXRfYnVmX3RyYW5zX2hkbWkoZGV2X3ByaXYsIG5fZW50cmllcyk7Cj4gLQl9IGVsc2UgaWYgKElT X0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAtCQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygm YmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSwKPiAtCQkJCQkgICBuX2VudHJpZXMpOwo+IC0JfSBl bHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewo+IC0JCXJldHVybiBpbnRlbF9nZXRfYnVm X3RyYW5zKCZoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pLAo+IC0JCQkJCSAgIG5fZW50cmllcyk7 Cj4gLQl9Cj4gLQo+IC0JKm5fZW50cmllcyA9IDA7Cj4gLQlyZXR1cm4gTlVMTDsKPiArCWlmIChp bnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKPiArCQly ZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaSwgbl9l bnRyaWVzKTsKPiArCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5U RUxfT1VUUFVUX0VEUCkgJiYKPiArCQkgaTkxNS0+dmJ0LmVkcC5sb3dfdnN3aW5nKQo+ICsJCXJl dHVybiBfc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2RlciwgJnNrbF91X2RkaV90cmFuc2xhdGlv bnNfZWRwLCBuX2VudHJpZXMpOwo+ICsJZWxzZQo+ICsJCXJldHVybiBfc2tsX2dldF9idWZfdHJh bnNfZHAoZW5jb2RlciwgJnNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHAsIG5fZW50cmllcyk7Cj4g IH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAqCj4gLWhz d19nZXRfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICtza2xfZ2V0 X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCSAgaW50ICpuX2VudHJpZXMp Cj4gIHsKPiAtCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9BTkFMT0cpKQo+IC0JCXJldHVybiBoc3dfZ2V0X2J1Zl90cmFuc19mZGkoZW5jb2Rlciwgbl9l bnRyaWVzKTsKPiAtCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5U RUxfT1VUUFVUX0hETUkpKQo+IC0JCXJldHVybiBoc3dfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29k ZXIsIG5fZW50cmllcyk7Cj4gLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3Rh dGUsIElOVEVMX09VVFBVVF9FRFApKQo+IC0JCXJldHVybiBoc3dfZ2V0X2J1Zl90cmFuc19lZHAo ZW5jb2Rlciwgbl9lbnRyaWVzKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwo+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQo+ICsJCXJldHVybiBpbnRlbF9nZXRf YnVmX3RyYW5zKCZza2xfZGRpX3RyYW5zbGF0aW9uc19oZG1pLCBuX2VudHJpZXMpOwo+ICsJZWxz ZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSAm Jgo+ICsJCSBpOTE1LT52YnQuZWRwLmxvd192c3dpbmcpCj4gKwkJcmV0dXJuIF9za2xfZ2V0X2J1 Zl90cmFuc19kcChlbmNvZGVyLCAmc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwLCBuX2VudHJpZXMp Owo+ICAJZWxzZQo+IC0JCXJldHVybiBoc3dfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2Vu dHJpZXMpOwo+ICsJCXJldHVybiBfc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2RlciwgJnNrbF9k ZGlfdHJhbnNsYXRpb25zX2RwLCBuX2VudHJpZXMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IGludGVsX2RkaV9idWZfdHJhbnMgKgo+IC1ieHRfZ2V0X2J1Zl90cmFuc19kcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gK2tibF95X2dldF9i dWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCSAgICBpbnQgKm5fZW50cmll cykKPiAgewo+IC0JcmV0dXJuIGludGVsX2dldF9idWZfdHJhbnMoJmJ4dF9kZGlfdHJhbnNsYXRp b25zX2RwLCBuX2VudHJpZXMpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiArCj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlw ZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCj4gKwkJcmV0dXJuIGludGVsX2dldF9i dWZfdHJhbnMoJnNrbF95X2RkaV90cmFuc2xhdGlvbnNfaGRtaSwgbl9lbnRyaWVzKTsKPiArCWVs c2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkg JiYKPiArCQkgaTkxNS0+dmJ0LmVkcC5sb3dfdnN3aW5nKQo+ICsJCXJldHVybiBfc2tsX2dldF9i dWZfdHJhbnNfZHAoZW5jb2RlciwgJnNrbF95X2RkaV90cmFuc2xhdGlvbnNfZWRwLCBuX2VudHJp ZXMpOwo+ICsJZWxzZQo+ICsJCXJldHVybiBfc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwg JmtibF95X2RkaV90cmFuc2xhdGlvbnNfZHAsIG5fZW50cmllcyk7Cj4gIH0KPiAgCj4gIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAqCj4gLWJ4dF9nZXRfYnVmX3RyYW5z X2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gK2ti bF91X2dldF9idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCSAgICBpbnQg Km5fZW50cmllcykKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQo+IC0JaWYgKGRldl9wcml2LT52YnQuZWRw Lmxvd192c3dpbmcpIHsKPiAtCQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmYnh0X2RkaV90 cmFuc2xhdGlvbnNfZWRwLAo+IC0JCQkJCSAgIG5fZW50cmllcyk7Cj4gLQl9Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAK PiAtCXJldHVybiBieHRfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICsJ aWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQo+ ICsJCXJldHVybiBpbnRlbF9nZXRfYnVmX3RyYW5zKCZza2xfZGRpX3RyYW5zbGF0aW9uc19oZG1p LCBuX2VudHJpZXMpOwo+ICsJZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRl LCBJTlRFTF9PVVRQVVRfRURQKSAmJgo+ICsJCSBpOTE1LT52YnQuZWRwLmxvd192c3dpbmcpCj4g KwkJcmV0dXJuIF9za2xfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAmc2tsX3VfZGRpX3RyYW5z bGF0aW9uc19lZHAsIG5fZW50cmllcyk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIF9za2xfZ2V0X2J1 Zl90cmFuc19kcChlbmNvZGVyLCAma2JsX3VfZGRpX3RyYW5zbGF0aW9uc19kcCwgbl9lbnRyaWVz KTsKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZGlfYnVmX3RyYW5zICoK PiAtYnh0X2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlciwg aW50ICpuX2VudHJpZXMpCj4gK2tibF9nZXRfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICsJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gKwkJICBpbnQgKm5fZW50cmllcykKPiAgewo+IC0JcmV0dXJuIGludGVsX2dldF9idWZf dHJhbnMoJmJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWksIG5fZW50cmllcyk7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsK PiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1J KSkKPiArCQlyZXR1cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmc2tsX2RkaV90cmFuc2xhdGlvbnNf aGRtaSwgbl9lbnRyaWVzKTsKPiArCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19z dGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkgJiYKPiArCQkgaTkxNS0+dmJ0LmVkcC5sb3dfdnN3aW5n KQo+ICsJCXJldHVybiBfc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2RlciwgJnNrbF9kZGlfdHJh bnNsYXRpb25zX2VkcCwgbl9lbnRyaWVzKTsKPiArCWVsc2UKPiArCQlyZXR1cm4gX3NrbF9nZXRf YnVmX3RyYW5zX2RwKGVuY29kZXIsICZrYmxfZGRpX3RyYW5zbGF0aW9uc19kcCwgbl9lbnRyaWVz KTsKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZGlfYnVmX3RyYW5zICoK PiBAQCAtMTI1MiwxMSArMTE2MiwxNSBAQCBieHRfZ2V0X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJCSAgaW50ICpuX2VudHJpZXMpCj4gIHsKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwo+ICAJaWYg KGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQo+IC0J CXJldHVybiBieHRfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gLQlp ZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKPiAt CQlyZXR1cm4gYnh0X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gLQly ZXR1cm4gYnh0X2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKPiArCQlyZXR1 cm4gaW50ZWxfZ2V0X2J1Zl90cmFucygmYnh0X2RkaV90cmFuc2xhdGlvbnNfaGRtaSwgbl9lbnRy aWVzKTsKPiArCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxf T1VUUFVUX0VEUCkgJiYKPiArCQkgaTkxNS0+dmJ0LmVkcC5sb3dfdnN3aW5nKQo+ICsJCXJldHVy biBpbnRlbF9nZXRfYnVmX3RyYW5zKCZieHRfZGRpX3RyYW5zbGF0aW9uc19lZHAsIG5fZW50cmll cyk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIGludGVsX2dldF9idWZfdHJhbnMoJmJ4dF9kZGlfdHJh bnNsYXRpb25zX2RwLCBuX2VudHJpZXMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IGludGVsX2RkaV9idWZfdHJhbnMgKgo+IEBAIC0xNjc3LDYgKzE1OTEsMjAgQEAgdm9pZCBpbnRl bF9kZGlfYnVmX3RyYW5zX2luaXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJ ZW5jb2Rlci0+Z2V0X2J1Zl90cmFucyA9IGNubF9nZXRfYnVmX3RyYW5zOwo+ICAJfSBlbHNlIGlm IChJU19HRU1JTklMQUtFKGk5MTUpIHx8IElTX0JST1hUT04oaTkxNSkpIHsKPiAgCQllbmNvZGVy LT5nZXRfYnVmX3RyYW5zID0gYnh0X2dldF9idWZfdHJhbnM7Cj4gKwl9IGVsc2UgaWYgKElTX0NN TF9VTFgoaTkxNSkgfHwgSVNfQ0ZMX1VMWChpOTE1KSB8fCBJU19LQkxfVUxYKGk5MTUpKSB7Cj4g KwkJZW5jb2Rlci0+Z2V0X2J1Zl90cmFucyA9IGtibF95X2dldF9idWZfdHJhbnM7Cj4gKwl9IGVs c2UgaWYgKElTX0NNTF9VTFQoaTkxNSkgfHwgSVNfQ0ZMX1VMVChpOTE1KSB8fCBJU19LQkxfVUxU KGk5MTUpKSB7Cj4gKwkJZW5jb2Rlci0+Z2V0X2J1Zl90cmFucyA9IGtibF91X2dldF9idWZfdHJh bnM7Cj4gKwl9IGVsc2UgaWYgKElTX0NPTUVUTEFLRShpOTE1KSB8fCBJU19DT0ZGRUVMQUtFKGk5 MTUpIHx8IElTX0tBQllMQUtFKGk5MTUpKSB7Cj4gKwkJZW5jb2Rlci0+Z2V0X2J1Zl90cmFucyA9 IGtibF9nZXRfYnVmX3RyYW5zOwo+ICsJfSBlbHNlIGlmIChJU19TS0xfVUxYKGk5MTUpKSB7Cj4g KwkJZW5jb2Rlci0+Z2V0X2J1Zl90cmFucyA9IHNrbF95X2dldF9idWZfdHJhbnM7Cj4gKwl9IGVs c2UgaWYgKElTX1NLTF9VTFQoaTkxNSkpIHsKPiArCQllbmNvZGVyLT5nZXRfYnVmX3RyYW5zID0g c2tsX3VfZ2V0X2J1Zl90cmFuczsKPiArCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShpOTE1KSkgewo+ ICsJCWVuY29kZXItPmdldF9idWZfdHJhbnMgPSBza2xfZ2V0X2J1Zl90cmFuczsKPiArCX0gZWxz ZSBpZiAoSVNfQlJPQURXRUxMKGk5MTUpKSB7Cj4gKwkJZW5jb2Rlci0+Z2V0X2J1Zl90cmFucyA9 IGJkd19nZXRfYnVmX3RyYW5zOwo+ICAJfSBlbHNlIHsKPiAgCQllbmNvZGVyLT5nZXRfYnVmX3Ry YW5zID0gaHN3X2dldF9idWZfdHJhbnM7Cj4gIAl9CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9w ZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK