From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v3 1/2] drm: bridge: Allow daisy chaining of bridges Date: Tue, 19 May 2015 14:05:04 +0530 Message-ID: <1432024505-4139-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 B4CA089D7C for ; Tue, 19 May 2015 01:35:14 -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 Cc: daniel.vetter@ffwll.ch, 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+ClNpZ25lZC1vZmYtYnk6IEFy Y2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+Ci0tLQp2MzoKLSBBZGQgaGVhZGVy ZG9jcyBmb3IgdGhlIG5ldyBmdW5jdGlvbnMKCnYyOgotIEFkZCBFWFBPUlRfU1lNQk9MIGZvciB0 aGUgbmV3IGZ1bmN0aW9ucwotIEZpeCBsb2dpYyBpc3N1ZSBpbiBtb2RlX2ZpeHVwKCkKCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICAyOSArKystLS0tLQogZHJpdmVycy9n cHUvZHJtL2RybV9icmlkZ2UuYyAgICAgICAgfCAxNDQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMgICB8ICA1NCAr KysrKy0tLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJtX2NydGMuaCAgICAgICAgICAgICAgfCAgMTQg KysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwppbmRleCAxZDJjYTUyLi5kNmM4NWMwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwpAQCAtMjgxLDE0ICsyODEsMTEgQEAgbW9k ZV9maXh1cChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCWVuY29kZXIgPSBjb25u X3N0YXRlLT5iZXN0X2VuY29kZXI7CiAJCWZ1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7 CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2Rl X2ZpeHVwKSB7Ci0JCQlyZXQgPSBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKAot CQkJCQllbmNvZGVyLT5icmlkZ2UsICZjcnRjX3N0YXRlLT5tb2RlLAotCQkJCQkmY3J0Y19zdGF0 ZS0+YWRqdXN0ZWRfbW9kZSk7Ci0JCQlpZiAoIXJldCkgewotCQkJCURSTV9ERUJVR19BVE9NSUMo IkJyaWRnZSBmaXh1cCBmYWlsZWRcbiIpOwotCQkJCXJldHVybiAtRUlOVkFMOwotCQkJfQorCQly ZXQgPSBkcm1fYnJpZGdlX21vZGVfZml4dXAoZW5jb2Rlci0+YnJpZGdlLCAmY3J0Y19zdGF0ZS0+ bW9kZSwKKwkJCQkmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCWlmICghcmV0KSB7CisJ CQlEUk1fREVCVUdfQVRPTUlDKCJCcmlkZ2UgZml4dXAgZmFpbGVkXG4iKTsKKwkJCXJldHVybiAt RUlOVkFMOwogCQl9CiAKIAkJaWYgKGZ1bmNzLT5hdG9taWNfY2hlY2spIHsKQEAgLTU3OCw4ICs1 NzUsNyBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIAkJICogRWFjaCBlbmNvZGVyIGhhcyBhdCBtb3N0 IG9uZSBjb25uZWN0b3IgKHNpbmNlIHdlIGFsd2F5cyBzdGVhbAogCQkgKiBpdCBhd2F5KSwgc28g d2Ugd29uJ3QgY2FsbCBkaXNhYmxlIGhvb2tzIHR3aWNlLgogCQkgKi8KLQkJaWYgKGVuY29kZXIt PmJyaWRnZSkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPmRpc2FibGUoZW5jb2Rlci0+YnJp ZGdlKTsKKwkJZHJtX2JyaWRnZV9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAKIAkJLyogUmln aHQgZnVuY3Rpb24gZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8KIAkJaWYgKGNvbm5lY3Rv ci0+c3RhdGUtPmNydGMgJiYgZnVuY3MtPnByZXBhcmUpCkBAIC01ODksOCArNTg1LDcgQEAgZGlz YWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpvbGRfc3RhdGUpCiAJCWVsc2UKIAkJCWZ1bmNzLT5kcG1zKGVuY29kZXIsIERSTV9NT0RF X0RQTVNfT0ZGKTsKIAotCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5jb2Rlci0+YnJpZGdl LT5mdW5jcy0+cG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CisJCWRybV9icmlkZ2VfcG9z dF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAJfQogCiAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0 ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7CkBAIC03MTMsOSArNzA4LDcg QEAgY3J0Y19zZXRfbW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqb2xkX3N0YXRlKQogCQlpZiAoZnVuY3MtPm1vZGVfc2V0KQogCQkJZnVuY3MtPm1v ZGVfc2V0KGVuY29kZXIsIG1vZGUsIGFkanVzdGVkX21vZGUpOwogCi0JCWlmIChlbmNvZGVyLT5i cmlkZ2UgJiYgZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+bW9kZV9zZXQpCi0JCQllbmNvZGVyLT5i cmlkZ2UtPmZ1bmNzLT5tb2RlX3NldChlbmNvZGVyLT5icmlkZ2UsCi0JCQkJCQkJIG1vZGUsIGFk anVzdGVkX21vZGUpOworCQlkcm1fYnJpZGdlX21vZGVfc2V0KGVuY29kZXItPmJyaWRnZSwgbW9k ZSwgYWRqdXN0ZWRfbW9kZSk7CiAJfQogfQogCkBAIC04MDksMTYgKzgwMiwxNCBAQCB2b2lkIGRy bV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJICogRWFjaCBlbmNvZGVyIGhhcyBhdCBtb3N0IG9uZSBjb25uZWN0b3IgKHNpbmNl IHdlIGFsd2F5cyBzdGVhbAogCQkgKiBpdCBhd2F5KSwgc28gd2Ugd29uJ3QgY2FsbCBlbmFibGUg aG9va3MgdHdpY2UuCiAJCSAqLwotCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5jb2Rlci0+ YnJpZGdlLT5mdW5jcy0+cHJlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdl X3ByZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKIAogCQlpZiAoZnVuY3MtPmVuYWJsZSkKIAkJ CWZ1bmNzLT5lbmFibGUoZW5jb2Rlcik7CiAJCWVsc2UKIAkJCWZ1bmNzLT5jb21taXQoZW5jb2Rl cik7CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3Mt PmVuYWJsZShlbmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX2VuYWJsZShlbmNvZGVyLT5i cmlkZ2UpOwogCX0KIH0KIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21v ZGVzZXRfZW5hYmxlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwppbmRleCBlYWE1NzkwLi5mNzBlNjE3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYnJpZGdlLmMKQEAgLTY2LDYgKzY2LDE1MCBAQCBpbnQgZHJtX2JyaWRnZV9hdHRh Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKIH0K IEVYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9hdHRhY2gpOwogCisvKioKKyAqIGRybV9icmlkZ2Vf bW9kZV9maXh1cCAtIGZpeHVwIHByb3Bvc2VkIG1vZGUgZm9yIGFsbCBicmlkZ2VzIGluIHRoZQor ICoJCQkgICBlbmNvZGVyIGNoYWluCisgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1 cmUKKyAqIEBtb2RlOiBkZXNpcmVkIG1vZGUgdG8gYmUgc2V0IGZvciB0aGUgYnJpZGdlCisgKiBA YWRqdXN0ZWRfbW9kZTogdXBkYXRlZCBtb2RlIHRoYXQgd29ya3MgZm9yIHRoaXMgYnJpZGdlCisg KgorICogQ2FsbHMgJ21vZGVfZml4dXAnIGRybV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbCB0aGUg YnJpZGdlcyBpbiB0aGUKKyAqIGVuY29kZXIgY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0 IGJyaWRnZSB0byB0aGUgbGFzdC4KKyAqCisgKiBOb3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91 bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCisgKi8KK2Jvb2wgZHJtX2JyaWRn ZV9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlKQoreworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlmICghYnJpZGdlKQorCQlyZXR1 cm4gdHJ1ZTsKKworCWlmIChicmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKQorCQlyZXQgPSBicmlk Z2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKGJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7CisKKwly ZXQgPSByZXQgJiYgZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKGJyaWRnZS0+bmV4dCwgbW9kZSwgYWRq dXN0ZWRfbW9kZSk7CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdl X21vZGVfZml4dXApOworCisvKioKKyAqIGRybV9icmlkZ2VfZGlzYWJsZSAtIGNhbGxzICdkaXNh YmxlJyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwKKyAqCQkJYnJpZGdlcyBpbiB0aGUgZW5j b2RlciBjaGFpbi4KKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQorICoKKyAq IENhbGxzICdkaXNhYmxlJyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwgdGhlIGJyaWRnZXMg aW4gdGhlIGVuY29kZXIKKyAqIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGJyaWRnZSB0 byB0aGUgZmlyc3QuIFRoZXNlIGFyZSBjYWxsZWQgYmVmb3JlCisgKiBjYWxsaW5nIHRoZSBlbmNv ZGVyJ3MgcHJlcGFyZSBvcC4KKyAqCisgKiBOb3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91bGQg YmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCisgKi8KK3ZvaWQgZHJtX2JyaWRnZV9k aXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJaWYgKCFicmlkZ2UpCisJCXJl dHVybjsKKworCWRybV9icmlkZ2VfZGlzYWJsZShicmlkZ2UtPm5leHQpOworCisJYnJpZGdlLT5m dW5jcy0+ZGlzYWJsZShicmlkZ2UpOworfQorRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX2Rpc2Fi bGUpOworCisvKioKKyAqIGRybV9icmlkZ2VfcG9zdF9kaXNhYmxlIC0gY2FsbHMgJ3Bvc3RfZGlz YWJsZScgZHJtX2JyaWRnZV9mdW5jcyBvcCBmb3IKKyAqCQkJICAgICBhbGwgYnJpZGdlcyBpbiB0 aGUgZW5jb2RlciBjaGFpbi4KKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQor ICoKKyAqIENhbGxzICdwb3N0X2Rpc2FibGUnIGRybV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbCB0 aGUgYnJpZGdlcyBpbiB0aGUKKyAqIGVuY29kZXIgY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGxh c3QgYnJpZGdlIHRvIHRoZSBmaXJzdC4gVGhlc2UgYXJlIGNhbGxlZAorICogYWZ0ZXIgY29tcGxl dGluZyB0aGUgZW5jb2RlcidzIHByZXBhcmUgb3AuCisgKgorICogTm90ZTogdGhlIGJyaWRnZSBw YXNzZWQgc2hvdWxkIGJlIHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2RlcgorICovCit2b2lk IGRybV9icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJ aWYgKCFicmlkZ2UpCisJCXJldHVybjsKKworCWRybV9icmlkZ2VfcG9zdF9kaXNhYmxlKGJyaWRn ZS0+bmV4dCk7CisKKwlicmlkZ2UtPmZ1bmNzLT5wb3N0X2Rpc2FibGUoYnJpZGdlKTsKK30KK0VY UE9SVF9TWU1CT0woZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUpOworCisvKioKKyAqIGRybV9icmlk Z2VfbW9kZV9zZXQgLSBzZXQgcHJvcG9zZWQgbW9kZSBmb3IgYWxsIGJyaWRnZXMgaW4gdGhlCisg KgkJCSBlbmNvZGVyIGNoYWluCisgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUK KyAqIEBtb2RlOiBkZXNpcmVkIG1vZGUgdG8gYmUgc2V0IGZvciB0aGUgYnJpZGdlCisgKiBAYWRq dXN0ZWRfbW9kZTogdXBkYXRlZCBtb2RlIHRoYXQgd29ya3MgZm9yIHRoaXMgYnJpZGdlCisgKgor ICogQ2FsbHMgJ21vZGVfc2V0JyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwgdGhlIGJyaWRn ZXMgaW4gdGhlCisgKiBlbmNvZGVyIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBicmlk Z2UgdG8gdGhlIGxhc3QuCisgKgorICogTm90ZTogdGhlIGJyaWRnZSBwYXNzZWQgc2hvdWxkIGJl IHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2RlcgorICovCit2b2lkIGRybV9icmlkZ2VfbW9k ZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAorCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7 CisJaWYgKCFicmlkZ2UpCisJCXJldHVybjsKKworCWlmIChicmlkZ2UtPmZ1bmNzLT5tb2RlX3Nl dCkKKwkJYnJpZGdlLT5mdW5jcy0+bW9kZV9zZXQoYnJpZGdlLCBtb2RlLCBhZGp1c3RlZF9tb2Rl KTsKKworCWRybV9icmlkZ2VfbW9kZV9zZXQoYnJpZGdlLT5uZXh0LCBtb2RlLCBhZGp1c3RlZF9t b2RlKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9tb2RlX3NldCk7CisKKy8qKgorICog ZHJtX2JyaWRnZV9wcmVfZW5hYmxlIC0gY2FsbHMgJ3ByZV9lbmFibGUnIGRybV9icmlkZ2VfZnVu Y3Mgb3AgZm9yIGFsbAorICoJCQkgICBicmlkZ2VzIGluIHRoZSBlbmNvZGVyIGNoYWluLgorICog QGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCisgKgorICogQ2FsbHMgJ3ByZV9lbmFi bGUnIGRybV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUgZW5jb2Rl cgorICogY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGJyaWRnZSB0byB0aGUgbGFzdC4g VGhlc2UgYXJlIGNhbGxlZAorICogYmVmb3JlIGNhbGxpbmcgdGhlIGVuY29kZXIncyBjb21taXQg b3AuCisgKgorICogTm90ZTogdGhlIGJyaWRnZSBwYXNzZWQgc2hvdWxkIGJlIHRoZSBvbmUgY2xv c2VzdCB0byB0aGUgZW5jb2RlcgorICovCit2b2lkIGRybV9icmlkZ2VfcHJlX2VuYWJsZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCWlmICghYnJpZGdlKQorCQlyZXR1cm47CisKKwli cmlkZ2UtPmZ1bmNzLT5wcmVfZW5hYmxlKGJyaWRnZSk7CisKKwlkcm1fYnJpZGdlX3ByZV9lbmFi bGUoYnJpZGdlLT5uZXh0KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9wcmVfZW5hYmxl KTsKKworLyoqCisgKiBkcm1fYnJpZGdlX2VuYWJsZSAtIGNhbGxzICdlbmFibGUnIGRybV9icmlk Z2VfZnVuY3Mgb3AgZm9yIGFsbCBicmlkZ2VzCisgKgkJICAgICAgIGluIHRoZSBlbmNvZGVyIGNo YWluLgorICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCisgKgorICogQ2FsbHMg J2VuYWJsZScgZHJtX2JyaWRnZV9mdW5jcyBvcCBmb3IgYWxsIHRoZSBicmlkZ2VzIGluIHRoZSBl bmNvZGVyCisgKiBjaGFpbiwgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRoZSBs YXN0LiBUaGVzZSBhcmUgY2FsbGVkCisgKiBhZnRlciBjb21wbGV0aW5nIHRoZSBlbmNvZGVyJ3Mg Y29tbWl0IG9wLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgYnJpZGdlIHBhc3NlZCBzaG91bGQgYmUg dGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCisgKi8KK3ZvaWQgZHJtX2JyaWRnZV9lbmFi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlpZiAoIWJyaWRnZSkKKwkJcmV0dXJu OworCisJYnJpZGdlLT5mdW5jcy0+ZW5hYmxlKGJyaWRnZSk7CisKKwlkcm1fYnJpZGdlX2VuYWJs ZShicmlkZ2UtPm5leHQpOworfQorRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX2VuYWJsZSk7CisK ICNpZmRlZiBDT05GSUdfT0YKIHN0cnVjdCBkcm1fYnJpZGdlICpvZl9kcm1fZmluZF9icmlkZ2Uo c3RydWN0IGRldmljZV9ub2RlICpucCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fY3J0Y19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19oZWxwZXIuYwppbmRl eCBhYjAwMjg2Li5mZjliMzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNf aGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jCkBAIC0xNjMs MTYgKzE2MywxNCBAQCBkcm1fZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcikKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICplbmNvZGVy X2Z1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7CiAKLQlpZiAoZW5jb2Rlci0+YnJpZGdl KQotCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CisJ ZHJtX2JyaWRnZV9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAKIAlpZiAoZW5jb2Rlcl9mdW5j cy0+ZGlzYWJsZSkKIAkJKCplbmNvZGVyX2Z1bmNzLT5kaXNhYmxlKShlbmNvZGVyKTsKIAllbHNl CiAJCSgqZW5jb2Rlcl9mdW5jcy0+ZHBtcykoZW5jb2RlciwgRFJNX01PREVfRFBNU19PRkYpOwog Ci0JaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+cG9zdF9k aXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CisJZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoZW5jb2Rl ci0+YnJpZGdlKTsKIH0KIAogc3RhdGljIHZvaWQgX19kcm1faGVscGVyX2Rpc2FibGVfdW51c2Vk X2Z1bmN0aW9ucyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAtMzEyLDEzICszMTAsMTEgQEAg Ym9vbCBkcm1fY3J0Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlp ZiAoZW5jb2Rlci0+Y3J0YyAhPSBjcnRjKQogCQkJY29udGludWU7CiAKLQkJaWYgKGVuY29kZXIt PmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKSB7Ci0JCQlyZXQg PSBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKAotCQkJCQllbmNvZGVyLT5icmlk Z2UsIG1vZGUsIGFkanVzdGVkX21vZGUpOwotCQkJaWYgKCFyZXQpIHsKLQkJCQlEUk1fREVCVUdf S01TKCJCcmlkZ2UgZml4dXAgZmFpbGVkXG4iKTsKLQkJCQlnb3RvIGRvbmU7Ci0JCQl9CisJCXJl dCA9IGRybV9icmlkZ2VfbW9kZV9maXh1cChlbmNvZGVyLT5icmlkZ2UsCisJCQltb2RlLCBhZGp1 c3RlZF9tb2RlKTsKKwkJaWYgKCFyZXQpIHsKKwkJCURSTV9ERUJVR19LTVMoIkJyaWRnZSBmaXh1 cCBmYWlsZWRcbiIpOworCQkJZ290byBkb25lOwogCQl9CiAKIAkJZW5jb2Rlcl9mdW5jcyA9IGVu Y29kZXItPmhlbHBlcl9wcml2YXRlOwpAQCAtMzQzLDE1ICszMzksMTMgQEAgYm9vbCBkcm1fY3J0 Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlpZiAoZW5jb2Rlci0+ Y3J0YyAhPSBjcnRjKQogCQkJY29udGludWU7CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJ CWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPmRpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKKwkJZHJt X2JyaWRnZV9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAKIAkJZW5jb2Rlcl9mdW5jcyA9IGVu Y29kZXItPmhlbHBlcl9wcml2YXRlOwogCQkvKiBEaXNhYmxlIHRoZSBlbmNvZGVycyBhcyB0aGUg Zmlyc3QgdGhpbmcgd2UgZG8uICovCiAJCWVuY29kZXJfZnVuY3MtPnByZXBhcmUoZW5jb2Rlcik7 CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPnBv c3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShl bmNvZGVyLT5icmlkZ2UpOwogCX0KIAogCWRybV9jcnRjX3ByZXBhcmVfZW5jb2RlcnMoZGV2KTsK QEAgLTM3Niw5ICszNzAsNyBAQCBib29sIGRybV9jcnRjX2hlbHBlcl9zZXRfbW9kZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJCWVuY29kZXJfZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0 ZTsKIAkJZW5jb2Rlcl9mdW5jcy0+bW9kZV9zZXQoZW5jb2RlciwgbW9kZSwgYWRqdXN0ZWRfbW9k ZSk7CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5t b2RlX3NldCkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfc2V0KGVuY29kZXItPmJy aWRnZSwgbW9kZSwKLQkJCQkJYWRqdXN0ZWRfbW9kZSk7CisJCWRybV9icmlkZ2VfbW9kZV9zZXQo ZW5jb2Rlci0+YnJpZGdlLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKIAl9CiAKIAkvKiBOb3cgZW5h YmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBwaXBlLCBhbmQgY29ubmVjdG9ycyB0aGF0IHdlIHNldCB1 cC4gKi8KQEAgLTM4OSwxNCArMzgxLDEyIEBAIGJvb2wgZHJtX2NydGNfaGVscGVyX3NldF9tb2Rl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJaWYgKGVuY29kZXItPmNydGMgIT0gY3J0YykKIAkJ CWNvbnRpbnVlOwogCi0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCi0JCQllbmNvZGVyLT5icmlkZ2Ut PmZ1bmNzLT5wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7CisJCWRybV9icmlkZ2VfcHJlX2Vu YWJsZShlbmNvZGVyLT5icmlkZ2UpOwogCiAJCWVuY29kZXJfZnVuY3MgPSBlbmNvZGVyLT5oZWxw ZXJfcHJpdmF0ZTsKIAkJZW5jb2Rlcl9mdW5jcy0+Y29tbWl0KGVuY29kZXIpOwogCi0JCWlmIChl bmNvZGVyLT5icmlkZ2UpCi0JCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5lbmFibGUoZW5jb2Rl ci0+YnJpZGdlKTsKKwkJZHJtX2JyaWRnZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKIAl9CiAK IAkvKiBDYWxjdWxhdGUgYW5kIHN0b3JlIHZhcmlvdXMgY29uc3RhbnRzIHdoaWNoCkBAIC03MzUs MjMgKzcyNSwxOSBAQCBzdGF0aWMgdm9pZCBkcm1faGVscGVyX2VuY29kZXJfZHBtcyhzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2RlKQogCXN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UgPSBlbmNvZGVyLT5icmlkZ2U7CiAJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9m dW5jcyAqZW5jb2Rlcl9mdW5jczsKIAotCWlmIChicmlkZ2UpIHsKLQkJaWYgKG1vZGUgPT0gRFJN X01PREVfRFBNU19PTikKLQkJCWJyaWRnZS0+ZnVuY3MtPnByZV9lbmFibGUoYnJpZGdlKTsKLQkJ ZWxzZQotCQkJYnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShicmlkZ2UpOwotCX0KKwlpZiAobW9kZSA9 PSBEUk1fTU9ERV9EUE1TX09OKQorCQlkcm1fYnJpZGdlX3ByZV9lbmFibGUoYnJpZGdlKTsKKwll bHNlCisJCWRybV9icmlkZ2VfZGlzYWJsZShicmlkZ2UpOwogCiAJZW5jb2Rlcl9mdW5jcyA9IGVu Y29kZXItPmhlbHBlcl9wcml2YXRlOwogCWlmIChlbmNvZGVyX2Z1bmNzLT5kcG1zKQogCQllbmNv ZGVyX2Z1bmNzLT5kcG1zKGVuY29kZXIsIG1vZGUpOwogCi0JaWYgKGJyaWRnZSkgewotCQlpZiAo bW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQotCQkJYnJpZGdlLT5mdW5jcy0+ZW5hYmxlKGJyaWRn ZSk7Ci0JCWVsc2UKLQkJCWJyaWRnZS0+ZnVuY3MtPnBvc3RfZGlzYWJsZShicmlkZ2UpOwotCX0K KwlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQorCQlkcm1fYnJpZGdlX2VuYWJsZShicmlk Z2UpOworCWVsc2UKKwkJZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoYnJpZGdlKTsKIH0KIAogc3Rh dGljIGludCBkcm1faGVscGVyX2Nob29zZV9jcnRjX2RwbXMoc3RydWN0IGRybV9jcnRjICpjcnRj KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9j cnRjLmgKaW5kZXggY2E3MWMwMy4uZGI4MzBmNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJt X2NydGMuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCkBAIC04OTUsNiArODk1LDggQEAg c3RydWN0IGRybV9icmlkZ2VfZnVuY3MgewogLyoqCiAgKiBzdHJ1Y3QgZHJtX2JyaWRnZSAtIGNl bnRyYWwgRFJNIGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQogICogQGRldjogRFJNIGRldmljZSB0 aGlzIGJyaWRnZSBiZWxvbmdzIHRvCisgKiBAZW5jb2RlcjogZW5jb2RlciB0byB3aGljaCB0aGlz IGJyaWRnZSBpcyBjb25uZWN0ZWQKKyAqIEBuZXh0OiB0aGUgbmV4dCBicmlkZ2UgaW4gdGhlIGVu Y29kZXIgY2hhaW4KICAqIEBvZl9ub2RlOiBkZXZpY2Ugbm9kZSBwb2ludGVyIHRvIHRoZSBicmlk Z2UKICAqIEBsaXN0OiB0byBrZWVwIHRyYWNrIG9mIGFsbCBhZGRlZCBicmlkZ2VzCiAgKiBAYmFz ZTogYmFzZSBtb2RlIG9iamVjdApAQCAtOTA0LDYgKzkwNiw3IEBAIHN0cnVjdCBkcm1fYnJpZGdl X2Z1bmNzIHsKIHN0cnVjdCBkcm1fYnJpZGdlIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owog CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqbmV4dDsK ICNpZmRlZiBDT05GSUdfT0YKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX25vZGU7CiAjZW5kaWYK QEAgLTEyMzAsNiArMTIzMywxNyBAQCBleHRlcm4gdm9pZCBkcm1fYnJpZGdlX3JlbW92ZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKIGV4dGVybiBzdHJ1Y3QgZHJtX2JyaWRnZSAqb2ZfZHJt X2ZpbmRfYnJpZGdlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwogZXh0ZXJuIGludCBkcm1fYnJp ZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKTsKIAorYm9vbCBkcm1fYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKKwkJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpOwordm9pZCBkcm1fYnJpZGdlX2Rpc2Fi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cit2b2lkIGRybV9icmlkZ2VfcG9zdF9kaXNh YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwordm9pZCBkcm1fYnJpZGdlX21vZGVfc2V0 KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKTsKK3ZvaWQg ZHJtX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwordm9pZCBk cm1fYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKKwogZXh0ZXJuIGlu dCBkcm1fZW5jb2Rlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICAgc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAogCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9m dW5jcyAqZnVuY3MsCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMg YSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0ZWQgYnkgVGhlIExpbnV4IEZv dW5kYXRpb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==