From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH v12 04/14] drm/mediatek: Add DPI sub driver Date: Tue, 1 Mar 2016 16:20:20 +0100 Message-ID: <1456845630-2786-5-git-send-email-p.zabel@pengutronix.de> References: <1456845630-2786-1-git-send-email-p.zabel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456845630-2786-1-git-send-email-p.zabel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Mark Rutland , Stephen Boyd , Michael Turquette , Jie Qiu , Cawa Cheng , YT Shen , Yingjoe Chen , devicetree@vger.kernel.org, Jitao Shi , kernel@pengutronix.de, Pawel Moll , Ian Campbell , Rob Herring , linux-mediatek@lists.infradead.org, Matthias Brugger , Paul Bolle , Emil Velikov , Tomasz Figa , Kumar Gala List-Id: linux-mediatek@lists.infradead.org RnJvbTogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CgpBZGQgRFBJIGNvbm5lY3Rvci9l bmNvZGVyIHRvIHN1cHBvcnQgSERNSSBvdXRwdXQgdmlhIHRoZQphdHRhY2hlZCBIRE1JIGJyaWRn ZS4KClNpZ25lZC1vZmYtYnk6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgpTaWduZWQt b2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcGkuYyAgICAgIHwgNzU3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5oICAgICAgfCAgODUg KysrKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGlfcmVncy5oIHwgMjI4ICsrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jICB8ICAgMSArCiBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgfCAgIDEgKwogNiBmaWxlcyBj aGFuZ2VkLCAxMDc0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3JlZ3MuaAoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9NYWtlZmlsZQppbmRleCBlNzgxZGI1YS4uNWZjZjU4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9N YWtlZmlsZQpAQCAtOCw2ICs4LDcgQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3Bfb3ZsLm8g XAogCQkgIG10a19kcm1fZ2VtLm8gXAogCQkgIG10a19kcm1fcGxhbmUubyBcCiAJCSAgbXRrX2Rz aS5vIFwKLQkJICBtdGtfbWlwaV90eC5vCisJCSAgbXRrX21pcGlfdHgubyBcCisJCSAgbXRrX2Rw aS5vCiAKIG9iai0kKENPTkZJR19EUk1fTUVESUFURUspICs9IG1lZGlhdGVrLWRybS5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5jIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5hZTgxOTA2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcGkuYwpAQCAtMCwwICsxLDc1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCBNZWRp YVRlayBJbmMuCisgKiBBdXRob3I6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworI2luY2x1 ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUg PGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgor I2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNpbmNs dWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKworI2luY2x1 ZGUgIm10a19kcGkuaCIKKyNpbmNsdWRlICJtdGtfZHBpX3JlZ3MuaCIKKworZW51bSBtdGtfZHBp X3BvbGFyaXR5IHsKKwlNVEtfRFBJX1BPTEFSSVRZX1JJU0lORywKKwlNVEtfRFBJX1BPTEFSSVRZ X0ZBTExJTkcsCit9OworCitlbnVtIG10a19kcGlfcG93ZXJfY3RsIHsKKwlEUElfUE9XRVJfU1RB UlQgPSBCSVQoMCksCisJRFBJX1BPV0VSX0VOQUJMRSA9IEJJVCgxKSwKKwlEUElfUE9XRVJfUkVT VU1FID0gQklUKDIpLAorfTsKKworc3RydWN0IG10a19kcGlfcG9sYXJpdGllcyB7CisJZW51bSBt dGtfZHBpX3BvbGFyaXR5IGRlX3BvbDsKKwllbnVtIG10a19kcGlfcG9sYXJpdHkgY2tfcG9sOwor CWVudW0gbXRrX2RwaV9wb2xhcml0eSBoc3luY19wb2w7CisJZW51bSBtdGtfZHBpX3BvbGFyaXR5 IHZzeW5jX3BvbDsKK307CisKK3N0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0geworCXUzMiBzeW5j X3dpZHRoOworCXUzMiBmcm9udF9wb3JjaDsKKwl1MzIgYmFja19wb3JjaDsKKwlib29sIHNoaWZ0 X2hhbGZfbGluZTsKK307CisKK3N0cnVjdCBtdGtfZHBpX3ljX2xpbWl0IHsKKwl1MTYgeV90b3A7 CisJdTE2IHlfYm90dG9tOworCXUxNiBjX3RvcDsKKwl1MTYgY19ib3R0b207Cit9OworCitzdGF0 aWMgdm9pZCBtdGtfZHBpX21hc2soc3RydWN0IG10a19kcGkgKmRwaSwgdTMyIG9mZnNldCwgdTMy IHZhbCwgdTMyIG1hc2spCit7CisJdTMyIHRtcCA9IHJlYWRsKGRwaS0+cmVncyArIG9mZnNldCkg JiB+bWFzazsKKworCXRtcCB8PSAodmFsICYgbWFzayk7CisJd3JpdGVsKHRtcCwgZHBpLT5yZWdz ICsgb2Zmc2V0KTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9zd19yZXNldChzdHJ1Y3QgbXRr X2RwaSAqZHBpLCBib29sIHJlc2V0KQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9SRVQsIHJl c2V0ID8gUlNUIDogMCwgUlNUKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9lbmFibGUoc3Ry dWN0IG10a19kcGkgKmRwaSkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfRU4sIEVOLCBFTik7 Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZGlzYWJsZShzdHJ1Y3QgbXRrX2RwaSAqZHBpKQor eworCW10a19kcGlfbWFzayhkcGksIERQSV9FTiwgMCwgRU4pOworfQorCitzdGF0aWMgdm9pZCBt dGtfZHBpX2NvbmZpZ19oc3luYyhzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSBzdHJ1Y3QgbXRr X2RwaV9zeW5jX3BhcmFtICpzeW5jKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hX SURUSCwKKwkJICAgICBzeW5jLT5zeW5jX3dpZHRoIDw8IEhQVywgSFBXX01BU0spOworCW10a19k cGlfbWFzayhkcGksIERQSV9UR0VOX0hQT1JDSCwKKwkJICAgICBzeW5jLT5iYWNrX3BvcmNoIDw8 IEhCUCwgSEJQX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hQT1JDSCwgc3lu Yy0+ZnJvbnRfcG9yY2ggPDwgSEZQLAorCQkgICAgIEhGUF9NQVNLKTsKK30KKworc3RhdGljIHZv aWQgbXRrX2RwaV9jb25maWdfdnN5bmMoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgc3RydWN0 IG10a19kcGlfc3luY19wYXJhbSAqc3luYywKKwkJCQkgdTMyIHdpZHRoX2FkZHIsIHUzMiBwb3Jj aF9hZGRyKQoreworCW10a19kcGlfbWFzayhkcGksIHdpZHRoX2FkZHIsCisJCSAgICAgc3luYy0+ c3luY193aWR0aCA8PCBWU1lOQ19XSURUSF9TSElGVCwKKwkJICAgICBWU1lOQ19XSURUSF9NQVNL KTsKKwltdGtfZHBpX21hc2soZHBpLCB3aWR0aF9hZGRyLAorCQkgICAgIHN5bmMtPnNoaWZ0X2hh bGZfbGluZSA8PCBWU1lOQ19IQUxGX0xJTkVfU0hJRlQsCisJCSAgICAgVlNZTkNfSEFMRl9MSU5F X01BU0spOworCW10a19kcGlfbWFzayhkcGksIHBvcmNoX2FkZHIsCisJCSAgICAgc3luYy0+YmFj a19wb3JjaCA8PCBWU1lOQ19CQUNLX1BPUkNIX1NISUZULAorCQkgICAgIFZTWU5DX0JBQ0tfUE9S Q0hfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgcG9yY2hfYWRkciwKKwkJICAgICBzeW5jLT5m cm9udF9wb3JjaCA8PCBWU1lOQ19GUk9OVF9QT1JDSF9TSElGVCwKKwkJICAgICBWU1lOQ19GUk9O VF9QT1JDSF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfdnN5bmNfbG9k ZChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFy YW0gKnN5bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdFTl9W V0lEVEgsIERQSV9UR0VOX1ZQT1JDSCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmln X3ZzeW5jX2xldmVuKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgIHN0cnVjdCBtdGtf ZHBpX3N5bmNfcGFyYW0gKnN5bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5j LCBEUElfVEdFTl9WV0lEVEhfTEVWRU4sCisJCQkgICAgIERQSV9UR0VOX1ZQT1JDSF9MRVZFTik7 Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX3JvZGQoc3RydWN0IG10a19k cGkgKmRwaSwKKwkJCQkgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQorewor CW10a19kcGlfY29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRIX1JPREQsCisJ CQkgICAgIERQSV9UR0VOX1ZQT1JDSF9ST0REKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9j b25maWdfdnN5bmNfcmV2ZW4oc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICAgICAgc3RydWN0 IG10a19kcGlfc3luY19wYXJhbSAqc3luYykKK3sKKwltdGtfZHBpX2NvbmZpZ192c3luYyhkcGks IHN5bmMsIERQSV9UR0VOX1ZXSURUSF9SRVZFTiwKKwkJCSAgICAgRFBJX1RHRU5fVlBPUkNIX1JF VkVOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfcG9sKHN0cnVjdCBtdGtfZHBp ICpkcGksCisJCQkgICAgICAgc3RydWN0IG10a19kcGlfcG9sYXJpdGllcyAqZHBpX3BvbCkKK3sK Kwl1bnNpZ25lZCBpbnQgcG9sOworCisJcG9sID0gKGRwaV9wb2wtPmNrX3BvbCA9PSBNVEtfRFBJ X1BPTEFSSVRZX1JJU0lORyA/IDAgOiBDS19QT0wpIHwKKwkgICAgICAoZHBpX3BvbC0+ZGVfcG9s ID09IE1US19EUElfUE9MQVJJVFlfUklTSU5HID8gMCA6IERFX1BPTCkgfAorCSAgICAgIChkcGlf cG9sLT5oc3luY19wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDogSFNZTkNfUE9M KSB8CisJICAgICAgKGRwaV9wb2wtPnZzeW5jX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZX1JJU0lO RyA/IDAgOiBWU1lOQ19QT0wpOworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQVVRfU0VUVElO RywgcG9sLAorCQkgICAgIENLX1BPTCB8IERFX1BPTCB8IEhTWU5DX1BPTCB8IFZTWU5DX1BPTCk7 Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnXzNkKHN0cnVjdCBtdGtfZHBpICpkcGks IGJvb2wgZW5fM2QpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5fM2QgPyBUREZQ X0VOIDogMCwgVERGUF9FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2ludGVy ZmFjZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGludGVyKQoreworCW10a19kcGlfbWFzayhk cGksIERQSV9DT04sIGludGVyID8gSU5UTF9FTiA6IDAsIElOVExfRU4pOworfQorCitzdGF0aWMg dm9pZCBtdGtfZHBpX2NvbmZpZ19mYl9zaXplKHN0cnVjdCBtdGtfZHBpICpkcGksIHUzMiB3aWR0 aCwgdTMyIGhlaWdodCkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfU0laRSwgd2lkdGggPDwg SFNJWkUsIEhTSVpFX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9TSVpFLCBoZWlnaHQg PDwgVlNJWkUsIFZTSVpFX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19j aGFubmVsX2xpbWl0KHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJCSBzdHJ1Y3QgbXRrX2RwaV95 Y19saW1pdCAqbGltaXQpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1lfTElNSVQsIGxpbWl0 LT55X2JvdHRvbSA8PCBZX0xJTUlOVF9CT1QsCisJCSAgICAgWV9MSU1JTlRfQk9UX01BU0spOwor CW10a19kcGlfbWFzayhkcGksIERQSV9ZX0xJTUlULCBsaW1pdC0+eV90b3AgPDwgWV9MSU1JTlRf VE9QLAorCQkgICAgIFlfTElNSU5UX1RPUF9NQVNLKTsKKwltdGtfZHBpX21hc2soZHBpLCBEUElf Q19MSU1JVCwgbGltaXQtPmNfYm90dG9tIDw8IENfTElNSVRfQk9ULAorCQkgICAgIENfTElNSVRf Qk9UX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9DX0xJTUlULCBsaW1pdC0+Y190b3Ag PDwgQ19MSU1JVF9UT1AsCisJCSAgICAgQ19MSU1JVF9UT1BfTUFTSyk7Cit9CisKK3N0YXRpYyB2 b2lkIG10a19kcGlfY29uZmlnX2JpdF9udW0oc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICBl bnVtIG10a19kcGlfb3V0X2JpdF9udW0gbnVtKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2ggKG51 bSkgeworCWNhc2UgTVRLX0RQSV9PVVRfQklUX05VTV84QklUUzoKKwkJdmFsID0gT1VUX0JJVF84 OworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTBCSVRTOgorCQl2YWwgPSBP VVRfQklUXzEwOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTOgor CQl2YWwgPSBPVVRfQklUXzEyOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1f MTZCSVRTOgorCQl2YWwgPSBPVVRfQklUXzE2OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwg PSBPVVRfQklUXzg7CisJCWJyZWFrOworCX0KKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVU X1NFVFRJTkcsIHZhbCA8PCBPVVRfQklULAorCQkgICAgIE9VVF9CSVRfTUFTSyk7Cit9CisKK3N0 YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ljX21hcChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJ CSAgZW51bSBtdGtfZHBpX291dF95Y19tYXAgbWFwKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2gg KG1hcCkgeworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1JHQjoKKwkJdmFsID0gWUNfTUFQX1JH QjsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9ZQ19NQVBfQ1lDWToKKwkJdmFsID0gWUNf TUFQX0NZQ1k7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1lDWUM6CisJCXZh bCA9IFlDX01BUF9ZQ1lDOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9DWToK KwkJdmFsID0gWUNfTUFQX0NZOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9Z QzoKKwkJdmFsID0gWUNfTUFQX1lDOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwgPSBZQ19N QVBfUkdCOworCQlicmVhazsKKwl9CisKKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NF VFRJTkcsIHZhbCA8PCBZQ19NQVAsIFlDX01BUF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRr X2RwaV9jb25maWdfY2hhbm5lbF9zd2FwKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJCWVudW0g bXRrX2RwaV9vdXRfY2hhbm5lbF9zd2FwIHN3YXApCit7CisJdTMyIHZhbDsKKworCXN3aXRjaCAo c3dhcCkgeworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQjoKKwkJdmFsID0gU1dB UF9SR0I7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0dCUjoKKwkJ dmFsID0gU1dBUF9HQlI7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQ X0JSRzoKKwkJdmFsID0gU1dBUF9CUkc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hB Tk5FTF9TV0FQX1JCRzoKKwkJdmFsID0gU1dBUF9SQkc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQ SV9PVVRfQ0hBTk5FTF9TV0FQX0dSQjoKKwkJdmFsID0gU1dBUF9HUkI7CisJCWJyZWFrOworCWNh c2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0JHUjoKKwkJdmFsID0gU1dBUF9CR1I7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCXZhbCA9IFNXQVBfUkdCOworCQlicmVhazsKKwl9CisKKwltdGtf ZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHZhbCA8PCBDSF9TV0FQLCBDSF9TV0FQ X01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKHN0 cnVjdCBtdGtfZHBpICpkcGksIGJvb2wgZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQ SV9DT04sIGVuYWJsZSA/IFlVVjQyMl9FTiA6IDAsIFlVVjQyMl9FTik7Cit9CisKK3N0YXRpYyB2 b2lkIG10a19kcGlfY29uZmlnX2NzY19lbmFibGUoc3RydWN0IG10a19kcGkgKmRwaSwgYm9vbCBl bmFibGUpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxlID8gQ1NDX0VOQUJM RSA6IDAsIENTQ19FTkFCTEUpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19zd2Fw X2lucHV0KHN0cnVjdCBtdGtfZHBpICpkcGksIGJvb2wgZW5hYmxlKQoreworCW10a19kcGlfbWFz ayhkcGksIERQSV9DT04sIGVuYWJsZSA/IElOX1JCX1NXQVAgOiAwLCBJTl9SQl9TV0FQKTsKK30K Kworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfMm5faF9mcmUoc3RydWN0IG10a19kcGkgKmRw aSkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfSF9GUkVfQ09OLCBIX0ZSRV8yTiwgSF9GUkVf Mk4pOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19jb2xvcl9mb3JtYXQoc3RydWN0 IG10a19kcGkgKmRwaSwKKwkJCQkJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgZm9ybWF0 KQoreworCWlmICgoZm9ybWF0ID09IE1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQ0NCkgfHwK KwkgICAgKGZvcm1hdCA9PSBNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80NDRfRlVMTCkpIHsK KwkJbXRrX2RwaV9jb25maWdfeXV2NDIyX2VuYWJsZShkcGksIGZhbHNlKTsKKwkJbXRrX2RwaV9j b25maWdfY3NjX2VuYWJsZShkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0 KGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJ X09VVF9DSEFOTkVMX1NXQVBfQkdSKTsKKwl9IGVsc2UgaWYgKChmb3JtYXQgPT0gTVRLX0RQSV9D T0xPUl9GT1JNQVRfWUNCQ1JfNDIyKSB8fAorCQkgICAoZm9ybWF0ID09IE1US19EUElfQ09MT1Jf Rk9STUFUX1lDQkNSXzQyMl9GVUxMKSkgeworCQltdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxl KGRwaSwgdHJ1ZSk7CisJCW10a19kcGlfY29uZmlnX2NzY19lbmFibGUoZHBpLCB0cnVlKTsKKwkJ bXRrX2RwaV9jb25maWdfc3dhcF9pbnB1dChkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19j aGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCKTsKKwl9IGVsc2Ug eworCQltdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBp X2NvbmZpZ19jc2NfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lu cHV0KGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtf RFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlf cG93ZXJfb2ZmKHN0cnVjdCBtdGtfZHBpICpkcGksIGVudW0gbXRrX2RwaV9wb3dlcl9jdGwgcGN0 bCkKK3sKKwlkcGktPnBvd2VyX2N0bCAmPSB+cGN0bDsKKworCWlmICgoZHBpLT5wb3dlcl9jdGwg JiBEUElfUE9XRVJfU1RBUlQpIHx8CisJICAgICgoZHBpLT5wb3dlcl9jdGwgJiBEUElfUE9XRVJf RU5BQkxFKSAmJgorCSAgICAgKGRwaS0+cG93ZXJfY3RsICYgRFBJX1BPV0VSX1JFU1VNRSkpKQor CQlyZXR1cm47CisKKwlpZiAoIWRwaS0+cG93ZXJfc3RhKQorCQlyZXR1cm47CisKKwltdGtfZHBp X2Rpc2FibGUoZHBpKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHBpLT5waXhlbF9jbGspOwor CWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOworCWRwaS0+cG93ZXJfc3Rh ID0gZmFsc2U7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9wb3dlcl9vbihzdHJ1Y3QgbXRrX2Rw aSAqZHBpLCBlbnVtIG10a19kcGlfcG93ZXJfY3RsIHBjdGwpCit7CisJaW50IHJldDsKKworCWRw aS0+cG93ZXJfY3RsIHw9IHBjdGw7CisKKwlpZiAoIShkcGktPnBvd2VyX2N0bCAmIERQSV9QT1dF Ul9TVEFSVCkgJiYKKwkgICAgISgoZHBpLT5wb3dlcl9jdGwgJiBEUElfUE9XRVJfRU5BQkxFKSAm JgorCSAgICAgICgoZHBpLT5wb3dlcl9jdGwgJiBEUElfUE9XRVJfUkVTVU1FKSkpKQorCQlyZXR1 cm4gMDsKKworCWlmIChkcGktPnBvd2VyX3N0YSkKKwkJcmV0dXJuIDA7CisKKwlyZXQgPSBjbGtf cHJlcGFyZV9lbmFibGUoZHBpLT5lbmdpbmVfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIo ZHBpLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIGVuZ2luZSBjbG9jazogJWRcbiIsIHJldCk7CisJ CWdvdG8gZXJyX2VuZzsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHBpLT5waXhl bF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkcGktPmRldiwgIkZhaWxlZCB0byBlbmFi bGUgcGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9waXhlbDsKKwl9CisKKwlt dGtfZHBpX2VuYWJsZShkcGkpOworCWRwaS0+cG93ZXJfc3RhID0gdHJ1ZTsKKwlyZXR1cm4gMDsK KworZXJyX3BpeGVsOgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOwor ZXJyX2VuZzoKKwlkcGktPnBvd2VyX2N0bCAmPSB+cGN0bDsKKwlyZXR1cm4gcmV0OworfQorCitp bnQgbXRrX2RwaV9zZXRfZGlzcGxheV9tb2RlKHN0cnVjdCBtdGtfZHBpICpkcGksIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXN0cnVjdCBtdGtfZHBpX3ljX2xpbWl0IGxpbWl0 OworCXN0cnVjdCBtdGtfZHBpX3BvbGFyaXRpZXMgZHBpX3BvbDsKKwlzdHJ1Y3QgbXRrX2RwaV9z eW5jX3BhcmFtIGhzeW5jOworCXN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gdnN5bmNfbG9kZCA9 IHsgMCB9OworCXN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gdnN5bmNfbGV2ZW4gPSB7IDAgfTsK KwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX3JvZGQgPSB7IDAgfTsKKwlzdHJ1Y3Qg bXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX3JldmVuID0geyAwIH07CisJdW5zaWduZWQgbG9uZyBw aXhfcmF0ZTsKKwl1bnNpZ25lZCBsb25nIHBsbF9yYXRlOworCXVuc2lnbmVkIGludCBmYWN0b3I7 CisKKwlpZiAoIWRwaSkgeworCQlkZXZfZXJyKGRwaS0+ZGV2LCAiaW52YWxpZCBhcmd1bWVudFxu Iik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXBpeF9yYXRlID0gMTAwMFVMICogbW9kZS0+ Y2xvY2s7CisJaWYgKG1vZGUtPmNsb2NrIDw9IDc0MDAwKQorCQlmYWN0b3IgPSA4ICogMzsKKwll bHNlCisJCWZhY3RvciA9IDQgKiAzOworCXBsbF9yYXRlID0gcGl4X3JhdGUgKiBmYWN0b3I7CisK KwlkZXZfZGJnKGRwaS0+ZGV2LCAiV2FudCBQTEwgJWx1IEh6LCBwaXhlbCBjbG9jayAlbHUgSHpc biIsCisJCXBsbF9yYXRlLCBwaXhfcmF0ZSk7CisKKwljbGtfc2V0X3JhdGUoZHBpLT50dmRfY2xr LCBwbGxfcmF0ZSk7CisJcGxsX3JhdGUgPSBjbGtfZ2V0X3JhdGUoZHBpLT50dmRfY2xrKTsKKwor CXBpeF9yYXRlID0gcGxsX3JhdGUgLyBmYWN0b3I7CisJY2xrX3NldF9yYXRlKGRwaS0+cGl4ZWxf Y2xrLCBwaXhfcmF0ZSk7CisJcGl4X3JhdGUgPSBjbGtfZ2V0X3JhdGUoZHBpLT5waXhlbF9jbGsp OworCisJZGV2X2RiZyhkcGktPmRldiwgIkdvdCAgUExMICVsdSBIeiwgcGl4ZWwgY2xvY2sgJWx1 IEh6XG4iLAorCQlwbGxfcmF0ZSwgcGl4X3JhdGUpOworCisJbGltaXQuY19ib3R0b20gPSAweDAw MTA7CisJbGltaXQuY190b3AgPSAweDBGRTA7CisJbGltaXQueV9ib3R0b20gPSAweDAwMTA7CisJ bGltaXQueV90b3AgPSAweDBGRTA7CisKKwlkcGlfcG9sLmNrX3BvbCA9IE1US19EUElfUE9MQVJJ VFlfRkFMTElORzsKKwlkcGlfcG9sLmRlX3BvbCA9IE1US19EUElfUE9MQVJJVFlfUklTSU5HOwor CWRwaV9wb2wuaHN5bmNfcG9sID0gbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQyA/ CisJCQkgICAgTVRLX0RQSV9QT0xBUklUWV9GQUxMSU5HIDogTVRLX0RQSV9QT0xBUklUWV9SSVNJ Tkc7CisJZHBpX3BvbC52c3luY19wb2wgPSBtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZT WU5DID8KKwkJCSAgICBNVEtfRFBJX1BPTEFSSVRZX0ZBTExJTkcgOiBNVEtfRFBJX1BPTEFSSVRZ X1JJU0lORzsKKworCWhzeW5jLnN5bmNfd2lkdGggPSBtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5o c3luY19zdGFydDsKKwloc3luYy5iYWNrX3BvcmNoID0gbW9kZS0+aHRvdGFsIC0gbW9kZS0+aHN5 bmNfZW5kOworCWhzeW5jLmZyb250X3BvcmNoID0gbW9kZS0+aHN5bmNfc3RhcnQgLSBtb2RlLT5o ZGlzcGxheTsKKwloc3luYy5zaGlmdF9oYWxmX2xpbmUgPSBmYWxzZTsKKworCXZzeW5jX2xvZGQu c3luY193aWR0aCA9IG1vZGUtPnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5jX3N0YXJ0OworCXZzeW5j X2xvZGQuYmFja19wb3JjaCA9IG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZzeW5jX2VuZDsKKwl2c3lu Y19sb2RkLmZyb250X3BvcmNoID0gbW9kZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxheTsK Kwl2c3luY19sb2RkLnNoaWZ0X2hhbGZfbGluZSA9IGZhbHNlOworCisJaWYgKG1vZGUtPmZsYWdz ICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYKKwkgICAgbW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHXzNEX01BU0spIHsKKwkJdnN5bmNfbGV2ZW4gPSB2c3luY19sb2RkOworCQl2c3luY19y b2RkID0gdnN5bmNfbG9kZDsKKwkJdnN5bmNfcmV2ZW4gPSB2c3luY19sb2RkOworCQl2c3luY19s ZXZlbi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCQl2c3luY19yZXZlbi5zaGlmdF9oYWxmX2xp bmUgPSB0cnVlOworCX0gZWxzZSBpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVS TEFDRSAmJgorCQkgICAhKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR18zRF9NQVNLKSkgewor CQl2c3luY19sZXZlbiA9IHZzeW5jX2xvZGQ7CisJCXZzeW5jX2xldmVuLnNoaWZ0X2hhbGZfbGlu ZSA9IHRydWU7CisJfSBlbHNlIGlmICghKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRF UkxBQ0UpICYmCisJCSAgIG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR18zRF9NQVNLKSB7CisJ CXZzeW5jX3JvZGQgPSB2c3luY19sb2RkOworCX0KKwltdGtfZHBpX3N3X3Jlc2V0KGRwaSwgdHJ1 ZSk7CisJbXRrX2RwaV9jb25maWdfcG9sKGRwaSwgJmRwaV9wb2wpOworCisJbXRrX2RwaV9jb25m aWdfaHN5bmMoZHBpLCAmaHN5bmMpOworCW10a19kcGlfY29uZmlnX3ZzeW5jX2xvZGQoZHBpLCAm dnN5bmNfbG9kZCk7CisJbXRrX2RwaV9jb25maWdfdnN5bmNfcm9kZChkcGksICZ2c3luY19yb2Rk KTsKKwltdGtfZHBpX2NvbmZpZ192c3luY19sZXZlbihkcGksICZ2c3luY19sZXZlbik7CisJbXRr X2RwaV9jb25maWdfdnN5bmNfcmV2ZW4oZHBpLCAmdnN5bmNfcmV2ZW4pOworCisJbXRrX2RwaV9j b25maWdfM2QoZHBpLCAhIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykpOwor CW10a19kcGlfY29uZmlnX2ludGVyZmFjZShkcGksICEhKG1vZGUtPmZsYWdzICYKKwkJCQkJIERS TV9NT0RFX0ZMQUdfSU5URVJMQUNFKSk7CisJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxB R19JTlRFUkxBQ0UpCisJCW10a19kcGlfY29uZmlnX2ZiX3NpemUoZHBpLCBtb2RlLT5oZGlzcGxh eSwgbW9kZS0+dmRpc3BsYXkgLyAyKTsKKwllbHNlCisJCW10a19kcGlfY29uZmlnX2ZiX3NpemUo ZHBpLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOworCisJbXRrX2RwaV9jb25maWdf Y2hhbm5lbF9saW1pdChkcGksICZsaW1pdCk7CisJbXRrX2RwaV9jb25maWdfYml0X251bShkcGks IGRwaS0+Yml0X251bSk7CisJbXRrX2RwaV9jb25maWdfY2hhbm5lbF9zd2FwKGRwaSwgZHBpLT5j aGFubmVsX3N3YXApOworCW10a19kcGlfY29uZmlnX3ljX21hcChkcGksIGRwaS0+eWNfbWFwKTsK KwltdGtfZHBpX2NvbmZpZ19jb2xvcl9mb3JtYXQoZHBpLCBkcGktPmNvbG9yX2Zvcm1hdCk7CisJ bXRrX2RwaV9jb25maWdfMm5faF9mcmUoZHBpKTsKKwltdGtfZHBpX3N3X3Jlc2V0KGRwaSwgZmFs c2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZW5jb2Rlcl9kZXN0 cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlkcm1fZW5jb2Rlcl9jbGVhbnVw KGVuY29kZXIpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIG10 a19kcGlfZW5jb2Rlcl9mdW5jcyA9IHsKKwkuZGVzdHJveSA9IG10a19kcGlfZW5jb2Rlcl9kZXN0 cm95LAorfTsKKworc3RhdGljIGJvb2wgbXRrX2RwaV9lbmNvZGVyX21vZGVfZml4dXAoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSwKKwkJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZW5j b2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlKQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBtdGtfZHBpX2Zy b21fZW5jb2RlcihlbmNvZGVyKTsKKworCWRybV9tb2RlX2NvcHkoJmRwaS0+bW9kZSwgYWRqdXN0 ZWRfbW9kZSk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZW5jb2Rlcl9kaXNhYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gbXRrX2Rw aV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwltdGtfZHBpX3Bvd2VyX29mZihkcGksIERQSV9Q T1dFUl9FTkFCTEUpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfZW5hYmxlKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gbXRr X2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwltdGtfZHBpX3Bvd2VyX29uKGRwaSwgRFBJ X1BPV0VSX0VOQUJMRSk7CisJbXRrX2RwaV9zZXRfZGlzcGxheV9tb2RlKGRwaSwgJmRwaS0+bW9k ZSk7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyLAorCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJ CQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgbXRrX2Rw aV9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKKwkubW9kZV9maXh1cCA9IG10a19kcGlfZW5jb2Rl cl9tb2RlX2ZpeHVwLAorCS5tb2RlX3NldCA9IG10a19kcGlfZW5jb2Rlcl9tb2RlX3NldCwKKwku ZGlzYWJsZSA9IG10a19kcGlfZW5jb2Rlcl9kaXNhYmxlLAorCS5lbmFibGUgPSBtdGtfZHBpX2Vu Y29kZXJfZW5hYmxlLAorCS5hdG9taWNfY2hlY2sgPSBtdGtfZHBpX2F0b21pY19jaGVjaywKK307 CisKK3N0YXRpYyB2b2lkIG10a19kcGlfc3RhcnQoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCkK K3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gY29udGFpbmVyX29mKGNvbXAsIHN0cnVjdCBtdGtf ZHBpLCBkZHBfY29tcCk7CisKKwltdGtfZHBpX3Bvd2VyX29uKGRwaSwgRFBJX1BPV0VSX1NUQVJU KTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9zdG9wKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNv bXApCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGNvbnRhaW5lcl9vZihjb21wLCBzdHJ1Y3Qg bXRrX2RwaSwgZGRwX2NvbXApOworCisJbXRrX2RwaV9wb3dlcl9vZmYoZHBpLCBEUElfUE9XRVJf U1RBUlQpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfY29tcF9mdW5jcyBtdGtf ZHBpX2Z1bmNzID0geworCS5zdGFydCA9IG10a19kcGlfc3RhcnQsCisJLnN0b3AgPSBtdGtfZHBp X3N0b3AsCit9OworCitzdGF0aWMgaW50IG10a19kcGlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAq ZHBpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYg PSBkYXRhOworCWludCByZXQ7CisKKwlyZXQgPSBtdGtfZGRwX2NvbXBfcmVnaXN0ZXIoZHJtX2Rl diwgJmRwaS0+ZGRwX2NvbXApOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiRmFp bGVkIHRvIHJlZ2lzdGVyIGNvbXBvbmVudCAlczogJWRcbiIsCisJCQlkZXYtPm9mX25vZGUtPmZ1 bGxfbmFtZSwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkcm1fZW5jb2Rlcl9p bml0KGRybV9kZXYsICZkcGktPmVuY29kZXIsICZtdGtfZHBpX2VuY29kZXJfZnVuY3MsCisJCQkg ICAgICAgRFJNX01PREVfRU5DT0RFUl9UTURTLCBOVUxMKTsKKwlpZiAocmV0KSB7CisJCWRldl9l cnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgZGVjb2RlcjogJWRcbiIsIHJldCk7CisJCWdv dG8gZXJyX3VucmVnaXN0ZXI7CisJfQorCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoJmRwaS0+ZW5j b2RlciwgJm10a19kcGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCisJLyogQ3VycmVudGx5IERQ STAgaXMgZml4ZWQgdG8gYmUgZHJpdmVuIGJ5IE9WTDEgKi8KKwlkcGktPmVuY29kZXIucG9zc2li bGVfY3J0Y3MgPSBCSVQoMSk7CisKKwlkcGktPmVuY29kZXIuYnJpZGdlLT5lbmNvZGVyID0gJmRw aS0+ZW5jb2RlcjsKKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChkcGktPmVuY29kZXIuZGV2LCBk cGktPmVuY29kZXIuYnJpZGdlKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGF0dGFjaCBicmlkZ2U6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9jbGVhbnVwOworCX0K KworCWRwaS0+Yml0X251bSA9IE1US19EUElfT1VUX0JJVF9OVU1fOEJJVFM7CisJZHBpLT5jaGFu bmVsX3N3YXAgPSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCOworCWRwaS0+eWNfbWFwID0g TVRLX0RQSV9PVVRfWUNfTUFQX1JHQjsKKwlkcGktPmNvbG9yX2Zvcm1hdCA9IE1US19EUElfQ09M T1JfRk9STUFUX1JHQjsKKworCXJldHVybiAwOworCitlcnJfY2xlYW51cDoKKwlkcm1fZW5jb2Rl cl9jbGVhbnVwKCZkcGktPmVuY29kZXIpOworZXJyX3VucmVnaXN0ZXI6CisJbXRrX2RkcF9jb21w X3VucmVnaXN0ZXIoZHJtX2RldiwgJmRwaS0+ZGRwX2NvbXApOworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyB2b2lkIG10a19kcGlfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZSAqbWFzdGVyLAorCQkJICAgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBp ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBk YXRhOworCisJZHJtX2VuY29kZXJfY2xlYW51cCgmZHBpLT5lbmNvZGVyKTsKKwltdGtfZGRwX2Nv bXBfdW5yZWdpc3Rlcihkcm1fZGV2LCAmZHBpLT5kZHBfY29tcCk7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZHBpX2NvbXBvbmVudF9vcHMgPSB7CisJLmJpbmQg PSBtdGtfZHBpX2JpbmQsCisJLnVuYmluZCA9IG10a19kcGlfdW5iaW5kLAorfTsKKworc3RhdGlj IGludCBtdGtfZHBpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3Ry dWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpOworCXN0 cnVjdCByZXNvdXJjZSAqbWVtOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZXAsICpicmlkZ2Vfbm9k ZSA9IE5VTEw7CisJaW50IGNvbXBfaWQ7CisJaW50IHJldDsKKworCWRwaSA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqZHBpKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkcGkpCisJCXJldHVybiAt RU5PTUVNOworCisJZHBpLT5kZXYgPSBkZXY7CisKKwltZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3Vy Y2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWRwaS0+cmVncyA9IGRldm1faW9yZW1hcF9y ZXNvdXJjZShkZXYsIG1lbSk7CisJaWYgKElTX0VSUihkcGktPnJlZ3MpKSB7CisJCXJldCA9IFBU Ul9FUlIoZHBpLT5yZWdzKTsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW9yZW1hcCBtZW0g cmVzb3VyY2U6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRwaS0+ZW5naW5l X2NsayA9IGRldm1fY2xrX2dldChkZXYsICJlbmdpbmUiKTsKKwlpZiAoSVNfRVJSKGRwaS0+ZW5n aW5lX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkcGktPmVuZ2luZV9jbGspOworCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byBnZXQgZW5naW5lIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJu IHJldDsKKwl9CisKKwlkcGktPnBpeGVsX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJwaXhlbCIp OworCWlmIChJU19FUlIoZHBpLT5waXhlbF9jbGspKSB7CisJCXJldCA9IFBUUl9FUlIoZHBpLT5w aXhlbF9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgcGl4ZWwgY2xvY2s6ICVk XG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRwaS0+dHZkX2NsayA9IGRldm1fY2xr X2dldChkZXYsICJwbGwiKTsKKwlpZiAoSVNfRVJSKGRwaS0+dHZkX2NsaykpIHsKKwkJcmV0ID0g UFRSX0VSUihkcGktPnR2ZF9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgdHZk cGxsIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcGktPmlycSA9 IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKGRwaS0+aXJxIDw9IDApIHsKKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGlycTogJWRcbiIsIGRwaS0+aXJxKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJZXAgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2ludChkZXYtPm9m X25vZGUsIE5VTEwpOworCWlmIChlcCkgeworCQlicmlkZ2Vfbm9kZSA9IG9mX2dyYXBoX2dldF9y ZW1vdGVfcG9ydF9wYXJlbnQoZXApOworCQlvZl9ub2RlX3B1dChlcCk7CisJfQorCWlmICghYnJp ZGdlX25vZGUpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZmluZCBicmlkZ2Ugbm9kZTog JWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2X2luZm8oZGV2LCAiRm91bmQg YnJpZGdlIG5vZGU6ICVzXG4iLCBicmlkZ2Vfbm9kZS0+ZnVsbF9uYW1lKTsKKworCWRwaS0+ZW5j b2Rlci5icmlkZ2UgPSBvZl9kcm1fZmluZF9icmlkZ2UoYnJpZGdlX25vZGUpOworCW9mX25vZGVf cHV0KGJyaWRnZV9ub2RlKTsKKwlpZiAoIWRwaS0+ZW5jb2Rlci5icmlkZ2UpCisJCXJldHVybiAt RVBST0JFX0RFRkVSOworCisJY29tcF9pZCA9IG10a19kZHBfY29tcF9nZXRfaWQoZGV2LT5vZl9u b2RlLCBNVEtfRFBJKTsKKwlpZiAoY29tcF9pZCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJGYWls ZWQgdG8gaWRlbnRpZnkgYnkgYWxpYXM6ICVkXG4iLCBjb21wX2lkKTsKKwkJcmV0dXJuIGNvbXBf aWQ7CisJfQorCisJcmV0ID0gbXRrX2RkcF9jb21wX2luaXQoZGV2LCBkZXYtPm9mX25vZGUsICZk cGktPmRkcF9jb21wLCBjb21wX2lkLAorCQkJCSZtdGtfZHBpX2Z1bmNzKTsKKwlpZiAocmV0KSB7 CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgY29tcG9uZW50OiAlZFxuIiwg cmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBk cGkpOworCisJcmV0ID0gY29tcG9uZW50X2FkZChkZXYsICZtdGtfZHBpX2NvbXBvbmVudF9vcHMp OworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWRkIGNvbXBvbmVudDog JWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHBpLT5wb3dlcl9jdGwgfD0gRFBJ X1BPV0VSX1JFU1VNRTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG10a19kcGlfcmVt b3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY29tcG9uZW50X2RlbCgmcGRl di0+ZGV2LCAmbXRrX2RwaV9jb21wb25lbnRfb3BzKTsKKworCXJldHVybiAwOworfQorCisjaWZk ZWYgQ09ORklHX1BNX1NMRUVQCitzdGF0aWMgaW50IG10a19kcGlfc3VzcGVuZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OworCisJaWYgKElTX0VSUihkcGkpKSB7CisJCWRldl9pbmZvKGRldiwgImRwaSBzdXNwZW5kIGZh aWxlZCFcbiIpOworCQlyZXR1cm4gUFRSX0VSUihkcGkpOworCX0KKworCW10a19kcGlfcG93ZXJf b2ZmKGRwaSwgRFBJX1BPV0VSX1JFU1VNRSk7CisKKwlkZXZfaW5mbyhkZXYsICJkcGkgc3VzcGVu ZCBzdWNjZXNzIVxuIik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtdGtfZHBpX3Jl c3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOworCWludCByZXQ7CisKKwlpZiAoSVNfRVJSKGRwaSkpIHsKKwkJZGV2 X2VycihkZXYsICJkcGkgcmVzdW1lIGZhaWxlZCFcbiIpOworCQlyZXR1cm4gUFRSX0VSUihkcGkp OworCX0KKworCXJldCA9IG10a19kcGlfcG93ZXJfb24oZHBpLCBEUElfUE9XRVJfUkVTVU1FKTsK KwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiZHBpIHJlc3VtZSBmYWlsZWQhXG4iKTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlkZXZfaW5mbyhkZXYsICJkcGkgcmVzdW1lIHN1Y2Nlc3MhXG4i KTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyht dGtfZHBpX3BtX29wcywgbXRrX2RwaV9zdXNwZW5kLCBtdGtfZHBpX3Jlc3VtZSk7CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19kcGlfb2ZfaWRzW10gPSB7CisJeyAuY29t cGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtZHBpIiwgfSwKKwl7fQorfTsKKworc3RydWN0IHBs YXRmb3JtX2RyaXZlciBtdGtfZHBpX2RyaXZlciA9IHsKKwkucHJvYmUgPSBtdGtfZHBpX3Byb2Jl LAorCS5yZW1vdmUgPSBtdGtfZHBpX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJt ZWRpYXRlay1kcGkiLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBtdGtfZHBpX29mX2lkcywKKwkJLnBt ID0gJm10a19kcGlfcG1fb3BzLAorCX0sCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcGkuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZhNDExNAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmgKQEAgLTAsMCArMSw4NSBA QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCBNZWRpYVRlayBJbmMuCisgKiBBdXRob3I6IEpp ZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworI2lmbmRlZiBfTVRLX0RQSV9ICisjZGVmaW5lIF9N VEtfRFBJX0gKKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9j cnRjLmg+CisKKyNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCisKK3N0cnVjdCBkZXZpY2U7 CitzdHJ1Y3QgY2xrOworCitlbnVtIG10a19kcGlfb3V0X2JpdF9udW0geworCU1US19EUElfT1VU X0JJVF9OVU1fOEJJVFMsCisJTVRLX0RQSV9PVVRfQklUX05VTV8xMEJJVFMsCisJTVRLX0RQSV9P VVRfQklUX05VTV8xMkJJVFMsCisJTVRLX0RQSV9PVVRfQklUX05VTV8xNkJJVFMKK307CisKK2Vu dW0gbXRrX2RwaV9vdXRfeWNfbWFwIHsKKwlNVEtfRFBJX09VVF9ZQ19NQVBfUkdCLAorCU1US19E UElfT1VUX1lDX01BUF9DWUNZLAorCU1US19EUElfT1VUX1lDX01BUF9ZQ1lDLAorCU1US19EUElf T1VUX1lDX01BUF9DWSwKKwlNVEtfRFBJX09VVF9ZQ19NQVBfWUMKK307CisKK2VudW0gbXRrX2Rw aV9vdXRfY2hhbm5lbF9zd2FwIHsKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCLAorCU1U S19EUElfT1VUX0NIQU5ORUxfU1dBUF9HQlIsCisJTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0JS RywKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkJHLAorCU1US19EUElfT1VUX0NIQU5ORUxf U1dBUF9HUkIsCisJTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0JHUgorfTsKKworZW51bSBtdGtf ZHBpX291dF9jb2xvcl9mb3JtYXQgeworCU1US19EUElfQ09MT1JfRk9STUFUX1JHQiwKKwlNVEtf RFBJX0NPTE9SX0ZPUk1BVF9SR0JfRlVMTCwKKwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80 NDQsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDIyLAorCU1US19EUElfQ09MT1JfRk9S TUFUX1hWX1lDQywKKwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80NDRfRlVMTCwKKwlNVEtf RFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80MjJfRlVMTAorfTsKKworc3RydWN0IG10a19kcGkgewor CXN0cnVjdCBtdGtfZGRwX2NvbXAgZGRwX2NvbXA7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29k ZXI7CisJdm9pZCBfX2lvbWVtICpyZWdzOworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3Qg Y2xrICplbmdpbmVfY2xrOworCXN0cnVjdCBjbGsgKnBpeGVsX2NsazsKKwlzdHJ1Y3QgY2xrICp0 dmRfY2xrOworCWludCBpcnE7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbW9kZTsKKwllbnVt IG10a19kcGlfb3V0X2NvbG9yX2Zvcm1hdCBjb2xvcl9mb3JtYXQ7CisJZW51bSBtdGtfZHBpX291 dF95Y19tYXAgeWNfbWFwOworCWVudW0gbXRrX2RwaV9vdXRfYml0X251bSBiaXRfbnVtOworCWVu dW0gbXRrX2RwaV9vdXRfY2hhbm5lbF9zd2FwIGNoYW5uZWxfc3dhcDsKKwlib29sIHBvd2VyX3N0 YTsKKwl1OCBwb3dlcl9jdGw7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfZHBpICpt dGtfZHBpX2Zyb21fZW5jb2RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmUpCit7CisJcmV0dXJuIGNv bnRhaW5lcl9vZihlLCBzdHJ1Y3QgbXRrX2RwaSwgZW5jb2Rlcik7Cit9CisKK2ludCBtdGtfZHBp X3NldF9kaXNwbGF5X21vZGUoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCSAgICAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUpOworCisjZW5kaWYgLyogX01US19EUElfSCAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGlfcmVncy5oIGIvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcGlfcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjRiNmFkNDcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RwaV9yZWdzLmgKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQg KGMpIDIwMTQgTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlh dGVrLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKi8KKyNpZm5kZWYgX19NVEtfRFBJX1JFR1NfSAorI2RlZmluZSBfX01US19EUElfUkVHU19I CisKKyNkZWZpbmUgRFBJX0VOCQkJMHgwMAorI2RlZmluZSBFTgkJCQlCSVQoMCkKKworI2RlZmlu ZSBEUElfUkVUCQkJMHgwNAorI2RlZmluZSBSU1QJCQkJQklUKDApCisKKyNkZWZpbmUgRFBJX0lO VEVOCQkweDA4CisjZGVmaW5lIElOVF9WU1lOQ19FTgkJCUJJVCgwKQorI2RlZmluZSBJTlRfVkRF X0VOCQkJQklUKDEpCisjZGVmaW5lIElOVF9VTkRFUkZMT1dfRU4JCUJJVCgyKQorCisjZGVmaW5l IERQSV9JTlRTVEEJCTB4MEMKKyNkZWZpbmUgSU5UX1ZTWU5DX1NUQQkJCUJJVCgwKQorI2RlZmlu ZSBJTlRfVkRFX1NUQQkJCUJJVCgxKQorI2RlZmluZSBJTlRfVU5ERVJGTE9XX1NUQQkJQklUKDIp CisKKyNkZWZpbmUgRFBJX0NPTgkJCTB4MTAKKyNkZWZpbmUgQkdfRU5BQkxFCQkJQklUKDApCisj ZGVmaW5lIElOX1JCX1NXQVAJCQlCSVQoMSkKKyNkZWZpbmUgSU5UTF9FTgkJCQlCSVQoMikKKyNk ZWZpbmUgVERGUF9FTgkJCQlCSVQoMykKKyNkZWZpbmUgQ0xQRl9FTgkJCQlCSVQoNCkKKyNkZWZp bmUgWVVWNDIyX0VOCQkJQklUKDUpCisjZGVmaW5lIENTQ19FTkFCTEUJCQlCSVQoNikKKyNkZWZp bmUgUjYwMV9TRUwJCQlCSVQoNykKKyNkZWZpbmUgRU1CU1lOQ19FTgkJCUJJVCg4KQorI2RlZmlu ZSBWU19MT0REX0VOCQkJQklUKDE2KQorI2RlZmluZSBWU19MRVZFTl9FTgkJCUJJVCgxNykKKyNk ZWZpbmUgVlNfUk9ERF9FTgkJCUJJVCgxOCkKKyNkZWZpbmUgVlNfUkVWRU4JCQlCSVQoMTkpCisj ZGVmaW5lIEZBS0VfREVfTE9ERAkJCUJJVCgyMCkKKyNkZWZpbmUgRkFLRV9ERV9MRVZFTgkJCUJJ VCgyMSkKKyNkZWZpbmUgRkFLRV9ERV9ST0RECQkJQklUKDIyKQorI2RlZmluZSBGQUtFX0RFX1JF VkVOCQkJQklUKDIzKQorCisjZGVmaW5lIERQSV9PVVRQVVRfU0VUVElORwkweDE0CisjZGVmaW5l IENIX1NXQVAJCQkJMAorI2RlZmluZSBDSF9TV0FQX01BU0sJCQkoMHg3IDw8IDApCisjZGVmaW5l IFNXQVBfUkdCCQkJMHgwMAorI2RlZmluZSBTV0FQX0dCUgkJCTB4MDEKKyNkZWZpbmUgU1dBUF9C UkcJCQkweDAyCisjZGVmaW5lIFNXQVBfUkJHCQkJMHgwMworI2RlZmluZSBTV0FQX0dSQgkJCTB4 MDQKKyNkZWZpbmUgU1dBUF9CR1IJCQkweDA1CisjZGVmaW5lIEJJVF9TV0FQCQkJQklUKDMpCisj ZGVmaW5lIEJfTUFTSwkJCQlCSVQoNCkKKyNkZWZpbmUgR19NQVNLCQkJCUJJVCg1KQorI2RlZmlu ZSBSX01BU0sJCQkJQklUKDYpCisjZGVmaW5lIERFX01BU0sJCQkJQklUKDgpCisjZGVmaW5lIEhT X01BU0sJCQkJQklUKDkpCisjZGVmaW5lIFZTX01BU0sJCQkJQklUKDEwKQorI2RlZmluZSBERV9Q T0wJCQkJQklUKDEyKQorI2RlZmluZSBIU1lOQ19QT0wJCQlCSVQoMTMpCisjZGVmaW5lIFZTWU5D X1BPTAkJCUJJVCgxNCkKKyNkZWZpbmUgQ0tfUE9MCQkJCUJJVCgxNSkKKyNkZWZpbmUgT0VOX09G RgkJCQlCSVQoMTYpCisjZGVmaW5lIEVER0VfU0VMCQkJQklUKDE3KQorI2RlZmluZSBPVVRfQklU CQkJCTE4CisjZGVmaW5lIE9VVF9CSVRfTUFTSwkJCSgweDMgPDwgMTgpCisjZGVmaW5lIE9VVF9C SVRfOAkJCTB4MDAKKyNkZWZpbmUgT1VUX0JJVF8xMAkJCTB4MDEKKyNkZWZpbmUgT1VUX0JJVF8x MgkJCTB4MDIKKyNkZWZpbmUgT1VUX0JJVF8xNgkJCTB4MDMKKyNkZWZpbmUgWUNfTUFQCQkJCTIw CisjZGVmaW5lIFlDX01BUF9NQVNLCQkJKDB4NyA8PCAyMCkKKyNkZWZpbmUgWUNfTUFQX1JHQgkJ CTB4MDAKKyNkZWZpbmUgWUNfTUFQX0NZQ1kJCQkweDA0CisjZGVmaW5lIFlDX01BUF9ZQ1lDCQkJ MHgwNQorI2RlZmluZSBZQ19NQVBfQ1kJCQkweDA2CisjZGVmaW5lIFlDX01BUF9ZQwkJCTB4MDcK KworI2RlZmluZSBEUElfU0laRQkJMHgxOAorI2RlZmluZSBIU0laRQkJCQkwCisjZGVmaW5lIEhT SVpFX01BU0sJCQkoMHgxRkZGIDw8IDApCisjZGVmaW5lIFZTSVpFCQkJCTE2CisjZGVmaW5lIFZT SVpFX01BU0sJCQkoMHgxRkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9ERFJfU0VUVElORwkJMHgx QworI2RlZmluZSBERFJfRU4JCQkJQklUKDApCisjZGVmaW5lIERERFJfU0VMCQkJQklUKDEpCisj ZGVmaW5lIEREUl80UEhBU0UJCQlCSVQoMikKKyNkZWZpbmUgRERSX1dJRFRICQkJKDB4MyA8PCA0 KQorI2RlZmluZSBERFJfUEFEX01PREUJCQkoMHgxIDw8IDgpCisKKyNkZWZpbmUgRFBJX1RHRU5f SFdJRFRICQkweDIwCisjZGVmaW5lIEhQVwkJCQkwCisjZGVmaW5lIEhQV19NQVNLCQkJKDB4RkZG IDw8IDApCisKKyNkZWZpbmUgRFBJX1RHRU5fSFBPUkNICQkweDI0CisjZGVmaW5lIEhCUAkJCQkw CisjZGVmaW5lIEhCUF9NQVNLCQkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEhGUAkJCQkxNgorI2Rl ZmluZSBIRlBfTUFTSwkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfVEdFTl9WV0lEVEgJ CTB4MjgKKyNkZWZpbmUgRFBJX1RHRU5fVlBPUkNICQkweDJDCisKKyNkZWZpbmUgVlNZTkNfV0lE VEhfU0hJRlQJCTAKKyNkZWZpbmUgVlNZTkNfV0lEVEhfTUFTSwkJKDB4RkZGIDw8IDApCisjZGVm aW5lIFZTWU5DX0hBTEZfTElORV9TSElGVAkJMTYKKyNkZWZpbmUgVlNZTkNfSEFMRl9MSU5FX01B U0sJCUJJVCgxNikKKyNkZWZpbmUgVlNZTkNfQkFDS19QT1JDSF9TSElGVAkJMAorI2RlZmluZSBW U1lOQ19CQUNLX1BPUkNIX01BU0sJCSgweEZGRiA8PCAwKQorI2RlZmluZSBWU1lOQ19GUk9OVF9Q T1JDSF9TSElGVAkJMTYKKyNkZWZpbmUgVlNZTkNfRlJPTlRfUE9SQ0hfTUFTSwkJKDB4RkZGIDw8 IDE2KQorCisjZGVmaW5lIERQSV9CR19IQ05UTAkJMHgzMAorI2RlZmluZSBCR19SSUdIVAkJCSgw eDFGRkYgPDwgMCkKKyNkZWZpbmUgQkdfTEVGVAkJCQkoMHgxRkZGIDw8IDE2KQorCisjZGVmaW5l IERQSV9CR19WQ05UTAkJMHgzNAorI2RlZmluZSBCR19CT1QJCQkJKDB4MUZGRiA8PCAwKQorI2Rl ZmluZSBCR19UT1AJCQkJKDB4MUZGRiA8PCAxNikKKworI2RlZmluZSBEUElfQkdfQ09MT1IJCTB4 MzgKKyNkZWZpbmUgQkdfQgkJCQkoMHhGIDw8IDApCisjZGVmaW5lIEJHX0cJCQkJKDB4RiA8PCA4 KQorI2RlZmluZSBCR19SCQkJCSgweEYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0ZJRk9fQ1RMCQkw eDNDCisjZGVmaW5lIEZJRk9fVkFMSURfU0VUCQkJKDB4MUYgPDwgMCkKKyNkZWZpbmUgRklGT19S U1RfU0VMCQkJKDB4MSA8PCA4KQorCisjZGVmaW5lIERQSV9TVEFUVVMJCTB4NDAKKyNkZWZpbmUg VkNPVU5URVIJCQkoMHgxRkZGIDw8IDApCisjZGVmaW5lIERQSV9CVVNZCQkJQklUKDE2KQorI2Rl ZmluZSBPVVRFTgkJCQlCSVQoMTcpCisjZGVmaW5lIEZJRUxECQkJCUJJVCgyMCkKKyNkZWZpbmUg VERMUgkJCQlCSVQoMjEpCisKKyNkZWZpbmUgRFBJX1RNT0RFCQkweDQ0CisjZGVmaW5lIERQSV9P RU5fT04JCQlCSVQoMCkKKworI2RlZmluZSBEUElfQ0hFQ0tTVU0JCTB4NDgKKyNkZWZpbmUgRFBJ X0NIRUNLU1VNX01BU0sJCSgweEZGRkZGRiA8PCAwKQorI2RlZmluZSBEUElfQ0hFQ0tTVU1fUkVB RFkJCUJJVCgzMCkKKyNkZWZpbmUgRFBJX0NIRUNLU1VNX0VOCQkJQklUKDMxKQorCisjZGVmaW5l IERQSV9EVU1NWQkJMHg1MAorI2RlZmluZSBEUElfRFVNTVlfTUFTSwkJCSgweEZGRkZGRkZGIDw8 IDApCisKKyNkZWZpbmUgRFBJX1RHRU5fVldJRFRIX0xFVkVOCTB4NjgKKyNkZWZpbmUgRFBJX1RH RU5fVlBPUkNIX0xFVkVOCTB4NkMKKyNkZWZpbmUgRFBJX1RHRU5fVldJRFRIX1JPREQJMHg3MAor I2RlZmluZSBEUElfVEdFTl9WUE9SQ0hfUk9ERAkweDc0CisjZGVmaW5lIERQSV9UR0VOX1ZXSURU SF9SRVZFTgkweDc4CisjZGVmaW5lIERQSV9UR0VOX1ZQT1JDSF9SRVZFTgkweDdDCisKKyNkZWZp bmUgRFBJX0VTQVZfVlRJTUlOR19MT0RECTB4ODAKKyNkZWZpbmUgRVNBVl9WT0ZTVF9MT0RECQkJ KDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9MT0RECQkJKDB4RkZGIDw8IDE2KQorCisj ZGVmaW5lIERQSV9FU0FWX1ZUSU1JTkdfTEVWRU4JMHg4NAorI2RlZmluZSBFU0FWX1ZPRlNUX0xF VkVOCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9WV0lEX0xFVkVOCQkJKDB4RkZGIDw8IDE2 KQorCisjZGVmaW5lIERQSV9FU0FWX1ZUSU1JTkdfUk9ERAkweDg4CisjZGVmaW5lIEVTQVZfVk9G U1RfUk9ERAkJCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FWX1ZXSURfUk9ERAkJCSgweEZGRiA8 PCAxNikKKworI2RlZmluZSBEUElfRVNBVl9WVElNSU5HX1JFVkVOCTB4OEMKKyNkZWZpbmUgRVNB Vl9WT0ZTVF9SRVZFTgkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9SRVZFTgkJCSgw eEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfRVNBVl9GVElNSU5HCTB4OTAKKyNkZWZpbmUgRVNB Vl9GT0ZTVF9PREQJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9GT0ZTVF9FVkVOCQkJKDB4 RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9DTFBGX1NFVFRJTkcJMHg5NAorI2RlZmluZSBDTFBG X1RZUEUJCQkoMHgzIDw8IDApCisjZGVmaW5lIFJPVU5EX0VOCQkJQklUKDQpCisKKyNkZWZpbmUg RFBJX1lfTElNSVQJCTB4OTgKKyNkZWZpbmUgWV9MSU1JTlRfQk9UCQkJMAorI2RlZmluZSBZX0xJ TUlOVF9CT1RfTUFTSwkJKDB4RkZGIDw8IDApCisjZGVmaW5lIFlfTElNSU5UX1RPUAkJCTE2Cisj ZGVmaW5lIFlfTElNSU5UX1RPUF9NQVNLCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0Nf TElNSVQJCTB4OUMKKyNkZWZpbmUgQ19MSU1JVF9CT1QJCQkwCisjZGVmaW5lIENfTElNSVRfQk9U X01BU0sJCSgweEZGRiA8PCAwKQorI2RlZmluZSBDX0xJTUlUX1RPUAkJCTE2CisjZGVmaW5lIENf TElNSVRfVE9QX01BU0sJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfWVVWNDIyX1NFVFRJ TkcJMHhBMAorI2RlZmluZSBVVl9TV0FQCQkJCUJJVCgwKQorI2RlZmluZSBDUl9ERUxTRUwJCQlC SVQoNCkKKyNkZWZpbmUgQ0JfREVMU0VMCQkJQklUKDUpCisjZGVmaW5lIFlfREVMU0VMCQkJQklU KDYpCisjZGVmaW5lIERFX0RFTFNFTAkJCUJJVCg3KQorCisjZGVmaW5lIERQSV9FTUJTWU5DX1NF VFRJTkcJMHhBNAorI2RlZmluZSBFTUJTWU5DX1JfQ1JfRU4JCQlCSVQoMCkKKyNkZWZpbmUgRU1Q U1lOQ19HX1lfRU4JCQlCSVQoMSkKKyNkZWZpbmUgRU1QU1lOQ19CX0NCX0VOCQkJQklUKDIpCisj ZGVmaW5lIEVTQVZfRl9JTlYJCQlCSVQoNCkKKyNkZWZpbmUgRVNBVl9WX0lOVgkJCUJJVCg1KQor I2RlZmluZSBFU0FWX0hfSU5WCQkJQklUKDYpCisjZGVmaW5lIEVTQVZfQ09ERV9NQU4JCQlCSVQo OCkKKyNkZWZpbmUgVlNfT1VUX1NFTAkJCSgweDcgPDwgMTIpCisKKyNkZWZpbmUgRFBJX0VTQVZf Q09ERV9TRVQwCTB4QTgKKyNkZWZpbmUgRVNBVl9DT0RFMAkJCSgweEZGRiA8PCAwKQorI2RlZmlu ZSBFU0FWX0NPREUxCQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9FU0FWX0NPREVfU0VU MQkweEFDCisjZGVmaW5lIEVTQVZfQ09ERTIJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9D T0RFM19NU0IJCQlCSVQoMTYpCisKKyNkZWZpbmUgRFBJX0hfRlJFX0NPTgkJMHhFMAorI2RlZmlu ZSBIX0ZSRV8yTgkJCUJJVCgyNSkKKyNlbmRpZiAvKiBfX01US19EUElfUkVHU19IICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCmluZGV4IDRjNzdjMDAuLjhiYzlmNDggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCkBAIC01NDAsNiArNTQwLDcgQEAg c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKiBjb25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9 IHsKIAkmbXRrX2Rpc3BfcmRtYV9kcml2ZXIsCiAJJm10a19kc2lfZHJpdmVyLAogCSZtdGtfbWlw aV90eF9kcml2ZXIsCisJJm10a19kcGlfZHJpdmVyLAogfTsKIAogc3RhdGljIGludCBfX2luaXQg bXRrX2RybV9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCmlu ZGV4IDJjZDA0ZTAuLmIxMzQwZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5oCkBAIC01MSw1ICs1MSw2IEBAIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19k aXNwX292bF9kcml2ZXI7CiBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZGlzcF9y ZG1hX2RyaXZlcjsKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kc2lfZHJpdmVy OwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX21pcGlfdHhfZHJpdmVyOworZXh0 ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RwaV9kcml2ZXI7CiAKICNlbmRpZiAvKiBN VEtfRFJNX0RSVl9IICovCi0tIAoyLjcuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==