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=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY 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 59346C2D0DB for ; Wed, 22 Jan 2020 18:51:28 +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 408A9217F4 for ; Wed, 22 Jan 2020 18:51:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 408A9217F4 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 C27316F64A; Wed, 22 Jan 2020 18:51:27 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3580B6F64A for ; Wed, 22 Jan 2020 18:51:26 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jan 2020 10:51:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,350,1574150400"; d="scan'208";a="245144234" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga002.jf.intel.com with ESMTP; 22 Jan 2020 10:51:25 -0800 Received: from fmsmsx101.amr.corp.intel.com (10.18.124.199) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 22 Jan 2020 10:51:25 -0800 Received: from fmsmsx117.amr.corp.intel.com ([169.254.3.3]) by fmsmsx101.amr.corp.intel.com ([169.254.1.117]) with mapi id 14.03.0439.000; Wed, 22 Jan 2020 10:51:24 -0800 From: "Souza, Jose" To: "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH 09/17] drm/i915: Extract intel_cdclk_state Thread-Index: AQHVz7nHbWs0m2XKTk6G6Zp/oFCEmqf3kIqA Date: Wed, 22 Jan 2020 18:51:24 +0000 Message-ID: <50ecb84cf92adb5a026c3a2ec83b76778c6147e7.camel@intel.com> References: <20200120174728.21095-1-ville.syrjala@linux.intel.com> <20200120174728.21095-10-ville.syrjala@linux.intel.com> In-Reply-To: <20200120174728.21095-10-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.24.12.154] Content-ID: MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 09/17] drm/i915: Extract intel_cdclk_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 PiANCj4gVXNlIHRoZSBzYW1lIHN0cnVjdHVyZSB0byBzdG9yZSB0aGUgY2RjbGsgc3RhdGUgaW4g Ym90aA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgYW5kIGRldl9wcml2LiBGaXJzdCBzdGVwIHRvd2Fy ZHMgcHJvcGVyDQo+IG9sZCB2cy4gbmV3IGNkY2xrIHN0YXRlcy4NCj4gDQoNClJldmlld2VkLWJ5 OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4NCg0KPiBTaWdu ZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pg0KPiAtLS0NCj4gIC4uLi9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUu YyB8ICAgNiArLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5j ICAgIHwgICA0ICstDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xr LmMgICAgfCAxNjggKysrKysrKysrKy0tLS0NCj4gLS0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDI5ICsrLQ0KPiAgLi4uL2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgIDMwICstLS0NCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICA1MSArKysrLS0NCj4gIDYgZmls ZXMgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMoKyksIDEzNyBkZWxldGlvbnMoLSkNCj4gDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFu ZS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUu Yw0KPiBpbmRleCAzZTk3YWY2ODJiMWIuLjU2M2NhZWMxZDIwMSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYw0KPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jDQo+IEBAIC0x NTksNiArMTU5LDggQEAgYm9vbCBpbnRlbF9wbGFuZV9jYWxjX21pbl9jZGNsayhzdHJ1Y3QNCj4g aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gIAkJCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lKQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmUtPmJhc2UuZGV2KTsNCj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUg KmNkY2xrX3N0YXRlID0NCj4gKwkJJmRldl9wcml2LT5jZGNsa19zdGF0ZTsNCj4gIAljb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0NCj4gIAkJaW50ZWxfYXRvbWlj X2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsNCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGxhbmVfc3RhdGUtPmh3LmNydGMpOw0KPiBAQCAtMTgy LDExICsxODQsMTEgQEAgYm9vbCBpbnRlbF9wbGFuZV9jYWxjX21pbl9jZGNsayhzdHJ1Y3QNCj4g aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gIAkgKiBzYWZlIGFzIGxvbmcgd2UgaG9sZCBh dCBsZWFzdCBvbmUgY3J0YyBtdXRleCAod2hpY2gNCj4gIAkgKiBtdXN0IGJlIHRydWUgc2luY2Ug d2UgaGF2ZSBjcnRjX3N0YXRlKS4NCj4gIAkgKi8NCj4gLQlpZiAoY3J0Y19zdGF0ZS0+bWluX2Nk Y2xrW3BsYW5lLT5pZF0gPiBkZXZfcHJpdi0NCj4gPmNkY2xrLmxvZ2ljYWwuY2RjbGspIHsNCj4g KwlpZiAoY3J0Y19zdGF0ZS0+bWluX2NkY2xrW3BsYW5lLT5pZF0gPiBjZGNsa19zdGF0ZS0NCj4g PmxvZ2ljYWwuY2RjbGspIHsNCj4gIAkJRFJNX0RFQlVHX0tNUygiW1BMQU5FOiVkOiVzXSBtaW5f Y2RjbGsgKCVkIGtIeikgPg0KPiBsb2dpY2FsIGNkY2xrICglZCBrSHopXG4iLA0KPiAgCQkJICAg ICAgcGxhbmUtPmJhc2UuYmFzZS5pZCwgcGxhbmUtPmJhc2UubmFtZSwNCj4gIAkJCSAgICAgIGNy dGNfc3RhdGUtPm1pbl9jZGNsa1twbGFuZS0+aWRdLA0KPiAtCQkJICAgICAgZGV2X3ByaXYtPmNk Y2xrLmxvZ2ljYWwuY2RjbGspOw0KPiArCQkJICAgICAgY2RjbGtfc3RhdGUtPmxvZ2ljYWwuY2Rj bGspOw0KPiAgCQlyZXR1cm4gdHJ1ZTsNCj4gIAl9DQo+ICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXVkaW8uYw0KPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXVkaW8uYw0KPiBpbmRleCBiMTgwNDA3OTNkOWUuLjMyZTcy MjEyODYzOCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9hdWRpby5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXVk aW8uYw0KPiBAQCAtODE1LDggKzgxNSw4IEBAIHN0YXRpYyB2b2lkIGdsa19mb3JjZV9hdWRpb19j ZGNsayhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJc3RhdGUtPmFj cXVpcmVfY3R4ID0gJmN0eDsNCj4gIA0KPiAgcmV0cnk6DQo+IC0JdG9faW50ZWxfYXRvbWljX3N0 YXRlKHN0YXRlKS0+Y2RjbGsuZm9yY2VfbWluX2NkY2xrX2NoYW5nZWQgPQ0KPiB0cnVlOw0KPiAt CXRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPmNkY2xrLmZvcmNlX21pbl9jZGNsayA9DQo+ ICsJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0NCj4gPmNkY2xrX3N0YXRlLmZvcmNlX21p bl9jZGNsa19jaGFuZ2VkID0gdHJ1ZTsNCj4gKwl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUp LT5jZGNsa19zdGF0ZS5mb3JjZV9taW5fY2RjbGsgPQ0KPiAgCQllbmFibGUgPyAyICogOTYwMDAg OiAwOw0KPiAgDQo+ICAJLyogUHJvdGVjdHMgZGV2X3ByaXYtPmNkY2xrLmZvcmNlX21pbl9jZGNs ayAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9j ZGNsay5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jDQo+ IGluZGV4IGEyYjE0MDFkY2ZiYi4uZjhlNzBhNjY4Yjc0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jDQo+IEBAIC0xODE1LDggKzE4MTUsOCBAQCBz dGF0aWMgYm9vbCBpbnRlbF9jZGNsa19jaGFuZ2VkKGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jZGNs a19jb25maWcgKmEsDQo+ICAgKi8NCj4gIHZvaWQgaW50ZWxfY2RjbGtfY2xlYXJfc3RhdGUoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICB7DQo+IC0JbWVtc2V0KCZzdGF0ZS0+ Y2RjbGssIDAsIHNpemVvZihzdGF0ZS0+Y2RjbGspKTsNCj4gLQlzdGF0ZS0+Y2RjbGsucGlwZSA9 IElOVkFMSURfUElQRTsNCj4gKwltZW1zZXQoJnN0YXRlLT5jZGNsa19zdGF0ZSwgMCwgc2l6ZW9m KHN0YXRlLT5jZGNsa19zdGF0ZSkpOw0KPiArCXN0YXRlLT5jZGNsa19zdGF0ZS5waXBlID0gSU5W QUxJRF9QSVBFOw0KPiAgfQ0KPiAgDQo+ICAvKioNCj4gQEAgLTE4MzYsMTUgKzE4MzYsMTggQEAg dm9pZCBpbnRlbF9jZGNsa19zd2FwX3N0YXRlKHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQ0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo c3RhdGUtPmJhc2UuZGV2KTsNCj4gIA0KPiAgCS8qIEZJWE1FIG1heWJlIHN3YXAoKSB0aGVzZSB0 b28gKi8NCj4gLQltZW1jcHkoZGV2X3ByaXYtPmNkY2xrLm1pbl9jZGNsaywgc3RhdGUtPmNkY2xr Lm1pbl9jZGNsaywNCj4gLQkgICAgICAgc2l6ZW9mKHN0YXRlLT5jZGNsay5taW5fY2RjbGspKTsN Cj4gLQltZW1jcHkoZGV2X3ByaXYtPmNkY2xrLm1pbl92b2x0YWdlX2xldmVsLCBzdGF0ZS0NCj4g PmNkY2xrLm1pbl92b2x0YWdlX2xldmVsLA0KPiAtCSAgICAgICBzaXplb2Yoc3RhdGUtPmNkY2xr Lm1pbl92b2x0YWdlX2xldmVsKSk7DQo+ICsJbWVtY3B5KGRldl9wcml2LT5jZGNsa19zdGF0ZS5t aW5fY2RjbGssDQo+ICsJICAgICAgIHN0YXRlLT5jZGNsa19zdGF0ZS5taW5fY2RjbGssDQo+ICsJ ICAgICAgIHNpemVvZihzdGF0ZS0+Y2RjbGtfc3RhdGUubWluX2NkY2xrKSk7DQo+ICsJbWVtY3B5 KGRldl9wcml2LT5jZGNsa19zdGF0ZS5taW5fdm9sdGFnZV9sZXZlbCwNCj4gKwkgICAgICAgc3Rh dGUtPmNkY2xrX3N0YXRlLm1pbl92b2x0YWdlX2xldmVsLA0KPiArCSAgICAgICBzaXplb2Yoc3Rh dGUtPmNkY2xrX3N0YXRlLm1pbl92b2x0YWdlX2xldmVsKSk7DQo+ICANCj4gLQlkZXZfcHJpdi0+ Y2RjbGsuZm9yY2VfbWluX2NkY2xrID0gc3RhdGUtPmNkY2xrLmZvcmNlX21pbl9jZGNsazsNCj4g KwlkZXZfcHJpdi0+Y2RjbGtfc3RhdGUuZm9yY2VfbWluX2NkY2xrID0NCj4gKwkJc3RhdGUtPmNk Y2xrX3N0YXRlLmZvcmNlX21pbl9jZGNsazsNCj4gIA0KPiAtCXN3YXAoc3RhdGUtPmNkY2xrLmxv Z2ljYWwsIGRldl9wcml2LT5jZGNsay5sb2dpY2FsKTsNCj4gLQlzd2FwKHN0YXRlLT5jZGNsay5h Y3R1YWwsIGRldl9wcml2LT5jZGNsay5hY3R1YWwpOw0KPiArCXN3YXAoc3RhdGUtPmNkY2xrX3N0 YXRlLmxvZ2ljYWwsIGRldl9wcml2LQ0KPiA+Y2RjbGtfc3RhdGUubG9naWNhbCk7DQo+ICsJc3dh cChzdGF0ZS0+Y2RjbGtfc3RhdGUuYWN0dWFsLCBkZXZfcHJpdi0+Y2RjbGtfc3RhdGUuYWN0dWFs KTsNCj4gIH0NCj4gIA0KPiAgdm9pZCBpbnRlbF9kdW1wX2NkY2xrX2NvbmZpZyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY2RjbGtfY29uZmlnDQo+ICpjZGNsa19jb25maWcsDQo+IEBAIC0xODk4LDEyICsx OTAxLDEzIEBAIGludGVsX3NldF9jZGNsa19wcmVfcGxhbmVfdXBkYXRlKHN0cnVjdA0KPiBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsNCj4gIAkvKiBjYWxsZWQgYWZ0 ZXIgaW50ZWxfY2RjbGtfc3dhcF9zdGF0ZSgpISAqLw0KPiAtCWNvbnN0IHN0cnVjdCBpbnRlbF9j ZGNsa19jb25maWcgKm9sZF9zdGF0ZSA9ICZzdGF0ZS0NCj4gPmNkY2xrLmFjdHVhbDsNCj4gLQlj b25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfY29uZmlnICpuZXdfc3RhdGUgPSAmZGV2X3ByaXYtDQo+ ID5jZGNsay5hY3R1YWw7DQo+IC0JZW51bSBwaXBlIHBpcGUgPSBzdGF0ZS0+Y2RjbGsucGlwZTsN Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKm9sZF9jZGNsa19zdGF0ZSA9ICZz dGF0ZS0NCj4gPmNkY2xrX3N0YXRlOw0KPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0 ZSAqbmV3X2NkY2xrX3N0YXRlID0gJmRldl9wcml2LQ0KPiA+Y2RjbGtfc3RhdGU7DQo+ICsJZW51 bSBwaXBlIHBpcGUgPSBvbGRfY2RjbGtfc3RhdGUtPnBpcGU7IC8qIG5vdCBzd2FwcGVkICovDQo+ ICANCj4gLQlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUgfHwgb2xkX3N0YXRlLT5jZGNsayA8PSBu ZXdfc3RhdGUtDQo+ID5jZGNsaykNCj4gLQkJaW50ZWxfc2V0X2NkY2xrKGRldl9wcml2LCBuZXdf c3RhdGUsIHBpcGUpOw0KPiArCWlmIChwaXBlID09IElOVkFMSURfUElQRSB8fA0KPiArCSAgICBv bGRfY2RjbGtfc3RhdGUtPmFjdHVhbC5jZGNsayA8PSBuZXdfY2RjbGtfc3RhdGUtDQo+ID5hY3R1 YWwuY2RjbGspDQo+ICsJCWludGVsX3NldF9jZGNsayhkZXZfcHJpdiwgJm5ld19jZGNsa19zdGF0 ZS0+YWN0dWFsLA0KPiBwaXBlKTsNCj4gIH0NCj4gIA0KPiAgLyoqDQo+IEBAIC0xOTE4LDEyICsx OTIyLDEzIEBAIGludGVsX3NldF9jZGNsa19wb3N0X3BsYW5lX3VwZGF0ZShzdHJ1Y3QNCj4gaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7DQo+ICAJLyogY2FsbGVkIGFm dGVyIGludGVsX2NkY2xrX3N3YXBfc3RhdGUoKSEgKi8NCj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxf Y2RjbGtfY29uZmlnICpvbGRfc3RhdGUgPSAmc3RhdGUtDQo+ID5jZGNsay5hY3R1YWw7DQo+IC0J Y29uc3Qgc3RydWN0IGludGVsX2NkY2xrX2NvbmZpZyAqbmV3X3N0YXRlID0gJmRldl9wcml2LQ0K PiA+Y2RjbGsuYWN0dWFsOw0KPiAtCWVudW0gcGlwZSBwaXBlID0gc3RhdGUtPmNkY2xrLnBpcGU7 DQo+ICsJY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpvbGRfY2RjbGtfc3RhdGUgPSAm c3RhdGUtDQo+ID5jZGNsa19zdGF0ZTsNCj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3Rh dGUgKm5ld19jZGNsa19zdGF0ZSA9ICZkZXZfcHJpdi0NCj4gPmNkY2xrX3N0YXRlOw0KPiArCWVu dW0gcGlwZSBwaXBlID0gb2xkX2NkY2xrX3N0YXRlLT5waXBlOyAvKiBub3Qgc3dhcHBlZCAqLw0K PiAgDQo+IC0JaWYgKHBpcGUgIT0gSU5WQUxJRF9QSVBFICYmIG9sZF9zdGF0ZS0+Y2RjbGsgPiBu ZXdfc3RhdGUtDQo+ID5jZGNsaykNCj4gLQkJaW50ZWxfc2V0X2NkY2xrKGRldl9wcml2LCBuZXdf c3RhdGUsIHBpcGUpOw0KPiArCWlmIChwaXBlICE9IElOVkFMSURfUElQRSAmJg0KPiArCSAgICBv bGRfY2RjbGtfc3RhdGUtPmFjdHVhbC5jZGNsayA+IG5ld19jZGNsa19zdGF0ZS0NCj4gPmFjdHVh bC5jZGNsaykNCj4gKwkJaW50ZWxfc2V0X2NkY2xrKGRldl9wcml2LCAmbmV3X2NkY2xrX3N0YXRl LT5hY3R1YWwsDQo+IHBpcGUpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgaW50IGludGVsX3BpeGVs X3JhdGVfdG9fY2RjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3Rh dGUpDQo+IEBAIC0yMDUyLDYgKzIwNTcsNyBAQCBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX21pbl9j ZGNsayhjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkNCj4gIHN0 YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUpDQo+ICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOw0KPiArCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAq Y2RjbGtfc3RhdGUgPSAmc3RhdGUtPmNkY2xrX3N0YXRlOw0KPiAgCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjOw0KPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOw0KPiAgCWlu dCBtaW5fY2RjbGssIGk7DQo+IEBAIC0yMDY0LDE5ICsyMDcwLDE5IEBAIHN0YXRpYyBpbnQgaW50 ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp DQo+ICAJCWlmIChtaW5fY2RjbGsgPCAwKQ0KPiAgCQkJcmV0dXJuIG1pbl9jZGNsazsNCj4gIA0K PiAtCQlpZiAoc3RhdGUtPmNkY2xrLm1pbl9jZGNsa1tpXSA9PSBtaW5fY2RjbGspDQo+ICsJCWlm IChjZGNsa19zdGF0ZS0+bWluX2NkY2xrW2ldID09IG1pbl9jZGNsaykNCj4gIAkJCWNvbnRpbnVl Ow0KPiAgDQo+IC0JCXN0YXRlLT5jZGNsay5taW5fY2RjbGtbaV0gPSBtaW5fY2RjbGs7DQo+ICsJ CWNkY2xrX3N0YXRlLT5taW5fY2RjbGtbaV0gPSBtaW5fY2RjbGs7DQo+ICANCj4gIAkJcmV0ID0g aW50ZWxfYXRvbWljX2xvY2tfZ2xvYmFsX3N0YXRlKHN0YXRlKTsNCj4gIAkJaWYgKHJldCkNCj4g IAkJCXJldHVybiByZXQ7DQo+ICAJfQ0KPiAgDQo+IC0JbWluX2NkY2xrID0gc3RhdGUtPmNkY2xr LmZvcmNlX21pbl9jZGNsazsNCj4gKwltaW5fY2RjbGsgPSBjZGNsa19zdGF0ZS0+Zm9yY2VfbWlu X2NkY2xrOw0KPiAgCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpDQo+IC0JCW1pbl9jZGNs ayA9IG1heChzdGF0ZS0+Y2RjbGsubWluX2NkY2xrW3BpcGVdLA0KPiBtaW5fY2RjbGspOw0KPiAr CQltaW5fY2RjbGsgPSBtYXgoY2RjbGtfc3RhdGUtPm1pbl9jZGNsa1twaXBlXSwNCj4gbWluX2Nk Y2xrKTsNCj4gIA0KPiAgCXJldHVybiBtaW5fY2RjbGs7DQo+ICB9DQo+IEBAIC0yMDk3LDYgKzIx MDMsNyBAQCBzdGF0aWMgaW50IGludGVsX2NvbXB1dGVfbWluX2NkY2xrKHN0cnVjdA0KPiBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgc3RhdGljIGludCBieHRfY29tcHV0ZV9taW5fdm9s dGFnZV9sZXZlbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlDQo+ICpzdGF0ZSkNCj4gIHsNCj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNl LmRldik7DQo+ICsJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSA9ICZzdGF0 ZS0+Y2RjbGtfc3RhdGU7DQo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGM7DQo+ICAJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7DQo+ICAJdTggbWluX3ZvbHRhZ2VfbGV2ZWw7 DQo+IEBAIC0yMTExLDEwICsyMTE4LDEwIEBAIHN0YXRpYyBpbnQNCj4gYnh0X2NvbXB1dGVfbWlu X3ZvbHRhZ2VfbGV2ZWwoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICAJCWVs c2UNCj4gIAkJCW1pbl92b2x0YWdlX2xldmVsID0gMDsNCj4gIA0KPiAtCQlpZiAoc3RhdGUtPmNk Y2xrLm1pbl92b2x0YWdlX2xldmVsW2ldID09DQo+IG1pbl92b2x0YWdlX2xldmVsKQ0KPiArCQlp ZiAoY2RjbGtfc3RhdGUtPm1pbl92b2x0YWdlX2xldmVsW2ldID09DQo+IG1pbl92b2x0YWdlX2xl dmVsKQ0KPiAgCQkJY29udGludWU7DQo+ICANCj4gLQkJc3RhdGUtPmNkY2xrLm1pbl92b2x0YWdl X2xldmVsW2ldID0gbWluX3ZvbHRhZ2VfbGV2ZWw7DQo+ICsJCWNkY2xrX3N0YXRlLT5taW5fdm9s dGFnZV9sZXZlbFtpXSA9IG1pbl92b2x0YWdlX2xldmVsOw0KPiAgDQo+ICAJCXJldCA9IGludGVs X2F0b21pY19sb2NrX2dsb2JhbF9zdGF0ZShzdGF0ZSk7DQo+ICAJCWlmIChyZXQpDQo+IEBAIC0y MTIzLDcgKzIxMzAsNyBAQCBzdGF0aWMgaW50IGJ4dF9jb21wdXRlX21pbl92b2x0YWdlX2xldmVs KHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgDQo+ICAJbWluX3ZvbHRh Z2VfbGV2ZWwgPSAwOw0KPiAgCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpDQo+IC0JCW1p bl92b2x0YWdlX2xldmVsID0gbWF4KHN0YXRlLQ0KPiA+Y2RjbGsubWluX3ZvbHRhZ2VfbGV2ZWxb cGlwZV0sDQo+ICsJCW1pbl92b2x0YWdlX2xldmVsID0gbWF4KGNkY2xrX3N0YXRlLQ0KPiA+bWlu X3ZvbHRhZ2VfbGV2ZWxbcGlwZV0sDQo+ICAJCQkJCW1pbl92b2x0YWdlX2xldmVsKTsNCj4gIA0K PiAgCXJldHVybiBtaW5fdm9sdGFnZV9sZXZlbDsNCj4gQEAgLTIxMzIsNiArMjEzOSw3IEBAIHN0 YXRpYyBpbnQgYnh0X2NvbXB1dGVfbWluX3ZvbHRhZ2VfbGV2ZWwoc3RydWN0DQo+IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpDQo+ICBzdGF0aWMgaW50IHZsdl9tb2Rlc2V0X2NhbGNfY2RjbGso c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICB7DQo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOw0KPiArCXN0 cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUgPSAmc3RhdGUtPmNkY2xrX3N0YXRl Ow0KPiAgCWludCBtaW5fY2RjbGssIGNkY2xrOw0KPiAgDQo+ICAJbWluX2NkY2xrID0gaW50ZWxf Y29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOw0KPiBAQCAtMjE0MCwxOCArMjE0OCwxOCBAQCBzdGF0 aWMgaW50IHZsdl9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUpDQo+ICANCj4gIAljZGNsayA9IHZsdl9jYWxjX2NkY2xrKGRldl9wcml2LCBtaW5f Y2RjbGspOw0KPiAgDQo+IC0Jc3RhdGUtPmNkY2xrLmxvZ2ljYWwuY2RjbGsgPSBjZGNsazsNCj4g LQlzdGF0ZS0+Y2RjbGsubG9naWNhbC52b2x0YWdlX2xldmVsID0NCj4gKwljZGNsa19zdGF0ZS0+ bG9naWNhbC5jZGNsayA9IGNkY2xrOw0KPiArCWNkY2xrX3N0YXRlLT5sb2dpY2FsLnZvbHRhZ2Vf bGV2ZWwgPQ0KPiAgCQl2bHZfY2FsY192b2x0YWdlX2xldmVsKGRldl9wcml2LCBjZGNsayk7DQo+ ICANCj4gIAlpZiAoIXN0YXRlLT5hY3RpdmVfcGlwZXMpIHsNCj4gLQkJY2RjbGsgPSB2bHZfY2Fs Y19jZGNsayhkZXZfcHJpdiwgc3RhdGUtDQo+ID5jZGNsay5mb3JjZV9taW5fY2RjbGspOw0KPiAr CQljZGNsayA9IHZsdl9jYWxjX2NkY2xrKGRldl9wcml2LCBjZGNsa19zdGF0ZS0NCj4gPmZvcmNl X21pbl9jZGNsayk7DQo+ICANCj4gLQkJc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9IGNkY2xr Ow0KPiAtCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsLnZvbHRhZ2VfbGV2ZWwgPQ0KPiArCQljZGNsa19z dGF0ZS0+YWN0dWFsLmNkY2xrID0gY2RjbGs7DQo+ICsJCWNkY2xrX3N0YXRlLT5hY3R1YWwudm9s dGFnZV9sZXZlbCA9DQo+ICAJCQl2bHZfY2FsY192b2x0YWdlX2xldmVsKGRldl9wcml2LCBjZGNs ayk7DQo+ICAJfSBlbHNlIHsNCj4gLQkJc3RhdGUtPmNkY2xrLmFjdHVhbCA9IHN0YXRlLT5jZGNs ay5sb2dpY2FsOw0KPiArCQljZGNsa19zdGF0ZS0+YWN0dWFsID0gY2RjbGtfc3RhdGUtPmxvZ2lj YWw7DQo+ICAJfQ0KPiAgDQo+ICAJcmV0dXJuIDA7DQo+IEBAIC0yMTU5LDYgKzIxNjcsNyBAQCBz dGF0aWMgaW50IHZsdl9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0DQo+IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpDQo+ICANCj4gIHN0YXRpYyBpbnQgYmR3X21vZGVzZXRfY2FsY19jZGNsayhz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIHsNCj4gKwlzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlID0gJnN0YXRlLT5jZGNsa19zdGF0ZTsNCj4gIAlpbnQg bWluX2NkY2xrLCBjZGNsazsNCj4gIA0KPiAgCW1pbl9jZGNsayA9IGludGVsX2NvbXB1dGVfbWlu X2NkY2xrKHN0YXRlKTsNCj4gQEAgLTIxNzEsMTggKzIxODAsMTggQEAgc3RhdGljIGludCBiZHdf bW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQ0K PiAgCSAqLw0KPiAgCWNkY2xrID0gYmR3X2NhbGNfY2RjbGsobWluX2NkY2xrKTsNCj4gIA0KPiAt CXN0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xrID0gY2RjbGs7DQo+IC0Jc3RhdGUtPmNkY2xrLmxv Z2ljYWwudm9sdGFnZV9sZXZlbCA9DQo+ICsJY2RjbGtfc3RhdGUtPmxvZ2ljYWwuY2RjbGsgPSBj ZGNsazsNCj4gKwljZGNsa19zdGF0ZS0+bG9naWNhbC52b2x0YWdlX2xldmVsID0NCj4gIAkJYmR3 X2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsayk7DQo+ICANCj4gIAlpZiAoIXN0YXRlLT5hY3RpdmVf cGlwZXMpIHsNCj4gLQkJY2RjbGsgPSBiZHdfY2FsY19jZGNsayhzdGF0ZS0+Y2RjbGsuZm9yY2Vf bWluX2NkY2xrKTsNCj4gKwkJY2RjbGsgPSBiZHdfY2FsY19jZGNsayhjZGNsa19zdGF0ZS0+Zm9y Y2VfbWluX2NkY2xrKTsNCj4gIA0KPiAtCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrID0gY2Rj bGs7DQo+IC0JCXN0YXRlLT5jZGNsay5hY3R1YWwudm9sdGFnZV9sZXZlbCA9DQo+ICsJCWNkY2xr X3N0YXRlLT5hY3R1YWwuY2RjbGsgPSBjZGNsazsNCj4gKwkJY2RjbGtfc3RhdGUtPmFjdHVhbC52 b2x0YWdlX2xldmVsID0NCj4gIAkJCWJkd19jYWxjX3ZvbHRhZ2VfbGV2ZWwoY2RjbGspOw0KPiAg CX0gZWxzZSB7DQo+IC0JCXN0YXRlLT5jZGNsay5hY3R1YWwgPSBzdGF0ZS0+Y2RjbGsubG9naWNh bDsNCj4gKwkJY2RjbGtfc3RhdGUtPmFjdHVhbCA9IGNkY2xrX3N0YXRlLT5sb2dpY2FsOw0KPiAg CX0NCj4gIA0KPiAgCXJldHVybiAwOw0KPiBAQCAtMjE5MSwxMSArMjIwMCwxMiBAQCBzdGF0aWMg aW50IGJkd19tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUpDQo+ICBzdGF0aWMgaW50IHNrbF9kcGxsMF92Y28oc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpDQo+ICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOw0KPiArCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0 ZSAqY2RjbGtfc3RhdGUgPSAmc3RhdGUtPmNkY2xrX3N0YXRlOw0KPiAgCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjOw0KPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOw0KPiAg CWludCB2Y28sIGk7DQo+ICANCj4gLQl2Y28gPSBzdGF0ZS0+Y2RjbGsubG9naWNhbC52Y287DQo+ ICsJdmNvID0gY2RjbGtfc3RhdGUtPmxvZ2ljYWwudmNvOw0KPiAgCWlmICghdmNvKQ0KPiAgCQl2 Y28gPSBkZXZfcHJpdi0+c2tsX3ByZWZlcnJlZF92Y29fZnJlcTsNCj4gIA0KPiBAQCAtMjIyNiw2 ICsyMjM2LDcgQEAgc3RhdGljIGludCBza2xfZHBsbDBfdmNvKHN0cnVjdA0KPiBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlKQ0KPiAgDQo+ICBzdGF0aWMgaW50IHNrbF9tb2Rlc2V0X2NhbGNfY2Rj bGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICB7DQo+ICsJc3RydWN0IGlu dGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSA9ICZzdGF0ZS0+Y2RjbGtfc3RhdGU7DQo+ICAJ aW50IG1pbl9jZGNsaywgY2RjbGssIHZjbzsNCj4gIA0KPiAgCW1pbl9jZGNsayA9IGludGVsX2Nv bXB1dGVfbWluX2NkY2xrKHN0YXRlKTsNCj4gQEAgLTIyNDAsMjAgKzIyNTEsMjAgQEAgc3RhdGlj IGludCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQ0KPiAgCSAqLw0KPiAgCWNkY2xrID0gc2tsX2NhbGNfY2RjbGsobWluX2NkY2xrLCB2 Y28pOw0KPiAgDQo+IC0Jc3RhdGUtPmNkY2xrLmxvZ2ljYWwudmNvID0gdmNvOw0KPiAtCXN0YXRl LT5jZGNsay5sb2dpY2FsLmNkY2xrID0gY2RjbGs7DQo+IC0Jc3RhdGUtPmNkY2xrLmxvZ2ljYWwu dm9sdGFnZV9sZXZlbCA9DQo+ICsJY2RjbGtfc3RhdGUtPmxvZ2ljYWwudmNvID0gdmNvOw0KPiAr CWNkY2xrX3N0YXRlLT5sb2dpY2FsLmNkY2xrID0gY2RjbGs7DQo+ICsJY2RjbGtfc3RhdGUtPmxv Z2ljYWwudm9sdGFnZV9sZXZlbCA9DQo+ICAJCXNrbF9jYWxjX3ZvbHRhZ2VfbGV2ZWwoY2RjbGsp Ow0KPiAgDQo+ICAJaWYgKCFzdGF0ZS0+YWN0aXZlX3BpcGVzKSB7DQo+IC0JCWNkY2xrID0gc2ts X2NhbGNfY2RjbGsoc3RhdGUtPmNkY2xrLmZvcmNlX21pbl9jZGNsaywNCj4gdmNvKTsNCj4gKwkJ Y2RjbGsgPSBza2xfY2FsY19jZGNsayhjZGNsa19zdGF0ZS0+Zm9yY2VfbWluX2NkY2xrLA0KPiB2 Y28pOw0KPiAgDQo+IC0JCXN0YXRlLT5jZGNsay5hY3R1YWwudmNvID0gdmNvOw0KPiAtCQlzdGF0 ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrID0gY2RjbGs7DQo+IC0JCXN0YXRlLT5jZGNsay5hY3R1YWwu dm9sdGFnZV9sZXZlbCA9DQo+ICsJCWNkY2xrX3N0YXRlLT5hY3R1YWwudmNvID0gdmNvOw0KPiAr CQljZGNsa19zdGF0ZS0+YWN0dWFsLmNkY2xrID0gY2RjbGs7DQo+ICsJCWNkY2xrX3N0YXRlLT5h Y3R1YWwudm9sdGFnZV9sZXZlbCA9DQo+ICAJCQlza2xfY2FsY192b2x0YWdlX2xldmVsKGNkY2xr KTsNCj4gIAl9IGVsc2Ugew0KPiAtCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsID0gc3RhdGUtPmNkY2xr LmxvZ2ljYWw7DQo+ICsJCWNkY2xrX3N0YXRlLT5hY3R1YWwgPSBjZGNsa19zdGF0ZS0+bG9naWNh bDsNCj4gIAl9DQo+ICANCj4gIAlyZXR1cm4gMDsNCj4gQEAgLTIyNjIsNiArMjI3Myw3IEBAIHN0 YXRpYyBpbnQgc2tsX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QNCj4gaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSkNCj4gIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7DQo+ICsJc3RydWN0IGlu dGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSA9ICZzdGF0ZS0+Y2RjbGtfc3RhdGU7DQo+ICAJ aW50IG1pbl9jZGNsaywgbWluX3ZvbHRhZ2VfbGV2ZWwsIGNkY2xrLCB2Y287DQo+ICANCj4gIAlt aW5fY2RjbGsgPSBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdGF0ZSk7DQo+IEBAIC0yMjc1LDIy ICsyMjg3LDIyIEBAIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QNCj4g aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIAljZGNsayA9IGJ4dF9jYWxjX2NkY2xrKGRl dl9wcml2LCBtaW5fY2RjbGspOw0KPiAgCXZjbyA9IGJ4dF9jYWxjX2NkY2xrX3BsbF92Y28oZGV2 X3ByaXYsIGNkY2xrKTsNCj4gIA0KPiAtCXN0YXRlLT5jZGNsay5sb2dpY2FsLnZjbyA9IHZjbzsN Cj4gLQlzdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayA9IGNkY2xrOw0KPiAtCXN0YXRlLT5jZGNs ay5sb2dpY2FsLnZvbHRhZ2VfbGV2ZWwgPQ0KPiArCWNkY2xrX3N0YXRlLT5sb2dpY2FsLnZjbyA9 IHZjbzsNCj4gKwljZGNsa19zdGF0ZS0+bG9naWNhbC5jZGNsayA9IGNkY2xrOw0KPiArCWNkY2xr X3N0YXRlLT5sb2dpY2FsLnZvbHRhZ2VfbGV2ZWwgPQ0KPiAgCQltYXhfdChpbnQsIG1pbl92b2x0 YWdlX2xldmVsLA0KPiAgCQkgICAgICBkZXZfcHJpdi0+ZGlzcGxheS5jYWxjX3ZvbHRhZ2VfbGV2 ZWwoY2RjbGspKTsNCj4gIA0KPiAgCWlmICghc3RhdGUtPmFjdGl2ZV9waXBlcykgew0KPiAtCQlj ZGNsayA9IGJ4dF9jYWxjX2NkY2xrKGRldl9wcml2LCBzdGF0ZS0NCj4gPmNkY2xrLmZvcmNlX21p bl9jZGNsayk7DQo+ICsJCWNkY2xrID0gYnh0X2NhbGNfY2RjbGsoZGV2X3ByaXYsIGNkY2xrX3N0 YXRlLQ0KPiA+Zm9yY2VfbWluX2NkY2xrKTsNCj4gIAkJdmNvID0gYnh0X2NhbGNfY2RjbGtfcGxs X3ZjbyhkZXZfcHJpdiwgY2RjbGspOw0KPiAgDQo+IC0JCXN0YXRlLT5jZGNsay5hY3R1YWwudmNv ID0gdmNvOw0KPiAtCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrID0gY2RjbGs7DQo+IC0JCXN0 YXRlLT5jZGNsay5hY3R1YWwudm9sdGFnZV9sZXZlbCA9DQo+ICsJCWNkY2xrX3N0YXRlLT5hY3R1 YWwudmNvID0gdmNvOw0KPiArCQljZGNsa19zdGF0ZS0+YWN0dWFsLmNkY2xrID0gY2RjbGs7DQo+ ICsJCWNkY2xrX3N0YXRlLT5hY3R1YWwudm9sdGFnZV9sZXZlbCA9DQo+ICAJCQlkZXZfcHJpdi0+ ZGlzcGxheS5jYWxjX3ZvbHRhZ2VfbGV2ZWwoY2RjbGspOw0KPiAgCX0gZWxzZSB7DQo+IC0JCXN0 YXRlLT5jZGNsay5hY3R1YWwgPSBzdGF0ZS0+Y2RjbGsubG9naWNhbDsNCj4gKwkJY2RjbGtfc3Rh dGUtPmFjdHVhbCA9IGNkY2xrX3N0YXRlLT5sb2dpY2FsOw0KPiAgCX0NCj4gIA0KPiAgCXJldHVy biAwOw0KPiBAQCAtMjM1NCwyMCArMjM2NiwyMiBAQCBzdGF0aWMgaW50IGZpeGVkX21vZGVzZXRf Y2FsY19jZGNsayhzdHJ1Y3QNCj4gaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIGludCBp bnRlbF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp DQo+ICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShz dGF0ZS0+YmFzZS5kZXYpOw0KPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqb2xk X2NkY2xrX3N0YXRlID0gJmRldl9wcml2LQ0KPiA+Y2RjbGtfc3RhdGU7DQo+ICsJc3RydWN0IGlu dGVsX2NkY2xrX3N0YXRlICpuZXdfY2RjbGtfc3RhdGUgPSAmc3RhdGUtDQo+ID5jZGNsa19zdGF0 ZTsNCj4gIAllbnVtIHBpcGUgcGlwZTsNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+IC0JbWVtY3B5KHN0 YXRlLT5jZGNsay5taW5fY2RjbGssIGRldl9wcml2LT5jZGNsay5taW5fY2RjbGssDQo+IC0JICAg ICAgIHNpemVvZihzdGF0ZS0+Y2RjbGsubWluX2NkY2xrKSk7DQo+IC0JbWVtY3B5KHN0YXRlLT5j ZGNsay5taW5fdm9sdGFnZV9sZXZlbCwgZGV2X3ByaXYtDQo+ID5jZGNsay5taW5fdm9sdGFnZV9s ZXZlbCwNCj4gLQkgICAgICAgc2l6ZW9mKHN0YXRlLT5jZGNsay5taW5fdm9sdGFnZV9sZXZlbCkp Ow0KPiArCW1lbWNweShuZXdfY2RjbGtfc3RhdGUtPm1pbl9jZGNsaywgb2xkX2NkY2xrX3N0YXRl LT5taW5fY2RjbGssDQo+ICsJICAgICAgIHNpemVvZihuZXdfY2RjbGtfc3RhdGUtPm1pbl9jZGNs aykpOw0KPiArCW1lbWNweShuZXdfY2RjbGtfc3RhdGUtPm1pbl92b2x0YWdlX2xldmVsLCBvbGRf Y2RjbGtfc3RhdGUtDQo+ID5taW5fdm9sdGFnZV9sZXZlbCwNCj4gKwkgICAgICAgc2l6ZW9mKG5l d19jZGNsa19zdGF0ZS0+bWluX3ZvbHRhZ2VfbGV2ZWwpKTsNCj4gIA0KPiAgCS8qIGtlZXAgdGhl IGN1cnJlbnQgc2V0dGluZyAqLw0KPiAtCWlmICghc3RhdGUtPmNkY2xrLmZvcmNlX21pbl9jZGNs a19jaGFuZ2VkKQ0KPiAtCQlzdGF0ZS0+Y2RjbGsuZm9yY2VfbWluX2NkY2xrID0gZGV2X3ByaXYt DQo+ID5jZGNsay5mb3JjZV9taW5fY2RjbGs7DQo+ICsJaWYgKCFuZXdfY2RjbGtfc3RhdGUtPmZv cmNlX21pbl9jZGNsa19jaGFuZ2VkKQ0KPiArCQluZXdfY2RjbGtfc3RhdGUtPmZvcmNlX21pbl9j ZGNsayA9IG9sZF9jZGNsa19zdGF0ZS0NCj4gPmZvcmNlX21pbl9jZGNsazsNCj4gIA0KPiAtCXN0 YXRlLT5jZGNsay5sb2dpY2FsID0gZGV2X3ByaXYtPmNkY2xrLmxvZ2ljYWw7DQo+IC0Jc3RhdGUt PmNkY2xrLmFjdHVhbCA9IGRldl9wcml2LT5jZGNsay5hY3R1YWw7DQo+ICsJbmV3X2NkY2xrX3N0 YXRlLT5sb2dpY2FsID0gb2xkX2NkY2xrX3N0YXRlLT5sb2dpY2FsOw0KPiArCW5ld19jZGNsa19z dGF0ZS0+YWN0dWFsID0gb2xkX2NkY2xrX3N0YXRlLT5hY3R1YWw7DQo+ICANCj4gIAlyZXQgPSBk ZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsoc3RhdGUpOw0KPiAgCWlmIChyZXQp DQo+IEBAIC0yMzc4LDggKzIzOTIsOCBAQCBpbnQgaW50ZWxfbW9kZXNldF9jYWxjX2NkY2xrKHN0 cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgCSAqIGJ5IGhvbGRpbmcgYWxs IHRoZSBjcnRjIG11dGV4ZXMgZXZlbiBpZiB3ZSBkb24ndCBlbmQgdXANCj4gIAkgKiB0b3VjaGlu ZyB0aGUgaGFyZHdhcmUNCj4gIAkgKi8NCj4gLQlpZiAoaW50ZWxfY2RjbGtfY2hhbmdlZCgmZGV2 X3ByaXYtPmNkY2xrLmFjdHVhbCwNCj4gLQkJCQkmc3RhdGUtPmNkY2xrLmFjdHVhbCkpIHsNCj4g KwlpZiAoaW50ZWxfY2RjbGtfY2hhbmdlZCgmb2xkX2NkY2xrX3N0YXRlLT5hY3R1YWwsDQo+ICsJ CQkJJm5ld19jZGNsa19zdGF0ZS0+YWN0dWFsKSkgew0KPiAgCQkvKg0KPiAgCQkgKiBBbHNvIHNl cmlhbGl6ZSBjb21taXRzIGFjcm9zcyBhbGwgY3J0Y3MNCj4gIAkJICogaWYgdGhlIGFjdHVhbCBo dyBuZWVkcyB0byBiZSBwb2tlZC4NCj4gQEAgLTIzODcsOCArMjQwMSw4IEBAIGludCBpbnRlbF9t b2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ ICAJCXJldCA9IGludGVsX2F0b21pY19zZXJpYWxpemVfZ2xvYmFsX3N0YXRlKHN0YXRlKTsNCj4g IAkJaWYgKHJldCkNCj4gIAkJCXJldHVybiByZXQ7DQo+IC0JfSBlbHNlIGlmIChpbnRlbF9jZGNs a19jaGFuZ2VkKCZkZXZfcHJpdi0+Y2RjbGsubG9naWNhbCwNCj4gLQkJCQkgICAgICAgJnN0YXRl LT5jZGNsay5sb2dpY2FsKSkgew0KPiArCX0gZWxzZSBpZiAoaW50ZWxfY2RjbGtfY2hhbmdlZCgm b2xkX2NkY2xrX3N0YXRlLT5sb2dpY2FsLA0KPiArCQkJCSAgICAgICAmbmV3X2NkY2xrX3N0YXRl LT5sb2dpY2FsKSkgew0KPiAgCQlyZXQgPSBpbnRlbF9hdG9taWNfbG9ja19nbG9iYWxfc3RhdGUo c3RhdGUpOw0KPiAgCQlpZiAocmV0KQ0KPiAgCQkJcmV0dXJuIHJldDsNCj4gQEAgLTIzOTgsOCAr MjQxMiw4IEBAIGludCBpbnRlbF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0DQo+IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpDQo+ICANCj4gIAlpZiAoaXNfcG93ZXJfb2ZfMihzdGF0ZS0+YWN0 aXZlX3BpcGVzKSAmJg0KPiAgCSAgICBpbnRlbF9jZGNsa19jYW5fY2QyeF91cGRhdGUoZGV2X3By aXYsDQo+IC0JCQkJCSZkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLA0KPiAtCQkJCQkmc3RhdGUtPmNk Y2xrLmFjdHVhbCkpIHsNCj4gKwkJCQkJJm9sZF9jZGNsa19zdGF0ZS0+YWN0dWFsLA0KPiArCQkJ CQkmbmV3X2NkY2xrX3N0YXRlLT5hY3R1YWwpKSB7DQo+ICAJCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOw0KPiAgCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsNCj4gIA0KPiBA QCAtMjQxNywyOCArMjQzMSwyOCBAQCBpbnQgaW50ZWxfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVj dA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgCX0NCj4gIA0KPiAgCWlmIChwaXBl ICE9IElOVkFMSURfUElQRSkgew0KPiAtCQlzdGF0ZS0+Y2RjbGsucGlwZSA9IHBpcGU7DQo+ICsJ CW5ld19jZGNsa19zdGF0ZS0+cGlwZSA9IHBpcGU7DQo+ICANCj4gIAkJRFJNX0RFQlVHX0tNUygi Q2FuIGNoYW5nZSBjZGNsayB3aXRoIHBpcGUgJWMgYWN0aXZlXG4iLA0KPiAgCQkJICAgICAgcGlw ZV9uYW1lKHBpcGUpKTsNCj4gLQl9IGVsc2UgaWYgKGludGVsX2NkY2xrX25lZWRzX21vZGVzZXQo JmRldl9wcml2LT5jZGNsay5hY3R1YWwsDQo+IC0JCQkJCSAgICAgJnN0YXRlLT5jZGNsay5hY3R1 YWwpKSB7DQo+ICsJfSBlbHNlIGlmIChpbnRlbF9jZGNsa19uZWVkc19tb2Rlc2V0KCZvbGRfY2Rj bGtfc3RhdGUtPmFjdHVhbCwNCj4gKwkJCQkJICAgICAmbmV3X2NkY2xrX3N0YXRlLT5hY3R1YWwp KSANCj4gew0KPiAgCQkvKiBBbGwgcGlwZXMgbXVzdCBiZSBzd2l0Y2hlZCBvZmYgd2hpbGUgd2Ug Y2hhbmdlIHRoZQ0KPiBjZGNsay4gKi8NCj4gIAkJcmV0ID0gaW50ZWxfbW9kZXNldF9hbGxfcGlw ZXMoc3RhdGUpOw0KPiAgCQlpZiAocmV0KQ0KPiAgCQkJcmV0dXJuIHJldDsNCj4gIA0KPiAtCQlz dGF0ZS0+Y2RjbGsucGlwZSA9IElOVkFMSURfUElQRTsNCj4gKwkJbmV3X2NkY2xrX3N0YXRlLT5w aXBlID0gSU5WQUxJRF9QSVBFOw0KPiAgDQo+ICAJCURSTV9ERUJVR19LTVMoIk1vZGVzZXQgcmVx dWlyZWQgZm9yIGNkY2xrIGNoYW5nZVxuIik7DQo+ICAJfQ0KPiAgDQo+ICAJRFJNX0RFQlVHX0tN UygiTmV3IGNkY2xrIGNhbGN1bGF0ZWQgdG8gYmUgbG9naWNhbCAldSBrSHosDQo+IGFjdHVhbCAl dSBrSHpcbiIsDQo+IC0JCSAgICAgIHN0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xrLA0KPiAtCQkg ICAgICBzdGF0ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrKTsNCj4gKwkJICAgICAgbmV3X2NkY2xrX3N0 YXRlLT5sb2dpY2FsLmNkY2xrLA0KPiArCQkgICAgICBuZXdfY2RjbGtfc3RhdGUtPmFjdHVhbC5j ZGNsayk7DQo+ICAJRFJNX0RFQlVHX0tNUygiTmV3IHZvbHRhZ2UgbGV2ZWwgY2FsY3VsYXRlZCB0 byBiZSBsb2dpY2FsICV1LA0KPiBhY3R1YWwgJXVcbiIsDQo+IC0JCSAgICAgIHN0YXRlLT5jZGNs ay5sb2dpY2FsLnZvbHRhZ2VfbGV2ZWwsDQo+IC0JCSAgICAgIHN0YXRlLT5jZGNsay5hY3R1YWwu dm9sdGFnZV9sZXZlbCk7DQo+ICsJCSAgICAgIG5ld19jZGNsa19zdGF0ZS0+bG9naWNhbC52b2x0 YWdlX2xldmVsLA0KPiArCQkgICAgICBuZXdfY2RjbGtfc3RhdGUtPmFjdHVhbC52b2x0YWdlX2xl dmVsKTsNCj4gIA0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiBpbmRleCAyNWIwZWFiMDE5Y2IuLjYzZWZi OGY5YzY2OSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMNCj4gQEAgLTc0ODEsNiArNzQ4MSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNf ZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAqY3J0YywNCj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsNCj4g IAlzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgKmJ3X3N0YXRlID0NCj4gIAkJdG9faW50ZWxfYndfc3Rh dGUoZGV2X3ByaXYtPmJ3X29iai5zdGF0ZSk7DQo+ICsJc3RydWN0IGludGVsX2NkY2xrX3N0YXRl ICpjZGNsa19zdGF0ZSA9DQo+ICsJCSZkZXZfcHJpdi0+Y2RjbGtfc3RhdGU7DQo+ICAJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQ0KPiAgCQl0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPmJhc2Uuc3RhdGUpOw0KPiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4g ZG9tYWluOw0KPiBAQCAtNzU0Nyw4ICs3NTQ5LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19k aXNhYmxlX25vYXRvbWljKHN0cnVjdA0KPiBpbnRlbF9jcnRjICpjcnRjLA0KPiAgCWNydGMtPmVu YWJsZWRfcG93ZXJfZG9tYWlucyA9IDA7DQo+ICANCj4gIAlkZXZfcHJpdi0+YWN0aXZlX3BpcGVz ICY9IH5CSVQocGlwZSk7DQo+IC0JZGV2X3ByaXYtPmNkY2xrLm1pbl9jZGNsa1twaXBlXSA9IDA7 DQo+IC0JZGV2X3ByaXYtPmNkY2xrLm1pbl92b2x0YWdlX2xldmVsW3BpcGVdID0gMDsNCj4gKwlj ZGNsa19zdGF0ZS0+bWluX2NkY2xrW3BpcGVdID0gMDsNCj4gKwljZGNsa19zdGF0ZS0+bWluX3Zv bHRhZ2VfbGV2ZWxbcGlwZV0gPSAwOw0KPiAgDQo+ICAJYndfc3RhdGUtPmRhdGFfcmF0ZVtwaXBl XSA9IDA7DQo+ICAJYndfc3RhdGUtPm51bV9hY3RpdmVfcGxhbmVzW3BpcGVdID0gMDsNCj4gQEAg LTc3ODQsNiArNzc4Niw4IEBAIHN0YXRpYyBib29sIGhzd19jb21wdXRlX2lwc19jb25maWcoc3Ry dWN0DQo+IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ICAJCXRvX2k5MTUoY3J0Y19z dGF0ZS0+dWFwaS5jcnRjLT5kZXYpOw0KPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmlu dGVsX3N0YXRlID0NCj4gIAkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPnVhcGku c3RhdGUpOw0KPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUg PQ0KPiArCQkmaW50ZWxfc3RhdGUtPmNkY2xrX3N0YXRlOw0KPiAgDQo+ICAJaWYgKCFoc3dfY3J0 Y19zdGF0ZV9pcHNfY2FwYWJsZShjcnRjX3N0YXRlKSkNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiBA QCAtNzgwMyw3ICs3ODA3LDcgQEAgc3RhdGljIGJvb2wgaHN3X2NvbXB1dGVfaXBzX2NvbmZpZyhz dHJ1Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkNCj4gIA0KPiAgCS8qIHBpeGVs IHJhdGUgbXVzdG4ndCBleGNlZWQgOTUlIG9mIGNkY2xrIHdpdGggSVBTIG9uIEJEVyAqLw0KPiAg CWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpICYmDQo+IC0JICAgIGNydGNfc3RhdGUtPnBpeGVs X3JhdGUgPiBpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayAqDQo+IDk1IC8gMTAwKQ0K PiArCSAgICBjcnRjX3N0YXRlLT5waXhlbF9yYXRlID4gY2RjbGtfc3RhdGUtPmxvZ2ljYWwuY2Rj bGsgKiA5NSAvDQo+IDEwMCkNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgDQo+ICAJcmV0dXJuIHRy dWU7DQo+IEBAIC0xMjU0NSwxMiArMTI1NDksMTQgQEAgc3RhdGljIHUxNiBoc3dfaXBzX2xpbmV0 aW1lX3dtKGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQ0KPiAg CQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZSk7DQo+ICAJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQ0KPiAgCQkmY3J0Y19z dGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsNCj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3Rh dGUgKmNkY2xrX3N0YXRlID0NCj4gKwkJJnN0YXRlLT5jZGNsa19zdGF0ZTsNCj4gIA0KPiAgCWlm ICghY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQ0KPiAgCQlyZXR1cm4gMDsNCj4gIA0KPiAgCXJldHVy biBESVZfUk9VTkRfQ0xPU0VTVChhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbCAqIDEwMDAgKiA4 LA0KPiAtCQkJCSBzdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayk7DQo+ICsJCQkJIGNkY2xrX3N0 YXRlLT5sb2dpY2FsLmNkY2xrKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHUxNiBza2xfbGluZXRp bWVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpDQo+IEBA IC0xNDc1NCw3ICsxNDc2MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVj dA0KPiBkcm1fZGV2aWNlICpkZXYsDQo+ICAJaWYgKHJldCkNCj4gIAkJZ290byBmYWlsOw0KPiAg DQo+IC0JYW55X21zIHw9IHN0YXRlLT5jZGNsay5mb3JjZV9taW5fY2RjbGtfY2hhbmdlZDsNCj4g KwlhbnlfbXMgfD0gc3RhdGUtPmNkY2xrX3N0YXRlLmZvcmNlX21pbl9jZGNsa19jaGFuZ2VkOw0K PiAgDQo+ICAJcmV0ID0gaW50ZWxfYXRvbWljX2NoZWNrX3BsYW5lcyhzdGF0ZSwgJmFueV9tcyk7 DQo+ICAJaWYgKHJldCkNCj4gQEAgLTE0NzY1LDcgKzE0NzcxLDcgQEAgc3RhdGljIGludCBpbnRl bF9hdG9taWNfY2hlY2soc3RydWN0DQo+IGRybV9kZXZpY2UgKmRldiwNCj4gIAkJaWYgKHJldCkN Cj4gIAkJCWdvdG8gZmFpbDsNCj4gIAl9IGVsc2Ugew0KPiAtCQlzdGF0ZS0+Y2RjbGsubG9naWNh bCA9IGRldl9wcml2LT5jZGNsay5sb2dpY2FsOw0KPiArCQlzdGF0ZS0+Y2RjbGtfc3RhdGUubG9n aWNhbCA9IGRldl9wcml2LQ0KPiA+Y2RjbGtfc3RhdGUubG9naWNhbDsNCj4gIAl9DQo+ICANCj4g IAlyZXQgPSBpbnRlbF9hdG9taWNfY2hlY2tfY3J0Y3Moc3RhdGUpOw0KPiBAQCAtMTczNTIsOSAr MTczNTgsMTIgQEAgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXlfaG9va3Moc3RydWN0DQo+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgDQo+ICB2b2lkIGludGVsX21vZGVzZXRfaW5pdF9o dyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkNCj4gIHsNCj4gKwlzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlID0NCj4gKwkJJmk5MTUtPmNkY2xrX3N0YXRlOw0KPiAr DQo+ICAJaW50ZWxfdXBkYXRlX2NkY2xrKGk5MTUpOw0KPiAgCWludGVsX2R1bXBfY2RjbGtfY29u ZmlnKCZpOTE1LT5jZGNsay5odywgIkN1cnJlbnQgQ0RDTEsiKTsNCj4gLQlpOTE1LT5jZGNsay5s b2dpY2FsID0gaTkxNS0+Y2RjbGsuYWN0dWFsID0gaTkxNS0+Y2RjbGsuaHc7DQo+ICsJY2RjbGtf c3RhdGUtPmxvZ2ljYWwgPSBjZGNsa19zdGF0ZS0+YWN0dWFsID0gaTkxNS0+Y2RjbGsuaHc7DQo+ ICB9DQo+ICANCj4gIC8qDQo+IEBAIC0xODE3Nyw2ICsxODE4Niw4IEBAIHN0YXRpYyB2b2lkDQo+ IGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0K PiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7DQo+ICAJCXN0cnVjdCBpbnRlbF9i d19zdGF0ZSAqYndfc3RhdGUgPQ0KPiAgCQkJdG9faW50ZWxfYndfc3RhdGUoZGV2X3ByaXYtPmJ3 X29iai5zdGF0ZSk7DQo+ICsJCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUg PQ0KPiArCQkJJmRldl9wcml2LT5jZGNsa19zdGF0ZTsNCj4gIAkJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUgPQ0KPiAgCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNl LnN0YXRlKTsNCj4gIAkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsNCj4gQEAgLTE4MjQ1LDgg KzE4MjU2LDggQEAgc3RhdGljIHZvaWQNCj4gaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ICAJCQkJbWluX2NkY2xrID0gMDsNCj4gIAkJfQ0K PiAgDQo+IC0JCWRldl9wcml2LT5jZGNsay5taW5fY2RjbGtbY3J0Yy0+cGlwZV0gPSBtaW5fY2Rj bGs7DQo+IC0JCWRldl9wcml2LT5jZGNsay5taW5fdm9sdGFnZV9sZXZlbFtjcnRjLT5waXBlXSA9 DQo+ICsJCWNkY2xrX3N0YXRlLT5taW5fY2RjbGtbY3J0Yy0+cGlwZV0gPSBtaW5fY2RjbGs7DQo+ ICsJCWNkY2xrX3N0YXRlLT5taW5fdm9sdGFnZV9sZXZlbFtjcnRjLT5waXBlXSA9DQo+ICAJCQlj cnRjX3N0YXRlLT5taW5fdm9sdGFnZV9sZXZlbDsNCj4gIA0KPiAgCQlpbnRlbF9id19jcnRjX3Vw ZGF0ZShid19zdGF0ZSwgY3J0Y19zdGF0ZSk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+IGluZGV4IDQ4NWIyNmQwNWU5 MC4uYjMxZWQ4MjhmYThmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBAQCAtNDYxLDMxICs0NjEsNyBAQCBzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsNCj4gIA0KPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVm Ow0KPiAgDQo+IC0Jc3RydWN0IHsNCj4gLQkJLyoNCj4gLQkJICogTG9naWNhbCBjb25maWd1cmF0 aW9uIG9mIGNkY2xrICh1c2VkIGZvciBhbGwNCj4gc2NhbGluZywNCj4gLQkJICogd2F0ZXJtYXJr LCBldGMuIGNhbGN1bGF0aW9ucyBhbmQgY2hlY2tzKS4gVGhpcyBpcw0KPiAtCQkgKiBjb21wdXRl ZCBhcyBpZiBhbGwgZW5hYmxlZCBjcnRjcyB3ZXJlIGFjdGl2ZS4NCj4gLQkJICovDQo+IC0JCXN0 cnVjdCBpbnRlbF9jZGNsa19jb25maWcgbG9naWNhbDsNCj4gLQ0KPiAtCQkvKg0KPiAtCQkgKiBB Y3R1YWwgY29uZmlndXJhdGlvbiBvZiBjZGNsaywgY2FuIGJlIGRpZmZlcmVudCBmcm9tDQo+IHRo ZQ0KPiAtCQkgKiBsb2dpY2FsIGNvbmZpZ3VyYXRpb24gb25seSB3aGVuIGFsbCBjcnRjJ3MgYXJl IERQTVMNCj4gb2ZmLg0KPiAtCQkgKi8NCj4gLQkJc3RydWN0IGludGVsX2NkY2xrX2NvbmZpZyBh Y3R1YWw7DQo+IC0NCj4gLQkJaW50IGZvcmNlX21pbl9jZGNsazsNCj4gLQkJYm9vbCBmb3JjZV9t aW5fY2RjbGtfY2hhbmdlZDsNCj4gLQ0KPiAtCQkvKiBtaW5pbXVtIGFjY2VwdGFibGUgY2RjbGsg Zm9yIGVhY2ggcGlwZSAqLw0KPiAtCQlpbnQgbWluX2NkY2xrW0k5MTVfTUFYX1BJUEVTXTsNCj4g LQkJLyogbWluaW11bSBhY2NlcHRhYmxlIHZvbHRhZ2UgbGV2ZWwgZm9yIGVhY2ggcGlwZSAqLw0K PiAtCQl1OCBtaW5fdm9sdGFnZV9sZXZlbFtJOTE1X01BWF9QSVBFU107DQo+IC0NCj4gLQkJLyog cGlwZSB0byB3aGljaCBjZDJ4IHVwZGF0ZSBpcyBzeW5jaHJvbml6ZWQgKi8NCj4gLQkJZW51bSBw aXBlIHBpcGU7DQo+IC0JfSBjZGNsazsNCj4gKwlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgY2Rj bGtfc3RhdGU7DQo+ICANCj4gIAlib29sIGRwbGxfc2V0LCBtb2Rlc2V0Ow0KPiAgDQo+IEBAIC01 MTMsOSArNDg5LDcgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7DQo+ICANCj4gIAkvKg0K PiAgCSAqIGFjdGl2ZV9waXBlcw0KPiAtCSAqIG1pbl9jZGNsa1tdDQo+IC0JICogbWluX3ZvbHRh Z2VfbGV2ZWxbXQ0KPiAtCSAqIGNkY2xrLioNCj4gKwkgKiBjZGNsa19zdGF0ZQ0KPiAgCSAqLw0K PiAgCWJvb2wgZ2xvYmFsX3N0YXRlX2NoYW5nZWQ7DQo+ICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oDQo+IGluZGV4IDQ5Mjc2Y2UyODE5Zi4uMTc4N2JmZGQwNTdmIDEwMDY0NA0KPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgNCj4gQEAgLTY1LDYgKzY1LDcgQEANCj4gICNpbmNsdWRlICJpOTE1 X3V0aWxzLmgiDQo+ICANCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2Jpb3MuaCINCj4gKyNp bmNsdWRlICJkaXNwbGF5L2ludGVsX2NkY2xrLmgiDQo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRl bF9kaXNwbGF5LmgiDQo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgi DQo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kcGxsX21nci5oIg0KPiBAQCAtODg5LDYgKzg5 MCwzMyBAQCBzdHJ1Y3QgaTkxNV9zZWxmdGVzdF9zdGFzaCB7DQo+ICAJYXRvbWljX3QgY291bnRl cjsNCj4gIH07DQo+ICANCj4gK3N0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSB7DQo+ICsJLyoNCj4g KwkgKiBMb2dpY2FsIGNvbmZpZ3VyYXRpb24gb2YgY2RjbGsgKHVzZWQgZm9yIGFsbCBzY2FsaW5n LA0KPiArCSAqIHdhdGVybWFyaywgZXRjLiBjYWxjdWxhdGlvbnMgYW5kIGNoZWNrcykuIFRoaXMg aXMNCj4gKwkgKiBjb21wdXRlZCBhcyBpZiBhbGwgZW5hYmxlZCBjcnRjcyB3ZXJlIGFjdGl2ZS4N Cj4gKwkgKi8NCj4gKwlzdHJ1Y3QgaW50ZWxfY2RjbGtfY29uZmlnIGxvZ2ljYWw7DQo+ICsNCj4g KwkvKg0KPiArCSAqIEFjdHVhbCBjb25maWd1cmF0aW9uIG9mIGNkY2xrLCBjYW4gYmUgZGlmZmVy ZW50IGZyb20gdGhlDQo+ICsJICogbG9naWNhbCBjb25maWd1cmF0aW9uIG9ubHkgd2hlbiBhbGwg Y3J0YydzIGFyZSBEUE1TIG9mZi4NCj4gKwkgKi8NCj4gKwlzdHJ1Y3QgaW50ZWxfY2RjbGtfY29u ZmlnIGFjdHVhbDsNCj4gKw0KPiArCS8qIG1pbmltdW0gYWNjZXB0YWJsZSBjZGNsayBmb3IgZWFj aCBwaXBlICovDQo+ICsJaW50IG1pbl9jZGNsa1tJOTE1X01BWF9QSVBFU107DQo+ICsJLyogbWlu aW11bSBhY2NlcHRhYmxlIHZvbHRhZ2UgbGV2ZWwgZm9yIGVhY2ggcGlwZSAqLw0KPiArCXU4IG1p bl92b2x0YWdlX2xldmVsW0k5MTVfTUFYX1BJUEVTXTsNCj4gKw0KPiArCS8qIHBpcGUgdG8gd2hp Y2ggY2QyeCB1cGRhdGUgaXMgc3luY2hyb25pemVkICovDQo+ICsJZW51bSBwaXBlIHBpcGU7DQo+ ICsNCj4gKwkvKiBmb3JjZWQgbWluaW11bSBjZGNsayBmb3IgZ2xrKyBhdWRpbyB3L2EgKi8NCj4g KwlpbnQgZm9yY2VfbWluX2NkY2xrOw0KPiArCWJvb2wgZm9yY2VfbWluX2NkY2xrX2NoYW5nZWQ7 DQo+ICt9Ow0KPiArDQo+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7DQo+ICAJc3RydWN0IGRy bV9kZXZpY2UgZHJtOw0KPiAgDQo+IEBAIC0xMDA5LDI5ICsxMDM3LDE0IEBAIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlIHsNCj4gIAkgKiBGb3IgcmVhZGluZyBob2xkaW5nIGFueSBjcnRjIGxvY2sg aXMgc3VmZmljaWVudCwNCj4gIAkgKiBmb3Igd3JpdGluZyBtdXN0IGhvbGQgYWxsIG9mIHRoZW0u DQo+ICAJICovDQo+ICsJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIGNkY2xrX3N0YXRlOw0KPiAr DQo+ICAJc3RydWN0IHsNCj4gLQkJLyoNCj4gLQkJICogVGhlIGN1cnJlbnQgbG9naWNhbCBjZGNs ayBjb25maWd1cmF0aW9uLg0KPiAtCQkgKiBTZWUgaW50ZWxfYXRvbWljX3N0YXRlLmNkY2xrLmxv Z2ljYWwNCj4gLQkJICovDQo+IC0JCXN0cnVjdCBpbnRlbF9jZGNsa19jb25maWcgbG9naWNhbDsN Cj4gLQkJLyoNCj4gLQkJICogVGhlIGN1cnJlbnQgYWN0dWFsIGNkY2xrIGNvbmZpZ3VyYXRpb24u DQo+IC0JCSAqIFNlZSBpbnRlbF9hdG9taWNfc3RhdGUuY2RjbGsuYWN0dWFsDQo+IC0JCSAqLw0K PiAtCQlzdHJ1Y3QgaW50ZWxfY2RjbGtfY29uZmlnIGFjdHVhbDsNCj4gIAkJLyogVGhlIGN1cnJl bnQgaGFyZHdhcmUgY2RjbGsgY29uZmlndXJhdGlvbiAqLw0KPiAgCQlzdHJ1Y3QgaW50ZWxfY2Rj bGtfY29uZmlnIGh3Ow0KPiAgDQo+ICAJCS8qIGNkY2xrLCBkaXZpZGVyLCBhbmQgcmF0aW8gdGFi bGUgZnJvbSBic3BlYyAqLw0KPiAgCQljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfdmFscyAqdGFi bGU7DQo+IC0NCj4gLQkJaW50IGZvcmNlX21pbl9jZGNsazsNCj4gLQ0KPiAtCQkvKiBtaW5pbXVt IGFjY2VwdGFibGUgY2RjbGsgZm9yIGVhY2ggcGlwZSAqLw0KPiAtCQlpbnQgbWluX2NkY2xrW0k5 MTVfTUFYX1BJUEVTXTsNCj4gLQkJLyogbWluaW11bSBhY2NlcHRhYmxlIHZvbHRhZ2UgbGV2ZWwg Zm9yIGVhY2ggcGlwZSAqLw0KPiAtCQl1OCBtaW5fdm9sdGFnZV9sZXZlbFtJOTE1X01BWF9QSVBF U107DQo+ICAJfSBjZGNsazsNCj4gIA0KPiAgCS8qKg0KPiBAQCAtMTA4OCw4ICsxMTAxLDggQEAg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgew0KPiAgCXN0cnVjdCBtdXRleCBkcGxsX2xvY2s7DQo+ ICANCj4gIAkvKg0KPiAtCSAqIEZvciByZWFkaW5nIGFjdGl2ZV9waXBlcywgbWluX2NkY2xrLCBt aW5fdm9sdGFnZV9sZXZlbA0KPiBob2xkaW5nDQo+IC0JICogYW55IGNydGMgbG9jayBpcyBzdWZm aWNpZW50LCBmb3Igd3JpdGluZyBtdXN0IGhvbGQgYWxsIG9mDQo+IHRoZW0uDQo+ICsJICogRm9y IHJlYWRpbmcgYWN0aXZlX3BpcGVzLCBjZGNsa19zdGF0ZSBob2xkaW5nIGFueSBjcnRjDQo+ICsJ ICogbG9jayBpcyBzdWZmaWNpZW50LCBmb3Igd3JpdGluZyBtdXN0IGhvbGQgYWxsIG9mIHRoZW0u DQo+ICAJICovDQo+ICAJdTggYWN0aXZlX3BpcGVzOw0KPiAgDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK