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.9 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,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 741AFC2D0E4 for ; Tue, 17 Nov 2020 09:52:04 +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 0B8472078E for ; Tue, 17 Nov 2020 09:52:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0B8472078E 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 29CAB6E14D; Tue, 17 Nov 2020 09:52:03 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A25C6E040 for ; Tue, 17 Nov 2020 09:52:02 +0000 (UTC) IronPort-SDR: rEf9Wowr1vJoL1WKjM4+0PArSUvi9jjQwWVbCZOWTqDB9t4SnenDpnSWQRKQWdPBto3thAfyGy DUgjiM8QaDqQ== X-IronPort-AV: E=McAfee;i="6000,8403,9807"; a="150743795" X-IronPort-AV: E=Sophos;i="5.77,485,1596524400"; d="scan'208";a="150743795" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2020 01:52:00 -0800 IronPort-SDR: mAQv2ku0mogTTO1ppDoQ6XBoKB2cMHxYWoHAg2KMaCw1AdPxsY0ulrFdQbR5py+zT7mKkOnITi rEAFGRaKJv6A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,485,1596524400"; d="scan'208";a="340851113" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga002.jf.intel.com with ESMTP; 17 Nov 2020 01:52:00 -0800 Received: from bgsmsx603.gar.corp.intel.com (10.109.78.82) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 17 Nov 2020 01:51:59 -0800 Received: from bgsmsx606.gar.corp.intel.com (10.67.234.8) by BGSMSX603.gar.corp.intel.com (10.109.78.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 17 Nov 2020 15:21:56 +0530 Received: from bgsmsx606.gar.corp.intel.com ([10.67.234.8]) by BGSMSX606.gar.corp.intel.com ([10.67.234.8]) with mapi id 15.01.1713.004; Tue, 17 Nov 2020 15:21:56 +0530 From: "Manna, Animesh" To: Ville Syrjala , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH 14/23] drm/i915: HW state readout for Bigjoiner case Thread-Index: AQHWugkFwJul7YqsC0qgLLpz1wIiH6nMGkpQ Date: Tue, 17 Nov 2020 09:51:56 +0000 Message-ID: <11a897f8029d43e4995219d1769379c7@intel.com> References: <20201113220358.24794-1-ville.syrjala@linux.intel.com> <20201113220358.24794-15-ville.syrjala@linux.intel.com> In-Reply-To: <20201113220358.24794-15-ville.syrjala@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action x-originating-ip: [10.223.10.1] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 14/23] drm/i915: HW state readout for Bigjoiner case 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+IFNlbnQ6IFNhdHVyZGF5LCBOb3ZlbWJlciAxNCwgMjAyMCAzOjM0IEFNDQo+ IFRvOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IFN1YmplY3Q6IFtJbnRlbC1n ZnhdIFtQQVRDSCAxNC8yM10gZHJtL2k5MTU6IEhXIHN0YXRlIHJlYWRvdXQgZm9yIEJpZ2pvaW5l cg0KPiBjYXNlDQo+IA0KPiBGcm9tOiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50 ZWwuY29tPg0KPiANCj4gU2tpcCBpdGVyYXRpbmcgb3ZlciBiaWdqb2luZXIgc2xhdmVzLCBvbmx5 IHRoZSBtYXN0ZXIgaGFzIHRoZSBzdGF0ZSB3ZSBjYXJlIGFib3V0Lg0KPiANCj4gQWRkIHRoZSB3 aWR0aCBvZiB0aGUgYmlnam9pbmVyIHNsYXZlIHRvIHRoZSByZWNvbnN0cnVjdGVkIGZiLg0KPiAN Cj4gSGlkZSB0aGUgYmlnam9pbmVyIHNsYXZlIHRvIHVzZXJzcGFjZSwgYW5kIGRvdWJsZSB0aGUg bW9kZSBvbiBiaWdqb2luZXIgbWFzdGVyLg0KPiANCj4gQW5kIGxhc3QsIGRpc2FibGUgYmlnam9p bmVyIHNsYXZlIGZyb20gcHJpbWFyeSBpZiByZWNvbnN0cnVjdGlvbiBmYWlscy4NCj4gDQo+IHYz Og0KPiAqIEZpeCB0aGUgZGRpX2dldF9jb25maWcgc2xhdmUgZXJyb3IgKEFua2l0IE5hdXRpeWFs KQ0KPiB2MjoNCj4gKiBVbnN1cHBvcnRlZCBiaWdqb2luZXIgY29uZmlnIGZvciBpbml0aWFsIGZi IChWaWxsZSkNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+DQo+IFt2c3lyamFsYToNCj4gKiBEb24ndCBkbyBhbnkgaHctPnVhcGkg c3RhdGUgY29weSBmb3IgYmlnam9pbmVyIHNsYXZlDQo+ICogV2Ugc3RpbGwgaGF2ZSBody5tb2Rl IHNvIG5vIG5lZWQgdG8gcGFzcyBpdCBpbg0KPiAqIEFwcGVhc2UgY2hlY2twYXRjaF0NCj4gU2ln bmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4NCg0KUmV2aWV3ZWQtYnk6IEFuaW1lc2ggTWFubmEgPGFuaW1lc2gubWFubmFAaW50ZWwuY29t Pg0KDQo+IC0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMgICAg ICAgIHwgICAyIC0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMg ICAgICB8ICAzNyArKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jICB8IDI5MSArKysrKysrKysrKystLS0tLS0NCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAgMSArDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDIz MCBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ljbF9kc2kuYw0KPiBpbmRleCAwZmVjZjM3MmJlMTEuLjEwNGE0MjNlMGNk NSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMNCj4gQEAgLTE0 OTIsOCArMTQ5Miw2IEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyDQo+ICplbmNvZGVyLA0KPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsNCj4gIAlzdHJ1Y3QgaW50ZWxf ZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKGVuY29kZXIpOw0KPiANCj4gLQlpbnRl bF9kc2NfZ2V0X2NvbmZpZyhwaXBlX2NvbmZpZyk7DQo+IC0NCj4gIAkvKiBGSVhNRTogYWRhcHQg aWNsX2RkaV9jbG9ja19nZXQoKSBmb3IgRFNJIGFuZCB1c2UgdGhhdD8gKi8NCj4gIAlwaXBlX2Nv bmZpZy0+cG9ydF9jbG9jayA9IGludGVsX2RwbGxfZ2V0X2ZyZXEoaTkxNSwNCj4gIAkJCQkJCSAg ICAgIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYw0KPiBpbmRleCA5YzRhZDAzOTIwMjUuLmFhNDQ0YzQyODk0OSAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0K PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jDQo+IEBAIC00 NTc2LDIwICs0NTc2LDE0IEBAIHN0YXRpYyB2b2lkIGJkd19nZXRfdHJhbnNfcG9ydF9zeW5jX2Nv bmZpZyhzdHJ1Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkNCj4gIAkJICAgIGNy dGNfc3RhdGUtPnN5bmNfbW9kZV9zbGF2ZXNfbWFzayk7DQo+ICB9DQo+IA0KPiAtdm9pZCBpbnRl bF9kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gLQkJCSAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQ0KPiArc3RhdGljIHZvaWQgaW50 ZWxfZGRpX3JlYWRfZnVuY19jdGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICsJ CQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykNCj4gIHsNCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsNCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo cGlwZV9jb25maWctPnVhcGkuY3J0Yyk7DQo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyID0gcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyOw0KPiAgCXUzMiB0ZW1wLCBmbGFncyA9 IDA7DQo+IA0KPiAtCS8qIFhYWDogRFNJIHRyYW5zY29kZXIgcGFyYW5vaWEgKi8NCj4gLQlpZiAo ZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sDQo+IHRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFu c2NvZGVyKSkpDQo+IC0JCXJldHVybjsNCj4gLQ0KPiAtCWludGVsX2RzY19nZXRfY29uZmlnKHBp cGVfY29uZmlnKTsNCj4gLQ0KPiAgCXRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiBU UkFOU19ERElfRlVOQ19DVEwoY3B1X3RyYW5zY29kZXIpKTsNCj4gIAlpZiAodGVtcCAmIFRSQU5T X0RESV9QSFNZTkMpDQo+ICAJCWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfUEhTWU5DOw0KPiBAQCAt NDY4Myw2ICs0Njc3LDMwIEBAIHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3RydWN0IGludGVs X2VuY29kZXINCj4gKmVuY29kZXIsDQo+ICAJZGVmYXVsdDoNCj4gIAkJYnJlYWs7DQo+ICAJfQ0K PiArfQ0KPiArDQo+ICt2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLA0KPiArCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcpIHsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsNCj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBw aXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7DQo+ICsNCj4gKwkvKiBYWFg6IERTSSB0cmFuc2Nv ZGVyIHBhcmFub2lhICovDQo+ICsJaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLA0KPiB0 cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4g KwlpZiAocGlwZV9jb25maWctPmJpZ2pvaW5lcl9zbGF2ZSkgew0KPiArCQkvKiByZWFkIG91dCBw aXBlIHNldHRpbmdzIGZyb20gbWFzdGVyICovDQo+ICsJCWVudW0gdHJhbnNjb2RlciBzYXZlID0g cGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyOw0KPiArDQo+ICsJCS8qIE91ciBvd24gdHJhbnNj b2RlciBuZWVkcyB0byBiZSBkaXNhYmxlZCB3aGVuIHJlYWRpbmcgaXQgaW4NCj4gaW50ZWxfZGRp X3JlYWRfZnVuY19jdGwoKSAqLw0KPiArCQlXQVJOX09OKHBpcGVfY29uZmlnLT5vdXRwdXRfdHlw ZXMpOw0KPiArCQlwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPSAoZW51bSB0cmFuc2NvZGVy KXBpcGVfY29uZmlnLQ0KPiA+Ymlnam9pbmVyX2xpbmtlZF9jcnRjLT5waXBlOw0KPiArCQlpbnRl bF9kZGlfcmVhZF9mdW5jX2N0bChlbmNvZGVyLCBwaXBlX2NvbmZpZyk7DQo+ICsJCXBpcGVfY29u ZmlnLT5jcHVfdHJhbnNjb2RlciA9IHNhdmU7DQo+ICsJfSBlbHNlIHsNCj4gKwkJaW50ZWxfZGRp X3JlYWRfZnVuY19jdGwoZW5jb2RlciwgcGlwZV9jb25maWcpOw0KPiArCX0NCj4gDQo+ICAJcGlw ZV9jb25maWctPmhhc19hdWRpbyA9DQo+ICAJCWludGVsX2RkaV9pc19hdWRpb19lbmFibGVkKGRl dl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7IEBAIC0NCj4gNDcwOCw3ICs0NzI2LDggQEAgdm9pZCBp bnRlbF9kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gIAkJ ZGV2X3ByaXYtPnZidC5lZHAuYnBwID0gcGlwZV9jb25maWctPnBpcGVfYnBwOw0KPiAgCX0NCj4g DQo+IC0JaW50ZWxfZGRpX2Nsb2NrX2dldChlbmNvZGVyLCBwaXBlX2NvbmZpZyk7DQo+ICsJaWYg KCFwaXBlX2NvbmZpZy0+Ymlnam9pbmVyX3NsYXZlKQ0KPiArCQlpbnRlbF9kZGlfY2xvY2tfZ2V0 KGVuY29kZXIsIHBpcGVfY29uZmlnKTsNCj4gDQo+ICAJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYp KQ0KPiAgCQlwaXBlX2NvbmZpZy0+bGFuZV9sYXRfb3B0aW1fbWFzayA9DQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+IGluZGV4IDYwNjY5YmVm NjU5Zi4uMDdiZWU1Y2FhY2ZlIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYw0KPiBAQCAtMzYzMSw2ICszNjMxLDggQEAgaW50ZWxfZmluZF9p bml0aWFsX3BsYW5lX29iaihzdHJ1Y3QgaW50ZWxfY3J0Yw0KPiAqaW50ZWxfY3J0YywNCj4gIAlz dHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocHJpbWFyeSk7 DQo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9zdGF0ZSA9DQo+ICAJCXRvX2lu dGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsNCj4gKwkgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUgPQ0KPiArCQkgdG9faW50ZWxfY3J0Y19zdGF0ZShpbnRlbF9jcnRjLT5i YXNlLnN0YXRlKTsNCj4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsNCj4gIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsNCj4gDQo+IEBAIC0zNjUzLDcgKzM2NTUsNyBAQCBpbnRlbF9maW5kX2lu aXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjDQo+ICppbnRlbF9jcnRjLA0KPiAgCQlp ZiAoYyA9PSAmaW50ZWxfY3J0Yy0+YmFzZSkNCj4gIAkJCWNvbnRpbnVlOw0KPiANCj4gLQkJaWYg KCF0b19pbnRlbF9jcnRjKGMpLT5hY3RpdmUpDQo+ICsJCWlmICghdG9faW50ZWxfY3J0Y19zdGF0 ZShjLT5zdGF0ZSktPnVhcGkuYWN0aXZlKQ0KPiAgCQkJY29udGludWU7DQo+IA0KPiAgCQlzdGF0 ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKGMtPnByaW1hcnktPnN0YXRlKTsNCj4gQEAgLTM2NzUs NiArMzY3NywxMSBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9j cnRjDQo+ICppbnRlbF9jcnRjLA0KPiAgCSAqIHByZXRlbmQgdGhlIEJJT1MgbmV2ZXIgaGFkIGl0 IGVuYWJsZWQuDQo+ICAJICovDQo+ICAJaW50ZWxfcGxhbmVfZGlzYWJsZV9ub2F0b21pYyhpbnRl bF9jcnRjLCBpbnRlbF9wbGFuZSk7DQo+ICsJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcikgew0K PiArCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqc2xhdmUgPQ0KPiArCQkJY3J0Y19zdGF0ZS0+Ymlnam9p bmVyX2xpbmtlZF9jcnRjOw0KPiArCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKHNsYXZl LCB0b19pbnRlbF9wbGFuZShzbGF2ZS0NCj4gPmJhc2UucHJpbWFyeSkpOw0KPiArCX0NCj4gDQo+ ICAJcmV0dXJuOw0KPiANCj4gQEAgLTgyMjAsMTMgKzgyMjcsMjcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfY3J0Y19yZWFkb3V0X2Rlcml2ZWRfc3RhdGUoc3RydWN0DQo+IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUNCj4gDQo+ICAJZHJtX21vZGVfY29weShwaXBlX21vZGUsIGFkanVzdGVkX21v ZGUpOw0KPiANCj4gKwlpZiAoY3J0Y19zdGF0ZS0+Ymlnam9pbmVyKSB7DQo+ICsJCS8qDQo+ICsJ CSAqIHRyYW5zY29kZXIgaXMgcHJvZ3JhbW1lZCB0byB0aGUgZnVsbCBtb2RlLA0KPiArCQkgKiBi dXQgcGlwZSB0aW1pbmdzIGFyZSBoYWxmIG9mIHRoZSB0cmFuc2NvZGVyIG1vZGUNCj4gKwkJICov DQo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19oZGlzcGxheSAvPSAyOw0KPiArCQlwaXBlX21vZGUtPmNy dGNfaGJsYW5rX3N0YXJ0IC89IDI7DQo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19oYmxhbmtfZW5kIC89 IDI7DQo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19oc3luY19zdGFydCAvPSAyOw0KPiArCQlwaXBlX21v ZGUtPmNydGNfaHN5bmNfZW5kIC89IDI7DQo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19odG90YWwgLz0g MjsNCj4gKwkJcGlwZV9tb2RlLT5jcnRjX2Nsb2NrIC89IDI7DQo+ICsJfQ0KPiArDQo+ICAJaW50 ZWxfbW9kZV9mcm9tX2NydGNfdGltaW5ncyhwaXBlX21vZGUsIHBpcGVfbW9kZSk7DQo+ICAJaW50 ZWxfbW9kZV9mcm9tX2NydGNfdGltaW5ncyhhZGp1c3RlZF9tb2RlLCBhZGp1c3RlZF9tb2RlKTsN Cj4gDQo+ICAJaW50ZWxfY3J0Y19jb21wdXRlX3BpeGVsX3JhdGUoY3J0Y19zdGF0ZSk7DQo+IA0K PiAgCWRybV9tb2RlX2NvcHkobW9kZSwgYWRqdXN0ZWRfbW9kZSk7DQo+IC0JbW9kZS0+aGRpc3Bs YXkgPSBjcnRjX3N0YXRlLT5waXBlX3NyY193Ow0KPiArCW1vZGUtPmhkaXNwbGF5ID0gY3J0Y19z dGF0ZS0+cGlwZV9zcmNfdyA8PCBjcnRjX3N0YXRlLT5iaWdqb2luZXI7DQo+ICAJbW9kZS0+dmRp c3BsYXkgPSBjcnRjX3N0YXRlLT5waXBlX3NyY19oOyAgfQ0KPiANCj4gQEAgLTEwNjk4LDYgKzEw NzE5LDcgQEAgc3RhdGljIHZvaWQNCj4gIHNrbF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsDQo+ICAJCQkgICAgIHN0cnVjdCBpbnRlbF9pbml0aWFsX3Bs YW5lX2NvbmZpZyAqcGxhbmVfY29uZmlnKSAgew0KPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlID0NCj4gK3RvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7 DQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Ow0KPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsNCj4gIAlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoY3J0Yy0+YmFzZS5wcmltYXJ5KTsN Cj4gQEAgLTEwNzE0LDYgKzEwNzM2LDEyIEBAIHNrbF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWco c3RydWN0IGludGVsX2NydGMNCj4gKmNydGMsDQo+IA0KPiAgCWRybV9XQVJOX09OKGRldiwgcGlw ZSAhPSBjcnRjLT5waXBlKTsNCj4gDQo+ICsJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcikgew0K PiArCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gKwkJCSAgICAiVW5zdXBwb3J0ZWQg Ymlnam9pbmVyIGNvbmZpZ3VyYXRpb24gZm9yIGluaXRpYWwNCj4gRkJcbiIpOw0KPiArCQlyZXR1 cm47DQo+ICsJfQ0KPiArDQo+ICAJaW50ZWxfZmIgPSBremFsbG9jKHNpemVvZigqaW50ZWxfZmIp LCBHRlBfS0VSTkVMKTsNCj4gIAlpZiAoIWludGVsX2ZiKSB7DQo+ICAJCWRybV9kYmdfa21zKCZk ZXZfcHJpdi0+ZHJtLCAiZmFpbGVkIHRvIGFsbG9jIGZiXG4iKTsgQEAgLQ0KPiAxMTMyMCw2ICsx MTM0OCw4IEBAIHN0YXRpYyB2b2lkIGhzd19nZXRfZGRpX3BvcnRfc3RhdGUoc3RydWN0IGludGVs X2NydGMNCj4gKmNydGMsDQo+ICAJfSBlbHNlIHsNCj4gIAkJdG1wID0gaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwNCj4gIAkJCQkgICAgVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSk7 DQo+ICsJCWlmICghKHRtcCAmIFRSQU5TX0RESV9GVU5DX0VOQUJMRSkpDQo+ICsJCQlyZXR1cm47 DQo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKQ0KPiAgCQkJcG9ydCA9DQo+IFRH TF9UUkFOU19ERElfRlVOQ19DVExfVkFMX1RPX1BPUlQodG1wKTsNCj4gIAkJZWxzZQ0KPiBAQCAt MTEzOTUsMTAgKzExNDI1LDE5IEBAIHN0YXRpYyBib29sIGhzd19nZXRfcGlwZV9jb25maWcoc3Ry dWN0DQo+IGludGVsX2NydGMgKmNydGMsDQo+ICAJCWFjdGl2ZSA9IHRydWU7DQo+ICAJfQ0KPiAN Cj4gLQlpZiAoIWFjdGl2ZSkNCj4gLQkJZ290byBvdXQ7DQo+ICsJaW50ZWxfZHNjX2dldF9jb25m aWcocGlwZV9jb25maWcpOw0KPiANCj4gLQlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKHBpcGVfY29u ZmlnLT5jcHVfdHJhbnNjb2RlcikgfHwNCj4gKwlpZiAoIWFjdGl2ZSkgew0KPiArCQkvKiBiaWdq b2luZXIgc2xhdmUgZG9lc24ndCBlbmFibGUgdHJhbnNjb2RlciAqLw0KPiArCQlpZiAoIXBpcGVf Y29uZmlnLT5iaWdqb2luZXJfc2xhdmUpDQo+ICsJCQlnb3RvIG91dDsNCj4gKw0KPiArCQlhY3Rp dmUgPSB0cnVlOw0KPiArCQlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9IDE7DQo+ICsN Cj4gKwkJLyogd2UgY2Fubm90IHJlYWQgb3V0IG1vc3Qgc3RhdGUsIHNvIGRvbid0IGJvdGhlci4u ICovDQo+ICsJCXBpcGVfY29uZmlnLT5xdWlya3MgfD0NCj4gUElQRV9DT05GSUdfUVVJUktfQklH Sk9JTkVSX1NMQVZFOw0KPiArCX0gZWxzZSBpZiAoIXRyYW5zY29kZXJfaXNfZHNpKHBpcGVfY29u ZmlnLT5jcHVfdHJhbnNjb2RlcikgfHwNCj4gIAkgICAgSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MSkgew0KPiAgCQloc3dfZ2V0X2RkaV9wb3J0X3N0YXRlKGNydGMsIHBpcGVfY29uZmlnKTsNCj4g IAkJaW50ZWxfZ2V0X3RyYW5zY29kZXJfdGltaW5ncyhjcnRjLCBwaXBlX2NvbmZpZyk7IEBAIC0x MTQ3Myw3DQo+ICsxMTUxMiwxMCBAQCBzdGF0aWMgYm9vbCBoc3dfZ2V0X3BpcGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLA0KPiAgCQl9DQo+ICAJfQ0KPiANCj4gLQlpZiAocGlwZV9j b25maWctPmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09ERVJfRURQICYmDQo+ICsJaWYgKHBpcGVf Y29uZmlnLT5iaWdqb2luZXJfc2xhdmUpIHsNCj4gKwkJLyogQ2Fubm90IGJlIHJlYWQgb3V0IGFz IGEgc2xhdmUsIHNldCB0byAwLiAqLw0KPiArCQlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGll ciA9IDA7DQo+ICsJfSBlbHNlIGlmIChwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgIT0gVFJB TlNDT0RFUl9FRFAgJiYNCj4gIAkgICAgIXRyYW5zY29kZXJfaXNfZHNpKHBpcGVfY29uZmlnLT5j cHVfdHJhbnNjb2RlcikpIHsNCj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPQ0K PiAgCQkJaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gQEAgLTEzNTE2LDYgKzEzNTU4LDkgQEAg aW50ZWxfY3J0Y19jb3B5X3VhcGlfdG9faHdfc3RhdGUoc3RydWN0DQo+IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsDQo+IA0KPiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19jb3B5X2h3X3RvX3Vh cGlfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpICB7DQo+ICsJ aWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICAJ Y3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUgPSBjcnRjX3N0YXRlLT5ody5lbmFibGU7DQo+ICAJY3J0 Y19zdGF0ZS0+dWFwaS5hY3RpdmUgPSBjcnRjX3N0YXRlLT5ody5hY3RpdmU7DQo+ICAJZHJtX1dB Uk5fT04oY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYsDQo+IEBAIC0xNDE1NywzNSArMTQyMDIs NTMgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfY3J0 Y19zdGF0ZSAqY3VycmVudF9jb25maWcsDQo+IA0KPiAgCVBJUEVfQ09ORl9DSEVDS19YKG91dHB1 dF90eXBlcyk7DQo+IA0KPiAtCVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX2hk aXNwbGF5KTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y19odG90YWwp Ow0KPiAtCVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX2hibGFua19zdGFydCk7 DQo+IC0JUElQRV9DT05GX0NIRUNLX0koaHcucGlwZV9tb2RlLmNydGNfaGJsYW5rX2VuZCk7DQo+ IC0JUElQRV9DT05GX0NIRUNLX0koaHcucGlwZV9tb2RlLmNydGNfaHN5bmNfc3RhcnQpOw0KPiAt CVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX2hzeW5jX2VuZCk7DQo+ICsJLyog RklYTUUgZG8gdGhlIHJlYWRvdXQgcHJvcGVybHkgYW5kIGdldCByaWQgb2YgdGhpcyBxdWlyayAq Lw0KPiArCWlmICghUElQRV9DT05GX1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9T TEFWRSkpIHsNCj4gKwkJUElQRV9DT05GX0NIRUNLX0koaHcucGlwZV9tb2RlLmNydGNfaGRpc3Bs YXkpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y19odG90YWwpOw0K PiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQpOw0K PiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y19oYmxhbmtfZW5kKTsNCj4g KwkJUElQRV9DT05GX0NIRUNLX0koaHcucGlwZV9tb2RlLmNydGNfaHN5bmNfc3RhcnQpOw0KPiAr CQlQSVBFX0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y19oc3luY19lbmQpOw0KPiANCj4g LQlQSVBFX0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y192ZGlzcGxheSk7DQo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcucGlwZV9tb2RlLmNydGNfdnRvdGFsKTsNCj4gLQlQSVBFX0NPTkZf Q0hFQ0tfSShody5waXBlX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQpOw0KPiAtCVBJUEVfQ09ORl9D SEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX3ZibGFua19lbmQpOw0KPiAtCVBJUEVfQ09ORl9DSEVD S19JKGh3LnBpcGVfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0KTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tf SShody5waXBlX21vZGUuY3J0Y192c3luY19lbmQpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSSho dy5waXBlX21vZGUuY3J0Y192ZGlzcGxheSk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LnBp cGVfbW9kZS5jcnRjX3Z0b3RhbCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9k ZS5jcnRjX3ZibGFua19zdGFydCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9k ZS5jcnRjX3ZibGFua19lbmQpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUu Y3J0Y192c3luY19zdGFydCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9kZS5j cnRjX3ZzeW5jX2VuZCk7DQo+IA0KPiAtCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21v ZGUuY3J0Y19oZGlzcGxheSk7DQo+IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9k ZS5jcnRjX2h0b3RhbCk7DQo+IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5j cnRjX2hibGFua19zdGFydCk7DQo+IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9k ZS5jcnRjX2hibGFua19lbmQpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21v ZGUuY3J0Y19oc3luY19zdGFydCk7DQo+IC0JUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRf bW9kZS5jcnRjX2hzeW5jX2VuZCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVk X21vZGUuY3J0Y19oZGlzcGxheSk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVk X21vZGUuY3J0Y19odG90YWwpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9t b2RlLmNydGNfaGJsYW5rX3N0YXJ0KTsNCj4gKwkJUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2hibGFua19lbmQpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1 c3RlZF9tb2RlLmNydGNfaHN5bmNfc3RhcnQpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShody5h ZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfZW5kKTsNCj4gDQo+IC0JUElQRV9DT05GX0NIRUNLX0ko aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5KTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSSho dy5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsKTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShody5h ZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX3N0YXJ0KTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSSho dy5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCk7DQo+IC0JUElQRV9DT05GX0NIRUNLX0ko aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0KTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tf SShody5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfZW5kKTsNCj4gKwkJUElQRV9DT05GX0NIRUNL X0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5KTsNCj4gKwkJUElQRV9DT05GX0NIRUNL X0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19J KGh3LmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQpOw0KPiArCQlQSVBFX0NPTkZfQ0hF Q0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCk7DQo+ICsJCVBJUEVfQ09ORl9D SEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192c3luY19zdGFydCk7DQo+ICsJCVBJUEVfQ09O Rl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192c3luY19lbmQpOw0KPiArDQo+ICsJCVBJ UEVfQ09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOw0KPiArDQo+ICsJCVBJUEVfQ09ORl9D SEVDS19GTEFHUyhody5hZGp1c3RlZF9tb2RlLmZsYWdzLA0KPiArCQkJCSAgICAgIERSTV9NT0RF X0ZMQUdfSU5URVJMQUNFKTsNCj4gKw0KPiArCQlpZg0KPiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBF X0NPTkZJR19RVUlSS19NT0RFX1NZTkNfRkxBR1MpKSB7DQo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tf RkxBR1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywNCj4gKwkJCQkJICAgICAgRFJNX01PREVfRkxB R19QSFNZTkMpOw0KPiArCQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUu ZmxhZ3MsDQo+ICsJCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfTkhTWU5DKTsNCj4gKwkJCVBJUEVf Q09ORl9DSEVDS19GTEFHUyhody5hZGp1c3RlZF9tb2RlLmZsYWdzLA0KPiArCQkJCQkgICAgICBE Uk1fTU9ERV9GTEFHX1BWU1lOQyk7DQo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRq dXN0ZWRfbW9kZS5mbGFncywNCj4gKwkJCQkJICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOw0K PiArCQl9DQo+ICsJfQ0KPiANCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXhlbF9tdWx0aXBsaWVy KTsNCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShvdXRwdXRfZm9ybWF0KTsNCj4gIAlQSVBFX0NPTkZf Q0hFQ0tfQk9PTChoYXNfaGRtaV9zaW5rKTsNCj4gIAlpZiAoKElOVEVMX0dFTihkZXZfcHJpdikg PCA4ICYmICFJU19IQVNXRUxMKGRldl9wcml2KSkgfHwgQEAgLQ0KPiAxNDE5NSwyNCArMTQyNTgs MTIgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfY3J0 Y19zdGF0ZSAqY3VycmVudF9jb25maWcsDQo+ICAJUElQRV9DT05GX0NIRUNLX0JPT0woaGRtaV9z Y3JhbWJsaW5nKTsNCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoZG1pX2hpZ2hfdG1kc19jbG9j a19yYXRpbyk7DQo+ICAJUElQRV9DT05GX0NIRUNLX0JPT0woaGFzX2luZm9mcmFtZSk7DQo+IC0J UElQRV9DT05GX0NIRUNLX0JPT0woZmVjX2VuYWJsZSk7DQo+ICsJLyogRklYTUUgZG8gdGhlIHJl YWRvdXQgcHJvcGVybHkgYW5kIGdldCByaWQgb2YgdGhpcyBxdWlyayAqLw0KPiArCWlmICghUElQ RV9DT05GX1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9TTEFWRSkpDQo+ICsJCVBJ UEVfQ09ORl9DSEVDS19CT09MKGZlY19lbmFibGUpOw0KPiANCj4gIAlQSVBFX0NPTkZfQ0hFQ0tf Qk9PTF9JTkNPTVBMRVRFKGhhc19hdWRpbyk7DQo+IA0KPiAtCVBJUEVfQ09ORl9DSEVDS19GTEFH Uyhody5hZGp1c3RlZF9tb2RlLmZsYWdzLA0KPiAtCQkJICAgICAgRFJNX01PREVfRkxBR19JTlRF UkxBQ0UpOw0KPiAtDQo+IC0JaWYgKCFQSVBFX0NPTkZfUVVJUksoUElQRV9DT05GSUdfUVVJUktf TU9ERV9TWU5DX0ZMQUdTKSkgew0KPiAtCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0 ZWRfbW9kZS5mbGFncywNCj4gLQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyk7DQo+IC0J CVBJUEVfQ09ORl9DSEVDS19GTEFHUyhody5hZGp1c3RlZF9tb2RlLmZsYWdzLA0KPiAtCQkJCSAg ICAgIERSTV9NT0RFX0ZMQUdfTkhTWU5DKTsNCj4gLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3 LmFkanVzdGVkX21vZGUuZmxhZ3MsDQo+IC0JCQkJICAgICAgRFJNX01PREVfRkxBR19QVlNZTkMp Ow0KPiAtCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywNCj4g LQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX05WU1lOQyk7DQo+IC0JfQ0KPiAtDQo+ICAJUElQRV9D T05GX0NIRUNLX1goZ21jaF9wZml0LmNvbnRyb2wpOw0KPiAgCS8qIHBmaXQgcmF0aW9zIGFyZSBh dXRvY29tcHV0ZWQgYnkgdGhlIGh3IG9uIGdlbjQrICovDQo+ICAJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPCA0KQ0KPiBAQCAtMTQyMzgsNyArMTQyODksOSBAQCBpbnRlbF9waXBlX2NvbmZpZ19j b21wYXJlKGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywN Cj4gIAkJfQ0KPiANCj4gIAkJUElQRV9DT05GX0NIRUNLX0koc2NhbGVyX3N0YXRlLnNjYWxlcl9p ZCk7DQo+IC0JCVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShwaXhlbF9yYXRlKTsNCj4gKwkJ LyogRklYTUUgZG8gdGhlIHJlYWRvdXQgcHJvcGVybHkgYW5kIGdldCByaWQgb2YgdGhpcyBxdWly ayAqLw0KPiArCQlpZg0KPiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NPTkZJR19RVUlSS19CSUdK T0lORVJfU0xBVkUpKQ0KPiArCQkJUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZKHBpeGVsX3Jh dGUpOw0KPiANCj4gIAkJUElQRV9DT05GX0NIRUNLX1goZ2FtbWFfbW9kZSk7DQo+ICAJCWlmIChJ U19DSEVSUllWSUVXKGRldl9wcml2KSkNCj4gQEAgLTE0MjU5LDQ5ICsxNDMxMiw1MyBAQCBpbnRl bF9waXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0YXRlICpj dXJyZW50X2NvbmZpZywNCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChkb3VibGVfd2lkZSk7DQo+ IA0KPiAgCVBJUEVfQ09ORl9DSEVDS19QKHNoYXJlZF9kcGxsKTsNCj4gLQlQSVBFX0NPTkZfQ0hF Q0tfWChkcGxsX2h3X3N0YXRlLmRwbGwpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdf c3RhdGUuZHBsbF9tZCk7DQo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDAp Ow0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZnAxKTsNCj4gLQlQSVBFX0NP TkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLndycGxsKTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLnNwbGwpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu Y3RybDEpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IxKTsNCj4g LQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMik7DQo+IC0JUElQRV9DT05G X0NIRUNLX1goZHBsbF9od19zdGF0ZS5jZmdjcjApOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRw bGxfaHdfc3RhdGUuZWJiMCk7DQo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5l YmI0KTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDApOw0KPiAtCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMSk7DQo+IC0JUElQRV9DT05GX0NIRUNL X1goZHBsbF9od19zdGF0ZS5wbGwyKTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0 YXRlLnBsbDMpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsNik7DQo+ IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGw4KTsNCj4gLQlQSVBFX0NPTkZf Q0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDkpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUucGxsMTApOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGNz ZHcxMik7DQo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19yZWZjbGtpbl9j dGwpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfY2xrdG9wMl9jb3Jl Y2xrY3RsMSk7DQo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19jbGt0b3Ay X2hzY2xrY3RsKTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9k aXYwKTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9kaXYxKTsN Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9sZik7DQo+IC0JUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfZnJhY19sb2NrKTsNCj4gLQlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9zc2MpOw0KPiAtCVBJUEVfQ09ORl9D SEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX2JpYXMpOw0KPiAtCVBJUEVfQ09ORl9DSEVDS19Y KGRwbGxfaHdfc3RhdGUubWdfcGxsX3RkY19jb2xkc3RfYmlhcyk7DQo+IA0KPiAtCVBJUEVfQ09O Rl9DSEVDS19YKGRzaV9wbGwuY3RybCk7DQo+IC0JUElQRV9DT05GX0NIRUNLX1goZHNpX3BsbC5k aXYpOw0KPiArCS8qIEZJWE1FIGRvIHRoZSByZWFkb3V0IHByb3Blcmx5IGFuZCBnZXQgcmlkIG9m IHRoaXMgcXVpcmsgKi8NCj4gKwlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NPTkZJR19RVUlS S19CSUdKT0lORVJfU0xBVkUpKSB7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUuZHBsbCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7 DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZnAwKTsNCj4gKwkJUElQRV9D T05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDEpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLndycGxsKTsNCj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0 ZS5zcGxsKTsNCj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5jdHJsMSk7DQo+ ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IxKTsNCj4gKwkJUElQRV9D T05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5jZmdjcjIpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLmNmZ2NyMCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdf c3RhdGUuZWJiMCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZWJiNCk7 DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMCk7DQo+ICsJCVBJUEVf Q09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMSk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19Y KGRwbGxfaHdfc3RhdGUucGxsMik7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUucGxsMyk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsNik7DQo+ ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsOCk7DQo+ICsJCVBJUEVfQ09O Rl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsOSk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRw bGxfaHdfc3RhdGUucGxsMTApOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl LnBjc2R3MTIpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3JlZmNs a2luX2N0bCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfY2xrdG9w Ml9jb3JlY2xrY3RsMSk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdf Y2xrdG9wMl9oc2Nsa2N0bCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu bWdfcGxsX2RpdjApOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3Bs bF9kaXYxKTsNCj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfbGYp Ow0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9mcmFjX2xvY2sp Ow0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9zc2MpOw0KPiAr CQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9iaWFzKTsNCj4gKwkJUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfdGRjX2NvbGRzdF9iaWFzKTsNCj4g DQo+IC0JaWYgKElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KQ0K PiAtCQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXBlX2JwcCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19Y KGRzaV9wbGwuY3RybCk7DQo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuZGl2KTsNCj4g DQo+IC0JUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZKGh3LnBpcGVfbW9kZS5jcnRjX2Nsb2Nr KTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlkoaHcuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrKTsNCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlkocG9ydF9jbG9jayk7DQo+ ICsJCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkNCj4g KwkJCVBJUEVfQ09ORl9DSEVDS19JKHBpcGVfYnBwKTsNCj4gDQo+IC0JUElQRV9DT05GX0NIRUNL X0kobWluX3ZvbHRhZ2VfbGV2ZWwpOw0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlko aHcucGlwZV9tb2RlLmNydGNfY2xvY2spOw0KPiArDQo+IAlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tf RlVaWlkoaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrKTsNCj4gKwkJUElQRV9DT05GX0NIRUNL X0NMT0NLX0ZVWlpZKHBvcnRfY2xvY2spOw0KPiArDQo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKG1p bl92b2x0YWdlX2xldmVsKTsNCj4gKwl9DQo+IA0KPiAgCVBJUEVfQ09ORl9DSEVDS19YKGluZm9m cmFtZXMuZW5hYmxlKTsNCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmdjcCk7DQo+ IEBAIC0xNDMxMyw2ICsxNDM3MCw5IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qg c3RydWN0DQo+IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLA0KPiANCj4gIAlQSVBF X0NPTkZfQ0hFQ0tfWChzeW5jX21vZGVfc2xhdmVzX21hc2spOw0KPiAgCVBJUEVfQ09ORl9DSEVD S19JKG1hc3Rlcl90cmFuc2NvZGVyKTsNCj4gKwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChiaWdqb2lu ZXIpOw0KPiArCVBJUEVfQ09ORl9DSEVDS19CT09MKGJpZ2pvaW5lcl9zbGF2ZSk7DQo+ICsJUElQ RV9DT05GX0NIRUNLX1AoYmlnam9pbmVyX2xpbmtlZF9jcnRjKTsNCj4gDQo+ICAJUElQRV9DT05G X0NIRUNLX0koZHNjLmNvbXByZXNzaW9uX2VuYWJsZSk7DQo+ICAJUElQRV9DT05GX0NIRUNLX0ko ZHNjLmRzY19zcGxpdCk7DQo+IEBAIC0xNDU4NCw2ICsxNDY0NCw3IEBAIHZlcmlmeV9jcnRjX3N0 YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLA0KPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyOw0KPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9IG9sZF9j cnRjX3N0YXRlOw0KPiAgCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG9sZF9jcnRj X3N0YXRlLT51YXBpLnN0YXRlOw0KPiArCXN0cnVjdCBpbnRlbF9jcnRjICptYXN0ZXIgPSBjcnRj Ow0KPiANCj4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSgmb2xkX2Ny dGNfc3RhdGUtPnVhcGkpOw0KPiAgCWludGVsX2NydGNfZnJlZV9od19zdGF0ZShvbGRfY3J0Y19z dGF0ZSk7DQo+IEBAIC0xNDYxMSw3ICsxNDY3MiwxMCBAQCB2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywNCj4gIAkJCSIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwN Cj4gIAkJCW5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7DQo+IA0KPiAt CWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZjcnRjLT5iYXNlLCBlbmNvZGVyKSB7DQo+ ICsJaWYgKG5ld19jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpDQo+ICsJCW1hc3RlciA9IG5l d19jcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGM7DQo+ICsNCj4gKwlmb3JfZWFjaF9l bmNvZGVyX29uX2NydGMoZGV2LCAmbWFzdGVyLT5iYXNlLCBlbmNvZGVyKSB7DQo+ICAJCWVudW0g cGlwZSBwaXBlOw0KPiAgCQlib29sIGFjdGl2ZTsNCj4gDQo+IEBAIC0xNDYyMSw3ICsxNDY4NSw3 IEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLA0KPiAgCQkJCWVu Y29kZXItPmJhc2UuYmFzZS5pZCwgYWN0aXZlLA0KPiAgCQkJCW5ld19jcnRjX3N0YXRlLT5ody5h Y3RpdmUpOw0KPiANCj4gLQkJSTkxNV9TVEFURV9XQVJOKGFjdGl2ZSAmJiBjcnRjLT5waXBlICE9 IHBpcGUsDQo+ICsJCUk5MTVfU1RBVEVfV0FSTihhY3RpdmUgJiYgbWFzdGVyLT5waXBlICE9IHBp cGUsDQo+ICAJCQkJIkVuY29kZXIgY29ubmVjdGVkIHRvIHdyb25nIHBpcGUgJWNcbiIsDQo+ICAJ CQkJcGlwZV9uYW1lKHBpcGUpKTsNCj4gDQo+IEBAIC0xODUyNyw3ICsxODU5MSw3IEBAIGludCBp bnRlbF9tb2Rlc2V0X2luaXRfbm9nZW0oc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp DQo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsNCj4gIAkJc3RydWN0IGludGVs X2luaXRpYWxfcGxhbmVfY29uZmlnIHBsYW5lX2NvbmZpZyA9IHt9Ow0KPiANCj4gLQkJaWYgKCFj cnRjLT5hY3RpdmUpDQo+ICsJCWlmICghdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0 YXRlKS0+dWFwaS5hY3RpdmUpDQo+ICAJCQljb250aW51ZTsNCj4gDQo+ICAJCS8qDQo+IEBAIC0x ODgzOCw3ICsxODkwMiw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0 IGludGVsX2NydGMNCj4gKmNydGMsDQo+IA0KPiAgCS8qIEFkanVzdCB0aGUgc3RhdGUgb2YgdGhl IG91dHB1dCBwaXBlIGFjY29yZGluZyB0byB3aGV0aGVyIHdlDQo+ICAJICogaGF2ZSBhY3RpdmUg Y29ubmVjdG9ycy9lbmNvZGVycy4gKi8NCj4gLQlpZiAoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYm ICFpbnRlbF9jcnRjX2hhc19lbmNvZGVycyhjcnRjKSkNCj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcu YWN0aXZlICYmICFpbnRlbF9jcnRjX2hhc19lbmNvZGVycyhjcnRjKSAmJg0KPiArCSAgICAhY3J0 Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQ0KPiAgCQlpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9t aWMoY3J0YywgY3R4KTsNCj4gDQo+ICAJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fCBIQVNf R01DSChkZXZfcHJpdikpIHsgQEAgLTE5MDUzLDYNCj4gKzE5MTE4LDE2IEBAIHN0YXRpYyB2b2lk IGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZQ0KPiAqZGV2 KQ0KPiAgCQkJaW50ZWxfZW5jb2Rlcl9nZXRfY29uZmlnKGVuY29kZXIsIGNydGNfc3RhdGUpOw0K PiAgCQkJaWYgKGVuY29kZXItPnN5bmNfc3RhdGUpDQo+ICAJCQkJZW5jb2Rlci0+c3luY19zdGF0 ZShlbmNvZGVyLCBjcnRjX3N0YXRlKTsNCj4gKw0KPiArCQkJLyogcmVhZCBvdXQgdG8gc2xhdmUg Y3J0YyBhcyB3ZWxsIGZvciBiaWdqb2luZXIgKi8NCj4gKwkJCWlmIChjcnRjX3N0YXRlLT5iaWdq b2luZXIpIHsNCj4gKwkJCQkvKiBlbmNvZGVyIHNob3VsZCByZWFkIGJlIGxpbmtlZCB0byBiaWdq b2luZXINCj4gbWFzdGVyICovDQo+ICsJCQkJV0FSTl9PTihjcnRjX3N0YXRlLT5iaWdqb2luZXJf c2xhdmUpOw0KPiArDQo+ICsJCQkJY3J0YyA9IGNydGNfc3RhdGUtPmJpZ2pvaW5lcl9saW5rZWRf Y3J0YzsNCj4gKwkJCQljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLQ0KPiA+ YmFzZS5zdGF0ZSk7DQo+ICsJCQkJaW50ZWxfZW5jb2Rlcl9nZXRfY29uZmlnKGVuY29kZXIsIGNy dGNfc3RhdGUpOw0KPiArCQkJfQ0KPiAgCQl9IGVsc2Ugew0KPiAgCQkJZW5jb2Rlci0+YmFzZS5j cnRjID0gTlVMTDsNCj4gIAkJfQ0KPiBAQCAtMTkxMDgsNiArMTkxODMsOSBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0DQo+IGRybV9kZXZpY2UgKmRl dikNCj4gIAkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsNCj4gIAkJaW50IG1pbl9jZGNsayA9 IDA7DQo+IA0KPiArCQlpZiAoY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQ0KPiArCQkJY29u dGludWU7DQo+ICsNCj4gIAkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgew0KPiAgCQkJLyoN Cj4gIAkJCSAqIFRoZSBpbml0aWFsIG1vZGUgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIGtl ZXAgQEANCj4gLTE5MTY4LDYgKzE5MjQ2LDM5IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRf cmVhZG91dF9od19zdGF0ZShzdHJ1Y3QNCj4gZHJtX2RldmljZSAqZGV2KQ0KPiAgCQlpbnRlbF9i d19jcnRjX3VwZGF0ZShid19zdGF0ZSwgY3J0Y19zdGF0ZSk7DQo+IA0KPiAgCQlpbnRlbF9waXBl X2NvbmZpZ19zYW5pdHlfY2hlY2soZGV2X3ByaXYsIGNydGNfc3RhdGUpOw0KPiArDQo+ICsJCS8q IGRpc2NhcmQgb3VyIGluY29tcGxldGUgc2xhdmUgc3RhdGUsIGNvcHkgaXQgZnJvbSBtYXN0ZXIg Ki8NCj4gKwkJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lciAmJiBjcnRjX3N0YXRlLT5ody5hY3Rp dmUpIHsNCj4gKwkJCXN0cnVjdCBpbnRlbF9jcnRjICpzbGF2ZSA9IGNydGNfc3RhdGUtDQo+ID5i aWdqb2luZXJfbGlua2VkX2NydGM7DQo+ICsJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc2xh dmVfY3J0Y19zdGF0ZSA9DQo+ICsJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShzbGF2ZS0+YmFzZS5z dGF0ZSk7DQo+ICsNCj4gKwkJCWNvcHlfYmlnam9pbmVyX2NydGNfc3RhdGUoc2xhdmVfY3J0Y19z dGF0ZSwNCj4gY3J0Y19zdGF0ZSk7DQo+ICsJCQlzbGF2ZS0+YmFzZS5tb2RlID0gY3J0Yy0+YmFz ZS5tb2RlOw0KPiArDQo+ICsJCQljZGNsa19zdGF0ZS0+bWluX2NkY2xrW3NsYXZlLT5waXBlXSA9 IG1pbl9jZGNsazsNCj4gKwkJCWNkY2xrX3N0YXRlLT5taW5fdm9sdGFnZV9sZXZlbFtzbGF2ZS0+ cGlwZV0gPQ0KPiArCQkJCWNydGNfc3RhdGUtPm1pbl92b2x0YWdlX2xldmVsOw0KPiArDQo+ICsJ CQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBzbGF2ZSwNCj4g cGxhbmUpIHsNCj4gKwkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlID0NCj4gKwkJCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtDQo+ID5iYXNlLnN0YXRl KTsNCj4gKw0KPiArCQkJCS8qDQo+ICsJCQkJICogRklYTUUgZG9uJ3QgaGF2ZSB0aGUgZmIgeWV0 LCBzbyBjYW4ndA0KPiArCQkJCSAqIHVzZSBpbnRlbF9wbGFuZV9kYXRhX3JhdGUoKSA6KA0KPiAr CQkJCSAqLw0KPiArCQkJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQ0KPiArCQkJCQlj cnRjX3N0YXRlLT5kYXRhX3JhdGVbcGxhbmUtPmlkXSA9DQo+ICsJCQkJCQk0ICogY3J0Y19zdGF0 ZS0+cGl4ZWxfcmF0ZTsNCj4gKwkJCQllbHNlDQo+ICsJCQkJCWNydGNfc3RhdGUtPmRhdGFfcmF0 ZVtwbGFuZS0+aWRdID0gMDsNCj4gKwkJCX0NCj4gKw0KPiArCQkJaW50ZWxfYndfY3J0Y191cGRh dGUoYndfc3RhdGUsIHNsYXZlX2NydGNfc3RhdGUpOw0KPiArCQkJZHJtX2NhbGNfdGltZXN0YW1w aW5nX2NvbnN0YW50cygmc2xhdmUtPmJhc2UsDQo+ICsJCQkJCQkJJnNsYXZlX2NydGNfc3RhdGUt DQo+ID5ody5hZGp1c3RlZF9tb2RlKTsNCj4gKwkJfQ0KPiAgCX0NCj4gIH0NCj4gDQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMu aA0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5o DQo+IGluZGV4IGIzZDk0ZTZjZDdjNS4uY2U4MmQ2NTRkMGYyIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBAQCAt ODUwLDYgKzg1MCw3IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsNCj4gIAkgKiBhY2NvcmRp bmdseS4NCj4gIAkgKi8NCj4gICNkZWZpbmUgUElQRV9DT05GSUdfUVVJUktfTU9ERV9TWU5DX0ZM QUdTCSgxPDwwKSAvKiB1bnJlbGlhYmxlDQo+IHN5bmMgbW9kZS5mbGFncyAqLw0KPiArI2RlZmlu ZSBQSVBFX0NPTkZJR19RVUlSS19CSUdKT0lORVJfU0xBVkUgICAgICAoMTw8MSkgLyogYmlnam9p bmVyIHNsYXZlLA0KPiBwYXJ0aWFsIHJlYWRvdXQgKi8NCj4gIAl1bnNpZ25lZCBsb25nIHF1aXJr czsNCj4gDQo+ICAJdW5zaWduZWQgZmJfYml0czsgLyogZnJhbWVidWZmZXJzIHRvIGZsaXAgKi8N Cj4gLS0NCj4gMi4yNi4yDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXw0KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+IEludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcNCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=