From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v6 3/6] drm/dp_mst: Start tracking per-port VCPI allocations Date: Thu, 15 Nov 2018 19:50:05 -0500 Message-ID: <20181116005008.7243-4-lyude@redhat.com> References: <20181116005008.7243-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181116005008.7243-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: intel-gfx@lists.freedesktop.org VGhlcmUgaGFzIGJlZW4gYSBUT0RPIHdhaXRpbmcgZm9yIHF1aXRlIGEgbG9uZyB0aW1lIGluCmRy bV9kcF9tc3RfdG9wb2xvZ3kuYzoKCgkvKiBXZSBjYW5ub3QgcmVseSBvbiBwb3J0LT52Y3BpLm51 bV9zbG90cyB0byB1cGRhdGUKCSAqIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyBhcyB0aGUg cG9ydCBtYXkgbm90IGV4aXN0IGlmIHRoZSBwYXJlbnQKCSAqIGJyYW5jaCBkZXZpY2Ugd2FzIHVu cGx1Z2dlZC4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYnkgdHJhY2tpbmcKCSAqIHBlci1wb3J0IHNs b3QgYWxsb2NhdGlvbiBpbiBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlIGluc3RlYWQgb2YKCSAq IGRlcGVuZGluZyBvbiB0aGUgY2FsbGVyIHRvIHRlbGwgdXMgaG93IG1hbnkgc2xvdHMgdG8gcmVs ZWFzZS4KCSAqLwoKVGhhdCdzIG5vdCB0aGUgb25seSByZWFzb24gd2Ugc2hvdWxkIGZpeCB0aGlz OiBmb3JjaW5nIHRoZSBkcml2ZXIgdG8KdHJhY2sgdGhlIFZDUEkgYWxsb2NhdGlvbnMgdGhyb3Vn aG91dCBhIHN0YXRlJ3MgYXRvbWljIGNoZWNrIGlzCmVycm9yIHByb25lLCBiZWNhdXNlIGl0IG1l YW5zIHRoYXQgZXh0cmEgY2FyZSBoYXMgdG8gYmUgdGFrZW4gd2l0aCB0aGUKb3JkZXIgdGhhdCBk cm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIGFuZApkcm1fZHBfYXRvbWljX3JlbGVhc2Vf dmNwaV9zbG90cygpIGFyZSBjYWxsZWQgaW4gaW4gb3JkZXIgdG8gZW5zdXJlCmlkZW1wb3RlbmN5 LiBDdXJyZW50bHkgdGhlIG9ubHkgZHJpdmVyIGFjdHVhbGx5IHVzaW5nIHRoZXNlIGhlbHBlcnMs Cmk5MTUsIGRvZXNuJ3QgZXZlbiBkbyB0aGlzIGNvcnJlY3RseTogbXVsdGlwbGUgLT5iZXN0X2Vu Y29kZXIoKSBjaGVja3MKd2l0aCBpOTE1J3MgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBu b3QgYmUgaWRlbXBvdGVudCBhbmQgd291bGQKb3Zlci1hbGxvY2F0ZSBWQ1BJIHNsb3RzLCBzb21l dGhpbmcgSSBsZWFybmVkIHRyeWluZyB0byBpbXBsZW1lbnQKZmFsbGJhY2sgcmV0cmFpbmluZyBp biBNU1QuCgpTbzogc2ltcGxpZnkgdGhpcyB3aG9sZSBtZXNzLCBhbmQgdGVhY2ggZHJtX2RwX2F0 b21pY19maW5kX3ZjcGlfc2xvdHMoKQphbmQgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xv dHMoKSB0byB0cmFjayB0aGUgVkNQSSBhbGxvY2F0aW9ucyBmb3IKZWFjaCBwb3J0LiBUaGlzIGFs bG93cyB1cyB0byBlbnN1cmUgaWRlbXBvdGVuY3kgd2l0aG91dCBoYXZpbmcgdG8gcmVseQpvbiB0 aGUgZHJpdmVyIGFzIG11Y2guIEFkZGl0aW9uYWxseTogdGhlIGRyaXZlciBkb2Vzbid0IG5lZWQg dG8gZG8gYW55CmtpbmQgb2YgVkNQSSBzbG90IHRyYWNraW5nIGFueW1vcmUgaWYgaXQgZG9lc24n dCBuZWVkIGl0IGZvciBpdCdzIG93bgppbnRlcm5hbCBzdGF0ZS4KCkFkZGl0aW9uYWxseTsgdGhp cyBhZGRzIGEgbmV3IGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKCkgaGVscGVyIHdoaWNoCm11c3Qg YmUgdXNlZCBieSBhdG9taWMgZHJpdmVycyB0byBwZXJmb3JtIHZhbGlkaXR5IGNoZWNrcyBmb3Ig dGhlIG5ldwpWQ1BJIGFsbG9jYXRpb25zIGluY3VycmVkIGJ5IGEgc3RhdGUuCgpBbHNvOiB1cGRh dGUgdGhlIGRvY3VtZW50YXRpb24gYW5kIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlc2UK L211c3QvIGJlIGNhbGxlZCBieSAvYWxsLyBhdG9taWMgZHJpdmVycyBzdXBwb3J0aW5nIE1TVC4K CkNoYW5nZXMgc2luY2UgdjY6CiAtIEtlZXAgYSBrcmVmIHRvIGFsbCBvZiB0aGUgcG9ydHMgd2Ug aGF2ZSBhbGxvY2F0aW9ucyBvbi4gVGhpcyByZXF1aXJlZAogICBhIGdvb2QgYml0IG9mIGNoYW5n aW5nIHRvIHdoZW4gd2UgY2FsbCBkcm1fZHBfZmluZF92Y3BpX3Nsb3RzKCksCiAgIG1haW5seSB0 aGF0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2Ugb25seSByZWRvIFZDUEkgYWxsb2NhdGlvbnMg b24KICAgYWN0dWFsIG1vZGUgb3IgQ1JUQyBjaGFuZ2VzLCBub3QgY3J0Y19zdGF0ZS0+YWN0aXZl IGNoYW5nZXMuCiAgIEFkZGl0aW9uYWxseSwgd2Ugbm8gbG9uZ2VyIHRha2UgdGhlIHJlZ2lzdHJh dGlvbiBvZiB0aGUgRFJNIGNvbm5lY3RvcgogICBmb3IgZWFjaCBwb3J0IGludG8gYWNjb3VudCBi ZWNhdXNlIHNvIGxvbmcgYXMgd2UgaGF2ZSBhIGtyZWYgdG8gdGhlCiAgIHBvcnQgaW4gdGhlIG5l dyBvciBwcmV2aW91cyBhdG9taWMgc3RhdGUsIHRoZSBjb25uZWN0b3Igd2lsbCBzdGF5CiAgIHJl Z2lzdGVyZWQuCiAtIFVzZSB0aGUgc21hbGwgY2hhbmdlcyB0byBkcm1fZHBfcHV0X3BvcnQoKSB0 byBhZGQgZXZlbiBtb3JlIGVycm9yCiAgIGNoZWNraW5nIHRvIG1ha2UgbWlzdXNhZ2Ugb2YgdGhl IGhlbHBlcnMgbW9yZSBvYnZpb3VzLiBJIGFkZGVkIHRoaXMKICAgYWZ0ZXIgaGF2aW5nIHRvIGNo YXNlIGRvd24gdmFyaW91cyB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIHRoYXQKICAgc3RhcnRl ZCBwb3BwaW5nIHVwIGZyb20gdGhlIG5ldyBoZWxwZXJzIHNvIG5vIG9uZSBlbHNlIGhhcyB0bwog ICB0cm91Ymxlc2hvb3QgdGhhdC4KIC0gTW92ZSBzb21lIGFjY2lkZW50YWwgRFJNX0RFQlVHX0tN UygpIGNhbGxzIHRvIERSTV9ERUJVR19BVE9NSUMoKQogLSBVcGRhdGUgZG9jdW1lbnRhdGlvbiBh Z2Fpbiwgbm90ZSB0aGF0IGZpbmQvcmVsZWFzZSgpIHNob3VsZCBib3RoIG5vdCBiZQogICBjYWxs ZWQgb24gdGhlIHNhbWUgcG9ydCBpbiBhIHNpbmdsZSBhdG9taWMgY2hlY2sgcGhhc2UgKGJ1dCBt dWx0aXBsZQogICBjYWxscyB0byBvbmUgb3IgdGhlIG90aGVyIGlzIE9LKQoKQ2hhbmdlcyBzaW5j ZSB2NDoKIC0gRG9uJ3Qgc2tpcCB0aGUgYXRvbWljIGNoZWNrcyBmb3IgVkNQSSBhbGxvY2F0aW9u cyBpZiBubyBuZXcgVkNQSQogICBhbGxvY2F0aW9ucyBoYXBwZW4gaW4gYSBzdGF0ZS4gVGhpcyBt YWtlcyB0aGUgbmV4dCBjaGFuZ2UgSSdtIGFib3V0CiAgIHRvIGxpc3QgaGVyZSBhIGxvdCBlYXNp ZXIgdG8gaW1wbGVtZW50LgogLSBEb24ndCBpZ25vcmUgVkNQSSBhbGxvY2F0aW9ucyBvbiBkZXN0 cm95ZWQgcG9ydHMsIGluc3RlYWQgZW5zdXJlIHRoYXQKICAgd2hlbiBwb3J0cyBhcmUgZGVzdHJv eWVkIGFuZCBzdGlsbCBoYXZlIFZDUEkgYWxsb2NhdGlvbnMgaW4gdGhlCiAgIHRvcG9sb2d5IHN0 YXRlLCB0aGUgb25seSBzdGF0ZSBjaGFuZ2VzIGFsbG93ZWQgYXJlIHJlbGVhc2luZyBzYWlkCiAg IHBvcnRzJyBWQ1BJLiBUaGlzIHByZXZlbnRzIGEgc3RhdGUgd2l0aCBhIG1peCBvZiBWQ1BJIGFs bG9jYXRpb25zCiAgIGZyb20gZGVzdHJveWVkIHBvcnRzLCBhbmQgYWxsb2NhdGlvbnMgZnJvbSB2 YWxpZCBwb3J0cy4KCkNoYW5nZXMgc2luY2UgdjM6CiAtIERvbid0IHJlbGVhc2UgVkNQSSBhbGxv Y2F0aW9ucyBpbiB0aGUgdG9wb2xvZ3kgc3RhdGUgaW1tZWRpYXRlbHkgaW4KICAgZHJtX2RwX2F0 b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoKSwgaW5zdGVhZCBtYXJrIHRoZW0gYXMgMCBhbmQgc2tp cAogICBvdmVyIHRoZW0gaW4gZHJtX2RwX21zdF9kdXBsaWNhdGVfc3RhdGUoKS4gVGhpcyBtYWtl cyBpdCBzbwogICBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIGlzIHN0aWxsIGlk ZW1wb3RlbnQgd2hpbGUgYWxzbwogICB0aHJvd2luZyB3YXJuaW5ncyBpZiB0aGUgZHJpdmVyIG1l c3NlcyB1cCBpdCdzIGJvb2sga2VlcGluZyBhbmQgdHJpZXMKICAgdG8gcmVsZWFzZSBWQ1BJIHNs b3RzIG9uIGEgcG9ydCB0aGF0IGRvZXNuJ3QgaGF2ZSBhbnkgcHJlLWV4aXN0aW5nCiAgIFZDUEkg YWxsb2NhdGlvbiAtIGRhbnZldAogLSBDaGFuZ2UgbXN0X3N0YXRlL3N0YXRlIGluIHNvbWUgZGVi dWdnaW5nIG1lc3NhZ2VzIHRvICJtc3Qgc3RhdGUiCgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBVc2Ug a21lbWR1cCgpIGZvciBkdXBsaWNhdGluZyBNU1Qgc3RhdGUgLSBkYW52ZXQKIC0gTW92ZSBwb3J0 IHZhbGlkYXRpb24gb3V0IG9mIGR1cGxpY2F0ZSBzdGF0ZSBjYWxsYmFjayAtIGRhbnZldAogLSBI YW5kbGUgbG9vcGluZyB0aHJvdWdoIE1TVCB0b3BvbG9neSBzdGF0ZXMgaW4KICAgZHJtX2RwX21z dF9hdG9taWNfY2hlY2soKSBzbyB0aGUgZHJpdmVyIGRvZXNuJ3QgaGF2ZSB0byBkbyBpdAogLSBG aXggZG9jdW1lbnRhdGlvbiBpbiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpCiAtIE1v dmUgdGhlIGF0b21pYyBjaGVjayBmb3IgZWFjaCBpbmRpdmlkdWFsIHRvcG9sb2d5IHN0YXRlIGlu dG8gaXQncwogICBvd24gZnVuY3Rpb24sIHJlZHVjZXMgaW5kZW50aW5nCiAtIERvbid0IGNvbnNp ZGVyICJzdGFsZSIgTVNUIHBvcnRzIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGJhbmR3aWR0aAogICBy ZXF1aXJlbWVudHMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugb3JpZ2luYWxseSB3ZSByZWxpZWQg b24gdGhlCiAgIHN0YXRlIGR1cGxpY2F0aW9uIGZ1bmN0aW9ucyB0byBwcnVuZSBhbnkgc3RhbGUg cG9ydHMgZnJvbSB0aGUgbmV3CiAgIHN0YXRlLCB3aGljaCB3b3VsZCBwcmV2ZW50IHVzIGZyb20g aW5jb3JyZWN0bHkgY29uc2lkZXJpbmcgdGhlaXIKICAgYmFuZHdpZHRoIHJlcXVpcmVtZW50cyBh bG9uZ3NpZGUgbGVnaXRpbWF0ZSBuZXcgcGF5bG9hZHMuCiAtIEFkZCBmdW5jdGlvbiByZWZlcmVu Y2VzIGluIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgLSBkYW52ZXQKIC0gQW5u b3RhdGUgYXRvbWljIFZDUEkgYW5kIGF0b21pYyBjaGVjayBmdW5jdGlvbnMgd2l0aCBfX211c3Rf Y2hlY2sKICAgLSBkYW52ZXQKCkNoYW5nZXMgc2luY2UgdjE6CiAtIERvbid0IHVzZSB0aGUgbm93 LXJlbW92ZWQgLT5hdG9taWNfY2hlY2soKSBmb3IgcHJpdmF0ZSBvYmplY3RzIGhvb2ssCiAgIGp1 c3QgZ2l2ZSBkcml2ZXJzIGEgZnVuY3Rpb24gdG8gY2FsbCB0aGVtc2VsdmVzCgpTaWduZWQtb2Zm LWJ5OiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3Bv bG9neS5jIHwgMjk0ICsrKysrKysrKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jICAgfCAgNjQgKysrLS0tCiBpbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5o ICAgICAgIHwgIDI0ICsrLQogNCBmaWxlcyBjaGFuZ2VkLCAzMTkgaW5zZXJ0aW9ucygrKSwgNjcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9w b2xvZ3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKaW5kZXggMDBm YmU3YTI2OTlkLi4xODNkMGU4MzJjZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZHBfbXN0X3RvcG9sb2d5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xv Z3kuYwpAQCAtMjYxNywyMSArMjYxNyw0MiBAQCBzdGF0aWMgaW50IGRybV9kcF9pbml0X3ZjcGko c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiB9CiAKIC8qKgotICogZHJtX2Rw X2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKSAtIEZpbmQgYW5kIGFkZCB2Y3BpIHNsb3RzIHRvIHRo ZSBzdGF0ZQorICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKSAtIEZpbmQgYW5kIGFk ZCBWQ1BJIHNsb3RzIHRvIHRoZSBzdGF0ZQogICogQHN0YXRlOiBnbG9iYWwgYXRvbWljIHN0YXRl CiAgKiBAbWdyOiBNU1QgdG9wb2xvZ3kgbWFuYWdlciBmb3IgdGhlIHBvcnQKICAqIEBwb3J0OiBw b3J0IHRvIGZpbmQgdmNwaSBzbG90cyBmb3IKICAqIEBwYm46IGJhbmR3aWR0aCByZXF1aXJlZCBm b3IgdGhlIG1vZGUgaW4gUEJOCiAgKgotICogUkVUVVJOUzoKLSAqIFRvdGFsIHNsb3RzIGluIHRo ZSBhdG9taWMgc3RhdGUgYXNzaWduZWQgZm9yIHRoaXMgcG9ydCBvciBlcnJvcgorICogQWxsb2Nh dGVzIFZDUEkgc2xvdHMgdG8gQHBvcnQsIHJlcGxhY2luZyBhbnkgcHJldmlvdXMgVkNQSSBhbGxv Y2F0aW9ucyBpdAorICogbWF5IGhhdmUgaGFkLiBBbnkgYXRvbWljIGRyaXZlcnMgd2hpY2ggc3Vw cG9ydCBNU1QgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24KKyAqIGluIHRoZWlyICZkcm1fZW5jb2Rl cl9oZWxwZXJfZnVuY3MuYXRvbWljX2NoZWNrKCkgY2FsbGJhY2sgdG8gY2hhbmdlIHRoZQorICog Y3VycmVudCBWQ1BJIGFsbG9jYXRpb24gZm9yIHRoZSBuZXcgc3RhdGUsIGJ1dCBvbmx5IHdoZW4K KyAqICZkcm1fY3J0Y19zdGF0ZS5tb2RlX2NoYW5nZWQgb3IgJmRybV9jcnRjX3N0YXRlLmNvbm5l Y3RvcnNfY2hhbmdlZCBpcyBzZXQKKyAqIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggdXNl cnNwYWNlIGFwcGxpY2F0aW9ucyB0aGF0IHN0aWxsIHVzZSB0aGUKKyAqIGxlZ2FjeSBtb2Rlc2V0 dGluZyBVQVBJLgorICoKKyAqIEFsbG9jYXRpb25zIHNldCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBu b3QgY2hlY2tlZCBhZ2FpbnN0IHRoZSBiYW5kd2lkdGgKKyAqIHJlc3RyYWludHMgb2YgQG1nciB1 bnRpbCB0aGUgZHJpdmVyIGNhbGxzIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKCkuCisgKgorICog QWRkaXRpb25hbGx5LCBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGlt ZXMgb24gdGhlIHNhbWUKKyAqIEBwb3J0IGFzIG5lZWRlZC4gSXQgaXMgbm90IE9LIGhvd2V2ZXIs IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBhbmQKKyAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3Bp X3Nsb3RzKCkgaW4gdGhlIHNhbWUgYXRvbWljIGNoZWNrIHBoYXNlLgorICoKKyAqIFNlZSBhbHNv OgorICogZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoKQorICogZHJtX2RwX21zdF9h dG9taWNfY2hlY2soKQorICoKKyAqIFJldHVybnM6CisgKiBUb3RhbCBzbG90cyBpbiB0aGUgYXRv bWljIHN0YXRlIGFzc2lnbmVkIGZvciB0aGlzIHBvcnQsIG9yIGEgbmVnYXRpdmUgZXJyb3IKKyAq IGNvZGUgaWYgdGhlIHBvcnQgbm8gbG9uZ2VyIGV4aXN0cwogICovCiBpbnQgZHJtX2RwX2F0b21p Y19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCSAg c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJCQkJICBzdHJ1Y3QgZHJtX2Rw X21zdF9wb3J0ICpwb3J0LCBpbnQgcGJuKQogewogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X3N0YXRlICp0b3BvbG9neV9zdGF0ZTsKLQlpbnQgcmVxX3Nsb3RzOworCXN0cnVjdCBkcm1fZHBf dmNwaV9hbGxvY2F0aW9uICpwb3MsICp2Y3BpID0gTlVMTDsKKwlpbnQgcHJldl9zbG90cywgcmVx X3Nsb3RzLCByZXQ7CiAKIAl0b3BvbG9neV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X21zdF90b3Bv bG9neV9zdGF0ZShzdGF0ZSwgbWdyKTsKIAlpZiAoSVNfRVJSKHRvcG9sb2d5X3N0YXRlKSkKQEAg LTI2NDAsMjAgKzI2NjEsNjAgQEAgaW50IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlwb3J0ID0gZHJtX2RwX2dldF92YWxpZGF0 ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKIAlpZiAocG9ydCA9PSBOVUxMKQogCQlyZXR1cm4gLUVJ TlZBTDsKLQlyZXFfc2xvdHMgPSBESVZfUk9VTkRfVVAocGJuLCBtZ3ItPnBibl9kaXYpOwotCURS TV9ERUJVR19LTVMoInZjcGkgc2xvdHMgcmVxPSVkLCBhdmFpbD0lZFxuIiwKLQkJCXJlcV9zbG90 cywgdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKTsKIAotCWlmIChyZXFfc2xvdHMgPiB0b3Bv bG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpIHsKLQkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwotCQly ZXR1cm4gLUVOT1NQQzsKKwl0b3BvbG9neV9zdGF0ZS0+dmNwaV9hbGxvY2F0ZWQgPSB0cnVlOwor CisJLyogRmluZCB0aGUgY3VycmVudCBhbGxvY2F0aW9uIGZvciB0aGlzIHBvcnQsIGlmIGFueSAq LworCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmdG9wb2xvZ3lfc3RhdGUtPnZjcGlzLCBuZXh0 KSB7CisJCWlmIChwb3MtPnBvcnQgPT0gcG9ydCkgeworCQkJdmNwaSA9IHBvczsKKwkJCXByZXZf c2xvdHMgPSB2Y3BpLT52Y3BpOworCisJCQkvKgorCQkJICogVGhpcyBzaG91bGQgbmV2ZXIgaGFw cGVuLCB1bmxlc3MgdGhlIGRyaXZlciB0cmllcworCQkJICogcmVsZWFzaW5nIGFuZCBhbGxvY2F0 aW5nIHRoZSBzYW1lIFZDUEkgYWxsb2NhdGlvbiwKKwkJCSAqIHdoaWNoIGlzIGFuIGVycm9yCisJ CQkgKi8KKwkJCWlmIChXQVJOX09OKCFwcmV2X3Nsb3RzKSkgeworCQkJCURSTV9FUlJPUigiY2Fu bm90IGFsbG9jYXRlIGFuZCByZWxlYXNlIFZDUEkgb24gW01TVCBQT1JUOiVwXSBpbiB0aGUgc2Ft ZSBzdGF0ZVxuIiwKKwkJCQkJICBwb3J0KTsKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCX0KKwor CQkJYnJlYWs7CisJCX0KIAl9CisJaWYgKCF2Y3BpKQorCQlwcmV2X3Nsb3RzID0gMDsKIAotCXRv cG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyAtPSByZXFfc2xvdHM7Ci0JRFJNX0RFQlVHX0tNUygi dmNwaSBzbG90cyBhdmFpbD0lZCIsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyk7CisJcmVx X3Nsb3RzID0gRElWX1JPVU5EX1VQKHBibiwgbWdyLT5wYm5fZGl2KTsKKworCURSTV9ERUJVR19B VE9NSUMoIltDT05ORUNUT1I6JWQ6JXNdIFtNU1QgUE9SVDolcF0gVkNQSSAlZCAtPiAlZFxuIiwK KwkJCSBwb3J0LT5jb25uZWN0b3ItPmJhc2UuaWQsIHBvcnQtPmNvbm5lY3Rvci0+bmFtZSwKKwkJ CSBwb3J0LCBwcmV2X3Nsb3RzLCByZXFfc2xvdHMpOworCisJLyogQWRkIHRoZSBuZXcgYWxsb2Nh dGlvbiB0byB0aGUgc3RhdGUgKi8KKwlpZiAoIXZjcGkpIHsKKwkJdmNwaSA9IGt6YWxsb2Moc2l6 ZW9mKCp2Y3BpKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghdmNwaSkgeworCQkJcmV0ID0gLUVOT01F TTsKKwkJCWdvdG8gb3V0OworCQl9CiAKKwkJdmNwaS0+cG9ydCA9IGRybV9kcF9nZXRfdmFsaWRh dGVkX3BvcnRfcmVmKG1nciwgcG9ydCk7CisJCWlmICghdmNwaS0+cG9ydCkgeworCQkJcmV0ID0g LUVJTlZBTDsKKwkJCWtmcmVlKHZjcGkpOworCQkJZ290byBvdXQ7CisJCX0KKwkJbGlzdF9hZGQo JnZjcGktPm5leHQsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMpOworCX0KKwl2Y3BpLT52Y3BpID0g cmVxX3Nsb3RzOworCisJcmV0ID0gcmVxX3Nsb3RzOworb3V0OgogCWRybV9kcF9wdXRfcG9ydChw b3J0KTsKLQlyZXR1cm4gcmVxX3Nsb3RzOworCXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9M KGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKTsKIApAQCAtMjY2MSwzMSArMjcyMiw2NiBA QCBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKTsKICAqIGRybV9k cF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgLSBSZWxlYXNlIGFsbG9jYXRlZCB2Y3BpIHNs b3RzCiAgKiBAc3RhdGU6IGdsb2JhbCBhdG9taWMgc3RhdGUKICAqIEBtZ3I6IE1TVCB0b3BvbG9n eSBtYW5hZ2VyIGZvciB0aGUgcG9ydAotICogQHNsb3RzOiBudW1iZXIgb2YgdmNwaSBzbG90cyB0 byByZWxlYXNlCisgKiBAcG9ydDogVGhlIHBvcnQgdG8gcmVsZWFzZSB0aGUgVkNQSSBzbG90cyBm cm9tCiAgKgotICogUkVUVVJOUzoKLSAqIDAgaWYgQHNsb3RzIHdlcmUgYWRkZWQgYmFjayB0byAm ZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgb3IKLSAqIG5lZ2F0aXZlIGVy cm9yIGNvZGUKKyAqIFJlbGVhc2VzIGFueSBWQ1BJIHNsb3RzIHRoYXQgaGF2ZSBiZWVuIGFsbG9j YXRlZCB0byBhIHBvcnQgaW4gdGhlIGF0b21pYworICogc3RhdGUuIEFueSBhdG9taWMgZHJpdmVy cyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBpbgorICogdGhlaXIg JmRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzLmF0b21pY19jaGVjaygpIGNhbGxiYWNrIHdoZW4g dGhlCisgKiBjb25uZWN0b3Igd2lsbCBubyBsb25nZXIgaGF2ZSBWQ1BJIGFsbG9jYXRlZCAoZS5n LiBiZWNhdXNlIGl0J3MgQ1JUQyB3YXMKKyAqIHJlbW92ZWQpIHdoZW4gaXQgaGFkIFZDUEkgYWxs b2NhdGVkIGluIHRoZSBwcmV2aW91cyBhdG9taWMgc3RhdGUuCisgKgorICogSXQgaXMgT0sgdG8g Y2FsbCB0aGlzIGV2ZW4gaWYgQHBvcnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0u CisgKiBBZGRpdGlvbmFsbHksIGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBtdWx0aXBs ZSB0aW1lcyBvbiB0aGUgc2FtZQorICogQHBvcnQgYXMgbmVlZGVkLiBJdCBpcyBub3QgT0sgaG93 ZXZlciwgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFuZAorICogZHJtX2RwX2F0b21pY19maW5kX3Zj cGlfc2xvdHMoKSBvbiB0aGUgc2FtZSBAcG9ydCBpbiBhIHNpbmdsZSBhdG9taWMgY2hlY2sKKyAq IHBoYXNlLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xv dHMoKQorICogZHJtX2RwX21zdF9hdG9taWNfY2hlY2soKQorICoKKyAqIFJldHVybnM6CisgKiAw IGlmIGFsbCBzbG90cyBmb3IgdGhpcyBwb3J0IHdlcmUgYWRkZWQgYmFjayB0bworICogJmRybV9k cF9tc3RfdG9wb2xvZ3lfc3RhdGUuYXZhaWxfc2xvdHMgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQog ICovCiBpbnQgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLAogCQkJCSAgICAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IsCi0JCQkJICAgICBpbnQgc2xvdHMpCisJCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9w b3J0ICpwb3J0KQogewogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICp0b3BvbG9n eV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9zOworCWJvb2wgZm91 bmQgPSBmYWxzZTsKIAogCXRvcG9sb2d5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfbXN0X3RvcG9s b2d5X3N0YXRlKHN0YXRlLCBtZ3IpOwogCWlmIChJU19FUlIodG9wb2xvZ3lfc3RhdGUpKQogCQly ZXR1cm4gUFRSX0VSUih0b3BvbG9neV9zdGF0ZSk7CiAKLQkvKiBXZSBjYW5ub3QgcmVseSBvbiBw b3J0LT52Y3BpLm51bV9zbG90cyB0byB1cGRhdGUKLQkgKiB0b3BvbG9neV9zdGF0ZS0+YXZhaWxf c2xvdHMgYXMgdGhlIHBvcnQgbWF5IG5vdCBleGlzdCBpZiB0aGUgcGFyZW50Ci0JICogYnJhbmNo IGRldmljZSB3YXMgdW5wbHVnZ2VkLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBieSB0cmFja2luZwot CSAqIHBlci1wb3J0IHNsb3QgYWxsb2NhdGlvbiBpbiBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRl IGluc3RlYWQgb2YKLQkgKiBkZXBlbmRpbmcgb24gdGhlIGNhbGxlciB0byB0ZWxsIHVzIGhvdyBt YW55IHNsb3RzIHRvIHJlbGVhc2UuCi0JICovCi0JdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3Rz ICs9IHNsb3RzOwotCURSTV9ERUJVR19LTVMoInZjcGkgc2xvdHMgcmVsZWFzZWQ9JWQsIGF2YWls PSVkXG4iLAotCQkJc2xvdHMsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyk7CisJbGlzdF9m b3JfZWFjaF9lbnRyeShwb3MsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJaWYg KHBvcy0+cG9ydCA9PSBwb3J0KSB7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVhazsKKwkJfQor CX0KKwlpZiAoV0FSTl9PTighZm91bmQpKSB7CisJCURSTV9FUlJPUigibm8gVkNQSSBmb3IgW01T VCBQT1JUOiVwXSBmb3VuZCBpbiBtc3Qgc3RhdGUgJXBcbiIsCisJCQkgIHBvcnQsICZ0b3BvbG9n eV9zdGF0ZS0+YmFzZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCURSTV9ERUJVR19BVE9N SUMoIltNU1QgUE9SVDolcF0gVkNQSSAlZCAtPiAwXG4iLCBwb3J0LCBwb3MtPnZjcGkpOworCWlm IChwb3MtPnZjcGkpIHsKKwkJLyoKKwkJICogVGhpcyBzaG91bGQgYmUgc2FmZS1hcyB0aGUgcHJl dmlvdXMgc3RhdGUgd2lsbCBzdGlsbCBob2xkIGEKKwkJICogcmVmZXJlbmNlIHRvIHRoaXMgcG9y dCB1bnRpbCB3ZSBzd2FwIHN0YXRlcy4gSWYgaXQncyBub3QsCisJCSAqIHRoZSBkcml2ZXIgaGFz IGEgYm9va2tlZXBpbmcgZXJyb3IKKwkJICovCisJCWlmIChXQVJOX09OKGRybV9kcF9wdXRfcG9y dChwb3J0KSkpIHsKKwkJCURSTV9FUlJPUigiY2Fubm90IGFsbG9jYXRlIGFuZCByZWxlYXNlIFZD UEkgb24gW01TVCBQT1JUOiVwXSBpbiB0aGUgc2FtZSBzdGF0ZVxuIiwKKwkJCQkgIHBvcnQpOwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJcG9zLT52Y3BpID0gMDsKKwl9CiAKIAlyZXR1cm4g MDsKIH0KQEAgLTMxMTUsMTUgKzMyMTEsNDUgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lf Y29ubmVjdG9yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogc3RhdGljIHN0cnVjdCBk cm1fcHJpdmF0ZV9zdGF0ZSAqCiBkcm1fZHBfbXN0X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJt X3ByaXZhdGVfb2JqICpvYmopCiB7Ci0Jc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUg KnN0YXRlOworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICpzdGF0ZSwgKm9sZF9z dGF0ZSA9CisJCXRvX2RwX21zdF90b3BvbG9neV9zdGF0ZShvYmotPnN0YXRlKTsKKwlzdHJ1Y3Qg ZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9zLCAqdmNwaTsKIAotCXN0YXRlID0ga21lbWR1cChv YmotPnN0YXRlLCBzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7CisJc3RhdGUgPSBrbWVtZHVw KG9sZF9zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwogCWlmICghc3RhdGUpCiAJ CXJldHVybiBOVUxMOwogCiAJX19kcm1fYXRvbWljX2hlbHBlcl9wcml2YXRlX29ial9kdXBsaWNh dGVfc3RhdGUob2JqLCAmc3RhdGUtPmJhc2UpOwogCisJSU5JVF9MSVNUX0hFQUQoJnN0YXRlLT52 Y3Bpcyk7CisJc3RhdGUtPnZjcGlfYWxsb2NhdGVkID0gZmFsc2U7CisKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KHBvcywgJm9sZF9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJLyogUHJ1bmUgbGVmdG92 ZXIgZnJlZWQgVkNQSSBhbGxvY2F0aW9ucyAqLworCQlpZiAoIXBvcy0+dmNwaSkKKwkJCWNvbnRp bnVlOworCisJCXZjcGkgPSBrbWVtZHVwKHBvcywgc2l6ZW9mKCp2Y3BpKSwgR0ZQX0tFUk5FTCk7 CisJCWlmICghdmNwaSkKKwkJCWdvdG8gZmFpbDsKKworCQkvKiBUYWtlIGEgcGxhaW4gb2xkIGty ZWYgaGVyZSBhbmQgZG9uJ3QgdmFsaWRhdGUgdGhlIHBvcnQsIGFzCisJCSAqIGl0J3MgdG9wb2xv Z3kgbWlnaHQgbm90IGV2ZW4gZXhpc3QgYW55bW9yZQorCQkgKi8KKwkJa3JlZl9nZXQoJnZjcGkt PnBvcnQtPmtyZWYpOworCQlsaXN0X2FkZCgmdmNwaS0+bmV4dCwgJnN0YXRlLT52Y3Bpcyk7CisJ fQorCiAJcmV0dXJuICZzdGF0ZS0+YmFzZTsKKworZmFpbDoKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUocG9zLCB2Y3BpLCAmc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCWRybV9kcF9wdXRfcG9y dChwb3MtPnBvcnQpOworCQlrZnJlZShwb3MpOworCX0KKwlrZnJlZShzdGF0ZSk7CisKKwlyZXR1 cm4gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQgZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlKHN0cnVj dCBkcm1fcHJpdmF0ZV9vYmogKm9iaiwKQEAgLTMxMzEsMTQgKzMyNTcsMTE2IEBAIHN0YXRpYyB2 b2lkIGRybV9kcF9tc3RfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmos CiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1zdF9zdGF0ZSA9CiAJCXRv X2RwX21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSk7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9j YXRpb24gKnBvcywgKnRtcDsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIHRtcCwg Jm1zdF9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJLyogV2Ugb25seSBrZWVwIHJlZmVyZW5jZXMg dG8gcG9ydHMgd2l0aCBub24temVybyBWQ1BJcyAqLworCQlpZiAocG9zLT52Y3BpKQorCQkJZHJt X2RwX3B1dF9wb3J0KHBvcy0+cG9ydCk7CisJCWtmcmVlKHBvcyk7CisJfQogCiAJa2ZyZWUobXN0 X3N0YXRlKTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZV9mdW5j cyBtc3Rfc3RhdGVfZnVuY3MgPSB7CitzdGF0aWMgaW5saW5lIGludAorZHJtX2RwX21zdF9hdG9t aWNfY2hlY2tfdG9wb2xvZ3lfc3RhdGUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsCisJCQkJICAgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICptc3Rfc3Rh dGUpCit7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnZjcGk7CisJc3RydWN0IGRy bV9kcF9tc3RfcG9ydCAqcG9ydDsKKwlpbnQgYXZhaWxfc2xvdHMgPSA2MywgcmV0OworCisJLyog VGhlcmUncyBubyBwb3NzaWJsZSBzY2VuYXJpbyB3aGVyZSByZWxlYXNpbmcgVkNQSSBvciBrZWVw aW5nIGl0IHRoZQorCSAqIHNhbWUgd291bGQgbWFrZSB0aGUgc3RhdGUgaW52YWxpZAorCSAqLwor CWlmICghbXN0X3N0YXRlLT52Y3BpX2FsbG9jYXRlZCkgeworCQlEUk1fREVCVUdfQVRPTUlDKCJb TVNUIE1HUjolcF0gc3RhdGUgJXAgYWxsb2NhdGVzIG5vIFZDUEksIGNoZWNrIHNraXBwZWRcbiIs CisJCQkJIG1nciwgJm1zdF9zdGF0ZS0+YmFzZSk7CisJCXJldHVybiAwOworCX0KKworCWxpc3Rf Zm9yX2VhY2hfZW50cnkodmNwaSwgJm1zdF9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJLyogUmVs ZWFzaW5nIFZDUEkgaXMgYWx3YXlzIE9LLWV2ZW4gaWYgdGhlIHBvcnQgaXMgZ29uZSAqLworCQlp ZiAoIXZjcGktPnZjcGkpIHsKKwkJCURSTV9ERUJVR19BVE9NSUMoIltNU1QgUE9SVDolcF0gcmVs ZWFzZXMgYWxsIFZDUEkgc2xvdHNcbiIsCisJCQkJCSB2Y3BpLT5wb3J0KTsKKwkJCWNvbnRpbnVl OworCQl9CisKKwkJcG9ydCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1nciwgdmNw aS0+cG9ydCk7CisJCWlmICghcG9ydCkgeworCQkJRFJNX0RFQlVHX0FUT01JQygiW01TVCBQT1JU OiVwXSBpcyBnb25lIGJ1dCBzdGlsbCBoYXMgVkNQSSwgY2Fubm90IGFkZCBuZXcgVkNQSVxuIiwK KwkJCQkJIHZjcGktPnBvcnQpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlEUk1fREVC VUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIHJlcXVpcmVzICVkIHZjcGkgc2xvdHNcbiIsCisJCQkJ IHZjcGktPnBvcnQsIHZjcGktPnZjcGkpOworCisJCWF2YWlsX3Nsb3RzIC09IHZjcGktPnZjcGk7 CisJCWlmIChhdmFpbF9zbG90cyA8IDApIHsKKwkJCURSTV9ERUJVR19BVE9NSUMoIltNU1QgUE9S VDolcF0gbm90IGVub3VnaCBWQ1BJIHNsb3RzIGluIG1zdCBzdGF0ZSAlcCAoYXZhaWw9JWQpXG4i LAorCQkJCQkgdmNwaS0+cG9ydCwgbXN0X3N0YXRlLAorCQkJCQkgYXZhaWxfc2xvdHMgKyB2Y3Bp LT52Y3BpKTsKKwkJCXJldCA9IC1FTk9TUEM7CisJCQlnb3RvIHBvcnRfZmFpbDsKKwkJfQorCisJ CWRybV9kcF9wdXRfcG9ydChwb3J0KTsKKwl9CisJRFJNX0RFQlVHX0FUT01JQygiW01TVCBNR1I6 JXBdIG1zdCBzdGF0ZSAlcCBWQ1BJIGF2YWlsPSVkIHVzZWQ9JWRcbiIsCisJCQkgbWdyLCBtc3Rf c3RhdGUsIGF2YWlsX3Nsb3RzLAorCQkJIDYzIC0gYXZhaWxfc2xvdHMpOworCisJcmV0dXJuIDA7 Citwb3J0X2ZhaWw6CisJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCXJldHVybiByZXQ7Cit9CisK Ky8qKgorICogZHJtX2RwX21zdF9hdG9taWNfY2hlY2sgLSBDaGVjayB0aGF0IHRoZSBuZXcgc3Rh dGUgb2YgYW4gTVNUIHRvcG9sb2d5IGluIGFuCisgKiBhdG9taWMgdXBkYXRlIGlzIHZhbGlkCisg KiBAc3RhdGU6IFBvaW50ZXIgdG8gdGhlIG5ldyAmc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf c3RhdGUKKyAqCisgKiBDaGVja3MgdGhlIGdpdmVuIHRvcG9sb2d5IHN0YXRlIGZvciBhbiBhdG9t aWMgdXBkYXRlIHRvIGVuc3VyZSB0aGF0IGl0J3MKKyAqIHZhbGlkLiBUaGlzIGluY2x1ZGVzIGNo ZWNraW5nIHdoZXRoZXIgdGhlcmUncyBlbm91Z2ggYmFuZHdpZHRoIHRvIHN1cHBvcnQKKyAqIHRo ZSBuZXcgVkNQSSBhbGxvY2F0aW9ucyBpbiB0aGUgYXRvbWljIHVwZGF0ZS4KKyAqCisgKiBBbnkg YXRvbWljIGRyaXZlcnMgc3VwcG9ydGluZyBEUCBNU1QgbXVzdCBtYWtlIHN1cmUgdG8gY2FsbCB0 aGlzIGFmdGVyCisgKiBjaGVja2luZyB0aGUgcmVzdCBvZiB0aGVpciBzdGF0ZSBpbiB0aGVpcgor ICogJmRybV9tb2RlX2NvbmZpZ19mdW5jcy5hdG9taWNfY2hlY2soKSBjYWxsYmFjay4KKyAqCisg KiBTZWUgYWxzbzoKKyAqIGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkKKyAqIGRybV9k cF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkKKyAqCisgKiBSZXR1cm5zOgorICoKKyAqIDAg aWYgdGhlIG5ldyBzdGF0ZSBpcyB2YWxpZCwgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2Uu CisgKi8KK2ludCBkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3I7CisJc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1zdF9zdGF0ZTsKKwlpbnQgaSwgcmV0ID0g MDsKKworCWZvcl9lYWNoX25ld19tc3RfbWdyX2luX3N0YXRlKHN0YXRlLCBtZ3IsIG1zdF9zdGF0 ZSwgaSkgeworCQlyZXQgPSBkcm1fZHBfbXN0X2F0b21pY19jaGVja190b3BvbG9neV9zdGF0ZSht Z3IsIG1zdF9zdGF0ZSk7CisJCWlmIChyZXQpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0 OworfQorRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X2F0b21pY19jaGVjayk7CisKK2NvbnN0IHN0 cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZV9mdW5jcyBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlX2Z1 bmNzID0gewogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2RwX21zdF9kdXBsaWNhdGVf c3RhdGUsCiAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2RwX21zdF9kZXN0cm95X3N0YXRl LAogfTsKK0VYUE9SVF9TWU1CT0woZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZV9mdW5jcyk7CiAK IC8qKgogICogZHJtX2F0b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRlOiBnZXQgTVNUIHRvcG9s b2d5IHN0YXRlCkBAIC0zMjE2LDEzICszNDQ0LDExIEBAIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5 X21ncl9pbml0KHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogCQlyZXR1cm4g LUVOT01FTTsKIAogCW1zdF9zdGF0ZS0+bWdyID0gbWdyOwotCi0JLyogbWF4LiB0aW1lIHNsb3Rz IC0gb25lIHNsb3QgZm9yIE1UUCBoZWFkZXIgKi8KLQltc3Rfc3RhdGUtPmF2YWlsX3Nsb3RzID0g NjM7CisJSU5JVF9MSVNUX0hFQUQoJm1zdF9zdGF0ZS0+dmNwaXMpOwogCiAJZHJtX2F0b21pY19w cml2YXRlX29ial9pbml0KCZtZ3ItPmJhc2UsCiAJCQkJICAgICZtc3Rfc3RhdGUtPmJhc2UsCi0J CQkJICAgICZtc3Rfc3RhdGVfZnVuY3MpOworCQkJCSAgICAmZHJtX2RwX21zdF90b3BvbG9neV9z dGF0ZV9mdW5jcyk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwppbmRleCAxMzJlOTc4MjI3ZmIuLjhlODVlMDRhNTk0OCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTI1OTIsNiArMTI1OTIsMTAgQEAgc3RhdGljIGludCBpbnRl bF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgICAgIlttb2Rl c2V0XSIgOiAiW2Zhc3RzZXRdIik7CiAJfQogCisJcmV0ID0gZHJtX2RwX21zdF9hdG9taWNfY2hl Y2soc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlpZiAoYW55X21zKSB7CiAJ CXJldCA9IGludGVsX21vZGVzZXRfY2hlY2tzKHN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9tc3QuYwppbmRleCA0ZGUyNDdkZGYwNWYuLmJlMmQxYWM3ZDg3ZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBfbXN0LmMKQEAgLTQxLDggKzQxLDEzIEBAIHN0YXRpYyBib29sIGludGVs X2RwX21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOwog CXZvaWQgKnBvcnQgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKS0+cG9ydDsKIAlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZTsKKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOworCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUgPQorCQlkcm1fYXRvbWljX2dldF9vbGRfY3J0 Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19z dGF0ZSA9ICZwaXBlX2NvbmZpZy0+YmFzZTsKIAlpbnQgYnBwOwotCWludCBsYW5lX2NvdW50LCBz bG90cyA9IDA7CisJaW50IGxhbmVfY291bnQsIHNsb3RzID0KKwkJdG9faW50ZWxfY3J0Y19zdGF0 ZShvbGRfY3J0Y19zdGF0ZSktPmRwX21fbi50dTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwog CWludCBtc3RfcGJuOwogCWJvb2wgY29uc3RhbnRfbiA9IGRybV9kcF9oYXNfcXVpcmsoJmludGVs X2RwLT5kZXNjLApAQCAtNzcsOCArODIsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCW1zdF9wYm4gPSBk cm1fZHBfY2FsY19wYm5fbW9kZShhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLCBicHApOwogCXBp cGVfY29uZmlnLT5wYm4gPSBtc3RfcGJuOwogCi0JLyogWm9tYmllIGNvbm5lY3RvcnMgY2FuJ3Qg aGF2ZSBWQ1BJIHNsb3RzICovCi0JaWYgKCFkcm1fY29ubmVjdG9yX2lzX3VucmVnaXN0ZXJlZChj b25uZWN0b3IpKSB7CisJLyogT25seSBjaGFuZ2UgVkNQSSBhbGxvY2F0aW9uIG9uIGFjdHVhbCBt b2RlIGNoYW5nZXMsIHRvIHByZXZlbnQgdXMKKwkgKiBmcm9tIHRyeWluZyB0byBhbGxvY2F0ZSBW Q1BJIHRvIHBvcnRzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IHdoZW4gd2UKKwkgKiBtYXkganVzdCBi ZSB0cnlpbmcgdG8gZGlzYWJsZSBEUE1TIG9uIHRoZW0KKwkgKi8KKwlpZiAobmV3X2NydGNfc3Rh dGUtPm1vZGVfY2hhbmdlZCB8fAorCSAgICBuZXdfY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFu Z2VkKSB7CiAJCXNsb3RzID0gZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RhdGUsCiAJ CQkJCQkgICAgICAmaW50ZWxfZHAtPm1zdF9tZ3IsCiAJCQkJCQkgICAgICBwb3J0LApAQCAtMTA3 LDM2ICsxMTYsMzkgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg aW50IGludGVsX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKLQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlKQorc3Rh dGljIGludAoraW50ZWxfZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAorCQkJICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3Rh dGUpCiB7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0KKwkJdG9f aW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf bWdyICptZ3IgPQorCQkmaW50ZWxfY29ubmVjdG9yLT5tc3RfcG9ydC0+bXN0X21ncjsKKwlzdHJ1 Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0ID0gaW50ZWxfY29ubmVjdG9yLT5wb3J0OwogCXN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG5ld19jb25uX3N0YXRlLT5zdGF0ZTsKLQlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7Ci0Jc3RydWN0IGRybV9jcnRj ICpvbGRfY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0JaW50IHNs b3RzLCByZXQgPSAwOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0 ZSA9CisJCWRybV9hdG9taWNfZ2V0X29sZF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rv cik7CisJc3RydWN0IGRybV9jcnRjICpvbGRfY3J0YyA9IG9sZF9jb25uX3N0YXRlLT5jcnRjLAor CQkJKm5ld19jcnRjID0gbmV3X2Nvbm5fc3RhdGUtPmNydGM7CisJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwogCi0Jb2xkX2Nvbm5fc3RhdGUg PSBkcm1fYXRvbWljX2dldF9vbGRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwot CW9sZF9jcnRjID0gb2xkX2Nvbm5fc3RhdGUtPmNydGM7CiAJaWYgKCFvbGRfY3J0YykKLQkJcmV0 dXJuIHJldDsKKwkJcmV0dXJuIDA7CiAKLQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3 X2NydGNfc3RhdGUoc3RhdGUsIG9sZF9jcnRjKTsKLQlzbG90cyA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Y19zdGF0ZSktPmRwX21fbi50dTsKLQlpZiAoZHJtX2F0b21pY19jcnRjX25lZWRzX21v ZGVzZXQoY3J0Y19zdGF0ZSkgJiYgc2xvdHMgPiAwKSB7Ci0JCXN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyOwotCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKm9sZF9lbmNvZGVyOworCW9s ZF9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIG9sZF9j cnRjKTsKKwlpZiAoIW9sZF9jcnRjX3N0YXRlIHx8CisJICAgICF0b19pbnRlbF9jcnRjX3N0YXRl KG9sZF9jcnRjX3N0YXRlKS0+ZHBfbV9uLnR1KQorCQlyZXR1cm4gMDsKIAotCQlvbGRfZW5jb2Rl ciA9IG9sZF9jb25uX3N0YXRlLT5iZXN0X2VuY29kZXI7Ci0JCW1nciA9ICZlbmNfdG9fbXN0KG9s ZF9lbmNvZGVyKS0+cHJpbWFyeS0+ZHAubXN0X21ncjsKKwkvKiBJZiB3ZSBzd2l0Y2hlZCBDUlRD cywgY2xlYXIgdGhlIHByZXZpb3VzIG9uZSdzIGFsbG9jYXRpb24gKi8KKwluZXdfY3J0Y19zdGF0 ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBvbGRfY3J0Yyk7CisJaWYg KG5ld19jcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgJiYgIW5ld19jcnRjX3N0YXRlLT5l bmFibGUpCisJCXRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpLT5kcF9tX24udHUg PSAwOwogCi0JCXJldCA9IGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0YXRlLCBt Z3IsIHNsb3RzKTsKLQkJaWYgKHJldCkKLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCByZWxlYXNp bmcgJWQgdmNwaSBzbG90czolZFxuIiwgc2xvdHMsIHJldCk7Ci0JCWVsc2UKLQkJCXRvX2ludGVs X2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPmRwX21fbi50dSA9IDA7Ci0JfQotCXJldHVybiByZXQ7 CisJaWYgKG5ld19jcnRjKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBkcm1fZHBfYXRvbWljX3Jl bGVhc2VfdmNwaV9zbG90cyhzdGF0ZSwgbWdyLCBwb3J0KTsKIH0KIAogc3RhdGljIHZvaWQgaW50 ZWxfbXN0X2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Rw X21zdF9oZWxwZXIuaAppbmRleCAzZmFjZWI2NmY1Y2IuLjIzOTJlMTJiNmJjZSAxMDA2NDQKLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1f ZHBfbXN0X2hlbHBlci5oCkBAIC00MDYsOSArNDA2LDE2IEBAIHN0cnVjdCBkcm1fZHBfcGF5bG9h ZCB7CiAKICNkZWZpbmUgdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4 LCBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSwgYmFzZSkKIAorc3RydWN0IGRybV9k cF92Y3BpX2FsbG9jYXRpb24geworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7CisJaW50 IHZjcGk7CisJc3RydWN0IGxpc3RfaGVhZCBuZXh0OworfTsKKwogc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfc3RhdGUgewogCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNlOwotCWludCBh dmFpbF9zbG90czsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHZjcGlzOworCXU4IHZjcGlfYWxsb2NhdGVk OwogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyOwogfTsKIApAQCAtNjE5LDE0 ICs2MjYsMTcgQEAgdm9pZCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zdXNwZW5kKHN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKTsKIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5X21n cl9yZXN1bWUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpOwogc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKmRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0 ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCSAgICBzdHJ1Y3QgZHJt X2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncik7Ci1pbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlf c2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCSAgc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCi0JCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpw b3J0LCBpbnQgcGJuKTsKLWludCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90 b3BvbG9neV9tZ3IgKm1nciwKLQkJCQkgICAgIGludCBzbG90cyk7CitpbnQgX19tdXN0X2NoZWNr Citkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJ CSAgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGludCBwYm4pOworaW50IF9fbXVz dF9jaGVjaworZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLAorCQkJCSBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1n ciwKKwkJCQkgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCk7CiBpbnQgZHJtX2RwX3NlbmRf cG93ZXJfdXBkb3duX3BoeShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJ CQkgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgYm9vbCBwb3dlcl91cCk7CitpbnQgX19t dXN0X2NoZWNrIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSk7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3Mg ZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZV9mdW5jczsKIAotLSAKMi4xOS4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlz dApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK