From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v3 14/16] drm/dp_mst: Start tracking per-port VCPI allocations Date: Wed, 2 Jan 2019 19:06:33 -0500 Message-ID: <20190103000635.13628-15-lyude@redhat.com> References: <20190103000635.13628-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190103000635.13628-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: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Jerry Zuo , David Airlie , Harry Wentland , Juston Li 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 CkNoYW5nZXMgc2luY2Ugdjg6CiAqIEZpeCBjb21waWxlIGVycm9ycywgd2hvb3BzIQoKQ2hhbmdl cyBzaW5jZSB2NzoKIC0gRG9uJ3QgY2hlY2sgZm9yIG1peGVkIHN0YWxlL3ZhbGlkIFZDUEkgYWxs b2NhdGlvbnMsIGp1c3QgcmVseSBvbgogY29ubmVjdG9yIHJlZ2lzdHJhdGlvbiB0byBzdG9wIHN1 Y2ggZXJyb25lb3VzIG1vZGVzZXRzCgpDaGFuZ2VzIHNpbmNlIHY2OgogLSBLZWVwIGEga3JlZiB0 byBhbGwgb2YgdGhlIHBvcnRzIHdlIGhhdmUgYWxsb2NhdGlvbnMgb24uIFRoaXMgcmVxdWlyZWQK ICAgYSBnb29kIGJpdCBvZiBjaGFuZ2luZyB0byB3aGVuIHdlIGNhbGwgZHJtX2RwX2ZpbmRfdmNw aV9zbG90cygpLAogICBtYWlubHkgdGhhdCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIG9ubHkg cmVkbyBWQ1BJIGFsbG9jYXRpb25zIG9uCiAgIGFjdHVhbCBtb2RlIG9yIENSVEMgY2hhbmdlcywg bm90IGNydGNfc3RhdGUtPmFjdGl2ZSBjaGFuZ2VzLgogICBBZGRpdGlvbmFsbHksIHdlIG5vIGxv bmdlciB0YWtlIHRoZSByZWdpc3RyYXRpb24gb2YgdGhlIERSTSBjb25uZWN0b3IKICAgZm9yIGVh Y2ggcG9ydCBpbnRvIGFjY291bnQgYmVjYXVzZSBzbyBsb25nIGFzIHdlIGhhdmUgYSBrcmVmIHRv IHRoZQogICBwb3J0IGluIHRoZSBuZXcgb3IgcHJldmlvdXMgYXRvbWljIHN0YXRlLCB0aGUgY29u bmVjdG9yIHdpbGwgc3RheQogICByZWdpc3RlcmVkLgogLSBVc2UgdGhlIHNtYWxsIGNoYW5nZXMg dG8gZHJtX2RwX3B1dF9wb3J0KCkgdG8gYWRkIGV2ZW4gbW9yZSBlcnJvcgogICBjaGVja2luZyB0 byBtYWtlIG1pc3VzYWdlIG9mIHRoZSBoZWxwZXJzIG1vcmUgb2J2aW91cy4gSSBhZGRlZCB0aGlz CiAgIGFmdGVyIGhhdmluZyB0byBjaGFzZSBkb3duIHZhcmlvdXMgdXNlLWFmdGVyLWZyZWUgY29u ZGl0aW9ucyB0aGF0CiAgIHN0YXJ0ZWQgcG9wcGluZyB1cCBmcm9tIHRoZSBuZXcgaGVscGVycyBz byBubyBvbmUgZWxzZSBoYXMgdG8KICAgdHJvdWJsZXNob290IHRoYXQuCiAtIE1vdmUgc29tZSBh Y2NpZGVudGFsIERSTV9ERUJVR19LTVMoKSBjYWxscyB0byBEUk1fREVCVUdfQVRPTUlDKCkKIC0g VXBkYXRlIGRvY3VtZW50YXRpb24gYWdhaW4sIG5vdGUgdGhhdCBmaW5kL3JlbGVhc2UoKSBzaG91 bGQgYm90aCBub3QgYmUKICAgY2FsbGVkIG9uIHRoZSBzYW1lIHBvcnQgaW4gYSBzaW5nbGUgYXRv bWljIGNoZWNrIHBoYXNlIChidXQgbXVsdGlwbGUKICAgY2FsbHMgdG8gb25lIG9yIHRoZSBvdGhl ciBpcyBPSykKCkNoYW5nZXMgc2luY2UgdjQ6CiAtIERvbid0IHNraXAgdGhlIGF0b21pYyBjaGVj a3MgZm9yIFZDUEkgYWxsb2NhdGlvbnMgaWYgbm8gbmV3IFZDUEkKICAgYWxsb2NhdGlvbnMgaGFw cGVuIGluIGEgc3RhdGUuIFRoaXMgbWFrZXMgdGhlIG5leHQgY2hhbmdlIEknbSBhYm91dAogICB0 byBsaXN0IGhlcmUgYSBsb3QgZWFzaWVyIHRvIGltcGxlbWVudC4KIC0gRG9uJ3QgaWdub3JlIFZD UEkgYWxsb2NhdGlvbnMgb24gZGVzdHJveWVkIHBvcnRzLCBpbnN0ZWFkIGVuc3VyZSB0aGF0CiAg IHdoZW4gcG9ydHMgYXJlIGRlc3Ryb3llZCBhbmQgc3RpbGwgaGF2ZSBWQ1BJIGFsbG9jYXRpb25z IGluIHRoZQogICB0b3BvbG9neSBzdGF0ZSwgdGhlIG9ubHkgc3RhdGUgY2hhbmdlcyBhbGxvd2Vk IGFyZSByZWxlYXNpbmcgc2FpZAogICBwb3J0cycgVkNQSS4gVGhpcyBwcmV2ZW50cyBhIHN0YXRl IHdpdGggYSBtaXggb2YgVkNQSSBhbGxvY2F0aW9ucwogICBmcm9tIGRlc3Ryb3llZCBwb3J0cywg YW5kIGFsbG9jYXRpb25zIGZyb20gdmFsaWQgcG9ydHMuCgpDaGFuZ2VzIHNpbmNlIHYzOgogLSBE b24ndCByZWxlYXNlIFZDUEkgYWxsb2NhdGlvbnMgaW4gdGhlIHRvcG9sb2d5IHN0YXRlIGltbWVk aWF0ZWx5IGluCiAgIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCksIGluc3RlYWQg bWFyayB0aGVtIGFzIDAgYW5kIHNraXAKICAgb3ZlciB0aGVtIGluIGRybV9kcF9tc3RfZHVwbGlj YXRlX3N0YXRlKCkuIFRoaXMgbWFrZXMgaXQgc28KICAgZHJtX2RwX2F0b21pY19yZWxlYXNlX3Zj cGlfc2xvdHMoKSBpcyBzdGlsbCBpZGVtcG90ZW50IHdoaWxlIGFsc28KICAgdGhyb3dpbmcgd2Fy bmluZ3MgaWYgdGhlIGRyaXZlciBtZXNzZXMgdXAgaXQncyBib29rIGtlZXBpbmcgYW5kIHRyaWVz CiAgIHRvIHJlbGVhc2UgVkNQSSBzbG90cyBvbiBhIHBvcnQgdGhhdCBkb2Vzbid0IGhhdmUgYW55 IHByZS1leGlzdGluZwogICBWQ1BJIGFsbG9jYXRpb24gLSBkYW52ZXQKIC0gQ2hhbmdlIG1zdF9z dGF0ZS9zdGF0ZSBpbiBzb21lIGRlYnVnZ2luZyBtZXNzYWdlcyB0byAibXN0IHN0YXRlIgoKQ2hh bmdlcyBzaW5jZSB2MjoKIC0gVXNlIGttZW1kdXAoKSBmb3IgZHVwbGljYXRpbmcgTVNUIHN0YXRl IC0gZGFudmV0CiAtIE1vdmUgcG9ydCB2YWxpZGF0aW9uIG91dCBvZiBkdXBsaWNhdGUgc3RhdGUg Y2FsbGJhY2sgLSBkYW52ZXQKIC0gSGFuZGxlIGxvb3BpbmcgdGhyb3VnaCBNU1QgdG9wb2xvZ3kg c3RhdGVzIGluCiAgIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKCkgc28gdGhlIGRyaXZlciBkb2Vz bid0IGhhdmUgdG8gZG8gaXQKIC0gRml4IGRvY3VtZW50YXRpb24gaW4gZHJtX2RwX2F0b21pY19m aW5kX3ZjcGlfc2xvdHMoKQogLSBNb3ZlIHRoZSBhdG9taWMgY2hlY2sgZm9yIGVhY2ggaW5kaXZp ZHVhbCB0b3BvbG9neSBzdGF0ZSBpbnRvIGl0J3MKICAgb3duIGZ1bmN0aW9uLCByZWR1Y2VzIGlu ZGVudGluZwogLSBEb24ndCBjb25zaWRlciAic3RhbGUiIE1TVCBwb3J0cyB3aGVuIGNhbGN1bGF0 aW5nIHRoZSBiYW5kd2lkdGgKICAgcmVxdWlyZW1lbnRzLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNl IG9yaWdpbmFsbHkgd2UgcmVsaWVkIG9uIHRoZQogICBzdGF0ZSBkdXBsaWNhdGlvbiBmdW5jdGlv bnMgdG8gcHJ1bmUgYW55IHN0YWxlIHBvcnRzIGZyb20gdGhlIG5ldwogICBzdGF0ZSwgd2hpY2gg d291bGQgcHJldmVudCB1cyBmcm9tIGluY29ycmVjdGx5IGNvbnNpZGVyaW5nIHRoZWlyCiAgIGJh bmR3aWR0aCByZXF1aXJlbWVudHMgYWxvbmdzaWRlIGxlZ2l0aW1hdGUgbmV3IHBheWxvYWRzLgog LSBBZGQgZnVuY3Rpb24gcmVmZXJlbmNlcyBpbiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9z bG90cygpIC0gZGFudmV0CiAtIEFubm90YXRlIGF0b21pYyBWQ1BJIGFuZCBhdG9taWMgY2hlY2sg ZnVuY3Rpb25zIHdpdGggX19tdXN0X2NoZWNrCiAgIC0gZGFudmV0CgpDaGFuZ2VzIHNpbmNlIHYx OgogLSBEb24ndCB1c2UgdGhlIG5vdy1yZW1vdmVkIC0+YXRvbWljX2NoZWNrKCkgZm9yIHByaXZh dGUgb2JqZWN0cyBob29rLAogICBqdXN0IGdpdmUgZHJpdmVycyBhIGZ1bmN0aW9uIHRvIGNhbGwg dGhlbXNlbHZlcwoKU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4K Q2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBEYXZpZCBBaXJs aWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KQ2M6IEplcnJ5IFp1byA8SmVycnkuWnVvQGFtZC5jb20+ CkNjOiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4KQ2M6IEp1c3RvbiBM aSA8anVzdG9uLmxpQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90 b3BvbG9neS5jIHwgMjQ3ICsrKysrKysrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwX21zdC5jICAgfCAgNjQgKysrKy0tLQogaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxw ZXIuaCAgICAgICB8ICAyMyArKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjczIGluc2VydGlvbnMoKyks IDY1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0 X3RvcG9sb2d5LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCmluZGV4 IGY3OTk2Mjc1OWJjNC4uYzMzYzRhM2FlYzM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2RwX21zdF90b3BvbG9neS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3Rv cG9sb2d5LmMKQEAgLTMwMTgsMjEgKzMwMTgsNDIgQEAgc3RhdGljIGludCBkcm1fZHBfaW5pdF92 Y3BpKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogfQogCiAvKioKLSAqIGRy bV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkgLSBGaW5kIGFuZCBhZGQgdmNwaSBzbG90cyB0 byB0aGUgc3RhdGUKKyAqIGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkgLSBGaW5kIGFu ZCBhZGQgVkNQSSBzbG90cyB0byB0aGUgc3RhdGUKICAqIEBzdGF0ZTogZ2xvYmFsIGF0b21pYyBz dGF0ZQogICogQG1ncjogTVNUIHRvcG9sb2d5IG1hbmFnZXIgZm9yIHRoZSBwb3J0CiAgKiBAcG9y dDogcG9ydCB0byBmaW5kIHZjcGkgc2xvdHMgZm9yCiAgKiBAcGJuOiBiYW5kd2lkdGggcmVxdWly ZWQgZm9yIHRoZSBtb2RlIGluIFBCTgogICoKLSAqIFJFVFVSTlM6Ci0gKiBUb3RhbCBzbG90cyBp biB0aGUgYXRvbWljIHN0YXRlIGFzc2lnbmVkIGZvciB0aGlzIHBvcnQgb3IgZXJyb3IKKyAqIEFs bG9jYXRlcyBWQ1BJIHNsb3RzIHRvIEBwb3J0LCByZXBsYWNpbmcgYW55IHByZXZpb3VzIFZDUEkg YWxsb2NhdGlvbnMgaXQKKyAqIG1heSBoYXZlIGhhZC4gQW55IGF0b21pYyBkcml2ZXJzIHdoaWNo IHN1cHBvcnQgTVNUIG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBpbiB0aGVpciAmZHJtX2Vu Y29kZXJfaGVscGVyX2Z1bmNzLmF0b21pY19jaGVjaygpIGNhbGxiYWNrIHRvIGNoYW5nZSB0aGUK KyAqIGN1cnJlbnQgVkNQSSBhbGxvY2F0aW9uIGZvciB0aGUgbmV3IHN0YXRlLCBidXQgb25seSB3 aGVuCisgKiAmZHJtX2NydGNfc3RhdGUubW9kZV9jaGFuZ2VkIG9yICZkcm1fY3J0Y19zdGF0ZS5j b25uZWN0b3JzX2NoYW5nZWQgaXMgc2V0CisgKiB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRo IHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdGhhdCBzdGlsbCB1c2UgdGhlCisgKiBsZWdhY3kgbW9k ZXNldHRpbmcgVUFQSS4KKyAqCisgKiBBbGxvY2F0aW9ucyBzZXQgYnkgdGhpcyBmdW5jdGlvbiBh cmUgbm90IGNoZWNrZWQgYWdhaW5zdCB0aGUgYmFuZHdpZHRoCisgKiByZXN0cmFpbnRzIG9mIEBt Z3IgdW50aWwgdGhlIGRyaXZlciBjYWxscyBkcm1fZHBfbXN0X2F0b21pY19jaGVjaygpLgorICoK KyAqIEFkZGl0aW9uYWxseSwgaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG11bHRpcGxl IHRpbWVzIG9uIHRoZSBzYW1lCisgKiBAcG9ydCBhcyBuZWVkZWQuIEl0IGlzIG5vdCBPSyBob3dl dmVyLCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kCisgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2Vf dmNwaV9zbG90cygpIGluIHRoZSBzYW1lIGF0b21pYyBjaGVjayBwaGFzZS4KKyAqCisgKiBTZWUg YWxzbzoKKyAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkKKyAqIGRybV9kcF9t c3RfYXRvbWljX2NoZWNrKCkKKyAqCisgKiBSZXR1cm5zOgorICogVG90YWwgc2xvdHMgaW4gdGhl IGF0b21pYyBzdGF0ZSBhc3NpZ25lZCBmb3IgdGhpcyBwb3J0LCBvciBhIG5lZ2F0aXZlIGVycm9y CisgKiBjb2RlIGlmIHRoZSBwb3J0IG5vIGxvbmdlciBleGlzdHMKICAqLwogaW50IGRybV9kcF9h dG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJ CQkgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogCQkJCSAgc3RydWN0IGRy bV9kcF9tc3RfcG9ydCAqcG9ydCwgaW50IHBibikKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3Bv bG9neV9zdGF0ZSAqdG9wb2xvZ3lfc3RhdGU7Ci0JaW50IHJlcV9zbG90czsKKwlzdHJ1Y3QgZHJt X2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9zLCAqdmNwaSA9IE5VTEw7CisJaW50IHByZXZfc2xvdHMs IHJlcV9zbG90cywgcmV0OwogCiAJdG9wb2xvZ3lfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9tc3Rf dG9wb2xvZ3lfc3RhdGUoc3RhdGUsIG1ncik7CiAJaWYgKElTX0VSUih0b3BvbG9neV9zdGF0ZSkp CkBAIC0zMDQxLDIwICszMDYyLDU0IEBAIGludCBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90 cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJcG9ydCA9IGRybV9kcF9tc3RfdG9w b2xvZ3lfZ2V0X3BvcnRfdmFsaWRhdGVkKG1nciwgcG9ydCk7CiAJaWYgKHBvcnQgPT0gTlVMTCkK IAkJcmV0dXJuIC1FSU5WQUw7Ci0JcmVxX3Nsb3RzID0gRElWX1JPVU5EX1VQKHBibiwgbWdyLT5w Ym5fZGl2KTsKLQlEUk1fREVCVUdfS01TKCJ2Y3BpIHNsb3RzIHJlcT0lZCwgYXZhaWw9JWRcbiIs Ci0JCQlyZXFfc2xvdHMsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyk7CiAKLQlpZiAocmVx X3Nsb3RzID4gdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKSB7Ci0JCWRybV9kcF9tc3RfdG9w b2xvZ3lfcHV0X3BvcnQocG9ydCk7Ci0JCXJldHVybiAtRU5PU1BDOworCS8qIEZpbmQgdGhlIGN1 cnJlbnQgYWxsb2NhdGlvbiBmb3IgdGhpcyBwb3J0LCBpZiBhbnkgKi8KKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KHBvcywgJnRvcG9sb2d5X3N0YXRlLT52Y3BpcywgbmV4dCkgeworCQlpZiAocG9zLT5w b3J0ID09IHBvcnQpIHsKKwkJCXZjcGkgPSBwb3M7CisJCQlwcmV2X3Nsb3RzID0gdmNwaS0+dmNw aTsKKworCQkJLyoKKwkJCSAqIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZSBk cml2ZXIgdHJpZXMKKwkJCSAqIHJlbGVhc2luZyBhbmQgYWxsb2NhdGluZyB0aGUgc2FtZSBWQ1BJ IGFsbG9jYXRpb24sCisJCQkgKiB3aGljaCBpcyBhbiBlcnJvcgorCQkJICovCisJCQlpZiAoV0FS Tl9PTighcHJldl9zbG90cykpIHsKKwkJCQlEUk1fRVJST1IoImNhbm5vdCBhbGxvY2F0ZSBhbmQg cmVsZWFzZSBWQ1BJIG9uIFtNU1QgUE9SVDolcF0gaW4gdGhlIHNhbWUgc3RhdGVcbiIsCisJCQkJ CSAgcG9ydCk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisKKwkJCWJyZWFrOworCQl9CiAJ fQorCWlmICghdmNwaSkKKwkJcHJldl9zbG90cyA9IDA7CisKKwlyZXFfc2xvdHMgPSBESVZfUk9V TkRfVVAocGJuLCBtZ3ItPnBibl9kaXYpOworCisJRFJNX0RFQlVHX0FUT01JQygiW0NPTk5FQ1RP UjolZDolc10gW01TVCBQT1JUOiVwXSBWQ1BJICVkIC0+ICVkXG4iLAorCQkJIHBvcnQtPmNvbm5l Y3Rvci0+YmFzZS5pZCwgcG9ydC0+Y29ubmVjdG9yLT5uYW1lLAorCQkJIHBvcnQsIHByZXZfc2xv dHMsIHJlcV9zbG90cyk7CisKKwkvKiBBZGQgdGhlIG5ldyBhbGxvY2F0aW9uIHRvIHRoZSBzdGF0 ZSAqLworCWlmICghdmNwaSkgeworCQl2Y3BpID0ga3phbGxvYyhzaXplb2YoKnZjcGkpLCBHRlBf S0VSTkVMKTsKKwkJaWYgKCF2Y3BpKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBvdXQ7 CisJCX0KIAotCXRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyAtPSByZXFfc2xvdHM7Ci0JRFJN X0RFQlVHX0tNUygidmNwaSBzbG90cyBhdmFpbD0lZCIsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9z bG90cyk7CisJCWRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKHBvcnQpOworCQl2Y3BpLT5wb3J0 ID0gcG9ydDsKKwkJbGlzdF9hZGQoJnZjcGktPm5leHQsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMp OworCX0KKwl2Y3BpLT52Y3BpID0gcmVxX3Nsb3RzOwogCisJcmV0ID0gcmVxX3Nsb3RzOworb3V0 OgogCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7Ci0JcmV0dXJuIHJlcV9zbG90 czsKKwlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChkcm1fZHBfYXRvbWljX2ZpbmRfdmNw aV9zbG90cyk7CiAKQEAgLTMwNjIsMzEgKzMxMTcsNTcgQEAgRVhQT1JUX1NZTUJPTChkcm1fZHBf YXRvbWljX2ZpbmRfdmNwaV9zbG90cyk7CiAgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9z bG90cygpIC0gUmVsZWFzZSBhbGxvY2F0ZWQgdmNwaSBzbG90cwogICogQHN0YXRlOiBnbG9iYWwg YXRvbWljIHN0YXRlCiAgKiBAbWdyOiBNU1QgdG9wb2xvZ3kgbWFuYWdlciBmb3IgdGhlIHBvcnQK LSAqIEBzbG90czogbnVtYmVyIG9mIHZjcGkgc2xvdHMgdG8gcmVsZWFzZQorICogQHBvcnQ6IFRo ZSBwb3J0IHRvIHJlbGVhc2UgdGhlIFZDUEkgc2xvdHMgZnJvbQogICoKLSAqIFJFVFVSTlM6Ci0g KiAwIGlmIEBzbG90cyB3ZXJlIGFkZGVkIGJhY2sgdG8gJmRybV9kcF9tc3RfdG9wb2xvZ3lfc3Rh dGUtPmF2YWlsX3Nsb3RzIG9yCi0gKiBuZWdhdGl2ZSBlcnJvciBjb2RlCisgKiBSZWxlYXNlcyBh bnkgVkNQSSBzbG90cyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgdG8gYSBwb3J0IGluIHRoZSBh dG9taWMKKyAqIHN0YXRlLiBBbnkgYXRvbWljIGRyaXZlcnMgd2hpY2ggc3VwcG9ydCBNU1QgbXVz dCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4KKyAqIHRoZWlyICZkcm1fY29ubmVjdG9yX2hlbHBlcl9m dW5jcy5hdG9taWNfY2hlY2soKSBjYWxsYmFjayB3aGVuIHRoZQorICogY29ubmVjdG9yIHdpbGwg bm8gbG9uZ2VyIGhhdmUgVkNQSSBhbGxvY2F0ZWQgKGUuZy4gYmVjYXVzZSBpdCdzIENSVEMgd2Fz CisgKiByZW1vdmVkKSB3aGVuIGl0IGhhZCBWQ1BJIGFsbG9jYXRlZCBpbiB0aGUgcHJldmlvdXMg YXRvbWljIHN0YXRlLgorICoKKyAqIEl0IGlzIE9LIHRvIGNhbGwgdGhpcyBldmVuIGlmIEBwb3J0 IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtLgorICogQWRkaXRpb25hbGx5LCBpdCBp cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUKKyAq IEBwb3J0IGFzIG5lZWRlZC4gSXQgaXMgbm90IE9LIGhvd2V2ZXIsIHRvIGNhbGwgdGhpcyBmdW5j dGlvbiBhbmQKKyAqIGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkgb24gdGhlIHNhbWUg QHBvcnQgaW4gYSBzaW5nbGUgYXRvbWljIGNoZWNrCisgKiBwaGFzZS4KKyAqCisgKiBTZWUgYWxz bzoKKyAqIGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkKKyAqIGRybV9kcF9tc3RfYXRv bWljX2NoZWNrKCkKKyAqCisgKiBSZXR1cm5zOgorICogMCBpZiBhbGwgc2xvdHMgZm9yIHRoaXMg cG9ydCB3ZXJlIGFkZGVkIGJhY2sgdG8KKyAqICZkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlLmF2 YWlsX3Nsb3RzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKICAqLwogaW50IGRybV9kcF9hdG9taWNf cmVsZWFzZV92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkg ICAgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAotCQkJCSAgICAgaW50IHNs b3RzKQorCQkJCSAgICAgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKIHsKIAlzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqdG9wb2xvZ3lfc3RhdGU7CisJc3RydWN0IGRybV9k cF92Y3BpX2FsbG9jYXRpb24gKnBvczsKKwlib29sIGZvdW5kID0gZmFsc2U7CiAKIAl0b3BvbG9n eV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSwgbWdyKTsK IAlpZiAoSVNfRVJSKHRvcG9sb2d5X3N0YXRlKSkKIAkJcmV0dXJuIFBUUl9FUlIodG9wb2xvZ3lf c3RhdGUpOwogCi0JLyogV2UgY2Fubm90IHJlbHkgb24gcG9ydC0+dmNwaS5udW1fc2xvdHMgdG8g dXBkYXRlCi0JICogdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzIGFzIHRoZSBwb3J0IG1heSBu b3QgZXhpc3QgaWYgdGhlIHBhcmVudAotCSAqIGJyYW5jaCBkZXZpY2Ugd2FzIHVucGx1Z2dlZC4g VGhpcyBzaG91bGQgYmUgZml4ZWQgYnkgdHJhY2tpbmcKLQkgKiBwZXItcG9ydCBzbG90IGFsbG9j YXRpb24gaW4gZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSBpbnN0ZWFkIG9mCi0JICogZGVwZW5k aW5nIG9uIHRoZSBjYWxsZXIgdG8gdGVsbCB1cyBob3cgbWFueSBzbG90cyB0byByZWxlYXNlLgot CSAqLwotCXRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyArPSBzbG90czsKLQlEUk1fREVCVUdf S01TKCJ2Y3BpIHNsb3RzIHJlbGVhc2VkPSVkLCBhdmFpbD0lZFxuIiwKLQkJCXNsb3RzLCB0b3Bv bG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpOworCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmdG9w b2xvZ3lfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCWlmIChwb3MtPnBvcnQgPT0gcG9ydCkgewor CQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKFdBUk5fT04oIWZvdW5k KSkgeworCQlEUk1fRVJST1IoIm5vIFZDUEkgZm9yIFtNU1QgUE9SVDolcF0gZm91bmQgaW4gbXN0 IHN0YXRlICVwXG4iLAorCQkJICBwb3J0LCAmdG9wb2xvZ3lfc3RhdGUtPmJhc2UpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIFZDUEkg JWQgLT4gMFxuIiwgcG9ydCwgcG9zLT52Y3BpKTsKKwlpZiAocG9zLT52Y3BpKSB7CisJCWRybV9k cF9tc3RfcHV0X3BvcnRfbWFsbG9jKHBvcnQpOworCQlwb3MtPnZjcGkgPSAwOworCX0KIAogCXJl dHVybiAwOwogfQpAQCAtMzUwNywxNSArMzU4OCw0MSBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfZGVz dHJveV9jb25uZWN0b3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiBzdGF0aWMgc3Ry dWN0IGRybV9wcml2YXRlX3N0YXRlICoKIGRybV9kcF9tc3RfZHVwbGljYXRlX3N0YXRlKHN0cnVj dCBkcm1fcHJpdmF0ZV9vYmogKm9iaikKIHsKLQlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9z dGF0ZSAqc3RhdGU7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKnN0YXRlLCAq b2xkX3N0YXRlID0KKwkJdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRlKG9iai0+c3RhdGUpOworCXN0 cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpwb3MsICp2Y3BpOwogCi0Jc3RhdGUgPSBrbWVt ZHVwKG9iai0+c3RhdGUsIHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKKwlzdGF0ZSA9IGtt ZW1kdXAob2xkX3N0YXRlLCBzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFzdGF0 ZSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlfX2RybV9hdG9taWNfaGVscGVyX3ByaXZhdGVfb2JqX2R1 cGxpY2F0ZV9zdGF0ZShvYmosICZzdGF0ZS0+YmFzZSk7CiAKKwlJTklUX0xJU1RfSEVBRCgmc3Rh dGUtPnZjcGlzKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmb2xkX3N0YXRlLT52Y3Bp cywgbmV4dCkgeworCQkvKiBQcnVuZSBsZWZ0b3ZlciBmcmVlZCBWQ1BJIGFsbG9jYXRpb25zICov CisJCWlmICghcG9zLT52Y3BpKQorCQkJY29udGludWU7CisKKwkJdmNwaSA9IGttZW1kdXAocG9z LCBzaXplb2YoKnZjcGkpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCF2Y3BpKQorCQkJZ290byBmYWls OworCisJCWRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKHZjcGktPnBvcnQpOworCQlsaXN0X2Fk ZCgmdmNwaS0+bmV4dCwgJnN0YXRlLT52Y3Bpcyk7CisJfQorCiAJcmV0dXJuICZzdGF0ZS0+YmFz ZTsKKworZmFpbDoKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCB2Y3BpLCAmc3RhdGUt PnZjcGlzLCBuZXh0KSB7CisJCWRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKHBvcy0+cG9ydCk7 CisJCWtmcmVlKHBvcyk7CisJfQorCWtmcmVlKHN0YXRlKTsKKworCXJldHVybiBOVUxMOwogfQog CiBzdGF0aWMgdm9pZCBkcm1fZHBfbXN0X2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2YXRl X29iaiAqb2JqLApAQCAtMzUyMywxMCArMzYzMCw4OCBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfbXN0 X2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqLAogewogCXN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICptc3Rfc3RhdGUgPQogCQl0b19kcF9tc3RfdG9wb2xv Z3lfc3RhdGUoc3RhdGUpOworCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpwb3MsICp0 bXA7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCB0bXAsICZtc3Rfc3RhdGUtPnZj cGlzLCBuZXh0KSB7CisJCS8qIFdlIG9ubHkga2VlcCByZWZlcmVuY2VzIHRvIHBvcnRzIHdpdGgg bm9uLXplcm8gVkNQSXMgKi8KKwkJaWYgKHBvcy0+dmNwaSkKKwkJCWRybV9kcF9tc3RfcHV0X3Bv cnRfbWFsbG9jKHBvcy0+cG9ydCk7CisJCWtmcmVlKHBvcyk7CisJfQogCiAJa2ZyZWUobXN0X3N0 YXRlKTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQKK2RybV9kcF9tc3RfYXRvbWljX2NoZWNrX3Rv cG9sb2d5X3N0YXRlKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAorCQkJCSAg ICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqbXN0X3N0YXRlKQoreworCXN0 cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICp2Y3BpOworCWludCBhdmFpbF9zbG90cyA9IDYz OworCisJbGlzdF9mb3JfZWFjaF9lbnRyeSh2Y3BpLCAmbXN0X3N0YXRlLT52Y3BpcywgbmV4dCkg eworCQkvKiBSZWxlYXNpbmcgVkNQSSBpcyBhbHdheXMgT0stZXZlbiBpZiB0aGUgcG9ydCBpcyBn b25lICovCisJCWlmICghdmNwaS0+dmNwaSkgeworCQkJRFJNX0RFQlVHX0FUT01JQygiW01TVCBQ T1JUOiVwXSByZWxlYXNlcyBhbGwgVkNQSSBzbG90c1xuIiwKKwkJCQkJIHZjcGktPnBvcnQpOwor CQkJY29udGludWU7CisJCX0KKworCQlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIHJl cXVpcmVzICVkIHZjcGkgc2xvdHNcbiIsCisJCQkJIHZjcGktPnBvcnQsIHZjcGktPnZjcGkpOwor CisJCWF2YWlsX3Nsb3RzIC09IHZjcGktPnZjcGk7CisJCWlmIChhdmFpbF9zbG90cyA8IDApIHsK KwkJCURSTV9ERUJVR19BVE9NSUMoIltNU1QgUE9SVDolcF0gbm90IGVub3VnaCBWQ1BJIHNsb3Rz IGluIG1zdCBzdGF0ZSAlcCAoYXZhaWw9JWQpXG4iLAorCQkJCQkgdmNwaS0+cG9ydCwgbXN0X3N0 YXRlLAorCQkJCQkgYXZhaWxfc2xvdHMgKyB2Y3BpLT52Y3BpKTsKKwkJCXJldHVybiAtRU5PU1BD OworCQl9CisJfQorCURSTV9ERUJVR19BVE9NSUMoIltNU1QgTUdSOiVwXSBtc3Qgc3RhdGUgJXAg VkNQSSBhdmFpbD0lZCB1c2VkPSVkXG4iLAorCQkJIG1nciwgbXN0X3N0YXRlLCBhdmFpbF9zbG90 cywKKwkJCSA2MyAtIGF2YWlsX3Nsb3RzKTsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIGRy bV9kcF9tc3RfYXRvbWljX2NoZWNrIC0gQ2hlY2sgdGhhdCB0aGUgbmV3IHN0YXRlIG9mIGFuIE1T VCB0b3BvbG9neSBpbiBhbgorICogYXRvbWljIHVwZGF0ZSBpcyB2YWxpZAorICogQHN0YXRlOiBQ b2ludGVyIHRvIHRoZSBuZXcgJnN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlCisgKgor ICogQ2hlY2tzIHRoZSBnaXZlbiB0b3BvbG9neSBzdGF0ZSBmb3IgYW4gYXRvbWljIHVwZGF0ZSB0 byBlbnN1cmUgdGhhdCBpdCdzCisgKiB2YWxpZC4gVGhpcyBpbmNsdWRlcyBjaGVja2luZyB3aGV0 aGVyIHRoZXJlJ3MgZW5vdWdoIGJhbmR3aWR0aCB0byBzdXBwb3J0CisgKiB0aGUgbmV3IFZDUEkg YWxsb2NhdGlvbnMgaW4gdGhlIGF0b21pYyB1cGRhdGUuCisgKgorICogQW55IGF0b21pYyBkcml2 ZXJzIHN1cHBvcnRpbmcgRFAgTVNUIG11c3QgbWFrZSBzdXJlIHRvIGNhbGwgdGhpcyBhZnRlcgor ICogY2hlY2tpbmcgdGhlIHJlc3Qgb2YgdGhlaXIgc3RhdGUgaW4gdGhlaXIKKyAqICZkcm1fbW9k ZV9jb25maWdfZnVuY3MuYXRvbWljX2NoZWNrKCkgY2FsbGJhY2suCisgKgorICogU2VlIGFsc286 CisgKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpCisgKiBkcm1fZHBfYXRvbWljX3Jl bGVhc2VfdmNwaV9zbG90cygpCisgKgorICogUmV0dXJuczoKKyAqCisgKiAwIGlmIHRoZSBuZXcg c3RhdGUgaXMgdmFsaWQsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgorICovCitpbnQg ZHJtX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQor eworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyOworCXN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X3N0YXRlICptc3Rfc3RhdGU7CisJaW50IGksIHJldCA9IDA7CisKKwlmb3Jf ZWFjaF9uZXdfbXN0X21ncl9pbl9zdGF0ZShzdGF0ZSwgbWdyLCBtc3Rfc3RhdGUsIGkpIHsKKwkJ cmV0ID0gZHJtX2RwX21zdF9hdG9taWNfY2hlY2tfdG9wb2xvZ3lfc3RhdGUobWdyLCBtc3Rfc3Rh dGUpOworCQlpZiAocmV0KQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KK0VYUE9S VF9TWU1CT0woZHJtX2RwX21zdF9hdG9taWNfY2hlY2spOworCiBjb25zdCBzdHJ1Y3QgZHJtX3By aXZhdGVfc3RhdGVfZnVuY3MgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZV9mdW5jcyA9IHsKIAku YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9kcF9tc3RfZHVwbGljYXRlX3N0YXRlLAogCS5h dG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9kcF9tc3RfZGVzdHJveV9zdGF0ZSwKQEAgLTM2MDks OSArMzc5NCw3IEBAIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9pbml0KHN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogCQlyZXR1cm4gLUVOT01FTTsKIAogCW1zdF9zdGF0 ZS0+bWdyID0gbWdyOwotCi0JLyogbWF4LiB0aW1lIHNsb3RzIC0gb25lIHNsb3QgZm9yIE1UUCBo ZWFkZXIgKi8KLQltc3Rfc3RhdGUtPmF2YWlsX3Nsb3RzID0gNjM7CisJSU5JVF9MSVNUX0hFQUQo Jm1zdF9zdGF0ZS0+dmNwaXMpOwogCiAJZHJtX2F0b21pY19wcml2YXRlX29ial9pbml0KGRldiwg Jm1nci0+YmFzZSwKIAkJCQkgICAgJm1zdF9zdGF0ZS0+YmFzZSwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwppbmRleCA2NjViNDgzYmJiY2MuLjk4YzNlZjdjNTM3OCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTI3MTAsNiArMTI3MTAsMTAgQEAgc3RhdGlj IGludCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAg ICAgIlttb2Rlc2V0XSIgOiAiW2Zhc3RzZXRdIik7CiAJfQogCisJcmV0ID0gZHJtX2RwX21zdF9h dG9taWNfY2hlY2soc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlpZiAoYW55 X21zKSB7CiAJCXJldCA9IGludGVsX21vZGVzZXRfY2hlY2tzKHN0YXRlKTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9tc3QuYwppbmRleCA2MzFmZDE1MzcyNTIuLjllOGEwODBlMzc1OCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKQEAgLTQxLDggKzQxLDEzIEBAIHN0YXRpYyBi b29sIGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29u bmVjdG9yOwogCXZvaWQgKnBvcnQgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKS0+cG9y dDsKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5z dGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOwor CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUgPQorCQlkcm1fYXRvbWljX2dl dF9vbGRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZSA9ICZwaXBlX2NvbmZpZy0+YmFzZTsKIAlpbnQgYnBwOwotCWludCBsYW5l X2NvdW50LCBzbG90cyA9IDA7CisJaW50IGxhbmVfY291bnQsIHNsb3RzID0KKwkJdG9faW50ZWxf Y3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSktPmRwX21fbi50dTsKIAljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwogCWludCBtc3RfcGJuOwogCWJvb2wgY29uc3RhbnRfbiA9IGRybV9kcF9oYXNfcXVp cmsoJmludGVsX2RwLT5kZXNjLApAQCAtNzcsOCArODIsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxf ZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCW1z dF9wYm4gPSBkcm1fZHBfY2FsY19wYm5fbW9kZShhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLCBi cHApOwogCXBpcGVfY29uZmlnLT5wYm4gPSBtc3RfcGJuOwogCi0JLyogWm9tYmllIGNvbm5lY3Rv cnMgY2FuJ3QgaGF2ZSBWQ1BJIHNsb3RzICovCi0JaWYgKCFkcm1fY29ubmVjdG9yX2lzX3VucmVn aXN0ZXJlZChjb25uZWN0b3IpKSB7CisJLyogT25seSBjaGFuZ2UgVkNQSSBhbGxvY2F0aW9uIG9u IGFjdHVhbCBtb2RlIGNoYW5nZXMsIHRvIHByZXZlbnQgdXMKKwkgKiBmcm9tIHRyeWluZyB0byBh bGxvY2F0ZSBWQ1BJIHRvIHBvcnRzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IHdoZW4gd2UKKwkgKiBt YXkganVzdCBiZSB0cnlpbmcgdG8gZGlzYWJsZSBEUE1TIG9uIHRoZW0KKwkgKi8KKwlpZiAobmV3 X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCB8fAorCSAgICBuZXdfY3J0Y19zdGF0ZS0+Y29ubmVj dG9yc19jaGFuZ2VkKSB7CiAJCXNsb3RzID0gZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMo c3RhdGUsCiAJCQkJCQkgICAgICAmaW50ZWxfZHAtPm1zdF9tZ3IsCiAJCQkJCQkgICAgICBwb3J0 LApAQCAtMTA3LDM2ICsxMTYsMzkgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXJldHVybiB0cnVlOwogfQog Ci1zdGF0aWMgaW50IGludGVsX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKLQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0 YXRlKQorc3RhdGljIGludAoraW50ZWxfZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAorCQkJICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3 X2Nvbm5fc3RhdGUpCiB7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9y ID0KKwkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IgPQorCQkmaW50ZWxfY29ubmVjdG9yLT5tc3RfcG9ydC0+bXN0X21n cjsKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0ID0gaW50ZWxfY29ubmVjdG9yLT5wb3J0 OwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG5ld19jb25uX3N0YXRlLT5zdGF0 ZTsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7Ci0Jc3RydWN0 IGRybV9jcnRjICpvbGRfY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7 Ci0JaW50IHNsb3RzLCByZXQgPSAwOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRf Y29ubl9zdGF0ZSA9CisJCWRybV9hdG9taWNfZ2V0X29sZF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUs IGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9jcnRjICpvbGRfY3J0YyA9IG9sZF9jb25uX3N0YXRl LT5jcnRjLAorCQkJKm5ld19jcnRjID0gbmV3X2Nvbm5fc3RhdGUtPmNydGM7CisJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwogCi0Jb2xkX2Nv bm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9vbGRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25u ZWN0b3IpOwotCW9sZF9jcnRjID0gb2xkX2Nvbm5fc3RhdGUtPmNydGM7CiAJaWYgKCFvbGRfY3J0 YykKLQkJcmV0dXJuIHJldDsKKwkJcmV0dXJuIDA7CiAKLQljcnRjX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIG9sZF9jcnRjKTsKLQlzbG90cyA9IHRvX2ludGVs X2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPmRwX21fbi50dTsKLQlpZiAoZHJtX2F0b21pY19jcnRj X25lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkgJiYgc2xvdHMgPiAwKSB7Ci0JCXN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyOwotCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKm9sZF9lbmNv ZGVyOworCW9sZF9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3Rh dGUsIG9sZF9jcnRjKTsKKwlpZiAoIW9sZF9jcnRjX3N0YXRlIHx8CisJICAgICF0b19pbnRlbF9j cnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKS0+ZHBfbV9uLnR1KQorCQlyZXR1cm4gMDsKIAotCQlv bGRfZW5jb2RlciA9IG9sZF9jb25uX3N0YXRlLT5iZXN0X2VuY29kZXI7Ci0JCW1nciA9ICZlbmNf dG9fbXN0KG9sZF9lbmNvZGVyKS0+cHJpbWFyeS0+ZHAubXN0X21ncjsKKwkvKiBJZiB3ZSBzd2l0 Y2hlZCBDUlRDcywgY2xlYXIgdGhlIHByZXZpb3VzIG9uZSdzIGFsbG9jYXRpb24gKi8KKwluZXdf Y3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBvbGRfY3J0 Yyk7CisJaWYgKG5ld19jcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgJiYgIW5ld19jcnRj X3N0YXRlLT5lbmFibGUpCisJCXRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpLT5k cF9tX24udHUgPSAwOwogCi0JCXJldCA9IGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3Rz KHN0YXRlLCBtZ3IsIHNsb3RzKTsKLQkJaWYgKHJldCkKLQkJCURSTV9ERUJVR19LTVMoImZhaWxl ZCByZWxlYXNpbmcgJWQgdmNwaSBzbG90czolZFxuIiwgc2xvdHMsIHJldCk7Ci0JCWVsc2UKLQkJ CXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPmRwX21fbi50dSA9IDA7Ci0JfQotCXJl dHVybiByZXQ7CisJaWYgKG5ld19jcnRjKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBkcm1fZHBf YXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdGF0ZSwgbWdyLCBwb3J0KTsKIH0KIAogc3RhdGlj IHZvaWQgaW50ZWxfbXN0X2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oIGIvaW5jbHVkZS9k cm0vZHJtX2RwX21zdF9oZWxwZXIuaAppbmRleCA1ODExNjNjOGQ3ZDcuLjQ1MWQwMjBmMDEzNyAx MDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAorKysgYi9pbmNsdWRl L2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCkBAIC00MjUsOSArNDI1LDE1IEBAIHN0cnVjdCBkcm1f ZHBfcGF5bG9hZCB7CiAKICNkZWZpbmUgdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRlKHgpIGNvbnRh aW5lcl9vZih4LCBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSwgYmFzZSkKIAorc3Ry dWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24geworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBv cnQ7CisJaW50IHZjcGk7CisJc3RydWN0IGxpc3RfaGVhZCBuZXh0OworfTsKKwogc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgewogCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNl OwotCWludCBhdmFpbF9zbG90czsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHZjcGlzOwogCXN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyOwogfTsKIApAQCAtNjM4LDE0ICs2NDQsMTcgQEAg dm9pZCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zdXNwZW5kKHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyKTsKIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9yZXN1bWUoc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpOwogc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfc3RhdGUgKmRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCSAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3Bv bG9neV9tZ3IgKm1ncik7Ci1pbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptZ3IsCi0JCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgcGJu KTsKLWludCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Ig Km1nciwKLQkJCQkgICAgIGludCBzbG90cyk7CitpbnQgX19tdXN0X2NoZWNrCitkcm1fZHBfYXRv bWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkg ICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCSAgICAgIHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGludCBwYm4pOworaW50IF9fbXVzdF9jaGVjaworZHJt X2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAorCQkJCSBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCQkgc3Ry dWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCk7CiBpbnQgZHJtX2RwX3NlbmRfcG93ZXJfdXBkb3du X3BoeShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkgc3RydWN0IGRy bV9kcF9tc3RfcG9ydCAqcG9ydCwgYm9vbCBwb3dlcl91cCk7CitpbnQgX19tdXN0X2NoZWNrIGRy bV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CiAK IHZvaWQgZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2Moc3RydWN0IGRybV9kcF9tc3RfcG9ydCAq cG9ydCk7CiB2b2lkIGRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQgKnBvcnQpOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L25vdXZlYXUK