From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jitao Shi Subject: [v5 2/3] drm/mediatek: separate mipi_tx to different file Date: Thu, 27 Jun 2019 10:59:00 +0800 Message-ID: <20190627025901.28418-3-jitao.shi@mediatek.com> References: <20190627025901.28418-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: <20190627025901.28418-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 ZWRpYXRlay9tdGtfbWlwaV90eC5jICAgICAgICB8IDM0MyArKy0tLS0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5oICAgICAgICB8ICA0OSArKysKIGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX21pcGlfdHguYyB8IDI4OSArKysrKysr KysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzYzIGluc2VydGlvbnMoKyksIDMxOSBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21p cGlfdHguaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf bXQ4MTczX21pcGlfdHguYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQppbmRleCA4MmFlNDlj NjQyMjEuLjJjOGRlMWY1YTVlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQpAQCAtMTIs NiArMTIsNyBAQCBtZWRpYXRlay1kcm0teSA6PSBtdGtfZGlzcF9jb2xvci5vIFwKIAkJICBtdGtf ZHJtX3BsYW5lLm8gXAogCQkgIG10a19kc2kubyBcCiAJCSAgbXRrX21pcGlfdHgubyBcCisJCSAg bXRrX210ODE3M19taXBpX3R4Lm8gXAogCQkgIG10a19kcGkubwogCiBvYmotJChDT05GSUdfRFJN X01FRElBVEVLKSArPSBtZWRpYXRlay1kcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19taXBpX3R4LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21p cGlfdHguYwppbmRleCA5MGU5MTMxMDg5NTAuLmNkYzY4Yjg4Y2VmZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBpX3R4LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19taXBpX3R4LmMKQEAgLTExLDI5MiArMTEsMzkgQEAKICAqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKi8KIAotI2luY2x1ZGUgPGxp bnV4L2Nsay5oPgotI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgotI2luY2x1ZGUgPGxp bnV4L2RlbGF5Lmg+Ci0jaW5jbHVkZSA8bGludXgvaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Ci0KLSNkZWZpbmUgTUlQ SVRYX0RTSV9DT04JCTB4MDAKLSNkZWZpbmUgUkdfRFNJX0xET0NPUkVfRU4JCUJJVCgwKQotI2Rl ZmluZSBSR19EU0lfQ0tHX0xET09VVF9FTgkJQklUKDEpCi0jZGVmaW5lIFJHX0RTSV9CQ0xLX1NF TAkJCSgzIDw8IDIpCi0jZGVmaW5lIFJHX0RTSV9MRF9JRFhfU0VMCQkoNyA8PCA0KQotI2RlZmlu ZSBSR19EU0lfUEhZQ0xLX1NFTAkJKDIgPDwgOCkKLSNkZWZpbmUgUkdfRFNJX0RTSUNMS19GUkVR X1NFTAkJQklUKDEwKQotI2RlZmluZSBSR19EU0lfTFBUWF9DTE1QX0VOCQlCSVQoMTEpCi0KLSNk ZWZpbmUgTUlQSVRYX0RTSV9DTE9DS19MQU5FCTB4MDQKLSNkZWZpbmUgTUlQSVRYX0RTSV9EQVRB X0xBTkUwCTB4MDgKLSNkZWZpbmUgTUlQSVRYX0RTSV9EQVRBX0xBTkUxCTB4MGMKLSNkZWZpbmUg TUlQSVRYX0RTSV9EQVRBX0xBTkUyCTB4MTAKLSNkZWZpbmUgTUlQSVRYX0RTSV9EQVRBX0xBTkUz CTB4MTQKLSNkZWZpbmUgUkdfRFNJX0xOVHhfTERPT1VUX0VOCQlCSVQoMCkKLSNkZWZpbmUgUkdf RFNJX0xOVHhfQ0tMQU5FX0VOCQlCSVQoMSkKLSNkZWZpbmUgUkdfRFNJX0xOVHhfTFBUWF9JUExV UzEJCUJJVCgyKQotI2RlZmluZSBSR19EU0lfTE5UeF9MUFRYX0lQTFVTMgkJQklUKDMpCi0jZGVm aW5lIFJHX0RTSV9MTlR4X0xQVFhfSU1JTlVTCQlCSVQoNCkKLSNkZWZpbmUgUkdfRFNJX0xOVHhf TFBDRF9JUExVUwkJQklUKDUpCi0jZGVmaW5lIFJHX0RTSV9MTlR4X0xQQ0RfSU1JTlVTCQlCSVQo NikKLSNkZWZpbmUgUkdfRFNJX0xOVHhfUlRfQ09ERQkJKDB4ZiA8PCA4KQotCi0jZGVmaW5lIE1J UElUWF9EU0lfVE9QX0NPTgkweDQwCi0jZGVmaW5lIFJHX0RTSV9MTlRfSU5UUl9FTgkJQklUKDAp Ci0jZGVmaW5lIFJHX0RTSV9MTlRfSFNfQklBU19FTgkJQklUKDEpCi0jZGVmaW5lIFJHX0RTSV9M TlRfSU1QX0NBTF9FTgkJQklUKDIpCi0jZGVmaW5lIFJHX0RTSV9MTlRfVEVTVE1PREVfRU4JCUJJ VCgzKQotI2RlZmluZSBSR19EU0lfTE5UX0lNUF9DQUxfQ09ERQkJKDB4ZiA8PCA0KQotI2RlZmlu ZSBSR19EU0lfTE5UX0FJT19TRUwJCSg3IDw8IDgpCi0jZGVmaW5lIFJHX0RTSV9QQURfVElFX0xP V19FTgkJQklUKDExKQotI2RlZmluZSBSR19EU0lfREVCVUdfSU5QVVRfRU4JCUJJVCgxMikKLSNk ZWZpbmUgUkdfRFNJX1BSRVNFUlZFCQkJKDcgPDwgMTMpCi0KLSNkZWZpbmUgTUlQSVRYX0RTSV9C R19DT04JMHg0NAotI2RlZmluZSBSR19EU0lfQkdfQ09SRV9FTgkJQklUKDApCi0jZGVmaW5lIFJH X0RTSV9CR19DS0VOCQkJQklUKDEpCi0jZGVmaW5lIFJHX0RTSV9CR19ESVYJCQkoMHgzIDw8IDIp Ci0jZGVmaW5lIFJHX0RTSV9CR19GQVNUX0NIQVJHRQkJQklUKDQpCi0jZGVmaW5lIFJHX0RTSV9W T1VUX01TSwkJCSgweDNmZmZmIDw8IDUpCi0jZGVmaW5lIFJHX0RTSV9WMTJfU0VMCQkJKDcgPDwg NSkKLSNkZWZpbmUgUkdfRFNJX1YxMF9TRUwJCQkoNyA8PCA4KQotI2RlZmluZSBSR19EU0lfVjA3 Ml9TRUwJCQkoNyA8PCAxMSkKLSNkZWZpbmUgUkdfRFNJX1YwNF9TRUwJCQkoNyA8PCAxNCkKLSNk ZWZpbmUgUkdfRFNJX1YwMzJfU0VMCQkJKDcgPDwgMTcpCi0jZGVmaW5lIFJHX0RTSV9WMDJfU0VM CQkJKDcgPDwgMjApCi0jZGVmaW5lIFJHX0RTSV9CR19SMV9UUklNCQkoMHhmIDw8IDI0KQotI2Rl ZmluZSBSR19EU0lfQkdfUjJfVFJJTQkJKDB4ZiA8PCAyOCkKLQotI2RlZmluZSBNSVBJVFhfRFNJ X1BMTF9DT04wCTB4NTAKLSNkZWZpbmUgUkdfRFNJX01QUExMX1BMTF9FTgkJQklUKDApCi0jZGVm aW5lIFJHX0RTSV9NUFBMTF9ESVZfTVNLCQkoMHgxZmYgPDwgMSkKLSNkZWZpbmUgUkdfRFNJX01Q UExMX1BSRURJVgkJKDMgPDwgMSkKLSNkZWZpbmUgUkdfRFNJX01QUExMX1RYRElWMAkJKDMgPDwg MykKLSNkZWZpbmUgUkdfRFNJX01QUExMX1RYRElWMQkJKDMgPDwgNSkKLSNkZWZpbmUgUkdfRFNJ X01QUExMX1BPU0RJVgkJKDcgPDwgNykKLSNkZWZpbmUgUkdfRFNJX01QUExMX01PTlZDX0VOCQlC SVQoMTApCi0jZGVmaW5lIFJHX0RTSV9NUFBMTF9NT05SRUZfRU4JCUJJVCgxMSkKLSNkZWZpbmUg UkdfRFNJX01QUExMX1ZPRF9FTgkJQklUKDEyKQotCi0jZGVmaW5lIE1JUElUWF9EU0lfUExMX0NP TjEJMHg1NAotI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX0ZSQV9FTgkJQklUKDApCi0jZGVmaW5l IFJHX0RTSV9NUFBMTF9TRE1fU1NDX1BIX0lOSVQJQklUKDEpCi0jZGVmaW5lIFJHX0RTSV9NUFBM TF9TRE1fU1NDX0VOCQlCSVQoMikKLSNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9TU0NfUFJECSgw eGZmZmYgPDwgMTYpCi0KLSNkZWZpbmUgTUlQSVRYX0RTSV9QTExfQ09OMgkweDU4Ci0KLSNkZWZp bmUgTUlQSVRYX0RTSV9QTExfVE9QCTB4NjQKLSNkZWZpbmUgUkdfRFNJX01QUExMX1BSRVNFUlZF CQkoMHhmZiA8PCA4KQotCi0jZGVmaW5lIE1JUElUWF9EU0lfUExMX1BXUgkweDY4Ci0jZGVmaW5l IFJHX0RTSV9NUFBMTF9TRE1fUFdSX09OCQlCSVQoMCkKLSNkZWZpbmUgUkdfRFNJX01QUExMX1NE TV9JU09fRU4JCUJJVCgxKQotI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1BXUl9BQ0sJQklUKDgp Ci0KLSNkZWZpbmUgTUlQSVRYX0RTSV9TV19DVFJMCTB4ODAKLSNkZWZpbmUgU1dfQ1RSTF9FTgkJ CUJJVCgwKQotCi0jZGVmaW5lIE1JUElUWF9EU0lfU1dfQ1RSTF9DT04wCTB4ODQKLSNkZWZpbmUg U1dfTE5UQ19MUFRYX1BSRV9PRQkJQklUKDApCi0jZGVmaW5lIFNXX0xOVENfTFBUWF9PRQkJCUJJ VCgxKQotI2RlZmluZSBTV19MTlRDX0xQVFhfUAkJCUJJVCgyKQotI2RlZmluZSBTV19MTlRDX0xQ VFhfTgkJCUJJVCgzKQotI2RlZmluZSBTV19MTlRDX0hTVFhfUFJFX09FCQlCSVQoNCkKLSNkZWZp bmUgU1dfTE5UQ19IU1RYX09FCQkJQklUKDUpCi0jZGVmaW5lIFNXX0xOVENfSFNUWF9aRVJPQ0xL CQlCSVQoNikKLSNkZWZpbmUgU1dfTE5UMF9MUFRYX1BSRV9PRQkJQklUKDcpCi0jZGVmaW5lIFNX X0xOVDBfTFBUWF9PRQkJCUJJVCg4KQotI2RlZmluZSBTV19MTlQwX0xQVFhfUAkJCUJJVCg5KQot I2RlZmluZSBTV19MTlQwX0xQVFhfTgkJCUJJVCgxMCkKLSNkZWZpbmUgU1dfTE5UMF9IU1RYX1BS RV9PRQkJQklUKDExKQotI2RlZmluZSBTV19MTlQwX0hTVFhfT0UJCQlCSVQoMTIpCi0jZGVmaW5l IFNXX0xOVDBfTFBSWF9FTgkJCUJJVCgxMykKLSNkZWZpbmUgU1dfTE5UMV9MUFRYX1BSRV9PRQkJ QklUKDE0KQotI2RlZmluZSBTV19MTlQxX0xQVFhfT0UJCQlCSVQoMTUpCi0jZGVmaW5lIFNXX0xO VDFfTFBUWF9QCQkJQklUKDE2KQotI2RlZmluZSBTV19MTlQxX0xQVFhfTgkJCUJJVCgxNykKLSNk ZWZpbmUgU1dfTE5UMV9IU1RYX1BSRV9PRQkJQklUKDE4KQotI2RlZmluZSBTV19MTlQxX0hTVFhf T0UJCQlCSVQoMTkpCi0jZGVmaW5lIFNXX0xOVDJfTFBUWF9QUkVfT0UJCUJJVCgyMCkKLSNkZWZp bmUgU1dfTE5UMl9MUFRYX09FCQkJQklUKDIxKQotI2RlZmluZSBTV19MTlQyX0xQVFhfUAkJCUJJ VCgyMikKLSNkZWZpbmUgU1dfTE5UMl9MUFRYX04JCQlCSVQoMjMpCi0jZGVmaW5lIFNXX0xOVDJf SFNUWF9QUkVfT0UJCUJJVCgyNCkKLSNkZWZpbmUgU1dfTE5UMl9IU1RYX09FCQkJQklUKDI1KQot Ci1zdHJ1Y3QgbXRrX21pcGl0eF9kYXRhIHsKLQljb25zdCB1MzIgbXBwbGxfcHJlc2VydmU7Ci19 OwotCi1zdHJ1Y3QgbXRrX21pcGlfdHggewotCXN0cnVjdCBkZXZpY2UgKmRldjsKLQl2b2lkIF9f aW9tZW0gKnJlZ3M7Ci0JdTMyIGRhdGFfcmF0ZTsKLQljb25zdCBzdHJ1Y3QgbXRrX21pcGl0eF9k YXRhICpkcml2ZXJfZGF0YTsKLQlzdHJ1Y3QgY2xrX2h3IHBsbF9odzsKLQlzdHJ1Y3QgY2xrICpw bGw7Ci19OworI2luY2x1ZGUgIm10a19taXBpX3R4LmgiCiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0 IG10a19taXBpX3R4ICptdGtfbWlwaV90eF9mcm9tX2Nsa19odyhzdHJ1Y3QgY2xrX2h3ICpodykK K2lubGluZSBzdHJ1Y3QgbXRrX21pcGlfdHggKm10a19taXBpX3R4X2Zyb21fY2xrX2h3KHN0cnVj dCBjbGtfaHcgKmh3KQogewogCXJldHVybiBjb250YWluZXJfb2YoaHcsIHN0cnVjdCBtdGtfbWlw aV90eCwgcGxsX2h3KTsKIH0KIAotc3RhdGljIHZvaWQgbXRrX21pcGlfdHhfY2xlYXJfYml0cyhz dHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHgsIHUzMiBvZmZzZXQsCi0JCQkJICAgdTMyIGJpdHMp Cit2b2lkIG10a19taXBpX3R4X2NsZWFyX2JpdHMoc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4 LCB1MzIgb2Zmc2V0LAorCQkJICAgIHUzMiBiaXRzKQogewogCXUzMiB0ZW1wID0gcmVhZGwobWlw aV90eC0+cmVncyArIG9mZnNldCk7CiAKIAl3cml0ZWwodGVtcCAmIH5iaXRzLCBtaXBpX3R4LT5y ZWdzICsgb2Zmc2V0KTsKIH0KIAotc3RhdGljIHZvaWQgbXRrX21pcGlfdHhfc2V0X2JpdHMoc3Ry dWN0IG10a19taXBpX3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LAotCQkJCSB1MzIgYml0cykKK3Zv aWQgbXRrX21pcGlfdHhfc2V0X2JpdHMoc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4LCB1MzIg b2Zmc2V0LAorCQkJICB1MzIgYml0cykKIHsKIAl1MzIgdGVtcCA9IHJlYWRsKG1pcGlfdHgtPnJl Z3MgKyBvZmZzZXQpOwogCiAJd3JpdGVsKHRlbXAgfCBiaXRzLCBtaXBpX3R4LT5yZWdzICsgb2Zm c2V0KTsKIH0KIAotc3RhdGljIHZvaWQgbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMoc3RydWN0IG10 a19taXBpX3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LAotCQkJCSAgICB1MzIgbWFzaywgdTMyIGRh dGEpCit2b2lkIG10a19taXBpX3R4X3VwZGF0ZV9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlw aV90eCwgdTMyIG9mZnNldCwKKwkJCSAgICAgdTMyIG1hc2ssIHUzMiBkYXRhKQogewogCXUzMiB0 ZW1wID0gcmVhZGwobWlwaV90eC0+cmVncyArIG9mZnNldCk7CiAKIAl3cml0ZWwoKHRlbXAgJiB+ bWFzaykgfCAoZGF0YSAmIG1hc2spLCBtaXBpX3R4LT5yZWdzICsgb2Zmc2V0KTsKIH0KIAotc3Rh dGljIGludCBtdGtfbWlwaV90eF9wbGxfcHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKLXsKLQlz dHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBtdGtfbWlwaV90eF9mcm9tX2Nsa19odyhodyk7 Ci0JdTggdHhkaXYsIHR4ZGl2MCwgdHhkaXYxOwotCXU2NCBwY3c7Ci0KLQlkZXZfZGJnKG1pcGlf dHgtPmRldiwgInByZXBhcmU6ICV1IEh6XG4iLCBtaXBpX3R4LT5kYXRhX3JhdGUpOwotCi0JaWYg KG1pcGlfdHgtPmRhdGFfcmF0ZSA+PSA1MDAwMDAwMDApIHsKLQkJdHhkaXYgPSAxOwotCQl0eGRp djAgPSAwOwotCQl0eGRpdjEgPSAwOwotCX0gZWxzZSBpZiAobWlwaV90eC0+ZGF0YV9yYXRlID49 IDI1MDAwMDAwMCkgewotCQl0eGRpdiA9IDI7Ci0JCXR4ZGl2MCA9IDE7Ci0JCXR4ZGl2MSA9IDA7 Ci0JfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gMTI1MDAwMDAwKSB7Ci0JCXR4ZGl2 ID0gNDsKLQkJdHhkaXYwID0gMjsKLQkJdHhkaXYxID0gMDsKLQl9IGVsc2UgaWYgKG1pcGlfdHgt PmRhdGFfcmF0ZSA+IDYyMDAwMDAwKSB7Ci0JCXR4ZGl2ID0gODsKLQkJdHhkaXYwID0gMjsKLQkJ dHhkaXYxID0gMTsKLQl9IGVsc2UgaWYgKG1pcGlfdHgtPmRhdGFfcmF0ZSA+PSA1MDAwMDAwMCkg ewotCQl0eGRpdiA9IDE2OwotCQl0eGRpdjAgPSAyOwotCQl0eGRpdjEgPSAyOwotCX0gZWxzZSB7 Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlf dHgsIE1JUElUWF9EU0lfQkdfQ09OLAotCQkJCVJHX0RTSV9WT1VUX01TSyB8Ci0JCQkJUkdfRFNJ X0JHX0NLRU4gfCBSR19EU0lfQkdfQ09SRV9FTiwKLQkJCQkoNCA8PCAyMCkgfCAoNCA8PCAxNykg fCAoNCA8PCAxNCkgfAotCQkJCSg0IDw8IDExKSB8ICg0IDw8IDgpIHwgKDQgPDwgNSkgfAotCQkJ CVJHX0RTSV9CR19DS0VOIHwgUkdfRFNJX0JHX0NPUkVfRU4pOwotCi0JdXNsZWVwX3JhbmdlKDMw LCAxMDApOwotCi0JbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9U T1BfQ09OLAotCQkJCVJHX0RTSV9MTlRfSU1QX0NBTF9DT0RFIHwgUkdfRFNJX0xOVF9IU19CSUFT X0VOLAotCQkJCSg4IDw8IDQpIHwgUkdfRFNJX0xOVF9IU19CSUFTX0VOKTsKLQotCW10a19taXBp X3R4X3NldF9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfQ09OLAotCQkJICAgICBSR19EU0lfQ0tH X0xET09VVF9FTiB8IFJHX0RTSV9MRE9DT1JFX0VOKTsKLQotCW10a19taXBpX3R4X3VwZGF0ZV9i aXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX1BXUiwKLQkJCQlSR19EU0lfTVBQTExfU0RNX1BX Ul9PTiB8Ci0JCQkJUkdfRFNJX01QUExMX1NETV9JU09fRU4sCi0JCQkJUkdfRFNJX01QUExMX1NE TV9QV1JfT04pOwotCi0JbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJ X1BMTF9DT04wLAotCQkJICAgICAgIFJHX0RTSV9NUFBMTF9QTExfRU4pOwotCi0JbXRrX21pcGlf dHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKLQkJCQlSR19EU0lf TVBQTExfVFhESVYwIHwgUkdfRFNJX01QUExMX1RYRElWMSB8Ci0JCQkJUkdfRFNJX01QUExMX1BS RURJViwKLQkJCQkodHhkaXYwIDw8IDMpIHwgKHR4ZGl2MSA8PCA1KSk7Ci0KLQkvKgotCSAqIFBM TCBQQ1cgY29uZmlnCi0JICogUENXIGJpdCAyNH4zMCA9IGludGVnZXIgcGFydCBvZiBwY3cKLQkg KiBQQ1cgYml0IDB+MjMgPSBmcmFjdGlvbmFsIHBhcnQgb2YgcGN3Ci0JICogcGN3ID0gZGF0YV9S YXRlKjQqdHhkaXYvKFJlZl9jbGsqMik7Ci0JICogUG9zdCBESVYgPTQsIHNvIG5lZWQgZGF0YV9S YXRlKjQKLQkgKiBSZWZfY2xrIGlzIDI2TUh6Ci0JICovCi0JcGN3ID0gZGl2X3U2NCgoKHU2NClt aXBpX3R4LT5kYXRhX3JhdGUgKiAyICogdHhkaXYpIDw8IDI0LAotCQkgICAgICAyNjAwMDAwMCk7 Ci0Jd3JpdGVsKHBjdywgbWlwaV90eC0+cmVncyArIE1JUElUWF9EU0lfUExMX0NPTjIpOwotCi0J bXRrX21pcGlfdHhfc2V0X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMSwKLQkJCSAg ICAgUkdfRFNJX01QUExMX1NETV9GUkFfRU4pOwotCi0JbXRrX21pcGlfdHhfc2V0X2JpdHMobWlw aV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwgUkdfRFNJX01QUExMX1BMTF9FTik7Ci0KLQl1c2xl ZXBfcmFuZ2UoMjAsIDEwMCk7Ci0KLQltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1J UElUWF9EU0lfUExMX0NPTjEsCi0JCQkgICAgICAgUkdfRFNJX01QUExMX1NETV9TU0NfRU4pOwot Ci0JbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfVE9QLAot CQkJCVJHX0RTSV9NUFBMTF9QUkVTRVJWRSwKLQkJCQltaXBpX3R4LT5kcml2ZXJfZGF0YS0+bXBw bGxfcHJlc2VydmUpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIG10a19taXBpX3R4 X3BsbF91bnByZXBhcmUoc3RydWN0IGNsa19odyAqaHcpCi17Ci0Jc3RydWN0IG10a19taXBpX3R4 ICptaXBpX3R4ID0gbXRrX21pcGlfdHhfZnJvbV9jbGtfaHcoaHcpOwotCi0JZGV2X2RiZyhtaXBp X3R4LT5kZXYsICJ1bnByZXBhcmVcbiIpOwotCi0JbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBp X3R4LCBNSVBJVFhfRFNJX1BMTF9DT04wLAotCQkJICAgICAgIFJHX0RTSV9NUFBMTF9QTExfRU4p OwotCi0JbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfVE9Q LAotCQkJCVJHX0RTSV9NUFBMTF9QUkVTRVJWRSwgMCk7Ci0KLQltdGtfbWlwaV90eF91cGRhdGVf Yml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9QV1IsCi0JCQkJUkdfRFNJX01QUExMX1NETV9J U09fRU4gfAotCQkJCVJHX0RTSV9NUFBMTF9TRE1fUFdSX09OLAotCQkJCVJHX0RTSV9NUFBMTF9T RE1fSVNPX0VOKTsKLQotCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RT SV9UT1BfQ09OLAotCQkJICAgICAgIFJHX0RTSV9MTlRfSFNfQklBU19FTik7Ci0KLQltdGtfbWlw aV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfQ09OLAotCQkJICAgICAgIFJHX0RT SV9DS0dfTERPT1VUX0VOIHwgUkdfRFNJX0xET0NPUkVfRU4pOwotCi0JbXRrX21pcGlfdHhfY2xl YXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX0JHX0NPTiwKLQkJCSAgICAgICBSR19EU0lfQkdf Q0tFTiB8IFJHX0RTSV9CR19DT1JFX0VOKTsKLQotCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlw aV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKLQkJCSAgICAgICBSR19EU0lfTVBQTExfRElWX01T Syk7Ci19Ci0KLXN0YXRpYyBsb25nIG10a19taXBpX3R4X3BsbF9yb3VuZF9yYXRlKHN0cnVjdCBj bGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCi0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcg KnByYXRlKQotewotCXJldHVybiBjbGFtcF92YWwocmF0ZSwgNTAwMDAwMDAsIDEyNTAwMDAwMDAp OwotfQotCi1zdGF0aWMgaW50IG10a19taXBpX3R4X3BsbF9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3 ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAotCQkJCSAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9y YXRlKQoraW50IG10a19taXBpX3R4X3BsbF9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5z aWduZWQgbG9uZyByYXRlLAorCQkJICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQogewog CXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IG10a19taXBpX3R4X2Zyb21fY2xrX2h3KGh3 KTsKIApAQCAtMzA3LDM3ICs1NCwxNCBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3BsbF9zZXRf cmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAogCXJldHVybiAwOwog fQogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBtdGtfbWlwaV90eF9wbGxfcmVjYWxjX3JhdGUoc3Ry dWN0IGNsa19odyAqaHcsCi0JCQkJCQkgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKK3Vuc2ln bmVkIGxvbmcgbXRrX21pcGlfdHhfcGxsX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAor CQkJCQkgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCiB7CiAJc3RydWN0IG10a19taXBpX3R4 ICptaXBpX3R4ID0gbXRrX21pcGlfdHhfZnJvbV9jbGtfaHcoaHcpOwogCiAJcmV0dXJuIG1pcGlf dHgtPmRhdGFfcmF0ZTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIG10a19taXBp X3R4X3BsbF9vcHMgPSB7Ci0JLnByZXBhcmUgPSBtdGtfbWlwaV90eF9wbGxfcHJlcGFyZSwKLQku dW5wcmVwYXJlID0gbXRrX21pcGlfdHhfcGxsX3VucHJlcGFyZSwKLQkucm91bmRfcmF0ZSA9IG10 a19taXBpX3R4X3BsbF9yb3VuZF9yYXRlLAotCS5zZXRfcmF0ZSA9IG10a19taXBpX3R4X3BsbF9z ZXRfcmF0ZSwKLQkucmVjYWxjX3JhdGUgPSBtdGtfbWlwaV90eF9wbGxfcmVjYWxjX3JhdGUsCi19 OwotCi1zdGF0aWMgaW50IG10a19taXBpX3R4X3Bvd2VyX29uX3NpZ25hbChzdHJ1Y3QgcGh5ICpw aHkpCi17Ci0Jc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gcGh5X2dldF9kcnZkYXRhKHBo eSk7Ci0JdTMyIHJlZzsKLQotCWZvciAocmVnID0gTUlQSVRYX0RTSV9DTE9DS19MQU5FOwotCSAg ICAgcmVnIDw9IE1JUElUWF9EU0lfREFUQV9MQU5FMzsgcmVnICs9IDQpCi0JCW10a19taXBpX3R4 X3NldF9iaXRzKG1pcGlfdHgsIHJlZywgUkdfRFNJX0xOVHhfTERPT1VUX0VOKTsKLQotCW10a19t aXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAotCQkJICAgICAg IFJHX0RTSV9QQURfVElFX0xPV19FTik7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBt dGtfbWlwaV90eF9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCiB7CiAJc3RydWN0IG10a19taXBp X3R4ICptaXBpX3R4ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CkBAIC0zNDksMzAgKzczLDE2IEBA IHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQogCQlyZXR1 cm4gcmV0OwogCiAJLyogRW5hYmxlIERTSSBMYW5lIExETyBvdXRwdXRzLCBkaXNhYmxlIHBhZCB0 aWUgbG93ICovCi0JbXRrX21pcGlfdHhfcG93ZXJfb25fc2lnbmFsKHBoeSk7Ci0KKwltaXBpX3R4 LT5kcml2ZXJfZGF0YS0+bWlwaV90eF9lbmFibGVfc2lnbmFsKHBoeSk7CiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyB2b2lkIG10a19taXBpX3R4X3Bvd2VyX29mZl9zaWduYWwoc3RydWN0IHBoeSAq cGh5KQotewotCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IHBoeV9nZXRfZHJ2ZGF0YShw aHkpOwotCXUzMiByZWc7Ci0KLQltdGtfbWlwaV90eF9zZXRfYml0cyhtaXBpX3R4LCBNSVBJVFhf RFNJX1RPUF9DT04sCi0JCQkgICAgIFJHX0RTSV9QQURfVElFX0xPV19FTik7Ci0KLQlmb3IgKHJl ZyA9IE1JUElUWF9EU0lfQ0xPQ0tfTEFORTsKLQkgICAgIHJlZyA8PSBNSVBJVFhfRFNJX0RBVEFf TEFORTM7IHJlZyArPSA0KQotCQltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIHJlZywg UkdfRFNJX0xOVHhfTERPT1VUX0VOKTsKLX0KLQogc3RhdGljIGludCBtdGtfbWlwaV90eF9wb3dl cl9vZmYoc3RydWN0IHBoeSAqcGh5KQogewogCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9 IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwogCiAJLyogRW5hYmxlIHBhZCB0aWUgbG93LCBkaXNhYmxl IERTSSBMYW5lIExETyBvdXRwdXRzICovCi0JbXRrX21pcGlfdHhfcG93ZXJfb2ZmX3NpZ25hbChw aHkpOworCW1pcGlfdHgtPmRyaXZlcl9kYXRhLT5taXBpX3R4X2Rpc2FibGVfc2lnbmFsKHBoeSk7 CiAKIAkvKiBEaXNhYmxlIFBMTCBhbmQgcG93ZXIgZG93biBjb3JlICovCiAJY2xrX2Rpc2FibGVf dW5wcmVwYXJlKG1pcGlfdHgtPnBsbCk7CkBAIC0zOTEsMTAgKzEwMSw4IEBAIHN0YXRpYyBpbnQg bXRrX21pcGlfdHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OwogCXN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eDsK IAlzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsKLQlzdHJ1Y3QgY2xrICpyZWZfY2xrOwogCWNvbnN0IGNo YXIgKnJlZl9jbGtfbmFtZTsKIAlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBjbGtfaW5pdCA9IHsKLQkJ Lm9wcyA9ICZtdGtfbWlwaV90eF9wbGxfb3BzLAogCQkubnVtX3BhcmVudHMgPSAxLAogCQkucGFy ZW50X25hbWVzID0gKGNvbnN0IGNoYXIgKiBjb25zdCAqKSZyZWZfY2xrX25hbWUsCiAJCS5mbGFn cyA9IENMS19TRVRfUkFURV9HQVRFLApAQCAtNDA4LDYgKzExNiw3IEBAIHN0YXRpYyBpbnQgbXRr X21pcGlfdHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcmV0dXJuIC1F Tk9NRU07CiAKIAltaXBpX3R4LT5kcml2ZXJfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0 YShkZXYpOworCiAJbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAwKTsKIAltaXBpX3R4LT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgbWVt KTsKIAlpZiAoSVNfRVJSKG1pcGlfdHgtPnJlZ3MpKSB7CkBAIC00MTYsMTMgKzEyNSwxNCBAQCBz dGF0aWMgaW50IG10a19taXBpX3R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CiAJCXJldHVybiByZXQ7CiAJfQogCi0JcmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYsIE5VTEwp OwotCWlmIChJU19FUlIocmVmX2NsaykpIHsKLQkJcmV0ID0gUFRSX0VSUihyZWZfY2xrKTsKKwlt aXBpX3R4LT5yZWZfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgTlVMTCk7CisJaWYgKElTX0VSUiht aXBpX3R4LT5yZWZfY2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKG1pcGlfdHgtPnJlZl9jbGspOwog CQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgcmVmZXJlbmNlIGNsb2NrOiAlZFxuIiwgcmV0 KTsKIAkJcmV0dXJuIHJldDsKIAl9Ci0JcmVmX2Nsa19uYW1lID0gX19jbGtfZ2V0X25hbWUocmVm X2Nsayk7CisKKwlyZWZfY2xrX25hbWUgPSBfX2Nsa19nZXRfbmFtZShtaXBpX3R4LT5yZWZfY2xr KTsKIAogCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldi0+b2Zfbm9kZSwgImNsb2Nr LW91dHB1dC1uYW1lcyIsCiAJCQkJICAgICAgJmNsa19pbml0Lm5hbWUpOwpAQCAtNDMxLDYgKzE0 MSw4IEBAIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAkJcmV0dXJuIHJldDsKIAl9CiAKKwljbGtfaW5pdC5vcHMgPSBtaXBpX3R4LT5k cml2ZXJfZGF0YS0+bWlwaV90eF9jbGtfb3BzOworCiAJbWlwaV90eC0+cGxsX2h3LmluaXQgPSAm Y2xrX2luaXQ7CiAJbWlwaV90eC0+cGxsID0gZGV2bV9jbGtfcmVnaXN0ZXIoZGV2LCAmbWlwaV90 eC0+cGxsX2h3KTsKIAlpZiAoSVNfRVJSKG1pcGlfdHgtPnBsbCkpIHsKQEAgLTQ2NSwyMCArMTc3 LDEyIEBAIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21pcGl0 eF9kYXRhIG10MjcwMV9taXBpdHhfZGF0YSA9IHsKLQkubXBwbGxfcHJlc2VydmUgPSAoMyA8PCA4 KQotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfbWlwaXR4X2RhdGEgbXQ4MTczX21pcGl0 eF9kYXRhID0gewotCS5tcHBsbF9wcmVzZXJ2ZSA9ICgwIDw8IDgpCi19OwotCiBzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfbWlwaV90eF9tYXRjaFtdID0gewogCXsgLmNvbXBh dGlibGUgPSAibWVkaWF0ZWssbXQyNzAxLW1pcGktdHgiLAogCSAgLmRhdGEgPSAmbXQyNzAxX21p cGl0eF9kYXRhIH0sCiAJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtbWlwaS10eCIs CiAJICAuZGF0YSA9ICZtdDgxNzNfbWlwaXR4X2RhdGEgfSwKLQl7fSwKKwl7IH0sCiB9OwogCiBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19taXBpX3R4X2RyaXZlciA9IHsKQEAgLTQ4OSwzICsx OTMsNCBAQCBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19taXBpX3R4X2RyaXZlciA9IHsKIAkJ Lm9mX21hdGNoX3RhYmxlID0gbXRrX21pcGlfdHhfbWF0Y2gsCiAJfSwKIH07CisKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5oIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19taXBpX3R4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi42NjA3MjY5MjQ5OTIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX21pcGlfdHguaApAQCAtMCwwICsxLDQ5IEBACisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSBNZWRp YVRlayBJbmMuCisgKiBBdXRob3I6IEppdGFvIFNoaSA8aml0YW8uc2hpQG1lZGlhdGVrLmNvbT4K KyAqLworCisjaWZuZGVmIF9NVEtfTUlQSV9UWF9ICisjZGVmaW5lIF9NVEtfTUlQSV9UWF9ICisK KyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4K KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgor CitzdHJ1Y3QgbXRrX21pcGl0eF9kYXRhIHsKKwljb25zdCB1MzIgbXBwbGxfcHJlc2VydmU7CisJ Y29uc3Qgc3RydWN0IGNsa19vcHMgKm1pcGlfdHhfY2xrX29wczsKKwl2b2lkICgqbWlwaV90eF9l bmFibGVfc2lnbmFsKShzdHJ1Y3QgcGh5ICpwaHkpOworCXZvaWQgKCptaXBpX3R4X2Rpc2FibGVf c2lnbmFsKShzdHJ1Y3QgcGh5ICpwaHkpOworfTsKKworc3RydWN0IG10a19taXBpX3R4IHsKKwlz dHJ1Y3QgZGV2aWNlICpkZXY7CisJdm9pZCBfX2lvbWVtICpyZWdzOworCXUzMiBkYXRhX3JhdGU7 CisJc3RydWN0IGNsayAqcmVmX2NsazsKKwljb25zdCBzdHJ1Y3QgbXRrX21pcGl0eF9kYXRhICpk cml2ZXJfZGF0YTsKKwlzdHJ1Y3QgY2xrX2h3IHBsbF9odzsKKwlzdHJ1Y3QgY2xrICpwbGw7Cit9 OworCitzdHJ1Y3QgbXRrX21pcGlfdHggKm10a19taXBpX3R4X2Zyb21fY2xrX2h3KHN0cnVjdCBj bGtfaHcgKmh3KTsKK3ZvaWQgbXRrX21pcGlfdHhfY2xlYXJfYml0cyhzdHJ1Y3QgbXRrX21pcGlf dHggKm1pcGlfdHgsIHUzMiBvZmZzZXQsIHUzMiBiaXRzKTsKK3ZvaWQgbXRrX21pcGlfdHhfc2V0 X2JpdHMoc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LCB1MzIgYml0cyk7 Cit2b2lkIG10a19taXBpX3R4X3VwZGF0ZV9iaXRzKHN0cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90 eCwgdTMyIG9mZnNldCwgdTMyIG1hc2ssCisJCQkgICAgIHUzMiBkYXRhKTsKK2ludCBtdGtfbWlw aV90eF9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwK KwkJCSAgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSk7Cit1bnNpZ25lZCBsb25nIG10a19t aXBpX3R4X3BsbF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywKKwkJCQkJICB1bnNpZ25l ZCBsb25nIHBhcmVudF9yYXRlKTsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBtdGtfbWlwaXR4X2Rh dGEgbXQyNzAxX21pcGl0eF9kYXRhOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBtdGtfbWlwaXR4X2Rh dGEgbXQ4MTczX21pcGl0eF9kYXRhOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX21pcGlfdHguYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfbXQ4MTczX21pcGlfdHguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjk1ZWYwYzUyNTJiOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfbXQ4MTczX21pcGlfdHguYwpAQCAtMCwwICsxLDI4OSBAQAorLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkg TWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBqaXRhby5zaGkgPGppdGFvLnNoaUBtZWRpYXRlay5j b20+CisgKi8KKworI2luY2x1ZGUgIm10a19taXBpX3R4LmgiCisKKyNkZWZpbmUgTUlQSVRYX0RT SV9DT04JCTB4MDAKKyNkZWZpbmUgUkdfRFNJX0xET0NPUkVfRU4JCUJJVCgwKQorI2RlZmluZSBS R19EU0lfQ0tHX0xET09VVF9FTgkJQklUKDEpCisjZGVmaW5lIFJHX0RTSV9CQ0xLX1NFTAkJCSgz IDw8IDIpCisjZGVmaW5lIFJHX0RTSV9MRF9JRFhfU0VMCQkoNyA8PCA0KQorI2RlZmluZSBSR19E U0lfUEhZQ0xLX1NFTAkJKDIgPDwgOCkKKyNkZWZpbmUgUkdfRFNJX0RTSUNMS19GUkVRX1NFTAkJ QklUKDEwKQorI2RlZmluZSBSR19EU0lfTFBUWF9DTE1QX0VOCQlCSVQoMTEpCisKKyNkZWZpbmUg TUlQSVRYX0RTSV9DTE9DS19MQU5FCTB4MDQKKyNkZWZpbmUgTUlQSVRYX0RTSV9EQVRBX0xBTkUw CTB4MDgKKyNkZWZpbmUgTUlQSVRYX0RTSV9EQVRBX0xBTkUxCTB4MGMKKyNkZWZpbmUgTUlQSVRY X0RTSV9EQVRBX0xBTkUyCTB4MTAKKyNkZWZpbmUgTUlQSVRYX0RTSV9EQVRBX0xBTkUzCTB4MTQK KyNkZWZpbmUgUkdfRFNJX0xOVHhfTERPT1VUX0VOCQlCSVQoMCkKKyNkZWZpbmUgUkdfRFNJX0xO VHhfQ0tMQU5FX0VOCQlCSVQoMSkKKyNkZWZpbmUgUkdfRFNJX0xOVHhfTFBUWF9JUExVUzEJCUJJ VCgyKQorI2RlZmluZSBSR19EU0lfTE5UeF9MUFRYX0lQTFVTMgkJQklUKDMpCisjZGVmaW5lIFJH X0RTSV9MTlR4X0xQVFhfSU1JTlVTCQlCSVQoNCkKKyNkZWZpbmUgUkdfRFNJX0xOVHhfTFBDRF9J UExVUwkJQklUKDUpCisjZGVmaW5lIFJHX0RTSV9MTlR4X0xQQ0RfSU1JTlVTCQlCSVQoNikKKyNk ZWZpbmUgUkdfRFNJX0xOVHhfUlRfQ09ERQkJKDB4ZiA8PCA4KQorCisjZGVmaW5lIE1JUElUWF9E U0lfVE9QX0NPTgkweDQwCisjZGVmaW5lIFJHX0RTSV9MTlRfSU5UUl9FTgkJQklUKDApCisjZGVm aW5lIFJHX0RTSV9MTlRfSFNfQklBU19FTgkJQklUKDEpCisjZGVmaW5lIFJHX0RTSV9MTlRfSU1Q X0NBTF9FTgkJQklUKDIpCisjZGVmaW5lIFJHX0RTSV9MTlRfVEVTVE1PREVfRU4JCUJJVCgzKQor I2RlZmluZSBSR19EU0lfTE5UX0lNUF9DQUxfQ09ERQkJKDB4ZiA8PCA0KQorI2RlZmluZSBSR19E U0lfTE5UX0FJT19TRUwJCSg3IDw8IDgpCisjZGVmaW5lIFJHX0RTSV9QQURfVElFX0xPV19FTgkJ QklUKDExKQorI2RlZmluZSBSR19EU0lfREVCVUdfSU5QVVRfRU4JCUJJVCgxMikKKyNkZWZpbmUg UkdfRFNJX1BSRVNFUlZFCQkJKDcgPDwgMTMpCisKKyNkZWZpbmUgTUlQSVRYX0RTSV9CR19DT04J MHg0NAorI2RlZmluZSBSR19EU0lfQkdfQ09SRV9FTgkJQklUKDApCisjZGVmaW5lIFJHX0RTSV9C R19DS0VOCQkJQklUKDEpCisjZGVmaW5lIFJHX0RTSV9CR19ESVYJCQkoMHgzIDw8IDIpCisjZGVm aW5lIFJHX0RTSV9CR19GQVNUX0NIQVJHRQkJQklUKDQpCisjZGVmaW5lIFJHX0RTSV9WT1VUX01T SwkJCSgweDNmZmZmIDw8IDUpCisjZGVmaW5lIFJHX0RTSV9WMTJfU0VMCQkJKDcgPDwgNSkKKyNk ZWZpbmUgUkdfRFNJX1YxMF9TRUwJCQkoNyA8PCA4KQorI2RlZmluZSBSR19EU0lfVjA3Ml9TRUwJ CQkoNyA8PCAxMSkKKyNkZWZpbmUgUkdfRFNJX1YwNF9TRUwJCQkoNyA8PCAxNCkKKyNkZWZpbmUg UkdfRFNJX1YwMzJfU0VMCQkJKDcgPDwgMTcpCisjZGVmaW5lIFJHX0RTSV9WMDJfU0VMCQkJKDcg PDwgMjApCisjZGVmaW5lIFJHX0RTSV9CR19SMV9UUklNCQkoMHhmIDw8IDI0KQorI2RlZmluZSBS R19EU0lfQkdfUjJfVFJJTQkJKDB4ZiA8PCAyOCkKKworI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9D T04wCTB4NTAKKyNkZWZpbmUgUkdfRFNJX01QUExMX1BMTF9FTgkJQklUKDApCisjZGVmaW5lIFJH X0RTSV9NUFBMTF9ESVZfTVNLCQkoMHgxZmYgPDwgMSkKKyNkZWZpbmUgUkdfRFNJX01QUExMX1BS RURJVgkJKDMgPDwgMSkKKyNkZWZpbmUgUkdfRFNJX01QUExMX1RYRElWMAkJKDMgPDwgMykKKyNk ZWZpbmUgUkdfRFNJX01QUExMX1RYRElWMQkJKDMgPDwgNSkKKyNkZWZpbmUgUkdfRFNJX01QUExM X1BPU0RJVgkJKDcgPDwgNykKKyNkZWZpbmUgUkdfRFNJX01QUExMX01PTlZDX0VOCQlCSVQoMTAp CisjZGVmaW5lIFJHX0RTSV9NUFBMTF9NT05SRUZfRU4JCUJJVCgxMSkKKyNkZWZpbmUgUkdfRFNJ X01QUExMX1ZPRF9FTgkJQklUKDEyKQorCisjZGVmaW5lIE1JUElUWF9EU0lfUExMX0NPTjEJMHg1 NAorI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX0ZSQV9FTgkJQklUKDApCisjZGVmaW5lIFJHX0RT SV9NUFBMTF9TRE1fU1NDX1BIX0lOSVQJQklUKDEpCisjZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1f U1NDX0VOCQlCSVQoMikKKyNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9TU0NfUFJECSgweGZmZmYg PDwgMTYpCisKKyNkZWZpbmUgTUlQSVRYX0RTSV9QTExfQ09OMgkweDU4CisKKyNkZWZpbmUgTUlQ SVRYX0RTSV9QTExfVE9QCTB4NjQKKyNkZWZpbmUgUkdfRFNJX01QUExMX1BSRVNFUlZFCQkoMHhm ZiA8PCA4KQorCisjZGVmaW5lIE1JUElUWF9EU0lfUExMX1BXUgkweDY4CisjZGVmaW5lIFJHX0RT SV9NUFBMTF9TRE1fUFdSX09OCQlCSVQoMCkKKyNkZWZpbmUgUkdfRFNJX01QUExMX1NETV9JU09f RU4JCUJJVCgxKQorI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1BXUl9BQ0sJQklUKDgpCisKKyNk ZWZpbmUgTUlQSVRYX0RTSV9TV19DVFJMCTB4ODAKKyNkZWZpbmUgU1dfQ1RSTF9FTgkJCUJJVCgw KQorCisjZGVmaW5lIE1JUElUWF9EU0lfU1dfQ1RSTF9DT04wCTB4ODQKKyNkZWZpbmUgU1dfTE5U Q19MUFRYX1BSRV9PRQkJQklUKDApCisjZGVmaW5lIFNXX0xOVENfTFBUWF9PRQkJCUJJVCgxKQor I2RlZmluZSBTV19MTlRDX0xQVFhfUAkJCUJJVCgyKQorI2RlZmluZSBTV19MTlRDX0xQVFhfTgkJ CUJJVCgzKQorI2RlZmluZSBTV19MTlRDX0hTVFhfUFJFX09FCQlCSVQoNCkKKyNkZWZpbmUgU1df TE5UQ19IU1RYX09FCQkJQklUKDUpCisjZGVmaW5lIFNXX0xOVENfSFNUWF9aRVJPQ0xLCQlCSVQo NikKKyNkZWZpbmUgU1dfTE5UMF9MUFRYX1BSRV9PRQkJQklUKDcpCisjZGVmaW5lIFNXX0xOVDBf TFBUWF9PRQkJCUJJVCg4KQorI2RlZmluZSBTV19MTlQwX0xQVFhfUAkJCUJJVCg5KQorI2RlZmlu ZSBTV19MTlQwX0xQVFhfTgkJCUJJVCgxMCkKKyNkZWZpbmUgU1dfTE5UMF9IU1RYX1BSRV9PRQkJ QklUKDExKQorI2RlZmluZSBTV19MTlQwX0hTVFhfT0UJCQlCSVQoMTIpCisjZGVmaW5lIFNXX0xO VDBfTFBSWF9FTgkJCUJJVCgxMykKKyNkZWZpbmUgU1dfTE5UMV9MUFRYX1BSRV9PRQkJQklUKDE0 KQorI2RlZmluZSBTV19MTlQxX0xQVFhfT0UJCQlCSVQoMTUpCisjZGVmaW5lIFNXX0xOVDFfTFBU WF9QCQkJQklUKDE2KQorI2RlZmluZSBTV19MTlQxX0xQVFhfTgkJCUJJVCgxNykKKyNkZWZpbmUg U1dfTE5UMV9IU1RYX1BSRV9PRQkJQklUKDE4KQorI2RlZmluZSBTV19MTlQxX0hTVFhfT0UJCQlC SVQoMTkpCisjZGVmaW5lIFNXX0xOVDJfTFBUWF9QUkVfT0UJCUJJVCgyMCkKKyNkZWZpbmUgU1df TE5UMl9MUFRYX09FCQkJQklUKDIxKQorI2RlZmluZSBTV19MTlQyX0xQVFhfUAkJCUJJVCgyMikK KyNkZWZpbmUgU1dfTE5UMl9MUFRYX04JCQlCSVQoMjMpCisjZGVmaW5lIFNXX0xOVDJfSFNUWF9Q UkVfT0UJCUJJVCgyNCkKKyNkZWZpbmUgU1dfTE5UMl9IU1RYX09FCQkJQklUKDI1KQorCitzdGF0 aWMgaW50IG10a19taXBpX3R4X3BsbF9wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQoreworCXN0 cnVjdCBtdGtfbWlwaV90eCAqbWlwaV90eCA9IG10a19taXBpX3R4X2Zyb21fY2xrX2h3KGh3KTsK Kwl1OCB0eGRpdiwgdHhkaXYwLCB0eGRpdjE7CisJdTY0IHBjdzsKKworCWRldl9kYmcobWlwaV90 eC0+ZGV2LCAicHJlcGFyZTogJXUgSHpcbiIsIG1pcGlfdHgtPmRhdGFfcmF0ZSk7CisKKwlpZiAo bWlwaV90eC0+ZGF0YV9yYXRlID49IDUwMDAwMDAwMCkgeworCQl0eGRpdiA9IDE7CisJCXR4ZGl2 MCA9IDA7CisJCXR4ZGl2MSA9IDA7CisJfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0g MjUwMDAwMDAwKSB7CisJCXR4ZGl2ID0gMjsKKwkJdHhkaXYwID0gMTsKKwkJdHhkaXYxID0gMDsK Kwl9IGVsc2UgaWYgKG1pcGlfdHgtPmRhdGFfcmF0ZSA+PSAxMjUwMDAwMDApIHsKKwkJdHhkaXYg PSA0OworCQl0eGRpdjAgPSAyOworCQl0eGRpdjEgPSAwOworCX0gZWxzZSBpZiAobWlwaV90eC0+ ZGF0YV9yYXRlID4gNjIwMDAwMDApIHsKKwkJdHhkaXYgPSA4OworCQl0eGRpdjAgPSAyOworCQl0 eGRpdjEgPSAxOworCX0gZWxzZSBpZiAobWlwaV90eC0+ZGF0YV9yYXRlID49IDUwMDAwMDAwKSB7 CisJCXR4ZGl2ID0gMTY7CisJCXR4ZGl2MCA9IDI7CisJCXR4ZGl2MSA9IDI7CisJfSBlbHNlIHsK KwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90 eCwgTUlQSVRYX0RTSV9CR19DT04sCisJCQkJUkdfRFNJX1ZPVVRfTVNLIHwKKwkJCQlSR19EU0lf QkdfQ0tFTiB8IFJHX0RTSV9CR19DT1JFX0VOLAorCQkJCSg0IDw8IDIwKSB8ICg0IDw8IDE3KSB8 ICg0IDw8IDE0KSB8CisJCQkJKDQgPDwgMTEpIHwgKDQgPDwgOCkgfCAoNCA8PCA1KSB8CisJCQkJ UkdfRFNJX0JHX0NLRU4gfCBSR19EU0lfQkdfQ09SRV9FTik7CisKKwl1c2xlZXBfcmFuZ2UoMzAs IDEwMCk7CisKKwltdGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1RP UF9DT04sCisJCQkJUkdfRFNJX0xOVF9JTVBfQ0FMX0NPREUgfCBSR19EU0lfTE5UX0hTX0JJQVNf RU4sCisJCQkJKDggPDwgNCkgfCBSR19EU0lfTE5UX0hTX0JJQVNfRU4pOworCisJbXRrX21pcGlf dHhfc2V0X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9DT04sCisJCQkgICAgIFJHX0RTSV9DS0df TERPT1VUX0VOIHwgUkdfRFNJX0xET0NPUkVfRU4pOworCisJbXRrX21pcGlfdHhfdXBkYXRlX2Jp dHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfUFdSLAorCQkJCVJHX0RTSV9NUFBMTF9TRE1fUFdS X09OIHwKKwkJCQlSR19EU0lfTVBQTExfU0RNX0lTT19FTiwKKwkJCQlSR19EU0lfTVBQTExfU0RN X1BXUl9PTik7CisKKwltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lf UExMX0NPTjAsCisJCQkgICAgICAgUkdfRFNJX01QUExMX1BMTF9FTik7CisKKwltdGtfbWlwaV90 eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9DT04wLAorCQkJCVJHX0RTSV9N UFBMTF9UWERJVjAgfCBSR19EU0lfTVBQTExfVFhESVYxIHwKKwkJCQlSR19EU0lfTVBQTExfUFJF RElWLAorCQkJCSh0eGRpdjAgPDwgMykgfCAodHhkaXYxIDw8IDUpKTsKKworCS8qCisJICogUExM IFBDVyBjb25maWcKKwkgKiBQQ1cgYml0IDI0fjMwID0gaW50ZWdlciBwYXJ0IG9mIHBjdworCSAq IFBDVyBiaXQgMH4yMyA9IGZyYWN0aW9uYWwgcGFydCBvZiBwY3cKKwkgKiBwY3cgPSBkYXRhX1Jh dGUqNCp0eGRpdi8oUmVmX2NsayoyKTsKKwkgKiBQb3N0IERJViA9NCwgc28gbmVlZCBkYXRhX1Jh dGUqNAorCSAqIFJlZl9jbGsgaXMgMjZNSHoKKwkgKi8KKwlwY3cgPSBkaXZfdTY0KCgodTY0KW1p cGlfdHgtPmRhdGFfcmF0ZSAqIDIgKiB0eGRpdikgPDwgMjQsCisJCSAgICAgIDI2MDAwMDAwKTsK Kwl3cml0ZWwocGN3LCBtaXBpX3R4LT5yZWdzICsgTUlQSVRYX0RTSV9QTExfQ09OMik7CisKKwlt dGtfbWlwaV90eF9zZXRfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9DT04xLAorCQkJICAg ICBSR19EU0lfTVBQTExfU0RNX0ZSQV9FTik7CisKKwltdGtfbWlwaV90eF9zZXRfYml0cyhtaXBp X3R4LCBNSVBJVFhfRFNJX1BMTF9DT04wLCBSR19EU0lfTVBQTExfUExMX0VOKTsKKworCXVzbGVl cF9yYW5nZSgyMCwgMTAwKTsKKworCW10a19taXBpX3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQ SVRYX0RTSV9QTExfQ09OMSwKKwkJCSAgICAgICBSR19EU0lfTVBQTExfU0RNX1NTQ19FTik7CisK KwltdGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9UT1AsCisJ CQkJUkdfRFNJX01QUExMX1BSRVNFUlZFLAorCQkJCW1pcGlfdHgtPmRyaXZlcl9kYXRhLT5tcHBs bF9wcmVzZXJ2ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbXRrX21pcGlfdHhf cGxsX3VucHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKK3sKKwlzdHJ1Y3QgbXRrX21pcGlfdHgg Km1pcGlfdHggPSBtdGtfbWlwaV90eF9mcm9tX2Nsa19odyhodyk7CisKKwlkZXZfZGJnKG1pcGlf dHgtPmRldiwgInVucHJlcGFyZVxuIik7CisKKwltdGtfbWlwaV90eF9jbGVhcl9iaXRzKG1pcGlf dHgsIE1JUElUWF9EU0lfUExMX0NPTjAsCisJCQkgICAgICAgUkdfRFNJX01QUExMX1BMTF9FTik7 CisKKwltdGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9UT1As CisJCQkJUkdfRFNJX01QUExMX1BSRVNFUlZFLCAwKTsKKworCW10a19taXBpX3R4X3VwZGF0ZV9i aXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX1BXUiwKKwkJCQlSR19EU0lfTVBQTExfU0RNX0lT T19FTiB8CisJCQkJUkdfRFNJX01QUExMX1NETV9QV1JfT04sCisJCQkJUkdfRFNJX01QUExMX1NE TV9JU09fRU4pOworCisJbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJ X1RPUF9DT04sCisJCQkgICAgICAgUkdfRFNJX0xOVF9IU19CSUFTX0VOKTsKKworCW10a19taXBp X3R4X2NsZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9DT04sCisJCQkgICAgICAgUkdfRFNJ X0NLR19MRE9PVVRfRU4gfCBSR19EU0lfTERPQ09SRV9FTik7CisKKwltdGtfbWlwaV90eF9jbGVh cl9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfQkdfQ09OLAorCQkJICAgICAgIFJHX0RTSV9CR19D S0VOIHwgUkdfRFNJX0JHX0NPUkVfRU4pOworCisJbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBp X3R4LCBNSVBJVFhfRFNJX1BMTF9DT04wLAorCQkJICAgICAgIFJHX0RTSV9NUFBMTF9ESVZfTVNL KTsKK30KKworc3RhdGljIGxvbmcgbXRrX21pcGlfdHhfcGxsX3JvdW5kX3JhdGUoc3RydWN0IGNs a19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyAq cHJhdGUpCit7CisJcmV0dXJuIGNsYW1wX3ZhbChyYXRlLCA1MDAwMDAwMCwgMTI1MDAwMDAwMCk7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBtdGtfbWlwaV90eF9wbGxfb3BzID0g eworCS5wcmVwYXJlID0gbXRrX21pcGlfdHhfcGxsX3ByZXBhcmUsCisJLnVucHJlcGFyZSA9IG10 a19taXBpX3R4X3BsbF91bnByZXBhcmUsCisJLnJvdW5kX3JhdGUgPSBtdGtfbWlwaV90eF9wbGxf cm91bmRfcmF0ZSwKKwkuc2V0X3JhdGUgPSBtdGtfbWlwaV90eF9wbGxfc2V0X3JhdGUsCisJLnJl Y2FsY19yYXRlID0gbXRrX21pcGlfdHhfcGxsX3JlY2FsY19yYXRlLAorfTsKKworc3RhdGljIHZv aWQgbXRrX21pcGlfdHhfcG93ZXJfb25fc2lnbmFsKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1 Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwl1MzIgcmVn OworCisJZm9yIChyZWcgPSBNSVBJVFhfRFNJX0NMT0NLX0xBTkU7CisJICAgICByZWcgPD0gTUlQ SVRYX0RTSV9EQVRBX0xBTkUzOyByZWcgKz0gNCkKKwkJbXRrX21pcGlfdHhfc2V0X2JpdHMobWlw aV90eCwgcmVnLCBSR19EU0lfTE5UeF9MRE9PVVRfRU4pOworCisJbXRrX21pcGlfdHhfY2xlYXJf Yml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1RPUF9DT04sCisJCQkgICAgICAgUkdfRFNJX1BBRF9U SUVfTE9XX0VOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX21pcGlfdHhfcG93ZXJfb2ZmX3NpZ25h bChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gcGh5 X2dldF9kcnZkYXRhKHBoeSk7CisJdTMyIHJlZzsKKworCW10a19taXBpX3R4X3NldF9iaXRzKG1p cGlfdHgsIE1JUElUWF9EU0lfVE9QX0NPTiwKKwkJCSAgICAgUkdfRFNJX1BBRF9USUVfTE9XX0VO KTsKKworCWZvciAocmVnID0gTUlQSVRYX0RTSV9DTE9DS19MQU5FOworCSAgICAgcmVnIDw9IE1J UElUWF9EU0lfREFUQV9MQU5FMzsgcmVnICs9IDQpCisJCW10a19taXBpX3R4X2NsZWFyX2JpdHMo bWlwaV90eCwgcmVnLCBSR19EU0lfTE5UeF9MRE9PVVRfRU4pOworfQorCitjb25zdCBzdHJ1Y3Qg bXRrX21pcGl0eF9kYXRhIG10MjcwMV9taXBpdHhfZGF0YSA9IHsKKwkubXBwbGxfcHJlc2VydmUg PSAoMyA8PCA4KSwKKwkubWlwaV90eF9jbGtfb3BzID0gJm10a19taXBpX3R4X3BsbF9vcHMsCisJ Lm1pcGlfdHhfZW5hYmxlX3NpZ25hbCA9IG10a19taXBpX3R4X3Bvd2VyX29uX3NpZ25hbCwKKwku bWlwaV90eF9kaXNhYmxlX3NpZ25hbCA9IG10a19taXBpX3R4X3Bvd2VyX29mZl9zaWduYWwsCit9 OworCitjb25zdCBzdHJ1Y3QgbXRrX21pcGl0eF9kYXRhIG10ODE3M19taXBpdHhfZGF0YSA9IHsK KwkubXBwbGxfcHJlc2VydmUgPSAoMCA8PCA4KSwKKwkubWlwaV90eF9jbGtfb3BzID0gJm10a19t aXBpX3R4X3BsbF9vcHMsCisJLm1pcGlfdHhfZW5hYmxlX3NpZ25hbCA9IG10a19taXBpX3R4X3Bv d2VyX29uX3NpZ25hbCwKKwkubWlwaV90eF9kaXNhYmxlX3NpZ25hbCA9IG10a19taXBpX3R4X3Bv d2VyX29mZl9zaWduYWwsCit9OworCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==