From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 15/18] drm/i915: alloc/free the FBC CFB during enable/disable Date: Wed, 21 Oct 2015 10:20:55 +0300 Message-ID: <20151021072055.GT26517@intel.com> References: <1445349004-16409-1-git-send-email-paulo.r.zanoni@intel.com> <1445349004-16409-16-git-send-email-paulo.r.zanoni@intel.com> <20151021071108.GK13786@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 6A6F56ED26 for ; Wed, 21 Oct 2015 00:20:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20151021071108.GK13786@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMDk6MTE6MDhBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIE9jdCAyMCwgMjAxNSBhdCAxMTo1MDowMUFNIC0wMjAwLCBQYXVsbyBa YW5vbmkgd3JvdGU6Cj4gPiBPbmUgb2YgdGhlIHByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgY29k ZSBpcyB0aGF0IGl0IGZyZWVzIHRoZSBDRkIgYW5kCj4gPiByZWxlYXNlcyBpdHMgZHJtX21tIG5v ZGUgYXMgc29vbiBhcyB3ZSBmbGlwIEZCQydzIGVuYWJsZSBiaXQuIFRoaXMgaXMKPiA+IGJhZCBi ZWNhdXNlIGFmdGVyIHdlIGRpc2JhbGUgRkJDIHRoZSBoYXJkd2FyZSBtYXkgc3RpbGwgdXNlIHRo ZSBDRkIKPiA+IGZvciB0aGUgcmVzdCBvZiB0aGUgZnJhbWUsIHNvIGluIHRoZW9yeSB3ZSBzaG91 bGQgb25seSByZWxlYXNlIHRoZQo+ID4gZHJtX21tIG5vZGUgb25lIGZyYW1lIGFmdGVyIHdlIGRp c2FibGUgRkJDLiBPdGhlcndpc2UsIGEgc3RvbGVuIG1lbW9yeQo+ID4gYWxsb2NhdGlvbiBkb25l IHJpZ2h0IGFmdGVyIGFuIEZCQyBkaXNhYmxlIG1heSByZXN1bHQgaW4gZWl0aGVyCj4gPiBjb3Jy dXB0ZWQgbWVtb3J5IGZvciB0aGUgbmV3IG93bmVyIG9mIHRoYXQgbWVtb3J5IHJlZ2lvbiBvciBj b3JydXB0ZWQKPiA+IHNjcmVlbi91bmRlcnJ1bnMgaW4gY2FzZSB0aGUgbmV3IG93bmVyIGNoYW5n ZXMgaXQgd2hpbGUgdGhlIGhhcmR3YXJlCj4gPiBpcyBzdGlsbCByZWFkaW5nIGl0LiBUaGlzIGNh c2UgaXMgbm90IGV4YWN0bHkgZWFzeSB0byByZXByb2R1Y2Ugc2luY2UKPiA+IHdlIGN1cnJlbnRs eSBkb24ndCBkbyBhIGxvdCBvZiBzdG9sZW4gbWVtb3J5IGFsbG9jYXRpb25zLCBidXQgSSBzZWUK PiA+IHBhdGNoZXMgb24gdGhlIG1haWxpbmcgbGlzdCB0cnlpbmcgdG8gZXhwb3NlIHN0b2xlbiBt ZW1vcnkgdG8gdXNlcgo+ID4gc3BhY2UsIHNvIHJhY2VzIHdpbGwgYmUgcG9zc2libGUuCj4gPiAK PiA+IEkgdGhvdWdodCBhYm91dCB0aHJlZSBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byBzb2x2ZSB0 aGlzLCBhbmQgdGhleSBhbGwKPiA+IGhhdmUgZG93bnNpZGVzLgo+ID4gCj4gPiBUaGUgZmlyc3Qg YXBwcm9hY2ggd291bGQgYmUgdG8gc2ltcGx5IHVzZSBtdWx0aXBsZSBkcm1fbW0gbm9kZXMgYW5k Cj4gPiBmcmVlaW5nIHRoZSB1bnVzZWQgb25lcyBvbmx5IGFmdGVyIGEgZnJhbWUgaGFzIHBhc3Nl ZC4gVGhlIHByb2JsZW0KPiA+IHdpdGggdGhpcyBhcHByb2FjaCBpcyB0aGF0IHNpbmNlIHN0b2xl biBtZW1vcnkgaXMgcmF0aGVyIHNtYWxsLAo+ID4gdGhlcmUncyBhIHJpc2sgd2UganVzdCB3b24n dCBiZSBhYmxlIHRvIGFsbG9jYXRlIGEgbmV3IENGQiBmcm9tIHN0b2xlbgo+ID4gaWYgdGhlIHBy ZXZpb3VzIG9uZSB3YXMgbm90IGZyZWVkIHlldC4gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSB3 ZQo+ID4gcXVpY2tseSBkaXNhYmxlIEZCQyBmcm9tIHBpcGUgQSBhbmQgZGVjaWRlIHRvIGVuYWJs ZSBpdCBvbiBwaXBlIEIsIG9yCj4gPiBqdXN0IGlmIHdlIGNoYW5nZSBwaXBlIEEncyBmYiBzdHJp ZGUgd2hpbGUgRkJDIGlzIGVuYWJsZWQuCj4gPiAKPiA+IFRoZSBzZWNvbmQgYXBwcm9hY2ggd291 bGQgYmUgc2ltaWxhciB0byB0aGUgZmlyc3Qgb25lLCBidXQgbWFpbnRhaW5pbmcKPiA+IGEgc2lu Z2xlIGRybV9tbSBub2RlIGFuZCBrZWVwaW5nIHRyYWNrIG9mIHdoZW4gaXQgY2FuIGJlIHJldXNl ZC4gVGhpcwo+ID4gd291bGQgcmVtb3ZlIHRoZSBkaXNhZHZhbnRhZ2Ugb2Ygbm90IGhhdmluZyBl bm91Z2ggc3BhY2UgZm9yIHR3bwo+ID4gbm9kZXMsIGJ1dCB3b3VsZCBjcmVhdGUgdGhlIG5ldyBw cm9ibGVtIHdoZXJlIHdlIG1heSBub3QgYmUgYWJsZSB0bwo+ID4gZW5hYmxlIEZCQyBhdCB0aGUg cG9pbnQgaW50ZWxfZmJjX3VwZGF0ZSgpIGlzIGNhbGxlZCwgc28gd2Ugd291bGQgaGF2ZQo+ID4g dG8gYWRkIG1vcmUgY29kZSB0byByZXRyeSB1cGRhdGluZyBGQkMgYWZ0ZXIgdGhlIHRpbWUgaGFz IHBhc3NlZC4gQW5kCj4gPiB0aGF0IGNhbiBxdWlja2x5IGdldCB0b28gY29tcGxleCBzaW5jZSB3 ZSBjYW4gZ2V0IGludmFsaWRhdGUsIGZsdXNoLAo+ID4gZmxpcF9wcmVwYXJlLCBkaXNhYmxlIGFu ZCBvdGhlciBjYWxscyBpbiB0aGUgbWlkZGxlIG9mIHRoZSB3YWl0Lgo+ID4gCj4gPiBCb3RoIHNv bHV0aW9ucyBhYm92ZSAtIGFuZCBhbHNvIHRoZSBjdXJyZW50IGNvZGUgLSBoYXZlIHRoZSBwcm9i bGVtCj4gPiB0aGF0IHdlIHVubmVjZXNzYXJpbHkgZnJlZStyZWFsbG9jIEZCQyBkdXJpbmcgaW52 YWxpZGF0ZStmbHVzaAo+ID4gb3BlcmF0aW9ucyBldmVuIGlmIHRoZSBDRkIgc2l6ZSBkb2Vzbid0 IGNoYW5nZS4KPiA+IAo+ID4gVGhlIHRoaXJkIG9wdGlvbiB3b3VsZCBiZSB0byBtb3ZlIHRoZSBh bGxvY2F0aW9uL2RlYWxsb2NhdGlvbiB0bwo+ID4gZW5hYmxlL2Rpc2FibGUuIFRoaXMgbWFrZXMg c3VyZSB0aGF0IHRoZSBwaXBlIGlzIGFsd2F5cyBkaXNhYmxlZCB3aGVuCj4gPiB3ZSBhbGxvY2F0 ZS9kZWFsbG9jYXRlIHRoZSBDRkIsIHNvIHRoZXJlJ3Mgbm8gcmlzayB0aGF0IHRoZSBGQkMKPiA+ IGhhcmR3YXJlIG1heSByZWFkIG9yIHdyaXRlIHRvIHRoZSBtZW1vcnkgcmlnaHQgYWZ0ZXIgaXQg aXMgZnJlZWQgZnJvbQo+ID4gZHJtX21tLiBUaGUgZG93bnNpZGUgaXMgdGhhdCBpdCBpcyBwb3Nz aWJsZSBmb3IgdXNlciBzcGFjZSB0byBjaGFuZ2UKPiA+IHRoZSBidWZmZXIgc3RyaWRlIHdpdGhv dXQgdHJpZ2dlcmluZyBhIGRpc2FibGUvZW5hYmxlIC0gb25seQo+ID4gZGVhY3RpdmF0ZS9hY3Rp dmF0ZSAtLCBzbyB3ZSdsbCBoYXZlIHRvIGhhbmRsZSB0aGlzIGNhc2Ugc29tZWhvdywgZXZlbgo+ ID4gdGhvdWdoIGl0IGlzIHVuY29tbW9uIC0gc2VlIGlndCdzIGttc19mcm9udGJ1ZmZlcl90cmFj a2luZyB0ZXN0LAo+ID4gZmJjLXN0cmlkZWNoYW5nZSBzdWJ0ZXN0LiBJdCBjb3VsZCBiZSBwb3Nz aWJsZSB0byBpbXBsZW1lbnQgYSB3YXkgdG8KPiA+IGZyZWUrYWxsb2MgdGhlIENGQiBkdXJpbmcg c2FpZCBzdHJpZGUgY2hhbmdlLCBidXQgaXQgd291bGQgaW52b2x2ZSBhCj4gPiBsb3Qgb2YgYm9v ay1rZWVwaW5nIC0gZXhhY3RseSBhcyBtZW50aW9uZWQgYWJvdmUgLSBqdXN0IGZvciBhIHJhcmUK PiA+IGNhc2UsIHNvIGZvciBub3cgSSdsbCBrZWVwIGl0IHNpbXBsZSBhbmQganVzdCBkZWFjdGl2 YXRlIEZCQy4gQmVzaWRlcywKPiA+IHdlIG1heSBub3QgZXZlbiBuZWVkIHRvIGRpc2FibGUgRkJD IHNpbmNlIHdlIGRvIENGQiBvdmVyLWFsbG9jYXRpb24uCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6 IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgfCAxMzIgKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyks IDY0IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4gaW5k ZXggYmY4NTViMi4uNDhkOGNmYyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ ID4gQEAgLTU5LDYgKzU5LDQ1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2NydGNfZmVuY2Vf eV9vZmZzZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiAgCXJldHVybiBjcnRjLT5iYXNl LnkgLSBjcnRjLT5hZGp1c3RlZF95Owo+ID4gIH0KPiA+ICAKPiA+ICsvKgo+ID4gKyAqIEZvciBT S0wrLCB0aGUgcGxhbmUgc291cmNlIHNpemUgdXNlZCBieSB0aGUgaGFyZHdhcmUgaXMgYmFzZWQg b24gdGhlIHZhbHVlIHdlCj4gPiArICogd3JpdGUgdG8gdGhlIFBMQU5FX1NJWkUgcmVnaXN0ZXIu IEZvciBCRFctLCB0aGUgaGFyZHdhcmUgbG9va3MgYXQgdGhlIHZhbHVlCj4gPiArICogd2Ugd3Jv dGUgdG8gUElQRVNSQy4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9mYmNfZ2V0X3Bs YW5lX3NvdXJjZV9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gKwkJCQkJICAgIGlu dCAqd2lkdGgsIGludCAqaGVpZ2h0KQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSA9Cj4gPiArCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+YmFz ZS5wcmltYXJ5LT5zdGF0ZSk7Cj4gPiArCWludCB3LCBoOwo+ID4gKwo+ID4gKwlpZiAoaW50ZWxf cm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uKSkgewo+ID4gKwkJ dyA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gPiArCQloID0g ZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ID4gKwl9IGVsc2Ugewo+ ID4gKwkJdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiA+ICsJ CWggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ID4gKwl9Cj4g PiArCj4gPiArCWlmICh3aWR0aCkKPiA+ICsJCSp3aWR0aCA9IHc7Cj4gPiArCWlmIChoZWlnaHQp Cj4gPiArCQkqaGVpZ2h0ID0gaDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBpbnRlbF9m YmNfY2FsY3VsYXRlX2NmYl9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gKwkJCQkJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gPiArCWlu dCBsaW5lczsKPiA+ICsKPiA+ICsJaW50ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vfc2l6ZShjcnRj LCBOVUxMLCAmbGluZXMpOwo+ID4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3 KQo+ID4gKwkJbGluZXMgPSBtaW4obGluZXMsIDIwNDgpOwo+ID4gKwo+ID4gKwlyZXR1cm4gbGlu ZXMgKiBmYi0+cGl0Y2hlc1swXTsKPiAKPiBXaHkgYXJlIHdlIGV2ZW4gbG9va2luZyBhdCBmYi0+ cGl0Y2hlcyBoZXJlPyBJIHRob3VnaHQgdGhhdCBmb3IgZmJjIHdlCj4gb25seSBjb21wcmVzcyB3 aGF0IHdlIGFjdHVhbGx5IHNjYW4gb3V0LCBpLmUuIHRoZSBzb3VyY2UgcmVjdGFuZ2xlIG9mIHRo ZQo+IHBsYW5lIGluIHBpeGVscy4gTWF5YmUgc29tZSByb3VuZGluZyBpbnZvbHZlZCBwZXJoYXBz LgoKSUlSQyB0aGUgZG9jcyBkbyBzYXkgdGhlIGh3IHVzZXMgdGhlIHBsYW5lIHN0cmlkZSByZWdp c3RlciBmaWd1cmUgdGhpcwpvdXQuIEl0J3Mgc29tZXRoaW5nIEkndmUgYmVlbiB3b25kZXJpbmcg Zm9yIGEgZmV3IHllYXJzIG5vdywgYnV0IG5ldmVyCmFjdHVhbGx5IHRlc3RlZCB0byBzZWUgaWYg d2UgY2FuIGdldCBhd2F5IHdpdGggbGVzcy4KCj4gCj4gT3IgZGlkIEkgbWlzcyBzb21ldGhpbmc/ Cj4gLURhbmllbAo+IAo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBpOHh4X2ZiY19kZWFj dGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICB7Cj4gPiAgCXUz MiBmYmNfY3RsOwo+ID4gQEAgLTYwNCwxMSArNjQzLDE3IEBAIGFnYWluOgo+ID4gIAl9Cj4gPiAg fQo+ID4gIAo+ID4gLXN0YXRpYyBpbnQgaW50ZWxfZmJjX2FsbG9jX2NmYihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBzaXplLAo+ID4gLQkJCSAgICAgICBpbnQgZmJfY3Bw KQo+ID4gK3N0YXRpYyBpbnQgaW50ZWxfZmJjX2FsbG9jX2NmYihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKPiA+ICB7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNy dGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPnN0YXRlLT5mYjsKPiA+ICAJc3RydWN0IGRybV9tbV9u b2RlICp1bmluaXRpYWxpemVkX3Zhcihjb21wcmVzc2VkX2xsYik7Cj4gPiAtCWludCByZXQ7Cj4g PiArCWludCBzaXplLCBmYl9jcHAsIHJldDsKPiA+ICsKPiA+ICsJV0FSTl9PTihkZXZfcHJpdi0+ ZmJjLmNvbXByZXNzZWRfZmIuYWxsb2NhdGVkKTsKPiA+ICsKPiA+ICsJc2l6ZSA9IGludGVsX2Zi Y19jYWxjdWxhdGVfY2ZiX3NpemUoY3J0YywgZmIpOwo+ID4gKwlmYl9jcHAgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiA+ICAKPiA+ICAJcmV0ID0gZmluZF9j b21wcmVzc2lvbl90aHJlc2hvbGQoZGV2X3ByaXYsICZkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRf ZmIsCj4gPiAgCQkJCQkgc2l6ZSwgZmJfY3BwKTsKPiA+IEBAIC02ODUsNjQgKzczMCw2IEBAIHZv aWQgaW50ZWxfZmJjX2NsZWFudXBfY2ZiKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwo+ID4gIH0KPiA+ICAK PiA+IC0vKgo+ID4gLSAqIEZvciBTS0wrLCB0aGUgcGxhbmUgc291cmNlIHNpemUgdXNlZCBieSB0 aGUgaGFyZHdhcmUgaXMgYmFzZWQgb24gdGhlIHZhbHVlIHdlCj4gPiAtICogd3JpdGUgdG8gdGhl IFBMQU5FX1NJWkUgcmVnaXN0ZXIuIEZvciBCRFctLCB0aGUgaGFyZHdhcmUgbG9va3MgYXQgdGhl IHZhbHVlCj4gPiAtICogd2Ugd3JvdGUgdG8gUElQRVNSQy4KPiA+IC0gKi8KPiA+IC1zdGF0aWMg dm9pZCBpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ID4gLQkJCQkJICAgIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQo+ID4gLXsKPiA+IC0J c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gPiAtCQkJdG9faW50ZWxf cGxhbmVfc3RhdGUoY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZSk7Cj4gPiAtCWludCB3LCBoOwo+ ID4gLQo+ID4gLQlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5iYXNl LnJvdGF0aW9uKSkgewo+ID4gLQkJdyA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNy YykgPj4gMTY7Cj4gPiAtCQloID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5zcmMpID4+ IDE2Owo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+c3JjKSA+PiAxNjsKPiA+IC0JCWggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5z cmMpID4+IDE2Owo+ID4gLQl9Cj4gPiAtCj4gPiAtCWlmICh3aWR0aCkKPiA+IC0JCSp3aWR0aCA9 IHc7Cj4gPiAtCWlmIChoZWlnaHQpCj4gPiAtCQkqaGVpZ2h0ID0gaDsKPiA+IC19Cj4gPiAtCj4g PiAtc3RhdGljIGludCBpbnRlbF9mYmNfY2FsY3VsYXRlX2NmYl9zaXplKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gY3J0Yy0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ID4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7Cj4gPiAtCWludCBsaW5lczsKPiA+IC0K PiA+IC0JaW50ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vfc2l6ZShjcnRjLCBOVUxMLCAmbGluZXMp Owo+ID4gLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3KQo+ID4gLQkJbGluZXMg PSBtaW4obGluZXMsIDIwNDgpOwo+ID4gLQo+ID4gLQlyZXR1cm4gbGluZXMgKiBmYi0+cGl0Y2hl c1swXTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIGludCBpbnRlbF9mYmNfc2V0dXBfY2ZiKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ID4gLQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7Cj4gPiAtCWludCBz aXplLCBjcHA7Cj4gPiAtCj4gPiAtCXNpemUgPSBpbnRlbF9mYmNfY2FsY3VsYXRlX2NmYl9zaXpl KGNydGMpOwo+ID4gLQljcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0 LCAwKTsKPiA+IC0KPiA+IC0JaWYgKGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYi5hbGxvY2F0 ZWQgJiYKPiA+IC0JICAgIHNpemUgPD0gZGV2X3ByaXYtPmZiYy5jb21wcmVzc2VkX2ZiLnNpemUg KiBkZXZfcHJpdi0+ZmJjLnRocmVzaG9sZCkKPiA+IC0JCXJldHVybiAwOwo+ID4gLQo+ID4gLQkv KiBSZWxlYXNlIGFueSBjdXJyZW50IGJsb2NrICovCj4gPiAtCV9faW50ZWxfZmJjX2NsZWFudXBf Y2ZiKGRldl9wcml2KTsKPiA+IC0KPiA+IC0JcmV0dXJuIGludGVsX2ZiY19hbGxvY19jZmIoZGV2 X3ByaXYsIHNpemUsIGNwcCk7Cj4gPiAtfQo+ID4gLQo+ID4gIHN0YXRpYyBib29sIHN0cmlkZV9p c192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQkJICAgIHVu c2lnbmVkIGludCBzdHJpZGUpCj4gPiAgewo+ID4gQEAgLTkwNCw4ICs4OTEsMTkgQEAgc3RhdGlj IHZvaWQgX19pbnRlbF9mYmNfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gIAkJ Z290byBvdXRfZGlzYWJsZTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAoaW50ZWxfZmJjX3NldHVw X2NmYihjcnRjKSkgewo+ID4gLQkJc2V0X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsICJub3QgZW5v dWdoIHN0b2xlbiBtZW1vcnkiKTsKPiA+ICsJLyogSXQgaXMgcG9zc2libGUgZm9yIHRoZSByZXF1 aXJlZCBDRkIgc2l6ZSBjaGFuZ2Ugd2l0aG91dCBhCj4gPiArCSAqIGNydGMtPmRpc2FibGUgKyBj cnRjLT5lbmFibGUgc2luY2UgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZQo+ID4gKwkgKiBz dHJpZGUgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZnVsbCBtb2Rlc2V0LiBTaW5jZSB3ZSB0cnkgdG8K PiA+ICsJICogb3Zlci1hbGxvY2F0ZSB0aGUgQ0ZCLCB0aGVyZSdzIGEgY2hhbmNlIHdlIG1heSBr ZWVwIEZCQyBlbmFibGVkIGV2ZW4KPiA+ICsJICogaWYgdGhpcyBoYXBwZW5zLCBidXQgaWYgd2Ug ZXhjZWVkIHRoZSBjdXJyZW50IENGQiBzaXplIHdlJ2xsIGhhdmUgdG8KPiA+ICsJICogZGlzYWJs ZSBGQkMuIE5vdGljZSB0aGF0IGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGRpc2FibGUgRkJDLCB3 YWl0Cj4gPiArCSAqIGZvciBhIGZyYW1lLCBmcmVlIHRoZSBzdG9sZW4gbm9kZSwgdGhlbiB0cnkg dG8gcmVlbmFibGUgRkJDIGluIGNhc2UKPiA+ICsJICogd2UgZGlkbid0IGdldCBhbnkgaW52YWxp ZGF0ZS9kZWFjdGl2YXRlIGNhbGxzLCBidXQgdGhpcyB3b3VsZCByZXF1aXJlCj4gPiArCSAqIGEg bG90IG9mIHRyYWNraW5nIGp1c3QgZm9yIGEgY2FzZSB3ZSBleHBlY3QgdG8gYmUgdW5jb21tb24s IHNvIHdlCj4gPiArCSAqIGp1c3QgZG9uJ3QgaGF2ZSB0aGlzIGNvZGUgZm9yIG5vdy4gKi8KPiA+ ICsJaWYgKGludGVsX2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUoY3J0YywgZmIpID4KPiA+ICsJICAg IGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYi5zaXplICogZGV2X3ByaXYtPmZiYy50aHJlc2hv bGQpIHsKPiA+ICsJCXNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCAiQ0ZCIHJlcXVpcmVtZW50 cyBjaGFuZ2VkIik7Cj4gPiAgCQlnb3RvIG91dF9kaXNhYmxlOwo+ID4gIAl9Cj4gPiAgCj4gPiBA QCAtOTU4LDcgKzk1Niw2IEBAIG91dF9kaXNhYmxlOgo+ID4gIAkJRFJNX0RFQlVHX0tNUygidW5z dXBwb3J0ZWQgY29uZmlnLCBkZWFjdGl2YXRpbmcgRkJDXG4iKTsKPiA+ICAJCV9faW50ZWxfZmJj X2RlYWN0aXZhdGUoZGV2X3ByaXYpOwo+ID4gIAl9Cj4gPiAtCV9faW50ZWxfZmJjX2NsZWFudXBf Y2ZiKGRldl9wcml2KTsKPiA+ICB9Cj4gPiAgCj4gPiAgLyoKPiA+IEBAIC0xMTAyLDYgKzEwOTks MTEgQEAgdm9pZCBpbnRlbF9mYmNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4g IAkJZ290byBvdXQ7Cj4gPiAgCX0KPiA+ICAKPiA+ICsJaWYgKGludGVsX2ZiY19hbGxvY19jZmIo Y3J0YykpIHsKPiA+ICsJCXNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCAibm90IGVub3VnaCBz dG9sZW4gbWVtb3J5Iik7Cj4gPiArCQlnb3RvIG91dDsKPiA+ICsJfQo+ID4gKwo+ID4gIAlEUk1f REVCVUdfS01TKCJFbmFibGluZyBGQkMgb24gcGlwZSAlY1xuIiwgcGlwZV9uYW1lKGNydGMtPnBp cGUpKTsKPiA+ICAJZGV2X3ByaXYtPmZiYy5ub19mYmNfcmVhc29uID0gIkZCQyBlbmFibGVkIGJ1 dCBub3QgYWN0aXZlIHlldFxuIjsKPiA+ICAKPiA+IEBAIC0xMTI5LDYgKzExMzEsOCBAQCBzdGF0 aWMgdm9pZCBfX2ludGVsX2ZiY19kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+ICAKPiA+ICAJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIEZCQyBvbiBwaXBlICVj XG4iLCBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOwo+ID4gIAo+ID4gKwlfX2ludGVsX2ZiY19jbGVh bnVwX2NmYihkZXZfcHJpdik7Cj4gPiArCj4gPiAgCWRldl9wcml2LT5mYmMuZW5hYmxlZCA9IGZh bHNlOwo+ID4gIAlkZXZfcHJpdi0+ZmJjLmNydGMgPSBOVUxMOwo+ID4gIH0KPiA+IC0tIAo+ID4g Mi42LjEKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrD pGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK