From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: [PATCH v3 4/6] drm: bridge: dw-hdmi: Switch to V4L bus format and encodings Date: Tue, 7 Mar 2017 17:42:22 +0100 Message-ID: <1488904944-14285-5-git-send-email-narmstrong@baylibre.com> References: <1488904944-14285-1-git-send-email-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x22c.google.com (mail-wr0-x22c.google.com [IPv6:2a00:1450:400c:c0c::22c]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE6C16E766 for ; Tue, 7 Mar 2017 16:42:38 +0000 (UTC) Received: by mail-wr0-x22c.google.com with SMTP id u48so5504471wrc.0 for ; Tue, 07 Mar 2017 08:42:38 -0800 (PST) In-Reply-To: <1488904944-14285-1-git-send-email-narmstrong@baylibre.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, laurent.pinchart+renesas@ideasonboard.com, architt@codeaurora.org, mchehab@kernel.org Cc: Jose.Abreu@synopsys.com, linux-doc@vger.kernel.org, Neil Armstrong , kieran.bingham@ideasonboard.com, linux-kernel@vger.kernel.org, hans.verkuil@cisco.com, sakari.ailus@linux.intel.com, linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org U29tZSBkaXNwbGF5IHBpcGVsaW5lcyBjYW4gb25seSBwcm92aWRlIG5vbi1SQkcgaW5wdXQgcGl4 ZWxzIHRvIHRoZSBIRE1JIFRYCkNvbnRyb2xsZXIsIHRoaXMgcGF0Y2ggdGFrZXMgdGhlIHBpeGVs IGZvcm1hdCBmcm9tIHRoZSBwbGF0X2RhdGEgaWYgcHJvdmlkZWQuCgpTaWduZWQtb2ZmLWJ5OiBO ZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMgfCAzMjIgKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tCiBpbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oICAgICAgICAgICAgICB8ICA2 MyArKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjkwIGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRt aS5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMKaW5kZXggMWVk OGJjMS4uMzQ4MzExYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5 cy9kdy1oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1p LmMKQEAgLTMwLDE3ICszMCwxNCBAQAogI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlcl9zbGF2ZS5o PgogI2luY2x1ZGUgPGRybS9icmlkZ2UvZHdfaGRtaS5oPgogCisjaW5jbHVkZSA8dWFwaS9saW51 eC9tZWRpYS1idXMtZm9ybWF0Lmg+CisjaW5jbHVkZSA8dWFwaS9saW51eC92aWRlb2RldjIuaD4K KwogI2luY2x1ZGUgImR3LWhkbWkuaCIKICNpbmNsdWRlICJkdy1oZG1pLWF1ZGlvLmgiCiAKICNk ZWZpbmUgSERNSV9FRElEX0xFTgkJNTEyCiAKLSNkZWZpbmUgUkdCCQkJMAotI2RlZmluZSBZQ0JD UjQ0NAkJMQotI2RlZmluZSBZQ0JDUjQyMl8xNkJJVFMJCTIKLSNkZWZpbmUgWUNCQ1I0MjJfOEJJ VFMJCTMKLSNkZWZpbmUgWFZZQ0M0NDQJCTQKLQogZW51bSBoZG1pX2RhdGFtYXAgewogCVJHQjQ0 NF84QiA9IDB4MDEsCiAJUkdCNDQ0XzEwQiA9IDB4MDMsCkBAIC05NCwxMCArOTEsMTAgQEAgc3Ry dWN0IGhkbWlfdm1vZGUgewogfTsKIAogc3RydWN0IGhkbWlfZGF0YV9pbmZvIHsKLQl1bnNpZ25l ZCBpbnQgZW5jX2luX2Zvcm1hdDsKLQl1bnNpZ25lZCBpbnQgZW5jX291dF9mb3JtYXQ7Ci0JdW5z aWduZWQgaW50IGVuY19jb2xvcl9kZXB0aDsKLQl1bnNpZ25lZCBpbnQgY29sb3JpbWV0cnk7CisJ dW5zaWduZWQgaW50IGVuY19pbl9idXNfZm9ybWF0OworCXVuc2lnbmVkIGludCBlbmNfb3V0X2J1 c19mb3JtYXQ7CisJdW5zaWduZWQgaW50IGVuY19pbl9lbmNvZGluZzsKKwl1bnNpZ25lZCBpbnQg ZW5jX291dF9lbmNvZGluZzsKIAl1bnNpZ25lZCBpbnQgcGl4X3JlcGV0X2ZhY3RvcjsKIAl1bnNp Z25lZCBpbnQgaGRjcF9lbmFibGU7CiAJc3RydWN0IGhkbWlfdm1vZGUgdmlkZW9fbW9kZTsKQEAg LTU1Nyw2ICs1NTQsOTIgQEAgdm9pZCBkd19oZG1pX2F1ZGlvX2Rpc2FibGUoc3RydWN0IGR3X2hk bWkgKmhkbWkpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChkd19oZG1pX2F1ZGlvX2Rpc2FibGUpOwog CitzdGF0aWMgYm9vbCBoZG1pX2J1c19mbXRfaXNfcmdiKHVuc2lnbmVkIGludCBidXNfZm9ybWF0 KQoreworCXN3aXRjaCAoYnVzX2Zvcm1hdCkgeworCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I4ODhf MVgyNDoKKwljYXNlIE1FRElBX0JVU19GTVRfUkdCMTAxMDEwXzFYMzA6CisJY2FzZSBNRURJQV9C VVNfRk1UX1JHQjEyMTIxMl8xWDM2OgorCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxNjE2MTZfMVg0 ODoKKwkJcmV0dXJuIHRydWU7CisKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQor CitzdGF0aWMgYm9vbCBoZG1pX2J1c19mbXRfaXNfeXV2NDQ0KHVuc2lnbmVkIGludCBidXNfZm9y bWF0KQoreworCXN3aXRjaCAoYnVzX2Zvcm1hdCkgeworCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVY4 XzFYMjQ6CisJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzA6CisJY2FzZSBNRURJQV9CVVNf Rk1UX1lVVjEyXzFYMzY6CisJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjE2XzFYNDg6CisJCXJldHVy biB0cnVlOworCisJZGVmYXVsdDoKKwkJcmV0dXJuIGZhbHNlOworCX0KK30KKworc3RhdGljIGJv b2wgaGRtaV9idXNfZm10X2lzX3l1djQyMih1bnNpZ25lZCBpbnQgYnVzX2Zvcm1hdCkKK3sKKwlz d2l0Y2ggKGJ1c19mb3JtYXQpIHsKKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWThfMVgxNjoKKwlj YXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA6CisJY2FzZSBNRURJQV9CVVNfRk1UX1VZVlkx Ml8xWDI0OgorCQlyZXR1cm4gdHJ1ZTsKKworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxzZTsKKwl9 Cit9CisKK3N0YXRpYyBib29sIGhkbWlfYnVzX2ZtdF9pc195dXY0MjAodW5zaWduZWQgaW50IGJ1 c19mb3JtYXQpCit7CisJc3dpdGNoIChidXNfZm9ybWF0KSB7CisJY2FzZSBNRURJQV9CVVNfRk1U X1VZVlk4XzFfMVgyNDoKKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFfMVgzMDoKKwljYXNl IE1FRElBX0JVU19GTVRfVVlWWTEyXzFfMVgzNjoKKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTE2 XzFfMVg0ODoKKwkJcmV0dXJuIHRydWU7CisKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJ fQorfQorCitzdGF0aWMgaW50IGhkbWlfYnVzX2ZtdF9jb2xvcl9kZXB0aCh1bnNpZ25lZCBpbnQg YnVzX2Zvcm1hdCkKK3sKKwlzd2l0Y2ggKGJ1c19mb3JtYXQpIHsKKwljYXNlIE1FRElBX0JVU19G TVRfUkdCODg4XzFYMjQ6CisJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNDoKKwljYXNlIE1F RElBX0JVU19GTVRfVVlWWThfMVgxNjoKKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWThfMV8xWDI0 OgorCQlyZXR1cm4gODsKKworCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMDEwMTBfMVgzMDoKKwlj YXNlIE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMDoKKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEw XzFYMjA6CisJY2FzZSBNRURJQV9CVVNfRk1UX1VZVlkxMF8xXzFYMzA6CisJCXJldHVybiAxMDsK KworCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMjEyMTJfMVgzNjoKKwljYXNlIE1FRElBX0JVU19G TVRfWVVWMTJfMVgzNjoKKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjQ6CisJY2FzZSBN RURJQV9CVVNfRk1UX1VZVlkxMl8xXzFYMzY6CisJCXJldHVybiAxMjsKKworCWNhc2UgTUVESUFf QlVTX0ZNVF9SR0IxNjE2MTZfMVg0ODoKKwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTZfMVg0ODoK KwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTE2XzFfMVg0ODoKKwkJcmV0dXJuIDE2OworCisJZGVm YXVsdDoKKwkJcmV0dXJuIDA7CisJfQorfQorCiAvKgogICogdGhpcyBzdWJtb2R1bGUgaXMgcmVz cG9uc2libGUgZm9yIHRoZSB2aWRlbyBkYXRhIHN5bmNocm9uaXphdGlvbi4KICAqIGZvciBleGFt cGxlLCBmb3IgUkdCIDQ6NDo0IGlucHV0LCB0aGUgZGF0YSBtYXAgaXMgZGVmaW5lZCBhcwpAQCAt NTY5LDM3ICs2NTIsNDUgQEAgc3RhdGljIHZvaWQgaGRtaV92aWRlb19zYW1wbGUoc3RydWN0IGR3 X2hkbWkgKmhkbWkpCiAJaW50IGNvbG9yX2Zvcm1hdCA9IDA7CiAJdTggdmFsOwogCi0JaWYgKGhk bWktPmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ID09IFJHQikgewotCQlpZiAoaGRtaS0+aGRtaV9k YXRhLmVuY19jb2xvcl9kZXB0aCA9PSA4KQotCQkJY29sb3JfZm9ybWF0ID0gMHgwMTsKLQkJZWxz ZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMCkKLQkJCWNvbG9yX2Zv cm1hdCA9IDB4MDM7Ci0JCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGgg PT0gMTIpCi0JCQljb2xvcl9mb3JtYXQgPSAweDA1OwotCQllbHNlIGlmIChoZG1pLT5oZG1pX2Rh dGEuZW5jX2NvbG9yX2RlcHRoID09IDE2KQotCQkJY29sb3JfZm9ybWF0ID0gMHgwNzsKLQkJZWxz ZQotCQkJcmV0dXJuOwotCX0gZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9mb3JtYXQg PT0gWUNCQ1I0NDQpIHsKLQkJaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0g OCkKLQkJCWNvbG9yX2Zvcm1hdCA9IDB4MDk7Ci0JCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5l bmNfY29sb3JfZGVwdGggPT0gMTApCi0JCQljb2xvcl9mb3JtYXQgPSAweDBCOwotCQllbHNlIGlm IChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID09IDEyKQotCQkJY29sb3JfZm9ybWF0 ID0gMHgwRDsKLQkJZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAx NikKLQkJCWNvbG9yX2Zvcm1hdCA9IDB4MEY7Ci0JCWVsc2UKLQkJCXJldHVybjsKLQl9IGVsc2Ug aWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ID09IFlDQkNSNDIyXzhCSVRTKSB7Ci0J CWlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID09IDgpCi0JCQljb2xvcl9mb3Jt YXQgPSAweDE2OwotCQllbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID09 IDEwKQotCQkJY29sb3JfZm9ybWF0ID0gMHgxNDsKLQkJZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRh LmVuY19jb2xvcl9kZXB0aCA9PSAxMikKLQkJCWNvbG9yX2Zvcm1hdCA9IDB4MTI7Ci0JCWVsc2UK LQkJCXJldHVybjsKKwlzd2l0Y2ggKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCkg eworCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDoKKwkJY29sb3JfZm9ybWF0ID0gMHgw MTsKKwkJYnJlYWs7CisJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjEwMTAxMF8xWDMwOgorCQljb2xv cl9mb3JtYXQgPSAweDAzOworCQlicmVhazsKKwljYXNlIE1FRElBX0JVU19GTVRfUkdCMTIxMjEy XzFYMzY6CisJCWNvbG9yX2Zvcm1hdCA9IDB4MDU7CisJCWJyZWFrOworCWNhc2UgTUVESUFfQlVT X0ZNVF9SR0IxNjE2MTZfMVg0ODoKKwkJY29sb3JfZm9ybWF0ID0gMHgwNzsKKwkJYnJlYWs7CisK KwljYXNlIE1FRElBX0JVU19GTVRfWVVWOF8xWDI0OgorCQljb2xvcl9mb3JtYXQgPSAweDA5Owor CQlicmVhazsKKwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMDoKKwkJY29sb3JfZm9ybWF0 ID0gMHgwQjsKKwkJYnJlYWs7CisJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjEyXzFYMzY6CisJCWNv bG9yX2Zvcm1hdCA9IDB4MEQ7CisJCWJyZWFrOworCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVYxNl8x WDQ4OgorCQljb2xvcl9mb3JtYXQgPSAweDBGOworCQlicmVhazsKKworCWNhc2UgTUVESUFfQlVT X0ZNVF9VWVZZOF8xWDE2OgorCQljb2xvcl9mb3JtYXQgPSAweDE2OworCQlicmVhazsKKwljYXNl IE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA6CisJCWNvbG9yX2Zvcm1hdCA9IDB4MTQ7CisJCWJy ZWFrOworCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVZZMTJfMVgyNDoKKwkJY29sb3JfZm9ybWF0ID0g MHgxMjsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlyZXR1cm47CiAJfQogCiAJdmFsID0gSERN SV9UWF9JTlZJRDBfSU5URVJOQUxfREVfR0VORVJBVE9SX0RJU0FCTEUgfApAQCAtNjIyLDI2ICs3 MTMsMzAgQEAgc3RhdGljIHZvaWQgaGRtaV92aWRlb19zYW1wbGUoc3RydWN0IGR3X2hkbWkgKmhk bWkpCiAKIHN0YXRpYyBpbnQgaXNfY29sb3Jfc3BhY2VfY29udmVyc2lvbihzdHJ1Y3QgZHdfaGRt aSAqaGRtaSkKIHsKLQlyZXR1cm4gaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9mb3JtYXQgIT0gaGRt aS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0OworCXJldHVybiBoZG1pLT5oZG1pX2RhdGEuZW5j X2luX2J1c19mb3JtYXQgIT0gaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdDsKIH0K IAogc3RhdGljIGludCBpc19jb2xvcl9zcGFjZV9kZWNpbWF0aW9uKHN0cnVjdCBkd19oZG1pICpo ZG1pKQogewotCWlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9mb3JtYXQgIT0gWUNCQ1I0MjJf OEJJVFMpCisJaWYgKCFoZG1pX2J1c19mbXRfaXNfeXV2NDIyKGhkbWktPmhkbWlfZGF0YS5lbmNf b3V0X2J1c19mb3JtYXQpKQogCQlyZXR1cm4gMDsKLQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19p bl9mb3JtYXQgPT0gUkdCIHx8Ci0JICAgIGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ID09 IFlDQkNSNDQ0KQorCisJaWYgKGhkbWlfYnVzX2ZtdF9pc19yZ2IoaGRtaS0+aGRtaV9kYXRhLmVu Y19pbl9idXNfZm9ybWF0KSB8fAorCSAgICBoZG1pX2J1c19mbXRfaXNfeXV2NDQ0KGhkbWktPmhk bWlfZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCkpCiAJCXJldHVybiAxOworCiAJcmV0dXJuIDA7CiB9 CiAKIHN0YXRpYyBpbnQgaXNfY29sb3Jfc3BhY2VfaW50ZXJwb2xhdGlvbihzdHJ1Y3QgZHdfaGRt aSAqaGRtaSkKIHsKLQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9mb3JtYXQgIT0gWUNCQ1I0 MjJfOEJJVFMpCisJaWYgKCFoZG1pX2J1c19mbXRfaXNfeXV2NDIyKGhkbWktPmhkbWlfZGF0YS5l bmNfaW5fYnVzX2Zvcm1hdCkpCiAJCXJldHVybiAwOwotCWlmIChoZG1pLT5oZG1pX2RhdGEuZW5j X291dF9mb3JtYXQgPT0gUkdCIHx8Ci0JICAgIGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2Zvcm1h dCA9PSBZQ0JDUjQ0NCkKKworCWlmIChoZG1pX2J1c19mbXRfaXNfcmdiKGhkbWktPmhkbWlfZGF0 YS5lbmNfb3V0X2J1c19mb3JtYXQpIHx8CisJICAgIGhkbWlfYnVzX2ZtdF9pc195dXY0NDQoaGRt aS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCkpCiAJCXJldHVybiAxOworCiAJcmV0dXJu IDA7CiB9CiAKQEAgLTY1MiwxNSArNzQ3LDE2IEBAIHN0YXRpYyB2b2lkIGR3X2hkbWlfdXBkYXRl X2NzY19jb2VmZnMoc3RydWN0IGR3X2hkbWkgKmhkbWkpCiAJdTMyIGNzY19zY2FsZSA9IDE7CiAK IAlpZiAoaXNfY29sb3Jfc3BhY2VfY29udmVyc2lvbihoZG1pKSkgewotCQlpZiAoaGRtaS0+aGRt aV9kYXRhLmVuY19vdXRfZm9ybWF0ID09IFJHQikgewotCQkJaWYgKGhkbWktPmhkbWlfZGF0YS5j b2xvcmltZXRyeSA9PQotCQkJCQlIRE1JX0NPTE9SSU1FVFJZX0lUVV82MDEpCisJCWlmIChoZG1p X2J1c19mbXRfaXNfcmdiKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKSB7CisJ CQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZW5jb2RpbmcgPT0KKwkJCQkJCVY0TDJfWUNC Q1JfRU5DXzYwMSkKIAkJCQljc2NfY29lZmYgPSAmY3NjX2NvZWZmX3JnYl9vdXRfZWl0dTYwMTsK IAkJCWVsc2UKIAkJCQljc2NfY29lZmYgPSAmY3NjX2NvZWZmX3JnYl9vdXRfZWl0dTcwOTsKLQkJ fSBlbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2Zvcm1hdCA9PSBSR0IpIHsKLQkJCWlm IChoZG1pLT5oZG1pX2RhdGEuY29sb3JpbWV0cnkgPT0KLQkJCQkJSERNSV9DT0xPUklNRVRSWV9J VFVfNjAxKQorCQl9IGVsc2UgaWYgKGhkbWlfYnVzX2ZtdF9pc19yZ2IoCisJCQkJCWhkbWktPmhk bWlfZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCkpIHsKKwkJCWlmIChoZG1pLT5oZG1pX2RhdGEuZW5j X291dF9lbmNvZGluZyA9PQorCQkJCQkJVjRMMl9ZQ0JDUl9FTkNfNjAxKQogCQkJCWNzY19jb2Vm ZiA9ICZjc2NfY29lZmZfcmdiX2luX2VpdHU2MDE7CiAJCQllbHNlCiAJCQkJY3NjX2NvZWZmID0g JmNzY19jb2VmZl9yZ2JfaW5fZWl0dTcwOTsKQEAgLTY5OCwxNiArNzk0LDIzIEBAIHN0YXRpYyB2 b2lkIGhkbWlfdmlkZW9fY3NjKHN0cnVjdCBkd19oZG1pICpoZG1pKQogCWVsc2UgaWYgKGlzX2Nv bG9yX3NwYWNlX2RlY2ltYXRpb24oaGRtaSkpCiAJCWRlY2ltYXRpb24gPSBIRE1JX0NTQ19DRkdf REVDTU9ERV9DSFJPTUFfSU5UX0ZPUk1VTEEzOwogCi0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNf Y29sb3JfZGVwdGggPT0gOCkKKwlzd2l0Y2ggKGhkbWlfYnVzX2ZtdF9jb2xvcl9kZXB0aChoZG1p LT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0KSkgeworCWNhc2UgODoKIAkJY29sb3JfZGVw dGggPSBIRE1JX0NTQ19TQ0FMRV9DU0NfQ09MT1JERV9QVEhfMjRCUFA7Ci0JZWxzZSBpZiAoaGRt aS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMCkKKwkJYnJlYWs7CisJY2FzZSAxMDoK IAkJY29sb3JfZGVwdGggPSBIRE1JX0NTQ19TQ0FMRV9DU0NfQ09MT1JERV9QVEhfMzBCUFA7Ci0J ZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMikKKwkJYnJlYWs7 CisJY2FzZSAxMjoKIAkJY29sb3JfZGVwdGggPSBIRE1JX0NTQ19TQ0FMRV9DU0NfQ09MT1JERV9Q VEhfMzZCUFA7Ci0JZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAx NikKKwkJYnJlYWs7CisJY2FzZSAxNjoKIAkJY29sb3JfZGVwdGggPSBIRE1JX0NTQ19TQ0FMRV9D U0NfQ09MT1JERV9QVEhfNDhCUFA7Ci0JZWxzZQorCQlicmVhazsKKworCWRlZmF1bHQ6CiAJCXJl dHVybjsKKwl9CiAKIAkvKiBDb25maWd1cmUgdGhlIENTQyByZWdpc3RlcnMgKi8KIAloZG1pX3dy aXRlYihoZG1pLCBpbnRlcnBvbGF0aW9uIHwgZGVjaW1hdGlvbiwgSERNSV9DU0NfQ0ZHKTsKQEAg LTczMCwzMiArODMzLDQzIEBAIHN0YXRpYyB2b2lkIGhkbWlfdmlkZW9fcGFja2V0aXplKHN0cnVj dCBkd19oZG1pICpoZG1pKQogCXN0cnVjdCBoZG1pX2RhdGFfaW5mbyAqaGRtaV9kYXRhID0gJmhk bWktPmhkbWlfZGF0YTsKIAl1OCB2YWwsIHZwX2NvbmY7CiAKLQlpZiAoaGRtaV9kYXRhLT5lbmNf b3V0X2Zvcm1hdCA9PSBSR0IgfHwKLQkgICAgaGRtaV9kYXRhLT5lbmNfb3V0X2Zvcm1hdCA9PSBZ Q0JDUjQ0NCkgewotCQlpZiAoIWhkbWlfZGF0YS0+ZW5jX2NvbG9yX2RlcHRoKSB7Ci0JCQlvdXRw dXRfc2VsZWN0ID0gSERNSV9WUF9DT05GX09VVFBVVF9TRUxFQ1RPUl9CWVBBU1M7Ci0JCX0gZWxz ZSBpZiAoaGRtaV9kYXRhLT5lbmNfY29sb3JfZGVwdGggPT0gOCkgeworCWlmIChoZG1pX2J1c19m bXRfaXNfcmdiKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpIHx8CisJICAgIGhk bWlfYnVzX2ZtdF9pc195dXY0NDQoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCkp IHsKKwkJc3dpdGNoIChoZG1pX2J1c19mbXRfY29sb3JfZGVwdGgoCisJCQkJCWhkbWktPmhkbWlf ZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKSB7CisJCWNhc2UgODoKIAkJCWNvbG9yX2RlcHRoID0g NDsKIAkJCW91dHB1dF9zZWxlY3QgPSBIRE1JX1ZQX0NPTkZfT1VUUFVUX1NFTEVDVE9SX0JZUEFT UzsKLQkJfSBlbHNlIGlmIChoZG1pX2RhdGEtPmVuY19jb2xvcl9kZXB0aCA9PSAxMCkgeworCQkJ YnJlYWs7CisJCWNhc2UgMTA6CiAJCQljb2xvcl9kZXB0aCA9IDU7Ci0JCX0gZWxzZSBpZiAoaGRt aV9kYXRhLT5lbmNfY29sb3JfZGVwdGggPT0gMTIpIHsKKwkJCWJyZWFrOworCQljYXNlIDEyOgog CQkJY29sb3JfZGVwdGggPSA2OwotCQl9IGVsc2UgaWYgKGhkbWlfZGF0YS0+ZW5jX2NvbG9yX2Rl cHRoID09IDE2KSB7CisJCQlicmVhazsKKwkJY2FzZSAxNjoKIAkJCWNvbG9yX2RlcHRoID0gNzsK LQkJfSBlbHNlIHsKLQkJCXJldHVybjsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJb3V0cHV0 X3NlbGVjdCA9IEhETUlfVlBfQ09ORl9PVVRQVVRfU0VMRUNUT1JfQllQQVNTOwogCQl9Ci0JfSBl bHNlIGlmIChoZG1pX2RhdGEtPmVuY19vdXRfZm9ybWF0ID09IFlDQkNSNDIyXzhCSVRTKSB7Ci0J CWlmICghaGRtaV9kYXRhLT5lbmNfY29sb3JfZGVwdGggfHwKLQkJICAgIGhkbWlfZGF0YS0+ZW5j X2NvbG9yX2RlcHRoID09IDgpCisJfSBlbHNlIGlmIChoZG1pX2J1c19mbXRfaXNfeXV2NDIyKGhk bWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKSB7CisJCXN3aXRjaCAoaGRtaV9idXNf Zm10X2NvbG9yX2RlcHRoKAorCQkJCQloZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0 KSkgeworCQljYXNlIDA6CisJCWNhc2UgODoKIAkJCXJlbWFwX3NpemUgPSBIRE1JX1ZQX1JFTUFQ X1lDQzQyMl8xNmJpdDsKLQkJZWxzZSBpZiAoaGRtaV9kYXRhLT5lbmNfY29sb3JfZGVwdGggPT0g MTApCisJCQlicmVhazsKKwkJY2FzZSAxMDoKIAkJCXJlbWFwX3NpemUgPSBIRE1JX1ZQX1JFTUFQ X1lDQzQyMl8yMGJpdDsKLQkJZWxzZSBpZiAoaGRtaV9kYXRhLT5lbmNfY29sb3JfZGVwdGggPT0g MTIpCisJCQlicmVhazsKKwkJY2FzZSAxMjoKIAkJCXJlbWFwX3NpemUgPSBIRE1JX1ZQX1JFTUFQ X1lDQzQyMl8yNGJpdDsKLQkJZWxzZQorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKIAkJCXJldHVy bjsKKwkJfQogCQlvdXRwdXRfc2VsZWN0ID0gSERNSV9WUF9DT05GX09VVFBVVF9TRUxFQ1RPUl9Z Q0M0MjI7CiAJfSBlbHNlIHsKIAkJcmV0dXJuOwpAQCAtMTEzOCwyOCArMTI1MiwzNSBAQCBzdGF0 aWMgdm9pZCBoZG1pX2NvbmZpZ19BVkkoc3RydWN0IGR3X2hkbWkgKmhkbWksIHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlKQogCS8qIEluaXRpYWxpc2UgaW5mbyBmcmFtZSBmcm9tIERSTSBt b2RlICovCiAJZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9kZSgmZnJhbWUs IG1vZGUpOwogCi0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2Zvcm1hdCA9PSBZQ0JDUjQ0 NCkKKwlpZiAoaGRtaV9idXNfZm10X2lzX3l1djQ0NChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9i dXNfZm9ybWF0KSkKIAkJZnJhbWUuY29sb3JzcGFjZSA9IEhETUlfQ09MT1JTUEFDRV9ZVVY0NDQ7 Ci0JZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0ID09IFlDQkNSNDIyXzhC SVRTKQorCWVsc2UgaWYgKGhkbWlfYnVzX2ZtdF9pc195dXY0MjIoaGRtaS0+aGRtaV9kYXRhLmVu Y19vdXRfYnVzX2Zvcm1hdCkpCiAJCWZyYW1lLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0Vf WVVWNDIyOwogCWVsc2UKIAkJZnJhbWUuY29sb3JzcGFjZSA9IEhETUlfQ09MT1JTUEFDRV9SR0I7 CiAKIAkvKiBTZXQgdXAgY29sb3JpbWV0cnkgKi8KLQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19v dXRfZm9ybWF0ID09IFhWWUNDNDQ0KSB7Ci0JCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xP UklNRVRSWV9FWFRFTkRFRDsKLQkJaWYgKGhkbWktPmhkbWlfZGF0YS5jb2xvcmltZXRyeSA9PSBI RE1JX0NPTE9SSU1FVFJZX0lUVV82MDEpCi0JCQlmcmFtZS5leHRlbmRlZF9jb2xvcmltZXRyeSA9 CisJc3dpdGNoIChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9lbmNvZGluZykgeworCWNhc2UgVjRM Ml9ZQ0JDUl9FTkNfNjAxOgorCQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9lbmNvZGluZyA9 PSBWNEwyX1lDQkNSX0VOQ19YVjYwMSkKKwkJCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xP UklNRVRSWV9FWFRFTkRFRDsKKwkJZWxzZQorCQkJZnJhbWUuY29sb3JpbWV0cnkgPSBIRE1JX0NP TE9SSU1FVFJZX0lUVV82MDE7CisJCWZyYW1lLmV4dGVuZGVkX2NvbG9yaW1ldHJ5ID0KIAkJCQlI RE1JX0VYVEVOREVEX0NPTE9SSU1FVFJZX1hWX1lDQ182MDE7Ci0JCWVsc2UgLypoZG1pLT5oZG1p X2RhdGEuY29sb3JpbWV0cnkgPT0gSERNSV9DT0xPUklNRVRSWV9JVFVfNzA5Ki8KLQkJCWZyYW1l LmV4dGVuZGVkX2NvbG9yaW1ldHJ5ID0KKwljYXNlIFY0TDJfWUNCQ1JfRU5DXzcwOToKKwkJaWYg KGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZW5jb2RpbmcgPT0gVjRMMl9ZQ0JDUl9FTkNfWFY3MDkp CisJCQlmcmFtZS5jb2xvcmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllfRVhURU5ERUQ7CisJCWVs c2UKKwkJCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9JVFVfNzA5OworCQlm cmFtZS5leHRlbmRlZF9jb2xvcmltZXRyeSA9CiAJCQkJSERNSV9FWFRFTkRFRF9DT0xPUklNRVRS WV9YVl9ZQ0NfNzA5OwotCX0gZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0 ICE9IFJHQikgewotCQlmcmFtZS5jb2xvcmltZXRyeSA9IGhkbWktPmhkbWlfZGF0YS5jb2xvcmlt ZXRyeTsKLQkJZnJhbWUuZXh0ZW5kZWRfY29sb3JpbWV0cnkgPSBIRE1JX0VYVEVOREVEX0NPTE9S SU1FVFJZX1hWX1lDQ182MDE7Ci0JfSBlbHNlIHsgLyogQ2FycmllcyBubyBkYXRhICovCi0JCWZy YW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9OT05FOwotCQlmcmFtZS5leHRlbmRl ZF9jb2xvcmltZXRyeSA9IEhETUlfRVhURU5ERURfQ09MT1JJTUVUUllfWFZfWUNDXzYwMTsKKwkJ YnJlYWs7CisJZGVmYXVsdDogLyogQ2FycmllcyBubyBkYXRhICovCisJCWZyYW1lLmNvbG9yaW1l dHJ5ID0gSERNSV9DT0xPUklNRVRSWV9JVFVfNjAxOworCQlmcmFtZS5leHRlbmRlZF9jb2xvcmlt ZXRyeSA9CisJCQkJSERNSV9FWFRFTkRFRF9DT0xPUklNRVRSWV9YVl9ZQ0NfNjAxOworCQlicmVh azsKIAl9CiAKIAlmcmFtZS5zY2FuX21vZGUgPSBIRE1JX1NDQU5fTU9ERV9OT05FOwpAQCAtMTQz NiwxOSArMTU1NywzMCBAQCBzdGF0aWMgaW50IGR3X2hkbWlfc2V0dXAoc3RydWN0IGR3X2hkbWkg KmhkbWksIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQogCSAgICAoaGRtaS0+dmljID09 IDIxKSB8fCAoaGRtaS0+dmljID09IDIyKSB8fAogCSAgICAoaGRtaS0+dmljID09IDIpIHx8ICho ZG1pLT52aWMgPT0gMykgfHwKIAkgICAgKGhkbWktPnZpYyA9PSAxNykgfHwgKGhkbWktPnZpYyA9 PSAxOCkpCi0JCWhkbWktPmhkbWlfZGF0YS5jb2xvcmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllf SVRVXzYwMTsKKwkJaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZW5jb2RpbmcgPSBWNEwyX1lDQkNS X0VOQ182MDE7CiAJZWxzZQotCQloZG1pLT5oZG1pX2RhdGEuY29sb3JpbWV0cnkgPSBIRE1JX0NP TE9SSU1FVFJZX0lUVV83MDk7CisJCWhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2VuY29kaW5nID0g VjRMMl9ZQ0JDUl9FTkNfNzA5OwogCiAJaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVs cmVwZXRpdGlvbm91dHB1dCA9IDA7CiAJaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVs cmVwZXRpdGlvbmlucHV0ID0gMDsKIAotCS8qIFRPRE86IEdldCBpbnB1dCBmb3JtYXQgZnJvbSBJ UFUgKHZpYSBGQiBkcml2ZXIgaW50ZXJmYWNlKSAqLwotCWhkbWktPmhkbWlfZGF0YS5lbmNfaW5f Zm9ybWF0ID0gUkdCOworCS8qIFRPRklYOiBHZXQgaW5wdXQgZm9ybWF0IGZyb20gcGxhdCBkYXRh IG9yIGZhbGxiYWNrIHRvIFJHQjg4OCAqLworCWlmIChoZG1pLT5wbGF0X2RhdGEtPmlucHV0X2J1 c19mb3JtYXQgPj0gMCkKKwkJaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9idXNfZm9ybWF0ID0KKwkJ CWhkbWktPnBsYXRfZGF0YS0+aW5wdXRfYnVzX2Zvcm1hdDsKKwllbHNlCisJCWhkbWktPmhkbWlf ZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7CisKKwkv KiBUT0ZJWDogR2V0IGlucHV0IGVuY29kaW5nIGZyb20gcGxhdCBkYXRhIG9yIGZhbGxiYWNrIHRv IG5vbmUgKi8KKwlpZiAoaGRtaS0+cGxhdF9kYXRhLT5pbnB1dF9idXNfZW5jb2RpbmcgPj0gMCkK KwkJaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9lbmNvZGluZyA9CisJCQloZG1pLT5wbGF0X2RhdGEt PmlucHV0X2J1c19lbmNvZGluZzsKKwllbHNlCisJCWhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZW5j b2RpbmcgPSBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUOwogCi0JaGRtaS0+aGRtaV9kYXRhLmVuY19v dXRfZm9ybWF0ID0gUkdCOworCS8qIFRPRklYOiBEZWZhdWx0IHRvIFJHQjg4OCBvdXRwdXQgZm9y bWF0ICovCisJaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19G TVRfUkdCODg4XzFYMjQ7CiAKLQloZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID0gODsK IAloZG1pLT5oZG1pX2RhdGEucGl4X3JlcGV0X2ZhY3RvciA9IDA7CiAJaGRtaS0+aGRtaV9kYXRh LmhkY3BfZW5hYmxlID0gMDsKIAloZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZS5tZGF0YWVuYWJs ZXBvbGFyaXR5ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1p LmggYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oCmluZGV4IGJjY2VlZTguLmMzYjhkYTkg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmgKKysrIGIvaW5jbHVkZS9k cm0vYnJpZGdlL2R3X2hkbWkuaApAQCAtMTQsNiArMTQsNjcgQEAKIAogc3RydWN0IGR3X2hkbWk7 CiAKKy8qKgorICogRE9DOiBTdXBwb3J0ZWQgaW5wdXQgZm9ybWF0cyBhbmQgZW5jb2RpbmdzCisg KgorICogRGVwZW5kaW5nIG9uIHRoZSBIYXJkd2FyZSBjb25maWd1cmF0aW9uIG9mIHRoZSBDb250 cm9sbGVyIElQLCBpdCBzdXBwb3J0cworICogYSBzdWJzZXQgb2YgdGhlIGZvbGxvd2luZyBpbnB1 dCBmb3JtYXRzIGFuZCBlbmNvZGluZ3Mgb24gaXQncyBpbnRlcm5hbAorICogNDhiaXQgYnVzLgor ICoKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIAorICogKyBGb3JtYXQgTmFt ZSAgICAgICAgICArIEZvcm1hdCBDb2RlICAgICAgICAgICAgICAgICAgICAgKyBFbmNvZGluZ3Mg ICAgICAgICAgICAgICAgICAgICsKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r CisgKiArIFJHQiA0OjQ6NCA4Yml0ICAgICAgICsgYGBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0 YGAgICArIGBgVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVGBgICAgKworICogKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKKyAqICsgUkdCIDQ6NDo0IDEwYml0cyAgICAgKyBgYE1FRElBX0JV U19GTVRfUkdCMTAxMDEwXzFYMzBgYCsgYGBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUYGAgICArCisg KiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogKyBSR0IgNDo0OjQgMTJiaXRz ICAgICArIGBgTUVESUFfQlVTX0ZNVF9SR0IxMjEyMTJfMVgzNmBgKyBgYFY0TDJfWUNCQ1JfRU5D X0RFRkFVTFRgYCAgICsKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAr IFJHQiA0OjQ6NCAxNmJpdHMgICAgICsgYGBNRURJQV9CVVNfRk1UX1JHQjE2MTYxNl8xWDQ4YGAr IGBgVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVGBgICAgKworICogKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKKyAqICsgWUNiQ3IgNDo0OjQgOGJpdCAgICAgKyBgYE1FRElBX0JVU19GTVRf WVVWOF8xWDI0YGAgICAgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCisgKiArICAg ICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG9y IGBgVjRMMl9ZQ0JDUl9FTkNfNzA5YGAgICAgKworICogKyAgICAgICAgICAgICAgICAgICAgICAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvciBgYFY0TDJfWUNCQ1JfRU5DX1hW NjAxYGAgICsKKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjcwOWBgICArCisgKiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogKyBZQ2JDciA0OjQ6NCAxMGJpdHMgICArIGBg TUVESUFfQlVTX0ZNVF9ZVVYxMF8xWDMwYGAgICAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAg ICAgICsKKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICArCisgKiArICAgICAgICAg ICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG9yIGBgVjRM Ml9ZQ0JDUl9FTkNfWFY2MDFgYCAgKworICogKyAgICAgICAgICAgICAgICAgICAgICArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvciBgYFY0TDJfWUNCQ1JfRU5DX1hWNzA5YGAg ICsKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiArIFlDYkNyIDQ6NDo0 IDEyYml0cyAgICsgYGBNRURJQV9CVVNfRk1UX1lVVjEyXzFYMzZgYCAgICArIGBgVjRMMl9ZQ0JD Ul9FTkNfNjAxYGAgICAgICAgKworICogKyAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKyBvciBgYFY0TDJfWUNCQ1JfRU5DXzcwOWBgICAgICsK KyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjYwMWBgICArCisgKiArICAgICAgICAgICAgICAg ICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG9yIGBgVjRMMl9ZQ0JD Ul9FTkNfWFY3MDlgYCAgKworICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAq ICsgWUNiQ3IgNDo0OjQgMTZiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfWVVWMTZfMVg0OGBgICAg ICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCisgKiArICAgICAgICAgICAgICAgICAg ICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG9yIGBgVjRMMl9ZQ0JDUl9F TkNfNzA5YGAgICAgKworICogKyAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKyBvciBgYFY0TDJfWUNCQ1JfRU5DX1hWNjAxYGAgICsKKyAqICsg ICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg b3IgYGBWNEwyX1lDQkNSX0VOQ19YVjcwOWBgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKworICogKyBZQ2JDciA0OjI6MiA4Yml0ICAgICArIGBgTUVESUFfQlVTX0ZNVF9V WVZZOF8xWDE2YGAgICAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKKyAqICsgICAg ICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3Ig YGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKworICogKyBZQ2JDciA0OjI6MiAxMGJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZ MTBfMVgyMGBgICAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKKyAqICsgICAgICAg ICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBW NEwyX1lDQkNSX0VOQ183MDlgYCAgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKworICogKyBZQ2JDciA0OjI6MiAxMmJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTJf MVgyNGBgICAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKKyAqICsgICAgICAgICAg ICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwy X1lDQkNSX0VOQ183MDlgYCAgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t KworICogKyBZQ2JDciA0OjI6MCA4Yml0ICAgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZOF8xXzFY MjRgYCAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKKyAqICsgICAgICAgICAgICAg ICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lD QkNSX0VOQ183MDlgYCAgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwor ICogKyBZQ2JDciA0OjI6MCAxMGJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTBfMV8xWDMw YGAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKKyAqICsgICAgICAgICAgICAgICAg ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNS X0VOQ183MDlgYCAgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICog KyBZQ2JDciA0OjI6MCAxMmJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTJfMV8xWDM2YGAg KyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKKyAqICsgICAgICAgICAgICAgICAgICAg ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VO Q183MDlgYCAgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogKyBZ Q2JDciA0OjI6MCAxNmJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTZfMV8xWDQ4YGAgKyBg YFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKKyAqICsgICAgICAgICAgICAgICAgICAgICAg KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183 MDlgYCAgICArCisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICovCisKIGVu dW0gewogCURXX0hETUlfUkVTXzgsCiAJRFdfSERNSV9SRVNfMTAsCkBAIC02Miw2ICsxMjMsOCBA QCBzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgewogCXN0cnVjdCByZWdtYXAgKnJlZ207CiAJZW51 bSBkcm1fbW9kZV9zdGF0dXMgKCptb2RlX3ZhbGlkKShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCQkJCQkgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7CisJdW5zaWdu ZWQgbG9uZyBpbnB1dF9idXNfZm9ybWF0OworCXVuc2lnbmVkIGxvbmcgaW5wdXRfYnVzX2VuY29k aW5nOwogCiAJLyogVmVuZG9yIFBIWSBzdXBwb3J0ICovCiAJY29uc3Qgc3RydWN0IGR3X2hkbWlf cGh5X29wcyAqcGh5X29wczsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK