From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v5 2/5] drm/dp_mst: Start tracking per-port VCPI allocations Date: Thu, 8 Nov 2018 18:10:40 -0500 Message-ID: <20181108231043.24064-3-lyude@redhat.com> References: <20181108231043.24064-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181108231043.24064-1-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org Cc: Daniel Vetter List-Id: nouveau.vger.kernel.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 CkNoYW5nZXMgc2luY2UgdjQ6CiAtIERvbid0IHNraXAgdGhlIGF0b21pYyBjaGVja3MgZm9yIFZD UEkgYWxsb2NhdGlvbnMgaWYgbm8gbmV3IFZDUEkKICAgYWxsb2NhdGlvbnMgaGFwcGVuIGluIGEg c3RhdGUuIFRoaXMgbWFrZXMgdGhlIG5leHQgY2hhbmdlIEknbSBhYm91dAogICB0byBsaXN0IGhl cmUgYSBsb3QgZWFzaWVyIHRvIGltcGxlbWVudC4KIC0gRG9uJ3QgaWdub3JlIFZDUEkgYWxsb2Nh dGlvbnMgb24gZGVzdHJveWVkIHBvcnRzLCBpbnN0ZWFkIGVuc3VyZSB0aGF0CiAgIHdoZW4gcG9y dHMgYXJlIGRlc3Ryb3llZCBhbmQgc3RpbGwgaGF2ZSBWQ1BJIGFsbG9jYXRpb25zIGluIHRoZQog ICB0b3BvbG9neSBzdGF0ZSwgdGhlIG9ubHkgc3RhdGUgY2hhbmdlcyBhbGxvd2VkIGFyZSByZWxl YXNpbmcgc2FpZAogICBwb3J0cycgVkNQSS4gVGhpcyBwcmV2ZW50cyBhIHN0YXRlIHdpdGggYSBt aXggb2YgVkNQSSBhbGxvY2F0aW9ucwogICBmcm9tIGRlc3Ryb3llZCBwb3J0cywgYW5kIGFsbG9j YXRpb25zIGZyb20gdmFsaWQgcG9ydHMuCgpDaGFuZ2VzIHNpbmNlIHYzOgogLSBEb24ndCByZWxl YXNlIFZDUEkgYWxsb2NhdGlvbnMgaW4gdGhlIHRvcG9sb2d5IHN0YXRlIGltbWVkaWF0ZWx5IGlu CiAgIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCksIGluc3RlYWQgbWFyayB0aGVt IGFzIDAgYW5kIHNraXAKICAgb3ZlciB0aGVtIGluIGRybV9kcF9tc3RfZHVwbGljYXRlX3N0YXRl KCkuIFRoaXMgbWFrZXMgaXQgc28KICAgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMo KSBpcyBzdGlsbCBpZGVtcG90ZW50IHdoaWxlIGFsc28KICAgdGhyb3dpbmcgd2FybmluZ3MgaWYg dGhlIGRyaXZlciBtZXNzZXMgdXAgaXQncyBib29rIGtlZXBpbmcgYW5kIHRyaWVzCiAgIHRvIHJl bGVhc2UgVkNQSSBzbG90cyBvbiBhIHBvcnQgdGhhdCBkb2Vzbid0IGhhdmUgYW55IHByZS1leGlz dGluZwogICBWQ1BJIGFsbG9jYXRpb24gLSBkYW52ZXQKIC0gQ2hhbmdlIG1zdF9zdGF0ZS9zdGF0 ZSBpbiBzb21lIGRlYnVnZ2luZyBtZXNzYWdlcyB0byAibXN0IHN0YXRlIgoKQ2hhbmdlcyBzaW5j ZSB2MjoKIC0gVXNlIGttZW1kdXAoKSBmb3IgZHVwbGljYXRpbmcgTVNUIHN0YXRlIC0gZGFudmV0 CiAtIE1vdmUgcG9ydCB2YWxpZGF0aW9uIG91dCBvZiBkdXBsaWNhdGUgc3RhdGUgY2FsbGJhY2sg LSBkYW52ZXQKIC0gSGFuZGxlIGxvb3BpbmcgdGhyb3VnaCBNU1QgdG9wb2xvZ3kgc3RhdGVzIGlu CiAgIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKCkgc28gdGhlIGRyaXZlciBkb2Vzbid0IGhhdmUg dG8gZG8gaXQKIC0gRml4IGRvY3VtZW50YXRpb24gaW4gZHJtX2RwX2F0b21pY19maW5kX3ZjcGlf c2xvdHMoKQogLSBNb3ZlIHRoZSBhdG9taWMgY2hlY2sgZm9yIGVhY2ggaW5kaXZpZHVhbCB0b3Bv bG9neSBzdGF0ZSBpbnRvIGl0J3MKICAgb3duIGZ1bmN0aW9uLCByZWR1Y2VzIGluZGVudGluZwog LSBEb24ndCBjb25zaWRlciAic3RhbGUiIE1TVCBwb3J0cyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBi YW5kd2lkdGgKICAgcmVxdWlyZW1lbnRzLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIG9yaWdpbmFs bHkgd2UgcmVsaWVkIG9uIHRoZQogICBzdGF0ZSBkdXBsaWNhdGlvbiBmdW5jdGlvbnMgdG8gcHJ1 bmUgYW55IHN0YWxlIHBvcnRzIGZyb20gdGhlIG5ldwogICBzdGF0ZSwgd2hpY2ggd291bGQgcHJl dmVudCB1cyBmcm9tIGluY29ycmVjdGx5IGNvbnNpZGVyaW5nIHRoZWlyCiAgIGJhbmR3aWR0aCBy ZXF1aXJlbWVudHMgYWxvbmdzaWRlIGxlZ2l0aW1hdGUgbmV3IHBheWxvYWRzLgogLSBBZGQgZnVu Y3Rpb24gcmVmZXJlbmNlcyBpbiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIC0g ZGFudmV0CiAtIEFubm90YXRlIGF0b21pYyBWQ1BJIGFuZCBhdG9taWMgY2hlY2sgZnVuY3Rpb25z IHdpdGggX19tdXN0X2NoZWNrCiAgIC0gZGFudmV0CgpDaGFuZ2VzIHNpbmNlIHYxOgogLSBEb24n dCB1c2UgdGhlIG5vdy1yZW1vdmVkIC0+YXRvbWljX2NoZWNrKCkgZm9yIHByaXZhdGUgb2JqZWN0 cyBob29rLAogICBqdXN0IGdpdmUgZHJpdmVycyBhIGZ1bmN0aW9uIHRvIGNhbGwgdGhlbXNlbHZl cwoKU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KQ2M6IERhbmll bCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Ry bV9kcF9tc3RfdG9wb2xvZ3kuYyB8IDI0NCArKysrKysrKysrKysrKysrKysrKysrLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICB8ICAgNCArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcF9tc3QuYyAgIHwgIDMxICsrLS0KIGluY2x1ZGUvZHJtL2RybV9kcF9t c3RfaGVscGVyLmggICAgICAgfCAgMjQgKystCiA0IGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRp b25zKCspLCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2RwX21zdF90b3BvbG9neS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3ku YwppbmRleCA4YzNjZmFjNDM3ZjQuLjQyNDQzMjc1NjI0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rw X21zdF90b3BvbG9neS5jCkBAIC0yNjE0LDIxICsyNjE0LDM0IEBAIHN0YXRpYyBpbnQgZHJtX2Rw X2luaXRfdmNwaShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIH0KIAogLyoq Ci0gKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIC0gRmluZCBhbmQgYWRkIHZjcGkg c2xvdHMgdG8gdGhlIHN0YXRlCisgKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIC0g RmluZCBhbmQgYWRkIFZDUEkgc2xvdHMgdG8gdGhlIHN0YXRlCiAgKiBAc3RhdGU6IGdsb2JhbCBh dG9taWMgc3RhdGUKICAqIEBtZ3I6IE1TVCB0b3BvbG9neSBtYW5hZ2VyIGZvciB0aGUgcG9ydAog ICogQHBvcnQ6IHBvcnQgdG8gZmluZCB2Y3BpIHNsb3RzIGZvcgogICogQHBibjogYmFuZHdpZHRo IHJlcXVpcmVkIGZvciB0aGUgbW9kZSBpbiBQQk4KICAqCi0gKiBSRVRVUk5TOgotICogVG90YWwg c2xvdHMgaW4gdGhlIGF0b21pYyBzdGF0ZSBhc3NpZ25lZCBmb3IgdGhpcyBwb3J0IG9yIGVycm9y CisgKiBBbGxvY2F0ZXMgVkNQSSBzbG90cyB0byBAcG9ydCwgcmVwbGFjaW5nIGFueSBwcmV2aW91 cyBWQ1BJIGFsbG9jYXRpb25zIGl0CisgKiBtYXkgaGF2ZSBoYWQuIEFueSBhdG9taWMgZHJpdmVy cyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbgorICogaW4gdGhlaXIg JmRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcy5hdG9taWNfY2hlY2soKSBjYWxsYmFjayB0byBjaGFu Z2UgdGhlCisgKiBjdXJyZW50IFZDUEkgYWxsb2NhdGlvbiBmb3IgdGhlIG5ldyBzdGF0ZS4gVGhl IGFsbG9jYXRpb25zIGFyZSBub3QgY2hlY2tlZAorICogYWdhaW5zdCB0aGUgYmFuZHdpZHRoIHJl c3RyYWludHMgb2YgQG1nciB1bnRpbCB0aGUgZHJpdmVyIGNhbGxzCisgKiBkcm1fZHBfbXN0X2F0 b21pY19jaGVjaygpLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX2F0b21pY19yZWxlYXNl X3ZjcGlfc2xvdHMoKQorICogZHJtX2RwX21zdF9hdG9taWNfY2hlY2soKQorICoKKyAqIFJldHVy bnM6CisgKiBUb3RhbCBzbG90cyBpbiB0aGUgYXRvbWljIHN0YXRlIGFzc2lnbmVkIGZvciB0aGlz IHBvcnQsIG9yIGEgbmVnYXRpdmUgZXJyb3IKKyAqIGNvZGUgaWYgdGhlIHBvcnQgbm8gbG9uZ2Vy IGV4aXN0cwogICovCiBpbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf bWdyICptZ3IsCiAJCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgcGJuKQog ewogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICp0b3BvbG9neV9zdGF0ZTsKLQlp bnQgcmVxX3Nsb3RzOworCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpwb3MsICp2Y3Bp ID0gTlVMTDsKKwlpbnQgcHJldl9zbG90cywgcmVxX3Nsb3RzLCByZXQ7CiAKIAl0b3BvbG9neV9z dGF0ZSA9IGRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSwgbWdyKTsKIAlp ZiAoSVNfRVJSKHRvcG9sb2d5X3N0YXRlKSkKQEAgLTI2MzcsMjAgKzI2NTAsNDMgQEAgaW50IGRy bV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKIAlwb3J0ID0gZHJtX2RwX2dldF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKIAlp ZiAocG9ydCA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKLQlyZXFfc2xvdHMgPSBESVZfUk9V TkRfVVAocGJuLCBtZ3ItPnBibl9kaXYpOwotCURSTV9ERUJVR19LTVMoInZjcGkgc2xvdHMgcmVx PSVkLCBhdmFpbD0lZFxuIiwKLQkJCXJlcV9zbG90cywgdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Ns b3RzKTsKIAotCWlmIChyZXFfc2xvdHMgPiB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpIHsK LQkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwotCQlyZXR1cm4gLUVOT1NQQzsKKwl0b3BvbG9neV9z dGF0ZS0+dmNwaV9hbGxvY2F0ZWQgPSB0cnVlOworCisJLyogRmluZCB0aGUgY3VycmVudCBhbGxv Y2F0aW9uIGZvciB0aGlzIHBvcnQsIGlmIGFueSAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkocG9z LCAmdG9wb2xvZ3lfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCWlmIChwb3MtPnBvcnQgPT0gcG9y dCkgeworCQkJdmNwaSA9IHBvczsKKwkJCXByZXZfc2xvdHMgPSB2Y3BpLT52Y3BpOworCQkJYnJl YWs7CisJCX0KIAl9CisJaWYgKCF2Y3BpKQorCQlwcmV2X3Nsb3RzID0gMDsKKworCXJlcV9zbG90 cyA9IERJVl9ST1VORF9VUChwYm4sIG1nci0+cGJuX2Rpdik7CiAKLQl0b3BvbG9neV9zdGF0ZS0+ YXZhaWxfc2xvdHMgLT0gcmVxX3Nsb3RzOwotCURSTV9ERUJVR19LTVMoInZjcGkgc2xvdHMgYXZh aWw9JWQiLCB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpOworCURSTV9ERUJVR19LTVMoIltD T05ORUNUT1I6JWQ6JXNdIFtNU1QgUE9SVDolcF0gVkNQSSAlZCAtPiAlZFxuIiwKKwkJICAgICAg cG9ydC0+Y29ubmVjdG9yLT5iYXNlLmlkLCBwb3J0LT5jb25uZWN0b3ItPm5hbWUsIHBvcnQsCisJ CSAgICAgIHByZXZfc2xvdHMsIHJlcV9zbG90cyk7CiAKKwkvKiBBZGQgdGhlIG5ldyBhbGxvY2F0 aW9uIHRvIHRoZSBzdGF0ZSAqLworCWlmICghdmNwaSkgeworCQl2Y3BpID0ga3phbGxvYyhzaXpl b2YoKnZjcGkpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCF2Y3BpKSB7CisJCQlyZXQgPSAtRU5PTUVN OworCQkJZ290byBvdXQ7CisJCX0KKworCQl2Y3BpLT5wb3J0ID0gcG9ydDsKKwkJbGlzdF9hZGQo JnZjcGktPm5leHQsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMpOworCX0KKwl2Y3BpLT52Y3BpID0g cmVxX3Nsb3RzOworCisJcmV0ID0gcmVxX3Nsb3RzOworb3V0OgogCWRybV9kcF9wdXRfcG9ydChw b3J0KTsKLQlyZXR1cm4gcmVxX3Nsb3RzOworCXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9M KGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKTsKIApAQCAtMjY1OCwzMiArMjY5NCw1MiBA QCBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKTsKICAqIGRybV9k cF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgLSBSZWxlYXNlIGFsbG9jYXRlZCB2Y3BpIHNs b3RzCiAgKiBAc3RhdGU6IGdsb2JhbCBhdG9taWMgc3RhdGUKICAqIEBtZ3I6IE1TVCB0b3BvbG9n eSBtYW5hZ2VyIGZvciB0aGUgcG9ydAotICogQHNsb3RzOiBudW1iZXIgb2YgdmNwaSBzbG90cyB0 byByZWxlYXNlCisgKiBAcG9ydDogVGhlIHBvcnQgdG8gcmVsZWFzZSB0aGUgVkNQSSBzbG90cyBm cm9tCiAgKgotICogUkVUVVJOUzoKLSAqIDAgaWYgQHNsb3RzIHdlcmUgYWRkZWQgYmFjayB0byAm ZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgb3IKLSAqIG5lZ2F0aXZlIGVy cm9yIGNvZGUKKyAqIFJlbGVhc2VzIGFueSBWQ1BJIHNsb3RzIHRoYXQgaGF2ZSBiZWVuIGFsbG9j YXRlZCB0byBhIHBvcnQgaW4gdGhlIGF0b21pYworICogc3RhdGUuIEFueSBhdG9taWMgZHJpdmVy cyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBpbgorICogdGhlaXIg JmRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzLmF0b21pY19jaGVjaygpIGNhbGxiYWNrIHdoZW4g dGhlCisgKiBjb25uZWN0b3Igd2lsbCBubyBsb25nZXIgaGF2ZSBWQ1BJIGFsbG9jYXRlZCAoZS5n LiBiZWNhdXNlIGl0J3MgQ1JUQyB3YXMKKyAqIHJlbW92ZWQpLgorICoKKyAqIEl0IGlzIE9LIHRv IGNhbGwgdGhpcyBldmVuIGlmIEBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVt LCBpbgorICogd2hpY2ggY2FzZSBpdCB3aWxsIGp1c3QgYW1vdW50IHRvIGEgbm8tb3AuCisgKgor ICogU2VlIGFsc286CisgKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpCisgKiBkcm1f ZHBfbXN0X2F0b21pY19jaGVjaygpCisgKgorICogUmV0dXJuczoKKyAqIDAgaWYgYWxsIHNsb3Rz IGZvciB0aGlzIHBvcnQgd2VyZSBhZGRlZCBiYWNrIHRvCisgKiAmZHJtX2RwX21zdF90b3BvbG9n eV9zdGF0ZS5hdmFpbF9zbG90cyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiAgKi8KIGludCBkcm1f ZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKLQkJCQkg ICAgIGludCBzbG90cykKKwkJCQkgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCiB7 CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKnRvcG9sb2d5X3N0YXRlOworCXN0 cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICp0bXAsICpwb3M7CisJYm9vbCBmb3VuZCA9IGZh bHNlOwogCiAJdG9wb2xvZ3lfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9tc3RfdG9wb2xvZ3lfc3Rh dGUoc3RhdGUsIG1ncik7CiAJaWYgKElTX0VSUih0b3BvbG9neV9zdGF0ZSkpCiAJCXJldHVybiBQ VFJfRVJSKHRvcG9sb2d5X3N0YXRlKTsKIAotCS8qIFdlIGNhbm5vdCByZWx5IG9uIHBvcnQtPnZj cGkubnVtX3Nsb3RzIHRvIHVwZGF0ZQotCSAqIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyBh cyB0aGUgcG9ydCBtYXkgbm90IGV4aXN0IGlmIHRoZSBwYXJlbnQKLQkgKiBicmFuY2ggZGV2aWNl IHdhcyB1bnBsdWdnZWQuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGJ5IHRyYWNraW5nCi0JICogcGVy LXBvcnQgc2xvdCBhbGxvY2F0aW9uIGluIGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgaW5zdGVh ZCBvZgotCSAqIGRlcGVuZGluZyBvbiB0aGUgY2FsbGVyIHRvIHRlbGwgdXMgaG93IG1hbnkgc2xv dHMgdG8gcmVsZWFzZS4KLQkgKi8KLQl0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgKz0gc2xv dHM7Ci0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyByZWxlYXNlZD0lZCwgYXZhaWw9JWRcbiIs Ci0JCQlzbG90cywgdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKTsKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUocG9zLCB0bXAsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJ aWYgKHBvcy0+cG9ydCA9PSBwb3J0KSB7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVhazsKKwkJ fQorCX0KKwlpZiAoV0FSTl9PTighZm91bmQpKSB7CisJCURSTV9FUlJPUigibm8gVkNQSSBmb3Ig W01TVCBQT1JUOiVwXSBmb3VuZCBpbiBtc3Qgc3RhdGUgJXBcbiIsCisJCQkgIHBvcnQsICZ0b3Bv bG9neV9zdGF0ZS0+YmFzZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KIAorCURSTV9ERUJVR19L TVMoIltNU1QgUE9SVDolcF0gdmNwaSAlZCAtPiAwXG4iLAorCQkgICAgICBwb3J0LCBwb3MtPnZj cGkpOworCXBvcy0+dmNwaSA9IDA7CiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9k cF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKTsKQEAgLTMxMTIsMTUgKzMxNjgsMzkgQEAgc3Rh dGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lfY29ubmVjdG9yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQogc3RhdGljIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqCiBkcm1fZHBfbXN0X2R1 cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmopCiB7Ci0Jc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKnN0YXRlOworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9s b2d5X3N0YXRlICpzdGF0ZSwgKm9sZF9zdGF0ZSA9CisJCXRvX2RwX21zdF90b3BvbG9neV9zdGF0 ZShvYmotPnN0YXRlKTsKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9zLCAqdmNw aTsKIAotCXN0YXRlID0ga21lbWR1cChvYmotPnN0YXRlLCBzaXplb2YoKnN0YXRlKSwgR0ZQX0tF Uk5FTCk7CisJc3RhdGUgPSBrbWVtZHVwKG9sZF9zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9L RVJORUwpOwogCWlmICghc3RhdGUpCiAJCXJldHVybiBOVUxMOwogCiAJX19kcm1fYXRvbWljX2hl bHBlcl9wcml2YXRlX29ial9kdXBsaWNhdGVfc3RhdGUob2JqLCAmc3RhdGUtPmJhc2UpOwogCisJ SU5JVF9MSVNUX0hFQUQoJnN0YXRlLT52Y3Bpcyk7CisJc3RhdGUtPnZjcGlfYWxsb2NhdGVkID0g ZmFsc2U7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJm9sZF9zdGF0ZS0+dmNwaXMsIG5l eHQpIHsKKwkJLyogUHJ1bmUgbGVmdG92ZXIgZnJlZWQgVkNQSSBhbGxvY2F0aW9ucyAqLworCQlp ZiAoIXBvcy0+dmNwaSkKKwkJCWNvbnRpbnVlOworCisJCXZjcGkgPSBrbWVtZHVwKHBvcywgc2l6 ZW9mKCp2Y3BpKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghdmNwaSkKKwkJCWdvdG8gZmFpbF9hbGxv YzsKKworCQlsaXN0X2FkZCgmdmNwaS0+bmV4dCwgJnN0YXRlLT52Y3Bpcyk7CisJfQorCiAJcmV0 dXJuICZzdGF0ZS0+YmFzZTsKKworZmFpbF9hbGxvYzoKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUocG9zLCB2Y3BpLCAmc3RhdGUtPnZjcGlzLCBuZXh0KQorCQlrZnJlZShwb3MpOworCWtmcmVl KHN0YXRlKTsKKworCXJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgdm9pZCBkcm1fZHBfbXN0X2Rl c3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqLApAQCAtMzEyOCwxNCArMzIw OCwxMTIgQEAgc3RhdGljIHZvaWQgZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1f cHJpdmF0ZV9vYmogKm9iaiwKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAq bXN0X3N0YXRlID0KIAkJdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3Qg ZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9zLCAqdG1wOworCisJbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKHBvcywgdG1wLCAmbXN0X3N0YXRlLT52Y3BpcywgbmV4dCkKKwkJa2ZyZWUocG9zKTsK IAogCWtmcmVlKG1zdF9zdGF0ZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZh dGVfc3RhdGVfZnVuY3MgbXN0X3N0YXRlX2Z1bmNzID0geworc3RhdGljIGlubGluZSBpbnQKK2Ry bV9kcF9tc3RfYXRvbWljX2NoZWNrX3RvcG9sb2d5X3N0YXRlKHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9z dGF0ZSAqbXN0X3N0YXRlKQoreworCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICp2Y3Bp OworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7CisJaW50IGF2YWlsX3Nsb3RzID0gNjMs IHJldDsKKworCS8qIFRoZXJlJ3Mgbm8gcG9zc2libGUgc2NlbmFyaW8gd2hlcmUgcmVsZWFzaW5n IFZDUEkgb3Iga2VlcGluZyBpdCB0aGUKKwkgKiBzYW1lIHdvdWxkIG1ha2UgdGhlIHN0YXRlIGlu dmFsaWQKKwkgKi8KKwlpZiAoIW1zdF9zdGF0ZS0+dmNwaV9hbGxvY2F0ZWQpIHsKKwkJRFJNX0RF QlVHX0FUT01JQygiW01TVCBNR1I6JXBdIHN0YXRlICVwIGFsbG9jYXRlcyBubyBWQ1BJLCBjaGVj ayBza2lwcGVkXG4iLAorCQkJCSBtZ3IsICZtc3Rfc3RhdGUtPmJhc2UpOworCQlyZXR1cm4gMDsK Kwl9CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZjcGksICZtc3Rfc3RhdGUtPnZjcGlzLCBuZXh0 KSB7CisJCS8qIFJlbGVhc2luZyBWQ1BJIGlzIGFsd2F5cyBPSy1ldmVuIGlmIHRoZSBwb3J0IGlz IGdvbmUgKi8KKwkJaWYgKCF2Y3BpLT52Y3BpKSB7CisJCQlEUk1fREVCVUdfQVRPTUlDKCJbTVNU IFBPUlQ6JXBdIHJlbGVhc2VzIGFsbCBWQ1BJIHNsb3RzXG4iLAorCQkJCQkgdmNwaS0+cG9ydCk7 CisJCQljb250aW51ZTsKKwkJfQorCisJCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0 X3JlZihtZ3IsIHZjcGktPnBvcnQpOworCQlpZiAoIXBvcnQpIHsKKwkJCURSTV9ERUJVR19BVE9N SUMoIltNU1QgUE9SVDolcF0gaXMgZ29uZSBidXQgc3RpbGwgaGFzIFZDUEksIGNhbm5vdCBhZGQg bmV3IFZDUElcbiIsCisJCQkJCSB2Y3BpLT5wb3J0KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9 CisKKwkJRFJNX0RFQlVHX0FUT01JQygiW01TVCBQT1JUOiVwXSByZXF1aXJlcyAlZCB2Y3BpIHNs b3RzXG4iLAorCQkJCSB2Y3BpLT5wb3J0LCB2Y3BpLT52Y3BpKTsKKworCQlhdmFpbF9zbG90cyAt PSB2Y3BpLT52Y3BpOworCQlpZiAoYXZhaWxfc2xvdHMgPCAwKSB7CisJCQlEUk1fREVCVUdfQVRP TUlDKCJbTVNUIFBPUlQ6JXBdIG5vdCBlbm91Z2ggVkNQSSBzbG90cyBpbiBtc3Qgc3RhdGUgJXAg KGF2YWlsPSVkKVxuIiwKKwkJCQkJIHZjcGktPnBvcnQsIG1zdF9zdGF0ZSwKKwkJCQkJIGF2YWls X3Nsb3RzICsgdmNwaS0+dmNwaSk7CisJCQlyZXQgPSAtRU5PU1BDOworCQkJZ290byBwb3J0X2Zh aWw7CisJCX0KKworCQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7CisJfQorCURSTV9ERUJVR19BVE9N SUMoIltNU1QgTUdSOiVwXSBtc3Qgc3RhdGUgJXAgVkNQSSBhdmFpbD0lZCB1c2VkPSVkXG4iLAor CQkJIG1nciwgbXN0X3N0YXRlLCBhdmFpbF9zbG90cywKKwkJCSA2MyAtIGF2YWlsX3Nsb3RzKTsK KworCXJldHVybiAwOworcG9ydF9mYWlsOgorCWRybV9kcF9wdXRfcG9ydChwb3J0KTsKKwlyZXR1 cm4gcmV0OworfQorCisvKioKKyAqIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrIC0gQ2hlY2sgdGhh dCB0aGUgbmV3IHN0YXRlIG9mIGFuIE1TVCB0b3BvbG9neSBpbiBhbgorICogYXRvbWljIHVwZGF0 ZSBpcyB2YWxpZAorICogQHN0YXRlOiBQb2ludGVyIHRvIHRoZSBuZXcgJnN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X3N0YXRlCisgKgorICogQ2hlY2tzIHRoZSBnaXZlbiB0b3BvbG9neSBzdGF0 ZSBmb3IgYW4gYXRvbWljIHVwZGF0ZSB0byBlbnN1cmUgdGhhdCBpdCdzCisgKiB2YWxpZC4gVGhp cyBpbmNsdWRlcyBjaGVja2luZyB3aGV0aGVyIHRoZXJlJ3MgZW5vdWdoIGJhbmR3aWR0aCB0byBz dXBwb3J0CisgKiB0aGUgbmV3IFZDUEkgYWxsb2NhdGlvbnMgaW4gdGhlIGF0b21pYyB1cGRhdGUu CisgKgorICogQW55IGF0b21pYyBkcml2ZXJzIHN1cHBvcnRpbmcgRFAgTVNUIG11c3QgbWFrZSBz dXJlIHRvIGNhbGwgdGhpcyBhZnRlcgorICogY2hlY2tpbmcgdGhlIHJlc3Qgb2YgdGhlaXIgc3Rh dGUgaW4gdGhlaXIKKyAqICZkcm1fbW9kZV9jb25maWdfZnVuY3MuYXRvbWljX2NoZWNrKCkgY2Fs bGJhY2suCisgKgorICogU2VlIGFsc286CisgKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90 cygpCisgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpCisgKgorICogUmV0dXJu czoKKyAqCisgKiAwIGlmIHRoZSBuZXcgc3RhdGUgaXMgdmFsaWQsIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb3RoZXJ3aXNlLgorICovCitpbnQgZHJtX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21n ciAqbWdyOworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICptc3Rfc3RhdGU7CisJ aW50IGksIHJldCA9IDA7CisKKwlmb3JfZWFjaF9uZXdfbXN0X21ncl9pbl9zdGF0ZShzdGF0ZSwg bWdyLCBtc3Rfc3RhdGUsIGkpIHsKKwkJcmV0ID0gZHJtX2RwX21zdF9hdG9taWNfY2hlY2tfdG9w b2xvZ3lfc3RhdGUobWdyLCBtc3Rfc3RhdGUpOworCQlpZiAocmV0KQorCQkJYnJlYWs7CisJfQor CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2RwX21zdF9hdG9taWNfY2hlY2sp OworCitjb25zdCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3MgZHJtX2RwX21zdF90b3Bv bG9neV9zdGF0ZV9mdW5jcyA9IHsKIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9kcF9t c3RfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9kcF9tc3Rf ZGVzdHJveV9zdGF0ZSwKIH07CitFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfdG9wb2xvZ3lfc3Rh dGVfZnVuY3MpOwogCiAvKioKICAqIGRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZTog Z2V0IE1TVCB0b3BvbG9neSBzdGF0ZQpAQCAtMzIxMywxMyArMzM5MSwxMSBAQCBpbnQgZHJtX2Rw X21zdF90b3BvbG9neV9tZ3JfaW5pdChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1n ciwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAltc3Rfc3RhdGUtPm1nciA9IG1ncjsKLQotCS8qIG1h eC4gdGltZSBzbG90cyAtIG9uZSBzbG90IGZvciBNVFAgaGVhZGVyICovCi0JbXN0X3N0YXRlLT5h dmFpbF9zbG90cyA9IDYzOworCUlOSVRfTElTVF9IRUFEKCZtc3Rfc3RhdGUtPnZjcGlzKTsKIAog CWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfaW5pdCgmbWdyLT5iYXNlLAogCQkJCSAgICAmbXN0X3N0 YXRlLT5iYXNlLAotCQkJCSAgICAmbXN0X3N0YXRlX2Z1bmNzKTsKKwkJCQkgICAgJmRybV9kcF9t c3RfdG9wb2xvZ3lfc3RhdGVfZnVuY3MpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYWU2ZDU4ZGJmMWVkLi5jM2UwZjIwZDE2MWIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEyNTQ3LDYgKzEyNTQ3LDEwIEBAIHN0 YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJ ICAgICAgICJbbW9kZXNldF0iIDogIltmYXN0c2V0XSIpOwogCX0KIAorCXJldCA9IGRybV9kcF9t c3RfYXRvbWljX2NoZWNrKHN0YXRlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJaWYg KGFueV9tcykgewogCQlyZXQgPSBpbnRlbF9tb2Rlc2V0X2NoZWNrcyhzdGF0ZSk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKaW5kZXggOGNiNDA5M2Y4YmNjLi4yOWM0N2M1ZjU3NDcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCkBAIC0xMTQsMjggKzExNCwzMSBAQCBz dGF0aWMgaW50IGludGVsX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7 CiAJc3RydWN0IGRybV9jcnRjICpvbGRfY3J0YzsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGU7Ci0JaW50IHNsb3RzLCByZXQgPSAwOworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmludGVsX2Nvbm5lY3RvciA9CisJCXRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCXN0 cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0KKwkJJmludGVsX2Nvbm5lY3Rvci0+ bXN0X3BvcnQtPm1zdF9tZ3I7CisJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCA9IGludGVs X2Nvbm5lY3Rvci0+cG9ydDsKKwlpbnQgcmV0ID0gMDsKIAogCW9sZF9jb25uX3N0YXRlID0gZHJt X2F0b21pY19nZXRfb2xkX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKIAlvbGRf Y3J0YyA9IG9sZF9jb25uX3N0YXRlLT5jcnRjOwogCWlmICghb2xkX2NydGMpCiAJCXJldHVybiBy ZXQ7CiAKLQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUs IG9sZF9jcnRjKTsKLQlzbG90cyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPmRw X21fbi50dTsKLQlpZiAoZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkg JiYgc2xvdHMgPiAwKSB7Ci0JCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyOwot CQlzdHJ1Y3QgZHJtX2VuY29kZXIgKm9sZF9lbmNvZGVyOworCS8qIEZyZWUgVkNQSSwgc2luY2Ug Y29tcHV0ZV9jb25maWcoKSB3b24ndCBiZSBydW4gKi8KKwlpZiAoIW5ld19jb25uX3N0YXRlLT5j cnRjKSB7CisJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0 ZSwgb2xkX2NydGMpOwogCi0JCW9sZF9lbmNvZGVyID0gb2xkX2Nvbm5fc3RhdGUtPmJlc3RfZW5j b2RlcjsKLQkJbWdyID0gJmVuY190b19tc3Qob2xkX2VuY29kZXIpLT5wcmltYXJ5LT5kcC5tc3Rf bWdyOwotCi0JCXJldCA9IGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0YXRlLCBt Z3IsIHNsb3RzKTsKLQkJaWYgKHJldCkKLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCByZWxlYXNp bmcgJWQgdmNwaSBzbG90czolZFxuIiwgc2xvdHMsIHJldCk7Ci0JCWVsc2UKLQkJCXRvX2ludGVs X2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPmRwX21fbi50dSA9IDA7CisJCXJldCA9IGRybV9kcF9h dG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0YXRlLCBtZ3IsIHBvcnQpOworCQlpZiAocmV0KSB7 CisJCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgcmVsZWFzaW5nIHZjcGkgc2xvdHM6ICVkXG4iLAor CQkJCSAgICAgIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJCXRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Y19zdGF0ZSktPmRwX21fbi50dSA9IDA7CiAJfQorCiAJcmV0dXJuIHJldDsKIH0KIApk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJt L2RybV9kcF9tc3RfaGVscGVyLmgKaW5kZXggM2ZhY2ViNjZmNWNiLi4yMzkyZTEyYjZiY2UgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2RwX21zdF9oZWxwZXIuaApAQCAtNDA2LDkgKzQwNiwxNiBAQCBzdHJ1Y3QgZHJtX2Rw X3BheWxvYWQgewogCiAjZGVmaW5lIHRvX2RwX21zdF90b3BvbG9neV9zdGF0ZSh4KSBjb250YWlu ZXJfb2YoeCwgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUsIGJhc2UpCiAKK3N0cnVj dCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uIHsKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0 OworCWludCB2Y3BpOworCXN0cnVjdCBsaXN0X2hlYWQgbmV4dDsKK307CisKIHN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgYmFzZTsK LQlpbnQgYXZhaWxfc2xvdHM7CisJc3RydWN0IGxpc3RfaGVhZCB2Y3BpczsKKwl1OCB2Y3BpX2Fs bG9jYXRlZDsKIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncjsKIH07CiAKQEAg LTYxOSwxNCArNjI2LDE3IEBAIHZvaWQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc3VzcGVuZChz dHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncik7CiBpbnQgZHJtX2RwX21zdF90b3Bv bG9neV9tZ3JfcmVzdW1lKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKTsKIHN0 cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICpkcm1fYXRvbWljX2dldF9tc3RfdG9wb2xv Z3lfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCQkJCQkgICAgc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpOwotaW50IGRybV9kcF9hdG9taWNfZmlu ZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCQkgIHN0cnVj dCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAotCQkJCSAgc3RydWN0IGRybV9kcF9tc3Rf cG9ydCAqcG9ydCwgaW50IHBibik7Ci1pbnQgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xv dHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCSAgICAgc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCi0JCQkJICAgICBpbnQgc2xvdHMpOworaW50IF9fbXVz dF9jaGVjaworZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLAorCQkJICAgICAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgcGJuKTsKK2lu dCBfX211c3RfY2hlY2sKK2RybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCQkgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf bWdyICptZ3IsCisJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwogaW50IGRybV9k cF9zZW5kX3Bvd2VyX3VwZG93bl9waHkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsCiAJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGJvb2wgcG93ZXJfdXApOwor aW50IF9fbXVzdF9jaGVjayBkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpOwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGRybV9wcml2YXRlX3N0YXRl X2Z1bmNzIGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGVfZnVuY3M7CiAKLS0gCjIuMTkuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==