From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH v8 04/13] drm/mediatek: Add DPI sub driver Date: Mon, 4 Jan 2016 18:36:36 +0100 Message-ID: <1451929005-16372-5-git-send-email-p.zabel@pengutronix.de> References: <1451929005-16372-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: <1451929005-16372-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 , 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 , Stephen Boyd , Tomasz Figa , Kumar Gala List-Id: devicetree@vger.kernel.org RnJvbTogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CgpBZGQgRFBJIGNvbm5lY3Rvci9l bmNvZGVyIHRvIHN1cHBvcnQgSERNSSBvdXRwdXQgdmlhIHRoZQphdHRhY2hlZCBIRE1JIGJyaWRn ZS4KClNpZ25lZC1vZmYtYnk6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgpTaWduZWQt b2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgotLS0KQ2hhbmdl cyBzaW5jZSB2NzoKIC0gRml4IG10a19kcGlfcG93ZXJfb24gcmVmZXJlbmNlIGNvdW50aW5nCiAt IE1ha2UgbXRrX2RwaV9wb3dlcl9vZmYgcmV0dXJuIHZvaWQKLS0tCiBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHBpLmMgICAgICB8IDczNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuaCAgICAgIHwgIDg0ICsrKysKIGRyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3JlZ3MuaCB8IDIyOCArKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAgfCAgIDEgKwogZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTA1 MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUK aW5kZXggZTFhNDBmNC4uMjE4MDcxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQpAQCAt Nyw2ICs3LDcgQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3Bfb3ZsLm8gXAogCQkgIG10a19k cm1fZ2VtLm8gXAogCQkgIG10a19kcm1fcGxhbmUubyBcCiAJCSAgbXRrX2RzaS5vIFwKLQkJICBt dGtfbWlwaV90eC5vCisJCSAgbXRrX21pcGlfdHgubyBcCisJCSAgbXRrX2RwaS5vCiAKIG9iai0k KENPTkZJR19EUk1fTUVESUFURUspICs9IG1lZGlhdGVrLWRybS5vCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGVhZmEwCi0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYwpAQCAt MCwwICsxLDczNyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCBNZWRpYVRlayBJbmMuCisg KiBBdXRob3I6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworI2luY2x1ZGUgPGRybS9kcm1Q Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hl bHBlci5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbXBv bmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxp bnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNpbmNsdWRlIDxsaW51eC9p bnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKworI2luY2x1ZGUgIm10a19kcGku aCIKKyNpbmNsdWRlICJtdGtfZHBpX3JlZ3MuaCIKKworZW51bSBtdGtfZHBpX3BvbGFyaXR5IHsK KwlNVEtfRFBJX1BPTEFSSVRZX1JJU0lORywKKwlNVEtfRFBJX1BPTEFSSVRZX0ZBTExJTkcsCit9 OworCitzdHJ1Y3QgbXRrX2RwaV9wb2xhcml0aWVzIHsKKwllbnVtIG10a19kcGlfcG9sYXJpdHkg ZGVfcG9sOworCWVudW0gbXRrX2RwaV9wb2xhcml0eSBja19wb2w7CisJZW51bSBtdGtfZHBpX3Bv bGFyaXR5IGhzeW5jX3BvbDsKKwllbnVtIG10a19kcGlfcG9sYXJpdHkgdnN5bmNfcG9sOworfTsK Kworc3RydWN0IG10a19kcGlfc3luY19wYXJhbSB7CisJdTMyIHN5bmNfd2lkdGg7CisJdTMyIGZy b250X3BvcmNoOworCXUzMiBiYWNrX3BvcmNoOworCWJvb2wgc2hpZnRfaGFsZl9saW5lOworfTsK Kworc3RydWN0IG10a19kcGlfeWNfbGltaXQgeworCXUxNiB5X3RvcDsKKwl1MTYgeV9ib3R0b207 CisJdTE2IGNfdG9wOworCXUxNiBjX2JvdHRvbTsKK307CisKK3N0YXRpYyB2b2lkIG10a19kcGlf bWFzayhzdHJ1Y3QgbXRrX2RwaSAqZHBpLCB1MzIgb2Zmc2V0LCB1MzIgdmFsLCB1MzIgbWFzaykK K3sKKwl1MzIgdG1wID0gcmVhZGwoZHBpLT5yZWdzICsgb2Zmc2V0KSAmIH5tYXNrOworCisJdG1w IHw9ICh2YWwgJiBtYXNrKTsKKwl3cml0ZWwodG1wLCBkcGktPnJlZ3MgKyBvZmZzZXQpOworfQor CitzdGF0aWMgdm9pZCBtdGtfZHBpX3N3X3Jlc2V0KHN0cnVjdCBtdGtfZHBpICpkcGksIGJvb2wg cmVzZXQpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1JFVCwgcmVzZXQgPyBSU1QgOiAwLCBS U1QpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuYWJsZShzdHJ1Y3QgbXRrX2RwaSAqZHBp KQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9FTiwgRU4sIEVOKTsKK30KKworc3RhdGljIHZv aWQgbXRrX2RwaV9kaXNhYmxlKHN0cnVjdCBtdGtfZHBpICpkcGkpCit7CisJbXRrX2RwaV9tYXNr KGRwaSwgRFBJX0VOLCAwLCBFTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2hz eW5jKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0g KnN5bmMpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1RHRU5fSFdJRFRILAorCQkJICBzeW5j LT5zeW5jX3dpZHRoIDw8IEhQVywgSFBXX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9U R0VOX0hQT1JDSCwKKwkJCSAgc3luYy0+YmFja19wb3JjaCA8PCBIQlAsIEhCUF9NQVNLKTsKKwlt dGtfZHBpX21hc2soZHBpLCBEUElfVEdFTl9IUE9SQ0gsIHN5bmMtPmZyb250X3BvcmNoIDw8IEhG UCwKKwkJCSAgSEZQX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ192c3lu YyhzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpz eW5jLAorCQkJCSB1MzIgd2lkdGhfYWRkciwgdTMyIHBvcmNoX2FkZHIpCit7CisJbXRrX2RwaV9t YXNrKGRwaSwgd2lkdGhfYWRkciwKKwkJICAgICBzeW5jLT5zeW5jX3dpZHRoIDw8IFZTWU5DX1dJ RFRIX1NISUZULAorCQkgICAgIFZTWU5DX1dJRFRIX01BU0spOworCW10a19kcGlfbWFzayhkcGks IHdpZHRoX2FkZHIsCisJCSAgICAgc3luYy0+c2hpZnRfaGFsZl9saW5lIDw8IFZTWU5DX0hBTEZf TElORV9TSElGVCwKKwkJICAgICBWU1lOQ19IQUxGX0xJTkVfTUFTSyk7CisJbXRrX2RwaV9tYXNr KGRwaSwgcG9yY2hfYWRkciwKKwkJICAgICBzeW5jLT5iYWNrX3BvcmNoIDw8IFZTWU5DX0JBQ0tf UE9SQ0hfU0hJRlQsCisJCSAgICAgVlNZTkNfQkFDS19QT1JDSF9NQVNLKTsKKwltdGtfZHBpX21h c2soZHBpLCBwb3JjaF9hZGRyLAorCQkgICAgIHN5bmMtPmZyb250X3BvcmNoIDw8IFZTWU5DX0ZS T05UX1BPUkNIX1NISUZULAorCQkgICAgIFZTWU5DX0ZST05UX1BPUkNIX01BU0spOworfQorCitz dGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ192c3luY19sb2RkKHN0cnVjdCBtdGtfZHBpICpkcGks CisJCQkJICAgICAgc3RydWN0IG10a19kcGlfc3luY19wYXJhbSAqc3luYykKK3sKKwltdGtfZHBp X2NvbmZpZ192c3luYyhkcGksIHN5bmMsIERQSV9UR0VOX1ZXSURUSCwgRFBJX1RHRU5fVlBPUkNI KTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfdnN5bmNfbGV2ZW4oc3RydWN0IG10 a19kcGkgKmRwaSwKKwkJCQkgICAgICAgc3RydWN0IG10a19kcGlfc3luY19wYXJhbSAqc3luYykK K3sKKwltdGtfZHBpX2NvbmZpZ192c3luYyhkcGksIHN5bmMsIERQSV9UR0VOX1ZXSURUSF9MRVZF TiwKKwkJCSAgICAgRFBJX1RHRU5fVlBPUkNIX0xFVkVOKTsKK30KKworc3RhdGljIHZvaWQgbXRr X2RwaV9jb25maWdfdnN5bmNfcm9kZChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgICAgIHN0 cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMo ZHBpLCBzeW5jLCBEUElfVEdFTl9WV0lEVEhfUk9ERCwKKwkJCSAgICAgRFBJX1RHRU5fVlBPUkNI X1JPREQpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ192c3luY19yZXZlbihzdHJ1 Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpz eW5jKQoreworCW10a19kcGlfY29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRI X1JFVkVOLAorCQkJICAgICBEUElfVEdFTl9WUE9SQ0hfUkVWRU4pOworfQorCitzdGF0aWMgdm9p ZCBtdGtfZHBpX2NvbmZpZ19wb2woc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCSAgICAgICBzdHJ1 Y3QgbXRrX2RwaV9wb2xhcml0aWVzICpkcGlfcG9sKQoreworCXVuc2lnbmVkIGludCBwb2w7CisK Kwlwb2wgPSAoZHBpX3BvbC0+Y2tfcG9sID09IE1US19EUElfUE9MQVJJVFlfUklTSU5HID8gMCA6 IENLX1BPTCkgfAorCSAgICAgIChkcGlfcG9sLT5kZV9wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9S SVNJTkcgPyAwIDogREVfUE9MKSB8CisJICAgICAgKGRwaV9wb2wtPmhzeW5jX3BvbCA9PSBNVEtf RFBJX1BPTEFSSVRZX1JJU0lORyA/IDAgOiBIU1lOQ19QT0wpIHwKKwkgICAgICAoZHBpX3BvbC0+ dnN5bmNfcG9sID09IE1US19EUElfUE9MQVJJVFlfUklTSU5HID8gMCA6IFZTWU5DX1BPTCk7CisJ bXRrX2RwaV9tYXNrKGRwaSwgRFBJX09VVFBVVF9TRVRUSU5HLCBwb2wsCisJCSAgICAgQ0tfUE9M IHwgREVfUE9MIHwgSFNZTkNfUE9MIHwgVlNZTkNfUE9MKTsKK30KKworc3RhdGljIHZvaWQgbXRr X2RwaV9jb25maWdfM2Qoc3RydWN0IG10a19kcGkgKmRwaSwgYm9vbCBlbl8zZCkKK3sKKwltdGtf ZHBpX21hc2soZHBpLCBEUElfQ09OLCBlbl8zZCA/IFRERlBfRU4gOiAwLCBUREZQX0VOKTsKK30K Kworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfaW50ZXJmYWNlKHN0cnVjdCBtdGtfZHBpICpk cGksIGJvb2wgaW50ZXIpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgaW50ZXIgPyBJ TlRMX0VOIDogMCwgSU5UTF9FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2Zi X3NpemUoc3RydWN0IG10a19kcGkgKmRwaSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQoreworCW10 a19kcGlfbWFzayhkcGksIERQSV9TSVpFLCB3aWR0aCA8PCBIU0laRSwgSFNJWkVfTUFTSyk7CisJ bXRrX2RwaV9tYXNrKGRwaSwgRFBJX1NJWkUsIGhlaWdodCA8PCBWU0laRSwgVlNJWkVfTUFTSyk7 Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2NoYW5uZWxfbGltaXQoc3RydWN0IG10 a19kcGkgKmRwaSwKKwkJCQkJIHN0cnVjdCBtdGtfZHBpX3ljX2xpbWl0ICpsaW1pdCkKK3sKKwlt dGtfZHBpX21hc2soZHBpLCBEUElfWV9MSU1JVCwgbGltaXQtPnlfYm90dG9tIDw8IFlfTElNSU5U X0JPVCwKKwkJICAgICBZX0xJTUlOVF9CT1RfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJ X1lfTElNSVQsIGxpbWl0LT55X3RvcCA8PCBZX0xJTUlOVF9UT1AsCisJCSAgICAgWV9MSU1JTlRf VE9QX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9DX0xJTUlULCBsaW1pdC0+Y19ib3R0 b20gPDwgQ19MSU1JVF9CT1QsCisJCSAgICAgQ19MSU1JVF9CT1RfTUFTSyk7CisJbXRrX2RwaV9t YXNrKGRwaSwgRFBJX0NfTElNSVQsIGxpbWl0LT5jX3RvcCA8PCBDX0xJTUlUX1RPUCwKKwkJICAg ICBDX0xJTUlUX1RPUF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfYml0 X251bShzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgIGVudW0gbXRrX2RwaV9vdXRfYml0X251 bSBudW0pCit7CisJdTMyIHZhbDsKKworCXN3aXRjaCAobnVtKSB7CisJY2FzZSBNVEtfRFBJX09V VF9CSVRfTlVNXzhCSVRTOgorCQl2YWwgPSBPVVRfQklUXzg7CisJCWJyZWFrOworCWNhc2UgTVRL X0RQSV9PVVRfQklUX05VTV8xMEJJVFM6CisJCXZhbCA9IE9VVF9CSVRfMTA7CisJCWJyZWFrOwor CWNhc2UgTVRLX0RQSV9PVVRfQklUX05VTV8xMkJJVFM6CisJCXZhbCA9IE9VVF9CSVRfMTI7CisJ CWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQklUX05VTV8xNkJJVFM6CisJCXZhbCA9IE9VVF9C SVRfMTY7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXZhbCA9IE9VVF9CSVRfODsKKwkJYnJlYWs7 CisJfQorCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQVVRfU0VUVElORywgdmFsIDw8IE9VVF9C SVQsCisJCSAgICAgIE9VVF9CSVRfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29u ZmlnX3ljX21hcChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgZW51bSBtdGtfZHBpX291dF95 Y19tYXAgbWFwKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2ggKG1hcCkgeworCWNhc2UgTVRLX0RQ SV9PVVRfWUNfTUFQX1JHQjoKKwkJdmFsID0gWUNfTUFQX1JHQjsKKwkJYnJlYWs7CisJY2FzZSBN VEtfRFBJX09VVF9ZQ19NQVBfQ1lDWToKKwkJdmFsID0gWUNfTUFQX0NZQ1k7CisJCWJyZWFrOwor CWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1lDWUM6CisJCXZhbCA9IFlDX01BUF9ZQ1lDOworCQli cmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9DWToKKwkJdmFsID0gWUNfTUFQX0NZOwor CQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9ZQzoKKwkJdmFsID0gWUNfTUFQX1lD OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwgPSBZQ19NQVBfUkdCOworCQlicmVhazsKKwl9 CisKKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHZhbCA8PCBZQ19NQVAs IFlDX01BUF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfY2hhbm5lbF9z d2FwKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJCWVudW0gbXRrX2RwaV9vdXRfY2hhbm5lbF9z d2FwIHN3YXApCit7CisJdTMyIHZhbDsKKworCXN3aXRjaCAoc3dhcCkgeworCWNhc2UgTVRLX0RQ SV9PVVRfQ0hBTk5FTF9TV0FQX1JHQjoKKwkJdmFsID0gU1dBUF9SR0I7CisJCWJyZWFrOworCWNh c2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0dCUjoKKwkJdmFsID0gU1dBUF9HQlI7CisJCWJy ZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0JSRzoKKwkJdmFsID0gU1dBUF9C Ukc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JCRzoKKwkJdmFs ID0gU1dBUF9SQkc7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0dS QjoKKwkJdmFsID0gU1dBUF9HUkI7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfQ0hBTk5F TF9TV0FQX0JHUjoKKwkJdmFsID0gU1dBUF9CR1I7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXZh bCA9IFNXQVBfUkdCOworCQlicmVhazsKKwl9CisKKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VU UFVUX1NFVFRJTkcsIHZhbCA8PCBDSF9TV0FQLCBDSF9TV0FQX01BU0spOworfQorCitzdGF0aWMg dm9pZCBtdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKHN0cnVjdCBtdGtfZHBpICpkcGksIGJv b2wgZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9DT04sIGVuYWJsZSA/IFlVVjQy Ml9FTiA6IDAsIFlVVjQyMl9FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2Nz Y19lbmFibGUoc3RydWN0IG10a19kcGkgKmRwaSwgYm9vbCBlbmFibGUpCit7CisJbXRrX2RwaV9t YXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxlID8gQ1NDX0VOQUJMRSA6IDAsIENTQ19FTkFCTEUpOwor fQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KHN0cnVjdCBtdGtfZHBp ICpkcGksIGJvb2wgZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9DT04sIGVuYWJs ZSA/IElOX1JCX1NXQVAgOiAwLCBJTl9SQl9TV0FQKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2Rw aV9jb25maWdfMm5faF9mcmUoc3RydWN0IG10a19kcGkgKmRwaSkKK3sKKwltdGtfZHBpX21hc2so ZHBpLCBEUElfSF9GUkVfQ09OLCBIX0ZSRV8yTiwgSF9GUkVfMk4pOworfQorCitzdGF0aWMgdm9p ZCBtdGtfZHBpX2NvbmZpZ19jb2xvcl9mb3JtYXQoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkJ ZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgZm9ybWF0KQoreworCWlmICgoZm9ybWF0ID09 IE1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQ0NCkgfHwKKwkgICAgKGZvcm1hdCA9PSBNVEtf RFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80NDRfRlVMTCkpIHsKKwkJbXRrX2RwaV9jb25maWdfeXV2 NDIyX2VuYWJsZShkcGksIGZhbHNlKTsKKwkJbXRrX2RwaV9jb25maWdfY3NjX2VuYWJsZShkcGks IHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KGRwaSwgZmFsc2UpOworCQltdGtf ZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfQkdS KTsKKwl9IGVsc2UgaWYgKChmb3JtYXQgPT0gTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDIy KSB8fAorCQkgICAoZm9ybWF0ID09IE1US19EUElfQ09MT1JfRk9STUFUX1lDQkNSXzQyMl9GVUxM KSkgeworCQltdGtfZHBpX2NvbmZpZ195dXY0MjJfZW5hYmxlKGRwaSwgdHJ1ZSk7CisJCW10a19k cGlfY29uZmlnX2NzY19lbmFibGUoZHBpLCB0cnVlKTsKKwkJbXRrX2RwaV9jb25maWdfc3dhcF9p bnB1dChkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtf RFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCKTsKKwl9IGVsc2UgeworCQltdGtfZHBpX2NvbmZpZ195 dXY0MjJfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19jc2NfZW5hYmxlKGRw aSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lucHV0KGRwaSwgZmFsc2UpOworCQlt dGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3YXAoZHBpLCBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBf UkdCKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfcG93ZXJfb2ZmKHN0cnVjdCBtdGtf ZHBpICpkcGkpCit7CisJaWYgKFdBUk5fT04oZHBpLT5yZWZjb3VudCA9PSAwKSkKKwkJcmV0dXJu OworCisJaWYgKC0tZHBpLT5yZWZjb3VudCAhPSAwKQorCQlyZXR1cm47CisKKwltdGtfZHBpX2Rp c2FibGUoZHBpKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHBpLT5waXhlbF9jbGspOworCWNs a19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOworfQorCitzdGF0aWMgaW50IG10 a19kcGlfcG93ZXJfb24oc3RydWN0IG10a19kcGkgKmRwaSkKK3sKKwlpbnQgcmV0OworCisJaWYg KCsrZHBpLT5yZWZjb3VudCAhPSAxKQorCQlyZXR1cm4gMDsKKworCXJldCA9IGNsa19wcmVwYXJl X2VuYWJsZShkcGktPmVuZ2luZV9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkcGktPmRl diwgIkZhaWxlZCB0byBlbmFibGUgZW5naW5lIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJZ290byBl cnJfZGVjOworCX0KKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkcGktPnBpeGVsX2Nsayk7 CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRwaS0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBwaXhl bCBjbG9jazogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2NsazsKKwl9CisKKwltdGtfZHBpX2Vu YWJsZShkcGkpOworCisJcmV0dXJuIDA7CisKK2Vycl9jbGs6CisJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGRwaS0+ZW5naW5lX2Nsayk7CitlcnJfZGVjOgorCWRwaS0+cmVmY291bnQtLTsKKwlyZXR1 cm4gcmV0OworfQorCitpbnQgbXRrX2RwaV9zZXRfZGlzcGxheV9tb2RlKHN0cnVjdCBtdGtfZHBp ICpkcGksIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXN0cnVjdCBtdGtfZHBp X3ljX2xpbWl0IGxpbWl0OworCXN0cnVjdCBtdGtfZHBpX3BvbGFyaXRpZXMgZHBpX3BvbDsKKwlz dHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIGhzeW5jOworCXN0cnVjdCBtdGtfZHBpX3N5bmNfcGFy YW0gdnN5bmNfbG9kZCA9IHsgMCB9OworCXN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gdnN5bmNf bGV2ZW4gPSB7IDAgfTsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX3JvZGQgPSB7 IDAgfTsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX3JldmVuID0geyAwIH07CisJ dW5zaWduZWQgbG9uZyBwaXhfcmF0ZTsKKwl1bnNpZ25lZCBsb25nIHBsbF9yYXRlOworCXVuc2ln bmVkIGludCBmYWN0b3I7CisKKwlpZiAoIWRwaSkgeworCQlkZXZfZXJyKGRwaS0+ZGV2LCAiaW52 YWxpZCBhcmd1bWVudFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXBpeF9yYXRlID0g MTAwMFVMICogbW9kZS0+Y2xvY2s7CisJaWYgKG1vZGUtPmNsb2NrIDw9IDc0MDAwKQorCQlmYWN0 b3IgPSA4ICogMzsKKwllbHNlCisJCWZhY3RvciA9IDQgKiAzOworCXBsbF9yYXRlID0gcGl4X3Jh dGUgKiBmYWN0b3I7CisKKwlkZXZfZGJnKGRwaS0+ZGV2LCAiV2FudCBQTEwgJWx1IEh6LCBwaXhl bCBjbG9jayAlbHUgSHpcbiIsCisJCXBsbF9yYXRlLCBwaXhfcmF0ZSk7CisKKwljbGtfc2V0X3Jh dGUoZHBpLT50dmRfY2xrLCBwbGxfcmF0ZSk7CisJcGxsX3JhdGUgPSBjbGtfZ2V0X3JhdGUoZHBp LT50dmRfY2xrKTsKKworCXBpeF9yYXRlID0gcGxsX3JhdGUgLyBmYWN0b3I7CisJY2xrX3NldF9y YXRlKGRwaS0+cGl4ZWxfY2xrLCBwaXhfcmF0ZSk7CisJcGl4X3JhdGUgPSBjbGtfZ2V0X3JhdGUo ZHBpLT5waXhlbF9jbGspOworCisJZGV2X2RiZyhkcGktPmRldiwgIkdvdCAgUExMICVsdSBIeiwg cGl4ZWwgY2xvY2sgJWx1IEh6XG4iLAorCQlwbGxfcmF0ZSwgcGl4X3JhdGUpOworCisJbGltaXQu Y19ib3R0b20gPSAweDAwMTA7CisJbGltaXQuY190b3AgPSAweDBGRTA7CisJbGltaXQueV9ib3R0 b20gPSAweDAwMTA7CisJbGltaXQueV90b3AgPSAweDBGRTA7CisKKwlkcGlfcG9sLmNrX3BvbCA9 IE1US19EUElfUE9MQVJJVFlfRkFMTElORzsKKwlkcGlfcG9sLmRlX3BvbCA9IE1US19EUElfUE9M QVJJVFlfUklTSU5HOworCWRwaV9wb2wuaHN5bmNfcG9sID0gbW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX1BIU1lOQyA/CisJCQkgICAgTVRLX0RQSV9QT0xBUklUWV9GQUxMSU5HIDogTVRLX0RQ SV9QT0xBUklUWV9SSVNJTkc7CisJZHBpX3BvbC52c3luY19wb2wgPSBtb2RlLT5mbGFncyAmIERS TV9NT0RFX0ZMQUdfUFZTWU5DID8KKwkJCSAgICBNVEtfRFBJX1BPTEFSSVRZX0ZBTExJTkcgOiBN VEtfRFBJX1BPTEFSSVRZX1JJU0lORzsKKworCWhzeW5jLnN5bmNfd2lkdGggPSBtb2RlLT5oc3lu Y19lbmQgLSBtb2RlLT5oc3luY19zdGFydDsKKwloc3luYy5iYWNrX3BvcmNoID0gbW9kZS0+aHRv dGFsIC0gbW9kZS0+aHN5bmNfZW5kOworCWhzeW5jLmZyb250X3BvcmNoID0gbW9kZS0+aHN5bmNf c3RhcnQgLSBtb2RlLT5oZGlzcGxheTsKKwloc3luYy5zaGlmdF9oYWxmX2xpbmUgPSBmYWxzZTsK KworCXZzeW5jX2xvZGQuc3luY193aWR0aCA9IG1vZGUtPnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5j X3N0YXJ0OworCXZzeW5jX2xvZGQuYmFja19wb3JjaCA9IG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZz eW5jX2VuZDsKKwl2c3luY19sb2RkLmZyb250X3BvcmNoID0gbW9kZS0+dnN5bmNfc3RhcnQgLSBt b2RlLT52ZGlzcGxheTsKKwl2c3luY19sb2RkLnNoaWZ0X2hhbGZfbGluZSA9IGZhbHNlOworCisJ aWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYKKwkgICAgbW9kZS0+ ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHXzNEX01BU0spIHsKKwkJdnN5bmNfbGV2ZW4gPSB2c3luY19s b2RkOworCQl2c3luY19yb2RkID0gdnN5bmNfbG9kZDsKKwkJdnN5bmNfcmV2ZW4gPSB2c3luY19s b2RkOworCQl2c3luY19sZXZlbi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCQl2c3luY19yZXZl bi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCX0gZWxzZSBpZiAobW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX0lOVEVSTEFDRSAmJgorCQkgICAhKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxB R18zRF9NQVNLKSkgeworCQl2c3luY19sZXZlbiA9IHZzeW5jX2xvZGQ7CisJCXZzeW5jX2xldmVu LnNoaWZ0X2hhbGZfbGluZSA9IHRydWU7CisJfSBlbHNlIGlmICghKG1vZGUtPmZsYWdzICYgRFJN X01PREVfRkxBR19JTlRFUkxBQ0UpICYmCisJCSAgIG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxB R18zRF9NQVNLKSB7CisJCXZzeW5jX3JvZGQgPSB2c3luY19sb2RkOworCX0KKwltdGtfZHBpX3N3 X3Jlc2V0KGRwaSwgdHJ1ZSk7CisJbXRrX2RwaV9jb25maWdfcG9sKGRwaSwgJmRwaV9wb2wpOwor CisJbXRrX2RwaV9jb25maWdfaHN5bmMoZHBpLCAmaHN5bmMpOworCW10a19kcGlfY29uZmlnX3Zz eW5jX2xvZGQoZHBpLCAmdnN5bmNfbG9kZCk7CisJbXRrX2RwaV9jb25maWdfdnN5bmNfcm9kZChk cGksICZ2c3luY19yb2RkKTsKKwltdGtfZHBpX2NvbmZpZ192c3luY19sZXZlbihkcGksICZ2c3lu Y19sZXZlbik7CisJbXRrX2RwaV9jb25maWdfdnN5bmNfcmV2ZW4oZHBpLCAmdnN5bmNfcmV2ZW4p OworCisJbXRrX2RwaV9jb25maWdfM2QoZHBpLCAhIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZM QUdfM0RfTUFTSykpOworCW10a19kcGlfY29uZmlnX2ludGVyZmFjZShkcGksICEhKG1vZGUtPmZs YWdzICYKKwkJCQkJIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSk7CisJaWYgKG1vZGUtPmZsYWdz ICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCisJCW10a19kcGlfY29uZmlnX2ZiX3NpemUoZHBp LCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkgLyAyKTsKKwllbHNlCisJCW10a19kcGlf Y29uZmlnX2ZiX3NpemUoZHBpLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOworCisJ bXRrX2RwaV9jb25maWdfY2hhbm5lbF9saW1pdChkcGksICZsaW1pdCk7CisJbXRrX2RwaV9jb25m aWdfYml0X251bShkcGksIGRwaS0+Yml0X251bSk7CisJbXRrX2RwaV9jb25maWdfY2hhbm5lbF9z d2FwKGRwaSwgZHBpLT5jaGFubmVsX3N3YXApOworCW10a19kcGlfY29uZmlnX3ljX21hcChkcGks IGRwaS0+eWNfbWFwKTsKKwltdGtfZHBpX2NvbmZpZ19jb2xvcl9mb3JtYXQoZHBpLCBkcGktPmNv bG9yX2Zvcm1hdCk7CisJbXRrX2RwaV9jb25maWdfMm5faF9mcmUoZHBpKTsKKwltdGtfZHBpX3N3 X3Jlc2V0KGRwaSwgZmFsc2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG10a19k cGlfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlkcm1f ZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9l bmNvZGVyX2Z1bmNzIG10a19kcGlfZW5jb2Rlcl9mdW5jcyA9IHsKKwkuZGVzdHJveSA9IG10a19k cGlfZW5jb2Rlcl9kZXN0cm95LAorfTsKKworc3RhdGljIGJvb2wgbXRrX2RwaV9lbmNvZGVyX21v ZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgICAgICBjb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkgICAgICAgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2 b2lkIG10a19kcGlfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIs CisJCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkgICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXN0cnVjdCBtdGtfZHBpICpk cGkgPSBtdGtfZHBpX2Zyb21fZW5jb2RlcihlbmNvZGVyKTsKKworCWRybV9tb2RlX2NvcHkoJmRw aS0+bW9kZSwgYWRqdXN0ZWRfbW9kZSk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZW5jb2Rl cl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgbXRrX2Rw aSAqZHBpID0gbXRrX2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwltdGtfZHBpX3Bvd2Vy X29mZihkcGkpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfZW5hYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gbXRrX2Rw aV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwltdGtfZHBpX3Bvd2VyX29uKGRwaSk7CisJbXRr X2RwaV9zZXRfZGlzcGxheV9tb2RlKGRwaSwgJmRwaS0+bW9kZSk7Cit9CisKK3N0YXRpYyBpbnQg bXRrX2RwaV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgbXRrX2RwaV9lbmNvZGVyX2hlbHBlcl9mdW5j cyA9IHsKKwkubW9kZV9maXh1cCA9IG10a19kcGlfZW5jb2Rlcl9tb2RlX2ZpeHVwLAorCS5tb2Rl X3NldCA9IG10a19kcGlfZW5jb2Rlcl9tb2RlX3NldCwKKwkuZGlzYWJsZSA9IG10a19kcGlfZW5j b2Rlcl9kaXNhYmxlLAorCS5lbmFibGUgPSBtdGtfZHBpX2VuY29kZXJfZW5hYmxlLAorCS5hdG9t aWNfY2hlY2sgPSBtdGtfZHBpX2F0b21pY19jaGVjaywKK307CisKK3N0YXRpYyB2b2lkIG10a19k cGlfc3RhcnQoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCkKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAq ZHBpID0gY29udGFpbmVyX29mKGNvbXAsIHN0cnVjdCBtdGtfZHBpLCBkZHBfY29tcCk7CisKKwlt dGtfZHBpX3Bvd2VyX29uKGRwaSk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfc3RvcChzdHJ1 Y3QgbXRrX2RkcF9jb21wICpjb21wKQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBjb250YWlu ZXJfb2YoY29tcCwgc3RydWN0IG10a19kcGksIGRkcF9jb21wKTsKKworCW10a19kcGlfcG93ZXJf b2ZmKGRwaSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2RkcF9jb21wX2Z1bmNzIG10 a19kcGlfZnVuY3MgPSB7CisJLnN0YXJ0ID0gbXRrX2RwaV9zdGFydCwKKwkuc3RvcCA9IG10a19k cGlfc3RvcCwKK307CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBtdGtfZHBp ICpkcGkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2Rl diA9IGRhdGE7CisJaW50IHJldDsKKworCXJldCA9IG10a19kZHBfY29tcF9yZWdpc3Rlcihkcm1f ZGV2LCAmZHBpLT5kZHBfY29tcCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJG YWlsZWQgdG8gcmVnaXN0ZXIgY29tcG9uZW50ICVzOiAlZFxuIiwKKwkJCWRldi0+b2Zfbm9kZS0+ ZnVsbF9uYW1lLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGRybV9lbmNvZGVy X2luaXQoZHJtX2RldiwgJmRwaS0+ZW5jb2RlciwgJm10a19kcGlfZW5jb2Rlcl9mdW5jcywKKwkJ CSAgICAgICBEUk1fTU9ERV9FTkNPREVSX1RNRFMpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZWNvZGVyOiAlZFxuIiwgcmV0KTsKKwkJZ290byBl cnJfdW5yZWdpc3RlcjsKKwl9CisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmZHBpLT5lbmNvZGVy LCAmbXRrX2RwaV9lbmNvZGVyX2hlbHBlcl9mdW5jcyk7CisKKwkvKiBDdXJyZW50bHkgRFBJMCBp cyBmaXhlZCB0byBiZSBkcml2ZW4gYnkgT1ZMMSAqLworCWRwaS0+ZW5jb2Rlci5wb3NzaWJsZV9j cnRjcyA9IEJJVCgxKTsKKworCWRwaS0+ZW5jb2Rlci5icmlkZ2UtPmVuY29kZXIgPSAmZHBpLT5l bmNvZGVyOworCXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKGRwaS0+ZW5jb2Rlci5kZXYsIGRwaS0+ ZW5jb2Rlci5icmlkZ2UpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8g YXR0YWNoIGJyaWRnZTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2NsZWFudXA7CisJfQorCisJ ZHBpLT5iaXRfbnVtID0gTVRLX0RQSV9PVVRfQklUX05VTV84QklUUzsKKwlkcGktPmNoYW5uZWxf c3dhcCA9IE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9SR0I7CisJZHBpLT55Y19tYXAgPSBNVEtf RFBJX09VVF9ZQ19NQVBfUkdCOworCWRwaS0+Y29sb3JfZm9ybWF0ID0gTVRLX0RQSV9DT0xPUl9G T1JNQVRfUkdCOworCisJcmV0dXJuIDA7CisKK2Vycl9jbGVhbnVwOgorCWRybV9lbmNvZGVyX2Ns ZWFudXAoJmRwaS0+ZW5jb2Rlcik7CitlcnJfdW5yZWdpc3RlcjoKKwltdGtfZGRwX2NvbXBfdW5y ZWdpc3Rlcihkcm1fZGV2LCAmZHBpLT5kZHBfY29tcCk7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHZvaWQgbXRrX2RwaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsCisJCQkgICB2b2lkICpkYXRhKQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7 CisKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKCZkcGktPmVuY29kZXIpOworCW10a19kZHBfY29tcF91 bnJlZ2lzdGVyKGRybV9kZXYsICZkcGktPmRkcF9jb21wKTsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBjb21wb25lbnRfb3BzIG10a19kcGlfY29tcG9uZW50X29wcyA9IHsKKwkuYmluZCA9IG10 a19kcGlfYmluZCwKKwkudW5iaW5kID0gbXRrX2RwaV91bmJpbmQsCit9OworCitzdGF0aWMgaW50 IG10a19kcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBtdGtfZHBpICpkcGk7CisJc3RydWN0 IHJlc291cmNlICptZW07CisJc3RydWN0IGRldmljZV9ub2RlICplcCwgKmJyaWRnZV9ub2RlID0g TlVMTDsKKwlpbnQgY29tcF9pZDsKKwlpbnQgcmV0OworCisJZHBpID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKCpkcGkpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRwaSkKKwkJcmV0dXJuIC1FTk9N RU07CisKKwlkcGktPmRldiA9IGRldjsKKworCW1lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShw ZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJZHBpLT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291 cmNlKGRldiwgbWVtKTsKKwlpZiAoSVNfRVJSKGRwaS0+cmVncykpIHsKKwkJcmV0ID0gUFRSX0VS UihkcGktPnJlZ3MpOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpb3JlbWFwIG1lbSByZXNv dXJjZTogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHBpLT5lbmdpbmVfY2xr ID0gZGV2bV9jbGtfZ2V0KGRldiwgImVuZ2luZSIpOworCWlmIChJU19FUlIoZHBpLT5lbmdpbmVf Y2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKGRwaS0+ZW5naW5lX2Nsayk7CisJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIGdldCBlbmdpbmUgY2xvY2s6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0 OworCX0KKworCWRwaS0+cGl4ZWxfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInBpeGVsIik7CisJ aWYgKElTX0VSUihkcGktPnBpeGVsX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkcGktPnBpeGVs X2Nsayk7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBwaXhlbCBjbG9jazogJWRcbiIs IHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHBpLT50dmRfY2xrID0gZGV2bV9jbGtfZ2V0 KGRldiwgInBsbCIpOworCWlmIChJU19FUlIoZHBpLT50dmRfY2xrKSkgeworCQlyZXQgPSBQVFJf RVJSKGRwaS0+dHZkX2Nsayk7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCB0dmRwbGwg Y2xvY2s6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRwaS0+aXJxID0gcGxh dGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKKwlpZiAoZHBpLT5pcnEgPD0gMCkgeworCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byBnZXQgaXJxOiAlZFxuIiwgZHBpLT5pcnEpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwllcCA9IG9mX2dyYXBoX2dldF9uZXh0X2VuZHBvaW50KGRldi0+b2Zfbm9k ZSwgTlVMTCk7CisJaWYgKGVwKSB7CisJCWJyaWRnZV9ub2RlID0gb2ZfZ3JhcGhfZ2V0X3JlbW90 ZV9wb3J0X3BhcmVudChlcCk7CisJCW9mX25vZGVfcHV0KGVwKTsKKwl9CisJaWYgKCFicmlkZ2Vf bm9kZSkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBmaW5kIGJyaWRnZSBub2RlOiAlZFxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkZXZfaW5mbyhkZXYsICJGb3VuZCBicmlk Z2Ugbm9kZTogJXNcbiIsIGJyaWRnZV9ub2RlLT5mdWxsX25hbWUpOworCisJZHBpLT5lbmNvZGVy LmJyaWRnZSA9IG9mX2RybV9maW5kX2JyaWRnZShicmlkZ2Vfbm9kZSk7CisJb2Zfbm9kZV9wdXQo YnJpZGdlX25vZGUpOworCWlmICghZHBpLT5lbmNvZGVyLmJyaWRnZSkKKwkJcmV0dXJuIC1FUFJP QkVfREVGRVI7CisKKwljb21wX2lkID0gbXRrX2RkcF9jb21wX2dldF9pZChkZXYtPm9mX25vZGUs IE1US19EUEkpOworCWlmIChjb21wX2lkIDwgMCkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBpZGVudGlmeSBieSBhbGlhczogJWRcbiIsIGNvbXBfaWQpOworCQlyZXR1cm4gY29tcF9pZDsK Kwl9CisKKwlyZXQgPSBtdGtfZGRwX2NvbXBfaW5pdChkZXYsIGRldi0+b2Zfbm9kZSwgJmRwaS0+ ZGRwX2NvbXAsIGNvbXBfaWQsCisJCQkJJm10a19kcGlfZnVuY3MpOworCWlmIChyZXQpIHsKKwkJ ZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb21wb25lbnQ6ICVkXG4iLCByZXQp OworCQlyZXR1cm4gcmV0OworCX0KKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRwaSk7 CisKKwlyZXQgPSBjb21wb25lbnRfYWRkKGRldiwgJm10a19kcGlfY29tcG9uZW50X29wcyk7CisJ aWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBhZGQgY29tcG9uZW50OiAlZFxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBtdGtfZHBpX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWNvbXBv bmVudF9kZWwoJnBkZXYtPmRldiwgJm10a19kcGlfY29tcG9uZW50X29wcyk7CisKKwlyZXR1cm4g MDsKK30KKworI2lmZGVmIENPTkZJR19QTV9TTEVFUAorc3RhdGljIGludCBtdGtfZHBpX3N1c3Bl bmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKKworCWlmIChJU19FUlIoZHBpKSkgeworCQlkZXZfaW5mbyhkZXYsICJk cGkgc3VzcGVuZCBmYWlsZWQhXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZHBpKTsKKwl9CisKKwlt dGtfZHBpX3Bvd2VyX29mZihkcGkpOworCisJZGV2X2luZm8oZGV2LCAiZHBpIHN1c3BlbmQgc3Vj Y2VzcyFcbiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9yZXN1bWUo c3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKKwlpbnQgcmV0OworCisJaWYgKElTX0VSUihkcGkpKSB7CisJCWRldl9lcnIo ZGV2LCAiZHBpIHJlc3VtZSBmYWlsZWQhXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZHBpKTsKKwl9 CisKKwlyZXQgPSBtdGtfZHBpX3Bvd2VyX29uKGRwaSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJy KGRldiwgImRwaSByZXN1bWUgZmFpbGVkIVxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2 X2luZm8oZGV2LCAiZHBpIHJlc3VtZSBzdWNjZXNzIVxuIik7CisKKwlyZXR1cm4gMDsKK30KKyNl bmRpZgorCitzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobXRrX2RwaV9wbV9vcHMsIG10a19kcGlf c3VzcGVuZCwgbXRrX2RwaV9yZXN1bWUpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBtdGtfZHBpX29mX2lkc1tdID0geworCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4 MTczLWRwaSIsIH0sCisJe30KK307CisKK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RwaV9k cml2ZXIgPSB7CisJLnByb2JlID0gbXRrX2RwaV9wcm9iZSwKKwkucmVtb3ZlID0gbXRrX2RwaV9y ZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAibWVkaWF0ZWstZHBpIiwKKwkJLm9mX21h dGNoX3RhYmxlID0gbXRrX2RwaV9vZl9pZHMsCisJCS5wbSA9ICZtdGtfZHBpX3BtX29wcywKKwl9 LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmggYi9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjI1ZGE1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RwaS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMTQgTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVr LmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg Ki8KKyNpZm5kZWYgX01US19EUElfSAorI2RlZmluZSBfTVRLX0RQSV9ICisKKyNpbmNsdWRlIDxs aW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorCisjaW5jbHVkZSAibXRr X2RybV9kZHBfY29tcC5oIgorCitzdHJ1Y3QgZGV2aWNlOworc3RydWN0IGNsazsKKworZW51bSBt dGtfZHBpX291dF9iaXRfbnVtIHsKKwlNVEtfRFBJX09VVF9CSVRfTlVNXzhCSVRTLAorCU1US19E UElfT1VUX0JJVF9OVU1fMTBCSVRTLAorCU1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTLAorCU1U S19EUElfT1VUX0JJVF9OVU1fMTZCSVRTCit9OworCitlbnVtIG10a19kcGlfb3V0X3ljX21hcCB7 CisJTVRLX0RQSV9PVVRfWUNfTUFQX1JHQiwKKwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1lDWSwKKwlN VEtfRFBJX09VVF9ZQ19NQVBfWUNZQywKKwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1ksCisJTVRLX0RQ SV9PVVRfWUNfTUFQX1lDCit9OworCitlbnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCB7CisJ TVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQiwKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBf R0JSLAorCU1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9CUkcsCisJTVRLX0RQSV9PVVRfQ0hBTk5F TF9TV0FQX1JCRywKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR1JCLAorCU1US19EUElfT1VU X0NIQU5ORUxfU1dBUF9CR1IKK307CisKK2VudW0gbXRrX2RwaV9vdXRfY29sb3JfZm9ybWF0IHsK KwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9SR0IsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfUkdCX0ZV TEwsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDQ0LAorCU1US19EUElfQ09MT1JfRk9S TUFUX1lDQkNSXzQyMiwKKwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9YVl9ZQ0MsCisJTVRLX0RQSV9D T0xPUl9GT1JNQVRfWUNCQ1JfNDQ0X0ZVTEwsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1Jf NDIyX0ZVTEwKK307CisKK3N0cnVjdCBtdGtfZHBpIHsKKwlzdHJ1Y3QgbXRrX2RkcF9jb21wIGRk cF9jb21wOworCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXZvaWQgX19pb21lbSAqcmVn czsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGNsayAqZW5naW5lX2NsazsKKwlzdHJ1 Y3QgY2xrICpwaXhlbF9jbGs7CisJc3RydWN0IGNsayAqdHZkX2NsazsKKwlpbnQgaXJxOworCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGU7CisJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3Jt YXQgY29sb3JfZm9ybWF0OworCWVudW0gbXRrX2RwaV9vdXRfeWNfbWFwIHljX21hcDsKKwllbnVt IG10a19kcGlfb3V0X2JpdF9udW0gYml0X251bTsKKwllbnVtIG10a19kcGlfb3V0X2NoYW5uZWxf c3dhcCBjaGFubmVsX3N3YXA7CisJaW50IHJlZmNvdW50OworfTsKKworc3RhdGljIGlubGluZSBz dHJ1Y3QgbXRrX2RwaSAqbXRrX2RwaV9mcm9tX2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVyICpl KQoreworCXJldHVybiBjb250YWluZXJfb2YoZSwgc3RydWN0IG10a19kcGksIGVuY29kZXIpOwor fQorCitpbnQgbXRrX2RwaV9zZXRfZGlzcGxheV9tb2RlKHN0cnVjdCBtdGtfZHBpICpkcGksCisJ CQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKKworI2VuZGlmIC8qIF9NVEtf RFBJX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3Jl Z3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3JlZ3MuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjZhZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGlfcmVncy5oCkBAIC0wLDAgKzEsMjI4IEBACisv KgorICogQ29weXJpZ2h0IChjKSAyMDE0IE1lZGlhVGVrIEluYy4KKyAqIEF1dGhvcjogSmllIFFp dSA8amllLnFpdUBtZWRpYXRlay5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz CisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICovCisjaWZuZGVmIF9fTVRLX0RQSV9SRUdTX0gKKyNkZWZpbmUg X19NVEtfRFBJX1JFR1NfSAorCisjZGVmaW5lIERQSV9FTgkJCTB4MDAKKyNkZWZpbmUgRU4JCQkJ QklUKDApCisKKyNkZWZpbmUgRFBJX1JFVAkJCTB4MDQKKyNkZWZpbmUgUlNUCQkJCUJJVCgwKQor CisjZGVmaW5lIERQSV9JTlRFTgkJMHgwOAorI2RlZmluZSBJTlRfVlNZTkNfRU4JCQlCSVQoMCkK KyNkZWZpbmUgSU5UX1ZERV9FTgkJCUJJVCgxKQorI2RlZmluZSBJTlRfVU5ERVJGTE9XX0VOCQlC SVQoMikKKworI2RlZmluZSBEUElfSU5UU1RBCQkweDBDCisjZGVmaW5lIElOVF9WU1lOQ19TVEEJ CQlCSVQoMCkKKyNkZWZpbmUgSU5UX1ZERV9TVEEJCQlCSVQoMSkKKyNkZWZpbmUgSU5UX1VOREVS RkxPV19TVEEJCUJJVCgyKQorCisjZGVmaW5lIERQSV9DT04JCQkweDEwCisjZGVmaW5lIEJHX0VO QUJMRQkJCUJJVCgwKQorI2RlZmluZSBJTl9SQl9TV0FQCQkJQklUKDEpCisjZGVmaW5lIElOVExf RU4JCQkJQklUKDIpCisjZGVmaW5lIFRERlBfRU4JCQkJQklUKDMpCisjZGVmaW5lIENMUEZfRU4J CQkJQklUKDQpCisjZGVmaW5lIFlVVjQyMl9FTgkJCUJJVCg1KQorI2RlZmluZSBDU0NfRU5BQkxF CQkJQklUKDYpCisjZGVmaW5lIFI2MDFfU0VMCQkJQklUKDcpCisjZGVmaW5lIEVNQlNZTkNfRU4J CQlCSVQoOCkKKyNkZWZpbmUgVlNfTE9ERF9FTgkJCUJJVCgxNikKKyNkZWZpbmUgVlNfTEVWRU5f RU4JCQlCSVQoMTcpCisjZGVmaW5lIFZTX1JPRERfRU4JCQlCSVQoMTgpCisjZGVmaW5lIFZTX1JF VkVOCQkJQklUKDE5KQorI2RlZmluZSBGQUtFX0RFX0xPREQJCQlCSVQoMjApCisjZGVmaW5lIEZB S0VfREVfTEVWRU4JCQlCSVQoMjEpCisjZGVmaW5lIEZBS0VfREVfUk9ERAkJCUJJVCgyMikKKyNk ZWZpbmUgRkFLRV9ERV9SRVZFTgkJCUJJVCgyMykKKworI2RlZmluZSBEUElfT1VUUFVUX1NFVFRJ TkcJMHgxNAorI2RlZmluZSBDSF9TV0FQCQkJCTAKKyNkZWZpbmUgQ0hfU1dBUF9NQVNLCQkJKDB4 NyA8PCAwKQorI2RlZmluZSBTV0FQX1JHQgkJCTB4MDAKKyNkZWZpbmUgU1dBUF9HQlIJCQkweDAx CisjZGVmaW5lIFNXQVBfQlJHCQkJMHgwMgorI2RlZmluZSBTV0FQX1JCRwkJCTB4MDMKKyNkZWZp bmUgU1dBUF9HUkIJCQkweDA0CisjZGVmaW5lIFNXQVBfQkdSCQkJMHgwNQorI2RlZmluZSBCSVRf U1dBUAkJCUJJVCgzKQorI2RlZmluZSBCX01BU0sJCQkJQklUKDQpCisjZGVmaW5lIEdfTUFTSwkJ CQlCSVQoNSkKKyNkZWZpbmUgUl9NQVNLCQkJCUJJVCg2KQorI2RlZmluZSBERV9NQVNLCQkJCUJJ VCg4KQorI2RlZmluZSBIU19NQVNLCQkJCUJJVCg5KQorI2RlZmluZSBWU19NQVNLCQkJCUJJVCgx MCkKKyNkZWZpbmUgREVfUE9MCQkJCUJJVCgxMikKKyNkZWZpbmUgSFNZTkNfUE9MCQkJQklUKDEz KQorI2RlZmluZSBWU1lOQ19QT0wJCQlCSVQoMTQpCisjZGVmaW5lIENLX1BPTAkJCQlCSVQoMTUp CisjZGVmaW5lIE9FTl9PRkYJCQkJQklUKDE2KQorI2RlZmluZSBFREdFX1NFTAkJCUJJVCgxNykK KyNkZWZpbmUgT1VUX0JJVAkJCQkxOAorI2RlZmluZSBPVVRfQklUX01BU0sJCQkoMHgzIDw8IDE4 KQorI2RlZmluZSBPVVRfQklUXzgJCQkweDAwCisjZGVmaW5lIE9VVF9CSVRfMTAJCQkweDAxCisj ZGVmaW5lIE9VVF9CSVRfMTIJCQkweDAyCisjZGVmaW5lIE9VVF9CSVRfMTYJCQkweDAzCisjZGVm aW5lIFlDX01BUAkJCQkyMAorI2RlZmluZSBZQ19NQVBfTUFTSwkJCSgweDcgPDwgMjApCisjZGVm aW5lIFlDX01BUF9SR0IJCQkweDAwCisjZGVmaW5lIFlDX01BUF9DWUNZCQkJMHgwNAorI2RlZmlu ZSBZQ19NQVBfWUNZQwkJCTB4MDUKKyNkZWZpbmUgWUNfTUFQX0NZCQkJMHgwNgorI2RlZmluZSBZ Q19NQVBfWUMJCQkweDA3CisKKyNkZWZpbmUgRFBJX1NJWkUJCTB4MTgKKyNkZWZpbmUgSFNJWkUJ CQkJMAorI2RlZmluZSBIU0laRV9NQVNLCQkJKDB4MUZGRiA8PCAwKQorI2RlZmluZSBWU0laRQkJ CQkxNgorI2RlZmluZSBWU0laRV9NQVNLCQkJKDB4MUZGRiA8PCAxNikKKworI2RlZmluZSBEUElf RERSX1NFVFRJTkcJCTB4MUMKKyNkZWZpbmUgRERSX0VOCQkJCUJJVCgwKQorI2RlZmluZSBERERS X1NFTAkJCUJJVCgxKQorI2RlZmluZSBERFJfNFBIQVNFCQkJQklUKDIpCisjZGVmaW5lIEREUl9X SURUSAkJCSgweDMgPDwgNCkKKyNkZWZpbmUgRERSX1BBRF9NT0RFCQkJKDB4MSA8PCA4KQorCisj ZGVmaW5lIERQSV9UR0VOX0hXSURUSAkJMHgyMAorI2RlZmluZSBIUFcJCQkJMAorI2RlZmluZSBI UFdfTUFTSwkJCSgweEZGRiA8PCAwKQorCisjZGVmaW5lIERQSV9UR0VOX0hQT1JDSAkJMHgyNAor I2RlZmluZSBIQlAJCQkJMAorI2RlZmluZSBIQlBfTUFTSwkJCSgweEZGRiA8PCAwKQorI2RlZmlu ZSBIRlAJCQkJMTYKKyNkZWZpbmUgSEZQX01BU0sJCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUg RFBJX1RHRU5fVldJRFRICQkweDI4CisjZGVmaW5lIERQSV9UR0VOX1ZQT1JDSAkJMHgyQworCisj ZGVmaW5lIFZTWU5DX1dJRFRIX1NISUZUCQkwCisjZGVmaW5lIFZTWU5DX1dJRFRIX01BU0sJCSgw eEZGRiA8PCAwKQorI2RlZmluZSBWU1lOQ19IQUxGX0xJTkVfU0hJRlQJCTE2CisjZGVmaW5lIFZT WU5DX0hBTEZfTElORV9NQVNLCQlCSVQoMTYpCisjZGVmaW5lIFZTWU5DX0JBQ0tfUE9SQ0hfU0hJ RlQJCTAKKyNkZWZpbmUgVlNZTkNfQkFDS19QT1JDSF9NQVNLCQkoMHhGRkYgPDwgMCkKKyNkZWZp bmUgVlNZTkNfRlJPTlRfUE9SQ0hfU0hJRlQJCTE2CisjZGVmaW5lIFZTWU5DX0ZST05UX1BPUkNI X01BU0sJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfQkdfSENOVEwJCTB4MzAKKyNkZWZp bmUgQkdfUklHSFQJCQkoMHgxRkZGIDw8IDApCisjZGVmaW5lIEJHX0xFRlQJCQkJKDB4MUZGRiA8 PCAxNikKKworI2RlZmluZSBEUElfQkdfVkNOVEwJCTB4MzQKKyNkZWZpbmUgQkdfQk9UCQkJCSgw eDFGRkYgPDwgMCkKKyNkZWZpbmUgQkdfVE9QCQkJCSgweDFGRkYgPDwgMTYpCisKKyNkZWZpbmUg RFBJX0JHX0NPTE9SCQkweDM4CisjZGVmaW5lIEJHX0IJCQkJKDB4RiA8PCAwKQorI2RlZmluZSBC R19HCQkJCSgweEYgPDwgOCkKKyNkZWZpbmUgQkdfUgkJCQkoMHhGIDw8IDE2KQorCisjZGVmaW5l IERQSV9GSUZPX0NUTAkJMHgzQworI2RlZmluZSBGSUZPX1ZBTElEX1NFVAkJCSgweDFGIDw8IDAp CisjZGVmaW5lIEZJRk9fUlNUX1NFTAkJCSgweDEgPDwgOCkKKworI2RlZmluZSBEUElfU1RBVFVT CQkweDQwCisjZGVmaW5lIFZDT1VOVEVSCQkJKDB4MUZGRiA8PCAwKQorI2RlZmluZSBEUElfQlVT WQkJCUJJVCgxNikKKyNkZWZpbmUgT1VURU4JCQkJQklUKDE3KQorI2RlZmluZSBGSUVMRAkJCQlC SVQoMjApCisjZGVmaW5lIFRETFIJCQkJQklUKDIxKQorCisjZGVmaW5lIERQSV9UTU9ERQkJMHg0 NAorI2RlZmluZSBEUElfT0VOX09OCQkJQklUKDApCisKKyNkZWZpbmUgRFBJX0NIRUNLU1VNCQkw eDQ4CisjZGVmaW5lIERQSV9DSEVDS1NVTV9NQVNLCQkoMHhGRkZGRkYgPDwgMCkKKyNkZWZpbmUg RFBJX0NIRUNLU1VNX1JFQURZCQlCSVQoMzApCisjZGVmaW5lIERQSV9DSEVDS1NVTV9FTgkJCUJJ VCgzMSkKKworI2RlZmluZSBEUElfRFVNTVkJCTB4NTAKKyNkZWZpbmUgRFBJX0RVTU1ZX01BU0sJ CQkoMHhGRkZGRkZGRiA8PCAwKQorCisjZGVmaW5lIERQSV9UR0VOX1ZXSURUSF9MRVZFTgkweDY4 CisjZGVmaW5lIERQSV9UR0VOX1ZQT1JDSF9MRVZFTgkweDZDCisjZGVmaW5lIERQSV9UR0VOX1ZX SURUSF9ST0RECTB4NzAKKyNkZWZpbmUgRFBJX1RHRU5fVlBPUkNIX1JPREQJMHg3NAorI2RlZmlu ZSBEUElfVEdFTl9WV0lEVEhfUkVWRU4JMHg3OAorI2RlZmluZSBEUElfVEdFTl9WUE9SQ0hfUkVW RU4JMHg3QworCisjZGVmaW5lIERQSV9FU0FWX1ZUSU1JTkdfTE9ERAkweDgwCisjZGVmaW5lIEVT QVZfVk9GU1RfTE9ERAkJCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FWX1ZXSURfTE9ERAkJCSgw eEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfRVNBVl9WVElNSU5HX0xFVkVOCTB4ODQKKyNkZWZp bmUgRVNBVl9WT0ZTVF9MRVZFTgkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9MRVZF TgkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfRVNBVl9WVElNSU5HX1JPREQJMHg4OAor I2RlZmluZSBFU0FWX1ZPRlNUX1JPREQJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9WV0lE X1JPREQJCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0VTQVZfVlRJTUlOR19SRVZFTgkw eDhDCisjZGVmaW5lIEVTQVZfVk9GU1RfUkVWRU4JCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FW X1ZXSURfUkVWRU4JCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0VTQVZfRlRJTUlORwkw eDkwCisjZGVmaW5lIEVTQVZfRk9GU1RfT0RECQkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZf Rk9GU1RfRVZFTgkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfQ0xQRl9TRVRUSU5HCTB4 OTQKKyNkZWZpbmUgQ0xQRl9UWVBFCQkJKDB4MyA8PCAwKQorI2RlZmluZSBST1VORF9FTgkJCUJJ VCg0KQorCisjZGVmaW5lIERQSV9ZX0xJTUlUCQkweDk4CisjZGVmaW5lIFlfTElNSU5UX0JPVAkJ CTAKKyNkZWZpbmUgWV9MSU1JTlRfQk9UX01BU0sJCSgweEZGRiA8PCAwKQorI2RlZmluZSBZX0xJ TUlOVF9UT1AJCQkxNgorI2RlZmluZSBZX0xJTUlOVF9UT1BfTUFTSwkJKDB4RkZGIDw8IDE2KQor CisjZGVmaW5lIERQSV9DX0xJTUlUCQkweDlDCisjZGVmaW5lIENfTElNSVRfQk9UCQkJMAorI2Rl ZmluZSBDX0xJTUlUX0JPVF9NQVNLCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgQ19MSU1JVF9UT1AJ CQkxNgorI2RlZmluZSBDX0xJTUlUX1RPUF9NQVNLCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUg RFBJX1lVVjQyMl9TRVRUSU5HCTB4QTAKKyNkZWZpbmUgVVZfU1dBUAkJCQlCSVQoMCkKKyNkZWZp bmUgQ1JfREVMU0VMCQkJQklUKDQpCisjZGVmaW5lIENCX0RFTFNFTAkJCUJJVCg1KQorI2RlZmlu ZSBZX0RFTFNFTAkJCUJJVCg2KQorI2RlZmluZSBERV9ERUxTRUwJCQlCSVQoNykKKworI2RlZmlu ZSBEUElfRU1CU1lOQ19TRVRUSU5HCTB4QTQKKyNkZWZpbmUgRU1CU1lOQ19SX0NSX0VOCQkJQklU KDApCisjZGVmaW5lIEVNUFNZTkNfR19ZX0VOCQkJQklUKDEpCisjZGVmaW5lIEVNUFNZTkNfQl9D Ql9FTgkJCUJJVCgyKQorI2RlZmluZSBFU0FWX0ZfSU5WCQkJQklUKDQpCisjZGVmaW5lIEVTQVZf Vl9JTlYJCQlCSVQoNSkKKyNkZWZpbmUgRVNBVl9IX0lOVgkJCUJJVCg2KQorI2RlZmluZSBFU0FW X0NPREVfTUFOCQkJQklUKDgpCisjZGVmaW5lIFZTX09VVF9TRUwJCQkoMHg3IDw8IDEyKQorCisj ZGVmaW5lIERQSV9FU0FWX0NPREVfU0VUMAkweEE4CisjZGVmaW5lIEVTQVZfQ09ERTAJCQkoMHhG RkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9DT0RFMQkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBE UElfRVNBVl9DT0RFX1NFVDEJMHhBQworI2RlZmluZSBFU0FWX0NPREUyCQkJKDB4RkZGIDw8IDAp CisjZGVmaW5lIEVTQVZfQ09ERTNfTVNCCQkJQklUKDE2KQorCisjZGVmaW5lIERQSV9IX0ZSRV9D T04JCTB4RTAKKyNkZWZpbmUgSF9GUkVfMk4JCQlCSVQoMjUpCisjZW5kaWYgLyogX19NVEtfRFBJ X1JFR1NfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwppbmRleCAzOTI2 N2Y5Li44YjMwODJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwpAQCAt NTM4LDYgKzUzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICogY29uc3QgbXRr X2RybV9kcml2ZXJzW10gPSB7CiAJJm10a19kaXNwX292bF9kcml2ZXIsCiAJJm10a19kc2lfZHJp dmVyLAogCSZtdGtfbWlwaV90eF9kcml2ZXIsCisJJm10a19kcGlfZHJpdmVyLAogfTsKIAogc3Rh dGljIGludCBfX2luaXQgbXRrX2RybV9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2Rydi5oCmluZGV4IGU4NmMxOWUuLjliNTUxNjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5oCkBAIC01MCw1ICs1MCw2IEBAIHN0cnVjdCBtdGtfZHJtX3ByaXZh dGUgewogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3Bfb3ZsX2RyaXZlcjsK IGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kc2lfZHJpdmVyOwogZXh0ZXJuIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX21pcGlfdHhfZHJpdmVyOworZXh0ZXJuIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgbXRrX2RwaV9kcml2ZXI7CiAKICNlbmRpZiAvKiBNVEtfRFJNX0RSVl9I ICovCi0tIAoyLjYuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK