From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/13] drm/i915: Split the gamma/csc enable bits from the plane_ctl() function Date: Mon, 14 Jan 2019 21:11:32 +0200 Message-ID: <20190114191132.GF20097@intel.com> References: <20190111170823.4441-1-ville.syrjala@linux.intel.com> <20190111170823.4441-3-ville.syrjala@linux.intel.com> <20190112004137.GU4563@mdroper-desk.amr.corp.intel.com> <20190114171110.GD20097@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CD00A6EB13 for ; Mon, 14 Jan 2019 19:11:35 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190114171110.GD20097@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKYW4gMTQsIDIwMTkgYXQgMDc6MTE6MTBQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIEZyaSwgSmFuIDExLCAyMDE5IGF0IDA0OjQxOjM3UE0gLTA4MDAsIE1hdHQg Um9wZXIgd3JvdGU6Cj4gPiBPbiBGcmksIEphbiAxMSwgMjAxOSBhdCAwNzowODoxMlBNICswMjAw LCBWaWxsZSBTeXJqYWxhIHdyb3RlOgo+ID4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiAKPiA+ID4gT24gZzR4KyB0aGUgcGlwZSBn YW1tYSBlbmFibGUgYml0IGZvciB0aGUgcHJpbWFyeSBwbGFuZSBhZmZlY3RzCj4gPiA+IHRoZSBw aXBlIGJvdHRvbSBjb2xvciBhcyB3ZWxsLiBUaGUgc2FtZSBmb3IgdGhlIHBpcGUgY3NjIGVuYWJs ZQo+ID4gPiBiaXQgb24gaWxrKy4gVGh1cyB3ZSBtdXN0IGNvbmZpZ3VyZSB0aG9zZSBiaXRzIGNv cnJlY3RseSBldmVuCj4gPiA+IHdoZW4gdGhlIHByaW1hcnkgcGxhbmUgaXMgZGlzYWJsZWQuCj4g PiAKPiA+IFRoaXMgaXMgb25seSB0cnVlIGZvciA8Z2VuOSwgcmlnaHQ/IFN0YXJ0aW5nIHdpdGgg Z2VuOSwgd2UgaGF2ZQo+ID4gZGVkaWNhdGVkIGJpdHMgdGhhdCBjb250cm9sIHRoaXMsIHNvIEkg ZG9uJ3QgdGhpbmsgdGhlIHByaW1heSBwbGFuZSdzCj4gPiBzZXR0aW5ncyBzaG91bGQgaGF2ZSBh bnkgaW1wYWN0IHdoZW4gZGlzYWJsZWQuICBJLmUuLCB3ZSBhbHNvIG5lZWQgdGhlCj4gPiBiaXRz IHNldCBpbiB0aGlzIHBhdGNoOgo+ID4gCj4gPiAgICAgICAgIGh0dHBzOi8vcGF0Y2h3b3JrLmZy ZWVkZXNrdG9wLm9yZy9wYXRjaC8yNzExMDkvCj4gCj4gWWVzLiBJIGhhZCB0aGUgc2FtZSBiaXRz IChvciBzb21ldGhpbmcgc2ltaWxhciBpbiBhIGxhdGVyIHBhdGNoIGluCj4gdGhlIHNlcmllcyku IEJ1dCB3ZSBzaG91bGQgcHJvYmFibHkganVzdCBsYW5kIHlvdXIgc3R1ZmYgZmlyc3QuCj4gCj4g PiAKPiA+ID4gVG8gbWFrZSB0aGUgZmVhc2libGUgbGV0J3Mgc3BsaXQgdGhvc2Ugc2V0dGluZ3Mg ZnJvbSB0aGUKPiA+ID4gcGxhbmVfY3RsKCkgZnVuY3Rpb24gaW50byBhIHNlcHJhdGUgZnVuY2l0 b24gdGhhdCB3ZSBjYW4KPiA+ID4gY2FsbCBmcm9tIHRoZSAtPmRpc2FibGVfcGxhbmUoKSBob29r IGFzIHdlbGwuCj4gPiAKPiA+IElzIGNhbGxpbmcgaXQgZnJvbSAtPmRpc2FibGVfcGxhbmUoKSBl bm91Z2g/ICBJZiB3ZSBqdXN0IGRpc2FibGUgdGhlCj4gPiBwcmltYXJ5IHBsYW5lLCB0aGVuIHRo b3NlIGJpdHMgd2lsbCByZW1haW4gc2V0IHdoaWxlIHRoZSBjcnRjIHJlbWFpbnMKPiA+IGFjdGl2 ZS4gIEJ1dCBpZiB5b3UgdGhlbiBkaXNhYmxlIHRoZSB3aG9sZSBjcnRjIGFuZCByZS1lbmFibGUg aXQgYWdhaW4KPiA+IGxhdGVyLCB3b24ndCB3ZSBoYXZlIGxvc3QgdGhlIGJpdHMgYXQgdGhhdCBw b2ludD8KPiAKPiBIbW0uIFllcywgcHJvYmFibHkuCj4gCj4gSnVzdCBhZGRpbmcgYSBuZWVkc19t b2Rlc2V0KCkgY2hlY2sgaW50bwo+IGludGVsX2NvbG9yX2FkZF9hZmZlY3RlZF9wbGFuZXMoKSAo aW50cm9kdWNlZCBpbiBhIGxhdGVyIHBhdGNoKQo+IGNvdWxkIGJlIG9uZSB3YXkuIEJ1dCB0aGF0 IG1lYW5zIHRoZSBwbGFuZSBjb250cm9sIHJlZyB3b24ndCBiZQo+IHVwZGF0ZWQgYmVmb3JlIHRo ZSBwaXBlIGlzIGFscmVhZHkgYWN0aXZlLiBTbyB3ZSBtaWdodCBuZWVkIGEKPiBzcGVjaWFsIGNh c2UgZm9yIHRoYXQgdG9vLgo+IAo+IFRoYXQgc2FpZCwgSSBraW5kYSBoYXRlIHRoZSBwaXBlIGVu YWJsZSBzcGVjaWFsIGNhc2VzIGZvciB0aGUKPiBjb2xvciBtYW5hZ2VtZW50IHN0dWZmLiBTbyBJ J20gd29uZGVyaW5nIGlmIHdlIGNvdWxkIGVsaW1pbmF0ZQo+IGl0IGFsbCBhbmQganVzdCByZWx5 IG9uIHRoZSBub3JtYWwgcGlwZStwbGFuZSB1cGRhdGUgdG8gZG8KPiB0aGluZ3MgY29ycmVjdGx5 LiBCdXQgdG8gbWFrZSB0aGF0IGNvbnNpc3RlbnQgd2UgbWlnaHQgaGF2ZSB0bwo+IGhhdmUgYW5v dGhlciBzcGVjaWFsIGNhc2UgdG8gZGlzYWJsZSBnYW1tYS9ldGMuIHByaW9yIHRvCj4gZW5hYmxp bmcgdGhlIHBpcGUgc28gdGhhdCBpdCBjYW4gYWxsIGJlIGVuYWJsZWQgYXRvbWljYWxseQo+IGxh dGVyLiBIbW0uIEkgc3VwcG9zZSB0aGF0IGNvdWxkIGJlIGFjaGlldmVkIGJ5IGNsZWFyaW5nIGFs bAo+IHJlbGV2YW50IGNvbnRyb2wgYml0cyBpbiBkaXNhYmxlX3BsYW5lKCkgKG9yIGluIGNydGNf ZGlzYWJsZSgpCj4gZm9yIHNrbCspIGlmIHRoZSBjcnRjIGlzIG5vIGxvbmdlciBhY3RpdmUuCj4g Cj4gQW5kIEkgZ3Vlc3Mgd2UgY291bGQgc3RpbGwga2VlcCB0aGUgLmxvYWRfbHV0cygpIHNwZWNp YWwgY2FzZQo+IHNpbmNlIGd1YXJhbnRlZWluZyB0aGUgYXRvbWljaXR5IGZvciB0aGF0IGlzbid0 IGFzIGVhc3kuCj4gCj4gSXQgd291bGQgbWVhbiB0aGUgcGlwZSBhbHdhc3kgY29tZXMgdXAgd2l0 aCBnYW1tYSBhbmQgY3NjCj4gZGlzYWJsZWQuIEJ1dCBzaW5jZSBpdCdzIGFsbCBzb21lIHNoYWRl IG9mIGJsYWNrIGFueXdheSBJCj4gZ3Vlc3MgaXQgc2hvdWxkbid0IGJlIGEgYmlnIGRlYWwuCgpC YWguIFRoYXQgd29uJ3QgYWN0dWFsbHkgd29yayB3aXRob3V0IG1vcmUgaGFja3MgZm9yIHRoZQpj YXNlIHdoZXJlIHRoZSBjcnRjIHdhcyBlbmFibGVkIGFscmVhZHkuIEkgZ3Vlc3MgSSdsbCBqdXN0 CmhhdmUgdG8gc3RpY2sgYW4gZXhwbGljaXQgcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSgpIGNhbGwK aW50byB0aGUgY3J0Y19lbmFibGUoKSBwYXRoIDooCgo+IAo+ID4gCj4gPiAKPiA+IE1hdHQKPiA+ IAo+ID4gPiAKPiA+ID4gRm9yIGNvbnNpc3RlbmN5IHdlJ2xsIGRvIHRoYXQgb24gYWxsIHRoZSBw bGFuZSB0eXBlcy4gV2hpbGUKPiA+ID4gdGhhdCBoYXMgbm8gcmVhbCBiZW5lZml0cyBhdCB0aGlz IHRpbWUsIGl0J2xsIGJlY29tZSB1c2VmdWwKPiA+ID4gd2hlbiB3ZSBzdGFydCB0byBjb250cm9s IHRoZSBwaXBlIGdhbW1hL2NzYyBlbmFibGUgYml0cwo+ID4gPiBkeW5hbWljYWxseSB3aGVuIHdl IG92ZXJoYXVsIHRoZSBjb2xvciBtYW5hZ2VtZW50IGNvZGUuCj4gPiA+IAo+ID4gPiBPbiBwcmUt ZzR4IHRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGFueSB3YXkgdG8gZ2FtbWEKPiA+ID4gY29y cmVjdCB0aGUgcGlwZSBib3R0b20gY29sb3IsIGJ1dCBzdGlja2luZyB0byB0aGUgc2FtZQo+ID4g PiBwYXR0ZXJuIGRvZXNuJ3QgaHVydC4gQW5kIGl0J2xsIHN0aWxsIGhlbHAgdXMgdG8gZG8KPiA+ ID4gY3J0YyBzdGF0ZSByZWFkb3V0IGNvcnJlY3RseSBmb3IgdGhlIHBpcGUgZ2FtbWEgZW5hYmxl Cj4gPiA+IGJpdCBmb3IgdGhlIGNvbG9yIG1hbmFnZW1lbnQgb3ZlcmhhdWwuCj4gPiA+IAo+ID4g PiBBbiBhbHRlcm5hdGl2ZSBhcHBvcmFjaCB3b3VsZCBiZSB0byBzdGlsbCBwcmVjb21wdXRlIHRo ZXNlCj4gPiA+IGJpdHMgaW50byBwbGFuZV9zdGF0ZS0+Y3RsLCBidXQgdGhhdCB3b3VsZCByZXF1 aXJlIHRoYXQgd2UKPiA+ID4gcnVuIHRocm91Z2ggdGhlIHBsYW5lIGNoZWNrIGV2ZW4gd2hlbiB0 aGUgcGxhbmUgaXNuJ3QgbG9naWNhbGx5Cj4gPiA+IGVuYWJsZWQgb24gYW55IGNydGMuIEN1cnJl bnRseSB0aGF0IGNvbmRpdGlvbiBjYXVzZXMgdXMgdG8KPiA+ID4gc2hvcnQgY2lyY3VpdCB0aGUg ZW50aXJlIHRoaW5nIGFuZCBub3QgY2FsbCAtPmNoZWNrX3BsYW5lKCkuCj4gPiA+IFRoZXJlIHdv dWxkIGFsc28gYmUgc29tZSBjaGlja2VuIGFuZCBlZ2cgcHJvYmxlbXMgd2l0aAo+ID4gPiAtPmNo ZWNrX3BsYW5lKCkgdnMuIGNydGMgY29sb3Igc3RhdGUgY2hlY2sgdGhhdCB3b3VsZAo+ID4gPiBy ZXF1aXRlIHNwbGl0dGluZyBjZXJ0YWluIHRoaW5ncyBpbnRvIG11bHRpcGxlIHN0ZXBzLgo+ID4g PiBTbyBhbGwgaW4gYWxsIHRoaXMgc2VlbXMgbGlrZSB0aGUgZWFzaWVyIHJvdXRlLgo+ID4gPiAK PiA+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgfCAxMjggKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDMgKy0KPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8ICA1NCArKysrKysrKy0tLQo+ID4gPiAgMyBmaWxl cyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+IGluZGV4IDVkYzBkZTg5YzQ5 ZS4uYTM4NzFkYjQ3MDNiIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPiA+IEBAIC0zMTgwLDI4ICszMTgwLDM4IEBAIGk5eHhfcGxhbmVfbWF4X3N0cmlk ZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gPiAgCX0KPiA+ID4gIH0KPiA+ID4gIAo+ ID4gPiArc3RhdGljIHUzMiBpOXh4X3BsYW5lX2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4gPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYp Owo+ID4gPiArCXUzMiBkc3BjbnRyID0gMDsKPiA+ID4gKwo+ID4gPiArCWRzcGNudHIgfD0gRElT UFBMQU5FX0dBTU1BX0VOQUJMRTsKPiA+ID4gKwo+ID4gPiArCWlmIChJU19IQVNXRUxMKGRldl9w cml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ID4gPiArCQlkc3BjbnRyIHw9IERJU1BQ TEFORV9QSVBFX0NTQ19FTkFCTEU7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDUpCj4gPiA+ICsJCWRzcGNudHIgfD0gRElTUFBMQU5FX1NFTF9QSVBFKGNydGMtPnBp cGUpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIGRzcGNudHI7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gPiA+ICAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0KPiA+ID4gIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2 KTsKPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ID4gPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9 IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ID4gPiAgCXUzMiBkc3BjbnRyOwo+ID4gPiAg Cj4gPiA+IC0JZHNwY250ciA9IERJU1BMQVlfUExBTkVfRU5BQkxFIHwgRElTUFBMQU5FX0dBTU1B X0VOQUJMRTsKPiA+ID4gKwlkc3BjbnRyID0gRElTUExBWV9QTEFORV9FTkFCTEU7Cj4gPiA+ICAK PiA+ID4gIAlpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDUpIHx8Cj4g PiA+ICAJICAgIElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkK PiA+ID4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gPiA+ ICAKPiA+ID4gLQlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9w cml2KSkKPiA+ID4gLQkJZHNwY250ciB8PSBESVNQUExBTkVfUElQRV9DU0NfRU5BQkxFOwo+ID4g PiAtCj4gPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1KQo+ID4gPiAtCQlkc3BjbnRy IHw9IERJU1BQTEFORV9TRUxfUElQRShjcnRjLT5waXBlKTsKPiA+ID4gLQo+ID4gPiAgCXN3aXRj aCAoZmItPmZvcm1hdC0+Zm9ybWF0KSB7Cj4gPiA+ICAJY2FzZSBEUk1fRk9STUFUX0M4Ogo+ID4g PiAgCQlkc3BjbnRyIHw9IERJU1BQTEFORV84QlBQOwo+ID4gPiBAQCAtMzMyOSwxMSArMzMzOSwx MyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKPiA+ID4gIAllbnVtIGk5eHhfcGxhbmVfaWQgaTl4eF9wbGFuZSA9 IHBsYW5lLT5pOXh4X3BsYW5lOwo+ID4gPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ID4gPiAtCXUz MiBkc3BjbnRyID0gcGxhbmVfc3RhdGUtPmN0bDsKPiA+ID4gIAlpbnQgeCA9IHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVswXS54Owo+ID4gPiAgCWludCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lWzBdLnk7Cj4gPiA+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiA+ID4gIAl1MzIgZHNw YWRkcl9vZmZzZXQ7Cj4gPiA+ICsJdTMyIGRzcGNudHI7Cj4gPiA+ICsKPiA+ID4gKwlkc3BjbnRy ID0gcGxhbmVfc3RhdGUtPmN0bCB8IGk5eHhfcGxhbmVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4g PiA+ICAKPiA+ID4gIAlsaW5lYXJfb2Zmc2V0ID0gaW50ZWxfZmJfeHlfdG9fbGluZWFyKHgsIHks IHBsYW5lX3N0YXRlLCAwKTsKPiA+ID4gIAo+ID4gPiBAQCAtMzM5MywxMCArMzQwNSwyMyBAQCBz dGF0aWMgdm9pZCBpOXh4X2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5l LT5iYXNlLmRldik7Cj4gPiA+ICAJZW51bSBpOXh4X3BsYW5lX2lkIGk5eHhfcGxhbmUgPSBwbGFu ZS0+aTl4eF9wbGFuZTsKPiA+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gPiArCXUz MiBkc3BjbnRyOwo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBEU1BDTlRSIHBpcGUgZ2Ft bWEgZW5hYmxlIG9uIGc0eCsgYW5kIHBpcGUgY3NjCj4gPiA+ICsJICogZW5hYmxlIG9uIGlsaysg YWZmZWN0IHRoZSBwaXBlIGJvdHRvbSBjb2xvciBhcwo+ID4gPiArCSAqIHdlbGwsIHNvIHdlIG11 c3QgY29uZmlndXJlIHRoZW0gZXZlbiBpZiB0aGUgcGxhbmUKPiA+ID4gKwkgKiBpcyBkaXNhYmxl ZC4KPiA+ID4gKwkgKgo+ID4gPiArCSAqIE9uIHByZS1nNHggdGhlcmUgaXMgbm8gd2F5IHRvIGdh bW1hIGNvcnJlY3QgdGhlCj4gPiA+ICsJICogcGlwZSBib3R0b20gY29sb3IgYnV0IHdlJ2xsIGtl ZXAgb24gZG9pbmcgdGhpcwo+ID4gPiArCSAqIGFueXdheS4KPiA+ID4gKwkgKi8KPiA+ID4gKwlk c3BjbnRyID0gaTl4eF9wbGFuZV9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiA+ID4gIAo+ID4gPiAg CXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiA+ ID4gIAo+ID4gPiAtCUk5MTVfV1JJVEVfRlcoRFNQQ05UUihpOXh4X3BsYW5lKSwgMCk7Cj4gPiA+ ICsJSTkxNV9XUklURV9GVyhEU1BDTlRSKGk5eHhfcGxhbmUpLCBkc3BjbnRyKTsKPiA+ID4gIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ID4gPiAgCQlJOTE1X1dSSVRFX0ZXKERTUFNV UkYoaTl4eF9wbGFuZSksIDApOwo+ID4gPiAgCWVsc2UKPiA+ID4gQEAgLTM2MzEsNiArMzY1Niwy MCBAQCBzdGF0aWMgdTMyIGNubF9wbGFuZV9jdGxfZmxpcCh1bnNpZ25lZCBpbnQgcmVmbGVjdCkK PiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiArdTMyIHNrbF9wbGFuZV9j dGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ID4g K3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ID4gKwl1MzIgcGxhbmVfY3RsID0gMDsKPiA+ ID4gKwo+ID4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxB S0UoZGV2X3ByaXYpKQo+ID4gPiArCQlyZXR1cm4gcGxhbmVfY3RsOwo+ID4gPiArCj4gPiA+ICsJ cGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9QSVBFX0dBTU1BX0VOQUJMRTsKPiA+ID4gKwlwbGFuZV9j dGwgfD0gUExBTkVfQ1RMX1BJUEVfQ1NDX0VOQUJMRTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiBw bGFuZV9jdGw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gPiAgCQkgIGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPiA+ICB7Cj4gPiA+IEBAIC0z NjQ1LDEwICszNjg0LDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiA+ICAKPiA+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDEwICYmICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ID4gPiAgCQlwbGFuZV9j dGwgfD0gc2tsX3BsYW5lX2N0bF9hbHBoYShwbGFuZV9zdGF0ZSk7Cj4gPiA+IC0JCXBsYW5lX2N0 bCB8PQo+ID4gPiAtCQkJUExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5BQkxFIHwKPiA+ID4gLQkJCVBM QU5FX0NUTF9QSVBFX0NTQ19FTkFCTEUgfAo+ID4gPiAtCQkJUExBTkVfQ1RMX1BMQU5FX0dBTU1B X0RJU0FCTEU7Cj4gPiA+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElT QUJMRTsKPiA+ID4gIAo+ID4gPiAgCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2Rp bmcgPT0gRFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ID4gPiAgCQkJcGxhbmVfY3RsIHw9IFBMQU5F X0NUTF9ZVVZfVE9fUkdCX0NTQ19GT1JNQVRfQlQ3MDk7Cj4gPiA+IEBAIC0zNjczLDE5ICszNzA5 LDI3IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ID4gPiAgCXJldHVybiBwbGFuZV9jdGw7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ ID4gK3UzMiBnbGtfcGxhbmVfY29sb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gPiA+ ICsJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMSkKPiA+ID4gKwkJcmV0dXJuIHBsYW5lX2NvbG9yX2N0bDsKPiA+ID4g Kwo+ID4gPiArCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QSVBFX0dBTU1BX0VOQUJM RTsKPiA+ID4gKwlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9DU0NfRU5BQkxF Owo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHBsYW5lX2NvbG9yX2N0bDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiAgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gPiA+ICAJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ID4gPiAgewo+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9Cj4gPiA+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRl dik7Cj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+YmFzZS5mYjsKPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ID4gPiAgCXUzMiBwbGFuZV9jb2xvcl9j dGwgPSAwOwo+ID4gPiAgCj4gPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkgewo+ ID4gPiAtCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9HQU1NQV9FTkFCTEU7 Cj4gPiA+IC0JCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QSVBFX0NTQ19FTkFCTEU7 Cj4gPiA+IC0JfQo+ID4gPiAgCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9H QU1NQV9ESVNBQkxFOwo+ID4gPiAgCXBsYW5lX2NvbG9yX2N0bCB8PSBnbGtfcGxhbmVfY29sb3Jf Y3RsX2FscGhhKHBsYW5lX3N0YXRlKTsKPiA+ID4gIAo+ID4gPiBAQCAtOTg2NywxMSArOTkxMSwx NSBAQCBpODQ1X2N1cnNvcl9tYXhfc3RyaWRlKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4g PiA+ICAJcmV0dXJuIDIwNDg7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gK3N0YXRpYyB1MzIgaTg0 NV9jdXJzb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIENVUlNPUl9HQU1NQV9FTkFCTEU7Cj4gPiA+ICt9 Cj4gPiA+ICsKPiA+ID4gIHN0YXRpYyB1MzIgaTg0NV9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gPiAgCQkJICAgY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ID4gIHsKPiA+ID4gIAlyZXR1cm4gQ1VS U09SX0VOQUJMRSB8Cj4gPiA+IC0JCUNVUlNPUl9HQU1NQV9FTkFCTEUgfAo+ID4gPiAgCQlDVVJT T1JfRk9STUFUX0FSR0IgfAo+ID4gPiAgCQlDVVJTT1JfU1RSSURFKHBsYW5lX3N0YXRlLT5jb2xv cl9wbGFuZVswXS5zdHJpZGUpOwo+ID4gPiAgfQo+ID4gPiBAQCAtOTk0MSw3ICs5OTg5LDkgQEAg c3RhdGljIHZvaWQgaTg0NV91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs Cj4gPiA+ICAJCXVuc2lnbmVkIGludCB3aWR0aCA9IHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfdzsK PiA+ID4gIAkJdW5zaWduZWQgaW50IGhlaWdodCA9IHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfaDsK PiA+ID4gIAo+ID4gPiAtCQljbnRsID0gcGxhbmVfc3RhdGUtPmN0bDsKPiA+ID4gKwkJY250bCA9 IHBsYW5lX3N0YXRlLT5jdGwgfAo+ID4gPiArCQkJaTg0NV9jdXJzb3JfY3RsX2NydGMoY3J0Y19z dGF0ZSk7Cj4gPiA+ICsKPiA+ID4gIAkJc2l6ZSA9IChoZWlnaHQgPDwgMTIpIHwgd2lkdGg7Cj4g PiA+ICAKPiA+ID4gIAkJYmFzZSA9IGludGVsX2N1cnNvcl9iYXNlKHBsYW5lX3N0YXRlKTsKPiA+ ID4gQEAgLTEwMDA2LDI3ICsxMDA1NiwzNiBAQCBpOXh4X2N1cnNvcl9tYXhfc3RyaWRlKHN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPiA+ICAJcmV0dXJuIHBsYW5lLT5iYXNlLmRldi0+bW9k ZV9jb25maWcuY3Vyc29yX3dpZHRoICogNDsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAtc3RhdGlj IHUzMiBpOXh4X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gPiA+IC0JCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ID4gPiArc3RhdGljIHUzMiBpOXh4X2N1cnNvcl9jdGxfY3J0Yyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ID4gIHsKPiA+ID4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ID4gPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lLT5kZXYpOwo+ID4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4gPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gPiAgCXUz MiBjbnRsID0gMDsKPiA+ID4gIAo+ID4gPiAtCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElT X0lWWUJSSURHRShkZXZfcHJpdikpCj4gPiA+IC0JCWNudGwgfD0gTUNVUlNPUl9UUklDS0xFX0ZF RURfRElTQUJMRTsKPiA+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiA+ID4g KwkJcmV0dXJuIGNudGw7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 PSAxMCkgewo+ID4gPiAtCQljbnRsIHw9IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwo+ID4gPiArCWNu dGwgfD0gTUNVUlNPUl9HQU1NQV9FTkFCTEU7Cj4gPiA+ICAKPiA+ID4gLQkJaWYgKEhBU19EREko ZGV2X3ByaXYpKQo+ID4gPiAtCQkJY250bCB8PSBNQ1VSU09SX1BJUEVfQ1NDX0VOQUJMRTsKPiA+ ID4gLQl9Cj4gPiA+ICsJaWYgKEhBU19EREkoZGV2X3ByaXYpKQo+ID4gPiArCQljbnRsIHw9IE1D VVJTT1JfUElQRV9DU0NfRU5BQkxFOwo+ID4gPiAgCj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPCA1ICYmICFJU19HNFgoZGV2X3ByaXYpKQo+ID4gPiAgCQljbnRsIHw9IE1DVVJTT1Jf UElQRV9TRUxFQ1QoY3J0Yy0+cGlwZSk7Cj4gPiA+ICAKPiA+ID4gKwlyZXR1cm4gY250bDsKPiA+ ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHUzMiBpOXh4X2N1cnNvcl9jdGwoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiA+ICsJCQkgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gPiArewo+ID4gPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPiA+ICsJCXRvX2k5MTUocGxhbmVfc3Rh dGUtPmJhc2UucGxhbmUtPmRldik7Cj4gPiA+ICsJdTMyIGNudGwgPSAwOwo+ID4gPiArCj4gPiA+ ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiA+ ID4gKwkJY250bCB8PSBNQ1VSU09SX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwo+ID4gPiArCj4gPiA+ ICAJc3dpdGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cpIHsKPiA+ID4gIAljYXNlIDY0Ogo+ ID4gPiAgCQljbnRsIHw9IE1DVVJTT1JfTU9ERV82NF9BUkdCX0FYOwo+ID4gPiBAQCAtMTAxNTEs NyArMTAyMTAsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSwKPiA+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gPiAgCj4g PiA+ICAJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKPiA+ ID4gLQkJY250bCA9IHBsYW5lX3N0YXRlLT5jdGw7Cj4gPiA+ICsJCWNudGwgPSBwbGFuZV9zdGF0 ZS0+Y3RsIHwKPiA+ID4gKwkJCWk5eHhfY3Vyc29yX2N0bF9jcnRjKGNydGNfc3RhdGUpOwo+ID4g PiAgCj4gPiA+ICAJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2ggIT0gcGxhbmVfc3RhdGUt PmJhc2UuY3J0Y193KQo+ID4gPiAgCQkJZmJjX2N0bCA9IENVUl9GQkNfQ1RMX0VOIHwgKHBsYW5l X3N0YXRlLT5iYXNlLmNydGNfaCAtIDEpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gPiBpbmRleCAzYjA1MWZkZDBmY2UuLjg4YWM0MmIyZDdlZCAxMDA2NDQKPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gQEAgLTE3NTIsOSArMTc1MiwxMCBAQCBzdGF0aWMg aW5saW5lIHUzMiBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnN0YXRlKQo+ID4gPiAgCj4gPiA+ICB1MzIgZ2xrX3BsYW5lX2NvbG9yX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ID4gIAkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+ID4gPiArdTMyIGdsa19w bGFuZV9jb2xvcl9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Cj4gPiA+ICB1MzIgc2tsX3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ID4gIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKTsKPiA+ID4gLXUzMiBnbGtfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+ID4gPiArdTMyIHNrbF9wbGFuZV9jdGxf Y3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPiA+ICB1 MzIgc2tsX3BsYW5lX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlLAo+ID4gPiAgCQkgICAgIGludCBwbGFuZSk7Cj4gPiA+ICBpbnQgc2tsX2NoZWNrX3Bs YW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiA+IGluZGV4IDhmMzk4MmMwMzkyNS4u YTQ1ZWY5OGIyZjhkIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu Ywo+ID4gPiBAQCAtNDg0LDkgKzQ4NCwxNiBAQCBza2xfcHJvZ3JhbV9wbGFuZShzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lLAo+ID4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0gcGxh bmVfc3RhdGUtPmxpbmtlZF9wbGFuZTsKPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ID4gPiAgCXU4IGFscGhhID0gcGxhbmVf c3RhdGUtPmJhc2UuYWxwaGEgPj4gODsKPiA+ID4gKwl1MzIgcGxhbmVfY29sb3JfY3RsID0gMDsK PiA+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gPiAgCXUzMiBrZXltc2ssIGtleW1h eDsKPiA+ID4gIAo+ID4gPiArCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX2NydGMoY3J0Y19z dGF0ZSk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJ U19HRU1JTklMQUtFKGRldl9wcml2KSkKPiA+ID4gKwkJcGxhbmVfY29sb3JfY3RsID0gcGxhbmVf c3RhdGUtPmNvbG9yX2N0bCB8Cj4gPiA+ICsJCQlnbGtfcGxhbmVfY29sb3JfY3RsX2NydGMoY3J0 Y19zdGF0ZSk7Cj4gPiA+ICsKPiA+ID4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ID4gPiAg CXNyY193LS07Cj4gPiA+ICAJc3JjX2gtLTsKPiA+ID4gQEAgLTUzMyw4ICs1NDAsNyBAQCBza2xf cHJvZ3JhbV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gPiAgCX0KPiA+ID4g IAo+ID4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKQo+ID4gPiAtCQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0NPTE9SX0NUTChwaXBlLCBw bGFuZV9pZCksCj4gPiA+IC0JCQkgICAgICBwbGFuZV9zdGF0ZS0+Y29sb3JfY3RsKTsKPiA+ID4g KwkJSTkxNV9XUklURV9GVyhQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmVfaWQpLCBwbGFuZV9j b2xvcl9jdGwpOwo+ID4gPiAgCj4gPiA+ICAJaWYgKGZiLT5mb3JtYXQtPmlzX3l1diAmJiBpY2xf aXNfaGRyX3BsYW5lKHBsYW5lKSkKPiA+ID4gIAkJaWNsX3Byb2dyYW1faW5wdXRfY3NjKHBsYW5l LCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gPiA+IEBAIC03MzEsNiArNzM3LDExIEBAIHZs dl91cGRhdGVfY2xyYyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQo+ID4gPiAgCQkgICAgICBTUF9TSF9TSU4oc2hfc2luKSB8IFNQX1NIX0NPUyhzaF9jb3MpKTsK PiA+ID4gIH0KPiA+ID4gIAo+ID4gPiArc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bF9jcnRjKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiArewo+ID4gPiAr CXJldHVybiBTUF9HQU1NQV9FTkFCTEU7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIHN0YXRpYyB1 MzIgdmx2X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gPiA+ICAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gPiA+ICB7Cj4gPiA+IEBAIC03MzksNyArNzUwLDcgQEAgc3RhdGljIHUzMiB2bHZfc3By aXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ID4g IAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0 YXRlLT5ja2V5Owo+ID4gPiAgCXUzMiBzcHJjdGw7Cj4gPiA+ICAKPiA+ID4gLQlzcHJjdGwgPSBT UF9FTkFCTEUgfCBTUF9HQU1NQV9FTkFCTEU7Cj4gPiA+ICsJc3ByY3RsID0gU1BfRU5BQkxFOwo+ ID4gPiAgCj4gPiA+ICAJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsKPiA+ID4gIAljYXNl IERSTV9GT1JNQVRfWVVZVjoKPiA+ID4gQEAgLTgwNiw3ICs4MTcsNiBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ID4gPiAgCWVudW0g cGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gPiA+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9 IHBsYW5lLT5pZDsKPiA+ID4gLQl1MzIgc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0bDsKPiA+ID4g IAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0 Owo+ID4gPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ID4gPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50 ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gPiA+IEBAIC04 MTcsNiArODI3LDkgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAo+ID4gPiAgCXVpbnQzMl90IHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsKPiA+ ID4gIAl1aW50MzJfdCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7Cj4gPiA+ICAJ dW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiA+ID4gKwl1MzIgc3ByY3RsOwo+ID4gPiArCj4gPiA+ ICsJc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0bCB8IHZsdl9zcHJpdGVfY3RsX2NydGMoY3J0Y19z dGF0ZSk7Cj4gPiA+ICAKPiA+ID4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ID4gPiAgCWNy dGNfdy0tOwo+ID4gPiBAQCAtODk3LDYgKzkxMCwxOSBAQCB2bHZfcGxhbmVfZ2V0X2h3X3N0YXRl KHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPiA+ICAJcmV0dXJuIHJldDsKPiA+ID4gIH0K PiA+ID4gIAo+ID4gPiArc3RhdGljIHUzMiBpdmJfc3ByaXRlX2N0bF9jcnRjKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj LT5kZXYpOwo+ID4gPiArCXUzMiBzcHJjdGwgPSAwOwo+ID4gPiArCj4gPiA+ICsJc3ByY3RsIHw9 IFNQUklURV9HQU1NQV9FTkFCTEU7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoSVNfSEFTV0VMTChkZXZf cHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiA+ID4gKwkJc3ByY3RsIHw9IFNQUklU RV9QSVBFX0NTQ19FTkFCTEU7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gc3ByY3RsOwo+ID4gPiAr fQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gPiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gPiAgewo+ID4gPiBAQCAtOTA3LDE0ICs5 MzMsMTEgQEAgc3RhdGljIHUzMiBpdmJfc3ByaXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0 ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+ID4gPiAgCXUzMiBzcHJjdGw7 Cj4gPiA+ICAKPiA+ID4gLQlzcHJjdGwgPSBTUFJJVEVfRU5BQkxFIHwgU1BSSVRFX0dBTU1BX0VO QUJMRTsKPiA+ID4gKwlzcHJjdGwgPSBTUFJJVEVfRU5BQkxFOwo+ID4gPiAgCj4gPiA+ICAJaWYg KElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gPiA+ICAJCXNwcmN0bCB8PSBTUFJJVEVfVFJJQ0tM RV9GRUVEX0RJU0FCTEU7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikg fHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiA+ID4gLQkJc3ByY3RsIHw9IFNQUklURV9QSVBF X0NTQ19FTkFCTEU7Cj4gPiA+IC0KPiA+ID4gIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkg ewo+ID4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKPiA+ID4gIAkJc3ByY3RsIHw9IFNQ UklURV9GT1JNQVRfUkdCWDg4OCB8IFNQUklURV9SR0JfT1JERVJfUkdCWDsKPiA+ID4gQEAgLTk2 Niw3ICs5ODksNiBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs Cj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ID4gPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBp cGU7Cj4gPiA+IC0JdTMyIHNwcmN0bCA9IHBsYW5lX3N0YXRlLT5jdGwsIHNwcnNjYWxlID0gMDsK PiA+ID4gIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0u b2Zmc2V0Owo+ID4gPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ID4gPiAgCWNvbnN0IHN0cnVjdCBk cm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gPiA+ IEBAIC05NzgsOCArMTAwMCwxMSBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUsCj4gPiA+ICAJdWludDMyX3QgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsw XS55Owo+ID4gPiAgCXVpbnQzMl90IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLnNyYykgPj4gMTY7Cj4gPiA+ICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gPiA+ICsJdTMyIHNwcmN0bCwgc3By c2NhbGUgPSAwOwo+ID4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPiA+ICAKPiA+ID4g KwlzcHJjdGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwgaXZiX3Nwcml0ZV9jdGxfY3J0YyhjcnRjX3N0 YXRlKTsKPiA+ID4gKwo+ID4gPiAgCS8qIFNpemVzIGFyZSAwIGJhc2VkICovCj4gPiA+ICAJc3Jj X3ctLTsKPiA+ID4gIAlzcmNfaC0tOwo+ID4gPiBAQCAtMTA3NCw2ICsxMDk5LDExIEBAIGc0eF9z cHJpdGVfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gPiAgCXJldHVy biAxNjM4NDsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiArc3RhdGljIHUzMiBnNHhfc3ByaXRlX2N0 bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiAr ewo+ID4gPiArCXJldHVybiBEVlNfR0FNTUFfRU5BQkxFOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ID4gPiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQo+ID4gPiAgewo+ID4gPiBAQCAtMTA4NCw3ICsxMTE0LDcgQEAgc3RhdGlj IHUzMiBnNHhfc3ByaXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5 ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+ID4gPiAgCXUzMiBkdnNjbnRyOwo+ID4gPiAgCj4gPiA+ IC0JZHZzY250ciA9IERWU19FTkFCTEUgfCBEVlNfR0FNTUFfRU5BQkxFOwo+ID4gPiArCWR2c2Nu dHIgPSBEVlNfRU5BQkxFOwo+ID4gPiAgCj4gPiA+ICAJaWYgKElTX0dFTihkZXZfcHJpdiwgNikp Cj4gPiA+ICAJCWR2c2NudHIgfD0gRFZTX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwo+ID4gPiBAQCAt MTE0MCw3ICsxMTcwLDYgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiA+ID4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5l LT5waXBlOwo+ID4gPiAtCXUzMiBkdnNjbnRyID0gcGxhbmVfc3RhdGUtPmN0bCwgZHZzc2NhbGUg PSAwOwo+ID4gPiAgCXUzMiBkdnNzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVswXS5vZmZzZXQ7Cj4gPiA+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7Cj4gPiA+ICAJY29uc3Qgc3Ry dWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsK PiA+ID4gQEAgLTExNTIsOCArMTE4MSwxMSBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUsCj4gPiA+ICAJdWludDMyX3QgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVswXS55Owo+ID4gPiAgCXVpbnQzMl90IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gPiA+ICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gPiA+ICsJdTMyIGR2c2Nu dHIsIGR2c3NjYWxlID0gMDsKPiA+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gPiAg Cj4gPiA+ICsJZHZzY250ciA9IHBsYW5lX3N0YXRlLT5jdGwgfCBnNHhfc3ByaXRlX2N0bF9jcnRj KGNydGNfc3RhdGUpOwo+ID4gPiArCj4gPiA+ICAJLyogU2l6ZXMgYXJlIDAgYmFzZWQgKi8KPiA+ ID4gIAlzcmNfdy0tOwo+ID4gPiAgCXNyY19oLS07Cj4gPiA+IC0tIAo+ID4gPiAyLjE5LjIKPiA+ ID4gCj4gPiAKPiA+IC0tIAo+ID4gTWF0dCBSb3Blcgo+ID4gR3JhcGhpY3MgU29mdHdhcmUgRW5n aW5lZXIKPiA+IElvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudAo+ID4gSW50ZWwg Q29ycG9yYXRpb24KPiA+ICg5MTYpIDM1Ni0yNzk1Cj4gCj4gLS0gCj4gVmlsbGUgU3lyasOkbMOk Cj4gSW50ZWwKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==