From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v4 2/5] drm/dp_mst: Start tracking per-port VCPI allocations Date: Wed, 7 Nov 2018 20:32:33 -0500 Message-ID: <20181108013236.2056-3-lyude@redhat.com> References: <20181108013236.2056-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181108013236.2056-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: intel-gfx@lists.freedesktop.org VGhlcmUgaGFzIGJlZW4gYSBUT0RPIHdhaXRpbmcgZm9yIHF1aXRlIGEgbG9uZyB0aW1lIGluCmRy bV9kcF9tc3RfdG9wb2xvZ3kuYzoKCgkvKiBXZSBjYW5ub3QgcmVseSBvbiBwb3J0LT52Y3BpLm51 bV9zbG90cyB0byB1cGRhdGUKCSAqIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyBhcyB0aGUg cG9ydCBtYXkgbm90IGV4aXN0IGlmIHRoZSBwYXJlbnQKCSAqIGJyYW5jaCBkZXZpY2Ugd2FzIHVu cGx1Z2dlZC4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYnkgdHJhY2tpbmcKCSAqIHBlci1wb3J0IHNs b3QgYWxsb2NhdGlvbiBpbiBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlIGluc3RlYWQgb2YKCSAq IGRlcGVuZGluZyBvbiB0aGUgY2FsbGVyIHRvIHRlbGwgdXMgaG93IG1hbnkgc2xvdHMgdG8gcmVs ZWFzZS4KCSAqLwoKVGhhdCdzIG5vdCB0aGUgb25seSByZWFzb24gd2Ugc2hvdWxkIGZpeCB0aGlz OiBmb3JjaW5nIHRoZSBkcml2ZXIgdG8KdHJhY2sgdGhlIFZDUEkgYWxsb2NhdGlvbnMgdGhyb3Vn aG91dCBhIHN0YXRlJ3MgYXRvbWljIGNoZWNrIGlzCmVycm9yIHByb25lLCBiZWNhdXNlIGl0IG1l YW5zIHRoYXQgZXh0cmEgY2FyZSBoYXMgdG8gYmUgdGFrZW4gd2l0aCB0aGUKb3JkZXIgdGhhdCBk cm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIGFuZApkcm1fZHBfYXRvbWljX3JlbGVhc2Vf dmNwaV9zbG90cygpIGFyZSBjYWxsZWQgaW4gaW4gb3JkZXIgdG8gZW5zdXJlCmlkZW1wb3RlbmN5 LiBDdXJyZW50bHkgdGhlIG9ubHkgZHJpdmVyIGFjdHVhbGx5IHVzaW5nIHRoZXNlIGhlbHBlcnMs Cmk5MTUsIGRvZXNuJ3QgZXZlbiBkbyB0aGlzIGNvcnJlY3RseTogbXVsdGlwbGUgLT5iZXN0X2Vu Y29kZXIoKSBjaGVja3MKd2l0aCBpOTE1J3MgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBu b3QgYmUgaWRlbXBvdGVudCBhbmQgd291bGQKb3Zlci1hbGxvY2F0ZSBWQ1BJIHNsb3RzLCBzb21l dGhpbmcgSSBsZWFybmVkIHRyeWluZyB0byBpbXBsZW1lbnQKZmFsbGJhY2sgcmV0cmFpbmluZyBp biBNU1QuCgpTbzogc2ltcGxpZnkgdGhpcyB3aG9sZSBtZXNzLCBhbmQgdGVhY2ggZHJtX2RwX2F0 b21pY19maW5kX3ZjcGlfc2xvdHMoKQphbmQgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xv dHMoKSB0byB0cmFjayB0aGUgVkNQSSBhbGxvY2F0aW9ucyBmb3IKZWFjaCBwb3J0LiBUaGlzIGFs bG93cyB1cyB0byBlbnN1cmUgaWRlbXBvdGVuY3kgd2l0aG91dCBoYXZpbmcgdG8gcmVseQpvbiB0 aGUgZHJpdmVyIGFzIG11Y2guIEFkZGl0aW9uYWxseTogdGhlIGRyaXZlciBkb2Vzbid0IG5lZWQg dG8gZG8gYW55CmtpbmQgb2YgVkNQSSBzbG90IHRyYWNraW5nIGFueW1vcmUgaWYgaXQgZG9lc24n dCBuZWVkIGl0IGZvciBpdCdzIG93bgppbnRlcm5hbCBzdGF0ZS4KCkFkZGl0aW9uYWxseTsgdGhp cyBhZGRzIGEgbmV3IGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKCkgaGVscGVyIHdoaWNoCm11c3Qg YmUgdXNlZCBieSBhdG9taWMgZHJpdmVycyB0byBwZXJmb3JtIHZhbGlkaXR5IGNoZWNrcyBmb3Ig dGhlIG5ldwpWQ1BJIGFsbG9jYXRpb25zIGluY3VycmVkIGJ5IGEgc3RhdGUuCgpBbHNvOiB1cGRh dGUgdGhlIGRvY3VtZW50YXRpb24gYW5kIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlc2UK L211c3QvIGJlIGNhbGxlZCBieSAvYWxsLyBhdG9taWMgZHJpdmVycyBzdXBwb3J0aW5nIE1TVC4K CkNoYW5nZXMgc2luY2UgdjM6CiAtIERvbid0IHJlbGVhc2UgVkNQSSBhbGxvY2F0aW9ucyBpbiB0 aGUgdG9wb2xvZ3kgc3RhdGUgaW1tZWRpYXRlbHkgaW4KICAgZHJtX2RwX2F0b21pY19yZWxlYXNl X3ZjcGlfc2xvdHMoKSwgaW5zdGVhZCBtYXJrIHRoZW0gYXMgMCBhbmQgc2tpcAogICBvdmVyIHRo ZW0gaW4gZHJtX2RwX21zdF9kdXBsaWNhdGVfc3RhdGUoKS4gVGhpcyBtYWtlcyBpdCBzbwogICBk cm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIGlzIHN0aWxsIGlkZW1wb3RlbnQgd2hp bGUgYWxzbwogICB0aHJvd2luZyB3YXJuaW5ncyBpZiB0aGUgZHJpdmVyIG1lc3NlcyB1cCBpdCdz IGJvb2sga2VlcGluZyBhbmQgdHJpZXMKICAgdG8gcmVsZWFzZSBWQ1BJIHNsb3RzIG9uIGEgcG9y dCB0aGF0IGRvZXNuJ3QgaGF2ZSBhbnkgcHJlLWV4aXN0aW5nCiAgIFZDUEkgYWxsb2NhdGlvbiAt IGRhbnZldAogLSBDaGFuZ2UgbXN0X3N0YXRlL3N0YXRlIGluIHNvbWUgZGVidWdnaW5nIG1lc3Nh Z2VzIHRvICJtc3Qgc3RhdGUiCgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBVc2Uga21lbWR1cCgpIGZv ciBkdXBsaWNhdGluZyBNU1Qgc3RhdGUgLSBkYW52ZXQKIC0gTW92ZSBwb3J0IHZhbGlkYXRpb24g b3V0IG9mIGR1cGxpY2F0ZSBzdGF0ZSBjYWxsYmFjayAtIGRhbnZldAogLSBIYW5kbGUgbG9vcGlu ZyB0aHJvdWdoIE1TVCB0b3BvbG9neSBzdGF0ZXMgaW4KICAgZHJtX2RwX21zdF9hdG9taWNfY2hl Y2soKSBzbyB0aGUgZHJpdmVyIGRvZXNuJ3QgaGF2ZSB0byBkbyBpdAogLSBGaXggZG9jdW1lbnRh dGlvbiBpbiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpCiAtIE1vdmUgdGhlIGF0b21p YyBjaGVjayBmb3IgZWFjaCBpbmRpdmlkdWFsIHRvcG9sb2d5IHN0YXRlIGludG8gaXQncwogICBv d24gZnVuY3Rpb24sIHJlZHVjZXMgaW5kZW50aW5nCiAtIERvbid0IGNvbnNpZGVyICJzdGFsZSIg TVNUIHBvcnRzIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGJhbmR3aWR0aAogICByZXF1aXJlbWVudHMu IFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugb3JpZ2luYWxseSB3ZSByZWxpZWQgb24gdGhlCiAgIHN0 YXRlIGR1cGxpY2F0aW9uIGZ1bmN0aW9ucyB0byBwcnVuZSBhbnkgc3RhbGUgcG9ydHMgZnJvbSB0 aGUgbmV3CiAgIHN0YXRlLCB3aGljaCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gaW5jb3JyZWN0bHkg Y29uc2lkZXJpbmcgdGhlaXIKICAgYmFuZHdpZHRoIHJlcXVpcmVtZW50cyBhbG9uZ3NpZGUgbGVn aXRpbWF0ZSBuZXcgcGF5bG9hZHMuCiAtIEFkZCBmdW5jdGlvbiByZWZlcmVuY2VzIGluIGRybV9k cF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgLSBkYW52ZXQKIC0gQW5ub3RhdGUgYXRvbWlj IFZDUEkgYW5kIGF0b21pYyBjaGVjayBmdW5jdGlvbnMgd2l0aCBfX211c3RfY2hlY2sKICAgLSBk YW52ZXQKCkNoYW5nZXMgc2luY2UgdjE6CiAtIERvbid0IHVzZSB0aGUgbm93LXJlbW92ZWQgLT5h dG9taWNfY2hlY2soKSBmb3IgcHJpdmF0ZSBvYmplY3RzIGhvb2ssCiAgIGp1c3QgZ2l2ZSBkcml2 ZXJzIGEgZnVuY3Rpb24gdG8gY2FsbCB0aGVtc2VsdmVzCgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSBQ YXVsIDxseXVkZUByZWRoYXQuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBm ZndsbC5jaD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jIHwgMjM0 ICsrKysrKysrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAg fCAgMzEgKystLQogaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCAgICAgICB8ICAyMyAr Ky0KIDQgZmlsZXMgY2hhbmdlZCwgMjM3IGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCmluZGV4IDhjM2NmYWM0MzdmNC4uNWZm ZTRhYTJjY2ZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9n eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKQEAgLTI2MTQs MjEgKzI2MTQsMzQgQEAgc3RhdGljIGludCBkcm1fZHBfaW5pdF92Y3BpKHN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X21nciAqbWdyLAogfQogCiAvKioKLSAqIGRybV9kcF9hdG9taWNfZmluZF92 Y3BpX3Nsb3RzKCkgLSBGaW5kIGFuZCBhZGQgdmNwaSBzbG90cyB0byB0aGUgc3RhdGUKKyAqIGRy bV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkgLSBGaW5kIGFuZCBhZGQgVkNQSSBzbG90cyB0 byB0aGUgc3RhdGUKICAqIEBzdGF0ZTogZ2xvYmFsIGF0b21pYyBzdGF0ZQogICogQG1ncjogTVNU IHRvcG9sb2d5IG1hbmFnZXIgZm9yIHRoZSBwb3J0CiAgKiBAcG9ydDogcG9ydCB0byBmaW5kIHZj cGkgc2xvdHMgZm9yCiAgKiBAcGJuOiBiYW5kd2lkdGggcmVxdWlyZWQgZm9yIHRoZSBtb2RlIGlu IFBCTgogICoKLSAqIFJFVFVSTlM6Ci0gKiBUb3RhbCBzbG90cyBpbiB0aGUgYXRvbWljIHN0YXRl IGFzc2lnbmVkIGZvciB0aGlzIHBvcnQgb3IgZXJyb3IKKyAqIEFsbG9jYXRlcyBWQ1BJIHNsb3Rz IHRvIEBwb3J0LCByZXBsYWNpbmcgYW55IHByZXZpb3VzIFZDUEkgYWxsb2NhdGlvbnMgaXQKKyAq IG1heSBoYXZlIGhhZC4gQW55IGF0b21pYyBkcml2ZXJzIHdoaWNoIHN1cHBvcnQgTVNUIG11c3Qg Y2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBpbiB0aGVpciAmZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNz LmF0b21pY19jaGVjaygpIGNhbGxiYWNrIHRvIGNoYW5nZSB0aGUKKyAqIGN1cnJlbnQgVkNQSSBh bGxvY2F0aW9uIGZvciB0aGUgbmV3IHN0YXRlLiBUaGUgYWxsb2NhdGlvbnMgYXJlIG5vdCBjaGVj a2VkCisgKiBhZ2FpbnN0IHRoZSBiYW5kd2lkdGggcmVzdHJhaW50cyBvZiBAbWdyIHVudGlsIHRo ZSBkcml2ZXIgY2FsbHMKKyAqIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKCkuCisgKgorICogU2Vl IGFsc286CisgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpCisgKiBkcm1fZHBf bXN0X2F0b21pY19jaGVjaygpCisgKgorICogUmV0dXJuczoKKyAqIFRvdGFsIHNsb3RzIGluIHRo ZSBhdG9taWMgc3RhdGUgYXNzaWduZWQgZm9yIHRoaXMgcG9ydCwgb3IgYSBuZWdhdGl2ZSBlcnJv cgorICogY29kZSBpZiB0aGUgcG9ydCBubyBsb25nZXIgZXhpc3RzCiAgKi8KIGludCBkcm1fZHBf YXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJ CQkJICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkgIHN0cnVjdCBk cm1fZHBfbXN0X3BvcnQgKnBvcnQsIGludCBwYm4pCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfc3RhdGUgKnRvcG9sb2d5X3N0YXRlOwotCWludCByZXFfc2xvdHM7CisJc3RydWN0IGRy bV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnZjcGkgPSBOVUxMOworCWludCBwcmV2X3Nsb3Rz LCByZXFfc2xvdHMsIHJldDsKIAogCXRvcG9sb2d5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfbXN0 X3RvcG9sb2d5X3N0YXRlKHN0YXRlLCBtZ3IpOwogCWlmIChJU19FUlIodG9wb2xvZ3lfc3RhdGUp KQpAQCAtMjYzNywyMCArMjY1MCw0MSBAQCBpbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xv dHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCXBvcnQgPSBkcm1fZHBfZ2V0X3Zh bGlkYXRlZF9wb3J0X3JlZihtZ3IsIHBvcnQpOwogCWlmIChwb3J0ID09IE5VTEwpCiAJCXJldHVy biAtRUlOVkFMOwotCXJlcV9zbG90cyA9IERJVl9ST1VORF9VUChwYm4sIG1nci0+cGJuX2Rpdik7 Ci0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyByZXE9JWQsIGF2YWlsPSVkXG4iLAotCQkJcmVx X3Nsb3RzLCB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpOwogCi0JaWYgKHJlcV9zbG90cyA+ IHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cykgewotCQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7 Ci0JCXJldHVybiAtRU5PU1BDOworCS8qIEZpbmQgdGhlIGN1cnJlbnQgYWxsb2NhdGlvbiBmb3Ig dGhpcyBwb3J0LCBpZiBhbnkgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJnRvcG9sb2d5 X3N0YXRlLT52Y3BpcywgbmV4dCkgeworCQlpZiAocG9zLT5wb3J0ID09IHBvcnQpIHsKKwkJCXZj cGkgPSBwb3M7CisJCQlwcmV2X3Nsb3RzID0gdmNwaS0+dmNwaTsKKwkJCWJyZWFrOworCQl9CiAJ fQorCWlmICghdmNwaSkKKwkJcHJldl9zbG90cyA9IDA7CisKKwlyZXFfc2xvdHMgPSBESVZfUk9V TkRfVVAocGJuLCBtZ3ItPnBibl9kaXYpOwogCi0JdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3Rz IC09IHJlcV9zbG90czsKLQlEUk1fREVCVUdfS01TKCJ2Y3BpIHNsb3RzIGF2YWlsPSVkIiwgdG9w b2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKTsKKwlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVk OiVzXSBbTVNUIFBPUlQ6JXBdIHZjcGkgJWQgLT4gJWRcbiIsCisJCSAgICAgIHBvcnQtPmNvbm5l Y3Rvci0+YmFzZS5pZCwgcG9ydC0+Y29ubmVjdG9yLT5uYW1lLCBwb3J0LAorCQkgICAgICBwcmV2 X3Nsb3RzLCByZXFfc2xvdHMpOwogCisJLyogQWRkIHRoZSBuZXcgYWxsb2NhdGlvbiB0byB0aGUg c3RhdGUgKi8KKwlpZiAoIXZjcGkpIHsKKwkJdmNwaSA9IGt6YWxsb2Moc2l6ZW9mKCp2Y3BpKSwg R0ZQX0tFUk5FTCk7CisJCWlmICghdmNwaSkgeworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8g b3V0OworCQl9CisKKwkJdmNwaS0+cG9ydCA9IHBvcnQ7CisJCWxpc3RfYWRkKCZ2Y3BpLT5uZXh0 LCAmdG9wb2xvZ3lfc3RhdGUtPnZjcGlzKTsKKwl9CisJdmNwaS0+dmNwaSA9IHJlcV9zbG90czsK KworCXJldCA9IHJlcV9zbG90czsKK291dDoKIAlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Ci0JcmV0 dXJuIHJlcV9zbG90czsKKwlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChkcm1fZHBfYXRv bWljX2ZpbmRfdmNwaV9zbG90cyk7CiAKQEAgLTI2NTgsMzIgKzI2OTIsNTIgQEAgRVhQT1JUX1NZ TUJPTChkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyk7CiAgKiBkcm1fZHBfYXRvbWljX3Jl bGVhc2VfdmNwaV9zbG90cygpIC0gUmVsZWFzZSBhbGxvY2F0ZWQgdmNwaSBzbG90cwogICogQHN0 YXRlOiBnbG9iYWwgYXRvbWljIHN0YXRlCiAgKiBAbWdyOiBNU1QgdG9wb2xvZ3kgbWFuYWdlciBm b3IgdGhlIHBvcnQKLSAqIEBzbG90czogbnVtYmVyIG9mIHZjcGkgc2xvdHMgdG8gcmVsZWFzZQor ICogQHBvcnQ6IFRoZSBwb3J0IHRvIHJlbGVhc2UgdGhlIFZDUEkgc2xvdHMgZnJvbQogICoKLSAq IFJFVFVSTlM6Ci0gKiAwIGlmIEBzbG90cyB3ZXJlIGFkZGVkIGJhY2sgdG8gJmRybV9kcF9tc3Rf dG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzIG9yCi0gKiBuZWdhdGl2ZSBlcnJvciBjb2RlCisg KiBSZWxlYXNlcyBhbnkgVkNQSSBzbG90cyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgdG8gYSBw b3J0IGluIHRoZSBhdG9taWMKKyAqIHN0YXRlLiBBbnkgYXRvbWljIGRyaXZlcnMgd2hpY2ggc3Vw cG9ydCBNU1QgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4KKyAqIHRoZWlyICZkcm1fY29ubmVj dG9yX2hlbHBlcl9mdW5jcy5hdG9taWNfY2hlY2soKSBjYWxsYmFjayB3aGVuIHRoZQorICogY29u bmVjdG9yIHdpbGwgbm8gbG9uZ2VyIGhhdmUgVkNQSSBhbGxvY2F0ZWQgKGUuZy4gYmVjYXVzZSBp dCdzIENSVEMgd2FzCisgKiByZW1vdmVkKS4KKyAqCisgKiBJdCBpcyBPSyB0byBjYWxsIHRoaXMg ZXZlbiBpZiBAcG9ydCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN5c3RlbSwgaW4KKyAqIHdo aWNoIGNhc2UgaXQgd2lsbCBqdXN0IGFtb3VudCB0byBhIG5vLW9wLgorICoKKyAqIFNlZSBhbHNv OgorICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKQorICogZHJtX2RwX21zdF9hdG9t aWNfY2hlY2soKQorICoKKyAqIFJldHVybnM6CisgKiAwIGlmIGFsbCBzbG90cyBmb3IgdGhpcyBw b3J0IHdlcmUgYWRkZWQgYmFjayB0bworICogJmRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUuYXZh aWxfc2xvdHMgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQogICovCiBpbnQgZHJtX2RwX2F0b21pY19y ZWxlYXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCSAg ICAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCi0JCQkJICAgICBpbnQgc2xv dHMpCisJCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQogewogCXN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICp0b3BvbG9neV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Rw X3ZjcGlfYWxsb2NhdGlvbiAqdG1wLCAqcG9zOworCWJvb2wgZm91bmQgPSBmYWxzZTsKIAogCXRv cG9sb2d5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlLCBt Z3IpOwogCWlmIChJU19FUlIodG9wb2xvZ3lfc3RhdGUpKQogCQlyZXR1cm4gUFRSX0VSUih0b3Bv bG9neV9zdGF0ZSk7CiAKLQkvKiBXZSBjYW5ub3QgcmVseSBvbiBwb3J0LT52Y3BpLm51bV9zbG90 cyB0byB1cGRhdGUKLQkgKiB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgYXMgdGhlIHBvcnQg bWF5IG5vdCBleGlzdCBpZiB0aGUgcGFyZW50Ci0JICogYnJhbmNoIGRldmljZSB3YXMgdW5wbHVn Z2VkLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBieSB0cmFja2luZwotCSAqIHBlci1wb3J0IHNsb3Qg YWxsb2NhdGlvbiBpbiBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlIGluc3RlYWQgb2YKLQkgKiBk ZXBlbmRpbmcgb24gdGhlIGNhbGxlciB0byB0ZWxsIHVzIGhvdyBtYW55IHNsb3RzIHRvIHJlbGVh c2UuCi0JICovCi0JdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzICs9IHNsb3RzOwotCURSTV9E RUJVR19LTVMoInZjcGkgc2xvdHMgcmVsZWFzZWQ9JWQsIGF2YWlsPSVkXG4iLAotCQkJc2xvdHMs IHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZl KHBvcywgdG1wLCAmdG9wb2xvZ3lfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCWlmIChwb3MtPnBv cnQgPT0gcG9ydCkgeworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYg KFdBUk5fT04oIWZvdW5kKSkgeworCQlEUk1fRVJST1IoIm5vIFZDUEkgZm9yIFtNU1QgUE9SVDol cF0gZm91bmQgaW4gbXN0IHN0YXRlICVwXG4iLAorCQkJICBwb3J0LCAmdG9wb2xvZ3lfc3RhdGUt PmJhc2UpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CiAKKwlEUk1fREVCVUdfS01TKCJbTVNUIFBP UlQ6JXBdIHZjcGkgJWQgLT4gMFxuIiwKKwkJICAgICAgcG9ydCwgcG9zLT52Y3BpKTsKKwlwb3Mt PnZjcGkgPSAwOwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZHBfYXRvbWljX3Jl bGVhc2VfdmNwaV9zbG90cyk7CkBAIC0zMTEyLDE1ICszMTY2LDM4IEBAIHN0YXRpYyB2b2lkIGRy bV9kcF9kZXN0cm95X2Nvbm5lY3Rvcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHN0 YXRpYyBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKgogZHJtX2RwX21zdF9kdXBsaWNhdGVfc3Rh dGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqKQogewotCXN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAq c3RhdGUsICpvbGRfc3RhdGUgPQorCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3RhdGUob2JqLT5zdGF0 ZSk7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnZjcGk7CiAKLQlzdGF0 ZSA9IGttZW1kdXAob2JqLT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOworCXN0 YXRlID0ga21lbWR1cChvbGRfc3RhdGUsIHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKIAlp ZiAoIXN0YXRlKQogCQlyZXR1cm4gTlVMTDsKIAogCV9fZHJtX2F0b21pY19oZWxwZXJfcHJpdmF0 ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJnN0YXRlLT5iYXNlKTsKIAorCUlOSVRfTElTVF9I RUFEKCZzdGF0ZS0+dmNwaXMpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZvbGRfc3Rh dGUtPnZjcGlzLCBuZXh0KSB7CisJCS8qIFBydW5lIGxlZnRvdmVyIGZyZWVkIFZDUEkgYWxsb2Nh dGlvbnMgKi8KKwkJaWYgKCFwb3MtPnZjcGkpCisJCQljb250aW51ZTsKKworCQl2Y3BpID0ga21l bWR1cChwb3MsIHNpemVvZigqdmNwaSksIEdGUF9LRVJORUwpOworCQlpZiAoIXZjcGkpCisJCQln b3RvIGZhaWxfYWxsb2M7CisKKwkJbGlzdF9hZGQoJnZjcGktPm5leHQsICZzdGF0ZS0+dmNwaXMp OworCX0KKwogCXJldHVybiAmc3RhdGUtPmJhc2U7CisKK2ZhaWxfYWxsb2M6CisJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHBvcywgdmNwaSwgJnN0YXRlLT52Y3BpcywgbmV4dCkKKwkJa2ZyZWUo cG9zKTsKKwlrZnJlZShzdGF0ZSk7CisKKwlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQg ZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaiwKQEAg LTMxMjgsMTQgKzMyMDUsMTA1IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9tc3RfZGVzdHJveV9zdGF0 ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfc3RhdGUgKm1zdF9zdGF0ZSA9CiAJCXRvX2RwX21zdF90b3BvbG9neV9zdGF0ZShzdGF0 ZSk7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnRtcDsKKworCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIHRtcCwgJm1zdF9zdGF0ZS0+dmNwaXMsIG5leHQpCisJ CWtmcmVlKHBvcyk7CiAKIAlrZnJlZShtc3Rfc3RhdGUpOwogfQogCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9wcml2YXRlX3N0YXRlX2Z1bmNzIG1zdF9zdGF0ZV9mdW5jcyA9IHsKK3N0YXRpYyBp bmxpbmUgaW50Citkcm1fZHBfbXN0X2F0b21pY19jaGVja190b3BvbG9neV9zdGF0ZShzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCQkgICAgICAgc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfc3RhdGUgKm1zdF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxs b2NhdGlvbiAqdmNwaTsKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0OworCWludCBhdmFp bF9zbG90cyA9IDYzLCByZXQ7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZjcGksICZtc3Rfc3Rh dGUtPnZjcGlzLCBuZXh0KSB7CisJCWlmICghdmNwaS0+dmNwaSkgeworCQkJRFJNX0RFQlVHX0FU T01JQygiW01TVCBQT1JUOiVwXSByZWxlYXNlcyBhbGwgVkNQSSBzbG90c1xuIiwKKwkJCQkJIHZj cGktPnBvcnQpOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBQb3J0cyB0aGF0IG5vIGxvbmdl ciBleGlzdCBzaG91bGRuJ3QgYmUgY291bnRlZCB0b3dhcmRzIHRoZQorCQkgKiBiYW5kd2lkdGgg cmVxdWlyZW1lbnRzIGZvciB0aGUgc3RhdGUsIHNvIHNraXAgdGhlbQorCQkgKi8KKwkJcG9ydCA9 IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1nciwgdmNwaS0+cG9ydCk7CisJCWlmICgh cG9ydCkgeworCQkJRFJNX0RFQlVHX0FUT01JQygiW01TVCBQT1JUOiVwXSBpcyBzdGFsZSwgaWdu b3JpbmcgVkNQSVxuIiwKKwkJCQkJIHZjcGktPnBvcnQpOworCQkJY29udGludWU7CisJCX0KKwor CQlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIHJlcXVpcmVzICVkIHZjcGkgc2xvdHNc biIsCisJCQkJIHZjcGktPnBvcnQsIHZjcGktPnZjcGkpOworCisJCWF2YWlsX3Nsb3RzIC09IHZj cGktPnZjcGk7CisJCWlmIChhdmFpbF9zbG90cyA8IDApIHsKKwkJCURSTV9ERUJVR19BVE9NSUMo IltNU1QgUE9SVDolcF0gbm90IGVub3VnaCBWQ1BJIHNsb3RzIGluIG1zdCBzdGF0ZSAlcCAoYXZh aWw9JWQpXG4iLAorCQkJCQkgdmNwaS0+cG9ydCwgbXN0X3N0YXRlLAorCQkJCQkgYXZhaWxfc2xv dHMgKyB2Y3BpLT52Y3BpKTsKKwkJCXJldCA9IC1FTk9TUEM7CisJCQlnb3RvIHBvcnRfZmFpbDsK KwkJfQorCisJCWRybV9kcF9wdXRfcG9ydChwb3J0KTsKKwl9CisJRFJNX0RFQlVHX0FUT01JQygi W01TVCBNR1I6JXBdIG1zdCBzdGF0ZSAlcCBWQ1BJIGF2YWlsPSVkIHVzZWQ9JWRcbiIsCisJCQkg bWdyLCBtc3Rfc3RhdGUsIGF2YWlsX3Nsb3RzLAorCQkJIDYzIC0gYXZhaWxfc2xvdHMpOworCisJ cmV0dXJuIDA7Citwb3J0X2ZhaWw6CisJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCXJldHVybiBy ZXQ7Cit9CisKKy8qKgorICogZHJtX2RwX21zdF9hdG9taWNfY2hlY2sgLSBDaGVjayB0aGF0IHRo ZSBuZXcgc3RhdGUgb2YgYW4gTVNUIHRvcG9sb2d5IGluIGFuCisgKiBhdG9taWMgdXBkYXRlIGlz IHZhbGlkCisgKiBAc3RhdGU6IFBvaW50ZXIgdG8gdGhlIG5ldyAmc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfc3RhdGUKKyAqCisgKiBDaGVja3MgdGhlIGdpdmVuIHRvcG9sb2d5IHN0YXRlIGZv ciBhbiBhdG9taWMgdXBkYXRlIHRvIGVuc3VyZSB0aGF0IGl0J3MKKyAqIHZhbGlkLiBUaGlzIGlu Y2x1ZGVzIGNoZWNraW5nIHdoZXRoZXIgdGhlcmUncyBlbm91Z2ggYmFuZHdpZHRoIHRvIHN1cHBv cnQKKyAqIHRoZSBuZXcgVkNQSSBhbGxvY2F0aW9ucyBpbiB0aGUgYXRvbWljIHVwZGF0ZS4KKyAq CisgKiBBbnkgYXRvbWljIGRyaXZlcnMgc3VwcG9ydGluZyBEUCBNU1QgbXVzdCBtYWtlIHN1cmUg dG8gY2FsbCB0aGlzIGFmdGVyCisgKiBjaGVja2luZyB0aGUgcmVzdCBvZiB0aGVpciBzdGF0ZSBp biB0aGVpcgorICogJmRybV9tb2RlX2NvbmZpZ19mdW5jcy5hdG9taWNfY2hlY2soKSBjYWxsYmFj ay4KKyAqCisgKiBTZWUgYWxzbzoKKyAqIGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkK KyAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkKKyAqCisgKiBSZXR1cm5zOgor ICoKKyAqIDAgaWYgdGhlIG5ldyBzdGF0ZSBpcyB2YWxpZCwgbmVnYXRpdmUgZXJyb3IgY29kZSBv dGhlcndpc2UuCisgKi8KK2ludCBkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3I7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1zdF9zdGF0ZTsKKwlpbnQg aSwgcmV0ID0gMDsKKworCWZvcl9lYWNoX25ld19tc3RfbWdyX2luX3N0YXRlKHN0YXRlLCBtZ3Is IG1zdF9zdGF0ZSwgaSkgeworCQlyZXQgPSBkcm1fZHBfbXN0X2F0b21pY19jaGVja190b3BvbG9n eV9zdGF0ZShtZ3IsIG1zdF9zdGF0ZSk7CisJCWlmIChyZXQpCisJCQlicmVhazsKKwl9CisKKwly ZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X2F0b21pY19jaGVjayk7CisK K2NvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZV9mdW5jcyBkcm1fZHBfbXN0X3RvcG9sb2d5 X3N0YXRlX2Z1bmNzID0gewogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2RwX21zdF9k dXBsaWNhdGVfc3RhdGUsCiAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2RwX21zdF9kZXN0 cm95X3N0YXRlLAogfTsKK0VYUE9SVF9TWU1CT0woZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZV9m dW5jcyk7CiAKIC8qKgogICogZHJtX2F0b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRlOiBnZXQg TVNUIHRvcG9sb2d5IHN0YXRlCkBAIC0zMjEzLDEzICszMzgxLDExIEBAIGludCBkcm1fZHBfbXN0 X3RvcG9sb2d5X21ncl9pbml0KHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAog CQlyZXR1cm4gLUVOT01FTTsKIAogCW1zdF9zdGF0ZS0+bWdyID0gbWdyOwotCi0JLyogbWF4LiB0 aW1lIHNsb3RzIC0gb25lIHNsb3QgZm9yIE1UUCBoZWFkZXIgKi8KLQltc3Rfc3RhdGUtPmF2YWls X3Nsb3RzID0gNjM7CisJSU5JVF9MSVNUX0hFQUQoJm1zdF9zdGF0ZS0+dmNwaXMpOwogCiAJZHJt X2F0b21pY19wcml2YXRlX29ial9pbml0KCZtZ3ItPmJhc2UsCiAJCQkJICAgICZtc3Rfc3RhdGUt PmJhc2UsCi0JCQkJICAgICZtc3Rfc3RhdGVfZnVuY3MpOworCQkJCSAgICAmZHJtX2RwX21zdF90 b3BvbG9neV9zdGF0ZV9mdW5jcyk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwppbmRleCBhZTZkNThkYmYxZWQuLmMzZTBmMjBkMTYxYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTI1NDcsNiArMTI1NDcsMTAgQEAgc3RhdGlj IGludCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAg ICAgIlttb2Rlc2V0XSIgOiAiW2Zhc3RzZXRdIik7CiAJfQogCisJcmV0ID0gZHJtX2RwX21zdF9h dG9taWNfY2hlY2soc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlpZiAoYW55 X21zKSB7CiAJCXJldCA9IGludGVsX21vZGVzZXRfY2hlY2tzKHN0YXRlKTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9tc3QuYwppbmRleCA4Y2I0MDkzZjhiY2MuLjI5YzQ3YzVmNTc0NyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKQEAgLTExNCwyOCArMTE0LDMxIEBAIHN0YXRp YyBpbnQgaW50ZWxfZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKIAlz dHJ1Y3QgZHJtX2NydGMgKm9sZF9jcnRjOwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTsKLQlpbnQgc2xvdHMsIHJldCA9IDA7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50 ZWxfY29ubmVjdG9yID0KKwkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0 IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IgPQorCQkmaW50ZWxfY29ubmVjdG9yLT5tc3Rf cG9ydC0+bXN0X21ncjsKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0ID0gaW50ZWxfY29u bmVjdG9yLT5wb3J0OworCWludCByZXQgPSAwOwogCiAJb2xkX2Nvbm5fc3RhdGUgPSBkcm1fYXRv bWljX2dldF9vbGRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwogCW9sZF9jcnRj ID0gb2xkX2Nvbm5fc3RhdGUtPmNydGM7CiAJaWYgKCFvbGRfY3J0YykKIAkJcmV0dXJuIHJldDsK IAotCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgb2xk X2NydGMpOwotCXNsb3RzID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKS0+ZHBfbV9u LnR1OwotCWlmIChkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSAmJiBz bG90cyA+IDApIHsKLQkJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3I7Ci0JCXN0 cnVjdCBkcm1fZW5jb2RlciAqb2xkX2VuY29kZXI7CisJLyogRnJlZSBWQ1BJLCBzaW5jZSBjb21w dXRlX2NvbmZpZygpIHdvbid0IGJlIHJ1biAqLworCWlmICghbmV3X2Nvbm5fc3RhdGUtPmNydGMp IHsKKwkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBv bGRfY3J0Yyk7CiAKLQkJb2xkX2VuY29kZXIgPSBvbGRfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVy OwotCQltZ3IgPSAmZW5jX3RvX21zdChvbGRfZW5jb2RlciktPnByaW1hcnktPmRwLm1zdF9tZ3I7 Ci0KLQkJcmV0ID0gZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RhdGUsIG1nciwg c2xvdHMpOwotCQlpZiAocmV0KQotCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHJlbGVhc2luZyAl ZCB2Y3BpIHNsb3RzOiVkXG4iLCBzbG90cywgcmV0KTsKLQkJZWxzZQotCQkJdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjX3N0YXRlKS0+ZHBfbV9uLnR1ID0gMDsKKwkJcmV0ID0gZHJtX2RwX2F0b21p Y19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RhdGUsIG1nciwgcG9ydCk7CisJCWlmIChyZXQpIHsKKwkJ CURSTV9ERUJVR19LTVMoImZhaWxlZCByZWxlYXNpbmcgdmNwaSBzbG90czogJWRcbiIsCisJCQkJ ICAgICAgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjX3N0YXRlKS0+ZHBfbV9uLnR1ID0gMDsKIAl9CisKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJt X2RwX21zdF9oZWxwZXIuaAppbmRleCAzZmFjZWI2NmY1Y2IuLjA4YjY3OTQ4YjhmOSAxMDA2NDQK LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9k cm1fZHBfbXN0X2hlbHBlci5oCkBAIC00MDYsOSArNDA2LDE1IEBAIHN0cnVjdCBkcm1fZHBfcGF5 bG9hZCB7CiAKICNkZWZpbmUgdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRlKHgpIGNvbnRhaW5lcl9v Zih4LCBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSwgYmFzZSkKIAorc3RydWN0IGRy bV9kcF92Y3BpX2FsbG9jYXRpb24geworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7CisJ aW50IHZjcGk7CisJc3RydWN0IGxpc3RfaGVhZCBuZXh0OworfTsKKwogc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfc3RhdGUgewogCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNlOwotCWlu dCBhdmFpbF9zbG90czsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHZjcGlzOwogCXN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X21nciAqbWdyOwogfTsKIApAQCAtNjE5LDE0ICs2MjUsMTcgQEAgdm9pZCBk cm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zdXNwZW5kKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X21nciAqbWdyKTsKIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9yZXN1bWUoc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpOwogc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf c3RhdGUgKmRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCSAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9t Z3IgKm1ncik7Ci1pbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IsCi0JCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgcGJuKTsKLWlu dCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwK LQkJCQkgICAgIGludCBzbG90cyk7CitpbnQgX19tdXN0X2NoZWNrCitkcm1fZHBfYXRvbWljX2Zp bmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkgICAgICBz dHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCSAgICAgIHN0cnVjdCBkcm1f ZHBfbXN0X3BvcnQgKnBvcnQsIGludCBwYm4pOworaW50IF9fbXVzdF9jaGVjaworZHJtX2RwX2F0 b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAor CQkJCSBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCQkgc3RydWN0IGRy bV9kcF9tc3RfcG9ydCAqcG9ydCk7CiBpbnQgZHJtX2RwX3NlbmRfcG93ZXJfdXBkb3duX3BoeShz dHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkgc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydCwgYm9vbCBwb3dlcl91cCk7CitpbnQgX19tdXN0X2NoZWNrIGRybV9kcF9t c3RfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CiAKIGV4dGVy biBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3MgZHJtX2RwX21zdF90b3BvbG9n eV9zdGF0ZV9mdW5jczsKIAotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL25vdXZlYXUK