From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH 13/18] drm/i915: Precompute HDMI infoframes Date: Thu, 20 Sep 2018 21:51:40 +0300 Message-ID: <20180920185145.1912-14-ville.syrjala@linux.intel.com> References: <20180920185145.1912-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180920185145.1912-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClN0 b3JlIHRoZSBpbmZvZnJhbWVzIGluIHRoZSBjcnRjIHN0YXRlIGFuZCBwcmVjb21wdXRlIHRoZW0g aW4KLmNvbXB1dGVfY29uZmlnKCkuIFdoaWxlIHByZWNvbXB1dGluZyB3ZSdsbCBhbHNvIGZpbGwg b3V0IHRoZQppbmZvcmFtZXMuZW5hYmxlIGJpdG1hc2sgYXBwcm9wcmlhdGVseS4KClNpZ25lZC1v ZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZG1pLmMgfCAyNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDMg ZmlsZXMgY2hhbmdlZCwgMTg3IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggMTlmZWY4OGU2ODBlLi41ZjNiZDUzNmQyNjEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jCkBAIC0zMzkxLDYgKzMzOTEsNyBAQCB2b2lkIGludGVsX2Rk aV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQlpbnRlbF9kaWdf cG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7CiAKIAkJcGlwZV9jb25maWct PmluZm9mcmFtZXMuZW5hYmxlIHw9CisJCQlpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUoSERN SV9QQUNLRVRfVFlQRV9OVUxMKSB8CiAJCQlpbnRlbF9oZG1pX2luZm9mcmFtZXNfZW5hYmxlZChl bmNvZGVyLCBwaXBlX2NvbmZpZyk7CiAKIAkJaWYgKHBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLmVu YWJsZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNTBjMGMwNDllZTE1Li4zNTc2MjRh NmJmZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC04OTUsNiArODk1LDEwIEBAIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKIAogCXN0cnVjdCB7CiAJCXUzMiBlbmFibGU7CisJCXUz MiBnY3A7CisJCXVuaW9uIGhkbWlfaW5mb2ZyYW1lIGF2aTsKKwkJdW5pb24gaGRtaV9pbmZvZnJh bWUgc3BkOworCQl1bmlvbiBoZG1pX2luZm9mcmFtZSBoZG1pOwogCX0gaW5mb2ZyYW1lczsKIAog CS8qIEhETUkgc2NyYW1ibGluZyBzdGF0dXMgKi8KQEAgLTE4NjIsNiArMTg2Niw3IEBAIHZvaWQg aW50ZWxfZHBfZHVhbF9tb2RlX3NldF90bWRzX291dHB1dChzdHJ1Y3QgaW50ZWxfaGRtaSAqaGRt aSwgYm9vbCBlbmFibGUpOwogdm9pZCBpbnRlbF9pbmZvZnJhbWVfaW5pdChzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7CiB1MzIgaW50ZWxfaGRtaV9pbmZvZnJhbWVz X2VuYWJsZWQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkJICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cit1MzIgaW50ZWxfaGRtaV9pbmZvZnJh bWVfZW5hYmxlKHVuc2lnbmVkIGludCB0eXBlKTsKIAogCiAvKiBpbnRlbF9sdmRzLmMgKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkbWkuYwppbmRleCA5OGE0NDA4NDMyNGMuLjQ5MTAwMWZjMGZhZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwpAQCAtNDQ2LDYgKzQ0NiwxOCBAQCBzdGF0aWMg Y29uc3QgdTggaW5mb2ZyYW1lX3R5cGVfdG9faWR4W10gPSB7CiAJSERNSV9JTkZPRlJBTUVfVFlQ RV9WRU5ET1IsCiB9OwogCit1MzIgaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKHVuc2lnbmVk IGludCB0eXBlKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5m b2ZyYW1lX3R5cGVfdG9faWR4KTsgaSsrKSB7CisJCWlmIChpbmZvZnJhbWVfdHlwZV90b19pZHhb aV0gPT0gdHlwZSkKKwkJCXJldHVybiBCSVQoaSk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHUz MiBpbnRlbF9oZG1pX2luZm9mcmFtZXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKIAkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQog ewpAQCAtNDkxLDE1ICs1MDMsMjMgQEAgdTMyIGludGVsX2hkbWlfaW5mb2ZyYW1lc19lbmFibGVk KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogICovCiBzdGF0aWMgdm9pZCBpbnRlbF93 cml0ZV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkJICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCQkgIHVuaW9uIGhkbWlf aW5mb2ZyYW1lICpmcmFtZSkKKwkJCQkgIGVudW0gaGRtaV9pbmZvZnJhbWVfdHlwZSB0eXBlLAor CQkJCSAgY29uc3QgdW5pb24gaGRtaV9pbmZvZnJhbWUgKmZyYW1lKQogewogCXN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVy LT5iYXNlKTsKIAl1OCBidWZmZXJbVklERU9fRElQX0RBVEFfU0laRV07CiAJc3NpemVfdCBsZW47 CiAKKwlpZiAoKGNydGNfc3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlICYKKwkgICAgIGludGVsX2hk bWlfaW5mb2ZyYW1lX2VuYWJsZSh0eXBlKSkgPT0gMCkKKwkJcmV0dXJuOworCisJaWYgKFdBUk5f T04oZnJhbWUtPmFueS50eXBlICE9IHR5cGUpKQorCQlyZXR1cm47CisKIAkvKiBzZWUgY29tbWVu dCBhYm92ZSBmb3IgdGhlIHJlYXNvbiBmb3IgdGhpcyBvZmZzZXQgKi8KLQlsZW4gPSBoZG1pX2lu Zm9mcmFtZV9wYWNrKGZyYW1lLCBidWZmZXIgKyAxLCBzaXplb2YoYnVmZmVyKSAtIDEpOwotCWlm IChsZW4gPCAwKQorCWxlbiA9IGhkbWlfaW5mb2ZyYW1lX3BhY2tfb25seShmcmFtZSwgYnVmZmVy ICsgMSwgc2l6ZW9mKGJ1ZmZlcikgLSAxKTsKKwlpZiAoV0FSTl9PTihsZW4gPCAwKSkKIAkJcmV0 dXJuOwogCiAJLyogSW5zZXJ0IHRoZSAnaG9sZScgKHNlZSBiaWcgY29tbWVudCBhYm92ZSkgYXQg cG9zaXRpb24gMyAqLwpAQCAtNTA3LDg1ICs1MjcsMTExIEBAIHN0YXRpYyB2b2lkIGludGVsX3dy aXRlX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlidWZmZXJbM10g PSAwOwogCWxlbisrOwogCi0JaW50ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZShlbmNvZGVy LAotCQkJCQljcnRjX3N0YXRlLAotCQkJCQlmcmFtZS0+YW55LnR5cGUsIGJ1ZmZlciwgbGVuKTsK KwlpbnRlbF9kaWdfcG9ydC0+d3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIHR5 cGUsIGJ1ZmZlciwgbGVuKTsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9zZXRfYXZpX2lu Zm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCQkJIGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJCQkgY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCitzdGF0aWMgYm9vbAoraW50ZWxfaGRtaV9jb21w dXRlX2F2aV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkJIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRt aSA9IGVuY190b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKKwlzdHJ1Y3QgaGRtaV9hdmlf aW5mb2ZyYW1lICpmcmFtZSA9ICZjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmF2aS5hdmk7CisJYm9v bCBpc19oZG1pMl9zaW5rID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRt aS5zY2RjLnN1cHBvcnRlZDsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9CiAJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Ci0Jc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9oZG1pLT5hdHRhY2hlZF9jb25uZWN0b3It PmJhc2U7Ci0JYm9vbCBpc19oZG1pMl9zaW5rID0gY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRt aS5zY2RjLnN1cHBvcnRlZDsKLQl1bmlvbiBoZG1pX2luZm9mcmFtZSBmcmFtZTsKIAlpbnQgcmV0 OwogCi0JcmV0ID0gZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9kZSgmZnJh bWUuYXZpLAorCWlmICghY3J0Y19zdGF0ZS0+aGFzX2luZm9mcmFtZSkKKwkJcmV0dXJuIHRydWU7 CisKKwljcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmVuYWJsZSB8PQorCQlpbnRlbF9oZG1pX2luZm9m cmFtZV9lbmFibGUoSERNSV9JTkZPRlJBTUVfVFlQRV9BVkkpOworCisJcmV0ID0gZHJtX2hkbWlf YXZpX2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9kZShmcmFtZSwKIAkJCQkJCSAgICAgICBhZGp1 c3RlZF9tb2RlLAogCQkJCQkJICAgICAgIGlzX2hkbWkyX3NpbmspOwotCWlmIChyZXQgPCAwKSB7 Ci0JCURSTV9FUlJPUigiY291bGRuJ3QgZmlsbCBBVkkgaW5mb2ZyYW1lXG4iKTsKLQkJcmV0dXJu OwotCX0KKwlpZiAocmV0KQorCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoY3J0Y19zdGF0ZS0+eWNi Y3I0MjApCi0JCWZyYW1lLmF2aS5jb2xvcnNwYWNlID0gSERNSV9DT0xPUlNQQUNFX1lVVjQyMDsK KwkJZnJhbWUtPmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0VfWVVWNDIwOwogCWVsc2UKLQkJ ZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0VfUkdCOworCQlmcmFtZS0+Y29s b3JzcGFjZSA9IEhETUlfQ09MT1JTUEFDRV9SR0I7CiAKLQlkcm1faGRtaV9hdmlfaW5mb2ZyYW1l X3F1YW50X3JhbmdlKCZmcmFtZS5hdmksIGFkanVzdGVkX21vZGUsCisJZHJtX2hkbWlfYXZpX2lu Zm9mcmFtZV9xdWFudF9yYW5nZShmcmFtZSwgYWRqdXN0ZWRfbW9kZSwKIAkJCQkJICAgY3J0Y19z dGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZSA/CiAJCQkJCSAgIEhETUlfUVVBTlRJWkFUSU9OX1JB TkdFX0xJTUlURUQgOgogCQkJCQkgICBIRE1JX1FVQU5USVpBVElPTl9SQU5HRV9GVUxMLAogCQkJ CQkgICBpbnRlbF9oZG1pLT5yZ2JfcXVhbnRfcmFuZ2Vfc2VsZWN0YWJsZSwKIAkJCQkJICAgaXNf aGRtaTJfc2luayk7CiAKLQlkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2NvbnRlbnRfdHlwZSgmZnJh bWUuYXZpLAotCQkJCQkgICAgY29ubl9zdGF0ZSk7CisJZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9j b250ZW50X3R5cGUoZnJhbWUsIGNvbm5fc3RhdGUpOwogCiAJLyogVE9ETzogaGFuZGxlIHBpeGVs IHJlcGV0aXRpb24gZm9yIFlDQkNSNDIwIG91dHB1dHMgKi8KLQlpbnRlbF93cml0ZV9pbmZvZnJh bWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKLQkJCSAgICAgICZmcmFtZSk7CisKKwlyZXQgPSBoZG1p X2F2aV9pbmZvZnJhbWVfY2hlY2soZnJhbWUpOworCWlmIChXQVJOX09OKHJldCkpCisJCXJldHVy biBmYWxzZTsKKworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9oZG1pX3Nl dF9zcGRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJCQkgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCitzdGF0aWMgYm9vbAoraW50 ZWxfaGRtaV9jb21wdXRlX3NwZF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKLQl1bmlvbiBoZG1pX2luZm9m cmFtZSBmcmFtZTsKKwlzdHJ1Y3QgaGRtaV9zcGRfaW5mb2ZyYW1lICpmcmFtZSA9ICZjcnRjX3N0 YXRlLT5pbmZvZnJhbWVzLnNwZC5zcGQ7CiAJaW50IHJldDsKIAotCXJldCA9IGhkbWlfc3BkX2lu Zm9mcmFtZV9pbml0KCZmcmFtZS5zcGQsICJJbnRlbCIsICJJbnRlZ3JhdGVkIGdmeCIpOwotCWlm IChyZXQgPCAwKSB7Ci0JCURSTV9FUlJPUigiY291bGRuJ3QgZmlsbCBTUEQgaW5mb2ZyYW1lXG4i KTsKLQkJcmV0dXJuOwotCX0KKwlpZiAoIWNydGNfc3RhdGUtPmhhc19pbmZvZnJhbWUpCisJCXJl dHVybiB0cnVlOwogCi0JZnJhbWUuc3BkLnNkaSA9IEhETUlfU1BEX1NESV9QQzsKKwljcnRjX3N0 YXRlLT5pbmZvZnJhbWVzLmVuYWJsZSB8PQorCQlpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUo SERNSV9JTkZPRlJBTUVfVFlQRV9TUEQpOwogCi0JaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29k ZXIsIGNydGNfc3RhdGUsCi0JCQkgICAgICAmZnJhbWUpOworCXJldCA9IGhkbWlfc3BkX2luZm9m cmFtZV9pbml0KGZyYW1lLCAiSW50ZWwiLCAiSW50ZWdyYXRlZCBnZngiKTsKKwlpZiAoV0FSTl9P TihyZXQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlmcmFtZS0+c2RpID0gSERNSV9TUERfU0RJX1BD OworCisJcmV0ID0gaGRtaV9zcGRfaW5mb2ZyYW1lX2NoZWNrKGZyYW1lKTsKKwlpZiAoV0FSTl9P TihyZXQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv aWQKLWludGVsX2hkbWlfc2V0X2hkbWlfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAotCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCi0JCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSkKLXsKLQl1bmlvbiBoZG1pX2luZm9mcmFtZSBmcmFtZTsKK3N0YXRpYyBib29sCitpbnRlbF9o ZG1pX2NvbXB1dGVfaGRtaV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CisJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgIHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQoreworCXN0cnVjdCBoZG1pX3ZlbmRv cl9pbmZvZnJhbWUgKmZyYW1lID0KKwkJJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuaGRtaS52ZW5k b3IuaGRtaTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9CisJCSZjb25u X3N0YXRlLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKIAlpbnQgcmV0OwogCi0JcmV0ID0gZHJt X2hkbWlfdmVuZG9yX2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9kZSgmZnJhbWUudmVuZG9yLmhk bWksCisJaWYgKCFjcnRjX3N0YXRlLT5oYXNfaW5mb2ZyYW1lIHx8ICFpbmZvLT5oYXNfaGRtaV9p bmZvZnJhbWUpCisJCXJldHVybiB0cnVlOworCisJY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5lbmFi bGUgfD0KKwkJaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKEhETUlfSU5GT0ZSQU1FX1RZUEVf VkVORE9SKTsKKworCXJldCA9IGRybV9oZG1pX3ZlbmRvcl9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5 X21vZGUoZnJhbWUsCiAJCQkJCQkJICBjb25uX3N0YXRlLT5jb25uZWN0b3IsCiAJCQkJCQkJICAm Y3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlKTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJu OworCWlmIChXQVJOX09OKHJldCkpCisJCXJldHVybiBmYWxzZTsKIAotCWludGVsX3dyaXRlX2lu Zm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLAotCQkJICAgICAgJmZyYW1lKTsKKwlyZXQgPSBo ZG1pX3ZlbmRvcl9pbmZvZnJhbWVfY2hlY2soZnJhbWUpOworCWlmIChXQVJOX09OKHJldCkpCisJ CXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBnNHhfc2V0 X2luZm9mcmFtZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC02NDUsOSArNjkx LDE1IEBAIHN0YXRpYyB2b2lkIGc0eF9zZXRfaW5mb2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKIAlJOTE1X1dSSVRFKHJlZywgdmFsKTsKIAlQT1NUSU5HX1JFQUQocmVnKTsK IAotCWludGVsX2hkbWlfc2V0X2F2aV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgY29u bl9zdGF0ZSk7Ci0JaW50ZWxfaGRtaV9zZXRfc3BkX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0 YXRlKTsKLQlpbnRlbF9oZG1pX3NldF9oZG1pX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRl LCBjb25uX3N0YXRlKTsKKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0 ZSwKKwkJCSAgICAgIEhETUlfSU5GT0ZSQU1FX1RZUEVfQVZJLAorCQkJICAgICAgJmNydGNfc3Rh dGUtPmluZm9mcmFtZXMuYXZpKTsKKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0 Y19zdGF0ZSwKKwkJCSAgICAgIEhETUlfSU5GT0ZSQU1FX1RZUEVfU1BELAorCQkJICAgICAgJmNy dGNfc3RhdGUtPmluZm9mcmFtZXMuc3BkKTsKKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwKKwkJCSAgICAgIEhETUlfSU5GT0ZSQU1FX1RZUEVfVkVORE9SLAorCQkJ ICAgICAgJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuaGRtaSk7CiB9CiAKIHN0YXRpYyBib29sIGhk bWlfc2lua19pc19kZWVwX2NvbG9yKGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpj b25uX3N0YXRlKQpAQCAtNzEzLDcgKzc2NSwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9oZG1pX3Nl dF9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwog CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNl LmNydGMpOwogCWk5MTVfcmVnX3QgcmVnOwotCXUzMiB2YWwgPSAwOworCisJaWYgKChjcnRjX3N0 YXRlLT5pbmZvZnJhbWVzLmVuYWJsZSAmCisJICAgICBpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFi bGUoSERNSV9QQUNLRVRfVFlQRV9HRU5FUkFMX0NPTlRST0wpKSA9PSAwKQorCQlyZXR1cm4gZmFs c2U7CiAKIAlpZiAoSEFTX0RESShkZXZfcHJpdikpCiAJCXJlZyA9IEhTV19UVklERU9fRElQX0dD UChjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2Rlcik7CkBAIC03MjQsMTggKzc3OSwzMSBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9oZG1pX3NldF9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAogCWVsc2UKIAkJcmV0dXJuIGZhbHNlOwogCisJSTkxNV9XUklURShyZWcsIGNy dGNfc3RhdGUtPmluZm9mcmFtZXMuZ2NwKTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMg dm9pZCBpbnRlbF9oZG1pX2NvbXB1dGVfZ2NwX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKKwkJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKKwkJCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJh c2UuZGV2KTsKKworCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8ICFjcnRjX3N0YXRlLT5oYXNfaW5m b2ZyYW1lKQorCQlyZXR1cm47CisKKwljcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmVuYWJsZSB8PQor CQlpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUoSERNSV9QQUNLRVRfVFlQRV9HRU5FUkFMX0NP TlRST0wpOworCiAJLyogSW5kaWNhdGUgY29sb3IgZGVwdGggd2hlbmV2ZXIgdGhlIHNpbmsgc3Vw cG9ydHMgZGVlcCBjb2xvciAqLwogCWlmIChoZG1pX3NpbmtfaXNfZGVlcF9jb2xvcihjb25uX3N0 YXRlKSkKLQkJdmFsIHw9IEdDUF9DT0xPUl9JTkRJQ0FUSU9OOworCQljcnRjX3N0YXRlLT5pbmZv ZnJhbWVzLmdjcCB8PSBHQ1BfQ09MT1JfSU5ESUNBVElPTjsKIAogCS8qIEVuYWJsZSBkZWZhdWx0 X3BoYXNlIHdoZW5ldmVyIHRoZSBkaXNwbGF5IG1vZGUgaXMgc3VpdGFibHkgYWxpZ25lZCAqLwog CWlmIChnY3BfZGVmYXVsdF9waGFzZV9wb3NzaWJsZShjcnRjX3N0YXRlLT5waXBlX2JwcCwKIAkJ CQkgICAgICAgJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZSkpCi0JCXZhbCB8PSBHQ1Bf REVGQVVMVF9QSEFTRV9FTkFCTEU7Ci0KLQlJOTE1X1dSSVRFKHJlZywgdmFsKTsKLQotCXJldHVy biB2YWwgIT0gMDsKKwkJY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5nY3AgfD0gR0NQX0RFRkFVTFRf UEhBU0VfRU5BQkxFOwogfQogCiBzdGF0aWMgdm9pZCBpYnhfc2V0X2luZm9mcmFtZXMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC03ODYsOSArODU0LDE1IEBAIHN0YXRpYyB2b2lk IGlieF9zZXRfaW5mb2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlJOTE1 X1dSSVRFKHJlZywgdmFsKTsKIAlQT1NUSU5HX1JFQUQocmVnKTsKIAotCWludGVsX2hkbWlfc2V0 X2F2aV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7Ci0JaW50ZWxf aGRtaV9zZXRfc3BkX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlKTsKLQlpbnRlbF9oZG1p X3NldF9oZG1pX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKKwlp bnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKKwkJCSAgICAgIEhETUlf SU5GT0ZSQU1FX1RZUEVfQVZJLAorCQkJICAgICAgJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuYXZp KTsKKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKKwkJCSAgICAg IEhETUlfSU5GT0ZSQU1FX1RZUEVfU1BELAorCQkJICAgICAgJmNydGNfc3RhdGUtPmluZm9mcmFt ZXMuc3BkKTsKKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKKwkJ CSAgICAgIEhETUlfSU5GT0ZSQU1FX1RZUEVfVkVORE9SLAorCQkJICAgICAgJmNydGNfc3RhdGUt PmluZm9mcmFtZXMuaGRtaSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNwdF9zZXRfaW5mb2ZyYW1lcyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKQEAgLTgyOSw5ICs5MDMsMTUgQEAgc3RhdGlj IHZvaWQgY3B0X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAog CUk5MTVfV1JJVEUocmVnLCB2YWwpOwogCVBPU1RJTkdfUkVBRChyZWcpOwogCi0JaW50ZWxfaGRt aV9zZXRfYXZpX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKLQlp bnRlbF9oZG1pX3NldF9zcGRfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUpOwotCWludGVs X2hkbWlfc2V0X2hkbWlfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUp OworCWludGVsX3dyaXRlX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLAorCQkJICAgICAg SERNSV9JTkZPRlJBTUVfVFlQRV9BVkksCisJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1l cy5hdmkpOworCWludGVsX3dyaXRlX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLAorCQkJ ICAgICAgSERNSV9JTkZPRlJBTUVfVFlQRV9TUEQsCisJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5m b2ZyYW1lcy5zcGQpOworCWludGVsX3dyaXRlX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRl LAorCQkJICAgICAgSERNSV9JTkZPRlJBTUVfVFlQRV9WRU5ET1IsCisJCQkgICAgICAmY3J0Y19z dGF0ZS0+aW5mb2ZyYW1lcy5oZG1pKTsKIH0KIAogc3RhdGljIHZvaWQgdmx2X3NldF9pbmZvZnJh bWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLApAQCAtODgxLDkgKzk2MSwxNSBAQCBz dGF0aWMgdm9pZCB2bHZfc2V0X2luZm9mcmFtZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCiAJSTkxNV9XUklURShyZWcsIHZhbCk7CiAJUE9TVElOR19SRUFEKHJlZyk7CiAKLQlpbnRl bF9oZG1pX3NldF9hdmlfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUp OwotCWludGVsX2hkbWlfc2V0X3NwZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Ci0J aW50ZWxfaGRtaV9zZXRfaGRtaV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgY29ubl9z dGF0ZSk7CisJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsCisJCQkg ICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKKwkJCSAgICAgICZjcnRjX3N0YXRlLT5pbmZv ZnJhbWVzLmF2aSk7CisJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUs CisJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1NQRCwKKwkJCSAgICAgICZjcnRjX3N0YXRl LT5pbmZvZnJhbWVzLnNwZCk7CisJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNf c3RhdGUsCisJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZFTkRPUiwKKwkJCSAgICAgICZj cnRjX3N0YXRlLT5pbmZvZnJhbWVzLmhkbWkpOwogfQogCiBzdGF0aWMgdm9pZCBoc3dfc2V0X2lu Zm9mcmFtZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC05MTQsOSArMTAwMCwx NSBAQCBzdGF0aWMgdm9pZCBoc3dfc2V0X2luZm9mcmFtZXMoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCiAJSTkxNV9XUklURShyZWcsIHZhbCk7CiAJUE9TVElOR19SRUFEKHJlZyk7CiAK LQlpbnRlbF9oZG1pX3NldF9hdmlfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5f c3RhdGUpOwotCWludGVsX2hkbWlfc2V0X3NwZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0 ZSk7Ci0JaW50ZWxfaGRtaV9zZXRfaGRtaV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwg Y29ubl9zdGF0ZSk7CisJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUs CisJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKKwkJCSAgICAgICZjcnRjX3N0YXRl LT5pbmZvZnJhbWVzLmF2aSk7CisJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNf c3RhdGUsCisJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1NQRCwKKwkJCSAgICAgICZjcnRj X3N0YXRlLT5pbmZvZnJhbWVzLnNwZCk7CisJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIs IGNydGNfc3RhdGUsCisJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZFTkRPUiwKKwkJCSAg ICAgICZjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmhkbWkpOwogfQogCiB2b2lkIGludGVsX2RwX2R1 YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoc3RydWN0IGludGVsX2hkbWkgKmhkbWksIGJvb2wgZW5h YmxlKQpAQCAtMTg1MSw2ICsxOTQzLDI3IEBAIGJvb2wgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJfQogCX0KIAorCWlmIChwaXBlX2Nv bmZpZy0+aGFzX2hkbWlfc2luaykKKwkJcGlwZV9jb25maWctPmluZm9mcmFtZXMuZW5hYmxlIHw9 CisJCQlpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUoSERNSV9QQUNLRVRfVFlQRV9OVUxMKTsK KworCWludGVsX2hkbWlfY29tcHV0ZV9nY3BfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29uZmln LCBjb25uX3N0YXRlKTsKKworCWlmICghaW50ZWxfaGRtaV9jb21wdXRlX2F2aV9pbmZvZnJhbWUo ZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpKSB7CisJCURSTV9ERUJVR19LTVMoImJh ZCBBVkkgaW5mb2ZyYW1lXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmICghaW50ZWxf aGRtaV9jb21wdXRlX3NwZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3Rh dGUpKSB7CisJCURSTV9ERUJVR19LTVMoImJhZCBTUEQgaW5mb2ZyYW1lXG4iKTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKworCWlmICghaW50ZWxfaGRtaV9jb21wdXRlX2hkbWlfaW5mb2ZyYW1lKGVu Y29kZXIsIHBpcGVfY29uZmlnLCBjb25uX3N0YXRlKSkgeworCQlEUk1fREVCVUdfS01TKCJiYWQg SERNSSBpbmZvZnJhbWVcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJcmV0dXJuIHRydWU7 CiB9CiAKLS0gCjIuMTYuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==