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=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 3A332C2D0DB for ; Wed, 29 Jan 2020 14:05:51 +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 131F82071E for ; Wed, 29 Jan 2020 14:05:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 131F82071E 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 D5A936E397; Wed, 29 Jan 2020 14:05:49 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4B6C26E397 for ; Wed, 29 Jan 2020 14:05:48 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Jan 2020 06:05:47 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,378,1574150400"; d="scan'208";a="261812608" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by fmsmga002.fm.intel.com with ESMTP; 29 Jan 2020 06:05:46 -0800 Received: from irsmsx605.ger.corp.intel.com (163.33.146.138) by IRSMSX153.ger.corp.intel.com (163.33.192.75) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 29 Jan 2020 14:05:45 +0000 Received: from irsmsx604.ger.corp.intel.com (163.33.146.137) by IRSMSX605.ger.corp.intel.com (163.33.146.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 29 Jan 2020 14:05:45 +0000 Received: from irsmsx604.ger.corp.intel.com ([163.33.146.137]) by IRSMSX604.ger.corp.intel.com ([163.33.146.137]) with mapi id 15.01.1713.004; Wed, 29 Jan 2020 14:05:45 +0000 From: "Lisovskiy, Stanislav" To: "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [PATCH 02/17] drm/i915: Move linetime wms into the crtc state Thread-Index: AQHVz7nEhcCx5LQHi0Od/ykYIFTij6gBufYA Date: Wed, 29 Jan 2020 14:05:44 +0000 Message-ID: <849511a6305da7415b30d1e590ac4494326ad67d.camel@intel.com> References: <20200120174728.21095-1-ville.syrjala@linux.intel.com> <20200120174728.21095-3-ville.syrjala@linux.intel.com> In-Reply-To: <20200120174728.21095-3-ville.syrjala@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.237.72.89] Content-ID: <0185CF4B08FA9F41868E6058CFB76391@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 02/17] drm/i915: Move linetime wms into the crtc state 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" T24gTW9uLCAyMDIwLTAxLTIwIGF0IDE5OjQ3ICswMjAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOg0K PiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0K PiANCj4gVGhlIGxpbmV0aW1lIHdhdGVybWFya3MgcmVhbGx5IGhhdmUgdmVyeSBsaXR0bGUgaW4g Y29tbW9uIHdpdGggdGhlDQo+IHBsYW5lIHdhdGVybWFya3MuIEl0IGxvb2tzIHRvIGJlIGNsZWFu ZXIgdG8gc2ltcGx5IHRyYWNrIHRoZW0gaW4NCj4gdGhlIGNydGNfc3RhdGUgYW5kIHByb2dyYW0g dGhlbSBmcm9tIHRoZSBub3JtYWwgbW9kZXNldC9mYXN0c2V0DQo+IHBhdGhzLg0KPiANCj4gVGhl IG9ubHkgZGFyayBjbG91ZCBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgdGhlIHJlZ2lzdGVyIGlz DQo+IHN0aWxsIHN1cHBvc2VkbHkgc2luZ2xlIGJ1ZmZlcmVkLiBTbyBpbiB0aGVvcnkgaXQgbWln aHQgc3RpbGwNCj4gbmVlZCBzb21lIGZvcm0gb2YgdHdvIHN0YWdlIHByb2dyYW1taW5nLiBOb3Rl IHRoYXQgZXZlbiB0aG91Z2gNCj4gSFNXL0JEV2hhdmUgdHdvIHN0YWdlIHByb2dyYW1taW5nIHdl IG5ldmVyIGNvbXB1dGVkIGFueSBzcGVjaWFsDQo+IGludGVybWVkaWF0ZSB2YWx1ZXMgZm9yIHRo ZSBsaW5ldGltZSB3YXRlcm1hcmtzLCBhbmQgb24gU0tMKw0KPiB3ZSBkb24ndCBldmVuIGhhdmUg dGhlIHR3byBzdGFnZSBzdHVmZiBwbHVnZ2VkIGluIHNpbmNlIGV2ZXJ5dGhpbmcNCj4gZWxzZSBp cyBkb3VibGUgYnVmZmVyZWQuIFNvIGxldCdzIGFzc3VtZSBpdCdzIGFsbCBmaW5lIGFuZA0KPiBj b250aW51ZSBkb2luZyB3aGF0IHdlJ3ZlIGJlZW4gZG9pbmcuDQo+IA0KPiBBY3R1YWxseSBvbiBI U1cvQkRXIHRoZSB2YWx1ZSBzaG91bGQgbm90IGV2ZW4gY2hhbmdlIHdpdGhvdXQNCj4gYSBmdWxs IG1vZGVzZXQgc2luY2UgaXQgZG9lc24ndCBhY2NvdW50IGZvciBwZml0IGRvd25zY2FsaW5nLg0K PiBUaHVzIG9ubHkgZmFzdGJvb3QgbWlnaHQgYmUgYWZmZWN0ZWQuIEJ1dCBvbiBTS0wrIHRoZSBw Zml0DQo+IHNjYWxpbmcgZmFjdG9yIGlzIHRha2UgaW50byBjb25zaWRlcmF0aW9uIHNvIHRoZSB2 YWx1ZSBtYXkNCj4gY2hhbmdlIGR1cmluZyBhbnkgZmFzdHNldC4NCj4gDQo+IEFzIGEgYm9udXMg d2UnbGwgcGx1ZyB0aGlzIHRoaW5nIGludG8gdGhlIHN0YXRlDQo+IGNoZWNrZXIvZHVtcCBub3cu DQo+IA0KPiB2MjogUmViYXNlIGR1ZSB0byBiaWdqb2luZXIgcHJlcA0KPiB2MjogT25seSBjb21w dXRlIGlwcyBsaW5ldGltZSBmb3IgSVBTIGNhcGFibGUgcGlwZXMuDQo+ICAgICBCc3BlYyBzYXlz IHRoZSByZWdpc3RlciB2YWx1ZXMgaXMgaWdub3JlZCBmb3Igb3RoZXINCj4gICAgIHBpcGVzLCBi dXQgaW4gZmFjdCBpdCBjYW4ndCBldmVuIGJlIHdyaXR0ZW4gc28gdGhlDQo+ICAgICBzdGF0ZSBj aGVja2VyIGJlY29tZXMgdW5oYXBweSBpZiB3ZSBkb24ndCBjb21wdXRlDQo+ICAgICBpdCBhcyB6 ZXJvLg0KPiANCj4gQ2M6IFN0YW5pc2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5saXNvdnNraXlA aW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jICB8ICA5NSArKysrKysrKysrKysrLQ0KPiAgLi4uL2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgICA3ICstDQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDEgLQ0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgIHwgMTE3ICstLS0tLS0tLS0tLS0t LS0NCj4gLS0NCj4gIDQgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKSwgMTIyIGRlbGV0 aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMNCj4gaW5kZXggNzZjMTczNDFkZjJiLi44ZGNiODZjNTFhYWEgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+IEBAIC02ODg1 LDYgKzY4ODUsMTYgQEAgc3RhdGljIHZvaWQgaWNsX3BpcGVfbWJ1c19lbmFibGUoc3RydWN0DQo+ IGludGVsX2NydGMgKmNydGMpDQo+ICAJSTkxNV9XUklURShQSVBFX01CVVNfREJPWF9DVEwocGlw ZSksIHZhbCk7DQo+ICB9DQo+ICANCj4gK3N0YXRpYyB2b2lkIGhzd19zZXRfbGluZXRpbWVfd20o Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpDQo+ICt7DQo+ICsJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7DQo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7DQo+ICsNCj4gKwlJOTE1X1dSSVRFKFdNX0xJTkVUSU1FKGNydGMtPnBp cGUpLA0KPiArCQkgICBIU1dfTElORVRJTUUoY3J0Y19zdGF0ZS0+bGluZXRpbWUpIHwNCj4gKwkJ ICAgSFNXX0lQU19MSU5FVElNRShjcnRjX3N0YXRlLT5pcHNfbGluZXRpbWUpKTsNCj4gK30NCj4g Kw0KPiAgc3RhdGljIHZvaWQgaHN3X3NldF9mcmFtZV9zdGFydF9kZWxheShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZQ0KPiAqY3J0Y19zdGF0ZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsNCj4gQEAg LTY5NjksNiArNjk3OSw4IEBAIHN0YXRpYyB2b2lkIGhzd19jcnRjX2VuYWJsZShzdHJ1Y3QNCj4g aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 IDkpDQo+ICAJCWludGVsX2Rpc2FibGVfcHJpbWFyeV9wbGFuZShuZXdfY3J0Y19zdGF0ZSk7DQo+ ICANCj4gKwloc3dfc2V0X2xpbmV0aW1lX3dtKG5ld19jcnRjX3N0YXRlKTsNCj4gKw0KPiAgCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQ0KPiAgCQlpY2xfc2V0X3BpcGVfY2hpY2tlbihj cnRjKTsNCj4gIA0KPiBAQCAtMTA5NDcsNiArMTA5NTksNyBAQCBzdGF0aWMgYm9vbCBoc3dfZ2V0 X3BpcGVfY29uZmlnKHN0cnVjdA0KPiBpbnRlbF9jcnRjICpjcnRjLA0KPiAgCWVudW0gaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOw0KPiAgCXU2NCBwb3dlcl9kb21haW5f bWFzazsNCj4gIAlib29sIGFjdGl2ZTsNCj4gKwl1MzIgdG1wOw0KPiAgDQo+ICAJcGlwZV9jb25m aWctPm1hc3Rlcl90cmFuc2NvZGVyID0gSU5WQUxJRF9UUkFOU0NPREVSOw0KPiAgDQo+IEBAIC0x MTAxMCw3ICsxMTAyMyw3IEBAIHN0YXRpYyBib29sIGhzd19nZXRfcGlwZV9jb25maWcoc3RydWN0 DQo+IGludGVsX2NydGMgKmNydGMsDQo+ICAJcGlwZV9jb25maWctPmNzY19tb2RlID0gSTkxNV9S RUFEKFBJUEVfQ1NDX01PREUoY3J0Yy0+cGlwZSkpOw0KPiAgDQo+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkgew0KPiAtCQl1MzIgdG1wID0gSTkxNV9SRUFEKFNLTF9CT1RUT01fQ09M T1IoY3J0Yy0+cGlwZSkpOw0KPiArCQl0bXAgPSBJOTE1X1JFQUQoU0tMX0JPVFRPTV9DT0xPUihj cnRjLT5waXBlKSk7DQo+ICANCj4gIAkJaWYgKHRtcCAmIFNLTF9CT1RUT01fQ09MT1JfR0FNTUFf RU5BQkxFKQ0KPiAgCQkJcGlwZV9jb25maWctPmdhbW1hX2VuYWJsZSA9IHRydWU7DQo+IEBAIC0x MTAyMyw2ICsxMTAzNiwxMiBAQCBzdGF0aWMgYm9vbCBoc3dfZ2V0X3BpcGVfY29uZmlnKHN0cnVj dA0KPiBpbnRlbF9jcnRjICpjcnRjLA0KPiAgDQo+ICAJaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhw aXBlX2NvbmZpZyk7DQo+ICANCj4gKwl0bXAgPSBJOTE1X1JFQUQoV01fTElORVRJTUUoY3J0Yy0+ cGlwZSkpOw0KPiArCXBpcGVfY29uZmlnLT5saW5ldGltZSA9IFJFR19GSUVMRF9HRVQoSFNXX0xJ TkVUSU1FX01BU0ssIHRtcCk7DQoNClNob3VsZG4ndCB3ZSBoYXZlIGFsc28gZ2VuID49IDkgY2hl Y2sgaGVyZT8gSWYgbGV0J3Mgc2F5DQpoc3dfZ2V0X3BpcGVfY29uZmlnIHdhcyBjYWxsZWQgZm9y IG5vbi1nZW4gOSwgbm9uLWhzdyBhbmQgbm9uLWJkdyBjYXNlLg0KDQpJIHNlZSB0aGF0IGhzd19n ZXRfcGlwZV9jb25maWcgaG9vayBpcyB1c2VkIGFsc28gZm9yIGFueSBwbGF0Zm9ybSB3aGljaA0K ZXZhbHVhdGVzIEhBU19EREkgY2hlY2sgdG8gdHJ1ZSBpbiBpbnRlbF9pbml0X2Rpc3BsYXlfaG9v a3MuDQoNCkF0IGxlYXN0IEkgc2VlIHRoYXQgZXZlcnl3aGVyZSBlbHNlIHRoZXJlIGlzIGEgY2hl Y2sgZm9yID49IGdlbiA5LA0Kd2hlbiB5b3Ugc2V0IHBpcGVfY29uZmlnLT5saW5ldGltZS4gDQoN ClN0YW4NCg0KPiArCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2 X3ByaXYpKQ0KPiArCQlwaXBlX2NvbmZpZy0+aXBzX2xpbmV0aW1lID0NCj4gKwkJCVJFR19GSUVM RF9HRVQoSFNXX0lQU19MSU5FVElNRV9NQVNLLCB0bXApOw0KPiArDQo+ICAJcG93ZXJfZG9tYWlu ID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOw0KPiAgCVdBUk5f T04ocG93ZXJfZG9tYWluX21hc2sgJiBCSVRfVUxMKHBvd2VyX2RvbWFpbikpOw0KPiAgDQo+IEBA IC0xMjUwOCw2ICsxMjUyNyw1MyBAQCBzdGF0aWMgaW50DQo+IGljbF9jb21wdXRlX3BvcnRfc3lu Y19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQo+ICAJcmV0dXJu IDA7DQo+ICB9DQo+ICANCj4gK3N0YXRpYyB1MTYgaHN3X2xpbmV0aW1lX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpjcnRjX3N0YXRlKQ0KPiArew0KPiArCWNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0NCj4gKwkJJmNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7DQo+ICsNCj4gKwlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkNCj4g KwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoYWRqdXN0ZWRf bW9kZS0+Y3J0Y19odG90YWwgKiAxMDAwICogOCwNCj4gKwkJCQkgYWRqdXN0ZWRfbW9kZS0+Y3J0 Y19jbG9jayk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB1MTYgaHN3X2lwc19saW5ldGltZV93bShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiAqY3J0Y19zdGF0ZSkNCj4gK3sNCj4gKwlj b25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9DQo+ICsJCXRvX2ludGVsX2F0 b21pY19zdGF0ZShjcnRjX3N0YXRlLT51YXBpLnN0YXRlKTsNCj4gKwljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9DQo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1 c3RlZF9tb2RlOw0KPiArDQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5lbmFibGUpDQo+ICsJCXJl dHVybiAwOw0KPiArDQo+ICsJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGFkanVzdGVkX21vZGUt PmNydGNfaHRvdGFsICogMTAwMCAqIDgsDQo+ICsJCQkJIHN0YXRlLT5jZGNsay5sb2dpY2FsLmNk Y2xrKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHUxNiBza2xfbGluZXRpbWVfd20oY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNl LmRldik7DQo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PQ0KPiArCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsNCj4gKwl1MTYgbGluZXRpbWVf d207DQo+ICsNCj4gKwlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkNCj4gKwkJcmV0dXJuIDA7 DQo+ICsNCj4gKwlsaW5ldGltZV93bSA9IERJVl9ST1VORF9VUChhZGp1c3RlZF9tb2RlLT5jcnRj X2h0b3RhbCAqIDEwMDAgKg0KPiA4LA0KPiArCQkJCSAgIGNydGNfc3RhdGUtPnBpeGVsX3JhdGUp Ow0KPiArDQo+ICsJLyogRGlzcGxheSBXQSAjMTEzNTogQlhUOkFMTCBHTEs6QUxMICovDQo+ICsJ aWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpICYmIGRldl9wcml2LT5pcGNfZW5hYmxlZCkNCj4gKwkJ bGluZXRpbWVfd20gLz0gMjsNCj4gKw0KPiArCXJldHVybiBsaW5ldGltZV93bTsNCj4gK30NCj4g Kw0KPiAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSwNCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykNCj4g IHsNCj4gQEAgLTEyNTc5LDYgKzEyNjQ1LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9t aWNfY2hlY2soc3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ICAJaWYgKEhB U19JUFMoZGV2X3ByaXYpKQ0KPiAgCQljcnRjX3N0YXRlLT5pcHNfZW5hYmxlZCA9DQo+IGhzd19j b21wdXRlX2lwc19jb25maWcoY3J0Y19zdGF0ZSk7DQo+ICANCj4gKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KSB7DQo+ICsJCWNydGNfc3RhdGUtPmxpbmV0aW1lID0gc2tsX2xpbmV0aW1l X3dtKGNydGNfc3RhdGUpOw0KPiArCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8 fCBJU19IQVNXRUxMKGRldl9wcml2KSkgew0KPiArCQljcnRjX3N0YXRlLT5saW5ldGltZSA9IGhz d19saW5ldGltZV93bShjcnRjX3N0YXRlKTsNCj4gKwkJaWYgKGhzd19jcnRjX3N1cHBvcnRzX2lw cyhjcnRjKSkNCj4gKwkJCWNydGNfc3RhdGUtPmlwc19saW5ldGltZSA9DQo+IGhzd19pcHNfbGlu ZXRpbWVfd20oY3J0Y19zdGF0ZSk7DQo+ICsJfQ0KPiArDQo+ICAJcmV0dXJuIHJldDsNCj4gIH0N Cj4gIA0KPiBAQCAtMTI4NjgsNiArMTI5NDIsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3Bp cGVfY29uZmlnKGNvbnN0DQo+IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywN Cj4gIAkJICAgICAgcGlwZV9jb25maWctPnBpcGVfc3JjX3csIHBpcGVfY29uZmlnLT5waXBlX3Ny Y19oLA0KPiAgCQkgICAgICBwaXBlX2NvbmZpZy0+cGl4ZWxfcmF0ZSk7DQo+ICANCj4gKwlEUk1f REVCVUdfS01TKCJsaW5ldGltZTogJWQsIGlwcyBsaW5ldGltZTogJWRcbiIsDQo+ICsJCSAgICAg IHBpcGVfY29uZmlnLT5saW5ldGltZSwgcGlwZV9jb25maWctDQo+ID5pcHNfbGluZXRpbWUpOw0K PiArDQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkNCj4gIAkJRFJNX0RFQlVHX0tN UygibnVtX3NjYWxlcnM6ICVkLCBzY2FsZXJfdXNlcnM6IDB4JXgsDQo+IHNjYWxlcl9pZDogJWRc biIsDQo+ICAJCQkgICAgICBjcnRjLT5udW1fc2NhbGVycywNCj4gQEAgLTEzNjM4LDEwICsxMzcx NSwxMiBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9j cnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywNCj4gIAkJUElQRV9DT05GX0NIRUNLX0JPT0woZ2Ft bWFfZW5hYmxlKTsNCj4gIAkJUElQRV9DT05GX0NIRUNLX0JPT0woY3NjX2VuYWJsZSk7DQo+ICAN Cj4gKwkJUElQRV9DT05GX0NIRUNLX0kobGluZXRpbWUpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tf SShpcHNfbGluZXRpbWUpOw0KPiArDQo+ICAJCWJwX2dhbW1hID0NCj4gaW50ZWxfY29sb3JfZ2V0 X2dhbW1hX2JpdF9wcmVjaXNpb24ocGlwZV9jb25maWcpOw0KPiAgCQlpZiAoYnBfZ2FtbWEpDQo+ ICAJCQlQSVBFX0NPTkZfQ0hFQ0tfQ09MT1JfTFVUKGdhbW1hX21vZGUsDQo+IGh3LmdhbW1hX2x1 dCwgYnBfZ2FtbWEpOw0KPiAtDQo+ICAJfQ0KPiAgDQo+ICAJUElQRV9DT05GX0NIRUNLX0JPT0wo ZG91YmxlX3dpZGUpOw0KPiBAQCAtMTQ3OTgsNiArMTQ4NzcsMTggQEAgc3RhdGljIHZvaWQgaW50 ZWxfcGlwZV9mYXN0c2V0KGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0 Y19zdGF0ZSwNCj4gIAkJCWlsa19wZml0X2Rpc2FibGUob2xkX2NydGNfc3RhdGUpOw0KPiAgCX0N Cj4gIA0KPiArCS8qDQo+ICsJICogVGhlIHJlZ2lzdGVyIGlzIHN1cHBvc2VkbHkgc2luZ2xlIGJ1 ZmZlcmVkIHNvIHBlcmhhcHMNCj4gKwkgKiBub3QgMTAwJSBjb3JyZWN0IHRvIGRvIHRoaXMgaGVy ZS4gQnV0IFNLTCsgY2FsY3VsYXRlDQo+ICsJICogdGhpcyBiYXNlZCBvbiB0aGUgYWRqdXN0IHBp eGVsIHJhdGUgc28gcGZpdCBjaGFuZ2VzIGRvDQo+ICsJICogYWZmZWN0IGl0IGFuZCBzbyBpdCBt dXN0IGJlIHVwZGF0ZWQgZm9yIGZhc3RzZXRzLg0KPiArCSAqIEhTVy9CRFcgb25seSByZWFsbHkg bmVlZCB0aGlzIGhlcmUgZm9yIGZhc3Rib290LCBhZnRlcg0KPiArCSAqIHRoYXQgdGhlIHZhbHVl IHNob3VsZCBub3QgY2hhbmdlIHdpdGhvdXQgYSBmdWxsIG1vZGVzZXQuDQo+ICsJICovDQo+ICsJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSB8fA0KPiArCSAgICBJU19CUk9BRFdFTEwoZGV2 X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQ0KPiArCQloc3dfc2V0X2xpbmV0aW1lX3dt KG5ld19jcnRjX3N0YXRlKTsNCj4gKw0KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEx KQ0KPiAgCQlpY2xfc2V0X3BpcGVfY2hpY2tlbihjcnRjKTsNCj4gIH0NCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gaW5k ZXggYmZlODVlMTgwZTE2Li4yZDg0OTE1OTA1MDEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+IEBAIC02NjIsOCAr NjYyLDYgQEAgc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlIHsNCj4gIA0KPiAgc3RydWN0 IGludGVsX3BpcGVfd20gew0KPiAgCXN0cnVjdCBpbnRlbF93bV9sZXZlbCB3bVs1XTsNCj4gLQl1 MTYgbGluZXRpbWU7DQo+IC0JdTE2IGlwc19saW5ldGltZTsNCj4gIAlib29sIGZiY193bV9lbmFi bGVkOw0KPiAgCWJvb2wgcGlwZV9lbmFibGVkOw0KPiAgCWJvb2wgc3ByaXRlc19lbmFibGVkOw0K PiBAQCAtNjc5LDcgKzY3Nyw2IEBAIHN0cnVjdCBza2xfcGxhbmVfd20gew0KPiAgDQo+ICBzdHJ1 Y3Qgc2tsX3BpcGVfd20gew0KPiAgCXN0cnVjdCBza2xfcGxhbmVfd20gcGxhbmVzW0k5MTVfTUFY X1BMQU5FU107DQo+IC0JdTMyIGxpbmV0aW1lOw0KPiAgfTsNCj4gIA0KPiAgZW51bSB2bHZfd21f bGV2ZWwgew0KPiBAQCAtMTA1MCw2ICsxMDQ3LDEwIEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl IHsNCj4gIAkJc3RydWN0IGRybV9kc2NfY29uZmlnIGNvbmZpZzsNCj4gIAl9IGRzYzsNCj4gIA0K PiArCS8qIEhTVysgbGluZXRpbWUgd2F0ZXJtYXJrcyAqLw0KPiArCXUxNiBsaW5ldGltZTsNCj4g Kwl1MTYgaXBzX2xpbmV0aW1lOw0KPiArDQo+ICAJLyogRm9yd2FyZCBFcnJvciBjb3JyZWN0aW9u IFN0YXRlICovDQo+ICAJYm9vbCBmZWNfZW5hYmxlOw0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaA0KPiBpbmRleCAwNzdhZjIyYjgzNDAuLjViZDQwMTg0ZGRlZSAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oDQo+IEBAIC03NDQsNyArNzQ0LDYgQEAgc3RydWN0IGlsa193bV92 YWx1ZXMgew0KPiAgCXUzMiB3bV9waXBlWzNdOw0KPiAgCXUzMiB3bV9scFszXTsNCj4gIAl1MzIg d21fbHBfc3ByWzNdOw0KPiAtCXUzMiB3bV9saW5ldGltZVszXTsNCj4gIAlib29sIGVuYWJsZV9m YmNfd207DQo+ICAJZW51bSBpbnRlbF9kZGJfcGFydGl0aW9uaW5nIHBhcnRpdGlvbmluZzsNCj4g IH07DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiBpbmRleCBhNGI2NmVlMWUzZDguLmVk ZDYyMzY3MDA2ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Yw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+IEBAIC0yODEwLDM0 ICsyODEwLDYgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0 DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCXJlc3VsdC0+ZW5hYmxlID0gdHJ1 ZTsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIHUzMg0KPiAtaHN3X2xpbmV0aW1lX3dtKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQ0KPiAtew0KPiAtCWNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0NCj4gLQkJJmNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7DQo+IC0NCj4gLQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkNCj4g LQkJcmV0dXJuIDA7DQo+IC0NCj4gLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoYWRqdXN0ZWRf bW9kZS0+Y3J0Y19odG90YWwgKiAxMDAwICogOCwNCj4gLQkJCQkgYWRqdXN0ZWRfbW9kZS0+Y3J0 Y19jbG9jayk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB1MzINCj4gLWhzd19pcHNfbGluZXRpbWVf d20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+IC17DQo+IC0J Y29uc3Qgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPQ0KPiAtCQl0b19pbnRlbF9h dG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZSk7DQo+IC0JY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQ0KPiAtCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsNCj4gLQ0KPiAtCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQ0KPiAtCQly ZXR1cm4gMDsNCj4gLQ0KPiAtCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChhZGp1c3RlZF9tb2Rl LT5jcnRjX2h0b3RhbCAqIDEwMDAgKiA4LA0KPiAtCQkJCSBzdGF0ZS0+Y2RjbGsubG9naWNhbC5j ZGNsayk7DQo+IC19DQo+IC0NCj4gIHN0YXRpYyB2b2lkIGludGVsX3JlYWRfd21fbGF0ZW5jeShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJCQkJICB1MTYgd21bOF0pDQo+ ICB7DQo+IEBAIC0zMTc4LDExICszMTUwLDYgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBl X3dtKHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQ0KPiAgCWlsa19jb21w dXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCAwLCBjcnRjX3N0YXRlLA0KPiAgCQkJ ICAgICBwcmlzdGF0ZSwgc3Byc3RhdGUsIGN1cnN0YXRlLCAmcGlwZV93bS0NCj4gPndtWzBdKTsN Cj4gIA0KPiAtCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3By aXYpKSB7DQo+IC0JCXBpcGVfd20tPmxpbmV0aW1lID0gaHN3X2xpbmV0aW1lX3dtKGNydGNfc3Rh dGUpOw0KPiAtCQlwaXBlX3dtLT5pcHNfbGluZXRpbWUgPQ0KPiBoc3dfaXBzX2xpbmV0aW1lX3dt KGNydGNfc3RhdGUpOw0KPiAtCX0NCj4gLQ0KPiAgCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVfd20o ZGV2X3ByaXYsIHBpcGVfd20pKQ0KPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gIA0KPiBAQCAtMzQz Myw5ICszNDAwLDYgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QN Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICANCj4gIAkJaWYgKFdBUk5fT04oIXIt PmVuYWJsZSkpDQo+ICAJCQljb250aW51ZTsNCj4gLQkJcmVzdWx0cy0+d21fbGluZXRpbWVbcGlw ZV0gPQ0KPiAtCQkJSFNXX0xJTkVUSU1FKHBpcGVfd20tPmxpbmV0aW1lKSB8DQo+IC0JCQlIU1df SVBTX0xJTkVUSU1FKHBpcGVfd20tPmlwc19saW5ldGltZSk7DQo+ICANCj4gIAkJcmVzdWx0cy0+ d21fcGlwZVtwaXBlXSA9DQo+ICAJCQkoci0+cHJpX3ZhbCA8PCBXTTBfUElQRV9QTEFORV9TSElG VCkgfA0KPiBAQCAtMzQ3NSw3ICszNDM5LDYgQEAgaWxrX2ZpbmRfYmVzdF9yZXN1bHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2LA0KPiAgDQo+ICAvKiBkaXJ0eSBiaXRzIHVz ZWQgdG8gdHJhY2sgd2hpY2ggd2F0ZXJtYXJrcyBuZWVkIGNoYW5nZXMgKi8NCj4gICNkZWZpbmUg V01fRElSVFlfUElQRShwaXBlKSAoMSA8PCAocGlwZSkpDQo+IC0jZGVmaW5lIFdNX0RJUlRZX0xJ TkVUSU1FKHBpcGUpICgxIDw8ICg4ICsgKHBpcGUpKSkNCj4gICNkZWZpbmUgV01fRElSVFlfTFAo d21fbHApICgxIDw8ICgxNSArICh3bV9scCkpKQ0KPiAgI2RlZmluZSBXTV9ESVJUWV9MUF9BTEwg KFdNX0RJUlRZX0xQKDEpIHwgV01fRElSVFlfTFAoMikgfA0KPiBXTV9ESVJUWV9MUCgzKSkNCj4g ICNkZWZpbmUgV01fRElSVFlfRkJDICgxIDw8IDI0KQ0KPiBAQCAtMzQ5MCwxMiArMzQ1Myw2IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQNCj4gaWxrX2NvbXB1dGVfd21fZGlydHkoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCWludCB3bV9scDsNCj4gIA0KPiAgCWZvcl9lYWNo X3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsNCj4gLQkJaWYgKG9sZC0+d21fbGluZXRpbWVbcGlwZV0g IT0gbmV3LT53bV9saW5ldGltZVtwaXBlXSkgew0KPiAtCQkJZGlydHkgfD0gV01fRElSVFlfTElO RVRJTUUocGlwZSk7DQo+IC0JCQkvKiBNdXN0IGRpc2FibGUgTFAxKyB3YXRlcm1hcmtzIHRvbyAq Lw0KPiAtCQkJZGlydHkgfD0gV01fRElSVFlfTFBfQUxMOw0KPiAtCQl9DQo+IC0NCj4gIAkJaWYg KG9sZC0+d21fcGlwZVtwaXBlXSAhPSBuZXctPndtX3BpcGVbcGlwZV0pIHsNCj4gIAkJCWRpcnR5 IHw9IFdNX0RJUlRZX1BJUEUocGlwZSk7DQo+ICAJCQkvKiBNdXN0IGRpc2FibGUgTFAxKyB3YXRl cm1hcmtzIHRvbyAqLw0KPiBAQCAtMzU4NywxMyArMzU0NCw2IEBAIHN0YXRpYyB2b2lkIGlsa193 cml0ZV93bV92YWx1ZXMoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAg CWlmIChkaXJ0eSAmIFdNX0RJUlRZX1BJUEUoUElQRV9DKSkNCj4gIAkJSTkxNV9XUklURShXTTBf UElQRUNfSVZCLCByZXN1bHRzLT53bV9waXBlWzJdKTsNCj4gIA0KPiAtCWlmIChkaXJ0eSAmIFdN X0RJUlRZX0xJTkVUSU1FKFBJUEVfQSkpDQo+IC0JCUk5MTVfV1JJVEUoV01fTElORVRJTUUoUElQ RV9BKSwgcmVzdWx0cy0NCj4gPndtX2xpbmV0aW1lWzBdKTsNCj4gLQlpZiAoZGlydHkgJiBXTV9E SVJUWV9MSU5FVElNRShQSVBFX0IpKQ0KPiAtCQlJOTE1X1dSSVRFKFdNX0xJTkVUSU1FKFBJUEVf QiksIHJlc3VsdHMtDQo+ID53bV9saW5ldGltZVsxXSk7DQo+IC0JaWYgKGRpcnR5ICYgV01fRElS VFlfTElORVRJTUUoUElQRV9DKSkNCj4gLQkJSTkxNV9XUklURShXTV9MSU5FVElNRShQSVBFX0Mp LCByZXN1bHRzLQ0KPiA+d21fbGluZXRpbWVbMl0pOw0KPiAtDQo+ICAJaWYgKGRpcnR5ICYgV01f RElSVFlfRERCKSB7DQo+ICAJCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKSB7DQo+ICAJCQl2YWwgPSBJOTE1X1JFQUQoV01fTUlTQyk7DQo+IEBAIC00 ODQ3LDI0ICs0Nzk3LDYgQEAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdA0KPiBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiAgCX0NCj4gIH0NCj4gIA0KPiAtc3RhdGlj IHUzMg0KPiAtc2tsX2NvbXB1dGVfbGluZXRpbWVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpDQo+IC17DQo+IC0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlID0gY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZTsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOw0KPiAtCXVpbnRfZml4ZWRfMTZfMTZf dCBsaW5ldGltZV91czsNCj4gLQl1MzIgbGluZXRpbWVfd207DQo+IC0NCj4gLQlsaW5ldGltZV91 cyA9IGludGVsX2dldF9saW5ldGltZV91cyhjcnRjX3N0YXRlKTsNCj4gLQlsaW5ldGltZV93bSA9 IGZpeGVkMTZfdG9fdTMyX3JvdW5kX3VwKG11bF91MzJfZml4ZWQxNig4LA0KPiBsaW5ldGltZV91 cykpOw0KPiAtDQo+IC0JLyogRGlzcGxheSBXQSAjMTEzNTogQlhUOkFMTCBHTEs6QUxMICovDQo+ IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpICYmIGRldl9wcml2LT5pcGNfZW5hYmxlZCkNCj4g LQkJbGluZXRpbWVfd20gLz0gMjsNCj4gLQ0KPiAtCXJldHVybiBsaW5ldGltZV93bTsNCj4gLX0N Cj4gLQ0KPiAgc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiAqY3J0Y19zdGF0ZSwNCj4gIAkJCQkgICAgICBjb25zdCBz dHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd3AsDQo+ICAJCQkJICAgICAgc3RydWN0IHNrbF9wbGFuZV93 bSAqd20pDQo+IEBAIC01MDUyLDggKzQ5ODQsNiBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9waXBl X3dtKHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQ0KPiAgCQkJcmV0dXJu IHJldDsNCj4gIAl9DQo+ICANCj4gLQlwaXBlX3dtLT5saW5ldGltZSA9IHNrbF9jb21wdXRlX2xp bmV0aW1lX3dtKGNydGNfc3RhdGUpOw0KPiAtDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+ICANCj4g QEAgLTUxNzgsNyArNTEwOCw3IEBAIHN0YXRpYyBib29sIHNrbF9waXBlX3dtX2VxdWFscyhzdHJ1 Y3QNCj4gaW50ZWxfY3J0YyAqY3J0YywNCj4gIAkJCXJldHVybiBmYWxzZTsNCj4gIAl9DQo+ICAN Cj4gLQlyZXR1cm4gd20xLT5saW5ldGltZSA9PSB3bTItPmxpbmV0aW1lOw0KPiArCXJldHVybiB0 cnVlOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgaW5saW5lIGJvb2wgc2tsX2RkYl9lbnRyaWVzX292 ZXJsYXAoY29uc3Qgc3RydWN0DQo+IHNrbF9kZGJfZW50cnkgKmEsDQo+IEBAIC01NTU5LDQwICs1 NDg5LDYgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZQ0KPiAqc3Rh dGUpDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+ICANCj4gLXN0YXRpYyB2b2lkIHNrbF9hdG9taWNf dXBkYXRlX2NydGNfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZQ0KPiAqc3RhdGUsDQo+IC0J CQkJICAgICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpDQo+IC17DQo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+IC0JY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQ0KPiAtCQlpbnRlbF9hdG9t aWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsNCj4gLQljb25zdCBzdHJ1Y3Qgc2ts X3BpcGVfd20gKnBpcGVfd20gPSAmY3J0Y19zdGF0ZS0NCj4gPndtLnNrbC5vcHRpbWFsOw0KPiAt CWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsNCj4gLQ0KPiAtCWlmICgoc3RhdGUtPndtX3Jl c3VsdHMuZGlydHlfcGlwZXMgJiBCSVQoY3J0Yy0+cGlwZSkpID09IDApDQo+IC0JCXJldHVybjsN Cj4gLQ0KPiAtCUk5MTVfV1JJVEUoV01fTElORVRJTUUocGlwZSksIEhTV19MSU5FVElNRShwaXBl X3dtLT5saW5ldGltZSkpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBza2xfaW5pdGlhbF93 bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gLQkJCSAgIHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQ0KPiAtew0KPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOw0KPiAtCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlID0NCj4gLQkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0 ZShzdGF0ZSwgY3J0Yyk7DQo+IC0Jc3RydWN0IHNrbF9kZGJfdmFsdWVzICpyZXN1bHRzID0gJnN0 YXRlLT53bV9yZXN1bHRzOw0KPiAtDQo+IC0JaWYgKChyZXN1bHRzLT5kaXJ0eV9waXBlcyAmIEJJ VChjcnRjLT5waXBlKSkgPT0gMCkNCj4gLQkJcmV0dXJuOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPndtLndtX211dGV4KTsNCj4gLQ0KPiAtCWlmIChjcnRjX3N0YXRlLT51YXBpLmFj dGl2ZV9jaGFuZ2VkKQ0KPiAtCQlza2xfYXRvbWljX3VwZGF0ZV9jcnRjX3dtKHN0YXRlLCBjcnRj KTsNCj4gLQ0KPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsNCj4gLX0N Cj4gLQ0KPiAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwNCj4gIAkJCQkgIHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNv bmZpZykNCj4gIHsNCj4gQEAgLTU3MTUsOSArNTYxMSw2IEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0 X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjDQo+ICpjcnRjLA0KPiAgDQo+ICAJaWYgKCFjcnRj LT5hY3RpdmUpDQo+ICAJCXJldHVybjsNCj4gLQ0KPiAtCXZhbCA9IEk5MTVfUkVBRChXTV9MSU5F VElNRShwaXBlKSk7DQo+IC0Jb3V0LT5saW5ldGltZSA9IFJFR19GSUVMRF9HRVQoSFNXX0xJTkVU SU1FX01BU0ssIHZhbCk7DQo+ICB9DQo+ICANCj4gIHZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+IEBAIC01NzU4LDggKzU2NTEsNiBA QCBzdGF0aWMgdm9pZCBpbGtfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0DQo+IGludGVsX2Ny dGMgKmNydGMpDQo+ICAJfTsNCj4gIA0KPiAgCWh3LT53bV9waXBlW3BpcGVdID0gSTkxNV9SRUFE KHdtMF9waXBlX3JlZ1twaXBlXSk7DQo+IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElT X0JST0FEV0VMTChkZXZfcHJpdikpDQo+IC0JCWh3LT53bV9saW5ldGltZVtwaXBlXSA9IEk5MTVf UkVBRChXTV9MSU5FVElNRShwaXBlKSk7DQo+ICANCj4gIAltZW1zZXQoYWN0aXZlLCAwLCBzaXpl b2YoKmFjdGl2ZSkpOw0KPiAgDQo+IEBAIC01Nzc4LDEwICs1NjY5LDYgQEAgc3RhdGljIHZvaWQg aWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdA0KPiBpbnRlbF9jcnRjICpjcnRjKQ0KPiAg CQlhY3RpdmUtPndtWzBdLnByaV92YWwgPSAodG1wICYgV00wX1BJUEVfUExBTkVfTUFTSykgPj4N Cj4gV00wX1BJUEVfUExBTkVfU0hJRlQ7DQo+ICAJCWFjdGl2ZS0+d21bMF0uc3ByX3ZhbCA9ICh0 bXAgJiBXTTBfUElQRV9TUFJJVEVfTUFTSykgPj4NCj4gV00wX1BJUEVfU1BSSVRFX1NISUZUOw0K PiAgCQlhY3RpdmUtPndtWzBdLmN1cl92YWwgPSB0bXAgJiBXTTBfUElQRV9DVVJTT1JfTUFTSzsN Cj4gLQkJYWN0aXZlLT5saW5ldGltZSA9IFJFR19GSUVMRF9HRVQoSFNXX0xJTkVUSU1FX01BU0ss DQo+IC0JCQkJCQkgaHctDQo+ID53bV9saW5ldGltZVtwaXBlXSk7DQo+IC0JCWFjdGl2ZS0+aXBz X2xpbmV0aW1lID0NCj4gUkVHX0ZJRUxEX0dFVChIU1dfSVBTX0xJTkVUSU1FX01BU0ssDQo+IC0J CQkJCQkgICAgIGh3LQ0KPiA+d21fbGluZXRpbWVbcGlwZV0pOw0KPiAgCX0gZWxzZSB7DQo+ICAJ CWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7DQo+ICAN Cj4gQEAgLTcyNjQsOCArNzE1MSw2IEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYpDQo+ICAJLyogRm9yIEZJRk8gd2F0ZXJtYXJrIHVwZGF0 ZXMgKi8NCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7DQo+ICAJCXNrbF9zZXR1 cF93bV9sYXRlbmN5KGRldl9wcml2KTsNCj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93 YXRlcm1hcmtzID0gc2tsX2luaXRpYWxfd207DQo+IC0JCWRldl9wcml2LT5kaXNwbGF5LmF0b21p Y191cGRhdGVfd2F0ZXJtYXJrcyA9DQo+IHNrbF9hdG9taWNfdXBkYXRlX2NydGNfd207DQo+ICAJ CWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfZ2xvYmFsX3dhdGVybWFya3MgPQ0KPiBza2xfY29t cHV0ZV93bTsNCj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7DQo+ICAJ CWlsa19zZXR1cF93bV9sYXRlbmN5KGRldl9wcml2KTsNCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=