From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH v14 4/8] drm/mediatek: Add DPI sub driver Date: Mon, 11 Apr 2016 17:09:32 +0200 Message-ID: <1460387376-11799-5-git-send-email-p.zabel@pengutronix.de> References: <1460387376-11799-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: <1460387376-11799-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: devicetree@vger.kernel.org RnJvbTogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CgpBZGQgRFBJIGNvbm5lY3Rvci9l bmNvZGVyIHRvIHN1cHBvcnQgSERNSSBvdXRwdXQgdmlhIHRoZQphdHRhY2hlZCBIRE1JIGJyaWRn ZS4KClNpZ25lZC1vZmYtYnk6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgpTaWduZWQt b2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgotLQpDaGFuZ2Vz IHNpbmNlIHYxMzoKIC0gUmVtb3ZlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucwogLSBNZWxkIG10 a19kcGkuaCBpbnRvIG10a19kcGkuYwogLSBNYWtlIG10a19kcGlfc2V0X2Rpc3BsYXlfbW9kZSBz dGF0aWMKIC0gRml4IG1pc3NpbmcgYnJpZGdlIG5vZGUgZXJyb3IgcGF0aAotLS0KIGRyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcGkuYyAgICAgIHwgNzY5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmggfCAyMjggKysr KysrKysrKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oICB8ICAgMSArCiA1IGZpbGVz IGNoYW5nZWQsIDEwMDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvTWFrZWZpbGUKaW5kZXggZTc4MWRiNWEuLjVmY2Y1OGUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvTWFrZWZpbGUKQEAgLTgsNiArOCw3IEBAIG1lZGlhdGVrLWRybS15IDo9IG10a19kaXNwX292 bC5vIFwKIAkJICBtdGtfZHJtX2dlbS5vIFwKIAkJICBtdGtfZHJtX3BsYW5lLm8gXAogCQkgIG10 a19kc2kubyBcCi0JCSAgbXRrX21pcGlfdHgubworCQkgIG10a19taXBpX3R4Lm8gXAorCQkgIG10 a19kcGkubwogCiBvYmotJChDT05GSUdfRFJNX01FRElBVEVLKSArPSBtZWRpYXRlay1kcm0ubwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZDA1Y2E3OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHBpLmMKQEAgLTAsMCArMSw3NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQg TWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNvbT4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKyNp bmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2luY2x1ZGUg PGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNs dWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2Uu aD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+Cisj aW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNp bmNsdWRlIDxsaW51eC9jbGsuaD4KKworI2luY2x1ZGUgIm10a19kcGlfcmVncy5oIgorI2luY2x1 ZGUgIm10a19kcm1fZGRwX2NvbXAuaCIKKworZW51bSBtdGtfZHBpX291dF9iaXRfbnVtIHsKKwlN VEtfRFBJX09VVF9CSVRfTlVNXzhCSVRTLAorCU1US19EUElfT1VUX0JJVF9OVU1fMTBCSVRTLAor CU1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTLAorCU1US19EUElfT1VUX0JJVF9OVU1fMTZCSVRT Cit9OworCitlbnVtIG10a19kcGlfb3V0X3ljX21hcCB7CisJTVRLX0RQSV9PVVRfWUNfTUFQX1JH QiwKKwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1lDWSwKKwlNVEtfRFBJX09VVF9ZQ19NQVBfWUNZQywK KwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1ksCisJTVRLX0RQSV9PVVRfWUNfTUFQX1lDCit9OworCitl bnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCB7CisJTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQ X1JHQiwKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR0JSLAorCU1US19EUElfT1VUX0NIQU5O RUxfU1dBUF9CUkcsCisJTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JCRywKKwlNVEtfRFBJX09V VF9DSEFOTkVMX1NXQVBfR1JCLAorCU1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9CR1IKK307CisK K2VudW0gbXRrX2RwaV9vdXRfY29sb3JfZm9ybWF0IHsKKwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9S R0IsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfUkdCX0ZVTEwsCisJTVRLX0RQSV9DT0xPUl9GT1JN QVRfWUNCQ1JfNDQ0LAorCU1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQyMiwKKwlNVEtfRFBJ X0NPTE9SX0ZPUk1BVF9YVl9ZQ0MsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDQ0X0ZV TEwsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDIyX0ZVTEwKK307CisKK3N0cnVjdCBt dGtfZHBpIHsKKwlzdHJ1Y3QgbXRrX2RkcF9jb21wIGRkcF9jb21wOworCXN0cnVjdCBkcm1fZW5j b2RlciBlbmNvZGVyOworCXZvaWQgX19pb21lbSAqcmVnczsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7 CisJc3RydWN0IGNsayAqZW5naW5lX2NsazsKKwlzdHJ1Y3QgY2xrICpwaXhlbF9jbGs7CisJc3Ry dWN0IGNsayAqdHZkX2NsazsKKwlpbnQgaXJxOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1v ZGU7CisJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgY29sb3JfZm9ybWF0OworCWVudW0g bXRrX2RwaV9vdXRfeWNfbWFwIHljX21hcDsKKwllbnVtIG10a19kcGlfb3V0X2JpdF9udW0gYml0 X251bTsKKwllbnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCBjaGFubmVsX3N3YXA7CisJYm9v bCBwb3dlcl9zdGE7CisJdTggcG93ZXJfY3RsOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3Qg bXRrX2RwaSAqbXRrX2RwaV9mcm9tX2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVyICplKQorewor CXJldHVybiBjb250YWluZXJfb2YoZSwgc3RydWN0IG10a19kcGksIGVuY29kZXIpOworfQorCitl bnVtIG10a19kcGlfcG9sYXJpdHkgeworCU1US19EUElfUE9MQVJJVFlfUklTSU5HLAorCU1US19E UElfUE9MQVJJVFlfRkFMTElORywKK307CisKK2VudW0gbXRrX2RwaV9wb3dlcl9jdGwgeworCURQ SV9QT1dFUl9TVEFSVCA9IEJJVCgwKSwKKwlEUElfUE9XRVJfRU5BQkxFID0gQklUKDEpLAorfTsK Kworc3RydWN0IG10a19kcGlfcG9sYXJpdGllcyB7CisJZW51bSBtdGtfZHBpX3BvbGFyaXR5IGRl X3BvbDsKKwllbnVtIG10a19kcGlfcG9sYXJpdHkgY2tfcG9sOworCWVudW0gbXRrX2RwaV9wb2xh cml0eSBoc3luY19wb2w7CisJZW51bSBtdGtfZHBpX3BvbGFyaXR5IHZzeW5jX3BvbDsKK307CisK K3N0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0geworCXUzMiBzeW5jX3dpZHRoOworCXUzMiBmcm9u dF9wb3JjaDsKKwl1MzIgYmFja19wb3JjaDsKKwlib29sIHNoaWZ0X2hhbGZfbGluZTsKK307CisK K3N0cnVjdCBtdGtfZHBpX3ljX2xpbWl0IHsKKwl1MTYgeV90b3A7CisJdTE2IHlfYm90dG9tOwor CXUxNiBjX3RvcDsKKwl1MTYgY19ib3R0b207Cit9OworCitzdGF0aWMgdm9pZCBtdGtfZHBpX21h c2soc3RydWN0IG10a19kcGkgKmRwaSwgdTMyIG9mZnNldCwgdTMyIHZhbCwgdTMyIG1hc2spCit7 CisJdTMyIHRtcCA9IHJlYWRsKGRwaS0+cmVncyArIG9mZnNldCkgJiB+bWFzazsKKworCXRtcCB8 PSAodmFsICYgbWFzayk7CisJd3JpdGVsKHRtcCwgZHBpLT5yZWdzICsgb2Zmc2V0KTsKK30KKwor c3RhdGljIHZvaWQgbXRrX2RwaV9zd19yZXNldChzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIHJl c2V0KQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9SRVQsIHJlc2V0ID8gUlNUIDogMCwgUlNU KTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9lbmFibGUoc3RydWN0IG10a19kcGkgKmRwaSkK K3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfRU4sIEVOLCBFTik7Cit9CisKK3N0YXRpYyB2b2lk IG10a19kcGlfZGlzYWJsZShzdHJ1Y3QgbXRrX2RwaSAqZHBpKQoreworCW10a19kcGlfbWFzayhk cGksIERQSV9FTiwgMCwgRU4pOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19oc3lu YyhzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpz eW5jKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hXSURUSCwKKwkJICAgICBzeW5j LT5zeW5jX3dpZHRoIDw8IEhQVywgSFBXX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9U R0VOX0hQT1JDSCwKKwkJICAgICBzeW5jLT5iYWNrX3BvcmNoIDw8IEhCUCwgSEJQX01BU0spOwor CW10a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hQT1JDSCwgc3luYy0+ZnJvbnRfcG9yY2ggPDwg SEZQLAorCQkgICAgIEhGUF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdf dnN5bmMoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgc3RydWN0IG10a19kcGlfc3luY19wYXJh bSAqc3luYywKKwkJCQkgdTMyIHdpZHRoX2FkZHIsIHUzMiBwb3JjaF9hZGRyKQoreworCW10a19k cGlfbWFzayhkcGksIHdpZHRoX2FkZHIsCisJCSAgICAgc3luYy0+c3luY193aWR0aCA8PCBWU1lO Q19XSURUSF9TSElGVCwKKwkJICAgICBWU1lOQ19XSURUSF9NQVNLKTsKKwltdGtfZHBpX21hc2so ZHBpLCB3aWR0aF9hZGRyLAorCQkgICAgIHN5bmMtPnNoaWZ0X2hhbGZfbGluZSA8PCBWU1lOQ19I QUxGX0xJTkVfU0hJRlQsCisJCSAgICAgVlNZTkNfSEFMRl9MSU5FX01BU0spOworCW10a19kcGlf bWFzayhkcGksIHBvcmNoX2FkZHIsCisJCSAgICAgc3luYy0+YmFja19wb3JjaCA8PCBWU1lOQ19C QUNLX1BPUkNIX1NISUZULAorCQkgICAgIFZTWU5DX0JBQ0tfUE9SQ0hfTUFTSyk7CisJbXRrX2Rw aV9tYXNrKGRwaSwgcG9yY2hfYWRkciwKKwkJICAgICBzeW5jLT5mcm9udF9wb3JjaCA8PCBWU1lO Q19GUk9OVF9QT1JDSF9TSElGVCwKKwkJICAgICBWU1lOQ19GUk9OVF9QT1JDSF9NQVNLKTsKK30K Kworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfdnN5bmNfbG9kZChzdHJ1Y3QgbXRrX2RwaSAq ZHBpLAorCQkJCSAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5bmMpCit7CisJbXRr X2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdFTl9WV0lEVEgsIERQSV9UR0VOX1ZQ T1JDSCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX2xldmVuKHN0cnVj dCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5 bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdFTl9WV0lEVEhf TEVWRU4sCisJCQkgICAgIERQSV9UR0VOX1ZQT1JDSF9MRVZFTik7Cit9CisKK3N0YXRpYyB2b2lk IG10a19kcGlfY29uZmlnX3ZzeW5jX3JvZGQoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICAg ICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQoreworCW10a19kcGlfY29uZmlnX3Zz eW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRIX1JPREQsCisJCQkgICAgIERQSV9UR0VOX1ZQ T1JDSF9ST0REKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfdnN5bmNfcmV2ZW4o c3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICAgICAgc3RydWN0IG10a19kcGlfc3luY19wYXJh bSAqc3luYykKK3sKKwltdGtfZHBpX2NvbmZpZ192c3luYyhkcGksIHN5bmMsIERQSV9UR0VOX1ZX SURUSF9SRVZFTiwKKwkJCSAgICAgRFBJX1RHRU5fVlBPUkNIX1JFVkVOKTsKK30KKworc3RhdGlj IHZvaWQgbXRrX2RwaV9jb25maWdfcG9sKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkgICAgICAg c3RydWN0IG10a19kcGlfcG9sYXJpdGllcyAqZHBpX3BvbCkKK3sKKwl1bnNpZ25lZCBpbnQgcG9s OworCisJcG9sID0gKGRwaV9wb2wtPmNrX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZX1JJU0lORyA/ IDAgOiBDS19QT0wpIHwKKwkgICAgICAoZHBpX3BvbC0+ZGVfcG9sID09IE1US19EUElfUE9MQVJJ VFlfUklTSU5HID8gMCA6IERFX1BPTCkgfAorCSAgICAgIChkcGlfcG9sLT5oc3luY19wb2wgPT0g TVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDogSFNZTkNfUE9MKSB8CisJICAgICAgKGRwaV9w b2wtPnZzeW5jX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZX1JJU0lORyA/IDAgOiBWU1lOQ19QT0wp OworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQVVRfU0VUVElORywgcG9sLAorCQkgICAgIENL X1BPTCB8IERFX1BPTCB8IEhTWU5DX1BPTCB8IFZTWU5DX1BPTCk7Cit9CisKK3N0YXRpYyB2b2lk IG10a19kcGlfY29uZmlnXzNkKHN0cnVjdCBtdGtfZHBpICpkcGksIGJvb2wgZW5fM2QpCit7CisJ bXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5fM2QgPyBUREZQX0VOIDogMCwgVERGUF9FTik7 Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXRrX2Rw aSAqZHBpLCBib29sIGludGVyKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9DT04sIGludGVy ID8gSU5UTF9FTiA6IDAsIElOVExfRU4pOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZp Z19mYl9zaXplKHN0cnVjdCBtdGtfZHBpICpkcGksIHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKK3sK KwltdGtfZHBpX21hc2soZHBpLCBEUElfU0laRSwgd2lkdGggPDwgSFNJWkUsIEhTSVpFX01BU0sp OworCW10a19kcGlfbWFzayhkcGksIERQSV9TSVpFLCBoZWlnaHQgPDwgVlNJWkUsIFZTSVpFX01B U0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19jaGFubmVsX2xpbWl0KHN0cnVj dCBtdGtfZHBpICpkcGksCisJCQkJCSBzdHJ1Y3QgbXRrX2RwaV95Y19saW1pdCAqbGltaXQpCit7 CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1lfTElNSVQsIGxpbWl0LT55X2JvdHRvbSA8PCBZX0xJ TUlOVF9CT1QsCisJCSAgICAgWV9MSU1JTlRfQk9UX01BU0spOworCW10a19kcGlfbWFzayhkcGks IERQSV9ZX0xJTUlULCBsaW1pdC0+eV90b3AgPDwgWV9MSU1JTlRfVE9QLAorCQkgICAgIFlfTElN SU5UX1RPUF9NQVNLKTsKKwltdGtfZHBpX21hc2soZHBpLCBEUElfQ19MSU1JVCwgbGltaXQtPmNf Ym90dG9tIDw8IENfTElNSVRfQk9ULAorCQkgICAgIENfTElNSVRfQk9UX01BU0spOworCW10a19k cGlfbWFzayhkcGksIERQSV9DX0xJTUlULCBsaW1pdC0+Y190b3AgPDwgQ19MSU1JVF9UT1AsCisJ CSAgICAgQ19MSU1JVF9UT1BfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmln X2JpdF9udW0oc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICBlbnVtIG10a19kcGlfb3V0X2Jp dF9udW0gbnVtKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2ggKG51bSkgeworCWNhc2UgTVRLX0RQ SV9PVVRfQklUX05VTV84QklUUzoKKwkJdmFsID0gT1VUX0JJVF84OworCQlicmVhazsKKwljYXNl IE1US19EUElfT1VUX0JJVF9OVU1fMTBCSVRTOgorCQl2YWwgPSBPVVRfQklUXzEwOworCQlicmVh azsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTOgorCQl2YWwgPSBPVVRfQklUXzEy OworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTZCSVRTOgorCQl2YWwgPSBP VVRfQklUXzE2OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwgPSBPVVRfQklUXzg7CisJCWJy ZWFrOworCX0KKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHZhbCA8PCBP VVRfQklULAorCQkgICAgIE9VVF9CSVRfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlf Y29uZmlnX3ljX21hcChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgZW51bSBtdGtfZHBpX291 dF95Y19tYXAgbWFwKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2ggKG1hcCkgeworCWNhc2UgTVRL X0RQSV9PVVRfWUNfTUFQX1JHQjoKKwkJdmFsID0gWUNfTUFQX1JHQjsKKwkJYnJlYWs7CisJY2Fz ZSBNVEtfRFBJX09VVF9ZQ19NQVBfQ1lDWToKKwkJdmFsID0gWUNfTUFQX0NZQ1k7CisJCWJyZWFr OworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1lDWUM6CisJCXZhbCA9IFlDX01BUF9ZQ1lDOwor CQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9DWToKKwkJdmFsID0gWUNfTUFQX0NZ OworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9ZQzoKKwkJdmFsID0gWUNfTUFQ X1lDOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwgPSBZQ19NQVBfUkdCOworCQlicmVhazsK Kwl9CisKKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHZhbCA8PCBZQ19N QVAsIFlDX01BUF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfY2hhbm5l bF9zd2FwKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJCWVudW0gbXRrX2RwaV9vdXRfY2hhbm5l bF9zd2FwIHN3YXApCit7CisJdTMyIHZhbDsKKworCXN3aXRjaCAoc3dhcCkgeworCWNhc2UgTVRL X0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQjoKKwkJdmFsID0gU1dBUF9SR0I7CisJCWJyZWFrOwor CWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0dCUjoKKwkJdmFsID0gU1dBUF9HQlI7CisJ CWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0JSRzoKKwkJdmFsID0gU1dB UF9CUkc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JCRzoKKwkJ dmFsID0gU1dBUF9SQkc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQ X0dSQjoKKwkJdmFsID0gU1dBUF9HUkI7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hB Tk5FTF9TV0FQX0JHUjoKKwkJdmFsID0gU1dBUF9CR1I7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXZhbCA9IFNXQVBfUkdCOworCQlicmVhazsKKwl9CisKKwltdGtfZHBpX21hc2soZHBpLCBEUElf T1VUUFVUX1NFVFRJTkcsIHZhbCA8PCBDSF9TV0FQLCBDSF9TV0FQX01BU0spOworfQorCitzdGF0 aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKHN0cnVjdCBtdGtfZHBpICpkcGks IGJvb2wgZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9DT04sIGVuYWJsZSA/IFlV VjQyMl9FTiA6IDAsIFlVVjQyMl9FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmln X2NzY19lbmFibGUoc3RydWN0IG10a19kcGkgKmRwaSwgYm9vbCBlbmFibGUpCit7CisJbXRrX2Rw aV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxlID8gQ1NDX0VOQUJMRSA6IDAsIENTQ19FTkFCTEUp OworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KHN0cnVjdCBtdGtf ZHBpICpkcGksIGJvb2wgZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9DT04sIGVu YWJsZSA/IElOX1JCX1NXQVAgOiAwLCBJTl9SQl9TV0FQKTsKK30KKworc3RhdGljIHZvaWQgbXRr X2RwaV9jb25maWdfMm5faF9mcmUoc3RydWN0IG10a19kcGkgKmRwaSkKK3sKKwltdGtfZHBpX21h c2soZHBpLCBEUElfSF9GUkVfQ09OLCBIX0ZSRV8yTiwgSF9GUkVfMk4pOworfQorCitzdGF0aWMg dm9pZCBtdGtfZHBpX2NvbmZpZ19jb2xvcl9mb3JtYXQoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJ CQkJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgZm9ybWF0KQoreworCWlmICgoZm9ybWF0 ID09IE1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQ0NCkgfHwKKwkgICAgKGZvcm1hdCA9PSBN VEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80NDRfRlVMTCkpIHsKKwkJbXRrX2RwaV9jb25maWdf eXV2NDIyX2VuYWJsZShkcGksIGZhbHNlKTsKKwkJbXRrX2RwaV9jb25maWdfY3NjX2VuYWJsZShk cGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KGRwaSwgZmFsc2UpOworCQlt dGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBf QkdSKTsKKwl9IGVsc2UgaWYgKChmb3JtYXQgPT0gTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1Jf NDIyKSB8fAorCQkgICAoZm9ybWF0ID09IE1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQyMl9G VUxMKSkgeworCQltdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKGRwaSwgdHJ1ZSk7CisJCW10 a19kcGlfY29uZmlnX2NzY19lbmFibGUoZHBpLCB0cnVlKTsKKwkJbXRrX2RwaV9jb25maWdfc3dh cF9pbnB1dChkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBN VEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCKTsKKwl9IGVsc2UgeworCQltdGtfZHBpX2NvbmZp Z195dXY0MjJfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19jc2NfZW5hYmxl KGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KGRwaSwgZmFsc2UpOwor CQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJX09VVF9DSEFOTkVMX1NX QVBfUkdCKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfcG93ZXJfb2ZmKHN0cnVjdCBt dGtfZHBpICpkcGksIGVudW0gbXRrX2RwaV9wb3dlcl9jdGwgcGN0bCkKK3sKKwlkcGktPnBvd2Vy X2N0bCAmPSB+cGN0bDsKKworCWlmICgoZHBpLT5wb3dlcl9jdGwgJiBEUElfUE9XRVJfU1RBUlQp IHx8CisJICAgIChkcGktPnBvd2VyX2N0bCAmIERQSV9QT1dFUl9FTkFCTEUpKQorCQlyZXR1cm47 CisKKwlpZiAoIWRwaS0+cG93ZXJfc3RhKQorCQlyZXR1cm47CisKKwltdGtfZHBpX2Rpc2FibGUo ZHBpKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHBpLT5waXhlbF9jbGspOworCWNsa19kaXNh YmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOworCWRwaS0+cG93ZXJfc3RhID0gZmFsc2U7 Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9wb3dlcl9vbihzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBl bnVtIG10a19kcGlfcG93ZXJfY3RsIHBjdGwpCit7CisJaW50IHJldDsKKworCWRwaS0+cG93ZXJf Y3RsIHw9IHBjdGw7CisKKwlpZiAoIShkcGktPnBvd2VyX2N0bCAmIERQSV9QT1dFUl9TVEFSVCkg JiYKKwkgICAgIShkcGktPnBvd2VyX2N0bCAmIERQSV9QT1dFUl9FTkFCTEUpKQorCQlyZXR1cm4g MDsKKworCWlmIChkcGktPnBvd2VyX3N0YSkKKwkJcmV0dXJuIDA7CisKKwlyZXQgPSBjbGtfcHJl cGFyZV9lbmFibGUoZHBpLT5lbmdpbmVfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZHBp LT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIGVuZ2luZSBjbG9jazogJWRcbiIsIHJldCk7CisJCWdv dG8gZXJyX2VuZzsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHBpLT5waXhlbF9j bGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkcGktPmRldiwgIkZhaWxlZCB0byBlbmFibGUg cGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9waXhlbDsKKwl9CisKKwltdGtf ZHBpX2VuYWJsZShkcGkpOworCWRwaS0+cG93ZXJfc3RhID0gdHJ1ZTsKKwlyZXR1cm4gMDsKKwor ZXJyX3BpeGVsOgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOworZXJy X2VuZzoKKwlkcGktPnBvd2VyX2N0bCAmPSB+cGN0bDsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgaW50IG10a19kcGlfc2V0X2Rpc3BsYXlfbW9kZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJ CSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaV95 Y19saW1pdCBsaW1pdDsKKwlzdHJ1Y3QgbXRrX2RwaV9wb2xhcml0aWVzIGRwaV9wb2w7CisJc3Ry dWN0IG10a19kcGlfc3luY19wYXJhbSBoc3luYzsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFt IHZzeW5jX2xvZGQgPSB7IDAgfTsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX2xl dmVuID0geyAwIH07CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSB2c3luY19yb2RkID0geyAw IH07CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSB2c3luY19yZXZlbiA9IHsgMCB9OworCXVu c2lnbmVkIGxvbmcgcGl4X3JhdGU7CisJdW5zaWduZWQgbG9uZyBwbGxfcmF0ZTsKKwl1bnNpZ25l ZCBpbnQgZmFjdG9yOworCisJaWYgKCFkcGkpIHsKKwkJZGV2X2VycihkcGktPmRldiwgImludmFs aWQgYXJndW1lbnRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlwaXhfcmF0ZSA9IDEw MDBVTCAqIG1vZGUtPmNsb2NrOworCWlmIChtb2RlLT5jbG9jayA8PSA3NDAwMCkKKwkJZmFjdG9y ID0gOCAqIDM7CisJZWxzZQorCQlmYWN0b3IgPSA0ICogMzsKKwlwbGxfcmF0ZSA9IHBpeF9yYXRl ICogZmFjdG9yOworCisJZGV2X2RiZyhkcGktPmRldiwgIldhbnQgUExMICVsdSBIeiwgcGl4ZWwg Y2xvY2sgJWx1IEh6XG4iLAorCQlwbGxfcmF0ZSwgcGl4X3JhdGUpOworCisJY2xrX3NldF9yYXRl KGRwaS0+dHZkX2NsaywgcGxsX3JhdGUpOworCXBsbF9yYXRlID0gY2xrX2dldF9yYXRlKGRwaS0+ dHZkX2Nsayk7CisKKwlwaXhfcmF0ZSA9IHBsbF9yYXRlIC8gZmFjdG9yOworCWNsa19zZXRfcmF0 ZShkcGktPnBpeGVsX2NsaywgcGl4X3JhdGUpOworCXBpeF9yYXRlID0gY2xrX2dldF9yYXRlKGRw aS0+cGl4ZWxfY2xrKTsKKworCWRldl9kYmcoZHBpLT5kZXYsICJHb3QgIFBMTCAlbHUgSHosIHBp eGVsIGNsb2NrICVsdSBIelxuIiwKKwkJcGxsX3JhdGUsIHBpeF9yYXRlKTsKKworCWxpbWl0LmNf Ym90dG9tID0gMHgwMDEwOworCWxpbWl0LmNfdG9wID0gMHgwRkUwOworCWxpbWl0LnlfYm90dG9t ID0gMHgwMDEwOworCWxpbWl0LnlfdG9wID0gMHgwRkUwOworCisJZHBpX3BvbC5ja19wb2wgPSBN VEtfRFBJX1BPTEFSSVRZX0ZBTExJTkc7CisJZHBpX3BvbC5kZV9wb2wgPSBNVEtfRFBJX1BPTEFS SVRZX1JJU0lORzsKKwlkcGlfcG9sLmhzeW5jX3BvbCA9IG1vZGUtPmZsYWdzICYgRFJNX01PREVf RkxBR19QSFNZTkMgPworCQkJICAgIE1US19EUElfUE9MQVJJVFlfRkFMTElORyA6IE1US19EUElf UE9MQVJJVFlfUklTSU5HOworCWRwaV9wb2wudnN5bmNfcG9sID0gbW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX1BWU1lOQyA/CisJCQkgICAgTVRLX0RQSV9QT0xBUklUWV9GQUxMSU5HIDogTVRL X0RQSV9QT0xBUklUWV9SSVNJTkc7CisKKwloc3luYy5zeW5jX3dpZHRoID0gbW9kZS0+aHN5bmNf ZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJaHN5bmMuYmFja19wb3JjaCA9IG1vZGUtPmh0b3Rh bCAtIG1vZGUtPmhzeW5jX2VuZDsKKwloc3luYy5mcm9udF9wb3JjaCA9IG1vZGUtPmhzeW5jX3N0 YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJaHN5bmMuc2hpZnRfaGFsZl9saW5lID0gZmFsc2U7CisK Kwl2c3luY19sb2RkLnN5bmNfd2lkdGggPSBtb2RlLT52c3luY19lbmQgLSBtb2RlLT52c3luY19z dGFydDsKKwl2c3luY19sb2RkLmJhY2tfcG9yY2ggPSBtb2RlLT52dG90YWwgLSBtb2RlLT52c3lu Y19lbmQ7CisJdnN5bmNfbG9kZC5mcm9udF9wb3JjaCA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9k ZS0+dmRpc3BsYXk7CisJdnN5bmNfbG9kZC5zaGlmdF9oYWxmX2xpbmUgPSBmYWxzZTsKKworCWlm IChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFICYmCisJICAgIG1vZGUtPmZs YWdzICYgRFJNX01PREVfRkxBR18zRF9NQVNLKSB7CisJCXZzeW5jX2xldmVuID0gdnN5bmNfbG9k ZDsKKwkJdnN5bmNfcm9kZCA9IHZzeW5jX2xvZGQ7CisJCXZzeW5jX3JldmVuID0gdnN5bmNfbG9k ZDsKKwkJdnN5bmNfbGV2ZW4uc2hpZnRfaGFsZl9saW5lID0gdHJ1ZTsKKwkJdnN5bmNfcmV2ZW4u c2hpZnRfaGFsZl9saW5lID0gdHJ1ZTsKKwl9IGVsc2UgaWYgKG1vZGUtPmZsYWdzICYgRFJNX01P REVfRkxBR19JTlRFUkxBQ0UgJiYKKwkJICAgIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdf M0RfTUFTSykpIHsKKwkJdnN5bmNfbGV2ZW4gPSB2c3luY19sb2RkOworCQl2c3luY19sZXZlbi5z aGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCX0gZWxzZSBpZiAoIShtb2RlLT5mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKSAmJgorCQkgICBtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdf M0RfTUFTSykgeworCQl2c3luY19yb2RkID0gdnN5bmNfbG9kZDsKKwl9CisJbXRrX2RwaV9zd19y ZXNldChkcGksIHRydWUpOworCW10a19kcGlfY29uZmlnX3BvbChkcGksICZkcGlfcG9sKTsKKwor CW10a19kcGlfY29uZmlnX2hzeW5jKGRwaSwgJmhzeW5jKTsKKwltdGtfZHBpX2NvbmZpZ192c3lu Y19sb2RkKGRwaSwgJnZzeW5jX2xvZGQpOworCW10a19kcGlfY29uZmlnX3ZzeW5jX3JvZGQoZHBp LCAmdnN5bmNfcm9kZCk7CisJbXRrX2RwaV9jb25maWdfdnN5bmNfbGV2ZW4oZHBpLCAmdnN5bmNf bGV2ZW4pOworCW10a19kcGlfY29uZmlnX3ZzeW5jX3JldmVuKGRwaSwgJnZzeW5jX3JldmVuKTsK KworCW10a19kcGlfY29uZmlnXzNkKGRwaSwgISEobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFH XzNEX01BU0spKTsKKwltdGtfZHBpX2NvbmZpZ19pbnRlcmZhY2UoZHBpLCAhIShtb2RlLT5mbGFn cyAmCisJCQkJCSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkpOworCWlmIChtb2RlLT5mbGFncyAm IERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQorCQltdGtfZHBpX2NvbmZpZ19mYl9zaXplKGRwaSwg bW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5IC8gMik7CisJZWxzZQorCQltdGtfZHBpX2Nv bmZpZ19mYl9zaXplKGRwaSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKKworCW10 a19kcGlfY29uZmlnX2NoYW5uZWxfbGltaXQoZHBpLCAmbGltaXQpOworCW10a19kcGlfY29uZmln X2JpdF9udW0oZHBpLCBkcGktPmJpdF9udW0pOworCW10a19kcGlfY29uZmlnX2NoYW5uZWxfc3dh cChkcGksIGRwaS0+Y2hhbm5lbF9zd2FwKTsKKwltdGtfZHBpX2NvbmZpZ195Y19tYXAoZHBpLCBk cGktPnljX21hcCk7CisJbXRrX2RwaV9jb25maWdfY29sb3JfZm9ybWF0KGRwaSwgZHBpLT5jb2xv cl9mb3JtYXQpOworCW10a19kcGlfY29uZmlnXzJuX2hfZnJlKGRwaSk7CisJbXRrX2RwaV9zd19y ZXNldChkcGksIGZhbHNlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBp X2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJZHJtX2Vu Y29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9mdW5jcyBtdGtfZHBpX2VuY29kZXJfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBtdGtfZHBp X2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBib29sIG10a19kcGlfZW5jb2Rlcl9tb2Rl X2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJICAgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9p ZCBtdGtfZHBpX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAor CQkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJICAgICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBp ID0gbXRrX2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwlkcm1fbW9kZV9jb3B5KCZkcGkt Pm1vZGUsIGFkanVzdGVkX21vZGUpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJf ZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IG10a19kcGkg KmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29kZXIpOworCisJbXRrX2RwaV9wb3dlcl9v ZmYoZHBpLCBEUElfUE9XRVJfRU5BQkxFKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9lbmNv ZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IG10a19k cGkgKmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29kZXIpOworCisJbXRrX2RwaV9wb3dl cl9vbihkcGksIERQSV9QT1dFUl9FTkFCTEUpOworCW10a19kcGlfc2V0X2Rpc3BsYXlfbW9kZShk cGksICZkcGktPm1vZGUpOworfQorCitzdGF0aWMgaW50IG10a19kcGlfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCisJCQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVy X2Z1bmNzIG10a19kcGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLm1vZGVfZml4dXAgPSBt dGtfZHBpX2VuY29kZXJfbW9kZV9maXh1cCwKKwkubW9kZV9zZXQgPSBtdGtfZHBpX2VuY29kZXJf bW9kZV9zZXQsCisJLmRpc2FibGUgPSBtdGtfZHBpX2VuY29kZXJfZGlzYWJsZSwKKwkuZW5hYmxl ID0gbXRrX2RwaV9lbmNvZGVyX2VuYWJsZSwKKwkuYXRvbWljX2NoZWNrID0gbXRrX2RwaV9hdG9t aWNfY2hlY2ssCit9OworCitzdGF0aWMgdm9pZCBtdGtfZHBpX3N0YXJ0KHN0cnVjdCBtdGtfZGRw X2NvbXAgKmNvbXApCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGNvbnRhaW5lcl9vZihjb21w LCBzdHJ1Y3QgbXRrX2RwaSwgZGRwX2NvbXApOworCisJbXRrX2RwaV9wb3dlcl9vbihkcGksIERQ SV9QT1dFUl9TVEFSVCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfc3RvcChzdHJ1Y3QgbXRr X2RkcF9jb21wICpjb21wKQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBjb250YWluZXJfb2Yo Y29tcCwgc3RydWN0IG10a19kcGksIGRkcF9jb21wKTsKKworCW10a19kcGlfcG93ZXJfb2ZmKGRw aSwgRFBJX1BPV0VSX1NUQVJUKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZGRwX2Nv bXBfZnVuY3MgbXRrX2RwaV9mdW5jcyA9IHsKKwkuc3RhcnQgPSBtdGtfZHBpX3N0YXJ0LAorCS5z dG9wID0gbXRrX2RwaV9zdG9wLAorfTsKKworc3RhdGljIGludCBtdGtfZHBpX2JpbmQoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCit7CisJc3Ry dWN0IG10a19kcGkgKmRwaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm1fZGV2ID0gZGF0YTsKKwlpbnQgcmV0OworCisJcmV0ID0gbXRrX2RkcF9jb21wX3Jl Z2lzdGVyKGRybV9kZXYsICZkcGktPmRkcF9jb21wKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZf ZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBjb21wb25lbnQgJXM6ICVkXG4iLAorCQkJZGV2 LT5vZl9ub2RlLT5mdWxsX25hbWUsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0g ZHJtX2VuY29kZXJfaW5pdChkcm1fZGV2LCAmZHBpLT5lbmNvZGVyLCAmbXRrX2RwaV9lbmNvZGVy X2Z1bmNzLAorCQkJICAgICAgIERSTV9NT0RFX0VOQ09ERVJfVE1EUywgTlVMTCk7CisJaWYgKHJl dCkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIGRlY29kZXI6ICVkXG4i LCByZXQpOworCQlnb3RvIGVycl91bnJlZ2lzdGVyOworCX0KKwlkcm1fZW5jb2Rlcl9oZWxwZXJf YWRkKCZkcGktPmVuY29kZXIsICZtdGtfZHBpX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKKworCS8q IEN1cnJlbnRseSBEUEkwIGlzIGZpeGVkIHRvIGJlIGRyaXZlbiBieSBPVkwxICovCisJZHBpLT5l bmNvZGVyLnBvc3NpYmxlX2NydGNzID0gQklUKDEpOworCisJZHBpLT5lbmNvZGVyLmJyaWRnZS0+ ZW5jb2RlciA9ICZkcGktPmVuY29kZXI7CisJcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goZHBpLT5l bmNvZGVyLmRldiwgZHBpLT5lbmNvZGVyLmJyaWRnZSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byBhdHRhY2ggYnJpZGdlOiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJf Y2xlYW51cDsKKwl9CisKKwlkcGktPmJpdF9udW0gPSBNVEtfRFBJX09VVF9CSVRfTlVNXzhCSVRT OworCWRwaS0+Y2hhbm5lbF9zd2FwID0gTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQjsKKwlk cGktPnljX21hcCA9IE1US19EUElfT1VUX1lDX01BUF9SR0I7CisJZHBpLT5jb2xvcl9mb3JtYXQg PSBNVEtfRFBJX0NPTE9SX0ZPUk1BVF9SR0I7CisKKwlyZXR1cm4gMDsKKworZXJyX2NsZWFudXA6 CisJZHJtX2VuY29kZXJfY2xlYW51cCgmZHBpLT5lbmNvZGVyKTsKK2Vycl91bnJlZ2lzdGVyOgor CW10a19kZHBfY29tcF91bnJlZ2lzdGVyKGRybV9kZXYsICZkcGktPmRkcF9jb21wKTsKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKKwkJCSAgIHZvaWQgKmRhdGEpCit7CisJc3RydWN0 IG10a19kcGkgKmRwaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNl ICpkcm1fZGV2ID0gZGF0YTsKKworCWRybV9lbmNvZGVyX2NsZWFudXAoJmRwaS0+ZW5jb2Rlcik7 CisJbXRrX2RkcF9jb21wX3VucmVnaXN0ZXIoZHJtX2RldiwgJmRwaS0+ZGRwX2NvbXApOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgbXRrX2RwaV9jb21wb25lbnRfb3Bz ID0geworCS5iaW5kID0gbXRrX2RwaV9iaW5kLAorCS51bmJpbmQgPSBtdGtfZHBpX3VuYmluZCwK K307CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3RydWN0IG10a19k cGkgKmRwaTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVw LCAqYnJpZGdlX25vZGUgPSBOVUxMOworCWludCBjb21wX2lkOworCWludCByZXQ7CisKKwlkcGkg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRwaSksIEdGUF9LRVJORUwpOworCWlmICghZHBp KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRwaS0+ZGV2ID0gZGV2OworCisJbWVtID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlkcGktPnJlZ3MgPSBk ZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCBtZW0pOworCWlmIChJU19FUlIoZHBpLT5yZWdzKSkg eworCQlyZXQgPSBQVFJfRVJSKGRwaS0+cmVncyk7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRv IGlvcmVtYXAgbWVtIHJlc291cmNlOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisK KwlkcGktPmVuZ2luZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiZW5naW5lIik7CisJaWYgKElT X0VSUihkcGktPmVuZ2luZV9jbGspKSB7CisJCXJldCA9IFBUUl9FUlIoZHBpLT5lbmdpbmVfY2xr KTsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGVuZ2luZSBjbG9jazogJWRcbiIsIHJl dCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHBpLT5waXhlbF9jbGsgPSBkZXZtX2Nsa19nZXQo ZGV2LCAicGl4ZWwiKTsKKwlpZiAoSVNfRVJSKGRwaS0+cGl4ZWxfY2xrKSkgeworCQlyZXQgPSBQ VFJfRVJSKGRwaS0+cGl4ZWxfY2xrKTsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHBp eGVsIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcGktPnR2ZF9j bGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGxsIik7CisJaWYgKElTX0VSUihkcGktPnR2ZF9jbGsp KSB7CisJCXJldCA9IFBUUl9FUlIoZHBpLT50dmRfY2xrKTsKKwkJZGV2X2VycihkZXYsICJGYWls ZWQgdG8gZ2V0IHR2ZHBsbCBjbG9jazogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQor CisJZHBpLT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmIChkcGktPmlycSA8 PSAwKSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBpcnE6ICVkXG4iLCBkcGktPmly cSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWVwID0gb2ZfZ3JhcGhfZ2V0X25leHRfZW5k cG9pbnQoZGV2LT5vZl9ub2RlLCBOVUxMKTsKKwlpZiAoZXApIHsKKwkJYnJpZGdlX25vZGUgPSBv Zl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVwKTsKKwkJb2Zfbm9kZV9wdXQoZXApOwor CX0KKwlpZiAoIWJyaWRnZV9ub2RlKSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGZpbmQg YnJpZGdlIG5vZGVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlkZXZfaW5mbyhkZXYs ICJGb3VuZCBicmlkZ2Ugbm9kZTogJXNcbiIsIGJyaWRnZV9ub2RlLT5mdWxsX25hbWUpOworCisJ ZHBpLT5lbmNvZGVyLmJyaWRnZSA9IG9mX2RybV9maW5kX2JyaWRnZShicmlkZ2Vfbm9kZSk7CisJ b2Zfbm9kZV9wdXQoYnJpZGdlX25vZGUpOworCWlmICghZHBpLT5lbmNvZGVyLmJyaWRnZSkKKwkJ cmV0dXJuIC1FUFJPQkVfREVGRVI7CisKKwljb21wX2lkID0gbXRrX2RkcF9jb21wX2dldF9pZChk ZXYtPm9mX25vZGUsIE1US19EUEkpOworCWlmIChjb21wX2lkIDwgMCkgeworCQlkZXZfZXJyKGRl diwgIkZhaWxlZCB0byBpZGVudGlmeSBieSBhbGlhczogJWRcbiIsIGNvbXBfaWQpOworCQlyZXR1 cm4gY29tcF9pZDsKKwl9CisKKwlyZXQgPSBtdGtfZGRwX2NvbXBfaW5pdChkZXYsIGRldi0+b2Zf bm9kZSwgJmRwaS0+ZGRwX2NvbXAsIGNvbXBfaWQsCisJCQkJJm10a19kcGlfZnVuY3MpOworCWlm IChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb21wb25lbnQ6 ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIGRwaSk7CisKKwlyZXQgPSBjb21wb25lbnRfYWRkKGRldiwgJm10a19kcGlfY29tcG9u ZW50X29wcyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBhZGQgY29t cG9uZW50OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBtdGtfZHBpX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQoreworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJm10a19kcGlfY29tcG9uZW50X29wcyk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRr X2RwaV9vZl9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1kcGki LCB9LAorCXt9Cit9OworCitzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kcGlfZHJpdmVyID0g eworCS5wcm9iZSA9IG10a19kcGlfcHJvYmUsCisJLnJlbW92ZSA9IG10a19kcGlfcmVtb3ZlLAor CS5kcml2ZXIgPSB7CisJCS5uYW1lID0gIm1lZGlhdGVrLWRwaSIsCisJCS5vZl9tYXRjaF90YWJs ZSA9IG10a19kcGlfb2ZfaWRzLAorCX0sCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcGlfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cGlfcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNmFkNDcKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgK QEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5j LgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNvbT4KKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKyNpZm5kZWYgX19NVEtf RFBJX1JFR1NfSAorI2RlZmluZSBfX01US19EUElfUkVHU19ICisKKyNkZWZpbmUgRFBJX0VOCQkJ MHgwMAorI2RlZmluZSBFTgkJCQlCSVQoMCkKKworI2RlZmluZSBEUElfUkVUCQkJMHgwNAorI2Rl ZmluZSBSU1QJCQkJQklUKDApCisKKyNkZWZpbmUgRFBJX0lOVEVOCQkweDA4CisjZGVmaW5lIElO VF9WU1lOQ19FTgkJCUJJVCgwKQorI2RlZmluZSBJTlRfVkRFX0VOCQkJQklUKDEpCisjZGVmaW5l IElOVF9VTkRFUkZMT1dfRU4JCUJJVCgyKQorCisjZGVmaW5lIERQSV9JTlRTVEEJCTB4MEMKKyNk ZWZpbmUgSU5UX1ZTWU5DX1NUQQkJCUJJVCgwKQorI2RlZmluZSBJTlRfVkRFX1NUQQkJCUJJVCgx KQorI2RlZmluZSBJTlRfVU5ERVJGTE9XX1NUQQkJQklUKDIpCisKKyNkZWZpbmUgRFBJX0NPTgkJ CTB4MTAKKyNkZWZpbmUgQkdfRU5BQkxFCQkJQklUKDApCisjZGVmaW5lIElOX1JCX1NXQVAJCQlC SVQoMSkKKyNkZWZpbmUgSU5UTF9FTgkJCQlCSVQoMikKKyNkZWZpbmUgVERGUF9FTgkJCQlCSVQo MykKKyNkZWZpbmUgQ0xQRl9FTgkJCQlCSVQoNCkKKyNkZWZpbmUgWVVWNDIyX0VOCQkJQklUKDUp CisjZGVmaW5lIENTQ19FTkFCTEUJCQlCSVQoNikKKyNkZWZpbmUgUjYwMV9TRUwJCQlCSVQoNykK KyNkZWZpbmUgRU1CU1lOQ19FTgkJCUJJVCg4KQorI2RlZmluZSBWU19MT0REX0VOCQkJQklUKDE2 KQorI2RlZmluZSBWU19MRVZFTl9FTgkJCUJJVCgxNykKKyNkZWZpbmUgVlNfUk9ERF9FTgkJCUJJ VCgxOCkKKyNkZWZpbmUgVlNfUkVWRU4JCQlCSVQoMTkpCisjZGVmaW5lIEZBS0VfREVfTE9ERAkJ CUJJVCgyMCkKKyNkZWZpbmUgRkFLRV9ERV9MRVZFTgkJCUJJVCgyMSkKKyNkZWZpbmUgRkFLRV9E RV9ST0RECQkJQklUKDIyKQorI2RlZmluZSBGQUtFX0RFX1JFVkVOCQkJQklUKDIzKQorCisjZGVm aW5lIERQSV9PVVRQVVRfU0VUVElORwkweDE0CisjZGVmaW5lIENIX1NXQVAJCQkJMAorI2RlZmlu ZSBDSF9TV0FQX01BU0sJCQkoMHg3IDw8IDApCisjZGVmaW5lIFNXQVBfUkdCCQkJMHgwMAorI2Rl ZmluZSBTV0FQX0dCUgkJCTB4MDEKKyNkZWZpbmUgU1dBUF9CUkcJCQkweDAyCisjZGVmaW5lIFNX QVBfUkJHCQkJMHgwMworI2RlZmluZSBTV0FQX0dSQgkJCTB4MDQKKyNkZWZpbmUgU1dBUF9CR1IJ CQkweDA1CisjZGVmaW5lIEJJVF9TV0FQCQkJQklUKDMpCisjZGVmaW5lIEJfTUFTSwkJCQlCSVQo NCkKKyNkZWZpbmUgR19NQVNLCQkJCUJJVCg1KQorI2RlZmluZSBSX01BU0sJCQkJQklUKDYpCisj ZGVmaW5lIERFX01BU0sJCQkJQklUKDgpCisjZGVmaW5lIEhTX01BU0sJCQkJQklUKDkpCisjZGVm aW5lIFZTX01BU0sJCQkJQklUKDEwKQorI2RlZmluZSBERV9QT0wJCQkJQklUKDEyKQorI2RlZmlu ZSBIU1lOQ19QT0wJCQlCSVQoMTMpCisjZGVmaW5lIFZTWU5DX1BPTAkJCUJJVCgxNCkKKyNkZWZp bmUgQ0tfUE9MCQkJCUJJVCgxNSkKKyNkZWZpbmUgT0VOX09GRgkJCQlCSVQoMTYpCisjZGVmaW5l IEVER0VfU0VMCQkJQklUKDE3KQorI2RlZmluZSBPVVRfQklUCQkJCTE4CisjZGVmaW5lIE9VVF9C SVRfTUFTSwkJCSgweDMgPDwgMTgpCisjZGVmaW5lIE9VVF9CSVRfOAkJCTB4MDAKKyNkZWZpbmUg T1VUX0JJVF8xMAkJCTB4MDEKKyNkZWZpbmUgT1VUX0JJVF8xMgkJCTB4MDIKKyNkZWZpbmUgT1VU X0JJVF8xNgkJCTB4MDMKKyNkZWZpbmUgWUNfTUFQCQkJCTIwCisjZGVmaW5lIFlDX01BUF9NQVNL CQkJKDB4NyA8PCAyMCkKKyNkZWZpbmUgWUNfTUFQX1JHQgkJCTB4MDAKKyNkZWZpbmUgWUNfTUFQ X0NZQ1kJCQkweDA0CisjZGVmaW5lIFlDX01BUF9ZQ1lDCQkJMHgwNQorI2RlZmluZSBZQ19NQVBf Q1kJCQkweDA2CisjZGVmaW5lIFlDX01BUF9ZQwkJCTB4MDcKKworI2RlZmluZSBEUElfU0laRQkJ MHgxOAorI2RlZmluZSBIU0laRQkJCQkwCisjZGVmaW5lIEhTSVpFX01BU0sJCQkoMHgxRkZGIDw8 IDApCisjZGVmaW5lIFZTSVpFCQkJCTE2CisjZGVmaW5lIFZTSVpFX01BU0sJCQkoMHgxRkZGIDw8 IDE2KQorCisjZGVmaW5lIERQSV9ERFJfU0VUVElORwkJMHgxQworI2RlZmluZSBERFJfRU4JCQkJ QklUKDApCisjZGVmaW5lIERERFJfU0VMCQkJQklUKDEpCisjZGVmaW5lIEREUl80UEhBU0UJCQlC SVQoMikKKyNkZWZpbmUgRERSX1dJRFRICQkJKDB4MyA8PCA0KQorI2RlZmluZSBERFJfUEFEX01P REUJCQkoMHgxIDw8IDgpCisKKyNkZWZpbmUgRFBJX1RHRU5fSFdJRFRICQkweDIwCisjZGVmaW5l IEhQVwkJCQkwCisjZGVmaW5lIEhQV19NQVNLCQkJKDB4RkZGIDw8IDApCisKKyNkZWZpbmUgRFBJ X1RHRU5fSFBPUkNICQkweDI0CisjZGVmaW5lIEhCUAkJCQkwCisjZGVmaW5lIEhCUF9NQVNLCQkJ KDB4RkZGIDw8IDApCisjZGVmaW5lIEhGUAkJCQkxNgorI2RlZmluZSBIRlBfTUFTSwkJCSgweEZG RiA8PCAxNikKKworI2RlZmluZSBEUElfVEdFTl9WV0lEVEgJCTB4MjgKKyNkZWZpbmUgRFBJX1RH RU5fVlBPUkNICQkweDJDCisKKyNkZWZpbmUgVlNZTkNfV0lEVEhfU0hJRlQJCTAKKyNkZWZpbmUg VlNZTkNfV0lEVEhfTUFTSwkJKDB4RkZGIDw8IDApCisjZGVmaW5lIFZTWU5DX0hBTEZfTElORV9T SElGVAkJMTYKKyNkZWZpbmUgVlNZTkNfSEFMRl9MSU5FX01BU0sJCUJJVCgxNikKKyNkZWZpbmUg VlNZTkNfQkFDS19QT1JDSF9TSElGVAkJMAorI2RlZmluZSBWU1lOQ19CQUNLX1BPUkNIX01BU0sJ CSgweEZGRiA8PCAwKQorI2RlZmluZSBWU1lOQ19GUk9OVF9QT1JDSF9TSElGVAkJMTYKKyNkZWZp bmUgVlNZTkNfRlJPTlRfUE9SQ0hfTUFTSwkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9C R19IQ05UTAkJMHgzMAorI2RlZmluZSBCR19SSUdIVAkJCSgweDFGRkYgPDwgMCkKKyNkZWZpbmUg QkdfTEVGVAkJCQkoMHgxRkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9CR19WQ05UTAkJMHgzNAor I2RlZmluZSBCR19CT1QJCQkJKDB4MUZGRiA8PCAwKQorI2RlZmluZSBCR19UT1AJCQkJKDB4MUZG RiA8PCAxNikKKworI2RlZmluZSBEUElfQkdfQ09MT1IJCTB4MzgKKyNkZWZpbmUgQkdfQgkJCQko MHhGIDw8IDApCisjZGVmaW5lIEJHX0cJCQkJKDB4RiA8PCA4KQorI2RlZmluZSBCR19SCQkJCSgw eEYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0ZJRk9fQ1RMCQkweDNDCisjZGVmaW5lIEZJRk9fVkFM SURfU0VUCQkJKDB4MUYgPDwgMCkKKyNkZWZpbmUgRklGT19SU1RfU0VMCQkJKDB4MSA8PCA4KQor CisjZGVmaW5lIERQSV9TVEFUVVMJCTB4NDAKKyNkZWZpbmUgVkNPVU5URVIJCQkoMHgxRkZGIDw8 IDApCisjZGVmaW5lIERQSV9CVVNZCQkJQklUKDE2KQorI2RlZmluZSBPVVRFTgkJCQlCSVQoMTcp CisjZGVmaW5lIEZJRUxECQkJCUJJVCgyMCkKKyNkZWZpbmUgVERMUgkJCQlCSVQoMjEpCisKKyNk ZWZpbmUgRFBJX1RNT0RFCQkweDQ0CisjZGVmaW5lIERQSV9PRU5fT04JCQlCSVQoMCkKKworI2Rl ZmluZSBEUElfQ0hFQ0tTVU0JCTB4NDgKKyNkZWZpbmUgRFBJX0NIRUNLU1VNX01BU0sJCSgweEZG RkZGRiA8PCAwKQorI2RlZmluZSBEUElfQ0hFQ0tTVU1fUkVBRFkJCUJJVCgzMCkKKyNkZWZpbmUg RFBJX0NIRUNLU1VNX0VOCQkJQklUKDMxKQorCisjZGVmaW5lIERQSV9EVU1NWQkJMHg1MAorI2Rl ZmluZSBEUElfRFVNTVlfTUFTSwkJCSgweEZGRkZGRkZGIDw8IDApCisKKyNkZWZpbmUgRFBJX1RH RU5fVldJRFRIX0xFVkVOCTB4NjgKKyNkZWZpbmUgRFBJX1RHRU5fVlBPUkNIX0xFVkVOCTB4NkMK KyNkZWZpbmUgRFBJX1RHRU5fVldJRFRIX1JPREQJMHg3MAorI2RlZmluZSBEUElfVEdFTl9WUE9S Q0hfUk9ERAkweDc0CisjZGVmaW5lIERQSV9UR0VOX1ZXSURUSF9SRVZFTgkweDc4CisjZGVmaW5l IERQSV9UR0VOX1ZQT1JDSF9SRVZFTgkweDdDCisKKyNkZWZpbmUgRFBJX0VTQVZfVlRJTUlOR19M T0RECTB4ODAKKyNkZWZpbmUgRVNBVl9WT0ZTVF9MT0RECQkJKDB4RkZGIDw8IDApCisjZGVmaW5l IEVTQVZfVldJRF9MT0RECQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9FU0FWX1ZUSU1J TkdfTEVWRU4JMHg4NAorI2RlZmluZSBFU0FWX1ZPRlNUX0xFVkVOCQkoMHhGRkYgPDwgMCkKKyNk ZWZpbmUgRVNBVl9WV0lEX0xFVkVOCQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9FU0FW X1ZUSU1JTkdfUk9ERAkweDg4CisjZGVmaW5lIEVTQVZfVk9GU1RfUk9ERAkJCSgweEZGRiA8PCAw KQorI2RlZmluZSBFU0FWX1ZXSURfUk9ERAkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElf RVNBVl9WVElNSU5HX1JFVkVOCTB4OEMKKyNkZWZpbmUgRVNBVl9WT0ZTVF9SRVZFTgkJKDB4RkZG IDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9SRVZFTgkJCSgweEZGRiA8PCAxNikKKworI2RlZmlu ZSBEUElfRVNBVl9GVElNSU5HCTB4OTAKKyNkZWZpbmUgRVNBVl9GT0ZTVF9PREQJCQkoMHhGRkYg PDwgMCkKKyNkZWZpbmUgRVNBVl9GT0ZTVF9FVkVOCQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5l IERQSV9DTFBGX1NFVFRJTkcJMHg5NAorI2RlZmluZSBDTFBGX1RZUEUJCQkoMHgzIDw8IDApCisj ZGVmaW5lIFJPVU5EX0VOCQkJQklUKDQpCisKKyNkZWZpbmUgRFBJX1lfTElNSVQJCTB4OTgKKyNk ZWZpbmUgWV9MSU1JTlRfQk9UCQkJMAorI2RlZmluZSBZX0xJTUlOVF9CT1RfTUFTSwkJKDB4RkZG IDw8IDApCisjZGVmaW5lIFlfTElNSU5UX1RPUAkJCTE2CisjZGVmaW5lIFlfTElNSU5UX1RPUF9N QVNLCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0NfTElNSVQJCTB4OUMKKyNkZWZpbmUg Q19MSU1JVF9CT1QJCQkwCisjZGVmaW5lIENfTElNSVRfQk9UX01BU0sJCSgweEZGRiA8PCAwKQor I2RlZmluZSBDX0xJTUlUX1RPUAkJCTE2CisjZGVmaW5lIENfTElNSVRfVE9QX01BU0sJCSgweEZG RiA8PCAxNikKKworI2RlZmluZSBEUElfWVVWNDIyX1NFVFRJTkcJMHhBMAorI2RlZmluZSBVVl9T V0FQCQkJCUJJVCgwKQorI2RlZmluZSBDUl9ERUxTRUwJCQlCSVQoNCkKKyNkZWZpbmUgQ0JfREVM U0VMCQkJQklUKDUpCisjZGVmaW5lIFlfREVMU0VMCQkJQklUKDYpCisjZGVmaW5lIERFX0RFTFNF TAkJCUJJVCg3KQorCisjZGVmaW5lIERQSV9FTUJTWU5DX1NFVFRJTkcJMHhBNAorI2RlZmluZSBF TUJTWU5DX1JfQ1JfRU4JCQlCSVQoMCkKKyNkZWZpbmUgRU1QU1lOQ19HX1lfRU4JCQlCSVQoMSkK KyNkZWZpbmUgRU1QU1lOQ19CX0NCX0VOCQkJQklUKDIpCisjZGVmaW5lIEVTQVZfRl9JTlYJCQlC SVQoNCkKKyNkZWZpbmUgRVNBVl9WX0lOVgkJCUJJVCg1KQorI2RlZmluZSBFU0FWX0hfSU5WCQkJ QklUKDYpCisjZGVmaW5lIEVTQVZfQ09ERV9NQU4JCQlCSVQoOCkKKyNkZWZpbmUgVlNfT1VUX1NF TAkJCSgweDcgPDwgMTIpCisKKyNkZWZpbmUgRFBJX0VTQVZfQ09ERV9TRVQwCTB4QTgKKyNkZWZp bmUgRVNBVl9DT0RFMAkJCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FWX0NPREUxCQkJKDB4RkZG IDw8IDE2KQorCisjZGVmaW5lIERQSV9FU0FWX0NPREVfU0VUMQkweEFDCisjZGVmaW5lIEVTQVZf Q09ERTIJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9DT0RFM19NU0IJCQlCSVQoMTYpCisK KyNkZWZpbmUgRFBJX0hfRlJFX0NPTgkJMHhFMAorI2RlZmluZSBIX0ZSRV8yTgkJCUJJVCgyNSkK KyNlbmRpZiAvKiBfX01US19EUElfUkVHU19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5jCmluZGV4IGFiYjhmYmUuLjlhZjY1MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2Rydi5jCkBAIC01MjUsNiArNTI1LDcgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgKiBjb25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9IHsKIAkmbXRrX2Rpc3BfcmRtYV9k cml2ZXIsCiAJJm10a19kc2lfZHJpdmVyLAogCSZtdGtfbWlwaV90eF9kcml2ZXIsCisJJm10a19k cGlfZHJpdmVyLAogfTsKIAogc3RhdGljIGludCBfX2luaXQgbXRrX2RybV9pbml0KHZvaWQpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCmluZGV4IDFmMjJlYzQuLjg1N2QyY2Nm YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgKQEAgLTU0LDUgKzU0LDYg QEAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3Bfb3ZsX2RyaXZlcjsKIGV4 dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX3JkbWFfZHJpdmVyOwogZXh0ZXJu IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RzaV9kcml2ZXI7CiBleHRlcm4gc3RydWN0IHBs YXRmb3JtX2RyaXZlciBtdGtfbWlwaV90eF9kcml2ZXI7CitleHRlcm4gc3RydWN0IHBsYXRmb3Jt X2RyaXZlciBtdGtfZHBpX2RyaXZlcjsKIAogI2VuZGlmIC8qIE1US19EUk1fRFJWX0ggKi8KLS0g CjIuNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK