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=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, 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 8808EC4363C for ; Mon, 21 Sep 2020 19:40:44 +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 2F97C20757 for ; Mon, 21 Sep 2020 19:40:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2F97C20757 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 F37676E55E; Mon, 21 Sep 2020 19:40:42 +0000 (UTC) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6D5F46E55E for ; Mon, 21 Sep 2020 19:40:26 +0000 (UTC) IronPort-SDR: Ek9HHAe7Ju22OXE1gGqUl60fzt47fVHkJxMeYTuBtL2BaLK4WRIJO0PIpUQfC4YpuCzLFuc8JQ kD24G9fUkjBA== X-IronPort-AV: E=McAfee;i="6000,8403,9751"; a="148222100" X-IronPort-AV: E=Sophos;i="5.77,287,1596524400"; d="scan'208";a="148222100" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2020 12:40:23 -0700 IronPort-SDR: fpzdsW1i0rebxEdFuXNWFYPq7Yj3cgyldK8K4vTRcclERyrtQ/NHnd9uNrFvfYsqhfqz0mCRr9 cPIymRsW2DAg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,287,1596524400"; d="scan'208";a="454197224" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga004.jf.intel.com with ESMTP; 21 Sep 2020 12:40:23 -0700 Received: from bgsmsx602.gar.corp.intel.com (10.109.78.81) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 21 Sep 2020 12:40:22 -0700 Received: from bgsmsx604.gar.corp.intel.com (10.67.234.6) by BGSMSX602.gar.corp.intel.com (10.109.78.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 22 Sep 2020 01:10:20 +0530 Received: from bgsmsx604.gar.corp.intel.com ([10.67.234.6]) by BGSMSX604.gar.corp.intel.com ([10.67.234.6]) with mapi id 15.01.1713.004; Tue, 22 Sep 2020 01:10:20 +0530 From: "Shankar, Uma" To: Ville Syrjala , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH 20/20] drm/i915: Add 10bit gamma mode for gen2/3 Thread-Index: AQHWXH9Ti0vWGT7GsUC8Vgk2IbZMCqlz43SA Date: Mon, 21 Sep 2020 19:40:19 +0000 Message-ID: <5dea53a638e54817ad30499f1d089ceb@intel.com> References: <20200717211345.26851-1-ville.syrjala@linux.intel.com> <20200717211345.26851-21-ville.syrjala@linux.intel.com> In-Reply-To: <20200717211345.26851-21-ville.syrjala@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 x-originating-ip: [10.223.10.1] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 20/20] drm/i915: Add 10bit gamma mode for gen2/3 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSW50ZWwtZ2Z4IDxpbnRl bC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+IE9uIEJlaGFsZiBPZiBWaWxsZQ0K PiBTeXJqYWxhDQo+IFNlbnQ6IFNhdHVyZGF5LCBKdWx5IDE4LCAyMDIwIDI6NDQgQU0NCj4gVG86 IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU3ViamVjdDogW0ludGVsLWdmeF0g W1BBVENIIDIwLzIwXSBkcm0vaTkxNTogQWRkIDEwYml0IGdhbW1hIG1vZGUgZm9yIGdlbjIvMw0K PiANCj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4NCj4gDQo+IFNvbWUgZ2VuMi9nZW4zIHBhcnRzIGhhdmUgYSAxMGJpdCBnYW1tYSBtb2RlLCBv biBzb21lIHBpcGVzLg0KPiBFeHBvc2UgaXQuDQo+IA0KPiBUaGUgZm9ybWF0IGlzIGRpZmZlcmVu dCB0byB0aGUgbGF0ZXIgaTk2NSsgc3R5bGUgaW4gdGhhdCB3ZSBzdG9yZSBhIDEwYml0IHZhbHVl IGFuZA0KPiBhIDYgYml0IGZsb2F0aW5nIHBvaW50IHNsb3BlIGZvciBlYWNoIGVudHJ5LiBJZS4g dGhlIGhhcmR3YXJlIGV4dHJhcG9sYXRlcyB0aGUNCj4gaW50ZXJtZWRpYXRlIHN0ZXBzIGZyb20g dGhlIGN1cnJlbnQgTFVUIGVudHJ5LCBpbnN0ZWFkIG9mIGludGVycG9sYXRpbmcgYmV0d2Vlbg0K PiB0aGUgY3VycmVudCBhbmQgbmV4dCBMVVQgZW50cmllcy4gVGhpcyBhbHNvIG1lYW5zIHdlIGRv bid0IHN0b3JlIHRoZSBsYXN0IExVVA0KPiBlbnRyeSBpbiBhbnkgcmVnaXN0ZXIgYXMgaXQgaXMg ZGVmaW5lZCBieSB0aGUgcHJldmlvdXMgTFVUIGVudHJ5J3MgdmFsdWUrc2xvcGUuDQo+IA0KPiBU aGUgc2xvcGUgaGFzIGxpbWl0ZWQgcHJlY2lzaW9uIHRob3VnaCAoMiBiaXQgZXhwb25lbnQgKyA0 IGJpdCBtYW50aXNzYSksIHNvIHdlDQo+IGhhdmUgdG8gYWxsb3cgZm9yIG1vcmUgZXJyb3IgaW4g dGhlIHN0YXRlIGNoZWNrZXIgZm9yIHRoZSBsYXN0IGVudHJ5LCBhbmQgd2UgaGF2ZQ0KPiB0byBt YWtlIHN1cmUgdXNlcnNwYWNlIGRvZXNuJ3QgcGFzcyBpbiBzb21ldGhpbmcgd2hlcmUgdGhlIHNs b3BlIGlzIHNpbXBseSB0bw0KPiBzdGVlcC4gSW4gdGhlb3J5IHdlIHNob3VsZCBwZXJoYXBzIGNo ZWNrIHRoZSBzbG9wZSBmb3IgZXZlcnkgaW50ZXJ2YWwsIGJ1dCB3ZQ0KPiBkb24ndCBkbyB0aGF0 IGZvciBhbnkgb3RoZXIgaW50ZXJwb2xhdGVkIGdhbW1hIG1vZGUgYW5kIEkgc3VzcGVjdCB0aGV5 IG1heQ0KPiBhbHNvIGhhdmUgc29tZSBpbnRlcm5hbCBsaW1pdCBvbiB0aGUgc2xvcGUuIEkgaGF2 ZW4ndCBjb25maXJtZWQgdGhhdCB0aGVvcnkNCj4gdGhvdWdoLiBBbnl3YXlzLCBvbmx5IHRoZSBs YXN0IGVudHJ5IHByb3ZpZGVzIGEgc2xpZ2h0IGNoYWxsZW5nZSBmb3IgdGhlIHN0YXRlDQo+IGNo ZWNrZXIgc2luY2UgYWxsIHRoZSBvdGhlciBlbnRyaWVzIGRvIGhhdmUgYW4gZXhwbGljaXQgdmFs dWUgc3RvcmVkIGluIGEgcmVnaXN0ZXIuDQoNCkNvdWxkbid0IHZlcmlmeSB0aGUgZGV0YWlscyBm cm9tIHNwZWMuIEJ1dCB3aXRoIHRoZSBkZXNjcmlwdGlvbiwgd2FzIG5vdCBhYmxlIHRvIHNwb3Qg YW55IGlzc3VlDQp3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbi4JDQpBY2tlZC1ieTogVW1hIFNoYW5r YXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4NCg0KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYyB8IDI0OCArKysrKysrKysrKysrKysr KysrKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgICAgICAgICB8ICAx MCArLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgIHwgIDM4 ICsrKy0NCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjc5IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9u cygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfY29sb3IuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3Iu Yw0KPiBpbmRleCBjYTZjNjY3OTM2OGMuLjA1NWE0OWVkNGUzYSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jDQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYw0KPiBAQCAtNDE0LDYgKzQxNCw3OSBA QCBzdGF0aWMgdm9pZCBpOXh4X2x1dF84X3BhY2soc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5 LA0KPiB1MzIgdmFsKQ0KPiAgCWVudHJ5LT5ibHVlID0NCj4gaW50ZWxfY29sb3JfbHV0X3BhY2so UkVHX0ZJRUxEX0dFVChMR0NfUEFMRVRURV9CTFVFX01BU0ssIHZhbCksIDgpOyAgfQ0KPiANCj4g Ky8qIGk4eHgvaTl4eCsgMTBiaXQgc2xvcGUgZm9ybWF0ICJldmVuIERXIiAobG93IDggYml0cykg Ki8gc3RhdGljIHUzMg0KPiArX2k5eHhfbHV0XzEwX2xkdyh1MTYgYSkgew0KPiArCXJldHVybiBk cm1fY29sb3JfbHV0X2V4dHJhY3QoYSwgMTApICYgMHhmZjsgfQ0KPiArDQo+ICtzdGF0aWMgdTMy IGk5eHhfbHV0XzEwX2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpIHsNCj4g KwlyZXR1cm4gX2k5eHhfbHV0XzEwX2xkdyhjb2xvclswXS5yZWQpIDw8IDE2IHwNCj4gKwkJX2k5 eHhfbHV0XzEwX2xkdyhjb2xvclswXS5ncmVlbikgPDwgOCB8DQo+ICsJCV9pOXh4X2x1dF8xMF9s ZHcoY29sb3JbMF0uYmx1ZSk7DQo+ICt9DQo+ICsNCj4gKy8qIGk4eHgvaTl4eCsgMTBiaXQgc2xv cGUgZm9ybWF0ICJvZGQgRFciIChoaWdoIDIgYml0cyArIHNsb3BlKSAqLw0KPiArc3RhdGljIHUz MiBfaTl4eF9sdXRfMTBfdWR3KHUxNiBhLCB1MTYgYikgew0KPiArCXVuc2lnbmVkIGludCBtYW50 aXNzYSwgZXhwb25lbnQ7DQo+ICsNCj4gKwlhID0gZHJtX2NvbG9yX2x1dF9leHRyYWN0KGEsIDEw KTsNCj4gKwliID0gZHJtX2NvbG9yX2x1dF9leHRyYWN0KGIsIDEwKTsNCj4gKw0KPiArCS8qIGIg PSBhICsgOCAqIG0gKiAyIF4gLWUgKi8NCj4gKwltYW50aXNzYSA9IGNsYW1wKGIgLSBhLCAwLCAw eDdmKTsNCj4gKwlleHBvbmVudCA9IDM7DQo+ICsJd2hpbGUgKG1hbnRpc3NhID4gMHhmKSB7DQo+ ICsJCW1hbnRpc3NhID4+PSAxOw0KPiArCQlleHBvbmVudC0tOw0KPiArCX0NCj4gKw0KPiArCXJl dHVybiAoZXhwb25lbnQgPDwgNikgfA0KPiArCQkobWFudGlzc2EgPDwgMikgfA0KPiArCQkoYSA+ PiA4KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHUzMiBpOXh4X2x1dF8xMF91ZHcoY29uc3Qgc3Ry dWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKSB7DQo+ICsJcmV0dXJuIF9pOXh4X2x1dF8xMF91ZHco Y29sb3JbMF0ucmVkLCBjb2xvclsxXS5yZWQpIDw8IDE2IHwNCj4gKwkJX2k5eHhfbHV0XzEwX3Vk dyhjb2xvclswXS5ncmVlbiwgY29sb3JbMV0uZ3JlZW4pIDw8IDggfA0KPiArCQlfaTl4eF9sdXRf MTBfdWR3KGNvbG9yWzBdLmJsdWUsIGNvbG9yWzFdLmJsdWUpOyB9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIGk5eHhfbHV0XzEwX3BhY2soc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yLA0KPiArCQkJ ICAgICB1MzIgbGR3LCB1MzIgdWR3KQ0KPiArew0KPiArCXUxNiByZWQgPSBSRUdfRklFTERfR0VU KFBBTEVUVEVfMTBCSVRfUkVEX0xEV19NQVNLLCBsZHcpIHwNCj4gKwkJUkVHX0ZJRUxEX0dFVChQ QUxFVFRFXzEwQklUX1JFRF9VRFdfTUFTSywgdWR3KSA8PCA4Ow0KPiArCXUxNiBncmVlbiA9IFJF R19GSUVMRF9HRVQoUEFMRVRURV8xMEJJVF9HUkVFTl9MRFdfTUFTSywgbGR3KSB8DQo+ICsJCVJF R19GSUVMRF9HRVQoUEFMRVRURV8xMEJJVF9HUkVFTl9VRFdfTUFTSywgdWR3KSA8PCA4Ow0KPiAr CXUxNiBibHVlID0gUkVHX0ZJRUxEX0dFVChQQUxFVFRFXzEwQklUX0JMVUVfTERXX01BU0ssIGxk dykgfA0KPiArCQlSRUdfRklFTERfR0VUKFBBTEVUVEVfMTBCSVRfQkxVRV9VRFdfTUFTSywgdWR3 KSA8PCA4Ow0KPiArDQo+ICsJY29sb3ItPnJlZCA9IGludGVsX2NvbG9yX2x1dF9wYWNrKHJlZCwg MTApOw0KPiArCWNvbG9yLT5ncmVlbiA9IGludGVsX2NvbG9yX2x1dF9wYWNrKGdyZWVuLCAxMCk7 DQo+ICsJY29sb3ItPmJsdWUgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhibHVlLCAxMCk7IH0NCj4g Kw0KPiArc3RhdGljIHZvaWQgaTl4eF9sdXRfMTBfcGFja19zbG9wZShzdHJ1Y3QgZHJtX2NvbG9y X2x1dCAqY29sb3IsDQo+ICsJCQkJICAgdTMyIGxkdywgdTMyIHVkdykNCj4gK3sNCj4gKwlpbnQg cl9leHAgPSBSRUdfRklFTERfR0VUKFBBTEVUVEVfMTBCSVRfUkVEX0VYUF9NQVNLLCB1ZHcpOw0K PiArCWludCByX21hbnQgPSBSRUdfRklFTERfR0VUKFBBTEVUVEVfMTBCSVRfUkVEX01BTlRfTUFT SywgdWR3KTsNCj4gKwlpbnQgZ19leHAgPSBSRUdfRklFTERfR0VUKFBBTEVUVEVfMTBCSVRfR1JF RU5fRVhQX01BU0ssIHVkdyk7DQo+ICsJaW50IGdfbWFudCA9IFJFR19GSUVMRF9HRVQoUEFMRVRU RV8xMEJJVF9HUkVFTl9NQU5UX01BU0ssDQo+IHVkdyk7DQo+ICsJaW50IGJfZXhwID0gUkVHX0ZJ RUxEX0dFVChQQUxFVFRFXzEwQklUX0JMVUVfRVhQX01BU0ssIHVkdyk7DQo+ICsJaW50IGJfbWFu dCA9IFJFR19GSUVMRF9HRVQoUEFMRVRURV8xMEJJVF9CTFVFX01BTlRfTUFTSywgdWR3KTsNCj4g Kw0KPiArCWk5eHhfbHV0XzEwX3BhY2soY29sb3IsIGxkdywgdWR3KTsNCj4gKw0KPiArCWNvbG9y LT5yZWQgKz0gcl9tYW50IDw8ICgzIC0gcl9leHApOw0KPiArCWNvbG9yLT5ncmVlbiArPSBnX21h bnQgPDwgKDMgLSBnX2V4cCk7DQo+ICsJY29sb3ItPmJsdWUgKz0gYl9tYW50IDw8ICgzIC0gYl9l eHApOw0KPiArfQ0KPiArDQo+ICAvKiBpOTY1KyAiMTAuNiIgYml0IGludGVycG9sYXRlZCBmb3Jt YXQgImV2ZW4gRFciIChsb3cgOCBiaXRzKSAqLyAgc3RhdGljIHUzMg0KPiBpOTY1X2x1dF8xMHA2 X2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpICB7IEBAIC01NTQsNiArNjI3 LDIyIEBADQo+IHN0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRfOChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywNCj4gIAkJCSAgICAgICBpOXh4X2x1dF84KCZsdXRbaV0pKTsNCj4gIH0NCj4gDQo+ICtz dGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0XzEwKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLA0KPiAr CQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IpIHsNCj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsN Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsNCj4gKwlp bnQgaSwgbHV0X3NpemUgPSBkcm1fY29sb3JfbHV0X3NpemUoYmxvYik7DQo+ICsJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplIC0g MTsgaSsrKSB7DQo+ICsJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBQQUxFVFRFKHBpcGUsIDIg KiBpICsgMCksDQo+ICsJCQkgICAgICAgaTl4eF9sdXRfMTBfbGR3KCZsdXRbaV0pKTsNCj4gKwkJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBBTEVUVEUocGlwZSwgMiAqIGkgKyAxKSwNCj4gKwkJ CSAgICAgICBpOXh4X2x1dF8xMF91ZHcoJmx1dFtpXSkpOw0KPiArCX0NCj4gK30NCj4gKw0KPiAg c3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpICB7DQo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+IEBAIC01NjIsNyArNjUxLDEwIEBAIHN0YXRp YyB2b2lkIGk5eHhfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpj cnRjX3N0YXRlKQ0KPiANCj4gIAlhc3NlcnRfcGxsX2VuYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBp cGUpOw0KPiANCj4gLQlpOXh4X2xvYWRfbHV0XzgoY3J0YywgZ2FtbWFfbHV0KTsNCj4gKwlpZiAo Y3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkNCj4gKwkJaTl4 eF9sb2FkX2x1dF84KGNydGMsIGdhbW1hX2x1dCk7DQo+ICsJZWxzZQ0KPiArCQlpOXh4X2xvYWRf bHV0XzEwKGNydGMsIGdhbW1hX2x1dCk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQgaTk2NV9s b2FkX2x1dF8xMHA2KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBAQCAtMTMyNiwxMSArMTQxOCwz Ng0KPiBAQCBzdGF0aWMgdTMyIGk5eHhfZ2FtbWFfbW9kZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkNCj4gIAkgICAgY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19z dGF0ZSkpDQo+ICAJCXJldHVybiBHQU1NQV9NT0RFX01PREVfOEJJVDsNCj4gIAllbHNlDQo+IC0J CXJldHVybiBHQU1NQV9NT0RFX01PREVfMTBCSVQ7IC8qIGk5NjUrIG9ubHkgKi8NCj4gKwkJcmV0 dXJuIEdBTU1BX01PREVfTU9ERV8xMEJJVDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBpOXh4 X2x1dF8xMF9kaWZmKHUxNiBhLCB1MTYgYikgew0KPiArCXJldHVybiBkcm1fY29sb3JfbHV0X2V4 dHJhY3QoYSwgMTApIC0NCj4gKwkJZHJtX2NvbG9yX2x1dF9leHRyYWN0KGIsIDEwKTsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCBpOXh4X2NoZWNrX2x1dF8xMChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsDQo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqYmxvYikgew0KPiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBibG9iLT5k YXRhOw0KPiArCWludCBsdXRfc2l6ZSA9IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iKTsNCj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYSA9ICZsdXRbbHV0X3NpemUgLSAyXTsNCj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYiA9ICZsdXRbbHV0X3NpemUgLSAxXTsNCj4gKw0K PiArCWlmIChpOXh4X2x1dF8xMF9kaWZmKGItPnJlZCwgYS0+cmVkKSA+IDB4N2YgfHwNCj4gKwkg ICAgaTl4eF9sdXRfMTBfZGlmZihiLT5ncmVlbiwgYS0+Z3JlZW4pID4gMHg3ZiB8fA0KPiArCSAg ICBpOXh4X2x1dF8xMF9kaWZmKGItPmJsdWUsIGEtPmJsdWUpID4gMHg3Zikgew0KPiArCQlkcm1f ZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkxhc3QgZ2FtbWEgTFVUIGVudHJ5IGV4Y2VlZHMNCj4g bWF4IHNsb3BlXG4iKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJcmV0 dXJuIDA7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGludCBpOXh4X2NvbG9yX2NoZWNrKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSAgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9DQo+ICt0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsN Cj4gIAlpbnQgcmV0Ow0KPiANCj4gIAlyZXQgPSBjaGVja19sdXRzKGNydGNfc3RhdGUpOw0KPiBA QCAtMTM0Myw2ICsxNDYwLDEzIEBAIHN0YXRpYyBpbnQgaTl4eF9jb2xvcl9jaGVjayhzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZQ0KPiAqY3J0Y19zdGF0ZSkNCj4gDQo+ICAJY3J0Y19zdGF0ZS0+Z2Ft bWFfbW9kZSA9IGk5eHhfZ2FtbWFfbW9kZShjcnRjX3N0YXRlKTsNCj4gDQo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA0ICYmDQo+ICsJICAgIGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0g R0FNTUFfTU9ERV9NT0RFXzEwQklUKSB7DQo+ICsJCXJldCA9IGk5eHhfY2hlY2tfbHV0XzEwKGRl dl9wcml2LCBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJ cmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gIAlyZXQgPSBpbnRlbF9jb2xvcl9hZGRfYWZmZWN0 ZWRfcGxhbmVzKGNydGNfc3RhdGUpOw0KPiAgCWlmIChyZXQpDQo+ICAJCXJldHVybiByZXQ7DQo+ IEBAIC0xNjEzLDYgKzE3MzcsMjIgQEAgc3RhdGljIGludCBpY2xfY29sb3JfY2hlY2soc3RydWN0 IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpICB9DQo+IA0KPiAgc3RhdGljIGludCBp OXh4X2dhbW1hX3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkNCj4gK3sNCj4gKwlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkNCj4gKwkJcmV0 dXJuIDA7DQo+ICsNCj4gKwlzd2l0Y2ggKGNydGNfc3RhdGUtPmdhbW1hX21vZGUpIHsNCj4gKwlj YXNlIEdBTU1BX01PREVfTU9ERV84QklUOg0KPiArCQlyZXR1cm4gODsNCj4gKwljYXNlIEdBTU1B X01PREVfTU9ERV8xMEJJVDoNCj4gKwkJcmV0dXJuIDEwOw0KPiArCWRlZmF1bHQ6DQo+ICsJCU1J U1NJTkdfQ0FTRShjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKTsNCj4gKwkJcmV0dXJuIDA7DQo+ICsJ fQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGk5NjVfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ICsqY3J0Y19zdGF0ZSkNCj4gIHsNCj4gIAlpZiAoIWNy dGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkNCj4gIAkJcmV0dXJuIDA7DQo+IEBAIC0xNzAwLDcgKzE4 NDAsNyBAQCBzdGF0aWMgaW50IGNodl9nYW1tYV9wcmVjaXNpb24oY29uc3Qgc3RydWN0DQo+IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ICAJaWYgKGNydGNfc3RhdGUtPmNnbV9tb2Rl ICYgQ0dNX1BJUEVfTU9ERV9HQU1NQSkNCj4gIAkJcmV0dXJuIDEwOw0KPiAgCWVsc2UNCj4gLQkJ cmV0dXJuIGk5eHhfZ2FtbWFfcHJlY2lzaW9uKGNydGNfc3RhdGUpOw0KPiArCQlyZXR1cm4gaTk2 NV9nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGludCBn bGtfZGVnYW1tYV9wcmVjaXNpb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpIEBAIC0NCj4gMTgwMyw2ICsxOTQzLDM3IEBAIHN0YXRpYyBib29sIGludGVsX2x1dF9l cXVhbChjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2INCj4gKmJsb2IxLA0KPiAgCXJldHVy biB0cnVlOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBib29sIGk5eHhfbHV0XzEwX2VxdWFsKGNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjEsDQo+ICsJCQkgICAgICBjb25zdCBzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IyLA0KPiArCQkJICAgICAgaW50IGJpdF9wcmVjaXNp b24pDQo+ICt7DQo+ICsJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDEsICpsdXQyOw0K PiArCWludCBpLCBsdXRfc2l6ZTsNCj4gKw0KPiArCWlmICghaW50ZWxfY29sb3JfbHV0X3NpemVz X2VxdWFsKGJsb2IxLCBibG9iMikpDQo+ICsJCXJldHVybiBmYWxzZTsNCj4gKw0KPiArCWlmICgh YmxvYjEpDQo+ICsJCXJldHVybiB0cnVlOw0KPiArDQo+ICsJaWYgKCFiaXRfcHJlY2lzaW9uKQ0K PiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlsdXRfc2l6ZSA9IGRybV9jb2xvcl9sdXRfc2l6 ZShibG9iMSk7DQo+ICsJbHV0MSA9IGJsb2IxLT5kYXRhOw0KPiArCWx1dDIgPSBibG9iMi0+ZGF0 YTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZSAtIDE7IGkrKykgew0KPiArCQlp ZiAoIWx1dF9lbnRyeV9lcXVhbCgmbHV0MVtpXSwgJmx1dDJbaV0sDQo+ICsJCQkJICAgICAweGZm ZmYgPj4gYml0X3ByZWNpc2lvbikpDQo+ICsJCQlyZXR1cm4gZmFsc2U7DQo+ICsJfQ0KPiArDQo+ ICsJLyogbGltaXRlZCBwcmVjaXNpb24gZm9yIHRoZSBsYXN0IGVudHJ5IGR1ZSB0byBmbG9hdGlu ZyBwb2ludCBzbG9wZSAqLw0KPiArCXJldHVybiBsdXRfZW50cnlfZXF1YWwoJmx1dDFbaV0sICZs dXQyW2ldLA0KPiArCQkJICAgICAgIDB4ZmZmZiA+PiAoYml0X3ByZWNpc2lvbiAtIDMpKTsgfQ0K PiArDQo+ICBzdGF0aWMgYm9vbCBpOXh4X2RlZ2FtbWFfZXF1YWwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUxLA0KPiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMiwNCj4gIAkJCSAgICAgICBib29sIGZhc3RzZXQpDQo+ IEBAIC0xODIxLDggKzE5OTIsMjMgQEAgc3RhdGljIGJvb2wgaTl4eF9nYW1tYV9lcXVhbChjb25z dCBzdHJ1Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEsDQo+ICAJY29uc3Qgc3Ry dWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQxID0gY3J0Y19zdGF0ZTEtDQo+ID5ody5n YW1tYV9sdXQ7DQo+ICAJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQy ID0gY3J0Y19zdGF0ZTItDQo+ID5ody5nYW1tYV9sdXQ7DQo+IA0KPiArCWlmIChjcnRjX3N0YXRl MS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfMTBCSVQpDQo+ICsJCXJldHVybiBpOXh4 X2x1dF8xMF9lcXVhbChnYW1tYV9sdXQxLCBnYW1tYV9sdXQyLA0KPiArCQkJCQkgaTl4eF9nYW1t YV9wcmVjaXNpb24oY3J0Y19zdGF0ZTEpKTsNCj4gKwllbHNlDQo+ICsJCXJldHVybiBpbnRlbF9s dXRfZXF1YWwoZ2FtbWFfbHV0MSwgZ2FtbWFfbHV0MiwNCj4gKwkJCQkgICAgICAgaTl4eF9nYW1t YV9wcmVjaXNpb24oY3J0Y19zdGF0ZTEpKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGJvb2wgaTk2 NV9nYW1tYV9lcXVhbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEs DQo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlMiwN Cj4gKwkJCSAgICAgYm9vbCBmYXN0c2V0KQ0KPiArew0KPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJv cGVydHlfYmxvYiAqZ2FtbWFfbHV0MSA9IGNydGNfc3RhdGUxLQ0KPiA+aHcuZ2FtbWFfbHV0Ow0K PiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0MiA9DQo+ICtjcnRj X3N0YXRlMi0+aHcuZ2FtbWFfbHV0Ow0KPiArDQo+ICAJcmV0dXJuIGludGVsX2x1dF9lcXVhbChn YW1tYV9sdXQxLCBnYW1tYV9sdXQyLA0KPiAtCQkJICAgICAgIGk5eHhfZ2FtbWFfcHJlY2lzaW9u KGNydGNfc3RhdGUxKSk7DQo+ICsJCQkgICAgICAgaTk2NV9nYW1tYV9wcmVjaXNpb24oY3J0Y19z dGF0ZTEpKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgYm9vbCBjaHZfZGVnYW1tYV9lcXVhbChjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTEsIEBAIC0NCj4gMjA4NCw2ICsy MjcwLDM2IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmk5eHhfcmVhZF9sdXRf OChzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAqY3J0YykNCj4gIAlyZXR1cm4gYmxvYjsNCj4gIH0NCj4g DQo+ICtzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoNCj4gK2k5eHhfcmVhZF9sdXRf MTAoc3RydWN0IGludGVsX2NydGMgKmNydGMpIHsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsNCj4gKwl1MzIgbHV0X3NpemUg PSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7DQo+ICsJZW51bSBw aXBlIHBpcGUgPSBjcnRjLT5waXBlOw0KPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxv YjsNCj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0Ow0KPiArCXUzMiBsZHcsIHVkdzsNCj4g KwlpbnQgaTsNCj4gKw0KPiArCWJsb2IgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoJmRldl9w cml2LT5kcm0sDQo+ICsJCQkJCWx1dF9zaXplICogc2l6ZW9mKGx1dFswXSksIE5VTEwpOw0KPiAr CWlmIChJU19FUlIoYmxvYikpDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJbHV0ID0gYmxv Yi0+ZGF0YTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZSAtIDE7IGkrKykgew0K PiArCQlsZHcgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBQQUxFVFRFKHBpcGUsIDIgKiBpICsg MCkpOw0KPiArCQl1ZHcgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBQQUxFVFRFKHBpcGUsIDIg KiBpICsgMSkpOw0KPiArDQo+ICsJCWk5eHhfbHV0XzEwX3BhY2soJmx1dFtpXSwgbGR3LCB1ZHcp Ow0KPiArCX0NCj4gKw0KPiArCWk5eHhfbHV0XzEwX3BhY2tfc2xvcGUoJmx1dFtpXSwgbGR3LCB1 ZHcpOw0KPiArDQo+ICsJcmV0dXJuIGJsb2I7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB2b2lkIGk5 eHhfcmVhZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSAgew0KPiAg CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBp LmNydGMpOw0KPiBAQCAtMjA5MSw3ICsyMzA3LDEwIEBAIHN0YXRpYyB2b2lkIGk5eHhfcmVhZF9s dXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpjcnRjX3N0YXRlKQ0KPiAgCWlmICghY3J0 Y19zdGF0ZS0+Z2FtbWFfZW5hYmxlKQ0KPiAgCQlyZXR1cm47DQo+IA0KPiAtCWNydGNfc3RhdGUt Pmh3LmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjKTsNCj4gKwlpZiAoY3J0Y19zdGF0 ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkNCj4gKwkJY3J0Y19zdGF0ZS0+ aHcuZ2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1dF84KGNydGMpOw0KPiArCWVsc2UNCj4gKwkJY3J0 Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1dF8xMChjcnRjKTsNCj4gIH0NCj4g DQo+ICBzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICppOTY1X3JlYWRfbHV0XzEwcDYo c3RydWN0IGludGVsX2NydGMgKmNydGMpDQo+IEBAIC0yNTQ2LDYgKzI3NjUsNyBAQCB2b2lkIGlu dGVsX2NvbG9yX2luaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpICB7DQo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+ICAJ Ym9vbCBoYXNfY3RtID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3Np emUgIT0gMDsNCj4gKwlpbnQgZ2FtbWFfbHV0X3NpemU7DQo+IA0KPiAgCWRybV9tb2RlX2NydGNf c2V0X2dhbW1hX3NpemUoJmNydGMtPmJhc2UsIDI1Nik7DQo+IA0KPiBAQCAtMjU2Miw3ICsyNzgy LDcgQEAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQ0KPiAg CQkJZGV2X3ByaXYtPmRpc3BsYXkuY29sb3JfY29tbWl0ID0gaTl4eF9jb2xvcl9jb21taXQ7DQo+ ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBpOTY1X2xvYWRfbHV0czsNCj4gIAkJ CWRldl9wcml2LT5kaXNwbGF5LnJlYWRfbHV0cyA9IGk5NjVfcmVhZF9sdXRzOw0KPiAtCQkJZGV2 X3ByaXYtPmRpc3BsYXkuZ2FtbWFfZXF1YWwgPSBpOXh4X2dhbW1hX2VxdWFsOw0KPiArCQkJZGV2 X3ByaXYtPmRpc3BsYXkuZ2FtbWFfZXF1YWwgPSBpOTY1X2dhbW1hX2VxdWFsOw0KPiAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkuZGVnYW1tYV9lcXVhbCA9DQo+IGk5eHhfZGVnYW1tYV9lcXVhbDsNCj4g IAkJfSBlbHNlIHsNCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NoZWNrID0gaTl4eF9j b2xvcl9jaGVjazsgQEAgLQ0KPiAyNjE4LDggKzI4MzgsMjAgQEAgdm9pZCBpbnRlbF9jb2xvcl9p bml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQ0KPiANCj4gIAl9DQo+IA0KPiArCS8qDQo+ICsJ ICogIkRQQUxFVFRFX0E6IE5PVEU6IFRoZSA4LWJpdCAobm9uLTEwLWJpdCkgbW9kZSBpcyB0aGUN Cj4gKwkgKiAgb25seSBtb2RlIHN1cHBvcnRlZCBieSBBbHZpc28gYW5kIEdyYW50c2RhbGUuIg0K PiArCSAqDQo+ICsJICogQWN0dWFsbHkgbG9va3MgbGlrZSB0aGlzIGFmZmVjdHMgYWxsIG9mIGdl bjMuDQo+ICsJICogQ29uZmlybWVkIG9uIGFsdixjc3QscG52LiBNb2JpbGUgZ2VuMiBwYXJ0cyAo YWxtLG1nbSkNCj4gKwkgKiBhcmUgY29uZmlybWVkIG5vdCB0byBzdWZmZXIgZnJvbSB0aGlzIHJl c3RyaWN0aW9uLg0KPiArCSAqLw0KPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDMpICYmIGNydGMt PnBpcGUgPT0gUElQRV9BKQ0KPiArCQlnYW1tYV9sdXRfc2l6ZSA9IDI1NjsNCj4gKwllbHNlDQo+ ICsJCWdhbW1hX2x1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmdhbW1hX2x1 dF9zaXplOw0KPiArDQo+ICAJZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoJmNydGMtPmJhc2Us DQo+ICAJCQkJICAgSU5URUxfSU5GTyhkZXZfcHJpdiktDQo+ID5jb2xvci5kZWdhbW1hX2x1dF9z aXplLA0KPiAtCQkJCSAgIGhhc19jdG0sDQo+IC0JCQkJICAgSU5URUxfSU5GTyhkZXZfcHJpdikt PmNvbG9yLmdhbW1hX2x1dF9zaXplKTsNCj4gKwkJCQkgICBoYXNfY3RtLCBnYW1tYV9sdXRfc2l6 ZSk7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYw0KPiBpbmRleCAyMzM4ZjkyY2U0OTAu LmJhYTI0ZTQ2OTFjMCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w Y2kuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jDQo+IEBAIC0xMjcs OSArMTI3LDkgQEANCj4gIAkJW1BJUEVfRF0gPSBUR0xfQ1VSU09SX0RfT0ZGU0VULCBcDQo+ICAJ fQ0KPiANCj4gLSNkZWZpbmUgSTlYWF9DT0xPUlMgXA0KPiArI2RlZmluZSBJODQ1X0NPTE9SUyBc DQo+ICAJLmNvbG9yID0geyAuZ2FtbWFfbHV0X3NpemUgPSAyNTYgfQ0KPiAtI2RlZmluZSBJOTY1 X0NPTE9SUyBcDQo+ICsjZGVmaW5lIEk5WFhfQ09MT1JTIFwNCj4gIAkuY29sb3IgPSB7IC5nYW1t YV9sdXRfc2l6ZSA9IDEyOSwgXA0KPiAgCQkgICAuZ2FtbWFfbHV0X3Rlc3RzID0gRFJNX0NPTE9S X0xVVF9OT05fREVDUkVBU0lORywgXA0KPiAgCX0NCj4gQEAgLTE5NCw3ICsxOTQsNyBAQA0KPiAg CS5kbWFfbWFza19zaXplID0gMzIsIFwNCj4gIAlJODQ1X1BJUEVfT0ZGU0VUUywgXA0KPiAgCUk4 NDVfQ1VSU09SX09GRlNFVFMsIFwNCj4gLQlJOVhYX0NPTE9SUywgXA0KPiArCUk4NDVfQ09MT1JT LCBcDQo+ICAJR0VOX0RFRkFVTFRfUEFHRV9TSVpFUywgXA0KPiAgCUdFTl9ERUZBVUxUX1JFR0lP TlMNCj4gDQo+IEBAIC0zMjMsNyArMzIzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9k ZXZpY2VfaW5mbyBwbnZfbV9pbmZvID0gew0KPiAgCS5kbWFfbWFza19zaXplID0gMzYsIFwNCj4g IAlJOVhYX1BJUEVfT0ZGU0VUUywgXA0KPiAgCUk5WFhfQ1VSU09SX09GRlNFVFMsIFwNCj4gLQlJ OTY1X0NPTE9SUywgXA0KPiArCUk5WFhfQ09MT1JTLCBcDQo+ICAJR0VOX0RFRkFVTFRfUEFHRV9T SVpFUywgXA0KPiAgCUdFTl9ERUZBVUxUX1JFR0lPTlMNCj4gDQo+IEBAIC01MjQsNyArNTI0LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyB2bHZfaW5mbyA9IHsNCj4g IAkuZGlzcGxheV9tbWlvX29mZnNldCA9IFZMVl9ESVNQTEFZX0JBU0UsDQo+ICAJSTlYWF9QSVBF X09GRlNFVFMsDQo+ICAJSTlYWF9DVVJTT1JfT0ZGU0VUUywNCj4gLQlJOTY1X0NPTE9SUywNCj4g KwlJOVhYX0NPTE9SUywNCj4gIAlHRU5fREVGQVVMVF9QQUdFX1NJWkVTLA0KPiAgCUdFTl9ERUZB VUxUX1JFR0lPTlMsDQo+ICB9Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4gaW5kZXggNDI4 ZWYwNmI4MDg0Li4wYzM0ZDYyZjIyZjQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0K PiBAQCAtMzcwOCwxMCArMzcwOCw0MCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9tbWlvX3Jl Z192YWxpZChpOTE1X3JlZ190DQo+IHJlZykNCj4gICNkZWZpbmUgX1BBTEVUVEVfQQkJMHhhMDAw DQo+ICAjZGVmaW5lIF9QQUxFVFRFX0IJCTB4YTgwMA0KPiAgI2RlZmluZSBfQ0hWX1BBTEVUVEVf QwkJMHhjMDAwDQo+IC0jZGVmaW5lIFBBTEVUVEVfUkVEX01BU0sgICAgICAgIFJFR19HRU5NQVNL KDIzLCAxNikNCj4gLSNkZWZpbmUgUEFMRVRURV9HUkVFTl9NQVNLICAgICAgUkVHX0dFTk1BU0so MTUsIDgpDQo+IC0jZGVmaW5lIFBBTEVUVEVfQkxVRV9NQVNLICAgICAgIFJFR19HRU5NQVNLKDcs IDApDQo+IC0jZGVmaW5lIFBBTEVUVEUocGlwZSwgaSkJX01NSU8oRElTUExBWV9NTUlPX0JBU0Uo ZGV2X3ByaXYpICsgXA0KPiArLyogOGJpdCBwYWxldHRlIG1vZGUgKi8NCj4gKyNkZWZpbmUgIFBB TEVUVEVfUkVEX01BU0sJCVJFR19HRU5NQVNLKDIzLCAxNikNCj4gKyNkZWZpbmUgIFBBTEVUVEVf UkVEKHgpDQo+IAlSRUdfRklFTERfUFJFUChQQUxFVFRFX1JFRF9NQVNLLCAoeCkpDQo+ICsjZGVm aW5lICBQQUxFVFRFX0dSRUVOX01BU0sJCVJFR19HRU5NQVNLKDE1LCA4KQ0KPiArI2RlZmluZSAg UEFMRVRURV9HUkVFTih4KQkJUkVHX0ZJRUxEX1BSRVAoUEFMRVRURV9HUkVFTl9NQVNLLA0KPiAo eCkpDQo+ICsjZGVmaW5lICBQQUxFVFRFX0JMVUVfTUFTSwkJUkVHX0dFTk1BU0soNywgMCkNCj4g KyNkZWZpbmUgIFBBTEVUVEVfQkxVRSh4KQkJUkVHX0ZJRUxEX1BSRVAoUEFMRVRURV9CTFVFX01B U0ssDQo+ICh4KSkNCj4gKy8qIGk5eHggMTBiaXQgaW50ZXJwb2xhdGVkIGxkdyAqLw0KPiArI2Rl ZmluZSAgUEFMRVRURV8xMEJJVF9SRURfTERXX01BU0sJUkVHX0dFTk1BU0soMjMsIDE2KQ0KPiAr I2RlZmluZSAgUEFMRVRURV8xMEJJVF9SRURfTERXKHgpDQo+IAlSRUdfRklFTERfUFJFUChQQUxF VFRFXzEwQklUX1JFRF9MRFdfTUFTSywgKHgpKQ0KPiArI2RlZmluZSAgUEFMRVRURV8xMEJJVF9H UkVFTl9MRFdfTUFTSwlSRUdfR0VOTUFTSygxNSwgOCkNCj4gKyNkZWZpbmUgIFBBTEVUVEVfMTBC SVRfR1JFRU5fTERXKHgpDQo+IAlSRUdfRklFTERfUFJFUChQQUxFVFRFXzEwQklUX0dSRUVOX0xE V19NQVNLLCAoeCkpDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX0JMVUVfTERXX01BU0sJUkVH X0dFTk1BU0soNywgMCkNCj4gKyNkZWZpbmUgIFBBTEVUVEVfMTBCSVRfQkxVRV9MRFcoeCkNCj4g CVJFR19GSUVMRF9QUkVQKFBBTEVUVEVfMTBCSVRfQkxVRV9MRFdfTUFTSywgKHgpKQ0KPiArLyog aTl4eCAxMGJpdCBpbnRlcnBvbGF0ZWQgdWR3ICovDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklU X1JFRF9FWFBfTUFTSwlSRUdfR0VOTUFTSygyMywgMjIpDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEw QklUX1JFRF9FWFAoeCkNCj4gCVJFR19GSUVMRF9QUkVQKFBBTEVUVEVfMTBCSVRfUkVEX0VYUF9N QVNLLCAoeCkpDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX1JFRF9NQU5UX01BU0sJUkVHX0dF Tk1BU0soMjEsIDE4KQ0KPiArI2RlZmluZSAgUEFMRVRURV8xMEJJVF9SRURfTUFOVCh4KQ0KPiAJ UkVHX0ZJRUxEX1BSRVAoUEFMRVRURV8xMEJJVF9SRURfTUFOVF9NQVNLLCAoeCkpDQo+ICsjZGVm aW5lICBQQUxFVFRFXzEwQklUX1JFRF9VRFdfTUFTSwlSRUdfR0VOTUFTSygxNywgMTYpDQo+ICsj ZGVmaW5lICBQQUxFVFRFXzEwQklUX1JFRF9VRFcoeCkNCj4gCVJFR19GSUVMRF9QUkVQKFBBTEVU VEVfMTBCSVRfUkVEX1VEV19NQVNLLCAoWCkpDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX0dS RUVOX0VYUF9NQVNLCVJFR19HRU5NQVNLKDE1LCAxNCkNCj4gKyNkZWZpbmUgIFBBTEVUVEVfMTBC SVRfR1JFRU5fRVhQKHgpDQo+IAlSRUdfRklFTERfUFJFUChQQUxFVFRFXzEwQklUX0dSRUVOX0VY UF9NQVNLLCAoeCkpDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX0dSRUVOX01BTlRfTUFTSwlS RUdfR0VOTUFTSygxMywgMTApDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX0dSRUVOX01BTlQo eCkNCj4gCVJFR19GSUVMRF9QUkVQKFBBTEVUVEVfMTBCSVRfR1JFRU5fTUFOVF9NQVNLLCAoeCkp DQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX0dSRUVOX1VEV19NQVNLCVJFR19HRU5NQVNLKDks IDgpDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX0dSRUVOX1VEVyh4KQ0KPiAJUkVHX0ZJRUxE X1BSRVAoUEFMRVRURV8xMEJJVF9HUkVFTl9VRFdfTUFTSywgKHgpKQ0KPiArI2RlZmluZSAgUEFM RVRURV8xMEJJVF9CTFVFX0VYUF9NQVNLCVJFR19HRU5NQVNLKDcsIDYpDQo+ICsjZGVmaW5lICBQ QUxFVFRFXzEwQklUX0JMVUVfRVhQKHgpDQo+IAlSRUdfRklFTERfUFJFUChQQUxFVFRFXzEwQklU X0JMVUVfRVhQX01BU0ssICh4KSkNCj4gKyNkZWZpbmUgIFBBTEVUVEVfMTBCSVRfQkxVRV9NQU5U X01BU0sJUkVHX0dFTk1BU0soNSwgMikNCj4gKyNkZWZpbmUgIFBBTEVUVEVfMTBCSVRfQkxVRV9N QU5UKHgpDQo+IAlSRUdfRklFTERfUFJFUChQQUxFVFRFXzEwQklUX0JMVUVfTUFOVF9NQVNLLCAo eCkpDQo+ICsjZGVmaW5lICBQQUxFVFRFXzEwQklUX0JMVUVfVURXX01BU0sJUkVHX0dFTk1BU0so MSwgMCkNCj4gKyNkZWZpbmUgIFBBTEVUVEVfMTBCSVRfQkxVRV9VRFcoeCkNCj4gCVJFR19GSUVM RF9QUkVQKFBBTEVUVEVfMTBCSVRfQkxVRV9VRFdfTUFTSywgKHgpKQ0KPiArI2RlZmluZSBQQUxF VFRFKHBpcGUsIGkpCV9NTUlPKERJU1BMQVlfTU1JT19CQVNFKGRldl9wcml2KSArCVwNCj4gIAkJ CQkgICAgICBfUElDSygocGlwZSksIF9QQUxFVFRFX0EsCQlcDQo+ICAJCQkJCSAgICBfUEFMRVRU RV9CLCBfQ0hWX1BBTEVUVEVfQykgKyBcDQo+ICAJCQkJICAgICAgKGkpICogNCkNCj4gLS0NCj4g Mi4yNi4yDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcNCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=