From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v4 1/2] drm: bridge: Allow daisy chaining of bridges Date: Thu, 21 May 2015 11:03:16 +0530 Message-ID: <1432186397-27666-1-git-send-email-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTP id AEA9D6E02C for ; Wed, 20 May 2015 22:33:26 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch Cc: airlied@redhat.com, andy.yan@rock-chips.com, ajaykumar.rs@samsung.com List-Id: dri-devel@lists.freedesktop.org QWxsb3cgZHJtX2JyaWRnZSBvYmplY3RzIHRvIGxpbmsgdG8gZWFjaCBvdGhlciBpbiBvcmRlciB0 byBmb3JtIGFuIGVuY29kZXIKY2hhaW4uIFRoZSByZXF1aXJlbWVudCBmb3IgY3JlYXRpbmcgYSBj aGFpbiBvZiBicmlkZ2VzIGNvbWVzIGJlY2F1c2UgdGhlCk1TTSBkcm0gZHJpdmVyIHVzZXMgdXAg aXRzIGVuY29kZXIgYW5kIGJyaWRnZSBvYmplY3RzIGZvciBibG9ja3Mgd2l0aGluCnRoZSBTb0Mg aXRzZWxmLiBUaGVyZSBpc24ndCBhbnl0aGluZyBsZWZ0IHRvIHVzZSBpZiB0aGUgU29DIGRpc3Bs YXkgb3V0cHV0CmlzIGNvbm5lY3RlZCB0byBhbiBleHRlcm5hbCBlbmNvZGVyIElDLiBIYXZpbmcg YW4gYWRkaXRpb25hbCBicmlkZ2UKY29ubmVjdGVkIHRvIHRoZSBleGlzdGluZyBicmlkZ2UgaGVs cHMgaGVyZS4gSW4gZ2VuZXJhbCwgaXQgaXMgcG9zc2libGUgZm9yCnBsYXRmb3JtcyB0byBoYXZl ICBtdWx0aXBsZSBkZXZpY2VzIGJldHdlZW4gdGhlIGVuY29kZXIgYW5kIHRoZQpjb25uZWN0b3Iv cGFuZWwgdGhhdCByZXF1aXJlIHNvbWUgc29ydCBvZiBjb25maWd1cmF0aW9uLgoKV2UgY3JlYXRl IGRybSBicmlkZ2UgaGVscGVyIGZ1bmN0aW9ucyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggb3AgaW4K J2RybV9icmlkZ2VfZnVuY3MnLiBUaGVzZSBoZWxwZXJzIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcK J2RybV9icmlkZ2VfZnVuY3MnIG9wIGZvciB0aGUgZW50aXJlIGNoYWluIG9mIGJyaWRnZXMuIFRo ZXNlIGhlbHBlcnMgYXJlCnVzZWQgaW50ZXJuYWxseSBieSBkcm1fYXRvbWljX2hlbHBlci5jIGFu ZCBkcm1fY3J0Y19oZWxwZXIuYy4KClRoZSBkcm1fYnJpZGdlX2VuYWJsZS9wcmVfZW5hYmxlIGhl bHBlcnMgZXhlY3V0ZSBlbmFibGUvcHJlX2VuYWJsZSBvcHMgb2YKdGhlIGJyaWRnZSBjbG9zZXQg dG8gdGhlIGVuY29kZXIsIGFuZCBwcm9jZWVkIHVudGlsIHRoZSBsYXN0IGJyaWRnZSBpbiB0aGUK Y2hhaW4gaXMgZW5hYmxlZC4gVGhlIHNhbWUgaG9sZHMgZm9yIGRybV9icmlkZ2VfbW9kZV9zZXQv bW9kZV9maXh1cApoZWxwZXJzLiBUaGUgZHJtX2JyaWRnZV9kaXNhYmxlL3Bvc3RfZGlzYWJsZSBo ZWxwZXJzIGRpc2FibGUgdGhlIGxhc3QKYnJpZGdlIGluIHRoZSBjaGFpbiBmaXJzdCwgYW5kIHBy b2NlZWQgdW50aWwgdGhlIGZpcnN0IGJyaWRnZSBpbiB0aGUgY2hhaW4KaXMgZGlzYWJsZWQuCgpk cm1fYnJpZGdlX2F0dGFjaCgpIHJlbWFpbnMgdGhlIHNhbWUuIEFzIGJlZm9yZSwgdGhlIGRyaXZl ciBjYWxsaW5nIHRoaXMKZnVuY3Rpb24gc2hvdWxkIG1ha2Ugc3VyZSBpdCBoYXMgc2V0IHRoZSBs aW5rcyBjb3JyZWN0bHkuIFRoZSBvcmRlciBpbgp3aGljaCB0aGUgYnJpZGdlcyBhcmUgY29ubmVj dGVkIHRvIGVhY2ggb3RoZXIgZGV0ZXJtaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2gKdGhlIGNhbGxz IGFyZSBtYWRlLiBPbmUgcmVxdWlyZW1lbnQgaXMgdGhhdCBldmVyeSBicmlkZ2UgaW4gdGhlIGNo YWluCnNob3VsZCBwb2ludCB0aGUgcGFyZW50IGVuY29kZXIgb2JqZWN0LiBUaGlzIGlzIHJlcXVp cmVkIHNpbmNlIGJyaWRnZQpkcml2ZXJzIGV4cGVjdCBhIHZhbGlkIGVuY29kZXIgcG9pbnRlciBp biBkcm1fYnJpZGdlLiBGb3IgZXhhbXBsZSwgY29uc2lkZXIKYSBjaGFpbiB3aGVyZSBhbiBlbmNv ZGVyJ3Mgb3V0cHV0IGlzIGNvbm5lY3RlZCB0byBicmlkZ2UxLCBhbmQgYnJpZGdlMSdzCm91dHB1 dCBpcyBjb25uZWN0ZWQgdG8gYnJpZGdlMjoKCgkvKiBMaWtlIGJlZm9yZSwgYXR0YWNoIGJyaWRn ZSB0byBhbiBlbmNvZGVyICovCglicmlkZ2UxLT5lbmNvZGVyID0gZW5jb2RlcjsKCXJldCA9IGRy bV9icmlkZ2VfYXR0YWNoKGRldiwgYnJpZGdlMSk7CgkuLgoKCS8qCgkgKiBzZXQgdGhlIGZpcnN0 IGJyaWRnZSdzICduZXh0JyBicmlkZ2UgdG8gYnJpZGdlMiwgc2V0IGl0cyBlbmNvZGVyCgkgKiBh cyBicmlkZ2UxJ3MgZW5jb2RlcgoJICovCglicmlkZ2UxLT5uZXh0ID0gYnJpZGdlMgoJYnJpZGdl Mi0+ZW5jb2RlciA9IGJyaWRnZTEtPmVuY29kZXI7CglyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChk ZXYsIGJyaWRnZTIpOwoKCS4uLgoJLi4uCgpUaGlzIG1ldGhvZCBvZiBicmlkZ2UgY2hhaW5pbmcg aXNuJ3QgaW50cnVzaXZlIGFuZCBleGlzdGluZyBkcml2ZXJzIHRoYXQKdXNlIGRybV9icmlkZ2Ug d2lsbCBiZWhhdmUgdGhlIHNhbWUgd2F5IGFzIGJlZm9yZS4gVGhlIGJyaWRnZSBoZWxwZXJzIGFs c28KY2xlYW5zIHVwIHRoZSBhdG9taWMgYW5kIGNydGMgaGVscGVyIGZpbGVzIGEgYml0LgoKUmV2 aWV3ZWQtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+ClJldmll d2VkLWJ5OiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ClNpZ25lZC1vZmYtYnk6IEFyY2hpdCBUYW5lamEg PGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+Ci0tLQp2NDoKLSBGaXggdXAgdGhlIGNhbGwgc2VxdWVu Y2UgZm9yIHBvc3RfZGlzYWJsZS9wcmVfZW5hYmxlIGFzIHN1Z2dlc3RlZCBieQogIERhbmllbAoK djM6Ci0gQWRkIGhlYWRlcmRvY3MgZm9yIHRoZSBuZXcgZnVuY3Rpb25zCgp2MjoKLSBBZGQgRVhQ T1JUX1NZTUJPTCBmb3IgdGhlIG5ldyBmdW5jdGlvbnMKLSBGaXggbG9naWMgaXNzdWUgaW4gbW9k ZV9maXh1cCgpCgogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAgMjkgKysr LS0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyAgICAgICAgfCAxNDcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVs cGVyLmMgICB8ICA1NCArKysrKy0tLS0tLS0tCiBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAg ICAgICAgICB8ICAxNCArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE5MSBpbnNlcnRpb25zKCspLCA1 MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCmluZGV4IDFkMmNh NTIuLmQ2Yzg1YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCkBAIC0yODEsMTQg KzI4MSwxMSBAQCBtb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJ ZW5jb2RlciA9IGNvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKIAkJZnVuY3MgPSBlbmNvZGVyLT5o ZWxwZXJfcHJpdmF0ZTsKIAotCQlpZiAoZW5jb2Rlci0+YnJpZGdlICYmIGVuY29kZXItPmJyaWRn ZS0+ZnVuY3MtPm1vZGVfZml4dXApIHsKLQkJCXJldCA9IGVuY29kZXItPmJyaWRnZS0+ZnVuY3Mt Pm1vZGVfZml4dXAoCi0JCQkJCWVuY29kZXItPmJyaWRnZSwgJmNydGNfc3RhdGUtPm1vZGUsCi0J CQkJCSZjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKTsKLQkJCWlmICghcmV0KSB7Ci0JCQkJRFJN X0RFQlVHX0FUT01JQygiQnJpZGdlIGZpeHVwIGZhaWxlZFxuIik7Ci0JCQkJcmV0dXJuIC1FSU5W QUw7Ci0JCQl9CisJCXJldCA9IGRybV9icmlkZ2VfbW9kZV9maXh1cChlbmNvZGVyLT5icmlkZ2Us ICZjcnRjX3N0YXRlLT5tb2RlLAorCQkJCSZjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKTsKKwkJ aWYgKCFyZXQpIHsKKwkJCURSTV9ERUJVR19BVE9NSUMoIkJyaWRnZSBmaXh1cCBmYWlsZWRcbiIp OworCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIAogCQlpZiAoZnVuY3MtPmF0b21pY19jaGVjaykg ewpAQCAtNTc4LDggKzU3NSw3IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogCQkgKiBFYWNoIGVuY29k ZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzIHN0ZWFsCiAJCSAq IGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBjYWxsIGRpc2FibGUgaG9va3MgdHdpY2UuCiAJCSAqLwot CQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+ZGlzYWJs ZShlbmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdl KTsKIAogCQkvKiBSaWdodCBmdW5jdGlvbiBkZXBlbmRzIHVwb24gdGFyZ2V0IHN0YXRlLiAqLwog CQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YyAmJiBmdW5jcy0+cHJlcGFyZSkKQEAgLTU4OSw4 ICs1ODUsNyBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIAkJZWxzZQogCQkJZnVuY3MtPmRwbXMoZW5j b2RlciwgRFJNX01PREVfRFBNU19PRkYpOwogCi0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCi0JCQll bmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5wb3N0X2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKKwkJ ZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKIAl9CiAKIAlmb3JfZWFj aF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKQEAg LTcxMyw5ICs3MDgsNyBAQCBjcnRjX3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiAJCWlmIChmdW5jcy0+bW9kZV9zZXQp CiAJCQlmdW5jcy0+bW9kZV9zZXQoZW5jb2RlciwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7CiAKLQkJ aWYgKGVuY29kZXItPmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX3NldCkK LQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfc2V0KGVuY29kZXItPmJyaWRnZSwKLQkJ CQkJCQkgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7CisJCWRybV9icmlkZ2VfbW9kZV9zZXQoZW5jb2Rl ci0+YnJpZGdlLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKIAl9CiB9CiAKQEAgLTgwOSwxNiArODAy LDE0IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgKiBFYWNoIGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNv bm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzIHN0ZWFsCiAJCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24n dCBjYWxsIGVuYWJsZSBob29rcyB0d2ljZS4KIAkJICovCi0JCWlmIChlbmNvZGVyLT5icmlkZ2Up Ci0JCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7 CisJCWRybV9icmlkZ2VfcHJlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwogCiAJCWlmIChmdW5j cy0+ZW5hYmxlKQogCQkJZnVuY3MtPmVuYWJsZShlbmNvZGVyKTsKIAkJZWxzZQogCQkJZnVuY3Mt PmNvbW1pdChlbmNvZGVyKTsKIAotCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5jb2Rlci0+ YnJpZGdlLT5mdW5jcy0+ZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7CisJCWRybV9icmlkZ2VfZW5h YmxlKGVuY29kZXItPmJyaWRnZSk7CiAJfQogfQogRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hl bHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYnJpZGdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCmluZGV4IGVhYTU3 OTAuLmMzYTg1Y2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwpAQCAtNjYsNiArNjYsMTUzIEBAIGludCBk cm1fYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQogfQogRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX2F0dGFjaCk7CiAKKy8qKgor ICogZHJtX2JyaWRnZV9tb2RlX2ZpeHVwIC0gZml4dXAgcHJvcG9zZWQgbW9kZSBmb3IgYWxsIGJy aWRnZXMgaW4gdGhlCisgKgkJCSAgIGVuY29kZXIgY2hhaW4KKyAqIEBicmlkZ2U6IGJyaWRnZSBj b250cm9sIHN0cnVjdHVyZQorICogQG1vZGU6IGRlc2lyZWQgbW9kZSB0byBiZSBzZXQgZm9yIHRo ZSBicmlkZ2UKKyAqIEBhZGp1c3RlZF9tb2RlOiB1cGRhdGVkIG1vZGUgdGhhdCB3b3JrcyBmb3Ig dGhpcyBicmlkZ2UKKyAqCisgKiBDYWxscyAnbW9kZV9maXh1cCcgZHJtX2JyaWRnZV9mdW5jcyBv cCBmb3IgYWxsIHRoZSBicmlkZ2VzIGluIHRoZQorICogZW5jb2RlciBjaGFpbiwgc3RhcnRpbmcg ZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRoZSBsYXN0LgorICoKKyAqIE5vdGU6IHRoZSBicmlk Z2UgcGFzc2VkIHNob3VsZCBiZSB0aGUgb25lIGNsb3Nlc3QgdG8gdGhlIGVuY29kZXIKKyAqCisg KiBSRVRVUk5TOgorICogdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlCisgKi8KK2Jv b2wgZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmICghYnJp ZGdlKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmIChicmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKQor CQlyZXQgPSBicmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKGJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRf bW9kZSk7CisKKwlyZXQgPSByZXQgJiYgZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKGJyaWRnZS0+bmV4 dCwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJP TChkcm1fYnJpZGdlX21vZGVfZml4dXApOworCisvKioKKyAqIGRybV9icmlkZ2VfZGlzYWJsZSAt IGNhbGxzICdkaXNhYmxlJyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwKKyAqCQkJYnJpZGdl cyBpbiB0aGUgZW5jb2RlciBjaGFpbi4KKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVj dHVyZQorICoKKyAqIENhbGxzICdkaXNhYmxlJyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwg dGhlIGJyaWRnZXMgaW4gdGhlIGVuY29kZXIKKyAqIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBs YXN0IGJyaWRnZSB0byB0aGUgZmlyc3QuIFRoZXNlIGFyZSBjYWxsZWQgYmVmb3JlCisgKiBjYWxs aW5nIHRoZSBlbmNvZGVyJ3MgcHJlcGFyZSBvcC4KKyAqCisgKiBOb3RlOiB0aGUgYnJpZGdlIHBh c3NlZCBzaG91bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCisgKi8KK3ZvaWQg ZHJtX2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJaWYgKCFi cmlkZ2UpCisJCXJldHVybjsKKworCWRybV9icmlkZ2VfZGlzYWJsZShicmlkZ2UtPm5leHQpOwor CisJYnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShicmlkZ2UpOworfQorRVhQT1JUX1NZTUJPTChkcm1f YnJpZGdlX2Rpc2FibGUpOworCisvKioKKyAqIGRybV9icmlkZ2VfcG9zdF9kaXNhYmxlIC0gY2Fs bHMgJ3Bvc3RfZGlzYWJsZScgZHJtX2JyaWRnZV9mdW5jcyBvcCBmb3IKKyAqCQkJICAgICBhbGwg YnJpZGdlcyBpbiB0aGUgZW5jb2RlciBjaGFpbi4KKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9s IHN0cnVjdHVyZQorICoKKyAqIENhbGxzICdwb3N0X2Rpc2FibGUnIGRybV9icmlkZ2VfZnVuY3Mg b3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUKKyAqIGVuY29kZXIgY2hhaW4sIHN0YXJ0aW5n IGZyb20gdGhlIGZpcnN0IGJyaWRnZSB0byB0aGUgbGFzdC4gVGhlc2UgYXJlIGNhbGxlZAorICog YWZ0ZXIgY29tcGxldGluZyB0aGUgZW5jb2RlcidzIHByZXBhcmUgb3AuCisgKgorICogTm90ZTog dGhlIGJyaWRnZSBwYXNzZWQgc2hvdWxkIGJlIHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2Rl cgorICovCit2b2lkIGRybV9icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpCit7CisJaWYgKCFicmlkZ2UpCisJCXJldHVybjsKKworCWJyaWRnZS0+ZnVuY3MtPnBv c3RfZGlzYWJsZShicmlkZ2UpOworCisJZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoYnJpZGdlLT5u ZXh0KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUpOworCisvKioK KyAqIGRybV9icmlkZ2VfbW9kZV9zZXQgLSBzZXQgcHJvcG9zZWQgbW9kZSBmb3IgYWxsIGJyaWRn ZXMgaW4gdGhlCisgKgkJCSBlbmNvZGVyIGNoYWluCisgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJv bCBzdHJ1Y3R1cmUKKyAqIEBtb2RlOiBkZXNpcmVkIG1vZGUgdG8gYmUgc2V0IGZvciB0aGUgYnJp ZGdlCisgKiBAYWRqdXN0ZWRfbW9kZTogdXBkYXRlZCBtb2RlIHRoYXQgd29ya3MgZm9yIHRoaXMg YnJpZGdlCisgKgorICogQ2FsbHMgJ21vZGVfc2V0JyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBh bGwgdGhlIGJyaWRnZXMgaW4gdGhlCisgKiBlbmNvZGVyIGNoYWluLCBzdGFydGluZyBmcm9tIHRo ZSBmaXJzdCBicmlkZ2UgdG8gdGhlIGxhc3QuCisgKgorICogTm90ZTogdGhlIGJyaWRnZSBwYXNz ZWQgc2hvdWxkIGJlIHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2RlcgorICovCit2b2lkIGRy bV9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKKwkJCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUpCit7CisJaWYgKCFicmlkZ2UpCisJCXJldHVybjsKKworCWlmIChicmlkZ2UtPmZ1 bmNzLT5tb2RlX3NldCkKKwkJYnJpZGdlLT5mdW5jcy0+bW9kZV9zZXQoYnJpZGdlLCBtb2RlLCBh ZGp1c3RlZF9tb2RlKTsKKworCWRybV9icmlkZ2VfbW9kZV9zZXQoYnJpZGdlLT5uZXh0LCBtb2Rl LCBhZGp1c3RlZF9tb2RlKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9tb2RlX3NldCk7 CisKKy8qKgorICogZHJtX2JyaWRnZV9wcmVfZW5hYmxlIC0gY2FsbHMgJ3ByZV9lbmFibGUnIGRy bV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbAorICoJCQkgICBicmlkZ2VzIGluIHRoZSBlbmNvZGVy IGNoYWluLgorICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCisgKgorICogQ2Fs bHMgJ3ByZV9lbmFibGUnIGRybV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBp biB0aGUgZW5jb2RlcgorICogY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGxhc3QgYnJpZGdlIHRv IHRoZSBmaXJzdC4gVGhlc2UgYXJlIGNhbGxlZAorICogYmVmb3JlIGNhbGxpbmcgdGhlIGVuY29k ZXIncyBjb21taXQgb3AuCisgKgorICogTm90ZTogdGhlIGJyaWRnZSBwYXNzZWQgc2hvdWxkIGJl IHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2RlcgorICovCit2b2lkIGRybV9icmlkZ2VfcHJl X2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCWlmICghYnJpZGdlKQorCQly ZXR1cm47CisKKwlkcm1fYnJpZGdlX3ByZV9lbmFibGUoYnJpZGdlLT5uZXh0KTsKKworCWJyaWRn ZS0+ZnVuY3MtPnByZV9lbmFibGUoYnJpZGdlKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2JyaWRn ZV9wcmVfZW5hYmxlKTsKKworLyoqCisgKiBkcm1fYnJpZGdlX2VuYWJsZSAtIGNhbGxzICdlbmFi bGUnIGRybV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbCBicmlkZ2VzCisgKgkJICAgICAgIGluIHRo ZSBlbmNvZGVyIGNoYWluLgorICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCisg KgorICogQ2FsbHMgJ2VuYWJsZScgZHJtX2JyaWRnZV9mdW5jcyBvcCBmb3IgYWxsIHRoZSBicmlk Z2VzIGluIHRoZSBlbmNvZGVyCisgKiBjaGFpbiwgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJp ZGdlIHRvIHRoZSBsYXN0LiBUaGVzZSBhcmUgY2FsbGVkCisgKiBhZnRlciBjb21wbGV0aW5nIHRo ZSBlbmNvZGVyJ3MgY29tbWl0IG9wLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgYnJpZGdlIHBhc3Nl ZCBzaG91bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCisgKi8KK3ZvaWQgZHJt X2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlpZiAoIWJyaWRn ZSkKKwkJcmV0dXJuOworCisJYnJpZGdlLT5mdW5jcy0+ZW5hYmxlKGJyaWRnZSk7CisKKwlkcm1f YnJpZGdlX2VuYWJsZShicmlkZ2UtPm5leHQpOworfQorRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdl X2VuYWJsZSk7CisKICNpZmRlZiBDT05GSUdfT0YKIHN0cnVjdCBkcm1fYnJpZGdlICpvZl9kcm1f ZmluZF9icmlkZ2Uoc3RydWN0IGRldmljZV9ub2RlICpucCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fY3J0Y19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19o ZWxwZXIuYwppbmRleCBhYjAwMjg2Li5mZjliMzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2NydGNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBl ci5jCkBAIC0xNjMsMTYgKzE2MywxNCBAQCBkcm1fZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1 bmNzICplbmNvZGVyX2Z1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7CiAKLQlpZiAoZW5j b2Rlci0+YnJpZGdlKQotCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5kaXNhYmxlKGVuY29kZXIt PmJyaWRnZSk7CisJZHJtX2JyaWRnZV9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAKIAlpZiAo ZW5jb2Rlcl9mdW5jcy0+ZGlzYWJsZSkKIAkJKCplbmNvZGVyX2Z1bmNzLT5kaXNhYmxlKShlbmNv ZGVyKTsKIAllbHNlCiAJCSgqZW5jb2Rlcl9mdW5jcy0+ZHBtcykoZW5jb2RlciwgRFJNX01PREVf RFBNU19PRkYpOwogCi0JaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJZW5jb2Rlci0+YnJpZGdlLT5m dW5jcy0+cG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CisJZHJtX2JyaWRnZV9wb3N0X2Rp c2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKIH0KIAogc3RhdGljIHZvaWQgX19kcm1faGVscGVyX2Rp c2FibGVfdW51c2VkX2Z1bmN0aW9ucyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAtMzEyLDEz ICszMTAsMTEgQEAgYm9vbCBkcm1fY3J0Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCQlpZiAoZW5jb2Rlci0+Y3J0YyAhPSBjcnRjKQogCQkJY29udGludWU7CiAKLQkJ aWYgKGVuY29kZXItPmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVw KSB7Ci0JCQlyZXQgPSBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKAotCQkJCQll bmNvZGVyLT5icmlkZ2UsIG1vZGUsIGFkanVzdGVkX21vZGUpOwotCQkJaWYgKCFyZXQpIHsKLQkJ CQlEUk1fREVCVUdfS01TKCJCcmlkZ2UgZml4dXAgZmFpbGVkXG4iKTsKLQkJCQlnb3RvIGRvbmU7 Ci0JCQl9CisJCXJldCA9IGRybV9icmlkZ2VfbW9kZV9maXh1cChlbmNvZGVyLT5icmlkZ2UsCisJ CQltb2RlLCBhZGp1c3RlZF9tb2RlKTsKKwkJaWYgKCFyZXQpIHsKKwkJCURSTV9ERUJVR19LTVMo IkJyaWRnZSBmaXh1cCBmYWlsZWRcbiIpOworCQkJZ290byBkb25lOwogCQl9CiAKIAkJZW5jb2Rl cl9mdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwpAQCAtMzQzLDE1ICszMzksMTMgQEAg Ym9vbCBkcm1fY3J0Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlp ZiAoZW5jb2Rlci0+Y3J0YyAhPSBjcnRjKQogCQkJY29udGludWU7CiAKLQkJaWYgKGVuY29kZXIt PmJyaWRnZSkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPmRpc2FibGUoZW5jb2Rlci0+YnJp ZGdlKTsKKwkJZHJtX2JyaWRnZV9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAKIAkJZW5jb2Rl cl9mdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwogCQkvKiBEaXNhYmxlIHRoZSBlbmNv ZGVycyBhcyB0aGUgZmlyc3QgdGhpbmcgd2UgZG8uICovCiAJCWVuY29kZXJfZnVuY3MtPnByZXBh cmUoZW5jb2Rlcik7CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJCWVuY29kZXItPmJyaWRn ZS0+ZnVuY3MtPnBvc3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX3Bv c3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwogCX0KIAogCWRybV9jcnRjX3ByZXBhcmVfZW5j b2RlcnMoZGV2KTsKQEAgLTM3Niw5ICszNzAsNyBAQCBib29sIGRybV9jcnRjX2hlbHBlcl9zZXRf bW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCWVuY29kZXJfZnVuY3MgPSBlbmNvZGVyLT5o ZWxwZXJfcHJpdmF0ZTsKIAkJZW5jb2Rlcl9mdW5jcy0+bW9kZV9zZXQoZW5jb2RlciwgbW9kZSwg YWRqdXN0ZWRfbW9kZSk7CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSAmJiBlbmNvZGVyLT5icmlk Z2UtPmZ1bmNzLT5tb2RlX3NldCkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfc2V0 KGVuY29kZXItPmJyaWRnZSwgbW9kZSwKLQkJCQkJYWRqdXN0ZWRfbW9kZSk7CisJCWRybV9icmlk Z2VfbW9kZV9zZXQoZW5jb2Rlci0+YnJpZGdlLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKIAl9CiAK IAkvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBwaXBlLCBhbmQgY29ubmVjdG9ycyB0 aGF0IHdlIHNldCB1cC4gKi8KQEAgLTM4OSwxNCArMzgxLDEyIEBAIGJvb2wgZHJtX2NydGNfaGVs cGVyX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJaWYgKGVuY29kZXItPmNydGMg IT0gY3J0YykKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCi0JCQllbmNv ZGVyLT5icmlkZ2UtPmZ1bmNzLT5wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7CisJCWRybV9i cmlkZ2VfcHJlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwogCiAJCWVuY29kZXJfZnVuY3MgPSBl bmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKIAkJZW5jb2Rlcl9mdW5jcy0+Y29tbWl0KGVuY29kZXIp OwogCi0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCi0JCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5l bmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKKwkJZHJtX2JyaWRnZV9lbmFibGUoZW5jb2Rlci0+YnJp ZGdlKTsKIAl9CiAKIAkvKiBDYWxjdWxhdGUgYW5kIHN0b3JlIHZhcmlvdXMgY29uc3RhbnRzIHdo aWNoCkBAIC03MzUsMjMgKzcyNSwxOSBAQCBzdGF0aWMgdm9pZCBkcm1faGVscGVyX2VuY29kZXJf ZHBtcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2RlKQogCXN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UgPSBlbmNvZGVyLT5icmlkZ2U7CiAJY29uc3Qgc3RydWN0IGRybV9lbmNv ZGVyX2hlbHBlcl9mdW5jcyAqZW5jb2Rlcl9mdW5jczsKIAotCWlmIChicmlkZ2UpIHsKLQkJaWYg KG1vZGUgPT0gRFJNX01PREVfRFBNU19PTikKLQkJCWJyaWRnZS0+ZnVuY3MtPnByZV9lbmFibGUo YnJpZGdlKTsKLQkJZWxzZQotCQkJYnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShicmlkZ2UpOwotCX0K KwlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQorCQlkcm1fYnJpZGdlX3ByZV9lbmFibGUo YnJpZGdlKTsKKwllbHNlCisJCWRybV9icmlkZ2VfZGlzYWJsZShicmlkZ2UpOwogCiAJZW5jb2Rl cl9mdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwogCWlmIChlbmNvZGVyX2Z1bmNzLT5k cG1zKQogCQllbmNvZGVyX2Z1bmNzLT5kcG1zKGVuY29kZXIsIG1vZGUpOwogCi0JaWYgKGJyaWRn ZSkgewotCQlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQotCQkJYnJpZGdlLT5mdW5jcy0+ ZW5hYmxlKGJyaWRnZSk7Ci0JCWVsc2UKLQkJCWJyaWRnZS0+ZnVuY3MtPnBvc3RfZGlzYWJsZShi cmlkZ2UpOwotCX0KKwlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQorCQlkcm1fYnJpZGdl X2VuYWJsZShicmlkZ2UpOworCWVsc2UKKwkJZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoYnJpZGdl KTsKIH0KIAogc3RhdGljIGludCBkcm1faGVscGVyX2Nob29zZV9jcnRjX2RwbXMoc3RydWN0IGRy bV9jcnRjICpjcnRjKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1 ZGUvZHJtL2RybV9jcnRjLmgKaW5kZXggY2E3MWMwMy4uZGI4MzBmNCAxMDA2NDQKLS0tIGEvaW5j bHVkZS9kcm0vZHJtX2NydGMuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCkBAIC04OTUs NiArODk1LDggQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgewogLyoqCiAgKiBzdHJ1Y3QgZHJt X2JyaWRnZSAtIGNlbnRyYWwgRFJNIGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQogICogQGRldjog RFJNIGRldmljZSB0aGlzIGJyaWRnZSBiZWxvbmdzIHRvCisgKiBAZW5jb2RlcjogZW5jb2RlciB0 byB3aGljaCB0aGlzIGJyaWRnZSBpcyBjb25uZWN0ZWQKKyAqIEBuZXh0OiB0aGUgbmV4dCBicmlk Z2UgaW4gdGhlIGVuY29kZXIgY2hhaW4KICAqIEBvZl9ub2RlOiBkZXZpY2Ugbm9kZSBwb2ludGVy IHRvIHRoZSBicmlkZ2UKICAqIEBsaXN0OiB0byBrZWVwIHRyYWNrIG9mIGFsbCBhZGRlZCBicmlk Z2VzCiAgKiBAYmFzZTogYmFzZSBtb2RlIG9iamVjdApAQCAtOTA0LDYgKzkwNiw3IEBAIHN0cnVj dCBkcm1fYnJpZGdlX2Z1bmNzIHsKIHN0cnVjdCBkcm1fYnJpZGdlIHsKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2OwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2Jy aWRnZSAqbmV4dDsKICNpZmRlZiBDT05GSUdfT0YKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX25v ZGU7CiAjZW5kaWYKQEAgLTEyMzAsNiArMTIzMywxNyBAQCBleHRlcm4gdm9pZCBkcm1fYnJpZGdl X3JlbW92ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKIGV4dGVybiBzdHJ1Y3QgZHJtX2Jy aWRnZSAqb2ZfZHJtX2ZpbmRfYnJpZGdlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwogZXh0ZXJu IGludCBkcm1fYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKTsKIAorYm9vbCBkcm1fYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSwKKwkJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl LAorCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpOwordm9pZCBkcm1f YnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cit2b2lkIGRybV9icmlk Z2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwordm9pZCBkcm1fYnJp ZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZSwKKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlKTsKK3ZvaWQgZHJtX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpOwordm9pZCBkcm1fYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsK KwogZXh0ZXJuIGludCBkcm1fZW5jb2Rlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkgICAgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCQkJICAgIGNvbnN0IHN0cnVjdCBk cm1fZW5jb2Rlcl9mdW5jcyAqZnVuY3MsCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50 ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0ZWQgYnkg VGhlIExpbnV4IEZvdW5kYXRpb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==