From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH v16 5/8] drm/mediatek: Add DPI sub driver Date: Fri, 6 May 2016 15:05:51 +0200 Message-ID: <1462539954-26158-6-git-send-email-p.zabel@pengutronix.de> References: <1462539954-26158-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: <1462539954-26158-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 b2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgotLS0KQ2hhbmdl cyBzaW5jZSB2MTU6CiAtIE9yZGVyIG10a19kcm1fZHJpdmVycyBhbHBoYWJldGljYWxseQotLS0K IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSAgICAgICB8ICAgMyArLQogZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYyAgICAgIHwgNzY5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgg fCAyMjggKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMg IHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oICB8ICAgMSAr CiA1IGZpbGVzIGNoYW5nZWQsIDEwMDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKaW5kZXggZTc4MWRiNWEuLjVmY2Y1OGUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvTWFrZWZpbGUKQEAgLTgsNiArOCw3IEBAIG1lZGlhdGVrLWRybS15IDo9IG10 a19kaXNwX292bC5vIFwKIAkJICBtdGtfZHJtX2dlbS5vIFwKIAkJICBtdGtfZHJtX3BsYW5lLm8g XAogCQkgIG10a19kc2kubyBcCi0JCSAgbXRrX21pcGlfdHgubworCQkgIG10a19taXBpX3R4Lm8g XAorCQkgIG10a19kcGkubwogCiBvYmotJChDT05GSUdfRFJNX01FRElBVEVLKSArPSBtZWRpYXRl ay1kcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYyBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZDA1Y2E3OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHBpLmMKQEAgLTAsMCArMSw3NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQg KGMpIDIwMTQgTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlh dGVrLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKi8KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgor I2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4KKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2dy YXBoLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvdHlw ZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKworI2luY2x1ZGUgIm10a19kcGlfcmVncy5o IgorI2luY2x1ZGUgIm10a19kcm1fZGRwX2NvbXAuaCIKKworZW51bSBtdGtfZHBpX291dF9iaXRf bnVtIHsKKwlNVEtfRFBJX09VVF9CSVRfTlVNXzhCSVRTLAorCU1US19EUElfT1VUX0JJVF9OVU1f MTBCSVRTLAorCU1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTLAorCU1US19EUElfT1VUX0JJVF9O VU1fMTZCSVRTCit9OworCitlbnVtIG10a19kcGlfb3V0X3ljX21hcCB7CisJTVRLX0RQSV9PVVRf WUNfTUFQX1JHQiwKKwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1lDWSwKKwlNVEtfRFBJX09VVF9ZQ19N QVBfWUNZQywKKwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1ksCisJTVRLX0RQSV9PVVRfWUNfTUFQX1lD Cit9OworCitlbnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCB7CisJTVRLX0RQSV9PVVRfQ0hB Tk5FTF9TV0FQX1JHQiwKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR0JSLAorCU1US19EUElf T1VUX0NIQU5ORUxfU1dBUF9CUkcsCisJTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JCRywKKwlN VEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR1JCLAorCU1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9C R1IKK307CisKK2VudW0gbXRrX2RwaV9vdXRfY29sb3JfZm9ybWF0IHsKKwlNVEtfRFBJX0NPTE9S X0ZPUk1BVF9SR0IsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfUkdCX0ZVTEwsCisJTVRLX0RQSV9D T0xPUl9GT1JNQVRfWUNCQ1JfNDQ0LAorCU1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQyMiwK KwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9YVl9ZQ0MsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNC Q1JfNDQ0X0ZVTEwsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDIyX0ZVTEwKK307CisK K3N0cnVjdCBtdGtfZHBpIHsKKwlzdHJ1Y3QgbXRrX2RkcF9jb21wIGRkcF9jb21wOworCXN0cnVj dCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXZvaWQgX19pb21lbSAqcmVnczsKKwlzdHJ1Y3QgZGV2 aWNlICpkZXY7CisJc3RydWN0IGNsayAqZW5naW5lX2NsazsKKwlzdHJ1Y3QgY2xrICpwaXhlbF9j bGs7CisJc3RydWN0IGNsayAqdHZkX2NsazsKKwlpbnQgaXJxOworCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlIG1vZGU7CisJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgY29sb3JfZm9ybWF0 OworCWVudW0gbXRrX2RwaV9vdXRfeWNfbWFwIHljX21hcDsKKwllbnVtIG10a19kcGlfb3V0X2Jp dF9udW0gYml0X251bTsKKwllbnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCBjaGFubmVsX3N3 YXA7CisJYm9vbCBwb3dlcl9zdGE7CisJdTggcG93ZXJfY3RsOworfTsKKworc3RhdGljIGlubGlu ZSBzdHJ1Y3QgbXRrX2RwaSAqbXRrX2RwaV9mcm9tX2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVy ICplKQoreworCXJldHVybiBjb250YWluZXJfb2YoZSwgc3RydWN0IG10a19kcGksIGVuY29kZXIp OworfQorCitlbnVtIG10a19kcGlfcG9sYXJpdHkgeworCU1US19EUElfUE9MQVJJVFlfUklTSU5H LAorCU1US19EUElfUE9MQVJJVFlfRkFMTElORywKK307CisKK2VudW0gbXRrX2RwaV9wb3dlcl9j dGwgeworCURQSV9QT1dFUl9TVEFSVCA9IEJJVCgwKSwKKwlEUElfUE9XRVJfRU5BQkxFID0gQklU KDEpLAorfTsKKworc3RydWN0IG10a19kcGlfcG9sYXJpdGllcyB7CisJZW51bSBtdGtfZHBpX3Bv bGFyaXR5IGRlX3BvbDsKKwllbnVtIG10a19kcGlfcG9sYXJpdHkgY2tfcG9sOworCWVudW0gbXRr X2RwaV9wb2xhcml0eSBoc3luY19wb2w7CisJZW51bSBtdGtfZHBpX3BvbGFyaXR5IHZzeW5jX3Bv bDsKK307CisKK3N0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0geworCXUzMiBzeW5jX3dpZHRoOwor CXUzMiBmcm9udF9wb3JjaDsKKwl1MzIgYmFja19wb3JjaDsKKwlib29sIHNoaWZ0X2hhbGZfbGlu ZTsKK307CisKK3N0cnVjdCBtdGtfZHBpX3ljX2xpbWl0IHsKKwl1MTYgeV90b3A7CisJdTE2IHlf Ym90dG9tOworCXUxNiBjX3RvcDsKKwl1MTYgY19ib3R0b207Cit9OworCitzdGF0aWMgdm9pZCBt dGtfZHBpX21hc2soc3RydWN0IG10a19kcGkgKmRwaSwgdTMyIG9mZnNldCwgdTMyIHZhbCwgdTMy IG1hc2spCit7CisJdTMyIHRtcCA9IHJlYWRsKGRwaS0+cmVncyArIG9mZnNldCkgJiB+bWFzazsK KworCXRtcCB8PSAodmFsICYgbWFzayk7CisJd3JpdGVsKHRtcCwgZHBpLT5yZWdzICsgb2Zmc2V0 KTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9zd19yZXNldChzdHJ1Y3QgbXRrX2RwaSAqZHBp LCBib29sIHJlc2V0KQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9SRVQsIHJlc2V0ID8gUlNU IDogMCwgUlNUKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9lbmFibGUoc3RydWN0IG10a19k cGkgKmRwaSkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfRU4sIEVOLCBFTik7Cit9CisKK3N0 YXRpYyB2b2lkIG10a19kcGlfZGlzYWJsZShzdHJ1Y3QgbXRrX2RwaSAqZHBpKQoreworCW10a19k cGlfbWFzayhkcGksIERQSV9FTiwgMCwgRU4pOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2Nv bmZpZ19oc3luYyhzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSBzdHJ1Y3QgbXRrX2RwaV9zeW5j X3BhcmFtICpzeW5jKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hXSURUSCwKKwkJ ICAgICBzeW5jLT5zeW5jX3dpZHRoIDw8IEhQVywgSFBXX01BU0spOworCW10a19kcGlfbWFzayhk cGksIERQSV9UR0VOX0hQT1JDSCwKKwkJICAgICBzeW5jLT5iYWNrX3BvcmNoIDw8IEhCUCwgSEJQ X01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hQT1JDSCwgc3luYy0+ZnJvbnRf cG9yY2ggPDwgSEZQLAorCQkgICAgIEhGUF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2Rw aV9jb25maWdfdnN5bmMoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgc3RydWN0IG10a19kcGlf c3luY19wYXJhbSAqc3luYywKKwkJCQkgdTMyIHdpZHRoX2FkZHIsIHUzMiBwb3JjaF9hZGRyKQor eworCW10a19kcGlfbWFzayhkcGksIHdpZHRoX2FkZHIsCisJCSAgICAgc3luYy0+c3luY193aWR0 aCA8PCBWU1lOQ19XSURUSF9TSElGVCwKKwkJICAgICBWU1lOQ19XSURUSF9NQVNLKTsKKwltdGtf ZHBpX21hc2soZHBpLCB3aWR0aF9hZGRyLAorCQkgICAgIHN5bmMtPnNoaWZ0X2hhbGZfbGluZSA8 PCBWU1lOQ19IQUxGX0xJTkVfU0hJRlQsCisJCSAgICAgVlNZTkNfSEFMRl9MSU5FX01BU0spOwor CW10a19kcGlfbWFzayhkcGksIHBvcmNoX2FkZHIsCisJCSAgICAgc3luYy0+YmFja19wb3JjaCA8 PCBWU1lOQ19CQUNLX1BPUkNIX1NISUZULAorCQkgICAgIFZTWU5DX0JBQ0tfUE9SQ0hfTUFTSyk7 CisJbXRrX2RwaV9tYXNrKGRwaSwgcG9yY2hfYWRkciwKKwkJICAgICBzeW5jLT5mcm9udF9wb3Jj aCA8PCBWU1lOQ19GUk9OVF9QT1JDSF9TSElGVCwKKwkJICAgICBWU1lOQ19GUk9OVF9QT1JDSF9N QVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfdnN5bmNfbG9kZChzdHJ1Y3Qg bXRrX2RwaSAqZHBpLAorCQkJCSAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5bmMp Cit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdFTl9WV0lEVEgsIERQ SV9UR0VOX1ZQT1JDSCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX2xl dmVuKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNf cGFyYW0gKnN5bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdF Tl9WV0lEVEhfTEVWRU4sCisJCQkgICAgIERQSV9UR0VOX1ZQT1JDSF9MRVZFTik7Cit9CisKK3N0 YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX3JvZGQoc3RydWN0IG10a19kcGkgKmRwaSwK KwkJCQkgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQoreworCW10a19kcGlf Y29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRIX1JPREQsCisJCQkgICAgIERQ SV9UR0VOX1ZQT1JDSF9ST0REKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfdnN5 bmNfcmV2ZW4oc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICAgICAgc3RydWN0IG10a19kcGlf c3luY19wYXJhbSAqc3luYykKK3sKKwltdGtfZHBpX2NvbmZpZ192c3luYyhkcGksIHN5bmMsIERQ SV9UR0VOX1ZXSURUSF9SRVZFTiwKKwkJCSAgICAgRFBJX1RHRU5fVlBPUkNIX1JFVkVOKTsKK30K Kworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfcG9sKHN0cnVjdCBtdGtfZHBpICpkcGksCisJ CQkgICAgICAgc3RydWN0IG10a19kcGlfcG9sYXJpdGllcyAqZHBpX3BvbCkKK3sKKwl1bnNpZ25l ZCBpbnQgcG9sOworCisJcG9sID0gKGRwaV9wb2wtPmNrX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZ X1JJU0lORyA/IDAgOiBDS19QT0wpIHwKKwkgICAgICAoZHBpX3BvbC0+ZGVfcG9sID09IE1US19E UElfUE9MQVJJVFlfUklTSU5HID8gMCA6IERFX1BPTCkgfAorCSAgICAgIChkcGlfcG9sLT5oc3lu Y19wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDogSFNZTkNfUE9MKSB8CisJICAg ICAgKGRwaV9wb2wtPnZzeW5jX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZX1JJU0lORyA/IDAgOiBW U1lOQ19QT0wpOworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQVVRfU0VUVElORywgcG9sLAor CQkgICAgIENLX1BPTCB8IERFX1BPTCB8IEhTWU5DX1BPTCB8IFZTWU5DX1BPTCk7Cit9CisKK3N0 YXRpYyB2b2lkIG10a19kcGlfY29uZmlnXzNkKHN0cnVjdCBtdGtfZHBpICpkcGksIGJvb2wgZW5f M2QpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5fM2QgPyBUREZQX0VOIDogMCwg VERGUF9FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2ludGVyZmFjZShzdHJ1 Y3QgbXRrX2RwaSAqZHBpLCBib29sIGludGVyKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9D T04sIGludGVyID8gSU5UTF9FTiA6IDAsIElOVExfRU4pOworfQorCitzdGF0aWMgdm9pZCBtdGtf ZHBpX2NvbmZpZ19mYl9zaXplKHN0cnVjdCBtdGtfZHBpICpkcGksIHUzMiB3aWR0aCwgdTMyIGhl aWdodCkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfU0laRSwgd2lkdGggPDwgSFNJWkUsIEhT SVpFX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9TSVpFLCBoZWlnaHQgPDwgVlNJWkUs IFZTSVpFX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19jaGFubmVsX2xp bWl0KHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJCSBzdHJ1Y3QgbXRrX2RwaV95Y19saW1pdCAq bGltaXQpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1lfTElNSVQsIGxpbWl0LT55X2JvdHRv bSA8PCBZX0xJTUlOVF9CT1QsCisJCSAgICAgWV9MSU1JTlRfQk9UX01BU0spOworCW10a19kcGlf bWFzayhkcGksIERQSV9ZX0xJTUlULCBsaW1pdC0+eV90b3AgPDwgWV9MSU1JTlRfVE9QLAorCQkg ICAgIFlfTElNSU5UX1RPUF9NQVNLKTsKKwltdGtfZHBpX21hc2soZHBpLCBEUElfQ19MSU1JVCwg bGltaXQtPmNfYm90dG9tIDw8IENfTElNSVRfQk9ULAorCQkgICAgIENfTElNSVRfQk9UX01BU0sp OworCW10a19kcGlfbWFzayhkcGksIERQSV9DX0xJTUlULCBsaW1pdC0+Y190b3AgPDwgQ19MSU1J VF9UT1AsCisJCSAgICAgQ19MSU1JVF9UT1BfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19k cGlfY29uZmlnX2JpdF9udW0oc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICBlbnVtIG10a19k cGlfb3V0X2JpdF9udW0gbnVtKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2ggKG51bSkgeworCWNh c2UgTVRLX0RQSV9PVVRfQklUX05VTV84QklUUzoKKwkJdmFsID0gT1VUX0JJVF84OworCQlicmVh azsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTBCSVRTOgorCQl2YWwgPSBPVVRfQklUXzEw OworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTOgorCQl2YWwgPSBP VVRfQklUXzEyOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTZCSVRTOgor CQl2YWwgPSBPVVRfQklUXzE2OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwgPSBPVVRfQklU Xzg7CisJCWJyZWFrOworCX0KKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcs IHZhbCA8PCBPVVRfQklULAorCQkgICAgIE9VVF9CSVRfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lk IG10a19kcGlfY29uZmlnX3ljX21hcChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgZW51bSBt dGtfZHBpX291dF95Y19tYXAgbWFwKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2ggKG1hcCkgewor CWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1JHQjoKKwkJdmFsID0gWUNfTUFQX1JHQjsKKwkJYnJl YWs7CisJY2FzZSBNVEtfRFBJX09VVF9ZQ19NQVBfQ1lDWToKKwkJdmFsID0gWUNfTUFQX0NZQ1k7 CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1lDWUM6CisJCXZhbCA9IFlDX01B UF9ZQ1lDOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9DWToKKwkJdmFsID0g WUNfTUFQX0NZOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9ZQzoKKwkJdmFs ID0gWUNfTUFQX1lDOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwgPSBZQ19NQVBfUkdCOwor CQlicmVhazsKKwl9CisKKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHZh bCA8PCBZQ19NQVAsIFlDX01BUF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25m aWdfY2hhbm5lbF9zd2FwKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJCWVudW0gbXRrX2RwaV9v dXRfY2hhbm5lbF9zd2FwIHN3YXApCit7CisJdTMyIHZhbDsKKworCXN3aXRjaCAoc3dhcCkgewor CWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQjoKKwkJdmFsID0gU1dBUF9SR0I7CisJ CWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0dCUjoKKwkJdmFsID0gU1dB UF9HQlI7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0JSRzoKKwkJ dmFsID0gU1dBUF9CUkc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQ X1JCRzoKKwkJdmFsID0gU1dBUF9SQkc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hB Tk5FTF9TV0FQX0dSQjoKKwkJdmFsID0gU1dBUF9HUkI7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQ SV9PVVRfQ0hBTk5FTF9TV0FQX0JHUjoKKwkJdmFsID0gU1dBUF9CR1I7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCXZhbCA9IFNXQVBfUkdCOworCQlicmVhazsKKwl9CisKKwltdGtfZHBpX21hc2so ZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHZhbCA8PCBDSF9TV0FQLCBDSF9TV0FQX01BU0spOwor fQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKHN0cnVjdCBtdGtf ZHBpICpkcGksIGJvb2wgZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9DT04sIGVu YWJsZSA/IFlVVjQyMl9FTiA6IDAsIFlVVjQyMl9FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19k cGlfY29uZmlnX2NzY19lbmFibGUoc3RydWN0IG10a19kcGkgKmRwaSwgYm9vbCBlbmFibGUpCit7 CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxlID8gQ1NDX0VOQUJMRSA6IDAsIENT Q19FTkFCTEUpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KHN0 cnVjdCBtdGtfZHBpICpkcGksIGJvb2wgZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQ SV9DT04sIGVuYWJsZSA/IElOX1JCX1NXQVAgOiAwLCBJTl9SQl9TV0FQKTsKK30KKworc3RhdGlj IHZvaWQgbXRrX2RwaV9jb25maWdfMm5faF9mcmUoc3RydWN0IG10a19kcGkgKmRwaSkKK3sKKwlt dGtfZHBpX21hc2soZHBpLCBEUElfSF9GUkVfQ09OLCBIX0ZSRV8yTiwgSF9GUkVfMk4pOworfQor CitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19jb2xvcl9mb3JtYXQoc3RydWN0IG10a19kcGkg KmRwaSwKKwkJCQkJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgZm9ybWF0KQoreworCWlm ICgoZm9ybWF0ID09IE1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQ0NCkgfHwKKwkgICAgKGZv cm1hdCA9PSBNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80NDRfRlVMTCkpIHsKKwkJbXRrX2Rw aV9jb25maWdfeXV2NDIyX2VuYWJsZShkcGksIGZhbHNlKTsKKwkJbXRrX2RwaV9jb25maWdfY3Nj X2VuYWJsZShkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KGRwaSwgZmFs c2UpOworCQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJX09VVF9DSEFO TkVMX1NXQVBfQkdSKTsKKwl9IGVsc2UgaWYgKChmb3JtYXQgPT0gTVRLX0RQSV9DT0xPUl9GT1JN QVRfWUNCQ1JfNDIyKSB8fAorCQkgICAoZm9ybWF0ID09IE1US19EUElfQ09MT1JfRk9STUFUX1lD QkNSXzQyMl9GVUxMKSkgeworCQltdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKGRwaSwgdHJ1 ZSk7CisJCW10a19kcGlfY29uZmlnX2NzY19lbmFibGUoZHBpLCB0cnVlKTsKKwkJbXRrX2RwaV9j b25maWdfc3dhcF9pbnB1dChkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3 YXAoZHBpLCBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCKTsKKwl9IGVsc2UgeworCQltdGtf ZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19j c2NfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KGRwaSwg ZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJX09VVF9D SEFOTkVMX1NXQVBfUkdCKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfcG93ZXJfb2Zm KHN0cnVjdCBtdGtfZHBpICpkcGksIGVudW0gbXRrX2RwaV9wb3dlcl9jdGwgcGN0bCkKK3sKKwlk cGktPnBvd2VyX2N0bCAmPSB+cGN0bDsKKworCWlmICgoZHBpLT5wb3dlcl9jdGwgJiBEUElfUE9X RVJfU1RBUlQpIHx8CisJICAgIChkcGktPnBvd2VyX2N0bCAmIERQSV9QT1dFUl9FTkFCTEUpKQor CQlyZXR1cm47CisKKwlpZiAoIWRwaS0+cG93ZXJfc3RhKQorCQlyZXR1cm47CisKKwltdGtfZHBp X2Rpc2FibGUoZHBpKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHBpLT5waXhlbF9jbGspOwor CWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOworCWRwaS0+cG93ZXJfc3Rh ID0gZmFsc2U7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9wb3dlcl9vbihzdHJ1Y3QgbXRrX2Rw aSAqZHBpLCBlbnVtIG10a19kcGlfcG93ZXJfY3RsIHBjdGwpCit7CisJaW50IHJldDsKKworCWRw aS0+cG93ZXJfY3RsIHw9IHBjdGw7CisKKwlpZiAoIShkcGktPnBvd2VyX2N0bCAmIERQSV9QT1dF Ul9TVEFSVCkgJiYKKwkgICAgIShkcGktPnBvd2VyX2N0bCAmIERQSV9QT1dFUl9FTkFCTEUpKQor CQlyZXR1cm4gMDsKKworCWlmIChkcGktPnBvd2VyX3N0YSkKKwkJcmV0dXJuIDA7CisKKwlyZXQg PSBjbGtfcHJlcGFyZV9lbmFibGUoZHBpLT5lbmdpbmVfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRl dl9lcnIoZHBpLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIGVuZ2luZSBjbG9jazogJWRcbiIsIHJl dCk7CisJCWdvdG8gZXJyX2VuZzsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHBp LT5waXhlbF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkcGktPmRldiwgIkZhaWxlZCB0 byBlbmFibGUgcGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9waXhlbDsKKwl9 CisKKwltdGtfZHBpX2VuYWJsZShkcGkpOworCWRwaS0+cG93ZXJfc3RhID0gdHJ1ZTsKKwlyZXR1 cm4gMDsKKworZXJyX3BpeGVsOgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9j bGspOworZXJyX2VuZzoKKwlkcGktPnBvd2VyX2N0bCAmPSB+cGN0bDsKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgaW50IG10a19kcGlfc2V0X2Rpc3BsYXlfbW9kZShzdHJ1Y3QgbXRrX2RwaSAq ZHBpLAorCQkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlzdHJ1Y3Qg bXRrX2RwaV95Y19saW1pdCBsaW1pdDsKKwlzdHJ1Y3QgbXRrX2RwaV9wb2xhcml0aWVzIGRwaV9w b2w7CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSBoc3luYzsKKwlzdHJ1Y3QgbXRrX2RwaV9z eW5jX3BhcmFtIHZzeW5jX2xvZGQgPSB7IDAgfTsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFt IHZzeW5jX2xldmVuID0geyAwIH07CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSB2c3luY19y b2RkID0geyAwIH07CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSB2c3luY19yZXZlbiA9IHsg MCB9OworCXVuc2lnbmVkIGxvbmcgcGl4X3JhdGU7CisJdW5zaWduZWQgbG9uZyBwbGxfcmF0ZTsK Kwl1bnNpZ25lZCBpbnQgZmFjdG9yOworCisJaWYgKCFkcGkpIHsKKwkJZGV2X2VycihkcGktPmRl diwgImludmFsaWQgYXJndW1lbnRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlwaXhf cmF0ZSA9IDEwMDBVTCAqIG1vZGUtPmNsb2NrOworCWlmIChtb2RlLT5jbG9jayA8PSA3NDAwMCkK KwkJZmFjdG9yID0gOCAqIDM7CisJZWxzZQorCQlmYWN0b3IgPSA0ICogMzsKKwlwbGxfcmF0ZSA9 IHBpeF9yYXRlICogZmFjdG9yOworCisJZGV2X2RiZyhkcGktPmRldiwgIldhbnQgUExMICVsdSBI eiwgcGl4ZWwgY2xvY2sgJWx1IEh6XG4iLAorCQlwbGxfcmF0ZSwgcGl4X3JhdGUpOworCisJY2xr X3NldF9yYXRlKGRwaS0+dHZkX2NsaywgcGxsX3JhdGUpOworCXBsbF9yYXRlID0gY2xrX2dldF9y YXRlKGRwaS0+dHZkX2Nsayk7CisKKwlwaXhfcmF0ZSA9IHBsbF9yYXRlIC8gZmFjdG9yOworCWNs a19zZXRfcmF0ZShkcGktPnBpeGVsX2NsaywgcGl4X3JhdGUpOworCXBpeF9yYXRlID0gY2xrX2dl dF9yYXRlKGRwaS0+cGl4ZWxfY2xrKTsKKworCWRldl9kYmcoZHBpLT5kZXYsICJHb3QgIFBMTCAl bHUgSHosIHBpeGVsIGNsb2NrICVsdSBIelxuIiwKKwkJcGxsX3JhdGUsIHBpeF9yYXRlKTsKKwor CWxpbWl0LmNfYm90dG9tID0gMHgwMDEwOworCWxpbWl0LmNfdG9wID0gMHgwRkUwOworCWxpbWl0 LnlfYm90dG9tID0gMHgwMDEwOworCWxpbWl0LnlfdG9wID0gMHgwRkUwOworCisJZHBpX3BvbC5j a19wb2wgPSBNVEtfRFBJX1BPTEFSSVRZX0ZBTExJTkc7CisJZHBpX3BvbC5kZV9wb2wgPSBNVEtf RFBJX1BPTEFSSVRZX1JJU0lORzsKKwlkcGlfcG9sLmhzeW5jX3BvbCA9IG1vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19QSFNZTkMgPworCQkJICAgIE1US19EUElfUE9MQVJJVFlfRkFMTElORyA6 IE1US19EUElfUE9MQVJJVFlfUklTSU5HOworCWRwaV9wb2wudnN5bmNfcG9sID0gbW9kZS0+Zmxh Z3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQyA/CisJCQkgICAgTVRLX0RQSV9QT0xBUklUWV9GQUxM SU5HIDogTVRLX0RQSV9QT0xBUklUWV9SSVNJTkc7CisKKwloc3luYy5zeW5jX3dpZHRoID0gbW9k ZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJaHN5bmMuYmFja19wb3JjaCA9IG1v ZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKKwloc3luYy5mcm9udF9wb3JjaCA9IG1vZGUt PmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJaHN5bmMuc2hpZnRfaGFsZl9saW5lID0g ZmFsc2U7CisKKwl2c3luY19sb2RkLnN5bmNfd2lkdGggPSBtb2RlLT52c3luY19lbmQgLSBtb2Rl LT52c3luY19zdGFydDsKKwl2c3luY19sb2RkLmJhY2tfcG9yY2ggPSBtb2RlLT52dG90YWwgLSBt b2RlLT52c3luY19lbmQ7CisJdnN5bmNfbG9kZC5mcm9udF9wb3JjaCA9IG1vZGUtPnZzeW5jX3N0 YXJ0IC0gbW9kZS0+dmRpc3BsYXk7CisJdnN5bmNfbG9kZC5zaGlmdF9oYWxmX2xpbmUgPSBmYWxz ZTsKKworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFICYmCisJICAg IG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR18zRF9NQVNLKSB7CisJCXZzeW5jX2xldmVuID0g dnN5bmNfbG9kZDsKKwkJdnN5bmNfcm9kZCA9IHZzeW5jX2xvZGQ7CisJCXZzeW5jX3JldmVuID0g dnN5bmNfbG9kZDsKKwkJdnN5bmNfbGV2ZW4uc2hpZnRfaGFsZl9saW5lID0gdHJ1ZTsKKwkJdnN5 bmNfcmV2ZW4uc2hpZnRfaGFsZl9saW5lID0gdHJ1ZTsKKwl9IGVsc2UgaWYgKG1vZGUtPmZsYWdz ICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYKKwkJICAgIShtb2RlLT5mbGFncyAmIERSTV9N T0RFX0ZMQUdfM0RfTUFTSykpIHsKKwkJdnN5bmNfbGV2ZW4gPSB2c3luY19sb2RkOworCQl2c3lu Y19sZXZlbi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCX0gZWxzZSBpZiAoIShtb2RlLT5mbGFn cyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSAmJgorCQkgICBtb2RlLT5mbGFncyAmIERSTV9N T0RFX0ZMQUdfM0RfTUFTSykgeworCQl2c3luY19yb2RkID0gdnN5bmNfbG9kZDsKKwl9CisJbXRr X2RwaV9zd19yZXNldChkcGksIHRydWUpOworCW10a19kcGlfY29uZmlnX3BvbChkcGksICZkcGlf cG9sKTsKKworCW10a19kcGlfY29uZmlnX2hzeW5jKGRwaSwgJmhzeW5jKTsKKwltdGtfZHBpX2Nv bmZpZ192c3luY19sb2RkKGRwaSwgJnZzeW5jX2xvZGQpOworCW10a19kcGlfY29uZmlnX3ZzeW5j X3JvZGQoZHBpLCAmdnN5bmNfcm9kZCk7CisJbXRrX2RwaV9jb25maWdfdnN5bmNfbGV2ZW4oZHBp LCAmdnN5bmNfbGV2ZW4pOworCW10a19kcGlfY29uZmlnX3ZzeW5jX3JldmVuKGRwaSwgJnZzeW5j X3JldmVuKTsKKworCW10a19kcGlfY29uZmlnXzNkKGRwaSwgISEobW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHXzNEX01BU0spKTsKKwltdGtfZHBpX2NvbmZpZ19pbnRlcmZhY2UoZHBpLCAhISht b2RlLT5mbGFncyAmCisJCQkJCSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkpOworCWlmIChtb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQorCQltdGtfZHBpX2NvbmZpZ19mYl9z aXplKGRwaSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5IC8gMik7CisJZWxzZQorCQlt dGtfZHBpX2NvbmZpZ19mYl9zaXplKGRwaSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5 KTsKKworCW10a19kcGlfY29uZmlnX2NoYW5uZWxfbGltaXQoZHBpLCAmbGltaXQpOworCW10a19k cGlfY29uZmlnX2JpdF9udW0oZHBpLCBkcGktPmJpdF9udW0pOworCW10a19kcGlfY29uZmlnX2No YW5uZWxfc3dhcChkcGksIGRwaS0+Y2hhbm5lbF9zd2FwKTsKKwltdGtfZHBpX2NvbmZpZ195Y19t YXAoZHBpLCBkcGktPnljX21hcCk7CisJbXRrX2RwaV9jb25maWdfY29sb3JfZm9ybWF0KGRwaSwg ZHBpLT5jb2xvcl9mb3JtYXQpOworCW10a19kcGlfY29uZmlnXzJuX2hfZnJlKGRwaSk7CisJbXRr X2RwaV9zd19yZXNldChkcGksIGZhbHNlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBtdGtfZHBpX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7 CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fZW5jb2Rlcl9mdW5jcyBtdGtfZHBpX2VuY29kZXJfZnVuY3MgPSB7CisJLmRlc3Ryb3kg PSBtdGtfZHBpX2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBib29sIG10a19kcGlfZW5j b2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAgICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJICAgICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXJldHVybiB0cnVlOworfQorCitz dGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyLAorCQkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJICAg ICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKwlzdHJ1Y3QgbXRr X2RwaSAqZHBpID0gbXRrX2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwlkcm1fbW9kZV9j b3B5KCZkcGktPm1vZGUsIGFkanVzdGVkX21vZGUpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBp X2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0 IG10a19kcGkgKmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29kZXIpOworCisJbXRrX2Rw aV9wb3dlcl9vZmYoZHBpLCBEUElfUE9XRVJfRU5BQkxFKTsKK30KKworc3RhdGljIHZvaWQgbXRr X2RwaV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3Ry dWN0IG10a19kcGkgKmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29kZXIpOworCisJbXRr X2RwaV9wb3dlcl9vbihkcGksIERQSV9QT1dFUl9FTkFCTEUpOworCW10a19kcGlfc2V0X2Rpc3Bs YXlfbW9kZShkcGksICZkcGktPm1vZGUpOworfQorCitzdGF0aWMgaW50IG10a19kcGlfYXRvbWlj X2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCisJCQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5f c3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29k ZXJfaGVscGVyX2Z1bmNzIG10a19kcGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLm1vZGVf Zml4dXAgPSBtdGtfZHBpX2VuY29kZXJfbW9kZV9maXh1cCwKKwkubW9kZV9zZXQgPSBtdGtfZHBp X2VuY29kZXJfbW9kZV9zZXQsCisJLmRpc2FibGUgPSBtdGtfZHBpX2VuY29kZXJfZGlzYWJsZSwK KwkuZW5hYmxlID0gbXRrX2RwaV9lbmNvZGVyX2VuYWJsZSwKKwkuYXRvbWljX2NoZWNrID0gbXRr X2RwaV9hdG9taWNfY2hlY2ssCit9OworCitzdGF0aWMgdm9pZCBtdGtfZHBpX3N0YXJ0KHN0cnVj dCBtdGtfZGRwX2NvbXAgKmNvbXApCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGNvbnRhaW5l cl9vZihjb21wLCBzdHJ1Y3QgbXRrX2RwaSwgZGRwX2NvbXApOworCisJbXRrX2RwaV9wb3dlcl9v bihkcGksIERQSV9QT1dFUl9TVEFSVCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfc3RvcChz dHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBjb250 YWluZXJfb2YoY29tcCwgc3RydWN0IG10a19kcGksIGRkcF9jb21wKTsKKworCW10a19kcGlfcG93 ZXJfb2ZmKGRwaSwgRFBJX1BPV0VSX1NUQVJUKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBt dGtfZGRwX2NvbXBfZnVuY3MgbXRrX2RwaV9mdW5jcyA9IHsKKwkuc3RhcnQgPSBtdGtfZHBpX3N0 YXJ0LAorCS5zdG9wID0gbXRrX2RwaV9zdG9wLAorfTsKKworc3RhdGljIGludCBtdGtfZHBpX2Jp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEp Cit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVj dCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGF0YTsKKwlpbnQgcmV0OworCisJcmV0ID0gbXRrX2Rk cF9jb21wX3JlZ2lzdGVyKGRybV9kZXYsICZkcGktPmRkcF9jb21wKTsKKwlpZiAocmV0IDwgMCkg eworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBjb21wb25lbnQgJXM6ICVkXG4i LAorCQkJZGV2LT5vZl9ub2RlLT5mdWxsX25hbWUsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQor CisJcmV0ID0gZHJtX2VuY29kZXJfaW5pdChkcm1fZGV2LCAmZHBpLT5lbmNvZGVyLCAmbXRrX2Rw aV9lbmNvZGVyX2Z1bmNzLAorCQkJICAgICAgIERSTV9NT0RFX0VOQ09ERVJfVE1EUywgTlVMTCk7 CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIGRlY29k ZXI6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl91bnJlZ2lzdGVyOworCX0KKwlkcm1fZW5jb2Rl cl9oZWxwZXJfYWRkKCZkcGktPmVuY29kZXIsICZtdGtfZHBpX2VuY29kZXJfaGVscGVyX2Z1bmNz KTsKKworCS8qIEN1cnJlbnRseSBEUEkwIGlzIGZpeGVkIHRvIGJlIGRyaXZlbiBieSBPVkwxICov CisJZHBpLT5lbmNvZGVyLnBvc3NpYmxlX2NydGNzID0gQklUKDEpOworCisJZHBpLT5lbmNvZGVy LmJyaWRnZS0+ZW5jb2RlciA9ICZkcGktPmVuY29kZXI7CisJcmV0ID0gZHJtX2JyaWRnZV9hdHRh Y2goZHBpLT5lbmNvZGVyLmRldiwgZHBpLT5lbmNvZGVyLmJyaWRnZSk7CisJaWYgKHJldCkgewor CQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBhdHRhY2ggYnJpZGdlOiAlZFxuIiwgcmV0KTsKKwkJ Z290byBlcnJfY2xlYW51cDsKKwl9CisKKwlkcGktPmJpdF9udW0gPSBNVEtfRFBJX09VVF9CSVRf TlVNXzhCSVRTOworCWRwaS0+Y2hhbm5lbF9zd2FwID0gTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQ X1JHQjsKKwlkcGktPnljX21hcCA9IE1US19EUElfT1VUX1lDX01BUF9SR0I7CisJZHBpLT5jb2xv cl9mb3JtYXQgPSBNVEtfRFBJX0NPTE9SX0ZPUk1BVF9SR0I7CisKKwlyZXR1cm4gMDsKKworZXJy X2NsZWFudXA6CisJZHJtX2VuY29kZXJfY2xlYW51cCgmZHBpLT5lbmNvZGVyKTsKK2Vycl91bnJl Z2lzdGVyOgorCW10a19kZHBfY29tcF91bnJlZ2lzdGVyKGRybV9kZXYsICZkcGktPmRkcF9jb21w KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX3VuYmluZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKKwkJCSAgIHZvaWQgKmRhdGEpCit7 CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBk cm1fZGV2aWNlICpkcm1fZGV2ID0gZGF0YTsKKworCWRybV9lbmNvZGVyX2NsZWFudXAoJmRwaS0+ ZW5jb2Rlcik7CisJbXRrX2RkcF9jb21wX3VucmVnaXN0ZXIoZHJtX2RldiwgJmRwaS0+ZGRwX2Nv bXApOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgbXRrX2RwaV9jb21w b25lbnRfb3BzID0geworCS5iaW5kID0gbXRrX2RwaV9iaW5kLAorCS51bmJpbmQgPSBtdGtfZHBp X3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3Ry dWN0IG10a19kcGkgKmRwaTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsKKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKmVwLCAqYnJpZGdlX25vZGUgPSBOVUxMOworCWludCBjb21wX2lkOworCWludCByZXQ7 CisKKwlkcGkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRwaSksIEdGUF9LRVJORUwpOwor CWlmICghZHBpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRwaS0+ZGV2ID0gZGV2OworCisJbWVt ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlkcGkt PnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCBtZW0pOworCWlmIChJU19FUlIoZHBp LT5yZWdzKSkgeworCQlyZXQgPSBQVFJfRVJSKGRwaS0+cmVncyk7CisJCWRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIGlvcmVtYXAgbWVtIHJlc291cmNlOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlkcGktPmVuZ2luZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiZW5naW5lIik7 CisJaWYgKElTX0VSUihkcGktPmVuZ2luZV9jbGspKSB7CisJCXJldCA9IFBUUl9FUlIoZHBpLT5l bmdpbmVfY2xrKTsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGVuZ2luZSBjbG9jazog JWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHBpLT5waXhlbF9jbGsgPSBkZXZt X2Nsa19nZXQoZGV2LCAicGl4ZWwiKTsKKwlpZiAoSVNfRVJSKGRwaS0+cGl4ZWxfY2xrKSkgewor CQlyZXQgPSBQVFJfRVJSKGRwaS0+cGl4ZWxfY2xrKTsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQg dG8gZ2V0IHBpeGVsIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlk cGktPnR2ZF9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGxsIik7CisJaWYgKElTX0VSUihkcGkt PnR2ZF9jbGspKSB7CisJCXJldCA9IFBUUl9FUlIoZHBpLT50dmRfY2xrKTsKKwkJZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gZ2V0IHR2ZHBsbCBjbG9jazogJWRcbiIsIHJldCk7CisJCXJldHVybiBy ZXQ7CisJfQorCisJZHBpLT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmIChk cGktPmlycSA8PSAwKSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBpcnE6ICVkXG4i LCBkcGktPmlycSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWVwID0gb2ZfZ3JhcGhfZ2V0 X25leHRfZW5kcG9pbnQoZGV2LT5vZl9ub2RlLCBOVUxMKTsKKwlpZiAoZXApIHsKKwkJYnJpZGdl X25vZGUgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVwKTsKKwkJb2Zfbm9kZV9w dXQoZXApOworCX0KKwlpZiAoIWJyaWRnZV9ub2RlKSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGZpbmQgYnJpZGdlIG5vZGVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlkZXZf aW5mbyhkZXYsICJGb3VuZCBicmlkZ2Ugbm9kZTogJXNcbiIsIGJyaWRnZV9ub2RlLT5mdWxsX25h bWUpOworCisJZHBpLT5lbmNvZGVyLmJyaWRnZSA9IG9mX2RybV9maW5kX2JyaWRnZShicmlkZ2Vf bm9kZSk7CisJb2Zfbm9kZV9wdXQoYnJpZGdlX25vZGUpOworCWlmICghZHBpLT5lbmNvZGVyLmJy aWRnZSkKKwkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CisKKwljb21wX2lkID0gbXRrX2RkcF9jb21w X2dldF9pZChkZXYtPm9mX25vZGUsIE1US19EUEkpOworCWlmIChjb21wX2lkIDwgMCkgeworCQlk ZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpZGVudGlmeSBieSBhbGlhczogJWRcbiIsIGNvbXBfaWQp OworCQlyZXR1cm4gY29tcF9pZDsKKwl9CisKKwlyZXQgPSBtdGtfZGRwX2NvbXBfaW5pdChkZXYs IGRldi0+b2Zfbm9kZSwgJmRwaS0+ZGRwX2NvbXAsIGNvbXBfaWQsCisJCQkJJm10a19kcGlfZnVu Y3MpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBj b21wb25lbnQ6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXBsYXRmb3JtX3Nl dF9kcnZkYXRhKHBkZXYsIGRwaSk7CisKKwlyZXQgPSBjb21wb25lbnRfYWRkKGRldiwgJm10a19k cGlfY29tcG9uZW50X29wcyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBhZGQgY29tcG9uZW50OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBtdGtfZHBpX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQoreworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJm10a19kcGlfY29tcG9u ZW50X29wcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgbXRrX2RwaV9vZl9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10 ODE3My1kcGkiLCB9LAorCXt9Cit9OworCitzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kcGlf ZHJpdmVyID0geworCS5wcm9iZSA9IG10a19kcGlfcHJvYmUsCisJLnJlbW92ZSA9IG10a19kcGlf cmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gIm1lZGlhdGVrLWRwaSIsCisJCS5vZl9t YXRjaF90YWJsZSA9IG10a19kcGlfb2ZfaWRzLAorCX0sCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcGlfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcGlfcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRi NmFkNDcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rw aV9yZWdzLmgKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVk aWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNvbT4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKyNpZm5k ZWYgX19NVEtfRFBJX1JFR1NfSAorI2RlZmluZSBfX01US19EUElfUkVHU19ICisKKyNkZWZpbmUg RFBJX0VOCQkJMHgwMAorI2RlZmluZSBFTgkJCQlCSVQoMCkKKworI2RlZmluZSBEUElfUkVUCQkJ MHgwNAorI2RlZmluZSBSU1QJCQkJQklUKDApCisKKyNkZWZpbmUgRFBJX0lOVEVOCQkweDA4Cisj ZGVmaW5lIElOVF9WU1lOQ19FTgkJCUJJVCgwKQorI2RlZmluZSBJTlRfVkRFX0VOCQkJQklUKDEp CisjZGVmaW5lIElOVF9VTkRFUkZMT1dfRU4JCUJJVCgyKQorCisjZGVmaW5lIERQSV9JTlRTVEEJ CTB4MEMKKyNkZWZpbmUgSU5UX1ZTWU5DX1NUQQkJCUJJVCgwKQorI2RlZmluZSBJTlRfVkRFX1NU QQkJCUJJVCgxKQorI2RlZmluZSBJTlRfVU5ERVJGTE9XX1NUQQkJQklUKDIpCisKKyNkZWZpbmUg RFBJX0NPTgkJCTB4MTAKKyNkZWZpbmUgQkdfRU5BQkxFCQkJQklUKDApCisjZGVmaW5lIElOX1JC X1NXQVAJCQlCSVQoMSkKKyNkZWZpbmUgSU5UTF9FTgkJCQlCSVQoMikKKyNkZWZpbmUgVERGUF9F TgkJCQlCSVQoMykKKyNkZWZpbmUgQ0xQRl9FTgkJCQlCSVQoNCkKKyNkZWZpbmUgWVVWNDIyX0VO CQkJQklUKDUpCisjZGVmaW5lIENTQ19FTkFCTEUJCQlCSVQoNikKKyNkZWZpbmUgUjYwMV9TRUwJ CQlCSVQoNykKKyNkZWZpbmUgRU1CU1lOQ19FTgkJCUJJVCg4KQorI2RlZmluZSBWU19MT0REX0VO CQkJQklUKDE2KQorI2RlZmluZSBWU19MRVZFTl9FTgkJCUJJVCgxNykKKyNkZWZpbmUgVlNfUk9E RF9FTgkJCUJJVCgxOCkKKyNkZWZpbmUgVlNfUkVWRU4JCQlCSVQoMTkpCisjZGVmaW5lIEZBS0Vf REVfTE9ERAkJCUJJVCgyMCkKKyNkZWZpbmUgRkFLRV9ERV9MRVZFTgkJCUJJVCgyMSkKKyNkZWZp bmUgRkFLRV9ERV9ST0RECQkJQklUKDIyKQorI2RlZmluZSBGQUtFX0RFX1JFVkVOCQkJQklUKDIz KQorCisjZGVmaW5lIERQSV9PVVRQVVRfU0VUVElORwkweDE0CisjZGVmaW5lIENIX1NXQVAJCQkJ MAorI2RlZmluZSBDSF9TV0FQX01BU0sJCQkoMHg3IDw8IDApCisjZGVmaW5lIFNXQVBfUkdCCQkJ MHgwMAorI2RlZmluZSBTV0FQX0dCUgkJCTB4MDEKKyNkZWZpbmUgU1dBUF9CUkcJCQkweDAyCisj ZGVmaW5lIFNXQVBfUkJHCQkJMHgwMworI2RlZmluZSBTV0FQX0dSQgkJCTB4MDQKKyNkZWZpbmUg U1dBUF9CR1IJCQkweDA1CisjZGVmaW5lIEJJVF9TV0FQCQkJQklUKDMpCisjZGVmaW5lIEJfTUFT SwkJCQlCSVQoNCkKKyNkZWZpbmUgR19NQVNLCQkJCUJJVCg1KQorI2RlZmluZSBSX01BU0sJCQkJ QklUKDYpCisjZGVmaW5lIERFX01BU0sJCQkJQklUKDgpCisjZGVmaW5lIEhTX01BU0sJCQkJQklU KDkpCisjZGVmaW5lIFZTX01BU0sJCQkJQklUKDEwKQorI2RlZmluZSBERV9QT0wJCQkJQklUKDEy KQorI2RlZmluZSBIU1lOQ19QT0wJCQlCSVQoMTMpCisjZGVmaW5lIFZTWU5DX1BPTAkJCUJJVCgx NCkKKyNkZWZpbmUgQ0tfUE9MCQkJCUJJVCgxNSkKKyNkZWZpbmUgT0VOX09GRgkJCQlCSVQoMTYp CisjZGVmaW5lIEVER0VfU0VMCQkJQklUKDE3KQorI2RlZmluZSBPVVRfQklUCQkJCTE4CisjZGVm aW5lIE9VVF9CSVRfTUFTSwkJCSgweDMgPDwgMTgpCisjZGVmaW5lIE9VVF9CSVRfOAkJCTB4MDAK KyNkZWZpbmUgT1VUX0JJVF8xMAkJCTB4MDEKKyNkZWZpbmUgT1VUX0JJVF8xMgkJCTB4MDIKKyNk ZWZpbmUgT1VUX0JJVF8xNgkJCTB4MDMKKyNkZWZpbmUgWUNfTUFQCQkJCTIwCisjZGVmaW5lIFlD X01BUF9NQVNLCQkJKDB4NyA8PCAyMCkKKyNkZWZpbmUgWUNfTUFQX1JHQgkJCTB4MDAKKyNkZWZp bmUgWUNfTUFQX0NZQ1kJCQkweDA0CisjZGVmaW5lIFlDX01BUF9ZQ1lDCQkJMHgwNQorI2RlZmlu ZSBZQ19NQVBfQ1kJCQkweDA2CisjZGVmaW5lIFlDX01BUF9ZQwkJCTB4MDcKKworI2RlZmluZSBE UElfU0laRQkJMHgxOAorI2RlZmluZSBIU0laRQkJCQkwCisjZGVmaW5lIEhTSVpFX01BU0sJCQko MHgxRkZGIDw8IDApCisjZGVmaW5lIFZTSVpFCQkJCTE2CisjZGVmaW5lIFZTSVpFX01BU0sJCQko MHgxRkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9ERFJfU0VUVElORwkJMHgxQworI2RlZmluZSBE RFJfRU4JCQkJQklUKDApCisjZGVmaW5lIERERFJfU0VMCQkJQklUKDEpCisjZGVmaW5lIEREUl80 UEhBU0UJCQlCSVQoMikKKyNkZWZpbmUgRERSX1dJRFRICQkJKDB4MyA8PCA0KQorI2RlZmluZSBE RFJfUEFEX01PREUJCQkoMHgxIDw8IDgpCisKKyNkZWZpbmUgRFBJX1RHRU5fSFdJRFRICQkweDIw CisjZGVmaW5lIEhQVwkJCQkwCisjZGVmaW5lIEhQV19NQVNLCQkJKDB4RkZGIDw8IDApCisKKyNk ZWZpbmUgRFBJX1RHRU5fSFBPUkNICQkweDI0CisjZGVmaW5lIEhCUAkJCQkwCisjZGVmaW5lIEhC UF9NQVNLCQkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEhGUAkJCQkxNgorI2RlZmluZSBIRlBfTUFT SwkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfVEdFTl9WV0lEVEgJCTB4MjgKKyNkZWZp bmUgRFBJX1RHRU5fVlBPUkNICQkweDJDCisKKyNkZWZpbmUgVlNZTkNfV0lEVEhfU0hJRlQJCTAK KyNkZWZpbmUgVlNZTkNfV0lEVEhfTUFTSwkJKDB4RkZGIDw8IDApCisjZGVmaW5lIFZTWU5DX0hB TEZfTElORV9TSElGVAkJMTYKKyNkZWZpbmUgVlNZTkNfSEFMRl9MSU5FX01BU0sJCUJJVCgxNikK KyNkZWZpbmUgVlNZTkNfQkFDS19QT1JDSF9TSElGVAkJMAorI2RlZmluZSBWU1lOQ19CQUNLX1BP UkNIX01BU0sJCSgweEZGRiA8PCAwKQorI2RlZmluZSBWU1lOQ19GUk9OVF9QT1JDSF9TSElGVAkJ MTYKKyNkZWZpbmUgVlNZTkNfRlJPTlRfUE9SQ0hfTUFTSwkJKDB4RkZGIDw8IDE2KQorCisjZGVm aW5lIERQSV9CR19IQ05UTAkJMHgzMAorI2RlZmluZSBCR19SSUdIVAkJCSgweDFGRkYgPDwgMCkK KyNkZWZpbmUgQkdfTEVGVAkJCQkoMHgxRkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9CR19WQ05U TAkJMHgzNAorI2RlZmluZSBCR19CT1QJCQkJKDB4MUZGRiA8PCAwKQorI2RlZmluZSBCR19UT1AJ CQkJKDB4MUZGRiA8PCAxNikKKworI2RlZmluZSBEUElfQkdfQ09MT1IJCTB4MzgKKyNkZWZpbmUg QkdfQgkJCQkoMHhGIDw8IDApCisjZGVmaW5lIEJHX0cJCQkJKDB4RiA8PCA4KQorI2RlZmluZSBC R19SCQkJCSgweEYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0ZJRk9fQ1RMCQkweDNDCisjZGVmaW5l IEZJRk9fVkFMSURfU0VUCQkJKDB4MUYgPDwgMCkKKyNkZWZpbmUgRklGT19SU1RfU0VMCQkJKDB4 MSA8PCA4KQorCisjZGVmaW5lIERQSV9TVEFUVVMJCTB4NDAKKyNkZWZpbmUgVkNPVU5URVIJCQko MHgxRkZGIDw8IDApCisjZGVmaW5lIERQSV9CVVNZCQkJQklUKDE2KQorI2RlZmluZSBPVVRFTgkJ CQlCSVQoMTcpCisjZGVmaW5lIEZJRUxECQkJCUJJVCgyMCkKKyNkZWZpbmUgVERMUgkJCQlCSVQo MjEpCisKKyNkZWZpbmUgRFBJX1RNT0RFCQkweDQ0CisjZGVmaW5lIERQSV9PRU5fT04JCQlCSVQo MCkKKworI2RlZmluZSBEUElfQ0hFQ0tTVU0JCTB4NDgKKyNkZWZpbmUgRFBJX0NIRUNLU1VNX01B U0sJCSgweEZGRkZGRiA8PCAwKQorI2RlZmluZSBEUElfQ0hFQ0tTVU1fUkVBRFkJCUJJVCgzMCkK KyNkZWZpbmUgRFBJX0NIRUNLU1VNX0VOCQkJQklUKDMxKQorCisjZGVmaW5lIERQSV9EVU1NWQkJ MHg1MAorI2RlZmluZSBEUElfRFVNTVlfTUFTSwkJCSgweEZGRkZGRkZGIDw8IDApCisKKyNkZWZp bmUgRFBJX1RHRU5fVldJRFRIX0xFVkVOCTB4NjgKKyNkZWZpbmUgRFBJX1RHRU5fVlBPUkNIX0xF VkVOCTB4NkMKKyNkZWZpbmUgRFBJX1RHRU5fVldJRFRIX1JPREQJMHg3MAorI2RlZmluZSBEUElf VEdFTl9WUE9SQ0hfUk9ERAkweDc0CisjZGVmaW5lIERQSV9UR0VOX1ZXSURUSF9SRVZFTgkweDc4 CisjZGVmaW5lIERQSV9UR0VOX1ZQT1JDSF9SRVZFTgkweDdDCisKKyNkZWZpbmUgRFBJX0VTQVZf VlRJTUlOR19MT0RECTB4ODAKKyNkZWZpbmUgRVNBVl9WT0ZTVF9MT0RECQkJKDB4RkZGIDw8IDAp CisjZGVmaW5lIEVTQVZfVldJRF9MT0RECQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9F U0FWX1ZUSU1JTkdfTEVWRU4JMHg4NAorI2RlZmluZSBFU0FWX1ZPRlNUX0xFVkVOCQkoMHhGRkYg PDwgMCkKKyNkZWZpbmUgRVNBVl9WV0lEX0xFVkVOCQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5l IERQSV9FU0FWX1ZUSU1JTkdfUk9ERAkweDg4CisjZGVmaW5lIEVTQVZfVk9GU1RfUk9ERAkJCSgw eEZGRiA8PCAwKQorI2RlZmluZSBFU0FWX1ZXSURfUk9ERAkJCSgweEZGRiA8PCAxNikKKworI2Rl ZmluZSBEUElfRVNBVl9WVElNSU5HX1JFVkVOCTB4OEMKKyNkZWZpbmUgRVNBVl9WT0ZTVF9SRVZF TgkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9SRVZFTgkJCSgweEZGRiA8PCAxNikK KworI2RlZmluZSBEUElfRVNBVl9GVElNSU5HCTB4OTAKKyNkZWZpbmUgRVNBVl9GT0ZTVF9PREQJ CQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9GT0ZTVF9FVkVOCQkJKDB4RkZGIDw8IDE2KQor CisjZGVmaW5lIERQSV9DTFBGX1NFVFRJTkcJMHg5NAorI2RlZmluZSBDTFBGX1RZUEUJCQkoMHgz IDw8IDApCisjZGVmaW5lIFJPVU5EX0VOCQkJQklUKDQpCisKKyNkZWZpbmUgRFBJX1lfTElNSVQJ CTB4OTgKKyNkZWZpbmUgWV9MSU1JTlRfQk9UCQkJMAorI2RlZmluZSBZX0xJTUlOVF9CT1RfTUFT SwkJKDB4RkZGIDw8IDApCisjZGVmaW5lIFlfTElNSU5UX1RPUAkJCTE2CisjZGVmaW5lIFlfTElN SU5UX1RPUF9NQVNLCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0NfTElNSVQJCTB4OUMK KyNkZWZpbmUgQ19MSU1JVF9CT1QJCQkwCisjZGVmaW5lIENfTElNSVRfQk9UX01BU0sJCSgweEZG RiA8PCAwKQorI2RlZmluZSBDX0xJTUlUX1RPUAkJCTE2CisjZGVmaW5lIENfTElNSVRfVE9QX01B U0sJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfWVVWNDIyX1NFVFRJTkcJMHhBMAorI2Rl ZmluZSBVVl9TV0FQCQkJCUJJVCgwKQorI2RlZmluZSBDUl9ERUxTRUwJCQlCSVQoNCkKKyNkZWZp bmUgQ0JfREVMU0VMCQkJQklUKDUpCisjZGVmaW5lIFlfREVMU0VMCQkJQklUKDYpCisjZGVmaW5l IERFX0RFTFNFTAkJCUJJVCg3KQorCisjZGVmaW5lIERQSV9FTUJTWU5DX1NFVFRJTkcJMHhBNAor I2RlZmluZSBFTUJTWU5DX1JfQ1JfRU4JCQlCSVQoMCkKKyNkZWZpbmUgRU1QU1lOQ19HX1lfRU4J CQlCSVQoMSkKKyNkZWZpbmUgRU1QU1lOQ19CX0NCX0VOCQkJQklUKDIpCisjZGVmaW5lIEVTQVZf Rl9JTlYJCQlCSVQoNCkKKyNkZWZpbmUgRVNBVl9WX0lOVgkJCUJJVCg1KQorI2RlZmluZSBFU0FW X0hfSU5WCQkJQklUKDYpCisjZGVmaW5lIEVTQVZfQ09ERV9NQU4JCQlCSVQoOCkKKyNkZWZpbmUg VlNfT1VUX1NFTAkJCSgweDcgPDwgMTIpCisKKyNkZWZpbmUgRFBJX0VTQVZfQ09ERV9TRVQwCTB4 QTgKKyNkZWZpbmUgRVNBVl9DT0RFMAkJCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FWX0NPREUx CQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9FU0FWX0NPREVfU0VUMQkweEFDCisjZGVm aW5lIEVTQVZfQ09ERTIJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9DT0RFM19NU0IJCQlC SVQoMTYpCisKKyNkZWZpbmUgRFBJX0hfRlJFX0NPTgkJMHhFMAorI2RlZmluZSBIX0ZSRV8yTgkJ CUJJVCgyNSkKKyNlbmRpZiAvKiBfX01US19EUElfUkVHU19IICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5jCmluZGV4IDA4NzgyZDcuLjI3NzRjYmQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCkBAIC01MTYsNiArNTE2LDcgQEAgc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgKiBjb25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9IHsKIAkmbXRrX2Rk cF9kcml2ZXIsCiAJJm10a19kaXNwX292bF9kcml2ZXIsCiAJJm10a19kaXNwX3JkbWFfZHJpdmVy LAorCSZtdGtfZHBpX2RyaXZlciwKIAkmbXRrX2RybV9wbGF0Zm9ybV9kcml2ZXIsCiAJJm10a19k c2lfZHJpdmVyLAogCSZtdGtfbWlwaV90eF9kcml2ZXIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2Rydi5oCmluZGV4IGFjNmM5MmIuLmFhOTM4OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5oCkBAIC01Myw2ICs1Myw3IEBAIHN0cnVjdCBtdGtfZHJtX3ByaXZh dGUgewogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RkcF9kcml2ZXI7CiBleHRl cm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZGlzcF9vdmxfZHJpdmVyOwogZXh0ZXJuIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfcmRtYV9kcml2ZXI7CitleHRlcm4gc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBtdGtfZHBpX2RyaXZlcjsKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1f ZHJpdmVyIG10a19kc2lfZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRr X21pcGlfdHhfZHJpdmVyOwogCi0tIAoyLjguMC5yYzMKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=