From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds. Date: Tue, 6 Jun 2017 12:20:02 -0700 Message-ID: <1496776802-28759-5-git-send-email-rodrigo.vivi@intel.com> References: <1496776802-28759-1-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 62E596E147 for ; Tue, 6 Jun 2017 19:19:55 +0000 (UTC) In-Reply-To: <1496776802-28759-1-git-send-email-rodrigo.vivi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Dhinakaran Pandiyan , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org Q29mZmVlIExha2UgaW5oZXJpdCBtb3N0IG9mIEthYnlsYWtlIHByb2R1Y3Rpb24Kd29ya2FyZG91 bmRzLgoKT25seSBkaWZmZXJlbmNlIGlkZW50aWZpZWQgc28gZmFyIGlzOgotIFdhRGlzYWJsZUxT UUNST1BFUkZmb3JPQ0wgaXMgbWFya2VkIGFzIFNJV0FfTkVWRVIKCkNjOiBEaGluYWthcmFuIFBh bmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogUm9k cmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jIHwgNzUgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgfCAxMCArKy0tLQogMyBmaWxlcyBj aGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDRmZjg1NGUuLjhlMDU1YjEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCkBAIC0xODg0LDcgKzE4ODQsNyBAQCBzdGF0aWMgdm9pZCBndHRfd3Jp dGVfd29ya2Fyb3VuZHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIGNh bGxlZCBvbiBkcml2ZXIgbG9hZCBhbmQgYWZ0ZXIgYSBHUFUgcmVzZXQsIHNvIHlvdSBjYW4gcGxh Y2UKIAkgKiB3b3JrYXJvdW5kcyBoZXJlIGV2ZW4gaWYgdGhleSBnZXQgb3ZlcndyaXR0ZW4gYnkg R1BVIHJlc2V0LgogCSAqLwotCS8qIFdhSW5jcmVhc2VEZWZhdWx0VExCRW50cmllczpjaHYsYmR3 LHNrbCxieHQsa2JsLGdsayAqLworCS8qIFdhSW5jcmVhc2VEZWZhdWx0VExCRW50cmllczpjaHYs YmR3LHNrbCxieHQsa2JsLGdsayxjZmwgKi8KIAlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkK IAkJSTkxNV9XUklURShHRU44X0wzX0xSQV8xX0dQR1BVLCBHRU44X0wzX0xSQV8xX0dQR1BVX0RF RkFVTFRfVkFMVUVfQkRXKTsKIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggYmMzOGJkMS4uNjMwZmY2ZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTgxNCwyNCArODE0LDI0 IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUt Pmk5MTU7CiAJaW50IHJldDsKIAotCS8qIFdhQ29uZXh0U3dpdGNoV2l0aENvbmN1cnJlbnRUTEJJ bnZhbGlkYXRlOnNrbCxieHQsa2JsLGdsayAqLworCS8qIFdhQ29uZXh0U3dpdGNoV2l0aENvbmN1 cnJlbnRUTEJJbnZhbGlkYXRlOnNrbCxieHQsa2JsLGdsayxjZmwgKi8KIAlJOTE1X1dSSVRFKEdF TjlfQ1NGRV9DSElDS0VOMV9SQ1MsIF9NQVNLRURfQklUX0VOQUJMRShHRU45X1BSRUVNUFRfR1BH UFVfU1lOQ19TV0lUQ0hfRElTQUJMRSkpOwogCi0JLyogV2FFbmFibGVMYnNTbGFSZXRyeVRpbWVy RGVjcmVtZW50OnNrbCxieHQsa2JsLGdsayAqLworCS8qIFdhRW5hYmxlTGJzU2xhUmV0cnlUaW1l ckRlY3JlbWVudDpza2wsYnh0LGtibCxnbGssY2ZsICovCiAJSTkxNV9XUklURShCRFdfU0NSQVRD SDEsIEk5MTVfUkVBRChCRFdfU0NSQVRDSDEpIHwKIAkJICAgR0VOOV9MQlNfU0xBX1JFVFJZX1RJ TUVSX0RFQ1JFTUVOVF9FTkFCTEUpOwogCi0JLyogV2FEaXNhYmxlS2lsbExvZ2ljOmJ4dCxza2ws a2JsICovCisJLyogV2FEaXNhYmxlS2lsbExvZ2ljOmJ4dCxza2wsa2JsLGNmbCAqLwogCUk5MTVf V1JJVEUoR0FNX0VDT0NISywgSTkxNV9SRUFEKEdBTV9FQ09DSEspIHwKIAkJICAgRUNPQ0hLX0RJ U19UTEIpOwogCi0JLyogV2FDbGVhckZsb3dDb250cm9sR3BncHVDb250ZXh0U2F2ZTpza2wsYnh0 LGtibCxnbGsgKi8KLQkvKiBXYURpc2FibGVQYXJ0aWFsSW5zdFNob290ZG93bjpza2wsYnh0LGti bCxnbGsgKi8KKwkvKiBXYUNsZWFyRmxvd0NvbnRyb2xHcGdwdUNvbnRleHRTYXZlOnNrbCxieHQs a2JsLGdsayxjZmwgKi8KKwkvKiBXYURpc2FibGVQYXJ0aWFsSW5zdFNob290ZG93bjpza2wsYnh0 LGtibCxnbGssY2ZsICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoR0VOOF9ST1dfQ0hJQ0tFTiwKIAkJ CSAgRkxPV19DT05UUk9MX0VOQUJMRSB8CiAJCQkgIFBBUlRJQUxfSU5TVFJVQ1RJT05fU0hPT1RE T1dOX0RJU0FCTEUpOwogCi0JLyogU3luY2luZyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBjYW1lcmEg YW5kIGdyYXBoaWNzOnNrbCxieHQsa2JsICovCisJLyogU3luY2luZyBkZXBlbmRlbmNpZXMgYmV0 d2VlbiBjYW1lcmEgYW5kIGdyYXBoaWNzOnNrbCxieHQsa2JsLGNmbCAqLwogCVdBX1NFVF9CSVRf TUFTS0VEKEhBTEZfU0xJQ0VfQ0hJQ0tFTjMsCiAJCQkgIEdFTjlfRElTQUJMRV9PQ0xfT09CX1NV UFBSRVNTX0xPR0lDKTsKIApAQCAtODUxLDE4ICs4NTEsMTggQEAgc3RhdGljIGludCBnZW45X2lu aXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkgKi8KIAl9 CiAKLQkvKiBXYUVuYWJsZVlWMTJCdWdGaXhJbkhhbGZTbGljZUNoaWNrZW43OnNrbCxieHQsa2Js LGdsayAqLwotCS8qIFdhRW5hYmxlU2FtcGxlckdQR1BVUHJlZW1wdGlvblN1cHBvcnQ6c2tsLGJ4 dCxrYmwgKi8KKwkvKiBXYUVuYWJsZVlWMTJCdWdGaXhJbkhhbGZTbGljZUNoaWNrZW43OnNrbCxi eHQsa2JsLGdsayxjZmwgKi8KKwkvKiBXYUVuYWJsZVNhbXBsZXJHUEdQVVByZWVtcHRpb25TdXBw b3J0OnNrbCxieHQsa2JsLGNmbCAqLwogCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjlfSEFMRl9TTElD RV9DSElDS0VONywKIAkJCSAgR0VOOV9FTkFCTEVfWVYxMl9CVUdGSVggfAogCQkJICBHRU45X0VO QUJMRV9HUEdQVV9QUkVFTVBUSU9OKTsKIAotCS8qIFdhNHg0U1RDT3B0aW1pemF0aW9uRGlzYWJs ZTpza2wsYnh0LGtibCxnbGsgKi8KLQkvKiBXYURpc2FibGVQYXJ0aWFsUmVzb2x2ZUluVmM6c2ts LGJ4dCxrYmwgKi8KKwkvKiBXYTR4NFNUQ09wdGltaXphdGlvbkRpc2FibGU6c2tsLGJ4dCxrYmws Z2xrLGNmbCAqLworCS8qIFdhRGlzYWJsZVBhcnRpYWxSZXNvbHZlSW5WYzpza2wsYnh0LGtibCxj ZmwgKi8KIAlXQV9TRVRfQklUX01BU0tFRChDQUNIRV9NT0RFXzEsIChHRU44XzR4NF9TVENfT1BU SU1JWkFUSU9OX0RJU0FCTEUgfAogCQkJCQkgR0VOOV9QQVJUSUFMX1JFU09MVkVfSU5fVkNfRElT QUJMRSkpOwogCi0JLyogV2FDY3NUbGJQcmVmZXRjaERpc2FibGU6c2tsLGJ4dCxrYmwsZ2xrICov CisJLyogV2FDY3NUbGJQcmVmZXRjaERpc2FibGU6c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwogCVdB X0NMUl9CSVRfTUFTS0VEKEdFTjlfSEFMRl9TTElDRV9DSElDS0VONSwKIAkJCSAgR0VOOV9DQ1Nf VExCX1BSRUZFVENIX0VOQUJMRSk7CiAKQEAgLTg3MSw3ICs4NzEsNyBAQCBzdGF0aWMgaW50IGdl bjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCVdB X1NFVF9CSVRfTUFTS0VEKFNMSUNFX0VDT19DSElDS0VOMCwKIAkJCQkgIFBJWEVMX01BU0tfQ0FN TUlOR19ESVNBQkxFKTsKIAotCS8qIFdhRm9yY2VDb250ZXh0U2F2ZVJlc3RvcmVOb25Db2hlcmVu dDpza2wsYnh0LGtibCAqLworCS8qIFdhRm9yY2VDb250ZXh0U2F2ZVJlc3RvcmVOb25Db2hlcmVu dDpza2wsYnh0LGtibCxjZmwgKi8KIAlXQV9TRVRfQklUX01BU0tFRChIRENfQ0hJQ0tFTjAsCiAJ CQkgIEhEQ19GT1JDRV9DT05URVhUX1NBVkVfUkVTVE9SRV9OT05fQ09IRVJFTlQgfAogCQkJICBI RENfRk9SQ0VfQ1NSX05PTl9DT0hFUkVOVF9PVlJfRElTQUJMRSk7CkBAIC04ODksMzkgKzg4OSw0 MCBAQCBzdGF0aWMgaW50IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJICogYSBUTEIgaW52YWxpZGF0aW9uIG9jY3VycyBkdXJpbmcgYSBQU0Qg Zmx1c2guCiAJICovCiAKLQkvKiBXYUZvcmNlRW5hYmxlTm9uQ29oZXJlbnQ6c2tsLGJ4dCxrYmwg Ki8KKwkvKiBXYUZvcmNlRW5hYmxlTm9uQ29oZXJlbnQ6c2tsLGJ4dCxrYmwsY2ZsICovCiAJV0Ff U0VUX0JJVF9NQVNLRUQoSERDX0NISUNLRU4wLAogCQkJICBIRENfRk9SQ0VfTk9OX0NPSEVSRU5U KTsKIAotCS8qIFdhRGlzYWJsZUhEQ0ludmFsaWRhdGlvbjpza2wsYnh0LGtibCAqLworCS8qIFdh RGlzYWJsZUhEQ0ludmFsaWRhdGlvbjpza2wsYnh0LGtibCxjZmwgKi8KIAlJOTE1X1dSSVRFKEdB TV9FQ09DSEssIEk5MTVfUkVBRChHQU1fRUNPQ0hLKSB8CiAJCSAgIEJEV19ESVNBQkxFX0hEQ19J TlZBTElEQVRJT04pOwogCi0JLyogV2FEaXNhYmxlU2FtcGxlclBvd2VyQnlwYXNzRm9yU09QaW5n UG9uZzpza2wsYnh0LGtibCAqLworCS8qIFdhRGlzYWJsZVNhbXBsZXJQb3dlckJ5cGFzc0ZvclNP UGluZ1Bvbmc6c2tsLGJ4dCxrYmwsY2ZsICovCiAJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8 CiAJICAgIElTX0tBQllMQUtFKGRldl9wcml2KSB8fAorCSAgICBJU19DT0ZGRUVMQUtFKGRldl9w cml2KXx8CiAJICAgIElTX0JYVF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0IwKSkKIAkJ V0FfU0VUX0JJVF9NQVNLRUQoSEFMRl9TTElDRV9DSElDS0VOMywKIAkJCQkgIEdFTjhfU0FNUExF Ul9QT1dFUl9CWVBBU1NfRElTKTsKIAotCS8qIFdhRGlzYWJsZVNUVW5pdFBvd2VyT3B0aW1pemF0 aW9uOnNrbCxieHQsa2JsLGdsayAqLworCS8qIFdhRGlzYWJsZVNUVW5pdFBvd2VyT3B0aW1pemF0 aW9uOnNrbCxieHQsa2JsLGdsayxjZmwgKi8KIAlXQV9TRVRfQklUX01BU0tFRChIQUxGX1NMSUNF X0NISUNLRU4yLCBHRU44X1NUX1BPX0RJU0FCTEUpOwogCi0JLyogV2FPQ0xDb2hlcmVudExpbmVG bHVzaDpza2wsYnh0LGtibCAqLworCS8qIFdhT0NMQ29oZXJlbnRMaW5lRmx1c2g6c2tsLGJ4dCxr YmwsY2ZsICovCiAJSTkxNV9XUklURShHRU44X0wzU1FDUkVHNCwgKEk5MTVfUkVBRChHRU44X0wz U1FDUkVHNCkgfAogCQkJCSAgICBHRU44X0xRU0NfRkxVU0hfQ09IRVJFTlRfTElORVMpKTsKIAot CS8qIFdhVkZFU3RhdGVBZnRlclBpcGVDb250cm9sd2l0aE1lZGlhU3RhdGVDbGVhcjpza2wsYnh0 LGdsayAqLworCS8qIFdhVkZFU3RhdGVBZnRlclBpcGVDb250cm9sd2l0aE1lZGlhU3RhdGVDbGVh cjpza2wsYnh0LGdsayxjZmwgKi8KIAlyZXQgPSB3YV9yaW5nX3doaXRlbGlzdF9yZWcoZW5naW5l LCBHRU45X0NUWF9QUkVFTVBUX1JFRyk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCS8q IFdhRW5hYmxlUHJlZW1wdGlvbkdyYW51bGFyaXR5Q29udHJvbEJ5VU1EOnNrbCxieHQsa2JsICov CisJLyogV2FFbmFibGVQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9sQnlVTUQ6c2tsLGJ4dCxr YmwsY2ZsICovCiAJcmV0PSB3YV9yaW5nX3doaXRlbGlzdF9yZWcoZW5naW5lLCBHRU44X0NTX0NI SUNLRU4xKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JLyogV2FBbGxvd1VNRFRvTW9k aWZ5SERDQ2hpY2tlbjE6c2tsLGJ4dCxrYmwsZ2xrICovCisJLyogV2FBbGxvd1VNRFRvTW9kaWZ5 SERDQ2hpY2tlbjE6c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwogCXJldCA9IHdhX3Jpbmdfd2hpdGVs aXN0X3JlZyhlbmdpbmUsIEdFTjhfSERDX0NISUNLRU4xKTsKIAlpZiAocmV0KQogCQlyZXR1cm4g cmV0OwpAQCAtMTE0MCw2ICsxMTQxLDM4IEBAIHN0YXRpYyBpbnQgZ2xrX2luaXRfd29ya2Fyb3Vu ZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiAwOwogfQogCitzdGF0 aWMgaW50IGNmbF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7 CisJaW50IHJldDsKKworCXJldCA9IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhlbmdpbmUpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBXYUVuYWJsZUdhcHNUc3ZDcmVkaXRGaXg6Y2Zs ICovCisJSTkxNV9XUklURShHRU44X0dBUkJDTlRMLCAoSTkxNV9SRUFEKEdFTjhfR0FSQkNOVEwp IHwKKwkJCQkgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKSk7CisKKwkvKiBXYVRvRW5h YmxlSHdGaXhGb3JQdXNoQ29uc3RIV0J1ZzpjZmwgKi8KKwlXQV9TRVRfQklUX01BU0tFRChDT01N T05fU0xJQ0VfQ0hJQ0tFTjIsCisJCQkgIEdFTjhfU0JFX0RJU0FCTEVfUkVQTEFZX0JVRl9PUFRJ TUlaQVRJT04pOworCisJLyogV2FEaXNhYmxlR2Fmc1VuaXRDbGtHYXRpbmc6Y2ZsICovCisJV0Ff U0VUX0JJVChHRU43X1VDR0NUTDQsIEdFTjhfRVVfR0FVTklUX0NMT0NLX0dBVEVfRElTQUJMRSk7 CisKKwkvKiBXYURpc2FibGVTYmVDYWNoZURpc3BhdGNoUG9ydFNoYXJpbmc6Y2ZsICovCisJV0Ff U0VUX0JJVF9NQVNLRUQoCisJCUdFTjdfSEFMRl9TTElDRV9DSElDS0VOMSwKKwkJR0VON19TQkVf U1NfQ0FDSEVfRElTUEFUQ0hfUE9SVF9TSEFSSU5HX0RJU0FCTEUpOworCisJLyogV2FJblBsYWNl RGVjb21wcmVzc2lvbkhhbmc6Y2ZsICovCisJV0FfU0VUX0JJVChHRU45X0dBTVRfRUNPX1JFR19S V19JQSwKKwkJICAgR0FNVF9FQ09fRU5BQkxFX0lOX1BMQUNFX0RFQ09NUFJFU1MpOworCisJcmV0 dXJuIDA7Cit9CisKIGludCBpbml0X3dvcmthcm91bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVu Z2luZS0+aTkxNTsKQEAgLTExNjIsNiArMTE5NSw4IEBAIGludCBpbml0X3dvcmthcm91bmRzX3Jp bmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQllcnIgPSBrYmxfaW5pdF93b3Jr YXJvdW5kcyhlbmdpbmUpOwogCWVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQogCQll cnIgPSAgZ2xrX2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsKKwllbHNlIGlmIChJU19DT0ZGRUVM QUtFKGRldl9wcml2KSkKKwkJZXJyID0gY2ZsX2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsKIAll bHNlCiAJCWVyciA9IDA7CiAJaWYgKGVycikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDk4 YWViYTkuLjBhZWQxM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTgsMjQgKzU4LDI0 IEBACiAKIHN0YXRpYyB2b2lkIGdlbjlfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCS8qIFNlZSBCc3BlYyBub3RlIGZvciBQU1IyX0NUTCBi aXQgMzEsIFdhIzgyODpza2wsYnh0LGtibCAqLworCS8qIFNlZSBCc3BlYyBub3RlIGZvciBQU1Iy X0NUTCBiaXQgMzEsIFdhIzgyODpza2wsYnh0LGtibCxjZmwgKi8KIAlJOTE1X1dSSVRFKENISUNL RU5fUEFSMV8xLAogCQkgICBJOTE1X1JFQUQoQ0hJQ0tFTl9QQVIxXzEpIHwgU0tMX0VEUF9QU1Jf RklYX1JEV1JBUCk7CiAKIAlJOTE1X1dSSVRFKEdFTjhfQ09ORklHMCwKIAkJICAgSTkxNV9SRUFE KEdFTjhfQ09ORklHMCkgfCBHRU45X0RFRkFVTFRfRklYRVMpOwogCi0JLyogV2FFbmFibGVDaGlj a2VuRENQUjpza2wsYnh0LGtibCxnbGsgKi8KKwkvKiBXYUVuYWJsZUNoaWNrZW5EQ1BSOnNrbCxi eHQsa2JsLGdsayxjZmwgKi8KIAlJOTE1X1dSSVRFKEdFTjhfQ0hJQ0tFTl9EQ1BSXzEsCiAJCSAg IEk5MTVfUkVBRChHRU44X0NISUNLRU5fRENQUl8xKSB8IE1BU0tfV0FLRU1FTSk7CiAKLQkvKiBX YUZiY1R1cm5PZmZGYmNXYXRlcm1hcms6c2tsLGJ4dCxrYmwgKi8KLQkvKiBXYUZiY1dha2VNZW1P bjpza2wsYnh0LGtibCxnbGsgKi8KKwkvKiBXYUZiY1R1cm5PZmZGYmNXYXRlcm1hcms6c2tsLGJ4 dCxrYmwsY2ZsICovCisJLyogV2FGYmNXYWtlTWVtT246c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwog CUk5MTVfV1JJVEUoRElTUF9BUkJfQ1RMLCBJOTE1X1JFQUQoRElTUF9BUkJfQ1RMKSB8CiAJCSAg IERJU1BfRkJDX1dNX0RJUyB8CiAJCSAgIERJU1BfRkJDX01FTU9SWV9XQUtFKTsKIAotCS8qIFdh RmJjSGlnaE1lbUJ3Q29ycnVwdGlvbkF2b2lkYW5jZTpza2wsYnh0LGtibCAqLworCS8qIFdhRmJj SGlnaE1lbUJ3Q29ycnVwdGlvbkF2b2lkYW5jZTpza2wsYnh0LGtibCxjZmwgKi8KIAlJOTE1X1dS SVRFKElMS19EUEZDX0NISUNLRU4sIEk5MTVfUkVBRChJTEtfRFBGQ19DSElDS0VOKSB8CiAJCSAg IElMS19EUEZDX0RJU0FCTEVfRFVNTVkwKTsKIH0KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK