From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH] drm/i915: Reserve space improvements Date: Tue, 30 Jun 2015 16:53:39 +0100 Message-ID: <5592BB83.3070001@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id BE6AB6E9BB for ; Tue, 30 Jun 2015 08:53:48 -0700 (PDT) In-Reply-To: <5592AB2C.8050303@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tomas Elf , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMzAvMDYvMjAxNSAxNTo0MywgVG9tYXMgRWxmIHdyb3RlOgo+IE9uIDMwLzA2LzIwMTUgMTI6 NDAsIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20gd3JvdGU6Cj4+IEZyb206IEpvaG4gSGFycmlz b24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+Cj4+IEFuIGVhcmxpZXIgcGF0Y2ggd2Fz IGFkZGVkIHRvIHJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgYnVmZmVyIGZvciB0aGUKPj4gY29t bWFuZHMgaXNzdWVkIGR1cmluZyAnYWRkX3JlcXVlc3QoKScuIFRoZSBpbml0aWFsIHZlcnNpb24g d2FzCj4+IHBlc3NpbWlzdGljIGluIHRoZSB3YXkgaXQgaGFuZGxlZCBidWZmZXIgd3JhcHBpbmcg YW5kIHdvdWxkIGNhdXNlCj4+IHByZW1hdHVyZSB3cmFwcyBhbmQgdGh1cyB3YXN0ZSByaW5nIHNw YWNlLgo+Pgo+PiBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGNvZGUgdG8gYmV0dGVyIGhhbmRsZSB0 aGUgd3JhcCBjYXNlLiBJdCBubwo+PiBsb25nZXIgZW5mb3JjZXMgdGhhdCB0aGUgc3BhY2UgYmVp bmcgYXNrZWQgZm9yIGFuZCB0aGUgcmVzZXJ2ZWQgc3BhY2UKPj4gYXJlIGEgc2luZ2xlIGNvbnRp Z3VvdXMgYmxvY2suIEluc3RlYWQsIGl0IGFsbG93cyB0aGUgcmVzZXJ2ZSB0byBiZSBvbgo+PiB0 aGUgZmFyIGVuZCBvZiBhIHdyYXAgb3BlcmF0aW9uLiBJdCBzdGlsbCBndWFyYW50ZWVzIHRoYXQg dGhlIHNwYWNlIGlzCj4+IGF2YWlsYWJsZSBzbyB3aGVuIHRoZSB3cmFwIG9jY3Vycywgbm8gd2Fp dCB3aWxsIGhhcHBlbi4gVGh1cyB0aGUgd3JhcAo+PiBjYW5ub3QgZmFpbCB3aGljaCBpcyB0aGUg d2hvbGUgcG9pbnQgb2YgdGhlIGV4ZXJjaXNlLgo+Pgo+PiBBbHNvIGZpeGVkIGEgbWVyZ2UgZmFp bHVyZSB3aXRoIHNvbWUgY29tbWVudHMgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCj4+Cj4+IHYy OiBJbmNvcnBvcmF0ZWQgc3VnZ2VzdGlvbiBieSBEYXZpZCBHb3Jkb24gdG8gbW92ZSB0aGUgd3Jh cCBjb2RlCj4+IGluc2lkZSB0aGUgcHJlcGFyZSBmdW5jdGlvbiBhbmQgdGh1cyBhbGxvdyBhIHNp bmdsZSBjb21iaW5lZAo+PiB3YWl0X2Zvcl9zcGFjZSgpIGNhbGwgcmF0aGVyIHRoYW4gZG9pbmcg b25lIGJlZm9yZSB0aGUgd3JhcCBhbmQKPj4gYW5vdGhlciBhZnRlci4gVGhpcyBhbHNvIG1ha2Vz IHRoZSBwcmVwYXJlIGNvZGUgbXVjaCBzaW1wbGVyIGFuZAo+PiBlYXNpZXIgdG8gZm9sbG93Lgo+ Pgo+PiB2MzogRml4IGZvciAnZWZmZWN0aXZlX3NpemUnIHZzICdzaXplJyBkdXJpbmcgcmluZyBi dWZmZXIgcmVtYWluZGVyCj4+IGNhbGN1bGF0aW9ucyAoc3BvdHRlZCBieSBUb21hcyBFbGYpLgo+ Pgo+PiBGb3I6IFZJWi01MTE1Cj4+IENDOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ Cj4+IFNpZ25lZC1vZmYtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5j b20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8 IDczIAo+PiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDkwIAo+PiArKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAg NCArLQo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25z KC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiBpbmRleCBiMzZlMDY0Li43 ZDk1MTVkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiBAQCAtNjYzLDEyICs2 NjMsMTIgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IAo+ PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+PiAgICAgICB1bnNpZ25lZCBzcGFjZTsKPj4g ICAgICAgaW50IHJldDsKPj4KPj4gLSAgICAvKiBUaGUgd2hvbGUgcG9pbnQgb2YgcmVzZXJ2aW5n IHNwYWNlIGlzIHRvIG5vdCB3YWl0ISAqLwo+PiAtICAgIFdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2 ZWRfaW5fdXNlKTsKPj4gLQo+PiAgICAgICBpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+ PSBieXRlcykKPj4gICAgICAgICAgIHJldHVybiAwOwo+Pgo+PiArICAgIC8qIFRoZSB3aG9sZSBw b2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQhICovCj4+ICsgICAgV0FSTl9P TihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+PiArCj4+ICAgICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkodGFyZ2V0LCAmcmluZy0+cmVxdWVzdF9saXN0LCBsaXN0KSB7Cj4+ICAgICAgICAgICAv Kgo+PiAgICAgICAgICAgICogVGhlIHJlcXVlc3QgcXVldWUgaXMgcGVyLWVuZ2luZSwgc28gY2Fu IGNvbnRhaW4gcmVxdWVzdHMKPj4gQEAgLTcxOCwyMiArNzE4LDExIEBAIGludGVsX2xvZ2ljYWxf cmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IAo+PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCkKPj4gICAgICAgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUocmVxdWVzdCk7Cj4+ICAg fQo+Pgo+PiAtc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4+ICtzdGF0aWMgdm9pZCBfX3dyYXBfcmluZ19idWZmZXIo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ICAgewo+PiAtICAgIHN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+PiAgICAgICB1aW50MzJf dCBfX2lvbWVtICp2aXJ0Owo+PiAgICAgICBpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdi dWYtPnRhaWw7Cj4+Cj4+IC0gICAgLyogQ2FuJ3Qgd3JhcCBpZiBzcGFjZSBoYXMgYWxyZWFkeSBi ZWVuIHJlc2VydmVkISAqLwo+PiAtICAgIFdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNl KTsKPj4gLQo+PiAtICAgIGlmIChyaW5nYnVmLT5zcGFjZSA8IHJlbSkgewo+PiAtICAgICAgICBp bnQgcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHJlcSwgcmVtKTsKPj4gLQo+PiAt ICAgICAgICBpZiAocmV0KQo+PiAtICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gLSAgICB9Cj4+ IC0KPj4gICAgICAgdmlydCA9IHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgKyByaW5nYnVmLT50YWls Owo+PiAgICAgICByZW0gLz0gNDsKPj4gICAgICAgd2hpbGUgKHJlbS0tKQo+PiBAQCAtNzQxLDQw ICs3MzAsNTAgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IAo+ PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+Pgo+PiAgICAgICByaW5nYnVmLT50YWlsID0g MDsKPj4gICAgICAgaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZ2J1Zik7Cj4+IC0KPj4gLSAg ICByZXR1cm4gMDsKPj4gICB9Cj4+Cj4+ICAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfcHJlcGFy ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgCj4+IGludCBieXRlcykKPj4gICB7 Cj4+ICAgICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVm Owo+PiAtICAgIGludCByZXQ7Cj4+IC0KPj4gLSAgICAvKgo+PiAtICAgICAqIEFkZCBvbiB0aGUg cmVzZXJ2ZWQgc2l6ZSB0byB0aGUgcmVxdWVzdCB0byBtYWtlIHN1cmUgdGhhdCBhZnRlcgo+PiAt ICAgICAqIHRoZSBpbnRlbmRlZCBjb21tYW5kcyBoYXZlIGJlZW4gZW1pdHRlZCwgdGhlcmUgaXMg Z3VhcmFudGVlZCB0bwo+PiAtICAgICAqIHN0aWxsIGJlIGVub3VnaCBmcmVlIHNwYWNlIHRvIHNl bmQgdGhlbSB0byB0aGUgaGFyZHdhcmUuCj4+IC0gICAgICovCj4+IC0gICAgaWYgKCFyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UpCj4+IC0gICAgICAgIGJ5dGVzICs9IHJpbmdidWYtPnJlc2VydmVk X3NpemU7Cj4+IC0KPj4gLSAgICBpZiAodW5saWtlbHkocmluZ2J1Zi0+dGFpbCArIGJ5dGVzID4g cmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUpKSB7Cj4+IC0gICAgICAgIHJldCA9IGxvZ2ljYWxfcmlu Z193cmFwX2J1ZmZlcihyZXEpOwo+PiAtICAgICAgICBpZiAodW5saWtlbHkocmV0KSkKPj4gLSAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAgaW50IHJlbWFpbl91c2FibGUgPSByaW5nYnVm LT5lZmZlY3RpdmVfc2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4+ICsgICAgaW50IHJlbWFpbl9hY3R1 YWwgPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPgo+IFlvdSBjb3VsZCBhZGQgYSBj b21tZW50IGhlcmUgKGFuZCBpbiB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uKSAKPiBleHBsYWlu aW5nIHdoeSB3ZSBtYWtlIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHJlbWFpbl91c2FibGUgYW5k IAo+IHJlbWFpbl9hY3R1YWwuIE9yIHlvdSBjb3VsZCBhZGQgdGhlIGNvbW1lbnQgd2hlbiB3ZSBh Y3R1YWxseSB1c2UgCj4gcmVtYWluX2FjdHVhbCBmdXJ0aGVyIGRvd24gaW4gdGhlIGZ1bmN0aW9u LiBJdCdzIHVwIHRvIHlvdS4KPgo+IFdlIGZpcnN0IG5lZWQgdG8gYmUgcGVzc2ltaXN0aWMgYWJv dXQgaG93IG11Y2ggc3BhY2UgaXMgbGVmdCBpbiB0aGUgCj4gcmluZyBidWZmZXIgd2hlbiBkZXRl cm1pbmluZyB0aGUgbmVlZCBmb3Igd3JhcHBpbmcgLSB0aGVyZWZvcmUgd2UgdXNlIAo+IHJlbWFp bl91c2FibGUsIHdoaWNoIGRpc3JlZ2FyZHMgdGhlIGVuZC1vZi1idWZmZXIgcGFkZGluZyAtIGFu ZCB0aGVuIAo+IHdlIG5lZWQgdG8gYmUgcGVzc2ltaXN0aWMgYWJvdXQgaG93IG11Y2ggcmluZyBz cGFjZSB3ZSBuZWVkIHRvIHdhaXQgCj4gZm9yIC0gdGhlcmVmb3JlIHdlIHVzZSByZW1haW5fYWN0 dWFsLCB3aGljaCB0YWtlcyB0aGUgZW5kLW9mLWJ1ZmZlciAKPiBwYWRkaW5nIGludG8gY29uc2lk ZXJhdGlvbiB0byBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBhY3R1YWxseSBub3QgCj4gd2FpdGluZyBm b3IgdG9vIGxpdHRsZSBzcGFjZS4KCkl0J3Mgbm90IGFib3V0IGJlaW5nIHBlc3NpbWlzdGljIG9y IG9wdGltaXN0aWMuIFRoYXQgaW1wbGllcyB0aGVyZSBpcyAKc29tZSBjaG9pY2UsIHRoYXQgb25l IHZlcnNpb24gaXMgYSBsaXR0bGUgYml0IGJldHRlciBpbiBvbmUgc2l0dWF0aW9uIApidXQgZWl0 aGVyIHdvdWxkIGRvLiBXaGVyZWFzIHRoaXMgaXMgYWJvdXQgZnVuY3Rpb25hbCBjb3JyZWN0bmVz cy4gVGhlIApkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGFjdHVhbCByaW5nIHNpemUgYW5kIHRoZSB1 c2FibGUgcmluZyBzaXplIGlzIG5vdCAKc29tZSByZXNlcnZlZCBzcGFjZSB0aGluZyB0byBtYWtl IHNvbWV0aGluZyBnbyBmYXN0ZXIuIFRoaXMgaXMgYWJvdXQgdGhlIApoYXJkd2FyZSBsb2NraW5n IHVwIGlmIHRoZSBlbnRpcmUgYnVmZmVyIGlzIHVzZWQuIEkgdGhpbmsgJ3VzYWJsZScgYW5kIAon YWN0dWFsJyBhcmUgZmFpcmx5IG9idmlvdXMgbmFtZXMuIElmIHlvdSB3YW50IHRvIGtub3cgdGhl IGRldGFpbHMgYWJvdXQgCndoeSB0aGVyZSBpcyBhbiAnZWZmZWN0aXZlX3NpemUnIGluIHRoZSBm aXJzdCBwbGFjZSB0aGVuIGxvb2sgdXAgCidlZmZlY3RpdmVfc2l6ZScgaW4gdGhlIGNvZGUgYW5k IHJlYWQgdGhlIGNvbW1lbnQgYWJvdXQgaTgzMCBoYW5ncy4KCj4gSWYgeW91IGFkZCB0aG9zZSBj b21tZW50cyBtYXliZSB5b3UgY291bGQgYWxzbyByZW5hbWUgdGhlIHZhcmlhYmxlcyB0byAKPiBz b21ldGhpbmcgbGlrZSAicmVtYWluaW5nX3NwYWNlX3VzYWJsZSIgZXRjLiBzaW5jZSAicmVtYWlu X3VzYWJsZSIgaXMgCj4gbW9yZSBvZiBhIHZlcmIgdGhhbiBhIG5vdW4uIEJ1dCB0aGF0J3Mgc2Vy aW91c2x5IG5pdHBpY2tpbmcuCk9yIG1heWJlIAoncmVtYWluaW5nX3NwYWNlX3RoYXRfaXNfdXNh YmxlX3dpdGhvdXRfY2F1c2luZ19hbl9pODMwX3RvX2hhbmdfYmVjYXVzZV9pdF9za2lwc190aGVf bGFzdF90d29fY2FjaGVsaW5lcyc/IApUaGVyZSBpcyBzdWNoIGEgdGhpbmcgYXMgYmVpbmcgdG9v IHZlcmJvc2UgYW5kIG1ha2luZyB0aGUgY29kZSBoYXJkIHRvIHJlYWQuCgoKPiBJZiB5b3UgYXQg bGVhc3QgYWRkIHRoZSBjb21tZW50cyB0byBtYWtlIGl0IGNyeXN0YWwgY2xlYXIgd2h5IHdlIGRv IGl0IAo+IHRoaXMgd2F5IHRoZW4gSSdtIGZpbmUuCgpJIGRvbid0IHNlZSB3aGF0IGNvbW1lbnQg Y291bGQgYmUgYWRkZWQgdGhhdCB3b3VsZCBhY3R1YWxseSBtYWtlIHRoaW5ncyAKY2xlYXJlciB3 aXRob3V0IGJlaW5nIGEgbG9uZyBhbmQgdW5uZWNlc3NhcnkgZGVzY3JpcHRpb24gb2YgdGhlIGk4 MzAgCmlzc3VlLiBUaGVyZSBhcmUgdHdvIHZhcmlhYmxlcyBkZWNsYXJlZCBvbiBjb25zZWN1dGl2 ZSBsaW5lcyB0aGF0IGNhY2hlIApwcmV0dHkgc2ltcGxlIGNhbGN1bGF0aW9ucyBhbmQgaGF2ZSBm YWlybHkgY2xlYXIgbmFtZXMuIEl0IGxvb2tzIHF1aXRlIApzZWxmIGV4cGxhbmF0b3J5IHRvIG1l ISBUaGUgY29kZSB0aGVuIHRlc3RzIHRvIHNlZSBpZiBpdCBjYW4gdXNlIHRoZSAKdXNhYmxlIHNw YWNlLCBpZiBub3QgdGhlbiBpdCB3cmFwcyBhcm91bmQgdGhlIGFjdHVhbCBidWZmZXIgc2l6ZS4g QWdhaW4sIApzZWVtcyBwcmV0dHkgb2J2aW91cyBhcyB0byB3aGF0IGlzIGdvaW5nIG9uIGFuZCB3 aHkgLSB5b3UgY2FuIG9ubHkgdXNlIAp0aGUgdXNhYmxlIGJpdCwgYnV0IHdoZW4gdHJhdmVyc2lu ZyB0aGUgd2hvbGUgYnVmZmVyIHlvdSBwcmV0dHkgCm9idmlvdXNseSBuZWVkIHRvIHRyYXZlcnNl IHRoZSB3aG9sZSBidWZmZXIgbm90IGp1c3QgdGhlIHBhcnQgdGhhdCBtYXkgCm9yIG1heSBub3Qg aGF2ZSBiZWVuIHVzZWQuCgoKPgo+IFJldmlld2VkLWJ5OiBUb21hcyBFbGYgPHRvbWFzLmVsZkBp bnRlbC5jb20+Cj4KPiBUaGFua3MsCj4gVG9tYXMKPgo+PiArICAgIGludCByZXQsIHRvdGFsX2J5 dGVzLCB3YWl0X2J5dGVzID0gMDsKPj4gKyAgICBib29sIG5lZWRfd3JhcCA9IGZhbHNlOwo+Pgo+ PiAtICAgICAgICBpZihyaW5nYnVmLT5yZXNlcnZlZF9zaXplKSB7Cj4+IC0gICAgICAgICAgICB1 aW50MzJfdCBzaXplID0gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPj4gKyAgICBpZiAocmluZ2J1 Zi0+cmVzZXJ2ZWRfaW5fdXNlKQo+PiArICAgICAgICB0b3RhbF9ieXRlcyA9IGJ5dGVzOwo+PiAr ICAgIGVsc2UKPj4gKyAgICAgICAgdG90YWxfYnl0ZXMgPSBieXRlcyArIHJpbmdidWYtPnJlc2Vy dmVkX3NpemU7Cj4+Cj4+IC0gICAgICAgICAgICBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2Nh bmNlbChyaW5nYnVmKTsKPj4gLSAgICAgICAgICAgIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2Vf cmVzZXJ2ZShyaW5nYnVmLCBzaXplKTsKPj4gKyAgICBpZiAodW5saWtlbHkoYnl0ZXMgPiByZW1h aW5fdXNhYmxlKSkgewo+PiArICAgICAgICAvKgo+PiArICAgICAgICAgKiBOb3QgZW5vdWdoIHNw YWNlIGZvciB0aGUgYmFzaWMgcmVxdWVzdC4gU28gbmVlZCB0byBmbHVzaAo+PiArICAgICAgICAg KiBvdXQgdGhlIHJlbWFpbmRlciBhbmQgdGhlbiB3YWl0IGZvciBiYXNlICsgcmVzZXJ2ZWQuCj4+ ICsgICAgICAgICAqLwo+PiArICAgICAgICB3YWl0X2J5dGVzID0gcmVtYWluX2FjdHVhbCArIHRv dGFsX2J5dGVzOwo+PiArICAgICAgICBuZWVkX3dyYXAgPSB0cnVlOwo+PiArICAgIH0gZWxzZSB7 Cj4+ICsgICAgICAgIGlmICh1bmxpa2VseSh0b3RhbF9ieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7 Cj4+ICsgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAgICogVGhlIGJhc2UgcmVxdWVzdCB3 aWxsIGZpdCBidXQgdGhlIHJlc2VydmVkIHNwYWNlCj4+ICsgICAgICAgICAgICAgKiBmYWxscyBv ZmYgdGhlIGVuZC4gU28gb25seSBuZWVkIHRvIHRvIHdhaXQgZm9yIHRoZQo+PiArICAgICAgICAg ICAgICogcmVzZXJ2ZWQgc2l6ZSBhZnRlciBmbHVzaGluZyBvdXQgdGhlIHJlbWFpbmRlci4KPj4g KyAgICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAgd2FpdF9ieXRlcyA9IHJlbWFpbl9hY3R1 YWwgKyByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+PiArICAgICAgICAgICAgbmVlZF93cmFwID0g dHJ1ZTsKPj4gKyAgICAgICAgfSBlbHNlIGlmICh0b3RhbF9ieXRlcyA+IHJpbmdidWYtPnNwYWNl KSB7Cj4+ICsgICAgICAgICAgICAvKiBObyB3cmFwcGluZyByZXF1aXJlZCwganVzdCB3YWl0aW5n LiAqLwo+PiArICAgICAgICAgICAgd2FpdF9ieXRlcyA9IHRvdGFsX2J5dGVzOwo+PiAgICAgICAg ICAgfQo+PiAgICAgICB9Cj4+Cj4+IC0gICAgaWYgKHVubGlrZWx5KHJpbmdidWYtPnNwYWNlIDwg Ynl0ZXMpKSB7Cj4+IC0gICAgICAgIHJldCA9IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShy ZXEsIGJ5dGVzKTsKPj4gKyAgICBpZiAod2FpdF9ieXRlcykgewo+PiArICAgICAgICByZXQgPSBs b2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmVxLCB3YWl0X2J5dGVzKTsKPj4gICAgICAgICAg IGlmICh1bmxpa2VseShyZXQpKQo+PiAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsKPj4g KyAgICAgICAgaWYgKG5lZWRfd3JhcCkKPj4gKyAgICAgICAgICAgIF9fd3JhcF9yaW5nX2J1ZmZl cihyaW5nYnVmKTsKPj4gICAgICAgfQo+Pgo+PiAgICAgICByZXR1cm4gMDsKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAKPj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4gaW5kZXggYWY3YzEyZS4uZTM5Yzg5 MSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+PiBAQCAt MjEyMSwxMiArMjEyMSwxMiBAQCBzdGF0aWMgaW50IHJpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0 IAo+PiBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBuKQo+PiAgICAgICB1bnNpZ25lZCBzcGFj ZTsKPj4gICAgICAgaW50IHJldDsKPj4KPj4gLSAgICAvKiBUaGUgd2hvbGUgcG9pbnQgb2YgcmVz ZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0ISAqLwo+PiAtICAgIFdBUk5fT04ocmluZ2J1Zi0+ cmVzZXJ2ZWRfaW5fdXNlKTsKPj4gLQo+PiAgICAgICBpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5n YnVmKSA+PSBuKQo+PiAgICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+ICsgICAgLyogVGhlIHdob2xl IHBvaW50IG9mIHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KPj4gKyAgICBXQVJO X09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4+ICsKPj4gICAgICAgbGlzdF9mb3JfZWFj aF9lbnRyeShyZXF1ZXN0LCAmcmluZy0+cmVxdWVzdF9saXN0LCBsaXN0KSB7Cj4+ICAgICAgICAg ICBzcGFjZSA9IF9faW50ZWxfcmluZ19zcGFjZShyZXF1ZXN0LT5wb3N0Zml4LCByaW5nYnVmLT50 YWlsLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgcmluZ2J1Zi0+c2l6ZSk7Cj4+IEBAIC0y MTQ1LDIxICsyMTQ1LDExIEBAIHN0YXRpYyBpbnQgcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3Qg Cj4+IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50IG4pCj4+ICAgICAgIHJldHVybiAwOwo+PiAg IH0KPj4KPj4gLXN0YXRpYyBpbnQgaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQo+PiArc3RhdGljIHZvaWQgX193cmFwX3JpbmdfYnVmZmVyKHN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+PiAgIHsKPj4gICAgICAgdWludDMyX3QgX19p b21lbSAqdmlydDsKPj4gLSAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJp bmctPmJ1ZmZlcjsKPj4gICAgICAgaW50IHJlbSA9IHJpbmdidWYtPnNpemUgLSByaW5nYnVmLT50 YWlsOwo+Pgo+PiAtICAgIC8qIENhbid0IHdyYXAgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVlbiBy ZXNlcnZlZCEgKi8KPj4gLSAgICBXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4+ IC0KPj4gLSAgICBpZiAocmluZ2J1Zi0+c3BhY2UgPCByZW0pIHsKPj4gLSAgICAgICAgaW50IHJl dCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywgcmVtKTsKPj4gLSAgICAgICAgaWYgKHJldCkK Pj4gLSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+IC0gICAgfQo+PiAtCj4+ICAgICAgIHZpcnQg PSByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+dGFpbDsKPj4gICAgICAgcmVtIC89 IDQ7Cj4+ICAgICAgIHdoaWxlIChyZW0tLSkKPj4gQEAgLTIxNjcsOCArMjE1Nyw2IEBAIHN0YXRp YyBpbnQgaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgCj4+IGludGVsX2VuZ2luZV9jcyAq cmluZykKPj4KPj4gICAgICAgcmluZ2J1Zi0+dGFpbCA9IDA7Cj4+ICAgICAgIGludGVsX3Jpbmdf dXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+PiAtCj4+IC0gICAgcmV0dXJuIDA7Cj4+ICAgfQo+Pgo+ PiAgIGludCBpbnRlbF9yaW5nX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPj4g QEAgLTIyMzgsOSArMjIyNiwyMSBAQCB2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfdXNl KHN0cnVjdCAKPj4gaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPj4gICB2b2lkIGludGVsX3Jp bmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ PiAgIHsKPj4gICAgICAgV0FSTl9PTighcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPj4gLSAg ICBXQVJOKHJpbmdidWYtPnRhaWwgPiByaW5nYnVmLT5yZXNlcnZlZF90YWlsICsgCj4+IHJpbmdi dWYtPnJlc2VydmVkX3NpemUsCj4+IC0gICAgICAgICAicmVxdWVzdCByZXNlcnZlZCBzaXplIHRv byBzbWFsbDogJWQgdnMgJWQhXG4iLAo+PiAtICAgICAgICAgcmluZ2J1Zi0+dGFpbCAtIHJpbmdi dWYtPnJlc2VydmVkX3RhaWwsIAo+PiByaW5nYnVmLT5yZXNlcnZlZF9zaXplKTsKPj4gKyAgICBp ZiAocmluZ2J1Zi0+dGFpbCA+IHJpbmdidWYtPnJlc2VydmVkX3RhaWwpIHsKPj4gKyAgICAgICAg V0FSTihyaW5nYnVmLT50YWlsID4gcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCArIAo+PiByaW5nYnVm LT5yZXNlcnZlZF9zaXplLAo+PiArICAgICAgICAgICAgICJyZXF1ZXN0IHJlc2VydmVkIHNpemUg dG9vIHNtYWxsOiAlZCB2cyAlZCFcbiIsCj4+ICsgICAgICAgICAgICAgcmluZ2J1Zi0+dGFpbCAt IHJpbmdidWYtPnJlc2VydmVkX3RhaWwsIAo+PiByaW5nYnVmLT5yZXNlcnZlZF9zaXplKTsKPj4g KyAgICB9IGVsc2Ugewo+PiArICAgICAgICAvKgo+PiArICAgICAgICAgKiBUaGUgcmluZyB3YXMg d3JhcHBlZCB3aGlsZSB0aGUgcmVzZXJ2ZWQgc3BhY2Ugd2FzIGluIHVzZS4KPj4gKyAgICAgICAg ICogVGhhdCBtZWFucyB0aGF0IHNvbWUgdW5rbm93biBhbW91bnQgb2YgdGhlIHJpbmcgdGFpbCB3 YXMKPj4gKyAgICAgICAgICogbm8tb3AgZmlsbGVkIGFuZCBza2lwcGVkLiBUaHVzIHNpbXBseSBh ZGRpbmcgdGhlIHJpbmcgc2l6ZQo+PiArICAgICAgICAgKiB0byB0aGUgdGFpbCBhbmQgZG9pbmcg dGhlIGFib3ZlIHNwYWNlIGNoZWNrIHdpbGwgbm90IHdvcmsuCj4+ICsgICAgICAgICAqIFJhdGhl ciB0aGFuIGF0dGVtcHQgdG8gdHJhY2sgaG93IG11Y2ggdGFpbCB3YXMgc2tpcHBlZCwKPj4gKyAg ICAgICAgICogaXQgaXMgbXVjaCBzaW1wbGVyIHRvIHNheSB0aGF0IGFsc28gc2tpcHBpbmcgdGhl IHNhbml0eQo+PiArICAgICAgICAgKiBjaGVjayBldmVyeSBvbmNlIGluIGEgd2hpbGUgaXMgbm90 IGEgYmlnIGlzc3VlLgo+PiArICAgICAgICAgKi8KPj4gKyAgICB9Cj4+Cj4+ICAgICAgIHJpbmdi dWYtPnJlc2VydmVkX3NpemUgICA9IDA7Cj4+ICAgICAgIHJpbmdidWYtPnJlc2VydmVkX2luX3Vz ZSA9IGZhbHNlOwo+PiBAQCAtMjI0OSwzMyArMjI0OSw0NSBAQCB2b2lkIGludGVsX3JpbmdfcmVz ZXJ2ZWRfc3BhY2VfZW5kKHN0cnVjdCAKPj4gaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPj4g ICBzdGF0aWMgaW50IF9faW50ZWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsIGludCAKPj4gYnl0ZXMpCj4+ICAgewo+PiAgICAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsKPj4gLSAgICBpbnQgcmV0Owo+PiAtCj4+IC0g ICAgLyoKPj4gLSAgICAgKiBBZGQgb24gdGhlIHJlc2VydmVkIHNpemUgdG8gdGhlIHJlcXVlc3Qg dG8gbWFrZSBzdXJlIHRoYXQgYWZ0ZXIKPj4gLSAgICAgKiB0aGUgaW50ZW5kZWQgY29tbWFuZHMg aGF2ZSBiZWVuIGVtaXR0ZWQsIHRoZXJlIGlzIGd1YXJhbnRlZWQgdG8KPj4gLSAgICAgKiBzdGls bCBiZSBlbm91Z2ggZnJlZSBzcGFjZSB0byBzZW5kIHRoZW0gdG8gdGhlIGhhcmR3YXJlLgo+PiAt ICAgICAqLwo+PiAtICAgIGlmICghcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKQo+PiAtICAgICAg ICBieXRlcyArPSByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+PiAtCj4+IC0gICAgaWYgKHVubGlr ZWx5KHJpbmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgewo+ PiAtICAgICAgICByZXQgPSBpbnRlbF93cmFwX3JpbmdfYnVmZmVyKHJpbmcpOwo+PiAtICAgICAg ICBpZiAodW5saWtlbHkocmV0KSkKPj4gLSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAg aW50IHJlbWFpbl91c2FibGUgPSByaW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSAtIHJpbmdidWYtPnRh aWw7Cj4+ICsgICAgaW50IHJlbWFpbl9hY3R1YWwgPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+ dGFpbDsKPj4gKyAgICBpbnQgcmV0LCB0b3RhbF9ieXRlcywgd2FpdF9ieXRlcyA9IDA7Cj4+ICsg ICAgYm9vbCBuZWVkX3dyYXAgPSBmYWxzZTsKPj4KPj4gLSAgICAgICAgaWYocmluZ2J1Zi0+cmVz ZXJ2ZWRfc2l6ZSkgewo+PiAtICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSA9IHJpbmdidWYtPnJl c2VydmVkX3NpemU7Cj4+ICsgICAgaWYgKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSkKPj4gKyAg ICAgICAgdG90YWxfYnl0ZXMgPSBieXRlczsKPj4gKyAgICBlbHNlCj4+ICsgICAgICAgIHRvdGFs X2J5dGVzID0gYnl0ZXMgKyByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+Pgo+PiAtICAgICAgICAg ICAgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmluZ2J1Zik7Cj4+IC0gICAgICAg ICAgICBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUocmluZ2J1Ziwgc2l6ZSk7Cj4+ ICsgICAgaWYgKHVubGlrZWx5KGJ5dGVzID4gcmVtYWluX3VzYWJsZSkpIHsKPj4gKyAgICAgICAg LyoKPj4gKyAgICAgICAgICogTm90IGVub3VnaCBzcGFjZSBmb3IgdGhlIGJhc2ljIHJlcXVlc3Qu IFNvIG5lZWQgdG8gZmx1c2gKPj4gKyAgICAgICAgICogb3V0IHRoZSByZW1haW5kZXIgYW5kIHRo ZW4gd2FpdCBmb3IgYmFzZSArIHJlc2VydmVkLgo+PiArICAgICAgICAgKi8KPj4gKyAgICAgICAg d2FpdF9ieXRlcyA9IHJlbWFpbl9hY3R1YWwgKyB0b3RhbF9ieXRlczsKPj4gKyAgICAgICAgbmVl ZF93cmFwID0gdHJ1ZTsKPj4gKyAgICB9IGVsc2Ugewo+PiArICAgICAgICBpZiAodW5saWtlbHko dG90YWxfYnl0ZXMgPiByZW1haW5fdXNhYmxlKSkgewo+PiArICAgICAgICAgICAgLyoKPj4gKyAg ICAgICAgICAgICAqIFRoZSBiYXNlIHJlcXVlc3Qgd2lsbCBmaXQgYnV0IHRoZSByZXNlcnZlZCBz cGFjZQo+PiArICAgICAgICAgICAgICogZmFsbHMgb2ZmIHRoZSBlbmQuIFNvIG9ubHkgbmVlZCB0 byB0byB3YWl0IGZvciB0aGUKPj4gKyAgICAgICAgICAgICAqIHJlc2VydmVkIHNpemUgYWZ0ZXIg Zmx1c2hpbmcgb3V0IHRoZSByZW1haW5kZXIuCj4+ICsgICAgICAgICAgICAgKi8KPj4gKyAgICAg ICAgICAgIHdhaXRfYnl0ZXMgPSByZW1haW5fYWN0dWFsICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6 ZTsKPj4gKyAgICAgICAgICAgIG5lZWRfd3JhcCA9IHRydWU7Cj4+ICsgICAgICAgIH0gZWxzZSBp ZiAodG90YWxfYnl0ZXMgPiByaW5nYnVmLT5zcGFjZSkgewo+PiArICAgICAgICAgICAgLyogTm8g d3JhcHBpbmcgcmVxdWlyZWQsIGp1c3Qgd2FpdGluZy4gKi8KPj4gKyAgICAgICAgICAgIHdhaXRf Ynl0ZXMgPSB0b3RhbF9ieXRlczsKPj4gICAgICAgICAgIH0KPj4gICAgICAgfQo+Pgo+PiAtICAg IGlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8IGJ5dGVzKSkgewo+PiAtICAgICAgICByZXQg PSByaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcsIGJ5dGVzKTsKPj4gKyAgICBpZiAod2FpdF9ieXRl cykgewo+PiArICAgICAgICByZXQgPSByaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcsIHdhaXRfYnl0 ZXMpOwo+PiAgICAgICAgICAgaWYgKHVubGlrZWx5KHJldCkpCj4+ICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPj4gKwo+PiArICAgICAgICBpZiAobmVlZF93cmFwKQo+PiArICAgICAgICAgICAg X193cmFwX3JpbmdfYnVmZmVyKHJpbmdidWYpOwo+PiAgICAgICB9Cj4+Cj4+ICAgICAgIHJldHVy biAwOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiBpbmRl eCAwZTJiYmM2Li4zMDRjYWM0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCj4+IEBAIC00NzMsNyArNDczLDYgQEAgc3RhdGljIGlubGluZSB1MzIgaW50ZWxf cmluZ19nZXRfdGFpbChzdHJ1Y3QgCj4+IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ICAg ICogd2lsbCBhbHdheXMgaGF2ZSBzdWZmaWNpZW50IHJvb20gdG8gZG8gaXRzIHN0dWZmLiBUaGUg cmVxdWVzdCAKPj4gY3JlYXRpb24KPj4gICAgKiBjb2RlIGNhbGxzIHRoaXMgYXV0b21hdGljYWxs eS4KPj4gICAgKi8KPj4gLWludCBpbnRlbF9yaW5nX3Jlc2VydmVfc3BhY2Uoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKPj4gICB2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRf c3BhY2VfcmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAKPj4gKnJpbmdidWYsIGludCBz aXplKTsKPj4gICAvKiBDYW5jZWwgdGhlIHJlc2VydmF0aW9uLCBlLmcuIGJlY2F1c2UgdGhlIHJl cXVlc3QgaXMgYmVpbmcgCj4+IGRpc2NhcmRlZC4gKi8KPj4gICB2b2lkIGludGVsX3JpbmdfcmVz ZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyIAo+PiAqcmluZ2J1Zik7 Cj4+IEBAIC00ODIsNCArNDgxLDcgQEAgdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Vz ZShzdHJ1Y3QgCj4+IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpOwo+PiAgIC8qIEZpbmlzaCB3 aXRoIHRoZSByZXNlcnZlZCBzcGFjZSAtIGZvciB1c2UgYnkgaTkxNV9hZGRfcmVxdWVzdCgpIAo+ PiBvbmx5LiAqLwo+PiAgIHZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9lbmQoc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpOwo+Pgo+PiArLyogTGVnYWN5IHJpbmdidWZmZXIg c3BlY2lmaWMgcG9ydGlvbiBvZiByZXNlcnZhdGlvbiBjb2RlOiAqLwo+PiAraW50IGludGVsX3Jp bmdfcmVzZXJ2ZV9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpOwo+ PiArCj4+ICAgI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCj4+Cj4KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==