From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH v7 04/14] drm/mediatek: Add DPI sub driver Date: Mon, 30 Nov 2015 22:07:46 +0100 Message-ID: <1448917676-25584-5-git-send-email-p.zabel@pengutronix.de> References: <1448917676-25584-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: <1448917676-25584-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 , devicetree@vger.kernel.org, Paul Bolle , YT Shen , Jitao Shi , Jie Qiu , Pawel Moll , Ian Campbell , Cawa Cheng , Tomasz Figa , Rob Herring , linux-mediatek@lists.infradead.org, Kumar Gala , Matthias Brugger , kernel@pengutronix.de List-Id: devicetree@vger.kernel.org RnJvbTogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CgpBZGQgRFBJIGNvbm5lY3Rvci9l bmNvZGVyIHRvIHN1cHBvcnQgSERNSSBvdXRwdXQgdmlhIHRoZQphdHRhY2hlZCBIRE1JIGJyaWRn ZS4KClNpZ25lZC1vZmYtYnk6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgpTaWduZWQt b2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgotLS0KQ2hhbmdl cyBzaW5jZSB2NjoKIC0gQWRkZWQgbXRrX2RwaV9wb3dlcl9vbi9vZmYgcmVmY291bnRpbmcgYW5k IG10a19kZHBfY29tcG9uZW50IHN0YXJ0L3N0b3AKICAgY2FsbGJhY2tzIHRvIGtlZXAgcGl4ZWwg Y2xvY2sgZW5hYmxlZCB1bnRpbCBjcnRjX2Rpc2FibGUKLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvTWFrZWZpbGUgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHBpLmMgICAgICB8IDc0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuaCAgICAgIHwgIDg0ICsrKysKIGRyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3JlZ3MuaCB8IDIyOCArKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZHJ2LmggIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTA2MCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcGkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHBpLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKaW5k ZXggNTczZjIwOS4uY2VlOWIyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQpAQCAtNyw3 ICs3LDggQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3Bfb3ZsLm8gXAogCQkgIG10a19kcm1f Z2VtLm8gXAogCQkgIG10a19kcm1fcGxhbmUubyBcCiAJCSAgbXRrX2RzaS5vIFwKLQkJICBtdGtf bWlwaV90eC5vCisJCSAgbXRrX21pcGlfdHgubyBcCisJCSAgbXRrX2RwaS5vCiAKIG9iai0kKENP TkZJR19EUk1fTUVESUFURUspICs9IG1lZGlhdGVrLWRybS5vCiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMmNkOWYKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5jCkBAIC0w LDAgKzEsNzQ0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0IE1lZGlhVGVrIEluYy4KKyAq IEF1dGhvcjogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisjaW5jbHVkZSA8ZHJtL2RybVAu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVs cGVyLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvY29tcG9u ZW50Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgorI2luY2x1ZGUgPGxpbnV4L2lu dGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorCisjaW5jbHVkZSAibXRrX2RwaS5o IgorI2luY2x1ZGUgIm10a19kcGlfcmVncy5oIgorCitlbnVtIG10a19kcGlfcG9sYXJpdHkgewor CU1US19EUElfUE9MQVJJVFlfUklTSU5HLAorCU1US19EUElfUE9MQVJJVFlfRkFMTElORywKK307 CisKK3N0cnVjdCBtdGtfZHBpX3BvbGFyaXRpZXMgeworCWVudW0gbXRrX2RwaV9wb2xhcml0eSBk ZV9wb2w7CisJZW51bSBtdGtfZHBpX3BvbGFyaXR5IGNrX3BvbDsKKwllbnVtIG10a19kcGlfcG9s YXJpdHkgaHN5bmNfcG9sOworCWVudW0gbXRrX2RwaV9wb2xhcml0eSB2c3luY19wb2w7Cit9Owor CitzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHsKKwl1MzIgc3luY193aWR0aDsKKwl1MzIgZnJv bnRfcG9yY2g7CisJdTMyIGJhY2tfcG9yY2g7CisJYm9vbCBzaGlmdF9oYWxmX2xpbmU7Cit9Owor CitzdHJ1Y3QgbXRrX2RwaV95Y19saW1pdCB7CisJdTE2IHlfdG9wOworCXUxNiB5X2JvdHRvbTsK Kwl1MTYgY190b3A7CisJdTE2IGNfYm90dG9tOworfTsKKworc3RhdGljIHZvaWQgbXRrX2RwaV9t YXNrKHN0cnVjdCBtdGtfZHBpICpkcGksIHUzMiBvZmZzZXQsIHUzMiB2YWwsIHUzMiBtYXNrKQor eworCXUzMiB0bXAgPSByZWFkbChkcGktPnJlZ3MgKyBvZmZzZXQpICYgfm1hc2s7CisKKwl0bXAg fD0gKHZhbCAmIG1hc2spOworCXdyaXRlbCh0bXAsIGRwaS0+cmVncyArIG9mZnNldCk7Cit9CisK K3N0YXRpYyB2b2lkIG10a19kcGlfc3dfcmVzZXQoc3RydWN0IG10a19kcGkgKmRwaSwgYm9vbCBy ZXNldCkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfUkVULCByZXNldCA/IFJTVCA6IDAsIFJT VCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZW5hYmxlKHN0cnVjdCBtdGtfZHBpICpkcGkp Cit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0VOLCBFTiwgRU4pOworfQorCitzdGF0aWMgdm9p ZCBtdGtfZHBpX2Rpc2FibGUoc3RydWN0IG10a19kcGkgKmRwaSkKK3sKKwltdGtfZHBpX21hc2so ZHBpLCBEUElfRU4sIDAsIEVOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfaHN5 bmMoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgc3RydWN0IG10a19kcGlfc3luY19wYXJhbSAq c3luYykKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfVEdFTl9IV0lEVEgsCisJCQkgIHN5bmMt PnN5bmNfd2lkdGggPDwgSFBXLCBIUFdfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1RH RU5fSFBPUkNILAorCQkJICBzeW5jLT5iYWNrX3BvcmNoIDw8IEhCUCwgSEJQX01BU0spOworCW10 a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hQT1JDSCwgc3luYy0+ZnJvbnRfcG9yY2ggPDwgSEZQ LAorCQkJICBIRlBfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5j KHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5 bmMsCisJCQkJIHUzMiB3aWR0aF9hZGRyLCB1MzIgcG9yY2hfYWRkcikKK3sKKwltdGtfZHBpX21h c2soZHBpLCB3aWR0aF9hZGRyLAorCQkgICAgIHN5bmMtPnN5bmNfd2lkdGggPDwgVlNZTkNfV0lE VEhfU0hJRlQsCisJCSAgICAgVlNZTkNfV0lEVEhfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwg d2lkdGhfYWRkciwKKwkJICAgICBzeW5jLT5zaGlmdF9oYWxmX2xpbmUgPDwgVlNZTkNfSEFMRl9M SU5FX1NISUZULAorCQkgICAgIFZTWU5DX0hBTEZfTElORV9NQVNLKTsKKwltdGtfZHBpX21hc2so ZHBpLCBwb3JjaF9hZGRyLAorCQkgICAgIHN5bmMtPmJhY2tfcG9yY2ggPDwgVlNZTkNfQkFDS19Q T1JDSF9TSElGVCwKKwkJICAgICBWU1lOQ19CQUNLX1BPUkNIX01BU0spOworCW10a19kcGlfbWFz ayhkcGksIHBvcmNoX2FkZHIsCisJCSAgICAgc3luYy0+ZnJvbnRfcG9yY2ggPDwgVlNZTkNfRlJP TlRfUE9SQ0hfU0hJRlQsCisJCSAgICAgVlNZTkNfRlJPTlRfUE9SQ0hfTUFTSyk7Cit9CisKK3N0 YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX2xvZGQoc3RydWN0IG10a19kcGkgKmRwaSwK KwkJCQkgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQoreworCW10a19kcGlf Y29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRILCBEUElfVEdFTl9WUE9SQ0gp OworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ192c3luY19sZXZlbihzdHJ1Y3QgbXRr X2RwaSAqZHBpLAorCQkJCSAgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQor eworCW10a19kcGlfY29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRIX0xFVkVO LAorCQkJICAgICBEUElfVEdFTl9WUE9SQ0hfTEVWRU4pOworfQorCitzdGF0aWMgdm9pZCBtdGtf ZHBpX2NvbmZpZ192c3luY19yb2RkKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgc3Ry dWN0IG10a19kcGlfc3luY19wYXJhbSAqc3luYykKK3sKKwltdGtfZHBpX2NvbmZpZ192c3luYyhk cGksIHN5bmMsIERQSV9UR0VOX1ZXSURUSF9ST0RELAorCQkJICAgICBEUElfVEdFTl9WUE9SQ0hf Uk9ERCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX3JldmVuKHN0cnVj dCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5 bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdFTl9WV0lEVEhf UkVWRU4sCisJCQkgICAgIERQSV9UR0VOX1ZQT1JDSF9SRVZFTik7Cit9CisKK3N0YXRpYyB2b2lk IG10a19kcGlfY29uZmlnX3BvbChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJICAgICAgIHN0cnVj dCBtdGtfZHBpX3BvbGFyaXRpZXMgKmRwaV9wb2wpCit7CisJdW5zaWduZWQgaW50IHBvbDsKKwor CXBvbCA9IChkcGlfcG9sLT5ja19wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDog Q0tfUE9MKSB8CisJICAgICAgKGRwaV9wb2wtPmRlX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZX1JJ U0lORyA/IDAgOiBERV9QT0wpIHwKKwkgICAgICAoZHBpX3BvbC0+aHN5bmNfcG9sID09IE1US19E UElfUE9MQVJJVFlfUklTSU5HID8gMCA6IEhTWU5DX1BPTCkgfAorCSAgICAgIChkcGlfcG9sLT52 c3luY19wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDogVlNZTkNfUE9MKTsKKwlt dGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHBvbCwKKwkJICAgICBDS19QT0wg fCBERV9QT0wgfCBIU1lOQ19QT0wgfCBWU1lOQ19QT0wpOworfQorCitzdGF0aWMgdm9pZCBtdGtf ZHBpX2NvbmZpZ18zZChzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGVuXzNkKQoreworCW10a19k cGlfbWFzayhkcGksIERQSV9DT04sIGVuXzNkID8gVERGUF9FTiA6IDAsIFRERlBfRU4pOworfQor CitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG10a19kcGkgKmRw aSwgYm9vbCBpbnRlcikKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfQ09OLCBpbnRlciA/IElO VExfRU4gOiAwLCBJTlRMX0VOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfZmJf c2l6ZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCit7CisJbXRr X2RwaV9tYXNrKGRwaSwgRFBJX1NJWkUsIHdpZHRoIDw8IEhTSVpFLCBIU0laRV9NQVNLKTsKKwlt dGtfZHBpX21hc2soZHBpLCBEUElfU0laRSwgaGVpZ2h0IDw8IFZTSVpFLCBWU0laRV9NQVNLKTsK K30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfY2hhbm5lbF9saW1pdChzdHJ1Y3QgbXRr X2RwaSAqZHBpLAorCQkJCQkgc3RydWN0IG10a19kcGlfeWNfbGltaXQgKmxpbWl0KQoreworCW10 a19kcGlfbWFzayhkcGksIERQSV9ZX0xJTUlULCBsaW1pdC0+eV9ib3R0b20gPDwgWV9MSU1JTlRf Qk9ULAorCQkgICAgIFlfTElNSU5UX0JPVF9NQVNLKTsKKwltdGtfZHBpX21hc2soZHBpLCBEUElf WV9MSU1JVCwgbGltaXQtPnlfdG9wIDw8IFlfTElNSU5UX1RPUCwKKwkJICAgICBZX0xJTUlOVF9U T1BfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NfTElNSVQsIGxpbWl0LT5jX2JvdHRv bSA8PCBDX0xJTUlUX0JPVCwKKwkJICAgICBDX0xJTUlUX0JPVF9NQVNLKTsKKwltdGtfZHBpX21h c2soZHBpLCBEUElfQ19MSU1JVCwgbGltaXQtPmNfdG9wIDw8IENfTElNSVRfVE9QLAorCQkgICAg IENfTElNSVRfVE9QX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19iaXRf bnVtKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICAgZW51bSBtdGtfZHBpX291dF9iaXRfbnVt IG51bSkKK3sKKwl1MzIgdmFsOworCisJc3dpdGNoIChudW0pIHsKKwljYXNlIE1US19EUElfT1VU X0JJVF9OVU1fOEJJVFM6CisJCXZhbCA9IE9VVF9CSVRfODsKKwkJYnJlYWs7CisJY2FzZSBNVEtf RFBJX09VVF9CSVRfTlVNXzEwQklUUzoKKwkJdmFsID0gT1VUX0JJVF8xMDsKKwkJYnJlYWs7CisJ Y2FzZSBNVEtfRFBJX09VVF9CSVRfTlVNXzEyQklUUzoKKwkJdmFsID0gT1VUX0JJVF8xMjsKKwkJ YnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9CSVRfTlVNXzE2QklUUzoKKwkJdmFsID0gT1VUX0JJ VF8xNjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdmFsID0gT1VUX0JJVF84OworCQlicmVhazsK Kwl9CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX09VVFBVVF9TRVRUSU5HLCB2YWwgPDwgT1VUX0JJ VCwKKwkJICAgICAgT1VUX0JJVF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25m aWdfeWNfbWFwKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICBlbnVtIG10a19kcGlfb3V0X3lj X21hcCBtYXApCit7CisJdTMyIHZhbDsKKworCXN3aXRjaCAobWFwKSB7CisJY2FzZSBNVEtfRFBJ X09VVF9ZQ19NQVBfUkdCOgorCQl2YWwgPSBZQ19NQVBfUkdCOworCQlicmVhazsKKwljYXNlIE1U S19EUElfT1VUX1lDX01BUF9DWUNZOgorCQl2YWwgPSBZQ19NQVBfQ1lDWTsKKwkJYnJlYWs7CisJ Y2FzZSBNVEtfRFBJX09VVF9ZQ19NQVBfWUNZQzoKKwkJdmFsID0gWUNfTUFQX1lDWUM7CisJCWJy ZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX0NZOgorCQl2YWwgPSBZQ19NQVBfQ1k7CisJ CWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1lDOgorCQl2YWwgPSBZQ19NQVBfWUM7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXZhbCA9IFlDX01BUF9SR0I7CisJCWJyZWFrOworCX0K KworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQVVRfU0VUVElORywgdmFsIDw8IFlDX01BUCwg WUNfTUFQX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3 YXAoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkJZW51bSBtdGtfZHBpX291dF9jaGFubmVsX3N3 YXAgc3dhcCkKK3sKKwl1MzIgdmFsOworCisJc3dpdGNoIChzd2FwKSB7CisJY2FzZSBNVEtfRFBJ X09VVF9DSEFOTkVMX1NXQVBfUkdCOgorCQl2YWwgPSBTV0FQX1JHQjsKKwkJYnJlYWs7CisJY2Fz ZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR0JSOgorCQl2YWwgPSBTV0FQX0dCUjsKKwkJYnJl YWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfQlJHOgorCQl2YWwgPSBTV0FQX0JS RzsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkJHOgorCQl2YWwg PSBTV0FQX1JCRzsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR1JC OgorCQl2YWwgPSBTV0FQX0dSQjsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVM X1NXQVBfQkdSOgorCQl2YWwgPSBTV0FQX0JHUjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdmFs ID0gU1dBUF9SR0I7CisJCWJyZWFrOworCX0KKworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQ VVRfU0VUVElORywgdmFsIDw8IENIX1NXQVAsIENIX1NXQVBfTUFTSyk7Cit9CisKK3N0YXRpYyB2 b2lkIG10a19kcGlfY29uZmlnX3l1djQyMl9lbmFibGUoc3RydWN0IG10a19kcGkgKmRwaSwgYm9v bCBlbmFibGUpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxlID8gWVVWNDIy X0VOIDogMCwgWVVWNDIyX0VOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfY3Nj X2VuYWJsZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGVuYWJsZSkKK3sKKwltdGtfZHBpX21h c2soZHBpLCBEUElfQ09OLCBlbmFibGUgPyBDU0NfRU5BQkxFIDogMCwgQ1NDX0VOQUJMRSk7Cit9 CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3N3YXBfaW5wdXQoc3RydWN0IG10a19kcGkg KmRwaSwgYm9vbCBlbmFibGUpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxl ID8gSU5fUkJfU1dBUCA6IDAsIElOX1JCX1NXQVApOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBp X2NvbmZpZ18ybl9oX2ZyZShzdHJ1Y3QgbXRrX2RwaSAqZHBpKQoreworCW10a19kcGlfbWFzayhk cGksIERQSV9IX0ZSRV9DT04sIEhfRlJFXzJOLCBIX0ZSRV8yTik7Cit9CisKK3N0YXRpYyB2b2lk IG10a19kcGlfY29uZmlnX2NvbG9yX2Zvcm1hdChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCQll bnVtIG10a19kcGlfb3V0X2NvbG9yX2Zvcm1hdCBmb3JtYXQpCit7CisJaWYgKChmb3JtYXQgPT0g TVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDQ0KSB8fAorCSAgICAoZm9ybWF0ID09IE1US19E UElfQ09MT1JfRk9STUFUX1lDQkNSXzQ0NF9GVUxMKSkgeworCQltdGtfZHBpX2NvbmZpZ195dXY0 MjJfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19jc2NfZW5hYmxlKGRwaSwg dHJ1ZSk7CisJCW10a19kcGlfY29uZmlnX3N3YXBfaW5wdXQoZHBpLCBmYWxzZSk7CisJCW10a19k cGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9CR1Ip OworCX0gZWxzZSBpZiAoKGZvcm1hdCA9PSBNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80MjIp IHx8CisJCSAgIChmb3JtYXQgPT0gTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDIyX0ZVTEwp KSB7CisJCW10a19kcGlfY29uZmlnX3l1djQyMl9lbmFibGUoZHBpLCB0cnVlKTsKKwkJbXRrX2Rw aV9jb25maWdfY3NjX2VuYWJsZShkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lu cHV0KGRwaSwgdHJ1ZSk7CisJCW10a19kcGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIE1US19E UElfT1VUX0NIQU5ORUxfU1dBUF9SR0IpOworCX0gZWxzZSB7CisJCW10a19kcGlfY29uZmlnX3l1 djQyMl9lbmFibGUoZHBpLCBmYWxzZSk7CisJCW10a19kcGlfY29uZmlnX2NzY19lbmFibGUoZHBp LCBmYWxzZSk7CisJCW10a19kcGlfY29uZmlnX3N3YXBfaW5wdXQoZHBpLCBmYWxzZSk7CisJCW10 a19kcGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9S R0IpOworCX0KK30KKworc3RhdGljIGludCBtdGtfZHBpX3Bvd2VyX29mZihzdHJ1Y3QgbXRrX2Rw aSAqZHBpKQoreworCWlmIChXQVJOX09OKGRwaS0+cmVmY291bnQgPT0gMCkpCisJCXJldHVybiAt RUlOVkFMOworCisJaWYgKC0tZHBpLT5yZWZjb3VudCAhPSAwKQorCQlyZXR1cm4gMDsKKworCW10 a19kcGlfZGlzYWJsZShkcGkpOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPnBpeGVsX2Ns ayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwaS0+ZW5naW5lX2Nsayk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBtdGtfZHBpX3Bvd2VyX29uKHN0cnVjdCBtdGtfZHBpICpkcGkp Cit7CisJaW50IHJldDsKKworCWlmIChkcGktPnJlZmNvdW50KysgIT0gMSkKKwkJcmV0dXJuIDA7 CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHBpLT5lbmdpbmVfY2xrKTsKKwlpZiAocmV0 KSB7CisJCWRldl9lcnIoZHBpLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIGVuZ2luZSBjbG9jazog JWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2RlYzsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9l bmFibGUoZHBpLT5waXhlbF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkcGktPmRldiwg IkZhaWxlZCB0byBlbmFibGUgcGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9j bGs7CisJfQorCisJbXRrX2RwaV9lbmFibGUoZHBpKTsKKworCXJldHVybiAwOworCitlcnJfY2xr OgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOworZXJyX2RlYzoKKwlk cGktPnJlZmNvdW50LS07CisJcmV0dXJuIHJldDsKK30KKworaW50IG10a19kcGlfc2V0X2Rpc3Bs YXlfbW9kZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaV95Y19saW1pdCBsaW1pdDsKKwlzdHJ1Y3QgbXRrX2RwaV9w b2xhcml0aWVzIGRwaV9wb2w7CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSBoc3luYzsKKwlz dHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX2xvZGQgPSB7IDAgfTsKKwlzdHJ1Y3QgbXRr X2RwaV9zeW5jX3BhcmFtIHZzeW5jX2xldmVuID0geyAwIH07CisJc3RydWN0IG10a19kcGlfc3lu Y19wYXJhbSB2c3luY19yb2RkID0geyAwIH07CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSB2 c3luY19yZXZlbiA9IHsgMCB9OworCXVuc2lnbmVkIGxvbmcgcGl4X3JhdGU7CisJdW5zaWduZWQg bG9uZyBwbGxfcmF0ZTsKKwl1bnNpZ25lZCBpbnQgZmFjdG9yOworCisJaWYgKCFkcGkpIHsKKwkJ ZGV2X2VycihkcGktPmRldiwgImludmFsaWQgYXJndW1lbnRcbiIpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlwaXhfcmF0ZSA9IDEwMDBVTCAqIG1vZGUtPmNsb2NrOworCWlmIChtb2RlLT5j bG9jayA8PSA3NDAwMCkKKwkJZmFjdG9yID0gOCAqIDM7CisJZWxzZQorCQlmYWN0b3IgPSA0ICog MzsKKwlwbGxfcmF0ZSA9IHBpeF9yYXRlICogZmFjdG9yOworCisJZGV2X2RiZyhkcGktPmRldiwg IldhbnQgUExMICVsdSBIeiwgcGl4ZWwgY2xvY2sgJWx1IEh6XG4iLAorCQlwbGxfcmF0ZSwgcGl4 X3JhdGUpOworCisJY2xrX3NldF9yYXRlKGRwaS0+dHZkX2NsaywgcGxsX3JhdGUpOworCXBsbF9y YXRlID0gY2xrX2dldF9yYXRlKGRwaS0+dHZkX2Nsayk7CisKKwlwaXhfcmF0ZSA9IHBsbF9yYXRl IC8gZmFjdG9yOworCWNsa19zZXRfcmF0ZShkcGktPnBpeGVsX2NsaywgcGl4X3JhdGUpOworCXBp eF9yYXRlID0gY2xrX2dldF9yYXRlKGRwaS0+cGl4ZWxfY2xrKTsKKworCWRldl9kYmcoZHBpLT5k ZXYsICJHb3QgIFBMTCAlbHUgSHosIHBpeGVsIGNsb2NrICVsdSBIelxuIiwKKwkJcGxsX3JhdGUs IHBpeF9yYXRlKTsKKworCWxpbWl0LmNfYm90dG9tID0gMHgwMDEwOworCWxpbWl0LmNfdG9wID0g MHgwRkUwOworCWxpbWl0LnlfYm90dG9tID0gMHgwMDEwOworCWxpbWl0LnlfdG9wID0gMHgwRkUw OworCisJZHBpX3BvbC5ja19wb2wgPSBNVEtfRFBJX1BPTEFSSVRZX0ZBTExJTkc7CisJZHBpX3Bv bC5kZV9wb2wgPSBNVEtfRFBJX1BPTEFSSVRZX1JJU0lORzsKKwlkcGlfcG9sLmhzeW5jX3BvbCA9 IG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMgPworCQkJICAgIE1US19EUElfUE9M QVJJVFlfRkFMTElORyA6IE1US19EUElfUE9MQVJJVFlfUklTSU5HOworCWRwaV9wb2wudnN5bmNf cG9sID0gbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQyA/CisJCQkgICAgTVRLX0RQ SV9QT0xBUklUWV9GQUxMSU5HIDogTVRLX0RQSV9QT0xBUklUWV9SSVNJTkc7CisKKwloc3luYy5z eW5jX3dpZHRoID0gbW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJaHN5bmMu YmFja19wb3JjaCA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKKwloc3luYy5mcm9u dF9wb3JjaCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJaHN5bmMuc2hp ZnRfaGFsZl9saW5lID0gZmFsc2U7CisKKwl2c3luY19sb2RkLnN5bmNfd2lkdGggPSBtb2RlLT52 c3luY19lbmQgLSBtb2RlLT52c3luY19zdGFydDsKKwl2c3luY19sb2RkLmJhY2tfcG9yY2ggPSBt b2RlLT52dG90YWwgLSBtb2RlLT52c3luY19lbmQ7CisJdnN5bmNfbG9kZC5mcm9udF9wb3JjaCA9 IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXk7CisJdnN5bmNfbG9kZC5zaGlmdF9o YWxmX2xpbmUgPSBmYWxzZTsKKworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5U RVJMQUNFICYmCisJICAgIG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR18zRF9NQVNLKSB7CisJ CXZzeW5jX2xldmVuID0gdnN5bmNfbG9kZDsKKwkJdnN5bmNfcm9kZCA9IHZzeW5jX2xvZGQ7CisJ CXZzeW5jX3JldmVuID0gdnN5bmNfbG9kZDsKKwkJdnN5bmNfbGV2ZW4uc2hpZnRfaGFsZl9saW5l ID0gdHJ1ZTsKKwkJdnN5bmNfcmV2ZW4uc2hpZnRfaGFsZl9saW5lID0gdHJ1ZTsKKwl9IGVsc2Ug aWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYKKwkJICAgIShtb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykpIHsKKwkJdnN5bmNfbGV2ZW4gPSB2c3lu Y19sb2RkOworCQl2c3luY19sZXZlbi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCX0gZWxzZSBp ZiAoIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSAmJgorCQkgICBtb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykgeworCQl2c3luY19yb2RkID0gdnN5bmNf bG9kZDsKKwl9CisJbXRrX2RwaV9zd19yZXNldChkcGksIHRydWUpOworCW10a19kcGlfY29uZmln X3BvbChkcGksICZkcGlfcG9sKTsKKworCW10a19kcGlfY29uZmlnX2hzeW5jKGRwaSwgJmhzeW5j KTsKKwltdGtfZHBpX2NvbmZpZ192c3luY19sb2RkKGRwaSwgJnZzeW5jX2xvZGQpOworCW10a19k cGlfY29uZmlnX3ZzeW5jX3JvZGQoZHBpLCAmdnN5bmNfcm9kZCk7CisJbXRrX2RwaV9jb25maWdf dnN5bmNfbGV2ZW4oZHBpLCAmdnN5bmNfbGV2ZW4pOworCW10a19kcGlfY29uZmlnX3ZzeW5jX3Jl dmVuKGRwaSwgJnZzeW5jX3JldmVuKTsKKworCW10a19kcGlfY29uZmlnXzNkKGRwaSwgISEobW9k ZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHXzNEX01BU0spKTsKKwltdGtfZHBpX2NvbmZpZ19pbnRl cmZhY2UoZHBpLCAhIShtb2RlLT5mbGFncyAmCisJCQkJCSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFD RSkpOworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQorCQltdGtf ZHBpX2NvbmZpZ19mYl9zaXplKGRwaSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5IC8g Mik7CisJZWxzZQorCQltdGtfZHBpX2NvbmZpZ19mYl9zaXplKGRwaSwgbW9kZS0+aGRpc3BsYXks IG1vZGUtPnZkaXNwbGF5KTsKKworCW10a19kcGlfY29uZmlnX2NoYW5uZWxfbGltaXQoZHBpLCAm bGltaXQpOworCW10a19kcGlfY29uZmlnX2JpdF9udW0oZHBpLCBkcGktPmJpdF9udW0pOworCW10 a19kcGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIGRwaS0+Y2hhbm5lbF9zd2FwKTsKKwltdGtf ZHBpX2NvbmZpZ195Y19tYXAoZHBpLCBkcGktPnljX21hcCk7CisJbXRrX2RwaV9jb25maWdfY29s b3JfZm9ybWF0KGRwaSwgZHBpLT5jb2xvcl9mb3JtYXQpOworCW10a19kcGlfY29uZmlnXzJuX2hf ZnJlKGRwaSk7CisJbXRrX2RwaV9zd19yZXNldChkcGksIGZhbHNlKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCit7CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBtdGtfZHBpX2VuY29kZXJfZnVuY3Mg PSB7CisJLmRlc3Ryb3kgPSBtdGtfZHBpX2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBi b29sIG10a19kcGlfZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJ ICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXJldHVy biB0cnVlOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkK K3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gbXRrX2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7 CisKKwlkcm1fbW9kZV9jb3B5KCZkcGktPm1vZGUsIGFkanVzdGVkX21vZGUpOworfQorCitzdGF0 aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29k ZXIpOworCisJbXRrX2RwaV9wb3dlcl9vZmYoZHBpKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2Rw aV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0 IG10a19kcGkgKmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29kZXIpOworCisJbXRrX2Rw aV9wb3dlcl9vbihkcGkpOworCW10a19kcGlfc2V0X2Rpc3BsYXlfbW9kZShkcGksICZkcGktPm1v ZGUpOworfQorCitzdGF0aWMgaW50IG10a19kcGlfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciwKKwkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJ CQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIG10a19k cGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLm1vZGVfZml4dXAgPSBtdGtfZHBpX2VuY29k ZXJfbW9kZV9maXh1cCwKKwkubW9kZV9zZXQgPSBtdGtfZHBpX2VuY29kZXJfbW9kZV9zZXQsCisJ LmRpc2FibGUgPSBtdGtfZHBpX2VuY29kZXJfZGlzYWJsZSwKKwkuZW5hYmxlID0gbXRrX2RwaV9l bmNvZGVyX2VuYWJsZSwKKwkuYXRvbWljX2NoZWNrID0gbXRrX2RwaV9hdG9taWNfY2hlY2ssCit9 OworCitzdGF0aWMgdm9pZCBtdGtfZHBpX3N0YXJ0KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAp Cit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGNvbnRhaW5lcl9vZihjb21wLCBzdHJ1Y3QgbXRr X2RwaSwgZGRwX2NvbXApOworCisJbXRrX2RwaV9wb3dlcl9vbihkcGkpOworfQorCitzdGF0aWMg dm9pZCBtdGtfZHBpX3N0b3Aoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCkKK3sKKwlzdHJ1Y3Qg bXRrX2RwaSAqZHBpID0gY29udGFpbmVyX29mKGNvbXAsIHN0cnVjdCBtdGtfZHBpLCBkZHBfY29t cCk7CisKKwltdGtfZHBpX3Bvd2VyX29mZihkcGkpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IG10a19kZHBfY29tcF9mdW5jcyBtdGtfZHBpX2Z1bmNzID0geworCS5zdGFydCA9IG10a19kcGlf c3RhcnQsCisJLnN0b3AgPSBtdGtfZHBpX3N0b3AsCit9OworCitzdGF0aWMgaW50IG10a19kcGlf YmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0 YSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBkYXRhOworCWludCByZXQ7CisKKwlyZXQgPSBtdGtf ZGRwX2NvbXBfcmVnaXN0ZXIoZHJtX2RldiwgJmRwaS0+ZGRwX2NvbXApOworCWlmIChyZXQgPCAw KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvbXBvbmVudCAlczogJWRc biIsCisJCQlkZXYtPm9mX25vZGUtPmZ1bGxfbmFtZSwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9 CisKKwlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRybV9kZXYsICZkcGktPmVuY29kZXIsICZtdGtf ZHBpX2VuY29kZXJfZnVuY3MsCisJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9UTURTKTsKKwlp ZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgZGVjb2Rlcjog JWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX3VucmVnaXN0ZXI7CisJfQorCWRybV9lbmNvZGVyX2hl bHBlcl9hZGQoJmRwaS0+ZW5jb2RlciwgJm10a19kcGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOwor CisJLyogQ3VycmVudGx5IERQSTAgaXMgZml4ZWQgdG8gYmUgZHJpdmVuIGJ5IE9WTDEgKi8KKwlk cGktPmVuY29kZXIucG9zc2libGVfY3J0Y3MgPSBCSVQoMSk7CisKKwlkcGktPmVuY29kZXIuYnJp ZGdlLT5lbmNvZGVyID0gJmRwaS0+ZW5jb2RlcjsKKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChk cGktPmVuY29kZXIuZGV2LCBkcGktPmVuY29kZXIuYnJpZGdlKTsKKwlpZiAocmV0KSB7CisJCWRl dl9lcnIoZGV2LCAiRmFpbGVkIHRvIGF0dGFjaCBicmlkZ2U6ICVkXG4iLCByZXQpOworCQlnb3Rv IGVycl9jbGVhbnVwOworCX0KKworCWRwaS0+Yml0X251bSA9IE1US19EUElfT1VUX0JJVF9OVU1f OEJJVFM7CisJZHBpLT5jaGFubmVsX3N3YXAgPSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdC OworCWRwaS0+eWNfbWFwID0gTVRLX0RQSV9PVVRfWUNfTUFQX1JHQjsKKwlkcGktPmNvbG9yX2Zv cm1hdCA9IE1US19EUElfQ09MT1JfRk9STUFUX1JHQjsKKworCXJldHVybiAwOworCitlcnJfY2xl YW51cDoKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKCZkcGktPmVuY29kZXIpOworZXJyX3VucmVnaXN0 ZXI6CisJbXRrX2RkcF9jb21wX3VucmVnaXN0ZXIoZHJtX2RldiwgJmRwaS0+ZGRwX2NvbXApOwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfdW5iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAorCQkJICAgdm9pZCAqZGF0YSkKK3sKKwlz dHJ1Y3QgbXRrX2RwaSAqZHBpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRybV9kZXYgPSBkYXRhOworCisJZHJtX2VuY29kZXJfY2xlYW51cCgmZHBpLT5lbmNv ZGVyKTsKKwltdGtfZGRwX2NvbXBfdW5yZWdpc3Rlcihkcm1fZGV2LCAmZHBpLT5kZHBfY29tcCk7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZHBpX2NvbXBvbmVu dF9vcHMgPSB7CisJLmJpbmQgPSBtdGtfZHBpX2JpbmQsCisJLnVuYmluZCA9IG10a19kcGlfdW5i aW5kLAorfTsKKworc3RhdGljIGludCBtdGtfZHBpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3Qg bXRrX2RwaSAqZHBpOworCXN0cnVjdCByZXNvdXJjZSAqbWVtOworCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqZXAsICpicmlkZ2Vfbm9kZSA9IE5VTEw7CisJaW50IGNvbXBfaWQ7CisJaW50IHJldDsKKwor CWRwaSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZHBpKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCFkcGkpCisJCXJldHVybiAtRU5PTUVNOworCisJZHBpLT5kZXYgPSBkZXY7CisKKwltZW0gPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWRwaS0+cmVn cyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7CisJaWYgKElTX0VSUihkcGktPnJl Z3MpKSB7CisJCXJldCA9IFBUUl9FUlIoZHBpLT5yZWdzKTsKKwkJZGV2X2VycihkZXYsICJGYWls ZWQgdG8gaW9yZW1hcCBtZW0gcmVzb3VyY2U6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0Owor CX0KKworCWRwaS0+ZW5naW5lX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJlbmdpbmUiKTsKKwlp ZiAoSVNfRVJSKGRwaS0+ZW5naW5lX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkcGktPmVuZ2lu ZV9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgZW5naW5lIGNsb2NrOiAlZFxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcGktPnBpeGVsX2NsayA9IGRldm1fY2xr X2dldChkZXYsICJwaXhlbCIpOworCWlmIChJU19FUlIoZHBpLT5waXhlbF9jbGspKSB7CisJCXJl dCA9IFBUUl9FUlIoZHBpLT5waXhlbF9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBn ZXQgcGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRwaS0+ dHZkX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJwbGwiKTsKKwlpZiAoSVNfRVJSKGRwaS0+dHZk X2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkcGktPnR2ZF9jbGspOworCQlkZXZfZXJyKGRldiwg IkZhaWxlZCB0byBnZXQgdHZkcGxsIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsK Kwl9CisKKwlkcGktPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKGRwaS0+ aXJxIDw9IDApIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGlycTogJWRcbiIsIGRw aS0+aXJxKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZXAgPSBvZl9ncmFwaF9nZXRfbmV4 dF9lbmRwb2ludChkZXYtPm9mX25vZGUsIE5VTEwpOworCWlmIChlcCkgeworCQlicmlkZ2Vfbm9k ZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApOworCQlvZl9ub2RlX3B1dChl cCk7CisJfQorCWlmICghYnJpZGdlX25vZGUpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8g ZmluZCBicmlkZ2Ugbm9kZTogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2 X2luZm8oZGV2LCAiRm91bmQgYnJpZGdlIG5vZGU6ICVzXG4iLCBicmlkZ2Vfbm9kZS0+ZnVsbF9u YW1lKTsKKworCWRwaS0+ZW5jb2Rlci5icmlkZ2UgPSBvZl9kcm1fZmluZF9icmlkZ2UoYnJpZGdl X25vZGUpOworCW9mX25vZGVfcHV0KGJyaWRnZV9ub2RlKTsKKwlpZiAoIWRwaS0+ZW5jb2Rlci5i cmlkZ2UpCisJCXJldHVybiAtRVBST0JFX0RFRkVSOworCisJY29tcF9pZCA9IG10a19kZHBfY29t cF9nZXRfaWQoZGV2LT5vZl9ub2RlLCBNVEtfRFBJKTsKKwlpZiAoY29tcF9pZCA8IDApIHsKKwkJ ZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaWRlbnRpZnkgYnkgYWxpYXM6ICVkXG4iLCBjb21wX2lk KTsKKwkJcmV0dXJuIGNvbXBfaWQ7CisJfQorCisJcmV0ID0gbXRrX2RkcF9jb21wX2luaXQoZGV2 LCBkZXYtPm9mX25vZGUsICZkcGktPmRkcF9jb21wLCBjb21wX2lkLAorCQkJCSZtdGtfZHBpX2Z1 bmNzKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUg Y29tcG9uZW50OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlwbGF0Zm9ybV9z ZXRfZHJ2ZGF0YShwZGV2LCBkcGkpOworCisJcmV0ID0gY29tcG9uZW50X2FkZChkZXYsICZtdGtf ZHBpX2NvbXBvbmVudF9vcHMpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQg dG8gYWRkIGNvbXBvbmVudDogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKK3sKKwljb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsICZtdGtfZHBpX2NvbXBv bmVudF9vcHMpOworCisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKK3N0 YXRpYyBpbnQgbXRrX2RwaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qg bXRrX2RwaSAqZHBpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJldDsKKworCWlmIChJ U19FUlIoZHBpKSkgeworCQlkZXZfaW5mbyhkZXYsICJkcGkgc3VzcGVuZCBmYWlsZWQhXG4iKTsK KwkJcmV0dXJuIFBUUl9FUlIoZHBpKTsKKwl9CisKKwlyZXQgPSBtdGtfZHBpX3Bvd2VyX29mZihk cGkpOworCWlmIChyZXQpIHsKKwkJZGV2X2luZm8oZGV2LCAiZHBpIHN1c3BlbmQgZmFpbGVkIVxu Iik7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2X2luZm8oZGV2LCAiZHBpIHN1c3BlbmQgc3Vj 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 ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwppbmRleCA3Mzlj M2U5Li40MzUwNWU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwpAQCAt NTIzLDYgKzUyMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICogY29uc3QgbXRr X2RybV9kcml2ZXJzW10gPSB7CiAJJm10a19kaXNwX292bF9kcml2ZXIsCiAJJm10a19kc2lfZHJp dmVyLAogCSZtdGtfbWlwaV90eF9kcml2ZXIsCisJJm10a19kcGlfZHJpdmVyLAogfTsKIAogc3Rh dGljIGludCBfX2luaXQgbXRrX2RybV9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2Rydi5oCmluZGV4IDNiNWIyNTQuLmM2MGU0NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5oCkBAIC01MSw1ICs1MSw2IEBAIHN0cnVjdCBtdGtfZHJtX3ByaXZh dGUgewogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3Bfb3ZsX2RyaXZlcjsK IGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kc2lfZHJpdmVyOwogZXh0ZXJuIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX21pcGlfdHhfZHJpdmVyOworZXh0ZXJuIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgbXRrX2RwaV9kcml2ZXI7CiAKICNlbmRpZiAvKiBNVEtfRFJNX0RSVl9I ICovCi0tIAoyLjYuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK