From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v5 18/20] drm/dp_mst: Start tracking per-port VCPI allocations Date: Tue, 8 Jan 2019 19:35:15 -0500 Message-ID: <20190109003516.14752-19-lyude@redhat.com> References: <20190109003516.14752-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190109003516.14752-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Daniel Vetter , 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 CkNoYW5nZXMgc2luY2Ugdjk6CiogQWRkIHNvbWUgbWlzc2luZyBjaGFuZ2VzIHRoYXQgd2VyZSBy ZXF1ZXN0ZWQgYnkgZGFudmV0IHRoYXQgSSBmb3Jnb3QKICBhYm91dCBhZnRlciBJIHJlZGlkIGFs bCBvZiB0aGUga3JlZiBzdHVmZjoKICAqIFJlbW92ZSB1bm5lY2Vzc2FyeSBzdGF0ZSBjaGFuZ2Vz IGluIGludGVsX2RwX21zdF9hdG9taWNfY2hlY2sKICAqIENsZWFudXAgYXRvbWljIGNoZWNrIGxv Z2ljIGZvciBWQ1BJIGFsbG9jYXRpb25zIC0gYWxsIHdlIG5lZWQgdG8gY2hlY2sgaW4KICAgIGNv bXB1dGVfY29uZmlnIGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RhdGUgZGlzYWJsZXMgYSBDUlRD LCB0aGVuIGZyZWUKICAgIFZDUEkgYmFzZWQgb2ZmIHRoYXQKCkNoYW5nZXMgc2luY2Ugdjg6CiAq IEZpeCBjb21waWxlIGVycm9ycywgd2hvb3BzIQoKQ2hhbmdlcyBzaW5jZSB2NzoKIC0gRG9uJ3Qg Y2hlY2sgZm9yIG1peGVkIHN0YWxlL3ZhbGlkIFZDUEkgYWxsb2NhdGlvbnMsIGp1c3QgcmVseSBv bgogY29ubmVjdG9yIHJlZ2lzdHJhdGlvbiB0byBzdG9wIHN1Y2ggZXJyb25lb3VzIG1vZGVzZXRz CgpDaGFuZ2VzIHNpbmNlIHY2OgogLSBLZWVwIGEga3JlZiB0byBhbGwgb2YgdGhlIHBvcnRzIHdl IGhhdmUgYWxsb2NhdGlvbnMgb24uIFRoaXMgcmVxdWlyZWQKICAgYSBnb29kIGJpdCBvZiBjaGFu Z2luZyB0byB3aGVuIHdlIGNhbGwgZHJtX2RwX2ZpbmRfdmNwaV9zbG90cygpLAogICBtYWlubHkg dGhhdCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIG9ubHkgcmVkbyBWQ1BJIGFsbG9jYXRpb25z IG9uCiAgIGFjdHVhbCBtb2RlIG9yIENSVEMgY2hhbmdlcywgbm90IGNydGNfc3RhdGUtPmFjdGl2 ZSBjaGFuZ2VzLgogICBBZGRpdGlvbmFsbHksIHdlIG5vIGxvbmdlciB0YWtlIHRoZSByZWdpc3Ry YXRpb24gb2YgdGhlIERSTSBjb25uZWN0b3IKICAgZm9yIGVhY2ggcG9ydCBpbnRvIGFjY291bnQg YmVjYXVzZSBzbyBsb25nIGFzIHdlIGhhdmUgYSBrcmVmIHRvIHRoZQogICBwb3J0IGluIHRoZSBu ZXcgb3IgcHJldmlvdXMgYXRvbWljIHN0YXRlLCB0aGUgY29ubmVjdG9yIHdpbGwgc3RheQogICBy ZWdpc3RlcmVkLgogLSBVc2UgdGhlIHNtYWxsIGNoYW5nZXMgdG8gZHJtX2RwX3B1dF9wb3J0KCkg dG8gYWRkIGV2ZW4gbW9yZSBlcnJvcgogICBjaGVja2luZyB0byBtYWtlIG1pc3VzYWdlIG9mIHRo ZSBoZWxwZXJzIG1vcmUgb2J2aW91cy4gSSBhZGRlZCB0aGlzCiAgIGFmdGVyIGhhdmluZyB0byBj aGFzZSBkb3duIHZhcmlvdXMgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyB0aGF0CiAgIHN0YXJ0 ZWQgcG9wcGluZyB1cCBmcm9tIHRoZSBuZXcgaGVscGVycyBzbyBubyBvbmUgZWxzZSBoYXMgdG8K ICAgdHJvdWJsZXNob290IHRoYXQuCiAtIE1vdmUgc29tZSBhY2NpZGVudGFsIERSTV9ERUJVR19L TVMoKSBjYWxscyB0byBEUk1fREVCVUdfQVRPTUlDKCkKIC0gVXBkYXRlIGRvY3VtZW50YXRpb24g YWdhaW4sIG5vdGUgdGhhdCBmaW5kL3JlbGVhc2UoKSBzaG91bGQgYm90aCBub3QgYmUKICAgY2Fs bGVkIG9uIHRoZSBzYW1lIHBvcnQgaW4gYSBzaW5nbGUgYXRvbWljIGNoZWNrIHBoYXNlIChidXQg bXVsdGlwbGUKICAgY2FsbHMgdG8gb25lIG9yIHRoZSBvdGhlciBpcyBPSykKCkNoYW5nZXMgc2lu Y2UgdjQ6CiAtIERvbid0IHNraXAgdGhlIGF0b21pYyBjaGVja3MgZm9yIFZDUEkgYWxsb2NhdGlv bnMgaWYgbm8gbmV3IFZDUEkKICAgYWxsb2NhdGlvbnMgaGFwcGVuIGluIGEgc3RhdGUuIFRoaXMg bWFrZXMgdGhlIG5leHQgY2hhbmdlIEknbSBhYm91dAogICB0byBsaXN0IGhlcmUgYSBsb3QgZWFz aWVyIHRvIGltcGxlbWVudC4KIC0gRG9uJ3QgaWdub3JlIFZDUEkgYWxsb2NhdGlvbnMgb24gZGVz dHJveWVkIHBvcnRzLCBpbnN0ZWFkIGVuc3VyZSB0aGF0CiAgIHdoZW4gcG9ydHMgYXJlIGRlc3Ry b3llZCBhbmQgc3RpbGwgaGF2ZSBWQ1BJIGFsbG9jYXRpb25zIGluIHRoZQogICB0b3BvbG9neSBz dGF0ZSwgdGhlIG9ubHkgc3RhdGUgY2hhbmdlcyBhbGxvd2VkIGFyZSByZWxlYXNpbmcgc2FpZAog ICBwb3J0cycgVkNQSS4gVGhpcyBwcmV2ZW50cyBhIHN0YXRlIHdpdGggYSBtaXggb2YgVkNQSSBh bGxvY2F0aW9ucwogICBmcm9tIGRlc3Ryb3llZCBwb3J0cywgYW5kIGFsbG9jYXRpb25zIGZyb20g dmFsaWQgcG9ydHMuCgpDaGFuZ2VzIHNpbmNlIHYzOgogLSBEb24ndCByZWxlYXNlIFZDUEkgYWxs b2NhdGlvbnMgaW4gdGhlIHRvcG9sb2d5IHN0YXRlIGltbWVkaWF0ZWx5IGluCiAgIGRybV9kcF9h dG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCksIGluc3RlYWQgbWFyayB0aGVtIGFzIDAgYW5kIHNr aXAKICAgb3ZlciB0aGVtIGluIGRybV9kcF9tc3RfZHVwbGljYXRlX3N0YXRlKCkuIFRoaXMgbWFr ZXMgaXQgc28KICAgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoKSBpcyBzdGlsbCBp ZGVtcG90ZW50IHdoaWxlIGFsc28KICAgdGhyb3dpbmcgd2FybmluZ3MgaWYgdGhlIGRyaXZlciBt ZXNzZXMgdXAgaXQncyBib29rIGtlZXBpbmcgYW5kIHRyaWVzCiAgIHRvIHJlbGVhc2UgVkNQSSBz bG90cyBvbiBhIHBvcnQgdGhhdCBkb2Vzbid0IGhhdmUgYW55IHByZS1leGlzdGluZwogICBWQ1BJ IGFsbG9jYXRpb24gLSBkYW52ZXQKIC0gQ2hhbmdlIG1zdF9zdGF0ZS9zdGF0ZSBpbiBzb21lIGRl YnVnZ2luZyBtZXNzYWdlcyB0byAibXN0IHN0YXRlIgoKQ2hhbmdlcyBzaW5jZSB2MjoKIC0gVXNl IGttZW1kdXAoKSBmb3IgZHVwbGljYXRpbmcgTVNUIHN0YXRlIC0gZGFudmV0CiAtIE1vdmUgcG9y dCB2YWxpZGF0aW9uIG91dCBvZiBkdXBsaWNhdGUgc3RhdGUgY2FsbGJhY2sgLSBkYW52ZXQKIC0g SGFuZGxlIGxvb3BpbmcgdGhyb3VnaCBNU1QgdG9wb2xvZ3kgc3RhdGVzIGluCiAgIGRybV9kcF9t c3RfYXRvbWljX2NoZWNrKCkgc28gdGhlIGRyaXZlciBkb2Vzbid0IGhhdmUgdG8gZG8gaXQKIC0g Rml4IGRvY3VtZW50YXRpb24gaW4gZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKQogLSBN b3ZlIHRoZSBhdG9taWMgY2hlY2sgZm9yIGVhY2ggaW5kaXZpZHVhbCB0b3BvbG9neSBzdGF0ZSBp bnRvIGl0J3MKICAgb3duIGZ1bmN0aW9uLCByZWR1Y2VzIGluZGVudGluZwogLSBEb24ndCBjb25z aWRlciAic3RhbGUiIE1TVCBwb3J0cyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBiYW5kd2lkdGgKICAg cmVxdWlyZW1lbnRzLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIG9yaWdpbmFsbHkgd2UgcmVsaWVk IG9uIHRoZQogICBzdGF0ZSBkdXBsaWNhdGlvbiBmdW5jdGlvbnMgdG8gcHJ1bmUgYW55IHN0YWxl IHBvcnRzIGZyb20gdGhlIG5ldwogICBzdGF0ZSwgd2hpY2ggd291bGQgcHJldmVudCB1cyBmcm9t IGluY29ycmVjdGx5IGNvbnNpZGVyaW5nIHRoZWlyCiAgIGJhbmR3aWR0aCByZXF1aXJlbWVudHMg YWxvbmdzaWRlIGxlZ2l0aW1hdGUgbmV3IHBheWxvYWRzLgogLSBBZGQgZnVuY3Rpb24gcmVmZXJl bmNlcyBpbiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIC0gZGFudmV0CiAtIEFu bm90YXRlIGF0b21pYyBWQ1BJIGFuZCBhdG9taWMgY2hlY2sgZnVuY3Rpb25zIHdpdGggX19tdXN0 X2NoZWNrCiAgIC0gZGFudmV0CgpDaGFuZ2VzIHNpbmNlIHYxOgogLSBEb24ndCB1c2UgdGhlIG5v dy1yZW1vdmVkIC0+YXRvbWljX2NoZWNrKCkgZm9yIHByaXZhdGUgb2JqZWN0cyBob29rLAogICBq dXN0IGdpdmUgZHJpdmVycyBhIGZ1bmN0aW9uIHRvIGNhbGwgdGhlbXNlbHZlcwoKU2lnbmVkLW9m Zi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNv bT4KQ2M6IEplcnJ5IFp1byA8SmVycnkuWnVvQGFtZC5jb20+CkNjOiBIYXJyeSBXZW50bGFuZCA8 aGFycnkud2VudGxhbmRAYW1kLmNvbT4KQ2M6IEp1c3RvbiBMaSA8anVzdG9uLmxpQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jIHwgMjQ3ICsrKysr KysrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAgfCAgNTQg KysrLS0tCiBpbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oICAgICAgIHwgIDIzICsrLQog NCBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKaW5kZXggMzcwMzcxMTQ1Y2RkLi5mYzc3OGM2 ZDQ4N2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwpAQCAtMzAyMCwyMSAr MzAyMCw0MiBAQCBzdGF0aWMgaW50IGRybV9kcF9pbml0X3ZjcGkoc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IsCiB9CiAKIC8qKgotICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlf c2xvdHMoKSAtIEZpbmQgYW5kIGFkZCB2Y3BpIHNsb3RzIHRvIHRoZSBzdGF0ZQorICogZHJtX2Rw X2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKSAtIEZpbmQgYW5kIGFkZCBWQ1BJIHNsb3RzIHRvIHRo ZSBzdGF0ZQogICogQHN0YXRlOiBnbG9iYWwgYXRvbWljIHN0YXRlCiAgKiBAbWdyOiBNU1QgdG9w b2xvZ3kgbWFuYWdlciBmb3IgdGhlIHBvcnQKICAqIEBwb3J0OiBwb3J0IHRvIGZpbmQgdmNwaSBz bG90cyBmb3IKICAqIEBwYm46IGJhbmR3aWR0aCByZXF1aXJlZCBmb3IgdGhlIG1vZGUgaW4gUEJO CiAgKgotICogUkVUVVJOUzoKLSAqIFRvdGFsIHNsb3RzIGluIHRoZSBhdG9taWMgc3RhdGUgYXNz aWduZWQgZm9yIHRoaXMgcG9ydCBvciBlcnJvcgorICogQWxsb2NhdGVzIFZDUEkgc2xvdHMgdG8g QHBvcnQsIHJlcGxhY2luZyBhbnkgcHJldmlvdXMgVkNQSSBhbGxvY2F0aW9ucyBpdAorICogbWF5 IGhhdmUgaGFkLiBBbnkgYXRvbWljIGRyaXZlcnMgd2hpY2ggc3VwcG9ydCBNU1QgbXVzdCBjYWxs IHRoaXMgZnVuY3Rpb24KKyAqIGluIHRoZWlyICZkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MuYXRv bWljX2NoZWNrKCkgY2FsbGJhY2sgdG8gY2hhbmdlIHRoZQorICogY3VycmVudCBWQ1BJIGFsbG9j YXRpb24gZm9yIHRoZSBuZXcgc3RhdGUsIGJ1dCBvbmx5IHdoZW4KKyAqICZkcm1fY3J0Y19zdGF0 ZS5tb2RlX2NoYW5nZWQgb3IgJmRybV9jcnRjX3N0YXRlLmNvbm5lY3RvcnNfY2hhbmdlZCBpcyBz ZXQKKyAqIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggdXNlcnNwYWNlIGFwcGxpY2F0aW9u cyB0aGF0IHN0aWxsIHVzZSB0aGUKKyAqIGxlZ2FjeSBtb2Rlc2V0dGluZyBVQVBJLgorICoKKyAq IEFsbG9jYXRpb25zIHNldCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBub3QgY2hlY2tlZCBhZ2FpbnN0 IHRoZSBiYW5kd2lkdGgKKyAqIHJlc3RyYWludHMgb2YgQG1nciB1bnRpbCB0aGUgZHJpdmVyIGNh bGxzIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKCkuCisgKgorICogQWRkaXRpb25hbGx5LCBpdCBp cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUKKyAq IEBwb3J0IGFzIG5lZWRlZC4gSXQgaXMgbm90IE9LIGhvd2V2ZXIsIHRvIGNhbGwgdGhpcyBmdW5j dGlvbiBhbmQKKyAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgaW4gdGhlIHNh bWUgYXRvbWljIGNoZWNrIHBoYXNlLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX2F0b21p Y19yZWxlYXNlX3ZjcGlfc2xvdHMoKQorICogZHJtX2RwX21zdF9hdG9taWNfY2hlY2soKQorICoK KyAqIFJldHVybnM6CisgKiBUb3RhbCBzbG90cyBpbiB0aGUgYXRvbWljIHN0YXRlIGFzc2lnbmVk IGZvciB0aGlzIHBvcnQsIG9yIGEgbmVnYXRpdmUgZXJyb3IKKyAqIGNvZGUgaWYgdGhlIHBvcnQg bm8gbG9uZ2VyIGV4aXN0cwogICovCiBpbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCSAgc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IsCiAJCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBp bnQgcGJuKQogewogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICp0b3BvbG9neV9z dGF0ZTsKLQlpbnQgcmVxX3Nsb3RzOworCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpw b3MsICp2Y3BpID0gTlVMTDsKKwlpbnQgcHJldl9zbG90cywgcmVxX3Nsb3RzLCByZXQ7CiAKIAl0 b3BvbG9neV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSwg bWdyKTsKIAlpZiAoSVNfRVJSKHRvcG9sb2d5X3N0YXRlKSkKQEAgLTMwNDMsMjAgKzMwNjQsNTQg QEAgaW50IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSwKIAlwb3J0ID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0 ZWQobWdyLCBwb3J0KTsKIAlpZiAocG9ydCA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKLQly ZXFfc2xvdHMgPSBESVZfUk9VTkRfVVAocGJuLCBtZ3ItPnBibl9kaXYpOwotCURSTV9ERUJVR19L TVMoInZjcGkgc2xvdHMgcmVxPSVkLCBhdmFpbD0lZFxuIiwKLQkJCXJlcV9zbG90cywgdG9wb2xv Z3lfc3RhdGUtPmF2YWlsX3Nsb3RzKTsKIAotCWlmIChyZXFfc2xvdHMgPiB0b3BvbG9neV9zdGF0 ZS0+YXZhaWxfc2xvdHMpIHsKLQkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsK LQkJcmV0dXJuIC1FTk9TUEM7CisJLyogRmluZCB0aGUgY3VycmVudCBhbGxvY2F0aW9uIGZvciB0 aGlzIHBvcnQsIGlmIGFueSAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmdG9wb2xvZ3lf c3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCWlmIChwb3MtPnBvcnQgPT0gcG9ydCkgeworCQkJdmNw aSA9IHBvczsKKwkJCXByZXZfc2xvdHMgPSB2Y3BpLT52Y3BpOworCisJCQkvKgorCQkJICogVGhp cyBzaG91bGQgbmV2ZXIgaGFwcGVuLCB1bmxlc3MgdGhlIGRyaXZlciB0cmllcworCQkJICogcmVs ZWFzaW5nIGFuZCBhbGxvY2F0aW5nIHRoZSBzYW1lIFZDUEkgYWxsb2NhdGlvbiwKKwkJCSAqIHdo aWNoIGlzIGFuIGVycm9yCisJCQkgKi8KKwkJCWlmIChXQVJOX09OKCFwcmV2X3Nsb3RzKSkgewor CQkJCURSTV9FUlJPUigiY2Fubm90IGFsbG9jYXRlIGFuZCByZWxlYXNlIFZDUEkgb24gW01TVCBQ T1JUOiVwXSBpbiB0aGUgc2FtZSBzdGF0ZVxuIiwKKwkJCQkJICBwb3J0KTsKKwkJCQlyZXR1cm4g LUVJTlZBTDsKKwkJCX0KKworCQkJYnJlYWs7CisJCX0KIAl9CisJaWYgKCF2Y3BpKQorCQlwcmV2 X3Nsb3RzID0gMDsKKworCXJlcV9zbG90cyA9IERJVl9ST1VORF9VUChwYm4sIG1nci0+cGJuX2Rp dik7CisKKwlEUk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVkOiVzXSBbTVNUIFBPUlQ6JXBd IFZDUEkgJWQgLT4gJWRcbiIsCisJCQkgcG9ydC0+Y29ubmVjdG9yLT5iYXNlLmlkLCBwb3J0LT5j b25uZWN0b3ItPm5hbWUsCisJCQkgcG9ydCwgcHJldl9zbG90cywgcmVxX3Nsb3RzKTsKKworCS8q IEFkZCB0aGUgbmV3IGFsbG9jYXRpb24gdG8gdGhlIHN0YXRlICovCisJaWYgKCF2Y3BpKSB7CisJ CXZjcGkgPSBremFsbG9jKHNpemVvZigqdmNwaSksIEdGUF9LRVJORUwpOworCQlpZiAoIXZjcGkp IHsKKwkJCXJldCA9IC1FTk9NRU07CisJCQlnb3RvIG91dDsKKwkJfQogCi0JdG9wb2xvZ3lfc3Rh dGUtPmF2YWlsX3Nsb3RzIC09IHJlcV9zbG90czsKLQlEUk1fREVCVUdfS01TKCJ2Y3BpIHNsb3Rz IGF2YWlsPSVkIiwgdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKTsKKwkJZHJtX2RwX21zdF9n ZXRfcG9ydF9tYWxsb2MocG9ydCk7CisJCXZjcGktPnBvcnQgPSBwb3J0OworCQlsaXN0X2FkZCgm dmNwaS0+bmV4dCwgJnRvcG9sb2d5X3N0YXRlLT52Y3Bpcyk7CisJfQorCXZjcGktPnZjcGkgPSBy ZXFfc2xvdHM7CiAKKwlyZXQgPSByZXFfc2xvdHM7CitvdXQ6CiAJZHJtX2RwX21zdF90b3BvbG9n eV9wdXRfcG9ydChwb3J0KTsKLQlyZXR1cm4gcmVxX3Nsb3RzOworCXJldHVybiByZXQ7CiB9CiBF WFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKTsKIApAQCAtMzA2NCwz MSArMzExOSw1NyBAQCBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3Rz KTsKICAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgLSBSZWxlYXNlIGFsbG9j YXRlZCB2Y3BpIHNsb3RzCiAgKiBAc3RhdGU6IGdsb2JhbCBhdG9taWMgc3RhdGUKICAqIEBtZ3I6 IE1TVCB0b3BvbG9neSBtYW5hZ2VyIGZvciB0aGUgcG9ydAotICogQHNsb3RzOiBudW1iZXIgb2Yg dmNwaSBzbG90cyB0byByZWxlYXNlCisgKiBAcG9ydDogVGhlIHBvcnQgdG8gcmVsZWFzZSB0aGUg VkNQSSBzbG90cyBmcm9tCiAgKgotICogUkVUVVJOUzoKLSAqIDAgaWYgQHNsb3RzIHdlcmUgYWRk ZWQgYmFjayB0byAmZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgb3IKLSAq IG5lZ2F0aXZlIGVycm9yIGNvZGUKKyAqIFJlbGVhc2VzIGFueSBWQ1BJIHNsb3RzIHRoYXQgaGF2 ZSBiZWVuIGFsbG9jYXRlZCB0byBhIHBvcnQgaW4gdGhlIGF0b21pYworICogc3RhdGUuIEFueSBh dG9taWMgZHJpdmVycyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBp bgorICogdGhlaXIgJmRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzLmF0b21pY19jaGVjaygpIGNh bGxiYWNrIHdoZW4gdGhlCisgKiBjb25uZWN0b3Igd2lsbCBubyBsb25nZXIgaGF2ZSBWQ1BJIGFs bG9jYXRlZCAoZS5nLiBiZWNhdXNlIGl0J3MgQ1JUQyB3YXMKKyAqIHJlbW92ZWQpIHdoZW4gaXQg aGFkIFZDUEkgYWxsb2NhdGVkIGluIHRoZSBwcmV2aW91cyBhdG9taWMgc3RhdGUuCisgKgorICog SXQgaXMgT0sgdG8gY2FsbCB0aGlzIGV2ZW4gaWYgQHBvcnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9t IHRoZSBzeXN0ZW0uCisgKiBBZGRpdGlvbmFsbHksIGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5j dGlvbiBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZQorICogQHBvcnQgYXMgbmVlZGVkLiBJdCBp cyBub3QgT0sgaG93ZXZlciwgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFuZAorICogZHJtX2RwX2F0 b21pY19maW5kX3ZjcGlfc2xvdHMoKSBvbiB0aGUgc2FtZSBAcG9ydCBpbiBhIHNpbmdsZSBhdG9t aWMgY2hlY2sKKyAqIHBoYXNlLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX2F0b21pY19m aW5kX3ZjcGlfc2xvdHMoKQorICogZHJtX2RwX21zdF9hdG9taWNfY2hlY2soKQorICoKKyAqIFJl dHVybnM6CisgKiAwIGlmIGFsbCBzbG90cyBmb3IgdGhpcyBwb3J0IHdlcmUgYWRkZWQgYmFjayB0 bworICogJmRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUuYXZhaWxfc2xvdHMgb3IgbmVnYXRpdmUg ZXJyb3IgY29kZQogICovCiBpbnQgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCSAgICAgc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IsCi0JCQkJICAgICBpbnQgc2xvdHMpCisJCQkJICAgICBzdHJ1Y3Qg ZHJtX2RwX21zdF9wb3J0ICpwb3J0KQogewogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0 YXRlICp0b3BvbG9neV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9z OworCWJvb2wgZm91bmQgPSBmYWxzZTsKIAogCXRvcG9sb2d5X3N0YXRlID0gZHJtX2F0b21pY19n ZXRfbXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlLCBtZ3IpOwogCWlmIChJU19FUlIodG9wb2xvZ3lf c3RhdGUpKQogCQlyZXR1cm4gUFRSX0VSUih0b3BvbG9neV9zdGF0ZSk7CiAKLQkvKiBXZSBjYW5u b3QgcmVseSBvbiBwb3J0LT52Y3BpLm51bV9zbG90cyB0byB1cGRhdGUKLQkgKiB0b3BvbG9neV9z dGF0ZS0+YXZhaWxfc2xvdHMgYXMgdGhlIHBvcnQgbWF5IG5vdCBleGlzdCBpZiB0aGUgcGFyZW50 Ci0JICogYnJhbmNoIGRldmljZSB3YXMgdW5wbHVnZ2VkLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBi eSB0cmFja2luZwotCSAqIHBlci1wb3J0IHNsb3QgYWxsb2NhdGlvbiBpbiBkcm1fZHBfbXN0X3Rv cG9sb2d5X3N0YXRlIGluc3RlYWQgb2YKLQkgKiBkZXBlbmRpbmcgb24gdGhlIGNhbGxlciB0byB0 ZWxsIHVzIGhvdyBtYW55IHNsb3RzIHRvIHJlbGVhc2UuCi0JICovCi0JdG9wb2xvZ3lfc3RhdGUt PmF2YWlsX3Nsb3RzICs9IHNsb3RzOwotCURSTV9ERUJVR19LTVMoInZjcGkgc2xvdHMgcmVsZWFz ZWQ9JWQsIGF2YWlsPSVkXG4iLAotCQkJc2xvdHMsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90 cyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMsIG5l eHQpIHsKKwkJaWYgKHBvcy0+cG9ydCA9PSBwb3J0KSB7CisJCQlmb3VuZCA9IHRydWU7CisJCQli cmVhazsKKwkJfQorCX0KKwlpZiAoV0FSTl9PTighZm91bmQpKSB7CisJCURSTV9FUlJPUigibm8g VkNQSSBmb3IgW01TVCBQT1JUOiVwXSBmb3VuZCBpbiBtc3Qgc3RhdGUgJXBcbiIsCisJCQkgIHBv cnQsICZ0b3BvbG9neV9zdGF0ZS0+YmFzZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCURS TV9ERUJVR19BVE9NSUMoIltNU1QgUE9SVDolcF0gVkNQSSAlZCAtPiAwXG4iLCBwb3J0LCBwb3Mt PnZjcGkpOworCWlmIChwb3MtPnZjcGkpIHsKKwkJZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2Mo cG9ydCk7CisJCXBvcy0+dmNwaSA9IDA7CisJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNTEwLDE1 ICszNTkxLDQxIEBAIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X2Nvbm5lY3Rvcl93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHN0YXRpYyBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUg KgogZHJtX2RwX21zdF9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2Jq KQogewotCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqc3RhdGUsICpvbGRfc3RhdGUgPQorCQl0b19kcF9t c3RfdG9wb2xvZ3lfc3RhdGUob2JqLT5zdGF0ZSk7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9j YXRpb24gKnBvcywgKnZjcGk7CiAKLQlzdGF0ZSA9IGttZW1kdXAob2JqLT5zdGF0ZSwgc2l6ZW9m KCpzdGF0ZSksIEdGUF9LRVJORUwpOworCXN0YXRlID0ga21lbWR1cChvbGRfc3RhdGUsIHNpemVv Zigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXN0YXRlKQogCQlyZXR1cm4gTlVMTDsKIAog CV9fZHJtX2F0b21pY19oZWxwZXJfcHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJnN0 YXRlLT5iYXNlKTsKIAorCUlOSVRfTElTVF9IRUFEKCZzdGF0ZS0+dmNwaXMpOworCisJbGlzdF9m b3JfZWFjaF9lbnRyeShwb3MsICZvbGRfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCS8qIFBydW5l IGxlZnRvdmVyIGZyZWVkIFZDUEkgYWxsb2NhdGlvbnMgKi8KKwkJaWYgKCFwb3MtPnZjcGkpCisJ CQljb250aW51ZTsKKworCQl2Y3BpID0ga21lbWR1cChwb3MsIHNpemVvZigqdmNwaSksIEdGUF9L RVJORUwpOworCQlpZiAoIXZjcGkpCisJCQlnb3RvIGZhaWw7CisKKwkJZHJtX2RwX21zdF9nZXRf cG9ydF9tYWxsb2ModmNwaS0+cG9ydCk7CisJCWxpc3RfYWRkKCZ2Y3BpLT5uZXh0LCAmc3RhdGUt PnZjcGlzKTsKKwl9CisKIAlyZXR1cm4gJnN0YXRlLT5iYXNlOworCitmYWlsOgorCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShwb3MsIHZjcGksICZzdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJZHJt X2RwX21zdF9wdXRfcG9ydF9tYWxsb2MocG9zLT5wb3J0KTsKKwkJa2ZyZWUocG9zKTsKKwl9CisJ a2ZyZWUoc3RhdGUpOworCisJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIGRybV9kcF9t c3RfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCkBAIC0zNTI2LDEw ICszNjMzLDg4IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9tc3RfZGVzdHJveV9zdGF0ZShzdHJ1Y3Qg ZHJtX3ByaXZhdGVfb2JqICpvYmosCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3Rh dGUgKm1zdF9zdGF0ZSA9CiAJCXRvX2RwX21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSk7CisJc3Ry dWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnRtcDsKKworCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShwb3MsIHRtcCwgJm1zdF9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKKwkJLyogV2Ug b25seSBrZWVwIHJlZmVyZW5jZXMgdG8gcG9ydHMgd2l0aCBub24temVybyBWQ1BJcyAqLworCQlp ZiAocG9zLT52Y3BpKQorCQkJZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2MocG9zLT5wb3J0KTsK KwkJa2ZyZWUocG9zKTsKKwl9CiAKIAlrZnJlZShtc3Rfc3RhdGUpOwogfQogCitzdGF0aWMgaW5s aW5lIGludAorZHJtX2RwX21zdF9hdG9taWNfY2hlY2tfdG9wb2xvZ3lfc3RhdGUoc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCisJCQkJICAgICAgIHN0cnVjdCBkcm1fZHBfbXN0 X3RvcG9sb2d5X3N0YXRlICptc3Rfc3RhdGUpCit7CisJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9j YXRpb24gKnZjcGk7CisJaW50IGF2YWlsX3Nsb3RzID0gNjM7CisKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHZjcGksICZtc3Rfc3RhdGUtPnZjcGlzLCBuZXh0KSB7CisJCS8qIFJlbGVhc2luZyBWQ1BJ IGlzIGFsd2F5cyBPSy1ldmVuIGlmIHRoZSBwb3J0IGlzIGdvbmUgKi8KKwkJaWYgKCF2Y3BpLT52 Y3BpKSB7CisJCQlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIHJlbGVhc2VzIGFsbCBW Q1BJIHNsb3RzXG4iLAorCQkJCQkgdmNwaS0+cG9ydCk7CisJCQljb250aW51ZTsKKwkJfQorCisJ CURSTV9ERUJVR19BVE9NSUMoIltNU1QgUE9SVDolcF0gcmVxdWlyZXMgJWQgdmNwaSBzbG90c1xu IiwKKwkJCQkgdmNwaS0+cG9ydCwgdmNwaS0+dmNwaSk7CisKKwkJYXZhaWxfc2xvdHMgLT0gdmNw aS0+dmNwaTsKKwkJaWYgKGF2YWlsX3Nsb3RzIDwgMCkgeworCQkJRFJNX0RFQlVHX0FUT01JQygi W01TVCBQT1JUOiVwXSBub3QgZW5vdWdoIFZDUEkgc2xvdHMgaW4gbXN0IHN0YXRlICVwIChhdmFp bD0lZClcbiIsCisJCQkJCSB2Y3BpLT5wb3J0LCBtc3Rfc3RhdGUsCisJCQkJCSBhdmFpbF9zbG90 cyArIHZjcGktPnZjcGkpOworCQkJcmV0dXJuIC1FTk9TUEM7CisJCX0KKwl9CisJRFJNX0RFQlVH X0FUT01JQygiW01TVCBNR1I6JXBdIG1zdCBzdGF0ZSAlcCBWQ1BJIGF2YWlsPSVkIHVzZWQ9JWRc biIsCisJCQkgbWdyLCBtc3Rfc3RhdGUsIGF2YWlsX3Nsb3RzLAorCQkJIDYzIC0gYXZhaWxfc2xv dHMpOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX2RwX21zdF9hdG9taWNfY2hlY2sg LSBDaGVjayB0aGF0IHRoZSBuZXcgc3RhdGUgb2YgYW4gTVNUIHRvcG9sb2d5IGluIGFuCisgKiBh dG9taWMgdXBkYXRlIGlzIHZhbGlkCisgKiBAc3RhdGU6IFBvaW50ZXIgdG8gdGhlIG5ldyAmc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUKKyAqCisgKiBDaGVja3MgdGhlIGdpdmVuIHRv cG9sb2d5IHN0YXRlIGZvciBhbiBhdG9taWMgdXBkYXRlIHRvIGVuc3VyZSB0aGF0IGl0J3MKKyAq IHZhbGlkLiBUaGlzIGluY2x1ZGVzIGNoZWNraW5nIHdoZXRoZXIgdGhlcmUncyBlbm91Z2ggYmFu ZHdpZHRoIHRvIHN1cHBvcnQKKyAqIHRoZSBuZXcgVkNQSSBhbGxvY2F0aW9ucyBpbiB0aGUgYXRv bWljIHVwZGF0ZS4KKyAqCisgKiBBbnkgYXRvbWljIGRyaXZlcnMgc3VwcG9ydGluZyBEUCBNU1Qg bXVzdCBtYWtlIHN1cmUgdG8gY2FsbCB0aGlzIGFmdGVyCisgKiBjaGVja2luZyB0aGUgcmVzdCBv ZiB0aGVpciBzdGF0ZSBpbiB0aGVpcgorICogJmRybV9tb2RlX2NvbmZpZ19mdW5jcy5hdG9taWNf Y2hlY2soKSBjYWxsYmFjay4KKyAqCisgKiBTZWUgYWxzbzoKKyAqIGRybV9kcF9hdG9taWNfZmlu ZF92Y3BpX3Nsb3RzKCkKKyAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkKKyAq CisgKiBSZXR1cm5zOgorICoKKyAqIDAgaWYgdGhlIG5ldyBzdGF0ZSBpcyB2YWxpZCwgbmVnYXRp dmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCisgKi8KK2ludCBkcm1fZHBfbXN0X2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3I7CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1z dF9zdGF0ZTsKKwlpbnQgaSwgcmV0ID0gMDsKKworCWZvcl9lYWNoX25ld19tc3RfbWdyX2luX3N0 YXRlKHN0YXRlLCBtZ3IsIG1zdF9zdGF0ZSwgaSkgeworCQlyZXQgPSBkcm1fZHBfbXN0X2F0b21p Y19jaGVja190b3BvbG9neV9zdGF0ZShtZ3IsIG1zdF9zdGF0ZSk7CisJCWlmIChyZXQpCisJCQli cmVhazsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X2F0 b21pY19jaGVjayk7CisKIGNvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZV9mdW5jcyBkcm1f ZHBfbXN0X3RvcG9sb2d5X3N0YXRlX2Z1bmNzID0gewogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRl ID0gZHJtX2RwX21zdF9kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21pY19kZXN0cm95X3N0YXRlID0g ZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlLApAQCAtMzYxMiw5ICszNzk3LDcgQEAgaW50IGRybV9k cF9tc3RfdG9wb2xvZ3lfbWdyX2luaXQoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsCiAJCXJldHVybiAtRU5PTUVNOwogCiAJbXN0X3N0YXRlLT5tZ3IgPSBtZ3I7Ci0KLQkvKiBt YXguIHRpbWUgc2xvdHMgLSBvbmUgc2xvdCBmb3IgTVRQIGhlYWRlciAqLwotCW1zdF9zdGF0ZS0+ YXZhaWxfc2xvdHMgPSA2MzsKKwlJTklUX0xJU1RfSEVBRCgmbXN0X3N0YXRlLT52Y3Bpcyk7CiAK IAlkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2luaXQoZGV2LCAmbWdyLT5iYXNlLAogCQkJCSAgICAm bXN0X3N0YXRlLT5iYXNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDY5 NmU2ZjU2ODBkZi4uZDE1OTViZTRhODgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCkBAIC0xMjcxMCw2ICsxMjcxMCwxMCBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgICAiW21vZGVzZXRdIiA6ICJbZmFz dHNldF0iKTsKIAl9CiAKKwlyZXQgPSBkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdGF0ZSk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCWlmIChhbnlfbXMpIHsKIAkJcmV0ID0gaW50ZWxf bW9kZXNldF9jaGVja3Moc3RhdGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCmlu ZGV4IDYzMWZkMTUzNzI1Mi4uYzhlMjIxNTYyOGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcF9tc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYwpAQCAtNDEsOCArNDEsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IgPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7CiAJdm9pZCAqcG9ydCA9 IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpLT5wb3J0OwogCXN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSA9IHBpcGVfY29uZmlnLT5iYXNlLnN0YXRlOworCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9IHBpcGVfY29uZmlnLT5iYXNlLmNydGM7CisJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSA9CisJCWRybV9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKTsKIAlpbnQgYnBwOwotCWludCBsYW5lX2NvdW50LCBzbG90cyA9IDA7CisJaW50IGxh bmVfY291bnQsIHNsb3RzID0KKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSkt PmRwX21fbi50dTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwogCWludCBtc3RfcGJuOwogCWJv b2wgY29uc3RhbnRfbiA9IGRybV9kcF9oYXNfcXVpcmsoJmludGVsX2RwLT5kZXNjLApAQCAtMTA3 LDM1ICsxMTEsMzkgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg aW50IGludGVsX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKLQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlKQorc3Rh dGljIGludAoraW50ZWxfZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAorCQkJICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3Rh dGUpCiB7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gbmV3X2Nvbm5fc3RhdGUt PnN0YXRlOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKLQlz dHJ1Y3QgZHJtX2NydGMgKm9sZF9jcnRjOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpv bGRfY29ubl9zdGF0ZSA9CisJCWRybV9hdG9taWNfZ2V0X29sZF9jb25uZWN0b3Jfc3RhdGUoc3Rh dGUsIGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9y ID0KKwkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9jcnRjICpu ZXdfY3J0YyA9IG5ld19jb25uX3N0YXRlLT5jcnRjOwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKLQlpbnQgc2xvdHMsIHJldCA9IDA7CisJc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyICptZ3I7CisJaW50IHJldCA9IDA7CiAKLQlvbGRfY29ubl9zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X29sZF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Ci0Jb2xkX2Ny dGMgPSBvbGRfY29ubl9zdGF0ZS0+Y3J0YzsKLQlpZiAoIW9sZF9jcnRjKQotCQlyZXR1cm4gcmV0 OwotCi0JY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBv bGRfY3J0Yyk7Ci0Jc2xvdHMgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kcF9t X24udHU7Ci0JaWYgKGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpICYm IHNsb3RzID4gMCkgewotCQlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncjsKLQkJ c3RydWN0IGRybV9lbmNvZGVyICpvbGRfZW5jb2RlcjsKKwlpZiAoIW9sZF9jb25uX3N0YXRlLT5j cnRjKQorCQlyZXR1cm4gMDsKIAotCQlvbGRfZW5jb2RlciA9IG9sZF9jb25uX3N0YXRlLT5iZXN0 X2VuY29kZXI7Ci0JCW1nciA9ICZlbmNfdG9fbXN0KG9sZF9lbmNvZGVyKS0+cHJpbWFyeS0+ZHAu bXN0X21ncjsKKwkvKiBXZSBvbmx5IHdhbnQgdG8gZnJlZSBWQ1BJIGlmIHRoaXMgc3RhdGUgZGlz YWJsZXMgdGhlIENSVEMgb24gdGhpcworCSAqIGNvbm5lY3RvcgorCSAqLworCWlmIChuZXdfY3J0 YykgeworCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUs IG5ld19jcnRjKTsKIAotCQlyZXQgPSBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhz dGF0ZSwgbWdyLCBzbG90cyk7Ci0JCWlmIChyZXQpCi0JCQlEUk1fREVCVUdfS01TKCJmYWlsZWQg cmVsZWFzaW5nICVkIHZjcGkgc2xvdHM6JWRcbiIsIHNsb3RzLCByZXQpOwotCQllbHNlCi0JCQl0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kcF9tX24udHUgPSAwOworCQlpZiAoIWNy dGNfc3RhdGUgfHwKKwkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjX3N0 YXRlKSB8fAorCQkgICAgY3J0Y19zdGF0ZS0+ZW5hYmxlKQorCQkJcmV0dXJuIDA7CiAJfQorCisJ bWdyID0gJmVuY190b19tc3Qob2xkX2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlciktPnByaW1hcnkt PmRwLm1zdF9tZ3I7CisJcmV0ID0gZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3Rh dGUsIG1nciwKKwkJCQkJICAgICAgIGludGVsX2Nvbm5lY3Rvci0+cG9ydCk7CisKIAlyZXR1cm4g cmV0OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oIGIv aW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAppbmRleCA1ODExNjNjOGQ3ZDcuLjQ1MWQw MjBmMDEzNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAorKysg Yi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCkBAIC00MjUsOSArNDI1LDE1IEBAIHN0 cnVjdCBkcm1fZHBfcGF5bG9hZCB7CiAKICNkZWZpbmUgdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRl KHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSwgYmFz ZSkKIAorc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24geworCXN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQgKnBvcnQ7CisJaW50IHZjcGk7CisJc3RydWN0IGxpc3RfaGVhZCBuZXh0OworfTsKKwog c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgewogCXN0cnVjdCBkcm1fcHJpdmF0ZV9z dGF0ZSBiYXNlOwotCWludCBhdmFpbF9zbG90czsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHZjcGlzOwog CXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyOwogfTsKIApAQCAtNjM4LDE0ICs2 NDQsMTcgQEAgdm9pZCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zdXNwZW5kKHN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKTsKIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9y ZXN1bWUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpOwogc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfc3RhdGUgKmRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCSAgICBzdHJ1Y3QgZHJtX2Rw X21zdF90b3BvbG9neV9tZ3IgKm1ncik7Ci1pbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xv dHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCSAgc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfbWdyICptZ3IsCi0JCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0 LCBpbnQgcGJuKTsKLWludCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3Bv bG9neV9tZ3IgKm1nciwKLQkJCQkgICAgIGludCBzbG90cyk7CitpbnQgX19tdXN0X2NoZWNrCitk cm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCSAg ICAgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGludCBwYm4pOworaW50IF9fbXVzdF9j aGVjaworZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLAorCQkJCSBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwK KwkJCQkgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCk7CiBpbnQgZHJtX2RwX3NlbmRfcG93 ZXJfdXBkb3duX3BoeShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkg c3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgYm9vbCBwb3dlcl91cCk7CitpbnQgX19tdXN0 X2NoZWNrIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7CiAKIHZvaWQgZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2Moc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydCk7CiB2b2lkIGRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKHN0cnVjdCBk cm1fZHBfbXN0X3BvcnQgKnBvcnQpOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2FtZC1nZngK