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,URIBL_BLOCKED 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 51DFFC12002 for ; Fri, 16 Jul 2021 21:13:27 +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 037EC6128A for ; Fri, 16 Jul 2021 21:13:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 037EC6128A 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 829BE6E8B5; Fri, 16 Jul 2021 21:13:26 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id CBDFF6E8B5 for ; Fri, 16 Jul 2021 21:13:24 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10047"; a="197979884" X-IronPort-AV: E=Sophos;i="5.84,246,1620716400"; d="scan'208";a="197979884" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jul 2021 14:13:24 -0700 X-IronPort-AV: E=Sophos;i="5.84,246,1620716400"; d="scan'208";a="491233295" Received: from hnilles-mobl.amr.corp.intel.com (HELO msatwood-mobl) ([10.209.29.217]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jul 2021 14:13:23 -0700 Date: Fri, 16 Jul 2021 14:13:21 -0700 From: Matt Atwood To: Matt Roper ;, intel-gfx@lists.freedesktop.org Message-ID: <20210716211321.GC19458@msatwood-mobl> References: <20210714031540.3539704-1-matthew.d.roper@intel.com> <20210714031540.3539704-43-matthew.d.roper@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210714031540.3539704-43-matthew.d.roper@intel.com> Subject: Re: [Intel-gfx] [PATCH v2 42/50] drm/i915/dg2: Add MPLLB programming for HDMI 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" T24gVHVlLCBKdWwgMTMsIDIwMjEgYXQgMDg6MTU6MzJQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBBdCB0aGUgbW9tZW50IHdlIGRvbid0IGhhdmUgYSBwcm9wZXIgYWxnb3JpdGhtIHRoYXQg Y2FuIGJlIHVzZWQgdG8KPiBjYWxjdWxhdGUgUEhZIHNldHRpbmdzIGZvciBhcmJpdHJhcnkgSERN SSBsaW5rIHJhdGVzLiAgVGhlIFBIWSB0YWJsZXMKPiBoZXJlIHNob3VsZCBzdXBwb3J0IHRoZSBy ZWd1bGFyIG1vZGVzIG9mIHJlYWwtd29ybGQgSERNSSBtb25pdG9ycy4KPiAKPiBCc3BlYzogNTQw MzIKPiBDYzogTWF0dCBBdHdvb2QgPG1hdHRoZXcucy5hdHdvb2RAaW50ZWwuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gU2lnbmVk LW9mZi1ieTogVmFuZGl0YSBLdWxrYXJuaSA8dmFuZGl0YS5rdWxrYXJuaUBpbnRlbC5jb20+ClJl dmlld2VkLWJ5OiBNYXR0IEF0d29vZCA8bWF0dGhldy5zLmF0d29vZEBpbnRlbC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8ICAxNCAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgNDcg KysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jICAgICB8ICAx MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc25wc19waHkuYyB8IDI4 NiArKysrKysrKysrKysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9zbnBzX3BoeS5oIHwgICA3ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAg ICAgICAgICAgICAgIHwgICAzICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCAzNTUgaW5zZXJ0aW9ucygr KSwgMTMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RkaS5jCj4gaW5kZXggMjZhM2FhNzNmY2M0Li45MjlhOTVkZGIzMTYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiBAQCAtNTEsNiArNTEsNyBAQAo+ICAj aW5jbHVkZSAiaW50ZWxfcGFuZWwuaCIKPiAgI2luY2x1ZGUgImludGVsX3Bwcy5oIgo+ICAjaW5j bHVkZSAiaW50ZWxfcHNyLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9zbnBzX3BoeS5oIgo+ICAjaW5j bHVkZSAiaW50ZWxfc3ByaXRlLmgiCj4gICNpbmNsdWRlICJpbnRlbF90Yy5oIgo+ICAjaW5jbHVk ZSAiaW50ZWxfdmRzYy5oIgo+IEBAIC0zNzQ1LDYgKzM3NDYsMTUgQEAgdm9pZCBpbnRlbF9kZGlf Z2V0X2Nsb2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJCQkgICAgICZj cnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgZGcyX2Rk aV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCWludGVsX21wbGxiX3JlYWRv dXRfaHdfc3RhdGUoZW5jb2RlciwgJmNydGNfc3RhdGUtPm1wbGxiX3N0YXRlKTsKPiArCWNydGNf c3RhdGUtPnBvcnRfY2xvY2sgPSBpbnRlbF9tcGxsYl9jYWxjX3BvcnRfY2xvY2soZW5jb2Rlciwg JmNydGNfc3RhdGUtPm1wbGxiX3N0YXRlKTsKPiArCj4gKwlpbnRlbF9kZGlfZ2V0X2NvbmZpZyhl bmNvZGVyLCBjcnRjX3N0YXRlKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgYWRsc19kZGlfZ2V0 X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gQEAgLTQ2MDYsNyArNDYxNiw5IEBAIHZv aWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVt IHBvcnQgcG9ydCkKPiAgCWVuY29kZXItPmNsb25lYWJsZSA9IDA7Cj4gIAllbmNvZGVyLT5waXBl X21hc2sgPSB+MDsKPiAgCj4gLQlpZiAoSVNfQUxERVJMQUtFX1MoZGV2X3ByaXYpKSB7Cj4gKwlp ZiAoSVNfREcyKGRldl9wcml2KSkgewo+ICsJCWVuY29kZXItPmdldF9jb25maWcgPSBkZzJfZGRp X2dldF9jb25maWc7Cj4gKwl9IGVsc2UgaWYgKElTX0FMREVSTEFLRV9TKGRldl9wcml2KSkgewo+ ICAJCWVuY29kZXItPmVuYWJsZV9jbG9jayA9IGFkbHNfZGRpX2VuYWJsZV9jbG9jazsKPiAgCQll bmNvZGVyLT5kaXNhYmxlX2Nsb2NrID0gYWRsc19kZGlfZGlzYWJsZV9jbG9jazsKPiAgCQllbmNv ZGVyLT5pc19jbG9ja19lbmFibGVkID0gYWRsc19kZGlfaXNfY2xvY2tfZW5hYmxlZDsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDIzNTdi NzlkNjU3Ny4uNmY1MzJiNjk1YjI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtOTExMyw2ICs5MTEzLDUyIEBAIHZlcmlmeV9zaGFy ZWRfZHBsbF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCX0KPiAgfQo+ICAKPiAr c3RhdGljIHZvaWQKPiArdmVyaWZ5X21wbGxiX3N0YXRlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAo+ICsJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0 ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHN0YXRl LT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUgbXBsbGJfaHdfc3RhdGUg PSB7IDAgfTsKPiArCXN0cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSAqbXBsbGJfc3dfc3RhdGUgPSAm bmV3X2NydGNfc3RhdGUtPm1wbGxiX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICsJc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gKwo+ICsJaWYgKCFJU19ERzIoaTkxNSkpCj4gKwkJcmV0 dXJuOwo+ICsKPiArCWlmICghbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiArCQlyZXR1cm47 Cj4gKwo+ICsJZW5jb2RlciA9IGludGVsX2dldF9jcnRjX25ld19lbmNvZGVyKHN0YXRlLCBuZXdf Y3J0Y19zdGF0ZSk7Cj4gKwlpbnRlbF9tcGxsYl9yZWFkb3V0X2h3X3N0YXRlKGVuY29kZXIsICZt cGxsYl9od19zdGF0ZSk7Cj4gKwo+ICsjZGVmaW5lIE1QTExCX0NIRUNLKG5hbWUpIGRvIHsgXAo+ ICsJaWYgKG1wbGxiX3N3X3N0YXRlLT5uYW1lICE9IG1wbGxiX2h3X3N0YXRlLm5hbWUpIHsgXAo+ ICsJCXBpcGVfY29uZmlnX21pc21hdGNoKGZhbHNlLCBjcnRjLCAiTVBMTEI6IiBfX3N0cmluZ2lm eShuYW1lKSwgXAo+ICsJCQkJICAgICAiKGV4cGVjdGVkIDB4JTA4eCwgZm91bmQgMHglMDh4KSIs IFwKPiArCQkJCSAgICAgbXBsbGJfc3dfc3RhdGUtPm5hbWUsIFwKPiArCQkJCSAgICAgbXBsbGJf aHdfc3RhdGUubmFtZSk7IFwKPiArCX0gXAo+ICt9IHdoaWxlICgwKQo+ICsKPiArCU1QTExCX0NI RUNLKG1wbGxiX2NwKTsKPiArCU1QTExCX0NIRUNLKG1wbGxiX2Rpdik7Cj4gKwlNUExMQl9DSEVD SyhtcGxsYl9kaXYyKTsKPiArCU1QTExCX0NIRUNLKG1wbGxiX2ZyYWNuMSk7Cj4gKwlNUExMQl9D SEVDSyhtcGxsYl9mcmFjbjIpOwo+ICsJTVBMTEJfQ0hFQ0sobXBsbGJfc3NjZW4pOwo+ICsJTVBM TEJfQ0hFQ0sobXBsbGJfc3Njc3RlcCk7Cj4gKwo+ICsJLyoKPiArCSAqIHJlZl9jb250cm9sIGlz IGhhbmRsZWQgYnkgdGhlIGhhcmR3YXJlL2ZpcmVtd2FyZSBhbmQgbmV2ZXIKPiArCSAqIHByb2dy YW1tZWQgYnkgdGhlIHNvZnR3YXJlLCBidXQgdGhlIHByb3BlciB2YWx1ZXMgYXJlIHN1cHBsaWVk Cj4gKwkgKiBpbiB0aGUgYnNwZWMgZm9yIHZlcmlmaWNhdGlvbiBwdXJwb3Nlcy4KPiArCSAqLwo+ ICsJTVBMTEJfQ0hFQ0socmVmX2NvbnRyb2wpOwo+ICsKPiArI3VuZGVmIE1QTExCX0NIRUNLCj4g K30KPiArCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX21vZGVzZXRfdmVyaWZ5X2NydGMoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gIAkJCSAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gQEAgLTkxMjYsNiArOTE3Miw3IEBAIGludGVsX21vZGVzZXRfdmVyaWZ5X2NydGMoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gIAl2ZXJpZnlfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBj cnRjKTsKPiAgCXZlcmlmeV9jcnRjX3N0YXRlKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0 Y19zdGF0ZSk7Cj4gIAl2ZXJpZnlfc2hhcmVkX2RwbGxfc3RhdGUoY3J0Yywgb2xkX2NydGNfc3Rh dGUsIG5ld19jcnRjX3N0YXRlKTsKPiArCXZlcmlmeV9tcGxsYl9zdGF0ZShzdGF0ZSwgbmV3X2Ny dGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gaW5kZXggODUyYWYyYjIzNTQwLi5iMDQ2ODViYjY0Mzkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwo+IEBAIC01 MSw2ICs1MSw3IEBACj4gICNpbmNsdWRlICJpbnRlbF9oZG1pLmgiCj4gICNpbmNsdWRlICJpbnRl bF9sc3Bjb24uaCIKPiAgI2luY2x1ZGUgImludGVsX3BhbmVsLmgiCj4gKyNpbmNsdWRlICJpbnRl bF9zbnBzX3BoeS5oIgo+ICAKPiAgc3RhdGljIHN0cnVjdCBkcm1fZGV2aWNlICppbnRlbF9oZG1p X3RvX2RldihzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSkKPiAgewo+IEBAIC0xODUwLDYg KzE4NTEsMTYgQEAgaGRtaV9wb3J0X2Nsb2NrX3ZhbGlkKHN0cnVjdCBpbnRlbF9oZG1pICpoZG1p LAo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIGNsb2NrID4gMjE2MDAwICYmIGNs b2NrIDwgMjQwMDAwKQo+ICAJCXJldHVybiBNT0RFX0NMT0NLX1JBTkdFOwo+ICAKPiArCS8qCj4g KwkgKiBTTlBTIFBIWXMnIE1QTExCIHRhYmxlLWJhc2VkIHByb2dyYW1taW5nIGNhbiBvbmx5IGhh bmRsZSBhIGZpeGVkCj4gKwkgKiBzZXQgb2YgbGluayByYXRlcy4KPiArCSAqCj4gKwkgKiBGSVhN RTogV2Ugd2lsbCBob3BlZnVsbHkgZ2V0IGFuIGFsZ29yaXRobWljIHdheSBvZiBwcm9ncmFtbWlu Zwo+ICsJICogdGhlIE1QTExCIGZvciBIRE1JIGluIHRoZSBmdXR1cmUuCj4gKwkgKi8KPiArCWlm IChJU19ERzIoZGV2X3ByaXYpKQo+ICsJCXJldHVybiBpbnRlbF9zbnBzX3BoeV9jaGVja19oZG1p X2xpbmtfcmF0ZShjbG9jayk7Cj4gKwo+ICAJcmV0dXJuIE1PREVfT0s7Cj4gIH0KPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc25wc19waHkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc25wc19waHkuYwo+IGluZGV4IDZk OTIwNTkwNjU5NS4uMTMxN2I0ZTk0YjUwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfc25wc19waHkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfc25wc19waHkuYwo+IEBAIC0zLDYgKzMsOCBAQAo+ICAgKiBDb3B5cmln aHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICAgKi8KPiAgCj4gKyNpbmNsdWRlIDxsaW51 eC91dGlsX21hY3Jvcy5oPgo+ICsKPiAgI2luY2x1ZGUgImludGVsX2RlLmgiCj4gICNpbmNsdWRl ICJpbnRlbF9kaXNwbGF5X3R5cGVzLmgiCj4gICNpbmNsdWRlICJpbnRlbF9zbnBzX3BoeS5oIgo+ IEBAIC0zNzUsMTQgKzM3NywxNzIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9tcGxsYl9z dGF0ZSAqZGcyX2VkcF90YWJsZXNbXSA9IHsKPiAgCU5VTEwsCj4gIH07Cj4gIAo+IC1pbnQgaW50 ZWxfbXBsbGJfY2FsY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAtCQkJICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gLXsKPiAtCWNvbnN0IHN0 cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSAqKnRhYmxlczsKPiAtCWludCBpOwo+ICsvKgo+ICsgKiBI RE1JIGxpbmsgcmF0ZXMgd2l0aCAxMDAgTUh6IHJlZmVyZW5jZSBjbG9jay4KPiArICovCj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21wbGxiX3N0YXRlIGRnMl9oZG1pXzI1XzE3NSA9 IHsKPiArCS5jbG9jayA9IDI1MTc1LAo+ICsJLnJlZl9jb250cm9sID0KPiArCQlSRUdfRklFTERf UFJFUChTTlBTX1BIWV9SRUZfQ09OVFJPTF9SRUZfUkFOR0UsIDMpLAo+ICsJLm1wbGxiX2NwID0K PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlQsIDUpIHwKPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9QUk9QLCAxNSkgfAo+ICsJCVJFR19GSUVMRF9Q UkVQKFNOUFNfUEhZX01QTExCX0NQX0lOVF9HUywgNjQpIHwKPiArCQlSRUdfRklFTERfUFJFUChT TlBTX1BIWV9NUExMQl9DUF9QUk9QX0dTLCAxMjQpLAo+ICsJLm1wbGxiX2RpdiA9Cj4gKwkJUkVH X0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRElWNV9DTEtfRU4sIDEpIHwKPiArCQlSRUdfRklF TERfUFJFUChTTlBTX1BIWV9NUExMQl9UWF9DTEtfRElWLCA1KSB8Cj4gKwkJUkVHX0ZJRUxEX1BS RVAoU05QU19QSFlfTVBMTEJfUE1JWF9FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNf UEhZX01QTExCX1YySSwgMiksCj4gKwkubXBsbGJfZGl2MiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAo U05QU19QSFlfTVBMTEJfUkVGX0NMS19ESVYsIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBT X1BIWV9NUExMQl9NVUxUSVBMSUVSLCAxMjgpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BI WV9NUExMQl9IRE1JX0RJViwgMSksCj4gKwkubXBsbGJfZnJhY24xID0KPiArCQlSRUdfRklFTERf UFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9DR0dfVVBEQVRFX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJ RUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJF UChTTlBTX1BIWV9NUExMQl9GUkFDTl9ERU4sIDE0MyksCj4gKwkubXBsbGJfZnJhY24yID0KPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9RVU9ULCAzNjY2MykgfAo+ICsJ CVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX1JFTSwgNzEpLAo+ICsJLm1wbGxi X3NzY2VuID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9TU0NfVVBfU1BSRUFE LCAxKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUg ZGcyX2hkbWlfMjdfMCA9IHsKPiArCS5jbG9jayA9IDI3MDAwLAo+ICsJLnJlZl9jb250cm9sID0K PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9SRUZfQ09OVFJPTF9SRUZfUkFOR0UsIDMpLAo+ ICsJLm1wbGxiX2NwID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlQs IDUpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9QUk9QLCAxNSkgfAo+ ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX0lOVF9HUywgNjQpIHwKPiArCQlS RUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9QUk9QX0dTLCAxMjQpLAo+ICsJLm1wbGxi X2RpdiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRElWNV9DTEtfRU4sIDEp IHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9UWF9DTEtfRElWLCA1KSB8Cj4g KwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfUE1JWF9FTiwgMSkgfAo+ICsJCVJFR19G SUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1YySSwgMiksCj4gKwkubXBsbGJfZGl2MiA9Cj4gKwkJ UkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfUkVGX0NMS19ESVYsIDEpIHwKPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9NVUxUSVBMSUVSLCAxNDApIHwKPiArCQlSRUdfRklF TERfUFJFUChTTlBTX1BIWV9NUExMQl9IRE1JX0RJViwgMSksCj4gKwkubXBsbGJfZnJhY24xID0K PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9DR0dfVVBEQVRFX0VOLCAx KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fRU4sIDEpIHwKPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9ERU4sIDUpLAo+ICsJLm1wbGxi X2ZyYWNuMiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fUVVPVCwg MjYyMTQpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9SRU0sIDIp LAo+ICsJLm1wbGxiX3NzY2VuID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9T U0NfVVBfU1BSRUFELCAxKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxf bXBsbGJfc3RhdGUgZGcyX2hkbWlfNzRfMjUgPSB7Cj4gKwkuY2xvY2sgPSA3NDI1MCwKPiArCS5y ZWZfY29udHJvbCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfUkVGX0NPTlRST0xfUkVG X1JBTkdFLCAzKSwKPiArCS5tcGxsYl9jcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlf TVBMTEJfQ1BfSU5ULCA0KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1Bf UFJPUCwgMTUpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlRfR1Ms IDY0KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUF9HUywgMTI0 KSwKPiArCS5tcGxsYl9kaXYgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0RJ VjVfQ0xLX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVFhfQ0xL X0RJViwgMykgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1BNSVhfRU4sIDEp IHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9WMkksIDIpIHwKPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkVRX1ZDTywgMyksCj4gKwkubXBsbGJfZGl2MiA9 Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfUkVGX0NMS19ESVYsIDEpIHwKPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9NVUxUSVBMSUVSLCA4NikgfAo+ICsJCVJF R19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0hETUlfRElWLCAxKSwKPiArCS5tcGxsYl9mcmFj bjEgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0NHR19VUERBVEVf RU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9FTiwgMSkg fAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0RFTiwgNSksCj4gKwku bXBsbGJfZnJhY24yID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9R VU9ULCAyNjIxNCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX1JF TSwgMiksCj4gKwkubXBsbGJfc3NjZW4gPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01Q TExCX1NTQ19VUF9TUFJFQUQsIDEpLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBp bnRlbF9tcGxsYl9zdGF0ZSBkZzJfaGRtaV8xNDhfNSA9IHsKPiArCS5jbG9jayA9IDE0ODUwMCwK PiArCS5yZWZfY29udHJvbCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfUkVGX0NPTlRS T0xfUkVGX1JBTkdFLCAzKSwKPiArCS5tcGxsYl9jcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05Q U19QSFlfTVBMTEJfQ1BfSU5ULCA0KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBM TEJfQ1BfUFJPUCwgMTUpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9J TlRfR1MsIDY0KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUF9H UywgMTI0KSwKPiArCS5tcGxsYl9kaXYgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01Q TExCX0RJVjVfQ0xLX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJf VFhfQ0xLX0RJViwgMikgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1BNSVhf RU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9WMkksIDIpIHwKPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkVRX1ZDTywgMyksCj4gKwkubXBsbGJf ZGl2MiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfUkVGX0NMS19ESVYsIDEp IHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9NVUxUSVBMSUVSLCA4NikgfAo+ ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0hETUlfRElWLCAxKSwKPiArCS5tcGxs Yl9mcmFjbjEgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0NHR19V UERBVEVfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9F TiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0RFTiwgNSks Cj4gKwkubXBsbGJfZnJhY24yID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9G UkFDTl9RVU9ULCAyNjIxNCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZS QUNOX1JFTSwgMiksCj4gKwkubXBsbGJfc3NjZW4gPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNf UEhZX01QTExCX1NTQ19VUF9TUFJFQUQsIDEpLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSBkZzJfaGRtaV81OTQgPSB7Cj4gKwkuY2xvY2sgPSA1OTQw MDAsCj4gKwkucmVmX2NvbnRyb2wgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX1JFRl9D T05UUk9MX1JFRl9SQU5HRSwgMyksCj4gKwkubXBsbGJfY3AgPQo+ICsJCVJFR19GSUVMRF9QUkVQ KFNOUFNfUEhZX01QTExCX0NQX0lOVCwgNCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZ X01QTExCX0NQX1BST1AsIDE1KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJf Q1BfSU5UX0dTLCA2NCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX1BS T1BfR1MsIDEyNCksCj4gKwkubXBsbGJfZGl2ID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BI WV9NUExMQl9ESVY1X0NMS19FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01Q TExCX1BNSVhfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9WMkks IDIpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkVRX1ZDTywgMyksCj4g KwkubXBsbGJfZGl2MiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfUkVGX0NM S19ESVYsIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9NVUxUSVBMSUVS LCA4NikgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0hETUlfRElWLCAxKSwK PiArCS5tcGxsYl9mcmFjbjEgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZS QUNOX0NHR19VUERBVEVfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExM Ql9GUkFDTl9FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNO X0RFTiwgNSksCj4gKwkubXBsbGJfZnJhY24yID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BI WV9NUExMQl9GUkFDTl9RVU9ULCAyNjIxNCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZ X01QTExCX0ZSQUNOX1JFTSwgMiksCj4gKwkubXBsbGJfc3NjZW4gPQo+ICsJCVJFR19GSUVMRF9Q UkVQKFNOUFNfUEhZX01QTExCX1NTQ19VUF9TUFJFQUQsIDEpLAo+ICt9Owo+ICAKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSAqZGcyX2hkbWlfdGFibGVzW10gPSB7Cj4g KwkmZGcyX2hkbWlfMjVfMTc1LAo+ICsJJmRnMl9oZG1pXzI3XzAsCj4gKwkmZGcyX2hkbWlfNzRf MjUsCj4gKwkmZGcyX2hkbWlfMTQ4XzUsCj4gKwkmZGcyX2hkbWlfNTk0LAo+ICsJTlVMTCwKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUgKioKPiAraW50 ZWxfbXBsbGJfdGFibGVzX2dldChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiArCQkgICAgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiAgCWlmIChp bnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKSB7Cj4gLQkJ dGFibGVzID0gZGcyX2VkcF90YWJsZXM7Cj4gKwkJcmV0dXJuIGRnMl9lZHBfdGFibGVzOwo+ICAJ fSBlbHNlIGlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpKSB7Cj4gIAkJ LyoKPiAgCQkgKiBGSVhNRTogSW5pdGlhbGx5IHdlJ3JlIGp1c3QgZW5hYmxpbmcgdGhlICJjb21i byIgb3V0cHV0cyBvbgo+IEBAIC0zOTcsMTUgKzU1Nyw0MSBAQCBpbnQgaW50ZWxfbXBsbGJfY2Fs Y19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgKiB0aGF0 IHRvIGRldGVybWluZSB3aGljaCB0YWJsZSB0byB1c2UuCj4gIAkJICovCj4gIAkJaWYgKDApCj4g LQkJCXRhYmxlcyA9IGRnMl9kcF8zOF80X3RhYmxlczsKPiArCQkJcmV0dXJuIGRnMl9kcF8zOF80 X3RhYmxlczsKPiAgCQllbHNlCj4gLQkJCXRhYmxlcyA9IGRnMl9kcF8xMDBfdGFibGVzOwo+IC0J fSBlbHNlIHsKPiAtCQkvKiBUT0RPOiBBZGQgSERNSSBzdXBwb3J0ICovCj4gLQkJTUlTU0lOR19D QVNFKGVuY29kZXItPnR5cGUpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+ICsJCQlyZXR1cm4gZGcy X2RwXzEwMF90YWJsZXM7Cj4gKwl9IGVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19z dGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKSB7Cj4gKwkJcmV0dXJuIGRnMl9oZG1pX3RhYmxlczsK PiAgCX0KPiAgCj4gKwlNSVNTSU5HX0NBU0UoZW5jb2Rlci0+dHlwZSk7Cj4gKwlyZXR1cm4gTlVM TDsKPiArfQo+ICsKPiAraW50IGludGVsX21wbGxiX2NhbGNfc3RhdGUoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCSAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUgKip0YWJsZXM7Cj4g KwlpbnQgaTsKPiArCj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfSERNSSkpIHsKPiArCQlpZiAoaW50ZWxfc25wc19waHlfY2hlY2tfaGRtaV9saW5r X3JhdGUoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jaykKPiArCQkgICAgIT0gTU9ERV9PSykgewo+ICsJ CQkvKgo+ICsJCQkgKiBGSVhNRTogQ2FuIG9ubHkgc3VwcG9ydCBmaXhlZCBIRE1JIGZyZXF1ZW5j aWVzCj4gKwkJCSAqIHVudGlsIHdlIGhhdmUgYSBwcm9wZXIgYWxnb3JpdGhtIHVuZGVyIGEgdmFs aWQKPiArCQkJICogbGljZW5zZS4KPiArCQkJICovCj4gKwkJCURSTV9ERUJVR19LTVMoIkNhbid0 IHN1cHBvcnQgSERNSSBsaW5rIHJhdGUgJWRcbiIsCj4gKwkJCQkgICAgICBjcnRjX3N0YXRlLT5w b3J0X2Nsb2NrKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXRh YmxlcyA9IGludGVsX21wbGxiX3RhYmxlc19nZXQoY3J0Y19zdGF0ZSwgZW5jb2Rlcik7Cj4gKwlp ZiAoIXRhYmxlcykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gIAlmb3IgKGkgPSAwOyB0YWJs ZXNbaV07IGkrKykgewo+ICAJCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrIDw9IHRhYmxlc1tp XS0+Y2xvY2spIHsKPiAgCQkJY3J0Y19zdGF0ZS0+bXBsbGJfc3RhdGUgPSAqdGFibGVzW2ldOwo+ IEBAIC01MTUsMyArNzAxLDc5IEBAIHZvaWQgaW50ZWxfbXBsbGJfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCSAqIFdlIGhhbmRsZSB0aGlzIHN0ZXAgaW4gYnh0X3Nl dF9jZGNsaygpLgo+ICAJICovCj4gIH0KPiArCj4gK2ludCBpbnRlbF9tcGxsYl9jYWxjX3BvcnRf Y2xvY2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQljb25zdCBzdHJ1Y3Qg aW50ZWxfbXBsbGJfc3RhdGUgKnBsbF9zdGF0ZSkKPiArewo+ICsJdW5zaWduZWQgaW50IGZyYWNf cXVvdCA9IDAsIGZyYWNfcmVtID0gMCwgZnJhY19kZW4gPSAxOwo+ICsJdW5zaWduZWQgaW50IG11 bHRpcGxpZXIsIHR4X2Nsa19kaXYsIHJlZmNsazsKPiArCWJvb2wgZnJhY19lbjsKPiArCj4gKwlp ZiAoMCkKPiArCQlyZWZjbGsgPSAzODQwMDsKPiArCWVsc2UKPiArCQlyZWZjbGsgPSAxMDAwMDA7 Cj4gKwo+ICsJcmVmY2xrID4+PSBSRUdfRklFTERfR0VUKFNOUFNfUEhZX01QTExCX1JFRl9DTEtf RElWLCBwbGxfc3RhdGUtPm1wbGxiX2RpdjIpIC0gMTsKPiArCj4gKwlmcmFjX2VuID0gUkVHX0ZJ RUxEX0dFVChTTlBTX1BIWV9NUExMQl9GUkFDTl9FTiwgcGxsX3N0YXRlLT5tcGxsYl9mcmFjbjEp Owo+ICsKPiArCWlmIChmcmFjX2VuKSB7Cj4gKwkJZnJhY19xdW90ID0gUkVHX0ZJRUxEX0dFVChT TlBTX1BIWV9NUExMQl9GUkFDTl9RVU9ULCBwbGxfc3RhdGUtPm1wbGxiX2ZyYWNuMik7Cj4gKwkJ ZnJhY19yZW0gPSBSRUdfRklFTERfR0VUKFNOUFNfUEhZX01QTExCX0ZSQUNOX1JFTSwgcGxsX3N0 YXRlLT5tcGxsYl9mcmFjbjIpOwo+ICsJCWZyYWNfZGVuID0gUkVHX0ZJRUxEX0dFVChTTlBTX1BI WV9NUExMQl9GUkFDTl9ERU4sIHBsbF9zdGF0ZS0+bXBsbGJfZnJhY24xKTsKPiArCX0KPiArCj4g KwltdWx0aXBsaWVyID0gUkVHX0ZJRUxEX0dFVChTTlBTX1BIWV9NUExMQl9NVUxUSVBMSUVSLCBw bGxfc3RhdGUtPm1wbGxiX2RpdjIpIC8gMiArIDE2Owo+ICsKPiArCXR4X2Nsa19kaXYgPSBSRUdf RklFTERfR0VUKFNOUFNfUEhZX01QTExCX1RYX0NMS19ESVYsIHBsbF9zdGF0ZS0+bXBsbGJfZGl2 KTsKPiArCj4gKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1RfVUxMKG11bF91MzJfdTMyKHJlZmNs aywgKG11bHRpcGxpZXIgPDwgMTYpICsgZnJhY19xdW90KSArCj4gKwkJCQkgICAgIERJVl9ST1VO RF9DTE9TRVNUKHJlZmNsayAqIGZyYWNfcmVtLCBmcmFjX2RlbiksCj4gKwkJCQkgICAgIDEwIDw8 ICh0eF9jbGtfZGl2ICsgMTYpKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9tcGxsYl9yZWFkb3V0 X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJICBzdHJ1Y3Qg aW50ZWxfbXBsbGJfc3RhdGUgKnBsbF9zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwllbnVtIHBo eSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCk7Cj4gKwo+ ICsJcGxsX3N0YXRlLT5tcGxsYl9jcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIFNOUFNfUEhZ X01QTExCX0NQKHBoeSkpOwo+ICsJcGxsX3N0YXRlLT5tcGxsYl9kaXYgPSBpbnRlbF9kZV9yZWFk KGRldl9wcml2LCBTTlBTX1BIWV9NUExMQl9ESVYocGh5KSk7Cj4gKwlwbGxfc3RhdGUtPm1wbGxi X2RpdjIgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBTTlBTX1BIWV9NUExMQl9ESVYyKHBoeSkp Owo+ICsJcGxsX3N0YXRlLT5tcGxsYl9zc2NlbiA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIFNO UFNfUEhZX01QTExCX1NTQ0VOKHBoeSkpOwo+ICsJcGxsX3N0YXRlLT5tcGxsYl9zc2NzdGVwID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgU05QU19QSFlfTVBMTEJfU1NDU1RFUChwaHkpKTsKPiAr CXBsbF9zdGF0ZS0+bXBsbGJfZnJhY24xID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgU05QU19Q SFlfTVBMTEJfRlJBQ04xKHBoeSkpOwo+ICsJcGxsX3N0YXRlLT5tcGxsYl9mcmFjbjIgPSBpbnRl bF9kZV9yZWFkKGRldl9wcml2LCBTTlBTX1BIWV9NUExMQl9GUkFDTjIocGh5KSk7Cj4gKwo+ICsJ LyoKPiArCSAqIFJFRl9DT05UUk9MIGlzIHVuZGVyIGZpcm13YXJlIGNvbnRyb2wgYW5kIG5ldmVy IHByb2dyYW1tZWQgYnkgdGhlCj4gKwkgKiBkcml2ZXI7IHdlIHJlYWQgaXQgb25seSBmb3Igc2Fu aXR5IGNoZWNraW5nIHB1cnBvc2VzLiAgVGhlIGJzcGVjCj4gKwkgKiBvbmx5IHRlbGxzIHVzIHRo ZSBleHBlY3RlZCB2YWx1ZSBmb3Igb25lIGZpZWxkIGluIHRoaXMgcmVnaXN0ZXIsCj4gKwkgKiBz byB3ZSdsbCBvbmx5IHJlYWQgb3V0IHRob3NlIHNwZWNpZmljIGJpdHMgaGVyZS4KPiArCSAqLwo+ ICsJcGxsX3N0YXRlLT5yZWZfY29udHJvbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIFNOUFNf UEhZX1JFRl9DT05UUk9MKHBoeSkpICYKPiArCQlTTlBTX1BIWV9SRUZfQ09OVFJPTF9SRUZfUkFO R0U7Cj4gKwo+ICsJLyoKPiArCSAqIE1QTExCX0RJViBpcyBwcm9ncmFtbWVkIHR3aWNlLCBvbmNl IHdpdGggdGhlIHNvZnR3YXJlLWNvbXB1dGVkCj4gKwkgKiBzdGF0ZSwgdGhlbiBhZ2FpbiB3aXRo IHRoZSBNUExMQl9GT1JDRV9FTiBiaXQgYWRkZWQuICBEcm9wIHRoYXQKPiArCSAqIGV4dHJhIGJp dCBkdXJpbmcgcmVhZG91dCBzbyB0aGF0IHdlIHJldHVybiB0aGUgYWN0dWFsIGV4cGVjdGVkCj4g KwkgKiBzb2Z0d2FyZSBzdGF0ZS4KPiArCSAqLwo+ICsJcGxsX3N0YXRlLT5tcGxsYl9kaXYgJj0g flNOUFNfUEhZX01QTExCX0ZPUkNFX0VOOwo+ICt9Cj4gKwo+ICtpbnQgaW50ZWxfc25wc19waHlf Y2hlY2tfaGRtaV9saW5rX3JhdGUoaW50IGNsb2NrKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaW50 ZWxfbXBsbGJfc3RhdGUgKip0YWJsZXMgPSBkZzJfaGRtaV90YWJsZXM7Cj4gKwlpbnQgaTsKPiAr Cj4gKwlmb3IgKGkgPSAwOyB0YWJsZXNbaV07IGkrKykgewo+ICsJCWlmIChjbG9jayA9PSB0YWJs ZXNbaV0tPmNsb2NrKQo+ICsJCQlyZXR1cm4gTU9ERV9PSzsKPiArCX0KPiArCj4gKwlyZXR1cm4g TU9ERV9DTE9DS19SQU5HRTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3NucHNfcGh5LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3NucHNfcGh5LmgKPiBpbmRleCAyMDVhYjQ2ZjBiNjcuLmNhNGMyYTI1MTgyYiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3NucHNfcGh5LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3NucHNfcGh5LmgKPiBA QCAtOCwxMSArOCwxOCBAQAo+ICAKPiAgc3RydWN0IGludGVsX2VuY29kZXI7Cj4gIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlOwo+ICtzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGU7Cj4gIAo+ICBpbnQg aW50ZWxfbXBsbGJfY2FsY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCQkJICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpOwo+ICB2b2lkIGludGVs X21wbGxiX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICB2b2lkIGludGVsX21wbGxi X2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpOwo+ICt2b2lkIGludGVsX21w bGxiX3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJ CQkgIHN0cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSAqcGxsX3N0YXRlKTsKPiAraW50IGludGVsX21w bGxiX2NhbGNfcG9ydF9jbG9jayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJ CWNvbnN0IHN0cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSAqcGxsX3N0YXRlKTsKPiArCj4gK2ludCBp bnRlbF9zbnBzX3BoeV9jaGVja19oZG1pX2xpbmtfcmF0ZShpbnQgY2xvY2spOwo+ICAKPiAgI2Vu ZGlmIC8qIF9fSU5URUxfU05QU19QSFlfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g aW5kZXggMTQyMmZiY2UzNmNiLi45MjQwOGI0ZTI3MzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiBAQCAtMjMyNSwxMiArMjMyNSwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9t bWlvX3JlZ192YWxpZChpOTE1X3JlZ190IHJlZykKPiAgCj4gICNkZWZpbmUgU05QU19QSFlfTVBM TEJfU1NDRU4ocGh5KQkJX01NSU9fU05QUyhwaHksIDB4MTY4MDE0KQo+ICAjZGVmaW5lICAgU05Q U19QSFlfTVBMTEJfU1NDX0VOCQkJUkVHX0JJVCgzMSkKPiArI2RlZmluZSAgIFNOUFNfUEhZX01Q TExCX1NTQ19VUF9TUFJFQUQJCVJFR19CSVQoMzApCj4gICNkZWZpbmUgICBTTlBTX1BIWV9NUExM Ql9TU0NfUEVBSwkJUkVHX0dFTk1BU0soMjksIDEwKQo+ICAKPiAgI2RlZmluZSBTTlBTX1BIWV9N UExMQl9TU0NTVEVQKHBoeSkJCV9NTUlPX1NOUFMocGh5LCAweDE2ODAxOCkKPiAgI2RlZmluZSAg IFNOUFNfUEhZX01QTExCX1NTQ19TVEVQU0laRQkJUkVHX0dFTk1BU0soMzEsIDExKQo+ICAKPiAg I2RlZmluZSBTTlBTX1BIWV9NUExMQl9ESVYyKHBoeSkJCV9NTUlPX1NOUFMocGh5LCAweDE2ODAx QykKPiArI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX0hETUlfUElYRUxfQ0xLX0RJVglSRUdfR0VO TUFTSygxOSwgMTgpCj4gKyNkZWZpbmUgICBTTlBTX1BIWV9NUExMQl9IRE1JX0RJVgkJUkVHX0dF Tk1BU0soMTcsIDE1KQo+ICAjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfUkVGX0NMS19ESVYJCVJF R19HRU5NQVNLKDE0LCAxMikKPiAgI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX01VTFRJUExJRVIJ CVJFR19HRU5NQVNLKDExLCAwKQo+ICAKPiAtLSAKPiAyLjI1LjQKPiAKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==