From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 2/9 v3] drm/dp_mst: Enable registration of AUX devices for MST ports Date: Tue, 23 Jul 2019 19:28:01 -0400 Message-ID: <20190723232808.28128-3-sunpeng.li@amd.com> References: <20190723232808.28128-1-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190723232808.28128-1-sunpeng.li-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Leo Li , harry.wentland-5C7GfCeVMHo@public.gmane.org, nicholas.kazlauskas-5C7GfCeVMHo@public.gmane.org, ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFs bCBhdmFpbGFibGUgZG93bnN0cmVhbSBwb3J0cyAtIHBoeXNpY2FsIGFuZCBsb2dpY2FsIC0gYXJl IGV4cG9zZWQgZm9yCmVhY2ggTVNUIGRldmljZS4gVGhleSBhcmUgbGlzdGVkIGluIC9kZXYvLCBm b2xsb3dpbmcgdGhlIHNhbWUgbmFtaW5nCnNjaGVtZSBhcyBTU1QgZGV2aWNlcyBieSBhcHBlbmRp bmcgYW4gaW5jcmVtZW50YWwgSUQuCgpBbHRob3VnaCBhbGwgZG93bnN0cmVhbSBwb3J0cyBhcmUg ZXhwb3NlZCwgb25seSBzb21lIHdpbGwgd29yayBhcwpleHBlY3RlZC4gQ29uc2lkZXIgdGhlIGZv bGxvd2luZyB0b3BvbG9neToKCiAgICAgICAgICAgICAgICstLS0tLS0tLS0rCiAgICAgICAgICAg ICAgIHwgIEFTSUMgICB8CiAgICAgICAgICAgICAgICstLS0tLS0tLS0rCiAgICAgICAgICAgICAg Q29ubi0wfAogICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgKy0tLS12LS0tLSsK ICAgICAgICAgICstLS0tfCBNU1QgSFVCIHwtLS0tKwogICAgICAgICAgfCAgICArLS0tLS0tLS0t KyAgICB8CiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgIHxQb3J0LTEg ICAgICAgUG9ydC0yfAogICAgKy0tLS0tdi0tLS0tKyAgICAgICArLS0tLS12LS0tLS0rCiAgICB8 ICBNU1QgICAgICB8ICAgICAgIHwgIFNTVCAgICAgIHwKICAgIHwgIERpc3BsYXkgIHwgICAgICAg fCAgRGlzcGxheSAgfAogICAgKy0tLS0tLS0tLS0tKyAgICAgICArLS0tLS0tLS0tLS0rCiAgICAg ICAgICB8UG9ydC0xCiAgICAgICAgICB4CgogTVNUIFBhdGggIHwgTVNUIERldmljZQogLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzc3Q6MCAgICAgfCBNU1Qg SHViCiBtc3Q6MC0xICAgfCBNU1QgRGlzcGxheQogbXN0OjAtMS0xIHwgTVNUIERpc3BsYXkncyBk aXNjb25uZWN0ZWQgRFAgb3V0CiBtc3Q6MC0xLTggfCBNU1QgRGlzcGxheSdzIGludGVybmFsIHNp bmsKIG1zdDowLTIgICB8IFNTVCBEaXNwbGF5CgpPbiBjZXJ0YWluIE1TVCBkaXNwbGF5cywgdGhl IHVwc3RyZWFtIHBoeXNpY2FsIHBvcnQgd2lsbCBBQ0sgRFBDRCByZWFkcy4KSG93ZXZlciwgcmVh ZHMgb24gdGhlIGxvY2FsIGxvZ2ljYWwgcG9ydCB0byB0aGUgaW50ZXJuYWwgc2luayB3aWxsCipO QUsqLiBpLmUuIHJlYWRpbmcgbXN0OjAtMSBBQ0tzLCBidXQgbXN0OjAtMS04IE5BS3MuCgpUaGVy ZSBtYXkgYWxzbyBiZSBkdXBsaWNhdGVzLiBTb21lIGRpc3BsYXlzIHdpbGwgcmV0dXJuIHRoZSBz YW1lIEdVSUQKd2hlbiByZWFkaW5nIERQQ0QgZnJvbSBib3RoIG1zdDowLTEgYW5kIG1zdDowLTEt OC4KClRoZXJlIGFyZSBzb21lIGRldmljZS1kZXBlbmRlbnQgYmVoYXZpb3IgYXMgd2VsbC4gVGhl IE1TVCBodWIgdXNlZApkdXJpbmcgdGVzdGluZyB3aWxsIGFjdHVhbGx5ICpBQ0sqIHJlYWQgcmVx dWVzdHMgb24gYSBkaXNjb25uZWN0ZWQKcGh5c2ljYWwgcG9ydCwgd2hlcmVhcyB0aGUgTVNUIGRp c3BsYXlzIHdpbGwgTkFLLgoKSW4gbGlnaHQgb2YgdGhlc2UgZGlzY3JlcGFuY2llcywgaXQncyBz aW1wbGVyIHRvIGV4cG9zZSBhbGwgZG93bnN0cmVhbQpwb3J0cyAtIGJvdGggcGh5c2ljYWwgYW5k IGxvZ2ljYWwgLSBhbmQgbGV0IHRoZSB1c2VyIGRlY2lkZSB3aGF0IHRvIHVzZS4KCnYzIGNoYW5n ZXM6CiogQ2hhbmdlIFdBUk5fT05fT05DRSAtPiBEUk1fRVJST1Igb24gZHBjZCByZWFkIGVycm9y cwoqIERvY3N0cmluZyBhbmQgY29zbWV0aWMgZml4ZXMKCnYyIGNoYW5nZXM6CgpNb3ZlZCByZW1v dGUgYXV4IGRldmljZSAodW4pcmVnaXN0cmF0aW9uIHRvIG5ldyBtc3QgY29ubmVjdG9yIGxhdGUK cmVnaXN0ZXIgYW5kIGVhcmx5IHVucmVnaXN0ZXIgaGVscGVycy4gRHJpdmVycyBzaG91bGQgY2Fs bCB0aGVzZSBmcm9tCnRoZWlyIG93biBtc3QgY29ubmVjdG9yIGZ1bmN0aW9uIGhvb2tzLgoKVGhp cyBpcyB0byBzb2x2ZSBhbiBpc3N1ZSBkdXJpbmcgZHJpdmVyIHVubG9hZCwgd2hlcmUgbXN0IGNv bm5lY3RvcgpkZXZpY2VzIGFyZSB1bnJlZ2lzdGVyZWQgYmVmb3JlIHRoZSByZW1vdGUgYXV4IGRl dmljZXMgYXJlLiBJbiBhIHNldHVwCndoZXJlIGF1eCBkZXZpY2VzIGFyZSBjcmVhdGVkIGFzIGNo aWxkcmVuIG9mIGNvbm5lY3RvciBkZXZpY2VzLCB0aGUgYXV4CmRldmljZSB3b3VsZCBiZSByZW1v dmVkIHRvbyBlYXJseSwgYW5kIHVuY2xlYW5seS4gRG9pbmcgc28gaW4KZWFybHlfdW5yZWdpc3Rl ciBzb2x2ZXMgdGhpcyBpc3N1ZSwgYXMgdGhhdCBpcyBjYWxsZWQgYmVmb3JlIGNvbm5lY3Rvcgp1 bnJlZ2lzdHJhdGlvbi4KClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IExlbyBMaSA8c3VucGVuZy5saUBh bWQuY29tPgpSZXZpZXdlZC1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vZHJtX2RwX2F1eF9kZXYuYyAgICAgIHwgIDE1ICsrLQogZHJpdmVycy9n cHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyB8IDE0NCArKysrKysrKysrKysrKysrKysrKysr KystLQogaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgICAgICB8ICAgNCArCiBpbmNs dWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oICAgICAgIHwgIDExICsrCiA0IGZpbGVzIGNoYW5n ZWQsIDE2MiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2RwX2F1eF9kZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfYXV4 X2Rldi5jCmluZGV4IDI2ZTM4ZGFjZjY1NC4uMGNmYjM4Njc1NGMzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2RwX2F1eF9kZXYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rw X2F1eF9kZXYuYwpAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RwX21z dF9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+CiAKICNpbmNsdWRlICJkcm1f Y3J0Y19oZWxwZXJfaW50ZXJuYWwuaCIKQEAgLTE2Miw3ICsxNjMsMTIgQEAgc3RhdGljIHNzaXpl X3QgYXV4ZGV2X3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAq dG8pCiAJCQlicmVhazsKIAkJfQogCi0JCXJlcyA9IGRybV9kcF9kcGNkX3JlYWQoYXV4X2Rldi0+ YXV4LCBwb3MsIGJ1ZiwgdG9kbyk7CisJCWlmIChhdXhfZGV2LT5hdXgtPmlzX3JlbW90ZSkKKwkJ CXJlcyA9IGRybV9kcF9tc3RfZHBjZF9yZWFkKGF1eF9kZXYtPmF1eCwgcG9zLCBidWYsCisJCQkJ CQkgICB0b2RvKTsKKwkJZWxzZQorCQkJcmVzID0gZHJtX2RwX2RwY2RfcmVhZChhdXhfZGV2LT5h dXgsIHBvcywgYnVmLCB0b2RvKTsKKwogCQlpZiAocmVzIDw9IDApCiAJCQlicmVhazsKIApAQCAt MjA5LDcgKzIxNSwxMiBAQCBzdGF0aWMgc3NpemVfdCBhdXhkZXZfd3JpdGVfaXRlcihzdHJ1Y3Qg a2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkKIAkJCWJyZWFrOwogCQl9CiAKLQkJ cmVzID0gZHJtX2RwX2RwY2Rfd3JpdGUoYXV4X2Rldi0+YXV4LCBwb3MsIGJ1ZiwgdG9kbyk7CisJ CWlmIChhdXhfZGV2LT5hdXgtPmlzX3JlbW90ZSkKKwkJCXJlcyA9IGRybV9kcF9tc3RfZHBjZF93 cml0ZShhdXhfZGV2LT5hdXgsIHBvcywgYnVmLAorCQkJCQkJICAgIHRvZG8pOworCQllbHNlCisJ CQlyZXMgPSBkcm1fZHBfZHBjZF93cml0ZShhdXhfZGV2LT5hdXgsIHBvcywgYnVmLCB0b2RvKTsK KwogCQlpZiAocmVzIDw9IDApCiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3Rv cG9sb2d5LmMKaW5kZXggMDk4NGI5YTM0ZDU1Li40NzMzZDMzNTBlZGUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9kcF9tc3RfdG9wb2xvZ3kuYwpAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgPGRybS9k cm1fcHJpbnQuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgogCisjaW5jbHVk ZSAiZHJtX2NydGNfaGVscGVyX2ludGVybmFsLmgiCisKIC8qKgogICogRE9DOiBkcCBtc3QgaGVs cGVyCiAgKgpAQCAtNTMsNiArNTUsOSBAQCBzdGF0aWMgaW50IGRybV9kcF9kcGNkX3dyaXRlX3Bh eWxvYWQoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJCQkJICAgICBpbnQg aWQsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX2RwX3BheWxvYWQgKnBheWxvYWQpOwogCitzdGF0aWMg aW50IGRybV9kcF9zZW5kX2RwY2RfcmVhZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Ig Km1nciwKKwkJCQkgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwKKwkJCQkgaW50IG9mZnNl dCwgaW50IHNpemUsIHU4ICpieXRlcyk7CiBzdGF0aWMgaW50IGRybV9kcF9zZW5kX2RwY2Rfd3Jp dGUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJCQkJICBzdHJ1Y3QgZHJt X2RwX21zdF9wb3J0ICpwb3J0LAogCQkJCSAgaW50IG9mZnNldCwgaW50IHNpemUsIHU4ICpieXRl cyk7CkBAIC0xMjM4LDYgKzEyNDMsOCBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfZGVzdHJveV9wb3J0 KHN0cnVjdCBrcmVmICprcmVmKQogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdy ID0gcG9ydC0+bWdyOwogCiAJaWYgKCFwb3J0LT5pbnB1dCkgeworCQlwb3J0LT52Y3BpLm51bV9z bG90cyA9IDA7CisKIAkJa2ZyZWUocG9ydC0+Y2FjaGVkX2VkaWQpOwogCiAJCS8qCkBAIC0xNDgz LDYgKzE0OTAsNTIgQEAgc3RhdGljIGJvb2wgZHJtX2RwX3BvcnRfc2V0dXBfcGR0KHN0cnVjdCBk cm1fZHBfbXN0X3BvcnQgKnBvcnQpCiAJcmV0dXJuIHNlbmRfbGluazsKIH0KIAorLyoqCisgKiBk cm1fZHBfbXN0X2RwY2RfcmVhZCgpIC0gcmVhZCBhIHNlcmllcyBvZiBieXRlcyBmcm9tIHRoZSBE UENEIHZpYSBzaWRlYmFuZAorICogQGF1eDogRmFrZSBzaWRlYmFuZCBBVVggQ0gKKyAqIEBvZmZz ZXQ6IGFkZHJlc3Mgb2YgdGhlIChmaXJzdCkgcmVnaXN0ZXIgdG8gcmVhZAorICogQGJ1ZmZlcjog YnVmZmVyIHRvIHN0b3JlIHRoZSByZWdpc3RlciB2YWx1ZXMKKyAqIEBzaXplOiBudW1iZXIgb2Yg Ynl0ZXMgaW4gQGJ1ZmZlcgorICoKKyAqIFBlcmZvcm1zIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkg Zm9yIHJlbW90ZSBkZXZpY2VzIHZpYQorICogc2lkZWJhbmQgbWVzc2FnaW5nIGFzIGRybV9kcF9k cGNkX3JlYWQoKSBkb2VzIGZvciBsb2NhbAorICogZGV2aWNlcyB2aWEgYWN0dWFsIEFVWCBDSC4K KyAqCisgKiBSZXR1cm46IE51bWJlciBvZiBieXRlcyByZWFkLCBvciBuZWdhdGl2ZSBlcnJvciBj b2RlIG9uIGZhaWx1cmUuCisgKi8KK3NzaXplX3QgZHJtX2RwX21zdF9kcGNkX3JlYWQoc3RydWN0 IGRybV9kcF9hdXggKmF1eCwKKwkJCSAgICAgdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqYnVm ZmVyLCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0ID0gY29u dGFpbmVyX29mKGF1eCwgc3RydWN0IGRybV9kcF9tc3RfcG9ydCwKKwkJCQkJCSAgICBhdXgpOwor CisJcmV0dXJuIGRybV9kcF9zZW5kX2RwY2RfcmVhZChwb3J0LT5tZ3IsIHBvcnQsCisJCQkJICAg ICBvZmZzZXQsIHNpemUsIGJ1ZmZlcik7Cit9CisKKy8qKgorICogZHJtX2RwX21zdF9kcGNkX3dy aXRlKCkgLSB3cml0ZSBhIHNlcmllcyBvZiBieXRlcyB0byB0aGUgRFBDRCB2aWEgc2lkZWJhbmQK KyAqIEBhdXg6IEZha2Ugc2lkZWJhbmQgQVVYIENICisgKiBAb2Zmc2V0OiBhZGRyZXNzIG9mIHRo ZSAoZmlyc3QpIHJlZ2lzdGVyIHRvIHdyaXRlCisgKiBAYnVmZmVyOiBidWZmZXIgY29udGFpbmlu ZyB0aGUgdmFsdWVzIHRvIHdyaXRlCisgKiBAc2l6ZTogbnVtYmVyIG9mIGJ5dGVzIGluIEBidWZm ZXIKKyAqCisgKiBQZXJmb3JtcyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGZvciByZW1vdGUgZGV2 aWNlcyB2aWEKKyAqIHNpZGViYW5kIG1lc3NhZ2luZyBhcyBkcm1fZHBfZHBjZF93cml0ZSgpIGRv ZXMgZm9yIGxvY2FsCisgKiBkZXZpY2VzIHZpYSBhY3R1YWwgQVVYIENILgorICoKKyAqIFJldHVy bjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3Nz aXplX3QgZHJtX2RwX21zdF9kcGNkX3dyaXRlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsCisJCQkg ICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQorewor CXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQgPSBjb250YWluZXJfb2YoYXV4LCBzdHJ1Y3Qg ZHJtX2RwX21zdF9wb3J0LAorCQkJCQkJICAgIGF1eCk7CisKKwlyZXR1cm4gZHJtX2RwX3NlbmRf ZHBjZF93cml0ZShwb3J0LT5tZ3IsIHBvcnQsCisJCQkJICAgICAgb2Zmc2V0LCBzaXplLCBidWZm ZXIpOworfQorCiBzdGF0aWMgdm9pZCBkcm1fZHBfY2hlY2tfbXN0Yl9ndWlkKHN0cnVjdCBkcm1f ZHBfbXN0X2JyYW5jaCAqbXN0YiwgdTggKmd1aWQpCiB7CiAJaW50IHJldDsKQEAgLTE1MjYsNiAr MTU3OSw0NiBAQCBzdGF0aWMgdm9pZCBidWlsZF9tc3RfcHJvcF9wYXRoKGNvbnN0IHN0cnVjdCBk cm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKIAlzdHJsY2F0KHByb3BwYXRoLCB0ZW1wLCBwcm9wcGF0 aF9zaXplKTsKIH0KIAorLyoqCisgKiBkcm1fZHBfbXN0X2Nvbm5lY3Rvcl9sYXRlX3JlZ2lzdGVy KCkgLSBMYXRlIE1TVCBjb25uZWN0b3IgcmVnaXN0cmF0aW9uCisgKiBAZHJtX2Nvbm5lY3Rvcjog VGhlIE1TVCBjb25uZWN0b3IKKyAqIEBwb3J0OiBUaGUgTVNUIHBvcnQgZm9yIHRoaXMgY29ubmVj dG9yCisgKgorICogSGVscGVyIHRvIHJlZ2lzdGVyIHRoZSByZW1vdGUgYXV4IGRldmljZSBmb3Ig dGhpcyBNU1QgcG9ydC4gRHJpdmVycyBzaG91bGQKKyAqIGNhbGwgdGhpcyBmcm9tIHRoZWlyIG1z dCBjb25uZWN0b3IncyBsYXRlX3JlZ2lzdGVyIGhvb2sgdG8gZW5hYmxlIE1TVCBhdXgKKyAqIGRl dmljZXMuCisgKgorICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUg b24gZmFpbHVyZS4KKyAqLworaW50IGRybV9kcF9tc3RfY29ubmVjdG9yX2xhdGVfcmVnaXN0ZXIo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkgICAgICAgc3RydWN0IGRybV9k cF9tc3RfcG9ydCAqcG9ydCkKK3sKKwlEUk1fREVCVUdfS01TKCJyZWdpc3RlcmluZyAlcyByZW1v dGUgYnVzIGZvciAlc1xuIiwKKwkJICAgICAgcG9ydC0+YXV4Lm5hbWUsIGNvbm5lY3Rvci0+a2Rl di0+a29iai5uYW1lKTsKKworCXBvcnQtPmF1eC5kZXYgPSBjb25uZWN0b3ItPmtkZXY7CisJcmV0 dXJuIGRybV9kcF9hdXhfcmVnaXN0ZXJfZGV2bm9kZSgmcG9ydC0+YXV4KTsKK30KK0VYUE9SVF9T WU1CT0woZHJtX2RwX21zdF9jb25uZWN0b3JfbGF0ZV9yZWdpc3Rlcik7CisKKy8qKgorICogZHJt X2RwX21zdF9jb25uZWN0b3JfZWFybHlfdW5yZWdpc3RlcigpIC0gRWFybHkgTVNUIGNvbm5lY3Rv ciB1bnJlZ2lzdHJhdGlvbgorICogQGRybV9jb25uZWN0b3I6IFRoZSBNU1QgY29ubmVjdG9yCisg KiBAcG9ydDogVGhlIE1TVCBwb3J0IGZvciB0aGlzIGNvbm5lY3RvcgorICoKKyAqIEhlbHBlciB0 byB1bnJlZ2lzdGVyIHRoZSByZW1vdGUgYXV4IGRldmljZSBmb3IgdGhpcyBNU1QgcG9ydCwgcmVn aXN0ZXJlZCBieQorICogZHJtX2RwX21zdF9jb25uZWN0b3JfbGF0ZV9yZWdpc3RlcigpLiBEcml2 ZXJzIHNob3VsZCBjYWxsIHRoaXMgZnJvbSB0aGVpciBtc3QKKyAqIGNvbm5lY3RvcidzIGVhcmx5 X3VucmVnaXN0ZXIgaG9vay4KKyAqLwordm9pZCBkcm1fZHBfbXN0X2Nvbm5lY3Rvcl9lYXJseV91 bnJlZ2lzdGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCSAgIHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCit7CisJRFJNX0RFQlVHX0tNUygidW5yZWdpc3Rlcmlu ZyAlcyByZW1vdGUgYnVzIGZvciAlc1xuIiwKKwkJICAgICAgcG9ydC0+YXV4Lm5hbWUsIGNvbm5l Y3Rvci0+a2Rldi0+a29iai5uYW1lKTsKKwlkcm1fZHBfYXV4X3VucmVnaXN0ZXJfZGV2bm9kZSgm cG9ydC0+YXV4KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2RwX21zdF9jb25uZWN0b3JfZWFybHlf dW5yZWdpc3Rlcik7CisKIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2Rw X21zdF9icmFuY2ggKm1zdGIsCiAJCQkgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAg ICBzdHJ1Y3QgZHJtX2RwX2xpbmtfYWRkcl9yZXBseV9wb3J0ICpwb3J0X21zZykKQEAgLTE1NDgs NiArMTY0MSw3IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2ggKm1zdGIsCiAJCXBvcnQtPm1nciA9IG1zdGItPm1ncjsKIAkJcG9ydC0+YXV4Lm5h bWUgPSAiRFBNU1QiOwogCQlwb3J0LT5hdXguZGV2ID0gZGV2LT5kZXY7CisJCXBvcnQtPmF1eC5p c19yZW1vdGUgPSB0cnVlOwogCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0aGUgbWVtb3J5IGFsbG9j YXRpb24gZm9yIG91ciBwYXJlbnQgYnJhbmNoIHN0YXlzCkBAIC0xODE2LDcgKzE5MTAsNiBAQCBz dGF0aWMgYm9vbCBkcm1fZHBfdmFsaWRhdGVfZ3VpZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9n eV9tZ3IgKm1nciwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiAwCiBzdGF0aWMgaW50IGJ1aWxk X2RwY2RfcmVhZChzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ190eCAqbXNnLCB1OCBwb3J0X251 bSwgdTMyIG9mZnNldCwgdTggbnVtX2J5dGVzKQogewogCXN0cnVjdCBkcm1fZHBfc2lkZWJhbmRf bXNnX3JlcV9ib2R5IHJlcTsKQEAgLTE4MjksNyArMTkyMiw2IEBAIHN0YXRpYyBpbnQgYnVpbGRf ZHBjZF9yZWFkKHN0cnVjdCBkcm1fZHBfc2lkZWJhbmRfbXNnX3R4ICptc2csIHU4IHBvcnRfbnVt LCB1MzIKIAogCXJldHVybiAwOwogfQotI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHJtX2RwX3NlbmRf c2lkZWJhbmRfbXNnKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogCQkJCSAg ICBib29sIHVwLCB1OCAqbXNnLCBpbnQgbGVuKQpAQCAtMjQ0MSwyNiArMjUzMyw1OCBAQCBpbnQg ZHJtX2RwX3VwZGF0ZV9wYXlsb2FkX3BhcnQyKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21n ciAqbWdyKQogfQogRVhQT1JUX1NZTUJPTChkcm1fZHBfdXBkYXRlX3BheWxvYWRfcGFydDIpOwog Ci0jaWYgMCAvKiB1bnVzZWQgYXMgb2YgeWV0ICovCiBzdGF0aWMgaW50IGRybV9kcF9zZW5kX2Rw Y2RfcmVhZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkgc3RydWN0 IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwKLQkJCQkgaW50IG9mZnNldCwgaW50IHNpemUpCisJCQkJ IGludCBvZmZzZXQsIGludCBzaXplLCB1OCAqYnl0ZXMpCiB7CiAJaW50IGxlbjsKKwlpbnQgcmV0 ID0gMDsKIAlzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ190eCAqdHhtc2c7CisJc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoICptc3RiOworCisJbXN0YiA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0 X21zdGJfdmFsaWRhdGVkKG1nciwgcG9ydC0+cGFyZW50KTsKKwlpZiAoIW1zdGIpCisJCXJldHVy biAtRUlOVkFMOwogCiAJdHhtc2cgPSBremFsbG9jKHNpemVvZigqdHhtc2cpLCBHRlBfS0VSTkVM KTsKLQlpZiAoIXR4bXNnKQotCQlyZXR1cm4gLUVOT01FTTsKKwlpZiAoIXR4bXNnKSB7CisJCXJl dCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbF9wdXQ7CisJfQogCi0JbGVuID0gYnVpbGRfZHBjZF9y ZWFkKHR4bXNnLCBwb3J0LT5wb3J0X251bSwgMCwgOCk7CisJbGVuID0gYnVpbGRfZHBjZF9yZWFk KHR4bXNnLCBwb3J0LT5wb3J0X251bSwgb2Zmc2V0LCBzaXplKTsKIAl0eG1zZy0+ZHN0ID0gcG9y dC0+cGFyZW50OwogCiAJZHJtX2RwX3F1ZXVlX2Rvd25fdHgobWdyLCB0eG1zZyk7CiAKLQlyZXR1 cm4gMDsKKwlyZXQgPSBkcm1fZHBfbXN0X3dhaXRfdHhfcmVwbHkobXN0YiwgdHhtc2cpOworCWlm IChyZXQgPCAwKQorCQlnb3RvIGZhaWxfZnJlZTsKKworCS8qIERQQ0QgcmVhZCBzaG91bGQgbmV2 ZXIgYmUgTkFDS2VkICovCisJaWYgKHR4bXNnLT5yZXBseS5yZXBseV90eXBlID09IDEpIHsKKwkJ RFJNX0VSUk9SKCJtc3RiICVwIHBvcnQgJWQ6IERQQ0QgcmVhZCBvbiBhZGRyIDB4JXggZm9yICVk IGJ5dGVzIE5BS2VkXG4iLAorCQkJICBtc3RiLCBwb3J0LT5wb3J0X251bSwgb2Zmc2V0LCBzaXpl KTsKKwkJcmV0ID0gLUVJTzsKKwkJZ290byBmYWlsX2ZyZWU7CisJfQorCisJaWYgKHR4bXNnLT5y ZXBseS51LnJlbW90ZV9kcGNkX3JlYWRfYWNrLm51bV9ieXRlcyAhPSBzaXplKSB7CisJCXJldCA9 IC1FUFJPVE87CisJCWdvdG8gZmFpbF9mcmVlOworCX0KKworCXJldCA9IG1pbl90KHNpemVfdCwg dHhtc2ctPnJlcGx5LnUucmVtb3RlX2RwY2RfcmVhZF9hY2subnVtX2J5dGVzLAorCQkgICAgc2l6 ZSk7CisJbWVtY3B5KGJ5dGVzLCB0eG1zZy0+cmVwbHkudS5yZW1vdGVfZHBjZF9yZWFkX2Fjay5i eXRlcywgcmV0KTsKKworZmFpbF9mcmVlOgorCWtmcmVlKHR4bXNnKTsKK2ZhaWxfcHV0OgorCWRy bV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIobXN0Yik7CisKKwlyZXR1cm4gcmV0OwogfQotI2Vu ZGlmCiAKIHN0YXRpYyBpbnQgZHJtX2RwX3NlbmRfZHBjZF93cml0ZShzdHJ1Y3QgZHJtX2RwX21z dF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQs CkBAIC0yNDg5LDcgKzI2MTMsNyBAQCBzdGF0aWMgaW50IGRybV9kcF9zZW5kX2RwY2Rfd3JpdGUo c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJcmV0ID0gZHJtX2RwX21zdF93 YWl0X3R4X3JlcGx5KG1zdGIsIHR4bXNnKTsKIAlpZiAocmV0ID4gMCkgewogCQlpZiAodHhtc2ct PnJlcGx5LnJlcGx5X3R5cGUgPT0gRFBfU0lERUJBTkRfUkVQTFlfTkFLKQotCQkJcmV0ID0gLUVJ TlZBTDsKKwkJCXJldCA9IC1FSU87CiAJCWVsc2UKIAkJCXJldCA9IDA7CiAJfQpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBl ci5oCmluZGV4IDM5Nzg5NmI1YjIxYS4uODM2NDUwMmY5MmNmIDEwMDY0NAotLS0gYS9pbmNsdWRl L2RybS9kcm1fZHBfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCkBA IC0xMzA5LDYgKzEzMDksMTAgQEAgc3RydWN0IGRybV9kcF9hdXggewogCSAqIEBjZWM6IHN0cnVj dCBjb250YWluaW5nIGZpZWxkcyB1c2VkIGZvciBDRUMtVHVubmVsaW5nLW92ZXItQVVYLgogCSAq LwogCXN0cnVjdCBkcm1fZHBfYXV4X2NlYyBjZWM7CisJLyoqCisJICogQGlzX3JlbW90ZTogSXMg dGhpcyBBVVggQ0ggYWN0dWFsbHkgdXNpbmcgc2lkZWJhbmQgbWVzc2FnaW5nLgorCSAqLworCWJv b2wgaXNfcmVtb3RlOwogfTsKIAogc3NpemVfdCBkcm1fZHBfZHBjZF9yZWFkKHN0cnVjdCBkcm1f ZHBfYXV4ICphdXgsIHVuc2lnbmVkIGludCBvZmZzZXQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fZHBfbXN0X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaApp bmRleCA4Yzk3YTVmOTJjNDcuLjJiYTYyNTNlYTZkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX2RwX21zdF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5o CkBAIC02NDMsNiArNjQzLDE3IEBAIHZvaWQgZHJtX2RwX21zdF9kdW1wX3RvcG9sb2d5KHN0cnVj dCBzZXFfZmlsZSAqbSwKIHZvaWQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc3VzcGVuZChzdHJ1 Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncik7CiBpbnQgX19tdXN0X2NoZWNrCiBkcm1f ZHBfbXN0X3RvcG9sb2d5X21ncl9yZXN1bWUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IpOworCitzc2l6ZV90IGRybV9kcF9tc3RfZHBjZF9yZWFkKHN0cnVjdCBkcm1fZHBfYXV4 ICphdXgsCisJCQkgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90 IHNpemUpOworc3NpemVfdCBkcm1fZHBfbXN0X2RwY2Rfd3JpdGUoc3RydWN0IGRybV9kcF9hdXgg KmF1eCwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90 IHNpemUpOworCitpbnQgZHJtX2RwX21zdF9jb25uZWN0b3JfbGF0ZV9yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9w b3J0ICpwb3J0KTsKK3ZvaWQgZHJtX2RwX21zdF9jb25uZWN0b3JfZWFybHlfdW5yZWdpc3Rlcihz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCQkgICBzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0ICpwb3J0KTsKKwogc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKmRybV9h dG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiAJCQkJCQkJCSAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncik7CiBp bnQgX19tdXN0X2NoZWNrCi0tIAoyLjIyLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeA==