From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v5 07/11] drm/fb-helper: Move out commit code Date: Mon, 6 May 2019 20:01:35 +0200 Message-ID: <20190506180139.6913-8-noralf@tronnes.org> References: <20190506180139.6913-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190506180139.6913-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: 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 cm1fY2xpZW50X21vZGVzZXQuYwppbmRleCA2Njc3MGVkMzI5OWUuLmIyYWVkZWM2NTYzNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwpAQCAtMTEsOSArMTEsMTQgQEAKICNpbmNs dWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAorI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KICNpbmNsdWRl IDxkcm0vZHJtX2NydGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUg PGRybS9kcm1fZHJ2Lmg+CisKKyNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgorI2luY2x1 ZGUgImRybV9pbnRlcm5hbC5oIgogCiBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2NyZWF0ZShzdHJ1 Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKIHsKQEAgLTEwMiwzICsxMDcsMjg1IEBAIHN0cnVj dCBkcm1fbW9kZV9zZXQgKmRybV9jbGllbnRfZmluZF9tb2Rlc2V0KHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50LCBzdHJ1CiB9CiAvKiBUT0RPOiBSZW1vdmUgZXhwb3J0IHdoZW4gbW9kZXNl dCBjb2RlIGhhcyBiZWVuIG1vdmVkIG92ZXIgKi8KIEVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9m aW5kX21vZGVzZXQpOworCisvKioKKyAqIGRybV9jbGllbnRfcGFuZWxfcm90YXRpb24oKSAtIENo ZWNrIHBhbmVsIG9yaWVudGF0aW9uCisgKiBAbW9kZXNldDogRFJNIG1vZGVzZXQKKyAqIEByb3Rh dGlvbjogUmV0dXJuZWQgcm90YXRpb24gdmFsdWUKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNoZWNr cyBpZiB0aGUgcHJpbWFyeSBwbGFuZSBpbiBAbW9kZXNldCBjYW4gaHcgcm90YXRlIHRvIG1hdGNo CisgKiB0aGUgcGFuZWwgb3JpZW50YXRpb24gb24gaXRzIGNvbm5lY3Rvci4KKyAqCisgKiBOb3Rl OiBDdXJyZW50bHkgb25seSAwIGFuZCAxODAgZGVncmVlcyBhcmUgc3VwcG9ydGVkLgorICoKKyAq IFJldHVybjoKKyAqIFRydWUgaWYgdGhlIHBsYW5lIGNhbiBkbyB0aGUgcm90YXRpb24sIGZhbHNl IG90aGVyd2lzZS4KKyAqLworYm9vbCBkcm1fY2xpZW50X3BhbmVsX3JvdGF0aW9uKHN0cnVjdCBk cm1fbW9kZV9zZXQgKm1vZGVzZXQsIHVuc2lnbmVkIGludCAqcm90YXRpb24pCit7CisJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IG1vZGVzZXQtPmNvbm5lY3RvcnNbMF07CisJc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUgPSBtb2Rlc2V0LT5jcnRjLT5wcmltYXJ5OworCXU2NCB2YWxp ZF9tYXNrID0gMDsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWlmICghbW9kZXNldC0+bnVtX2Nvbm5l Y3RvcnMpCisJCXJldHVybiBmYWxzZTsKKworCXN3aXRjaCAoY29ubmVjdG9yLT5kaXNwbGF5X2lu Zm8ucGFuZWxfb3JpZW50YXRpb24pIHsKKwljYXNlIERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9O X0JPVFRPTV9VUDoKKwkJKnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzE4MDsKKwkJYnJlYWs7 CisJY2FzZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9MRUZUX1VQOgorCQkqcm90YXRpb24g PSBEUk1fTU9ERV9ST1RBVEVfOTA7CisJCWJyZWFrOworCWNhc2UgRFJNX01PREVfUEFORUxfT1JJ RU5UQVRJT05fUklHSFRfVVA6CisJCSpyb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8yNzA7CisJ CWJyZWFrOworCWRlZmF1bHQ6CisJCSpyb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8wOworCX0K KworCS8qCisJICogVE9ETzogc3VwcG9ydCA5MCAvIDI3MCBkZWdyZWUgaGFyZHdhcmUgcm90YXRp b24sCisJICogZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSB0aGlzIG1heSByZXF1aXJlIHRoZSBm cmFtZWJ1ZmZlcgorCSAqIHRvIGJlIGluIGEgc3BlY2lmaWMgdGlsaW5nIGZvcm1hdC4KKwkgKi8K KwlpZiAoKnJvdGF0aW9uICE9IERSTV9NT0RFX1JPVEFURV8xODAgfHwgIXBsYW5lLT5yb3RhdGlv bl9wcm9wZXJ0eSkKKwkJcmV0dXJuIGZhbHNlOworCisJZm9yIChpID0gMDsgaSA8IHBsYW5lLT5y b3RhdGlvbl9wcm9wZXJ0eS0+bnVtX3ZhbHVlczsgaSsrKQorCQl2YWxpZF9tYXNrIHw9ICgxVUxM IDw8IHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eS0+dmFsdWVzW2ldKTsKKworCWlmICghKCpyb3Rh dGlvbiAmIHZhbGlkX21hc2spKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30K Kworc3RhdGljIGludCBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2F0b21pYyhzdHJ1Y3QgZHJt X2NsaWVudF9kZXYgKmNsaWVudCwgYm9vbCBhY3RpdmUpCit7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNsaWVudC0+ZGV2OworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl OworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZTsKKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4OworCXN0cnVjdCBkcm1f bW9kZV9zZXQgKm1vZGVfc2V0OworCWludCByZXQ7CisKKwlkcm1fbW9kZXNldF9hY3F1aXJlX2lu aXQoJmN0eCwgMCk7CisKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlp ZiAoIXN0YXRlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0X2N0eDsKKwl9CisKKwlz dGF0ZS0+YWNxdWlyZV9jdHggPSAmY3R4OworcmV0cnk6CisJZHJtX2Zvcl9lYWNoX3BsYW5lKHBs YW5lLCBkZXYpIHsKKwkJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShz dGF0ZSwgcGxhbmUpOworCQlpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkgeworCQkJcmV0ID0gUFRS X0VSUihwbGFuZV9zdGF0ZSk7CisJCQlnb3RvIG91dF9zdGF0ZTsKKwkJfQorCisJCXBsYW5lX3N0 YXRlLT5yb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8wOworCisJCS8qIGRpc2FibGUgbm9uLXBy aW1hcnk6ICovCisJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQor CQkJY29udGludWU7CisKKwkJcmV0ID0gX19kcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5l KHBsYW5lLCBwbGFuZV9zdGF0ZSk7CisJCWlmIChyZXQgIT0gMCkKKwkJCWdvdG8gb3V0X3N0YXRl OworCX0KKworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2RlX3NldCwgY2xpZW50KSB7 CisJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBtb2RlX3NldC0+Y3J0Yy0+cHJpbWFyeTsK KwkJdW5zaWduZWQgaW50IHJvdGF0aW9uOworCisJCWlmIChkcm1fY2xpZW50X3BhbmVsX3JvdGF0 aW9uKG1vZGVfc2V0LCAmcm90YXRpb24pKSB7CisJCQkvKiBDYW5ub3QgZmFpbCBhcyB3ZSd2ZSBh bHJlYWR5IGdvdHRlbiB0aGUgcGxhbmUgc3RhdGUgYWJvdmUgKi8KKwkJCXBsYW5lX3N0YXRlID0g ZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBwcmltYXJ5KTsKKwkJCXBsYW5l X3N0YXRlLT5yb3RhdGlvbiA9IHJvdGF0aW9uOworCQl9CisKKwkJcmV0ID0gX19kcm1fYXRvbWlj X2hlbHBlcl9zZXRfY29uZmlnKG1vZGVfc2V0LCBzdGF0ZSk7CisJCWlmIChyZXQgIT0gMCkKKwkJ CWdvdG8gb3V0X3N0YXRlOworCisJCS8qCisJCSAqIF9fZHJtX2F0b21pY19oZWxwZXJfc2V0X2Nv bmZpZygpIHNldHMgYWN0aXZlIHdoZW4gYQorCQkgKiBtb2RlIGlzIHNldCwgdW5jb25kaXRpb25h bGx5IGNsZWFyIGl0IGlmIHdlIGZvcmNlIERQTVMgb2ZmCisJCSAqLworCQlpZiAoIWFjdGl2ZSkg eworCQkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQtPmNydGM7CisJCQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0 ZShzdGF0ZSwgY3J0Yyk7CisKKwkJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOworCQl9CisJ fQorCisJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOworCitvdXRfc3RhdGU6CisJaWYg KHJldCA9PSAtRURFQURMSykKKwkJZ290byBiYWNrb2ZmOworCisJZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOworb3V0X2N0eDoKKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOworCWRy bV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKKworCXJldHVybiByZXQ7CisKK2JhY2tvZmY6 CisJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7CisJZHJtX21vZGVzZXRfYmFja29mZigm Y3R4KTsKKworCWdvdG8gcmV0cnk7Cit9CisKK3N0YXRpYyBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0 X2NvbW1pdF9sZWdhY3koc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1v ZGVfc2V0OworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCWludCByZXQgPSAwOworCisJZHJt X21vZGVzZXRfbG9ja19hbGwoZGV2KTsKKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsIGRldikg eworCQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKKwkJCWRybV9w bGFuZV9mb3JjZV9kaXNhYmxlKHBsYW5lKTsKKworCQlpZiAocGxhbmUtPnJvdGF0aW9uX3Byb3Bl cnR5KQorCQkJZHJtX21vZGVfcGxhbmVfc2V0X29ial9wcm9wKHBsYW5lLAorCQkJCQkJICAgIHBs YW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSwKKwkJCQkJCSAgICBEUk1fTU9ERV9ST1RBVEVfMCk7CisJ fQorCisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKKwkJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQtPmNydGM7CisKKwkJaWYgKGNydGMtPmZ1 bmNzLT5jdXJzb3Jfc2V0MikgeworCQkJcmV0ID0gY3J0Yy0+ZnVuY3MtPmN1cnNvcl9zZXQyKGNy dGMsIE5VTEwsIDAsIDAsIDAsIDAsIDApOworCQkJaWYgKHJldCkKKwkJCQlnb3RvIG91dDsKKwkJ fSBlbHNlIGlmIChjcnRjLT5mdW5jcy0+Y3Vyc29yX3NldCkgeworCQkJcmV0ID0gY3J0Yy0+ZnVu Y3MtPmN1cnNvcl9zZXQoY3J0YywgTlVMTCwgMCwgMCwgMCk7CisJCQlpZiAocmV0KQorCQkJCWdv dG8gb3V0OworCQl9CisKKwkJcmV0ID0gZHJtX21vZGVfc2V0X2NvbmZpZ19pbnRlcm5hbChtb2Rl X3NldCk7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKwl9CitvdXQ6CisJZHJtX21vZGVzZXRf dW5sb2NrX2FsbChkZXYpOworCisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBkcm1fY2xpZW50 X21vZGVzZXRfY29tbWl0X2ZvcmNlKCkgLSBGb3JjZSBjb21taXQgQ1JUQyBjb25maWd1cmF0aW9u CisgKiBAY2xpZW50OiBEUk0gY2xpZW50CisgKgorICogQ29tbWl0IG1vZGVzZXQgY29uZmlndXJh dGlvbiB0byBjcnRjcyB3aXRob3V0IGNoZWNraW5nIGlmIHRoZXJlIGlzIGEgRFJNIG1hc3Rlci4K KyAqCisgKiBSZXR1cm5zOgorICogWmVybyBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb24gZmFpbHVyZS4KKyAqLworaW50IGRybV9jbGllbnRfbW9kZXNldF9jb21taXRfZm9yY2Uo c3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNsaWVudC0+ZGV2OworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZjbGllbnQtPm1vZGVz ZXRfbXV0ZXgpOworCWlmIChkcm1fZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQoZGV2KSkKKwkJcmV0 ID0gZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9hdG9taWMoY2xpZW50LCB0cnVlKTsKKwllbHNl CisJCXJldCA9IGRybV9jbGllbnRfbW9kZXNldF9jb21taXRfbGVnYWN5KGNsaWVudCk7CisJbXV0 ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KK0VY UE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9mb3JjZSk7CisKKy8qKgorICog ZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdCgpIC0gQ29tbWl0IENSVEMgY29uZmlndXJhdGlvbgor ICogQGNsaWVudDogRFJNIGNsaWVudAorICoKKyAqIENvbW1pdCBtb2Rlc2V0IGNvbmZpZ3VyYXRp b24gdG8gY3J0Y3MuCisgKgorICogUmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2VzcyBvciBuZWdh dGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fY2xpZW50X21vZGVzZXRf Y29tbWl0KHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjbGllbnQtPmRldjsKKwlpbnQgcmV0OworCisJaWYgKCFkcm1fbWFzdGVyX2lu dGVybmFsX2FjcXVpcmUoZGV2KSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCXJldCA9IGRybV9jbGll bnRfbW9kZXNldF9jb21taXRfZm9yY2UoY2xpZW50KTsKKworCWRybV9tYXN0ZXJfaW50ZXJuYWxf cmVsZWFzZShkZXYpOworCisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVu dF9tb2Rlc2V0X2NvbW1pdCk7CisKK3N0YXRpYyB2b2lkIGRybV9jbGllbnRfbW9kZXNldF9kcG1z X2xlZ2FjeShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgaW50IGRwbXNfbW9kZSkKK3sK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OworCWludCBq OworCisJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21v ZGVzZXQobW9kZXNldCwgY2xpZW50KSB7CisJCWlmICghbW9kZXNldC0+Y3J0Yy0+ZW5hYmxlZCkK KwkJCWNvbnRpbnVlOworCisJCWZvciAoaiA9IDA7IGogPCBtb2Rlc2V0LT5udW1fY29ubmVjdG9y czsgaisrKSB7CisJCQljb25uZWN0b3IgPSBtb2Rlc2V0LT5jb25uZWN0b3JzW2pdOworCQkJY29u bmVjdG9yLT5mdW5jcy0+ZHBtcyhjb25uZWN0b3IsIGRwbXNfbW9kZSk7CisJCQlkcm1fb2JqZWN0 X3Byb3BlcnR5X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLAorCQkJCWRldi0+bW9kZV9jb25m aWcuZHBtc19wcm9wZXJ0eSwgZHBtc19tb2RlKTsKKwkJfQorCX0KKwlkcm1fbW9kZXNldF91bmxv Y2tfYWxsKGRldik7Cit9CisKKy8qKgorICogZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXMoKSAtIFNl dCBEUE1TIG1vZGUKKyAqIEBjbGllbnQ6IERSTSBjbGllbnQKKyAqIEBtb2RlOiBEUE1TIG1vZGUK KyAqCisgKiBOb3RlOiBGb3IgYXRvbWljIGRyaXZlcnMgQG1vZGUgaXMgcmVkdWNlZCB0byBvbi9v ZmYuCisgKgorICogUmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJv ciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fY2xpZW50X21vZGVzZXRfZHBtcyhzdHJ1 Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgaW50IG1vZGUpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNsaWVudC0+ZGV2OworCWludCByZXQgPSAwOworCisJaWYgKCFkcm1fbWFzdGVy X2ludGVybmFsX2FjcXVpcmUoZGV2KSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCW11dGV4X2xvY2so JmNsaWVudC0+bW9kZXNldF9tdXRleCk7CisJaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNl dChkZXYpKQorCQlyZXQgPSBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2F0b21pYyhjbGllbnQs IG1vZGUgPT0gRFJNX01PREVfRFBNU19PTik7CisJZWxzZQorCQlkcm1fY2xpZW50X21vZGVzZXRf ZHBtc19sZWdhY3koY2xpZW50LCBtb2RlKTsKKwltdXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNl dF9tdXRleCk7CisKKwlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKKworCXJldHVy biByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF9kcG1zKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ZiX2hlbHBlci5jCmluZGV4IDYxN2U4NmQwMTBmYi4uYWZiNTQwZjU2NTU1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZmJfaGVscGVyLmMKQEAgLTQwLDEwICs0MCw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9m Yl9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CiAjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWMuaD4KLSNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KIAot I2luY2x1ZGUgImRybV9jcnRjX2ludGVybmFsLmgiCi0jaW5jbHVkZSAiZHJtX2NydGNfaGVscGVy X2ludGVybmFsLmgiCiAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCiAKIHN0YXRpYyBib29sIGRy bV9mYmRldl9lbXVsYXRpb24gPSB0cnVlOwpAQCAtMzg4LDIzMyArMzg1LDYgQEAgaW50IGRybV9m Yl9oZWxwZXJfZGVidWdfbGVhdmUoc3RydWN0IGZiX2luZm8gKmluZm8pCiB9CiBFWFBPUlRfU1lN Qk9MKGRybV9mYl9oZWxwZXJfZGVidWdfbGVhdmUpOwogCi0vKioKLSAqIGRybV9jbGllbnRfcGFu ZWxfcm90YXRpb24oKSAtIENoZWNrIHBhbmVsIG9yaWVudGF0aW9uCi0gKiBAbW9kZXNldDogRFJN IG1vZGVzZXQKLSAqIEByb3RhdGlvbjogUmV0dXJuZWQgcm90YXRpb24gdmFsdWUKLSAqCi0gKiBU aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgcHJpbWFyeSBwbGFuZSBpbiBAbW9kZXNldCBjYW4g aHcgcm90YXRlIHRvIG1hdGNoCi0gKiB0aGUgcGFuZWwgb3JpZW50YXRpb24gb24gaXRzIGNvbm5l Y3Rvci4KLSAqCi0gKiBOb3RlOiBDdXJyZW50bHkgb25seSAwIGFuZCAxODAgZGVncmVlcyBhcmUg c3VwcG9ydGVkLgotICoKLSAqIFJldHVybjoKLSAqIFRydWUgaWYgdGhlIHBsYW5lIGNhbiBkbyB0 aGUgcm90YXRpb24sIGZhbHNlIG90aGVyd2lzZS4KLSAqLwotYm9vbCBkcm1fY2xpZW50X3BhbmVs X3JvdGF0aW9uKHN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQsIHVuc2lnbmVkIGludCAqcm90 YXRpb24pCi17Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IG1vZGVzZXQtPmNv bm5lY3RvcnNbMF07Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBtb2Rlc2V0LT5jcnRjLT5w cmltYXJ5OwotCXU2NCB2YWxpZF9tYXNrID0gMDsKLQl1bnNpZ25lZCBpbnQgaTsKLQotCWlmICgh bW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMpCi0JCXJldHVybiBmYWxzZTsKLQotCXN3aXRjaCAoY29u bmVjdG9yLT5kaXNwbGF5X2luZm8ucGFuZWxfb3JpZW50YXRpb24pIHsKLQljYXNlIERSTV9NT0RF X1BBTkVMX09SSUVOVEFUSU9OX0JPVFRPTV9VUDoKLQkJKnJvdGF0aW9uID0gRFJNX01PREVfUk9U QVRFXzE4MDsKLQkJYnJlYWs7Ci0JY2FzZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9MRUZU X1VQOgotCQkqcm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfOTA7Ci0JCWJyZWFrOwotCWNhc2Ug RFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fUklHSFRfVVA6Ci0JCSpyb3RhdGlvbiA9IERSTV9N T0RFX1JPVEFURV8yNzA7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCSpyb3RhdGlvbiA9IERSTV9N T0RFX1JPVEFURV8wOwotCX0KLQotCS8qCi0JICogVE9ETzogc3VwcG9ydCA5MCAvIDI3MCBkZWdy ZWUgaGFyZHdhcmUgcm90YXRpb24sCi0JICogZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSB0aGlz IG1heSByZXF1aXJlIHRoZSBmcmFtZWJ1ZmZlcgotCSAqIHRvIGJlIGluIGEgc3BlY2lmaWMgdGls aW5nIGZvcm1hdC4KLQkgKi8KLQlpZiAoKnJvdGF0aW9uICE9IERSTV9NT0RFX1JPVEFURV8xODAg fHwgIXBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JZm9yIChp ID0gMDsgaSA8IHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eS0+bnVtX3ZhbHVlczsgaSsrKQotCQl2 YWxpZF9tYXNrIHw9ICgxVUxMIDw8IHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eS0+dmFsdWVzW2ld KTsKLQotCWlmICghKCpyb3RhdGlvbiAmIHZhbGlkX21hc2spKQotCQlyZXR1cm4gZmFsc2U7Ci0K LQlyZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGludCBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0 X2F0b21pYyhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgYm9vbCBhY3RpdmUpCi17Ci0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OwotCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlOwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCXN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKLQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHgg Y3R4OwotCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0OwotCWludCByZXQ7Ci0KLQlkcm1f bW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Ci0KLQlzdGF0ZSA9IGRybV9hdG9taWNfc3Rh dGVfYWxsb2MoZGV2KTsKLQlpZiAoIXN0YXRlKSB7Ci0JCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8g b3V0X2N0eDsKLQl9Ci0KLQlzdGF0ZS0+YWNxdWlyZV9jdHggPSAmY3R4OwotcmV0cnk6Ci0JZHJt X2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBkZXYpIHsKLQkJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwotCQlpZiAoSVNfRVJSKHBsYW5lX3N0YXRl KSkgewotCQkJcmV0ID0gUFRSX0VSUihwbGFuZV9zdGF0ZSk7Ci0JCQlnb3RvIG91dF9zdGF0ZTsK LQkJfQotCi0JCXBsYW5lX3N0YXRlLT5yb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8wOwotCi0J CS8qIGRpc2FibGUgbm9uLXByaW1hcnk6ICovCi0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExB TkVfVFlQRV9QUklNQVJZKQotCQkJY29udGludWU7Ci0KLQkJcmV0ID0gX19kcm1fYXRvbWljX2hl bHBlcl9kaXNhYmxlX3BsYW5lKHBsYW5lLCBwbGFuZV9zdGF0ZSk7Ci0JCWlmIChyZXQgIT0gMCkK LQkJCWdvdG8gb3V0X3N0YXRlOwotCX0KLQotCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldCht b2RlX3NldCwgY2xpZW50KSB7Ci0JCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBtb2RlX3Nl dC0+Y3J0Yy0+cHJpbWFyeTsKLQkJdW5zaWduZWQgaW50IHJvdGF0aW9uOwotCi0JCWlmIChkcm1f Y2xpZW50X3BhbmVsX3JvdGF0aW9uKG1vZGVfc2V0LCAmcm90YXRpb24pKSB7Ci0JCQkvKiBDYW5u b3QgZmFpbCBhcyB3ZSd2ZSBhbHJlYWR5IGdvdHRlbiB0aGUgcGxhbmUgc3RhdGUgYWJvdmUgKi8K LQkJCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBw cmltYXJ5KTsKLQkJCXBsYW5lX3N0YXRlLT5yb3RhdGlvbiA9IHJvdGF0aW9uOwotCQl9Ci0KLQkJ cmV0ID0gX19kcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnKG1vZGVfc2V0LCBzdGF0ZSk7Ci0J CWlmIChyZXQgIT0gMCkKLQkJCWdvdG8gb3V0X3N0YXRlOwotCi0JCS8qCi0JCSAqIF9fZHJtX2F0 b21pY19oZWxwZXJfc2V0X2NvbmZpZygpIHNldHMgYWN0aXZlIHdoZW4gYQotCQkgKiBtb2RlIGlz IHNldCwgdW5jb25kaXRpb25hbGx5IGNsZWFyIGl0IGlmIHdlIGZvcmNlIERQTVMgb2ZmCi0JCSAq LwotCQlpZiAoIWFjdGl2ZSkgewotCQkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQt PmNydGM7Ci0JCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Ci0KLQkJCWNydGNfc3RhdGUtPmFjdGl2 ZSA9IGZhbHNlOwotCQl9Ci0JfQotCi0JcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwot Ci1vdXRfc3RhdGU6Ci0JaWYgKHJldCA9PSAtRURFQURMSykKLQkJZ290byBiYWNrb2ZmOwotCi0J ZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwotb3V0X2N0eDoKLQlkcm1fbW9kZXNldF9kcm9w X2xvY2tzKCZjdHgpOwotCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKLQotCXJldHVy biByZXQ7Ci0KLWJhY2tvZmY6Ci0JZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Ci0JZHJt X21vZGVzZXRfYmFja29mZigmY3R4KTsKLQotCWdvdG8gcmV0cnk7Ci19Ci0KLXN0YXRpYyBpbnQg ZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9sZWdhY3koc3RydWN0IGRybV9jbGllbnRfZGV2ICpj bGllbnQpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OwotCXN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0OwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCWlu dCByZXQgPSAwOwotCi0JZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKLQlkcm1fZm9yX2VhY2hf cGxhbmUocGxhbmUsIGRldikgewotCQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSkKLQkJCWRybV9wbGFuZV9mb3JjZV9kaXNhYmxlKHBsYW5lKTsKLQotCQlpZiAocGxh bmUtPnJvdGF0aW9uX3Byb3BlcnR5KQotCQkJZHJtX21vZGVfcGxhbmVfc2V0X29ial9wcm9wKHBs YW5lLAotCQkJCQkJICAgIHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSwKLQkJCQkJCSAgICBEUk1f TU9ERV9ST1RBVEVfMCk7Ci0JfQotCi0JZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVf c2V0LCBjbGllbnQpIHsKLQkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQtPmNydGM7 Ci0KLQkJaWYgKGNydGMtPmZ1bmNzLT5jdXJzb3Jfc2V0MikgewotCQkJcmV0ID0gY3J0Yy0+ZnVu Y3MtPmN1cnNvcl9zZXQyKGNydGMsIE5VTEwsIDAsIDAsIDAsIDAsIDApOwotCQkJaWYgKHJldCkK LQkJCQlnb3RvIG91dDsKLQkJfSBlbHNlIGlmIChjcnRjLT5mdW5jcy0+Y3Vyc29yX3NldCkgewot CQkJcmV0ID0gY3J0Yy0+ZnVuY3MtPmN1cnNvcl9zZXQoY3J0YywgTlVMTCwgMCwgMCwgMCk7Ci0J CQlpZiAocmV0KQotCQkJCWdvdG8gb3V0OwotCQl9Ci0KLQkJcmV0ID0gZHJtX21vZGVfc2V0X2Nv bmZpZ19pbnRlcm5hbChtb2RlX3NldCk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKLQl9Ci1v dXQ6Ci0JZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwotCi0JcmV0dXJuIHJldDsKLX0KLQot LyoqCi0gKiBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2ZvcmNlKCkgLSBGb3JjZSBjb21taXQg Q1JUQyBjb25maWd1cmF0aW9uCi0gKiBAY2xpZW50OiBEUk0gY2xpZW50Ci0gKgotICogQ29tbWl0 IG1vZGVzZXQgY29uZmlndXJhdGlvbiB0byBjcnRjcyB3aXRob3V0IGNoZWNraW5nIGlmIHRoZXJl IGlzIGEgRFJNIG1hc3Rlci4KLSAqCi0gKiBSZXR1cm5zOgotICogWmVybyBvbiBzdWNjZXNzIG9y IG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KLSAqLwotaW50IGRybV9jbGllbnRfbW9k ZXNldF9jb21taXRfZm9yY2Uoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCi17Ci0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OwotCWludCByZXQ7Ci0KLQltdXRleF9s b2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwotCWlmIChkcm1fZHJ2X3VzZXNfYXRvbWljX21v ZGVzZXQoZGV2KSkKLQkJcmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9hdG9taWMoY2xp ZW50LCB0cnVlKTsKLQllbHNlCi0JCXJldCA9IGRybV9jbGllbnRfbW9kZXNldF9jb21taXRfbGVn YWN5KGNsaWVudCk7Ci0JbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKLX0KLQotLyoqCi0gKiBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0KCkgLSBD b21taXQgQ1JUQyBjb25maWd1cmF0aW9uCi0gKiBAY2xpZW50OiBEUk0gY2xpZW50Ci0gKgotICog Q29tbWl0IG1vZGVzZXQgY29uZmlndXJhdGlvbiB0byBjcnRjcy4KLSAqCi0gKiBSZXR1cm5zOgot ICogWmVybyBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KLSAq LwotaW50IGRybV9jbGllbnRfbW9kZXNldF9jb21taXQoc3RydWN0IGRybV9jbGllbnRfZGV2ICpj bGllbnQpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OwotCWludCBy ZXQ7Ci0KLQlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYpKQotCQlyZXR1cm4g LUVCVVNZOwotCi0JcmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X2NvbW1pdF9mb3JjZShjbGllbnQp OwotCi0JZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRldik7Ci0KLQlyZXR1cm4gcmV0Owot fQotCiAvKioKICAqIGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkIC0g cmVzdG9yZSBmYmRldiBjb25maWd1cmF0aW9uCiAgKiBAZmJfaGVscGVyOiBkcml2ZXItYWxsb2Nh dGVkIGZiZGV2IGhlbHBlciwgY2FuIGJlIE5VTEwKQEAgLTcxNCw1OCArNDg0LDYgQEAgc3RhdGlj IHN0cnVjdCBzeXNycV9rZXlfb3Agc3lzcnFfZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX29wID0gewog c3RhdGljIHN0cnVjdCBzeXNycV9rZXlfb3Agc3lzcnFfZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX29w ID0geyB9OwogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIGRybV9jbGllbnRfbW9kZXNldF9kcG1zX2xl Z2FjeShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgaW50IGRwbXNfbW9kZSkKLXsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7Ci0Jc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OwotCWludCBqOwot Ci0JZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKLQlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVz ZXQobW9kZXNldCwgY2xpZW50KSB7Ci0JCWlmICghbW9kZXNldC0+Y3J0Yy0+ZW5hYmxlZCkKLQkJ CWNvbnRpbnVlOwotCi0JCWZvciAoaiA9IDA7IGogPCBtb2Rlc2V0LT5udW1fY29ubmVjdG9yczsg aisrKSB7Ci0JCQljb25uZWN0b3IgPSBtb2Rlc2V0LT5jb25uZWN0b3JzW2pdOwotCQkJY29ubmVj dG9yLT5mdW5jcy0+ZHBtcyhjb25uZWN0b3IsIGRwbXNfbW9kZSk7Ci0JCQlkcm1fb2JqZWN0X3By b3BlcnR5X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLAotCQkJCWRldi0+bW9kZV9jb25maWcu ZHBtc19wcm9wZXJ0eSwgZHBtc19tb2RlKTsKLQkJfQotCX0KLQlkcm1fbW9kZXNldF91bmxvY2tf YWxsKGRldik7Ci19Ci0KLS8qKgotICogZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXMoKSAtIFNldCBE UE1TIG1vZGUKLSAqIEBjbGllbnQ6IERSTSBjbGllbnQKLSAqIEBtb2RlOiBEUE1TIG1vZGUKLSAq Ci0gKiBOb3RlOiBGb3IgYXRvbWljIGRyaXZlcnMgQG1vZGUgaXMgcmVkdWNlZCB0byBvbi9vZmYu Ci0gKgotICogUmV0dXJuczoKLSAqIFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBj b2RlIG9uIGZhaWx1cmUuCi0gKi8KLWludCBkcm1fY2xpZW50X21vZGVzZXRfZHBtcyhzdHJ1Y3Qg ZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgaW50IG1vZGUpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNsaWVudC0+ZGV2OwotCWludCByZXQgPSAwOwotCi0JaWYgKCFkcm1fbWFzdGVyX2lu dGVybmFsX2FjcXVpcmUoZGV2KSkKLQkJcmV0dXJuIC1FQlVTWTsKLQotCW11dGV4X2xvY2soJmNs aWVudC0+bW9kZXNldF9tdXRleCk7Ci0JaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChk ZXYpKQotCQlyZXQgPSBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2F0b21pYyhjbGllbnQsIG1v ZGUgPT0gRFJNX01PREVfRFBNU19PTik7Ci0JZWxzZQotCQlkcm1fY2xpZW50X21vZGVzZXRfZHBt c19sZWdhY3koY2xpZW50LCBtb2RlKTsKLQltdXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNldF9t dXRleCk7Ci0KLQlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKLQotCXJldHVybiBy ZXQ7Ci19Ci0KIHN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfZHBtcyhzdHJ1Y3QgZmJfaW5mbyAq aW5mbywgaW50IGRwbXNfbW9kZSkKIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy ID0gaW5mby0+cGFyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oIGIvaW5j bHVkZS9kcm0vZHJtX2NsaWVudC5oCmluZGV4IDg3YmU5YWViMWZlMC4uNmNmNDg0MTlmNzdmIDEw MDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY2xpZW50LmgKKysrIGIvaW5jbHVkZS9kcm0vZHJt X2NsaWVudC5oCkBAIC0xNTUsNiArMTU1LDEwIEBAIGludCBkcm1fY2xpZW50X21vZGVzZXRfY3Jl YXRlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KTsKIHZvaWQgZHJtX2NsaWVudF9tb2Rl c2V0X2ZyZWUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpOwogdm9pZCBkcm1fY2xpZW50 X21vZGVzZXRfcmVsZWFzZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCk7CiBzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICpkcm1fY2xpZW50X2ZpbmRfbW9kZXNldChzdHJ1Y3QgZHJtX2NsaWVudF9k ZXYgKmNsaWVudCwgc3RydWN0IGRybV9jcnRjICpjcnRjKTsKK2Jvb2wgZHJtX2NsaWVudF9wYW5l bF9yb3RhdGlvbihzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0LCB1bnNpZ25lZCBpbnQgKnJv dGF0aW9uKTsKK2ludCBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2ZvcmNlKHN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50KTsKK2ludCBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0KHN0cnVj dCBkcm1fY2xpZW50X2RldiAqY2xpZW50KTsKK2ludCBkcm1fY2xpZW50X21vZGVzZXRfZHBtcyhz dHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgaW50IG1vZGUpOwogCiAvKioKICAqIGRybV9j bGllbnRfZm9yX2VhY2hfbW9kZXNldCgpIC0gSXRlcmF0ZSBvdmVyIGNsaWVudCBtb2Rlc2V0cwot LSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=