From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ganesan, Aravind" Subject: [PATCH v2 3/3] drm/msm: a4xx support for msm-drm Date: Fri, 14 Nov 2014 06:48:56 -0700 Message-ID: <54660848.5080903@codeaurora.org> References: <5452F4E2.50506@codeaurora.org> <5453A5CE.3090106@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5453A5CE.3090106@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: freedreno@lists.freedesktop.org, Rob Clark Cc: linux-arm-msm@vger.kernel.org, rishib@quicinc.com, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org QWRkZWQgYTR4eCBHUFUgc3VwcG9ydC4KClNpZ25lZC1vZmYtYnk6IEFyYXZpbmQgR2FuZXNhbiA8 YXJhdmluZGdAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmls ZSAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhf Z3B1LmMgICAgICB8IDYxMgorKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuaCAgICAgIHwgIDM0ICsrCiBkcml2ZXJzL2dwdS9k cm0vbXNtL2FkcmVuby9hZHJlbm9fZGV2aWNlLmMgfCAgMTMgKwogZHJpdmVycy9ncHUvZHJtL21z bS9hZHJlbm8vYWRyZW5vX2dwdS5jICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hZHJlbm9fZ3B1LmggICAgfCAgMTAgKwogNiBmaWxlcyBjaGFuZ2VkLCA2NzEgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9tc20vYWRyZW5vL2E0eHhfZ3B1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vbXNtL2FkcmVuby9hNHh4X2dwdS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKaW5kZXggMjBiN2VkYS4u MjEwMjBmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCkBAIC03LDYgKzcsNyBAQCBtc20teSA6PSBcCiAJ YWRyZW5vL2FkcmVub19kZXZpY2UubyBcCiAJYWRyZW5vL2FkcmVub19ncHUubyBcCiAJYWRyZW5v L2EzeHhfZ3B1Lm8gXAorCWFkcmVuby9hNHh4X2dwdS5vIFwKIAloZG1pL2hkbWkubyBcCiAJaGRt aS9oZG1pX2F1ZGlvLm8gXAogCWhkbWkvaGRtaV9icmlkZ2UubyBcCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jCmIvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTR4eF9ncHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzdl YWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9n cHUuYwpAQCAtMCwwICsxLDYxMiBAQAorLyogQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBMaW51eCBG b3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMiBhbmQKKyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICovCisjaW5j bHVkZSAiYTR4eF9ncHUuaCIKKyNpZmRlZiBDT05GSUdfTVNNX09DTUVNCisjICBpbmNsdWRlIDxz b2MvcWNvbS9vY21lbS5oPgorI2VuZGlmCisKKyNkZWZpbmUgQTRYWF9JTlQwX01BU0sgXAorCShB NFhYX0lOVDBfUkJCTV9BSEJfRVJST1IgfCAgICAgICAgXAorCSBBNFhYX0lOVDBfUkJCTV9BVEJf QlVTX09WRVJGTE9XIHwgXAorCSBBNFhYX0lOVDBfQ1BfVDBfUEFDS0VUX0lOX0lCIHwgICAgXAor CSBBNFhYX0lOVDBfQ1BfT1BDT0RFX0VSUk9SIHwgICAgICAgXAorCSBBNFhYX0lOVDBfQ1BfUkVT RVJWRURfQklUX0VSUk9SIHwgXAorCSBBNFhYX0lOVDBfQ1BfSFdfRkFVTFQgfCAgICAgICAgICAg XAorCSBBNFhYX0lOVDBfQ1BfSUIxX0lOVCB8ICAgICAgICAgICAgXAorCSBBNFhYX0lOVDBfQ1Bf SUIyX0lOVCB8ICAgICAgICAgICAgXAorCSBBNFhYX0lOVDBfQ1BfUkJfSU5UIHwgICAgICAgICAg ICAgXAorCSBBNFhYX0lOVDBfQ1BfUkVHX1BST1RFQ1RfRkFVTFQgfCAgXAorCSBBNFhYX0lOVDBf Q1BfQUhCX0VSUk9SX0hBTFQgfCAgICAgXAorCSBBNFhYX0lOVDBfVUNIRV9PT0JfQUNDRVNTKQor CitleHRlcm4gYm9vbCBoYW5nX2RlYnVnOworc3RhdGljIHZvaWQgYTR4eF9kdW1wKHN0cnVjdCBt c21fZ3B1ICpncHUpOworCisvKgorICogYTR4eF9lbmFibGVfaHdjZygpIC0gUHJvZ3JhbSB0aGUg Y2xvY2sgY29udHJvbCByZWdpc3RlcnMKKyAqIEBkZXZpY2U6IFRoZSBhZHJlbm8gZGV2aWNlIHBv aW50ZXIKKyAqLworc3RhdGljIHZvaWQgYTR4eF9lbmFibGVfaHdjZyhzdHJ1Y3QgbXNtX2dwdSAq Z3B1KQoreworCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShn cHUpOworCXVuc2lnbmVkIGludCBpOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisJCWdwdV93 cml0ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfQ1RMX1RQKGkpLCAweDAyMjIyMjAyKTsKKwlm b3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorCQlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NM T0NLX0NUTDJfVFAoaSksIDB4MDAwMDIyMjIpOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisJ CWdwdV93cml0ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfSFlTVF9UUChpKSwgMHgwRTczOUNF Nyk7CisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKwkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhf UkJCTV9DTE9DS19ERUxBWV9UUChpKSwgMHgwMDExMTExMSk7CisJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykKKwkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJCTV9DTE9DS19DVExfU1AoaSksIDB4 MjIyMjIyMjIpOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisJCWdwdV93cml0ZShncHUsIFJF R19BNFhYX1JCQk1fQ0xPQ0tfQ1RMMl9TUChpKSwgMHgwMDIyMjIyMik7CisJZm9yIChpID0gMDsg aSA8IDQ7IGkrKykKKwkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJCTV9DTE9DS19IWVNUX1NQ KGkpLCAweDAwMDAwMTA0KTsKKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorCQlncHVfd3JpdGUo Z3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0RFTEFZX1NQKGkpLCAweDAwMDAwMDgxKTsKKwlncHVf d3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0NUTF9VQ0hFLCAweDIyMjIyMjIyKTsKKwln cHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0NUTDJfVUNIRSwgMHgwMjIyMjIyMik7 CisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJCTV9DTE9DS19DVEwzX1VDSEUsIDB4MDAwMDAw MDApOworCWdwdV93cml0ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfQ1RMNF9VQ0hFLCAweDAw MDAwMDAwKTsKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0hZU1RfVUNIRSwg MHgwMDAwNDQ0NCk7CisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJCTV9DTE9DS19ERUxBWV9V Q0hFLCAweDAwMDAxMTEyKTsKKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorCQlncHVfd3JpdGUo Z3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0NUTF9SQihpKSwgMHgyMjIyMjIyMik7CisKKwkvKiBE aXNhYmxlIEwxIGNsb2NraW5nIGluIEE0MjAgZHVlIHRvIENDVSBpc3N1ZXMgd2l0aCBpdCAqLwor CWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKGFkcmVub19pc19hNDIwKGFkcmVub19n cHUpKSB7CisJCQlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0NUTDJfUkIoaSks CisJCQkJCTB4MDAwMDIwMjApOworCQl9IGVsc2UgeworCQkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0 WFhfUkJCTV9DTE9DS19DVEwyX1JCKGkpLAorCQkJCQkweDAwMDIyMDIwKTsKKwkJfQorCX0KKwor CWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJC TV9DTE9DS19DVExfTUFSQl9DQ1UoaSksCisJCQkJMHgwMDAwMDkyMik7CisJfQorCisJZm9yIChp ID0gMDsgaSA8IDQ7IGkrKykgeworCQlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NL X0hZU1RfUkJfTUFSQl9DQ1UoaSksCisJCQkJMHgwMDAwMDAwMCk7CisJfQorCisJZm9yIChpID0g MDsgaSA8IDQ7IGkrKykgeworCQlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0RF TEFZX1JCX01BUkJfQ0NVX0wxKGkpLAorCQkJCTB4MDAwMDAwMDEpOworCX0KKworCWdwdV93cml0 ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfTU9ERV9HUEMsIDB4MDIyMjIyMjIpOworCWdwdV93 cml0ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfSFlTVF9HUEMsIDB4MDQxMDAxMDQpOworCWdw dV93cml0ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfREVMQVlfR1BDLCAweDAwMDIyMjIyKTsK KwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0NUTF9DT01fRENPTSwgMHgwMDAw MDAyMik7CisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJCTV9DTE9DS19IWVNUX0NPTV9EQ09N LCAweDAwMDAwMTBGKTsKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0RFTEFZ X0NPTV9EQ09NLCAweDAwMDAwMDIyKTsKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NM T0NLX0NUTF9UU0VfUkFTX1JCQk0sIDB4MDAyMjIyMjIpOworCWdwdV93cml0ZShncHUsIFJFR19B NFhYX1JCQk1fQ0xPQ0tfSFlTVF9UU0VfUkFTX1JCQk0sIDB4MDAwMDQxMDQpOworCWdwdV93cml0 ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfREVMQVlfVFNFX1JBU19SQkJNLCAweDAwMDAwMjIy KTsKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0NUTF9ITFNRICwgMHgwMDAw MDAwMCk7CisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJCTV9DTE9DS19IWVNUX0hMU1EsIDB4 MDAwMDAwMDApOworCWdwdV93cml0ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfREVMQVlfSExT USwgMHgwMDAyMDAwMCk7CisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJCTV9DTE9DS19DVEws IDB4QUFBQUFBQUEpOworCWdwdV93cml0ZShncHUsIFJFR19BNFhYX1JCQk1fQ0xPQ0tfQ1RMMiwg MCk7Cit9CisKK3N0YXRpYyB2b2lkIGE0eHhfbWVfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQor eworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmI7CisKKwlPVVRfUEtUMyhy aW5nLCBDUF9NRV9JTklULCAxNyk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDNmNyk7CisJT1VU X1JJTkcocmluZywgMHgwMDAwMDAwMCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7CisJ T1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDA4MCk7 CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDEwMCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDE4 MCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwNjYwMCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAw MDE1MCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDE0ZSk7CisJT1VUX1JJTkcocmluZywgMHgw MDAwMDE1NCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDAwMSk7CisJT1VUX1JJTkcocmluZywg MHgwMDAwMDAwMCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7CisJT1VUX1JJTkcocmlu ZywgMHgwMDAwMDAwMCk7CisJT1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7CisJT1VUX1JJTkco cmluZywgMHgwMDAwMDAwMCk7CisKKwlncHUtPmZ1bmNzLT5mbHVzaChncHUpOworCWdwdS0+ZnVu Y3MtPmlkbGUoZ3B1KTsKK30KKworc3RhdGljIGludCBhNHh4X2h3X2luaXQoc3RydWN0IG1zbV9n cHUgKmdwdSkKK3sKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19n cHUoZ3B1KTsKKwlzdHJ1Y3QgYTR4eF9ncHUgKmE0eHhfZ3B1ID0gdG9fYTR4eF9ncHUoYWRyZW5v X2dwdSk7CisJdWludDMyX3QgKnB0ciwgbGVuOworCWludCBpLCByZXQ7CisKKwlpZiAoYWRyZW5v X2lzX2E0eHgoYWRyZW5vX2dwdSkpIHsKKwkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfVkJJRl9B QklUX1NPUlQsIDB4MDAwMTAwMUYpOworCQlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9WQklGX0FC SVRfU09SVF9DT05GLCAweDAwMDAwMEE0KTsKKwkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfVkJJ Rl9HQVRFX09GRl9XUlJFUV9FTiwgMHgwMDAwMDAwMSk7CisJCWdwdV93cml0ZShncHUsIFJFR19B NFhYX1ZCSUZfSU5fUkRfTElNX0NPTkYwLCAweDE4MTgxODE4KTsKKwkJZ3B1X3dyaXRlKGdwdSwg UkVHX0E0WFhfVkJJRl9JTl9SRF9MSU1fQ09ORjEsIDB4MDAwMDAwMTgpOworCQlncHVfd3JpdGUo Z3B1LCBSRUdfQTRYWF9WQklGX0lOX1dSX0xJTV9DT05GMCwgMHgxODE4MTgxOCk7CisJCWdwdV93 cml0ZShncHUsIFJFR19BNFhYX1ZCSUZfSU5fV1JfTElNX0NPTkYxLCAweDAwMDAwMDE4KTsKKwkJ Z3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfVkJJRl9ST1VORF9ST0JJTl9RT1NfQVJCLCAweDAwMDAw MDAzKTsKKwl9IGVsc2UgeworCQlCVUcoKTsKKwl9CisKKwkvKiBNYWtlIGFsbCBibG9ja3MgY29u dHJpYnV0ZSB0byB0aGUgR1BVIEJVU1kgcGVyZiBjb3VudGVyICovCisJZ3B1X3dyaXRlKGdwdSwg UkVHX0E0WFhfUkJCTV9HUFVfQlVTWV9NQVNLRUQsIDB4ZmZmZmZmZmYpOworCisJLyogVHVuZSB0 aGUgaHlzdGVyc2lzIGNvdW50ZXJzIGZvciBTUCBhbmQgQ1AgaWRsZSBkZXRlY3Rpb24gKi8KKwln cHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX1NQX0hZU1RfQ05ULCAweDEwKTsKKwlncHVfd3Jp dGUoZ3B1LCBSRUdfQTRYWF9SQkJNX1dBSVRfSURMRV9DTE9DS1NfQ1RMLCAweDEwKTsKKworCSAv KiBFbmFibGUgdGhlIFJCQk0gZXJyb3IgcmVwb3J0aW5nIGJpdHMgKi8KKwlncHVfd3JpdGUoZ3B1 LCBSRUdfQTRYWF9SQkJNX0FIQl9DVEwwLCAweDAwMDAwMDAxKTsKKworCS8qIEVuYWJsZSBBSEIg ZXJyb3IgcmVwb3J0aW5nKi8KKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0FIQl9DVEwx LCAweGE2ZmZmZmZmKTsKKworCS8qIEVuYWJsZSBwb3dlciBjb3VudGVycyovCisJZ3B1X3dyaXRl KGdwdSwgUkVHX0E0WFhfUkJCTV9SQkJNX0NUTCwgMHgwMDAwMDAzMCk7CisKKwkvKgorCSAqIFR1 cm4gb24gaGFuZyBkZXRlY3Rpb24gLSB0aGlzIHNwZXdzIGEgbG90IG9mIHVzZWZ1bCBpbmZvcm1h dGlvbgorCSAqIGludG8gdGhlIFJCQk0gcmVnaXN0ZXJzIG9uIGEgaGFuZzoKKwkgKi8KKwlncHVf d3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0lOVEVSRkFDRV9IQU5HX0lOVF9DVEwsCisJCQkoMSA8 PCAzMCkgfCAweEZGRkYpOworCisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfUkJfR01FTV9CQVNF X0FERFIsCisJCQkodW5zaWduZWQgaW50KShhNHh4X2dwdS0+b2NtZW1fYmFzZSA+PiAxNCkpOwor CisJLyogVHVybiBvbiBwZXJmb3JtYW5jZSBjb3VudGVyczogKi8KKwlncHVfd3JpdGUoZ3B1LCBS RUdfQTRYWF9SQkJNX1BFUkZDVFJfQ1RMLCAweDAxKTsKKworCS8qIERpc2FibGUgTDIgYnlwYXNz IHRvIGF2b2lkIFVDSEUgb3V0IG9mIGJvdW5kcyBlcnJvcnMgKi8KKwlncHVfd3JpdGUoZ3B1LCBS RUdfQTRYWF9VQ0hFX1RSQVBfQkFTRV9MTywgMHhmZmZmMDAwMCk7CisJZ3B1X3dyaXRlKGdwdSwg UkVHX0E0WFhfVUNIRV9UUkFQX0JBU0VfSEksIDB4ZmZmZjAwMDApOworCisJZ3B1X3dyaXRlKGdw dSwgUkVHX0E0WFhfQ1BfREVCVUcsICgxIDw8IDI1KSB8CisJCQkoYWRyZW5vX2lzX2E0MjAoYWRy ZW5vX2dwdSkgPyAoMSA8PCAyOSkgOiAwKSk7CisKKwlhNHh4X2VuYWJsZV9od2NnKGdwdSk7CisK KwkvKgorCSAqIEZvciBBNDIwIHNldCBSQkJNX0NMT0NLX0RFTEFZX0hMU1EuQ0dDX0hMU1FfVFBf RUFSTFlfQ1lDID49IDIKKwkgKiBkdWUgdG8gdGltaW5nIGlzc3VlIHdpdGggSExTUV9UUF9DTEtf RU4KKwkgKi8KKwlpZiAoYWRyZW5vX2lzX2E0MjAoYWRyZW5vX2dwdSkpIHsKKwkJdW5zaWduZWQg aW50IHZhbDsKKwkJdmFsID0gZ3B1X3JlYWQoZ3B1LCBSRUdfQTRYWF9SQkJNX0NMT0NLX0RFTEFZ X0hMU1EpOworCQl2YWwgJj0gfkE0WFhfQ0dDX0hMU1FfRUFSTFlfQ1lDX19NQVNLOworCQl2YWwg fD0gMiA8PCBBNFhYX0NHQ19ITFNRX0VBUkxZX0NZQ19fU0hJRlQ7CisJCWdwdV93cml0ZShncHUs IFJFR19BNFhYX1JCQk1fQ0xPQ0tfREVMQVlfSExTUSwgdmFsKTsKKwl9CisKKwlyZXQgPSBhZHJl bm9faHdfaW5pdChncHUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBzZXR1cCBh Y2Nlc3MgcHJvdGVjdGlvbjogKi8KKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9DUF9QUk9URUNU X0NUUkwsIDB4MDAwMDAwMDcpOworCisJLyogUkJCTSByZWdpc3RlcnMgKi8KKwlncHVfd3JpdGUo Z3B1LCBSRUdfQTRYWF9DUF9QUk9URUNUKDApLCAweDYyMDAwMDEwKTsKKwlncHVfd3JpdGUoZ3B1 LCBSRUdfQTRYWF9DUF9QUk9URUNUKDEpLCAweDYzMDAwMDIwKTsKKwlncHVfd3JpdGUoZ3B1LCBS RUdfQTRYWF9DUF9QUk9URUNUKDIpLCAweDY0MDAwMDQwKTsKKwlncHVfd3JpdGUoZ3B1LCBSRUdf QTRYWF9DUF9QUk9URUNUKDMpLCAweDY1MDAwMDgwKTsKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRY WF9DUF9QUk9URUNUKDQpLCAweDY2MDAwMTAwKTsKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9D UF9QUk9URUNUKDUpLCAweDY0MDAwMjAwKTsKKworCS8qIENQIHJlZ2lzdGVycyAqLworCWdwdV93 cml0ZShncHUsIFJFR19BNFhYX0NQX1BST1RFQ1QoNiksIDB4NjcwMDA4MDApOworCWdwdV93cml0 ZShncHUsIFJFR19BNFhYX0NQX1BST1RFQ1QoNyksIDB4NjQwMDE2MDApOworCisKKwkvKiBSQiBy ZWdpc3RlcnMgKi8KKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9DUF9QUk9URUNUKDgpLCAweDYw MDAzMzAwKTsKKworCS8qIEhMU1EgcmVnaXN0ZXJzICovCisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0 WFhfQ1BfUFJPVEVDVCg5KSwgMHg2MDAwMzgwMCk7CisKKwkvKiBWUEMgcmVnaXN0ZXJzICovCisJ Z3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfQ1BfUFJPVEVDVCgxMCksIDB4NjEwMDM5ODApOworCisJ LyogU01NVSByZWdpc3RlcnMgKi8KKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9DUF9QUk9URUNU KDExKSwgMHg2ZTAxMDAwMCk7CisKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0lOVF8w X01BU0ssIEE0WFhfSU5UMF9NQVNLKTsKKworCXJldCA9IGFkcmVub19od19pbml0KGdwdSk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIExvYWQgUE00OiAqLworCXB0ciA9ICh1aW50 MzJfdCAqKShhZHJlbm9fZ3B1LT5wbTQtPmRhdGEpOworCWxlbiA9IGFkcmVub19ncHUtPnBtNC0+ c2l6ZSAvIDQ7CisJREJHKCJsb2FkaW5nIFBNNCB1Y29kZSB2ZXJzaW9uOiAldSIsIHB0clswXSk7 CisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E0WFhfQ1BfTUVfUkFNX1dBRERSLCAwKTsKKwlmb3IgKGkg PSAxOyBpIDwgbGVuOyBpKyspCisJCWdwdV93cml0ZShncHUsIFJFR19BNFhYX0NQX01FX1JBTV9E QVRBLCBwdHJbaV0pOworCisJLyogTG9hZCBQRlA6ICovCisJcHRyID0gKHVpbnQzMl90ICopKGFk cmVub19ncHUtPnBmcC0+ZGF0YSk7CisJbGVuID0gYWRyZW5vX2dwdS0+cGZwLT5zaXplIC8gNDsK KwlEQkcoImxvYWRpbmcgUEZQIHVjb2RlIHZlcnNpb246ICV1IiwgcHRyWzBdKTsKKworCWdwdV93 cml0ZShncHUsIFJFR19BNFhYX0NQX1BGUF9VQ09ERV9BRERSLCAwKTsKKwlmb3IgKGkgPSAxOyBp IDwgbGVuOyBpKyspCisJCWdwdV93cml0ZShncHUsIFJFR19BNFhYX0NQX1BGUF9VQ09ERV9EQVRB LCBwdHJbaV0pOworCisJLyogY2xlYXIgTUVfSEFMVCB0byBzdGFydCBtaWNybyBlbmdpbmUgKi8K KwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9DUF9NRV9DTlRMLCAwKTsKKworCWE0eHhfbWVfaW5p dChncHUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBhNHh4X3JlY292ZXIoc3RydWN0 IG1zbV9ncHUgKmdwdSkKK3sKKwkvKiBkdW1wIHJlZ2lzdGVycyBiZWZvcmUgcmVzZXR0aW5nIGdw dSwgaWYgZW5hYmxlZDogKi8KKwlpZiAoaGFuZ19kZWJ1ZykKKwkJYTR4eF9kdW1wKGdwdSk7CisK KwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX1NXX1JFU0VUX0NNRCwgMSk7CisJZ3B1X3Jl YWQoZ3B1LCBSRUdfQTRYWF9SQkJNX1NXX1JFU0VUX0NNRCk7CisJZ3B1X3dyaXRlKGdwdSwgUkVH X0E0WFhfUkJCTV9TV19SRVNFVF9DTUQsIDApOworCWFkcmVub19yZWNvdmVyKGdwdSk7Cit9CisK K3N0YXRpYyB2b2lkIGE0eHhfZGVzdHJveShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQoreworCXN0cnVj dCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOworCXN0cnVjdCBh NHh4X2dwdSAqYTR4eF9ncHUgPSB0b19hNHh4X2dwdShhZHJlbm9fZ3B1KTsKKworCURCRygiJXMi LCBncHUtPm5hbWUpOworCisJYWRyZW5vX2dwdV9jbGVhbnVwKGFkcmVub19ncHUpOworCisjaWZk ZWYgQ09ORklHX01TTV9PQ01FTQorCWlmIChhNHh4X2dwdS0+b2NtZW1fYmFzZSkKKwkJb2NtZW1f ZnJlZShPQ01FTV9HUkFQSElDUywgYTR4eF9ncHUtPm9jbWVtX2hkbCk7CisjZW5kaWYKKworCWtm cmVlKGE0eHhfZ3B1KTsKK30KKworc3RhdGljIHZvaWQgYTR4eF9pZGxlKHN0cnVjdCBtc21fZ3B1 ICpncHUpCit7CisJLyogd2FpdCBmb3IgcmluZ2J1ZmZlciB0byBkcmFpbjogKi8KKwlhZHJlbm9f aWRsZShncHUpOworCisJLyogdGhlbiB3YWl0IGZvciBHUFUgdG8gZmluaXNoOiAqLworCWlmIChz cGluX3VudGlsKCEoZ3B1X3JlYWQoZ3B1LCBSRUdfQTRYWF9SQkJNX1NUQVRVUykgJgorCQkJCQlB NFhYX1JCQk1fU1RBVFVTX0dQVV9CVVNZKSkpCisJCURSTV9FUlJPUigiJXM6IHRpbWVvdXQgd2Fp dGluZyBmb3IgR1BVIHRvIGlkbGUhXG4iLCBncHUtPm5hbWUpOworCisJLyogVE9ETyBtYXliZSB3 ZSBuZWVkIHRvIHJlc2V0IEdQVSBoZXJlIHRvIHJlY292ZXIgZnJvbSBoYW5nPyAqLworfQorCitz dGF0aWMgaXJxcmV0dXJuX3QgYTR4eF9pcnEoc3RydWN0IG1zbV9ncHUgKmdwdSkKK3sKKwl1aW50 MzJfdCBzdGF0dXM7CisKKwlzdGF0dXMgPSBncHVfcmVhZChncHUsIFJFR19BNFhYX1JCQk1fSU5U XzBfU1RBVFVTKTsKKwlEQkcoIiVzOiBJbnQgc3RhdHVzICUwOHgiLCBncHUtPm5hbWUsIHN0YXR1 cyk7CisKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTRYWF9SQkJNX0lOVF9DTEVBUl9DTUQsIHN0YXR1 cyk7CisKKwltc21fZ3B1X3JldGlyZShncHUpOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQor CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGE0eHhfcmVnaXN0ZXJzW10gPSB7CisJLyogUkJC TSAqLworCTB4MDAwMCwgMHgwMDAyLCAweDAwMDQsIDB4MDAyMSwgMHgwMDIzLCAweDAwMjQsIDB4 MDAyNiwgMHgwMDI2LAorCTB4MDAyOCwgMHgwMDJCLCAweDAwMkUsIDB4MDAzNCwgMHgwMDM3LCAw eDAwNDQsIDB4MDA0NywgMHgwMDY2LAorCTB4MDA2OCwgMHgwMDk1LCAweDAwOUMsIDB4MDE3MCwg MHgwMTc0LCAweDAxQUYsCisJLyogQ1AgKi8KKwkweDAyMDAsIDB4MDIzMywgMHgwMjQwLCAweDAy NTAsIDB4MDRDMCwgMHgwNERELCAweDA1MDAsIDB4MDUwQiwKKwkweDA1NzgsIDB4MDU4RiwKKwkv KiBWU0MgKi8KKwkweDBDMDAsIDB4MEMwMywgMHgwQzA4LCAweDBDNDEsIDB4MEM1MCwgMHgwQzUx LAorCS8qIEdSQVMgKi8KKwkweDBDODAsIDB4MEM4MSwgMHgwQzg4LCAweDBDOEYsCisJLyogUkIg Ki8KKwkweDBDQzAsIDB4MENDMCwgMHgwQ0M0LCAweDBDRDIsCisJLyogUEMgKi8KKwkweDBEMDAs IDB4MEQwQywgMHgwRDEwLCAweDBEMTcsIDB4MEQyMCwgMHgwRDIzLAorCS8qIFZGRCAqLworCTB4 MEU0MCwgMHgwRTRBLAorCS8qIFZQQyAqLworCTB4MEU2MCwgMHgwRTYxLCAweDBFNjMsIDB4MEU2 OCwKKwkvKiBVQ0hFICovCisJMHgwRTgwLCAweDBFODQsIDB4MEU4OCwgMHgwRTk1LAorCS8qIFZN SURNVCAqLworCTB4MTAwMCwgMHgxMDAwLCAweDEwMDIsIDB4MTAwMiwgMHgxMDA0LCAweDEwMDQs IDB4MTAwOCwgMHgxMDBBLAorCTB4MTAwQywgMHgxMDBELCAweDEwMEYsIDB4MTAxMCwgMHgxMDEy LCAweDEwMTYsIDB4MTAyNCwgMHgxMDI0LAorCTB4MTAyNywgMHgxMDI3LCAweDExMDAsIDB4MTEw MCwgMHgxMTAyLCAweDExMDIsIDB4MTEwNCwgMHgxMTA0LAorCTB4MTExMCwgMHgxMTEwLCAweDEx MTIsIDB4MTExNiwgMHgxMTI0LCAweDExMjQsIDB4MTMwMCwgMHgxMzAwLAorCTB4MTM4MCwgMHgx MzgwLAorCS8qIEdSQVMgQ1RYIDAgKi8KKwkweDIwMDAsIDB4MjAwNCwgMHgyMDA4LCAweDIwNjcs IDB4MjA3MCwgMHgyMDc4LCAweDIwN0IsIDB4MjE2RSwKKwkvKiBQQyBDVFggMCAqLworCTB4MjFD MCwgMHgyMUM2LCAweDIxRDAsIDB4MjFEMCwgMHgyMUQ5LCAweDIxRDksIDB4MjFFNSwgMHgyMUU3 LAorCS8qIFZGRCBDVFggMCAqLworCTB4MjIwMCwgMHgyMjA0LCAweDIyMDgsIDB4MjJBOSwKKwkv KiBHUkFTIENUWCAxICovCisJMHgyNDAwLCAweDI0MDQsIDB4MjQwOCwgMHgyNDY3LCAweDI0NzAs IDB4MjQ3OCwgMHgyNDdCLCAweDI1NkUsCisJLyogUEMgQ1RYIDEgKi8KKwkweDI1QzAsIDB4MjVD NiwgMHgyNUQwLCAweDI1RDAsIDB4MjVEOSwgMHgyNUQ5LCAweDI1RTUsIDB4MjVFNywKKwkvKiBW RkQgQ1RYIDEgKi8KKwkweDI2MDAsIDB4MjYwNCwgMHgyNjA4LCAweDI2QTksCisJLyogWFBVICov CisJMHgyQzAwLCAweDJDMDEsIDB4MkMxMCwgMHgyQzEwLCAweDJDMTIsIDB4MkMxNiwgMHgyQzFE LCAweDJDMjAsCisJMHgyQzI4LCAweDJDMjgsIDB4MkMzMCwgMHgyQzMwLCAweDJDMzIsIDB4MkMz NiwgMHgyQzQwLCAweDJDNDAsCisJMHgyQzUwLCAweDJDNTAsIDB4MkM1MiwgMHgyQzU2LCAweDJD ODAsIDB4MkM4MCwgMHgyQzk0LCAweDJDOTUsCisJLyogVkJJRiAqLworCTB4MzAwMCwgMHgzMDA3 LCAweDMwMEMsIDB4MzAxNCwgMHgzMDE4LCAweDMwMUQsIDB4MzAyMCwgMHgzMDIyLAorCTB4MzAy NCwgMHgzMDI2LCAweDMwMjgsIDB4MzAyQSwgMHgzMDJDLCAweDMwMkQsIDB4MzAzMCwgMHgzMDMx LAorCTB4MzAzNCwgMHgzMDM2LCAweDMwMzgsIDB4MzAzOCwgMHgzMDNDLCAweDMwM0QsIDB4MzA0 MCwgMHgzMDQwLAorCTB4MzA0OSwgMHgzMDQ5LCAweDMwNTgsIDB4MzA1OCwgMHgzMDVCLCAweDMw NjEsIDB4MzA2NCwgMHgzMDY4LAorCTB4MzA2QywgMHgzMDZELCAweDMwODAsIDB4MzA4OCwgMHgz MDhCLCAweDMwOEMsIDB4MzA5MCwgMHgzMDk0LAorCTB4MzA5OCwgMHgzMDk4LCAweDMwOUMsIDB4 MzA5QywgMHgzMEMwLCAweDMwQzAsIDB4MzBDOCwgMHgzMEM4LAorCTB4MzBEMCwgMHgzMEQwLCAw eDMwRDgsIDB4MzBEOCwgMHgzMEUwLCAweDMwRTAsIDB4MzEwMCwgMHgzMTAwLAorCTB4MzEwOCwg MHgzMTA4LCAweDMxMTAsIDB4MzExMCwgMHgzMTE4LCAweDMxMTgsIDB4MzEyMCwgMHgzMTIwLAor CTB4MzEyNCwgMHgzMTI1LCAweDMxMjksIDB4MzEyOSwgMHgzMTMxLCAweDMxMzEsIDB4MzMwQywg MHgzMzBDLAorCTB4MzMxMCwgMHgzMzEwLCAweDM0MDAsIDB4MzQwMSwgMHgzNDEwLCAweDM0MTAs IDB4MzQxMiwgMHgzNDE2LAorCTB4MzQxRCwgMHgzNDIwLCAweDM0MjgsIDB4MzQyOCwgMHgzNDMw LCAweDM0MzAsIDB4MzQzMiwgMHgzNDM2LAorCTB4MzQ0MCwgMHgzNDQwLCAweDM0NTAsIDB4MzQ1 MCwgMHgzNDUyLCAweDM0NTYsIDB4MzQ4MCwgMHgzNDgwLAorCTB4MzQ5NCwgMHgzNDk1LCAweDQw MDAsIDB4NDAwMCwgMHg0MDAyLCAweDQwMDIsIDB4NDAwNCwgMHg0MDA0LAorCTB4NDAwOCwgMHg0 MDBBLCAweDQwMEMsIDB4NDAwRCwgMHg0MDBGLCAweDQwMTIsIDB4NDAxNCwgMHg0MDE2LAorCTB4 NDAxRCwgMHg0MDFELCAweDQwMjAsIDB4NDAyNywgMHg0MDYwLCAweDQwNjIsIDB4NDIwMCwgMHg0 MjAwLAorCTB4NDMwMCwgMHg0MzAwLCAweDQ0MDAsIDB4NDQwMCwgMHg0NTAwLCAweDQ1MDAsIDB4 NDgwMCwgMHg0ODAyLAorCTB4NDgwRiwgMHg0ODBGLCAweDQ4MTEsIDB4NDgxMSwgMHg0ODEzLCAw eDQ4MTMsIDB4NDgxNSwgMHg0ODE2LAorCTB4NDgyQiwgMHg0ODJCLCAweDQ4NTcsIDB4NDg1Nywg MHg0ODgzLCAweDQ4ODMsIDB4NDhBRiwgMHg0OEFGLAorCTB4NDhDNSwgMHg0OEM1LCAweDQ4RTUs IDB4NDhFNSwgMHg0OTA1LCAweDQ5MDUsIDB4NDkyNSwgMHg0OTI1LAorCTB4NDk0NSwgMHg0OTQ1 LCAweDQ5NTAsIDB4NDk1MCwgMHg0OTVCLCAweDQ5NUIsIDB4NDk4MCwgMHg0OThFLAorCTB4NEIw MCwgMHg0QjAwLCAweDRDMDAsIDB4NEMwMCwgMHg0RDAwLCAweDREMDAsIDB4NEUwMCwgMHg0RTAw LAorCTB4NEU4MCwgMHg0RTgwLCAweDRGMDAsIDB4NEYwMCwgMHg0RjA4LCAweDRGMDgsIDB4NEYx MCwgMHg0RjEwLAorCTB4NEYxOCwgMHg0RjE4LCAweDRGMjAsIDB4NEYyMCwgMHg0RjMwLCAweDRG MzAsIDB4NEY2MCwgMHg0RjYwLAorCTB4NEY4MCwgMHg0RjgxLCAweDRGODgsIDB4NEY4OSwgMHg0 RkVFLCAweDRGRUUsIDB4NEZGMywgMHg0RkYzLAorCTB4NjAwMCwgMHg2MDAxLCAweDYwMDgsIDB4 NjAwRiwgMHg2MDE0LCAweDYwMTYsIDB4NjAxOCwgMHg2MDFCLAorCTB4NjFGRCwgMHg2MUZELCAw eDYyM0MsIDB4NjIzQywgMHg2MzgwLCAweDYzODAsIDB4NjNBMCwgMHg2M0EwLAorCTB4NjNDMCwg MHg2M0MxLCAweDYzQzgsIDB4NjNDOSwgMHg2M0QwLCAweDYzRDQsIDB4NjNENiwgMHg2M0Q2LAor CTB4NjNFRSwgMHg2M0VFLCAweDY0MDAsIDB4NjQwMSwgMHg2NDA4LCAweDY0MEYsIDB4NjQxNCwg MHg2NDE2LAorCTB4NjQxOCwgMHg2NDFCLCAweDY1RkQsIDB4NjVGRCwgMHg2NjNDLCAweDY2M0Ms IDB4Njc4MCwgMHg2NzgwLAorCTB4NjdBMCwgMHg2N0EwLCAweDY3QzAsIDB4NjdDMSwgMHg2N0M4 LCAweDY3QzksIDB4NjdEMCwgMHg2N0Q0LAorCTB4NjdENiwgMHg2N0Q2LCAweDY3RUUsIDB4NjdF RSwgMHg2ODAwLCAweDY4MDEsIDB4NjgwOCwgMHg2ODBGLAorCTB4NjgxNCwgMHg2ODE2LCAweDY4 MTgsIDB4NjgxQiwgMHg2OUZELCAweDY5RkQsIDB4NkEzQywgMHg2QTNDLAorCTB4NkI4MCwgMHg2 QjgwLCAweDZCQTAsIDB4NkJBMCwgMHg2QkMwLCAweDZCQzEsIDB4NkJDOCwgMHg2QkM5LAorCTB4 NkJEMCwgMHg2QkQ0LCAweDZCRDYsIDB4NkJENiwgMHg2QkVFLCAweDZCRUUsCisJfjAgLyogc2Vu dGluZWwgKi8KK307CisKKyNpZmRlZiBDT05GSUdfREVCVUdfRlMKK3N0YXRpYyB2b2lkIGE0eHhf c2hvdyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCit7CisJZ3B1LT5m dW5jcy0+cG1fcmVzdW1lKGdwdSk7CisKKwlzZXFfcHJpbnRmKG0sICJzdGF0dXM6ICAgJTA4eFxu IiwKKwkJCWdwdV9yZWFkKGdwdSwgUkVHX0E0WFhfUkJCTV9TVEFUVVMpKTsKKwlncHUtPmZ1bmNz LT5wbV9zdXNwZW5kKGdwdSk7CisKKwlhZHJlbm9fc2hvdyhncHUsIG0pOworCit9CisjZW5kaWYK KworLyogUmVnaXN0ZXIgb2Zmc2V0IGRlZmluZXMgZm9yIEE0WFgsIGluIG9yZGVyIG9mIGVudW0g YWRyZW5vX3JlZ3MgKi8KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQKYTR4eF9yZWdpc3Rlcl9v ZmZzZXRzW1JFR19BRFJFTk9fUkVHSVNURVJfTUFYXSA9IHsKKwlSRUdfQURSRU5PX0RFRklORShS RUdfQURSRU5PX0NQX0RFQlVHLCBSRUdfQTRYWF9DUF9ERUJVRyksCisJUkVHX0FEUkVOT19ERUZJ TkUoUkVHX0FEUkVOT19DUF9NRV9SQU1fV0FERFIsIFJFR19BNFhYX0NQX01FX1JBTV9XQUREUiks CisJUkVHX0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19DUF9NRV9SQU1fREFUQSwgUkVHX0E0WFhf Q1BfTUVfUkFNX0RBVEEpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fQ1BfUEZQX1VD T0RFX0RBVEEsCisJCQlSRUdfQTRYWF9DUF9QRlBfVUNPREVfREFUQSksCisJUkVHX0FEUkVOT19E RUZJTkUoUkVHX0FEUkVOT19DUF9QRlBfVUNPREVfQUREUiwKKwkJCVJFR19BNFhYX0NQX1BGUF9V Q09ERV9BRERSKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX0NQX1dGSV9QRU5EX0NU UiwgUkVHX0E0WFhfQ1BfV0ZJX1BFTkRfQ1RSKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURS RU5PX0NQX1JCX0JBU0UsIFJFR19BNFhYX0NQX1JCX0JBU0UpLAorCVJFR19BRFJFTk9fREVGSU5F KFJFR19BRFJFTk9fQ1BfUkJfUlBUUl9BRERSLCBSRUdfQTRYWF9DUF9SQl9SUFRSX0FERFIpLAor CVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fQ1BfUkJfUlBUUiwgUkVHX0E0WFhfQ1BfUkJf UlBUUiksCisJUkVHX0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19DUF9SQl9XUFRSLCBSRUdfQTRY WF9DUF9SQl9XUFRSKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX0NQX1BST1RFQ1Rf Q1RSTCwgUkVHX0E0WFhfQ1BfUFJPVEVDVF9DVFJMKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdf QURSRU5PX0NQX01FX0NOVEwsIFJFR19BNFhYX0NQX01FX0NOVEwpLAorCVJFR19BRFJFTk9fREVG SU5FKFJFR19BRFJFTk9fQ1BfUkJfQ05UTCwgUkVHX0E0WFhfQ1BfUkJfQ05UTCksCisJUkVHX0FE UkVOT19ERUZJTkUoUkVHX0FEUkVOT19DUF9JQjFfQkFTRSwgUkVHX0E0WFhfQ1BfSUIxX0JBU0Up LAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fQ1BfSUIxX0JVRlNaLCBSRUdfQTRYWF9D UF9JQjFfQlVGU1opLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fQ1BfSUIyX0JBU0Us IFJFR19BNFhYX0NQX0lCMl9CQVNFKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX0NQ X0lCMl9CVUZTWiwgUkVHX0E0WFhfQ1BfSUIyX0JVRlNaKSwKKwlSRUdfQURSRU5PX0RFRklORShS RUdfQURSRU5PX0NQX1RJTUVTVEFNUCwgUkVHX0E0WFhfQ1BfU0NSQVRDSF8wKSwKKwlSRUdfQURS RU5PX0RFRklORShSRUdfQURSRU5PX0NQX01FX1JBTV9SQUREUiwgUkVHX0E0WFhfQ1BfTUVfUkFN X1JBRERSKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX0NQX1JPUV9BRERSLCBSRUdf QTRYWF9DUF9ST1FfQUREUiksCisJUkVHX0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19DUF9ST1Ff REFUQSwgUkVHX0E0WFhfQ1BfUk9RX0RBVEEpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJF Tk9fQ1BfTUVSQ0lVX0FERFIsIFJFR19BNFhYX0NQX01FUkNJVV9BRERSKSwKKwlSRUdfQURSRU5P X0RFRklORShSRUdfQURSRU5PX0NQX01FUkNJVV9EQVRBLCBSRUdfQTRYWF9DUF9NRVJDSVVfREFU QSksCisJUkVHX0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19DUF9NRVJDSVVfREFUQTIsIFJFR19B NFhYX0NQX01FUkNJVV9EQVRBMiksCisJUkVHX0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19DUF9N RVFfQUREUiwgUkVHX0E0WFhfQ1BfTUVRX0FERFIpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19B RFJFTk9fQ1BfTUVRX0RBVEEsIFJFR19BNFhYX0NQX01FUV9EQVRBKSwKKwlSRUdfQURSRU5PX0RF RklORShSRUdfQURSRU5PX0NQX0hXX0ZBVUxULCBSRUdfQTRYWF9DUF9IV19GQVVMVCksCisJUkVH X0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19DUF9QUk9URUNUX1NUQVRVUywKKwkJCVJFR19BNFhY X0NQX1BST1RFQ1RfU1RBVFVTKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX1NDUkFU Q0hfQUREUiwgUkVHX0E0WFhfQ1BfU0NSQVRDSF9BRERSKSwKKwlSRUdfQURSRU5PX0RFRklORShS RUdfQURSRU5PX1NDUkFUQ0hfVU1TSywgUkVHX0E0WFhfQ1BfU0NSQVRDSF9VTUFTSyksCisJUkVH X0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19SQkJNX1NUQVRVUywgUkVHX0E0WFhfUkJCTV9TVEFU VVMpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fUkJCTV9QRVJGQ1RSX0NUTCwKKwkJ CVJFR19BNFhYX1JCQk1fUEVSRkNUUl9DVEwpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJF Tk9fUkJCTV9QRVJGQ1RSX0xPQURfQ01EMCwKKwkJCVJFR19BNFhYX1JCQk1fUEVSRkNUUl9MT0FE X0NNRDApLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fUkJCTV9QRVJGQ1RSX0xPQURf Q01EMSwKKwkJCVJFR19BNFhYX1JCQk1fUEVSRkNUUl9MT0FEX0NNRDEpLAorCVJFR19BRFJFTk9f REVGSU5FKFJFR19BRFJFTk9fUkJCTV9QRVJGQ1RSX0xPQURfQ01EMiwKKwkJCVJFR19BNFhYX1JC Qk1fUEVSRkNUUl9MT0FEX0NNRDIpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fUkJC TV9QRVJGQ1RSX1BXUl8xX0xPLAorCQkJUkVHX0E0WFhfUkJCTV9QRVJGQ1RSX1BXUl8xX0xPKSwK KwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX1JCQk1fSU5UXzBfTUFTSywgUkVHX0E0WFhf UkJCTV9JTlRfMF9NQVNLKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX1JCQk1fSU5U XzBfU1RBVFVTLAorCQkJUkVHX0E0WFhfUkJCTV9JTlRfMF9TVEFUVVMpLAorCVJFR19BRFJFTk9f REVGSU5FKFJFR19BRFJFTk9fUkJCTV9BSEJfRVJST1JfU1RBVFVTLAorCQkJUkVHX0E0WFhfUkJC TV9BSEJfRVJST1JfU1RBVFVTKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX1JCQk1f QUhCX0NNRCwgUkVHX0E0WFhfUkJCTV9BSEJfQ01EKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdf QURSRU5PX1JCQk1fQ0xPQ0tfQ1RMLCBSRUdfQTRYWF9SQkJNX0NMT0NLX0NUTCksCisJUkVHX0FE UkVOT19ERUZJTkUoUkVHX0FEUkVOT19SQkJNX0FIQl9NRV9TUExJVF9TVEFUVVMsCisJCQlSRUdf QTRYWF9SQkJNX0FIQl9NRV9TUExJVF9TVEFUVVMpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19B RFJFTk9fUkJCTV9BSEJfUEZQX1NQTElUX1NUQVRVUywKKwkJCVJFR19BNFhYX1JCQk1fQUhCX1BG UF9TUExJVF9TVEFUVVMpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fVlBDX0RFQlVH X1JBTV9TRUwsCisJCQlSRUdfQTRYWF9WUENfREVCVUdfUkFNX1NFTCksCisJUkVHX0FEUkVOT19E RUZJTkUoUkVHX0FEUkVOT19WUENfREVCVUdfUkFNX1JFQUQsCisJCQlSRUdfQTRYWF9WUENfREVC VUdfUkFNX1JFQUQpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fUkJCTV9JTlRfQ0xF QVJfQ01ELAorCQkJUkVHX0E0WFhfUkJCTV9JTlRfQ0xFQVJfQ01EKSwKKwlSRUdfQURSRU5PX0RF RklORShSRUdfQURSRU5PX1ZTQ19QSVBFX0RBVEFfQUREUkVTU18wLAorCQkJUkVHX0E0WFhfVlND X1BJUEVfREFUQV9BRERSRVNTXzApLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fVlND X1BJUEVfREFUQV9MRU5HVEhfNywKKwkJCVJFR19BNFhYX1ZTQ19QSVBFX0RBVEFfTEVOR1RIXzAg KyA3KSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX1ZTQ19TSVpFX0FERFJFU1MsCisJ CQlSRUdfQTRYWF9WU0NfU0laRV9BRERSRVNTKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURS RU5PX1ZGRF9DT05UUk9MXzAsIFJFR19BNFhYX1ZGRF9DT05UUk9MXzApLAorCVJFR19BRFJFTk9f REVGSU5FKFJFR19BRFJFTk9fVkZEX0ZFVENIX0lOU1RSXzBfMCwKKwkJCVJFR19BNFhYX1ZGRF9G RVRDSF9JTlNUUl8wXzApLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fVkZEX0ZFVENI X0lOU1RSXzFfRiwKKwkJCVJFR19BNFhYX1ZGRF9GRVRDSF9JTlNUUl8xXzAgKyAweDQqMzEpLAor CVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fU1BfVlNfUFZUX01FTV9BRERSX1JFRywKKwkJ CVJFR19BNFhYX1NQX1ZTX1BWVF9NRU1fQUREUiksCisJUkVHX0FEUkVOT19ERUZJTkUoUkVHX0FE UkVOT19TUF9GU19QVlRfTUVNX0FERFJfUkVHLAorCQkJUkVHX0E0WFhfU1BfRlNfUFZUX01FTV9B RERSKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX1NQX1ZTX09CSl9TVEFSVF9SRUcs CisJCQlSRUdfQTRYWF9TUF9WU19PQkpfU1RBUlQpLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19B RFJFTk9fU1BfRlNfT0JKX1NUQVJUX1JFRywKKwkJCVJFR19BNFhYX1NQX0ZTX09CSl9TVEFSVCks CisJUkVHX0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19SQkJNX1JCQk1fQ1RMLCBSRUdfQTRYWF9S QkJNX1JCQk1fQ1RMKSwKKwlSRUdfQURSRU5PX0RFRklORShSRUdfQURSRU5PX1JCQk1fU1dfUkVT RVRfQ01ELAorCQkJUkVHX0E0WFhfUkJCTV9TV19SRVNFVF9DTUQpLAorCVJFR19BRFJFTk9fREVG SU5FKFJFR19BRFJFTk9fVUNIRV9JTlZBTElEQVRFMCwKKwkJCVJFR19BNFhYX1VDSEVfSU5WQUxJ REFURTApLAorCVJFR19BRFJFTk9fREVGSU5FKFJFR19BRFJFTk9fUkJCTV9QRVJGQ1RSX0xPQURf VkFMVUVfTE8sCisJCQlSRUdfQTRYWF9SQkJNX1BFUkZDVFJfTE9BRF9WQUxVRV9MTyksCisJUkVH X0FEUkVOT19ERUZJTkUoUkVHX0FEUkVOT19SQkJNX1BFUkZDVFJfTE9BRF9WQUxVRV9ISSwKKwkJ CVJFR19BNFhYX1JCQk1fUEVSRkNUUl9MT0FEX1ZBTFVFX0hJKSwKK307CisKK3N0YXRpYyB2b2lk IGE0eHhfZHVtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQoreworCWFkcmVub19kdW1wKGdwdSk7CisJ cHJpbnRrKCJzdGF0dXM6ICAgJTA4eFxuIiwKKwkJCWdwdV9yZWFkKGdwdSwgUkVHX0E0WFhfUkJC TV9TVEFUVVMpKTsKKwlhZHJlbm9fZHVtcChncHUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGFkcmVub19ncHVfZnVuY3MgZnVuY3MgPSB7CisJLmJhc2UgPSB7CisJCS5nZXRfcGFyYW0gPSBh ZHJlbm9fZ2V0X3BhcmFtLAorCQkuaHdfaW5pdCA9IGE0eHhfaHdfaW5pdCwKKwkJLnBtX3N1c3Bl bmQgPSBtc21fZ3B1X3BtX3N1c3BlbmQsCisJCS5wbV9yZXN1bWUgPSBtc21fZ3B1X3BtX3Jlc3Vt ZSwKKwkJLnJlY292ZXIgPSBhNHh4X3JlY292ZXIsCisJCS5sYXN0X2ZlbmNlID0gYWRyZW5vX2xh c3RfZmVuY2UsCisJCS5zdWJtaXQgPSBhZHJlbm9fc3VibWl0LAorCQkuZmx1c2ggPSBhZHJlbm9f Zmx1c2gsCisJCS5pZGxlID0gYTR4eF9pZGxlLAorCQkuaXJxID0gYTR4eF9pcnEsCisJCS5kZXN0 cm95ID0gYTR4eF9kZXN0cm95LAorI2lmZGVmIENPTkZJR19ERUJVR19GUworCQkuc2hvdyA9IGE0 eHhfc2hvdywKKyNlbmRpZgorCX0sCit9OworCitzdHJ1Y3QgbXNtX2dwdSAqYTR4eF9ncHVfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBhNHh4X2dwdSAqYTR4eF9ncHUg PSBOVUxMOworCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1OworCXN0cnVjdCBtc21fZ3B1 ICpncHU7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHByaXYtPmdwdV9wZGV2OworCWludCBy ZXQ7CisKKwlpZiAoIXBkZXYpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgIm5vIGE0eHggZGV2aWNl XG4iKTsKKwkJcmV0ID0gLUVOWElPOworCQlnb3RvIGZhaWw7CisJfQorCisJYTR4eF9ncHUgPSBr emFsbG9jKHNpemVvZigqYTR4eF9ncHUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWE0eHhfZ3B1KSB7 CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbDsKKwl9CisKKwlhZHJlbm9fZ3B1ID0gJmE0 eHhfZ3B1LT5iYXNlOworCWdwdSA9ICZhZHJlbm9fZ3B1LT5iYXNlOworCisJYTR4eF9ncHUtPnBk ZXYgPSBwZGV2OworCisJZ3B1LT5wZXJmY250cnMgPSBOVUxMOworCWdwdS0+bnVtX3BlcmZjbnRy cyA9IDA7CisKKwlhZHJlbm9fZ3B1LT5yZWdpc3RlcnMgPSBhNHh4X3JlZ2lzdGVyczsKKwlhZHJl bm9fZ3B1LT5yZWdfb2Zmc2V0cyA9IGE0eHhfcmVnaXN0ZXJfb2Zmc2V0czsKKworCXJldCA9IGFk cmVub19ncHVfaW5pdChkZXYsIHBkZXYsIGFkcmVub19ncHUsICZmdW5jcyk7CisJaWYgKHJldCkK KwkJZ290byBmYWlsOworCisJLyogaWYgbmVlZGVkLCBhbGxvY2F0ZSBnbWVtOiAqLworCWlmIChh ZHJlbm9faXNfYTR4eChhZHJlbm9fZ3B1KSkgeworI2lmZGVmIENPTkZJR19NU01fT0NNRU0KKwkJ LyogVE9ETyB0aGlzIGlzIGRpZmZlcmVudC9taXNzaW5nIHVwc3RyZWFtOiAqLworCQlzdHJ1Y3Qg b2NtZW1fYnVmICpvY21lbV9oZGwgPQorCQkJCW9jbWVtX2FsbG9jYXRlKE9DTUVNX0dSQVBISUNT LCBhZHJlbm9fZ3B1LT5nbWVtKTsKKworCQlhNHh4X2dwdS0+b2NtZW1faGRsID0gb2NtZW1faGRs OworCQlhNHh4X2dwdS0+b2NtZW1fYmFzZSA9IG9jbWVtX2hkbC0+YWRkcjsKKwkJYWRyZW5vX2dw dS0+Z21lbSA9IG9jbWVtX2hkbC0+bGVuOworCQlEQkcoInVzaW5nICVkSyBvZiBPQ01FTSBhdCAw eCUwOHgiLCBhZHJlbm9fZ3B1LT5nbWVtIC8gMTAyNCwKKwkJCQlhNHh4X2dwdS0+b2NtZW1fYmFz ZSk7CisjZW5kaWYKKwl9CisKKwlpZiAoIWdwdS0+bW11KSB7CisJCS8qIFRPRE8gd2UgdGhpbmsg aXQgaXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBHUFUgdG8KKwkJICogcmVzdHJpY3QgYWNj ZXNzIHRvIFZSQU0gY2FydmVvdXQuICBCdXQgdGhlIHJlcXVpcmVkCisJCSAqIHJlZ2lzdGVycyBh cmUgdW5rbm93bi4gIEZvciBub3cganVzdCBiYWlsIG91dCBhbmQKKwkJICogbGltcCBhbG9uZyB3 aXRoIGp1c3QgbW9kZXNldHRpbmcuICBJZiBpdCB0dXJucyBvdXQKKwkJICogdG8gbm90IGJlIHBv c3NpYmxlIHRvIHJlc3RyaWN0IGFjY2VzcywgdGhlbiB3ZSBtdXN0CisJCSAqIGltcGxlbWVudCBh IGNtZHN0cmVhbSB2YWxpZGF0b3IuCisJCSAqLworCQlkZXZfZXJyKGRldi0+ZGV2LCAiTm8gbWVt b3J5IHByb3RlY3Rpb24gd2l0aG91dCBJT01NVVxuIik7CisJCXJldCA9IC1FTlhJTzsKKwkJZ290 byBmYWlsOworCX0KKworCXJldHVybiBncHU7CisKK2ZhaWw6CisJaWYgKGE0eHhfZ3B1KQorCQlh NHh4X2Rlc3Ryb3koJmE0eHhfZ3B1LT5iYXNlLmJhc2UpOworCisJcmV0dXJuIEVSUl9QVFIocmV0 KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1LmgK Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjAxMjQ3MjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qIENvcHlyaWdo dCAoYykgMjAxNCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCisgKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqLworI2lmbmRlZiBfX0E0WFhfR1BVX0hfXworI2RlZmluZSBfX0E0WFhf R1BVX0hfXworCisjaW5jbHVkZSAiYWRyZW5vX2dwdS5oIgorCisvKiBhcnJnLCBzb21laG93IGZi LmggaXMgZ2V0dGluZyBwdWxsZWQgaW46ICovCisjdW5kZWYgUk9QX0NPUFkKKyN1bmRlZiBST1Bf WE9SCisKKyNpbmNsdWRlICJhNHh4LnhtbC5oIgorCitzdHJ1Y3QgYTR4eF9ncHUgeworCXN0cnVj dCBhZHJlbm9fZ3B1IGJhc2U7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKKworCS8q IGlmIE9DTUVNIGlzIHVzZWQgZm9yIEdNRU06ICovCisJdWludDMyX3Qgb2NtZW1fYmFzZTsKKwl2 b2lkICpvY21lbV9oZGw7Cit9OworI2RlZmluZSB0b19hNHh4X2dwdSh4KSBjb250YWluZXJfb2Yo eCwgc3RydWN0IGE0eHhfZ3B1LCBiYXNlKQorCisjZW5kaWYgLyogX19BNFhYX0dQVV9IX18gKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19kZXZpY2UuYwpi L2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19kZXZpY2UuYwppbmRleCA3YWI4NWFm Li5iZTgzZGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9f ZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2RldmljZS5j CkBAIC0yLDYgKzIsOCBAQAogICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgUmVkIEhhdAogICog QXV0aG9yOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CiAgKgorICogQ29weXJpZ2h0 IChjKSAyMDE0IFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK ICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0CiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCkBAIC0yOCw2ICszMCw3IEBAIE1PRFVMRV9QQVJNX0RFU0MoaGFu Z19kZWJ1ZywgIkR1bXAgcmVnaXN0ZXJzIHdoZW4gaGFuZwppcyBkZXRlY3RlZCAoY2FuIGJlIHNs b3chCiBtb2R1bGVfcGFyYW1fbmFtZWQoaGFuZ19kZWJ1ZywgaGFuZ19kZWJ1ZywgYm9vbCwgMDYw MCk7Cgogc3RydWN0IG1zbV9ncHUgKmEzeHhfZ3B1X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7CitzdHJ1Y3QgbXNtX2dwdSAqYTR4eF9ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKCiBzdGF0aWMgY29uc3Qgc3RydWN0IGFkcmVub19pbmZvIGdwdWxpc3RbXSA9IHsKIAl7CkBA IC01NCw2ICs1NywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFkcmVub19pbmZvIGdwdWxpc3Rb XSA9IHsKIAkJLnBmcGZ3ID0gImEzMzBfcGZwLmZ3IiwKIAkJLmdtZW0gID0gU1pfMU0sCiAJCS5p bml0ICA9IGEzeHhfZ3B1X2luaXQsCisJfSwgeworCQkucmV2ICAgPSBBRFJFTk9fUkVWKDQsIDIs IDAsIEFOWV9JRCksCisJCS5yZXZuICA9IDQyMCwKKwkJLm5hbWUgID0gIkE0MjAiLAorCQkucG00 ZncgPSAiYTQyMF9wbTQuZnciLAorCQkucGZwZncgPSAiYTQyMF9wZnAuZnciLAorCQkuZ21lbSAg PSAoU1pfMU0gKyBTWl81MTJLKSwKKwkJLmluaXQgID0gYTR4eF9ncHVfaW5pdCwKIAl9LAogfTsK CkBAIC02MSw2ICs3Miw4IEBAIE1PRFVMRV9GSVJNV0FSRSgiYTMwMF9wbTQuZnciKTsKIE1PRFVM RV9GSVJNV0FSRSgiYTMwMF9wZnAuZnciKTsKIE1PRFVMRV9GSVJNV0FSRSgiYTMzMF9wbTQuZnci KTsKIE1PRFVMRV9GSVJNV0FSRSgiYTMzMF9wZnAuZnciKTsKK01PRFVMRV9GSVJNV0FSRSgiYTQy MF9wbTQuZnciKTsKK01PRFVMRV9GSVJNV0FSRSgiYTQyMF9wZnAuZnciKTsKCiBzdGF0aWMgaW5s aW5lIGJvb2wgX3Jldl9tYXRjaCh1aW50OF90IGVudHJ5LCB1aW50OF90IGlkKQogewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCmIvZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCmluZGV4IDgyNjE5YjEuLjFmZTdjOGQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKQEAgLTE0Nyw3ICsxNDcsNyBA QCBpbnQgYWRyZW5vX3N1Ym1pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QKbXNtX2dlbV9z dWJtaXQgKnN1Ym1pdCwKIAlPVVRfUEtUMChyaW5nLCBSRUdfQVhYWF9DUF9TQ1JBVENIX1JFRzIs IDEpOwogCU9VVF9SSU5HKHJpbmcsIHN1Ym1pdC0+ZmVuY2UpOwoKLQlpZiAoYWRyZW5vX2lzX2Ez eHgoYWRyZW5vX2dwdSkpIHsKKwlpZiAoYWRyZW5vX2lzX2EzeHgoYWRyZW5vX2dwdSkgfHwgYWRy ZW5vX2lzX2E0eHgoYWRyZW5vX2dwdSkpIHsKIAkJLyogRmx1c2ggSExTUSBsYXp5IHVwZGF0ZXMg dG8gbWFrZSBzdXJlIHRoZXJlIGlzIG5vdGhpbmcKIAkJICogcGVuZGluZyBmb3IgaW5kaXJlY3Qg bG9hZHMgYWZ0ZXIgdGhlIHRpbWVzdGFtcCBoYXMKIAkJICogcGFzc2VkOgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCmIvZHJpdmVycy9ncHUvZHJt L21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCmluZGV4IGUzZTc4ZGFjLi43NTc2ZDg0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCkBAIC0yMTcsNiArMjE3LDE2IEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCBhZHJlbm9faXNfYTMzMHYyKHN0cnVjdAphZHJlbm9fZ3B1ICpncHUp CiAJcmV0dXJuIGFkcmVub19pc19hMzMwKGdwdSkgJiYgKGdwdS0+cmV2LnBhdGNoaWQgPiAwKTsK IH0KCitzdGF0aWMgaW5saW5lIGJvb2wgYWRyZW5vX2lzX2E0eHgoc3RydWN0IGFkcmVub19ncHUg KmdwdSkKK3sKKwlyZXR1cm4gKGdwdS0+cmV2biA+PSA0MDApICYmIChncHUtPnJldm4gPCA1MDAp OworfQorCitzdGF0aWMgaW5saW5lIGludCBhZHJlbm9faXNfYTQyMChzdHJ1Y3QgYWRyZW5vX2dw dSAqZ3B1KQoreworCXJldHVybiBncHUtPnJldm4gPT0gNDIwOworfQorCiBpbnQgYWRyZW5vX2dl dF9wYXJhbShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1aW50MzJfdCBwYXJhbSwgdWludDY0X3QgKnZh bHVlKTsKIGludCBhZHJlbm9faHdfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKIHVpbnQzMl90 IGFkcmVub19sYXN0X2ZlbmNlKHN0cnVjdCBtc21fZ3B1ICpncHUpOwotLSAKMS44LjUuMgoKLS0g ClF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuClRoZSBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGlu dXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK