From: Archit Taneja Subject: [PATCH v2] drm: bridge: Allow daisy chaining of bridges Date: Fri, 8 May 2015 15:41:54 +0530 Message-ID: <1431079914-11177-1-git-send-email-architt@codeaurora.org> References: <1428559958-1902-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 157326E67F for ; Fri, 8 May 2015 03:12:05 -0700 (PDT) In-Reply-To: <1428559958-1902-1-git-send-email-architt@codeaurora.org> 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, jani.nikula@linux.intel.com 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 c28KY2xlYW5zIHVwIHRoZSBhdG9taWMgYW5kIGNydGMgaGVscGVyIGZpbGVzIGEgYml0LgoKU2ln bmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KLS0tCnYy OgotIEFkZCBFWFBPUlRfU1lNQk9MIGZvciB0aGUgbmV3IGZ1bmN0aW9ucwotIEZpeCBsb2dpYyBp c3N1ZSBpbiBtb2RlX2ZpeHVwKCkKCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu YyB8IDI5ICsrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jICAgICAg ICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Y19oZWxwZXIuYyAgIHwgNTQgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0K IGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgIHwgMTQgKysrKysrKwogNCBmaWxl cyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY19oZWxwZXIuYwppbmRleCAxZDJjYTUyLi5kNmM4NWMwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY19oZWxwZXIuYwpAQCAtMjgxLDE0ICsyODEsMTEgQEAgbW9kZV9maXh1cChzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCWVuY29kZXIgPSBjb25uX3N0YXRlLT5iZXN0 X2VuY29kZXI7CiAJCWZ1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7CiAKLQkJaWYgKGVu Y29kZXItPmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKSB7Ci0J CQlyZXQgPSBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKAotCQkJCQllbmNvZGVy LT5icmlkZ2UsICZjcnRjX3N0YXRlLT5tb2RlLAotCQkJCQkmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRf bW9kZSk7Ci0JCQlpZiAoIXJldCkgewotCQkJCURSTV9ERUJVR19BVE9NSUMoIkJyaWRnZSBmaXh1 cCBmYWlsZWRcbiIpOwotCQkJCXJldHVybiAtRUlOVkFMOwotCQkJfQorCQlyZXQgPSBkcm1fYnJp ZGdlX21vZGVfZml4dXAoZW5jb2Rlci0+YnJpZGdlLCAmY3J0Y19zdGF0ZS0+bW9kZSwKKwkJCQkm Y3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCWlmICghcmV0KSB7CisJCQlEUk1fREVCVUdf QVRPTUlDKCJCcmlkZ2UgZml4dXAgZmFpbGVkXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOwogCQl9 CiAKIAkJaWYgKGZ1bmNzLT5hdG9taWNfY2hlY2spIHsKQEAgLTU3OCw4ICs1NzUsNyBAQCBkaXNh YmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKm9sZF9zdGF0ZSkKIAkJICogRWFjaCBlbmNvZGVyIGhhcyBhdCBtb3N0IG9uZSBjb25uZWN0 b3IgKHNpbmNlIHdlIGFsd2F5cyBzdGVhbAogCQkgKiBpdCBhd2F5KSwgc28gd2Ugd29uJ3QgY2Fs bCBkaXNhYmxlIGhvb2tzIHR3aWNlLgogCQkgKi8KLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJ CWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPmRpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKKwkJZHJt X2JyaWRnZV9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAKIAkJLyogUmlnaHQgZnVuY3Rpb24g ZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8KIAkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmNy dGMgJiYgZnVuY3MtPnByZXBhcmUpCkBAIC01ODksOCArNTg1LDcgQEAgZGlzYWJsZV9vdXRwdXRz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3Rh dGUpCiAJCWVsc2UKIAkJCWZ1bmNzLT5kcG1zKGVuY29kZXIsIERSTV9NT0RFX0RQTVNfT0ZGKTsK IAotCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+cG9z dF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CisJCWRybV9icmlkZ2VfcG9zdF9kaXNhYmxlKGVu Y29kZXItPmJyaWRnZSk7CiAJfQogCiAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUs IGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7CkBAIC03MTMsOSArNzA4LDcgQEAgY3J0Y19zZXRf bW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xk X3N0YXRlKQogCQlpZiAoZnVuY3MtPm1vZGVfc2V0KQogCQkJZnVuY3MtPm1vZGVfc2V0KGVuY29k ZXIsIG1vZGUsIGFkanVzdGVkX21vZGUpOwogCi0JCWlmIChlbmNvZGVyLT5icmlkZ2UgJiYgZW5j b2Rlci0+YnJpZGdlLT5mdW5jcy0+bW9kZV9zZXQpCi0JCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNz LT5tb2RlX3NldChlbmNvZGVyLT5icmlkZ2UsCi0JCQkJCQkJIG1vZGUsIGFkanVzdGVkX21vZGUp OworCQlkcm1fYnJpZGdlX21vZGVfc2V0KGVuY29kZXItPmJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRf bW9kZSk7CiAJfQogfQogCkBAIC04MDksMTYgKzgwMiwxNCBAQCB2b2lkIGRybV9hdG9taWNfaGVs cGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJICog RWFjaCBlbmNvZGVyIGhhcyBhdCBtb3N0IG9uZSBjb25uZWN0b3IgKHNpbmNlIHdlIGFsd2F5cyBz dGVhbAogCQkgKiBpdCBhd2F5KSwgc28gd2Ugd29uJ3QgY2FsbCBlbmFibGUgaG9va3MgdHdpY2Uu CiAJCSAqLwotCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5j cy0+cHJlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX3ByZV9lbmFibGUo ZW5jb2Rlci0+YnJpZGdlKTsKIAogCQlpZiAoZnVuY3MtPmVuYWJsZSkKIAkJCWZ1bmNzLT5lbmFi bGUoZW5jb2Rlcik7CiAJCWVsc2UKIAkJCWZ1bmNzLT5jb21taXQoZW5jb2Rlcik7CiAKLQkJaWYg KGVuY29kZXItPmJyaWRnZSkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPmVuYWJsZShlbmNv ZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX2VuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwogCX0K IH0KIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxl cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9icmlkZ2UuYwppbmRleCBlYWE1NzkwLi45OGMzOWY2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJp ZGdlLmMKQEAgLTY2LDYgKzY2LDgyIEBAIGludCBkcm1fYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQogfQogRVhQT1JUX1NZTUJP TChkcm1fYnJpZGdlX2F0dGFjaCk7CiAKK2Jvb2wgZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCWJv b2wgcmV0ID0gdHJ1ZTsKKworCWlmICghYnJpZGdlKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmIChi cmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKQorCQlyZXQgPSBicmlkZ2UtPmZ1bmNzLT5tb2RlX2Zp eHVwKGJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7CisKKwlyZXQgPSByZXQgJiYgZHJtX2Jy aWRnZV9tb2RlX2ZpeHVwKGJyaWRnZS0+bmV4dCwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7CisKKwly ZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX21vZGVfZml4dXApOworCit2 b2lkIGRybV9icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCWlm ICghYnJpZGdlKQorCQlyZXR1cm47CisKKwlkcm1fYnJpZGdlX2Rpc2FibGUoYnJpZGdlLT5uZXh0 KTsKKworCWJyaWRnZS0+ZnVuY3MtPmRpc2FibGUoYnJpZGdlKTsKK30KK0VYUE9SVF9TWU1CT0wo ZHJtX2JyaWRnZV9kaXNhYmxlKTsKKwordm9pZCBkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCWlmICghYnJpZGdlKQorCQlyZXR1cm47CisKKwlk cm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShicmlkZ2UtPm5leHQpOworCisJYnJpZGdlLT5mdW5jcy0+ cG9zdF9kaXNhYmxlKGJyaWRnZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfcG9zdF9k aXNhYmxlKTsKKwordm9pZCBkcm1fYnJpZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCisJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCWlmICghYnJpZGdlKQorCQlyZXR1cm47 CisKKwlpZiAoYnJpZGdlLT5mdW5jcy0+bW9kZV9zZXQpCisJCWJyaWRnZS0+ZnVuY3MtPm1vZGVf c2V0KGJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7CisKKwlkcm1fYnJpZGdlX21vZGVfc2V0 KGJyaWRnZS0+bmV4dCwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRy bV9icmlkZ2VfbW9kZV9zZXQpOworCit2b2lkIGRybV9icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCWlmICghYnJpZGdlKQorCQlyZXR1cm47CisKKwlicmlk Z2UtPmZ1bmNzLT5wcmVfZW5hYmxlKGJyaWRnZSk7CisKKwlkcm1fYnJpZGdlX3ByZV9lbmFibGUo YnJpZGdlLT5uZXh0KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9wcmVfZW5hYmxlKTsK Kwordm9pZCBkcm1fYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQorewor CWlmICghYnJpZGdlKQorCQlyZXR1cm47CisKKwlicmlkZ2UtPmZ1bmNzLT5lbmFibGUoYnJpZGdl KTsKKworCWRybV9icmlkZ2VfZW5hYmxlKGJyaWRnZS0+bmV4dCk7Cit9CitFWFBPUlRfU1lNQk9M KGRybV9icmlkZ2VfZW5hYmxlKTsKKwogI2lmZGVmIENPTkZJR19PRgogc3RydWN0IGRybV9icmlk Z2UgKm9mX2RybV9maW5kX2JyaWRnZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQogewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9jcnRjX2hlbHBlci5jCmluZGV4IGFiMDAyODYuLmZmOWIzMzggMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2NydGNfaGVscGVyLmMKQEAgLTE2MywxNiArMTYzLDE0IEBAIGRybV9lbmNvZGVyX2Rpc2FibGUo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewogCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rl cl9oZWxwZXJfZnVuY3MgKmVuY29kZXJfZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsK IAotCWlmIChlbmNvZGVyLT5icmlkZ2UpCi0JCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPmRpc2Fi bGUoZW5jb2Rlci0+YnJpZGdlKTsKKwlkcm1fYnJpZGdlX2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdl KTsKIAogCWlmIChlbmNvZGVyX2Z1bmNzLT5kaXNhYmxlKQogCQkoKmVuY29kZXJfZnVuY3MtPmRp c2FibGUpKGVuY29kZXIpOwogCWVsc2UKIAkJKCplbmNvZGVyX2Z1bmNzLT5kcG1zKShlbmNvZGVy LCBEUk1fTU9ERV9EUE1TX09GRik7CiAKLQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQllbmNvZGVy LT5icmlkZ2UtPmZ1bmNzLT5wb3N0X2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKKwlkcm1fYnJp ZGdlX3Bvc3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwogfQogCiBzdGF0aWMgdm9pZCBfX2Ry bV9oZWxwZXJfZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CkBAIC0zMTIsMTMgKzMxMCwxMSBAQCBib29sIGRybV9jcnRjX2hlbHBlcl9zZXRfbW9kZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJCWlmIChlbmNvZGVyLT5jcnRjICE9IGNydGMpCiAJCQljb250 aW51ZTsKIAotCQlpZiAoZW5jb2Rlci0+YnJpZGdlICYmIGVuY29kZXItPmJyaWRnZS0+ZnVuY3Mt Pm1vZGVfZml4dXApIHsKLQkJCXJldCA9IGVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfZml4 dXAoCi0JCQkJCWVuY29kZXItPmJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7Ci0JCQlpZiAo IXJldCkgewotCQkJCURSTV9ERUJVR19LTVMoIkJyaWRnZSBmaXh1cCBmYWlsZWRcbiIpOwotCQkJ CWdvdG8gZG9uZTsKLQkJCX0KKwkJcmV0ID0gZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKGVuY29kZXIt PmJyaWRnZSwKKwkJCW1vZGUsIGFkanVzdGVkX21vZGUpOworCQlpZiAoIXJldCkgeworCQkJRFJN X0RFQlVHX0tNUygiQnJpZGdlIGZpeHVwIGZhaWxlZFxuIik7CisJCQlnb3RvIGRvbmU7CiAJCX0K IAogCQllbmNvZGVyX2Z1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7CkBAIC0zNDMsMTUg KzMzOSwxMyBAQCBib29sIGRybV9jcnRjX2hlbHBlcl9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCiAJCWlmIChlbmNvZGVyLT5jcnRjICE9IGNydGMpCiAJCQljb250aW51ZTsKIAotCQlp ZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShl bmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsK IAogCQllbmNvZGVyX2Z1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7CiAJCS8qIERpc2Fi bGUgdGhlIGVuY29kZXJzIGFzIHRoZSBmaXJzdCB0aGluZyB3ZSBkby4gKi8KIAkJZW5jb2Rlcl9m dW5jcy0+cHJlcGFyZShlbmNvZGVyKTsKIAotCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQotCQkJZW5j b2Rlci0+YnJpZGdlLT5mdW5jcy0+cG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CisJCWRy bV9icmlkZ2VfcG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAJfQogCiAJZHJtX2NydGNf cHJlcGFyZV9lbmNvZGVycyhkZXYpOwpAQCAtMzc2LDkgKzM3MCw3IEBAIGJvb2wgZHJtX2NydGNf aGVscGVyX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJZW5jb2Rlcl9mdW5jcyA9 IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwogCQllbmNvZGVyX2Z1bmNzLT5tb2RlX3NldChlbmNv ZGVyLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKIAotCQlpZiAoZW5jb2Rlci0+YnJpZGdlICYmIGVu Y29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfc2V0KQotCQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5j cy0+bW9kZV9zZXQoZW5jb2Rlci0+YnJpZGdlLCBtb2RlLAotCQkJCQlhZGp1c3RlZF9tb2RlKTsK KwkJZHJtX2JyaWRnZV9tb2RlX3NldChlbmNvZGVyLT5icmlkZ2UsIG1vZGUsIGFkanVzdGVkX21v ZGUpOwogCX0KIAogCS8qIE5vdyBlbmFibGUgdGhlIGNsb2NrcywgcGxhbmUsIHBpcGUsIGFuZCBj b25uZWN0b3JzIHRoYXQgd2Ugc2V0IHVwLiAqLwpAQCAtMzg5LDE0ICszODEsMTIgQEAgYm9vbCBk cm1fY3J0Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlpZiAoZW5j b2Rlci0+Y3J0YyAhPSBjcnRjKQogCQkJY29udGludWU7CiAKLQkJaWYgKGVuY29kZXItPmJyaWRn ZSkKLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPnByZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdl KTsKKwkJZHJtX2JyaWRnZV9wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7CiAKIAkJZW5jb2Rl cl9mdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwogCQllbmNvZGVyX2Z1bmNzLT5jb21t aXQoZW5jb2Rlcik7CiAKLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKLQkJCWVuY29kZXItPmJyaWRn ZS0+ZnVuY3MtPmVuYWJsZShlbmNvZGVyLT5icmlkZ2UpOworCQlkcm1fYnJpZGdlX2VuYWJsZShl bmNvZGVyLT5icmlkZ2UpOwogCX0KIAogCS8qIENhbGN1bGF0ZSBhbmQgc3RvcmUgdmFyaW91cyBj b25zdGFudHMgd2hpY2gKQEAgLTczNSwyMyArNzI1LDE5IEBAIHN0YXRpYyB2b2lkIGRybV9oZWxw ZXJfZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCiAJ c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSA9IGVuY29kZXItPmJyaWRnZTsKIAljb25zdCBzdHJ1 Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICplbmNvZGVyX2Z1bmNzOwogCi0JaWYgKGJyaWRn ZSkgewotCQlpZiAobW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQotCQkJYnJpZGdlLT5mdW5jcy0+ cHJlX2VuYWJsZShicmlkZ2UpOwotCQllbHNlCi0JCQlicmlkZ2UtPmZ1bmNzLT5kaXNhYmxlKGJy aWRnZSk7Ci0JfQorCWlmIChtb2RlID09IERSTV9NT0RFX0RQTVNfT04pCisJCWRybV9icmlkZ2Vf cHJlX2VuYWJsZShicmlkZ2UpOworCWVsc2UKKwkJZHJtX2JyaWRnZV9kaXNhYmxlKGJyaWRnZSk7 CiAKIAllbmNvZGVyX2Z1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7CiAJaWYgKGVuY29k ZXJfZnVuY3MtPmRwbXMpCiAJCWVuY29kZXJfZnVuY3MtPmRwbXMoZW5jb2RlciwgbW9kZSk7CiAK LQlpZiAoYnJpZGdlKSB7Ci0JCWlmIChtb2RlID09IERSTV9NT0RFX0RQTVNfT04pCi0JCQlicmlk Z2UtPmZ1bmNzLT5lbmFibGUoYnJpZGdlKTsKLQkJZWxzZQotCQkJYnJpZGdlLT5mdW5jcy0+cG9z dF9kaXNhYmxlKGJyaWRnZSk7Ci0JfQorCWlmIChtb2RlID09IERSTV9NT0RFX0RQTVNfT04pCisJ CWRybV9icmlkZ2VfZW5hYmxlKGJyaWRnZSk7CisJZWxzZQorCQlkcm1fYnJpZGdlX3Bvc3RfZGlz YWJsZShicmlkZ2UpOwogfQogCiBzdGF0aWMgaW50IGRybV9oZWxwZXJfY2hvb3NlX2NydGNfZHBt cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0 Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAppbmRleCBjYTcxYzAzLi5kYjgzMGY0IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9jcnRj LmgKQEAgLTg5NSw2ICs4OTUsOCBAQCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyB7CiAvKioKICAq IHN0cnVjdCBkcm1fYnJpZGdlIC0gY2VudHJhbCBEUk0gYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJl CiAgKiBAZGV2OiBEUk0gZGV2aWNlIHRoaXMgYnJpZGdlIGJlbG9uZ3MgdG8KKyAqIEBlbmNvZGVy OiBlbmNvZGVyIHRvIHdoaWNoIHRoaXMgYnJpZGdlIGlzIGNvbm5lY3RlZAorICogQG5leHQ6IHRo ZSBuZXh0IGJyaWRnZSBpbiB0aGUgZW5jb2RlciBjaGFpbgogICogQG9mX25vZGU6IGRldmljZSBu b2RlIHBvaW50ZXIgdG8gdGhlIGJyaWRnZQogICogQGxpc3Q6IHRvIGtlZXAgdHJhY2sgb2YgYWxs IGFkZGVkIGJyaWRnZXMKICAqIEBiYXNlOiBiYXNlIG1vZGUgb2JqZWN0CkBAIC05MDQsNiArOTA2 LDcgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgewogc3RydWN0IGRybV9icmlkZ2UgewogCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0 cnVjdCBkcm1fYnJpZGdlICpuZXh0OwogI2lmZGVmIENPTkZJR19PRgogCXN0cnVjdCBkZXZpY2Vf bm9kZSAqb2Zfbm9kZTsKICNlbmRpZgpAQCAtMTIzMCw2ICsxMjMzLDE3IEBAIGV4dGVybiB2b2lk IGRybV9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwogZXh0ZXJuIHN0 cnVjdCBkcm1fYnJpZGdlICpvZl9kcm1fZmluZF9icmlkZ2Uoc3RydWN0IGRldmljZV9ub2RlICpu cCk7CiBleHRlcm4gaW50IGRybV9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwogCitib29sIGRybV9icmlkZ2VfbW9kZV9maXh1 cChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAorCQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsCisJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSk7 Cit2b2lkIGRybV9icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKK3Zv aWQgZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cit2 b2lkIGRybV9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKKwkJCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUpOwordm9pZCBkcm1fYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSk7Cit2b2lkIGRybV9icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UpOworCiBleHRlcm4gaW50IGRybV9lbmNvZGVyX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJCSAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJCQkgICAgY29u c3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzICpmdW5jcywKLS0gClRoZSBRdWFsY29tbSBJbm5v dmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0s Cmhvc3RlZCBieSBUaGUgTGludXggRm91bmRhdGlvbgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK