From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 9/9] drm/i915: Add render decompression support Date: Thu, 5 Jan 2017 17:11:54 +0200 Message-ID: <20170105151154.GR31595@intel.com> References: <20170104184232.23048-1-ville.syrjala@linux.intel.com> <20170104184232.23048-10-ville.syrjala@linux.intel.com> <20170105042523.GB15476@mail.bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170105042523.GB15476@mail.bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ben Widawsky Cc: intel-gfx@lists.freedesktop.org, Vandana Kannan , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKYW4gMDQsIDIwMTcgYXQgMDg6MjU6MjNQTSAtMDgwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IE9uIDE3LTAxLTA0IDIwOjQyOjMyLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPkZy b206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPgo+ ID5TS0wrIGRpc3BsYXkgZW5naW5lIGNhbiBzY2FuIG91dCBjZXJ0YWluIGtpbmRzIG9mIGNvbXBy ZXNzZWQgc3VyZmFjZXMKPiA+cHJvZHVjZWQgYnkgdGhlIHJlbmRlciBlbmdpbmUuIFRoaXMgaW52 b2x2ZWQgdGVsbGluZyB0aGUgZGlzcGxheSBlbmdpbmUKPiA+dGhlIGxvY2F0aW9uIG9mIHRoZSBj b2xvciBjb250cm9sIHN1cmZhZSAoQ0NTKSB3aGljaCBkZXNjcmliZXMKPiA+d2hpY2ggcGFydHMg b2YgdGhlIG1haW4gc3VyZmFjZSBhcmUgY29tcHJlc3NlZCBhbmQgd2hpY2ggYXJlIG5vdC4gVGhl Cj4gPmxvY2F0aW9uIG9mIENDUyBpcyBwcm92aWRlZCBieSB1c2Vyc3BhY2UgYXMganVzdCBhbm90 aGVyIHBsYW5lIHdpdGggaXRzCj4gPm93biBvZmZzZXQuCj4gPgo+ID5BZGQgdGhlIHJlcXVpcmVk IHN0dWZmIHRvIHZhbGlkYXRlIHRoZSB1c2VyIHByb3ZpZGVkIEFVWCBwbGFuZSBtZXRhZGF0YQo+ ID5hbmQgY29udmVydCB0aGUgdXNlciBwcm92aWRlZCBsaW5lYXIgb2Zmc2V0IGludG8gc29tZXRo aW5nIHRoZSBoYXJkd2FyZQo+ID5jYW4gY29uc3VtZS4KPiA+Cj4gPkR1ZSB0byBoYXJkd2FyZSBs aW1pdGF0aW9ucyB3ZSByZXF1aXJlIHRoYXQgdGhlIG1haW4gc3VyZmFjZSBhbmQKPiA+dGhlIEFV WCBzdXJmYWNlIChDQ1MpIGJlIHBhcnQgb2YgdGhlIHNhbWUgYm8uIFRoZSBoYXJkd2FyZSBhbHNv Cj4gPm1ha2VzIGxpZmUgaGFyZCBieSBub3QgYWxsb3dpbmcgeW91IHRvIHByb3ZpZGUgc2VwYXJh dGUgeC95IG9mZnNldHMKPiA+Zm9yIHRoZSBtYWluIGFuZCBBVVggc3VyZmFjZXMgKGV4Y3BldCB3 aXRoIE5WMTIpLCBzbyBmaW5kaW5nIHN1aXRhYmxlCj4gPm9mZnNldHMgZm9yIGJvdGggcmVxdWly ZXMgYSBiaXQgb2Ygd29yay4gQXNzdW1pbmcgd2Ugc3RpbGwgd2FudCBrZWVwCj4gPnBsYXlpbmcg dHJpY2tzIHdpdGggdGhlIG9mZnNldHMuIEkndmUganVzdCBnb25lIHdpdGggYSBkdW1iICJzZWFy Y2gKPiA+YmFja3dhcmQgZm9yIHN1aXRhYmxlIG9mZnNldHMiIGFwcHJvYWNoLCB3aGljaCBpcyBm YXIgZnJvbSBvcHRpbWFsLAo+ID5idXQgaXQgd29ya3MuCj4gPgo+ID5BbHNvIG5vdCBhbGwgcGxh bmVzIHdpbGwgYmUgY2FwYWJsZSBvZiBzY2FubmluZyBvdXQgY29tcHJlc3NlZCBzdXJmYWNlcywK PiA+YW5kIGVnLiA5MC8yNzAgZGVncmVlIHJvdGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gY29t YmluYXRpb24gd2l0aAo+ID5kZWNvbXByZXNzaW9uIGVpdGhlci4KPiA+Cj4gPlRoaXMgcGF0Y2gg bWF5IGNvbnRhaW4gd29yayBmcm9tIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgcGVvcGxlOgo+ID4q IFZhbmRhbmEgS2FubmFuIDx2YW5kYW5hLmthbm5hbkBpbnRlbC5jb20+Cj4gPiogRGFuaWVsIFZl dHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID4qIEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5l dD4KPiA+Cj4gPkNjOiBWYW5kYW5hIEthbm5hbiA8dmFuZGFuYS5rYW5uYW5AaW50ZWwuY29tPgo+ ID5DYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID5DYzogQmVuIFdpZGF3c2t5 IDxiZW5AYndpZGF3c2submV0Pgo+ID5DYzogSmFzb24gRWtzdHJhbmQgPGphc29uQGpsZWtzdHJh bmQubmV0Pgo+ID5TaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgo+ID4tLS0KPiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmggICAgICB8ICAyMiArKysrCj4gPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgfCAyMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiA+IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8ICAgOCArLQo+ID4gZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgICA1ICsKPiA+IDQgZmlsZXMgY2hhbmdlZCwgMjQwIGlu c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQo+ID4KPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gPmluZGV4IDAwOTcwYWE3N2FmYS4uMDVlMThlNzQyNzc2IDEwMDY0NAo+ID4tLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiA+QEAgLTYyMDksNiArNjIwOSwyOCBAQCBlbnVtIHsKPiA+IAkJCV9JRChp ZCwgX1BTX0VDQ19TVEFUXzFBLCBfUFNfRUNDX1NUQVRfMkEpLCAgIFwKPiA+IAkJCV9JRChpZCwg X1BTX0VDQ19TVEFUXzFCLCBfUFNfRUNDX1NUQVRfMkIpKQo+ID4KPiA+KyNkZWZpbmUgUExBTkVf QVVYX0RJU1RfMV9BCQkweDcwMWMwCj4gPisjZGVmaW5lIFBMQU5FX0FVWF9ESVNUXzJfQQkJMHg3 MDJjMAo+ID4rI2RlZmluZSBQTEFORV9BVVhfRElTVF8xX0IJCTB4NzExYzAKPiA+KyNkZWZpbmUg UExBTkVfQVVYX0RJU1RfMl9CCQkweDcxMmMwCj4gPisjZGVmaW5lIF9QTEFORV9BVVhfRElTVF8x KHBpcGUpIFwKPiA+KwkJCV9QSVBFKHBpcGUsIFBMQU5FX0FVWF9ESVNUXzFfQSwgUExBTkVfQVVY X0RJU1RfMV9CKQo+ID4rI2RlZmluZSBfUExBTkVfQVVYX0RJU1RfMihwaXBlKSBcCj4gPisJCQlf UElQRShwaXBlLCBQTEFORV9BVVhfRElTVF8yX0EsIFBMQU5FX0FVWF9ESVNUXzJfQikKPiA+KyNk ZWZpbmUgUExBTkVfQVVYX0RJU1QocGlwZSwgcGxhbmUpICAgICBcCj4gPisJX01NSU9fUExBTkUo cGxhbmUsIF9QTEFORV9BVVhfRElTVF8xKHBpcGUpLCBfUExBTkVfQVVYX0RJU1RfMihwaXBlKSkK PiA+Kwo+ID4rI2RlZmluZSBQTEFORV9BVVhfT0ZGU0VUXzFfQQkJMHg3MDFjNAo+ID4rI2RlZmlu ZSBQTEFORV9BVVhfT0ZGU0VUXzJfQQkJMHg3MDJjNAo+ID4rI2RlZmluZSBQTEFORV9BVVhfT0ZG U0VUXzFfQgkJMHg3MTFjNAo+ID4rI2RlZmluZSBQTEFORV9BVVhfT0ZGU0VUXzJfQgkJMHg3MTJj NAo+ID4rI2RlZmluZSBfUExBTkVfQVVYX09GRlNFVF8xKHBpcGUpICAgICAgIFwKPiA+KwkJX1BJ UEUocGlwZSwgUExBTkVfQVVYX09GRlNFVF8xX0EsIFBMQU5FX0FVWF9PRkZTRVRfMV9CKQo+ID4r I2RlZmluZSBfUExBTkVfQVVYX09GRlNFVF8yKHBpcGUpICAgICAgIFwKPiA+KwkJX1BJUEUocGlw ZSwgUExBTkVfQVVYX09GRlNFVF8yX0EsIFBMQU5FX0FVWF9PRkZTRVRfMl9CKQo+ID4rI2RlZmlu ZSBQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIHBsYW5lKSAgIFwKPiA+KwlfTU1JT19QTEFORShwbGFu ZSwgX1BMQU5FX0FVWF9PRkZTRVRfMShwaXBlKSwgX1BMQU5FX0FVWF9PRkZTRVRfMihwaXBlKSkK PiA+Kwo+ID4gLyogbGVnYWN5IHBhbGV0dGUgKi8KPiA+ICNkZWZpbmUgX0xHQ19QQUxFVFRFX0Eg ICAgICAgICAgIDB4NGEwMDAKPiA+ICNkZWZpbmUgX0xHQ19QQUxFVFRFX0IgICAgICAgICAgIDB4 NGE4MDAKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID5pbmRleCAzOGRlOWRm MGVjNjAuLmI1NDczMzJlZWRhMSAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+ID5AQCAtMjA2NCwxMSArMjA2NCwxOSBAQCBpbnRlbF90aWxlX3dpZHRoX2J5dGVzKGNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUpCj4gPiAJCQlyZXR1cm4g MTI4Owo+ID4gCQllbHNlCj4gPiAJCQlyZXR1cm4gNTEyOwo+ID4rCWNhc2UgSTkxNV9GT1JNQVRf TU9EX1lfVElMRURfQ0NTOgo+ID4rCQlpZiAocGxhbmUgPT0gMSkKPiA+KwkJCXJldHVybiA2NDsK PiA+KwkJLyogZmFsbCB0aHJvdWdoICovCj4gPiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxF RDoKPiA+IAkJaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IEhBU18xMjhfQllURV9ZX1RJTElORyhk ZXZfcHJpdikpCj4gPiAJCQlyZXR1cm4gMTI4Owo+ID4gCQllbHNlCj4gPiAJCQlyZXR1cm4gNTEy Owo+ID4rCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiA+KwkJaWYgKHBsYW5l ID09IDEpCj4gPisJCQlyZXR1cm4gNjQ7Cj4gPisJCS8qIGZhbGwgdGhyb3VnaCAqLwo+ID4gCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+ID4gCQkvKgo+ID4gCQkgKiBCc3BlYyBzZWVt cyB0byBzdWdnZXN0IHRoYXQgdGhlIFlmIHRpbGUgd2lkdGggd291bGQKPiA+QEAgLTIxNTYsNyAr MjE2NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9hbGlnbm1lbnQoY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShmYi0+ZGV2KTsKPiA+Cj4gPiAJLyogQVVYX0RJU1QgbmVlZHMg b25seSA0SyBhbGlnbm1lbnQgKi8KPiA+LQlpZiAoZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9G T1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQo+ID4rCWlmIChwbGFuZSA9PSAxKQo+IAo+IFRoaXMg bG9va3Mgd3JvbmcgYXQgbGVhc3Qgd2l0aGluIHRoaXMgY29udGV4dCwgc3VyZWx5IG11bHRpLXBs YW5hciBmb3JtYXRzIG1pZ2h0Cj4gaGF2ZSBkaWZmZXJlbnQgYWxpZ25tZW50IHJlc3RyaWN0aW9u cz8KCk5vcGUuIFdlbGwsIE5WMTIgYmVpbmcgdGhlIG9ubHkgb3RoZXIgY2FzZSBhbHNvIHJlcXVp cmVzIDRrIGFsaWdubWVudApmb3IgQVVYX0RJU1QuIE5vdGUgdGhhdCB3ZSBkb24ndCBhY3R1YWxs eSBzdXBwb3J0IE5WMTIsIHdlIGp1c3QgaGFwcGVuCnRvIGhhdmUgc29tZSBjb2RlIGZvciBpdCB3 aGljaCB3aWxsIGJlY29tZSB1c2VmdWwgaW4gdGhlIGZ1dHVyZSAoSSBob3BlKS4KCj4gCj4gPiAJ CXJldHVybiA0MDk2Owo+ID4KPiA+IAlzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+ID5AQCAtMjE2 Niw2ICsyMTc0LDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJmX2FsaWdubWVudChj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+IAkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKPiA+IAkJCXJldHVybiAyNTYgKiAxMDI0Owo+ID4gCQlyZXR1cm4gMDsKPiA+ KwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKPiA+KwljYXNlIEk5MTVfRk9STUFU X01PRF9ZZl9USUxFRF9DQ1M6Cj4gPiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiA+ IAljYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKPiA+IAkJcmV0dXJuIDEgKiAxMDI0ICog MTAyNDsKPiA+QEAgLTI0NzIsNiArMjQ4Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxf ZmJfbW9kaWZpZXJfdG9fdGlsaW5nKHVpbnQ2NF90IGZiX21vZGlmaWVyKQo+ID4gCWNhc2UgSTkx NV9GT1JNQVRfTU9EX1hfVElMRUQ6Cj4gPiAJCXJldHVybiBJOTE1X1RJTElOR19YOwo+ID4gCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4gPisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRF9DQ1M6Cj4gCj4gSXMgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUyBzdXBwb3NlZCB0 byBiZSBoZXJlPwoKTm9wZS4gVGhlcmUncyBubyBmZW5jZSB0aWxpbmcgZm9ybWF0IGZvciBZZi4K Cj4gIAo+ID4gCQlyZXR1cm4gSTkxNV9USUxJTkdfWTsKPiA+IAlkZWZhdWx0Ogo+ID4gCQlyZXR1 cm4gSTkxNV9USUxJTkdfTk9ORTsKPiA+QEAgLTI1MzYsNiArMjU0NywzNSBAQCBpbnRlbF9maWxs X2ZiX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4KPiA+IAkJaW50 ZWxfZmJfb2Zmc2V0X3RvX3h5KCZ4LCAmeSwgZmIsIGkpOwo+ID4KPiA+KwkJaWYgKChmYi0+bW9k aWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8Cj4gPisJCSAgICAgZmItPm1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1MpICYmIGkgPT0gMSkgewo+IAo+ IEluIG9uZSBvZiBteSBicmFuY2hlcyBJIHR1cm5lZCB0aGlzIGludG8gYSBtYWNyby9pbmxpbmUg YmVjYXVzZSBJIGVuZGVkIHVwCj4gY2hlY2tpbmcgaXQgcHJldHR5IG9mdGVuIChpZiBtb2RpZmll ciBpcyBDQ1MgdHlwZSBhbmQgcGxhbmUgPT0gMSkuIEp1c3QgYQo+IHRob3VnaHQuCgpJIHRoaW5r IHRoaXMgbWlnaHQgYmUgdGhlIG9ubHkgcGxhY2Ugd2UgY2hlY2sgaXQgbm93LgoKPiAKPiA+KwkJ CWludCBtYWluX3gsIG1haW5feTsKPiA+KwkJCWludCBjY3NfeCwgY2NzX3k7Cj4gPisKPiA+KwkJ CS8qCj4gPisJCQkgKiBFYWNoIGJ5dGUgb2YgQ0NTIGNvcnJlc3BvbmRzIHRvIGEgMTZ4OCBhcmVh IG9mIHRoZSBtYWluIHN1cmZhY2UsIGFuZAo+ID4rCQkJICogZWFjaCBDQ1MgdGlsZSBpcyA2NHg2 NCBieXRlcy4KPiA+KwkJCSAqLwo+ID4rCQkJY2NzX3ggPSAoeCAqIDE2KSAlICg2NCAqIDE2KTsK PiA+KwkJCWNjc195ID0gKHkgKiA4KSAlICg2NCAqIDgpOwo+ID4rCQkJbWFpbl94ID0gaW50ZWxf ZmItPm5vcm1hbFswXS54ICUgKDY0ICogMTYpOwo+ID4rCQkJbWFpbl95ID0gaW50ZWxfZmItPm5v cm1hbFswXS55ICUgKDY0ICogOCk7Cj4gPisKPiA+KwkJCS8qCj4gPisJCQkgKiBDQ1MgZG9lc24n dCBoYXZlIGl0cyBvd24geC95IG9mZnNldCByZWdpc3Rlciwgc28gdGhlIGludHJhIENDUyB0aWxl Cj4gPisJCQkgKiB4L3kgb2Zmc2V0cyBtdXN0IG1hdGNoIGJldHdlZW4gQ0NTIGFuZCB0aGUgbWFp biBzdXJmYWNlLgo+ID4rCQkJICovCj4gPisJCQlpZiAobWFpbl94ICE9IGNjc194IHx8IG1haW5f eSAhPSBjY3NfeSkgewo+ID4rCQkJCURSTV9ERUJVR19LTVMoIkJhZCBDQ1MgeC95IChtYWluICVk LCVkIGNjcyAlZCwlZCkgZnVsbCAobWFpbiAlZCwlZCBjY3MgJWQsJWQpXG4iLAo+ID4rCQkJCQkg ICAgICBtYWluX3gsIG1haW5feSwKPiA+KwkJCQkJICAgICAgY2NzX3gsIGNjc195LAo+ID4rCQkJ CQkgICAgICBpbnRlbF9mYi0+bm9ybWFsWzBdLngsCj4gPisJCQkJCSAgICAgIGludGVsX2ZiLT5u b3JtYWxbMF0ueSwKPiA+KwkJCQkJICAgICAgeCwgeSk7Cj4gPisJCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gPisJCQl9Cj4gPisJCX0KPiA+Kwo+ID4gCQkvKgo+ID4gCQkgKiBUaGUgZmVuY2UgKGlmIHVz ZWQpIGlzIGFsaWduZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBvYmplY3QKPiA+IAkJICogc28gaGF2 aW5nIHRoZSBmcmFtZWJ1ZmZlciB3cmFwIGFyb3VuZCBhY3Jvc3MgdGhlIGVkZ2Ugb2YgdGhlCj4g PkBAIC0yODczLDYgKzI5MTMsOSBAQCBzdGF0aWMgaW50IHNrbF9tYXhfcGxhbmVfd2lkdGgoY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBwbGFuZSwKPiA+IAkJCWJyZWFrOwo+ ID4gCQl9Cj4gPiAJCWJyZWFrOwo+ID4rCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NT Ogo+ID4rCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiA+KwkJLyogRklYTUUg QVVYIHBsYW5lPyAqLwo+ID4gCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4gPiAJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4gPiAJCXN3aXRjaCAoY3BwKSB7Cj4gPkBAIC0y ODk1LDYgKzI5MzgsNDIgQEAgc3RhdGljIGludCBza2xfbWF4X3BsYW5lX3dpZHRoKGNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4gPiAJcmV0dXJuIDIwNDg7Cj4g PiB9Cj4gPgo+ID4rc3RhdGljIGJvb2wgc2tsX2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gPisJCQkJCSAgIGludCBtYWlu X3gsIGludCBtYWluX3ksIHUzMiBtYWluX29mZnNldCkKPiA+K3sKPiA+Kwljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ID4rCWludCBhdXhf eCA9IHBsYW5lX3N0YXRlLT5hdXgueDsKPiA+KwlpbnQgYXV4X3kgPSBwbGFuZV9zdGF0ZS0+YXV4 Lnk7Cj4gPisJdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+YXV4Lm9mZnNldDsKPiA+Kwl1 MzIgYWxpZ25tZW50ID0gaW50ZWxfc3VyZl9hbGlnbm1lbnQoZmIsIDEpOwo+ID4rCj4gPisJd2hp bGUgKGF1eF9vZmZzZXQgPj0gbWFpbl9vZmZzZXQgJiYgYXV4X3kgPD0gbWFpbl95KSB7Cj4gPisJ CWludCB4LCB5Owo+ID4rCj4gPisJCWlmIChhdXhfeCA9PSBtYWluX3ggJiYgYXV4X3kgPT0gbWFp bl95KQo+ID4rCQkJYnJlYWs7Cj4gPisKPiA+KwkJaWYgKGF1eF9vZmZzZXQgPT0gMCkKPiA+KwkJ CWJyZWFrOwo+ID4rCj4gPisJCXggPSBhdXhfeCAvIDE2Owo+ID4rCQl5ID0gYXV4X3kgLyA4Owo+ ID4rCQlhdXhfb2Zmc2V0ID0gaW50ZWxfYWRqdXN0X3RpbGVfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVf c3RhdGUsIDEsCj4gPisJCQkJCQkgICAgICBhdXhfb2Zmc2V0LCBhdXhfb2Zmc2V0IC0gYWxpZ25t ZW50KTsKPiA+KwkJYXV4X3ggPSB4ICogMTYgKyBhdXhfeCAlIDE2Owo+ID4rCQlhdXhfeSA9IHkg KiA4ICsgYXV4X3kgJSA4Owo+ID4rCX0KPiA+Kwo+ID4rCWlmIChhdXhfeCAhPSBtYWluX3ggfHwg YXV4X3kgIT0gbWFpbl95KQo+ID4rCQlyZXR1cm4gZmFsc2U7Cj4gPisKPiA+KwlwbGFuZV9zdGF0 ZS0+YXV4Lm9mZnNldCA9IGF1eF9vZmZzZXQ7Cj4gPisJcGxhbmVfc3RhdGUtPmF1eC54ID0gYXV4 X3g7Cj4gPisJcGxhbmVfc3RhdGUtPmF1eC55ID0gYXV4X3k7Cj4gPisKPiA+KwlyZXR1cm4gdHJ1 ZTsKPiA+K30KPiA+Kwo+ID4gc3RhdGljIGludCBza2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPiB7Cj4gPiAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiA+QEAgLTI5Mzcs NyArMzAxNiw3IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4KPiA+IAkJd2hpbGUgKCh4ICsgdykgKiBj cHAgPiBmYi0+cGl0Y2hlc1swXSkgewo+ID4gCQkJaWYgKG9mZnNldCA9PSAwKSB7Cj4gPi0JCQkJ RFJNX0RFQlVHX0tNUygiVW5hYmxlIHRvIGZpbmQgc3VpdGFibGUgZGlzcGxheSBzdXJmYWNlIG9m ZnNldFxuIik7Cj4gPisJCQkJRFJNX0RFQlVHX0tNUygiVW5hYmxlIHRvIGZpbmQgc3VpdGFibGUg ZGlzcGxheSBzdXJmYWNlIG9mZnNldCBkdWUgdG8gWC10aWxpbmdcbiIpOwo+ID4gCQkJCXJldHVy biAtRUlOVkFMOwo+ID4gCQkJfQo+ID4KPiA+QEAgLTI5NDYsNiArMzAyNSwyNiBAQCBzdGF0aWMg aW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiA+IAkJfQo+ID4gCX0KPiA+Cj4gPisJLyoKPiA+KwkgKiBDQ1MgQVVYIHN1cmZh Y2UgZG9lc24ndCBoYXZlIGl0cyBvd24geC95IG9mZnNldHMsIHdlIG11c3QgbWFrZSBzdXJlCj4g PisJICogdGhleSBtYXRjaCB3aXRoIHRoZSBtYWluIHN1cmZhY2UgeC95IG9mZnNldHMuCj4gPisJ ICovCj4gPisJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1Mg fHwKPiA+KwkgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1Mp IHsKPiA+KwkJd2hpbGUgKCFza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMocGxhbmVfc3Rh dGUsIHgsIHksIG9mZnNldCkpIHsKPiA+KwkJCWlmIChvZmZzZXQgPT0gMCkKPiA+KwkJCQlicmVh azsKPiA+Kwo+ID4rCQkJb2Zmc2V0ID0gaW50ZWxfYWRqdXN0X3RpbGVfb2Zmc2V0KCZ4LCAmeSwg cGxhbmVfc3RhdGUsIDAsCj4gPisJCQkJCQkJICBvZmZzZXQsIG9mZnNldCAtIGFsaWdubWVudCk7 Cj4gPisJCX0KPiA+Kwo+ID4rCQlpZiAoeCAhPSBwbGFuZV9zdGF0ZS0+YXV4LnggfHwgeSAhPSBw bGFuZV9zdGF0ZS0+YXV4LnkpIHsKPiA+KwkJCURSTV9ERUJVR19LTVMoIlVuYWJsZSB0byBmaW5k IHN1aXRhYmxlIGRpc3BsYXkgc3VyZmFjZSBvZmZzZXQgZHVlIHRvIENDU1xuIik7Cj4gPisJCQly ZXR1cm4gLUVJTlZBTDsKPiA+KwkJfQo+ID4rCX0KPiA+Kwo+ID4gCXBsYW5lX3N0YXRlLT5tYWlu Lm9mZnNldCA9IG9mZnNldDsKPiA+IAlwbGFuZV9zdGF0ZS0+bWFpbi54ID0geDsKPiA+IAlwbGFu ZV9zdGF0ZS0+bWFpbi55ID0geTsKPiA+QEAgLTI5ODIsNiArMzA4MSw1MyBAQCBzdGF0aWMgaW50 IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCj4gPiAJcmV0dXJuIDA7Cj4gPiB9Cj4gPgo+ID4rc3RhdGljIGludCBza2xfY2hl Y2tfY2NzX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gPit7Cj4gPisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiA+KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMocGxhbmVfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPisJaW50IHNyY194ID0gcGxh bmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+ID4rCWludCBzcmNfeSA9IHBsYW5lX3N0YXRl LT5iYXNlLnNyYy55MSA+PiAxNjsKPiA+KwlpbnQgeCA9IHNyY194IC8gMTY7Cj4gPisJaW50IHkg PSBzcmNfeSAvIDg7Cj4gPisJdTMyIG9mZnNldDsKPiA+Kwo+ID4rCXN3aXRjaCAocGxhbmUtPmlk KSB7Cj4gPisJY2FzZSBQTEFORV9QUklNQVJZOgo+ID4rCWNhc2UgUExBTkVfU1BSSVRFMDoKPiA+ KwkJYnJlYWs7Cj4gPisJZGVmYXVsdDoKPiA+KwkJRFJNX0RFQlVHX0tNUygiUkMgc3VwcG9ydCBv bmx5IG9uIHBsYW5lIDEgYW5kIDJcbiIpOwo+ID4rCQlyZXR1cm4gLUVJTlZBTDsKPiA+Kwl9Cj4g PisKPiA+KwlpZiAoY3J0Yy0+cGlwZSA9PSBQSVBFX0MpIHsKPiA+KwkJRFJNX0RFQlVHX0tNUygi Tm8gUkMgc3VwcG9ydCBvbiBwaXBlIENcbiIpOwo+ID4rCQlyZXR1cm4gLUVJTlZBTDsKPiA+Kwl9 Cj4gPisJLyoKPiA+KwkgKiBUT0RPOgo+ID4rCSAqIDEuIERpc2FibGUgc3RlcmVvIDNEIHdoZW4g cmVuZGVyIGRlY29tcCBpcyBlbmFibGVkIChiaXQgNzo2KQo+ID4rCSAqIDIuIFJlbmRlciBkZWNv bXByZXNzaW9uIG11c3Qgbm90IGJlIHVzZWQgaW4gVlRkIHBhc3MtdGhyb3VnaCBtb2RlCj4gPisJ ICogMy4gUHJvZ3JhbSBoYXNoaW5nIHNlbGVjdCBDSElDS0VOX01JU0MxIGJpdCAxNQo+ID4rCSAq Lwo+ID4rCj4gPisJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uICYmCj4gPisJICAgIHBs YW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uICYgfihEUk1fUk9UQVRFXzAgfCBEUk1fUk9UQVRFXzE4 MCkpIHsKPiA+KwkJRFJNX0RFQlVHX0tNUygiUkMgc3VwcG9ydCBvbmx5IHdpdGggMC8xODAgZGVn cmVlIHJvdGF0aW9uICV4XG4iLAo+ID4rCQkJICAgICAgcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRp b24pOwo+ID4rCQlyZXR1cm4gLUVJTlZBTDsKPiA+Kwl9Cj4gPisKPiA+KwlpbnRlbF9hZGRfZmJf b2Zmc2V0cygmeCwgJnksIHBsYW5lX3N0YXRlLCAxKTsKPiA+KwlvZmZzZXQgPSBpbnRlbF9jb21w dXRlX3RpbGVfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDEpOwo+ID4rCj4gPisJcGxhbmVf c3RhdGUtPmF1eC5vZmZzZXQgPSBvZmZzZXQ7Cj4gPisJcGxhbmVfc3RhdGUtPmF1eC54ID0geCAq IDE2ICsgc3JjX3ggJSAxNjsKPiA+KwlwbGFuZV9zdGF0ZS0+YXV4LnkgPSB5ICogOCArIHNyY195 ICUgODsKPiA+Kwo+ID4rCXJldHVybiAwOwo+ID4rfQo+ID4rCj4gPiBpbnQgc2tsX2NoZWNrX3Bs YW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+IHsK PiA+IAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNl LmZiOwo+ID5AQCAtMzAwMiw2ICszMTQ4LDExIEBAIGludCBza2xfY2hlY2tfcGxhbmVfc3VyZmFj ZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gCQlyZXQgPSBza2xf Y2hlY2tfbnYxMl9hdXhfc3VyZmFjZShwbGFuZV9zdGF0ZSk7Cj4gPiAJCWlmIChyZXQpCj4gPiAJ CQlyZXR1cm4gcmV0Owo+ID4rCX0gZWxzZSBpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEX0NDUyB8fAo+ID4rCQkgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVEX0NDUykgewo+ID4rCQlyZXQgPSBza2xfY2hlY2tfY2NzX2F1eF9zdXJmYWNl KHBsYW5lX3N0YXRlKTsKPiA+KwkJaWYgKHJldCkKPiA+KwkJCXJldHVybiByZXQ7Cj4gPiAJfSBl bHNlIHsKPiA+IAkJcGxhbmVfc3RhdGUtPmF1eC5vZmZzZXQgPSB+MHhmZmY7Cj4gPiAJCXBsYW5l X3N0YXRlLT5hdXgueCA9IDA7Cj4gPkBAIC0zMzU3LDggKzM1MDgsMTIgQEAgdTMyIHNrbF9wbGFu ZV9jdGxfdGlsaW5nKHVpbnQ2NF90IGZiX21vZGlmaWVyKQo+ID4gCQlyZXR1cm4gUExBTkVfQ1RM X1RJTEVEX1g7Cj4gPiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiA+IAkJcmV0dXJu IFBMQU5FX0NUTF9USUxFRF9ZOwo+ID4rCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NT Ogo+ID4rCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1kgfCBQTEFORV9DVExfREVDT01QUkVTU0lP Tl9FTkFCTEU7Cj4gPiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4gPiAJCXJldHVy biBQTEFORV9DVExfVElMRURfWUY7Cj4gPisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURf Q0NTOgo+ID4rCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1lGIHwgUExBTkVfQ1RMX0RFQ09NUFJF U1NJT05fRU5BQkxFOwo+ID4gCWRlZmF1bHQ6Cj4gPiAJCU1JU1NJTkdfQ0FTRShmYl9tb2RpZmll cik7Cj4gPiAJfQo+ID5AQCAtMzQwMSw2ICszNTU2LDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91 cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+IAl1MzIgcGxh bmVfY3RsOwo+ID4gCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJv dGF0aW9uOwo+ID4gCXUzMiBzdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKGZiLCAwLCByb3RhdGlv bik7Cj4gPisJdTMyIGF1eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKGZiLCAxLCByb3RhdGlv bik7Cj4gPiAJdTMyIHN1cmZfYWRkciA9IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsKPiA+IAlp bnQgc2NhbGVyX2lkID0gcGxhbmVfc3RhdGUtPnNjYWxlcl9pZDsKPiA+IAlpbnQgc3JjX3ggPSBw bGFuZV9zdGF0ZS0+bWFpbi54Owo+ID5AQCAtMzQzNiw2ICszNTkyLDEwIEBAIHN0YXRpYyB2b2lk IHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g PiAJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmVfaWQpLCAoc3JjX3kgPDwgMTYp IHwgc3JjX3gpOwo+ID4gCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5lX2lkKSwg c3RyaWRlKTsKPiA+IAlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmVfaWQpLCAoc3Jj X2ggPDwgMTYpIHwgc3JjX3cpOwo+ID4rCUk5MTVfV1JJVEUoUExBTkVfQVVYX0RJU1QocGlwZSwg cGxhbmVfaWQpLAo+ID4rCQkgICAocGxhbmVfc3RhdGUtPmF1eC5vZmZzZXQgLSBzdXJmX2FkZHIp IHwgYXV4X3N0cmlkZSk7Cj4gPisJSTkxNV9XUklURShQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIHBs YW5lX2lkKSwKPiA+KwkJICAgKHBsYW5lX3N0YXRlLT5hdXgueSA8PCAxNikgfCBwbGFuZV9zdGF0 ZS0+YXV4LngpOwo+ID4KPiA+IAlpZiAoc2NhbGVyX2lkID49IDApIHsKPiA+IAkJdWludDMyX3Qg cHNfY3RybCA9IDA7Cj4gPkBAIC05ODA3LDEwICs5OTY3LDE2IEBAIHNreWxha2VfZ2V0X2luaXRp YWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gCQlmYi0+bW9kaWZp ZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiA+IAkJYnJlYWs7Cj4gPiAJY2FzZSBQTEFO RV9DVExfVElMRURfWToKPiA+LQkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQ7Cj4gPisJCWlmICh2YWwgJiBQTEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEUpCj4gPisJ CQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M7Cj4gPisJCWVsc2UK PiA+KwkJCWZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOwo+ID4gCQlicmVh azsKPiA+IAljYXNlIFBMQU5FX0NUTF9USUxFRF9ZRjoKPiA+LQkJZmItPm1vZGlmaWVyID0gSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEOwo+ID4rCQlpZiAodmFsICYgUExBTkVfQ1RMX0RFQ09NUFJF U1NJT05fRU5BQkxFKQo+ID4rCQkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVEX0NDUzsKPiA+KwkJZWxzZQo+ID4rCQkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOwo+IAo+IEknbSB3b25kZXJpbmcgaWYgdGhpcyBpcyBhY3R1YWxseSBmZWFzaWJs ZS4gSWYgd2UgZmluZCBjb21wcmVzc2lvbiBlbmFibGVkLCBJJ2QKPiB0aGluayB3ZSBzaG91bGQg anVzdCBkaXNhYmxlIGl0LgoKQWRkaW5nIGEgbW9yZSB0aG9yb3VnaCBwbGFuZSByZWFkb3V0IHN1 cHBvcnQgaXMgc29tZXdoZXJlIG9uIG15IHRvZG8gbGlzdC4KSSB0aGluayB0aGF0IHdvdWxkIGJl IHN0ZXAgMSBpbiBwcm9wZXJseSBzYW5pdGl6aW5nIHRoZSBwbGFuZSBzdGF0ZSAoYW5kCmhvcGVm dWxseSBlbGltaW5hdGluZyBhbmQgdGhlIF9ub2F0b21pYygpIGRpc2FibGUgc3R1ZmYpLgoKPiAK PiA+IAkJYnJlYWs7Cj4gPiAJZGVmYXVsdDoKPiA+IAkJTUlTU0lOR19DQVNFKHRpbGluZyk7Cj4g PkBAIC0xMjAxNCw3ICsxMjE4MCw3IEBAIHN0YXRpYyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiAJdTMyIGN0bCwgc3RyaWRlID0gc2tsX3Bs YW5lX3N0cmlkZShmYiwgMCwgcm90YXRpb24pOwo+ID4KPiA+IAljdGwgPSBJOTE1X1JFQUQoUExB TkVfQ1RMKHBpcGUsIDApKTsKPiA+LQljdGwgJj0gflBMQU5FX0NUTF9USUxFRF9NQVNLOwo+ID4r CWN0bCAmPSB+KFBMQU5FX0NUTF9USUxFRF9NQVNLIHwgUExBTkVfQ1RMX0RFQ09NUFJFU1NJT05f RU5BQkxFKTsKPiA+IAlzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+ID4gCWNhc2UgRFJNX0ZPUk1B VF9NT0RfTk9ORToKPiA+IAkJYnJlYWs7Cj4gPkBAIC0xMjAyNCw5ICsxMjE5MCwxNSBAQCBzdGF0 aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ ID4gCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4gPiAJCWN0bCB8PSBQTEFORV9DVExf VElMRURfWTsKPiA+IAkJYnJlYWs7Cj4gPisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9D Q1M6Cj4gPisJCWN0bCB8PSBQTEFORV9DVExfVElMRURfWSB8IFBMQU5FX0NUTF9ERUNPTVBSRVNT SU9OX0VOQUJMRTsKPiA+KwkJYnJlYWs7Cj4gPiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQ6Cj4gPiAJCWN0bCB8PSBQTEFORV9DVExfVElMRURfWUY7Cj4gPiAJCWJyZWFrOwo+ID4rCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiA+KwkJY3RsIHw9IFBMQU5FX0NUTF9U SUxFRF9ZRiB8IFBMQU5FX0NUTF9ERUNPTVBSRVNTSU9OX0VOQUJMRTsKPiA+KwkJYnJlYWs7Cj4g PiAJZGVmYXVsdDoKPiA+IAkJTUlTU0lOR19DQVNFKGZiLT5tb2RpZmllcik7Cj4gPiAJfQo+ID5A QCAtMTU5MjYsOCArMTYwOTgsOCBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+IHsKPiA+IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAJdW5zaWduZWQgaW50IHRpbGluZyA9IGk5 MTVfZ2VtX29iamVjdF9nZXRfdGlsaW5nKG9iaik7Cj4gPi0JaW50IHJldDsKPiA+LQl1MzIgcGl0 Y2hfbGltaXQsIHN0cmlkZV9hbGlnbm1lbnQ7Cj4gPisJaW50IHJldCwgaTsKPiA+Kwl1MzIgcGl0 Y2hfbGltaXQ7Cj4gPiAJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4g Pgo+ID4gCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKPiA+ QEAgLTE1OTUzLDYgKzE2MTI1LDE5IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4KPiA+IAkvKiBQYXNzZWQgaW4gbW9kaWZpZXIg c2FuaXR5IGNoZWNraW5nLiAqLwo+ID4gCXN3aXRjaCAobW9kZV9jbWQtPm1vZGlmaWVyWzBdKSB7 Cj4gPisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4gPisJY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfWWZfVElMRURfQ0NTOgo+ID4rCQlzd2l0Y2ggKG1vZGVfY21kLT5waXhlbF9mb3Jt YXQpIHsKPiA+KwkJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ID4rCQljYXNlIERSTV9GT1JN QVRfQUJHUjg4ODg6Cj4gPisJCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKPiA+KwkJY2FzZSBE Uk1fRk9STUFUX0FSR0I4ODg4Ogo+ID4rCQkJYnJlYWs7Cj4gPisJCWRlZmF1bHQ6Cj4gPisJCQlE Uk1fREVCVUdfS01TKCJSQyBzdXBwb3J0ZWQgb25seSB3aXRoIFJHQjg4ODggZm9ybWF0c1xuIik7 Cj4gPisJCQlyZXR1cm4gLUVJTlZBTDsKPiA+KwkJfQo+ID4rCQkvKiBmYWxsIHRocm91Z2ggKi8K PiA+IAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+ID4gCWNhc2UgSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVEOgo+ID4gCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsKPiA+QEAg LTE2MDYxLDExICsxNjI0NiwyMSBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Cj4gPiAJZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJf c3RydWN0KGRldiwgJmludGVsX2ZiLT5iYXNlLCBtb2RlX2NtZCk7Cj4gPgo+ID4tCXN0cmlkZV9h bGlnbm1lbnQgPSBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KCZpbnRlbF9mYi0+YmFzZSwgMCk7 Cj4gPi0JaWYgKG1vZGVfY21kLT5waXRjaGVzWzBdICYgKHN0cmlkZV9hbGlnbm1lbnQgLSAxKSkg ewo+ID4tCQlEUk1fREVCVUdfS01TKCJwaXRjaCAoJWQpIG11c3QgYmUgYXQgbGVhc3QgJXUgYnl0 ZSBhbGlnbmVkXG4iLAo+ID4tCQkJICAgICAgbW9kZV9jbWQtPnBpdGNoZXNbMF0sIHN0cmlkZV9h bGlnbm1lbnQpOwo+ID4tCQlyZXR1cm4gLUVJTlZBTDsKPiA+Kwlmb3IgKGkgPSAwOyBpIDwgaW50 ZWxfZmItPmJhc2UuZm9ybWF0LT5udW1fcGxhbmVzOyBpKyspIHsKPiA+KwkJdTMyIHN0cmlkZV9h bGlnbm1lbnQ7Cj4gPisKPiA+KwkJaWYgKG1vZGVfY21kLT5oYW5kbGVzW2ldICE9IG1vZGVfY21k LT5oYW5kbGVzWzBdKSB7Cj4gPisJCQlEUk1fREVCVUdfS01TKCJiYWQgcGxhbmUgJWQgaGFuZGxl XG4iLCBpKTsKPiA+KwkJCXJldHVybiAtRUlOVkFMOwo+ID4rCQl9Cj4gPisKPiA+KwkJc3RyaWRl X2FsaWdubWVudCA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoJmludGVsX2ZiLT5iYXNlLCBp KTsKPiA+Kwo+ID4rCQlpZiAobW9kZV9jbWQtPnBpdGNoZXNbaV0gJiAoc3RyaWRlX2FsaWdubWVu dCAtIDEpKSB7Cj4gPisJCQlEUk1fREVCVUdfS01TKCJwbGFuZSAlZCBwaXRjaCAoJWQpIG11c3Qg YmUgYXQgbGVhc3QgJXUgYnl0ZSBhbGlnbmVkXG4iLAo+ID4rCQkJCSAgICAgIGksIG1vZGVfY21k LT5waXRjaGVzW2ldLCBzdHJpZGVfYWxpZ25tZW50KTsKPiA+KwkJCXJldHVybiAtRUlOVkFMOwo+ ID4rCQl9Cj4gPiAJfQo+ID4KPiA+IAlpbnRlbF9mYi0+b2JqID0gb2JqOwo+ID5kaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPiA+aW5kZXggMjQ5NjIzZDQ1YmUwLi5hZGQzNTkwMjJjOTYgMTAwNjQ0Cj4g Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+KysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID5AQCAtMzMxNCw3ICszMzE0LDkgQEAgc2tsX2RkYl9t aW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLAo+ID4KPiA+IAkv KiBGb3IgTm9uIFktdGlsZSByZXR1cm4gOC1ibG9ja3MgKi8KPiA+IAlpZiAoZmItPm1vZGlmaWVy ICE9IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEICYmCj4gPi0JICAgIGZiLT5tb2RpZmllciAhPSBJ OTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpCj4gPisJICAgIGZiLT5tb2RpZmllciAhPSBJOTE1X0ZP Uk1BVF9NT0RfWWZfVElMRUQgJiYKPiA+KwkgICAgZmItPm1vZGlmaWVyICE9IEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEX0NDUyAmJgo+ID4rCSAgICBmYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVEX0NDUykKPiA+IAkJcmV0dXJuIDg7Cj4gPgo+ID4gCXNyY193ID0gZHJtX3Jl Y3Rfd2lkdGgoJmludGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ID5AQCAtMzU5MCw3ICsz NTkyLDkgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAJfQo+ID4KPiA+IAl5X3RpbGVkID0gZmItPm1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gPi0JCSAgZmItPm1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDsKPiA+KwkJICBmYi0+bW9kaWZpZXIgPT0gSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEIHx8Cj4gPisJCSAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUyB8fAo+ID4rCQkgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWWZfVElMRURfQ0NTOwo+ID4gCXhfdGlsZWQgPSBmYi0+bW9kaWZpZXIgPT0gSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQ7Cj4gPgo+ID4gCS8qIERpc3BsYXkgV0EgIzExNDE6IGtibC4gKi8K PiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+aW5kZXggNzAzMWJjNzMzZDk3Li4w NjNhOTk0ODE1ZDAgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jCj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPkBA IC0yMTAsNiArMjEwLDcgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1f cGxhbmUsCj4gPiAJdTMyIHN1cmZfYWRkciA9IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsKPiA+ IAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiA+ IAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMCwgcm90YXRpb24pOwo+ID4rCXUz MiBhdXhfc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMSwgcm90YXRpb24pOwo+ID4gCWlu dCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gPiAJaW50IGNydGNfeSA9IHBs YW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiA+IAl1aW50MzJfdCBjcnRjX3cgPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiA+QEAgLTI0OCw2ICsyNDksMTAgQEAgc2ts X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gPiAJSTkxNV9XUklU RShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmVfaWQpLCAoeSA8PCAxNikgfCB4KTsKPiA+IAlJOTE1 X1dSSVRFKFBMQU5FX1NUUklERShwaXBlLCBwbGFuZV9pZCksIHN0cmlkZSk7Cj4gPiAJSTkxNV9X UklURShQTEFORV9TSVpFKHBpcGUsIHBsYW5lX2lkKSwgKHNyY19oIDw8IDE2KSB8IHNyY193KTsK PiA+KwlJOTE1X1dSSVRFKFBMQU5FX0FVWF9ESVNUKHBpcGUsIHBsYW5lX2lkKSwKPiA+KwkJICAg KHBsYW5lX3N0YXRlLT5hdXgub2Zmc2V0IC0gc3VyZl9hZGRyKSB8IGF1eF9zdHJpZGUpOwo+ID4r CUk5MTVfV1JJVEUoUExBTkVfQVVYX09GRlNFVChwaXBlLCBwbGFuZV9pZCksCj4gPisJCSAgIChw bGFuZV9zdGF0ZS0+YXV4LnkgPDwgMTYpIHwgcGxhbmVfc3RhdGUtPmF1eC54KTsKPiA+Cj4gPiAJ LyogcHJvZ3JhbSBwbGFuZSBzY2FsZXIgKi8KPiA+IAlpZiAocGxhbmVfc3RhdGUtPnNjYWxlcl9p ZCA+PSAwKSB7Cj4gCj4gTG9va3MgZ29vZC4gSSBoYXZlbid0IHRlc3RlZCBpdC4KPiBSZXZpZXdl ZC1ieTogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0PgoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==