From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH] drm/atomic-helper: implementatations for legacy interfaces Date: Tue, 4 Nov 2014 23:08:54 +0100 Message-ID: <1415138934-12688-1-git-send-email-daniel.vetter@ffwll.ch> References: <1414934370-11924-12-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1414934370-11924-12-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development , Daniel Thompson List-Id: dri-devel@lists.freedesktop.org V2VsbCwgZXhjZXB0IHBhZ2VfZmxpcCBzaW5jZSB0aGF0IHJlcXVpcmVzIGFzeW5jIGNvbW1pdCwg d2hpY2ggaXNuJ3QKdGhlcmUgeWV0LgoKRm9yIHRoZSBmdW5jdGlvbnMgd2hpY2ggY2hhbmdlcyBw bGFuZXMgdGhlcmUncyBhIGJpdCBvZiB0cmlja2VyeQppbnZvbHZlZCB0byBrZWVwIHRoZSBmYiBy ZWZjb3VudGluZyB3b3JraW5nLiBCdXQgb3RoZXJ3aXNlIGZhaXJseQpzdHJhaWdodC1mb3J3YXJk IGF0b21pYyB1cGRhdGVzLgoKVGhlIHByb3BlcnR5IHNldHRpbmcgZnVuY3Rpb25zIGFyZSBzdGls bCBhIGJpdCBpbmNvbXBsZXRlLiBPbmNlIHdlCmhhdmUgZ2VuZXJpYyBwcm9wZXJ0aWVzIChlLmcu IHJvdGF0aW9uLCBidXQgYWxzbyBhbGwgdGhlIHByb3BlcnRpZXMKbmVlZGVkIGJ5IHRoZSBhdG9t aWMgaW9jdGwpIHdlIG5lZWQgdG8gZmlsdGVyIHRob3NlIG91dCBhbmQgcGFyc2UgdGhlbQppbiB0 aGUgaGVscGVyLiBQcmVmZXJyYWJseSB3aXRoIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHVzZWQgYnkg dGhlIHJlYWwKYXRvbWljIGlvY3RsIGltcGxlbWVudGF0aW9uLgoKdjI6IEZpeHVwIGtlcm5lbGRv YywgcmVwb3J0ZWQgYnkgUGF1bG8uCgp2MzogQWRkIG1pc3NpbmcgRVhQT1JUX1NZTUJPTC4KCnY0 OiBXZSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNydGMgb2YgdGhlIG1vZGVzZXQsIG5vdCBzb21lIHJh bmRvbQpsZWZ0b3ZlciBvbmUgZnJvbSBhIHByZXZpb3VzIGxvb3Agd2hlbiB1ZHBhdGluZyB0aGUg Y29ubmVjdG9yLT5jcnRjCnJvdXRpbmcuIEFsc28gcHVzaCBzb21lIGxvY2FsIHZhcmlhYmxlcyBp bnRvIGlubmVyIGxvb3BzIHRvIGF2b2lkCnRoZXNlIGtpbmRzIG9mIGJ1Z3MuCgp2NTogQWRqdXN0 IHNlbWFudGljcyAtIGRyaXZlcnMgbm93IG93biB0aGUgYXRvbWljIHN0YXRlIHVwb24Kc3VjY2Vz c2Z1bGx5IHN5bmNocm9ub3VzIGNvbW1pdC4KCnY2OiBVc2UgdGhlIHNldF9jcnRjX2Zvcl9wbGFu ZSBmdW5jdGlvbiB0byBhc3NpZ24gdGhlIGNydGMsIHNpbmNlCm90aGVyd2lzZSB0aGUgYm9vay1r ZWVwaW5nIGlzIG9mZi4KCnY3OgotIEltcHJvdmUgY29tbWVudHMuCi0gRmlsdGVyIG91dCB0aGUg Y3J0YyBvZiB0aGUgLT5zZXRfY29uZmlnIGNhbGwgd2hlbiByZWNvbXB1dGluZwogIGNydGNfc3Rh dGUtPmVuYWJsZWQ6IFdlIHNob3VsZCBjb21wdXRlIHRoZSBzYW1lIHN0YXRlLCBidXQgbm90IGRv aW5nCiAgc28gd2lsbCBnaXZlIHVzIGEgZ29vZCBjaGFuY2UgdG8gY2F0Y2ggYnVncyBhbmQgaW5j b25zaXN0ZW5jaWVzIC0KICB0aGUgYXRvbWljIGhlbHBlcidzIGF0b21pY19jaGVjayBmdW5jdGlv biByZS12YWxpZGF0ZXMgdGhpcyBhZ2Fpbi4KLSBGaXggdGhlIHNldF9jb25maWcgaW1wbGVtZW50 YXRpb24gbG9naWMgd2hlbiBkaXNhYmxpbmcgdGhlIGNydGM6IFdlCiAgc3RpbGwgbmVlZCB0byB1 cGRhdGUgdGhlIG91dHB1dCByb3V0aW5nIHRvIGRpc2FibGUgYWxsIHRoZQogIGNvbm5lY3RvcnMg cHJvcGVybHkgaW4gdGhlIHN0YXRlLiBDYXVnaHQgYnkgdGhlIGF0b21pY19jaGVjawogIGZ1bmN0 aW9ucywgc28gYXQgbGVhc3QgdGhhdCBwYXJ0IHdvcmtlZCA7LSkgQWxzbyBhZGQgc29tZSBXQVJO X09OcwogIHRvIGVuc3VyZSAtPnNldF9jb25maWcgcHJlY29uZGl0aW9ucyBhbGwgYXBwbHkuCgp2 ODogRml4dXAgYW4gZW1iYXJyYXNzaW5nIGgvdmRpc3BsYXkgbWl4dXAuCgp2OTogU2h1ZmZsZWQg YmFkIHNxdWFzaCB0byB0aGUgcmlnaHQgcGF0Y2gsIHNwb3R0ZWQgYnkgRGFuaWVsCgp2MTA6IFVz ZSBzZXRfY3J0Y19mb3JfY29ubmVjdG9yIGFzIHN1Z2dlc3RlZCBieSBTZWFuLgoKQ2M6IFNlYW4g UGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgpDYzogRGFuaWVsIFRob21wc29uIDxkYW5pZWwu dGhvbXBzb25AbGluYXJvLm9yZz4KQ2M6IFBhdWxvIFphbm9uaSA8cHJ6YW5vbmlAZ21haWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgNTI5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIu aCAgICAgfCAgMjEgKysKIDIgZmlsZXMgY2hhbmdlZCwgNTQ5IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCmluZGV4IDg4N2UxOTcxYzkx NS4uODZiMTJhMTgyMGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwpAQCAtODYs NiArODYsNyBAQCBzdGVhbF9lbmNvZGVyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK IAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CiAJc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0 YXRlOworCWludCByZXQ7CiAKIAkvKgogCSAqIFdlIGNhbiBvbmx5IHN0ZWFsIGFuIGVuY29kZXIg Y29taW5nIGZyb20gYSBjb25uZWN0b3IsIHdoaWNoIG1lYW5zIHdlCkBAIC0xMTYsNyArMTE3LDkg QEAgc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCWlmIChJ U19FUlIoY29ubmVjdG9yX3N0YXRlKSkKIAkJCXJldHVybiBQVFJfRVJSKGNvbm5lY3Rvcl9zdGF0 ZSk7CiAKLQkJY29ubmVjdG9yX3N0YXRlLT5jcnRjID0gTlVMTDsKKwkJcmV0ID0gZHJtX2F0b21p Y19zZXRfY3J0Y19mb3JfY29ubmVjdG9yKGNvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7CisJCWlmIChy ZXQpCisJCQlyZXR1cm4gcmV0OwogCQljb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciA9IE5V TEw7CiAJfQogCkBAIC0xMDQ1LDMgKzEwNDgsNTI3IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJf c3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIH0KIEVYUE9SVF9TWU1CT0wo ZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZSk7CisKKy8qKgorICogZHJtX2F0b21pY19oZWxw ZXJfdXBkYXRlX3BsYW5lIC0gSGVscGVyIGZvciBwcmltYXJ5IHBsYW5lIHVwZGF0ZSB1c2luZyBh dG9taWMKKyAqIEBwbGFuZTogcGxhbmUgb2JqZWN0IHRvIHVwZGF0ZQorICogQGNydGM6IG93bmlu ZyBDUlRDIG9mIG93bmluZyBwbGFuZQorICogQGZiOiBmcmFtZWJ1ZmZlciB0byBmbGlwIG9udG8g cGxhbmUKKyAqIEBjcnRjX3g6IHggb2Zmc2V0IG9mIHByaW1hcnkgcGxhbmUgb24gY3J0YworICog QGNydGNfeTogeSBvZmZzZXQgb2YgcHJpbWFyeSBwbGFuZSBvbiBjcnRjCisgKiBAY3J0Y193OiB3 aWR0aCBvZiBwcmltYXJ5IHBsYW5lIHJlY3RhbmdsZSBvbiBjcnRjCisgKiBAY3J0Y19oOiBoZWln aHQgb2YgcHJpbWFyeSBwbGFuZSByZWN0YW5nbGUgb24gY3J0YworICogQHNyY194OiB4IG9mZnNl dCBvZiBAZmIgZm9yIHBhbm5pbmcKKyAqIEBzcmNfeTogeSBvZmZzZXQgb2YgQGZiIGZvciBwYW5u aW5nCisgKiBAc3JjX3c6IHdpZHRoIG9mIHNvdXJjZSByZWN0YW5nbGUgaW4gQGZiCisgKiBAc3Jj X2g6IGhlaWdodCBvZiBzb3VyY2UgcmVjdGFuZ2xlIGluIEBmYgorICoKKyAqIFByb3ZpZGVzIGEg ZGVmYXVsdCBwbGFuZSB1cGRhdGUgaGFuZGxlciB1c2luZyB0aGUgYXRvbWljIGRyaXZlciBpbnRl cmZhY2UuCisgKgorICogUkVUVVJOUzoKKyAqIFplcm8gb24gc3VjY2VzcywgZXJyb3IgY29kZSBv biBmYWlsdXJlCisgKi8KK2ludCBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSAg IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJCSAgIGludCBjcnRjX3gsIGludCBjcnRj X3ksCisJCQkJICAgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKKwkJ CQkgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCisJCQkJICAgdWludDMyX3Qgc3Jj X3csIHVpbnQzMl90IHNyY19oKQoreworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsK KwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlpbnQgcmV0ID0gMDsKKwor CXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhwbGFuZS0+ZGV2KTsKKwlpZiAoIXN0YXRl KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRybV9tb2Rlc2V0 X2xlZ2FjeV9hY3F1aXJlX2N0eChjcnRjKTsKK3JldHJ5OgorCXBsYW5lX3N0YXRlID0gZHJtX2F0 b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKKwlpZiAoSVNfRVJSKHBsYW5lX3N0 YXRlKSkgeworCQlyZXQgPSBQVFJfRVJSKHBsYW5lX3N0YXRlKTsKKwkJaWYgKHJldCA9PSAtRURF QURMSykKKwkJCWdvdG8gYmFja29mZjsKKwkJZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCXJl dCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX3BsYW5lKHBsYW5lX3N0YXRlLCBjcnRjKTsKKwlp ZiAocmV0ID09IC1FREVBRExLKQorCQlnb3RvIGJhY2tvZmY7CisJcGxhbmVfc3RhdGUtPmZiID0g ZmI7CisJcGxhbmVfc3RhdGUtPmNydGNfeCA9IGNydGNfeDsKKwlwbGFuZV9zdGF0ZS0+Y3J0Y195 ID0gY3J0Y195OworCXBsYW5lX3N0YXRlLT5jcnRjX2ggPSBjcnRjX2g7CisJcGxhbmVfc3RhdGUt PmNydGNfdyA9IGNydGNfdzsKKwlwbGFuZV9zdGF0ZS0+c3JjX3ggPSBzcmNfeDsKKwlwbGFuZV9z dGF0ZS0+c3JjX3kgPSBzcmNfeTsKKwlwbGFuZV9zdGF0ZS0+c3JjX2ggPSBzcmNfaDsKKwlwbGFu ZV9zdGF0ZS0+c3JjX3cgPSBzcmNfdzsKKworCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRl KTsKKwlpZiAocmV0ID09IC1FREVBRExLKQorCQlnb3RvIGJhY2tvZmY7CisKKwkvKiBEcml2ZXIg dGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0LiAqLworCWlmIChy ZXQgPT0gMCkKKwkJcmV0dXJuIDA7CitmYWlsOgorCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0 ZSk7CisKKwlyZXR1cm4gcmV0OworYmFja29mZjoKKwlkcm1fYXRvbWljX2xlZ2FjeV9iYWNrb2Zm KHN0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKKworCS8qCisJICogU29t ZW9uZSBtaWdodCBoYXZlIGV4Y2hhbmdlZCB0aGUgZnJhbWVidWZmZXIgd2hpbGUgd2UgZHJvcHBl ZCBsb2NrcworCSAqIGluIHRoZSBiYWNrb2ZmIGNvZGUuIFdlIG5lZWQgdG8gZml4IHVwIHRoZSBm YiByZWZjb3VudCB0cmFja2luZyB0aGUKKwkgKiBjb3JlIGRvZXMgZm9yIHVzLgorCSAqLworCXBs YW5lLT5vbGRfZmIgPSBwbGFuZS0+ZmI7CisKKwlnb3RvIHJldHJ5OworfQorRVhQT1JUX1NZTUJP TChkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUpOworCisvKioKKyAqIGRybV9hdG9taWNf aGVscGVyX2Rpc2FibGVfcGxhbmUgLSBIZWxwZXIgZm9yIHByaW1hcnkgcGxhbmUgZGlzYWJsZSB1 c2luZyAqIGF0b21pYworICogQHBsYW5lOiBwbGFuZSB0byBkaXNhYmxlCisgKgorICogUHJvdmlk ZXMgYSBkZWZhdWx0IHBsYW5lIGRpc2FibGxlIGhhbmRsZXIgdXNpbmcgdGhlIGF0b21pYyBkcml2 ZXIgaW50ZXJmYWNlLgorICoKKyAqIFJFVFVSTlM6CisgKiBaZXJvIG9uIHN1Y2Nlc3MsIGVycm9y IGNvZGUgb24gZmFpbHVyZQorICovCitpbnQgZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJaW50IHJldCA9 IDA7CisKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MocGxhbmUtPmRldik7CisJaWYg KCFzdGF0ZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkcm1f bW9kZXNldF9sZWdhY3lfYWNxdWlyZV9jdHgocGxhbmUtPmNydGMpOworcmV0cnk6CisJcGxhbmVf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOworCWlmIChJ U19FUlIocGxhbmVfc3RhdGUpKSB7CisJCXJldCA9IFBUUl9FUlIocGxhbmVfc3RhdGUpOworCQlp ZiAocmV0ID09IC1FREVBRExLKQorCQkJZ290byBiYWNrb2ZmOworCQllbHNlCisJCQlnb3RvIGZh aWw7CisJfQorCisJcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfcGxhbmUocGxhbmVfc3Rh dGUsIE5VTEwpOworCWlmIChyZXQgPT0gLUVERUFETEspCisJCWdvdG8gYmFja29mZjsKKwlwbGFu ZV9zdGF0ZS0+ZmIgPSBOVUxMOworCXBsYW5lX3N0YXRlLT5jcnRjX3ggPSAwOworCXBsYW5lX3N0 YXRlLT5jcnRjX3kgPSAwOworCXBsYW5lX3N0YXRlLT5jcnRjX2ggPSAwOworCXBsYW5lX3N0YXRl LT5jcnRjX3cgPSAwOworCXBsYW5lX3N0YXRlLT5zcmNfeCA9IDA7CisJcGxhbmVfc3RhdGUtPnNy Y195ID0gMDsKKwlwbGFuZV9zdGF0ZS0+c3JjX2ggPSAwOworCXBsYW5lX3N0YXRlLT5zcmNfdyA9 IDA7CisKKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7CisJaWYgKHJldCA9PSAtRURF QURMSykKKwkJZ290byBiYWNrb2ZmOworCisJLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBz dGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KKwlpZiAocmV0ID09IDApCisJCXJldHVybiAw OworZmFpbDoKKwlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCisJcmV0dXJuIHJldDsK K2JhY2tvZmY6CisJZHJtX2F0b21pY19sZWdhY3lfYmFja29mZihzdGF0ZSk7CisJZHJtX2F0b21p Y19zdGF0ZV9jbGVhcihzdGF0ZSk7CisKKwkvKgorCSAqIFNvbWVvbmUgbWlnaHQgaGF2ZSBleGNo YW5nZWQgdGhlIGZyYW1lYnVmZmVyIHdoaWxlIHdlIGRyb3BwZWQgbG9ja3MKKwkgKiBpbiB0aGUg YmFja29mZiBjb2RlLiBXZSBuZWVkIHRvIGZpeCB1cCB0aGUgZmIgcmVmY291bnQgdHJhY2tpbmcg dGhlCisJICogY29yZSBkb2VzIGZvciB1cy4KKwkgKi8KKwlwbGFuZS0+b2xkX2ZiID0gcGxhbmUt PmZiOworCisJZ290byByZXRyeTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJf ZGlzYWJsZV9wbGFuZSk7CisKK3N0YXRpYyBpbnQgdXBkYXRlX291dHB1dF9zdGF0ZShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkgICAgICAgc3RydWN0IGRybV9tb2RlX3NldCAq c2V0KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzZXQtPmNydGMtPmRldjsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKKwlpbnQgbmNvbm5lY3RvcnMgPSBz dGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOworCWludCBuY3J0Y3MgPSBzdGF0 ZS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YzsKKwlpbnQgcmV0LCBpLCBqOworCisJcmV0ID0g ZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LAorCQkJ ICAgICAgIHN0YXRlLT5hY3F1aXJlX2N0eCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CS8qIEZpcnN0IGdyYWIgYWxsIGFmZmVjdGVkIGNvbm5lY3Rvci9jcnRjIHN0YXRlcy4gKi8KKwlm b3IgKGkgPSAwOyBpIDwgc2V0LT5udW1fY29ubmVjdG9yczsgaSsrKSB7CisJCWNvbm5fc3RhdGUg PSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsCisJCQkJCQkJICAgIHNldC0+ Y29ubmVjdG9yc1tpXSk7CisJCWlmIChJU19FUlIoY29ubl9zdGF0ZSkpCisJCQlyZXR1cm4gUFRS X0VSUihjb25uX3N0YXRlKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbmNydGNzOyBpKyspIHsK KwkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmNydGNzW2ldOworCisJCWlmICghY3J0 YykKKwkJCWNvbnRpbnVlOworCisJCXJldCA9IGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5l Y3RvcnMoc3RhdGUsIGNydGMpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwkv KiBUaGVuIHJlY29tcHV0ZSBjb25uZWN0b3ItPmNydGMgbGlua3MgYW5kIGNydGMgZW5hYmxpbmcg c3RhdGUuICovCisJZm9yIChpID0gMDsgaSA8IG5jb25uZWN0b3JzOyBpKyspIHsKKwkJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKworCQljb25uZWN0b3IgPSBzdGF0ZS0+Y29ubmVj dG9yc1tpXTsKKwkJY29ubl9zdGF0ZSA9IHN0YXRlLT5jb25uZWN0b3Jfc3RhdGVzW2ldOworCisJ CWlmICghY29ubmVjdG9yKQorCQkJY29udGludWU7CisKKwkJaWYgKGNvbm5fc3RhdGUtPmNydGMg PT0gc2V0LT5jcnRjKSB7CisJCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0 b3IoY29ubl9zdGF0ZSwKKwkJCQkJCQkJTlVMTCk7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiBy ZXQ7CisJCX0KKworCQlmb3IgKGogPSAwOyBqIDwgc2V0LT5udW1fY29ubmVjdG9yczsgaisrKSB7 CisJCQlpZiAoc2V0LT5jb25uZWN0b3JzW2pdID09IGNvbm5lY3RvcikgeworCQkJCXJldCA9IGRy bV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uX3N0YXRlLAorCQkJCQkJCQkJc2V0 LT5jcnRjKTsKKwkJCQlpZiAocmV0KQorCQkJCQlyZXR1cm4gcmV0OworCQkJCWJyZWFrOworCQkJ fQorCQl9CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7CisJCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjc1tpXTsKKwkJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlID0gc3RhdGUtPmNydGNfc3RhdGVzW2ldOworCisJCWlmICghY3J0YyAmJiBj cnRjICE9IHNldC0+Y3J0YykKKwkJCWNvbnRpbnVlOworCisJCWNydGNfc3RhdGUtPmVuYWJsZSA9 CisJCQlkcm1fYXRvbWljX2Nvbm5lY3RvcnNfZm9yX2NydGMoc3RhdGUsIGNydGMpOworCX0KKwor CXJldHVybiAwOworfQorCisvKioKKyAqIGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcgLSBz ZXQgYSBuZXcgY29uZmlnIGZyb20gdXNlcnNwYWNlCisgKiBAc2V0OiBtb2RlIHNldCBjb25maWd1 cmF0aW9uCisgKgorICogUHJvdmlkZXMgYSBkZWZhdWx0IGNydGMgc2V0X2NvbmZpZyBoYW5kbGVy IHVzaW5nIHRoZSBhdG9taWMgZHJpdmVyIGludGVyZmFjZS4KKyAqCisgKiBSZXR1cm5zOgorICog UmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG51bWJlcnMgb24gZmFpbHVyZS4K KyAqLworaW50IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3Nl dCAqc2V0KQoreworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSBzZXQtPmNydGM7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnByaW1hcnlfc3RhdGU7CisJaW50IHJldCA9 IDA7CisKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoY3J0Yy0+ZGV2KTsKKwlpZiAo IXN0YXRlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRybV9t b2Rlc2V0X2xlZ2FjeV9hY3F1aXJlX2N0eChjcnRjKTsKK3JldHJ5OgorCWNydGNfc3RhdGUgPSBk cm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwlpZiAoSVNfRVJSKGNydGNf c3RhdGUpKSB7CisJCXJldCA9IFBUUl9FUlIoY3J0Y19zdGF0ZSk7CisJCWlmIChyZXQgPT0gLUVE RUFETEspCisJCQlnb3RvIGJhY2tvZmY7CisJCWVsc2UKKwkJCWdvdG8gZmFpbDsKKwl9CisKKwlp ZiAoIXNldC0+bW9kZSkgeworCQlXQVJOX09OKHNldC0+ZmIpOworCQlXQVJOX09OKHNldC0+bnVt X2Nvbm5lY3RvcnMpOworCisJCWNydGNfc3RhdGUtPmVuYWJsZSA9IGZhbHNlOworCQlnb3RvIGNv bW1pdDsKKwl9CisKKwlXQVJOX09OKCFzZXQtPmZiKTsKKwlXQVJOX09OKCFzZXQtPm51bV9jb25u ZWN0b3JzKTsKKworCWNydGNfc3RhdGUtPmVuYWJsZSA9IHRydWU7CisJZHJtX21vZGVfY29weSgm Y3J0Y19zdGF0ZS0+bW9kZSwgc2V0LT5tb2RlKTsKKworCXByaW1hcnlfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgY3J0Yy0+cHJpbWFyeSk7CisJaWYgKElTX0VSUihw cmltYXJ5X3N0YXRlKSkgeworCQlyZXQgPSBQVFJfRVJSKHByaW1hcnlfc3RhdGUpOworCQlpZiAo cmV0ID09IC1FREVBRExLKQorCQkJZ290byBiYWNrb2ZmOworCQllbHNlCisJCQlnb3RvIGZhaWw7 CisJfQorCisJcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfcGxhbmUocHJpbWFyeV9zdGF0 ZSwgY3J0Yyk7CisJaWYgKHJldCA9PSAtRURFQURMSykKKwkJZ290byBiYWNrb2ZmOworCXByaW1h cnlfc3RhdGUtPmZiID0gc2V0LT5mYjsKKwlwcmltYXJ5X3N0YXRlLT5jcnRjX3ggPSAwOworCXBy aW1hcnlfc3RhdGUtPmNydGNfeSA9IDA7CisJcHJpbWFyeV9zdGF0ZS0+Y3J0Y19oID0gc2V0LT5t b2RlLT52ZGlzcGxheTsKKwlwcmltYXJ5X3N0YXRlLT5jcnRjX3cgPSBzZXQtPm1vZGUtPmhkaXNw bGF5OworCXByaW1hcnlfc3RhdGUtPnNyY194ID0gc2V0LT54IDw8IDE2OworCXByaW1hcnlfc3Rh dGUtPnNyY195ID0gc2V0LT55IDw8IDE2OworCXByaW1hcnlfc3RhdGUtPnNyY19oID0gc2V0LT5t b2RlLT52ZGlzcGxheSA8PCAxNjsKKwlwcmltYXJ5X3N0YXRlLT5zcmNfdyA9IHNldC0+bW9kZS0+ aGRpc3BsYXkgPDwgMTY7CisKK2NvbW1pdDoKKwlyZXQgPSB1cGRhdGVfb3V0cHV0X3N0YXRlKHN0 YXRlLCBzZXQpOworCWlmIChyZXQpIHsKKwkJaWYgKHJldCA9PSAtRURFQURMSykKKwkJCWdvdG8g YmFja29mZjsKKwkJZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCXJldCA9IGRybV9hdG9taWNf Y29tbWl0KHN0YXRlKTsKKwlpZiAocmV0ID09IC1FREVBRExLKQorCQlnb3RvIGJhY2tvZmY7CisK KwkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0 LiAqLworCWlmIChyZXQgPT0gMCkKKwkJcmV0dXJuIDA7CitmYWlsOgorCWRybV9hdG9taWNfc3Rh dGVfZnJlZShzdGF0ZSk7CisKKwlyZXR1cm4gcmV0OworYmFja29mZjoKKwlkcm1fYXRvbWljX2xl Z2FjeV9iYWNrb2ZmKHN0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKKwor CS8qCisJICogU29tZW9uZSBtaWdodCBoYXZlIGV4Y2hhbmdlZCB0aGUgZnJhbWVidWZmZXIgd2hp bGUgd2UgZHJvcHBlZCBsb2NrcworCSAqIGluIHRoZSBiYWNrb2ZmIGNvZGUuIFdlIG5lZWQgdG8g Zml4IHVwIHRoZSBmYiByZWZjb3VudCB0cmFja2luZyB0aGUKKwkgKiBjb3JlIGRvZXMgZm9yIHVz LgorCSAqLworCWNydGMtPnByaW1hcnktPm9sZF9mYiA9IGNydGMtPnByaW1hcnktPmZiOworCisJ Z290byByZXRyeTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZp Zyk7CisKKy8qKgorICogZHJtX2F0b21pY19oZWxwZXJfY3J0Y19zZXRfcHJvcGVydHkgLSBoZWxw ZXIgZm9yIGNydGMgcHJvcnRpZXMKKyAqIEBjcnRjOiBEUk0gY3J0YworICogQHByb3BlcnR5OiBE Uk0gcHJvcGVydHkKKyAqIEB2YWw6IHZhbHVlIG9mIHByb3BlcnR5CisgKgorICogUHJvdmlkZXMg YSBkZWZhdWx0IHBsYW5lIGRpc2FibGxlIGhhbmRsZXIgdXNpbmcgdGhlIGF0b21pYyBkcml2ZXIg aW50ZXJmYWNlLgorICoKKyAqIFJFVFVSTlM6CisgKiBaZXJvIG9uIHN1Y2Nlc3MsIGVycm9yIGNv ZGUgb24gZmFpbHVyZQorICovCitpbnQKK2RybV9hdG9taWNfaGVscGVyX2NydGNfc2V0X3Byb3Bl cnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAq cHJvcGVydHksCisJCQkJICAgIHVpbnQ2NF90IHZhbCkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCWludCBy ZXQgPSAwOworCisJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGNydGMtPmRldik7CisJ aWYgKCFzdGF0ZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiAtPnNldF9wcm9wZXJ0eSBpcyBh bHdheXMgY2FsbGVkIHdpdGggYWxsIGxvY2tzIGhlbGQuICovCisJc3RhdGUtPmFjcXVpcmVfY3R4 ID0gY3J0Yy0+ZGV2LT5tb2RlX2NvbmZpZy5hY3F1aXJlX2N0eDsKK3JldHJ5OgorCWNydGNfc3Rh dGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwlpZiAoSVNfRVJS KGNydGNfc3RhdGUpKSB7CisJCXJldCA9IFBUUl9FUlIoY3J0Y19zdGF0ZSk7CisJCWlmIChyZXQg PT0gLUVERUFETEspCisJCQlnb3RvIGJhY2tvZmY7CisJCWVsc2UKKwkJCWdvdG8gZmFpbDsKKwl9 CisKKwlyZXQgPSBjcnRjLT5mdW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eShjcnRjLCBjcnRjX3N0 YXRlLAorCQkJCQkgICAgICAgcHJvcGVydHksIHZhbCk7CisJaWYgKHJldCkgeworCQlpZiAocmV0 ID09IC1FREVBRExLKQorCQkJZ290byBiYWNrb2ZmOworCQllbHNlCisJCQlnb3RvIGZhaWw7CisJ fQorCisJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOworCWlmIChyZXQgPT0gLUVERUFE TEspCisJCWdvdG8gYmFja29mZjsKKworCS8qIERyaXZlciB0YWtlcyBvd25lcnNoaXAgb2Ygc3Rh dGUgb24gc3VjY2Vzc2Z1bCBjb21taXQuICovCisJaWYgKHJldCA9PSAwKQorCQlyZXR1cm4gMDsK K2ZhaWw6CisJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKworCXJldHVybiByZXQ7Citi YWNrb2ZmOgorCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOworCWRybV9hdG9taWNf c3RhdGVfY2xlYXIoc3RhdGUpOworCisJZ290byByZXRyeTsKK30KK0VYUE9SVF9TWU1CT0woZHJt X2F0b21pY19oZWxwZXJfY3J0Y19zZXRfcHJvcGVydHkpOworCisvKioKKyAqIGRybV9hdG9taWNf aGVscGVyX3BsYW5lX3NldF9wcm9wZXJ0eSAtIGhlbHBlciBmb3IgcGxhbmUgcHJvcnRpZXMKKyAq IEBwbGFuZTogRFJNIHBsYW5lCisgKiBAcHJvcGVydHk6IERSTSBwcm9wZXJ0eQorICogQHZhbDog dmFsdWUgb2YgcHJvcGVydHkKKyAqCisgKiBQcm92aWRlcyBhIGRlZmF1bHQgcGxhbmUgZGlzYWJs ZSBoYW5kbGVyIHVzaW5nIHRoZSBhdG9taWMgZHJpdmVyIGludGVyZmFjZS4KKyAqCisgKiBSRVRV Uk5TOgorICogWmVybyBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUKKyAqLworaW50 Citkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCisJCQkJICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQkJCSAgICB1 aW50NjRfdCB2YWwpCit7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOworCXN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOworCWludCByZXQgPSAwOworCisJc3RhdGUg PSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKHBsYW5lLT5kZXYpOworCWlmICghc3RhdGUpCisJCXJl dHVybiAtRU5PTUVNOworCisJLyogLT5zZXRfcHJvcGVydHkgaXMgYWx3YXlzIGNhbGxlZCB3aXRo IGFsbCBsb2NrcyBoZWxkLiAqLworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IHBsYW5lLT5kZXYtPm1v ZGVfY29uZmlnLmFjcXVpcmVfY3R4OworcmV0cnk6CisJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOworCWlmIChJU19FUlIocGxhbmVfc3RhdGUp KSB7CisJCXJldCA9IFBUUl9FUlIocGxhbmVfc3RhdGUpOworCQlpZiAocmV0ID09IC1FREVBRExL KQorCQkJZ290byBiYWNrb2ZmOworCQllbHNlCisJCQlnb3RvIGZhaWw7CisJfQorCisJcmV0ID0g cGxhbmUtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KHBsYW5lLCBwbGFuZV9zdGF0ZSwKKwkJ CQkJICAgICAgIHByb3BlcnR5LCB2YWwpOworCWlmIChyZXQpIHsKKwkJaWYgKHJldCA9PSAtRURF QURMSykKKwkJCWdvdG8gYmFja29mZjsKKwkJZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCXJl dCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKKwlpZiAocmV0ID09IC1FREVBRExLKQorCQln b3RvIGJhY2tvZmY7CisKKwkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1 Y2Nlc3NmdWwgY29tbWl0LiAqLworCWlmIChyZXQgPT0gMCkKKwkJcmV0dXJuIDA7CitmYWlsOgor CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisKKwlyZXR1cm4gcmV0OworYmFja29mZjoK Kwlkcm1fYXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX2Ns ZWFyKHN0YXRlKTsKKworCWdvdG8gcmV0cnk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX3BsYW5lX3NldF9wcm9wZXJ0eSk7CisKKy8qKgorICogZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX3NldF9wcm9wZXJ0eSAtIGhlbHBlciBmb3IgY29ubmVjdG9yIHByb3J0aWVzCisg KiBAY29ubmVjdG9yOiBEUk0gY29ubmVjdG9yCisgKiBAcHJvcGVydHk6IERSTSBwcm9wZXJ0eQor ICogQHZhbDogdmFsdWUgb2YgcHJvcGVydHkKKyAqCisgKiBQcm92aWRlcyBhIGRlZmF1bHQgcGxh bmUgZGlzYWJsbGUgaGFuZGxlciB1c2luZyB0aGUgYXRvbWljIGRyaXZlciBpbnRlcmZhY2UuCisg KgorICogUkVUVVJOUzoKKyAqIFplcm8gb24gc3VjY2VzcywgZXJyb3IgY29kZSBvbiBmYWlsdXJl CisgKi8KK2ludAorZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3NldF9wcm9wZXJ0eShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICpwcm9wZXJ0eSwKKwkJCQkgICAgdWludDY0X3QgdmFsKQoreworCXN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0 YXRlOworCWludCByZXQgPSAwOworCisJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGNv bm5lY3Rvci0+ZGV2KTsKKwlpZiAoIXN0YXRlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCS8qIC0+ c2V0X3Byb3BlcnR5IGlzIGFsd2F5cyBjYWxsZWQgd2l0aCBhbGwgbG9ja3MgaGVsZC4gKi8KKwlz dGF0ZS0+YWNxdWlyZV9jdHggPSBjb25uZWN0b3ItPmRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9j dHg7CityZXRyeToKKwljb25uZWN0b3Jfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jf c3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7CisJaWYgKElTX0VSUihjb25uZWN0b3Jfc3RhdGUpKSB7 CisJCXJldCA9IFBUUl9FUlIoY29ubmVjdG9yX3N0YXRlKTsKKwkJaWYgKHJldCA9PSAtRURFQURM SykKKwkJCWdvdG8gYmFja29mZjsKKwkJZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCXJldCA9 IGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkoY29ubmVjdG9yLCBjb25uZWN0 b3Jfc3RhdGUsCisJCQkJCSAgICAgICBwcm9wZXJ0eSwgdmFsKTsKKwlpZiAocmV0KSB7CisJCWlm IChyZXQgPT0gLUVERUFETEspCisJCQlnb3RvIGJhY2tvZmY7CisJCWVsc2UKKwkJCWdvdG8gZmFp bDsKKwl9CisKKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7CisJaWYgKHJldCA9PSAt RURFQURMSykKKwkJZ290byBiYWNrb2ZmOworCisJLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBv ZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KKwlpZiAocmV0ID09IDApCisJCXJldHVy biAwOworZmFpbDoKKwlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCisJcmV0dXJuIHJl dDsKK2JhY2tvZmY6CisJZHJtX2F0b21pY19sZWdhY3lfYmFja29mZihzdGF0ZSk7CisJZHJtX2F0 b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7CisKKwlnb3RvIHJldHJ5OworfQorRVhQT1JUX1NZTUJP TChkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KTsKZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fYXRvbWlj X2hlbHBlci5oCmluZGV4IDk3ODFjZTczOWUxMC4uOGNkNmZlN2E0OGU1IDEwMDY0NAotLS0gYS9p bmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9hdG9t aWNfaGVscGVyLmgKQEAgLTQ5LDQgKzQ5LDI1IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY2xl YW51cF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHZvaWQgZHJtX2F0b21pY19oZWxw ZXJfc3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKIAorLyogaW1wbGVtZW50YXRpb25zIGZvciBsZWdhY3kgaW50 ZXJmYWNlcyAqLworaW50IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKKwkJCQkgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICAgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkJICAgaW50IGNydGNfeCwgaW50IGNydGNfeSwK KwkJCQkgICB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAorCQkJCSAg IHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwKKwkJCQkgICB1aW50MzJfdCBzcmNfdywg dWludDMyX3Qgc3JjX2gpOworaW50IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUpOworaW50IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWco c3RydWN0IGRybV9tb2RlX3NldCAqc2V0KTsKKworaW50IGRybV9hdG9taWNfaGVscGVyX2NydGNf c2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkJc3RydWN0IGRybV9wcm9w ZXJ0eSAqcHJvcGVydHksCisJCQkJCXVpbnQ2NF90IHZhbCk7CitpbnQgZHJtX2F0b21pY19oZWxw ZXJfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQlzdHJ1 Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJdWludDY0X3QgdmFsKTsKK2ludCBkcm1f YXRvbWljX2hlbHBlcl9jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCisJCQkJCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQkJCQl1 aW50NjRfdCB2YWwpOworCiAjZW5kaWYgLyogRFJNX0FUT01JQ19IRUxQRVJfSF8gKi8KLS0gCjIu MS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=