From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 08/12] drm/fb-helper: Move out commit code Date: Sun, 7 Apr 2019 18:52:39 +0200 Message-ID: <20190407165243.54043-9-noralf@tronnes.org> References: <20190407165243.54043-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190407165243.54043-1-noralf@tronnes.org> 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: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= List-Id: dri-devel@lists.freedesktop.org TW92ZSB0aGUgbW9kZXNldCBjb21taXQgY29kZSB0byBkcm1fY2xpZW50X21vZGVzZXQuCk5vIGNo YW5nZXMgZXhjZXB0IGV4cG9ydGluZyBBUEkuCgp2MjogTW92ZSB0byBkcm1fY2xpZW50X21vZGVz ZXQuYyBpbnN0ZWFkIG9mIGRybV9jbGllbnQuYwoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hu bmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRf bW9kZXNldC5jIHwgMjg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL2RybV9mYl9oZWxwZXIuYyAgICAgIHwgMjgyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBpbmNsdWRlL2RybS9kcm1fY2xpZW50LmggICAgICAgICAgICAgfCAgIDQgKwogMyBmaWxlcyBj aGFuZ2VkLCAyOTEgaW5zZXJ0aW9ucygrKSwgMjgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fY2xpZW50X21vZGVzZXQuYwppbmRleCBiYjM0MjIyYzlkYjguLjk0YjUyZjk3YzA2YiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwpAQCAtMTEsOSArMTEsMTQgQEAKICNpbmNs dWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAorI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KICNpbmNsdWRl IDxkcm0vZHJtX2NydGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUg PGRybS9kcm1fZHJ2Lmg+CisKKyNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgorI2luY2x1 ZGUgImRybV9pbnRlcm5hbC5oIgogCiAvKiBVc2VkIGJ5IGRybV9jbGllbnQgYW5kIGRybV9mYl9o ZWxwZXIgKi8KIGludCBkcm1fY2xpZW50X21vZGVzZXRfY3JlYXRlKHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50KQpAQCAtMTAwLDMgKzEwNSwyODUgQEAgc3RydWN0IGRybV9tb2RlX3NldCAq ZHJtX2NsaWVudF9maW5kX21vZGVzZXQoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHN0 cnUKIH0KIC8qIFRPRE86IFJlbW92ZSBleHBvcnQgd2hlbiBtb2Rlc2V0IGNvZGUgaGFzIGJlZW4g bW92ZWQgb3ZlciAqLwogRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X2ZpbmRfbW9kZXNldCk7CisK Ky8qKgorICogZHJtX2NsaWVudF9wYW5lbF9yb3RhdGlvbigpIC0gQ2hlY2sgcGFuZWwgb3JpZW50 YXRpb24KKyAqIEBtb2Rlc2V0OiBEUk0gbW9kZXNldAorICogQHJvdGF0aW9uOiBSZXR1cm5lZCBy b3RhdGlvbiB2YWx1ZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBwcmltYXJ5 IHBsYW5lIGluIEBtb2Rlc2V0IGNhbiBodyByb3RhdGUgdG8gbWF0Y2gKKyAqIHRoZSBwYW5lbCBv cmllbnRhdGlvbiBvbiBpdHMgY29ubmVjdG9yLgorICoKKyAqIE5vdGU6IEN1cnJlbnRseSBvbmx5 IDAgYW5kIDE4MCBkZWdyZWVzIGFyZSBzdXBwb3J0ZWQuCisgKgorICogUmV0dXJuOgorICogVHJ1 ZSBpZiB0aGUgcGxhbmUgY2FuIGRvIHRoZSByb3RhdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLgorICov Citib29sIGRybV9jbGllbnRfcGFuZWxfcm90YXRpb24oc3RydWN0IGRybV9tb2RlX3NldCAqbW9k ZXNldCwgdW5zaWduZWQgaW50ICpyb3RhdGlvbikKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yID0gbW9kZXNldC0+Y29ubmVjdG9yc1swXTsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSA9IG1vZGVzZXQtPmNydGMtPnByaW1hcnk7CisJdTY0IHZhbGlkX21hc2sgPSAwOworCXVu c2lnbmVkIGludCBpOworCisJaWYgKCFtb2Rlc2V0LT5udW1fY29ubmVjdG9ycykKKwkJcmV0dXJu IGZhbHNlOworCisJc3dpdGNoIChjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5wYW5lbF9vcmllbnRh dGlvbikgeworCWNhc2UgRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fQk9UVE9NX1VQOgorCQkq cm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfMTgwOworCQlicmVhazsKKwljYXNlIERSTV9NT0RF X1BBTkVMX09SSUVOVEFUSU9OX0xFRlRfVVA6CisJCSpyb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFU RV85MDsKKwkJYnJlYWs7CisJY2FzZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9SSUdIVF9V UDoKKwkJKnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzI3MDsKKwkJYnJlYWs7CisJZGVmYXVs dDoKKwkJKnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzA7CisJfQorCisJLyoKKwkgKiBUT0RP OiBzdXBwb3J0IDkwIC8gMjcwIGRlZ3JlZSBoYXJkd2FyZSByb3RhdGlvbiwKKwkgKiBkZXBlbmRp bmcgb24gdGhlIGhhcmR3YXJlIHRoaXMgbWF5IHJlcXVpcmUgdGhlIGZyYW1lYnVmZmVyCisJICog dG8gYmUgaW4gYSBzcGVjaWZpYyB0aWxpbmcgZm9ybWF0LgorCSAqLworCWlmICgqcm90YXRpb24g IT0gRFJNX01PREVfUk9UQVRFXzE4MCB8fCAhcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5KQorCQly ZXR1cm4gZmFsc2U7CisKKwlmb3IgKGkgPSAwOyBpIDwgcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5 LT5udW1fdmFsdWVzOyBpKyspCisJCXZhbGlkX21hc2sgfD0gKDFVTEwgPDwgcGxhbmUtPnJvdGF0 aW9uX3Byb3BlcnR5LT52YWx1ZXNbaV0pOworCisJaWYgKCEoKnJvdGF0aW9uICYgdmFsaWRfbWFz aykpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW50IGRy bV9jbGllbnRfbW9kZXNldF9jb21taXRfYXRvbWljKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xp ZW50LCBib29sIGFjdGl2ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5k ZXY7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOworCXN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9z ZXQ7CisJaW50IHJldDsKKworCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKKwor CXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOworCWlmICghc3RhdGUpIHsKKwkJ cmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXRfY3R4OworCX0KKworCXN0YXRlLT5hY3F1aXJlX2N0 eCA9ICZjdHg7CityZXRyeToKKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsIGRldikgeworCQlw bGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7CisJ CWlmIChJU19FUlIocGxhbmVfc3RhdGUpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHBsYW5lX3N0YXRl KTsKKwkJCWdvdG8gb3V0X3N0YXRlOworCQl9CisKKwkJcGxhbmVfc3RhdGUtPnJvdGF0aW9uID0g RFJNX01PREVfUk9UQVRFXzA7CisKKwkJLyogZGlzYWJsZSBub24tcHJpbWFyeTogKi8KKwkJaWYg KHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCisJCQljb250aW51ZTsKKwor CQlyZXQgPSBfX2RybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUocGxhbmUsIHBsYW5lX3N0 YXRlKTsKKwkJaWYgKHJldCAhPSAwKQorCQkJZ290byBvdXRfc3RhdGU7CisJfQorCisJZHJtX2Ns aWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKKwkJc3RydWN0IGRybV9w bGFuZSAqcHJpbWFyeSA9IG1vZGVfc2V0LT5jcnRjLT5wcmltYXJ5OworCQl1bnNpZ25lZCBpbnQg cm90YXRpb247CisKKwkJaWYgKGRybV9jbGllbnRfcGFuZWxfcm90YXRpb24obW9kZV9zZXQsICZy b3RhdGlvbikpIHsKKwkJCS8qIENhbm5vdCBmYWlsIGFzIHdlJ3ZlIGFscmVhZHkgZ290dGVuIHRo ZSBwbGFuZSBzdGF0ZSBhYm92ZSAqLworCQkJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9u ZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHByaW1hcnkpOworCQkJcGxhbmVfc3RhdGUtPnJvdGF0aW9u ID0gcm90YXRpb247CisJCX0KKworCQlyZXQgPSBfX2RybV9hdG9taWNfaGVscGVyX3NldF9jb25m aWcobW9kZV9zZXQsIHN0YXRlKTsKKwkJaWYgKHJldCAhPSAwKQorCQkJZ290byBvdXRfc3RhdGU7 CisKKwkJLyoKKwkJICogX19kcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnKCkgc2V0cyBhY3Rp dmUgd2hlbiBhCisJCSAqIG1vZGUgaXMgc2V0LCB1bmNvbmRpdGlvbmFsbHkgY2xlYXIgaXQgaWYg d2UgZm9yY2UgRFBNUyBvZmYKKwkJICovCisJCWlmICghYWN0aXZlKSB7CisJCQlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSBtb2RlX3NldC0+Y3J0YzsKKwkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsK KworCQkJY3J0Y19zdGF0ZS0+YWN0aXZlID0gZmFsc2U7CisJCX0KKwl9CisKKwlyZXQgPSBkcm1f YXRvbWljX2NvbW1pdChzdGF0ZSk7CisKK291dF9zdGF0ZToKKwlpZiAocmV0ID09IC1FREVBRExL KQorCQlnb3RvIGJhY2tvZmY7CisKKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CitvdXRf Y3R4OgorCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CisJZHJtX21vZGVzZXRfYWNxdWly ZV9maW5pKCZjdHgpOworCisJcmV0dXJuIHJldDsKKworYmFja29mZjoKKwlkcm1fYXRvbWljX3N0 YXRlX2NsZWFyKHN0YXRlKTsKKwlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOworCisJZ290byBy ZXRyeTsKK30KKworc3RhdGljIGludCBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2xlZ2FjeShz dHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY2xpZW50LT5kZXY7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQ7CisJc3RydWN0 IGRybV9wbGFuZSAqcGxhbmU7CisJaW50IHJldCA9IDA7CisKKwlkcm1fbW9kZXNldF9sb2NrX2Fs bChkZXYpOworCWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgZGV2KSB7CisJCWlmIChwbGFuZS0+ dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQorCQkJZHJtX3BsYW5lX2ZvcmNlX2Rpc2Fi bGUocGxhbmUpOworCisJCWlmIChwbGFuZS0+cm90YXRpb25fcHJvcGVydHkpCisJCQlkcm1fbW9k ZV9wbGFuZV9zZXRfb2JqX3Byb3AocGxhbmUsCisJCQkJCQkgICAgcGxhbmUtPnJvdGF0aW9uX3By b3BlcnR5LAorCQkJCQkJICAgIERSTV9NT0RFX1JPVEFURV8wKTsKKwl9CisKKwlkcm1fY2xpZW50 X2Zvcl9lYWNoX21vZGVzZXQobW9kZV9zZXQsIGNsaWVudCkgeworCQlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBtb2RlX3NldC0+Y3J0YzsKKworCQlpZiAoY3J0Yy0+ZnVuY3MtPmN1cnNvcl9zZXQy KSB7CisJCQlyZXQgPSBjcnRjLT5mdW5jcy0+Y3Vyc29yX3NldDIoY3J0YywgTlVMTCwgMCwgMCwg MCwgMCwgMCk7CisJCQlpZiAocmV0KQorCQkJCWdvdG8gb3V0OworCQl9IGVsc2UgaWYgKGNydGMt PmZ1bmNzLT5jdXJzb3Jfc2V0KSB7CisJCQlyZXQgPSBjcnRjLT5mdW5jcy0+Y3Vyc29yX3NldChj cnRjLCBOVUxMLCAwLCAwLCAwKTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBvdXQ7CisJCX0KKwor CQlyZXQgPSBkcm1fbW9kZV9zZXRfY29uZmlnX2ludGVybmFsKG1vZGVfc2V0KTsKKwkJaWYgKHJl dCkKKwkJCWdvdG8gb3V0OworCX0KK291dDoKKwlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGRybV9jbGllbnRfbW9kZXNldF9jb21taXRf Zm9yY2UoKSAtIEZvcmNlIGNvbW1pdCBDUlRDIGNvbmZpZ3VyYXRpb24KKyAqIEBjbGllbnQ6IERS TSBjbGllbnQKKyAqCisgKiBDb21taXQgbW9kZXNldCBjb25maWd1cmF0aW9uIHRvIGNydGNzIHdp dGhvdXQgY2hlY2tpbmcgaWYgdGhlcmUgaXMgYSBEUk0gbWFzdGVyLgorICoKKyAqIFJldHVybnM6 CisgKiBaZXJvIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgor ICovCitpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9mb3JjZShzdHJ1Y3QgZHJtX2NsaWVu dF9kZXYgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7 CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CisJaWYg KGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChkZXYpKQorCQlyZXQgPSBkcm1fY2xpZW50X21v ZGVzZXRfY29tbWl0X2F0b21pYyhjbGllbnQsIHRydWUpOworCWVsc2UKKwkJcmV0ID0gZHJtX2Ns aWVudF9tb2Rlc2V0X2NvbW1pdF9sZWdhY3koY2xpZW50KTsKKwltdXRleF91bmxvY2soJmNsaWVu dC0+bW9kZXNldF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1f Y2xpZW50X21vZGVzZXRfY29tbWl0X2ZvcmNlKTsKKworLyoqCisgKiBkcm1fY2xpZW50X21vZGVz ZXRfY29tbWl0KCkgLSBDb21taXQgQ1JUQyBjb25maWd1cmF0aW9uCisgKiBAY2xpZW50OiBEUk0g Y2xpZW50CisgKgorICogQ29tbWl0IG1vZGVzZXQgY29uZmlndXJhdGlvbiB0byBjcnRjcy4KKyAq CisgKiBSZXR1cm5zOgorICogWmVybyBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUg b24gZmFpbHVyZS4KKyAqLworaW50IGRybV9jbGllbnRfbW9kZXNldF9jb21taXQoc3RydWN0IGRy bV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVu dC0+ZGV2OworCWludCByZXQ7CisKKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShk ZXYpKQorCQlyZXR1cm4gLUVCVVNZOworCisJcmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1p dF9mb3JjZShjbGllbnQpOworCisJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRldik7CisK KwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0 KTsKKworc3RhdGljIHZvaWQgZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXNfbGVnYWN5KHN0cnVjdCBk cm1fY2xpZW50X2RldiAqY2xpZW50LCBpbnQgZHBtc19tb2RlKQoreworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjbGllbnQtPmRldjsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y OworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7CisJaW50IGo7CisKKwlkcm1fbW9kZXNl dF9sb2NrX2FsbChkZXYpOworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBj bGllbnQpIHsKKwkJaWYgKCFtb2Rlc2V0LT5jcnRjLT5lbmFibGVkKQorCQkJY29udGludWU7CisK KwkJZm9yIChqID0gMDsgaiA8IG1vZGVzZXQtPm51bV9jb25uZWN0b3JzOyBqKyspIHsKKwkJCWNv bm5lY3RvciA9IG1vZGVzZXQtPmNvbm5lY3RvcnNbal07CisJCQljb25uZWN0b3ItPmZ1bmNzLT5k cG1zKGNvbm5lY3RvciwgZHBtc19tb2RlKTsKKwkJCWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3Zh bHVlKCZjb25uZWN0b3ItPmJhc2UsCisJCQkJZGV2LT5tb2RlX2NvbmZpZy5kcG1zX3Byb3BlcnR5 LCBkcG1zX21vZGUpOworCQl9CisJfQorCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKK30K KworLyoqCisgKiBkcm1fY2xpZW50X21vZGVzZXRfZHBtcygpIC0gU2V0IERQTVMgbW9kZQorICog QGNsaWVudDogRFJNIGNsaWVudAorICogQG1vZGU6IERQTVMgbW9kZQorICoKKyAqIE5vdGU6IEZv ciBhdG9taWMgZHJpdmVycyBAbW9kZSBpcyByZWR1Y2VkIHRvIG9uL29mZi4KKyAqCisgKiBSZXR1 cm5zOgorICogWmVybyBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVy ZS4KKyAqLworaW50IGRybV9jbGllbnRfbW9kZXNldF9kcG1zKHN0cnVjdCBkcm1fY2xpZW50X2Rl diAqY2xpZW50LCBpbnQgbW9kZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50 LT5kZXY7CisJaW50IHJldCA9IDA7CisKKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWly ZShkZXYpKQorCQlyZXR1cm4gLUVCVVNZOworCisJbXV0ZXhfbG9jaygmY2xpZW50LT5tb2Rlc2V0 X211dGV4KTsKKwlpZiAoZHJtX2Rydl91c2VzX2F0b21pY19tb2Rlc2V0KGRldikpCisJCXJldCA9 IGRybV9jbGllbnRfbW9kZXNldF9jb21taXRfYXRvbWljKGNsaWVudCwgbW9kZSA9PSBEUk1fTU9E RV9EUE1TX09OKTsKKwllbHNlCisJCWRybV9jbGllbnRfbW9kZXNldF9kcG1zX2xlZ2FjeShjbGll bnQsIG1vZGUpOworCW11dGV4X3VubG9jaygmY2xpZW50LT5tb2Rlc2V0X211dGV4KTsKKworCWRy bV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOworCisJcmV0dXJuIHJldDsKK30KK0VYUE9S VF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMK aW5kZXggMDIyOWUxODdlNmRlLi43M2ZiY2Q3NDhkZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu YwpAQCAtNDAsMTAgKzQwLDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgogI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5o PgotI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogCi0jaW5jbHVkZSAiZHJtX2Ny dGNfaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJkcm1fY3J0Y19oZWxwZXJfaW50ZXJuYWwuaCIKICNp bmNsdWRlICJkcm1faW50ZXJuYWwuaCIKIAogc3RhdGljIGJvb2wgZHJtX2ZiZGV2X2VtdWxhdGlv biA9IHRydWU7CkBAIC0zODgsMjMzICszODUsNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9kZWJ1Z19s ZWF2ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBl cl9kZWJ1Z19sZWF2ZSk7CiAKLS8qKgotICogZHJtX2NsaWVudF9wYW5lbF9yb3RhdGlvbigpIC0g Q2hlY2sgcGFuZWwgb3JpZW50YXRpb24KLSAqIEBtb2Rlc2V0OiBEUk0gbW9kZXNldAotICogQHJv dGF0aW9uOiBSZXR1cm5lZCByb3RhdGlvbiB2YWx1ZQotICoKLSAqIFRoaXMgZnVuY3Rpb24gY2hl Y2tzIGlmIHRoZSBwcmltYXJ5IHBsYW5lIGluIEBtb2Rlc2V0IGNhbiBodyByb3RhdGUgdG8gbWF0 Y2gKLSAqIHRoZSBwYW5lbCBvcmllbnRhdGlvbiBvbiBpdHMgY29ubmVjdG9yLgotICoKLSAqIE5v dGU6IEN1cnJlbnRseSBvbmx5IDAgYW5kIDE4MCBkZWdyZWVzIGFyZSBzdXBwb3J0ZWQuCi0gKgot ICogUmV0dXJuOgotICogVHJ1ZSBpZiB0aGUgcGxhbmUgY2FuIGRvIHRoZSByb3RhdGlvbiwgZmFs c2Ugb3RoZXJ3aXNlLgotICovCi1ib29sIGRybV9jbGllbnRfcGFuZWxfcm90YXRpb24oc3RydWN0 IGRybV9tb2RlX3NldCAqbW9kZXNldCwgdW5zaWduZWQgaW50ICpyb3RhdGlvbikKLXsKLQlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gbW9kZXNldC0+Y29ubmVjdG9yc1swXTsKLQlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IG1vZGVzZXQtPmNydGMtPnByaW1hcnk7Ci0JdTY0IHZh bGlkX21hc2sgPSAwOwotCXVuc2lnbmVkIGludCBpOwotCi0JaWYgKCFtb2Rlc2V0LT5udW1fY29u bmVjdG9ycykKLQkJcmV0dXJuIGZhbHNlOwotCi0Jc3dpdGNoIChjb25uZWN0b3ItPmRpc3BsYXlf aW5mby5wYW5lbF9vcmllbnRhdGlvbikgewotCWNhc2UgRFJNX01PREVfUEFORUxfT1JJRU5UQVRJ T05fQk9UVE9NX1VQOgotCQkqcm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfMTgwOwotCQlicmVh azsKLQljYXNlIERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX0xFRlRfVVA6Ci0JCSpyb3RhdGlv biA9IERSTV9NT0RFX1JPVEFURV85MDsKLQkJYnJlYWs7Ci0JY2FzZSBEUk1fTU9ERV9QQU5FTF9P UklFTlRBVElPTl9SSUdIVF9VUDoKLQkJKnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzI3MDsK LQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJKnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzA7Ci0J fQotCi0JLyoKLQkgKiBUT0RPOiBzdXBwb3J0IDkwIC8gMjcwIGRlZ3JlZSBoYXJkd2FyZSByb3Rh dGlvbiwKLQkgKiBkZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIHRoaXMgbWF5IHJlcXVpcmUgdGhl IGZyYW1lYnVmZmVyCi0JICogdG8gYmUgaW4gYSBzcGVjaWZpYyB0aWxpbmcgZm9ybWF0LgotCSAq LwotCWlmICgqcm90YXRpb24gIT0gRFJNX01PREVfUk9UQVRFXzE4MCB8fCAhcGxhbmUtPnJvdGF0 aW9uX3Byb3BlcnR5KQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgcGxhbmUt PnJvdGF0aW9uX3Byb3BlcnR5LT5udW1fdmFsdWVzOyBpKyspCi0JCXZhbGlkX21hc2sgfD0gKDFV TEwgPDwgcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5LT52YWx1ZXNbaV0pOwotCi0JaWYgKCEoKnJv dGF0aW9uICYgdmFsaWRfbWFzaykpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVybiB0cnVlOwot fQotCi1zdGF0aWMgaW50IGRybV9jbGllbnRfbW9kZXNldF9jb21taXRfYXRvbWljKHN0cnVjdCBk cm1fY2xpZW50X2RldiAqY2xpZW50LCBib29sIGFjdGl2ZSkKLXsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY2xpZW50LT5kZXY7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGU7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlOwotCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Ci0Jc3RydWN0IGRy bV9tb2RlX3NldCAqbW9kZV9zZXQ7Ci0JaW50IHJldDsKLQotCWRybV9tb2Rlc2V0X2FjcXVpcmVf aW5pdCgmY3R4LCAwKTsKLQotCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwot CWlmICghc3RhdGUpIHsKLQkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBvdXRfY3R4OwotCX0KLQot CXN0YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7Ci1yZXRyeToKLQlkcm1fZm9yX2VhY2hfcGxhbmUo cGxhbmUsIGRldikgewotCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRl KHN0YXRlLCBwbGFuZSk7Ci0JCWlmIChJU19FUlIocGxhbmVfc3RhdGUpKSB7Ci0JCQlyZXQgPSBQ VFJfRVJSKHBsYW5lX3N0YXRlKTsKLQkJCWdvdG8gb3V0X3N0YXRlOwotCQl9Ci0KLQkJcGxhbmVf c3RhdGUtPnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzA7Ci0KLQkJLyogZGlzYWJsZSBub24t cHJpbWFyeTogKi8KLQkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkp Ci0JCQljb250aW51ZTsKLQotCQlyZXQgPSBfX2RybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxh bmUocGxhbmUsIHBsYW5lX3N0YXRlKTsKLQkJaWYgKHJldCAhPSAwKQotCQkJZ290byBvdXRfc3Rh dGU7Ci0JfQotCi0JZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQp IHsKLQkJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IG1vZGVfc2V0LT5jcnRjLT5wcmltYXJ5 OwotCQl1bnNpZ25lZCBpbnQgcm90YXRpb247Ci0KLQkJaWYgKGRybV9jbGllbnRfcGFuZWxfcm90 YXRpb24obW9kZV9zZXQsICZyb3RhdGlvbikpIHsKLQkJCS8qIENhbm5vdCBmYWlsIGFzIHdlJ3Zl IGFscmVhZHkgZ290dGVuIHRoZSBwbGFuZSBzdGF0ZSBhYm92ZSAqLwotCQkJcGxhbmVfc3RhdGUg PSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHByaW1hcnkpOwotCQkJcGxh bmVfc3RhdGUtPnJvdGF0aW9uID0gcm90YXRpb247Ci0JCX0KLQotCQlyZXQgPSBfX2RybV9hdG9t aWNfaGVscGVyX3NldF9jb25maWcobW9kZV9zZXQsIHN0YXRlKTsKLQkJaWYgKHJldCAhPSAwKQot CQkJZ290byBvdXRfc3RhdGU7Ci0KLQkJLyoKLQkJICogX19kcm1fYXRvbWljX2hlbHBlcl9zZXRf Y29uZmlnKCkgc2V0cyBhY3RpdmUgd2hlbiBhCi0JCSAqIG1vZGUgaXMgc2V0LCB1bmNvbmRpdGlv bmFsbHkgY2xlYXIgaXQgaWYgd2UgZm9yY2UgRFBNUyBvZmYKLQkJICovCi0JCWlmICghYWN0aXZl KSB7Ci0JCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBtb2RlX3NldC0+Y3J0YzsKLQkJCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0 YXRlKHN0YXRlLCBjcnRjKTsKLQotCQkJY3J0Y19zdGF0ZS0+YWN0aXZlID0gZmFsc2U7Ci0JCX0K LQl9Ci0KLQlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Ci0KLW91dF9zdGF0ZToKLQlp ZiAocmV0ID09IC1FREVBRExLKQotCQlnb3RvIGJhY2tvZmY7Ci0KLQlkcm1fYXRvbWljX3N0YXRl X3B1dChzdGF0ZSk7Ci1vdXRfY3R4OgotCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Ci0J ZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwotCi0JcmV0dXJuIHJldDsKLQotYmFja29m ZjoKLQlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKLQlkcm1fbW9kZXNldF9iYWNrb2Zm KCZjdHgpOwotCi0JZ290byByZXRyeTsKLX0KLQotc3RhdGljIGludCBkcm1fY2xpZW50X21vZGVz ZXRfY29tbWl0X2xlZ2FjeShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKLXsKLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7Ci0Jc3RydWN0IGRybV9tb2RlX3NldCAq bW9kZV9zZXQ7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0JaW50IHJldCA9IDA7Ci0KLQlk cm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwotCWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgZGV2 KSB7Ci0JCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQotCQkJZHJt X3BsYW5lX2ZvcmNlX2Rpc2FibGUocGxhbmUpOwotCi0JCWlmIChwbGFuZS0+cm90YXRpb25fcHJv cGVydHkpCi0JCQlkcm1fbW9kZV9wbGFuZV9zZXRfb2JqX3Byb3AocGxhbmUsCi0JCQkJCQkgICAg cGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5LAotCQkJCQkJICAgIERSTV9NT0RFX1JPVEFURV8wKTsK LQl9Ci0KLQlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZV9zZXQsIGNsaWVudCkgewot CQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBtb2RlX3NldC0+Y3J0YzsKLQotCQlpZiAoY3J0Yy0+ ZnVuY3MtPmN1cnNvcl9zZXQyKSB7Ci0JCQlyZXQgPSBjcnRjLT5mdW5jcy0+Y3Vyc29yX3NldDIo Y3J0YywgTlVMTCwgMCwgMCwgMCwgMCwgMCk7Ci0JCQlpZiAocmV0KQotCQkJCWdvdG8gb3V0Owot CQl9IGVsc2UgaWYgKGNydGMtPmZ1bmNzLT5jdXJzb3Jfc2V0KSB7Ci0JCQlyZXQgPSBjcnRjLT5m dW5jcy0+Y3Vyc29yX3NldChjcnRjLCBOVUxMLCAwLCAwLCAwKTsKLQkJCWlmIChyZXQpCi0JCQkJ Z290byBvdXQ7Ci0JCX0KLQotCQlyZXQgPSBkcm1fbW9kZV9zZXRfY29uZmlnX2ludGVybmFsKG1v ZGVfc2V0KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0OwotCX0KLW91dDoKLQlkcm1fbW9kZXNl dF91bmxvY2tfYWxsKGRldik7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi0vKioKLSAqIGRybV9jbGll bnRfbW9kZXNldF9jb21taXRfZm9yY2UoKSAtIEZvcmNlIGNvbW1pdCBDUlRDIGNvbmZpZ3VyYXRp b24KLSAqIEBjbGllbnQ6IERSTSBjbGllbnQKLSAqCi0gKiBDb21taXQgbW9kZXNldCBjb25maWd1 cmF0aW9uIHRvIGNydGNzIHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlcmUgaXMgYSBEUk0gbWFzdGVy LgotICoKLSAqIFJldHVybnM6Ci0gKiBaZXJvIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3Ig Y29kZSBvbiBmYWlsdXJlLgotICovCi1pbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9mb3Jj ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY2xpZW50LT5kZXY7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmNsaWVudC0+bW9k ZXNldF9tdXRleCk7Ci0JaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChkZXYpKQotCQly ZXQgPSBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2F0b21pYyhjbGllbnQsIHRydWUpOwotCWVs c2UKLQkJcmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9sZWdhY3koY2xpZW50KTsKLQlt dXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwotfQot Ci0vKioKLSAqIGRybV9jbGllbnRfbW9kZXNldF9jb21taXQoKSAtIENvbW1pdCBDUlRDIGNvbmZp Z3VyYXRpb24KLSAqIEBjbGllbnQ6IERSTSBjbGllbnQKLSAqCi0gKiBDb21taXQgbW9kZXNldCBj b25maWd1cmF0aW9uIHRvIGNydGNzLgotICoKLSAqIFJldHVybnM6Ci0gKiBaZXJvIG9uIHN1Y2Nl c3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgotICovCi1pbnQgZHJtX2NsaWVu dF9tb2Rlc2V0X2NvbW1pdChzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKLXsKLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7Ci0JaW50IHJldDsKLQotCWlmICghZHJt X21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRldikpCi0JCXJldHVybiAtRUJVU1k7Ci0KLQlyZXQg PSBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2ZvcmNlKGNsaWVudCk7Ci0KLQlkcm1fbWFzdGVy X2ludGVybmFsX3JlbGVhc2UoZGV2KTsKLQotCXJldHVybiByZXQ7Ci19Ci0KIC8qKgogICogZHJt X2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQgLSByZXN0b3JlIGZiZGV2IGNv bmZpZ3VyYXRpb24KICAqIEBmYl9oZWxwZXI6IGRyaXZlci1hbGxvY2F0ZWQgZmJkZXYgaGVscGVy LCBjYW4gYmUgTlVMTApAQCAtNzA0LDU4ICs0NzQsNiBAQCBzdGF0aWMgc3RydWN0IHN5c3JxX2tl eV9vcCBzeXNycV9kcm1fZmJfaGVscGVyX3Jlc3RvcmVfb3AgPSB7CiBzdGF0aWMgc3RydWN0IHN5 c3JxX2tleV9vcCBzeXNycV9kcm1fZmJfaGVscGVyX3Jlc3RvcmVfb3AgPSB7IH07CiAjZW5kaWYK IAotc3RhdGljIHZvaWQgZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXNfbGVnYWN5KHN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50LCBpbnQgZHBtc19tb2RlKQotewotCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjbGllbnQtPmRldjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwot CXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7Ci0JaW50IGo7Ci0KLQlkcm1fbW9kZXNldF9s b2NrX2FsbChkZXYpOwotCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBjbGll bnQpIHsKLQkJaWYgKCFtb2Rlc2V0LT5jcnRjLT5lbmFibGVkKQotCQkJY29udGludWU7Ci0KLQkJ Zm9yIChqID0gMDsgaiA8IG1vZGVzZXQtPm51bV9jb25uZWN0b3JzOyBqKyspIHsKLQkJCWNvbm5l Y3RvciA9IG1vZGVzZXQtPmNvbm5lY3RvcnNbal07Ci0JCQljb25uZWN0b3ItPmZ1bmNzLT5kcG1z KGNvbm5lY3RvciwgZHBtc19tb2RlKTsKLQkJCWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVl KCZjb25uZWN0b3ItPmJhc2UsCi0JCQkJZGV2LT5tb2RlX2NvbmZpZy5kcG1zX3Byb3BlcnR5LCBk cG1zX21vZGUpOwotCQl9Ci0JfQotCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKLX0KLQot LyoqCi0gKiBkcm1fY2xpZW50X21vZGVzZXRfZHBtcygpIC0gU2V0IERQTVMgbW9kZQotICogQGNs aWVudDogRFJNIGNsaWVudAotICogQG1vZGU6IERQTVMgbW9kZQotICoKLSAqIE5vdGU6IEZvciBh dG9taWMgZHJpdmVycyBAbW9kZSBpcyByZWR1Y2VkIHRvIG9uL29mZi4KLSAqCi0gKiBSZXR1cm5z OgotICogWmVybyBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4K LSAqLwotaW50IGRybV9jbGllbnRfbW9kZXNldF9kcG1zKHN0cnVjdCBkcm1fY2xpZW50X2RldiAq Y2xpZW50LCBpbnQgbW9kZSkKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5k ZXY7Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShk ZXYpKQotCQlyZXR1cm4gLUVCVVNZOwotCi0JbXV0ZXhfbG9jaygmY2xpZW50LT5tb2Rlc2V0X211 dGV4KTsKLQlpZiAoZHJtX2Rydl91c2VzX2F0b21pY19tb2Rlc2V0KGRldikpCi0JCXJldCA9IGRy bV9jbGllbnRfbW9kZXNldF9jb21taXRfYXRvbWljKGNsaWVudCwgbW9kZSA9PSBEUk1fTU9ERV9E UE1TX09OKTsKLQllbHNlCi0JCWRybV9jbGllbnRfbW9kZXNldF9kcG1zX2xlZ2FjeShjbGllbnQs IG1vZGUpOwotCW11dGV4X3VubG9jaygmY2xpZW50LT5tb2Rlc2V0X211dGV4KTsKLQotCWRybV9t YXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwotCi0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGlj IHZvaWQgZHJtX2ZiX2hlbHBlcl9kcG1zKHN0cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgZHBtc19t b2RlKQogewogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7CmRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY2xpZW50LmggYi9pbmNsdWRlL2RybS9kcm1fY2xp ZW50LmgKaW5kZXggODU4YzhiZTcwODcwLi42NGI3MjViMzE4ZjIgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvZHJtL2RybV9jbGllbnQuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY2xpZW50LmgKQEAgLTE1 NCw2ICsxNTQsMTAgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF9jcmVhdGUoc3RydWN0IGRybV9j bGllbnRfZGV2ICpjbGllbnQpOwogdm9pZCBkcm1fY2xpZW50X21vZGVzZXRfZnJlZShzdHJ1Y3Qg ZHJtX2NsaWVudF9kZXYgKmNsaWVudCk7CiB2b2lkIGRybV9jbGllbnRfbW9kZXNldF9yZWxlYXNl KHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KTsKIHN0cnVjdCBkcm1fbW9kZV9zZXQgKmRy bV9jbGllbnRfZmluZF9tb2Rlc2V0KHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOworYm9vbCBkcm1fY2xpZW50X3BhbmVsX3JvdGF0aW9uKHN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQsIHVuc2lnbmVkIGludCAqcm90YXRpb24pOworaW50IGRy bV9jbGllbnRfbW9kZXNldF9jb21taXRfZm9yY2Uoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGll bnQpOworaW50IGRybV9jbGllbnRfbW9kZXNldF9jb21taXQoc3RydWN0IGRybV9jbGllbnRfZGV2 ICpjbGllbnQpOworaW50IGRybV9jbGllbnRfbW9kZXNldF9kcG1zKHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50LCBpbnQgbW9kZSk7CiAKIC8qKgogICogZHJtX2NsaWVudF9mb3JfZWFjaF9t b2Rlc2V0KCkgLSBJdGVyYXRlIG92ZXIgY2xpZW50IG1vZGVzZXRzCi0tIAoyLjIwLjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==