From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 4/6] drm/i915: Use framebuffer tiling mode for display purposes Date: Mon, 2 Feb 2015 10:49:29 +0100 Message-ID: <20150202094929.GR14009@phenom.ffwll.local> References: <1422639418-28845-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1422639418-28845-5-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E3C06E3D5 for ; Mon, 2 Feb 2015 01:48:08 -0800 (PST) Received: by mail-wg0-f48.google.com with SMTP id x12so37574316wgg.7 for ; Mon, 02 Feb 2015 01:48:07 -0800 (PST) Content-Disposition: inline In-Reply-To: <1422639418-28845-5-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMzAsIDIwMTUgYXQgMDU6MzY6NTZQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBUbyBwcmVwYXJlIGZvciBmcmFtZWJ1ZmZlciBtb2RpZmllcnMsIG1vdmUgdGlsaW5nIGRl ZmluaXRpb24gZnJvbSB0aGUKPiBvYmplY3QgaW50byB0aGUgZnJhbWVidWZmZXIuIE1vdmUgaW4g YSB3YXkgdGhhdCBmcmFtZWJ1ZmZlciB0aWxpbmcgaXMKPiBub3cgdXNlZCBmb3IgZGlzcGxheSB3 aGlsZSBvYmplY3QgdGlsaW5nIHJlbWFpbnMgZm9yIGZlbmNpbmcuCj4gCj4gU2lnbmVkLW9mZi1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNDYgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg ICB8ICAyICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8ICA3ICsr Ky0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAyNiArKysrKysr KysrLS0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDM1IGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0 NDI1ZTg2Li5lMjJhZmJlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ IEBAIC0yMjExLDcgKzIyMTEsNyBAQCBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiAgCj4gIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+ c3RydWN0X211dGV4KSk7Cj4gIAo+IC0Jc3dpdGNoIChvYmotPnRpbGluZ19tb2RlKSB7Cj4gKwlz d2l0Y2ggKHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKS0+dGlsaW5nX21vZGUpIHsKPiAgCWNhc2Ug STkxNV9USUxJTkdfTk9ORToKCkltbyB3ZSBzaG91bGQganVzdCBsb29rIGF0IGZiLT5tb2RpZmll clswXSBhbmQgZmxpcCBvdmVyIGFsbCB0aGUgZW51bXMuIEEKYml0IG1vcmUgaW52YXNpdmUsIGJ1 dCB3ZSBhbHNvIGRvbid0IG5lZWQgdG8gY2hhbmdlIGFsbCB0aGUgcGxhdGZvcm0gY29kZQphdCBv bmNlIC0gc2V0X3RpbGluZyBhbHJlYWR5IGd1YXJhbnRlZXMgdGhhdCBubyBvbmUgY2FuIG1vZGlm eSB0aGUgYm8KdGlsaW5nIG1vZGUgd2hlbiB0aGVyZSdzIGFuIGZiIG9iamVjdCB1c2luZyBpdC4g V2hpY2ggbWVhbnMgd2UgY2FuIGNoYW5nZQp0aGUgY29kZSBvdmVyIGF0IGxlYXN1cmUuCgo+ICAJ CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICAJCQlhbGlnbm1lbnQgPSAyNTYgKiAx MDI0Owo+IEBAIC0yNDc0LDYgKzI0NzQsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXUzMiBkc3BjbnRyOwo+ICAJdTMy IHJlZyA9IERTUENOVFIocGxhbmUpOwo+ICAJaW50IHBpeGVsX3NpemU7Cj4gKwl1bnNpZ25lZCBp bnQgdGlsaW5nX21vZGUgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYiktPnRpbGluZ19tb2RlOwo+ ICAKPiAgCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7Cj4gIAkJSTkxNV9XUklU RShyZWcsIDApOwo+IEBAIC0yNTQ1LDggKzI1NDYsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0 ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlCVUcoKTsKPiAgCX0K PiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCAmJgo+IC0JICAgIG9iai0+dGls aW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA0ICYmIHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gIAkJZHNwY250ciB8 PSBESVNQUExBTkVfVElMRUQ7Cj4gIAo+ICAJaWYgKElTX0c0WChkZXYpKQo+IEBAIC0yNTU2LDcg KzI1NTYsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ ICAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0KPiAtCQkJaW50ZWxfZ2VuNF9jb21wdXRl X3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxpbmdfbW9kZSwKPiArCQkJaW50ZWxfZ2VuNF9j b21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwKPiArCQkJCQkJICAgICAgIHRpbGluZ19tb2RlLAo+ ICAJCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwKPiAgCQkJCQkJICAgICAgIGZiLT5waXRjaGVzWzBd KTsKPiAgCQlsaW5lYXJfb2Zmc2V0IC09IGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0Owo+IEBA IC0yNjA2LDYgKzI2MDcsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgZHNwY250cjsKPiAgCXUzMiByZWcg PSBEU1BDTlRSKHBsYW5lKTsKPiAgCWludCBwaXhlbF9zaXplOwo+ICsJdW5zaWduZWQgaW50IHRp bGluZ19tb2RlID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpLT50aWxpbmdfbW9kZTsKPiAgCj4g IAlpZiAoIWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCkgewo+ICAJCUk5MTVfV1JJVEUocmVn LCAwKTsKPiBAQCAtMjY1NCw3ICsyNjU2LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRl X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCUJVRygpOwo+ICAJfQo+ ICAKPiAtCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gKwlpZiAo dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKPiAgCQlkc3BjbnRyIHw9IERJU1BQTEFO RV9USUxFRDsKPiAgCj4gIAlpZiAoIUlTX0hBU1dFTEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRl dikpCj4gQEAgLTI2NjIsNyArMjY2NCw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9w cmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlsaW5lYXJfb2Zmc2V0 ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7Cj4gIAlpbnRlbF9jcnRjLT5k c3BhZGRyX29mZnNldCA9Cj4gLQkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAm eSwgb2JqLT50aWxpbmdfbW9kZSwKPiArCQlpbnRlbF9nZW40X2NvbXB1dGVfcGFnZV9vZmZzZXQo JngsICZ5LAo+ICsJCQkJCSAgICAgICB0aWxpbmdfbW9kZSwKPiAgCQkJCQkgICAgICAgcGl4ZWxf c2l6ZSwKPiAgCQkJCQkgICAgICAgZmItPnBpdGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAt PSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKPiBAQCAtMjc1MCw3ICsyNzUzLDcgQEAgc3Rh dGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAkgKiBUaGUgc3RyaWRlIGlzIGVpdGhlciBleHByZXNzZWQgYXMgYSBtdWx0aXBsZSBv ZiA2NCBieXRlcyBjaHVua3MgZm9yCj4gIAkgKiBsaW5lYXIgYnVmZmVycyBvciBpbiBudW1iZXIg b2YgdGlsZXMgZm9yIHRpbGVkIGJ1ZmZlcnMuCj4gIAkgKi8KPiAtCXN3aXRjaCAob2JqLT50aWxp bmdfbW9kZSkgewo+ICsJc3dpdGNoICh0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYiktPnRpbGluZ19t b2RlKSB7Cj4gIAljYXNlIEk5MTVfVElMSU5HX05PTkU6Cj4gIAkJc3RyaWRlID0gZmItPnBpdGNo ZXNbMF0gPj4gNjsKPiAgCQlicmVhazsKPiBAQCAtOTI5MSw3ICs5Mjk0LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJTUlf RElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Cj4gIAlpbnRlbF9yaW5nX2Vt aXQocmluZywgZmItPnBpdGNoZXNbMF0pOwo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVs X2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQgfAo+IC0JCQlvYmotPnRpbGluZ19tb2RlKTsK PiArCQkJdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpLT50aWxpbmdfbW9kZSk7Cj4gIAo+ICAJLyog WFhYIEVuYWJsaW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxpcCBpcyBzbyBmYXIK PiAgCSAqIHVudGVzdGVkIG9uIG5vbi1uYXRpdmUgbW9kZXMsIHNvIGlnbm9yZSBpdCBmb3Igbm93 Lgo+IEBAIC05MzI0LDcgKzkzMjcsOCBAQCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxp cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9ESVNQTEFZX0ZMSVAgfAo+ICAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+ cGxhbmUpKTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1swXSB8IG9iai0+ dGlsaW5nX21vZGUpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsCj4gKwkJCWZiLT5waXRjaGVz WzBdIHwgdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpLT50aWxpbmdfbW9kZSk7Cj4gIAlpbnRlbF9y aW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+dW5waW5fd29yay0+Z3R0X29mZnNldCk7Cj4gIAo+ ICAJLyogQ29udHJhcnkgdG8gdGhlIHN1Z2dlc3Rpb25zIGluIHRoZSBkb2N1bWVudGF0aW9uLAo+ IEBAIC05NDI4LDcgKzk0MzIsOCBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJfQo+ICAKPiAgCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBsYW5lX2JpdCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgKGZiLT5waXRjaGVzWzBdIHwgb2JqLT50aWxpbmdfbW9kZSkpOwo+ICsJaW50ZWxfcmlu Z19lbWl0KHJpbmcsCj4gKwkJCWZiLT5waXRjaGVzWzBdIHwgdG9faW50ZWxfZnJhbWVidWZmZXIo ZmIpLT50aWxpbmdfbW9kZSk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ dW5waW5fd29yay0+Z3R0X29mZnNldCk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgKE1JX05P T1ApKTsKPiAgCj4gQEAgLTk0NzAsMTMgKzk0NzUsMTIgQEAgc3RhdGljIHZvaWQgc2tsX2RvX21t aW9fZmxpcChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IGludGVsX2NydGMtPmJhc2UucHJpbWFyeS0+ZmI7Cj4gIAlzdHJ1Y3Qg aW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOwo+ IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiLT5vYmo7Cj4gIAlj b25zdCBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gIAl1MzIgY3RsLCBzdHJp ZGU7Cj4gIAo+ICAJY3RsID0gSTkxNV9SRUFEKFBMQU5FX0NUTChwaXBlLCAwKSk7Cj4gIAljdGwg Jj0gflBMQU5FX0NUTF9USUxFRF9NQVNLOwo+IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkx NV9USUxJTkdfWCkKPiArCWlmIChpbnRlbF9mYi0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdf WCkKPiAgCQljdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1g7Cj4gIAo+ICAJLyoKPiBAQCAtOTQ4NCw3 ICs5NDg4LDcgQEAgc3RhdGljIHZvaWQgc2tsX2RvX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YykKPiAgCSAqIGxpbmVhciBidWZmZXJzIG9yIGluIG51bWJlciBvZiB0aWxl cyBmb3IgdGlsZWQgYnVmZmVycy4KPiAgCSAqLwo+ICAJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0g Pj4gNjsKPiAtCWlmIChvYmotPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCj4gKwlpZiAo aW50ZWxfZmItPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCj4gIAkJc3RyaWRlID0gZmIt PnBpdGNoZXNbMF0gPj4gOTsgLyogWCB0aWxlcyBhcmUgNTEyIGJ5dGVzIHdpZGUgKi8KPiAgCj4g IAkvKgo+IEBAIC05NTA0LDE0ICs5NTA4LDEzIEBAIHN0YXRpYyB2b2lkIGlsa19kb19tbWlvX2Zs aXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2ZyYW1l YnVmZmVyICppbnRlbF9mYiA9Cj4gIAkJdG9faW50ZWxfZnJhbWVidWZmZXIoaW50ZWxfY3J0Yy0+ YmFzZS5wcmltYXJ5LT5mYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g aW50ZWxfZmItPm9iajsKPiAgCXUzMiBkc3BjbnRyOwo+ICAJdTMyIHJlZzsKPiAgCj4gIAlyZWcg PSBEU1BDTlRSKGludGVsX2NydGMtPnBsYW5lKTsKPiAgCWRzcGNudHIgPSBJOTE1X1JFQUQocmVn KTsKPiAgCj4gLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICsJ aWYgKGludGVsX2ZiLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCWRzcGNu dHIgfD0gRElTUFBMQU5FX1RJTEVEOwo+ICAJZWxzZQo+ICAJCWRzcGNudHIgJj0gfkRJU1BQTEFO RV9USUxFRDsKPiBAQCAtOTU5NSw2ICs5NTk4LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW45X3F1 ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXVpbnQzMl90IHBsYW5lID0gMCwg c3RyaWRlOwo+ICAJaW50IHJldDsKPiArCXVuc2lnbmVkIGludCB0aWxpbmdfbW9kZSA9IHRvX2lu dGVsX2ZyYW1lYnVmZmVyKGZiKS0+dGlsaW5nX21vZGU7Cj4gIAo+ICAJc3dpdGNoKGludGVsX2Ny dGMtPnBpcGUpIHsKPiAgCWNhc2UgUElQRV9BOgo+IEBAIC05NjExLDcgKzk2MTUsNyBAQCBzdGF0 aWMgaW50IGludGVsX2dlbjlfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJ CXJldHVybiAtRU5PREVWOwo+ICAJfQo+ICAKPiAtCXN3aXRjaCAob2JqLT50aWxpbmdfbW9kZSkg ewo+ICsJc3dpdGNoICh0aWxpbmdfbW9kZSkgewo+ICAJY2FzZSBJOTE1X1RJTElOR19OT05FOgo+ ICAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDY7Cj4gIAkJYnJlYWs7Cj4gQEAgLTk2Mzks NyArOTY0Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuOV9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Cj4gIAo+ICAJaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwgcGxhbmUpOwo+IC0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIHN0cmlkZSA8PCA2IHwgb2JqLT50aWxpbmdfbW9kZSk7Cj4gKwlpbnRl bF9yaW5nX2VtaXQocmluZywgc3RyaWRlIDw8IDYgfCB0aWxpbmdfbW9kZSk7Cj4gIAlpbnRlbF9y aW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+dW5waW5fd29yay0+Z3R0X29mZnNldCk7Cj4gIAo+ ICAJaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKGludGVsX2NydGMpOwo+IEBAIC05NzY0LDYg Kzk3NjgsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCXdvcmstPmV2ZW50ID0gZXZlbnQ7Cj4gIAl3b3JrLT5jcnRjID0gY3J0YzsK PiAgCXdvcmstPm9sZF9mYl9vYmogPSBpbnRlbF9mYl9vYmoob2xkX2ZiKTsKPiArCXdvcmstPm9s ZF90aWxpbmdfbW9kZSA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKG9sZF9mYiktPnRpbGluZ19tb2Rl OwoKSG0sIHRoYXQncyBhY3R1YWxseSBhbiBpbnRlcmVzdGluZyBidWdmaXggLSBjdXJyZW50bHkg dXNlcnNwYWNlIGNvdWxkIGJlCnNuZWFreSBhbmQgZGVzdHJveSB0aGUgb2xkIGZiIGltbWVkaWF0 ZWx5IGFmdGVyIHRoZSBmbGlwIGNvbXBsZXRlcyBhbmQgdGhlCmNoYW5nZSB0aGUgdGlsaW5nIG9m IHRoZSB1bmRlcmx5aW5nIG9iamVjdCBiZWZvcmUgdGhlIHVucGluIHdvcmsgaGFkIGEKY2hhbmNl IHRvIHJ1biAobmVlZHMgc29tZSBmdWRnaW4gd2l0aCBydCBwcmlvcyB0byBzdGFydmUgd29ya2Vy cyB0byBtYWtlCnRoaXMgd29yayB0aG91Z2gpLgoKSW1vIHRoZSByaWdodCBmaXggaXMgdG8gaG9s ZCBhIHJlZmVyZW5jZSBvbnRvIHRoZSBmYiBhbmQgbm90IHRoZQp1bmRlcmx5aW5nIGdlbSBvYmpl Y3QuIFdpdGggdGhhdCB0aWxpbmcgaXMgZ3VhcmFudGVlZCBub3QgdG8gY2hhbmdlLgoKPiAgCUlO SVRfV09SSygmd29yay0+d29yaywgaW50ZWxfdW5waW5fd29ya19mbik7Cj4gIAo+ICAJcmV0ID0g ZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTsKPiBAQCAtOTgxNCw3ICs5ODE5LDggQEAgc3RhdGlj IGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJ aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICAJCXJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbQkNT XTsKPiAtCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSB3b3JrLT5vbGRfZmJfb2JqLT50aWxpbmdf bW9kZSkKPiArCQlpZiAodG9faW50ZWxfZnJhbWVidWZmZXIoZmIpLT50aWxpbmdfbW9kZSAhPQo+ ICsJCSAgICB3b3JrLT5vbGRfdGlsaW5nX21vZGUpCj4gIAkJCS8qIHZsdjogRElTUExBWV9GTElQ IGZhaWxzIHRvIGNoYW5nZSB0aWxpbmcgKi8KPiAgCQkJcmluZyA9IE5VTEw7Cj4gIAl9IGVsc2Ug aWYgKElTX0lWWUJSSURHRShkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSkgewo+IEBAIC0xMjE5MCw3 ICsxMjE5Niw4IEBAIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPiAgCj4gIAkvKiB3ZSBvbmx5IG5lZWQgdG8gcGluIGluc2lkZSBHVFQgaWYgY3Vyc29y IGlzIG5vbi1waHkgKi8KPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWlm ICghSU5URUxfSU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwgJiYgb2JqLT50aWxpbmdf bW9kZSkgewo+ICsJaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCAm Jgo+ICsJICAgIHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKS0+dGlsaW5nX21vZGUpIHsKPiAgCQlE Uk1fREVCVUdfS01TKCJjdXJzb3IgY2Fubm90IGJlIHRpbGVkXG4iKTsKPiAgCQlyZXQgPSAtRUlO VkFMOwo+ICAJfQo+IEBAIC0xMjc3Miw2ICsxMjc3OSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJh bWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJZHJtX2hlbHBlcl9tb2Rl X2ZpbGxfZmJfc3RydWN0KCZpbnRlbF9mYi0+YmFzZSwgbW9kZV9jbWQpOwo+ICAJaW50ZWxfZmIt Pm9iaiA9IG9iajsKPiAgCWludGVsX2ZiLT5vYmotPmZyYW1lYnVmZmVyX3JlZmVyZW5jZXMrKzsK PiArCWludGVsX2ZiLT50aWxpbmdfbW9kZSA9IG9iai0+dGlsaW5nX21vZGU7CgpPbmUgc2lkZS1l ZmZlY3Qgb2YgdXNpbmcgZmItPm1vZGlmaWVyWzBdIGlzIHRoYXQgaWYgdGhlIG1vZGlmaWVyIGZs YWcgaXMKX25vdF8gc2V0LCB3ZSBuZWVkIHRvIHJlY29uc3RydWN0IHRoaXMgZmllbGQgZnJvbSBv YmotPnRpbGluZ19tb2RlIGhlcmUuCk90b2ggaWYgaXQgaXMgc2V0IHRoaXMgY29kZSBoZXJlIHNo b3VsZCBjaGVjayB0aGF0IGZiLT5tb2RpZmllciBhbmQKb2JqLT50aWxpbmdfbW9kZSBhcmUgY29u c2lzdGVudC4KClBlcmhhcHMgYmVzdCB0byBzcGxpdCB0aGlzIGNoYW5nZSBvdXQgYXMgYSBwcmVw IHBhdGNoLCBsaWtlIHlvdSd2ZSBkb25lCndpdGggdGhlIGNvZGUgZm9yIHRoZSBpbml0aWFsIGZy YW1lYnVmZmVyLgoKPiAgCj4gIAlyZXQgPSBkcm1fZnJhbWVidWZmZXJfaW5pdChkZXYsICZpbnRl bF9mYi0+YmFzZSwgJmludGVsX2ZiX2Z1bmNzKTsKPiAgCWlmIChyZXQpIHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+IGluZGV4IGVlZjc5Y2MuLmI4ZDhhMWQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+IEBAIC0xMjAsNiArMTIwLDcgQEAgZW51bSBpbnRlbF9vdXRwdXRfdHlw ZSB7Cj4gIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciB7Cj4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyIGJhc2U7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsJdW5zaWdu ZWQgaW50IHRpbGluZ19tb2RlOwo+ICB9Owo+ICAKPiAgc3RydWN0IGludGVsX2ZiZGV2IHsKPiBA QCAtNzIzLDYgKzcyNCw3IEBAIHN0cnVjdCBpbnRlbF91bnBpbl93b3JrIHsKPiAgCWludCBmbGlw X3F1ZXVlZF92Ymxhbms7Cj4gIAlpbnQgZmxpcF9yZWFkeV92Ymxhbms7Cj4gIAlib29sIGVuYWJs ZV9zdGFsbF9jaGVjazsKPiArCXVuc2lnbmVkIGludCBvbGRfdGlsaW5nX21vZGU7Cj4gIH07Cj4g IAo+ICBzdHJ1Y3QgaW50ZWxfc2V0X2NvbmZpZyB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g aW5kZXggNmVjZTY2My4uMGNhNDA4OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBA IC0xMTgyLDEyICsxMTgyLDExIEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBk cm1fY3J0YyAqdW51c2VkX2NydGMpCj4gIAlEUk1fREVCVUdfS01TKCJGSUZPIHdhdGVybWFya3Mg LSBBOiAlZCwgQjogJWRcbiIsIHBsYW5lYV93bSwgcGxhbmViX3dtKTsKPiAgCj4gIAlpZiAoSVNf STkxNUdNKGRldikgJiYgZW5hYmxlZCkgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7Cj4gLQo+IC0JCW9iaiA9IGludGVsX2ZiX29iaihlbmFibGVkLT5wcmltYXJ5LT5mYik7 Cj4gKwkJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYjsKPiAgCj4gIAkJLyogc2Vs Zi1yZWZyZXNoIHNlZW1zIGJ1c3RlZCB3aXRoIHVudGlsZWQgKi8KPiAtCQlpZiAob2JqLT50aWxp bmdfbW9kZSA9PSBJOTE1X1RJTElOR19OT05FKQo+ICsJCWludGVsX2ZiID0gdG9faW50ZWxfZnJh bWVidWZmZXIoZW5hYmxlZC0+cHJpbWFyeS0+ZmIpOwo+ICsJCWlmIChpbnRlbF9mYi0+dGlsaW5n X21vZGUgPT0gSTkxNV9USUxJTkdfTk9ORSkKPiAgCQkJZW5hYmxlZCA9IE5VTEw7Cj4gIAl9Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggMGE1MmM0NC4uMDY1OTgw MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTI0NSw3ICsyNDUs NyBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ICAJCUJVRygpOwo+ICAJfQo+ICAKPiAtCXN3aXRjaCAob2JqLT50 aWxpbmdfbW9kZSkgewo+ICsJc3dpdGNoICh0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYiktPnRpbGlu Z19tb2RlKSB7Cj4gIAljYXNlIEk5MTVfVElMSU5HX05PTkU6Cj4gIAkJc3RyaWRlID0gZmItPnBp dGNoZXNbMF0gPj4gNjsKPiAgCQlicmVhazsKPiBAQCAtNDEzLDYgKzQxMyw3IEBAIHZsdl91cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gIAl1MzIgc3ByY3RsOwo+ICAJdW5zaWduZWQgbG9uZyBzcHJzdXJmX29mZnNldCwgbGluZWFy X29mZnNldDsKPiAgCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBp eGVsX2Zvcm1hdCwgMCk7Cj4gKwl1bnNpZ25lZCBpbnQgdGlsaW5nX21vZGUgPSB0b19pbnRlbF9m cmFtZWJ1ZmZlcihmYiktPnRpbGluZ19tb2RlOwo+ICAKPiAgCXNwcmN0bCA9IEk5MTVfUkVBRChT UENOVFIocGlwZSwgcGxhbmUpKTsKPiAgCj4gQEAgLTQ3MSw3ICs0NzIsNyBAQCB2bHZfdXBkYXRl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAJICovCj4gIAlzcHJjdGwgfD0gU1BfR0FNTUFfRU5BQkxFOwo+ICAKPiAtCWlmIChvYmotPnRp bGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gKwlpZiAodGlsaW5nX21vZGUgIT0gSTkx NV9USUxJTkdfTk9ORSkKPiAgCQlzcHJjdGwgfD0gU1BfVElMRUQ7Cj4gIAo+ICAJc3ByY3RsIHw9 IFNQX0VOQUJMRTsKPiBAQCAtNDg4LDcgKzQ4OSw3IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJbGluZWFy X29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOwo+ICAJc3Byc3Vy Zl9vZmZzZXQgPSBpbnRlbF9nZW40X2NvbXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LAo+IC0JCQkJ CQkJb2JqLT50aWxpbmdfbW9kZSwKPiArCQkJCQkJCXRpbGluZ19tb2RlLAo+ICAJCQkJCQkJcGl4 ZWxfc2l6ZSwKPiAgCQkJCQkJCWZiLT5waXRjaGVzWzBdKTsKPiAgCWxpbmVhcl9vZmZzZXQgLT0g c3Byc3VyZl9vZmZzZXQ7Cj4gQEAgLTUwOSw3ICs1MTAsNyBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJSTkxNV9X UklURShTUFNUUklERShwaXBlLCBwbGFuZSksIGZiLT5waXRjaGVzWzBdKTsKPiAgCUk5MTVfV1JJ VEUoU1BQT1MocGlwZSwgcGxhbmUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gIAo+IC0J aWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKPiArCWlmICh0aWxpbmdf bW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCUk5MTVfV1JJVEUoU1BUSUxFT0ZGKHBpcGUs IHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4gIAllbHNlCj4gIAkJSTkxNV9XUklURShTUExJTk9G RihwaXBlLCBwbGFuZSksIGxpbmVhcl9vZmZzZXQpOwo+IEBAIC02MTMsNiArNjE0LDcgQEAgaXZi X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJdTMyIHNwcmN0bCwgc3Byc2NhbGUgPSAwOwo+ICAJdW5zaWduZWQgbG9uZyBzcHJz dXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKPiAgCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1h dF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gKwl1bnNpZ25lZCBpbnQgdGlsaW5n X21vZGUgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYiktPnRpbGluZ19tb2RlOwo+ICAKPiAgCXNw cmN0bCA9IEk5MTVfUkVBRChTUFJDVEwocGlwZSkpOwo+ICAKPiBAQCAtNjUyLDcgKzY1NCw3IEBA IGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCSAqLwo+ICAJc3ByY3RsIHw9IFNQUklURV9HQU1NQV9FTkFCTEU7Cj4gIAo+ IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKPiArCWlmICh0aWxp bmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCXNwcmN0bCB8PSBTUFJJVEVfVElMRUQ7 Cj4gIAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKPiBAQCAt NjgwLDcgKzY4Miw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5w aXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7Cj4gIAlzcHJzdXJmX29mZnNldCA9Cj4gLQkJaW50 ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxpbmdfbW9kZSwKPiAr CQlpbnRlbF9nZW40X2NvbXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LCB0aWxpbmdfbW9kZSwKPiAg CQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNl dCAtPSBzcHJzdXJmX29mZnNldDsKPiAgCj4gQEAgLTcwNSw3ICs3MDcsNyBAQCBpdmJfdXBkYXRl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAkgKiByZWdpc3RlciAqLwo+ICAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwo ZGV2KSkKPiAgCQlJOTE1X1dSSVRFKFNQUk9GRlNFVChwaXBlKSwgKHkgPDwgMTYpIHwgeCk7Cj4g LQllbHNlIGlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gKwllbHNl IGlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCUk5MTVfV1JJVEUoU1BS VElMRU9GRihwaXBlKSwgKHkgPDwgMTYpIHwgeCk7Cj4gIAllbHNlCj4gIAkJSTkxNV9XUklURShT UFJMSU5PRkYocGlwZSksIGxpbmVhcl9vZmZzZXQpOwo+IEBAIC04MTgsNiArODIwLDcgQEAgaWxr X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJdW5zaWduZWQgbG9uZyBkdnNzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKPiAg CXUzMiBkdnNjbnRyLCBkdnNzY2FsZTsKPiAgCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9w bGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gKwl1bnNpZ25lZCBpbnQgdGlsaW5nX21v ZGUgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYiktPnRpbGluZ19tb2RlOwo+ICAKPiAgCWR2c2Nu dHIgPSBJOTE1X1JFQUQoRFZTQ05UUihwaXBlKSk7Cj4gIAo+IEBAIC04NTcsNyArODYwLDcgQEAg aWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJICovCj4gIAlkdnNjbnRyIHw9IERWU19HQU1NQV9FTkFCTEU7Cj4gIAo+IC0J aWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKPiArCWlmICh0aWxpbmdf bW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCWR2c2NudHIgfD0gRFZTX1RJTEVEOwo+ICAK PiAgCWlmIChJU19HRU42KGRldikpCj4gQEAgLTg4MCw3ICs4ODMsNyBAQCBpbGtfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ ICAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOwo+ ICAJZHZzc3VyZl9vZmZzZXQgPQo+IC0JCWludGVsX2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgm eCwgJnksIG9iai0+dGlsaW5nX21vZGUsCj4gKwkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zm c2V0KCZ4LCAmeSwgdGlsaW5nX21vZGUsCj4gIAkJCQkJICAgICAgIHBpeGVsX3NpemUsIGZiLT5w aXRjaGVzWzBdKTsKPiAgCWxpbmVhcl9vZmZzZXQgLT0gZHZzc3VyZl9vZmZzZXQ7Cj4gIAo+IEBA IC04OTcsNyArOTAwLDcgQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJSTkxNV9XUklURShEVlNTVFJJREUocGlwZSks IGZiLT5waXRjaGVzWzBdKTsKPiAgCUk5MTVfV1JJVEUoRFZTUE9TKHBpcGUpLCAoY3J0Y195IDw8 IDE2KSB8IGNydGNfeCk7Cj4gIAo+IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJ TkdfTk9ORSkKPiArCWlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCUk5 MTVfV1JJVEUoRFZTVElMRU9GRihwaXBlKSwgKHkgPDwgMTYpIHwgeCk7Cj4gIAllbHNlCj4gIAkJ STkxNV9XUklURShEVlNMSU5PRkYocGlwZSksIGxpbmVhcl9vZmZzZXQpOwo+IEBAIC0xMDc2LDcg KzEwNzksNiBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoc3Rh dGUtPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmUpOwo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0 ZS0+YmFzZS5mYjsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9m Yl9vYmooZmIpOwo+ICAJaW50IGNydGNfeCwgY3J0Y195Owo+ICAJdW5zaWduZWQgaW50IGNydGNf dywgY3J0Y19oOwo+ICAJdWludDMyX3Qgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7Cj4gQEAg LTExMDcsNyArMTEwOSw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCX0KPiAgCj4gIAkvKiBTcHJpdGUgcGxhbmVzIGNhbiBiZSBsaW5lYXIg b3IgeC10aWxlZCBzdXJmYWNlcyAqLwo+IC0Jc3dpdGNoIChvYmotPnRpbGluZ19tb2RlKSB7Cj4g Kwlzd2l0Y2ggKHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKS0+dGlsaW5nX21vZGUpIHsKPiAgCQlj YXNlIEk5MTVfVElMSU5HX05PTkU6Cj4gIAkJY2FzZSBJOTE1X1RJTElOR19YOgo+ICAJCQlicmVh azsKPiAtLSAKPiAyLjIuMgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50 ZWwgQ29ycG9yYXRpb24KKzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=