From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 11/17] drm/atomic-helper: implementatations for legacy interfaces Date: Sun, 2 Nov 2014 14:19:24 +0100 Message-ID: <1414934370-11924-12-git-send-email-daniel.vetter@ffwll.ch> References: <1414934370-11924-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by gabe.freedesktop.org (Postfix) with ESMTP id B69B96EA10 for ; Sun, 2 Nov 2014 05:19:44 -0800 (PST) Received: by mail-wi0-f175.google.com with SMTP id ex7so4500770wid.2 for ; Sun, 02 Nov 2014 05:19:43 -0800 (PST) In-Reply-To: <1414934370-11924-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development 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 ODogRml4dXAgYW4gZW1iYXJyYXNzaW5nIGgvdmRpc3BsYXkgbWl4dXAuCgpDYzogUGF1bG8gWmFu b25pIDxwcnphbm9uaUBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVs cGVyLmMgfCA1MTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRl L2RybS9kcm1fYXRvbWljX2hlbHBlci5oICAgICB8ICAyMSArKwogMiBmaWxlcyBjaGFuZ2VkLCA1 MzIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKaW5kZXggODg3 ZTE5NzFjOTE1Li4yNmZlNjAzNTZhMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5j CkBAIC0xMDQ1LDMgKzEwNDUsNTE0IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIH0KIEVYUE9SVF9TWU1CT0woZHJtX2F0b21p Y19oZWxwZXJfc3dhcF9zdGF0ZSk7CisKKy8qKgorICogZHJtX2F0b21pY19oZWxwZXJfdXBkYXRl X3BsYW5lIC0gSGVscGVyIGZvciBwcmltYXJ5IHBsYW5lIHVwZGF0ZSB1c2luZyBhdG9taWMKKyAq IEBwbGFuZTogcGxhbmUgb2JqZWN0IHRvIHVwZGF0ZQorICogQGNydGM6IG93bmluZyBDUlRDIG9m IG93bmluZyBwbGFuZQorICogQGZiOiBmcmFtZWJ1ZmZlciB0byBmbGlwIG9udG8gcGxhbmUKKyAq IEBjcnRjX3g6IHggb2Zmc2V0IG9mIHByaW1hcnkgcGxhbmUgb24gY3J0YworICogQGNydGNfeTog eSBvZmZzZXQgb2YgcHJpbWFyeSBwbGFuZSBvbiBjcnRjCisgKiBAY3J0Y193OiB3aWR0aCBvZiBw cmltYXJ5IHBsYW5lIHJlY3RhbmdsZSBvbiBjcnRjCisgKiBAY3J0Y19oOiBoZWlnaHQgb2YgcHJp bWFyeSBwbGFuZSByZWN0YW5nbGUgb24gY3J0YworICogQHNyY194OiB4IG9mZnNldCBvZiBAZmIg Zm9yIHBhbm5pbmcKKyAqIEBzcmNfeTogeSBvZmZzZXQgb2YgQGZiIGZvciBwYW5uaW5nCisgKiBA c3JjX3c6IHdpZHRoIG9mIHNvdXJjZSByZWN0YW5nbGUgaW4gQGZiCisgKiBAc3JjX2g6IGhlaWdo dCBvZiBzb3VyY2UgcmVjdGFuZ2xlIGluIEBmYgorICoKKyAqIFByb3ZpZGVzIGEgZGVmYXVsdCBw bGFuZSB1cGRhdGUgaGFuZGxlciB1c2luZyB0aGUgYXRvbWljIGRyaXZlciBpbnRlcmZhY2UuCisg KgorICogUkVUVVJOUzoKKyAqIFplcm8gb24gc3VjY2VzcywgZXJyb3IgY29kZSBvbiBmYWlsdXJl CisgKi8KK2ludCBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCisJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSAgIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLAorCQkJCSAgIGludCBjcnRjX3gsIGludCBjcnRjX3ksCisJCQkJ ICAgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKKwkJCQkgICB1aW50 MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCisJCQkJICAgdWludDMyX3Qgc3JjX3csIHVpbnQz Ml90IHNyY19oKQoreworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlpbnQgcmV0ID0gMDsKKworCXN0YXRlID0g ZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhwbGFuZS0+ZGV2KTsKKwlpZiAoIXN0YXRlKQorCQlyZXR1 cm4gLUVOT01FTTsKKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRybV9tb2Rlc2V0X2xlZ2FjeV9h Y3F1aXJlX2N0eChjcnRjKTsKK3JldHJ5OgorCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRf cGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKKwlpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkgewor CQlyZXQgPSBQVFJfRVJSKHBsYW5lX3N0YXRlKTsKKwkJaWYgKHJldCA9PSAtRURFQURMSykKKwkJ CWdvdG8gYmFja29mZjsKKwkJZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCWRybV9hdG9taWNf c2V0X2NydGNfZm9yX3BsYW5lKHBsYW5lX3N0YXRlLCBjcnRjKTsKKwlwbGFuZV9zdGF0ZS0+ZmIg PSBmYjsKKwlwbGFuZV9zdGF0ZS0+Y3J0Y194ID0gY3J0Y194OworCXBsYW5lX3N0YXRlLT5jcnRj X3kgPSBjcnRjX3k7CisJcGxhbmVfc3RhdGUtPmNydGNfaCA9IGNydGNfaDsKKwlwbGFuZV9zdGF0 ZS0+Y3J0Y193ID0gY3J0Y193OworCXBsYW5lX3N0YXRlLT5zcmNfeCA9IHNyY194OworCXBsYW5l X3N0YXRlLT5zcmNfeSA9IHNyY195OworCXBsYW5lX3N0YXRlLT5zcmNfaCA9IHNyY19oOworCXBs YW5lX3N0YXRlLT5zcmNfdyA9IHNyY193OworCisJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3Rh dGUpOworCWlmIChyZXQgPT0gLUVERUFETEspCisJCWdvdG8gYmFja29mZjsKKworCS8qIERyaXZl ciB0YWtlcyBvd25lcnNoaXAgb2Ygc3RhdGUgb24gc3VjY2Vzc2Z1bCBjb21taXQuICovCisJaWYg KHJldCA9PSAwKQorCQlyZXR1cm4gMDsKK2ZhaWw6CisJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0 YXRlKTsKKworCXJldHVybiByZXQ7CitiYWNrb2ZmOgorCWRybV9hdG9taWNfbGVnYWN5X2JhY2tv ZmYoc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOworCisJLyoKKwkgKiBT b21lb25lIG1pZ2h0IGhhdmUgZXhjaGFuZ2VkIHRoZSBmcmFtZWJ1ZmZlciB3aGlsZSB3ZSBkcm9w cGVkIGxvY2tzCisJICogaW4gdGhlIGJhY2tvZmYgY29kZS4gV2UgbmVlZCB0byBmaXggdXAgdGhl IGZiIHJlZmNvdW50IHRyYWNraW5nIHRoZQorCSAqIGNvcmUgZG9lcyBmb3IgdXMuCisJICovCisJ cGxhbmUtPm9sZF9mYiA9IHBsYW5lLT5mYjsKKworCWdvdG8gcmV0cnk7Cit9CitFWFBPUlRfU1lN Qk9MKGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSk7CisKKy8qKgorICogZHJtX2F0b21p Y19oZWxwZXJfZGlzYWJsZV9wbGFuZSAtIEhlbHBlciBmb3IgcHJpbWFyeSBwbGFuZSBkaXNhYmxl IHVzaW5nICogYXRvbWljCisgKiBAcGxhbmU6IHBsYW5lIHRvIGRpc2FibGUKKyAqCisgKiBQcm92 aWRlcyBhIGRlZmF1bHQgcGxhbmUgZGlzYWJsbGUgaGFuZGxlciB1c2luZyB0aGUgYXRvbWljIGRy aXZlciBpbnRlcmZhY2UuCisgKgorICogUkVUVVJOUzoKKyAqIFplcm8gb24gc3VjY2VzcywgZXJy b3IgY29kZSBvbiBmYWlsdXJlCisgKi8KK2ludCBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlpbnQgcmV0 ID0gMDsKKworCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhwbGFuZS0+ZGV2KTsKKwlp ZiAoIXN0YXRlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRy bV9tb2Rlc2V0X2xlZ2FjeV9hY3F1aXJlX2N0eChwbGFuZS0+Y3J0Yyk7CityZXRyeToKKwlwbGFu ZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7CisJaWYg KElTX0VSUihwbGFuZV9zdGF0ZSkpIHsKKwkJcmV0ID0gUFRSX0VSUihwbGFuZV9zdGF0ZSk7CisJ CWlmIChyZXQgPT0gLUVERUFETEspCisJCQlnb3RvIGJhY2tvZmY7CisJCWVsc2UKKwkJCWdvdG8g ZmFpbDsKKwl9CisKKwlkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShwbGFuZV9zdGF0ZSwg TlVMTCk7CisJcGxhbmVfc3RhdGUtPmZiID0gTlVMTDsKKwlwbGFuZV9zdGF0ZS0+Y3J0Y194ID0g MDsKKwlwbGFuZV9zdGF0ZS0+Y3J0Y195ID0gMDsKKwlwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gMDsK KwlwbGFuZV9zdGF0ZS0+Y3J0Y193ID0gMDsKKwlwbGFuZV9zdGF0ZS0+c3JjX3ggPSAwOworCXBs YW5lX3N0YXRlLT5zcmNfeSA9IDA7CisJcGxhbmVfc3RhdGUtPnNyY19oID0gMDsKKwlwbGFuZV9z dGF0ZS0+c3JjX3cgPSAwOworCisJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOworCWlm IChyZXQgPT0gLUVERUFETEspCisJCWdvdG8gYmFja29mZjsKKworCS8qIERyaXZlciB0YWtlcyBv d25lcnNoaXAgb2Ygc3RhdGUgb24gc3VjY2Vzc2Z1bCBjb21taXQuICovCisJaWYgKHJldCA9PSAw KQorCQlyZXR1cm4gMDsKK2ZhaWw6CisJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwor CXJldHVybiByZXQ7CitiYWNrb2ZmOgorCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUp OworCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOworCisJLyoKKwkgKiBTb21lb25lIG1p Z2h0IGhhdmUgZXhjaGFuZ2VkIHRoZSBmcmFtZWJ1ZmZlciB3aGlsZSB3ZSBkcm9wcGVkIGxvY2tz CisJICogaW4gdGhlIGJhY2tvZmYgY29kZS4gV2UgbmVlZCB0byBmaXggdXAgdGhlIGZiIHJlZmNv dW50IHRyYWNraW5nIHRoZQorCSAqIGNvcmUgZG9lcyBmb3IgdXMuCisJICovCisJcGxhbmUtPm9s ZF9mYiA9IHBsYW5lLT5mYjsKKworCWdvdG8gcmV0cnk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9h dG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUpOworCitzdGF0aWMgaW50IHVwZGF0ZV9vdXRwdXRf c3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJICAgICAgIHN0cnVjdCBk cm1fbW9kZV9zZXQgKnNldCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc2V0LT5jcnRj LT5kZXY7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7CisJaW50IG5j b25uZWN0b3JzID0gc3RhdGUtPmRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3RvcjsKKwlpbnQg bmNydGNzID0gc3RhdGUtPmRldi0+bW9kZV9jb25maWcubnVtX2NydGM7CisJaW50IHJldCwgaSwg ajsKKworCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlv bl9tdXRleCwKKwkJCSAgICAgICBzdGF0ZS0+YWNxdWlyZV9jdHgpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwkvKiBGaXJzdCBncmFiIGFsbCBhZmZlY3RlZCBjb25uZWN0b3IvY3J0YyBz dGF0ZXMuICovCisJZm9yIChpID0gMDsgaSA8IHNldC0+bnVtX2Nvbm5lY3RvcnM7IGkrKykgewor CQljb25uX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLAorCQkJ CQkJCSAgICBzZXQtPmNvbm5lY3RvcnNbaV0pOworCQlpZiAoSVNfRVJSKGNvbm5fc3RhdGUpKQor CQkJcmV0dXJuIFBUUl9FUlIoY29ubl9zdGF0ZSk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5j cnRjczsgaSsrKSB7CisJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjc1tpXTsK KworCQlpZiAoIWNydGMpCisJCQljb250aW51ZTsKKworCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9h ZmZlY3RlZF9jb25uZWN0b3JzKHN0YXRlLCBjcnRjKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiBy ZXQ7CisJfQorCisJLyogVGhlbiByZWNvbXB1dGUgY29ubmVjdG9yLT5jcnRjIGxpbmtzIGFuZCBj cnRjIGVuYWJsaW5nIHN0YXRlLiAqLworCWZvciAoaSA9IDA7IGkgPCBuY29ubmVjdG9yczsgaSsr KSB7CisJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisKKwkJY29ubmVjdG9yID0g c3RhdGUtPmNvbm5lY3RvcnNbaV07CisJCWNvbm5fc3RhdGUgPSBzdGF0ZS0+Y29ubmVjdG9yX3N0 YXRlc1tpXTsKKworCQlpZiAoIWNvbm5lY3RvcikKKwkJCWNvbnRpbnVlOworCisJCWlmIChjb25u X3N0YXRlLT5jcnRjID09IHNldC0+Y3J0YykKKwkJCWNvbm5fc3RhdGUtPmNydGMgPSBOVUxMOwor CisJCWZvciAoaiA9IDA7IGogPCBzZXQtPm51bV9jb25uZWN0b3JzOyBqKyspIHsKKwkJCWlmIChz ZXQtPmNvbm5lY3RvcnNbal0gPT0gY29ubmVjdG9yKSB7CisJCQkJY29ubl9zdGF0ZS0+Y3J0YyA9 IHNldC0+Y3J0YzsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkg PCBuY3J0Y3M7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0Y3Nb aV07CisJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IHN0YXRlLT5jcnRjX3N0 YXRlc1tpXTsKKworCQlpZiAoIWNydGMgJiYgY3J0YyAhPSBzZXQtPmNydGMpCisJCQljb250aW51 ZTsKKworCQljcnRjX3N0YXRlLT5lbmFibGUgPQorCQkJZHJtX2F0b21pY19jb25uZWN0b3JzX2Zv cl9jcnRjKHN0YXRlLCBjcnRjKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBkcm1f YXRvbWljX2hlbHBlcl9zZXRfY29uZmlnIC0gc2V0IGEgbmV3IGNvbmZpZyBmcm9tIHVzZXJzcGFj ZQorICogQHNldDogbW9kZSBzZXQgY29uZmlndXJhdGlvbgorICoKKyAqIFByb3ZpZGVzIGEgZGVm YXVsdCBjcnRjIHNldF9jb25maWcgaGFuZGxlciB1c2luZyB0aGUgYXRvbWljIGRyaXZlciBpbnRl cmZhY2UuCisgKgorICogUmV0dXJuczoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2 ZSBlcnJubyBudW1iZXJzIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fYXRvbWljX2hlbHBlcl9z ZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc2V0LT5jcnRjOworCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpwcmltYXJ5X3N0YXRlOworCWludCByZXQgPSAwOworCisJc3RhdGUgPSBkcm1fYXRvbWljX3N0 YXRlX2FsbG9jKGNydGMtPmRldik7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIC1FTk9NRU07CisK KwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkcm1fbW9kZXNldF9sZWdhY3lfYWNxdWlyZV9jdHgoY3J0 Yyk7CityZXRyeToKKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0 ZSwgY3J0Yyk7CisJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgeworCQlyZXQgPSBQVFJfRVJSKGNy dGNfc3RhdGUpOworCQlpZiAocmV0ID09IC1FREVBRExLKQorCQkJZ290byBiYWNrb2ZmOworCQll bHNlCisJCQlnb3RvIGZhaWw7CisJfQorCisJaWYgKCFzZXQtPm1vZGUpIHsKKwkJV0FSTl9PTihz ZXQtPmZiKTsKKwkJV0FSTl9PTihzZXQtPm51bV9jb25uZWN0b3JzKTsKKworCQljcnRjX3N0YXRl LT5lbmFibGUgPSBmYWxzZTsKKwkJZ290byBjb21taXQ7CisJfQorCisJV0FSTl9PTighc2V0LT5m Yik7CisJV0FSTl9PTighc2V0LT5udW1fY29ubmVjdG9ycyk7CisKKwljcnRjX3N0YXRlLT5lbmFi bGUgPSB0cnVlOworCWRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPm1vZGUsIHNldC0+bW9kZSk7 CisKKwlwcmltYXJ5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIGNy dGMtPnByaW1hcnkpOworCWlmIChJU19FUlIocHJpbWFyeV9zdGF0ZSkpIHsKKwkJcmV0ID0gUFRS X0VSUihwcmltYXJ5X3N0YXRlKTsKKwkJaWYgKHJldCA9PSAtRURFQURMSykKKwkJCWdvdG8gYmFj a29mZjsKKwkJZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCWRybV9hdG9taWNfc2V0X2NydGNf Zm9yX3BsYW5lKHByaW1hcnlfc3RhdGUsIGNydGMpOworCXByaW1hcnlfc3RhdGUtPmZiID0gc2V0 LT5mYjsKKwlwcmltYXJ5X3N0YXRlLT5jcnRjX3ggPSAwOworCXByaW1hcnlfc3RhdGUtPmNydGNf eSA9IDA7CisJcHJpbWFyeV9zdGF0ZS0+Y3J0Y19oID0gc2V0LT5tb2RlLT52ZGlzcGxheTsKKwlw cmltYXJ5X3N0YXRlLT5jcnRjX3cgPSBzZXQtPm1vZGUtPmhkaXNwbGF5OworCXByaW1hcnlfc3Rh dGUtPnNyY194ID0gc2V0LT54IDw8IDE2OworCXByaW1hcnlfc3RhdGUtPnNyY195ID0gc2V0LT55 IDw8IDE2OworCXByaW1hcnlfc3RhdGUtPnNyY19oID0gc2V0LT5tb2RlLT52ZGlzcGxheSA8PCAx NjsKKwlwcmltYXJ5X3N0YXRlLT5zcmNfdyA9IHNldC0+bW9kZS0+aGRpc3BsYXkgPDwgMTY7CisK K2NvbW1pdDoKKwlyZXQgPSB1cGRhdGVfb3V0cHV0X3N0YXRlKHN0YXRlLCBzZXQpOworCWlmIChy ZXQpIHsKKwkJaWYgKHJldCA9PSAtRURFQURMSykKKwkJCWdvdG8gYmFja29mZjsKKwkJZWxzZQor CQkJZ290byBmYWlsOworCX0KKworCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKKwlp ZiAocmV0ID09IC1FREVBRExLKQorCQlnb3RvIGJhY2tvZmY7CisKKwkvKiBEcml2ZXIgdGFrZXMg b3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0LiAqLworCWlmIChyZXQgPT0g MCkKKwkJcmV0dXJuIDA7CitmYWlsOgorCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisK KwlyZXR1cm4gcmV0OworYmFja29mZjoKKwlkcm1fYXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRl KTsKKwlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKKworCS8qCisJICogU29tZW9uZSBt aWdodCBoYXZlIGV4Y2hhbmdlZCB0aGUgZnJhbWVidWZmZXIgd2hpbGUgd2UgZHJvcHBlZCBsb2Nr cworCSAqIGluIHRoZSBiYWNrb2ZmIGNvZGUuIFdlIG5lZWQgdG8gZml4IHVwIHRoZSBmYiByZWZj b3VudCB0cmFja2luZyB0aGUKKwkgKiBjb3JlIGRvZXMgZm9yIHVzLgorCSAqLworCWNydGMtPnBy aW1hcnktPm9sZF9mYiA9IGNydGMtPnByaW1hcnktPmZiOworCisJZ290byByZXRyeTsKK30KK0VY UE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyk7CisKKy8qKgorICogZHJt X2F0b21pY19oZWxwZXJfY3J0Y19zZXRfcHJvcGVydHkgLSBoZWxwZXIgZm9yIGNydGMgcHJvcnRp ZXMKKyAqIEBjcnRjOiBEUk0gY3J0YworICogQHByb3J0eTogRFJNIHByb3BlcnR5CisgKiBAdmFs OiB2YWx1ZSBvZiBwcm9wZXJ0eQorICoKKyAqIFByb3ZpZGVzIGEgZGVmYXVsdCBwbGFuZSBkaXNh YmxsZSBoYW5kbGVyIHVzaW5nIHRoZSBhdG9taWMgZHJpdmVyIGludGVyZmFjZS4KKyAqCisgKiBS RVRVUk5TOgorICogWmVybyBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUKKyAqLwor aW50Citkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCisJCQkJICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQkJCSAgICB1 aW50NjRfdCB2YWwpCit7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOworCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlpbnQgcmV0ID0gMDsKKworCXN0YXRlID0g ZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhjcnRjLT5kZXYpOworCWlmICghc3RhdGUpCisJCXJldHVy biAtRU5PTUVNOworCisJLyogLT5zZXRfcHJvcGVydHkgaXMgYWx3YXlzIGNhbGxlZCB3aXRoIGFs bCBsb2NrcyBoZWxkLiAqLworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGNydGMtPmRldi0+bW9kZV9j b25maWcuYWNxdWlyZV9jdHg7CityZXRyeToKKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRf Y3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgeworCQly ZXQgPSBQVFJfRVJSKGNydGNfc3RhdGUpOworCQlpZiAocmV0ID09IC1FREVBRExLKQorCQkJZ290 byBiYWNrb2ZmOworCQllbHNlCisJCQlnb3RvIGZhaWw7CisJfQorCisJcmV0ID0gY3J0Yy0+ZnVu Y3MtPmF0b21pY19zZXRfcHJvcGVydHkoY3J0YywgY3J0Y19zdGF0ZSwKKwkJCQkJICAgICAgIHBy b3BlcnR5LCB2YWwpOworCWlmIChyZXQpIHsKKwkJaWYgKHJldCA9PSAtRURFQURMSykKKwkJCWdv dG8gYmFja29mZjsKKwkJZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCXJldCA9IGRybV9hdG9t aWNfY29tbWl0KHN0YXRlKTsKKwlpZiAocmV0ID09IC1FREVBRExLKQorCQlnb3RvIGJhY2tvZmY7 CisKKwkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29t bWl0LiAqLworCWlmIChyZXQgPT0gMCkKKwkJcmV0dXJuIDA7CitmYWlsOgorCWRybV9hdG9taWNf c3RhdGVfZnJlZShzdGF0ZSk7CisKKwlyZXR1cm4gcmV0OworYmFja29mZjoKKwlkcm1fYXRvbWlj X2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsK KworCWdvdG8gcmV0cnk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2NydGNf c2V0X3Byb3BlcnR5KTsKKworLyoqCisgKiBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9zZXRfcHJv cGVydHkgLSBoZWxwZXIgZm9yIHBsYW5lIHByb3J0aWVzCisgKiBAcGxhbmU6IERSTSBwbGFuZQor ICogQHByb3J0eTogRFJNIHByb3BlcnR5CisgKiBAdmFsOiB2YWx1ZSBvZiBwcm9wZXJ0eQorICoK KyAqIFByb3ZpZGVzIGEgZGVmYXVsdCBwbGFuZSBkaXNhYmxlIGhhbmRsZXIgdXNpbmcgdGhlIGF0 b21pYyBkcml2ZXIgaW50ZXJmYWNlLgorICoKKyAqIFJFVFVSTlM6CisgKiBaZXJvIG9uIHN1Y2Nl c3MsIGVycm9yIGNvZGUgb24gZmFpbHVyZQorICovCitpbnQKK2RybV9hdG9taWNfaGVscGVyX3Bs YW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkgICAgc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCisJCQkJICAgIHVpbnQ2NF90IHZhbCkKK3sKKwlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGU7CisJaW50IHJldCA9IDA7CisKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxs b2MocGxhbmUtPmRldik7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiAt PnNldF9wcm9wZXJ0eSBpcyBhbHdheXMgY2FsbGVkIHdpdGggYWxsIGxvY2tzIGhlbGQuICovCisJ c3RhdGUtPmFjcXVpcmVfY3R4ID0gcGxhbmUtPmRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7 CityZXRyeToKKwlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRl LCBwbGFuZSk7CisJaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpIHsKKwkJcmV0ID0gUFRSX0VSUihw bGFuZV9zdGF0ZSk7CisJCWlmIChyZXQgPT0gLUVERUFETEspCisJCQlnb3RvIGJhY2tvZmY7CisJ CWVsc2UKKwkJCWdvdG8gZmFpbDsKKwl9CisKKwlyZXQgPSBwbGFuZS0+ZnVuY3MtPmF0b21pY19z ZXRfcHJvcGVydHkocGxhbmUsIHBsYW5lX3N0YXRlLAorCQkJCQkgICAgICAgcHJvcGVydHksIHZh bCk7CisJaWYgKHJldCkgeworCQlpZiAocmV0ID09IC1FREVBRExLKQorCQkJZ290byBiYWNrb2Zm OworCQllbHNlCisJCQlnb3RvIGZhaWw7CisJfQorCisJcmV0ID0gZHJtX2F0b21pY19jb21taXQo c3RhdGUpOworCWlmIChyZXQgPT0gLUVERUFETEspCisJCWdvdG8gYmFja29mZjsKKworCS8qIERy aXZlciB0YWtlcyBvd25lcnNoaXAgb2Ygc3RhdGUgb24gc3VjY2Vzc2Z1bCBjb21taXQuICovCisJ aWYgKHJldCA9PSAwKQorCQlyZXR1cm4gMDsKK2ZhaWw6CisJZHJtX2F0b21pY19zdGF0ZV9mcmVl KHN0YXRlKTsKKworCXJldHVybiByZXQ7CitiYWNrb2ZmOgorCWRybV9hdG9taWNfbGVnYWN5X2Jh Y2tvZmYoc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOworCisJZ290byBy ZXRyeTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfc2V0X3Byb3Bl cnR5KTsKKworLyoqCisgKiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jfc2V0X3Byb3BlcnR5 IC0gaGVscGVyIGZvciBjb25uZWN0b3IgcHJvcnRpZXMKKyAqIEBjb25uZWN0b3I6IERSTSBjb25u ZWN0b3IKKyAqIEBwcm9ydHk6IERSTSBwcm9wZXJ0eQorICogQHZhbDogdmFsdWUgb2YgcHJvcGVy dHkKKyAqCisgKiBQcm92aWRlcyBhIGRlZmF1bHQgcGxhbmUgZGlzYWJsbGUgaGFuZGxlciB1c2lu ZyB0aGUgYXRvbWljIGRyaXZlciBpbnRlcmZhY2UuCisgKgorICogUkVUVVJOUzoKKyAqIFplcm8g b24gc3VjY2VzcywgZXJyb3IgY29kZSBvbiBmYWlsdXJlCisgKi8KK2ludAorZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkgICAgdWlu dDY0X3QgdmFsKQoreworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOworCWludCByZXQgPSAwOworCisJ c3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGNvbm5lY3Rvci0+ZGV2KTsKKwlpZiAoIXN0 YXRlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCS8qIC0+c2V0X3Byb3BlcnR5IGlzIGFsd2F5cyBj YWxsZWQgd2l0aCBhbGwgbG9ja3MgaGVsZC4gKi8KKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjb25u ZWN0b3ItPmRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7CityZXRyeToKKwljb25uZWN0b3Jf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7 CisJaWYgKElTX0VSUihjb25uZWN0b3Jfc3RhdGUpKSB7CisJCXJldCA9IFBUUl9FUlIoY29ubmVj dG9yX3N0YXRlKTsKKwkJaWYgKHJldCA9PSAtRURFQURMSykKKwkJCWdvdG8gYmFja29mZjsKKwkJ ZWxzZQorCQkJZ290byBmYWlsOworCX0KKworCXJldCA9IGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21p Y19zZXRfcHJvcGVydHkoY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsCisJCQkJCSAgICAgICBw cm9wZXJ0eSwgdmFsKTsKKwlpZiAocmV0KSB7CisJCWlmIChyZXQgPT0gLUVERUFETEspCisJCQln b3RvIGJhY2tvZmY7CisJCWVsc2UKKwkJCWdvdG8gZmFpbDsKKwl9CisKKwlyZXQgPSBkcm1fYXRv bWljX2NvbW1pdChzdGF0ZSk7CisJaWYgKHJldCA9PSAtRURFQURMSykKKwkJZ290byBiYWNrb2Zm OworCisJLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNv bW1pdC4gKi8KKwlpZiAocmV0ID09IDApCisJCXJldHVybiAwOworZmFpbDoKKwlkcm1fYXRvbWlj X3N0YXRlX2ZyZWUoc3RhdGUpOworCisJcmV0dXJuIHJldDsKK2JhY2tvZmY6CisJZHJtX2F0b21p Y19sZWdhY3lfYmFja29mZihzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7 CisKKwlnb3RvIHJldHJ5OworfQorRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3Jfc2V0X3Byb3BlcnR5KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWNf aGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oCmluZGV4IDk3ODFjZTcz OWUxMC4uOGNkNmZlN2E0OGU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hl bHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKQEAgLTQ5LDQgKzQ5 LDI1IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKIAor LyogaW1wbGVtZW50YXRpb25zIGZvciBsZWdhY3kgaW50ZXJmYWNlcyAqLworaW50IGRybV9hdG9t aWNfaGVscGVyX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkgICBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs CisJCQkJICAgaW50IGNydGNfeCwgaW50IGNydGNfeSwKKwkJCQkgICB1bnNpZ25lZCBpbnQgY3J0 Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAorCQkJCSAgIHVpbnQzMl90IHNyY194LCB1aW50MzJf dCBzcmNfeSwKKwkJCQkgICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpOworaW50IGRy bV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpOwor aW50IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0 KTsKKworaW50IGRybV9hdG9taWNfaGVscGVyX2NydGNfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKKwkJCQkJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCisJCQkJCXVp bnQ2NF90IHZhbCk7CitpbnQgZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfc2V0X3Byb3BlcnR5KHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0 eSwKKwkJCQkJdWludDY0X3QgdmFsKTsKK2ludCBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf c2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCXN0cnVj dCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQkJCQl1aW50NjRfdCB2YWwpOworCiAjZW5kaWYg LyogRFJNX0FUT01JQ19IRUxQRVJfSF8gKi8KLS0gCjIuMS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=