From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ayan Halder Subject: [RFC AFBC 07/12] drm/arm/malidp: Define the constraints on each supported drm_fourcc format for the AFBC modifiers. Date: Mon, 3 Dec 2018 11:32:01 +0000 Message-ID: <1543836703-8491-8-git-send-email-ayan.halder@arm.com> References: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0621.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::621]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5428A89D8D for ; Mon, 3 Dec 2018 11:32:05 +0000 (UTC) In-Reply-To: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ayan Halder , Liviu Dudau , Brian Starkey , "malidp@foss.arm.com" , "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "maxime.ripard@bootlin.com" , "sean@poorly.run" , "maarten.lankhorst@linux.intel.com" , "corbet@lwn.net" , "mchehab+samsung@kernel.org" , "gregkh@linuxfoundation.org" , "davem@davemloft.net" , "akpm@linux-foundation.org" , "nicolas.ferre@microchip.com" , "arnd@arndb.de" , "linux-doc@vger.kernel.org" Cc: nd List-Id: dri-devel@lists.freedesktop.org VGhlIGNvbnN0cmFpbnRzIGFyZSBhcyBmb2xsb3dzIChmb3IgTWFsaS1EUCA1MDAsIDU1MCwgNjUw KSA6LQoKMS4gQUZCQyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgZm9ybWF0cyBkZWZpbmVkIGlu IG1hbGlkcF9od19mb3JtYXRfaXNfbGluZWFyX29ubHkoKQoKMi4gU29tZSBvZiB0aGUgZm9ybWF0 cyBhcmUgc3VwcG9ydGVkIG9ubHkgd2l0aCBBRkJDIG1vZGlmaWVycy4gVGh1cyB3ZSBoYXZlCmlu dHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24gJ21hbGlkcF9od19mb3JtYXRfaXNfYWZiY19vbmx5KCkn IHdoaWNoIHZlcmlmaWVzIHRoZSBzYW1lLgoKMy4gQUZCQ19GT1JNQVRfTU9EX1lUUiBuZWVkcyB0 byBiZSBwcm92aWRlZCBmb3IgYW55IFJHQiBmb3JtYXQuCgo0LiBGb3JtYXRzIDw9IDE2YnBwIGNh bm5vdCBzdXBwb3J0IEFGQkNfRk9STUFUX01PRF9TUExJVC4KCjUuIENCUiBzaG91bGQgbm90IGJl IHNldCBmb3Igbm9uLXN1YnNhbXBsZWQgZm9ybWF0cy4KCjYuIFNNQVJUIGxheWVyIGRvZXMgbm90 IHN1cHBvcnQgZnJhbWVidWZmZXIgd2l0aCBBRkJDIG1vZGlmaWVycy4KUmV0dXJuIC1FSU5WQUwg Zm9yIHN1Y2ggYSBzY2VuYXJpby4KCjcuIEFGQkNfRk9STUFUX01PRF9ZVFIgaXMgbm90IHN1cHBv cnRlZCBmb3IgYW55IFlVViBmb3JtYXRzLgoKOC4gRm9ybWF0cyB3aGljaCBhcmUgc3Vic2FtcGxl ZCBjYW5ub3Qgc3VwcG9ydCBBRkJDX0ZPUk1BVF9NT0RfU1BMSVQuIEhvd2V2ZXIgaW4KRFA1NTAs IFlVVl80MjBfMTBCSVQgaXMgc3VwcG9ydGVkIHdpdGggQUZCQ19GT1JNQVRfTU9EX1NQTElULiBU aGlzIGZlYXR1cmUgaGFzCmJlZW4gaWRlbnRpZmllZCB3aXRoIE1BTElEUF9ERVZJQ0VfQUZCQ19Z VVZfNDIwXzEwX1NVUFBPUlRfU1BMSVQuCgo5LiBJbiBEUDU1MCBhbmQgRFA2NTAsIGZvciBZVVlW LCB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgZGlmZmVyZW50IGZvcm1hdC1pZHMgdG8KYmUgdXNlZCB3 aXRoIGFuZCB3aXRob3V0IEFGQkMgbW9kaWZpZXIuIFdlIGhhdmUgdXNlZCB0aGUgZmVhdHVyZQon TUFMSURQX0RFVklDRV9BRkJDX1lVWVZfVVNFXzQyMl9QMicgdG8gaWRlbnRpZnkgdGhpcyBjaGFy YWN0ZXJpc3RpYy4KClNpZ25lZC1vZmYtYnk6IEF5YW4gS3VtYXIgaGFsZGVyIDxheWFuLmhhbGRl ckBhcm0uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5jICAgIHwgIDIz ICstLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5oICAgIHwgICA2ICsrCiBk cml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9ody5jICAgICB8ICA3MSArKysrKysrKysrKysrKysr KysrLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmggICAgIHwgICA1ICstCiBkcml2 ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9tdy5jICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2FybS9tYWxpZHBfcGxhbmVzLmMgfCAxMjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDE5OSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5jCmluZGV4IGI4ZGI5MmYuLjJmMGI1NTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hcm0vbWFsaWRwX2Rydi5jCkBAIC0yNjQsMjkgKzI2NCw4IEBAIHN0YXRpYyBib29sCiBt YWxpZHBfdmVyaWZ5X2FmYmNfZnJhbWVidWZmZXJfY2FwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpCiB7Ci0J Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsKLQotCWlmICgobW9kZV9jbWQtPm1v ZGlmaWVyWzBdID4+IDU2KSAhPSBEUk1fRk9STUFUX01PRF9WRU5ET1JfQVJNKSB7Ci0JCURSTV9E RUJVR19LTVMoIlVua25vd24gbW9kaWZpZXIgKG5vdCBBcm0pXG4iKTsKKwlpZiAobWFsaWRwX2Zv cm1hdF9tb2Rfc3VwcG9ydGVkKGRldiwgbW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgbW9kZV9jbWQt Pm1vZGlmaWVyWzBdKSA9PSBmYWxzZSkKIAkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWlmIChtb2Rl X2NtZC0+bW9kaWZpZXJbMF0gJgotCSAgICB+RFJNX0ZPUk1BVF9NT0RfQVJNX0FGQkMoQUZCQ19N T0RfVkFMSURfQklUUykpIHsKLQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgbW9kaWZpZXJz XG4iKTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWluZm8gPSBkcm1fZ2V0X2Zvcm1hdF9pbmZv KGRldiwgbW9kZV9jbWQpOwotCWlmICghaW5mbykgewotCQlEUk1fREVCVUdfS01TKCJVbmFibGUg dG8gZ2V0IHRoZSBmb3JtYXQgaW5mb3JtYXRpb25cbiIpOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQot Ci0JaWYgKGluZm8tPm51bV9wbGFuZXMgIT0gMSkgewotCQlEUk1fREVCVUdfS01TKCJBRkJDIGJ1 ZmZlcnMgZXhwZWN0IG9uZSBwbGFuZVxuIik7Ci0JCXJldHVybiBmYWxzZTsKLQl9CiAKIAlpZiAo bW9kZV9jbWQtPm9mZnNldHNbMF0gIT0gMCkgewogCQlEUk1fREVCVUdfS01TKCJBRkJDIGJ1ZmZl cnMnIHBsYW5lIG9mZnNldCBzaG91bGQgYmUgMFxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYXJtL21hbGlkcF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5o CmluZGV4IGI3NmM4NmYuLjAxOWE2ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v bWFsaWRwX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5oCkBAIC05 MCw2ICs5MCwxMiBAQCBzdHJ1Y3QgbWFsaWRwX2NydGNfc3RhdGUgewogaW50IG1hbGlkcF9kZV9w bGFuZXNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKIGludCBtYWxpZHBfY3J0Y19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pOwogCitib29sIG1hbGlkcF9od19mb3JtYXRfaXNfbGlu ZWFyX29ubHkodTMyIGZvcm1hdCk7Citib29sIG1hbGlkcF9od19mb3JtYXRfaXNfYWZiY19vbmx5 KHUzMiBmb3JtYXQpOworCitib29sIG1hbGlkcF9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtLAorCQkJCSB1MzIgZm9ybWF0LCB1NjQgbW9kaWZpZXIpOworCiAjaWZk ZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIG1hbGlkcF9lcnJvcihzdHJ1Y3QgbWFsaWRwX2RybSAq bWFsaWRwLAogCQkgIHN0cnVjdCBtYWxpZHBfZXJyb3Jfc3RhdHMgKmVycm9yX3N0YXRzLCB1MzIg c3RhdHVzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfaHcuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmMKaW5kZXggMjVhYzU4OTAuLjRhNzc0YmUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FybS9tYWxpZHBfaHcuYwpAQCAtNjAsNiArNjAsOCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG1hbGlkcF9mb3JtYXRfaWQgbWFsaWRwNTAwX2RlX2Zvcm1hdHNbXSA9IHsKICNkZWZpbmUg TUFMSURQX0lEKF9fZ3JvdXAsIF9fZm9ybWF0KSBcCiAJKCgoKF9fZ3JvdXApICYgMHg3KSA8PCAz KSB8ICgoX19mb3JtYXQpICYgMHg3KSkKIAorI2RlZmluZSBBRkJDX1lVVl80MjJfRk9STUFUX0lE CU1BTElEUF9JRCg1LCAxKQorCiAjZGVmaW5lIE1BTElEUF9DT01NT05fRk9STUFUUyBcCiAJLyog ICAgZm91cmNjLCAgIGxheWVycyBzdXBwb3J0aW5nIHRoZSBmb3JtYXQsICAgICAgaW50ZXJuYWwg aWQgICAqLyBcCiAJeyBEUk1fRk9STUFUX0FSR0IyMTAxMDEwLCBERV9WSURFTzEgfCBERV9HUkFQ SElDUzEgfCBERV9WSURFTzIgfCBTRV9NRU1XUklURSwgTUFMSURQX0lEKDAsIDApIH0sIFwKQEAg LTg4Nyw3ICs4ODksMTAgQEAgY29uc3Qgc3RydWN0IG1hbGlkcF9odyBtYWxpZHBfZGV2aWNlW01B TElEUF9NQVhfREVWSUNFU10gPSB7CiAJCQkuc2VfYmFzZSA9IE1BTElEUDU1MF9TRV9CQVNFLAog CQkJLmRjX2Jhc2UgPSBNQUxJRFA1NTBfRENfQkFTRSwKIAkJCS5vdXRfZGVwdGhfYmFzZSA9IE1B TElEUDU1MF9ERV9PVVRQVVRfREVQVEgsCi0JCQkuZmVhdHVyZXMgPSBNQUxJRFBfUkVHTUFQX0hB U19DTEVBUklSUSB8IE1BTElEUF9ERVZJQ0VfQUZCQ19TVVBQT1JUX1NQTElUIHwgQUZCQ19TVVBQ T1JUX1NQTElUX1dJVEhfWVVWXzQyMF8xMCwKKwkJCS5mZWF0dXJlcyA9IE1BTElEUF9SRUdNQVBf SEFTX0NMRUFSSVJRIHwKKwkJCQkgICAgTUFMSURQX0RFVklDRV9BRkJDX1NVUFBPUlRfU1BMSVQg fAorCQkJCSAgICBNQUxJRFBfREVWSUNFX0FGQkNfWVVWXzQyMF8xMF9TVVBQT1JUX1NQTElUIHwK KwkJCQkgICAgTUFMSURQX0RFVklDRV9BRkJDX1lVWVZfVVNFXzQyMl9QMiwKIAkJCS5uX2xheWVy cyA9IEFSUkFZX1NJWkUobWFsaWRwNTUwX2xheWVycyksCiAJCQkubGF5ZXJzID0gbWFsaWRwNTUw X2xheWVycywKIAkJCS5kZV9pcnFfbWFwID0gewpAQCAtOTMzLDcgKzkzOCw5IEBAIGNvbnN0IHN0 cnVjdCBtYWxpZHBfaHcgbWFsaWRwX2RldmljZVtNQUxJRFBfTUFYX0RFVklDRVNdID0gewogCQkJ LnNlX2Jhc2UgPSBNQUxJRFA1NTBfU0VfQkFTRSwKIAkJCS5kY19iYXNlID0gTUFMSURQNTUwX0RD X0JBU0UsCiAJCQkub3V0X2RlcHRoX2Jhc2UgPSBNQUxJRFA1NTBfREVfT1VUUFVUX0RFUFRILAot CQkJLmZlYXR1cmVzID0gTUFMSURQX1JFR01BUF9IQVNfQ0xFQVJJUlEgfCBNQUxJRFBfREVWSUNF X0FGQkNfU1VQUE9SVF9TUExJVCwKKwkJCS5mZWF0dXJlcyA9IE1BTElEUF9SRUdNQVBfSEFTX0NM RUFSSVJRIHwKKwkJCQkgICAgTUFMSURQX0RFVklDRV9BRkJDX1NVUFBPUlRfU1BMSVQgfAorCQkJ CSAgICBNQUxJRFBfREVWSUNFX0FGQkNfWVVZVl9VU0VfNDIyX1AyLAogCQkJLm5fbGF5ZXJzID0g QVJSQVlfU0laRShtYWxpZHA2NTBfbGF5ZXJzKSwKIAkJCS5sYXllcnMgPSBtYWxpZHA2NTBfbGF5 ZXJzLAogCQkJLmRlX2lycV9tYXAgPSB7CkBAIC05ODIsMTkgKzk4OSw3MyBAQCBjb25zdCBzdHJ1 Y3QgbWFsaWRwX2h3IG1hbGlkcF9kZXZpY2VbTUFMSURQX01BWF9ERVZJQ0VTXSA9IHsKIH07CiAK IHU4IG1hbGlkcF9od19nZXRfZm9ybWF0X2lkKGNvbnN0IHN0cnVjdCBtYWxpZHBfaHdfcmVnbWFw ICptYXAsCi0JCQkgICB1OCBsYXllcl9pZCwgdTMyIGZvcm1hdCkKKwkJCSAgIHU4IGxheWVyX2lk LCB1MzIgZm9ybWF0LCBib29sIGhhc19tb2RpZmllcikKIHsKIAl1bnNpZ25lZCBpbnQgaTsKIAog CWZvciAoaSA9IDA7IGkgPCBtYXAtPm5fcGl4ZWxfZm9ybWF0czsgaSsrKSB7CiAJCWlmICgoKG1h cC0+cGl4ZWxfZm9ybWF0c1tpXS5sYXllciAmIGxheWVyX2lkKSA9PSBsYXllcl9pZCkgJiYKLQkJ ICAgIChtYXAtPnBpeGVsX2Zvcm1hdHNbaV0uZm9ybWF0ID09IGZvcm1hdCkpCi0JCQlyZXR1cm4g bWFwLT5waXhlbF9mb3JtYXRzW2ldLmlkOworCQkgICAgKG1hcC0+cGl4ZWxfZm9ybWF0c1tpXS5m b3JtYXQgPT0gZm9ybWF0KSkgeworCisJCQkvKgorCQkJICogSW4gc29tZSBEUDU1MCBhbmQgRFA2 NTAsIERSTV9GT1JNQVRfWVVZViArIEFGQkMgbW9kaWZpZXIKKwkJCSAqIGlzIHN1cHBvcnRlZCBi eSBhIGRpZmZlcmVudCBoL3cgZm9ybWF0IGlkIHRoYW4KKwkJCSAqIERSTV9GT1JNQVRfWVVZViAo b25seSkuCisJCQkgKi8KKwkJCWlmIChmb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZVVlWICYmCisJCQkg ICAgKGhhc19tb2RpZmllcikgJiYKKwkJCSAgICAobWFwLT5mZWF0dXJlcyAmIE1BTElEUF9ERVZJ Q0VfQUZCQ19ZVVlWX1VTRV80MjJfUDIpKQorCQkJCXJldHVybiBBRkJDX1lVVl80MjJfRk9STUFU X0lEOworCQkJZWxzZQorCQkJCXJldHVybiBtYXAtPnBpeGVsX2Zvcm1hdHNbaV0uaWQ7CisJCX0K IAl9CiAKIAlyZXR1cm4gTUFMSURQX0lOVkFMSURfRk9STUFUX0lEOwogfQogCitib29sIG1hbGlk cF9od19mb3JtYXRfaXNfbGluZWFyX29ubHkodTMyIGZvcm1hdCkKK3sKKwlzd2l0Y2ggKGZvcm1h dCkgeworCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfUkdC QTEwMTAxMDI6CisJY2FzZSBEUk1fRk9STUFUX0JHUkExMDEwMTAyOgorCWNhc2UgRFJNX0ZPUk1B VF9BUkdCODg4ODoKKwljYXNlIERSTV9GT1JNQVRfUkdCQTg4ODg6CisJY2FzZSBEUk1fRk9STUFU X0JHUkE4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKKwljYXNlIERSTV9GT1JNQVRf WFJHQjg4ODg6CisJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9C R1JYODg4ODoKKwljYXNlIERSTV9GT1JNQVRfUkdCODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9SR0I1 NjU6CisJY2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1OgorCWNhc2UgRFJNX0ZPUk1BVF9SR0JBNTU1 MToKKwljYXNlIERSTV9GT1JNQVRfQkdSQTU1NTE6CisJY2FzZSBEUk1fRk9STUFUX1VZVlk6CisJ Y2FzZSBEUk1fRk9STUFUX1hZVVY4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMDoK KwljYXNlIERSTV9GT1JNQVRfWDBMMjoKKwljYXNlIERSTV9GT1JNQVRfWDBMMDoKKwkJcmV0dXJu IHRydWU7CisJZGVmYXVsdDoKKwkJcmV0dXJuIGZhbHNlOworCX0KK30KKworYm9vbCBtYWxpZHBf aHdfZm9ybWF0X2lzX2FmYmNfb25seSh1MzIgZm9ybWF0KQoreworCXN3aXRjaCAoZm9ybWF0KSB7 CisJY2FzZSBEUk1fRk9STUFUX1ZVWTg4ODoKKwljYXNlIERSTV9GT1JNQVRfVlVZMTAxMDEwOgor CWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjBfOEJJVDoKKwljYXNlIERSTV9GT1JNQVRfWVVWNDIwXzEw QklUOgorCQlyZXR1cm4gdHJ1ZTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQor CiBzdGF0aWMgdm9pZCBtYWxpZHBfaHdfY2xlYXJfaXJxKHN0cnVjdCBtYWxpZHBfaHdfZGV2aWNl ICpod2RldiwgdTggYmxvY2ssIHUzMiBpcnEpCiB7CiAJdTMyIGJhc2UgPSBtYWxpZHBfZ2V0X2Js b2NrX2Jhc2UoaHdkZXYsIGJsb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v bWFsaWRwX2h3LmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9ody5oCmluZGV4IDI3Yjkw N2YuLjUyMTg4ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfaHcuaApAQCAtOTcsNyArOTcsOCBAQCBz dHJ1Y3QgbWFsaWRwX3NlX2NvbmZpZyB7CiAvKiByZWdtYXAgZmVhdHVyZXMgKi8KICNkZWZpbmUg TUFMSURQX1JFR01BUF9IQVNfQ0xFQVJJUlEJCQkJQklUKDApCiAjZGVmaW5lIE1BTElEUF9ERVZJ Q0VfQUZCQ19TVVBQT1JUX1NQTElUCQkJQklUKDEpCi0jZGVmaW5lIEFGQkNfU1VQUE9SVF9TUExJ VF9XSVRIX1lVVl80MjBfMTAJCQlCSVQoMikKKyNkZWZpbmUgTUFMSURQX0RFVklDRV9BRkJDX1lV Vl80MjBfMTBfU1VQUE9SVF9TUExJVAkJQklUKDIpCisjZGVmaW5lIE1BTElEUF9ERVZJQ0VfQUZC Q19ZVVlWX1VTRV80MjJfUDIJCQlCSVQoMykKIAogc3RydWN0IG1hbGlkcF9od19yZWdtYXAgewog CS8qIGFkZHJlc3Mgb2Zmc2V0IG9mIHRoZSBERSByZWdpc3RlciBiYW5rICovCkBAIC0zMjMsNyAr MzI0LDcgQEAgaW50IG1hbGlkcF9zZV9pcnFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBp bnQgaXJxKTsKIHZvaWQgbWFsaWRwX3NlX2lycV9maW5pKHN0cnVjdCBtYWxpZHBfaHdfZGV2aWNl ICpod2Rldik7CiAKIHU4IG1hbGlkcF9od19nZXRfZm9ybWF0X2lkKGNvbnN0IHN0cnVjdCBtYWxp ZHBfaHdfcmVnbWFwICptYXAsCi0JCQkgICB1OCBsYXllcl9pZCwgdTMyIGZvcm1hdCk7CisJCQkg ICB1OCBsYXllcl9pZCwgdTMyIGZvcm1hdCwgYm9vbCBoYXNfbW9kaWZpZXIpOwogCiBzdGF0aWMg aW5saW5lIHU4IG1hbGlkcF9od19nZXRfcGl0Y2hfYWxpZ24oc3RydWN0IG1hbGlkcF9od19kZXZp Y2UgKmh3ZGV2LCBib29sIHJvdGF0ZWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YXJtL21hbGlkcF9tdy5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfbXcuYwppbmRleCA5 MTQ3MmU1Li4wNDg0NzQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9t dy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX213LmMKQEAgLTE0Myw3ICsxNDMs NyBAQCBtYWxpZHBfbXdfZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyLAogCiAJbXdfc3RhdGUtPmZvcm1hdCA9CiAJCW1hbGlkcF9od19nZXRfZm9ybWF0X2lk KCZtYWxpZHAtPmRldi0+aHctPm1hcCwgU0VfTUVNV1JJVEUsCi0JCQkJCWZiLT5mb3JtYXQtPmZv cm1hdCk7CisJCQkJCWZiLT5mb3JtYXQtPmZvcm1hdCwgISFmYi0+bW9kaWZpZXIpOwogCWlmICht d19zdGF0ZS0+Zm9ybWF0ID09IE1BTElEUF9JTlZBTElEX0ZPUk1BVF9JRCkgewogCQlzdHJ1Y3Qg ZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FybS9tYWxpZHBfcGxhbmVzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9w bGFuZXMuYwppbmRleCBjZDYwZjczLi4wNzY1Y2VlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYXJtL21hbGlkcF9wbGFuZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9w bGFuZXMuYwpAQCAtNTIsNiArNTIsOCBAQAogI2RlZmluZSBNQUxJRFA1NTBfTFNfRU5BQkxFCQkw eDAxYwogI2RlZmluZSBNQUxJRFA1NTBfTFNfUjFfSU5fU0laRQkJMHgwMjAKIAorI2RlZmluZSBN T0RJRklFUlNfQ09VTlRfTUFYCQkxNQorCiAvKgogICogVGhpcyA0LWVudHJ5IGxvb2stdXAtdGFi bGUgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGZ1bGwgOC1iaXQgYWxwaGEgdmFsdWUKICAqIGZv ciBmb3JtYXRzIHdpdGggMS0gb3IgMi1iaXQgYWxwaGEgY2hhbm5lbHMuCkBAIC0xNDUsNiArMTQ3 LDExNyBAQCBzdGF0aWMgdm9pZCBtYWxpZHBfcGxhbmVfYXRvbWljX3ByaW50X3N0YXRlKHN0cnVj dCBkcm1fcHJpbnRlciAqcCwKIAlkcm1fcHJpbnRmKHAsICJcdG1tdV9wcmVmZXRjaF9wZ3NpemU9 JWRcbiIsIG1zLT5tbXVfcHJlZmV0Y2hfcGdzaXplKTsKIH0KIAorYm9vbCBtYWxpZHBfZm9ybWF0 X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKKwkJCQkgdTMyIGZvcm1hdCwg dTY0IG1vZGlmaWVyKQoreworCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm87CisJ Y29uc3QgdTY0ICptb2RpZmllcnM7CisJc3RydWN0IG1hbGlkcF9kcm0gKm1hbGlkcCA9IGRybS0+ ZGV2X3ByaXZhdGU7CisJY29uc3Qgc3RydWN0IG1hbGlkcF9od19yZWdtYXAgKm1hcCA9ICZtYWxp ZHAtPmRldi0+aHctPm1hcDsKKworCWlmIChXQVJOX09OKG1vZGlmaWVyID09IERSTV9GT1JNQVRf TU9EX0lOVkFMSUQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBTb21lIHBpeGVsIGZvcm1hdHMg YXJlIHN1cHBvcnRlZCB3aXRob3V0IGFueSBtb2RpZmllciAqLworCWlmIChtb2RpZmllciA9PSBE Uk1fRk9STUFUX01PRF9MSU5FQVIpIHsKKwkJLyogSG93ZXZlciB0aGVzZSBwaXhlbCBmb3JtYXRz IG5lZWQgdG8gYmUgc3VwcG9ydGVkIHdpdGgKKwkJICogbW9kaWZpZXJzIG9ubHkKKwkJICovCisJ CXJldHVybiAhbWFsaWRwX2h3X2Zvcm1hdF9pc19hZmJjX29ubHkoZm9ybWF0KTsKKwl9CisKKwlp ZiAoKG1vZGlmaWVyID4+IDU2KSAhPSBEUk1fRk9STUFUX01PRF9WRU5ET1JfQVJNKSB7CisJCURS TV9FUlJPUigiVW5rbm93biBtb2RpZmllciAobm90IEFybSlcbiIpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJaWYgKG1vZGlmaWVyICYKKwkgICAgfkRSTV9GT1JNQVRfTU9EX0FSTV9BRkJDKEFG QkNfTU9EX1ZBTElEX0JJVFMpKSB7CisJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIG1vZGlm aWVyc1xuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwltb2RpZmllcnMgPSBtYWxpZHBfZm9y bWF0X21vZGlmaWVyczsKKwl3aGlsZSAoKm1vZGlmaWVycyAhPSBEUk1fRk9STUFUX01PRF9JTlZB TElEKSB7CisJCWlmICgqbW9kaWZpZXJzID09IG1vZGlmaWVyKSB7CisJCQkvKiBTUExJVCBidWZm ZXJzIG11c3QgdXNlIFNQQVJTRSBsYXlvdXQgKi8KKwkJCWlmIChXQVJOX09OX09OQ0UoKG1vZGlm aWVyICYgQUZCQ19TUExJVCkgJiYgIShtb2RpZmllciAmIEFGQkNfU1BBUlNFKSkpCisJCQkJcmV0 dXJuIGZhbHNlOworCisJCQkvKiBDQlIgb25seSBhcHBsaWVzIHRvIFlVViBmb3JtYXRzLCB3aGVy ZSBZVFIgc2hvdWxkIGJlIGFsd2F5cyAwICovCisJCQlpZiAoV0FSTl9PTl9PTkNFKChtb2RpZmll ciAmIEFGQkNfQ0JSKSAmJiAobW9kaWZpZXIgJiBBRkJDX1lUUikpKQorCQkJCXJldHVybiBmYWxz ZTsKKworCQkJYnJlYWs7CisJCX0KKworCQltb2RpZmllcnMrKzsKKwl9CisKKwkvKiByZXR1cm4g ZmFsc2UsIGlmIHRoZSBtb2RpZmllciB3YXMgbm90IGZvdW5kICovCisJaWYgKCptb2RpZmllcnMg PT0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCkgeworCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRl ZCBtb2RpZmllclxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpbmZvID0gZHJtX2Zvcm1h dF9pbmZvKGZvcm1hdCk7CisKKwlpZiAoaW5mby0+bnVtX3BsYW5lcyAhPSAxKSB7CisJCURSTV9E RUJVR19LTVMoIkFGQkMgYnVmZmVycyBleHBlY3Qgb25lIHBsYW5lXG4iKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKworCWlmIChtYWxpZHBfaHdfZm9ybWF0X2lzX2xpbmVhcl9vbmx5KGZvcm1hdCkg PT0gdHJ1ZSkgeworCQlEUk1fREVCVUdfS01TKCJHaXZlbiBmb3JtYXQgKDB4JXgpIGlzIHN1cHBv cnRlZCBpcyBsaW5lYXIgbW9kZSBvbmx5XG4iLCBmb3JtYXQpOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJLyoKKwkgKiBSR0IgZm9ybWF0cyBuZWVkIHRvIHByb3ZpZGUgWVRSIG1vZGlmaWVyIGFu ZCBZVVYgZm9ybWF0cyBzaG91bGQgbm90CisJICogcHJvdmlkZSBZVFIgbW9kaWZpZXIuCisJICov CisJaWYgKCEoaW5mby0+aXNfeXV2KSAhPSAhIShtb2RpZmllciAmIEFGQkNfRk9STUFUX01PRF9Z VFIpKSB7CisJCURSTV9ERUJVR19LTVMoIkFGQkNfRk9STUFUX01PRF9ZVFIgaXMgJXMgZm9yICVz IGZvcm1hdHNcbiIsCisJCQkgICAgICBpbmZvLT5pc195dXYgPyAiZGlzYWxsb3dlZCIgOiAibWFu ZGF0b3J5IiwKKwkJCSAgICAgIGluZm8tPmlzX3l1diA/ICJZVVYiIDogIlJHQiIpOworCQlyZXR1 cm4gZmFsc2U7CisJfQorCisJaWYgKG1vZGlmaWVyICYgQUZCQ19TUExJVCkgeworCQlpZiAoIWlu Zm8tPmlzX3l1dikgeworCQkJaWYgKGRybV9mb3JtYXRfcGxhbmVfY3BwKGZvcm1hdCwgMCkgPD0g MikgeworCQkJCURSTV9ERUJVR19LTVMoIlJHQiBmb3JtYXRzIDw9IDE2YnBwIGFyZSBub3Qgc3Vw cG9ydGVkIHdpdGggU1BMSVRcbiIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCisJ CWlmICgoZHJtX2Zvcm1hdF9ob3J6X2Nocm9tYV9zdWJzYW1wbGluZyhmb3JtYXQpICE9IDEpIHx8 CisJCSAgICAoZHJtX2Zvcm1hdF92ZXJ0X2Nocm9tYV9zdWJzYW1wbGluZyhmb3JtYXQpICE9IDEp KSB7CisJCQlpZiAoIShmb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZVVY0MjBfMTBCSVQgJiYKKwkJCSAg ICAgKG1hcC0+ZmVhdHVyZXMgJiBNQUxJRFBfREVWSUNFX0FGQkNfWVVWXzQyMF8xMF9TVVBQT1JU X1NQTElUKSkpIHsKKwkJCQlEUk1fREVCVUdfS01TKCJGb3JtYXRzIHdoaWNoIGFyZSBzdWItc2Ft cGxlZCBzaG91bGQgbmV2ZXIgYmUgc3BsaXRcbiIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0K KwkJfQorCX0KKworCWlmIChtb2RpZmllciAmIEFGQkNfQ0JSKSB7CisJCWlmICgoZHJtX2Zvcm1h dF9ob3J6X2Nocm9tYV9zdWJzYW1wbGluZyhmb3JtYXQpID09IDEpIHx8CisJCSAgICAoZHJtX2Zv cm1hdF92ZXJ0X2Nocm9tYV9zdWJzYW1wbGluZyhmb3JtYXQpID09IDEpKSB7CisJCQlEUk1fREVC VUdfS01TKCJGb3JtYXRzIHdoaWNoIGFyZSBub3Qgc3ViLXNhbXBsZWQgc2hvdWxkIG5vdCBoYXZl IENCUiBzZXRcbiIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJcmV0dXJuIHRydWU7 Cit9CisKK3N0YXRpYyBib29sIG1hbGlkcF9mb3JtYXRfbW9kX3N1cHBvcnRlZF9wZXJfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJCQkgIHUzMiBmb3JtYXQsIHU2NCBtb2RpZmll cikKK3sKKwlyZXR1cm4gbWFsaWRwX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHBsYW5lLT5kZXYsIGZv cm1hdCwgbW9kaWZpZXIpOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5j cyBtYWxpZHBfZGVfcGxhbmVfZnVuY3MgPSB7CiAJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNf aGVscGVyX3VwZGF0ZV9wbGFuZSwKIAkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVy X2Rpc2FibGVfcGxhbmUsCkBAIC0xNTMsNiArMjY2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfZnVuY3MgbWFsaWRwX2RlX3BsYW5lX2Z1bmNzID0gewogCS5hdG9taWNfZHVwbGlj YXRlX3N0YXRlID0gbWFsaWRwX2R1cGxpY2F0ZV9wbGFuZV9zdGF0ZSwKIAkuYXRvbWljX2Rlc3Ry b3lfc3RhdGUgPSBtYWxpZHBfZGVzdHJveV9wbGFuZV9zdGF0ZSwKIAkuYXRvbWljX3ByaW50X3N0 YXRlID0gbWFsaWRwX3BsYW5lX2F0b21pY19wcmludF9zdGF0ZSwKKwkuZm9ybWF0X21vZF9zdXBw b3J0ZWQgPSBtYWxpZHBfZm9ybWF0X21vZF9zdXBwb3J0ZWRfcGVyX3BsYW5lLAogfTsKIAogc3Rh dGljIGludCBtYWxpZHBfc2VfY2hlY2tfc2NhbGluZyhzdHJ1Y3QgbWFsaWRwX3BsYW5lICptcCwK QEAgLTQwNiw4ICs1MjAsOCBAQCBzdGF0aWMgaW50IG1hbGlkcF9kZV9wbGFuZV9jaGVjayhzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlmYiA9IHN0YXRlLT5mYjsKIAogCW1zLT5mb3JtYXQgPSBt YWxpZHBfaHdfZ2V0X2Zvcm1hdF9pZCgmbXAtPmh3ZGV2LT5ody0+bWFwLAotCQkJCQkgICAgIG1w LT5sYXllci0+aWQsCi0JCQkJCSAgICAgZmItPmZvcm1hdC0+Zm9ybWF0KTsKKwkJCQkJICAgICBt cC0+bGF5ZXItPmlkLCBmYi0+Zm9ybWF0LT5mb3JtYXQsCisJCQkJCSAgICAgISFmYi0+bW9kaWZp ZXIpOwogCWlmIChtcy0+Zm9ybWF0ID09IE1BTElEUF9JTlZBTElEX0ZPUk1BVF9JRCkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKQEAgLTQ2OSw2ICs1ODMsMTIgQEAgc3RhdGljIGludCBtYWxpZHBfZGVf cGxhbmVfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQlyZXR1cm4gLUVJTlZBTDsK IAl9CiAKKwkvKiBTTUFSVCBsYXllciBkb2VzIG5vdCBzdXBwb3J0IEFGQkMgKi8KKwlpZiAobXAt PmxheWVyLT5pZCA9PSBERV9TTUFSVCAmJiBmYi0+bW9kaWZpZXIpIHsKKwkJRFJNX0VSUk9SKCJB RkJDIGZyYW1lYnVmZmVyIG5vdCBzdXBwb3J0ZWQgaW4gU01BUlQgbGF5ZXIiKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCiAJbXMtPnJvdG1lbV9zaXplID0gMDsKIAlpZiAoc3RhdGUtPnJvdGF0 aW9uICYgTUFMSURQX1JPVEFURURfTUFTSykgewogCQlpbnQgdmFsOwotLSAKMi43LjQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=