From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH 4/4] drm: zte: add VGA driver support Date: Tue, 21 Mar 2017 20:15:56 +0800 Message-ID: <1490098556-23853-5-git-send-email-shawnguo@kernel.org> References: <1490098556-23853-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 679656E51D for ; Tue, 21 Mar 2017 12:16:57 +0000 (UTC) In-Reply-To: <1490098556-23853-1-git-send-email-shawnguo@kernel.org> 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: Xin Zhou , Daniel Vetter , Baoyou Xie , Jun Nie List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KCkl0IGFkZHMgVkdBIGRyaXZl ciBzdXBwb3J0LCB3aGljaCBuZWVkcyB0byBjb25maWd1cmUgY29ycmVzcG9uZGluZyBWT1UKaW50 ZXJmYWNlIGluIFJHQl84ODggZm9ybWF0LCBhbmQgdGh1cyB0aGUgZm9sbG93aW5nIGNoYW5nZXMg YXJlIG5lZWRlZApvbiB6eF92b3UuCgotIFJlbmFtZSB0aGUgQ1NDIGJsb2NrIG9mIEdyYXBoaWMg TGF5ZXIgYSBiaXQgdG8gbWFrZSBpdCBtb3JlIHNwZWNpZmljLAogIGFuZCBhZGQgQ1NDIG9mIENo YW5uZWwgdG8gc3VwcG9ydCBSR0Igb3V0cHV0LgotIEJ5cGFzcyBEaXRoZXIgYmxvY2sgZm9yIFJH QiBvdXRwdXQuCgpTaWduZWQtb2ZmLWJ5OiBTaGF3biBHdW8gPHNoYXduLmd1b0BsaW5hcm8ub3Jn PgotLS0KIGRyaXZlcnMvZ3B1L2RybS96dGUvTWFrZWZpbGUgICAgICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0venRlL3p4X2RybV9kcnYuYyAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96 eF9kcm1fZHJ2LmggIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdmdhLmMgICAgICB8 IDUwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF92Z2FfcmVncy5oIHwgIDM2ICsrKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92 b3UuYyAgICAgIHwgIDMzICsrLQogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3VfcmVncy5oIHwg IDEyICstCiA3IGZpbGVzIGNoYW5nZWQsIDU4MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdmdhLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYV9yZWdzLmgKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS9N YWtlZmlsZQppbmRleCAwMTM1MmI1NmM0MTguLjlkZjc3NjZhN2Y5ZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3p0ZS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0venRlL01ha2Vm aWxlCkBAIC0zLDYgKzMsNyBAQCB6eGRybS15IDo9IFwKIAl6eF9oZG1pLm8gXAogCXp4X3BsYW5l Lm8gXAogCXp4X3R2ZW5jLm8gXAorCXp4X3ZnYS5vIFwKIAl6eF92b3UubwogCiBvYmotJChDT05G SUdfRFJNX1pURSkgKz0genhkcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96 eF9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuYwppbmRleCA1YzY5 NDRhMWU3MmMuLjhhNjg5MmVlYjQ0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96 eF9kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmMKQEAgLTI0 OCw2ICsyNDgsNyBAQCBzdGF0aWMgaW50IHp4X2RybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKIAkmenhfY3J0Y19kcml2ZXIsCiAJJnp4X2hkbWlfZHJpdmVyLAogCSZ6eF90 dmVuY19kcml2ZXIsCisJJnp4X3ZnYV9kcml2ZXIsCiAJJnp4X2RybV9wbGF0Zm9ybV9kcml2ZXIs CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Rydi5oCmluZGV4IDVjYTAzNWIwNzljNy4uMmE4Y2Rj NWY4YmU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuaApAQCAtMTQsNiArMTQsNyBAQAogZXh0 ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgenhfY3J0Y19kcml2ZXI7CiBleHRlcm4gc3RydWN0 IHBsYXRmb3JtX2RyaXZlciB6eF9oZG1pX2RyaXZlcjsKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1f ZHJpdmVyIHp4X3R2ZW5jX2RyaXZlcjsKK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHp4 X3ZnYV9kcml2ZXI7CiAKIHN0YXRpYyBpbmxpbmUgdTMyIHp4X3JlYWRsKHZvaWQgX19pb21lbSAq cmVnKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92Z2EuYyBiL2RyaXZl cnMvZ3B1L2RybS96dGUvenhfdmdhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4zNWVhZjk4NDU4YWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X3ZnYS5jCkBAIC0wLDAgKzEsNTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3 IFNhbmVjaGlwcyBUZWNobm9sb2d5IENvLiwgTHRkLgorICogQ29weXJpZ2h0IDIwMTcgTGluYXJv IEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGsu aD4KKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lz Y29uLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2F0 b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KKworI2luY2x1ZGUgInp4X2RybV9kcnYuaCIKKyNpbmNsdWRlICJ6eF92 Z2FfcmVncy5oIgorI2luY2x1ZGUgInp4X3ZvdS5oIgorCitzdHJ1Y3QgenhfdmdhX3B3cmN0cmwg eworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKKwl1MzIgcmVnOworCXUzMiBtYXNrOworfTsKKwor c3RydWN0IHp4X3ZnYV9pMmMgeworCXN0cnVjdCBpMmNfYWRhcHRlciBhZGFwOworCXN0cnVjdCBt dXRleCBsb2NrOworfTsKKworc3RydWN0IHp4X3ZnYSB7CisJc3RydWN0IGRybV9jb25uZWN0b3Ig Y29ubmVjdG9yOworCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXN0cnVjdCB6eF92Z2Ff aTJjICpkZGM7CisJc3RydWN0IGRldmljZSAqZGV2OworCXZvaWQgX19pb21lbSAqbW1pbzsKKwlz dHJ1Y3QgY2xrICppMmNfd2NsazsKKwlzdHJ1Y3QgenhfdmdhX3B3cmN0cmwgcHdyY3RybDsKKwlz dHJ1Y3QgY29tcGxldGlvbiBjb21wbGV0ZTsKKwlib29sIGNvbm5lY3RlZDsKK307CisKKyNkZWZp bmUgdG9fenhfdmdhKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgenhfdmdhLCB4KQorCitzdGF0 aWMgdm9pZCB6eF92Z2FfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQoreworCXN0cnVjdCB6eF92Z2EgKnZnYSA9IHRvX3p4X3ZnYShlbmNvZGVyKTsKKwlzdHJ1Y3Qg enhfdmdhX3B3cmN0cmwgKnB3cmN0cmwgPSAmdmdhLT5wd3JjdHJsOworCisJLyogU2V0IGJpdCB0 byBwb3dlciB1cCBWR0EgREFDcyAqLworCXJlZ21hcF91cGRhdGVfYml0cyhwd3JjdHJsLT5yZWdt YXAsIHB3cmN0cmwtPnJlZywgcHdyY3RybC0+bWFzaywKKwkJCSAgIHB3cmN0cmwtPm1hc2spOwor CisJdm91X2luZl9lbmFibGUoVk9VX1ZHQSwgZW5jb2Rlci0+Y3J0Yyk7Cit9CisKK3N0YXRpYyB2 b2lkIHp4X3ZnYV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQor eworCXN0cnVjdCB6eF92Z2EgKnZnYSA9IHRvX3p4X3ZnYShlbmNvZGVyKTsKKwlzdHJ1Y3Qgenhf dmdhX3B3cmN0cmwgKnB3cmN0cmwgPSAmdmdhLT5wd3JjdHJsOworCisJdm91X2luZl9kaXNhYmxl KFZPVV9WR0EsIGVuY29kZXItPmNydGMpOworCisJLyogQ2xlYXIgYml0IHRvIHBvd2VyIGRvd24g VkdBIERBQ3MgKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHdyY3RybC0+cmVnbWFwLCBwd3JjdHJs LT5yZWcsIHB3cmN0cmwtPm1hc2ssIDApOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9l bmNvZGVyX2hlbHBlcl9mdW5jcyB6eF92Z2FfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLmVu YWJsZQk9IHp4X3ZnYV9lbmNvZGVyX2VuYWJsZSwKKwkuZGlzYWJsZSA9IHp4X3ZnYV9lbmNvZGVy X2Rpc2FibGUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIHp4 X3ZnYV9lbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gZHJtX2VuY29kZXJfY2xlYW51cCwK K307CisKK3N0YXRpYyBpbnQgenhfdmdhX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgenhfdmdhICp2Z2EgPSB0b196eF92Z2Eo Y29ubmVjdG9yKTsKKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKKwlpbnQgcmV0OworCisJLyoKKwkgKiBD bGVhciBib3RoIGRldGVjdGlvbiBiaXRzIHRvIHN3aXRjaCBJMkMgYnVzIGZyb20gZGV2aWNlCisJ ICogZGV0ZWN0aW5nIHRvIEVESUQgcmVhZGluZy4KKwkgKi8KKwl6eF93cml0ZWwodmdhLT5tbWlv ICsgVkdBX0FVVE9fREVURUNUX1NFTCwgMCk7CisKKwllZGlkID0gZHJtX2dldF9lZGlkKGNvbm5l Y3RvciwgJnZnYS0+ZGRjLT5hZGFwKTsKKwlpZiAoIWVkaWQpCisJCXJldHVybiAwOworCisJLyoK KwkgKiBBcyBlZGlkIHJlYWRpbmcgc3VjY2VlZHMsIGRldmljZSBtdXN0IGJlIGNvbm5lY3RlZCwg c28gd2Ugc2V0CisJICogdXAgZGV0ZWN0aW9uIGJpdCBmb3IgdW5wbHVnIGludGVycnVwdCBoZXJl LgorCSAqLworCXp4X3dyaXRlbCh2Z2EtPm1taW8gKyBWR0FfQVVUT19ERVRFQ1RfU0VMLCBWR0Ff REVURUNUX1NFTF9IQVNfREVWSUNFKTsKKworCWRybV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRp ZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOworCXJldCA9IGRybV9hZGRfZWRpZF9tb2Rlcyhj b25uZWN0b3IsIGVkaWQpOworCWtmcmVlKGVkaWQpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGVudW0gZHJtX21vZGVfc3RhdHVzCit6eF92Z2FfY29ubmVjdG9yX21vZGVfdmFsaWQoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSkKK3sKKwlyZXR1cm4gTU9ERV9PSzsKK30KKworc3RhdGljIHN0cnVjdCBkcm1f Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyB6eF92Z2FfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsK KwkuZ2V0X21vZGVzID0genhfdmdhX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCisJLm1vZGVfdmFsaWQg PSB6eF92Z2FfY29ubmVjdG9yX21vZGVfdmFsaWQsCit9OworCitzdGF0aWMgZW51bSBkcm1fY29u bmVjdG9yX3N0YXR1cworenhfdmdhX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlzdHJ1Y3QgenhfdmdhICp2Z2EgPSB0b196 eF92Z2EoY29ubmVjdG9yKTsKKworCXJldHVybiB2Z2EtPmNvbm5lY3RlZCA/IGNvbm5lY3Rvcl9z dGF0dXNfY29ubmVjdGVkIDoKKwkJCQljb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIHp4X3ZnYV9jb25uZWN0 b3JfZnVuY3MgPSB7CisJLmRwbXMgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBtcywK KwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywK KwkuZGV0ZWN0ID0genhfdmdhX2Nvbm5lY3Rvcl9kZXRlY3QsCisJLmRlc3Ryb3kgPSBkcm1fY29u bmVjdG9yX2NsZWFudXAsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jl c2V0LAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBpbnQgenhfdmdh X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCB6eF92Z2EgKnZnYSkKK3sK KwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmdmdhLT5lbmNvZGVyOworCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmdmdhLT5jb25uZWN0b3I7CisKKwllbmNvZGVyLT5w b3NzaWJsZV9jcnRjcyA9IFZPVV9DUlRDX01BU0s7CisKKwlkcm1fZW5jb2Rlcl9pbml0KGRybSwg ZW5jb2RlciwgJnp4X3ZnYV9lbmNvZGVyX2Z1bmNzLAorCQkJIERSTV9NT0RFX0VOQ09ERVJfREFD LCBOVUxMKTsKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKGVuY29kZXIsICZ6eF92Z2FfZW5jb2Rl cl9oZWxwZXJfZnVuY3MpOworCisJdmdhLT5jb25uZWN0b3IucG9sbGVkID0gRFJNX0NPTk5FQ1RP Ul9QT0xMX0hQRDsKKworCWRybV9jb25uZWN0b3JfaW5pdChkcm0sIGNvbm5lY3RvciwgJnp4X3Zn YV9jb25uZWN0b3JfZnVuY3MsCisJCQkgICBEUk1fTU9ERV9DT05ORUNUT1JfVkdBKTsKKwlkcm1f Y29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmenhfdmdhX2Nvbm5lY3Rvcl9oZWxwZXJf ZnVuY3MpOworCisJZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3Rvciwg ZW5jb2Rlcik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB6eF92Z2FfcHdyY3RybF9p bml0KHN0cnVjdCB6eF92Z2EgKnZnYSkKK3sKKwlzdHJ1Y3QgenhfdmdhX3B3cmN0cmwgKnB3cmN0 cmwgPSAmdmdhLT5wd3JjdHJsOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHZnYS0+ZGV2OworCXN0 cnVjdCBvZl9waGFuZGxlX2FyZ3Mgb3V0X2FyZ3M7CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwor CWludCByZXQ7CisKKwlyZXQgPSBvZl9wYXJzZV9waGFuZGxlX3dpdGhfZml4ZWRfYXJncyhkZXYt Pm9mX25vZGUsCisJCQkJInp0ZSx2Z2EtcG93ZXItY29udHJvbCIsIDIsIDAsICZvdXRfYXJncyk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3Jl Z21hcChvdXRfYXJncy5ucCk7CisJaWYgKElTX0VSUihyZWdtYXApKSB7CisJCXJldCA9IFBUUl9F UlIocmVnbWFwKTsKKwkJZ290byBvdXQ7CisJfQorCisJcHdyY3RybC0+cmVnbWFwID0gcmVnbWFw OworCXB3cmN0cmwtPnJlZyA9IG91dF9hcmdzLmFyZ3NbMF07CisJcHdyY3RybC0+bWFzayA9IG91 dF9hcmdzLmFyZ3NbMV07CisKK291dDoKKwlvZl9ub2RlX3B1dChvdXRfYXJncy5ucCk7CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCB6eF92Z2FfaTJjX3JlYWQoc3RydWN0IHp4X3ZnYSAq dmdhLCBzdHJ1Y3QgaTJjX21zZyAqbXNnKQoreworCWludCBsZW4gPSBtc2ctPmxlbjsKKwl1OCAq YnVmID0gbXNnLT5idWY7CisJdTMyIG9mZnNldCA9IDA7CisJaW50IGk7CisKKwlyZWluaXRfY29t cGxldGlvbigmdmdhLT5jb21wbGV0ZSk7CisKKwkvKiBTZWxlY3QgY29tYm8gd3JpdGUgKi8KKwl6 eF93cml0ZWxfbWFzayh2Z2EtPm1taW8gKyBWR0FfQ01EX0NGRywgVkdBX0NNRF9DT01CTywgVkdB X0NNRF9DT01CTyk7CisJenhfd3JpdGVsX21hc2sodmdhLT5tbWlvICsgVkdBX0NNRF9DRkcsIFZH QV9DTURfUlcsIDApOworCisJd2hpbGUgKGxlbiA+IDApIHsKKwkJdTMyIGNudDsKKworCQkvKiBD bGVhciBSWCBGSUZPICovCisJCXp4X3dyaXRlbF9tYXNrKHZnYS0+bW1pbyArIFZHQV9SWEZfQ1RS TCwgVkdBX1JYX0ZJRk9fQ0xFQVIsCisJCQkgICAgICAgVkdBX1JYX0ZJRk9fQ0xFQVIpOworCisJ CS8qIERhdGEgb2Zmc2V0IHRvIHJlYWQgZnJvbSAqLworCQl6eF93cml0ZWwodmdhLT5tbWlvICsg VkdBX1NVQl9BRERSLCBvZmZzZXQpOworCisJCS8qIEtpY2sgb2ZmIHRoZSB0cmFuc2ZlciAqLwor CQl6eF93cml0ZWxfbWFzayh2Z2EtPm1taW8gKyBWR0FfQ01EX0NGRywgVkdBX0NNRF9UUkFOUywK KwkJCSAgICAgICBWR0FfQ01EX1RSQU5TKTsKKworCQlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25f dGltZW91dCgmdmdhLT5jb21wbGV0ZSwKKwkJCQkJCSBtc2Vjc190b19qaWZmaWVzKDEwMDApKSkg eworCQkJRFJNX0RFVl9FUlJPUih2Z2EtPmRldiwgInRyYW5zZmVyIHRpbWVvdXRcbiIpOworCQkJ cmV0dXJuIC1FVElNRURPVVQ7CisJCX0KKworCQljbnQgPSB6eF9yZWFkbCh2Z2EtPm1taW8gKyBW R0FfUlhGX1NUQVRVUyk7CisJCWNudCA9IChjbnQgJiBWR0FfUlhGX0NPVU5UX01BU0spID4+IFZH QV9SWEZfQ09VTlRfU0hJRlQ7CisJCS8qIEZJRk8gc3RhdHVzIG1heSByZXBvcnQgbW9yZSBkYXRh IHRoYW4gd2UgbmVlZCB0byByZWFkICovCisJCWNudCA9IG1pbl90KHUzMiwgbGVuLCBjbnQpOwor CisJCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKKwkJCSpidWYrKyA9IHp4X3JlYWRsKHZnYS0+ bW1pbyArIFZHQV9EQVRBKTsKKworCQlsZW4gLT0gY250OworCQlvZmZzZXQgKz0gY250OworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHp4X3ZnYV9pMmNfd3JpdGUoc3RydWN0IHp4 X3ZnYSAqdmdhLCBzdHJ1Y3QgaTJjX21zZyAqbXNnKQoreworCS8qCisJICogVGhlIEREQyBJMkMg YWRhcHRlciBpcyBvbmx5IGZvciByZWFkaW5nIEVESUQgZGF0YSwgc28gd2UgYXNzdW1lCisJICog dGhhdCB0aGUgd3JpdGUgdG8gdGhpcyBhZGFwdGVyIG11c3QgYmUgdGhlIEVESUQgZGF0YSBvZmZz ZXQuCisJICovCisJaWYgKChtc2ctPmxlbiAhPSAxKSB8fCAoKG1zZy0+YWRkciAhPSBERENfQURE UikpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIEhhcmR3YXJlIHdpbGwgdGFrZSBjYXJlIG9m IHRoZSBzbGF2ZSBhZGRyZXNzIHNoaWZ0aW5nICovCisJenhfd3JpdGVsKHZnYS0+bW1pbyArIFZH QV9ERVZJQ0VfQUREUiwgbXNnLT5hZGRyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHp4X3ZnYV9pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsIHN0cnVjdCBpMmNfbXNn ICptc2dzLAorCQkJICAgaW50IG51bSkKK3sKKwlzdHJ1Y3QgenhfdmdhICp2Z2EgPSBpMmNfZ2V0 X2FkYXBkYXRhKGFkYXApOworCXN0cnVjdCB6eF92Z2FfaTJjICpkZGMgPSB2Z2EtPmRkYzsKKwlp bnQgcmV0ID0gMDsKKwlpbnQgaTsKKworCW11dGV4X2xvY2soJmRkYy0+bG9jayk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKKwkJaWYgKG1zZ3NbaV0uZmxhZ3MgJiBJMkNfTV9SRCkK KwkJCXJldCA9IHp4X3ZnYV9pMmNfcmVhZCh2Z2EsICZtc2dzW2ldKTsKKwkJZWxzZQorCQkJcmV0 ID0genhfdmdhX2kyY193cml0ZSh2Z2EsICZtc2dzW2ldKTsKKworCQlpZiAocmV0IDwgMCkKKwkJ CWJyZWFrOworCX0KKworCWlmICghcmV0KQorCQlyZXQgPSBudW07CisKKwltdXRleF91bmxvY2so JmRkYy0+bG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdTMyIHp4X3ZnYV9pMmNf ZnVuYyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCit7CisJcmV0dXJuIEkyQ19GVU5DX0ky QyB8IEkyQ19GVU5DX1NNQlVTX0VNVUw7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Fs Z29yaXRobSB6eF92Z2FfYWxnb3JpdGhtID0geworCS5tYXN0ZXJfeGZlcgk9IHp4X3ZnYV9pMmNf eGZlciwKKwkuZnVuY3Rpb25hbGl0eQk9IHp4X3ZnYV9pMmNfZnVuYywKK307CisKK3N0YXRpYyBp bnQgenhfdmdhX2RkY19yZWdpc3RlcihzdHJ1Y3QgenhfdmdhICp2Z2EpCit7CisJc3RydWN0IGRl dmljZSAqZGV2ID0gdmdhLT5kZXY7CisJc3RydWN0IGkyY19hZGFwdGVyICphZGFwOworCXN0cnVj dCB6eF92Z2FfaTJjICpkZGM7CisJaW50IHJldDsKKworCWRkYyA9IGRldm1fa3phbGxvYyhkZXYs IHNpemVvZigqZGRjKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkZGMpCisJCXJldHVybiAtRU5PTUVN OworCisJdmdhLT5kZGMgPSBkZGM7CisJbXV0ZXhfaW5pdCgmZGRjLT5sb2NrKTsKKworCWFkYXAg PSAmZGRjLT5hZGFwOworCWFkYXAtPm93bmVyID0gVEhJU19NT0RVTEU7CisJYWRhcC0+Y2xhc3Mg PSBJMkNfQ0xBU1NfRERDOworCWFkYXAtPmRldi5wYXJlbnQgPSBkZXY7CisJYWRhcC0+YWxnbyA9 ICZ6eF92Z2FfYWxnb3JpdGhtOworCXNucHJpbnRmKGFkYXAtPm5hbWUsIHNpemVvZihhZGFwLT5u YW1lKSwgInp4IHZnYSBpMmMiKTsKKworCXJldCA9IGkyY19hZGRfYWRhcHRlcihhZGFwKTsKKwlp ZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIGFkZCBJMkMgYWRhcHRl cjogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJaTJjX3NldF9hZGFwZGF0YShh ZGFwLCB2Z2EpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCB6eF92Z2Ff aXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJc3RydWN0IHp4X3ZnYSAqdmdh ID0gZGV2X2lkOworCisJZHJtX2hlbHBlcl9ocGRfaXJxX2V2ZW50KHZnYS0+Y29ubmVjdG9yLmRl dik7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCB6eF92 Z2FfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQoreworCXN0cnVjdCB6eF92Z2Eg KnZnYSA9IGRldl9pZDsKKwl1MzIgc3RhdHVzOworCisJc3RhdHVzID0genhfcmVhZGwodmdhLT5t bWlvICsgVkdBX0kyQ19TVEFUVVMpOworCisJLyogQ2xlYXIgaW50ZXJydXB0IHN0YXR1cyAqLwor CXp4X3dyaXRlbF9tYXNrKHZnYS0+bW1pbyArIFZHQV9JMkNfU1RBVFVTLCBWR0FfQ0xFQVJfSVJR LAorCQkgICAgICAgVkdBX0NMRUFSX0lSUSk7CisKKwlpZiAoc3RhdHVzICYgVkdBX0RFVklDRV9D T05ORUNURUQpIHsKKwkJLyoKKwkJICogV2Ugc2hvdWxkIGlkZWFsbHkgc2V0IHVwIFZHQV9ERVRF Q1RfU0VMX0hBU19ERVZJQ0UgYml0IGhlcmUKKwkJICogZm9yIHVucGx1ZyBkZXRlY3Rpb24sIGJ1 dCBkb2luZyBzbyB3aWxsIHN0b3AgRERDIGJ1cyBmcm9tCisJCSAqIHJlYWRpbmcgRURJRCBsYXRl ciBvbi4gSXQgbG9va3MgbGlrZSBhIEhXIGxpbWl0YXRpb24sIGFuZCB3ZQorCQkgKiB3b3JrIGFy b3VuZCBpdCBieSBkZWZlcmluZyB0aGUgYml0IHNldHVwIHRvIC5nZXRfbW9kZXMgaG9vaworCQkg KiBhZnRlciBFRElEIHJlYWQgc3VjY2VlZHMuCisJCSAqLworCQl2Z2EtPmNvbm5lY3RlZCA9IHRy dWU7CisJCXJldHVybiBJUlFfV0FLRV9USFJFQUQ7CisJfQorCisJaWYgKHN0YXR1cyAmIFZHQV9E RVZJQ0VfRElTQ09OTkVDVEVEKSB7CisJCXp4X3dyaXRlbCh2Z2EtPm1taW8gKyBWR0FfQVVUT19E RVRFQ1RfU0VMLAorCQkJICBWR0FfREVURUNUX1NFTF9OT19ERVZJQ0UpOworCQl2Z2EtPmNvbm5l Y3RlZCA9IGZhbHNlOworCQlyZXR1cm4gSVJRX1dBS0VfVEhSRUFEOworCX0KKworCWlmIChzdGF0 dXMgJiBWR0FfVFJBTlNfRE9ORSkgeworCQljb21wbGV0ZSgmdmdhLT5jb21wbGV0ZSk7CisJCXJl dHVybiBJUlFfSEFORExFRDsKKwl9CisKKwlyZXR1cm4gSVJRX05PTkU7Cit9CisKK3N0YXRpYyB2 b2lkIHp4X3ZnYV9od19pbml0KHN0cnVjdCB6eF92Z2EgKnZnYSkKK3sKKwl1bnNpZ25lZCBsb25n IHJlZiA9IGNsa19nZXRfcmF0ZSh2Z2EtPmkyY193Y2xrKTsKKwlpbnQgZGl2OworCisJLyoKKwkg KiBTZXQgdXAgSTJDIGZhc3Qgc3BlZWQgZGl2aWRlciBwZXIgZm9ybXVsYSBiZWxvdyB0byBnZXQg NDAwa0h6LgorCSAqICAgc2NsID0gcmVmIC8gKChkaXYgKyAxKSAqIDQpCisJICovCisJZGl2ID0g RElWX1JPVU5EX1VQKHJlZiAvIDEwMDAsIDQwMCAqIDQpIC0gMTsKKwl6eF93cml0ZWwodmdhLT5t bWlvICsgVkdBX0NMS19ESVZfRlMsIGRpdik7CisKKwkvKiBTZXQgdXAgZGV2aWNlIGRldGVjdGlv biAqLworCXp4X3dyaXRlbCh2Z2EtPm1taW8gKyBWR0FfQVVUT19ERVRFQ1RfUEFSQSwgMHg4MCk7 CisJenhfd3JpdGVsKHZnYS0+bW1pbyArIFZHQV9BVVRPX0RFVEVDVF9TRUwsIFZHQV9ERVRFQ1Rf U0VMX05PX0RFVklDRSk7CisKKwkvKgorCSAqIFdlIG5lZWQgdG8gcG9rZSBtb25pdG9yIHZpYSBE REMgYnVzIHRvIGdldCBjb25uZWN0aW9uIGlycQorCSAqIHN0YXJ0IHdvcmtpbmcuCisJICovCisJ enhfd3JpdGVsKHZnYS0+bW1pbyArIFZHQV9ERVZJQ0VfQUREUiwgRERDX0FERFIpOworCXp4X3dy aXRlbF9tYXNrKHZnYS0+bW1pbyArIFZHQV9DTURfQ0ZHLCBWR0FfQ01EX1RSQU5TLCBWR0FfQ01E X1RSQU5TKTsKK30KKworc3RhdGljIGludCB6eF92Z2FfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRybSA9IGRhdGE7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJc3RydWN0IHp4X3ZnYSAq dmdhOworCWludCBpcnE7CisJaW50IHJldDsKKworCXZnYSA9IGRldm1fa3phbGxvYyhkZXYsIHNp emVvZigqdmdhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF2Z2EpCisJCXJldHVybiAtRU5PTUVNOwor CisJdmdhLT5kZXYgPSBkZXY7CisJZGV2X3NldF9kcnZkYXRhKGRldiwgdmdhKTsKKworCXJlcyA9 IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJdmdhLT5t bWlvID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKHZnYS0+ bW1pbykpCisJCXJldHVybiBQVFJfRVJSKHZnYS0+bW1pbyk7CisKKwlpcnEgPSBwbGF0Zm9ybV9n ZXRfaXJxKHBkZXYsIDApOworCWlmIChpcnEgPCAwKQorCQlyZXR1cm4gaXJxOworCisJdmdhLT5p MmNfd2NsayA9IGRldm1fY2xrX2dldChkZXYsICJpMmNfd2NsayIpOworCWlmIChJU19FUlIodmdh LT5pMmNfd2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUih2Z2EtPmkyY193Y2xrKTsKKwkJRFJNX0RF Vl9FUlJPUihkZXYsICJmYWlsZWQgdG8gZ2V0IGkyY193Y2xrOiAlZFxuIiwgcmV0KTsKKwkJcmV0 dXJuIHJldDsKKwl9CisKKwlyZXQgPSB6eF92Z2FfcHdyY3RybF9pbml0KHZnYSk7CisJaWYgKHJl dCkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBpbml0IHBvd2VyIGNvbnRyb2w6 ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHp4X3ZnYV9kZGNfcmVn aXN0ZXIodmdhKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRv IHJlZ2lzdGVyIGRkYzogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0g enhfdmdhX3JlZ2lzdGVyKGRybSwgdmdhKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1Io ZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHZnYTogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7 CisJfQorCisJaW5pdF9jb21wbGV0aW9uKCZ2Z2EtPmNvbXBsZXRlKTsKKworCXJldCA9IGRldm1f cmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBpcnEsIHp4X3ZnYV9pcnFfaGFuZGxlciwKKwkJCQkJ enhfdmdhX2lycV90aHJlYWQsIElSUUZfU0hBUkVELAorCQkJCQlkZXZfbmFtZShkZXYpLCB2Z2Ep OworCWlmIChyZXQpIHsKKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gcmVxdWVzdCB0 aHJlYWRlZCBpcnE6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZSh2Z2EtPmkyY193Y2xrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJenhfdmdhX2h3X2luaXQodmdhKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCB6eF92Z2FfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVy LAorCQkJICB2b2lkICpkYXRhKQoreworCXN0cnVjdCB6eF92Z2EgKnZnYSA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHZnYS0+aTJjX3djbGspOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgenhfdmdhX2NvbXBvbmVudF9vcHMg PSB7CisJLmJpbmQgPSB6eF92Z2FfYmluZCwKKwkudW5iaW5kID0genhfdmdhX3VuYmluZCwKK307 CisKK3N0YXRpYyBpbnQgenhfdmdhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cit7CisJcmV0dXJuIGNvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJnp4X3ZnYV9jb21wb25lbnRf b3BzKTsKK30KKworc3RhdGljIGludCB6eF92Z2FfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCit7CisJY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmenhfdmdhX2NvbXBvbmVu dF9vcHMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCB6eF92Z2Ffb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInp0ZSx6eDI5NjcxOC12 Z2EiLCB9LAorCXsgLyogZW5kICovIH0sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgenhf dmdhX29mX21hdGNoKTsKKworc3RydWN0IHBsYXRmb3JtX2RyaXZlciB6eF92Z2FfZHJpdmVyID0g eworCS5wcm9iZSA9IHp4X3ZnYV9wcm9iZSwKKwkucmVtb3ZlID0genhfdmdhX3JlbW92ZSwKKwku ZHJpdmVyCT0geworCQkubmFtZSA9ICJ6eC12Z2EiLAorCQkub2ZfbWF0Y2hfdGFibGUJPSB6eF92 Z2Ffb2ZfbWF0Y2gsCisJfSwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4 X3ZnYV9yZWdzLmggYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYV9yZWdzLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZWFhMzQ1ZmU2YTYKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYV9yZWdzLmgKQEAgLTAsMCArMSwzNiBA QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTYW5lY2hpcHMgVGVjaG5vbG9neSBDby4sIEx0 ZC4KKyAqIENvcHlyaWdodCAyMDE3IExpbmFybyBMdGQuCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqLworCisjaWZuZGVmIF9fWlhfVkdBX1JFR1NfSF9fCisjZGVmaW5lIF9fWlhfVkdBX1JFR1Nf SF9fCisKKyNkZWZpbmUgVkdBX0NNRF9DRkcJCQkweDA0CisjZGVmaW5lIFZHQV9DTURfVFJBTlMJ CQlCSVQoNikKKyNkZWZpbmUgVkdBX0NNRF9DT01CTwkJCUJJVCg1KQorI2RlZmluZSBWR0FfQ01E X1JXCQkJQklUKDQpCisjZGVmaW5lIFZHQV9TVUJfQUREUgkJCTB4MGMKKyNkZWZpbmUgVkdBX0RF VklDRV9BRERSCQkJMHgxMAorI2RlZmluZSBWR0FfQ0xLX0RJVl9GUwkJCTB4MTQKKyNkZWZpbmUg VkdBX1JYRl9DVFJMCQkJMHgyMAorI2RlZmluZSBWR0FfUlhfRklGT19DTEVBUgkJQklUKDcpCisj ZGVmaW5lIFZHQV9EQVRBCQkJMHgyNAorI2RlZmluZSBWR0FfSTJDX1NUQVRVUwkJCTB4MjgKKyNk ZWZpbmUgVkdBX0RFVklDRV9ESVNDT05ORUNURUQJCUJJVCg3KQorI2RlZmluZSBWR0FfREVWSUNF X0NPTk5FQ1RFRAkJQklUKDYpCisjZGVmaW5lIFZHQV9DTEVBUl9JUlEJCQlCSVQoNCkKKyNkZWZp bmUgVkdBX1RSQU5TX0RPTkUJCQlCSVQoMCkKKyNkZWZpbmUgVkdBX1JYRl9TVEFUVVMJCQkweDMw CisjZGVmaW5lIFZHQV9SWEZfQ09VTlRfU0hJRlQJCTIKKyNkZWZpbmUgVkdBX1JYRl9DT1VOVF9N QVNLCQlHRU5NQVNLKDcsIDIpCisjZGVmaW5lIFZHQV9BVVRPX0RFVEVDVF9QQVJBCQkweDM0Cisj ZGVmaW5lIFZHQV9BVVRPX0RFVEVDVF9TRUwJCTB4MzgKKyNkZWZpbmUgVkdBX0RFVEVDVF9TRUxf SEFTX0RFVklDRQlCSVQoMSkKKyNkZWZpbmUgVkdBX0RFVEVDVF9TRUxfTk9fREVWSUNFCUJJVCgw KQorCisjZW5kaWYgLyogX19aWF9WR0FfUkVHU19IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS96dGUvenhfdm91LmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jCmluZGV4 IDJhMmQ5MGJkOTQyNS4uY2M1YmRmYzUzZThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X3ZvdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMKQEAgLTIzLDYg KzIzLDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgogI2luY2x1ZGUgPGRy bS9kcm1QLmg+CiAKKyNpbmNsdWRlICJ6eF9jb21tb25fcmVncy5oIgogI2luY2x1ZGUgInp4X2Ry bV9kcnYuaCIKICNpbmNsdWRlICJ6eF9wbGFuZS5oIgogI2luY2x1ZGUgInp4X3ZvdS5oIgpAQCAt MTIyLDYgKzEyMyw4IEBAIHN0cnVjdCB6eF9jcnRjIHsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmlt YXJ5OwogCXN0cnVjdCB6eF92b3VfaHcgKnZvdTsKIAl2b2lkIF9faW9tZW0gKmNobnJlZzsKKwl2 b2lkIF9faW9tZW0gKmNobmNzYzsKKwl2b2lkIF9faW9tZW0gKmRpdGhlcjsKIAljb25zdCBzdHJ1 Y3QgenhfY3J0Y19yZWdzICpyZWdzOwogCWNvbnN0IHN0cnVjdCB6eF9jcnRjX2JpdHMgKmJpdHM7 CiAJZW51bSB2b3VfY2huX3R5cGUgY2huX3R5cGU7CkBAIC0yMDQsNiArMjA3LDExIEBAIHN0cnVj dCB2b3VfaW5mIHsKIAkJLmNsb2Nrc19lbl9iaXRzID0gQklUKDE1KSwKIAkJLmNsb2Nrc19zZWxf Yml0cyA9IEJJVCgxMSkgfCBCSVQoMCksCiAJfSwKKwlbVk9VX1ZHQV0gPSB7CisJCS5kYXRhX3Nl bCA9IFZPVV9SR0JfODg4LAorCQkuY2xvY2tzX2VuX2JpdHMgPSBCSVQoMSksCisJCS5jbG9ja3Nf c2VsX2JpdHMgPSBCSVQoMTApLAorCX0sCiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB6eF92 b3VfaHcgKmNydGNfdG9fdm91KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKQEAgLTIyNyw5ICsyMzUs MjYgQEAgdm9pZCB2b3VfaW5mX2VuYWJsZShlbnVtIHZvdV9pbmZfaWQgaWQsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIAlzdHJ1Y3QgenhfY3J0YyAqemNydGMgPSB0b196eF9jcnRjKGNydGMpOwog CXN0cnVjdCB6eF92b3VfaHcgKnZvdSA9IHpjcnRjLT52b3U7CiAJc3RydWN0IHZvdV9pbmYgKmlu ZiA9ICZ2b3VfaW5mc1tpZF07CisJdm9pZCBfX2lvbWVtICpkaXRoZXIgPSB6Y3J0Yy0+ZGl0aGVy OworCXZvaWQgX19pb21lbSAqY3NjID0gemNydGMtPmNobmNzYzsKIAlib29sIGlzX21haW4gPSB6 Y3J0Yy0+Y2huX3R5cGUgPT0gVk9VX0NITl9NQUlOOwogCXUzMiBkYXRhX3NlbF9zaGlmdCA9IGlk IDw8IDE7CiAKKwlpZiAoaW5mLT5kYXRhX3NlbCAhPSBWT1VfWVVWNDQ0KSB7CisJCS8qIEVuYWJs ZSBjaGFubmVsIENTQyBmb3IgUkdCIG91dHB1dCAqLworCQl6eF93cml0ZWxfbWFzayhjc2MgKyBD U0NfQ1RSTDAsIENTQ19DT1ZfTU9ERV9NQVNLLAorCQkJICAgICAgIENTQ19CVDcwOV9JTUFHRV9Z Q0JDUjJSR0IgPDwgQ1NDX0NPVl9NT0RFX1NISUZUKTsKKwkJenhfd3JpdGVsX21hc2soY3NjICsg Q1NDX0NUUkwwLCBDU0NfV09SS19FTkFCTEUsCisJCQkgICAgICAgQ1NDX1dPUktfRU5BQkxFKTsK KworCQkvKiBCeXBhc3MgRGl0aGVyIGJsb2NrIGZvciBSR0Igb3V0cHV0ICovCisJCXp4X3dyaXRl bF9tYXNrKGRpdGhlciArIE9TRF9ESVRIRVJfQ1RSTDAsIERJVEhFUl9CWVNQQVNTLAorCQkJICAg ICAgIERJVEhFUl9CWVNQQVNTKTsKKwl9IGVsc2UgeworCQl6eF93cml0ZWxfbWFzayhjc2MgKyBD U0NfQ1RSTDAsIENTQ19XT1JLX0VOQUJMRSwgMCk7CisJCXp4X3dyaXRlbF9tYXNrKGRpdGhlciAr IE9TRF9ESVRIRVJfQ1RSTDAsIERJVEhFUl9CWVNQQVNTLCAwKTsKKwl9CisKIAkvKiBTZWxlY3Qg ZGF0YSBmb3JtYXQgKi8KIAl6eF93cml0ZWxfbWFzayh2b3UtPnZvdWN0bCArIFZPVV9JTkZfREFU QV9TRUwsIDB4MyA8PCBkYXRhX3NlbF9zaGlmdCwKIAkJICAgICAgIGluZi0+ZGF0YV9zZWwgPDwg ZGF0YV9zZWxfc2hpZnQpOwpAQCAtNTAyLDIwICs1MjcsMjQgQEAgc3RhdGljIGludCB6eF9jcnRj X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IHp4X3ZvdV9odyAqdm91LAogCiAJ aWYgKGNobl90eXBlID09IFZPVV9DSE5fTUFJTikgewogCQl6cGxhbmUtPmxheWVyID0gdm91LT5v c2QgKyBNQUlOX0dMX09GRlNFVDsKLQkJenBsYW5lLT5jc2MgPSB2b3UtPm9zZCArIE1BSU5fQ1ND X09GRlNFVDsKKwkJenBsYW5lLT5jc2MgPSB2b3UtPm9zZCArIE1BSU5fR0xfQ1NDX09GRlNFVDsK IAkJenBsYW5lLT5oYnNjID0gdm91LT5vc2QgKyBNQUlOX0hCU0NfT0ZGU0VUOwogCQl6cGxhbmUt PnJzeiA9IHZvdS0+b3RmcHB1ICsgTUFJTl9SU1pfT0ZGU0VUOwogCQl6cGxhbmUtPmJpdHMgPSAm enhfZ2xfYml0c1swXTsKIAkJemNydGMtPmNobnJlZyA9IHZvdS0+b3NkICsgT1NEX01BSU5fQ0hO OworCQl6Y3J0Yy0+Y2huY3NjID0gdm91LT5vc2QgKyBNQUlOX0NITl9DU0NfT0ZGU0VUOworCQl6 Y3J0Yy0+ZGl0aGVyID0gdm91LT5vc2QgKyBNQUlOX0RJVEhFUl9PRkZTRVQ7CiAJCXpjcnRjLT5y ZWdzID0gJm1haW5fY3J0Y19yZWdzOwogCQl6Y3J0Yy0+Yml0cyA9ICZtYWluX2NydGNfYml0czsK IAl9IGVsc2UgewogCQl6cGxhbmUtPmxheWVyID0gdm91LT5vc2QgKyBBVVhfR0xfT0ZGU0VUOwot CQl6cGxhbmUtPmNzYyA9IHZvdS0+b3NkICsgQVVYX0NTQ19PRkZTRVQ7CisJCXpwbGFuZS0+Y3Nj ID0gdm91LT5vc2QgKyBBVVhfR0xfQ1NDX09GRlNFVDsKIAkJenBsYW5lLT5oYnNjID0gdm91LT5v c2QgKyBBVVhfSEJTQ19PRkZTRVQ7CiAJCXpwbGFuZS0+cnN6ID0gdm91LT5vdGZwcHUgKyBBVVhf UlNaX09GRlNFVDsKIAkJenBsYW5lLT5iaXRzID0gJnp4X2dsX2JpdHNbMV07CiAJCXpjcnRjLT5j aG5yZWcgPSB2b3UtPm9zZCArIE9TRF9BVVhfQ0hOOworCQl6Y3J0Yy0+Y2huY3NjID0gdm91LT5v c2QgKyBBVVhfQ0hOX0NTQ19PRkZTRVQ7CisJCXpjcnRjLT5kaXRoZXIgPSB2b3UtPm9zZCArIEFV WF9ESVRIRVJfT0ZGU0VUOwogCQl6Y3J0Yy0+cmVncyA9ICZhdXhfY3J0Y19yZWdzOwogCQl6Y3J0 Yy0+Yml0cyA9ICZhdXhfY3J0Y19iaXRzOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS96dGUvenhfdm91X3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaApp bmRleCBjMDY2ZWYxMjM0MzQuLjVhMjE4MzUxYjQ5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF92b3VfcmVncy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3Jl Z3MuaApAQCAtMTMsMTMgKzEzLDE3IEBACiAKIC8qIFN1Yi1tb2R1bGUgb2Zmc2V0ICovCiAjZGVm aW5lIE1BSU5fR0xfT0ZGU0VUCQkJMHgxMzAKLSNkZWZpbmUgTUFJTl9DU0NfT0ZGU0VUCQkJMHg1 ODAKKyNkZWZpbmUgTUFJTl9HTF9DU0NfT0ZGU0VUCQkweDU4MAorI2RlZmluZSBNQUlOX0NITl9D U0NfT0ZGU0VUCQkweDZjMAogI2RlZmluZSBNQUlOX0hCU0NfT0ZGU0VUCQkweDgyMAorI2RlZmlu ZSBNQUlOX0RJVEhFUl9PRkZTRVQJCTB4OTYwCiAjZGVmaW5lIE1BSU5fUlNaX09GRlNFVAkJCTB4 NjAwIC8qIE9URlBQVSBzdWItbW9kdWxlICovCiAKICNkZWZpbmUgQVVYX0dMX09GRlNFVAkJCTB4 MjAwCi0jZGVmaW5lIEFVWF9DU0NfT0ZGU0VUCQkJMHg1ZDAKKyNkZWZpbmUgQVVYX0dMX0NTQ19P RkZTRVQJCTB4NWQwCisjZGVmaW5lIEFVWF9DSE5fQ1NDX09GRlNFVAkJMHg3MTAKICNkZWZpbmUg QVVYX0hCU0NfT0ZGU0VUCQkJMHg4NjAKKyNkZWZpbmUgQVVYX0RJVEhFUl9PRkZTRVQJCTB4OTcw CiAjZGVmaW5lIEFVWF9SU1pfT0ZGU0VUCQkJMHg4MDAKIAogI2RlZmluZSBPU0RfVkwwX09GRlNF VAkJCTB4MDQwCkBAIC03OCw2ICs4MiwxMCBAQAogI2RlZmluZSBDSE5fSU5URVJMQUNFX0JVRl9D VFJMCQkweDI0CiAjZGVmaW5lIENITl9JTlRFUkxBQ0VfRU4JCUJJVCgyKQogCisvKiBEaXRoZXIg cmVnaXN0ZXJzICovCisjZGVmaW5lIE9TRF9ESVRIRVJfQ1RSTDAJCTB4MDAKKyNkZWZpbmUgRElU SEVSX0JZU1BBU1MJCQlCSVQoMzEpCisKIC8qIFRJTUlOR19DVFJMIHJlZ2lzdGVycyAqLwogI2Rl ZmluZSBUSU1JTkdfVENfRU5BQkxFCQkweDA0CiAjZGVmaW5lIEFVWF9UQ19FTgkJCUJJVCgxKQot LSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=