From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Elf Subject: Re: [PATCH] drm/i915: Reserve space improvements Date: Wed, 01 Jul 2015 11:44:07 +0100 Message-ID: <5593C477.7080504@intel.com> References: <1435165408-15470-1-git-send-email-John.C.Harrison@Intel.com> <1435664455-12657-1-git-send-email-John.C.Harrison@Intel.com> <5592AB2C.8050303@intel.com> <5592BB83.3070001@Intel.com> <5592C0A1.4040705@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 1AB596E3E9 for ; Wed, 1 Jul 2015 03:44:10 -0700 (PDT) In-Reply-To: <5592C0A1.4040705@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John Harrison , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMzAvMDYvMjAxNSAxNzoxNSwgVG9tYXMgRWxmIHdyb3RlOgo+IE9uIDMwLzA2LzIwMTUgMTY6 NTMsIEpvaG4gSGFycmlzb24gd3JvdGU6Cj4+IE9uIDMwLzA2LzIwMTUgMTU6NDMsIFRvbWFzIEVs ZiB3cm90ZToKPj4+IE9uIDMwLzA2LzIwMTUgMTI6NDAsIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5j b20gd3JvdGU6Cj4+Pj4gRnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVs LmNvbT4KPj4+Pgo+Pj4+IEFuIGVhcmxpZXIgcGF0Y2ggd2FzIGFkZGVkIHRvIHJlc2VydmUgc3Bh Y2UgaW4gdGhlIHJpbmcgYnVmZmVyIGZvciB0aGUKPj4+PiBjb21tYW5kcyBpc3N1ZWQgZHVyaW5n ICdhZGRfcmVxdWVzdCgpJy4gVGhlIGluaXRpYWwgdmVyc2lvbiB3YXMKPj4+PiBwZXNzaW1pc3Rp YyBpbiB0aGUgd2F5IGl0IGhhbmRsZWQgYnVmZmVyIHdyYXBwaW5nIGFuZCB3b3VsZCBjYXVzZQo+ Pj4+IHByZW1hdHVyZSB3cmFwcyBhbmQgdGh1cyB3YXN0ZSByaW5nIHNwYWNlLgo+Pj4+Cj4+Pj4g VGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBjb2RlIHRvIGJldHRlciBoYW5kbGUgdGhlIHdyYXAgY2Fz ZS4gSXQgbm8KPj4+PiBsb25nZXIgZW5mb3JjZXMgdGhhdCB0aGUgc3BhY2UgYmVpbmcgYXNrZWQg Zm9yIGFuZCB0aGUgcmVzZXJ2ZWQgc3BhY2UKPj4+PiBhcmUgYSBzaW5nbGUgY29udGlndW91cyBi bG9jay4gSW5zdGVhZCwgaXQgYWxsb3dzIHRoZSByZXNlcnZlIHRvIGJlIG9uCj4+Pj4gdGhlIGZh ciBlbmQgb2YgYSB3cmFwIG9wZXJhdGlvbi4gSXQgc3RpbGwgZ3VhcmFudGVlcyB0aGF0IHRoZSBz cGFjZSBpcwo+Pj4+IGF2YWlsYWJsZSBzbyB3aGVuIHRoZSB3cmFwIG9jY3Vycywgbm8gd2FpdCB3 aWxsIGhhcHBlbi4gVGh1cyB0aGUgd3JhcAo+Pj4+IGNhbm5vdCBmYWlsIHdoaWNoIGlzIHRoZSB3 aG9sZSBwb2ludCBvZiB0aGUgZXhlcmNpc2UuCj4+Pj4KPj4+PiBBbHNvIGZpeGVkIGEgbWVyZ2Ug ZmFpbHVyZSB3aXRoIHNvbWUgY29tbWVudHMgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCj4+Pj4K Pj4+PiB2MjogSW5jb3Jwb3JhdGVkIHN1Z2dlc3Rpb24gYnkgRGF2aWQgR29yZG9uIHRvIG1vdmUg dGhlIHdyYXAgY29kZQo+Pj4+IGluc2lkZSB0aGUgcHJlcGFyZSBmdW5jdGlvbiBhbmQgdGh1cyBh bGxvdyBhIHNpbmdsZSBjb21iaW5lZAo+Pj4+IHdhaXRfZm9yX3NwYWNlKCkgY2FsbCByYXRoZXIg dGhhbiBkb2luZyBvbmUgYmVmb3JlIHRoZSB3cmFwIGFuZAo+Pj4+IGFub3RoZXIgYWZ0ZXIuIFRo aXMgYWxzbyBtYWtlcyB0aGUgcHJlcGFyZSBjb2RlIG11Y2ggc2ltcGxlciBhbmQKPj4+PiBlYXNp ZXIgdG8gZm9sbG93Lgo+Pj4+Cj4+Pj4gdjM6IEZpeCBmb3IgJ2VmZmVjdGl2ZV9zaXplJyB2cyAn c2l6ZScgZHVyaW5nIHJpbmcgYnVmZmVyIHJlbWFpbmRlcgo+Pj4+IGNhbGN1bGF0aW9ucyAoc3Bv dHRlZCBieSBUb21hcyBFbGYpLgo+Pj4+Cj4+Pj4gRm9yOiBWSVotNTExNQo+Pj4+IENDOiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJy aXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPj4+PiAtLS0KPj4+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8IDczCj4+Pj4gKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0KPj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YyB8IDkwCj4+Pj4gKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4+Pj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgNCArLQo+Pj4+ICAgMyBmaWxl cyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+Pj4+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4+PiBpbmRleCBiMzZlMDY0Li43ZDk1MTVkIDEw MDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4+PiBAQCAtNjYzLDEyICs2NjMs MTIgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0Cj4+Pj4g ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPj4+PiAgICAgICB1bnNpZ25lZCBzcGFjZTsKPj4+ PiAgICAgICBpbnQgcmV0Owo+Pj4+Cj4+Pj4gLSAgICAvKiBUaGUgd2hvbGUgcG9pbnQgb2YgcmVz ZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0ISAqLwo+Pj4+IC0gICAgV0FSTl9PTihyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UpOwo+Pj4+IC0KPj4+PiAgICAgICBpZiAoaW50ZWxfcmluZ19zcGFj ZShyaW5nYnVmKSA+PSBieXRlcykKPj4+PiAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4KPj4+PiAr ICAgIC8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQh ICovCj4+Pj4gKyAgICBXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4+Pj4gKwo+ Pj4+ICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0LCAmcmluZy0+cmVxdWVzdF9saXN0 LCBsaXN0KSB7Cj4+Pj4gICAgICAgICAgIC8qCj4+Pj4gICAgICAgICAgICAqIFRoZSByZXF1ZXN0 IHF1ZXVlIGlzIHBlci1lbmdpbmUsIHNvIGNhbiBjb250YWluIHJlcXVlc3RzCj4+Pj4gQEAgLTcx OCwyMiArNzE4LDExIEBAIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3Ry dWN0Cj4+Pj4gZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4+Pj4gICAgICAgZXhlY2xp c3RzX2NvbnRleHRfcXVldWUocmVxdWVzdCk7Cj4+Pj4gICB9Cj4+Pj4KPj4+PiAtc3RhdGljIGlu dCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCj4+Pj4gK3N0YXRpYyB2b2lkIF9fd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZ2J1ZikKPj4+PiAgIHsKPj4+PiAtICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+Pj4+ICAgICAgIHVpbnQzMl90IF9faW9tZW0g KnZpcnQ7Cj4+Pj4gICAgICAgaW50IHJlbSA9IHJpbmdidWYtPnNpemUgLSByaW5nYnVmLT50YWls Owo+Pj4+Cj4+Pj4gLSAgICAvKiBDYW4ndCB3cmFwIGlmIHNwYWNlIGhhcyBhbHJlYWR5IGJlZW4g cmVzZXJ2ZWQhICovCj4+Pj4gLSAgICBXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7 Cj4+Pj4gLQo+Pj4+IC0gICAgaWYgKHJpbmdidWYtPnNwYWNlIDwgcmVtKSB7Cj4+Pj4gLSAgICAg ICAgaW50IHJldCA9IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShyZXEsIHJlbSk7Cj4+Pj4g LQo+Pj4+IC0gICAgICAgIGlmIChyZXQpCj4+Pj4gLSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ Pj4gLSAgICB9Cj4+Pj4gLQo+Pj4+ICAgICAgIHZpcnQgPSByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0 ICsgcmluZ2J1Zi0+dGFpbDsKPj4+PiAgICAgICByZW0gLz0gNDsKPj4+PiAgICAgICB3aGlsZSAo cmVtLS0pCj4+Pj4gQEAgLTc0MSw0MCArNzMwLDUwIEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5n X3dyYXBfYnVmZmVyKHN0cnVjdAo+Pj4+IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4+Pj4K Pj4+PiAgICAgICByaW5nYnVmLT50YWlsID0gMDsKPj4+PiAgICAgICBpbnRlbF9yaW5nX3VwZGF0 ZV9zcGFjZShyaW5nYnVmKTsKPj4+PiAtCj4+Pj4gLSAgICByZXR1cm4gMDsKPj4+PiAgIH0KPj4+ Pgo+Pj4+ICAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKPj4+PiBpbnQgYnl0ZXMpCj4+Pj4gICB7Cj4+Pj4gICAgICAgc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7Cj4+Pj4gLSAgICBp bnQgcmV0Owo+Pj4+IC0KPj4+PiAtICAgIC8qCj4+Pj4gLSAgICAgKiBBZGQgb24gdGhlIHJlc2Vy dmVkIHNpemUgdG8gdGhlIHJlcXVlc3QgdG8gbWFrZSBzdXJlIHRoYXQgYWZ0ZXIKPj4+PiAtICAg ICAqIHRoZSBpbnRlbmRlZCBjb21tYW5kcyBoYXZlIGJlZW4gZW1pdHRlZCwgdGhlcmUgaXMgZ3Vh cmFudGVlZCB0bwo+Pj4+IC0gICAgICogc3RpbGwgYmUgZW5vdWdoIGZyZWUgc3BhY2UgdG8gc2Vu ZCB0aGVtIHRvIHRoZSBoYXJkd2FyZS4KPj4+PiAtICAgICAqLwo+Pj4+IC0gICAgaWYgKCFyaW5n YnVmLT5yZXNlcnZlZF9pbl91c2UpCj4+Pj4gLSAgICAgICAgYnl0ZXMgKz0gcmluZ2J1Zi0+cmVz ZXJ2ZWRfc2l6ZTsKPj4+PiAtCj4+Pj4gLSAgICBpZiAodW5saWtlbHkocmluZ2J1Zi0+dGFpbCAr IGJ5dGVzID4gcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUpKSB7Cj4+Pj4gLSAgICAgICAgcmV0ID0g bG9naWNhbF9yaW5nX3dyYXBfYnVmZmVyKHJlcSk7Cj4+Pj4gLSAgICAgICAgaWYgKHVubGlrZWx5 KHJldCkpCj4+Pj4gLSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gKyAgICBpbnQgcmVtYWlu X3VzYWJsZSA9IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPj4+PiAr ICAgIGludCByZW1haW5fYWN0dWFsID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4+ Pgo+Pj4gWW91IGNvdWxkIGFkZCBhIGNvbW1lbnQgaGVyZSAoYW5kIGluIHRoZSBsZWdhY3kgaW1w bGVtZW50YXRpb24pCj4+PiBleHBsYWluaW5nIHdoeSB3ZSBtYWtlIHRoZSBkaXN0aW5jdGlvbiBi ZXR3ZWVuIHJlbWFpbl91c2FibGUgYW5kCj4+PiByZW1haW5fYWN0dWFsLiBPciB5b3UgY291bGQg YWRkIHRoZSBjb21tZW50IHdoZW4gd2UgYWN0dWFsbHkgdXNlCj4+PiByZW1haW5fYWN0dWFsIGZ1 cnRoZXIgZG93biBpbiB0aGUgZnVuY3Rpb24uIEl0J3MgdXAgdG8geW91Lgo+Pj4KPj4+IFdlIGZp cnN0IG5lZWQgdG8gYmUgcGVzc2ltaXN0aWMgYWJvdXQgaG93IG11Y2ggc3BhY2UgaXMgbGVmdCBp biB0aGUKPj4+IHJpbmcgYnVmZmVyIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIG5lZWQgZm9yIHdyYXBw aW5nIC0gdGhlcmVmb3JlIHdlIHVzZQo+Pj4gcmVtYWluX3VzYWJsZSwgd2hpY2ggZGlzcmVnYXJk cyB0aGUgZW5kLW9mLWJ1ZmZlciBwYWRkaW5nIC0gYW5kIHRoZW4KPj4+IHdlIG5lZWQgdG8gYmUg cGVzc2ltaXN0aWMgYWJvdXQgaG93IG11Y2ggcmluZyBzcGFjZSB3ZSBuZWVkIHRvIHdhaXQKPj4+ IGZvciAtIHRoZXJlZm9yZSB3ZSB1c2UgcmVtYWluX2FjdHVhbCwgd2hpY2ggdGFrZXMgdGhlIGVu ZC1vZi1idWZmZXIKPj4+IHBhZGRpbmcgaW50byBjb25zaWRlcmF0aW9uIHRvIG1ha2Ugc3VyZSB0 aGF0IHdlJ3JlIGFjdHVhbGx5IG5vdAo+Pj4gd2FpdGluZyBmb3IgdG9vIGxpdHRsZSBzcGFjZS4K Pj4KPj4gSXQncyBub3QgYWJvdXQgYmVpbmcgcGVzc2ltaXN0aWMgb3Igb3B0aW1pc3RpYy4gVGhh dCBpbXBsaWVzIHRoZXJlIGlzCj4+IHNvbWUgY2hvaWNlLCB0aGF0IG9uZSB2ZXJzaW9uIGlzIGEg bGl0dGxlIGJpdCBiZXR0ZXIgaW4gb25lIHNpdHVhdGlvbgo+PiBidXQgZWl0aGVyIHdvdWxkIGRv LiBXaGVyZWFzIHRoaXMgaXMgYWJvdXQgZnVuY3Rpb25hbCBjb3JyZWN0bmVzcy4gVGhlCj4+IGRp ZmZlcmVuY2UgYmV0d2VlbiB0aGUgYWN0dWFsIHJpbmcgc2l6ZSBhbmQgdGhlIHVzYWJsZSByaW5n IHNpemUgaXMgbm90Cj4+IHNvbWUgcmVzZXJ2ZWQgc3BhY2UgdGhpbmcgdG8gbWFrZSBzb21ldGhp bmcgZ28gZmFzdGVyLiBUaGlzIGlzIGFib3V0IHRoZQo+PiBoYXJkd2FyZSBsb2NraW5nIHVwIGlm IHRoZSBlbnRpcmUgYnVmZmVyIGlzIHVzZWQuIEkgdGhpbmsgJ3VzYWJsZScgYW5kCj4+ICdhY3R1 YWwnIGFyZSBmYWlybHkgb2J2aW91cyBuYW1lcy4gSWYgeW91IHdhbnQgdG8ga25vdyB0aGUgZGV0 YWlscyBhYm91dAo+PiB3aHkgdGhlcmUgaXMgYW4gJ2VmZmVjdGl2ZV9zaXplJyBpbiB0aGUgZmly c3QgcGxhY2UgdGhlbiBsb29rIHVwCj4+ICdlZmZlY3RpdmVfc2l6ZScgaW4gdGhlIGNvZGUgYW5k IHJlYWQgdGhlIGNvbW1lbnQgYWJvdXQgaTgzMCBoYW5ncy4KPgo+IFlvdSdyZSBwcm9iYWJseSBy aWdodC4gTGV0J3MganVzdCBmb3JnZXQgYWJvdXQgaXQuCj4KPj4KPj4+IElmIHlvdSBhZGQgdGhv c2UgY29tbWVudHMgbWF5YmUgeW91IGNvdWxkIGFsc28gcmVuYW1lIHRoZSB2YXJpYWJsZXMgdG8K Pj4+IHNvbWV0aGluZyBsaWtlICJyZW1haW5pbmdfc3BhY2VfdXNhYmxlIiBldGMuIHNpbmNlICJy ZW1haW5fdXNhYmxlIiBpcwo+Pj4gbW9yZSBvZiBhIHZlcmIgdGhhbiBhIG5vdW4uIEJ1dCB0aGF0 J3Mgc2VyaW91c2x5IG5pdHBpY2tpbmcuCj4+IE9yIG1heWJlCj4+ICdyZW1haW5pbmdfc3BhY2Vf dGhhdF9pc191c2FibGVfd2l0aG91dF9jYXVzaW5nX2FuX2k4MzBfdG9faGFuZ19iZWNhdXNlX2l0 X3NraXBzX3RoZV9sYXN0X3R3b19jYWNoZWxpbmVzJz8KPj4KPj4gVGhlcmUgaXMgc3VjaCBhIHRo aW5nIGFzIGJlaW5nIHRvbyB2ZXJib3NlIGFuZCBtYWtpbmcgdGhlIGNvZGUgaGFyZCB0bwo+PiBy ZWFkLgo+Cj4gVGhhdCBpcyBpbmRlZWQgYSB2ZXJ5IGxvbmcgdmFyaWFibGUgbmFtZS4gSXQncyAx MDQgY2hhcmFjdGVycyBsb25nIHNvCj4gdGhhdCB3b3VsZG4ndCBjbGVhciBjaGVja3BhdGNoLnBs IDopLiBNeSBuaXRwaWNreSBzdWdnZXN0aW9uIHdhcyA5Cj4gY2hhcmFjdGVycyBsb25nZXIuIEFu ZCwgeWVhaCwgaXQncyBwb3NzaWJsZSB0byBnZXQgdG9vIHZlcmJvc2UuIFRoaXMKPiBkcml2ZXIg aXMgbm90IGV2ZW4gcmVtb3RlbHkgY2xvc2UgdG8gdGhhdCBwb2ludCBhcyBpdCBzdGFuZHMgdG9k YXkgOikuCj4KPiBUaGFua3MsCj4gVG9tYXMKCkFueXdheSwgSSB0aGluayB3ZSdyZSBkb25lIGhl cmUuCgpSZXZpZXdlZC1ieTogVG9tYXMgRWxmIDx0b21hcy5lbGZAaW50ZWwuY29tPgoKVGhhbmtz LApUb21hcwoKCj4KPj4KPj4KPj4+IElmIHlvdSBhdCBsZWFzdCBhZGQgdGhlIGNvbW1lbnRzIHRv IG1ha2UgaXQgY3J5c3RhbCBjbGVhciB3aHkgd2UgZG8gaXQKPj4+IHRoaXMgd2F5IHRoZW4gSSdt IGZpbmUuCj4+Cj4+IEkgZG9uJ3Qgc2VlIHdoYXQgY29tbWVudCBjb3VsZCBiZSBhZGRlZCB0aGF0 IHdvdWxkIGFjdHVhbGx5IG1ha2UgdGhpbmdzCj4+IGNsZWFyZXIgd2l0aG91dCBiZWluZyBhIGxv bmcgYW5kIHVubmVjZXNzYXJ5IGRlc2NyaXB0aW9uIG9mIHRoZSBpODMwCj4+IGlzc3VlLiBUaGVy ZSBhcmUgdHdvIHZhcmlhYmxlcyBkZWNsYXJlZCBvbiBjb25zZWN1dGl2ZSBsaW5lcyB0aGF0IGNh Y2hlCj4+IHByZXR0eSBzaW1wbGUgY2FsY3VsYXRpb25zIGFuZCBoYXZlIGZhaXJseSBjbGVhciBu YW1lcy4gSXQgbG9va3MgcXVpdGUKPj4gc2VsZiBleHBsYW5hdG9yeSB0byBtZSEgVGhlIGNvZGUg dGhlbiB0ZXN0cyB0byBzZWUgaWYgaXQgY2FuIHVzZSB0aGUKPj4gdXNhYmxlIHNwYWNlLCBpZiBu b3QgdGhlbiBpdCB3cmFwcyBhcm91bmQgdGhlIGFjdHVhbCBidWZmZXIgc2l6ZS4gQWdhaW4sCj4+ IHNlZW1zIHByZXR0eSBvYnZpb3VzIGFzIHRvIHdoYXQgaXMgZ29pbmcgb24gYW5kIHdoeSAtIHlv dSBjYW4gb25seSB1c2UKPj4gdGhlIHVzYWJsZSBiaXQsIGJ1dCB3aGVuIHRyYXZlcnNpbmcgdGhl IHdob2xlIGJ1ZmZlciB5b3UgcHJldHR5Cj4+IG9idmlvdXNseSBuZWVkIHRvIHRyYXZlcnNlIHRo ZSB3aG9sZSBidWZmZXIgbm90IGp1c3QgdGhlIHBhcnQgdGhhdCBtYXkKPj4gb3IgbWF5IG5vdCBo YXZlIGJlZW4gdXNlZC4KPj4KPj4KPj4+Cj4+PiBSZXZpZXdlZC1ieTogVG9tYXMgRWxmIDx0b21h cy5lbGZAaW50ZWwuY29tPgo+Pj4KPj4+IFRoYW5rcywKPj4+IFRvbWFzCj4+Pgo+Pj4+ICsgICAg aW50IHJldCwgdG90YWxfYnl0ZXMsIHdhaXRfYnl0ZXMgPSAwOwo+Pj4+ICsgICAgYm9vbCBuZWVk X3dyYXAgPSBmYWxzZTsKPj4+Pgo+Pj4+IC0gICAgICAgIGlmKHJpbmdidWYtPnJlc2VydmVkX3Np emUpIHsKPj4+PiAtICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSA9IHJpbmdidWYtPnJlc2VydmVk X3NpemU7Cj4+Pj4gKyAgICBpZiAocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKQo+Pj4+ICsgICAg ICAgIHRvdGFsX2J5dGVzID0gYnl0ZXM7Cj4+Pj4gKyAgICBlbHNlCj4+Pj4gKyAgICAgICAgdG90 YWxfYnl0ZXMgPSBieXRlcyArIHJpbmdidWYtPnJlc2VydmVkX3NpemU7Cj4+Pj4KPj4+PiAtICAg ICAgICAgICAgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmluZ2J1Zik7Cj4+Pj4g LSAgICAgICAgICAgIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyaW5nYnVmLCBz aXplKTsKPj4+PiArICAgIGlmICh1bmxpa2VseShieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7Cj4+ Pj4gKyAgICAgICAgLyoKPj4+PiArICAgICAgICAgKiBOb3QgZW5vdWdoIHNwYWNlIGZvciB0aGUg YmFzaWMgcmVxdWVzdC4gU28gbmVlZCB0byBmbHVzaAo+Pj4+ICsgICAgICAgICAqIG91dCB0aGUg cmVtYWluZGVyIGFuZCB0aGVuIHdhaXQgZm9yIGJhc2UgKyByZXNlcnZlZC4KPj4+PiArICAgICAg ICAgKi8KPj4+PiArICAgICAgICB3YWl0X2J5dGVzID0gcmVtYWluX2FjdHVhbCArIHRvdGFsX2J5 dGVzOwo+Pj4+ICsgICAgICAgIG5lZWRfd3JhcCA9IHRydWU7Cj4+Pj4gKyAgICB9IGVsc2Ugewo+ Pj4+ICsgICAgICAgIGlmICh1bmxpa2VseSh0b3RhbF9ieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7 Cj4+Pj4gKyAgICAgICAgICAgIC8qCj4+Pj4gKyAgICAgICAgICAgICAqIFRoZSBiYXNlIHJlcXVl c3Qgd2lsbCBmaXQgYnV0IHRoZSByZXNlcnZlZCBzcGFjZQo+Pj4+ICsgICAgICAgICAgICAgKiBm YWxscyBvZmYgdGhlIGVuZC4gU28gb25seSBuZWVkIHRvIHRvIHdhaXQgZm9yIHRoZQo+Pj4+ICsg ICAgICAgICAgICAgKiByZXNlcnZlZCBzaXplIGFmdGVyIGZsdXNoaW5nIG91dCB0aGUgcmVtYWlu ZGVyLgo+Pj4+ICsgICAgICAgICAgICAgKi8KPj4+PiArICAgICAgICAgICAgd2FpdF9ieXRlcyA9 IHJlbWFpbl9hY3R1YWwgKyByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+Pj4+ICsgICAgICAgICAg ICBuZWVkX3dyYXAgPSB0cnVlOwo+Pj4+ICsgICAgICAgIH0gZWxzZSBpZiAodG90YWxfYnl0ZXMg PiByaW5nYnVmLT5zcGFjZSkgewo+Pj4+ICsgICAgICAgICAgICAvKiBObyB3cmFwcGluZyByZXF1 aXJlZCwganVzdCB3YWl0aW5nLiAqLwo+Pj4+ICsgICAgICAgICAgICB3YWl0X2J5dGVzID0gdG90 YWxfYnl0ZXM7Cj4+Pj4gICAgICAgICAgIH0KPj4+PiAgICAgICB9Cj4+Pj4KPj4+PiAtICAgIGlm ICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkgewo+Pj4+IC0gICAgICAgIHJldCA9 IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShyZXEsIGJ5dGVzKTsKPj4+PiArICAgIGlmICh3 YWl0X2J5dGVzKSB7Cj4+Pj4gKyAgICAgICAgcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfZm9yX3Nw YWNlKHJlcSwgd2FpdF9ieXRlcyk7Cj4+Pj4gICAgICAgICAgIGlmICh1bmxpa2VseShyZXQpKQo+ Pj4+ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+PiArCj4+Pj4gKyAgICAgICAgaWYgKG5l ZWRfd3JhcCkKPj4+PiArICAgICAgICAgICAgX193cmFwX3JpbmdfYnVmZmVyKHJpbmdidWYpOwo+ Pj4+ICAgICAgIH0KPj4+Pgo+Pj4+ICAgICAgIHJldHVybiAwOwo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+Pj4+IGluZGV4IGFmN2MxMmUuLmUzOWM4OTEg MTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j Cj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+Pj4g QEAgLTIxMjEsMTIgKzIxMjEsMTIgQEAgc3RhdGljIGludCByaW5nX3dhaXRfZm9yX3NwYWNlKHN0 cnVjdAo+Pj4+IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50IG4pCj4+Pj4gICAgICAgdW5zaWdu ZWQgc3BhY2U7Cj4+Pj4gICAgICAgaW50IHJldDsKPj4+Pgo+Pj4+IC0gICAgLyogVGhlIHdob2xl IHBvaW50IG9mIHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KPj4+PiAtICAgIFdB Uk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPj4+PiAtCj4+Pj4gICAgICAgaWYgKGlu dGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gbikKPj4+PiAgICAgICAgICAgcmV0dXJuIDA7Cj4+ Pj4KPj4+PiArICAgIC8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8g bm90IHdhaXQhICovCj4+Pj4gKyAgICBXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7 Cj4+Pj4gKwo+Pj4+ICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJnJpbmctPnJl cXVlc3RfbGlzdCwgbGlzdCkgewo+Pj4+ICAgICAgICAgICBzcGFjZSA9IF9faW50ZWxfcmluZ19z cGFjZShyZXF1ZXN0LT5wb3N0Zml4LCByaW5nYnVmLT50YWlsLAo+Pj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICByaW5nYnVmLT5zaXplKTsKPj4+PiBAQCAtMjE0NSwyMSArMjE0NSwxMSBAQCBz dGF0aWMgaW50IHJpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0Cj4+Pj4gaW50ZWxfZW5naW5lX2Nz ICpyaW5nLCBpbnQgbikKPj4+PiAgICAgICByZXR1cm4gMDsKPj4+PiAgIH0KPj4+Pgo+Pj4+IC1z dGF0aWMgaW50IGludGVsX3dyYXBfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZykKPj4+PiArc3RhdGljIHZvaWQgX193cmFwX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmKQo+Pj4+ICAgewo+Pj4+ICAgICAgIHVpbnQzMl90IF9faW9tZW0g KnZpcnQ7Cj4+Pj4gLSAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJpbmct PmJ1ZmZlcjsKPj4+PiAgICAgICBpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRh aWw7Cj4+Pj4KPj4+PiAtICAgIC8qIENhbid0IHdyYXAgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVl biByZXNlcnZlZCEgKi8KPj4+PiAtICAgIFdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNl KTsKPj4+PiAtCj4+Pj4gLSAgICBpZiAocmluZ2J1Zi0+c3BhY2UgPCByZW0pIHsKPj4+PiAtICAg ICAgICBpbnQgcmV0ID0gcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nLCByZW0pOwo+Pj4+IC0gICAg ICAgIGlmIChyZXQpCj4+Pj4gLSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gLSAgICB9Cj4+ Pj4gLQo+Pj4+ICAgICAgIHZpcnQgPSByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+ dGFpbDsKPj4+PiAgICAgICByZW0gLz0gNDsKPj4+PiAgICAgICB3aGlsZSAocmVtLS0pCj4+Pj4g QEAgLTIxNjcsOCArMjE1Nyw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihz dHJ1Y3QKPj4+PiBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4+Pj4KPj4+PiAgICAgICByaW5nYnVm LT50YWlsID0gMDsKPj4+PiAgICAgICBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nYnVmKTsK Pj4+PiAtCj4+Pj4gLSAgICByZXR1cm4gMDsKPj4+PiAgIH0KPj4+Pgo+Pj4+ICAgaW50IGludGVs X3JpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+Pj4+IEBAIC0yMjM4LDkg KzIyMjYsMjEgQEAgdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3VzZShzdHJ1Y3QKPj4+ PiBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+Pj4+ICAgdm9pZCBpbnRlbF9yaW5nX3Jlc2Vy dmVkX3NwYWNlX2VuZChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPj4+PiAgIHsK Pj4+PiAgICAgICBXQVJOX09OKCFyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+Pj4+IC0gICAg V0FSTihyaW5nYnVmLT50YWlsID4gcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCArCj4+Pj4gcmluZ2J1 Zi0+cmVzZXJ2ZWRfc2l6ZSwKPj4+PiAtICAgICAgICAgInJlcXVlc3QgcmVzZXJ2ZWQgc2l6ZSB0 b28gc21hbGw6ICVkIHZzICVkIVxuIiwKPj4+PiAtICAgICAgICAgcmluZ2J1Zi0+dGFpbCAtIHJp bmdidWYtPnJlc2VydmVkX3RhaWwsCj4+Pj4gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSk7Cj4+Pj4g KyAgICBpZiAocmluZ2J1Zi0+dGFpbCA+IHJpbmdidWYtPnJlc2VydmVkX3RhaWwpIHsKPj4+PiAr ICAgICAgICBXQVJOKHJpbmdidWYtPnRhaWwgPiByaW5nYnVmLT5yZXNlcnZlZF90YWlsICsKPj4+ PiByaW5nYnVmLT5yZXNlcnZlZF9zaXplLAo+Pj4+ICsgICAgICAgICAgICAgInJlcXVlc3QgcmVz ZXJ2ZWQgc2l6ZSB0b28gc21hbGw6ICVkIHZzICVkIVxuIiwKPj4+PiArICAgICAgICAgICAgIHJp bmdidWYtPnRhaWwgLSByaW5nYnVmLT5yZXNlcnZlZF90YWlsLAo+Pj4+IHJpbmdidWYtPnJlc2Vy dmVkX3NpemUpOwo+Pj4+ICsgICAgfSBlbHNlIHsKPj4+PiArICAgICAgICAvKgo+Pj4+ICsgICAg ICAgICAqIFRoZSByaW5nIHdhcyB3cmFwcGVkIHdoaWxlIHRoZSByZXNlcnZlZCBzcGFjZSB3YXMg aW4gdXNlLgo+Pj4+ICsgICAgICAgICAqIFRoYXQgbWVhbnMgdGhhdCBzb21lIHVua25vd24gYW1v dW50IG9mIHRoZSByaW5nIHRhaWwgd2FzCj4+Pj4gKyAgICAgICAgICogbm8tb3AgZmlsbGVkIGFu ZCBza2lwcGVkLiBUaHVzIHNpbXBseSBhZGRpbmcgdGhlIHJpbmcgc2l6ZQo+Pj4+ICsgICAgICAg ICAqIHRvIHRoZSB0YWlsIGFuZCBkb2luZyB0aGUgYWJvdmUgc3BhY2UgY2hlY2sgd2lsbCBub3Qg d29yay4KPj4+PiArICAgICAgICAgKiBSYXRoZXIgdGhhbiBhdHRlbXB0IHRvIHRyYWNrIGhvdyBt dWNoIHRhaWwgd2FzIHNraXBwZWQsCj4+Pj4gKyAgICAgICAgICogaXQgaXMgbXVjaCBzaW1wbGVy IHRvIHNheSB0aGF0IGFsc28gc2tpcHBpbmcgdGhlIHNhbml0eQo+Pj4+ICsgICAgICAgICAqIGNo ZWNrIGV2ZXJ5IG9uY2UgaW4gYSB3aGlsZSBpcyBub3QgYSBiaWcgaXNzdWUuCj4+Pj4gKyAgICAg ICAgICovCj4+Pj4gKyAgICB9Cj4+Pj4KPj4+PiAgICAgICByaW5nYnVmLT5yZXNlcnZlZF9zaXpl ICAgPSAwOwo+Pj4+ICAgICAgIHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSA9IGZhbHNlOwo+Pj4+ IEBAIC0yMjQ5LDMzICsyMjQ5LDQ1IEBAIHZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9l bmQoc3RydWN0Cj4+Pj4gaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPj4+PiAgIHN0YXRpYyBp bnQgX19pbnRlbF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50 Cj4+Pj4gYnl0ZXMpCj4+Pj4gICB7Cj4+Pj4gICAgICAgc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmdidWYgPSByaW5nLT5idWZmZXI7Cj4+Pj4gLSAgICBpbnQgcmV0Owo+Pj4+IC0KPj4+PiAt ICAgIC8qCj4+Pj4gLSAgICAgKiBBZGQgb24gdGhlIHJlc2VydmVkIHNpemUgdG8gdGhlIHJlcXVl c3QgdG8gbWFrZSBzdXJlIHRoYXQgYWZ0ZXIKPj4+PiAtICAgICAqIHRoZSBpbnRlbmRlZCBjb21t YW5kcyBoYXZlIGJlZW4gZW1pdHRlZCwgdGhlcmUgaXMgZ3VhcmFudGVlZCB0bwo+Pj4+IC0gICAg ICogc3RpbGwgYmUgZW5vdWdoIGZyZWUgc3BhY2UgdG8gc2VuZCB0aGVtIHRvIHRoZSBoYXJkd2Fy ZS4KPj4+PiAtICAgICAqLwo+Pj4+IC0gICAgaWYgKCFyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2Up Cj4+Pj4gLSAgICAgICAgYnl0ZXMgKz0gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPj4+PiAtCj4+ Pj4gLSAgICBpZiAodW5saWtlbHkocmluZ2J1Zi0+dGFpbCArIGJ5dGVzID4gcmluZ2J1Zi0+ZWZm ZWN0aXZlX3NpemUpKSB7Cj4+Pj4gLSAgICAgICAgcmV0ID0gaW50ZWxfd3JhcF9yaW5nX2J1ZmZl cihyaW5nKTsKPj4+PiAtICAgICAgICBpZiAodW5saWtlbHkocmV0KSkKPj4+PiAtICAgICAgICAg ICAgcmV0dXJuIHJldDsKPj4+PiArICAgIGludCByZW1haW5fdXNhYmxlID0gcmluZ2J1Zi0+ZWZm ZWN0aXZlX3NpemUgLSByaW5nYnVmLT50YWlsOwo+Pj4+ICsgICAgaW50IHJlbWFpbl9hY3R1YWwg PSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPj4+PiArICAgIGludCByZXQsIHRvdGFs X2J5dGVzLCB3YWl0X2J5dGVzID0gMDsKPj4+PiArICAgIGJvb2wgbmVlZF93cmFwID0gZmFsc2U7 Cj4+Pj4KPj4+PiAtICAgICAgICBpZihyaW5nYnVmLT5yZXNlcnZlZF9zaXplKSB7Cj4+Pj4gLSAg ICAgICAgICAgIHVpbnQzMl90IHNpemUgPSByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+Pj4+ICsg ICAgaWYgKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSkKPj4+PiArICAgICAgICB0b3RhbF9ieXRl cyA9IGJ5dGVzOwo+Pj4+ICsgICAgZWxzZQo+Pj4+ICsgICAgICAgIHRvdGFsX2J5dGVzID0gYnl0 ZXMgKyByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+Pj4+Cj4+Pj4gLSAgICAgICAgICAgIGludGVs X3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHJpbmdidWYpOwo+Pj4+IC0gICAgICAgICAgICBp bnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUocmluZ2J1Ziwgc2l6ZSk7Cj4+Pj4gKyAg ICBpZiAodW5saWtlbHkoYnl0ZXMgPiByZW1haW5fdXNhYmxlKSkgewo+Pj4+ICsgICAgICAgIC8q Cj4+Pj4gKyAgICAgICAgICogTm90IGVub3VnaCBzcGFjZSBmb3IgdGhlIGJhc2ljIHJlcXVlc3Qu IFNvIG5lZWQgdG8gZmx1c2gKPj4+PiArICAgICAgICAgKiBvdXQgdGhlIHJlbWFpbmRlciBhbmQg dGhlbiB3YWl0IGZvciBiYXNlICsgcmVzZXJ2ZWQuCj4+Pj4gKyAgICAgICAgICovCj4+Pj4gKyAg ICAgICAgd2FpdF9ieXRlcyA9IHJlbWFpbl9hY3R1YWwgKyB0b3RhbF9ieXRlczsKPj4+PiArICAg ICAgICBuZWVkX3dyYXAgPSB0cnVlOwo+Pj4+ICsgICAgfSBlbHNlIHsKPj4+PiArICAgICAgICBp ZiAodW5saWtlbHkodG90YWxfYnl0ZXMgPiByZW1haW5fdXNhYmxlKSkgewo+Pj4+ICsgICAgICAg ICAgICAvKgo+Pj4+ICsgICAgICAgICAgICAgKiBUaGUgYmFzZSByZXF1ZXN0IHdpbGwgZml0IGJ1 dCB0aGUgcmVzZXJ2ZWQgc3BhY2UKPj4+PiArICAgICAgICAgICAgICogZmFsbHMgb2ZmIHRoZSBl bmQuIFNvIG9ubHkgbmVlZCB0byB0byB3YWl0IGZvciB0aGUKPj4+PiArICAgICAgICAgICAgICog cmVzZXJ2ZWQgc2l6ZSBhZnRlciBmbHVzaGluZyBvdXQgdGhlIHJlbWFpbmRlci4KPj4+PiArICAg ICAgICAgICAgICovCj4+Pj4gKyAgICAgICAgICAgIHdhaXRfYnl0ZXMgPSByZW1haW5fYWN0dWFs ICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPj4+PiArICAgICAgICAgICAgbmVlZF93cmFwID0g dHJ1ZTsKPj4+PiArICAgICAgICB9IGVsc2UgaWYgKHRvdGFsX2J5dGVzID4gcmluZ2J1Zi0+c3Bh Y2UpIHsKPj4+PiArICAgICAgICAgICAgLyogTm8gd3JhcHBpbmcgcmVxdWlyZWQsIGp1c3Qgd2Fp dGluZy4gKi8KPj4+PiArICAgICAgICAgICAgd2FpdF9ieXRlcyA9IHRvdGFsX2J5dGVzOwo+Pj4+ ICAgICAgICAgICB9Cj4+Pj4gICAgICAgfQo+Pj4+Cj4+Pj4gLSAgICBpZiAodW5saWtlbHkocmlu Z2J1Zi0+c3BhY2UgPCBieXRlcykpIHsKPj4+PiAtICAgICAgICByZXQgPSByaW5nX3dhaXRfZm9y X3NwYWNlKHJpbmcsIGJ5dGVzKTsKPj4+PiArICAgIGlmICh3YWl0X2J5dGVzKSB7Cj4+Pj4gKyAg ICAgICAgcmV0ID0gcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nLCB3YWl0X2J5dGVzKTsKPj4+PiAg ICAgICAgICAgaWYgKHVubGlrZWx5KHJldCkpCj4+Pj4gICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+Pj4+ICsKPj4+PiArICAgICAgICBpZiAobmVlZF93cmFwKQo+Pj4+ICsgICAgICAgICAgICBf X3dyYXBfcmluZ19idWZmZXIocmluZ2J1Zik7Cj4+Pj4gICAgICAgfQo+Pj4+Cj4+Pj4gICAgICAg cmV0dXJuIDA7Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o Cj4+Pj4gaW5kZXggMGUyYmJjNi4uMzA0Y2FjNCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPj4+PiBAQCAtNDczLDcgKzQ3Myw2IEBAIHN0YXRpYyBp bmxpbmUgdTMyIGludGVsX3JpbmdfZ2V0X3RhaWwoc3RydWN0Cj4+Pj4gaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZikKPj4+PiAgICAqIHdpbGwgYWx3YXlzIGhhdmUgc3VmZmljaWVudCByb29tIHRv IGRvIGl0cyBzdHVmZi4gVGhlIHJlcXVlc3QKPj4+PiBjcmVhdGlvbgo+Pj4+ICAgICogY29kZSBj YWxscyB0aGlzIGF1dG9tYXRpY2FsbHkuCj4+Pj4gICAgKi8KPj4+PiAtaW50IGludGVsX3Jpbmdf cmVzZXJ2ZV9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpOwo+Pj4+ ICAgdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUoc3RydWN0IGludGVsX3Jp bmdidWZmZXIKPj4+PiAqcmluZ2J1ZiwgaW50IHNpemUpOwo+Pj4+ICAgLyogQ2FuY2VsIHRoZSBy ZXNlcnZhdGlvbiwgZS5nLiBiZWNhdXNlIHRoZSByZXF1ZXN0IGlzIGJlaW5nCj4+Pj4gZGlzY2Fy ZGVkLiAqLwo+Pj4+ICAgdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNlbChzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlcgo+Pj4+ICpyaW5nYnVmKTsKPj4+PiBAQCAtNDgyLDQgKzQ4MSw3 IEBAIHZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV91c2Uoc3RydWN0Cj4+Pj4gaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4+Pj4gICAvKiBGaW5pc2ggd2l0aCB0aGUgcmVzZXJ2ZWQg c3BhY2UgLSBmb3IgdXNlIGJ5IGk5MTVfYWRkX3JlcXVlc3QoKQo+Pj4+IG9ubHkuICovCj4+Pj4g ICB2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmKTsKPj4+Pgo+Pj4+ICsvKiBMZWdhY3kgcmluZ2J1ZmZlciBzcGVjaWZpYyBw b3J0aW9uIG9mIHJlc2VydmF0aW9uIGNvZGU6ICovCj4+Pj4gK2ludCBpbnRlbF9yaW5nX3Jlc2Vy dmVfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKPj4+PiArCj4+ Pj4gICAjZW5kaWYgLyogX0lOVEVMX1JJTkdCVUZGRVJfSF8gKi8KPj4+Pgo+Pj4KPj4KPgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK