From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jitao Shi Subject: [PATCH v7 2/5] drm/mediatek: separate mipi_tx to different file Date: Fri, 20 Sep 2019 17:04:29 +0800 Message-ID: <20190920090432.3308-3-jitao.shi@mediatek.com> References: <20190920090432.3308-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: <20190920090432.3308-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: CK Hu , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org Cc: Jitao Shi , srv_heupstream@mediatek.com, stonea168@163.com, cawa.cheng@mediatek.com, sj.huang@mediatek.com, linux-mediatek@lists.infradead.org, Matthias Brugger , yingjoe.chen@mediatek.com, eddie.huang@mediatek.com List-Id: linux-mediatek@lists.infradead.org RGlmZmVyZW50IElDIGhhcyBkaWZmZXJlbnQgbWlwaV90eCBzZXR0aW5nIG9mIGRzaS4KVGhpcyBw YXRjaCBzZXBhcmF0ZXMgdGhlIG1pcGlfdHggaGFyZHdhcmUgcmVsYXRlIHBhcnQgZm9yIG10ODE3 My4KClNpZ25lZC1vZmYtYnk6IEppdGFvIFNoaSA8aml0YW8uc2hpQG1lZGlhdGVrLmNvbT4KUmV2 aWV3ZWQtYnk6IENLIEh1IDxjay5odUBtZWRpYXRlay5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfbWlwaV90eC5jICAgICAgICB8IDMzNiArKy0tLS0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5oICAgICAgICB8ICA0OCArKysKIGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX21pcGlfdHguYyB8IDI4OSArKysrKysr KysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzU5IGluc2VydGlvbnMoKyksIDMxNSBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21p cGlfdHguaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf bXQ4MTczX21pcGlfdHguYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQppbmRleCA4MmFlNDlj NjQyMjEuLjJjOGRlMWY1YTVlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQpAQCAtMTIs NiArMTIsNyBAQCBtZWRpYXRlay1kcm0teSA6PSBtdGtfZGlzcF9jb2xvci5vIFwKIAkJICBtdGtf ZHJtX3BsYW5lLm8gXAogCQkgIG10a19kc2kubyBcCiAJCSAgbXRrX21pcGlfdHgubyBcCisJCSAg bXRrX210ODE3M19taXBpX3R4Lm8gXAogCQkgIG10a19kcGkubwogCiBvYmotJChDT05GSUdfRFJN X01FRElBVEVLKSArPSBtZWRpYXRlay1kcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19taXBpX3R4LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21p cGlfdHguYwppbmRleCAxODQyZGMyY2FhZTkuLjc3YjlhMTg1ZTk3MCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBpX3R4LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19taXBpX3R4LmMKQEAgLTMsMjkyICszLDM5IEBACiAgKiBDb3B5cmlnaHQg KGMpIDIwMTUgTWVkaWFUZWsgSW5jLgogICovCiAKLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KLSNp bmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgot I2luY2x1ZGUgPGxpbnV4L2lvLmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVk ZSA8bGludXgvb2ZfZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Ci0jaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgotCi0jZGVmaW5lIE1JUElUWF9EU0lfQ09OCQkw eDAwCi0jZGVmaW5lIFJHX0RTSV9MRE9DT1JFX0VOCQlCSVQoMCkKLSNkZWZpbmUgUkdfRFNJX0NL R19MRE9PVVRfRU4JCUJJVCgxKQotI2RlZmluZSBSR19EU0lfQkNMS19TRUwJCQkoMyA8PCAyKQot I2RlZmluZSBSR19EU0lfTERfSURYX1NFTAkJKDcgPDwgNCkKLSNkZWZpbmUgUkdfRFNJX1BIWUNM S19TRUwJCSgyIDw8IDgpCi0jZGVmaW5lIFJHX0RTSV9EU0lDTEtfRlJFUV9TRUwJCUJJVCgxMCkK LSNkZWZpbmUgUkdfRFNJX0xQVFhfQ0xNUF9FTgkJQklUKDExKQotCi0jZGVmaW5lIE1JUElUWF9E U0lfQ0xPQ0tfTEFORQkweDA0Ci0jZGVmaW5lIE1JUElUWF9EU0lfREFUQV9MQU5FMAkweDA4Ci0j ZGVmaW5lIE1JUElUWF9EU0lfREFUQV9MQU5FMQkweDBjCi0jZGVmaW5lIE1JUElUWF9EU0lfREFU QV9MQU5FMgkweDEwCi0jZGVmaW5lIE1JUElUWF9EU0lfREFUQV9MQU5FMwkweDE0Ci0jZGVmaW5l IFJHX0RTSV9MTlR4X0xET09VVF9FTgkJQklUKDApCi0jZGVmaW5lIFJHX0RTSV9MTlR4X0NLTEFO RV9FTgkJQklUKDEpCi0jZGVmaW5lIFJHX0RTSV9MTlR4X0xQVFhfSVBMVVMxCQlCSVQoMikKLSNk ZWZpbmUgUkdfRFNJX0xOVHhfTFBUWF9JUExVUzIJCUJJVCgzKQotI2RlZmluZSBSR19EU0lfTE5U eF9MUFRYX0lNSU5VUwkJQklUKDQpCi0jZGVmaW5lIFJHX0RTSV9MTlR4X0xQQ0RfSVBMVVMJCUJJ VCg1KQotI2RlZmluZSBSR19EU0lfTE5UeF9MUENEX0lNSU5VUwkJQklUKDYpCi0jZGVmaW5lIFJH X0RTSV9MTlR4X1JUX0NPREUJCSgweGYgPDwgOCkKLQotI2RlZmluZSBNSVBJVFhfRFNJX1RPUF9D T04JMHg0MAotI2RlZmluZSBSR19EU0lfTE5UX0lOVFJfRU4JCUJJVCgwKQotI2RlZmluZSBSR19E U0lfTE5UX0hTX0JJQVNfRU4JCUJJVCgxKQotI2RlZmluZSBSR19EU0lfTE5UX0lNUF9DQUxfRU4J CUJJVCgyKQotI2RlZmluZSBSR19EU0lfTE5UX1RFU1RNT0RFX0VOCQlCSVQoMykKLSNkZWZpbmUg UkdfRFNJX0xOVF9JTVBfQ0FMX0NPREUJCSgweGYgPDwgNCkKLSNkZWZpbmUgUkdfRFNJX0xOVF9B SU9fU0VMCQkoNyA8PCA4KQotI2RlZmluZSBSR19EU0lfUEFEX1RJRV9MT1dfRU4JCUJJVCgxMSkK LSNkZWZpbmUgUkdfRFNJX0RFQlVHX0lOUFVUX0VOCQlCSVQoMTIpCi0jZGVmaW5lIFJHX0RTSV9Q UkVTRVJWRQkJCSg3IDw8IDEzKQotCi0jZGVmaW5lIE1JUElUWF9EU0lfQkdfQ09OCTB4NDQKLSNk ZWZpbmUgUkdfRFNJX0JHX0NPUkVfRU4JCUJJVCgwKQotI2RlZmluZSBSR19EU0lfQkdfQ0tFTgkJ CUJJVCgxKQotI2RlZmluZSBSR19EU0lfQkdfRElWCQkJKDB4MyA8PCAyKQotI2RlZmluZSBSR19E U0lfQkdfRkFTVF9DSEFSR0UJCUJJVCg0KQotI2RlZmluZSBSR19EU0lfVk9VVF9NU0sJCQkoMHgz ZmZmZiA8PCA1KQotI2RlZmluZSBSR19EU0lfVjEyX1NFTAkJCSg3IDw8IDUpCi0jZGVmaW5lIFJH X0RTSV9WMTBfU0VMCQkJKDcgPDwgOCkKLSNkZWZpbmUgUkdfRFNJX1YwNzJfU0VMCQkJKDcgPDwg MTEpCi0jZGVmaW5lIFJHX0RTSV9WMDRfU0VMCQkJKDcgPDwgMTQpCi0jZGVmaW5lIFJHX0RTSV9W MDMyX1NFTAkJCSg3IDw8IDE3KQotI2RlZmluZSBSR19EU0lfVjAyX1NFTAkJCSg3IDw8IDIwKQot I2RlZmluZSBSR19EU0lfQkdfUjFfVFJJTQkJKDB4ZiA8PCAyNCkKLSNkZWZpbmUgUkdfRFNJX0JH X1IyX1RSSU0JCSgweGYgPDwgMjgpCi0KLSNkZWZpbmUgTUlQSVRYX0RTSV9QTExfQ09OMAkweDUw Ci0jZGVmaW5lIFJHX0RTSV9NUFBMTF9QTExfRU4JCUJJVCgwKQotI2RlZmluZSBSR19EU0lfTVBQ TExfRElWX01TSwkJKDB4MWZmIDw8IDEpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9QUkVESVYJCSgz IDw8IDEpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9UWERJVjAJCSgzIDw8IDMpCi0jZGVmaW5lIFJH X0RTSV9NUFBMTF9UWERJVjEJCSgzIDw8IDUpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9QT1NESVYJ CSg3IDw8IDcpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9NT05WQ19FTgkJQklUKDEwKQotI2RlZmlu ZSBSR19EU0lfTVBQTExfTU9OUkVGX0VOCQlCSVQoMTEpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9W T0RfRU4JCUJJVCgxMikKLQotI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9DT04xCTB4NTQKLSNkZWZp bmUgUkdfRFNJX01QUExMX1NETV9GUkFfRU4JCUJJVCgwKQotI2RlZmluZSBSR19EU0lfTVBQTExf U0RNX1NTQ19QSF9JTklUCUJJVCgxKQotI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1NTQ19FTgkJ QklUKDIpCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1fU1NDX1BSRAkoMHhmZmZmIDw8IDE2KQot Ci0jZGVmaW5lIE1JUElUWF9EU0lfUExMX0NPTjIJMHg1OAotCi0jZGVmaW5lIE1JUElUWF9EU0lf UExMX1RPUAkweDY0Ci0jZGVmaW5lIFJHX0RTSV9NUFBMTF9QUkVTRVJWRQkJKDB4ZmYgPDwgOCkK LQotI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9QV1IJMHg2OAotI2RlZmluZSBSR19EU0lfTVBQTExf U0RNX1BXUl9PTgkJQklUKDApCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1fSVNPX0VOCQlCSVQo MSkKLSNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9QV1JfQUNLCUJJVCg4KQotCi0jZGVmaW5lIE1J UElUWF9EU0lfU1dfQ1RSTAkweDgwCi0jZGVmaW5lIFNXX0NUUkxfRU4JCQlCSVQoMCkKLQotI2Rl ZmluZSBNSVBJVFhfRFNJX1NXX0NUUkxfQ09OMAkweDg0Ci0jZGVmaW5lIFNXX0xOVENfTFBUWF9Q UkVfT0UJCUJJVCgwKQotI2RlZmluZSBTV19MTlRDX0xQVFhfT0UJCQlCSVQoMSkKLSNkZWZpbmUg U1dfTE5UQ19MUFRYX1AJCQlCSVQoMikKLSNkZWZpbmUgU1dfTE5UQ19MUFRYX04JCQlCSVQoMykK LSNkZWZpbmUgU1dfTE5UQ19IU1RYX1BSRV9PRQkJQklUKDQpCi0jZGVmaW5lIFNXX0xOVENfSFNU WF9PRQkJCUJJVCg1KQotI2RlZmluZSBTV19MTlRDX0hTVFhfWkVST0NMSwkJQklUKDYpCi0jZGVm aW5lIFNXX0xOVDBfTFBUWF9QUkVfT0UJCUJJVCg3KQotI2RlZmluZSBTV19MTlQwX0xQVFhfT0UJ CQlCSVQoOCkKLSNkZWZpbmUgU1dfTE5UMF9MUFRYX1AJCQlCSVQoOSkKLSNkZWZpbmUgU1dfTE5U MF9MUFRYX04JCQlCSVQoMTApCi0jZGVmaW5lIFNXX0xOVDBfSFNUWF9QUkVfT0UJCUJJVCgxMSkK LSNkZWZpbmUgU1dfTE5UMF9IU1RYX09FCQkJQklUKDEyKQotI2RlZmluZSBTV19MTlQwX0xQUlhf RU4JCQlCSVQoMTMpCi0jZGVmaW5lIFNXX0xOVDFfTFBUWF9QUkVfT0UJCUJJVCgxNCkKLSNkZWZp bmUgU1dfTE5UMV9MUFRYX09FCQkJQklUKDE1KQotI2RlZmluZSBTV19MTlQxX0xQVFhfUAkJCUJJ VCgxNikKLSNkZWZpbmUgU1dfTE5UMV9MUFRYX04JCQlCSVQoMTcpCi0jZGVmaW5lIFNXX0xOVDFf SFNUWF9QUkVfT0UJCUJJVCgxOCkKLSNkZWZpbmUgU1dfTE5UMV9IU1RYX09FCQkJQklUKDE5KQot I2RlZmluZSBTV19MTlQyX0xQVFhfUFJFX09FCQlCSVQoMjApCi0jZGVmaW5lIFNXX0xOVDJfTFBU WF9PRQkJCUJJVCgyMSkKLSNkZWZpbmUgU1dfTE5UMl9MUFRYX1AJCQlCSVQoMjIpCi0jZGVmaW5l IFNXX0xOVDJfTFBUWF9OCQkJQklUKDIzKQotI2RlZmluZSBTV19MTlQyX0hTVFhfUFJFX09FCQlC SVQoMjQpCi0jZGVmaW5lIFNXX0xOVDJfSFNUWF9PRQkJCUJJVCgyNSkKLQotc3RydWN0IG10a19t aXBpdHhfZGF0YSB7Ci0JY29uc3QgdTMyIG1wcGxsX3ByZXNlcnZlOwotfTsKLQotc3RydWN0IG10 a19taXBpX3R4IHsKLQlzdHJ1Y3QgZGV2aWNlICpkZXY7Ci0Jdm9pZCBfX2lvbWVtICpyZWdzOwot CXUzMiBkYXRhX3JhdGU7Ci0JY29uc3Qgc3RydWN0IG10a19taXBpdHhfZGF0YSAqZHJpdmVyX2Rh dGE7Ci0Jc3RydWN0IGNsa19odyBwbGxfaHc7Ci0Jc3RydWN0IGNsayAqcGxsOwotfTsKKyNpbmNs dWRlICJtdGtfbWlwaV90eC5oIgogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfbWlwaV90eCAq bXRrX21pcGlfdHhfZnJvbV9jbGtfaHcoc3RydWN0IGNsa19odyAqaHcpCitpbmxpbmUgc3RydWN0 IG10a19taXBpX3R4ICptdGtfbWlwaV90eF9mcm9tX2Nsa19odyhzdHJ1Y3QgY2xrX2h3ICpodykK IHsKIAlyZXR1cm4gY29udGFpbmVyX29mKGh3LCBzdHJ1Y3QgbXRrX21pcGlfdHgsIHBsbF9odyk7 CiB9CiAKLXN0YXRpYyB2b2lkIG10a19taXBpX3R4X2NsZWFyX2JpdHMoc3RydWN0IG10a19taXBp X3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LAotCQkJCSAgIHUzMiBiaXRzKQordm9pZCBtdGtfbWlw aV90eF9jbGVhcl9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCwgdTMyIG9mZnNldCwK KwkJCSAgICB1MzIgYml0cykKIHsKIAl1MzIgdGVtcCA9IHJlYWRsKG1pcGlfdHgtPnJlZ3MgKyBv ZmZzZXQpOwogCiAJd3JpdGVsKHRlbXAgJiB+Yml0cywgbWlwaV90eC0+cmVncyArIG9mZnNldCk7 CiB9CiAKLXN0YXRpYyB2b2lkIG10a19taXBpX3R4X3NldF9iaXRzKHN0cnVjdCBtdGtfbWlwaV90 eCAqbWlwaV90eCwgdTMyIG9mZnNldCwKLQkJCQkgdTMyIGJpdHMpCit2b2lkIG10a19taXBpX3R4 X3NldF9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCwgdTMyIG9mZnNldCwKKwkJCSAg dTMyIGJpdHMpCiB7CiAJdTMyIHRlbXAgPSByZWFkbChtaXBpX3R4LT5yZWdzICsgb2Zmc2V0KTsK IAogCXdyaXRlbCh0ZW1wIHwgYml0cywgbWlwaV90eC0+cmVncyArIG9mZnNldCk7CiB9CiAKLXN0 YXRpYyB2b2lkIG10a19taXBpX3R4X3VwZGF0ZV9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlw aV90eCwgdTMyIG9mZnNldCwKLQkJCQkgICAgdTMyIG1hc2ssIHUzMiBkYXRhKQordm9pZCBtdGtf bWlwaV90eF91cGRhdGVfYml0cyhzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHgsIHUzMiBvZmZz ZXQsCisJCQkgICAgIHUzMiBtYXNrLCB1MzIgZGF0YSkKIHsKIAl1MzIgdGVtcCA9IHJlYWRsKG1p cGlfdHgtPnJlZ3MgKyBvZmZzZXQpOwogCiAJd3JpdGVsKCh0ZW1wICYgfm1hc2spIHwgKGRhdGEg JiBtYXNrKSwgbWlwaV90eC0+cmVncyArIG9mZnNldCk7CiB9CiAKLXN0YXRpYyBpbnQgbXRrX21p cGlfdHhfcGxsX3ByZXBhcmUoc3RydWN0IGNsa19odyAqaHcpCi17Ci0Jc3RydWN0IG10a19taXBp X3R4ICptaXBpX3R4ID0gbXRrX21pcGlfdHhfZnJvbV9jbGtfaHcoaHcpOwotCXU4IHR4ZGl2LCB0 eGRpdjAsIHR4ZGl2MTsKLQl1NjQgcGN3OwotCi0JZGV2X2RiZyhtaXBpX3R4LT5kZXYsICJwcmVw YXJlOiAldSBIelxuIiwgbWlwaV90eC0+ZGF0YV9yYXRlKTsKLQotCWlmIChtaXBpX3R4LT5kYXRh X3JhdGUgPj0gNTAwMDAwMDAwKSB7Ci0JCXR4ZGl2ID0gMTsKLQkJdHhkaXYwID0gMDsKLQkJdHhk aXYxID0gMDsKLQl9IGVsc2UgaWYgKG1pcGlfdHgtPmRhdGFfcmF0ZSA+PSAyNTAwMDAwMDApIHsK LQkJdHhkaXYgPSAyOwotCQl0eGRpdjAgPSAxOwotCQl0eGRpdjEgPSAwOwotCX0gZWxzZSBpZiAo bWlwaV90eC0+ZGF0YV9yYXRlID49IDEyNTAwMDAwMCkgewotCQl0eGRpdiA9IDQ7Ci0JCXR4ZGl2 MCA9IDI7Ci0JCXR4ZGl2MSA9IDA7Ci0JfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPiA2 MjAwMDAwMCkgewotCQl0eGRpdiA9IDg7Ci0JCXR4ZGl2MCA9IDI7Ci0JCXR4ZGl2MSA9IDE7Ci0J fSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gNTAwMDAwMDApIHsKLQkJdHhkaXYgPSAx NjsKLQkJdHhkaXYwID0gMjsKLQkJdHhkaXYxID0gMjsKLQl9IGVsc2UgewotCQlyZXR1cm4gLUVJ TlZBTDsKLQl9Ci0KLQltdGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJ X0JHX0NPTiwKLQkJCQlSR19EU0lfVk9VVF9NU0sgfAotCQkJCVJHX0RTSV9CR19DS0VOIHwgUkdf RFNJX0JHX0NPUkVfRU4sCi0JCQkJKDQgPDwgMjApIHwgKDQgPDwgMTcpIHwgKDQgPDwgMTQpIHwK LQkJCQkoNCA8PCAxMSkgfCAoNCA8PCA4KSB8ICg0IDw8IDUpIHwKLQkJCQlSR19EU0lfQkdfQ0tF TiB8IFJHX0RTSV9CR19DT1JFX0VOKTsKLQotCXVzbGVlcF9yYW5nZSgzMCwgMTAwKTsKLQotCW10 a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKLQkJCQlS R19EU0lfTE5UX0lNUF9DQUxfQ09ERSB8IFJHX0RTSV9MTlRfSFNfQklBU19FTiwKLQkJCQkoOCA8 PCA0KSB8IFJHX0RTSV9MTlRfSFNfQklBU19FTik7Ci0KLQltdGtfbWlwaV90eF9zZXRfYml0cyht aXBpX3R4LCBNSVBJVFhfRFNJX0NPTiwKLQkJCSAgICAgUkdfRFNJX0NLR19MRE9PVVRfRU4gfCBS R19EU0lfTERPQ09SRV9FTik7Ci0KLQltdGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBN SVBJVFhfRFNJX1BMTF9QV1IsCi0JCQkJUkdfRFNJX01QUExMX1NETV9QV1JfT04gfAotCQkJCVJH X0RTSV9NUFBMTF9TRE1fSVNPX0VOLAotCQkJCVJHX0RTSV9NUFBMTF9TRE1fUFdSX09OKTsKLQot CW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKLQkJ CSAgICAgICBSR19EU0lfTVBQTExfUExMX0VOKTsKLQotCW10a19taXBpX3R4X3VwZGF0ZV9iaXRz KG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NPTjAsCi0JCQkJUkdfRFNJX01QUExMX1RYRElWMCB8 IFJHX0RTSV9NUFBMTF9UWERJVjEgfAotCQkJCVJHX0RTSV9NUFBMTF9QUkVESVYsCi0JCQkJKHR4 ZGl2MCA8PCAzKSB8ICh0eGRpdjEgPDwgNSkpOwotCi0JLyoKLQkgKiBQTEwgUENXIGNvbmZpZwot CSAqIFBDVyBiaXQgMjR+MzAgPSBpbnRlZ2VyIHBhcnQgb2YgcGN3Ci0JICogUENXIGJpdCAwfjIz ID0gZnJhY3Rpb25hbCBwYXJ0IG9mIHBjdwotCSAqIHBjdyA9IGRhdGFfUmF0ZSo0KnR4ZGl2LyhS ZWZfY2xrKjIpOwotCSAqIFBvc3QgRElWID00LCBzbyBuZWVkIGRhdGFfUmF0ZSo0Ci0JICogUmVm X2NsayBpcyAyNk1IegotCSAqLwotCXBjdyA9IGRpdl91NjQoKCh1NjQpbWlwaV90eC0+ZGF0YV9y YXRlICogMiAqIHR4ZGl2KSA8PCAyNCwKLQkJICAgICAgMjYwMDAwMDApOwotCXdyaXRlbChwY3cs IG1pcGlfdHgtPnJlZ3MgKyBNSVBJVFhfRFNJX1BMTF9DT04yKTsKLQotCW10a19taXBpX3R4X3Nl dF9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NPTjEsCi0JCQkgICAgIFJHX0RTSV9NUFBM TF9TRE1fRlJBX0VOKTsKLQotCW10a19taXBpX3R4X3NldF9iaXRzKG1pcGlfdHgsIE1JUElUWF9E U0lfUExMX0NPTjAsIFJHX0RTSV9NUFBMTF9QTExfRU4pOwotCi0JdXNsZWVwX3JhbmdlKDIwLCAx MDApOwotCi0JbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9D T04xLAotCQkJICAgICAgIFJHX0RTSV9NUFBMTF9TRE1fU1NDX0VOKTsKLQotCW10a19taXBpX3R4 X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX1RPUCwKLQkJCQlSR19EU0lfTVBQ TExfUFJFU0VSVkUsCi0JCQkJbWlwaV90eC0+ZHJpdmVyX2RhdGEtPm1wcGxsX3ByZXNlcnZlKTsK LQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBtdGtfbWlwaV90eF9wbGxfdW5wcmVwYXJl KHN0cnVjdCBjbGtfaHcgKmh3KQotewotCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IG10 a19taXBpX3R4X2Zyb21fY2xrX2h3KGh3KTsKLQotCWRldl9kYmcobWlwaV90eC0+ZGV2LCAidW5w cmVwYXJlXG4iKTsKLQotCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RT SV9QTExfQ09OMCwKLQkJCSAgICAgICBSR19EU0lfTVBQTExfUExMX0VOKTsKLQotCW10a19taXBp X3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX1RPUCwKLQkJCQlSR19EU0lf TVBQTExfUFJFU0VSVkUsIDApOwotCi0JbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwg TUlQSVRYX0RTSV9QTExfUFdSLAotCQkJCVJHX0RTSV9NUFBMTF9TRE1fSVNPX0VOIHwKLQkJCQlS R19EU0lfTVBQTExfU0RNX1BXUl9PTiwKLQkJCQlSR19EU0lfTVBQTExfU0RNX0lTT19FTik7Ci0K LQltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKLQkJ CSAgICAgICBSR19EU0lfTE5UX0hTX0JJQVNfRU4pOwotCi0JbXRrX21pcGlfdHhfY2xlYXJfYml0 cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0NPTiwKLQkJCSAgICAgICBSR19EU0lfQ0tHX0xET09VVF9F TiB8IFJHX0RTSV9MRE9DT1JFX0VOKTsKLQotCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90 eCwgTUlQSVRYX0RTSV9CR19DT04sCi0JCQkgICAgICAgUkdfRFNJX0JHX0NLRU4gfCBSR19EU0lf QkdfQ09SRV9FTik7Ci0KLQltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9E U0lfUExMX0NPTjAsCi0JCQkgICAgICAgUkdfRFNJX01QUExMX0RJVl9NU0spOwotfQotCi1zdGF0 aWMgbG9uZyBtdGtfbWlwaV90eF9wbGxfcm91bmRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5z aWduZWQgbG9uZyByYXRlLAotCQkJCSAgICAgICB1bnNpZ25lZCBsb25nICpwcmF0ZSkKLXsKLQly ZXR1cm4gY2xhbXBfdmFsKHJhdGUsIDUwMDAwMDAwLCAxMjUwMDAwMDAwKTsKLX0KLQotc3RhdGlj IGludCBtdGtfbWlwaV90eF9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVk IGxvbmcgcmF0ZSwKLQkJCQkgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKK2ludCBtdGtf bWlwaV90eF9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0 ZSwKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKIHsKIAlzdHJ1Y3QgbXRrX21p cGlfdHggKm1pcGlfdHggPSBtdGtfbWlwaV90eF9mcm9tX2Nsa19odyhodyk7CiAKQEAgLTI5OSwz NyArNDYsMTQgQEAgc3RhdGljIGludCBtdGtfbWlwaV90eF9wbGxfc2V0X3JhdGUoc3RydWN0IGNs a19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHVu c2lnbmVkIGxvbmcgbXRrX21pcGlfdHhfcGxsX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3 LAotCQkJCQkJIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCit1bnNpZ25lZCBsb25nIG10a19t aXBpX3R4X3BsbF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywKKwkJCQkJICB1bnNpZ25l ZCBsb25nIHBhcmVudF9yYXRlKQogewogCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IG10 a19taXBpX3R4X2Zyb21fY2xrX2h3KGh3KTsKIAogCXJldHVybiBtaXBpX3R4LT5kYXRhX3JhdGU7 CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBtdGtfbWlwaV90eF9wbGxfb3BzID0g ewotCS5wcmVwYXJlID0gbXRrX21pcGlfdHhfcGxsX3ByZXBhcmUsCi0JLnVucHJlcGFyZSA9IG10 a19taXBpX3R4X3BsbF91bnByZXBhcmUsCi0JLnJvdW5kX3JhdGUgPSBtdGtfbWlwaV90eF9wbGxf cm91bmRfcmF0ZSwKLQkuc2V0X3JhdGUgPSBtdGtfbWlwaV90eF9wbGxfc2V0X3JhdGUsCi0JLnJl Y2FsY19yYXRlID0gbXRrX21pcGlfdHhfcGxsX3JlY2FsY19yYXRlLAotfTsKLQotc3RhdGljIGlu dCBtdGtfbWlwaV90eF9wb3dlcl9vbl9zaWduYWwoc3RydWN0IHBoeSAqcGh5KQotewotCXN0cnVj dCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwotCXUzMiByZWc7 Ci0KLQlmb3IgKHJlZyA9IE1JUElUWF9EU0lfQ0xPQ0tfTEFORTsKLQkgICAgIHJlZyA8PSBNSVBJ VFhfRFNJX0RBVEFfTEFORTM7IHJlZyArPSA0KQotCQltdGtfbWlwaV90eF9zZXRfYml0cyhtaXBp X3R4LCByZWcsIFJHX0RTSV9MTlR4X0xET09VVF9FTik7Ci0KLQltdGtfbWlwaV90eF9jbGVhcl9i aXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKLQkJCSAgICAgICBSR19EU0lfUEFEX1RJ RV9MT1dfRU4pOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcG93 ZXJfb24oc3RydWN0IHBoeSAqcGh5KQogewogCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9 IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwpAQCAtMzQxLDMwICs2NSwxNiBAQCBzdGF0aWMgaW50IG10 a19taXBpX3R4X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKIAkJcmV0dXJuIHJldDsKIAogCS8q IEVuYWJsZSBEU0kgTGFuZSBMRE8gb3V0cHV0cywgZGlzYWJsZSBwYWQgdGllIGxvdyAqLwotCW10 a19taXBpX3R4X3Bvd2VyX29uX3NpZ25hbChwaHkpOwotCisJbWlwaV90eC0+ZHJpdmVyX2RhdGEt Pm1pcGlfdHhfZW5hYmxlX3NpZ25hbChwaHkpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9p ZCBtdGtfbWlwaV90eF9wb3dlcl9vZmZfc2lnbmFsKHN0cnVjdCBwaHkgKnBoeSkKLXsKLQlzdHJ1 Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKLQl1MzIgcmVn OwotCi0JbXRrX21pcGlfdHhfc2V0X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAot CQkJICAgICBSR19EU0lfUEFEX1RJRV9MT1dfRU4pOwotCi0JZm9yIChyZWcgPSBNSVBJVFhfRFNJ X0NMT0NLX0xBTkU7Ci0JICAgICByZWcgPD0gTUlQSVRYX0RTSV9EQVRBX0xBTkUzOyByZWcgKz0g NCkKLQkJbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCByZWcsIFJHX0RTSV9MTlR4X0xE T09VVF9FTik7Ci19Ci0KIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcG93ZXJfb2ZmKHN0cnVjdCBw aHkgKnBoeSkKIHsKIAlzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBwaHlfZ2V0X2RydmRh dGEocGh5KTsKIAogCS8qIEVuYWJsZSBwYWQgdGllIGxvdywgZGlzYWJsZSBEU0kgTGFuZSBMRE8g b3V0cHV0cyAqLwotCW10a19taXBpX3R4X3Bvd2VyX29mZl9zaWduYWwocGh5KTsKKwltaXBpX3R4 LT5kcml2ZXJfZGF0YS0+bWlwaV90eF9kaXNhYmxlX3NpZ25hbChwaHkpOwogCiAJLyogRGlzYWJs ZSBQTEwgYW5kIHBvd2VyIGRvd24gY29yZSAqLwogCWNsa19kaXNhYmxlX3VucHJlcGFyZShtaXBp X3R4LT5wbGwpOwpAQCAtMzgzLDEwICs5Myw5IEBAIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm cGRldi0+ZGV2OwogCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eDsKIAlzdHJ1Y3QgcmVzb3Vy Y2UgKm1lbTsKLQlzdHJ1Y3QgY2xrICpyZWZfY2xrOwogCWNvbnN0IGNoYXIgKnJlZl9jbGtfbmFt ZTsKKwlzdHJ1Y3QgY2xrICpyZWZfY2xrOwogCXN0cnVjdCBjbGtfaW5pdF9kYXRhIGNsa19pbml0 ID0gewotCQkub3BzID0gJm10a19taXBpX3R4X3BsbF9vcHMsCiAJCS5udW1fcGFyZW50cyA9IDEs CiAJCS5wYXJlbnRfbmFtZXMgPSAoY29uc3QgY2hhciAqIGNvbnN0ICopJnJlZl9jbGtfbmFtZSwK IAkJLmZsYWdzID0gQ0xLX1NFVF9SQVRFX0dBVEUsCkBAIC00MDAsNiArMTA5LDcgQEAgc3RhdGlj IGludCBtdGtfbWlwaV90eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQly ZXR1cm4gLUVOT01FTTsKIAogCW1pcGlfdHgtPmRyaXZlcl9kYXRhID0gb2ZfZGV2aWNlX2dldF9t YXRjaF9kYXRhKGRldik7CisKIAltZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9S RVNPVVJDRV9NRU0sIDApOwogCW1pcGlfdHgtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2Uo ZGV2LCBtZW0pOwogCWlmIChJU19FUlIobWlwaV90eC0+cmVncykpIHsKQEAgLTQxNCw2ICsxMjQs NyBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCByZWZlcmVuY2UgY2xvY2s6ICVk XG4iLCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KKwogCXJlZl9jbGtfbmFtZSA9IF9fY2xrX2dl dF9uYW1lKHJlZl9jbGspOwogCiAJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcoZGV2LT5v Zl9ub2RlLCAiY2xvY2stb3V0cHV0LW5hbWVzIiwKQEAgLTQyMyw2ICsxMzQsOCBAQCBzdGF0aWMg aW50IG10a19taXBpX3R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJl dHVybiByZXQ7CiAJfQogCisJY2xrX2luaXQub3BzID0gbWlwaV90eC0+ZHJpdmVyX2RhdGEtPm1p cGlfdHhfY2xrX29wczsKKwogCW1pcGlfdHgtPnBsbF9ody5pbml0ID0gJmNsa19pbml0OwogCW1p cGlfdHgtPnBsbCA9IGRldm1fY2xrX3JlZ2lzdGVyKGRldiwgJm1pcGlfdHgtPnBsbF9odyk7CiAJ aWYgKElTX0VSUihtaXBpX3R4LT5wbGwpKSB7CkBAIC00NTcsMjAgKzE3MCwxMiBAQCBzdGF0aWMg aW50IG10a19taXBpX3R4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG10a19taXBpdHhfZGF0YSBtdDI3MDFf bWlwaXR4X2RhdGEgPSB7Ci0JLm1wcGxsX3ByZXNlcnZlID0gKDMgPDwgOCkKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgbXRrX21pcGl0eF9kYXRhIG10ODE3M19taXBpdHhfZGF0YSA9IHsKLQku bXBwbGxfcHJlc2VydmUgPSAoMCA8PCA4KQotfTsKLQogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgbXRrX21pcGlfdHhfbWF0Y2hbXSA9IHsKIAl7IC5jb21wYXRpYmxlID0gIm1lZGlh dGVrLG10MjcwMS1taXBpLXR4IiwKIAkgIC5kYXRhID0gJm10MjcwMV9taXBpdHhfZGF0YSB9LAog CXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLW1pcGktdHgiLAogCSAgLmRhdGEgPSAm bXQ4MTczX21pcGl0eF9kYXRhIH0sCi0Je30sCisJeyB9LAogfTsKIAogc3RydWN0IHBsYXRmb3Jt X2RyaXZlciBtdGtfbWlwaV90eF9kcml2ZXIgPSB7CkBAIC00ODEsMyArMTg2LDQgQEAgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBtdGtfbWlwaV90eF9kcml2ZXIgPSB7CiAJCS5vZl9tYXRjaF90YWJs ZSA9IG10a19taXBpX3R4X21hdGNoLAogCX0sCiB9OworCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX21pcGlfdHguaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfbWlwaV90eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY5 MDUzMTM1NjRmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19taXBpX3R4LmgKQEAgLTAsMCArMSw0OCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLgorICog QXV0aG9yOiBKaXRhbyBTaGkgPGppdGFvLnNoaUBtZWRpYXRlay5jb20+CisgKi8KKworI2lmbmRl ZiBfTVRLX01JUElfVFhfSAorI2RlZmluZSBfTVRLX01JUElfVFhfSAorCisjaW5jbHVkZSA8bGlu dXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+CisjaW5jbHVkZSA8bGlu dXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVs ZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KKworc3RydWN0IG10a19t aXBpdHhfZGF0YSB7CisJY29uc3QgdTMyIG1wcGxsX3ByZXNlcnZlOworCWNvbnN0IHN0cnVjdCBj bGtfb3BzICptaXBpX3R4X2Nsa19vcHM7CisJdm9pZCAoKm1pcGlfdHhfZW5hYmxlX3NpZ25hbCko c3RydWN0IHBoeSAqcGh5KTsKKwl2b2lkICgqbWlwaV90eF9kaXNhYmxlX3NpZ25hbCkoc3RydWN0 IHBoeSAqcGh5KTsKK307CisKK3N0cnVjdCBtdGtfbWlwaV90eCB7CisJc3RydWN0IGRldmljZSAq ZGV2OworCXZvaWQgX19pb21lbSAqcmVnczsKKwl1MzIgZGF0YV9yYXRlOworCWNvbnN0IHN0cnVj dCBtdGtfbWlwaXR4X2RhdGEgKmRyaXZlcl9kYXRhOworCXN0cnVjdCBjbGtfaHcgcGxsX2h3Owor CXN0cnVjdCBjbGsgKnBsbDsKK307CisKK3N0cnVjdCBtdGtfbWlwaV90eCAqbXRrX21pcGlfdHhf ZnJvbV9jbGtfaHcoc3RydWN0IGNsa19odyAqaHcpOwordm9pZCBtdGtfbWlwaV90eF9jbGVhcl9i aXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCwgdTMyIG9mZnNldCwgdTMyIGJpdHMpOwor dm9pZCBtdGtfbWlwaV90eF9zZXRfYml0cyhzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHgsIHUz MiBvZmZzZXQsIHUzMiBiaXRzKTsKK3ZvaWQgbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMoc3RydWN0 IG10a19taXBpX3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywKKwkJCSAgICAgdTMy IGRhdGEpOworaW50IG10a19taXBpX3R4X3BsbF9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywg dW5zaWduZWQgbG9uZyByYXRlLAorCQkJICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKTsK K3Vuc2lnbmVkIGxvbmcgbXRrX21pcGlfdHhfcGxsX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcg Kmh3LAorCQkJCQkgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpOworCitleHRlcm4gY29uc3Qg c3RydWN0IG10a19taXBpdHhfZGF0YSBtdDI3MDFfbWlwaXR4X2RhdGE7CitleHRlcm4gY29uc3Qg c3RydWN0IG10a19taXBpdHhfZGF0YSBtdDgxNzNfbWlwaXR4X2RhdGE7CisKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfbWlwaV90eC5jIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfbWlwaV90eC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTVlZjBjNTI1MmI5Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfbWlwaV90eC5jCkBAIC0w LDAgKzEsMjg5IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAq IENvcHlyaWdodCAoYykgMjAxOSBNZWRpYVRlayBJbmMuCisgKiBBdXRob3I6IGppdGFvLnNoaSA8 aml0YW8uc2hpQG1lZGlhdGVrLmNvbT4KKyAqLworCisjaW5jbHVkZSAibXRrX21pcGlfdHguaCIK KworI2RlZmluZSBNSVBJVFhfRFNJX0NPTgkJMHgwMAorI2RlZmluZSBSR19EU0lfTERPQ09SRV9F TgkJQklUKDApCisjZGVmaW5lIFJHX0RTSV9DS0dfTERPT1VUX0VOCQlCSVQoMSkKKyNkZWZpbmUg UkdfRFNJX0JDTEtfU0VMCQkJKDMgPDwgMikKKyNkZWZpbmUgUkdfRFNJX0xEX0lEWF9TRUwJCSg3 IDw8IDQpCisjZGVmaW5lIFJHX0RTSV9QSFlDTEtfU0VMCQkoMiA8PCA4KQorI2RlZmluZSBSR19E U0lfRFNJQ0xLX0ZSRVFfU0VMCQlCSVQoMTApCisjZGVmaW5lIFJHX0RTSV9MUFRYX0NMTVBfRU4J CUJJVCgxMSkKKworI2RlZmluZSBNSVBJVFhfRFNJX0NMT0NLX0xBTkUJMHgwNAorI2RlZmluZSBN SVBJVFhfRFNJX0RBVEFfTEFORTAJMHgwOAorI2RlZmluZSBNSVBJVFhfRFNJX0RBVEFfTEFORTEJ MHgwYworI2RlZmluZSBNSVBJVFhfRFNJX0RBVEFfTEFORTIJMHgxMAorI2RlZmluZSBNSVBJVFhf RFNJX0RBVEFfTEFORTMJMHgxNAorI2RlZmluZSBSR19EU0lfTE5UeF9MRE9PVVRfRU4JCUJJVCgw KQorI2RlZmluZSBSR19EU0lfTE5UeF9DS0xBTkVfRU4JCUJJVCgxKQorI2RlZmluZSBSR19EU0lf TE5UeF9MUFRYX0lQTFVTMQkJQklUKDIpCisjZGVmaW5lIFJHX0RTSV9MTlR4X0xQVFhfSVBMVVMy CQlCSVQoMykKKyNkZWZpbmUgUkdfRFNJX0xOVHhfTFBUWF9JTUlOVVMJCUJJVCg0KQorI2RlZmlu ZSBSR19EU0lfTE5UeF9MUENEX0lQTFVTCQlCSVQoNSkKKyNkZWZpbmUgUkdfRFNJX0xOVHhfTFBD RF9JTUlOVVMJCUJJVCg2KQorI2RlZmluZSBSR19EU0lfTE5UeF9SVF9DT0RFCQkoMHhmIDw8IDgp CisKKyNkZWZpbmUgTUlQSVRYX0RTSV9UT1BfQ09OCTB4NDAKKyNkZWZpbmUgUkdfRFNJX0xOVF9J TlRSX0VOCQlCSVQoMCkKKyNkZWZpbmUgUkdfRFNJX0xOVF9IU19CSUFTX0VOCQlCSVQoMSkKKyNk ZWZpbmUgUkdfRFNJX0xOVF9JTVBfQ0FMX0VOCQlCSVQoMikKKyNkZWZpbmUgUkdfRFNJX0xOVF9U RVNUTU9ERV9FTgkJQklUKDMpCisjZGVmaW5lIFJHX0RTSV9MTlRfSU1QX0NBTF9DT0RFCQkoMHhm IDw8IDQpCisjZGVmaW5lIFJHX0RTSV9MTlRfQUlPX1NFTAkJKDcgPDwgOCkKKyNkZWZpbmUgUkdf RFNJX1BBRF9USUVfTE9XX0VOCQlCSVQoMTEpCisjZGVmaW5lIFJHX0RTSV9ERUJVR19JTlBVVF9F TgkJQklUKDEyKQorI2RlZmluZSBSR19EU0lfUFJFU0VSVkUJCQkoNyA8PCAxMykKKworI2RlZmlu ZSBNSVBJVFhfRFNJX0JHX0NPTgkweDQ0CisjZGVmaW5lIFJHX0RTSV9CR19DT1JFX0VOCQlCSVQo MCkKKyNkZWZpbmUgUkdfRFNJX0JHX0NLRU4JCQlCSVQoMSkKKyNkZWZpbmUgUkdfRFNJX0JHX0RJ VgkJCSgweDMgPDwgMikKKyNkZWZpbmUgUkdfRFNJX0JHX0ZBU1RfQ0hBUkdFCQlCSVQoNCkKKyNk ZWZpbmUgUkdfRFNJX1ZPVVRfTVNLCQkJKDB4M2ZmZmYgPDwgNSkKKyNkZWZpbmUgUkdfRFNJX1Yx Ml9TRUwJCQkoNyA8PCA1KQorI2RlZmluZSBSR19EU0lfVjEwX1NFTAkJCSg3IDw8IDgpCisjZGVm aW5lIFJHX0RTSV9WMDcyX1NFTAkJCSg3IDw8IDExKQorI2RlZmluZSBSR19EU0lfVjA0X1NFTAkJ CSg3IDw8IDE0KQorI2RlZmluZSBSR19EU0lfVjAzMl9TRUwJCQkoNyA8PCAxNykKKyNkZWZpbmUg UkdfRFNJX1YwMl9TRUwJCQkoNyA8PCAyMCkKKyNkZWZpbmUgUkdfRFNJX0JHX1IxX1RSSU0JCSgw eGYgPDwgMjQpCisjZGVmaW5lIFJHX0RTSV9CR19SMl9UUklNCQkoMHhmIDw8IDI4KQorCisjZGVm aW5lIE1JUElUWF9EU0lfUExMX0NPTjAJMHg1MAorI2RlZmluZSBSR19EU0lfTVBQTExfUExMX0VO CQlCSVQoMCkKKyNkZWZpbmUgUkdfRFNJX01QUExMX0RJVl9NU0sJCSgweDFmZiA8PCAxKQorI2Rl ZmluZSBSR19EU0lfTVBQTExfUFJFRElWCQkoMyA8PCAxKQorI2RlZmluZSBSR19EU0lfTVBQTExf VFhESVYwCQkoMyA8PCAzKQorI2RlZmluZSBSR19EU0lfTVBQTExfVFhESVYxCQkoMyA8PCA1KQor I2RlZmluZSBSR19EU0lfTVBQTExfUE9TRElWCQkoNyA8PCA3KQorI2RlZmluZSBSR19EU0lfTVBQ TExfTU9OVkNfRU4JCUJJVCgxMCkKKyNkZWZpbmUgUkdfRFNJX01QUExMX01PTlJFRl9FTgkJQklU KDExKQorI2RlZmluZSBSR19EU0lfTVBQTExfVk9EX0VOCQlCSVQoMTIpCisKKyNkZWZpbmUgTUlQ SVRYX0RTSV9QTExfQ09OMQkweDU0CisjZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1fRlJBX0VOCQlC SVQoMCkKKyNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9TU0NfUEhfSU5JVAlCSVQoMSkKKyNkZWZp bmUgUkdfRFNJX01QUExMX1NETV9TU0NfRU4JCUJJVCgyKQorI2RlZmluZSBSR19EU0lfTVBQTExf U0RNX1NTQ19QUkQJKDB4ZmZmZiA8PCAxNikKKworI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9DT04y CTB4NTgKKworI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9UT1AJMHg2NAorI2RlZmluZSBSR19EU0lf TVBQTExfUFJFU0VSVkUJCSgweGZmIDw8IDgpCisKKyNkZWZpbmUgTUlQSVRYX0RTSV9QTExfUFdS CTB4NjgKKyNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9QV1JfT04JCUJJVCgwKQorI2RlZmluZSBS R19EU0lfTVBQTExfU0RNX0lTT19FTgkJQklUKDEpCisjZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1f UFdSX0FDSwlCSVQoOCkKKworI2RlZmluZSBNSVBJVFhfRFNJX1NXX0NUUkwJMHg4MAorI2RlZmlu ZSBTV19DVFJMX0VOCQkJQklUKDApCisKKyNkZWZpbmUgTUlQSVRYX0RTSV9TV19DVFJMX0NPTjAJ MHg4NAorI2RlZmluZSBTV19MTlRDX0xQVFhfUFJFX09FCQlCSVQoMCkKKyNkZWZpbmUgU1dfTE5U Q19MUFRYX09FCQkJQklUKDEpCisjZGVmaW5lIFNXX0xOVENfTFBUWF9QCQkJQklUKDIpCisjZGVm aW5lIFNXX0xOVENfTFBUWF9OCQkJQklUKDMpCisjZGVmaW5lIFNXX0xOVENfSFNUWF9QUkVfT0UJ CUJJVCg0KQorI2RlZmluZSBTV19MTlRDX0hTVFhfT0UJCQlCSVQoNSkKKyNkZWZpbmUgU1dfTE5U Q19IU1RYX1pFUk9DTEsJCUJJVCg2KQorI2RlZmluZSBTV19MTlQwX0xQVFhfUFJFX09FCQlCSVQo NykKKyNkZWZpbmUgU1dfTE5UMF9MUFRYX09FCQkJQklUKDgpCisjZGVmaW5lIFNXX0xOVDBfTFBU WF9QCQkJQklUKDkpCisjZGVmaW5lIFNXX0xOVDBfTFBUWF9OCQkJQklUKDEwKQorI2RlZmluZSBT V19MTlQwX0hTVFhfUFJFX09FCQlCSVQoMTEpCisjZGVmaW5lIFNXX0xOVDBfSFNUWF9PRQkJCUJJ VCgxMikKKyNkZWZpbmUgU1dfTE5UMF9MUFJYX0VOCQkJQklUKDEzKQorI2RlZmluZSBTV19MTlQx X0xQVFhfUFJFX09FCQlCSVQoMTQpCisjZGVmaW5lIFNXX0xOVDFfTFBUWF9PRQkJCUJJVCgxNSkK KyNkZWZpbmUgU1dfTE5UMV9MUFRYX1AJCQlCSVQoMTYpCisjZGVmaW5lIFNXX0xOVDFfTFBUWF9O CQkJQklUKDE3KQorI2RlZmluZSBTV19MTlQxX0hTVFhfUFJFX09FCQlCSVQoMTgpCisjZGVmaW5l IFNXX0xOVDFfSFNUWF9PRQkJCUJJVCgxOSkKKyNkZWZpbmUgU1dfTE5UMl9MUFRYX1BSRV9PRQkJ QklUKDIwKQorI2RlZmluZSBTV19MTlQyX0xQVFhfT0UJCQlCSVQoMjEpCisjZGVmaW5lIFNXX0xO VDJfTFBUWF9QCQkJQklUKDIyKQorI2RlZmluZSBTV19MTlQyX0xQVFhfTgkJCUJJVCgyMykKKyNk ZWZpbmUgU1dfTE5UMl9IU1RYX1BSRV9PRQkJQklUKDI0KQorI2RlZmluZSBTV19MTlQyX0hTVFhf T0UJCQlCSVQoMjUpCisKK3N0YXRpYyBpbnQgbXRrX21pcGlfdHhfcGxsX3ByZXBhcmUoc3RydWN0 IGNsa19odyAqaHcpCit7CisJc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gbXRrX21pcGlf dHhfZnJvbV9jbGtfaHcoaHcpOworCXU4IHR4ZGl2LCB0eGRpdjAsIHR4ZGl2MTsKKwl1NjQgcGN3 OworCisJZGV2X2RiZyhtaXBpX3R4LT5kZXYsICJwcmVwYXJlOiAldSBIelxuIiwgbWlwaV90eC0+ ZGF0YV9yYXRlKTsKKworCWlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gNTAwMDAwMDAwKSB7CisJ CXR4ZGl2ID0gMTsKKwkJdHhkaXYwID0gMDsKKwkJdHhkaXYxID0gMDsKKwl9IGVsc2UgaWYgKG1p cGlfdHgtPmRhdGFfcmF0ZSA+PSAyNTAwMDAwMDApIHsKKwkJdHhkaXYgPSAyOworCQl0eGRpdjAg PSAxOworCQl0eGRpdjEgPSAwOworCX0gZWxzZSBpZiAobWlwaV90eC0+ZGF0YV9yYXRlID49IDEy NTAwMDAwMCkgeworCQl0eGRpdiA9IDQ7CisJCXR4ZGl2MCA9IDI7CisJCXR4ZGl2MSA9IDA7CisJ fSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPiA2MjAwMDAwMCkgeworCQl0eGRpdiA9IDg7 CisJCXR4ZGl2MCA9IDI7CisJCXR4ZGl2MSA9IDE7CisJfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRh X3JhdGUgPj0gNTAwMDAwMDApIHsKKwkJdHhkaXYgPSAxNjsKKwkJdHhkaXYwID0gMjsKKwkJdHhk aXYxID0gMjsKKwl9IGVsc2UgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwltdGtfbWlwaV90 eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0JHX0NPTiwKKwkJCQlSR19EU0lfVk9V VF9NU0sgfAorCQkJCVJHX0RTSV9CR19DS0VOIHwgUkdfRFNJX0JHX0NPUkVfRU4sCisJCQkJKDQg PDwgMjApIHwgKDQgPDwgMTcpIHwgKDQgPDwgMTQpIHwKKwkJCQkoNCA8PCAxMSkgfCAoNCA8PCA4 KSB8ICg0IDw8IDUpIHwKKwkJCQlSR19EU0lfQkdfQ0tFTiB8IFJHX0RTSV9CR19DT1JFX0VOKTsK KworCXVzbGVlcF9yYW5nZSgzMCwgMTAwKTsKKworCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1p cGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKKwkJCQlSR19EU0lfTE5UX0lNUF9DQUxfQ09ERSB8 IFJHX0RTSV9MTlRfSFNfQklBU19FTiwKKwkJCQkoOCA8PCA0KSB8IFJHX0RTSV9MTlRfSFNfQklB U19FTik7CisKKwltdGtfbWlwaV90eF9zZXRfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0NPTiwK KwkJCSAgICAgUkdfRFNJX0NLR19MRE9PVVRfRU4gfCBSR19EU0lfTERPQ09SRV9FTik7CisKKwlt dGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9QV1IsCisJCQkJ UkdfRFNJX01QUExMX1NETV9QV1JfT04gfAorCQkJCVJHX0RTSV9NUFBMTF9TRE1fSVNPX0VOLAor CQkJCVJHX0RTSV9NUFBMTF9TRE1fUFdSX09OKTsKKworCW10a19taXBpX3R4X2NsZWFyX2JpdHMo bWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKKwkJCSAgICAgICBSR19EU0lfTVBQTExfUExM X0VOKTsKKworCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExM X0NPTjAsCisJCQkJUkdfRFNJX01QUExMX1RYRElWMCB8IFJHX0RTSV9NUFBMTF9UWERJVjEgfAor CQkJCVJHX0RTSV9NUFBMTF9QUkVESVYsCisJCQkJKHR4ZGl2MCA8PCAzKSB8ICh0eGRpdjEgPDwg NSkpOworCisJLyoKKwkgKiBQTEwgUENXIGNvbmZpZworCSAqIFBDVyBiaXQgMjR+MzAgPSBpbnRl Z2VyIHBhcnQgb2YgcGN3CisJICogUENXIGJpdCAwfjIzID0gZnJhY3Rpb25hbCBwYXJ0IG9mIHBj dworCSAqIHBjdyA9IGRhdGFfUmF0ZSo0KnR4ZGl2LyhSZWZfY2xrKjIpOworCSAqIFBvc3QgRElW ID00LCBzbyBuZWVkIGRhdGFfUmF0ZSo0CisJICogUmVmX2NsayBpcyAyNk1IegorCSAqLworCXBj dyA9IGRpdl91NjQoKCh1NjQpbWlwaV90eC0+ZGF0YV9yYXRlICogMiAqIHR4ZGl2KSA8PCAyNCwK KwkJICAgICAgMjYwMDAwMDApOworCXdyaXRlbChwY3csIG1pcGlfdHgtPnJlZ3MgKyBNSVBJVFhf RFNJX1BMTF9DT04yKTsKKworCW10a19taXBpX3R4X3NldF9iaXRzKG1pcGlfdHgsIE1JUElUWF9E U0lfUExMX0NPTjEsCisJCQkgICAgIFJHX0RTSV9NUFBMTF9TRE1fRlJBX0VOKTsKKworCW10a19t aXBpX3R4X3NldF9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NPTjAsIFJHX0RTSV9NUFBM TF9QTExfRU4pOworCisJdXNsZWVwX3JhbmdlKDIwLCAxMDApOworCisJbXRrX21pcGlfdHhfY2xl YXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9DT04xLAorCQkJICAgICAgIFJHX0RTSV9N UFBMTF9TRE1fU1NDX0VOKTsKKworCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1J UElUWF9EU0lfUExMX1RPUCwKKwkJCQlSR19EU0lfTVBQTExfUFJFU0VSVkUsCisJCQkJbWlwaV90 eC0+ZHJpdmVyX2RhdGEtPm1wcGxsX3ByZXNlcnZlKTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgdm9pZCBtdGtfbWlwaV90eF9wbGxfdW5wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQorewor CXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IG10a19taXBpX3R4X2Zyb21fY2xrX2h3KGh3 KTsKKworCWRldl9kYmcobWlwaV90eC0+ZGV2LCAidW5wcmVwYXJlXG4iKTsKKworCW10a19taXBp X3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKKwkJCSAgICAgICBS R19EU0lfTVBQTExfUExMX0VOKTsKKworCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgs IE1JUElUWF9EU0lfUExMX1RPUCwKKwkJCQlSR19EU0lfTVBQTExfUFJFU0VSVkUsIDApOworCisJ bXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfUFdSLAorCQkJ CVJHX0RTSV9NUFBMTF9TRE1fSVNPX0VOIHwKKwkJCQlSR19EU0lfTVBQTExfU0RNX1BXUl9PTiwK KwkJCQlSR19EU0lfTVBQTExfU0RNX0lTT19FTik7CisKKwltdGtfbWlwaV90eF9jbGVhcl9iaXRz KG1pcGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKKwkJCSAgICAgICBSR19EU0lfTE5UX0hTX0JJ QVNfRU4pOworCisJbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0NP TiwKKwkJCSAgICAgICBSR19EU0lfQ0tHX0xET09VVF9FTiB8IFJHX0RTSV9MRE9DT1JFX0VOKTsK KworCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9CR19DT04sCisJ CQkgICAgICAgUkdfRFNJX0JHX0NLRU4gfCBSR19EU0lfQkdfQ09SRV9FTik7CisKKwltdGtfbWlw aV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NPTjAsCisJCQkgICAgICAg UkdfRFNJX01QUExMX0RJVl9NU0spOworfQorCitzdGF0aWMgbG9uZyBtdGtfbWlwaV90eF9wbGxf cm91bmRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAorCQkJCSAg ICAgICB1bnNpZ25lZCBsb25nICpwcmF0ZSkKK3sKKwlyZXR1cm4gY2xhbXBfdmFsKHJhdGUsIDUw MDAwMDAwLCAxMjUwMDAwMDAwKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIG10 a19taXBpX3R4X3BsbF9vcHMgPSB7CisJLnByZXBhcmUgPSBtdGtfbWlwaV90eF9wbGxfcHJlcGFy ZSwKKwkudW5wcmVwYXJlID0gbXRrX21pcGlfdHhfcGxsX3VucHJlcGFyZSwKKwkucm91bmRfcmF0 ZSA9IG10a19taXBpX3R4X3BsbF9yb3VuZF9yYXRlLAorCS5zZXRfcmF0ZSA9IG10a19taXBpX3R4 X3BsbF9zZXRfcmF0ZSwKKwkucmVjYWxjX3JhdGUgPSBtdGtfbWlwaV90eF9wbGxfcmVjYWxjX3Jh dGUsCit9OworCitzdGF0aWMgdm9pZCBtdGtfbWlwaV90eF9wb3dlcl9vbl9zaWduYWwoc3RydWN0 IHBoeSAqcGh5KQoreworCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IHBoeV9nZXRfZHJ2 ZGF0YShwaHkpOworCXUzMiByZWc7CisKKwlmb3IgKHJlZyA9IE1JUElUWF9EU0lfQ0xPQ0tfTEFO RTsKKwkgICAgIHJlZyA8PSBNSVBJVFhfRFNJX0RBVEFfTEFORTM7IHJlZyArPSA0KQorCQltdGtf bWlwaV90eF9zZXRfYml0cyhtaXBpX3R4LCByZWcsIFJHX0RTSV9MTlR4X0xET09VVF9FTik7CisK KwltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKKwkJ CSAgICAgICBSR19EU0lfUEFEX1RJRV9MT1dfRU4pOworfQorCitzdGF0aWMgdm9pZCBtdGtfbWlw aV90eF9wb3dlcl9vZmZfc2lnbmFsKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbXRrX21p cGlfdHggKm1pcGlfdHggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwl1MzIgcmVnOworCisJbXRr X21pcGlfdHhfc2V0X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAorCQkJICAgICBS R19EU0lfUEFEX1RJRV9MT1dfRU4pOworCisJZm9yIChyZWcgPSBNSVBJVFhfRFNJX0NMT0NLX0xB TkU7CisJICAgICByZWcgPD0gTUlQSVRYX0RTSV9EQVRBX0xBTkUzOyByZWcgKz0gNCkKKwkJbXRr X21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCByZWcsIFJHX0RTSV9MTlR4X0xET09VVF9FTik7 Cit9CisKK2NvbnN0IHN0cnVjdCBtdGtfbWlwaXR4X2RhdGEgbXQyNzAxX21pcGl0eF9kYXRhID0g eworCS5tcHBsbF9wcmVzZXJ2ZSA9ICgzIDw8IDgpLAorCS5taXBpX3R4X2Nsa19vcHMgPSAmbXRr X21pcGlfdHhfcGxsX29wcywKKwkubWlwaV90eF9lbmFibGVfc2lnbmFsID0gbXRrX21pcGlfdHhf cG93ZXJfb25fc2lnbmFsLAorCS5taXBpX3R4X2Rpc2FibGVfc2lnbmFsID0gbXRrX21pcGlfdHhf cG93ZXJfb2ZmX3NpZ25hbCwKK307CisKK2NvbnN0IHN0cnVjdCBtdGtfbWlwaXR4X2RhdGEgbXQ4 MTczX21pcGl0eF9kYXRhID0geworCS5tcHBsbF9wcmVzZXJ2ZSA9ICgwIDw8IDgpLAorCS5taXBp X3R4X2Nsa19vcHMgPSAmbXRrX21pcGlfdHhfcGxsX29wcywKKwkubWlwaV90eF9lbmFibGVfc2ln bmFsID0gbXRrX21pcGlfdHhfcG93ZXJfb25fc2lnbmFsLAorCS5taXBpX3R4X2Rpc2FibGVfc2ln bmFsID0gbXRrX21pcGlfdHhfcG93ZXJfb2ZmX3NpZ25hbCwKK307CisKLS0gCjIuMjEuMAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs