From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v2 14/16] drm/dp_mst: Start tracking per-port VCPI allocations Date: Wed, 19 Dec 2018 19:19:58 -0500 Message-ID: <20181220001959.12486-15-lyude@redhat.com> References: <20181220001959.12486-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181220001959.12486-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: 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 CkNoYW5nZXMgc2luY2Ugdjc6CiAtIERvbid0IGNoZWNrIGZvciBtaXhlZCBzdGFsZS92YWxpZCBW Q1BJIGFsbG9jYXRpb25zLCBqdXN0IHJlbHkgb24KIGNvbm5lY3RvciByZWdpc3RyYXRpb24gdG8g c3RvcCBzdWNoIGVycm9uZW91cyBtb2Rlc2V0cwoKQ2hhbmdlcyBzaW5jZSB2NjoKIC0gS2VlcCBh IGtyZWYgdG8gYWxsIG9mIHRoZSBwb3J0cyB3ZSBoYXZlIGFsbG9jYXRpb25zIG9uLiBUaGlzIHJl cXVpcmVkCiAgIGEgZ29vZCBiaXQgb2YgY2hhbmdpbmcgdG8gd2hlbiB3ZSBjYWxsIGRybV9kcF9m aW5kX3ZjcGlfc2xvdHMoKSwKICAgbWFpbmx5IHRoYXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3 ZSBvbmx5IHJlZG8gVkNQSSBhbGxvY2F0aW9ucyBvbgogICBhY3R1YWwgbW9kZSBvciBDUlRDIGNo YW5nZXMsIG5vdCBjcnRjX3N0YXRlLT5hY3RpdmUgY2hhbmdlcy4KICAgQWRkaXRpb25hbGx5LCB3 ZSBubyBsb25nZXIgdGFrZSB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSBEUk0gY29ubmVjdG9yCiAg IGZvciBlYWNoIHBvcnQgaW50byBhY2NvdW50IGJlY2F1c2Ugc28gbG9uZyBhcyB3ZSBoYXZlIGEg a3JlZiB0byB0aGUKICAgcG9ydCBpbiB0aGUgbmV3IG9yIHByZXZpb3VzIGF0b21pYyBzdGF0ZSwg dGhlIGNvbm5lY3RvciB3aWxsIHN0YXkKICAgcmVnaXN0ZXJlZC4KIC0gVXNlIHRoZSBzbWFsbCBj aGFuZ2VzIHRvIGRybV9kcF9wdXRfcG9ydCgpIHRvIGFkZCBldmVuIG1vcmUgZXJyb3IKICAgY2hl Y2tpbmcgdG8gbWFrZSBtaXN1c2FnZSBvZiB0aGUgaGVscGVycyBtb3JlIG9idmlvdXMuIEkgYWRk ZWQgdGhpcwogICBhZnRlciBoYXZpbmcgdG8gY2hhc2UgZG93biB2YXJpb3VzIHVzZS1hZnRlci1m cmVlIGNvbmRpdGlvbnMgdGhhdAogICBzdGFydGVkIHBvcHBpbmcgdXAgZnJvbSB0aGUgbmV3IGhl bHBlcnMgc28gbm8gb25lIGVsc2UgaGFzIHRvCiAgIHRyb3VibGVzaG9vdCB0aGF0LgogLSBNb3Zl IHNvbWUgYWNjaWRlbnRhbCBEUk1fREVCVUdfS01TKCkgY2FsbHMgdG8gRFJNX0RFQlVHX0FUT01J QygpCiAtIFVwZGF0ZSBkb2N1bWVudGF0aW9uIGFnYWluLCBub3RlIHRoYXQgZmluZC9yZWxlYXNl KCkgc2hvdWxkIGJvdGggbm90IGJlCiAgIGNhbGxlZCBvbiB0aGUgc2FtZSBwb3J0IGluIGEgc2lu Z2xlIGF0b21pYyBjaGVjayBwaGFzZSAoYnV0IG11bHRpcGxlCiAgIGNhbGxzIHRvIG9uZSBvciB0 aGUgb3RoZXIgaXMgT0spCgpDaGFuZ2VzIHNpbmNlIHY0OgogLSBEb24ndCBza2lwIHRoZSBhdG9t aWMgY2hlY2tzIGZvciBWQ1BJIGFsbG9jYXRpb25zIGlmIG5vIG5ldyBWQ1BJCiAgIGFsbG9jYXRp b25zIGhhcHBlbiBpbiBhIHN0YXRlLiBUaGlzIG1ha2VzIHRoZSBuZXh0IGNoYW5nZSBJJ20gYWJv dXQKICAgdG8gbGlzdCBoZXJlIGEgbG90IGVhc2llciB0byBpbXBsZW1lbnQuCiAtIERvbid0IGln bm9yZSBWQ1BJIGFsbG9jYXRpb25zIG9uIGRlc3Ryb3llZCBwb3J0cywgaW5zdGVhZCBlbnN1cmUg dGhhdAogICB3aGVuIHBvcnRzIGFyZSBkZXN0cm95ZWQgYW5kIHN0aWxsIGhhdmUgVkNQSSBhbGxv Y2F0aW9ucyBpbiB0aGUKICAgdG9wb2xvZ3kgc3RhdGUsIHRoZSBvbmx5IHN0YXRlIGNoYW5nZXMg YWxsb3dlZCBhcmUgcmVsZWFzaW5nIHNhaWQKICAgcG9ydHMnIFZDUEkuIFRoaXMgcHJldmVudHMg YSBzdGF0ZSB3aXRoIGEgbWl4IG9mIFZDUEkgYWxsb2NhdGlvbnMKICAgZnJvbSBkZXN0cm95ZWQg cG9ydHMsIGFuZCBhbGxvY2F0aW9ucyBmcm9tIHZhbGlkIHBvcnRzLgoKQ2hhbmdlcyBzaW5jZSB2 MzoKIC0gRG9uJ3QgcmVsZWFzZSBWQ1BJIGFsbG9jYXRpb25zIGluIHRoZSB0b3BvbG9neSBzdGF0 ZSBpbW1lZGlhdGVseSBpbgogICBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpLCBp bnN0ZWFkIG1hcmsgdGhlbSBhcyAwIGFuZCBza2lwCiAgIG92ZXIgdGhlbSBpbiBkcm1fZHBfbXN0 X2R1cGxpY2F0ZV9zdGF0ZSgpLiBUaGlzIG1ha2VzIGl0IHNvCiAgIGRybV9kcF9hdG9taWNfcmVs ZWFzZV92Y3BpX3Nsb3RzKCkgaXMgc3RpbGwgaWRlbXBvdGVudCB3aGlsZSBhbHNvCiAgIHRocm93 aW5nIHdhcm5pbmdzIGlmIHRoZSBkcml2ZXIgbWVzc2VzIHVwIGl0J3MgYm9vayBrZWVwaW5nIGFu ZCB0cmllcwogICB0byByZWxlYXNlIFZDUEkgc2xvdHMgb24gYSBwb3J0IHRoYXQgZG9lc24ndCBo YXZlIGFueSBwcmUtZXhpc3RpbmcKICAgVkNQSSBhbGxvY2F0aW9uIC0gZGFudmV0CiAtIENoYW5n ZSBtc3Rfc3RhdGUvc3RhdGUgaW4gc29tZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG8gIm1zdCBzdGF0 ZSIKCkNoYW5nZXMgc2luY2UgdjI6CiAtIFVzZSBrbWVtZHVwKCkgZm9yIGR1cGxpY2F0aW5nIE1T VCBzdGF0ZSAtIGRhbnZldAogLSBNb3ZlIHBvcnQgdmFsaWRhdGlvbiBvdXQgb2YgZHVwbGljYXRl IHN0YXRlIGNhbGxiYWNrIC0gZGFudmV0CiAtIEhhbmRsZSBsb29waW5nIHRocm91Z2ggTVNUIHRv cG9sb2d5IHN0YXRlcyBpbgogICBkcm1fZHBfbXN0X2F0b21pY19jaGVjaygpIHNvIHRoZSBkcml2 ZXIgZG9lc24ndCBoYXZlIHRvIGRvIGl0CiAtIEZpeCBkb2N1bWVudGF0aW9uIGluIGRybV9kcF9h dG9taWNfZmluZF92Y3BpX3Nsb3RzKCkKIC0gTW92ZSB0aGUgYXRvbWljIGNoZWNrIGZvciBlYWNo IGluZGl2aWR1YWwgdG9wb2xvZ3kgc3RhdGUgaW50byBpdCdzCiAgIG93biBmdW5jdGlvbiwgcmVk dWNlcyBpbmRlbnRpbmcKIC0gRG9uJ3QgY29uc2lkZXIgInN0YWxlIiBNU1QgcG9ydHMgd2hlbiBj YWxjdWxhdGluZyB0aGUgYmFuZHdpZHRoCiAgIHJlcXVpcmVtZW50cy4gVGhpcyBpcyBuZWVkZWQg YmVjYXVzZSBvcmlnaW5hbGx5IHdlIHJlbGllZCBvbiB0aGUKICAgc3RhdGUgZHVwbGljYXRpb24g ZnVuY3Rpb25zIHRvIHBydW5lIGFueSBzdGFsZSBwb3J0cyBmcm9tIHRoZSBuZXcKICAgc3RhdGUs IHdoaWNoIHdvdWxkIHByZXZlbnQgdXMgZnJvbSBpbmNvcnJlY3RseSBjb25zaWRlcmluZyB0aGVp cgogICBiYW5kd2lkdGggcmVxdWlyZW1lbnRzIGFsb25nc2lkZSBsZWdpdGltYXRlIG5ldyBwYXls b2Fkcy4KIC0gQWRkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgaW4gZHJtX2RwX2F0b21pY19yZWxlYXNl X3ZjcGlfc2xvdHMoKSAtIGRhbnZldAogLSBBbm5vdGF0ZSBhdG9taWMgVkNQSSBhbmQgYXRvbWlj IGNoZWNrIGZ1bmN0aW9ucyB3aXRoIF9fbXVzdF9jaGVjawogICAtIGRhbnZldAoKQ2hhbmdlcyBz aW5jZSB2MToKIC0gRG9uJ3QgdXNlIHRoZSBub3ctcmVtb3ZlZCAtPmF0b21pY19jaGVjaygpIGZv ciBwcml2YXRlIG9iamVjdHMgaG9vaywKICAganVzdCBnaXZlIGRyaXZlcnMgYSBmdW5jdGlvbiB0 byBjYWxsIHRoZW1zZWx2ZXMKClNpZ25lZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhh dC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogRGF2 aWQgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CkNjOiBKZXJyeSBadW8gPEplcnJ5Llp1b0Bh bWQuY29tPgpDYzogSGFycnkgV2VudGxhbmQgPGhhcnJ5LndlbnRsYW5kQGFtZC5jb20+CkNjOiBK dXN0b24gTGkgPGp1c3Rvbi5saUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9k cF9tc3RfdG9wb2xvZ3kuYyB8IDI1MSArKysrKysrKysrKysrKysrKysrKysrLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9tc3QuYyAgIHwgIDY0ICsrKystLS0KIGluY2x1ZGUvZHJtL2RybV9kcF9t c3RfaGVscGVyLmggICAgICAgfCAgMjMgKystCiA0IGZpbGVzIGNoYW5nZWQsIDI3NyBpbnNlcnRp b25zKCspLCA2NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2RwX21zdF90b3BvbG9neS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3ku YwppbmRleCAyMmJjNTRkODNiMjAuLmI1NWI1OGJmODZiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rw X21zdF90b3BvbG9neS5jCkBAIC0zMDE2LDIxICszMDE2LDQyIEBAIHN0YXRpYyBpbnQgZHJtX2Rw X2luaXRfdmNwaShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIH0KIAogLyoq Ci0gKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIC0gRmluZCBhbmQgYWRkIHZjcGkg c2xvdHMgdG8gdGhlIHN0YXRlCisgKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIC0g RmluZCBhbmQgYWRkIFZDUEkgc2xvdHMgdG8gdGhlIHN0YXRlCiAgKiBAc3RhdGU6IGdsb2JhbCBh dG9taWMgc3RhdGUKICAqIEBtZ3I6IE1TVCB0b3BvbG9neSBtYW5hZ2VyIGZvciB0aGUgcG9ydAog ICogQHBvcnQ6IHBvcnQgdG8gZmluZCB2Y3BpIHNsb3RzIGZvcgogICogQHBibjogYmFuZHdpZHRo IHJlcXVpcmVkIGZvciB0aGUgbW9kZSBpbiBQQk4KICAqCi0gKiBSRVRVUk5TOgotICogVG90YWwg c2xvdHMgaW4gdGhlIGF0b21pYyBzdGF0ZSBhc3NpZ25lZCBmb3IgdGhpcyBwb3J0IG9yIGVycm9y CisgKiBBbGxvY2F0ZXMgVkNQSSBzbG90cyB0byBAcG9ydCwgcmVwbGFjaW5nIGFueSBwcmV2aW91 cyBWQ1BJIGFsbG9jYXRpb25zIGl0CisgKiBtYXkgaGF2ZSBoYWQuIEFueSBhdG9taWMgZHJpdmVy cyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbgorICogaW4gdGhlaXIg JmRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcy5hdG9taWNfY2hlY2soKSBjYWxsYmFjayB0byBjaGFu Z2UgdGhlCisgKiBjdXJyZW50IFZDUEkgYWxsb2NhdGlvbiBmb3IgdGhlIG5ldyBzdGF0ZSwgYnV0 IG9ubHkgd2hlbgorICogJmRybV9jcnRjX3N0YXRlLm1vZGVfY2hhbmdlZCBvciAmZHJtX2NydGNf c3RhdGUuY29ubmVjdG9yc19jaGFuZ2VkIGlzIHNldAorICogdG8gZW5zdXJlIGNvbXBhdGliaWxp dHkgd2l0aCB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIHRoYXQgc3RpbGwgdXNlIHRoZQorICogbGVn YWN5IG1vZGVzZXR0aW5nIFVBUEkuCisgKgorICogQWxsb2NhdGlvbnMgc2V0IGJ5IHRoaXMgZnVu Y3Rpb24gYXJlIG5vdCBjaGVja2VkIGFnYWluc3QgdGhlIGJhbmR3aWR0aAorICogcmVzdHJhaW50 cyBvZiBAbWdyIHVudGlsIHRoZSBkcml2ZXIgY2FsbHMgZHJtX2RwX21zdF9hdG9taWNfY2hlY2so KS4KKyAqCisgKiBBZGRpdGlvbmFsbHksIGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBt dWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZQorICogQHBvcnQgYXMgbmVlZGVkLiBJdCBpcyBub3Qg T0sgaG93ZXZlciwgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFuZAorICogZHJtX2RwX2F0b21pY19y ZWxlYXNlX3ZjcGlfc2xvdHMoKSBpbiB0aGUgc2FtZSBhdG9taWMgY2hlY2sgcGhhc2UuCisgKgor ICogU2VlIGFsc286CisgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpCisgKiBk cm1fZHBfbXN0X2F0b21pY19jaGVjaygpCisgKgorICogUmV0dXJuczoKKyAqIFRvdGFsIHNsb3Rz IGluIHRoZSBhdG9taWMgc3RhdGUgYXNzaWduZWQgZm9yIHRoaXMgcG9ydCwgb3IgYSBuZWdhdGl2 ZSBlcnJvcgorICogY29kZSBpZiB0aGUgcG9ydCBubyBsb25nZXIgZXhpc3RzCiAgKi8KIGludCBk cm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiAJCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkgIHN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGludCBwYm4pCiB7CiAJc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfc3RhdGUgKnRvcG9sb2d5X3N0YXRlOwotCWludCByZXFfc2xvdHM7CisJc3Ry dWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnZjcGkgPSBOVUxMOworCWludCBwcmV2 X3Nsb3RzLCByZXFfc2xvdHMsIHJldDsKIAogCXRvcG9sb2d5X3N0YXRlID0gZHJtX2F0b21pY19n ZXRfbXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlLCBtZ3IpOwogCWlmIChJU19FUlIodG9wb2xvZ3lf c3RhdGUpKQpAQCAtMzAzOSwyMCArMzA2MCw1NiBAQCBpbnQgZHJtX2RwX2F0b21pY19maW5kX3Zj cGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCXBvcnQgPSBkcm1fZHBf bXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlkYXRlZChtZ3IsIHBvcnQpOwogCWlmIChwb3J0ID09 IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwotCXJlcV9zbG90cyA9IERJVl9ST1VORF9VUChwYm4s IG1nci0+cGJuX2Rpdik7Ci0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyByZXE9JWQsIGF2YWls PSVkXG4iLAotCQkJcmVxX3Nsb3RzLCB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpOwogCi0J aWYgKHJlcV9zbG90cyA+IHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cykgewotCQlkcm1fZHBf bXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwotCQlyZXR1cm4gLUVOT1NQQzsKKwl0b3BvbG9n eV9zdGF0ZS0+dmNwaV9hbGxvY2F0ZWQgPSB0cnVlOworCisJLyogRmluZCB0aGUgY3VycmVudCBh bGxvY2F0aW9uIGZvciB0aGlzIHBvcnQsIGlmIGFueSAqLworCWxpc3RfZm9yX2VhY2hfZW50cnko cG9zLCAmdG9wb2xvZ3lfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCWlmIChwb3MtPnBvcnQgPT0g cG9ydCkgeworCQkJdmNwaSA9IHBvczsKKwkJCXByZXZfc2xvdHMgPSB2Y3BpLT52Y3BpOworCisJ CQkvKgorCQkJICogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCB1bmxlc3MgdGhlIGRyaXZlciB0 cmllcworCQkJICogcmVsZWFzaW5nIGFuZCBhbGxvY2F0aW5nIHRoZSBzYW1lIFZDUEkgYWxsb2Nh dGlvbiwKKwkJCSAqIHdoaWNoIGlzIGFuIGVycm9yCisJCQkgKi8KKwkJCWlmIChXQVJOX09OKCFw cmV2X3Nsb3RzKSkgeworCQkJCURSTV9FUlJPUigiY2Fubm90IGFsbG9jYXRlIGFuZCByZWxlYXNl IFZDUEkgb24gW01TVCBQT1JUOiVwXSBpbiB0aGUgc2FtZSBzdGF0ZVxuIiwKKwkJCQkJICBwb3J0 KTsKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCX0KKworCQkJYnJlYWs7CisJCX0KIAl9CisJaWYg KCF2Y3BpKQorCQlwcmV2X3Nsb3RzID0gMDsKIAotCXRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90 cyAtPSByZXFfc2xvdHM7Ci0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyBhdmFpbD0lZCIsIHRv cG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyk7CisJcmVxX3Nsb3RzID0gRElWX1JPVU5EX1VQKHBi biwgbWdyLT5wYm5fZGl2KTsKKworCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6JXNd IFtNU1QgUE9SVDolcF0gVkNQSSAlZCAtPiAlZFxuIiwKKwkJCSBwb3J0LT5jb25uZWN0b3ItPmJh c2UuaWQsIHBvcnQtPmNvbm5lY3Rvci0+bmFtZSwKKwkJCSBwb3J0LCBwcmV2X3Nsb3RzLCByZXFf c2xvdHMpOwogCisJLyogQWRkIHRoZSBuZXcgYWxsb2NhdGlvbiB0byB0aGUgc3RhdGUgKi8KKwlp ZiAoIXZjcGkpIHsKKwkJdmNwaSA9IGt6YWxsb2Moc2l6ZW9mKCp2Y3BpKSwgR0ZQX0tFUk5FTCk7 CisJCWlmICghdmNwaSkgeworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gb3V0OworCQl9CisK KwkJZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2MocG9ydCk7CisJCXZjcGktPnBvcnQgPSBwb3J0 OworCQlsaXN0X2FkZCgmdmNwaS0+bmV4dCwgJnRvcG9sb2d5X3N0YXRlLT52Y3Bpcyk7CisJfQor CXZjcGktPnZjcGkgPSByZXFfc2xvdHM7CisKKwlyZXQgPSByZXFfc2xvdHM7CitvdXQ6CiAJZHJt X2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKLQlyZXR1cm4gcmVxX3Nsb3RzOworCXJl dHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3Rz KTsKIApAQCAtMzA2MCwzMSArMzExNyw1NyBAQCBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNf ZmluZF92Y3BpX3Nsb3RzKTsKICAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkg LSBSZWxlYXNlIGFsbG9jYXRlZCB2Y3BpIHNsb3RzCiAgKiBAc3RhdGU6IGdsb2JhbCBhdG9taWMg c3RhdGUKICAqIEBtZ3I6IE1TVCB0b3BvbG9neSBtYW5hZ2VyIGZvciB0aGUgcG9ydAotICogQHNs b3RzOiBudW1iZXIgb2YgdmNwaSBzbG90cyB0byByZWxlYXNlCisgKiBAcG9ydDogVGhlIHBvcnQg dG8gcmVsZWFzZSB0aGUgVkNQSSBzbG90cyBmcm9tCiAgKgotICogUkVUVVJOUzoKLSAqIDAgaWYg QHNsb3RzIHdlcmUgYWRkZWQgYmFjayB0byAmZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZS0+YXZh aWxfc2xvdHMgb3IKLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGUKKyAqIFJlbGVhc2VzIGFueSBWQ1BJ IHNsb3RzIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCB0byBhIHBvcnQgaW4gdGhlIGF0b21pYwor ICogc3RhdGUuIEFueSBhdG9taWMgZHJpdmVycyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwg dGhpcyBmdW5jdGlvbiBpbgorICogdGhlaXIgJmRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzLmF0 b21pY19jaGVjaygpIGNhbGxiYWNrIHdoZW4gdGhlCisgKiBjb25uZWN0b3Igd2lsbCBubyBsb25n ZXIgaGF2ZSBWQ1BJIGFsbG9jYXRlZCAoZS5nLiBiZWNhdXNlIGl0J3MgQ1JUQyB3YXMKKyAqIHJl bW92ZWQpIHdoZW4gaXQgaGFkIFZDUEkgYWxsb2NhdGVkIGluIHRoZSBwcmV2aW91cyBhdG9taWMg c3RhdGUuCisgKgorICogSXQgaXMgT0sgdG8gY2FsbCB0aGlzIGV2ZW4gaWYgQHBvcnQgaGFzIGJl ZW4gcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0uCisgKiBBZGRpdGlvbmFsbHksIGl0IGlzIE9LIHRv IGNhbGwgdGhpcyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZQorICogQHBvcnQg YXMgbmVlZGVkLiBJdCBpcyBub3QgT0sgaG93ZXZlciwgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFu ZAorICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKSBvbiB0aGUgc2FtZSBAcG9ydCBp biBhIHNpbmdsZSBhdG9taWMgY2hlY2sKKyAqIHBoYXNlLgorICoKKyAqIFNlZSBhbHNvOgorICog ZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKQorICogZHJtX2RwX21zdF9hdG9taWNfY2hl Y2soKQorICoKKyAqIFJldHVybnM6CisgKiAwIGlmIGFsbCBzbG90cyBmb3IgdGhpcyBwb3J0IHdl cmUgYWRkZWQgYmFjayB0bworICogJmRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUuYXZhaWxfc2xv dHMgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQogICovCiBpbnQgZHJtX2RwX2F0b21pY19yZWxlYXNl X3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCSAgICAgc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCi0JCQkJICAgICBpbnQgc2xvdHMpCisJ CQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQogewogCXN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X3N0YXRlICp0b3BvbG9neV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlf YWxsb2NhdGlvbiAqcG9zOworCWJvb2wgZm91bmQgPSBmYWxzZTsKIAogCXRvcG9sb2d5X3N0YXRl ID0gZHJtX2F0b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlLCBtZ3IpOwogCWlmIChJ U19FUlIodG9wb2xvZ3lfc3RhdGUpKQogCQlyZXR1cm4gUFRSX0VSUih0b3BvbG9neV9zdGF0ZSk7 CiAKLQkvKiBXZSBjYW5ub3QgcmVseSBvbiBwb3J0LT52Y3BpLm51bV9zbG90cyB0byB1cGRhdGUK LQkgKiB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgYXMgdGhlIHBvcnQgbWF5IG5vdCBleGlz dCBpZiB0aGUgcGFyZW50Ci0JICogYnJhbmNoIGRldmljZSB3YXMgdW5wbHVnZ2VkLiBUaGlzIHNo b3VsZCBiZSBmaXhlZCBieSB0cmFja2luZwotCSAqIHBlci1wb3J0IHNsb3QgYWxsb2NhdGlvbiBp biBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlIGluc3RlYWQgb2YKLQkgKiBkZXBlbmRpbmcgb24g dGhlIGNhbGxlciB0byB0ZWxsIHVzIGhvdyBtYW55IHNsb3RzIHRvIHJlbGVhc2UuCi0JICovCi0J dG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzICs9IHNsb3RzOwotCURSTV9ERUJVR19LTVMoInZj cGkgc2xvdHMgcmVsZWFzZWQ9JWQsIGF2YWlsPSVkXG4iLAotCQkJc2xvdHMsIHRvcG9sb2d5X3N0 YXRlLT5hdmFpbF9zbG90cyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZ0b3BvbG9neV9z dGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJaWYgKHBvcy0+cG9ydCA9PSBwb3J0KSB7CisJCQlmb3Vu ZCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoV0FSTl9PTighZm91bmQpKSB7CisJ CURSTV9FUlJPUigibm8gVkNQSSBmb3IgW01TVCBQT1JUOiVwXSBmb3VuZCBpbiBtc3Qgc3RhdGUg JXBcbiIsCisJCQkgIHBvcnQsICZ0b3BvbG9neV9zdGF0ZS0+YmFzZSk7CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCURSTV9ERUJVR19BVE9NSUMoIltNU1QgUE9SVDolcF0gVkNQSSAlZCAtPiAw XG4iLCBwb3J0LCBwb3MtPnZjcGkpOworCWlmIChwb3MtPnZjcGkpIHsKKwkJZHJtX2RwX21zdF9w dXRfcG9ydF9tYWxsb2MocG9ydCk7CisJCXBvcy0+dmNwaSA9IDA7CisJfQogCiAJcmV0dXJuIDA7 CiB9CkBAIC0zNTA1LDE1ICszNTg4LDQyIEBAIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X2Nv bm5lY3Rvcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHN0YXRpYyBzdHJ1Y3QgZHJt X3ByaXZhdGVfc3RhdGUgKgogZHJtX2RwX21zdF9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9w cml2YXRlX29iaiAqb2JqKQogewotCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICpz dGF0ZTsKKwlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqc3RhdGUsICpvbGRfc3Rh dGUgPQorCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3RhdGUob2JqLT5zdGF0ZSk7CisJc3RydWN0IGRy bV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnZjcGk7CiAKLQlzdGF0ZSA9IGttZW1kdXAob2Jq LT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOworCXN0YXRlID0ga21lbWR1cChv bGRfc3RhdGUsIHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXN0YXRlKQogCQly ZXR1cm4gTlVMTDsKIAogCV9fZHJtX2F0b21pY19oZWxwZXJfcHJpdmF0ZV9vYmpfZHVwbGljYXRl X3N0YXRlKG9iaiwgJnN0YXRlLT5iYXNlKTsKIAorCUlOSVRfTElTVF9IRUFEKCZzdGF0ZS0+dmNw aXMpOworCXN0YXRlLT52Y3BpX2FsbG9jYXRlZCA9IGZhbHNlOworCisJbGlzdF9mb3JfZWFjaF9l bnRyeShwb3MsICZvbGRfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCS8qIFBydW5lIGxlZnRvdmVy IGZyZWVkIFZDUEkgYWxsb2NhdGlvbnMgKi8KKwkJaWYgKCFwb3MtPnZjcGkpCisJCQljb250aW51 ZTsKKworCQl2Y3BpID0ga21lbWR1cChwb3MsIHNpemVvZigqdmNwaSksIEdGUF9LRVJORUwpOwor CQlpZiAoIXZjcGkpCisJCQlnb3RvIGZhaWw7CisKKwkJZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxs b2ModmNwaS0+cG9ydCk7CisJCWxpc3RfYWRkKCZ2Y3BpLT5uZXh0LCAmc3RhdGUtPnZjcGlzKTsK Kwl9CisKIAlyZXR1cm4gJnN0YXRlLT5iYXNlOworCitmYWlsOgorCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShwb3MsIHZjcGksICZzdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJZHJtX2RwX21zdF9w dXRfcG9ydF9tYWxsb2MocG9zLT5wb3J0KTsKKwkJa2ZyZWUocG9zKTsKKwl9CisJa2ZyZWUoc3Rh dGUpOworCisJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIGRybV9kcF9tc3RfZGVzdHJv eV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCkBAIC0zNTIxLDEwICszNjMxLDg5 IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9tc3RfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZh dGVfb2JqICpvYmosCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1zdF9z dGF0ZSA9CiAJCXRvX2RwX21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSk7CisJc3RydWN0IGRybV9k cF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnRtcDsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShwb3MsIHRtcCwgJm1zdF9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJLyogV2Ugb25seSBrZWVw IHJlZmVyZW5jZXMgdG8gcG9ydHMgd2l0aCBub24temVybyBWQ1BJcyAqLworCQlpZiAocG9zLT52 Y3BpKQorCQkJZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2MocG9zLT5wb3J0KTsKKwkJa2ZyZWUo cG9zKTsKKwl9CiAKIAlrZnJlZShtc3Rfc3RhdGUpOwogfQogCitzdGF0aWMgaW5saW5lIGludAor ZHJtX2RwX21zdF9hdG9taWNfY2hlY2tfdG9wb2xvZ3lfc3RhdGUoc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IsCisJCQkJICAgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X3N0YXRlICptc3Rfc3RhdGUpCit7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnZj cGk7CisJaW50IGF2YWlsX3Nsb3RzID0gNjM7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZjcGks ICZtc3Rfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCS8qIFJlbGVhc2luZyBWQ1BJIGlzIGFsd2F5 cyBPSy1ldmVuIGlmIHRoZSBwb3J0IGlzIGdvbmUgKi8KKwkJaWYgKCF2Y3BpLT52Y3BpKSB7CisJ CQlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIHJlbGVhc2VzIGFsbCBWQ1BJIHNsb3Rz XG4iLAorCQkJCQkgdmNwaS0+cG9ydCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCURSTV9ERUJV R19BVE9NSUMoIltNU1QgUE9SVDolcF0gcmVxdWlyZXMgJWQgdmNwaSBzbG90c1xuIiwKKwkJCQkg dmNwaS0+cG9ydCwgdmNwaS0+dmNwaSk7CisKKwkJYXZhaWxfc2xvdHMgLT0gdmNwaS0+dmNwaTsK KwkJaWYgKGF2YWlsX3Nsb3RzIDwgMCkgeworCQkJRFJNX0RFQlVHX0FUT01JQygiW01TVCBQT1JU OiVwXSBub3QgZW5vdWdoIFZDUEkgc2xvdHMgaW4gbXN0IHN0YXRlICVwIChhdmFpbD0lZClcbiIs CisJCQkJCSB2Y3BpLT5wb3J0LCBtc3Rfc3RhdGUsCisJCQkJCSBhdmFpbF9zbG90cyArIHZjcGkt PnZjcGkpOworCQkJcmV0dXJuIC1FTk9TUEM7CisJCX0KKworCX0KKwlEUk1fREVCVUdfQVRPTUlD KCJbTVNUIE1HUjolcF0gbXN0IHN0YXRlICVwIFZDUEkgYXZhaWw9JWQgdXNlZD0lZFxuIiwKKwkJ CSBtZ3IsIG1zdF9zdGF0ZSwgYXZhaWxfc2xvdHMsCisJCQkgNjMgLSBhdmFpbF9zbG90cyk7CisK KwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBkcm1fZHBfbXN0X2F0b21pY19jaGVjayAtIENoZWNr IHRoYXQgdGhlIG5ldyBzdGF0ZSBvZiBhbiBNU1QgdG9wb2xvZ3kgaW4gYW4KKyAqIGF0b21pYyB1 cGRhdGUgaXMgdmFsaWQKKyAqIEBzdGF0ZTogUG9pbnRlciB0byB0aGUgbmV3ICZzdHJ1Y3QgZHJt X2RwX21zdF90b3BvbG9neV9zdGF0ZQorICoKKyAqIENoZWNrcyB0aGUgZ2l2ZW4gdG9wb2xvZ3kg c3RhdGUgZm9yIGFuIGF0b21pYyB1cGRhdGUgdG8gZW5zdXJlIHRoYXQgaXQncworICogdmFsaWQu IFRoaXMgaW5jbHVkZXMgY2hlY2tpbmcgd2hldGhlciB0aGVyZSdzIGVub3VnaCBiYW5kd2lkdGgg dG8gc3VwcG9ydAorICogdGhlIG5ldyBWQ1BJIGFsbG9jYXRpb25zIGluIHRoZSBhdG9taWMgdXBk YXRlLgorICoKKyAqIEFueSBhdG9taWMgZHJpdmVycyBzdXBwb3J0aW5nIERQIE1TVCBtdXN0IG1h a2Ugc3VyZSB0byBjYWxsIHRoaXMgYWZ0ZXIKKyAqIGNoZWNraW5nIHRoZSByZXN0IG9mIHRoZWly IHN0YXRlIGluIHRoZWlyCisgKiAmZHJtX21vZGVfY29uZmlnX2Z1bmNzLmF0b21pY19jaGVjaygp IGNhbGxiYWNrLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlf c2xvdHMoKQorICogZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoKQorICoKKyAqIFJl dHVybnM6CisgKgorICogMCBpZiB0aGUgbmV3IHN0YXRlIGlzIHZhbGlkLCBuZWdhdGl2ZSBlcnJv ciBjb2RlIG90aGVyd2lzZS4KKyAqLworaW50IGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9n eV9tZ3IgKm1ncjsKKwlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqbXN0X3N0YXRl OworCWludCBpLCByZXQgPSAwOworCisJZm9yX2VhY2hfbmV3X21zdF9tZ3JfaW5fc3RhdGUoc3Rh dGUsIG1nciwgbXN0X3N0YXRlLCBpKSB7CisJCXJldCA9IGRybV9kcF9tc3RfYXRvbWljX2NoZWNr X3RvcG9sb2d5X3N0YXRlKG1nciwgbXN0X3N0YXRlKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOwor CX0KKworCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfYXRvbWljX2No ZWNrKTsKKwogY29uc3Qgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlX2Z1bmNzIGRybV9kcF9tc3Rf dG9wb2xvZ3lfc3RhdGVfZnVuY3MgPSB7CiAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1f ZHBfbXN0X2R1cGxpY2F0ZV9zdGF0ZSwKIAkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fZHBf bXN0X2Rlc3Ryb3lfc3RhdGUsCkBAIC0zNjA3LDkgKzM3OTYsNyBAQCBpbnQgZHJtX2RwX21zdF90 b3BvbG9neV9tZ3JfaW5pdChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJ cmV0dXJuIC1FTk9NRU07CiAKIAltc3Rfc3RhdGUtPm1nciA9IG1ncjsKLQotCS8qIG1heC4gdGlt ZSBzbG90cyAtIG9uZSBzbG90IGZvciBNVFAgaGVhZGVyICovCi0JbXN0X3N0YXRlLT5hdmFpbF9z bG90cyA9IDYzOworCUlOSVRfTElTVF9IRUFEKCZtc3Rfc3RhdGUtPnZjcGlzKTsKIAogCWRybV9h dG9taWNfcHJpdmF0ZV9vYmpfaW5pdChkZXYsICZtZ3ItPmJhc2UsCiAJCQkJICAgICZtc3Rfc3Rh dGUtPmJhc2UsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggM2I3MDk0ODIy YWE5Li45YTdlM2NkMjg5ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAg LTEyNjkwLDYgKzEyNjkwLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAgICAgICJbbW9kZXNldF0iIDogIltmYXN0c2V0XSIp OwogCX0KIAorCXJldCA9IGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0YXRlKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCiAJaWYgKGFueV9tcykgewogCQlyZXQgPSBpbnRlbF9tb2Rlc2V0 X2NoZWNrcyhzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKaW5kZXggNjMx ZmQxNTM3MjUyLi45ZThhMDgwZTM3NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwX21zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5j CkBAIC00MSw4ICs0MSwxMyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kcF9tc3RfY29tcHV0ZV9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKIAl2b2lkICpwb3J0ID0gdG9faW50 ZWxfY29ubmVjdG9yKGNvbm5lY3RvciktPnBvcnQ7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlID0gcGlwZV9jb25maWctPmJhc2Uuc3RhdGU7CisJc3RydWN0IGRybV9jcnRjICpjcnRj ID0gcGlwZV9jb25maWctPmJhc2UuY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9j cnRjX3N0YXRlID0KKwkJZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMp OworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUgPSAmcGlwZV9jb25maWct PmJhc2U7CiAJaW50IGJwcDsKLQlpbnQgbGFuZV9jb3VudCwgc2xvdHMgPSAwOworCWludCBsYW5l X2NvdW50LCBzbG90cyA9CisJCXRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpLT5k cF9tX24udHU7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKIAlpbnQgbXN0X3BibjsKIAlib29s IGNvbnN0YW50X24gPSBkcm1fZHBfaGFzX3F1aXJrKCZpbnRlbF9kcC0+ZGVzYywKQEAgLTc3LDgg KzgyLDEyIEBAIHN0YXRpYyBib29sIGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAltc3RfcGJuID0gZHJtX2RwX2NhbGNfcGJuX21vZGUo YWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywgYnBwKTsKIAlwaXBlX2NvbmZpZy0+cGJuID0gbXN0 X3BibjsKIAotCS8qIFpvbWJpZSBjb25uZWN0b3JzIGNhbid0IGhhdmUgVkNQSSBzbG90cyAqLwot CWlmICghZHJtX2Nvbm5lY3Rvcl9pc191bnJlZ2lzdGVyZWQoY29ubmVjdG9yKSkgeworCS8qIE9u bHkgY2hhbmdlIFZDUEkgYWxsb2NhdGlvbiBvbiBhY3R1YWwgbW9kZSBjaGFuZ2VzLCB0byBwcmV2 ZW50IHVzCisJICogZnJvbSB0cnlpbmcgdG8gYWxsb2NhdGUgVkNQSSB0byBwb3J0cyB0aGF0IG5v IGxvbmdlciBleGlzdCB3aGVuIHdlCisJICogbWF5IGp1c3QgYmUgdHJ5aW5nIHRvIGRpc2FibGUg RFBNUyBvbiB0aGVtCisJICovCisJaWYgKG5ld19jcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgfHwK KwkgICAgbmV3X2NydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCkgewogCQlzbG90cyA9IGRy bV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0YXRlLAogCQkJCQkJICAgICAgJmludGVsX2Rw LT5tc3RfbWdyLAogCQkJCQkJICAgICAgcG9ydCwKQEAgLTEwNywzNiArMTE2LDM5IEBAIHN0YXRp YyBib29sIGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGludCBpbnRlbF9kcF9tc3RfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0JCXN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZSkKK3N0YXRpYyBpbnQKK2ludGVsX2RwX21z dF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSAgc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlKQogeworCXN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9CisJCXRvX2ludGVsX2Nvbm5lY3Rvcihjb25u ZWN0b3IpOworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0KKwkJJmludGVs X2Nvbm5lY3Rvci0+bXN0X3BvcnQtPm1zdF9tZ3I7CisJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAq cG9ydCA9IGludGVsX2Nvbm5lY3Rvci0+cG9ydDsKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUgPSBuZXdfY29ubl9zdGF0ZS0+c3RhdGU7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm9sZF9jb25uX3N0YXRlOwotCXN0cnVjdCBkcm1fY3J0YyAqb2xkX2NydGM7Ci0Jc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwotCWludCBzbG90cywgcmV0ID0gMDsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUgPQorCQlkcm1fYXRvbWljX2dl dF9vbGRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOworCXN0cnVjdCBkcm1fY3J0 YyAqb2xkX2NydGMgPSBvbGRfY29ubl9zdGF0ZS0+Y3J0YywKKwkJCSpuZXdfY3J0YyA9IG5ld19j b25uX3N0YXRlLT5jcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUs ICpuZXdfY3J0Y19zdGF0ZTsKIAotCW9sZF9jb25uX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xk X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKLQlvbGRfY3J0YyA9IG9sZF9jb25u X3N0YXRlLT5jcnRjOwogCWlmICghb2xkX2NydGMpCi0JCXJldHVybiByZXQ7CisJCXJldHVybiAw OwogCi0JY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBv bGRfY3J0Yyk7Ci0Jc2xvdHMgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kcF9t X24udHU7Ci0JaWYgKGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpICYm IHNsb3RzID4gMCkgewotCQlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncjsKLQkJ c3RydWN0IGRybV9lbmNvZGVyICpvbGRfZW5jb2RlcjsKKwlvbGRfY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRlLCBvbGRfY3J0Yyk7CisJaWYgKCFvbGRfY3J0 Y19zdGF0ZSB8fAorCSAgICAhdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSktPmRw X21fbi50dSkKKwkJcmV0dXJuIDA7CiAKLQkJb2xkX2VuY29kZXIgPSBvbGRfY29ubl9zdGF0ZS0+ YmVzdF9lbmNvZGVyOwotCQltZ3IgPSAmZW5jX3RvX21zdChvbGRfZW5jb2RlciktPnByaW1hcnkt PmRwLm1zdF9tZ3I7CisJLyogSWYgd2Ugc3dpdGNoZWQgQ1JUQ3MsIGNsZWFyIHRoZSBwcmV2aW91 cyBvbmUncyBhbGxvY2F0aW9uICovCisJbmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9u ZXdfY3J0Y19zdGF0ZShzdGF0ZSwgb2xkX2NydGMpOworCWlmIChuZXdfY3J0Y19zdGF0ZS0+Y29u bmVjdG9yc19jaGFuZ2VkICYmICFuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKQorCQl0b19pbnRlbF9j cnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKS0+ZHBfbV9uLnR1ID0gMDsKIAotCQlyZXQgPSBkcm1f ZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdGF0ZSwgbWdyLCBzbG90cyk7Ci0JCWlmIChy ZXQpCi0JCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgcmVsZWFzaW5nICVkIHZjcGkgc2xvdHM6JWRc biIsIHNsb3RzLCByZXQpOwotCQllbHNlCi0JCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3Rh dGUpLT5kcF9tX24udHUgPSAwOwotCX0KLQlyZXR1cm4gcmV0OworCWlmIChuZXdfY3J0YykKKwkJ cmV0dXJuIDA7CisKKwlyZXR1cm4gZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3Rh dGUsIG1nciwgcG9ydCk7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX21zdF9kaXNhYmxlX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJt X2RwX21zdF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKaW5kZXgg NTgxMTYzYzhkN2Q3Li40NTFkMDIwZjAxMzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9k cF9tc3RfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaApAQCAt NDI1LDkgKzQyNSwxNSBAQCBzdHJ1Y3QgZHJtX2RwX3BheWxvYWQgewogCiAjZGVmaW5lIHRvX2Rw X21zdF90b3BvbG9neV9zdGF0ZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfc3RhdGUsIGJhc2UpCiAKK3N0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uIHsK KwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0OworCWludCB2Y3BpOworCXN0cnVjdCBsaXN0 X2hlYWQgbmV4dDsKK307CisKIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlIHsKIAlz dHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgYmFzZTsKLQlpbnQgYXZhaWxfc2xvdHM7CisJc3RydWN0 IGxpc3RfaGVhZCB2Y3BpczsKIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncjsK IH07CiAKQEAgLTYzOCwxNCArNjQ0LDE3IEBAIHZvaWQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jf c3VzcGVuZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncik7CiBpbnQgZHJtX2Rw X21zdF90b3BvbG9neV9tZ3JfcmVzdW1lKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAq bWdyKTsKIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICpkcm1fYXRvbWljX2dldF9t c3RfdG9wb2xvZ3lfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCQkJ CQkgICAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpOwotaW50IGRybV9kcF9h dG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJ CQkgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAotCQkJCSAgc3RydWN0IGRy bV9kcF9tc3RfcG9ydCAqcG9ydCwgaW50IHBibik7Ci1pbnQgZHJtX2RwX2F0b21pY19yZWxlYXNl X3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCSAgICAgc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCi0JCQkJICAgICBpbnQgc2xvdHMpOwor aW50IF9fbXVzdF9jaGVjaworZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJICAgICAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptZ3IsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQg cGJuKTsKK2ludCBfX211c3RfY2hlY2sKK2RybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3Rz KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCQkgc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IsCisJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwog aW50IGRybV9kcF9zZW5kX3Bvd2VyX3VwZG93bl9waHkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptZ3IsCiAJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGJvb2wgcG93 ZXJfdXApOworaW50IF9fbXVzdF9jaGVjayBkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwogCiB2b2lkIGRybV9kcF9tc3RfZ2V0X3BvcnRfbWFs bG9jKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwogdm9pZCBkcm1fZHBfbXN0X3B1dF9w b3J0X21hbGxvYyhzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KTsKLS0gCjIuMTkuMgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm91dmVhdSBtYWls aW5nIGxpc3QKTm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg==