From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH 4/6] drm/dp_mst: Start tracking per-port VCPI allocations Date: Tue, 23 Oct 2018 19:12:49 -0400 Message-ID: <20181023231251.16883-5-lyude@redhat.com> References: <20181023231251.16883-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181023231251.16883-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 cyBtb3ZlcyB0aGUgY29kZSBmb3IgY2hlY2tpbmcgd2hldGhlciBvciBub3QgdGhlClZDUEkgYWxs b2NhdGlvbnMgaW4gdGhlIGF0b21pYyBzdGF0ZSBhcmUgdmFsaWQgaW50byB0aGUgbmV3Ci0+YXRv bWljX2NoZWNrKCkgaG9vayBmb3IgcHJpdmF0ZSBvYmplY3RzLCBzbyB3ZSBjYW4gZW5zdXJlIHRo YXQgd2Ugb25seQpjaGVjayB0aGUgZmluYWwgVkNQSSBhbGxvY2F0aW9uIHRoYXQgd291bGQgYmUg aW5jdXJyZWQgYnkgdGhlIG5ldyBzdGF0ZQphbmQgbm90IHRoZSBtaWQtY2hlY2sgVkNQSSBhbGxv Y2F0aW9ucy4gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGZhaWxpbmcKY2hlY2tzIHdoaWNoIGVuZCB1 cCBhbGxvY2F0aW5nIFZDUEkgc2xvdHMgdG8gcG9ydHMgYmVmb3JlIGZyZWVpbmcgYW55IG9mCnRo ZSBWQ1BJIHNsb3RzIGFsbG9jYXRlZCBieSBwb3J0cyB3aGljaCBhcmUgYWJvdXQgdG8gYmUgZGlz YWJsZWQuCgpBbHNvOiB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24gYW5kIG1ha2UgaXQgbW9yZSBv YnZpb3VzIHRoYXQgdGhlc2UKL211c3QvIGJlIGNhbGxlZCBieSAvYWxsLyBhdG9taWMgZHJpdmVy cyBzdXBwb3J0aW5nIE1TVC4KClNpZ25lZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhh dC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgfCAxNzIgKysrKysrKysrKysrKysr KysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAgfCAgMzEg KystLS0KIGluY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmggICAgICAgfCAgMTAgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCmluZGV4IDhjM2NmYWM0MzdmNC4uYWRiNDI5ODU3 MGNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKQEAgLTI2MTQsMjEgKzI2 MTQsMzMgQEAgc3RhdGljIGludCBkcm1fZHBfaW5pdF92Y3BpKHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyLAogfQogCiAvKioKLSAqIGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Ns b3RzKCkgLSBGaW5kIGFuZCBhZGQgdmNwaSBzbG90cyB0byB0aGUgc3RhdGUKKyAqIGRybV9kcF9h dG9taWNfZmluZF92Y3BpX3Nsb3RzKCkgLSBGaW5kIGFuZCBhZGQgVkNQSSBzbG90cyB0byB0aGUg c3RhdGUKICAqIEBzdGF0ZTogZ2xvYmFsIGF0b21pYyBzdGF0ZQogICogQG1ncjogTVNUIHRvcG9s b2d5IG1hbmFnZXIgZm9yIHRoZSBwb3J0CiAgKiBAcG9ydDogcG9ydCB0byBmaW5kIHZjcGkgc2xv dHMgZm9yCiAgKiBAcGJuOiBiYW5kd2lkdGggcmVxdWlyZWQgZm9yIHRoZSBtb2RlIGluIFBCTgog ICoKKyAqIEFsbG9jYXRlcyBWQ1BJIHNsb3RzIHRvIEBwb3J0LCByZXBsYWNpbmcgYW55IHByZXZp b3VzIFZDUEkgYWxsb2NhdGlvbnMgaXQKKyAqIG1heSBoYXZlIGhhZC4gQW55IGF0b21pYyBkcml2 ZXJzIHdoaWNoIHN1cHBvcnQgTVNUIG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBpbiB0aGVp ciBhdG9taWNfY2hlY2soKSBoYW5kbGVycyB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgVkNQSSBhbGxv Y2F0aW9uIGZvcgorICogdGhlIG5ldyBzdGF0ZS4gQWZ0ZXIgdGhlIC0+YXRvbWljX2NoZWNrKCkg aG9va3Mgb2YgdGhlIGRyaXZlciBhbmQgYWxsIG90aGVyCisgKiBtb2RlIG9iamVjdHMgaW4gdGhl IHN0YXRlIGhhdmUgYmVlbiBjYWxsZWQsIERSTSB3aWxsIGNoZWNrIHRoZSBmaW5hbCBWQ1BJCisg KiBhbGxvY2F0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGV5IHdpbGwgZml0IGludG8gdGhlIGF2YWls YWJsZSBiYW5kd2lkdGggb24KKyAqIHRoZSB0b3BvbG9neS4KKyAqCisgKiBTZWUgYWxzbzogZHJt X2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoKQorICoKICAqIFJFVFVSTlM6Ci0gKiBUb3Rh bCBzbG90cyBpbiB0aGUgYXRvbWljIHN0YXRlIGFzc2lnbmVkIGZvciB0aGlzIHBvcnQgb3IgZXJy b3IKKyAqIFRvdGFsIHNsb3RzIGluIHRoZSBhdG9taWMgc3RhdGUgYXNzaWduZWQgZm9yIHRoaXMg cG9ydCwgb3IgYSBuZWdhdGl2ZSBlcnJvcgorICogY29kZSBpZiB0aGUgcG9ydCBubyBsb25nZXIg ZXhpc3RzCiAgKi8KIGludCBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9t Z3IgKm1nciwKIAkJCQkgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGludCBwYm4pCiB7 CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKnRvcG9sb2d5X3N0YXRlOwotCWlu dCByZXFfc2xvdHM7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnZjcGkg PSBOVUxMOworCWludCBwcmV2X3Nsb3RzLCByZXFfc2xvdHMsIHJldDsKIAogCXRvcG9sb2d5X3N0 YXRlID0gZHJtX2F0b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlLCBtZ3IpOwogCWlm IChJU19FUlIodG9wb2xvZ3lfc3RhdGUpKQpAQCAtMjYzNywyMCArMjY0OSw0MSBAQCBpbnQgZHJt X2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAogCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3JlZihtZ3IsIHBvcnQpOwogCWlm IChwb3J0ID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwotCXJlcV9zbG90cyA9IERJVl9ST1VO RF9VUChwYm4sIG1nci0+cGJuX2Rpdik7Ci0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyByZXE9 JWQsIGF2YWlsPSVkXG4iLAotCQkJcmVxX3Nsb3RzLCB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xv dHMpOwogCi0JaWYgKHJlcV9zbG90cyA+IHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cykgewot CQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Ci0JCXJldHVybiAtRU5PU1BDOworCS8qIEZpbmQgdGhl IGN1cnJlbnQgYWxsb2NhdGlvbiBmb3IgdGhpcyBwb3J0LCBpZiBhbnkgKi8KKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KHBvcywgJnRvcG9sb2d5X3N0YXRlLT52Y3BpcywgbmV4dCkgeworCQlpZiAocG9z LT5wb3J0ID09IHBvcnQpIHsKKwkJCXZjcGkgPSBwb3M7CisJCQlwcmV2X3Nsb3RzID0gdmNwaS0+ dmNwaTsKKwkJCWJyZWFrOworCQl9CiAJfQorCWlmICghdmNwaSkKKwkJcHJldl9zbG90cyA9IDA7 CiAKLQl0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgLT0gcmVxX3Nsb3RzOwotCURSTV9ERUJV R19LTVMoInZjcGkgc2xvdHMgYXZhaWw9JWQiLCB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMp OworCXJlcV9zbG90cyA9IERJVl9ST1VORF9VUChwYm4sIG1nci0+cGJuX2Rpdik7CisKKwlEUk1f REVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXSBbTVNUIFBPUlQ6JXBdIHZjcGkgJWQgLT4gJWRc biIsCisJCSAgICAgIHBvcnQtPmNvbm5lY3Rvci0+YmFzZS5pZCwgcG9ydC0+Y29ubmVjdG9yLT5u YW1lLCBwb3J0LAorCQkgICAgICBwcmV2X3Nsb3RzLCByZXFfc2xvdHMpOwogCisJLyogQWRkIHRo ZSBuZXcgYWxsb2NhdGlvbiB0byB0aGUgc3RhdGUgKi8KKwlpZiAoIXZjcGkpIHsKKwkJdmNwaSA9 IGt6YWxsb2Moc2l6ZW9mKCp2Y3BpKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghdmNwaSkgeworCQkJ cmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJdmNwaS0+cG9ydCA9IHBvcnQ7 CisJCWxpc3RfYWRkKCZ2Y3BpLT5uZXh0LCAmdG9wb2xvZ3lfc3RhdGUtPnZjcGlzKTsKKwl9CisJ dmNwaS0+dmNwaSA9IHJlcV9zbG90czsKKworCXJldCA9IHJlcV9zbG90czsKK291dDoKIAlkcm1f ZHBfcHV0X3BvcnQocG9ydCk7Ci0JcmV0dXJuIHJlcV9zbG90czsKKwlyZXR1cm4gcmV0OwogfQog RVhQT1JUX1NZTUJPTChkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyk7CiAKQEAgLTI2NTgs MzIgKzI2OTEsNDYgQEAgRVhQT1JUX1NZTUJPTChkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90 cyk7CiAgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIC0gUmVsZWFzZSBhbGxv Y2F0ZWQgdmNwaSBzbG90cwogICogQHN0YXRlOiBnbG9iYWwgYXRvbWljIHN0YXRlCiAgKiBAbWdy OiBNU1QgdG9wb2xvZ3kgbWFuYWdlciBmb3IgdGhlIHBvcnQKLSAqIEBzbG90czogbnVtYmVyIG9m IHZjcGkgc2xvdHMgdG8gcmVsZWFzZQorICoKKyAqIFJlbGVhc2VzIGFueSBWQ1BJIHNsb3RzIHRo YXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCB0byBhIHBvcnQgaW4gdGhlIGF0b21pYworICogc3RhdGUu IEFueSBhdG9taWMgZHJpdmVycyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5j dGlvbiBpbgorICogdGhlaXIgY29ubmVjdG9yJ3MgYXRvbWljX2NoZWNrKCkgaGFuZGxlciB3aGVu IHRoZSBjb25uZWN0b3Igd2lsbCBubyBsb25nZXIKKyAqIGhhdmUgVkNQSSBhbGxvY2F0ZWQgKGUu Zy4gYmVjYXVzZSBpdCdzIENSVEMgd2FzIHJlbW92ZWQpLgorICoKKyAqIEl0IGlzIE9LIHRvIGNh bGwgdGhpcyBldmVuIGlmIEBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtLCBp bgorICogd2hpY2ggY2FzZSBpdCB3aWxsIGp1c3QgYW1vdW50IHRvIGEgbm8tb3AuCisgKgorICog U2VlIGFsc286IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkKICAqCiAgKiBSRVRVUk5T OgotICogMCBpZiBAc2xvdHMgd2VyZSBhZGRlZCBiYWNrIHRvICZkcm1fZHBfbXN0X3RvcG9sb2d5 X3N0YXRlLT5hdmFpbF9zbG90cyBvcgotICogbmVnYXRpdmUgZXJyb3IgY29kZQorICogMCBpZiBh bGwgc2xvdHMgZm9yIHRoaXMgcG9ydCB3ZXJlIGFkZGVkIGJhY2sgdG8KKyAqICZkcm1fZHBfbXN0 X3RvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiAgKi8K IGludCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1n ciwKLQkJCQkgICAgIGludCBzbG90cykKKwkJCQkgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg KnBvcnQpCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKnRvcG9sb2d5X3N0 YXRlOworCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICp0bXAsICpwb3M7CiAKIAl0b3Bv bG9neV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSwgbWdy KTsKIAlpZiAoSVNfRVJSKHRvcG9sb2d5X3N0YXRlKSkKIAkJcmV0dXJuIFBUUl9FUlIodG9wb2xv Z3lfc3RhdGUpOwogCi0JLyogV2UgY2Fubm90IHJlbHkgb24gcG9ydC0+dmNwaS5udW1fc2xvdHMg dG8gdXBkYXRlCi0JICogdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzIGFzIHRoZSBwb3J0IG1h eSBub3QgZXhpc3QgaWYgdGhlIHBhcmVudAotCSAqIGJyYW5jaCBkZXZpY2Ugd2FzIHVucGx1Z2dl ZC4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYnkgdHJhY2tpbmcKLQkgKiBwZXItcG9ydCBzbG90IGFs bG9jYXRpb24gaW4gZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSBpbnN0ZWFkIG9mCi0JICogZGVw ZW5kaW5nIG9uIHRoZSBjYWxsZXIgdG8gdGVsbCB1cyBob3cgbWFueSBzbG90cyB0byByZWxlYXNl LgotCSAqLwotCXRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyArPSBzbG90czsKLQlEUk1fREVC VUdfS01TKCJ2Y3BpIHNsb3RzIHJlbGVhc2VkPSVkLCBhdmFpbD0lZFxuIiwKLQkJCXNsb3RzLCB0 b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShw b3MsIHRtcCwgJnRvcG9sb2d5X3N0YXRlLT52Y3BpcywgbmV4dCkgeworCQlpZiAocG9zLT5wb3J0 ID09IHBvcnQpIHsKKwkJCWxpc3RfZGVsKCZwb3MtPm5leHQpOworCQkJRFJNX0RFQlVHX0tNUygi W01TVCBQT1JUOiVwXSB2Y3BpICVkIC0+IDBcbiIsCisJCQkJICAgICAgcG9ydCwgcG9zLT52Y3Bp KTsKIAorCQkJa2ZyZWUocG9zKTsKKwkJCXJldHVybiAwOworCQl9CisJfQorCisJLyogSWYgbm8g YWxsb2NhdGlvbiB3YXMgZm91bmQsIGFsbCB0aGF0IG1lYW5zIGlzIHRoYXQgdGhlIHBvcnQgd2Fz CisJICogZGVzdHJveWVkIHNpbmNlIHRoZSBsYXN0IGF0b21pYyBjb21taXQuIFRoYXQncyBPSyEK KwkgKi8KIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2RwX2F0b21pY19yZWxlYXNl X3ZjcGlfc2xvdHMpOwpAQCAtMzExMiwxNSArMzE1OSw1MCBAQCBzdGF0aWMgdm9pZCBkcm1fZHBf ZGVzdHJveV9jb25uZWN0b3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiBzdGF0aWMg c3RydWN0IGRybV9wcml2YXRlX3N0YXRlICoKIGRybV9kcF9tc3RfZHVwbGljYXRlX3N0YXRlKHN0 cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaikKIHsKLQlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9n eV9zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKnN0YXRl LCAqb2xkX3N0YXRlID0KKwkJdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRlKG9iai0+c3RhdGUpOwor CXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0gb2xkX3N0YXRlLT5tZ3I7CisJ c3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2Nh dGlvbiAqcG9zLCAqdmNwaTsKIAotCXN0YXRlID0ga21lbWR1cChvYmotPnN0YXRlLCBzaXplb2Yo KnN0YXRlKSwgR0ZQX0tFUk5FTCk7CisJc3RhdGUgPSBremFsbG9jKHNpemVvZigqc3RhdGUpLCBH RlBfS0VSTkVMKTsKIAlpZiAoIXN0YXRlKQogCQlyZXR1cm4gTlVMTDsKIAogCV9fZHJtX2F0b21p Y19oZWxwZXJfcHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJnN0YXRlLT5iYXNlKTsK IAorCXN0YXRlLT5tZ3IgPSBtZ3I7CisJSU5JVF9MSVNUX0hFQUQoJnN0YXRlLT52Y3Bpcyk7CisK KwkvKiBDb3B5IG92ZXIgdGhlIFZDUEkgYWxsb2NhdGlvbnMgZm9yIHBvcnRzIHRoYXQgc3RpbGwg ZXhpc3QgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJm9sZF9zdGF0ZS0+dmNwaXMsIG5l eHQpIHsKKwkJcG9ydCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1nciwgcG9zLT5w b3J0KTsKKwkJaWYgKCFwb3J0KSB7CisJCQlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBd IGlzIGdvbmUsIHZjcGkgJWQgLT4gMFxuIiwKKwkJCQkJIHBvcy0+cG9ydCwgcG9zLT52Y3BpKTsK KwkJCWNvbnRpbnVlOworCQl9CisKKwkJdmNwaSA9IGt6YWxsb2Moc2l6ZW9mKCp2Y3BpKSwgR0ZQ X0tFUk5FTCk7CisJCWlmICghdmNwaSkgeworCQkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCQkJ Z290byBmYWlsX2FsbG9jOworCQl9CisKKwkJdmNwaS0+cG9ydCA9IHBvcnQ7CisJCXZjcGktPnZj cGkgPSBwb3MtPnZjcGk7CisJCWxpc3RfYWRkKCZ2Y3BpLT5uZXh0LCAmc3RhdGUtPnZjcGlzKTsK KwkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCX0KKwogCXJldHVybiAmc3RhdGUtPmJhc2U7CisK K2ZhaWxfYWxsb2M6CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgdmNwaSwgJnN0YXRl LT52Y3BpcywgbmV4dCkKKwkJa2ZyZWUocG9zKTsKKwlrZnJlZShzdGF0ZSk7CisKKwlyZXR1cm4g TlVMTDsKIH0KIAogc3RhdGljIHZvaWQgZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlKHN0cnVjdCBk cm1fcHJpdmF0ZV9vYmogKm9iaiwKQEAgLTMxMjgsMTMgKzMyMTAsNDUgQEAgc3RhdGljIHZvaWQg ZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaiwKIHsK IAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqbXN0X3N0YXRlID0KIAkJdG9fZHBf bXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlv biAqcG9zLCAqdG1wOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgdG1wLCAmbXN0 X3N0YXRlLT52Y3BpcywgbmV4dCkKKwkJa2ZyZWUocG9zKTsKIAogCWtmcmVlKG1zdF9zdGF0ZSk7 CiB9CiAKK3N0YXRpYyBpbnQgZHJtX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wcml2 YXRlX29iaiAqb2JqLAorCQkJCSAgIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqc3RhdGUpCit7 CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1zdF9zdGF0ZSA9CisJCXRvX2Rw X21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSk7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf bWdyICptZ3IgPSBtc3Rfc3RhdGUtPm1ncjsKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlv biAqcG9zOworCWludCBhdmFpbF9zbG90cyA9IDYzOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShw b3MsICZtc3Rfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCURSTV9ERUJVR19BVE9NSUMoIltNU1Qg UE9SVDolcF0gcmVxdWlyZXMgJWQgdmNwaSBzbG90c1xuIiwKKwkJCQkgcG9zLT5wb3J0LCBwb3Mt PnZjcGkpOworCisJCWF2YWlsX3Nsb3RzIC09IHBvcy0+dmNwaTsKKwkJaWYgKGF2YWlsX3Nsb3Rz IDwgMCkgeworCQkJRFJNX0RFQlVHX0FUT01JQygiW01TVCBQT1JUOiVwXSBub3QgZW5vdWdoIHZj cGkgc2xvdHMgaW4gc3RhdGUgJXAgKGF2YWlsPSVkKVxuIiwKKwkJCQkJIHBvcy0+cG9ydCwgc3Rh dGUsCisJCQkJCSBhdmFpbF9zbG90cyArIHBvcy0+dmNwaSk7CisJCQlyZXR1cm4gLUVOT1NQQzsK KwkJfQorCX0KKwlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIE1HUjolcF0gc3RhdGUgJXAgdmNwaSBh dmFpbD0lZCB1c2VkPSVkXG4iLAorCQkJIG1nciwgc3RhdGUsIGF2YWlsX3Nsb3RzLCA2MyAtIGF2 YWlsX3Nsb3RzKTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9w cml2YXRlX3N0YXRlX2Z1bmNzIG1zdF9zdGF0ZV9mdW5jcyA9IHsKIAkuYXRvbWljX2R1cGxpY2F0 ZV9zdGF0ZSA9IGRybV9kcF9tc3RfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9taWNfZGVzdHJveV9z dGF0ZSA9IGRybV9kcF9tc3RfZGVzdHJveV9zdGF0ZSwKKwkuYXRvbWljX2NoZWNrID0gZHJtX2Rw X21zdF9hdG9taWNfY2hlY2ssCiB9OwogCiAvKioKQEAgLTMyMTMsOSArMzMyNyw3IEBAIGludCBk cm1fZHBfbXN0X3RvcG9sb2d5X21ncl9pbml0KHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21n ciAqbWdyLAogCQlyZXR1cm4gLUVOT01FTTsKIAogCW1zdF9zdGF0ZS0+bWdyID0gbWdyOwotCi0J LyogbWF4LiB0aW1lIHNsb3RzIC0gb25lIHNsb3QgZm9yIE1UUCBoZWFkZXIgKi8KLQltc3Rfc3Rh dGUtPmF2YWlsX3Nsb3RzID0gNjM7CisJSU5JVF9MSVNUX0hFQUQoJm1zdF9zdGF0ZS0+dmNwaXMp OwogCiAJZHJtX2F0b21pY19wcml2YXRlX29ial9pbml0KCZtZ3ItPmJhc2UsCiAJCQkJICAgICZt c3Rfc3RhdGUtPmJhc2UsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCmluZGV4IDhiNzFk NjRlYmQ5ZC4uYWFmOTA0NzM4Yjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcF9tc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwpA QCAtMTE0LDI4ICsxMTQsMzEgQEAgc3RhdGljIGludCBpbnRlbF9kcF9tc3RfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKm9sZF9jb25uX3N0YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqb2xkX2NydGM7CiAJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwotCWludCBzbG90cywgcmV0ID0gMDsKKwlz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPQorCQl0b19pbnRlbF9jb25u ZWN0b3IoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciA9 CisJCSZpbnRlbF9jb25uZWN0b3ItPm1zdF9wb3J0LT5tc3RfbWdyOworCXN0cnVjdCBkcm1fZHBf bXN0X3BvcnQgKnBvcnQgPSBpbnRlbF9jb25uZWN0b3ItPnBvcnQ7CisJaW50IHJldCA9IDA7CiAK IAlvbGRfY29ubl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X29sZF9jb25uZWN0b3Jfc3RhdGUoc3Rh dGUsIGNvbm5lY3Rvcik7CiAJb2xkX2NydGMgPSBvbGRfY29ubl9zdGF0ZS0+Y3J0YzsKIAlpZiAo IW9sZF9jcnRjKQogCQlyZXR1cm4gcmV0OwogCi0JY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0 X25ld19jcnRjX3N0YXRlKHN0YXRlLCBvbGRfY3J0Yyk7Ci0Jc2xvdHMgPSB0b19pbnRlbF9jcnRj X3N0YXRlKGNydGNfc3RhdGUpLT5kcF9tX24udHU7Ci0JaWYgKGRybV9hdG9taWNfY3J0Y19uZWVk c19tb2Rlc2V0KGNydGNfc3RhdGUpICYmIHNsb3RzID4gMCkgewotCQlzdHJ1Y3QgZHJtX2RwX21z dF90b3BvbG9neV9tZ3IgKm1ncjsKLQkJc3RydWN0IGRybV9lbmNvZGVyICpvbGRfZW5jb2RlcjsK KwkvKiBGcmVlIFZDUEksIHNpbmNlIGNvbXB1dGVfY29uZmlnKCkgd29uJ3QgYmUgcnVuICovCisJ aWYgKCFuZXdfY29ubl9zdGF0ZS0+Y3J0YykgeworCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19n ZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIG9sZF9jcnRjKTsKIAotCQlvbGRfZW5jb2RlciA9IG9s ZF9jb25uX3N0YXRlLT5iZXN0X2VuY29kZXI7Ci0JCW1nciA9ICZlbmNfdG9fbXN0KG9sZF9lbmNv ZGVyKS0+cHJpbWFyeS0+ZHAubXN0X21ncjsKLQotCQlyZXQgPSBkcm1fZHBfYXRvbWljX3JlbGVh c2VfdmNwaV9zbG90cyhzdGF0ZSwgbWdyLCBzbG90cyk7Ci0JCWlmIChyZXQpCi0JCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgcmVsZWFzaW5nICVkIHZjcGkgc2xvdHM6JWRcbiIsIHNsb3RzLCByZXQp OwotCQllbHNlCi0JCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kcF9tX24udHUg PSAwOworCQlyZXQgPSBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdGF0ZSwgbWdy LCBwb3J0KTsKKwkJaWYgKHJldCkgeworCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHJlbGVhc2lu ZyB2Y3BpIHNsb3RzOiAlZFxuIiwKKwkJCQkgICAgICByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJ fQorCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kcF9tX24udHUgPSAwOwogCX0K KwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9tc3Rf aGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCmluZGV4IDU5ZjAwNWI0 MTljZi4uNGMwODA1ZTU2MzM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hl bHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKQEAgLTQwNiw5ICs0 MDYsMTUgQEAgc3RydWN0IGRybV9kcF9wYXlsb2FkIHsKIAogI2RlZmluZSB0b19kcF9tc3RfdG9w b2xvZ3lfc3RhdGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X3N0YXRlLCBiYXNlKQogCitzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiB7CisJc3RydWN0 IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKKwlpbnQgdmNwaTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIG5l eHQ7Cit9OworCiBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSB7CiAJc3RydWN0IGRy bV9wcml2YXRlX3N0YXRlIGJhc2U7Ci0JaW50IGF2YWlsX3Nsb3RzOworCXN0cnVjdCBsaXN0X2hl YWQgdmNwaXM7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3I7CiB9OwogCkBA IC02MjQsNyArNjMwLDcgQEAgaW50IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg KnBvcnQsIGludCBwYm4pOwogaW50IGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkgICAgIHN0cnVjdCBkcm1fZHBfbXN0 X3RvcG9sb2d5X21nciAqbWdyLAotCQkJCSAgICAgaW50IHNsb3RzKTsKKwkJCQkgICAgIHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwogaW50IGRybV9kcF9zZW5kX3Bvd2VyX3VwZG93bl9w aHkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJCQkJIHN0cnVjdCBkcm1f ZHBfbXN0X3BvcnQgKnBvcnQsIGJvb2wgcG93ZXJfdXApOwogCi0tIAoyLjE3LjIKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=