From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jitao Shi Subject: [v4 2/3] drm/mediatek: separate mipi_tx to different file Date: Sat, 1 Jun 2019 17:52:34 +0800 Message-ID: <20190601095235.9194-3-jitao.shi@mediatek.com> References: <20190601095235.9194-1-jitao.shi@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190601095235.9194-1-jitao.shi@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , linux-pwm@vger.kernel.org, David Airlie , Matthias Brugger Cc: stonea168@163.com, dri-devel@lists.freedesktop.org, Andy Yan , Ajay Kumar , Vincent Palatin , cawa.cheng@mediatek.com, Russell King , Thierry Reding , devicetree@vger.kernel.org, Jitao Shi , linux-mediatek@lists.infradead.org, yingjoe.chen@mediatek.com, eddie.huang@mediatek.com, linux-arm-kernel@lists.infradead.org, Rahul Sharma , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Sascha Hauer , Sean Paul List-Id: linux-mediatek@lists.infradead.org RGlmZmVyZW50IElDIGhhcyBkaWZmZXJlbnQgbWlwaV90eCBzZXR0aW5nIG9mIGRzaS4KVGhpcyBw YXRjaCBzZXBhcmF0ZXMgdGhlIG1pcGlfdHggaGFyZHdhcmUgcmVsYXRlIHBhcnQgZm9yIG10ODE3 My4KClNpZ25lZC1vZmYtYnk6IEppdGFvIFNoaSA8aml0YW8uc2hpQG1lZGlhdGVrLmNvbT4KUmV2 aWV3ZWQtYnk6IENLIEh1IDxjay5odUBtZWRpYXRlay5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfbWlwaV90eC5jICAgICAgICB8IDM0MyArKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBpX3R4LmggICAgICAgIHwgIDQ5 ICsrKysKIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX21pcGlfdHguYyB8IDI4 OSArKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDM2MyBpbnNlcnRpb25z KCspLCAzMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19taXBpX3R4LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX210ODE3M19taXBpX3R4LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZp bGUKaW5kZXggODJhZTQ5YzY0MjIxLi4yYzhkZTFmNWE1ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv TWFrZWZpbGUKQEAgLTEyLDYgKzEyLDcgQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3BfY29s b3IubyBcCiAJCSAgbXRrX2RybV9wbGFuZS5vIFwKIAkJICBtdGtfZHNpLm8gXAogCQkgIG10a19t aXBpX3R4Lm8gXAorCQkgIG10a19tdDgxNzNfbWlwaV90eC5vIFwKIAkJICBtdGtfZHBpLm8KIAog b2JqLSQoQ09ORklHX0RSTV9NRURJQVRFSykgKz0gbWVkaWF0ZWstZHJtLm8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19taXBpX3R4LmMKaW5kZXggOTBlOTEzMTA4OTUwLi5jZGM2OGI4OGNlZmQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jCkBAIC0xMSwyOTIgKzExLDM5 IEBACiAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICov CiAKLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KLSNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIu aD4KLSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotI2luY2x1ZGUgPGxpbnV4L2lvLmg+Ci0jaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Ci0jaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvcGh5L3BoeS5o PgotCi0jZGVmaW5lIE1JUElUWF9EU0lfQ09OCQkweDAwCi0jZGVmaW5lIFJHX0RTSV9MRE9DT1JF X0VOCQlCSVQoMCkKLSNkZWZpbmUgUkdfRFNJX0NLR19MRE9PVVRfRU4JCUJJVCgxKQotI2RlZmlu ZSBSR19EU0lfQkNMS19TRUwJCQkoMyA8PCAyKQotI2RlZmluZSBSR19EU0lfTERfSURYX1NFTAkJ KDcgPDwgNCkKLSNkZWZpbmUgUkdfRFNJX1BIWUNMS19TRUwJCSgyIDw8IDgpCi0jZGVmaW5lIFJH X0RTSV9EU0lDTEtfRlJFUV9TRUwJCUJJVCgxMCkKLSNkZWZpbmUgUkdfRFNJX0xQVFhfQ0xNUF9F TgkJQklUKDExKQotCi0jZGVmaW5lIE1JUElUWF9EU0lfQ0xPQ0tfTEFORQkweDA0Ci0jZGVmaW5l IE1JUElUWF9EU0lfREFUQV9MQU5FMAkweDA4Ci0jZGVmaW5lIE1JUElUWF9EU0lfREFUQV9MQU5F MQkweDBjCi0jZGVmaW5lIE1JUElUWF9EU0lfREFUQV9MQU5FMgkweDEwCi0jZGVmaW5lIE1JUElU WF9EU0lfREFUQV9MQU5FMwkweDE0Ci0jZGVmaW5lIFJHX0RTSV9MTlR4X0xET09VVF9FTgkJQklU KDApCi0jZGVmaW5lIFJHX0RTSV9MTlR4X0NLTEFORV9FTgkJQklUKDEpCi0jZGVmaW5lIFJHX0RT SV9MTlR4X0xQVFhfSVBMVVMxCQlCSVQoMikKLSNkZWZpbmUgUkdfRFNJX0xOVHhfTFBUWF9JUExV UzIJCUJJVCgzKQotI2RlZmluZSBSR19EU0lfTE5UeF9MUFRYX0lNSU5VUwkJQklUKDQpCi0jZGVm aW5lIFJHX0RTSV9MTlR4X0xQQ0RfSVBMVVMJCUJJVCg1KQotI2RlZmluZSBSR19EU0lfTE5UeF9M UENEX0lNSU5VUwkJQklUKDYpCi0jZGVmaW5lIFJHX0RTSV9MTlR4X1JUX0NPREUJCSgweGYgPDwg OCkKLQotI2RlZmluZSBNSVBJVFhfRFNJX1RPUF9DT04JMHg0MAotI2RlZmluZSBSR19EU0lfTE5U X0lOVFJfRU4JCUJJVCgwKQotI2RlZmluZSBSR19EU0lfTE5UX0hTX0JJQVNfRU4JCUJJVCgxKQot I2RlZmluZSBSR19EU0lfTE5UX0lNUF9DQUxfRU4JCUJJVCgyKQotI2RlZmluZSBSR19EU0lfTE5U X1RFU1RNT0RFX0VOCQlCSVQoMykKLSNkZWZpbmUgUkdfRFNJX0xOVF9JTVBfQ0FMX0NPREUJCSgw eGYgPDwgNCkKLSNkZWZpbmUgUkdfRFNJX0xOVF9BSU9fU0VMCQkoNyA8PCA4KQotI2RlZmluZSBS R19EU0lfUEFEX1RJRV9MT1dfRU4JCUJJVCgxMSkKLSNkZWZpbmUgUkdfRFNJX0RFQlVHX0lOUFVU X0VOCQlCSVQoMTIpCi0jZGVmaW5lIFJHX0RTSV9QUkVTRVJWRQkJCSg3IDw8IDEzKQotCi0jZGVm aW5lIE1JUElUWF9EU0lfQkdfQ09OCTB4NDQKLSNkZWZpbmUgUkdfRFNJX0JHX0NPUkVfRU4JCUJJ VCgwKQotI2RlZmluZSBSR19EU0lfQkdfQ0tFTgkJCUJJVCgxKQotI2RlZmluZSBSR19EU0lfQkdf RElWCQkJKDB4MyA8PCAyKQotI2RlZmluZSBSR19EU0lfQkdfRkFTVF9DSEFSR0UJCUJJVCg0KQot I2RlZmluZSBSR19EU0lfVk9VVF9NU0sJCQkoMHgzZmZmZiA8PCA1KQotI2RlZmluZSBSR19EU0lf VjEyX1NFTAkJCSg3IDw8IDUpCi0jZGVmaW5lIFJHX0RTSV9WMTBfU0VMCQkJKDcgPDwgOCkKLSNk ZWZpbmUgUkdfRFNJX1YwNzJfU0VMCQkJKDcgPDwgMTEpCi0jZGVmaW5lIFJHX0RTSV9WMDRfU0VM CQkJKDcgPDwgMTQpCi0jZGVmaW5lIFJHX0RTSV9WMDMyX1NFTAkJCSg3IDw8IDE3KQotI2RlZmlu ZSBSR19EU0lfVjAyX1NFTAkJCSg3IDw8IDIwKQotI2RlZmluZSBSR19EU0lfQkdfUjFfVFJJTQkJ KDB4ZiA8PCAyNCkKLSNkZWZpbmUgUkdfRFNJX0JHX1IyX1RSSU0JCSgweGYgPDwgMjgpCi0KLSNk ZWZpbmUgTUlQSVRYX0RTSV9QTExfQ09OMAkweDUwCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9QTExf RU4JCUJJVCgwKQotI2RlZmluZSBSR19EU0lfTVBQTExfRElWX01TSwkJKDB4MWZmIDw8IDEpCi0j ZGVmaW5lIFJHX0RTSV9NUFBMTF9QUkVESVYJCSgzIDw8IDEpCi0jZGVmaW5lIFJHX0RTSV9NUFBM TF9UWERJVjAJCSgzIDw8IDMpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9UWERJVjEJCSgzIDw8IDUp Ci0jZGVmaW5lIFJHX0RTSV9NUFBMTF9QT1NESVYJCSg3IDw8IDcpCi0jZGVmaW5lIFJHX0RTSV9N UFBMTF9NT05WQ19FTgkJQklUKDEwKQotI2RlZmluZSBSR19EU0lfTVBQTExfTU9OUkVGX0VOCQlC SVQoMTEpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9WT0RfRU4JCUJJVCgxMikKLQotI2RlZmluZSBN SVBJVFhfRFNJX1BMTF9DT04xCTB4NTQKLSNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9GUkFfRU4J CUJJVCgwKQotI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1NTQ19QSF9JTklUCUJJVCgxKQotI2Rl ZmluZSBSR19EU0lfTVBQTExfU0RNX1NTQ19FTgkJQklUKDIpCi0jZGVmaW5lIFJHX0RTSV9NUFBM TF9TRE1fU1NDX1BSRAkoMHhmZmZmIDw8IDE2KQotCi0jZGVmaW5lIE1JUElUWF9EU0lfUExMX0NP TjIJMHg1OAotCi0jZGVmaW5lIE1JUElUWF9EU0lfUExMX1RPUAkweDY0Ci0jZGVmaW5lIFJHX0RT SV9NUFBMTF9QUkVTRVJWRQkJKDB4ZmYgPDwgOCkKLQotI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9Q V1IJMHg2OAotI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1BXUl9PTgkJQklUKDApCi0jZGVmaW5l IFJHX0RTSV9NUFBMTF9TRE1fSVNPX0VOCQlCSVQoMSkKLSNkZWZpbmUgUkdfRFNJX01QUExMX1NE TV9QV1JfQUNLCUJJVCg4KQotCi0jZGVmaW5lIE1JUElUWF9EU0lfU1dfQ1RSTAkweDgwCi0jZGVm aW5lIFNXX0NUUkxfRU4JCQlCSVQoMCkKLQotI2RlZmluZSBNSVBJVFhfRFNJX1NXX0NUUkxfQ09O MAkweDg0Ci0jZGVmaW5lIFNXX0xOVENfTFBUWF9QUkVfT0UJCUJJVCgwKQotI2RlZmluZSBTV19M TlRDX0xQVFhfT0UJCQlCSVQoMSkKLSNkZWZpbmUgU1dfTE5UQ19MUFRYX1AJCQlCSVQoMikKLSNk ZWZpbmUgU1dfTE5UQ19MUFRYX04JCQlCSVQoMykKLSNkZWZpbmUgU1dfTE5UQ19IU1RYX1BSRV9P RQkJQklUKDQpCi0jZGVmaW5lIFNXX0xOVENfSFNUWF9PRQkJCUJJVCg1KQotI2RlZmluZSBTV19M TlRDX0hTVFhfWkVST0NMSwkJQklUKDYpCi0jZGVmaW5lIFNXX0xOVDBfTFBUWF9QUkVfT0UJCUJJ VCg3KQotI2RlZmluZSBTV19MTlQwX0xQVFhfT0UJCQlCSVQoOCkKLSNkZWZpbmUgU1dfTE5UMF9M UFRYX1AJCQlCSVQoOSkKLSNkZWZpbmUgU1dfTE5UMF9MUFRYX04JCQlCSVQoMTApCi0jZGVmaW5l IFNXX0xOVDBfSFNUWF9QUkVfT0UJCUJJVCgxMSkKLSNkZWZpbmUgU1dfTE5UMF9IU1RYX09FCQkJ QklUKDEyKQotI2RlZmluZSBTV19MTlQwX0xQUlhfRU4JCQlCSVQoMTMpCi0jZGVmaW5lIFNXX0xO VDFfTFBUWF9QUkVfT0UJCUJJVCgxNCkKLSNkZWZpbmUgU1dfTE5UMV9MUFRYX09FCQkJQklUKDE1 KQotI2RlZmluZSBTV19MTlQxX0xQVFhfUAkJCUJJVCgxNikKLSNkZWZpbmUgU1dfTE5UMV9MUFRY X04JCQlCSVQoMTcpCi0jZGVmaW5lIFNXX0xOVDFfSFNUWF9QUkVfT0UJCUJJVCgxOCkKLSNkZWZp bmUgU1dfTE5UMV9IU1RYX09FCQkJQklUKDE5KQotI2RlZmluZSBTV19MTlQyX0xQVFhfUFJFX09F CQlCSVQoMjApCi0jZGVmaW5lIFNXX0xOVDJfTFBUWF9PRQkJCUJJVCgyMSkKLSNkZWZpbmUgU1df TE5UMl9MUFRYX1AJCQlCSVQoMjIpCi0jZGVmaW5lIFNXX0xOVDJfTFBUWF9OCQkJQklUKDIzKQot I2RlZmluZSBTV19MTlQyX0hTVFhfUFJFX09FCQlCSVQoMjQpCi0jZGVmaW5lIFNXX0xOVDJfSFNU WF9PRQkJCUJJVCgyNSkKLQotc3RydWN0IG10a19taXBpdHhfZGF0YSB7Ci0JY29uc3QgdTMyIG1w cGxsX3ByZXNlcnZlOwotfTsKLQotc3RydWN0IG10a19taXBpX3R4IHsKLQlzdHJ1Y3QgZGV2aWNl ICpkZXY7Ci0Jdm9pZCBfX2lvbWVtICpyZWdzOwotCXUzMiBkYXRhX3JhdGU7Ci0JY29uc3Qgc3Ry dWN0IG10a19taXBpdHhfZGF0YSAqZHJpdmVyX2RhdGE7Ci0Jc3RydWN0IGNsa19odyBwbGxfaHc7 Ci0Jc3RydWN0IGNsayAqcGxsOwotfTsKKyNpbmNsdWRlICJtdGtfbWlwaV90eC5oIgogCi1zdGF0 aWMgaW5saW5lIHN0cnVjdCBtdGtfbWlwaV90eCAqbXRrX21pcGlfdHhfZnJvbV9jbGtfaHcoc3Ry dWN0IGNsa19odyAqaHcpCitpbmxpbmUgc3RydWN0IG10a19taXBpX3R4ICptdGtfbWlwaV90eF9m cm9tX2Nsa19odyhzdHJ1Y3QgY2xrX2h3ICpodykKIHsKIAlyZXR1cm4gY29udGFpbmVyX29mKGh3 LCBzdHJ1Y3QgbXRrX21pcGlfdHgsIHBsbF9odyk7CiB9CiAKLXN0YXRpYyB2b2lkIG10a19taXBp X3R4X2NsZWFyX2JpdHMoc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LAot CQkJCSAgIHUzMiBiaXRzKQordm9pZCBtdGtfbWlwaV90eF9jbGVhcl9iaXRzKHN0cnVjdCBtdGtf bWlwaV90eCAqbWlwaV90eCwgdTMyIG9mZnNldCwKKwkJCSAgICB1MzIgYml0cykKIHsKIAl1MzIg dGVtcCA9IHJlYWRsKG1pcGlfdHgtPnJlZ3MgKyBvZmZzZXQpOwogCiAJd3JpdGVsKHRlbXAgJiB+ Yml0cywgbWlwaV90eC0+cmVncyArIG9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIG10a19taXBp X3R4X3NldF9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCwgdTMyIG9mZnNldCwKLQkJ CQkgdTMyIGJpdHMpCit2b2lkIG10a19taXBpX3R4X3NldF9iaXRzKHN0cnVjdCBtdGtfbWlwaV90 eCAqbWlwaV90eCwgdTMyIG9mZnNldCwKKwkJCSAgdTMyIGJpdHMpCiB7CiAJdTMyIHRlbXAgPSBy ZWFkbChtaXBpX3R4LT5yZWdzICsgb2Zmc2V0KTsKIAogCXdyaXRlbCh0ZW1wIHwgYml0cywgbWlw aV90eC0+cmVncyArIG9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIG10a19taXBpX3R4X3VwZGF0 ZV9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCwgdTMyIG9mZnNldCwKLQkJCQkgICAg dTMyIG1hc2ssIHUzMiBkYXRhKQordm9pZCBtdGtfbWlwaV90eF91cGRhdGVfYml0cyhzdHJ1Y3Qg bXRrX21pcGlfdHggKm1pcGlfdHgsIHUzMiBvZmZzZXQsCisJCQkgICAgIHUzMiBtYXNrLCB1MzIg ZGF0YSkKIHsKIAl1MzIgdGVtcCA9IHJlYWRsKG1pcGlfdHgtPnJlZ3MgKyBvZmZzZXQpOwogCiAJ d3JpdGVsKCh0ZW1wICYgfm1hc2spIHwgKGRhdGEgJiBtYXNrKSwgbWlwaV90eC0+cmVncyArIG9m ZnNldCk7CiB9CiAKLXN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcGxsX3ByZXBhcmUoc3RydWN0IGNs a19odyAqaHcpCi17Ci0Jc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gbXRrX21pcGlfdHhf ZnJvbV9jbGtfaHcoaHcpOwotCXU4IHR4ZGl2LCB0eGRpdjAsIHR4ZGl2MTsKLQl1NjQgcGN3Owot Ci0JZGV2X2RiZyhtaXBpX3R4LT5kZXYsICJwcmVwYXJlOiAldSBIelxuIiwgbWlwaV90eC0+ZGF0 YV9yYXRlKTsKLQotCWlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gNTAwMDAwMDAwKSB7Ci0JCXR4 ZGl2ID0gMTsKLQkJdHhkaXYwID0gMDsKLQkJdHhkaXYxID0gMDsKLQl9IGVsc2UgaWYgKG1pcGlf dHgtPmRhdGFfcmF0ZSA+PSAyNTAwMDAwMDApIHsKLQkJdHhkaXYgPSAyOwotCQl0eGRpdjAgPSAx OwotCQl0eGRpdjEgPSAwOwotCX0gZWxzZSBpZiAobWlwaV90eC0+ZGF0YV9yYXRlID49IDEyNTAw MDAwMCkgewotCQl0eGRpdiA9IDQ7Ci0JCXR4ZGl2MCA9IDI7Ci0JCXR4ZGl2MSA9IDA7Ci0JfSBl bHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPiA2MjAwMDAwMCkgewotCQl0eGRpdiA9IDg7Ci0J CXR4ZGl2MCA9IDI7Ci0JCXR4ZGl2MSA9IDE7Ci0JfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3Jh dGUgPj0gNTAwMDAwMDApIHsKLQkJdHhkaXYgPSAxNjsKLQkJdHhkaXYwID0gMjsKLQkJdHhkaXYx ID0gMjsKLQl9IGVsc2UgewotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQltdGtfbWlwaV90eF91 cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0JHX0NPTiwKLQkJCQlSR19EU0lfVk9VVF9N U0sgfAotCQkJCVJHX0RTSV9CR19DS0VOIHwgUkdfRFNJX0JHX0NPUkVfRU4sCi0JCQkJKDQgPDwg MjApIHwgKDQgPDwgMTcpIHwgKDQgPDwgMTQpIHwKLQkJCQkoNCA8PCAxMSkgfCAoNCA8PCA4KSB8 ICg0IDw8IDUpIHwKLQkJCQlSR19EU0lfQkdfQ0tFTiB8IFJHX0RTSV9CR19DT1JFX0VOKTsKLQot CXVzbGVlcF9yYW5nZSgzMCwgMTAwKTsKLQotCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlf dHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKLQkJCQlSR19EU0lfTE5UX0lNUF9DQUxfQ09ERSB8IFJH X0RTSV9MTlRfSFNfQklBU19FTiwKLQkJCQkoOCA8PCA0KSB8IFJHX0RTSV9MTlRfSFNfQklBU19F Tik7Ci0KLQltdGtfbWlwaV90eF9zZXRfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0NPTiwKLQkJ CSAgICAgUkdfRFNJX0NLR19MRE9PVVRfRU4gfCBSR19EU0lfTERPQ09SRV9FTik7Ci0KLQltdGtf bWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9QV1IsCi0JCQkJUkdf RFNJX01QUExMX1NETV9QV1JfT04gfAotCQkJCVJHX0RTSV9NUFBMTF9TRE1fSVNPX0VOLAotCQkJ CVJHX0RTSV9NUFBMTF9TRE1fUFdSX09OKTsKLQotCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlw aV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKLQkJCSAgICAgICBSR19EU0lfTVBQTExfUExMX0VO KTsKLQotCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NP TjAsCi0JCQkJUkdfRFNJX01QUExMX1RYRElWMCB8IFJHX0RTSV9NUFBMTF9UWERJVjEgfAotCQkJ CVJHX0RTSV9NUFBMTF9QUkVESVYsCi0JCQkJKHR4ZGl2MCA8PCAzKSB8ICh0eGRpdjEgPDwgNSkp OwotCi0JLyoKLQkgKiBQTEwgUENXIGNvbmZpZwotCSAqIFBDVyBiaXQgMjR+MzAgPSBpbnRlZ2Vy IHBhcnQgb2YgcGN3Ci0JICogUENXIGJpdCAwfjIzID0gZnJhY3Rpb25hbCBwYXJ0IG9mIHBjdwot CSAqIHBjdyA9IGRhdGFfUmF0ZSo0KnR4ZGl2LyhSZWZfY2xrKjIpOwotCSAqIFBvc3QgRElWID00 LCBzbyBuZWVkIGRhdGFfUmF0ZSo0Ci0JICogUmVmX2NsayBpcyAyNk1IegotCSAqLwotCXBjdyA9 IGRpdl91NjQoKCh1NjQpbWlwaV90eC0+ZGF0YV9yYXRlICogMiAqIHR4ZGl2KSA8PCAyNCwKLQkJ ICAgICAgMjYwMDAwMDApOwotCXdyaXRlbChwY3csIG1pcGlfdHgtPnJlZ3MgKyBNSVBJVFhfRFNJ X1BMTF9DT04yKTsKLQotCW10a19taXBpX3R4X3NldF9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lf UExMX0NPTjEsCi0JCQkgICAgIFJHX0RTSV9NUFBMTF9TRE1fRlJBX0VOKTsKLQotCW10a19taXBp X3R4X3NldF9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NPTjAsIFJHX0RTSV9NUFBMTF9Q TExfRU4pOwotCi0JdXNsZWVwX3JhbmdlKDIwLCAxMDApOwotCi0JbXRrX21pcGlfdHhfY2xlYXJf Yml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9DT04xLAotCQkJICAgICAgIFJHX0RTSV9NUFBM TF9TRE1fU1NDX0VOKTsKLQotCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElU WF9EU0lfUExMX1RPUCwKLQkJCQlSR19EU0lfTVBQTExfUFJFU0VSVkUsCi0JCQkJbWlwaV90eC0+ ZHJpdmVyX2RhdGEtPm1wcGxsX3ByZXNlcnZlKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMg dm9pZCBtdGtfbWlwaV90eF9wbGxfdW5wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQotewotCXN0 cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IG10a19taXBpX3R4X2Zyb21fY2xrX2h3KGh3KTsK LQotCWRldl9kYmcobWlwaV90eC0+ZGV2LCAidW5wcmVwYXJlXG4iKTsKLQotCW10a19taXBpX3R4 X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKLQkJCSAgICAgICBSR19E U0lfTVBQTExfUExMX0VOKTsKLQotCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1J UElUWF9EU0lfUExMX1RPUCwKLQkJCQlSR19EU0lfTVBQTExfUFJFU0VSVkUsIDApOwotCi0JbXRr X21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfUFdSLAotCQkJCVJH X0RTSV9NUFBMTF9TRE1fSVNPX0VOIHwKLQkJCQlSR19EU0lfTVBQTExfU0RNX1BXUl9PTiwKLQkJ CQlSR19EU0lfTVBQTExfU0RNX0lTT19FTik7Ci0KLQltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1p cGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKLQkJCSAgICAgICBSR19EU0lfTE5UX0hTX0JJQVNf RU4pOwotCi0JbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0NPTiwK LQkJCSAgICAgICBSR19EU0lfQ0tHX0xET09VVF9FTiB8IFJHX0RTSV9MRE9DT1JFX0VOKTsKLQot CW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9CR19DT04sCi0JCQkg ICAgICAgUkdfRFNJX0JHX0NLRU4gfCBSR19EU0lfQkdfQ09SRV9FTik7Ci0KLQltdGtfbWlwaV90 eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NPTjAsCi0JCQkgICAgICAgUkdf RFNJX01QUExMX0RJVl9NU0spOwotfQotCi1zdGF0aWMgbG9uZyBtdGtfbWlwaV90eF9wbGxfcm91 bmRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAotCQkJCSAgICAg ICB1bnNpZ25lZCBsb25nICpwcmF0ZSkKLXsKLQlyZXR1cm4gY2xhbXBfdmFsKHJhdGUsIDUwMDAw MDAwLCAxMjUwMDAwMDAwKTsKLX0KLQotc3RhdGljIGludCBtdGtfbWlwaV90eF9wbGxfc2V0X3Jh dGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKLQkJCQkgICAgdW5zaWdu ZWQgbG9uZyBwYXJlbnRfcmF0ZSkKK2ludCBtdGtfbWlwaV90eF9wbGxfc2V0X3JhdGUoc3RydWN0 IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBw YXJlbnRfcmF0ZSkKIHsKIAlzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBtdGtfbWlwaV90 eF9mcm9tX2Nsa19odyhodyk7CiAKQEAgLTMwNywzNyArNTQsMTQgQEAgc3RhdGljIGludCBtdGtf bWlwaV90eF9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0 ZSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgbXRrX21pcGlfdHhfcGxs X3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAotCQkJCQkJIHVuc2lnbmVkIGxvbmcgcGFy ZW50X3JhdGUpCit1bnNpZ25lZCBsb25nIG10a19taXBpX3R4X3BsbF9yZWNhbGNfcmF0ZShzdHJ1 Y3QgY2xrX2h3ICpodywKKwkJCQkJICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQogewogCXN0 cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IG10a19taXBpX3R4X2Zyb21fY2xrX2h3KGh3KTsK IAogCXJldHVybiBtaXBpX3R4LT5kYXRhX3JhdGU7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg Y2xrX29wcyBtdGtfbWlwaV90eF9wbGxfb3BzID0gewotCS5wcmVwYXJlID0gbXRrX21pcGlfdHhf cGxsX3ByZXBhcmUsCi0JLnVucHJlcGFyZSA9IG10a19taXBpX3R4X3BsbF91bnByZXBhcmUsCi0J LnJvdW5kX3JhdGUgPSBtdGtfbWlwaV90eF9wbGxfcm91bmRfcmF0ZSwKLQkuc2V0X3JhdGUgPSBt dGtfbWlwaV90eF9wbGxfc2V0X3JhdGUsCi0JLnJlY2FsY19yYXRlID0gbXRrX21pcGlfdHhfcGxs X3JlY2FsY19yYXRlLAotfTsKLQotc3RhdGljIGludCBtdGtfbWlwaV90eF9wb3dlcl9vbl9zaWdu YWwoc3RydWN0IHBoeSAqcGh5KQotewotCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOwotCXUzMiByZWc7Ci0KLQlmb3IgKHJlZyA9IE1JUElUWF9EU0lf Q0xPQ0tfTEFORTsKLQkgICAgIHJlZyA8PSBNSVBJVFhfRFNJX0RBVEFfTEFORTM7IHJlZyArPSA0 KQotCQltdGtfbWlwaV90eF9zZXRfYml0cyhtaXBpX3R4LCByZWcsIFJHX0RTSV9MTlR4X0xET09V VF9FTik7Ci0KLQltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfVE9Q X0NPTiwKLQkJCSAgICAgICBSR19EU0lfUEFEX1RJRV9MT1dfRU4pOwotCi0JcmV0dXJuIDA7Ci19 Ci0KIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQogewog CXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwpAQCAt MzQ5LDMwICs3MywxNiBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3Bvd2VyX29uKHN0cnVjdCBw aHkgKnBoeSkKIAkJcmV0dXJuIHJldDsKIAogCS8qIEVuYWJsZSBEU0kgTGFuZSBMRE8gb3V0cHV0 cywgZGlzYWJsZSBwYWQgdGllIGxvdyAqLwotCW10a19taXBpX3R4X3Bvd2VyX29uX3NpZ25hbChw aHkpOwotCisJbWlwaV90eC0+ZHJpdmVyX2RhdGEtPm1pcGlfdHhfZW5hYmxlX3NpZ25hbChwaHkp OwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBtdGtfbWlwaV90eF9wb3dlcl9vZmZfc2ln bmFsKHN0cnVjdCBwaHkgKnBoeSkKLXsKLQlzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBw aHlfZ2V0X2RydmRhdGEocGh5KTsKLQl1MzIgcmVnOwotCi0JbXRrX21pcGlfdHhfc2V0X2JpdHMo bWlwaV90eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAotCQkJICAgICBSR19EU0lfUEFEX1RJRV9MT1df RU4pOwotCi0JZm9yIChyZWcgPSBNSVBJVFhfRFNJX0NMT0NLX0xBTkU7Ci0JICAgICByZWcgPD0g TUlQSVRYX0RTSV9EQVRBX0xBTkUzOyByZWcgKz0gNCkKLQkJbXRrX21pcGlfdHhfY2xlYXJfYml0 cyhtaXBpX3R4LCByZWcsIFJHX0RTSV9MTlR4X0xET09VVF9FTik7Ci19Ci0KIHN0YXRpYyBpbnQg bXRrX21pcGlfdHhfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSkKIHsKIAlzdHJ1Y3QgbXRrX21p cGlfdHggKm1pcGlfdHggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKIAogCS8qIEVuYWJsZSBwYWQg dGllIGxvdywgZGlzYWJsZSBEU0kgTGFuZSBMRE8gb3V0cHV0cyAqLwotCW10a19taXBpX3R4X3Bv d2VyX29mZl9zaWduYWwocGh5KTsKKwltaXBpX3R4LT5kcml2ZXJfZGF0YS0+bWlwaV90eF9kaXNh YmxlX3NpZ25hbChwaHkpOwogCiAJLyogRGlzYWJsZSBQTEwgYW5kIHBvd2VyIGRvd24gY29yZSAq LwogCWNsa19kaXNhYmxlX3VucHJlcGFyZShtaXBpX3R4LT5wbGwpOwpAQCAtMzkxLDEwICsxMDEs OCBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKIAlzdHJ1Y3QgbXRrX21p cGlfdHggKm1pcGlfdHg7CiAJc3RydWN0IHJlc291cmNlICptZW07Ci0Jc3RydWN0IGNsayAqcmVm X2NsazsKIAljb25zdCBjaGFyICpyZWZfY2xrX25hbWU7CiAJc3RydWN0IGNsa19pbml0X2RhdGEg Y2xrX2luaXQgPSB7Ci0JCS5vcHMgPSAmbXRrX21pcGlfdHhfcGxsX29wcywKIAkJLm51bV9wYXJl bnRzID0gMSwKIAkJLnBhcmVudF9uYW1lcyA9IChjb25zdCBjaGFyICogY29uc3QgKikmcmVmX2Ns a19uYW1lLAogCQkuZmxhZ3MgPSBDTEtfU0VUX1JBVEVfR0FURSwKQEAgLTQwOCw2ICsxMTYsNyBA QCBzdGF0aWMgaW50IG10a19taXBpX3R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJbWlwaV90eC0+ZHJpdmVyX2RhdGEgPSBvZl9kZXZp Y2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKKwogCW1lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShw ZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CiAJbWlwaV90eC0+cmVncyA9IGRldm1faW9yZW1hcF9y ZXNvdXJjZShkZXYsIG1lbSk7CiAJaWYgKElTX0VSUihtaXBpX3R4LT5yZWdzKSkgewpAQCAtNDE2 LDEzICsxMjUsMTQgQEAgc3RhdGljIGludCBtdGtfbWlwaV90eF9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gcmV0OwogCX0KIAotCXJlZl9jbGsgPSBkZXZtX2Ns a19nZXQoZGV2LCBOVUxMKTsKLQlpZiAoSVNfRVJSKHJlZl9jbGspKSB7Ci0JCXJldCA9IFBUUl9F UlIocmVmX2Nsayk7CisJbWlwaV90eC0+cmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYsIE5VTEwp OworCWlmIChJU19FUlIobWlwaV90eC0+cmVmX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihtaXBp X3R4LT5yZWZfY2xrKTsKIAkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHJlZmVyZW5jZSBj bG9jazogJWRcbiIsIHJldCk7CiAJCXJldHVybiByZXQ7CiAJfQotCXJlZl9jbGtfbmFtZSA9IF9f Y2xrX2dldF9uYW1lKHJlZl9jbGspOworCisJcmVmX2Nsa19uYW1lID0gX19jbGtfZ2V0X25hbWUo bWlwaV90eC0+cmVmX2Nsayk7CiAKIAlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhkZXYt Pm9mX25vZGUsICJjbG9jay1vdXRwdXQtbmFtZXMiLAogCQkJCSAgICAgICZjbGtfaW5pdC5uYW1l KTsKQEAgLTQzMSw2ICsxNDEsOCBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJldHVybiByZXQ7CiAJfQogCisJY2xrX2luaXQu b3BzID0gbWlwaV90eC0+ZHJpdmVyX2RhdGEtPm1pcGlfdHhfY2xrX29wczsKKwogCW1pcGlfdHgt PnBsbF9ody5pbml0ID0gJmNsa19pbml0OwogCW1pcGlfdHgtPnBsbCA9IGRldm1fY2xrX3JlZ2lz dGVyKGRldiwgJm1pcGlfdHgtPnBsbF9odyk7CiAJaWYgKElTX0VSUihtaXBpX3R4LT5wbGwpKSB7 CkBAIC00NjUsMjAgKzE3NywxMiBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3JlbW92ZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgY29uc3Qg c3RydWN0IG10a19taXBpdHhfZGF0YSBtdDI3MDFfbWlwaXR4X2RhdGEgPSB7Ci0JLm1wcGxsX3By ZXNlcnZlID0gKDMgPDwgOCkKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21pcGl0eF9k YXRhIG10ODE3M19taXBpdHhfZGF0YSA9IHsKLQkubXBwbGxfcHJlc2VydmUgPSAoMCA8PCA4KQot fTsKLQogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX21pcGlfdHhfbWF0Y2hb XSA9IHsKIAl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1taXBpLXR4IiwKIAkgIC5k YXRhID0gJm10MjcwMV9taXBpdHhfZGF0YSB9LAogCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWss bXQ4MTczLW1pcGktdHgiLAogCSAgLmRhdGEgPSAmbXQ4MTczX21pcGl0eF9kYXRhIH0sCi0Je30s CisJeyB9LAogfTsKIAogc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfbWlwaV90eF9kcml2ZXIg PSB7CkBAIC00ODksMyArMTkzLDQgQEAgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfbWlwaV90 eF9kcml2ZXIgPSB7CiAJCS5vZl9tYXRjaF90YWJsZSA9IG10a19taXBpX3R4X21hdGNoLAogCX0s CiB9OworCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21pcGlfdHgu aCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjYwNzI2OTI0OTkyCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBpX3R4LmgKQEAgLTAsMCArMSw0OSBA QAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiBDb3B5cmln aHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaXRhbyBTaGkgPGppdGFvLnNo aUBtZWRpYXRlay5jb20+CisgKi8KKworI2lmbmRlZiBfTVRLX01JUElfVFhfSAorI2RlZmluZSBf TVRLX01JUElfVFhfSAorCisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgv Y2xrLXByb3ZpZGVyLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51 eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2Rl dmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxp bnV4L3BoeS9waHkuaD4KKworc3RydWN0IG10a19taXBpdHhfZGF0YSB7CisJY29uc3QgdTMyIG1w cGxsX3ByZXNlcnZlOworCWNvbnN0IHN0cnVjdCBjbGtfb3BzICptaXBpX3R4X2Nsa19vcHM7CisJ dm9pZCAoKm1pcGlfdHhfZW5hYmxlX3NpZ25hbCkoc3RydWN0IHBoeSAqcGh5KTsKKwl2b2lkICgq bWlwaV90eF9kaXNhYmxlX3NpZ25hbCkoc3RydWN0IHBoeSAqcGh5KTsKK307CisKK3N0cnVjdCBt dGtfbWlwaV90eCB7CisJc3RydWN0IGRldmljZSAqZGV2OworCXZvaWQgX19pb21lbSAqcmVnczsK Kwl1MzIgZGF0YV9yYXRlOworCXN0cnVjdCBjbGsgKnJlZl9jbGs7CisJY29uc3Qgc3RydWN0IG10 a19taXBpdHhfZGF0YSAqZHJpdmVyX2RhdGE7CisJc3RydWN0IGNsa19odyBwbGxfaHc7CisJc3Ry dWN0IGNsayAqcGxsOworfTsKKworc3RydWN0IG10a19taXBpX3R4ICptdGtfbWlwaV90eF9mcm9t X2Nsa19odyhzdHJ1Y3QgY2xrX2h3ICpodyk7Cit2b2lkIG10a19taXBpX3R4X2NsZWFyX2JpdHMo c3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LCB1MzIgYml0cyk7Cit2b2lk IG10a19taXBpX3R4X3NldF9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCwgdTMyIG9m ZnNldCwgdTMyIGJpdHMpOwordm9pZCBtdGtfbWlwaV90eF91cGRhdGVfYml0cyhzdHJ1Y3QgbXRr X21pcGlfdHggKm1pcGlfdHgsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLAorCQkJICAgICB1MzIgZGF0 YSk7CitpbnQgbXRrX21pcGlfdHhfcGxsX3NldF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNp Z25lZCBsb25nIHJhdGUsCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpOwordW5z aWduZWQgbG9uZyBtdGtfbWlwaV90eF9wbGxfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcs CisJCQkJCSAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSk7CisKK2V4dGVybiBjb25zdCBzdHJ1 Y3QgbXRrX21pcGl0eF9kYXRhIG10MjcwMV9taXBpdHhfZGF0YTsKK2V4dGVybiBjb25zdCBzdHJ1 Y3QgbXRrX21pcGl0eF9kYXRhIG10ODE3M19taXBpdHhfZGF0YTsKKworI2VuZGlmCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19taXBpX3R4LmMgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19taXBpX3R4LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NWVmMGM1MjUyYjkKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19taXBpX3R4LmMKQEAgLTAsMCAr MSwyODkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29w eXJpZ2h0IChjKSAyMDE5IE1lZGlhVGVrIEluYy4KKyAqIEF1dGhvcjogaml0YW8uc2hpIDxqaXRh by5zaGlAbWVkaWF0ZWsuY29tPgorICovCisKKyNpbmNsdWRlICJtdGtfbWlwaV90eC5oIgorCisj ZGVmaW5lIE1JUElUWF9EU0lfQ09OCQkweDAwCisjZGVmaW5lIFJHX0RTSV9MRE9DT1JFX0VOCQlC SVQoMCkKKyNkZWZpbmUgUkdfRFNJX0NLR19MRE9PVVRfRU4JCUJJVCgxKQorI2RlZmluZSBSR19E U0lfQkNMS19TRUwJCQkoMyA8PCAyKQorI2RlZmluZSBSR19EU0lfTERfSURYX1NFTAkJKDcgPDwg NCkKKyNkZWZpbmUgUkdfRFNJX1BIWUNMS19TRUwJCSgyIDw8IDgpCisjZGVmaW5lIFJHX0RTSV9E U0lDTEtfRlJFUV9TRUwJCUJJVCgxMCkKKyNkZWZpbmUgUkdfRFNJX0xQVFhfQ0xNUF9FTgkJQklU KDExKQorCisjZGVmaW5lIE1JUElUWF9EU0lfQ0xPQ0tfTEFORQkweDA0CisjZGVmaW5lIE1JUElU WF9EU0lfREFUQV9MQU5FMAkweDA4CisjZGVmaW5lIE1JUElUWF9EU0lfREFUQV9MQU5FMQkweDBj CisjZGVmaW5lIE1JUElUWF9EU0lfREFUQV9MQU5FMgkweDEwCisjZGVmaW5lIE1JUElUWF9EU0lf REFUQV9MQU5FMwkweDE0CisjZGVmaW5lIFJHX0RTSV9MTlR4X0xET09VVF9FTgkJQklUKDApCisj ZGVmaW5lIFJHX0RTSV9MTlR4X0NLTEFORV9FTgkJQklUKDEpCisjZGVmaW5lIFJHX0RTSV9MTlR4 X0xQVFhfSVBMVVMxCQlCSVQoMikKKyNkZWZpbmUgUkdfRFNJX0xOVHhfTFBUWF9JUExVUzIJCUJJ VCgzKQorI2RlZmluZSBSR19EU0lfTE5UeF9MUFRYX0lNSU5VUwkJQklUKDQpCisjZGVmaW5lIFJH X0RTSV9MTlR4X0xQQ0RfSVBMVVMJCUJJVCg1KQorI2RlZmluZSBSR19EU0lfTE5UeF9MUENEX0lN SU5VUwkJQklUKDYpCisjZGVmaW5lIFJHX0RTSV9MTlR4X1JUX0NPREUJCSgweGYgPDwgOCkKKwor I2RlZmluZSBNSVBJVFhfRFNJX1RPUF9DT04JMHg0MAorI2RlZmluZSBSR19EU0lfTE5UX0lOVFJf RU4JCUJJVCgwKQorI2RlZmluZSBSR19EU0lfTE5UX0hTX0JJQVNfRU4JCUJJVCgxKQorI2RlZmlu ZSBSR19EU0lfTE5UX0lNUF9DQUxfRU4JCUJJVCgyKQorI2RlZmluZSBSR19EU0lfTE5UX1RFU1RN T0RFX0VOCQlCSVQoMykKKyNkZWZpbmUgUkdfRFNJX0xOVF9JTVBfQ0FMX0NPREUJCSgweGYgPDwg NCkKKyNkZWZpbmUgUkdfRFNJX0xOVF9BSU9fU0VMCQkoNyA8PCA4KQorI2RlZmluZSBSR19EU0lf UEFEX1RJRV9MT1dfRU4JCUJJVCgxMSkKKyNkZWZpbmUgUkdfRFNJX0RFQlVHX0lOUFVUX0VOCQlC SVQoMTIpCisjZGVmaW5lIFJHX0RTSV9QUkVTRVJWRQkJCSg3IDw8IDEzKQorCisjZGVmaW5lIE1J UElUWF9EU0lfQkdfQ09OCTB4NDQKKyNkZWZpbmUgUkdfRFNJX0JHX0NPUkVfRU4JCUJJVCgwKQor I2RlZmluZSBSR19EU0lfQkdfQ0tFTgkJCUJJVCgxKQorI2RlZmluZSBSR19EU0lfQkdfRElWCQkJ KDB4MyA8PCAyKQorI2RlZmluZSBSR19EU0lfQkdfRkFTVF9DSEFSR0UJCUJJVCg0KQorI2RlZmlu ZSBSR19EU0lfVk9VVF9NU0sJCQkoMHgzZmZmZiA8PCA1KQorI2RlZmluZSBSR19EU0lfVjEyX1NF TAkJCSg3IDw8IDUpCisjZGVmaW5lIFJHX0RTSV9WMTBfU0VMCQkJKDcgPDwgOCkKKyNkZWZpbmUg UkdfRFNJX1YwNzJfU0VMCQkJKDcgPDwgMTEpCisjZGVmaW5lIFJHX0RTSV9WMDRfU0VMCQkJKDcg PDwgMTQpCisjZGVmaW5lIFJHX0RTSV9WMDMyX1NFTAkJCSg3IDw8IDE3KQorI2RlZmluZSBSR19E U0lfVjAyX1NFTAkJCSg3IDw8IDIwKQorI2RlZmluZSBSR19EU0lfQkdfUjFfVFJJTQkJKDB4ZiA8 PCAyNCkKKyNkZWZpbmUgUkdfRFNJX0JHX1IyX1RSSU0JCSgweGYgPDwgMjgpCisKKyNkZWZpbmUg TUlQSVRYX0RTSV9QTExfQ09OMAkweDUwCisjZGVmaW5lIFJHX0RTSV9NUFBMTF9QTExfRU4JCUJJ VCgwKQorI2RlZmluZSBSR19EU0lfTVBQTExfRElWX01TSwkJKDB4MWZmIDw8IDEpCisjZGVmaW5l IFJHX0RTSV9NUFBMTF9QUkVESVYJCSgzIDw8IDEpCisjZGVmaW5lIFJHX0RTSV9NUFBMTF9UWERJ VjAJCSgzIDw8IDMpCisjZGVmaW5lIFJHX0RTSV9NUFBMTF9UWERJVjEJCSgzIDw8IDUpCisjZGVm aW5lIFJHX0RTSV9NUFBMTF9QT1NESVYJCSg3IDw8IDcpCisjZGVmaW5lIFJHX0RTSV9NUFBMTF9N T05WQ19FTgkJQklUKDEwKQorI2RlZmluZSBSR19EU0lfTVBQTExfTU9OUkVGX0VOCQlCSVQoMTEp CisjZGVmaW5lIFJHX0RTSV9NUFBMTF9WT0RfRU4JCUJJVCgxMikKKworI2RlZmluZSBNSVBJVFhf RFNJX1BMTF9DT04xCTB4NTQKKyNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9GUkFfRU4JCUJJVCgw KQorI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1NTQ19QSF9JTklUCUJJVCgxKQorI2RlZmluZSBS R19EU0lfTVBQTExfU0RNX1NTQ19FTgkJQklUKDIpCisjZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1f U1NDX1BSRAkoMHhmZmZmIDw8IDE2KQorCisjZGVmaW5lIE1JUElUWF9EU0lfUExMX0NPTjIJMHg1 OAorCisjZGVmaW5lIE1JUElUWF9EU0lfUExMX1RPUAkweDY0CisjZGVmaW5lIFJHX0RTSV9NUFBM TF9QUkVTRVJWRQkJKDB4ZmYgPDwgOCkKKworI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9QV1IJMHg2 OAorI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1BXUl9PTgkJQklUKDApCisjZGVmaW5lIFJHX0RT SV9NUFBMTF9TRE1fSVNPX0VOCQlCSVQoMSkKKyNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9QV1Jf QUNLCUJJVCg4KQorCisjZGVmaW5lIE1JUElUWF9EU0lfU1dfQ1RSTAkweDgwCisjZGVmaW5lIFNX X0NUUkxfRU4JCQlCSVQoMCkKKworI2RlZmluZSBNSVBJVFhfRFNJX1NXX0NUUkxfQ09OMAkweDg0 CisjZGVmaW5lIFNXX0xOVENfTFBUWF9QUkVfT0UJCUJJVCgwKQorI2RlZmluZSBTV19MTlRDX0xQ VFhfT0UJCQlCSVQoMSkKKyNkZWZpbmUgU1dfTE5UQ19MUFRYX1AJCQlCSVQoMikKKyNkZWZpbmUg U1dfTE5UQ19MUFRYX04JCQlCSVQoMykKKyNkZWZpbmUgU1dfTE5UQ19IU1RYX1BSRV9PRQkJQklU KDQpCisjZGVmaW5lIFNXX0xOVENfSFNUWF9PRQkJCUJJVCg1KQorI2RlZmluZSBTV19MTlRDX0hT VFhfWkVST0NMSwkJQklUKDYpCisjZGVmaW5lIFNXX0xOVDBfTFBUWF9QUkVfT0UJCUJJVCg3KQor I2RlZmluZSBTV19MTlQwX0xQVFhfT0UJCQlCSVQoOCkKKyNkZWZpbmUgU1dfTE5UMF9MUFRYX1AJ CQlCSVQoOSkKKyNkZWZpbmUgU1dfTE5UMF9MUFRYX04JCQlCSVQoMTApCisjZGVmaW5lIFNXX0xO VDBfSFNUWF9QUkVfT0UJCUJJVCgxMSkKKyNkZWZpbmUgU1dfTE5UMF9IU1RYX09FCQkJQklUKDEy KQorI2RlZmluZSBTV19MTlQwX0xQUlhfRU4JCQlCSVQoMTMpCisjZGVmaW5lIFNXX0xOVDFfTFBU WF9QUkVfT0UJCUJJVCgxNCkKKyNkZWZpbmUgU1dfTE5UMV9MUFRYX09FCQkJQklUKDE1KQorI2Rl ZmluZSBTV19MTlQxX0xQVFhfUAkJCUJJVCgxNikKKyNkZWZpbmUgU1dfTE5UMV9MUFRYX04JCQlC SVQoMTcpCisjZGVmaW5lIFNXX0xOVDFfSFNUWF9QUkVfT0UJCUJJVCgxOCkKKyNkZWZpbmUgU1df TE5UMV9IU1RYX09FCQkJQklUKDE5KQorI2RlZmluZSBTV19MTlQyX0xQVFhfUFJFX09FCQlCSVQo MjApCisjZGVmaW5lIFNXX0xOVDJfTFBUWF9PRQkJCUJJVCgyMSkKKyNkZWZpbmUgU1dfTE5UMl9M UFRYX1AJCQlCSVQoMjIpCisjZGVmaW5lIFNXX0xOVDJfTFBUWF9OCQkJQklUKDIzKQorI2RlZmlu ZSBTV19MTlQyX0hTVFhfUFJFX09FCQlCSVQoMjQpCisjZGVmaW5lIFNXX0xOVDJfSFNUWF9PRQkJ CUJJVCgyNSkKKworc3RhdGljIGludCBtdGtfbWlwaV90eF9wbGxfcHJlcGFyZShzdHJ1Y3QgY2xr X2h3ICpodykKK3sKKwlzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBtdGtfbWlwaV90eF9m cm9tX2Nsa19odyhodyk7CisJdTggdHhkaXYsIHR4ZGl2MCwgdHhkaXYxOworCXU2NCBwY3c7CisK KwlkZXZfZGJnKG1pcGlfdHgtPmRldiwgInByZXBhcmU6ICV1IEh6XG4iLCBtaXBpX3R4LT5kYXRh X3JhdGUpOworCisJaWYgKG1pcGlfdHgtPmRhdGFfcmF0ZSA+PSA1MDAwMDAwMDApIHsKKwkJdHhk aXYgPSAxOworCQl0eGRpdjAgPSAwOworCQl0eGRpdjEgPSAwOworCX0gZWxzZSBpZiAobWlwaV90 eC0+ZGF0YV9yYXRlID49IDI1MDAwMDAwMCkgeworCQl0eGRpdiA9IDI7CisJCXR4ZGl2MCA9IDE7 CisJCXR4ZGl2MSA9IDA7CisJfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gMTI1MDAw MDAwKSB7CisJCXR4ZGl2ID0gNDsKKwkJdHhkaXYwID0gMjsKKwkJdHhkaXYxID0gMDsKKwl9IGVs c2UgaWYgKG1pcGlfdHgtPmRhdGFfcmF0ZSA+IDYyMDAwMDAwKSB7CisJCXR4ZGl2ID0gODsKKwkJ dHhkaXYwID0gMjsKKwkJdHhkaXYxID0gMTsKKwl9IGVsc2UgaWYgKG1pcGlfdHgtPmRhdGFfcmF0 ZSA+PSA1MDAwMDAwMCkgeworCQl0eGRpdiA9IDE2OworCQl0eGRpdjAgPSAyOworCQl0eGRpdjEg PSAyOworCX0gZWxzZSB7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCW10a19taXBpX3R4X3Vw ZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfQkdfQ09OLAorCQkJCVJHX0RTSV9WT1VUX01T SyB8CisJCQkJUkdfRFNJX0JHX0NLRU4gfCBSR19EU0lfQkdfQ09SRV9FTiwKKwkJCQkoNCA8PCAy MCkgfCAoNCA8PCAxNykgfCAoNCA8PCAxNCkgfAorCQkJCSg0IDw8IDExKSB8ICg0IDw8IDgpIHwg KDQgPDwgNSkgfAorCQkJCVJHX0RTSV9CR19DS0VOIHwgUkdfRFNJX0JHX0NPUkVfRU4pOworCisJ dXNsZWVwX3JhbmdlKDMwLCAxMDApOworCisJbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90 eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAorCQkJCVJHX0RTSV9MTlRfSU1QX0NBTF9DT0RFIHwgUkdf RFNJX0xOVF9IU19CSUFTX0VOLAorCQkJCSg4IDw8IDQpIHwgUkdfRFNJX0xOVF9IU19CSUFTX0VO KTsKKworCW10a19taXBpX3R4X3NldF9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfQ09OLAorCQkJ ICAgICBSR19EU0lfQ0tHX0xET09VVF9FTiB8IFJHX0RTSV9MRE9DT1JFX0VOKTsKKworCW10a19t aXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX1BXUiwKKwkJCQlSR19E U0lfTVBQTExfU0RNX1BXUl9PTiB8CisJCQkJUkdfRFNJX01QUExMX1NETV9JU09fRU4sCisJCQkJ UkdfRFNJX01QUExMX1NETV9QV1JfT04pOworCisJbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBp X3R4LCBNSVBJVFhfRFNJX1BMTF9DT04wLAorCQkJICAgICAgIFJHX0RTSV9NUFBMTF9QTExfRU4p OworCisJbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09O MCwKKwkJCQlSR19EU0lfTVBQTExfVFhESVYwIHwgUkdfRFNJX01QUExMX1RYRElWMSB8CisJCQkJ UkdfRFNJX01QUExMX1BSRURJViwKKwkJCQkodHhkaXYwIDw8IDMpIHwgKHR4ZGl2MSA8PCA1KSk7 CisKKwkvKgorCSAqIFBMTCBQQ1cgY29uZmlnCisJICogUENXIGJpdCAyNH4zMCA9IGludGVnZXIg cGFydCBvZiBwY3cKKwkgKiBQQ1cgYml0IDB+MjMgPSBmcmFjdGlvbmFsIHBhcnQgb2YgcGN3CisJ ICogcGN3ID0gZGF0YV9SYXRlKjQqdHhkaXYvKFJlZl9jbGsqMik7CisJICogUG9zdCBESVYgPTQs IHNvIG5lZWQgZGF0YV9SYXRlKjQKKwkgKiBSZWZfY2xrIGlzIDI2TUh6CisJICovCisJcGN3ID0g ZGl2X3U2NCgoKHU2NCltaXBpX3R4LT5kYXRhX3JhdGUgKiAyICogdHhkaXYpIDw8IDI0LAorCQkg ICAgICAyNjAwMDAwMCk7CisJd3JpdGVsKHBjdywgbWlwaV90eC0+cmVncyArIE1JUElUWF9EU0lf UExMX0NPTjIpOworCisJbXRrX21pcGlfdHhfc2V0X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9Q TExfQ09OMSwKKwkJCSAgICAgUkdfRFNJX01QUExMX1NETV9GUkFfRU4pOworCisJbXRrX21pcGlf dHhfc2V0X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwgUkdfRFNJX01QUExMX1BM TF9FTik7CisKKwl1c2xlZXBfcmFuZ2UoMjAsIDEwMCk7CisKKwltdGtfbWlwaV90eF9jbGVhcl9i aXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NPTjEsCisJCQkgICAgICAgUkdfRFNJX01QUExM X1NETV9TU0NfRU4pOworCisJbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRY X0RTSV9QTExfVE9QLAorCQkJCVJHX0RTSV9NUFBMTF9QUkVTRVJWRSwKKwkJCQltaXBpX3R4LT5k cml2ZXJfZGF0YS0+bXBwbGxfcHJlc2VydmUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIG10a19taXBpX3R4X3BsbF91bnByZXBhcmUoc3RydWN0IGNsa19odyAqaHcpCit7CisJc3Ry dWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gbXRrX21pcGlfdHhfZnJvbV9jbGtfaHcoaHcpOwor CisJZGV2X2RiZyhtaXBpX3R4LT5kZXYsICJ1bnByZXBhcmVcbiIpOworCisJbXRrX21pcGlfdHhf Y2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9DT04wLAorCQkJICAgICAgIFJHX0RT SV9NUFBMTF9QTExfRU4pOworCisJbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQ SVRYX0RTSV9QTExfVE9QLAorCQkJCVJHX0RTSV9NUFBMTF9QUkVTRVJWRSwgMCk7CisKKwltdGtf bWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9QV1IsCisJCQkJUkdf RFNJX01QUExMX1NETV9JU09fRU4gfAorCQkJCVJHX0RTSV9NUFBMTF9TRE1fUFdSX09OLAorCQkJ CVJHX0RTSV9NUFBMTF9TRE1fSVNPX0VOKTsKKworCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlw aV90eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAorCQkJICAgICAgIFJHX0RTSV9MTlRfSFNfQklBU19F Tik7CisKKwltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfQ09OLAor CQkJICAgICAgIFJHX0RTSV9DS0dfTERPT1VUX0VOIHwgUkdfRFNJX0xET0NPUkVfRU4pOworCisJ bXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0JHX0NPTiwKKwkJCSAg ICAgICBSR19EU0lfQkdfQ0tFTiB8IFJHX0RTSV9CR19DT1JFX0VOKTsKKworCW10a19taXBpX3R4 X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKKwkJCSAgICAgICBSR19E U0lfTVBQTExfRElWX01TSyk7Cit9CisKK3N0YXRpYyBsb25nIG10a19taXBpX3R4X3BsbF9yb3Vu ZF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCisJCQkJICAgICAg IHVuc2lnbmVkIGxvbmcgKnByYXRlKQoreworCXJldHVybiBjbGFtcF92YWwocmF0ZSwgNTAwMDAw MDAsIDEyNTAwMDAwMDApOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgbXRrX21p cGlfdHhfcGxsX29wcyA9IHsKKwkucHJlcGFyZSA9IG10a19taXBpX3R4X3BsbF9wcmVwYXJlLAor CS51bnByZXBhcmUgPSBtdGtfbWlwaV90eF9wbGxfdW5wcmVwYXJlLAorCS5yb3VuZF9yYXRlID0g bXRrX21pcGlfdHhfcGxsX3JvdW5kX3JhdGUsCisJLnNldF9yYXRlID0gbXRrX21pcGlfdHhfcGxs X3NldF9yYXRlLAorCS5yZWNhbGNfcmF0ZSA9IG10a19taXBpX3R4X3BsbF9yZWNhbGNfcmF0ZSwK K307CisKK3N0YXRpYyB2b2lkIG10a19taXBpX3R4X3Bvd2VyX29uX3NpZ25hbChzdHJ1Y3QgcGh5 ICpwaHkpCit7CisJc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gcGh5X2dldF9kcnZkYXRh KHBoeSk7CisJdTMyIHJlZzsKKworCWZvciAocmVnID0gTUlQSVRYX0RTSV9DTE9DS19MQU5FOwor CSAgICAgcmVnIDw9IE1JUElUWF9EU0lfREFUQV9MQU5FMzsgcmVnICs9IDQpCisJCW10a19taXBp X3R4X3NldF9iaXRzKG1pcGlfdHgsIHJlZywgUkdfRFNJX0xOVHhfTERPT1VUX0VOKTsKKworCW10 a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAorCQkJICAg ICAgIFJHX0RTSV9QQURfVElFX0xPV19FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19taXBpX3R4 X3Bvd2VyX29mZl9zaWduYWwoc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBtdGtfbWlwaV90 eCAqbWlwaV90eCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCXUzMiByZWc7CisKKwltdGtfbWlw aV90eF9zZXRfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1RPUF9DT04sCisJCQkgICAgIFJHX0RT SV9QQURfVElFX0xPV19FTik7CisKKwlmb3IgKHJlZyA9IE1JUElUWF9EU0lfQ0xPQ0tfTEFORTsK KwkgICAgIHJlZyA8PSBNSVBJVFhfRFNJX0RBVEFfTEFORTM7IHJlZyArPSA0KQorCQltdGtfbWlw aV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIHJlZywgUkdfRFNJX0xOVHhfTERPT1VUX0VOKTsKK30K KworY29uc3Qgc3RydWN0IG10a19taXBpdHhfZGF0YSBtdDI3MDFfbWlwaXR4X2RhdGEgPSB7CisJ Lm1wcGxsX3ByZXNlcnZlID0gKDMgPDwgOCksCisJLm1pcGlfdHhfY2xrX29wcyA9ICZtdGtfbWlw aV90eF9wbGxfb3BzLAorCS5taXBpX3R4X2VuYWJsZV9zaWduYWwgPSBtdGtfbWlwaV90eF9wb3dl cl9vbl9zaWduYWwsCisJLm1pcGlfdHhfZGlzYWJsZV9zaWduYWwgPSBtdGtfbWlwaV90eF9wb3dl cl9vZmZfc2lnbmFsLAorfTsKKworY29uc3Qgc3RydWN0IG10a19taXBpdHhfZGF0YSBtdDgxNzNf bWlwaXR4X2RhdGEgPSB7CisJLm1wcGxsX3ByZXNlcnZlID0gKDAgPDwgOCksCisJLm1pcGlfdHhf Y2xrX29wcyA9ICZtdGtfbWlwaV90eF9wbGxfb3BzLAorCS5taXBpX3R4X2VuYWJsZV9zaWduYWwg PSBtdGtfbWlwaV90eF9wb3dlcl9vbl9zaWduYWwsCisJLm1pcGlfdHhfZGlzYWJsZV9zaWduYWwg PSBtdGtfbWlwaV90eF9wb3dlcl9vZmZfc2lnbmFsLAorfTsKKwotLSAKMi4xMi41CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=