From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm/i915: Use frame buffer modifiers for tiled display Date: Tue, 3 Feb 2015 20:47:57 +0100 Message-ID: <20150203194757.GW14009@phenom.ffwll.local> References: <1422639418-28845-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1422984152-5022-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1422984152-5022-4-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-f42.google.com (mail-wg0-f42.google.com [74.125.82.42]) by gabe.freedesktop.org (Postfix) with ESMTP id 7F8DA89E1B for ; Tue, 3 Feb 2015 11:46:36 -0800 (PST) Received: by mail-wg0-f42.google.com with SMTP id x13so46677182wgg.1 for ; Tue, 03 Feb 2015 11:46:35 -0800 (PST) Content-Disposition: inline In-Reply-To: <1422984152-5022-4-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 T24gVHVlLCBGZWIgMDMsIDIwMTUgYXQgMDU6MjI6MzFQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBTdGFydCB1c2luZyBmcmFtZSBidWZmZXIgbW9kaWZpZXJzIGluc3RlYWQgb2Ygb2JqZWN0 IHRpbGluZyBtb2RlCj4gZm9yIGRpc3BsYXkgcHVycG9zZXMuCj4gCj4gVG8gZW5zdXJlIGNvbXBh dGliaWxpdHkgd2l0aCBvbGQgdXNlcnNwYWNlIHdoaWNoIGlzIHVzaW5nIHNldF90aWxpbmcKPiBh bmQgZG9lcyBub3Qga25vdyBhYm91dCBmcmFtZSBidWZmZXIgbW9kaWZpZXJzLCB0aGUgbGF0dGVy IGFyZSBmYWtlZAo+IGludGVybmFsbHkgd2hlbiB0aWxlIG9iamVjdCBpcyBzZXQgZm9yIGRpc3Bs YXkuIFRoaXMgd2F5IGFsbCBpbnRlcmVzdGVkCj4gY2FsbCBzaXRlcyBjYW4gdXNlIGZiIG1vZGlm aWVycyBleGNsdXNpdmVseS4KPiAKPiBBbHNvIGVuc3VyZSB0aWxpbmcgc3BlY2lmaWVkIHZpYSBm YiBtb2RpZmllcnMgbXVzdCBtYXRjaCBvYmplY3QgdGlsaW5nCj4gdXNlZCBmb3IgZmVuY2luZyBp ZiBib3RoIGFyZSBzcGVjaWZpZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4g PHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgOTUgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAyICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgIDcgKy0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8IDI2ICsrKysrLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2Vk LCA4NSBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gaW5kZXggN2EzZWQ2MS4uNjgyNTAxNiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjE5OCw2ICsyMTk4LDE5IEBAIGludGVsX2Zi X2FsaWduX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgaGVpZ2h0LCB1bnNpZ25l ZCBpbnQgdGlsaW5nKQo+ICAJcmV0dXJuIEFMSUdOKGhlaWdodCwgdGlsZV9oZWlnaHQpOwo+ICB9 Cj4gIAo+ICtzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyh1 NjQgbW9kKQo+ICt7Cj4gKwlCVUlMRF9CVUdfT04oKEk5MTVfRk9STUFUX01PRF9YX1RJTEVEICYg MHgwMGZmZmZmZmZmZmZmZmZmTCkgIT0KPiArCQkgICAgIEk5MTVfVElMSU5HX1gpOwo+ICsKPiAr CXJldHVybiBtb2QgJiAxOwo+ICt9Cj4gKwo+ICt1bnNpZ25lZCBpbnQgaW50ZWxfZmJfdGlsaW5n X21vZGUoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCj4gK3sKPiArCXJldHVybiBpbnRlbF9m Yl9tb2RpZmllcl90b190aWxpbmcoZmItPm1vZGlmaWVyWzBdKTsKPiArfQoKSSBleHBlY3QgdGhh dCB0aGVzZSBoZXJlIHdpbGwgY3JlYXRlIGEgYml0IG9mIGNodXJuIHdpdGggdGhlIHNrbCBwYXRj aGVzCnlvdSBoYXZlIGJhc2VkLCBzaW5jZSBJIHJlYWxseSBkb24ndCB3YW50IGEgbmV3IEk5MTVf VElMSU5HX0ZBTkNZIGRlZmluZQppbiB0aGUgZW51bSBzcGFjZSB1c2VkIGJ5IG9iai0+dGlsaW5n IG1vZGUuIEJ1dCBtYWtlcyBzZW5zZSBmb3IgYmFja3dhcmRzCmNvbXBhdCB3aXRoIG9sZGVyIHBs YXRmb3JtcyBhbmQgbGVzcyBjaHVybiBpbiBjb2RlLgoKV2l0aCBpZ3QgZm9yIHRoZSBuZXcgY2Fz ZXMgaW4gYWRkZmIgYW5kIHJldmlldyB0aGlzIGlzIGltbyBnb29kIHRvIGdldCBpbi4KLURhbmll bAoKPiArCj4gIGludAo+ICBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCQkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gQEAgLTIy MTEsNyArMjIyNCw3IEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICAKPiAgCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3Rf bXV0ZXgpKTsKPiAgCj4gLQlzd2l0Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsKPiArCXN3aXRjaCAo aW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpKSB7Cj4gIAljYXNlIEk5MTVfVElMSU5HX05PTkU6Cj4g IAkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gIAkJCWFsaWdubWVudCA9IDI1NiAq IDEwMjQ7Cj4gQEAgLTI0NDcsNyArMjQ2MCw4IEBAIGludGVsX2ZpbmRfcGxhbmVfb2JqKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGk5 MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopID09IHBsYW5lX2NvbmZpZy0+YmFzZSkgewo+IC0J CQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICsJCQlpZiAoaW50 ZWxfZmJfdGlsaW5nX21vZGUoYy0+cHJpbWFyeS0+ZmIpICE9Cj4gKwkJCSAgICBJOTE1X1RJTElO R19OT05FKQo+ICAJCQkJZGV2X3ByaXYtPnByZXNlcnZlX2Jpb3Nfc3dpenpsZSA9IHRydWU7Cj4g IAo+ICAJCQlkcm1fZnJhbWVidWZmZXJfcmVmZXJlbmNlKGMtPnByaW1hcnktPmZiKTsKPiBAQCAt MjQ3MSw2ICsyNDg1LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgZHNwY250cjsKPiAgCXUzMiByZWcgPSBEU1BD TlRSKHBsYW5lKTsKPiAgCWludCBwaXhlbF9zaXplOwo+ICsJdW5zaWduZWQgaW50IHRpbGluZ19t b2RlID0gaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpOwo+ICAKPiAgCWlmICghaW50ZWxfY3J0Yy0+ cHJpbWFyeV9lbmFibGVkKSB7Cj4gIAkJSTkxNV9XUklURShyZWcsIDApOwo+IEBAIC0yNTQyLDgg KzI1NTcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgCQlCVUcoKTsKPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNCAmJgo+IC0JICAgIG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdf Tk9ORSkKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0ICYmIHRpbGluZ19tb2RlICE9 IEk5MTVfVElMSU5HX05PTkUpCj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7Cj4gIAo+ ICAJaWYgKElTX0c0WChkZXYpKQo+IEBAIC0yNTUzLDcgKzI1NjcsNyBAQCBzdGF0aWMgdm9pZCBp OXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICAJCWludGVsX2NydGMtPmRzcGFkZHJf b2Zmc2V0ID0KPiAtCQkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2Jq LT50aWxpbmdfbW9kZSwKPiArCQkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAm eSwgdGlsaW5nX21vZGUsCj4gIAkJCQkJCSAgICAgICBwaXhlbF9zaXplLAo+ICAJCQkJCQkgICAg ICAgZmItPnBpdGNoZXNbMF0pOwo+ICAJCWxpbmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0Yy0+ZHNw YWRkcl9vZmZzZXQ7Cj4gQEAgLTI2MDMsNiArMjYxNyw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtl X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXUzMiBkc3Bj bnRyOwo+ICAJdTMyIHJlZyA9IERTUENOVFIocGxhbmUpOwo+ICAJaW50IHBpeGVsX3NpemU7Cj4g Kwl1bnNpZ25lZCBpbnQgdGlsaW5nX21vZGUgPSBpbnRlbF9mYl90aWxpbmdfbW9kZShmYik7Cj4g IAo+ICAJaWYgKCFpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpIHsKPiAgCQlJOTE1X1dSSVRF KHJlZywgMCk7Cj4gQEAgLTI2NTEsNyArMjY2Niw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlCVUcoKTsKPiAg CX0KPiAgCj4gLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICsJ aWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gIAkJZHNwY250ciB8PSBESVNQ UExBTkVfVElMRUQ7Cj4gIAo+ICAJaWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VM TChkZXYpKQo+IEBAIC0yNjU5LDcgKzI2NzQsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRh dGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJbGluZWFyX29m ZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOwo+ICAJaW50ZWxfY3J0 Yy0+ZHNwYWRkcl9vZmZzZXQgPQo+IC0JCWludGVsX2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgm eCwgJnksIG9iai0+dGlsaW5nX21vZGUsCj4gKwkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zm c2V0KCZ4LCAmeSwgdGlsaW5nX21vZGUsCj4gIAkJCQkJICAgICAgIHBpeGVsX3NpemUsCj4gIAkJ CQkJICAgICAgIGZiLT5waXRjaGVzWzBdKTsKPiAgCWxpbmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0 Yy0+ZHNwYWRkcl9vZmZzZXQ7Cj4gQEAgLTI3NDcsNyArMjc2Miw3IEBAIHN0YXRpYyB2b2lkIHNr eWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJICog VGhlIHN0cmlkZSBpcyBlaXRoZXIgZXhwcmVzc2VkIGFzIGEgbXVsdGlwbGUgb2YgNjQgYnl0ZXMg Y2h1bmtzIGZvcgo+ICAJICogbGluZWFyIGJ1ZmZlcnMgb3IgaW4gbnVtYmVyIG9mIHRpbGVzIGZv ciB0aWxlZCBidWZmZXJzLgo+ICAJICovCj4gLQlzd2l0Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsK PiArCXN3aXRjaCAoaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpKSB7Cj4gIAljYXNlIEk5MTVfVElM SU5HX05PTkU6Cj4gIAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gPj4gNjsKPiAgCQlicmVhazsK PiBAQCAtOTI4OCw3ICs5MzAzLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVs X2NydGMtPnBsYW5lKSk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0p Owo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9v ZmZzZXQgfAo+IC0JCQlvYmotPnRpbGluZ19tb2RlKTsKPiArCQkJaW50ZWxfZmJfdGlsaW5nX21v ZGUoZmIpKTsKPiAgCj4gIAkvKiBYWFggRW5hYmxpbmcgdGhlIHBhbmVsLWZpdHRlciBhY3Jvc3Mg cGFnZS1mbGlwIGlzIHNvIGZhcgo+ICAJICogdW50ZXN0ZWQgb24gbm9uLW5hdGl2ZSBtb2Rlcywg c28gaWdub3JlIGl0IGZvciBub3cuCj4gQEAgLTkzMjEsNyArOTMzNiw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUCB8Cj4gIAkJCU1JX0RJU1BMQVlfRkxJ UF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZi LT5waXRjaGVzWzBdIHwgb2JqLT50aWxpbmdfbW9kZSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgZmItPnBpdGNoZXNbMF0gfCBpbnRlbF9mYl90aWxpbmdfbW9kZShmYikpOwo+ICAJaW50ZWxf cmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQpOwo+ICAK PiAgCS8qIENvbnRyYXJ5IHRvIHRoZSBzdWdnZXN0aW9ucyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwK PiBAQCAtOTQyNSw3ICs5NDQwLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCX0KPiAgCj4gIAlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZV9iaXQpOwo+IC0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIChmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUpKTsKPiArCWludGVsX3Jp bmdfZW1pdChyaW5nLCAoZmItPnBpdGNoZXNbMF0gfCBpbnRlbF9mYl90aWxpbmdfbW9kZShmYikp KTsKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT51bnBpbl93b3JrLT5ndHRf b2Zmc2V0KTsKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCAoTUlfTk9PUCkpOwo+ICAKPiBAQCAt OTQ2NiwxNCArOTQ4MSwxMyBAQCBzdGF0aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVs X2NydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gaW50ZWxf Y3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKPiAtCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50 ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9iajsKPiAgCWNvbnN0IGVudW0gcGlwZSBwaXBlID0g aW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXUzMiBjdGwsIHN0cmlkZTsKPiArCXVuc2lnbmVkIGludCB0 aWxpbmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKPiAgCj4gIAljdGwgPSBJOTE1 X1JFQUQoUExBTkVfQ1RMKHBpcGUsIDApKTsKPiAgCWN0bCAmPSB+UExBTkVfQ1RMX1RJTEVEX01B U0s7Cj4gLQlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19YKQo+ICsJaWYgKHRp bGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCj4gIAkJY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9Y Owo+ICAKPiAgCS8qCj4gQEAgLTk0ODEsNyArOTQ5NSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9kb19t bWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAkgKiBsaW5lYXIgYnVm ZmVycyBvciBpbiBudW1iZXIgb2YgdGlsZXMgZm9yIHRpbGVkIGJ1ZmZlcnMuCj4gIAkgKi8KPiAg CXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdID4+IDY7Cj4gLQlpZiAob2JqLT50aWxpbmdfbW9kZSA9 PSBJOTE1X1RJTElOR19YKQo+ICsJaWYgKHRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1gpCj4g IAkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gPj4gOTsgLyogWCB0aWxlcyBhcmUgNTEyIGJ5dGVz IHdpZGUgKi8KPiAgCj4gIAkvKgo+IEBAIC05NDk5LDE2ICs5NTEzLDE0IEBAIHN0YXRpYyB2b2lk IGlsa19kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIHsKPiAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1 Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0KPiAtCQl0b19pbnRlbF9mcmFtZWJ1ZmZl cihpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmogPSBpbnRlbF9mYi0+b2JqOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnktPmZiOwo+ICAJdTMyIGRzcGNudHI7Cj4gIAl1 MzIgcmVnOwo+ICAKPiAgCXJlZyA9IERTUENOVFIoaW50ZWxfY3J0Yy0+cGxhbmUpOwo+ICAJZHNw Y250ciA9IEk5MTVfUkVBRChyZWcpOwo+ICAKPiAtCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5 MTVfVElMSU5HX05PTkUpCj4gKwlpZiAoaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpICE9IEk5MTVf VElMSU5HX05PTkUpCj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7Cj4gIAllbHNlCj4g IAkJZHNwY250ciAmPSB+RElTUFBMQU5FX1RJTEVEOwo+IEBAIC05NTkxLDYgKzk2MDMsNyBAQCBz dGF0aWMgaW50IGludGVsX2dlbjlfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gIAl1aW50MzJfdCBwbGFuZSA9IDAsIHN0cmlkZTsKPiArCXVuc2lnbmVkIGludCB0aWxp bmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ c3dpdGNoKGludGVsX2NydGMtPnBpcGUpIHsKPiBAQCAtOTYwOCw3ICs5NjIxLDcgQEAgc3RhdGlj IGludCBpbnRlbF9nZW45X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQly ZXR1cm4gLUVOT0RFVjsKPiAgCX0KPiAgCj4gLQlzd2l0Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsK PiArCXN3aXRjaCAodGlsaW5nX21vZGUpIHsKPiAgCWNhc2UgSTkxNV9USUxJTkdfTk9ORToKPiAg CQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSA+PiA2Owo+ICAJCWJyZWFrOwo+IEBAIC05NjM2LDcg Kzk2NDksNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjlfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+ICAKPiAgCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBsYW5lKTsKPiAtCWludGVsX3Jp bmdfZW1pdChyaW5nLCBzdHJpZGUgPDwgNiB8IG9iai0+dGlsaW5nX21vZGUpOwo+ICsJaW50ZWxf cmluZ19lbWl0KHJpbmcsIHN0cmlkZSA8PCA2IHwgdGlsaW5nX21vZGUpOwo+ICAJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQpOwo+ICAKPiAg CWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjKTsKPiBAQCAtOTgxMSw3ICs5 ODI0LDggQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAo+ICAJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICAJCXJpbmcgPSAmZGV2 X3ByaXYtPnJpbmdbQkNTXTsKPiAtCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBpbnRlbF9mYl9v Ymood29yay0+b2xkX2ZiKS0+dGlsaW5nX21vZGUpCj4gKwkJaWYgKGludGVsX2ZiX3RpbGluZ19t b2RlKGZiKSAhPQo+ICsJCSAgICBpbnRlbF9mYl90aWxpbmdfbW9kZSh3b3JrLT5vbGRfZmIpKQo+ ICAJCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFuZ2UgdGlsaW5nICovCj4gIAkJ CXJpbmcgPSBOVUxMOwo+ICAJfSBlbHNlIGlmIChJU19JVllCUklER0UoZGV2KSB8fCBJU19IQVNX RUxMKGRldikpIHsKPiBAQCAtMTIxODcsNyArMTIyMDEsOCBAQCBpbnRlbF9jaGVja19jdXJzb3Jf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAo+ICAJLyogd2Ugb25seSBuZWVkIHRv IHBpbiBpbnNpZGUgR1RUIGlmIGN1cnNvciBpcyBub24tcGh5ICovCj4gIAltdXRleF9sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAoIUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRz X3BoeXNpY2FsICYmIG9iai0+dGlsaW5nX21vZGUpIHsKPiArCWlmICghSU5URUxfSU5GTyhkZXYp LT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwgJiYKPiArCSAgICBpbnRlbF9mYl90aWxpbmdfbW9kZShm YikpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJjdXJzb3IgY2Fubm90IGJlIHRpbGVkXG4iKTsKPiAg CQlyZXQgPSAtRUlOVkFMOwo+ICAJfQo+IEBAIC0xMjY2OCw2ICsxMjY4Myw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICB7Cj4g IAlpbnQgYWxpZ25lZF9oZWlnaHQ7Cj4gIAlpbnQgcGl0Y2hfbGltaXQ7Cj4gKwl1bnNpZ25lZCBp bnQgdGlsaW5nX21vZGUgPSBJOTE1X1RJTElOR19OT05FOwo+ICAJaW50IHJldDsKPiAgCj4gIAlX QVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7Cj4gQEAgLTEyNjc3 LDYgKzEyNjkzLDI5IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiArCS8qIElm IG9iaiBpcyB0aWxlZCBhbmQgZmIgbW9kaWZpZXIgbm90IHNldCBwcm9wYWdhdGUgaXQgaW4KPiAr CSAqIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIHVzZXJzcGFjZS4KPiArCSAq Lwo+ICsJaWYgKG9iai0+dGlsaW5nX21vZGUgJiYgIShtb2RlX2NtZC0+ZmxhZ3MgJiBEUk1fTU9E RV9GQl9NT0RJRklFUlMpKSB7Cj4gKwkJdGlsaW5nX21vZGUgPSBvYmotPnRpbGluZ19tb2RlOwo+ ICsJCW1vZGVfY21kLT5tb2RpZmllclswXSA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwo+ICsJ fQo+ICsKPiArCS8qIEdldCB0aWxpbmcgbW9kZSBmcm9tIGZiIG1vZGlmaWVyIGlmIHNldC4gKi8K PiArCWlmIChtb2RlX2NtZC0+ZmxhZ3MgJiBEUk1fTU9ERV9GQl9NT0RJRklFUlMpCj4gKwkJdGls aW5nX21vZGUgPSBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcobW9kZV9jbWQtPm1vZGlmaWVy WzBdKTsKPiArCj4gKwkvKiBFbnN1cmUgbmV3IHVzZXJzcGFjZSBpcyB1c2luZyB0aGUgaW50ZXJm YWNlIGNvcnJlY3RseSBieSBvbmx5Cj4gKwkgKiBhbGxvd2luZyBvbGQgdXNhZ2Ugb2Ygc2V0X3Rp bGluZyBpZiBpdCBtYXRjaGVzIHdpdGggdGhlCj4gKwkgKiBmYiBtb2RpZmllciB0aWxpbmcuCj4g KwkgKi8KPiArCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUgJiYKPiAr CSAgICBvYmotPnRpbGluZ19tb2RlICE9IHRpbGluZ19tb2RlKSB7Cj4gKwkJRFJNX0VSUk9SKCJU aWxpbmcgbW9kaWZpZXIgbWlzbWF0Y2ggJXUgdnMgb2JqICV1IVxuIiwKPiArCQkJCXRpbGluZ19t b2RlLCBvYmotPnRpbGluZ19tb2RlKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4g IAlpZiAobW9kZV9jbWQtPnBpdGNoZXNbMF0gJiA2Mykgewo+ICAJCURSTV9ERUJVRygicGl0Y2gg KCVkKSBtdXN0IGJlIGF0IGxlYXN0IDY0IGJ5dGUgYWxpZ25lZFxuIiwKPiAgCQkJICBtb2RlX2Nt ZC0+cGl0Y2hlc1swXSk7Cj4gQEAgLTEyNjg2LDEyICsxMjcyNSwxMiBAQCBzdGF0aWMgaW50IGlu dGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRldikpIHsKPiAgCQlwaXRj aF9saW1pdCA9IDMyKjEwMjQ7Cj4gIAl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDQpIHsKPiAtCQlpZiAob2JqLT50aWxpbmdfbW9kZSkKPiArCQlpZiAodGlsaW5nX21vZGUpCj4g IAkJCXBpdGNoX2xpbWl0ID0gMTYqMTAyNDsKPiAgCQllbHNlCj4gIAkJCXBpdGNoX2xpbWl0ID0g MzIqMTAyNDsKPiAgCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gMykgewo+IC0J CWlmIChvYmotPnRpbGluZ19tb2RlKQo+ICsJCWlmICh0aWxpbmdfbW9kZSkKPiAgCQkJcGl0Y2hf bGltaXQgPSA4KjEwMjQ7Cj4gIAkJZWxzZQo+ICAJCQlwaXRjaF9saW1pdCA9IDE2KjEwMjQ7Cj4g QEAgLTEyNzAxLDEyICsxMjc0MCwxMiBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlpZiAobW9kZV9jbWQtPnBpdGNoZXNb MF0gPiBwaXRjaF9saW1pdCkgewo+ICAJCURSTV9ERUJVRygiJXMgcGl0Y2ggKCVkKSBtdXN0IGJl IGF0IGxlc3MgdGhhbiAlZFxuIiwKPiAtCQkJICBvYmotPnRpbGluZ19tb2RlID8gInRpbGVkIiA6 ICJsaW5lYXIiLAo+ICsJCQkgIHRpbGluZ19tb2RlID8gInRpbGVkIiA6ICJsaW5lYXIiLAo+ICAJ CQkgIG1vZGVfY21kLT5waXRjaGVzWzBdLCBwaXRjaF9saW1pdCk7Cj4gIAkJcmV0dXJuIC1FSU5W QUw7Cj4gIAl9Cj4gIAo+IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9O RSAmJgo+ICsJaWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUgJiYgb2JqLT5zdHJp ZGUgJiYKPiAgCSAgICBtb2RlX2NtZC0+cGl0Y2hlc1swXSAhPSBvYmotPnN0cmlkZSkgewo+ICAJ CURSTV9ERUJVRygicGl0Y2ggKCVkKSBtdXN0IG1hdGNoIHRpbGluZyBzdHJpZGUgKCVkKVxuIiwK PiAgCQkJICBtb2RlX2NtZC0+cGl0Y2hlc1swXSwgb2JqLT5zdHJpZGUpOwo+IEBAIC0xMjc2MSw3 ICsxMjgwMCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWFsaWduZWRfaGVpZ2h0 ID0gaW50ZWxfZmJfYWxpZ25faGVpZ2h0KGRldiwgbW9kZV9jbWQtPmhlaWdodCwKPiAtCQkJCQkg ICAgICAgb2JqLT50aWxpbmdfbW9kZSk7Cj4gKwkJCQkJICAgICAgIHRpbGluZ19tb2RlKTsKPiAg CS8qIEZJWE1FIGRybSBoZWxwZXIgZm9yIHNpemUgY2hlY2tzIChlc3BlY2lhbGx5IHBsYW5hciBm b3JtYXRzKT8gKi8KPiAgCWlmIChvYmotPmJhc2Uuc2l6ZSA8IGFsaWduZWRfaGVpZ2h0ICogbW9k ZV9jbWQtPnBpdGNoZXNbMF0pCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiBpbmRleCBmMDQ4ZjhiLi5iNDBkYWQ4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiBAQCAtMTAwOCw2ICsxMDA4LDggQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlw ZV9jb25maWcoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gIHZvaWQgaW50ZWxfY3J0 Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIHZvaWQg aW50ZWxfbW9kZXNldF9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpOwo+ICAKPiArdW5zaWduZWQgaW50IGludGVsX2ZiX3RpbGluZ19tb2RlKHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKPiArCj4gIC8qIGludGVsX2RwLmMgKi8KPiAgdm9p ZCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBvdXRwdXRfcmVnLCBl bnVtIHBvcnQgcG9ydCk7Cj4gIGJvb2wgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gaW5kZXggNmVjZTY2My4uZGU5ZTQzMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ IEBAIC0xMTgyLDEyICsxMTgyLDkgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0 IGRybV9jcnRjICp1bnVzZWRfY3J0YykKPiAgCURSTV9ERUJVR19LTVMoIkZJRk8gd2F0ZXJtYXJr cyAtIEE6ICVkLCBCOiAlZFxuIiwgcGxhbmVhX3dtLCBwbGFuZWJfd20pOwo+ICAKPiAgCWlmIChJ U19JOTE1R00oZGV2KSAmJiBlbmFibGVkKSB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iajsKPiAtCj4gLQkJb2JqID0gaW50ZWxfZmJfb2JqKGVuYWJsZWQtPnByaW1hcnktPmZi KTsKPiAtCj4gIAkJLyogc2VsZi1yZWZyZXNoIHNlZW1zIGJ1c3RlZCB3aXRoIHVudGlsZWQgKi8K PiAtCQlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19OT05FKQo+ICsJCWlmIChp bnRlbF9mYl90aWxpbmdfbW9kZShlbmFibGVkLT5wcmltYXJ5LT5mYikgPT0KPiArCQkgICAgSTkx NV9USUxJTkdfTk9ORSkKPiAgCQkJZW5hYmxlZCA9IE5VTEw7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggMGE1MmM0NC4uOGY4OTc2NiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTI0NSw3ICsyNDUsNyBAQCBza2xfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCUJVRygpOwo+ICAJfQo+ICAKPiAtCXN3aXRjaCAob2JqLT50aWxpbmdfbW9kZSkg ewo+ICsJc3dpdGNoIChpbnRlbF9mYl90aWxpbmdfbW9kZShmYikpIHsKPiAgCWNhc2UgSTkxNV9U SUxJTkdfTk9ORToKPiAgCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSA+PiA2Owo+ICAJCWJyZWFr Owo+IEBAIC00MTMsNiArNDEzLDcgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXUzMiBzcHJjdGw7Cj4gIAl1bnNp Z25lZCBsb25nIHNwcnN1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0Owo+ICAJaW50IHBpeGVsX3Np emUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCXVuc2ln bmVkIGludCB0aWxpbmdfbW9kZSA9IGludGVsX2ZiX3RpbGluZ19tb2RlKGZiKTsKPiAgCj4gIAlz cHJjdGwgPSBJOTE1X1JFQUQoU1BDTlRSKHBpcGUsIHBsYW5lKSk7Cj4gIAo+IEBAIC00NzEsNyAr NDcyLDcgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAgCSAqLwo+ICAJc3ByY3RsIHw9IFNQX0dBTU1BX0VOQUJMRTsK PiAgCj4gLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICsJaWYg KHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gIAkJc3ByY3RsIHw9IFNQX1RJTEVE Owo+ICAKPiAgCXNwcmN0bCB8PSBTUF9FTkFCTEU7Cj4gQEAgLTQ4OCw3ICs0ODksNyBAQCB2bHZf dXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAKPiAgCWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogcGl4 ZWxfc2l6ZTsKPiAgCXNwcnN1cmZfb2Zmc2V0ID0gaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zm c2V0KCZ4LCAmeSwKPiAtCQkJCQkJCW9iai0+dGlsaW5nX21vZGUsCj4gKwkJCQkJCQl0aWxpbmdf bW9kZSwKPiAgCQkJCQkJCXBpeGVsX3NpemUsCj4gIAkJCQkJCQlmYi0+cGl0Y2hlc1swXSk7Cj4g IAlsaW5lYXJfb2Zmc2V0IC09IHNwcnN1cmZfb2Zmc2V0Owo+IEBAIC01MDksNyArNTEwLDcgQEAg dmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCUk5MTVfV1JJVEUoU1BTVFJJREUocGlwZSwgcGxhbmUpLCBmYi0+cGl0Y2hl c1swXSk7Cj4gIAlJOTE1X1dSSVRFKFNQUE9TKHBpcGUsIHBsYW5lKSwgKGNydGNfeSA8PCAxNikg fCBjcnRjX3gpOwo+ICAKPiAtCWlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05P TkUpCj4gKwlpZiAodGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKPiAgCQlJOTE1X1dS SVRFKFNQVElMRU9GRihwaXBlLCBwbGFuZSksICh5IDw8IDE2KSB8IHgpOwo+ICAJZWxzZQo+ICAJ CUk5MTVfV1JJVEUoU1BMSU5PRkYocGlwZSwgcGxhbmUpLCBsaW5lYXJfb2Zmc2V0KTsKPiBAQCAt NjEzLDYgKzYxNCw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXUzMiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKPiAg CXVuc2lnbmVkIGxvbmcgc3Byc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7Cj4gIAlpbnQgcGl4 ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ICsJ dW5zaWduZWQgaW50IHRpbGluZ19tb2RlID0gaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpOwo+ICAK PiAgCXNwcmN0bCA9IEk5MTVfUkVBRChTUFJDVEwocGlwZSkpOwo+ICAKPiBAQCAtNjUyLDcgKzY1 NCw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgCSAqLwo+ICAJc3ByY3RsIHw9IFNQUklURV9HQU1NQV9FTkFCTEU7 Cj4gIAo+IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkKPiArCWlm ICh0aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCXNwcmN0bCB8PSBTUFJJVEVf VElMRUQ7Cj4gIAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkK PiBAQCAtNjgwLDcgKzY4Miw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlsaW5lYXJfb2Zmc2V0ID0geSAq IGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7Cj4gIAlzcHJzdXJmX29mZnNldCA9Cj4g LQkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwgb2JqLT50aWxpbmdfbW9k ZSwKPiArCQlpbnRlbF9nZW40X2NvbXB1dGVfcGFnZV9vZmZzZXQoJngsICZ5LCB0aWxpbmdfbW9k ZSwKPiAgCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwo+ICAJbGluZWFy X29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKPiAgCj4gQEAgLTcwNSw3ICs3MDcsNyBAQCBpdmJf dXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAkgKiByZWdpc3RlciAqLwo+ICAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9B RFdFTEwoZGV2KSkKPiAgCQlJOTE1X1dSSVRFKFNQUk9GRlNFVChwaXBlKSwgKHkgPDwgMTYpIHwg eCk7Cj4gLQllbHNlIGlmIChvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4g KwllbHNlIGlmICh0aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICAJCUk5MTVfV1JJ VEUoU1BSVElMRU9GRihwaXBlKSwgKHkgPDwgMTYpIHwgeCk7Cj4gIAllbHNlCj4gIAkJSTkxNV9X UklURShTUFJMSU5PRkYocGlwZSksIGxpbmVhcl9vZmZzZXQpOwo+IEBAIC04MTgsNiArODIwLDcg QEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ICAJdW5zaWduZWQgbG9uZyBkdnNzdXJmX29mZnNldCwgbGluZWFyX29mZnNl dDsKPiAgCXUzMiBkdnNjbnRyLCBkdnNzY2FsZTsKPiAgCWludCBwaXhlbF9zaXplID0gZHJtX2Zv cm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gKwl1bnNpZ25lZCBpbnQgdGls aW5nX21vZGUgPSBpbnRlbF9mYl90aWxpbmdfbW9kZShmYik7Cj4gIAo+ICAJZHZzY250ciA9IEk5 MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsKPiAgCj4gQEAgLTg1Nyw3ICs4NjAsNyBAQCBpbGtfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gIAkgKi8KPiAgCWR2c2NudHIgfD0gRFZTX0dBTU1BX0VOQUJMRTsKPiAgCj4gLQlpZiAob2Jq LT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ICsJaWYgKHRpbGluZ19tb2RlICE9 IEk5MTVfVElMSU5HX05PTkUpCj4gIAkJZHZzY250ciB8PSBEVlNfVElMRUQ7Cj4gIAo+ICAJaWYg KElTX0dFTjYoZGV2KSkKPiBAQCAtODgwLDcgKzg4Myw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlsaW5l YXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7Cj4gIAlkdnNz dXJmX29mZnNldCA9Cj4gLQkJaW50ZWxfZ2VuNF9jb21wdXRlX3BhZ2Vfb2Zmc2V0KCZ4LCAmeSwg b2JqLT50aWxpbmdfbW9kZSwKPiArCQlpbnRlbF9nZW40X2NvbXB1dGVfcGFnZV9vZmZzZXQoJngs ICZ5LCB0aWxpbmdfbW9kZSwKPiAgCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNb MF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBkdnNzdXJmX29mZnNldDsKPiAgCj4gQEAgLTg5Nyw3 ICs5MDAsNyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlJOTE1X1dSSVRFKERWU1NUUklERShwaXBlKSwgZmItPnBp dGNoZXNbMF0pOwo+ICAJSTkxNV9XUklURShEVlNQT1MocGlwZSksIChjcnRjX3kgPDwgMTYpIHwg Y3J0Y194KTsKPiAgCj4gLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05F KQo+ICsJaWYgKHRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gIAkJSTkxNV9XUklU RShEVlNUSUxFT0ZGKHBpcGUpLCAoeSA8PCAxNikgfCB4KTsKPiAgCWVsc2UKPiAgCQlJOTE1X1dS SVRFKERWU0xJTk9GRihwaXBlKSwgbGluZWFyX29mZnNldCk7Cj4gQEAgLTEwNzYsNyArMTA3OSw2 IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFz ZS5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNl LmZiOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihm Yik7Cj4gIAlpbnQgY3J0Y194LCBjcnRjX3k7Cj4gIAl1bnNpZ25lZCBpbnQgY3J0Y193LCBjcnRj X2g7Cj4gIAl1aW50MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaDsKPiBAQCAtMTEwNyw3 ICsxMTA5LDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAJfQo+ICAKPiAgCS8qIFNwcml0ZSBwbGFuZXMgY2FuIGJlIGxpbmVhciBvciB4LXRp bGVkIHN1cmZhY2VzICovCj4gLQlzd2l0Y2ggKG9iai0+dGlsaW5nX21vZGUpIHsKPiArCXN3aXRj aCAoaW50ZWxfZmJfdGlsaW5nX21vZGUoZmIpKSB7Cj4gIAkJY2FzZSBJOTE1X1RJTElOR19OT05F Ogo+ICAJCWNhc2UgSTkxNV9USUxJTkdfWDoKPiAgCQkJYnJlYWs7Cj4gLS0gCj4gMi4yLjIKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0g CkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAo MCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK