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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FEE8C433F5 for ; Fri, 29 Oct 2021 22:02:32 +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 201C260F38 for ; Fri, 29 Oct 2021 22:02:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 201C260F38 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BD2F36EA85; Fri, 29 Oct 2021 22:02:31 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 951166EA85 for ; Fri, 29 Oct 2021 22:02:30 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10152"; a="228217997" X-IronPort-AV: E=Sophos;i="5.87,193,1631602800"; d="scan'208";a="228217997" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Oct 2021 15:02:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,193,1631602800"; d="scan'208";a="574821750" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 29 Oct 2021 15:02:12 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 29 Oct 2021 15:02:11 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 29 Oct 2021 15:02:11 -0700 Received: from orsmsx610.amr.corp.intel.com ([10.22.229.23]) by ORSMSX610.amr.corp.intel.com ([10.22.229.23]) with mapi id 15.01.2242.012; Fri, 29 Oct 2021 15:02:11 -0700 From: "Souza, Jose" To: "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH 14/16] drm/i915: Use intel_de_rmw() for icl mg phy programming Thread-Index: AQHXuvPPB/1thtCNZ0G0W0X5lt5psKvrInmA Date: Fri, 29 Oct 2021 22:02:11 +0000 Message-ID: <95ce65f6982748402fabeccf8ac43b26a356ff0d.camel@intel.com> References: <20211006204937.30774-1-ville.syrjala@linux.intel.com> <20211006204937.30774-15-ville.syrjala@linux.intel.com> In-Reply-To: <20211006204937.30774-15-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.22.254.132] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 14/16] drm/i915: Use intel_de_rmw() for icl mg phy programming 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gV2VkLCAyMDIxLTEwLTA2IGF0IDIzOjQ5ICswMzAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOg0K PiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0K PiANCj4gU3RyZWFtbGluZSB0aGUgY29kZSBieSB1c2luZyBpbnRlbF9kZV9ybXcoKS4NCg0KU29t ZSBsaW5lcyBhYm92ZSAxMDAgY29scywgb3RoZXIgdGhhbiB0aGF0Og0KDQpSZXZpZXdlZC1ieTog Sm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQoNCj4gDQo+IFNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+DQo+IC0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyB8 IDExMSArKysrKysrKy0tLS0tLS0tLS0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDM5IGluc2Vy dGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RkaS5jDQo+IGluZGV4IDNjMWIyODlkZjJjMC4uY2U4Yzg1NzAxY2ZmIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jDQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMNCj4gQEAgLTExNjUs NyArMTE2NSw2IEBAIHN0YXRpYyB2b2lkIGljbF9tZ19waHlfc2V0X3NpZ25hbF9sZXZlbHMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBp bnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsNCj4gIAljb25zdCBzdHJ1 Y3QgaW50ZWxfZGRpX2J1Zl90cmFucyAqdHJhbnM7DQo+ICAJaW50IG5fZW50cmllcywgbG47DQo+ IC0JdTMyIHZhbDsNCj4gIA0KPiAgCWlmIChpbnRlbF90Y19wb3J0X2luX3RidF9hbHRfbW9kZShl bmNfdG9fZGlnX3BvcnQoZW5jb2RlcikpKQ0KPiAgCQlyZXR1cm47DQo+IEBAIC0xMTc0LDE1ICsx MTczLDExIEBAIHN0YXRpYyB2b2lkIGljbF9tZ19waHlfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJaWYgKGRybV9XQVJOX09OX09OQ0UoJmRldl9w cml2LT5kcm0sICF0cmFucykpDQo+ICAJCXJldHVybjsNCj4gIA0KPiAtCS8qIFNldCBNR19UWF9M SU5LX1BBUkFNUyBjcmlfdXNlX2ZzMzIgdG8gMC4gKi8NCj4gIAlmb3IgKGxuID0gMDsgbG4gPCAy OyBsbisrKSB7DQo+IC0JCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIE1HX1RYMV9MSU5L X1BBUkFNUyhsbiwgdGNfcG9ydCkpOw0KPiAtCQl2YWwgJj0gfkNSSV9VU0VfRlMzMjsNCj4gLQkJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIE1HX1RYMV9MSU5LX1BBUkFNUyhsbiwgdGNfcG9ydCks IHZhbCk7DQo+IC0NCj4gLQkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgTUdfVFgyX0xJ TktfUEFSQU1TKGxuLCB0Y19wb3J0KSk7DQo+IC0JCXZhbCAmPSB+Q1JJX1VTRV9GUzMyOw0KPiAt CQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgTUdfVFgyX0xJTktfUEFSQU1TKGxuLCB0Y19wb3J0 KSwgdmFsKTsNCj4gKwkJaW50ZWxfZGVfcm13KGRldl9wcml2LCBNR19UWDFfTElOS19QQVJBTVMo bG4sIHRjX3BvcnQpLA0KPiArCQkJICAgICBDUklfVVNFX0ZTMzIsIDApOw0KPiArCQlpbnRlbF9k ZV9ybXcoZGV2X3ByaXYsIE1HX1RYMl9MSU5LX1BBUkFNUyhsbiwgdGNfcG9ydCksDQo+ICsJCQkg ICAgIENSSV9VU0VfRlMzMiwgMCk7DQo+ICAJfQ0KPiAgDQo+ICAJLyogUHJvZ3JhbSBNR19UWF9T V0lOR0NUUkwgd2l0aCB2YWx1ZXMgZnJvbSB2c3dpbmcgdGFibGUgKi8NCj4gQEAgLTExOTEsMTkg KzExODYsMTUgQEAgc3RhdGljIHZvaWQgaWNsX21nX3BoeV9zZXRfc2lnbmFsX2xldmVscyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gIA0KPiAgCQlsZXZlbCA9IGludGVsX2RkaV9s ZXZlbChlbmNvZGVyLCBjcnRjX3N0YXRlLCAyKmxuKzApOw0KPiAgDQo+IC0JCXZhbCA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIE1HX1RYMV9TV0lOR0NUUkwobG4sIHRjX3BvcnQpKTsNCj4gLQkJ dmFsICY9IH5DUklfVFhERUVNUEhfT1ZFUlJJREVfMTdfMTJfTUFTSzsNCj4gLQkJdmFsIHw9IENS SV9UWERFRU1QSF9PVkVSUklERV8xN18xMigNCj4gLQkJCXRyYW5zLT5lbnRyaWVzW2xldmVsXS5t Zy5jcmlfdHhkZWVtcGhfb3ZlcnJpZGVfMTdfMTIpOw0KPiAtCQlpbnRlbF9kZV93cml0ZShkZXZf cHJpdiwgTUdfVFgxX1NXSU5HQ1RSTChsbiwgdGNfcG9ydCksIHZhbCk7DQo+ICsJCWludGVsX2Rl X3JtdyhkZXZfcHJpdiwgTUdfVFgxX1NXSU5HQ1RSTChsbiwgdGNfcG9ydCksDQo+ICsJCQkgICAg IENSSV9UWERFRU1QSF9PVkVSUklERV8xN18xMl9NQVNLLA0KPiArCQkJICAgICBDUklfVFhERUVN UEhfT1ZFUlJJREVfMTdfMTIodHJhbnMtPmVudHJpZXNbbGV2ZWxdLm1nLmNyaV90eGRlZW1waF9v dmVycmlkZV8xN18xMikpOw0KPiAgDQo+ICAJCWxldmVsID0gaW50ZWxfZGRpX2xldmVsKGVuY29k ZXIsIGNydGNfc3RhdGUsIDIqbG4rMSk7DQo+ICANCj4gLQkJdmFsID0gaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwgTUdfVFgyX1NXSU5HQ1RSTChsbiwgdGNfcG9ydCkpOw0KPiAtCQl2YWwgJj0gfkNS SV9UWERFRU1QSF9PVkVSUklERV8xN18xMl9NQVNLOw0KPiAtCQl2YWwgfD0gQ1JJX1RYREVFTVBI X09WRVJSSURFXzE3XzEyKA0KPiAtCQkJdHJhbnMtPmVudHJpZXNbbGV2ZWxdLm1nLmNyaV90eGRl ZW1waF9vdmVycmlkZV8xN18xMik7DQo+IC0JCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBNR19U WDJfU1dJTkdDVFJMKGxuLCB0Y19wb3J0KSwgdmFsKTsNCj4gKwkJaW50ZWxfZGVfcm13KGRldl9w cml2LCBNR19UWDJfU1dJTkdDVFJMKGxuLCB0Y19wb3J0KSwNCj4gKwkJCSAgICAgQ1JJX1RYREVF TVBIX09WRVJSSURFXzE3XzEyX01BU0ssDQo+ICsJCQkgICAgIENSSV9UWERFRU1QSF9PVkVSUklE RV8xN18xMih0cmFucy0+ZW50cmllc1tsZXZlbF0ubWcuY3JpX3R4ZGVlbXBoX292ZXJyaWRlXzE3 XzEyKSk7DQo+ICAJfQ0KPiAgDQo+ICAJLyogUHJvZ3JhbSBNR19UWF9EUlZDVFJMIHdpdGggdmFs dWVzIGZyb20gdnN3aW5nIHRhYmxlICovDQo+IEBAIC0xMjEyLDI3ICsxMjAzLDIxIEBAIHN0YXRp YyB2b2lkIGljbF9tZ19waHlfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsDQo+ICANCj4gIAkJbGV2ZWwgPSBpbnRlbF9kZGlfbGV2ZWwoZW5jb2RlciwgY3J0 Y19zdGF0ZSwgMipsbiswKTsNCj4gIA0KPiAtCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2 LCBNR19UWDFfRFJWQ1RSTChsbiwgdGNfcG9ydCkpOw0KPiAtCQl2YWwgJj0gfihDUklfVFhERUVN UEhfT1ZFUlJJREVfMTFfNl9NQVNLIHwNCj4gLQkJCSBDUklfVFhERUVNUEhfT1ZFUlJJREVfNV8w X01BU0spOw0KPiAtCQl2YWwgfD0gQ1JJX1RYREVFTVBIX09WRVJSSURFXzVfMCgNCj4gLQkJCXRy YW5zLT5lbnRyaWVzW2xldmVsXS5tZy5jcmlfdHhkZWVtcGhfb3ZlcnJpZGVfNV8wKSB8DQo+IC0J CQlDUklfVFhERUVNUEhfT1ZFUlJJREVfMTFfNigNCj4gLQkJCQl0cmFucy0+ZW50cmllc1tsZXZl bF0ubWcuY3JpX3R4ZGVlbXBoX292ZXJyaWRlXzExXzYpIHwNCj4gLQkJCUNSSV9UWERFRU1QSF9P VkVSUklERV9FTjsNCj4gLQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIE1HX1RYMV9EUlZDVFJM KGxuLCB0Y19wb3J0KSwgdmFsKTsNCj4gKwkJaW50ZWxfZGVfcm13KGRldl9wcml2LCBNR19UWDFf RFJWQ1RSTChsbiwgdGNfcG9ydCksDQo+ICsJCQkgICAgIENSSV9UWERFRU1QSF9PVkVSUklERV8x MV82X01BU0sgfA0KPiArCQkJICAgICBDUklfVFhERUVNUEhfT1ZFUlJJREVfNV8wX01BU0ssDQo+ ICsJCQkgICAgIENSSV9UWERFRU1QSF9PVkVSUklERV81XzAodHJhbnMtPmVudHJpZXNbbGV2ZWxd Lm1nLmNyaV90eGRlZW1waF9vdmVycmlkZV81XzApIHwNCj4gKwkJCSAgICAgQ1JJX1RYREVFTVBI X09WRVJSSURFXzExXzYodHJhbnMtPmVudHJpZXNbbGV2ZWxdLm1nLmNyaV90eGRlZW1waF9vdmVy cmlkZV8xMV82KSB8DQo+ICsJCQkgICAgIENSSV9UWERFRU1QSF9PVkVSUklERV9FTik7DQo+ICAN Cj4gIAkJbGV2ZWwgPSBpbnRlbF9kZGlfbGV2ZWwoZW5jb2RlciwgY3J0Y19zdGF0ZSwgMipsbisx KTsNCj4gIA0KPiAtCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBNR19UWDJfRFJWQ1RS TChsbiwgdGNfcG9ydCkpOw0KPiAtCQl2YWwgJj0gfihDUklfVFhERUVNUEhfT1ZFUlJJREVfMTFf Nl9NQVNLIHwNCj4gLQkJCSBDUklfVFhERUVNUEhfT1ZFUlJJREVfNV8wX01BU0spOw0KPiAtCQl2 YWwgfD0gQ1JJX1RYREVFTVBIX09WRVJSSURFXzVfMCgNCj4gLQkJCXRyYW5zLT5lbnRyaWVzW2xl dmVsXS5tZy5jcmlfdHhkZWVtcGhfb3ZlcnJpZGVfNV8wKSB8DQo+IC0JCQlDUklfVFhERUVNUEhf T1ZFUlJJREVfMTFfNigNCj4gLQkJCQl0cmFucy0+ZW50cmllc1tsZXZlbF0ubWcuY3JpX3R4ZGVl bXBoX292ZXJyaWRlXzExXzYpIHwNCj4gLQkJCUNSSV9UWERFRU1QSF9PVkVSUklERV9FTjsNCj4g LQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIE1HX1RYMl9EUlZDVFJMKGxuLCB0Y19wb3J0KSwg dmFsKTsNCj4gKwkJaW50ZWxfZGVfcm13KGRldl9wcml2LCBNR19UWDJfRFJWQ1RSTChsbiwgdGNf cG9ydCksDQo+ICsJCQkgICAgIENSSV9UWERFRU1QSF9PVkVSUklERV8xMV82X01BU0sgfA0KPiAr CQkJICAgICBDUklfVFhERUVNUEhfT1ZFUlJJREVfNV8wX01BU0ssDQo+ICsJCQkgICAgIENSSV9U WERFRU1QSF9PVkVSUklERV81XzAodHJhbnMtPmVudHJpZXNbbGV2ZWxdLm1nLmNyaV90eGRlZW1w aF9vdmVycmlkZV81XzApIHwNCj4gKwkJCSAgICAgQ1JJX1RYREVFTVBIX09WRVJSSURFXzExXzYo dHJhbnMtPmVudHJpZXNbbGV2ZWxdLm1nLmNyaV90eGRlZW1waF9vdmVycmlkZV8xMV82KSB8DQo+ ICsJCQkgICAgIENSSV9UWERFRU1QSF9PVkVSUklERV9FTik7DQo+ICANCj4gIAkJLyogRklYTUU6 IFByb2dyYW0gQ1JJX0xPQURHRU5fU0VMIGFmdGVyIHRoZSBzcGVjIGlzIHVwZGF0ZWQgKi8NCj4g IAl9DQo+IEBAIC0xMjQzLDUwICsxMjI4LDMyIEBAIHN0YXRpYyB2b2lkIGljbF9tZ19waHlfc2V0 X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJICogdmFs dWVzIGZyb20gdGFibGUgZm9yIHdoaWNoIFRYMSBhbmQgVFgyIGVuYWJsZWQuDQo+ICAJICovDQo+ ICAJZm9yIChsbiA9IDA7IGxuIDwgMjsgbG4rKykgew0KPiAtCQl2YWwgPSBpbnRlbF9kZV9yZWFk KGRldl9wcml2LCBNR19DTEtIVUIobG4sIHRjX3BvcnQpKTsNCj4gLQkJaWYgKGNydGNfc3RhdGUt PnBvcnRfY2xvY2sgPCAzMDAwMDApDQo+IC0JCQl2YWwgfD0gQ0ZHX0xPV19SQVRFX0xLUkVOX0VO Ow0KPiAtCQllbHNlDQo+IC0JCQl2YWwgJj0gfkNGR19MT1dfUkFURV9MS1JFTl9FTjsNCj4gLQkJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIE1HX0NMS0hVQihsbiwgdGNfcG9ydCksIHZhbCk7DQo+ ICsJCWludGVsX2RlX3JtdyhkZXZfcHJpdiwgTUdfQ0xLSFVCKGxuLCB0Y19wb3J0KSwNCj4gKwkJ CSAgICAgQ0ZHX0xPV19SQVRFX0xLUkVOX0VOLA0KPiArCQkJICAgICBjcnRjX3N0YXRlLT5wb3J0 X2Nsb2NrIDwgMzAwMDAwID8gQ0ZHX0xPV19SQVRFX0xLUkVOX0VOIDogMCk7DQo+ICAJfQ0KPiAg DQo+ICAJLyogUHJvZ3JhbSB0aGUgTUdfVFhfRENDPExOLCBwb3J0IGJlaW5nIHVzZWQ+IGJhc2Vk IG9uIHRoZSBsaW5rIGZyZXF1ZW5jeSAqLw0KPiAgCWZvciAobG4gPSAwOyBsbiA8IDI7IGxuKysp IHsNCj4gLQkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgTUdfVFgxX0RDQyhsbiwgdGNf cG9ydCkpOw0KPiAtCQl2YWwgJj0gfkNGR19BTUlfQ0tfRElWX09WRVJSSURFX1ZBTF9NQVNLOw0K PiAtCQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA8PSA1MDAwMDApIHsNCj4gLQkJCXZhbCAm PSB+Q0ZHX0FNSV9DS19ESVZfT1ZFUlJJREVfRU47DQo+IC0JCX0gZWxzZSB7DQo+IC0JCQl2YWwg fD0gQ0ZHX0FNSV9DS19ESVZfT1ZFUlJJREVfRU4gfA0KPiAtCQkJCUNGR19BTUlfQ0tfRElWX09W RVJSSURFX1ZBTCgxKTsNCj4gLQkJfQ0KPiAtCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgTUdf VFgxX0RDQyhsbiwgdGNfcG9ydCksIHZhbCk7DQo+ICsJCWludGVsX2RlX3JtdyhkZXZfcHJpdiwg TUdfVFgxX0RDQyhsbiwgdGNfcG9ydCksDQo+ICsJCQkgICAgIENGR19BTUlfQ0tfRElWX09WRVJS SURFX1ZBTF9NQVNLIHwNCj4gKwkJCSAgICAgQ0ZHX0FNSV9DS19ESVZfT1ZFUlJJREVfRU4sDQo+ ICsJCQkgICAgIGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiA1MDAwMDAgPw0KPiArCQkJICAgICBD RkdfQU1JX0NLX0RJVl9PVkVSUklERV9FTiB8IENGR19BTUlfQ0tfRElWX09WRVJSSURFX1ZBTCgx KSA6IDApOw0KPiAgDQo+IC0JCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIE1HX1RYMl9E Q0MobG4sIHRjX3BvcnQpKTsNCj4gLQkJdmFsICY9IH5DRkdfQU1JX0NLX0RJVl9PVkVSUklERV9W QUxfTUFTSzsNCj4gLQkJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPD0gNTAwMDAwKSB7DQo+ IC0JCQl2YWwgJj0gfkNGR19BTUlfQ0tfRElWX09WRVJSSURFX0VOOw0KPiAtCQl9IGVsc2Ugew0K PiAtCQkJdmFsIHw9IENGR19BTUlfQ0tfRElWX09WRVJSSURFX0VOIHwNCj4gLQkJCQlDRkdfQU1J X0NLX0RJVl9PVkVSUklERV9WQUwoMSk7DQo+IC0JCX0NCj4gLQkJaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsIE1HX1RYMl9EQ0MobG4sIHRjX3BvcnQpLCB2YWwpOw0KPiArCQlpbnRlbF9kZV9ybXco ZGV2X3ByaXYsIE1HX1RYMl9EQ0MobG4sIHRjX3BvcnQpLA0KPiArCQkJICAgICBDRkdfQU1JX0NL X0RJVl9PVkVSUklERV9WQUxfTUFTSyB8DQo+ICsJCQkgICAgIENGR19BTUlfQ0tfRElWX09WRVJS SURFX0VOLA0KPiArCQkJICAgICBjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTAwMDAwID8NCj4g KwkJCSAgICAgQ0ZHX0FNSV9DS19ESVZfT1ZFUlJJREVfRU4gfCBDRkdfQU1JX0NLX0RJVl9PVkVS UklERV9WQUwoMSkgOiAwKTsNCj4gIAl9DQo+ICANCj4gIAkvKiBQcm9ncmFtIE1HX1RYX1BJU09f UkVBRExPQUQgd2l0aCB2YWx1ZXMgZnJvbSB2c3dpbmcgdGFibGUgKi8NCj4gIAlmb3IgKGxuID0g MDsgbG4gPCAyOyBsbisrKSB7DQo+IC0JCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ IC0JCQkJICAgIE1HX1RYMV9QSVNPX1JFQURMT0FEKGxuLCB0Y19wb3J0KSk7DQo+IC0JCXZhbCB8 PSBDUklfQ0FMQ0lOSVQ7DQo+IC0JCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBNR19UWDFfUElT T19SRUFETE9BRChsbiwgdGNfcG9ydCksDQo+IC0JCQkgICAgICAgdmFsKTsNCj4gLQ0KPiAtCQl2 YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiAtCQkJCSAgICBNR19UWDJfUElTT19SRUFE TE9BRChsbiwgdGNfcG9ydCkpOw0KPiAtCQl2YWwgfD0gQ1JJX0NBTENJTklUOw0KPiAtCQlpbnRl bF9kZV93cml0ZShkZXZfcHJpdiwgTUdfVFgyX1BJU09fUkVBRExPQUQobG4sIHRjX3BvcnQpLA0K PiAtCQkJICAgICAgIHZhbCk7DQo+ICsJCWludGVsX2RlX3JtdyhkZXZfcHJpdiwgTUdfVFgxX1BJ U09fUkVBRExPQUQobG4sIHRjX3BvcnQpLA0KPiArCQkJICAgICAwLCBDUklfQ0FMQ0lOSVQpOw0K PiArCQlpbnRlbF9kZV9ybXcoZGV2X3ByaXYsIE1HX1RYMl9QSVNPX1JFQURMT0FEKGxuLCB0Y19w b3J0KSwNCj4gKwkJCSAgICAgMCwgQ1JJX0NBTENJTklUKTsNCj4gIAl9DQo+ICB9DQo+ICANCg0K