From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 15/36] drm/tegra: hdmi: Demidlayer Date: Tue, 20 Jan 2015 11:48:34 +0100 Message-ID: <1421750935-4023-16-git-send-email-thierry.reding@gmail.com> References: <1421750935-4023-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1421750935-4023-1-git-send-email-thierry.reding@gmail.com> 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: linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCkltcGxlbWVudCBlbmNv ZGVyIGFuZCBjb25uZWN0b3Igd2l0aGluIHRoZSBIRE1JIGRyaXZlciBpdHNlbGYgdXNpbmcgdGhl ClRlZ3JhIG91dHB1dCBoZWxwZXJzIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBUZWdyYSBvdXRwdXQg YXMgbWlkbGF5ZXIuIEJ5CmRvaW5nIHNvIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBpcyByZW1v dmVkIGFuZCBvdXRwdXQgZHJpdmVycyBiZWNvbWUKbW9yZSBmbGV4aWJsZSB3aGlsZSBrZWVwaW5n IHRoZSBtYWpvcml0eSBvZiB0aGUgYWR2YW50YWdlcyBwcm92aWRlZCBieQp0aGUgY29tbW9uIG91 dHB1dCBoZWxwZXJzLgoKU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZp ZGlhLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmggICAgfCAgIDEgLQogZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2hkbWkuYyAgIHwgMjgwICsrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvb3V0cHV0LmMgfCAgIDUg LQogMyBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgMTM5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uaCBiL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9kcm0uaAppbmRleCBkYmMxZjgzMzI3ZWEuLjk1YjZhZWJmYWYwMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9kcm0uaApAQCAtMTkzLDcgKzE5Myw2IEBAIHN0cnVjdCB0ZWdyYV9vdXRwdXRfb3BzIHsKIH07 CiAKIGVudW0gdGVncmFfb3V0cHV0X3R5cGUgewotCVRFR1JBX09VVFBVVF9IRE1JLAogCVRFR1JB X09VVFBVVF9EU0ksCiAJVEVHUkFfT1VUUFVUX0VEUCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdGVncmEvaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2hkbWkuYwppbmRl eCBkNGM2MzUxNDhjYzcuLjA1NmJiMmMxYzQyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3RlZ3JhL2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvaGRtaS5jCkBAIC05LDEw ICs5LDE0IEBACiAKICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KICNpbmNsdWRlIDxsaW51eC9kZWJ1 Z2ZzLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgogI2luY2x1ZGUgPGxpbnV4L2hkbWkuaD4K ICNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KICNpbmNsdWRlIDxsaW51eC9y ZXNldC5oPgogCisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9j cnRjX2hlbHBlci5oPgorCiAjaW5jbHVkZSAiaGRtaS5oIgogI2luY2x1ZGUgImRybS5oIgogI2lu Y2x1ZGUgImRjLmgiCkBAIC00MCw3ICs0NCw2IEBAIHN0cnVjdCB0ZWdyYV9oZG1pIHsKIAlzdHJ1 Y3QgaG9zdDF4X2NsaWVudCBjbGllbnQ7CiAJc3RydWN0IHRlZ3JhX291dHB1dCBvdXRwdXQ7CiAJ c3RydWN0IGRldmljZSAqZGV2OwotCWJvb2wgZW5hYmxlZDsKIAogCXN0cnVjdCByZWd1bGF0b3Ig KmhkbWk7CiAJc3RydWN0IHJlZ3VsYXRvciAqcGxsOwpAQCAtNzY4LDUzICs3NzEsMTA3IEBAIHN0 YXRpYyBib29sIHRlZ3JhX291dHB1dF9pc19oZG1pKHN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1 dCkKIAlyZXR1cm4gZHJtX2RldGVjdF9oZG1pX21vbml0b3IoZWRpZCk7CiB9CiAKLXN0YXRpYyBp bnQgdGVncmFfb3V0cHV0X2hkbWlfZW5hYmxlKHN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCkK K3N0YXRpYyB2b2lkIHRlZ3JhX2hkbWlfY29ubmVjdG9yX2RwbXMoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKKwkJCQkgICAgICBpbnQgbW9kZSkKIHsKLQl1bnNpZ25lZCBpbnQgaF9z eW5jX3dpZHRoLCBoX2Zyb250X3BvcmNoLCBoX2JhY2tfcG9yY2gsIGksIHJla2V5OwotCXN0cnVj dCB0ZWdyYV9kYyAqZGMgPSB0b190ZWdyYV9kYyhvdXRwdXQtPmVuY29kZXIuY3J0Yyk7Ci0Jc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmZGMtPmJhc2UubW9kZTsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIHRlZ3JhX2hkbWlfY29ubmVjdG9yX2Z1 bmNzID0geworCS5kcG1zID0gdGVncmFfaGRtaV9jb25uZWN0b3JfZHBtcywKKwkuZGV0ZWN0ID0g dGVncmFfb3V0cHV0X2Nvbm5lY3Rvcl9kZXRlY3QsCisJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVy X3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLmRlc3Ryb3kgPSB0ZWdyYV9vdXRwdXRf Y29ubmVjdG9yX2Rlc3Ryb3ksCit9OworCitzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMKK3Rl Z3JhX2hkbWlfY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKKwkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlzdHJ1Y3QgdGVn cmFfb3V0cHV0ICpvdXRwdXQgPSBjb25uZWN0b3JfdG9fb3V0cHV0KGNvbm5lY3Rvcik7CiAJc3Ry dWN0IHRlZ3JhX2hkbWkgKmhkbWkgPSB0b19oZG1pKG91dHB1dCk7Ci0Jc3RydWN0IGRldmljZV9u b2RlICpub2RlID0gaGRtaS0+ZGV2LT5vZl9ub2RlOwotCXVuc2lnbmVkIGludCBwdWxzZV9zdGFy dCwgZGl2ODIsIHBjbGs7Ci0JaW50IHJldHJpZXMgPSAxMDAwOwotCXUzMiB2YWx1ZTsKLQlpbnQg ZXJyOworCXVuc2lnbmVkIGxvbmcgcGNsayA9IG1vZGUtPmNsb2NrICogMTAwMDsKKwllbnVtIGRy bV9tb2RlX3N0YXR1cyBzdGF0dXMgPSBNT0RFX09LOworCXN0cnVjdCBjbGsgKnBhcmVudDsKKwls b25nIGVycjsKIAotCWlmIChoZG1pLT5lbmFibGVkKQotCQlyZXR1cm4gMDsKKwlwYXJlbnQgPSBj bGtfZ2V0X3BhcmVudChoZG1pLT5jbGtfcGFyZW50KTsKIAotCWhkbWktPmR2aSA9ICF0ZWdyYV9v dXRwdXRfaXNfaGRtaShvdXRwdXQpOworCWVyciA9IGNsa19yb3VuZF9yYXRlKHBhcmVudCwgcGNs ayAqIDQpOworCWlmIChlcnIgPD0gMCkKKwkJc3RhdHVzID0gTU9ERV9OT0NMT0NLOwogCi0JcGNs ayA9IG1vZGUtPmNsb2NrICogMTAwMDsKLQloX3N5bmNfd2lkdGggPSBtb2RlLT5oc3luY19lbmQg LSBtb2RlLT5oc3luY19zdGFydDsKLQloX2JhY2tfcG9yY2ggPSBtb2RlLT5odG90YWwgLSBtb2Rl LT5oc3luY19lbmQ7Ci0JaF9mcm9udF9wb3JjaCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+ aGRpc3BsYXk7CisJcmV0dXJuIHN0YXR1czsKK30KIAotCWVyciA9IHJlZ3VsYXRvcl9lbmFibGUo aGRtaS0+cGxsKTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MKK3RlZ3JhX2hkbWlfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKKwkuZ2V0X21vZGVzID0g dGVncmFfb3V0cHV0X2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCisJLm1vZGVfdmFsaWQgPSB0ZWdyYV9o ZG1pX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkLAorCS5iZXN0X2VuY29kZXIgPSB0ZWdyYV9vdXRwdXRf Y29ubmVjdG9yX2Jlc3RfZW5jb2RlciwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Vu Y29kZXJfZnVuY3MgdGVncmFfaGRtaV9lbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gdGVn cmFfb3V0cHV0X2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyB2b2lkIHRlZ3JhX2hkbWlf ZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCit7Cit9 CisKK3N0YXRpYyBib29sIHRlZ3JhX2hkbWlfZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKKwkJCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWQpCit7CisJc3Ry dWN0IHRlZ3JhX291dHB1dCAqb3V0cHV0ID0gZW5jb2Rlcl90b19vdXRwdXQoZW5jb2Rlcik7CisJ c3RydWN0IHRlZ3JhX2RjICpkYyA9IHRvX3RlZ3JhX2RjKGVuY29kZXItPmNydGMpOworCXN0cnVj dCB0ZWdyYV9oZG1pICpoZG1pID0gdG9faGRtaShvdXRwdXQpOworCXVuc2lnbmVkIGxvbmcgcGNs ayA9IG1vZGUtPmNsb2NrICogMTAwMDsKKwlpbnQgZXJyOworCisJZXJyID0gdGVncmFfZGNfc2V0 dXBfY2xvY2soZGMsIGhkbWktPmNsa19wYXJlbnQsIHBjbGssIDApOwogCWlmIChlcnIgPCAwKSB7 Ci0JCWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBQTEwgcmVndWxhdG9yOiAl ZFxuIiwgZXJyKTsKLQkJcmV0dXJuIGVycjsKKwkJZGV2X2VycihvdXRwdXQtPmRldiwgImZhaWxl ZCB0byBzZXR1cCBEQyBjbG9jazogJWRcbiIsIGVycik7CisJCXJldHVybiBmYWxzZTsKIAl9CiAK LQllcnIgPSByZWd1bGF0b3JfZW5hYmxlKGhkbWktPnZkZCk7CisJZXJyID0gY2xrX3NldF9yYXRl KGhkbWktPmNsa19wYXJlbnQsIHBjbGspOwogCWlmIChlcnIgPCAwKSB7Ci0JCWRldl9lcnIoaGRt aS0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBWREQgcmVndWxhdG9yOiAlZFxuIiwgZXJyKTsKLQkJ cmV0dXJuIGVycjsKKwkJZGV2X2VycihvdXRwdXQtPmRldiwgImZhaWxlZCB0byBzZXQgY2xvY2sg cmF0ZSB0byAlbHUgSHpcbiIsCisJCQlwY2xrKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWVy ciA9IGNsa19zZXRfcmF0ZShoZG1pLT5jbGssIHBjbGspOwotCWlmIChlcnIgPCAwKQotCQlyZXR1 cm4gZXJyOworCXJldHVybiB0cnVlOworfQogCi0JZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKGhk bWktPmNsayk7Ci0JaWYgKGVyciA8IDApIHsKLQkJZGV2X2VycihoZG1pLT5kZXYsICJmYWlsZWQg dG8gZW5hYmxlIGNsb2NrOiAlZFxuIiwgZXJyKTsKLQkJcmV0dXJuIGVycjsKLQl9CitzdGF0aWMg dm9pZCB0ZWdyYV9oZG1pX2VuY29kZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCit7Cit9CiAKLQlyZXNldF9jb250cm9sX2Fzc2VydChoZG1pLT5yc3QpOwotCXVzbGVlcF9y YW5nZSgxMDAwLCAyMDAwKTsKLQlyZXNldF9jb250cm9sX2RlYXNzZXJ0KGhkbWktPnJzdCk7Citz dGF0aWMgdm9pZCB0ZWdyYV9oZG1pX2VuY29kZXJfY29tbWl0KHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKK3sKK30KKworc3RhdGljIHZvaWQgdGVncmFfaGRtaV9lbmNvZGVyX21vZGVfc2V0 KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCisJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZCkKK3sKKwl1 bnNpZ25lZCBpbnQgaF9zeW5jX3dpZHRoLCBoX2Zyb250X3BvcmNoLCBoX2JhY2tfcG9yY2gsIGks IHJla2V5OworCXN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCA9IGVuY29kZXJfdG9fb3V0cHV0 KGVuY29kZXIpOworCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSB0b190ZWdyYV9kYyhlbmNvZGVyLT5j cnRjKTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBvdXRwdXQtPmRldi0+b2Zfbm9kZTsK KwlzdHJ1Y3QgdGVncmFfaGRtaSAqaGRtaSA9IHRvX2hkbWkob3V0cHV0KTsKKwl1bnNpZ25lZCBp bnQgcHVsc2Vfc3RhcnQsIGRpdjgyLCBwY2xrOworCWludCByZXRyaWVzID0gMTAwMDsKKwl1MzIg dmFsdWU7CisJaW50IGVycjsKKworCWhkbWktPmR2aSA9ICF0ZWdyYV9vdXRwdXRfaXNfaGRtaShv dXRwdXQpOworCisJcGNsayA9IG1vZGUtPmNsb2NrICogMTAwMDsKKwloX3N5bmNfd2lkdGggPSBt b2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFydDsKKwloX2JhY2tfcG9yY2ggPSBtb2Rl LT5odG90YWwgLSBtb2RlLT5oc3luY19lbmQ7CisJaF9mcm9udF9wb3JjaCA9IG1vZGUtPmhzeW5j X3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CiAKIAkvKiBwb3dlciB1cCBzZXF1ZW5jZSAqLwogCXZh bHVlID0gdGVncmFfaGRtaV9yZWFkbChoZG1pLCBIRE1JX05WX1BESVNQX1NPUl9QTEwwKTsKQEAg LTEwMDAsMTA0ICsxMDU3LDMzIEBAIHN0YXRpYyBpbnQgdGVncmFfb3V0cHV0X2hkbWlfZW5hYmxl KHN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCkKIAl0ZWdyYV9kY19jb21taXQoZGMpOwogCiAJ LyogVE9ETzogYWRkIEhEQ1Agc3VwcG9ydCAqLwotCi0JaGRtaS0+ZW5hYmxlZCA9IHRydWU7Ci0K LQlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB0ZWdyYV9vdXRwdXRfaGRtaV9kaXNhYmxlKHN0 cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCkKK3N0YXRpYyB2b2lkIHRlZ3JhX2hkbWlfZW5jb2Rl cl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgdGVncmFf ZGMgKmRjID0gdG9fdGVncmFfZGMob3V0cHV0LT5lbmNvZGVyLmNydGMpOwotCXN0cnVjdCB0ZWdy YV9oZG1pICpoZG1pID0gdG9faGRtaShvdXRwdXQpOworCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSB0 b190ZWdyYV9kYyhlbmNvZGVyLT5jcnRjKTsKIAl1MzIgdmFsdWU7CiAKLQlpZiAoIWhkbWktPmVu YWJsZWQpCi0JCXJldHVybiAwOwotCiAJLyoKIAkgKiBUaGUgZm9sbG93aW5nIGFjY2Vzc2VzIHJl Z2lzdGVycyBvZiB0aGUgZGlzcGxheSBjb250cm9sbGVyLCBzbyBtYWtlCiAJICogc3VyZSBpdCdz IG9ubHkgZXhlY3V0ZWQgd2hlbiB0aGUgb3V0cHV0IGlzIGF0dGFjaGVkIHRvIG9uZS4KIAkgKi8K IAlpZiAoZGMpIHsKLQkJLyoKLQkJICogWFhYOiBXZSBjYW4ndCBkbyB0aGlzIGhlcmUgYmVjYXVz ZSBpdCBjYXVzZXMgSERNSSB0byBnbwotCQkgKiBpbnRvIGFuIGVycm9uZW91cyBzdGF0ZSB3aXRo IHRoZSByZXN1bHQgdGhhdCBIRE1JIHdvbid0Ci0JCSAqIHByb3Blcmx5IHdvcmsgb25jZSBkaXNh YmxlZC4gU2VlIGFsc28gYSBzaW1pbGFyIHN5bXB0b20KLQkJICogZm9yIHRoZSBTT1Igb3V0cHV0 LgotCQkgKi8KLQkJLyoKLQkJdmFsdWUgPSB0ZWdyYV9kY19yZWFkbChkYywgRENfQ01EX0RJU1BM QVlfUE9XRVJfQ09OVFJPTCk7Ci0JCXZhbHVlICY9IH4oUFcwX0VOQUJMRSB8IFBXMV9FTkFCTEUg fCBQVzJfRU5BQkxFIHwgUFczX0VOQUJMRSB8Ci0JCQkgICBQVzRfRU5BQkxFIHwgUE0wX0VOQUJM RSB8IFBNMV9FTkFCTEUpOwotCQl0ZWdyYV9kY193cml0ZWwoZGMsIHZhbHVlLCBEQ19DTURfRElT UExBWV9QT1dFUl9DT05UUk9MKTsKLQkJKi8KLQogCQl2YWx1ZSA9IHRlZ3JhX2RjX3JlYWRsKGRj LCBEQ19ESVNQX0RJU1BfV0lOX09QVElPTlMpOwogCQl2YWx1ZSAmPSB+SERNSV9FTkFCTEU7CiAJ CXRlZ3JhX2RjX3dyaXRlbChkYywgdmFsdWUsIERDX0RJU1BfRElTUF9XSU5fT1BUSU9OUyk7CiAK IAkJdGVncmFfZGNfY29tbWl0KGRjKTsKIAl9Ci0KLQljbGtfZGlzYWJsZV91bnByZXBhcmUoaGRt aS0+Y2xrKTsKLQlyZXNldF9jb250cm9sX2Fzc2VydChoZG1pLT5yc3QpOwotCXJlZ3VsYXRvcl9k aXNhYmxlKGhkbWktPnZkZCk7Ci0JcmVndWxhdG9yX2Rpc2FibGUoaGRtaS0+cGxsKTsKLQotCWhk bWktPmVuYWJsZWQgPSBmYWxzZTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHRlZ3Jh X291dHB1dF9oZG1pX3NldHVwX2Nsb2NrKHN0cnVjdCB0ZWdyYV9vdXRwdXQgKm91dHB1dCwKLQkJ CQkJIHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyBwY2xrLAotCQkJCQkgdW5zaWduZWQg aW50ICpkaXYpCi17Ci0Jc3RydWN0IHRlZ3JhX2hkbWkgKmhkbWkgPSB0b19oZG1pKG91dHB1dCk7 Ci0JaW50IGVycjsKLQotCWVyciA9IGNsa19zZXRfcGFyZW50KGNsaywgaGRtaS0+Y2xrX3BhcmVu dCk7Ci0JaWYgKGVyciA8IDApIHsKLQkJZGV2X2VycihvdXRwdXQtPmRldiwgImZhaWxlZCB0byBz ZXQgcGFyZW50OiAlZFxuIiwgZXJyKTsKLQkJcmV0dXJuIGVycjsKLQl9Ci0KLQllcnIgPSBjbGtf c2V0X3JhdGUoaGRtaS0+Y2xrX3BhcmVudCwgcGNsayk7Ci0JaWYgKGVyciA8IDApCi0JCWRldl9l cnIob3V0cHV0LT5kZXYsICJmYWlsZWQgdG8gc2V0IGNsb2NrIHJhdGUgdG8gJWx1IEh6XG4iLAot CQkJcGNsayk7Ci0KLQkqZGl2ID0gMDsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHRl Z3JhX291dHB1dF9oZG1pX2NoZWNrX21vZGUoc3RydWN0IHRlZ3JhX291dHB1dCAqb3V0cHV0LAot CQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKLQkJCQkJZW51bSBkcm1fbW9kZV9z dGF0dXMgKnN0YXR1cykKLXsKLQlzdHJ1Y3QgdGVncmFfaGRtaSAqaGRtaSA9IHRvX2hkbWkob3V0 cHV0KTsKLQl1bnNpZ25lZCBsb25nIHBjbGsgPSBtb2RlLT5jbG9jayAqIDEwMDA7Ci0Jc3RydWN0 IGNsayAqcGFyZW50OwotCWxvbmcgZXJyOwotCi0JcGFyZW50ID0gY2xrX2dldF9wYXJlbnQoaGRt aS0+Y2xrX3BhcmVudCk7Ci0KLQllcnIgPSBjbGtfcm91bmRfcmF0ZShwYXJlbnQsIHBjbGsgKiA0 KTsKLQlpZiAoZXJyIDw9IDApCi0JCSpzdGF0dXMgPSBNT0RFX05PQ0xPQ0s7Ci0JZWxzZQotCQkq c3RhdHVzID0gTU9ERV9PSzsKLQotCXJldHVybiAwOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0 IHRlZ3JhX291dHB1dF9vcHMgaGRtaV9vcHMgPSB7Ci0JLmVuYWJsZSA9IHRlZ3JhX291dHB1dF9o ZG1pX2VuYWJsZSwKLQkuZGlzYWJsZSA9IHRlZ3JhX291dHB1dF9oZG1pX2Rpc2FibGUsCi0JLnNl dHVwX2Nsb2NrID0gdGVncmFfb3V0cHV0X2hkbWlfc2V0dXBfY2xvY2ssCi0JLmNoZWNrX21vZGUg PSB0ZWdyYV9vdXRwdXRfaGRtaV9jaGVja19tb2RlLAorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f ZW5jb2Rlcl9oZWxwZXJfZnVuY3MgdGVncmFfaGRtaV9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsK KwkuZHBtcyA9IHRlZ3JhX2hkbWlfZW5jb2Rlcl9kcG1zLAorCS5tb2RlX2ZpeHVwID0gdGVncmFf aGRtaV9lbmNvZGVyX21vZGVfZml4dXAsCisJLnByZXBhcmUgPSB0ZWdyYV9oZG1pX2VuY29kZXJf cHJlcGFyZSwKKwkuY29tbWl0ID0gdGVncmFfaGRtaV9lbmNvZGVyX2NvbW1pdCwKKwkubW9kZV9z ZXQgPSB0ZWdyYV9oZG1pX2VuY29kZXJfbW9kZV9zZXQsCisJLmRpc2FibGUgPSB0ZWdyYV9oZG1p X2VuY29kZXJfZGlzYWJsZSwKIH07CiAKIHN0YXRpYyBpbnQgdGVncmFfaGRtaV9zaG93X3JlZ3Mo c3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQpAQCAtMTM0NSwxNSArMTMzMSwyOCBAQCBz dGF0aWMgaW50IHRlZ3JhX2hkbWlfaW5pdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQog CXN0cnVjdCB0ZWdyYV9oZG1pICpoZG1pID0gaG9zdDF4X2NsaWVudF90b19oZG1pKGNsaWVudCk7 CiAJaW50IGVycjsKIAotCWhkbWktPm91dHB1dC50eXBlID0gVEVHUkFfT1VUUFVUX0hETUk7CiAJ aGRtaS0+b3V0cHV0LmRldiA9IGNsaWVudC0+ZGV2OwotCWhkbWktPm91dHB1dC5vcHMgPSAmaGRt aV9vcHM7CiAKLQllcnIgPSB0ZWdyYV9vdXRwdXRfaW5pdChkcm0sICZoZG1pLT5vdXRwdXQpOwot CWlmIChlcnIgPCAwKSB7Ci0JCWRldl9lcnIoY2xpZW50LT5kZXYsICJvdXRwdXQgc2V0dXAgZmFp bGVkOiAlZFxuIiwgZXJyKTsKLQkJcmV0dXJuIGVycjsKLQl9CisJZHJtX2Nvbm5lY3Rvcl9pbml0 KGRybSwgJmhkbWktPm91dHB1dC5jb25uZWN0b3IsCisJCQkgICAmdGVncmFfaGRtaV9jb25uZWN0 b3JfZnVuY3MsCisJCQkgICBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUEpOworCWRybV9jb25uZWN0 b3JfaGVscGVyX2FkZCgmaGRtaS0+b3V0cHV0LmNvbm5lY3RvciwKKwkJCQkgJnRlZ3JhX2hkbWlf Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJaGRtaS0+b3V0cHV0LmNvbm5lY3Rvci5kcG1zID0g RFJNX01PREVfRFBNU19PRkY7CisKKwlkcm1fZW5jb2Rlcl9pbml0KGRybSwgJmhkbWktPm91dHB1 dC5lbmNvZGVyLCAmdGVncmFfaGRtaV9lbmNvZGVyX2Z1bmNzLAorCQkJIERSTV9NT0RFX0VOQ09E RVJfVE1EUyk7CisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmaGRtaS0+b3V0cHV0LmVuY29kZXIs CisJCQkgICAgICAgJnRlZ3JhX2hkbWlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCisJZHJtX21v ZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZoZG1pLT5vdXRwdXQuY29ubmVjdG9yLAorCQkJ CQkgICZoZG1pLT5vdXRwdXQuZW5jb2Rlcik7CisJZHJtX2Nvbm5lY3Rvcl9yZWdpc3RlcigmaGRt aS0+b3V0cHV0LmNvbm5lY3Rvcik7CisKKwloZG1pLT5vdXRwdXQuZW5jb2Rlci5wb3NzaWJsZV9j cnRjcyA9IDB4MzsKKworCWlmIChncGlvX2lzX3ZhbGlkKGhkbWktPm91dHB1dC5ocGRfZ3Bpbykp CisJCWVuYWJsZV9pcnEoaGRtaS0+b3V0cHV0LmhwZF9pcnEpOwogCiAJaWYgKElTX0VOQUJMRUQo Q09ORklHX0RFQlVHX0ZTKSkgewogCQllcnIgPSB0ZWdyYV9oZG1pX2RlYnVnZnNfaW5pdChoZG1p LCBkcm0tPnByaW1hcnkpOwpAQCAtMTM2OCw2ICsxMzY3LDI2IEBAIHN0YXRpYyBpbnQgdGVncmFf aGRtaV9pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJCXJldHVybiBlcnI7CiAJ fQogCisJZXJyID0gcmVndWxhdG9yX2VuYWJsZShoZG1pLT5wbGwpOworCWlmIChlcnIgPCAwKSB7 CisJCWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBQTEwgcmVndWxhdG9yOiAl ZFxuIiwgZXJyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwllcnIgPSByZWd1bGF0b3JfZW5hYmxl KGhkbWktPnZkZCk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihoZG1pLT5kZXYsICJmYWls ZWQgdG8gZW5hYmxlIFZERCByZWd1bGF0b3I6ICVkXG4iLCBlcnIpOworCQlyZXR1cm4gZXJyOwor CX0KKworCWVyciA9IGNsa19wcmVwYXJlX2VuYWJsZShoZG1pLT5jbGspOworCWlmIChlcnIgPCAw KSB7CisJCWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBjbG9jazogJWRcbiIs IGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJcmVzZXRfY29udHJvbF9kZWFzc2VydChoZG1p LT5yc3QpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEzNzYsNiArMTM5NSwxMyBAQCBzdGF0aWMg aW50IHRlZ3JhX2hkbWlfZXhpdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQogCXN0cnVj dCB0ZWdyYV9oZG1pICpoZG1pID0gaG9zdDF4X2NsaWVudF90b19oZG1pKGNsaWVudCk7CiAJaW50 IGVycjsKIAorCXRlZ3JhX291dHB1dF9leGl0KCZoZG1pLT5vdXRwdXQpOworCisJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKGhkbWktPmNsayk7CisJcmVzZXRfY29udHJvbF9hc3NlcnQoaGRtaS0+cnN0 KTsKKworCXJlZ3VsYXRvcl9kaXNhYmxlKGhkbWktPnZkZCk7CisJcmVndWxhdG9yX2Rpc2FibGUo aGRtaS0+cGxsKTsKIAlyZWd1bGF0b3JfZGlzYWJsZShoZG1pLT5oZG1pKTsKIAogCWlmIChJU19F TkFCTEVEKENPTkZJR19ERUJVR19GUykpIHsKQEAgLTEzODUsMTggKzE0MTEsNiBAQCBzdGF0aWMg aW50IHRlZ3JhX2hkbWlfZXhpdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQogCQkJCWVy cik7CiAJfQogCi0JZXJyID0gdGVncmFfb3V0cHV0X2Rpc2FibGUoJmhkbWktPm91dHB1dCk7Ci0J aWYgKGVyciA8IDApIHsKLQkJZGV2X2VycihjbGllbnQtPmRldiwgIm91dHB1dCBmYWlsZWQgdG8g ZGlzYWJsZTogJWRcbiIsIGVycik7Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0JZXJyID0gdGVncmFf b3V0cHV0X2V4aXQoJmhkbWktPm91dHB1dCk7Ci0JaWYgKGVyciA8IDApIHsKLQkJZGV2X2Vycihj bGllbnQtPmRldiwgIm91dHB1dCBjbGVhbnVwIGZhaWxlZDogJWRcbiIsIGVycik7Ci0JCXJldHVy biBlcnI7Ci0JfQotCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9vdXRwdXQuYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9vdXRwdXQuYwppbmRleCA5 ZGQzYzM0ZDQ3ZmUuLjljZjg1MWJmNDE0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL291dHB1dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9vdXRwdXQuYwpAQCAtMjc2 LDExICsyNzYsNiBAQCBpbnQgdGVncmFfb3V0cHV0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRy bSwgc3RydWN0IHRlZ3JhX291dHB1dCAqb3V0cHV0KQogCWludCBjb25uZWN0b3IsIGVuY29kZXI7 CiAKIAlzd2l0Y2ggKG91dHB1dC0+dHlwZSkgewotCWNhc2UgVEVHUkFfT1VUUFVUX0hETUk6Ci0J CWNvbm5lY3RvciA9IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQTsKLQkJZW5jb2RlciA9IERSTV9N T0RFX0VOQ09ERVJfVE1EUzsKLQkJYnJlYWs7Ci0KIAljYXNlIFRFR1JBX09VVFBVVF9EU0k6CiAJ CWNvbm5lY3RvciA9IERSTV9NT0RFX0NPTk5FQ1RPUl9EU0k7CiAJCWVuY29kZXIgPSBEUk1fTU9E RV9FTkNPREVSX0RTSTsKLS0gCjIuMS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=