From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 15/18] drm/i915: alloc/free the FBC CFB during enable/disable Date: Wed, 21 Oct 2015 09:24:29 +0200 Message-ID: <20151021072429.GN13786@phenom.ffwll.local> 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> <20151021072055.GT26517@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by gabe.freedesktop.org (Postfix) with ESMTPS id B7B006E05E for ; Wed, 21 Oct 2015 00:24:33 -0700 (PDT) Received: by wicll6 with SMTP id ll6so77334304wic.0 for ; Wed, 21 Oct 2015 00:24:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20151021072055.GT26517@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMTA6MjA6NTVBTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgT2N0IDIxLCAyMDE1IGF0IDA5OjExOjA4QU0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBUdWUsIE9jdCAyMCwgMjAxNSBhdCAxMTo1MDowMUFNIC0w MjAwLCBQYXVsbyBaYW5vbmkgd3JvdGU6Cj4gPiA+IE9uZSBvZiB0aGUgcHJvYmxlbXMgd2l0aCB0 aGUgY3VycmVudCBjb2RlIGlzIHRoYXQgaXQgZnJlZXMgdGhlIENGQiBhbmQKPiA+ID4gcmVsZWFz ZXMgaXRzIGRybV9tbSBub2RlIGFzIHNvb24gYXMgd2UgZmxpcCBGQkMncyBlbmFibGUgYml0LiBU aGlzIGlzCj4gPiA+IGJhZCBiZWNhdXNlIGFmdGVyIHdlIGRpc2JhbGUgRkJDIHRoZSBoYXJkd2Fy ZSBtYXkgc3RpbGwgdXNlIHRoZSBDRkIKPiA+ID4gZm9yIHRoZSByZXN0IG9mIHRoZSBmcmFtZSwg c28gaW4gdGhlb3J5IHdlIHNob3VsZCBvbmx5IHJlbGVhc2UgdGhlCj4gPiA+IGRybV9tbSBub2Rl IG9uZSBmcmFtZSBhZnRlciB3ZSBkaXNhYmxlIEZCQy4gT3RoZXJ3aXNlLCBhIHN0b2xlbiBtZW1v cnkKPiA+ID4gYWxsb2NhdGlvbiBkb25lIHJpZ2h0IGFmdGVyIGFuIEZCQyBkaXNhYmxlIG1heSBy ZXN1bHQgaW4gZWl0aGVyCj4gPiA+IGNvcnJ1cHRlZCBtZW1vcnkgZm9yIHRoZSBuZXcgb3duZXIg b2YgdGhhdCBtZW1vcnkgcmVnaW9uIG9yIGNvcnJ1cHRlZAo+ID4gPiBzY3JlZW4vdW5kZXJydW5z IGluIGNhc2UgdGhlIG5ldyBvd25lciBjaGFuZ2VzIGl0IHdoaWxlIHRoZSBoYXJkd2FyZQo+ID4g PiBpcyBzdGlsbCByZWFkaW5nIGl0LiBUaGlzIGNhc2UgaXMgbm90IGV4YWN0bHkgZWFzeSB0byBy ZXByb2R1Y2Ugc2luY2UKPiA+ID4gd2UgY3VycmVudGx5IGRvbid0IGRvIGEgbG90IG9mIHN0b2xl biBtZW1vcnkgYWxsb2NhdGlvbnMsIGJ1dCBJIHNlZQo+ID4gPiBwYXRjaGVzIG9uIHRoZSBtYWls aW5nIGxpc3QgdHJ5aW5nIHRvIGV4cG9zZSBzdG9sZW4gbWVtb3J5IHRvIHVzZXIKPiA+ID4gc3Bh Y2UsIHNvIHJhY2VzIHdpbGwgYmUgcG9zc2libGUuCj4gPiA+IAo+ID4gPiBJIHRob3VnaHQgYWJv dXQgdGhyZWUgZGlmZmVyZW50IGFwcHJvYWNoZXMgdG8gc29sdmUgdGhpcywgYW5kIHRoZXkgYWxs Cj4gPiA+IGhhdmUgZG93bnNpZGVzLgo+ID4gPiAKPiA+ID4gVGhlIGZpcnN0IGFwcHJvYWNoIHdv dWxkIGJlIHRvIHNpbXBseSB1c2UgbXVsdGlwbGUgZHJtX21tIG5vZGVzIGFuZAo+ID4gPiBmcmVl aW5nIHRoZSB1bnVzZWQgb25lcyBvbmx5IGFmdGVyIGEgZnJhbWUgaGFzIHBhc3NlZC4gVGhlIHBy b2JsZW0KPiA+ID4gd2l0aCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgc2luY2Ugc3RvbGVuIG1lbW9y eSBpcyByYXRoZXIgc21hbGwsCj4gPiA+IHRoZXJlJ3MgYSByaXNrIHdlIGp1c3Qgd29uJ3QgYmUg YWJsZSB0byBhbGxvY2F0ZSBhIG5ldyBDRkIgZnJvbSBzdG9sZW4KPiA+ID4gaWYgdGhlIHByZXZp b3VzIG9uZSB3YXMgbm90IGZyZWVkIHlldC4gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSB3ZQo+ ID4gPiBxdWlja2x5IGRpc2FibGUgRkJDIGZyb20gcGlwZSBBIGFuZCBkZWNpZGUgdG8gZW5hYmxl IGl0IG9uIHBpcGUgQiwgb3IKPiA+ID4ganVzdCBpZiB3ZSBjaGFuZ2UgcGlwZSBBJ3MgZmIgc3Ry aWRlIHdoaWxlIEZCQyBpcyBlbmFibGVkLgo+ID4gPiAKPiA+ID4gVGhlIHNlY29uZCBhcHByb2Fj aCB3b3VsZCBiZSBzaW1pbGFyIHRvIHRoZSBmaXJzdCBvbmUsIGJ1dCBtYWludGFpbmluZwo+ID4g PiBhIHNpbmdsZSBkcm1fbW0gbm9kZSBhbmQga2VlcGluZyB0cmFjayBvZiB3aGVuIGl0IGNhbiBi ZSByZXVzZWQuIFRoaXMKPiA+ID4gd291bGQgcmVtb3ZlIHRoZSBkaXNhZHZhbnRhZ2Ugb2Ygbm90 IGhhdmluZyBlbm91Z2ggc3BhY2UgZm9yIHR3bwo+ID4gPiBub2RlcywgYnV0IHdvdWxkIGNyZWF0 ZSB0aGUgbmV3IHByb2JsZW0gd2hlcmUgd2UgbWF5IG5vdCBiZSBhYmxlIHRvCj4gPiA+IGVuYWJs ZSBGQkMgYXQgdGhlIHBvaW50IGludGVsX2ZiY191cGRhdGUoKSBpcyBjYWxsZWQsIHNvIHdlIHdv dWxkIGhhdmUKPiA+ID4gdG8gYWRkIG1vcmUgY29kZSB0byByZXRyeSB1cGRhdGluZyBGQkMgYWZ0 ZXIgdGhlIHRpbWUgaGFzIHBhc3NlZC4gQW5kCj4gPiA+IHRoYXQgY2FuIHF1aWNrbHkgZ2V0IHRv byBjb21wbGV4IHNpbmNlIHdlIGNhbiBnZXQgaW52YWxpZGF0ZSwgZmx1c2gsCj4gPiA+IGZsaXBf cHJlcGFyZSwgZGlzYWJsZSBhbmQgb3RoZXIgY2FsbHMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgd2Fp dC4KPiA+ID4gCj4gPiA+IEJvdGggc29sdXRpb25zIGFib3ZlIC0gYW5kIGFsc28gdGhlIGN1cnJl bnQgY29kZSAtIGhhdmUgdGhlIHByb2JsZW0KPiA+ID4gdGhhdCB3ZSB1bm5lY2Vzc2FyaWx5IGZy ZWUrcmVhbGxvYyBGQkMgZHVyaW5nIGludmFsaWRhdGUrZmx1c2gKPiA+ID4gb3BlcmF0aW9ucyBl dmVuIGlmIHRoZSBDRkIgc2l6ZSBkb2Vzbid0IGNoYW5nZS4KPiA+ID4gCj4gPiA+IFRoZSB0aGly ZCBvcHRpb24gd291bGQgYmUgdG8gbW92ZSB0aGUgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gdG8K PiA+ID4gZW5hYmxlL2Rpc2FibGUuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBwaXBlIGlzIGFs d2F5cyBkaXNhYmxlZCB3aGVuCj4gPiA+IHdlIGFsbG9jYXRlL2RlYWxsb2NhdGUgdGhlIENGQiwg c28gdGhlcmUncyBubyByaXNrIHRoYXQgdGhlIEZCQwo+ID4gPiBoYXJkd2FyZSBtYXkgcmVhZCBv ciB3cml0ZSB0byB0aGUgbWVtb3J5IHJpZ2h0IGFmdGVyIGl0IGlzIGZyZWVkIGZyb20KPiA+ID4g ZHJtX21tLiBUaGUgZG93bnNpZGUgaXMgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgdXNlciBzcGFj ZSB0byBjaGFuZ2UKPiA+ID4gdGhlIGJ1ZmZlciBzdHJpZGUgd2l0aG91dCB0cmlnZ2VyaW5nIGEg ZGlzYWJsZS9lbmFibGUgLSBvbmx5Cj4gPiA+IGRlYWN0aXZhdGUvYWN0aXZhdGUgLSwgc28gd2Un bGwgaGF2ZSB0byBoYW5kbGUgdGhpcyBjYXNlIHNvbWVob3csIGV2ZW4KPiA+ID4gdGhvdWdoIGl0 IGlzIHVuY29tbW9uIC0gc2VlIGlndCdzIGttc19mcm9udGJ1ZmZlcl90cmFja2luZyB0ZXN0LAo+ ID4gPiBmYmMtc3RyaWRlY2hhbmdlIHN1YnRlc3QuIEl0IGNvdWxkIGJlIHBvc3NpYmxlIHRvIGlt cGxlbWVudCBhIHdheSB0bwo+ID4gPiBmcmVlK2FsbG9jIHRoZSBDRkIgZHVyaW5nIHNhaWQgc3Ry aWRlIGNoYW5nZSwgYnV0IGl0IHdvdWxkIGludm9sdmUgYQo+ID4gPiBsb3Qgb2YgYm9vay1rZWVw aW5nIC0gZXhhY3RseSBhcyBtZW50aW9uZWQgYWJvdmUgLSBqdXN0IGZvciBhIHJhcmUKPiA+ID4g Y2FzZSwgc28gZm9yIG5vdyBJJ2xsIGtlZXAgaXQgc2ltcGxlIGFuZCBqdXN0IGRlYWN0aXZhdGUg RkJDLiBCZXNpZGVzLAo+ID4gPiB3ZSBtYXkgbm90IGV2ZW4gbmVlZCB0byBkaXNhYmxlIEZCQyBz aW5jZSB3ZSBkbyBDRkIgb3Zlci1hbGxvY2F0aW9uLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1i eTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgfCAxMzIgKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgNjggaW5zZXJ0 aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYwo+ID4gPiBpbmRleCBiZjg1NWIyLi40OGQ4Y2ZjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9mYmMuYwo+ID4gPiBAQCAtNTksNiArNTksNDUgQEAgc3RhdGljIHVuc2lnbmVk IGludCBnZXRfY3J0Y19mZW5jZV95X29mZnNldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ ID4gIAlyZXR1cm4gY3J0Yy0+YmFzZS55IC0gY3J0Yy0+YWRqdXN0ZWRfeTsKPiA+ID4gIH0KPiA+ ID4gIAo+ID4gPiArLyoKPiA+ID4gKyAqIEZvciBTS0wrLCB0aGUgcGxhbmUgc291cmNlIHNpemUg dXNlZCBieSB0aGUgaGFyZHdhcmUgaXMgYmFzZWQgb24gdGhlIHZhbHVlIHdlCj4gPiA+ICsgKiB3 cml0ZSB0byB0aGUgUExBTkVfU0laRSByZWdpc3Rlci4gRm9yIEJEVy0sIHRoZSBoYXJkd2FyZSBs b29rcyBhdCB0aGUgdmFsdWUKPiA+ID4gKyAqIHdlIHdyb3RlIHRvIFBJUEVTUkMuCj4gPiA+ICsg Ki8KPiA+ID4gK3N0YXRpYyB2b2lkIGludGVsX2ZiY19nZXRfcGxhbmVfc291cmNlX3NpemUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ICsJCQkJCSAgICBpbnQgKndpZHRoLCBpbnQgKmhl aWdodCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlID0KPiA+ID4gKwkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPmJhc2UucHJpbWFyeS0+ c3RhdGUpOwo+ID4gPiArCWludCB3LCBoOwo+ID4gPiArCj4gPiA+ICsJaWYgKGludGVsX3JvdGF0 aW9uXzkwX29yXzI3MChwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbikpIHsKPiA+ID4gKwkJdyA9 IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gPiA+ICsJCWggPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gPiA+ICsJfSBlbHNlIHsK PiA+ID4gKwkJdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiA+ ID4gKwkJaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gPiA+ ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKHdpZHRoKQo+ID4gPiArCQkqd2lkdGggPSB3Owo+ID4g PiArCWlmIChoZWlnaHQpCj4gPiA+ICsJCSpoZWlnaHQgPSBoOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgaW50IGludGVsX2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gPiA+ICsJCQkJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ID4g PiArewo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJh c2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ID4gKwlpbnQgbGluZXM7Cj4gPiA+ICsKPiA+ID4gKwlp bnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplKGNydGMsIE5VTEwsICZsaW5lcyk7Cj4gPiA+ ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNykKPiA+ID4gKwkJbGluZXMgPSBt aW4obGluZXMsIDIwNDgpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIGxpbmVzICogZmItPnBpdGNo ZXNbMF07Cj4gPiAKPiA+IFdoeSBhcmUgd2UgZXZlbiBsb29raW5nIGF0IGZiLT5waXRjaGVzIGhl cmU/IEkgdGhvdWdodCB0aGF0IGZvciBmYmMgd2UKPiA+IG9ubHkgY29tcHJlc3Mgd2hhdCB3ZSBh Y3R1YWxseSBzY2FuIG91dCwgaS5lLiB0aGUgc291cmNlIHJlY3RhbmdsZSBvZiB0aGUKPiA+IHBs YW5lIGluIHBpeGVscy4gTWF5YmUgc29tZSByb3VuZGluZyBpbnZvbHZlZCBwZXJoYXBzLgo+IAo+ IElJUkMgdGhlIGRvY3MgZG8gc2F5IHRoZSBodyB1c2VzIHRoZSBwbGFuZSBzdHJpZGUgcmVnaXN0 ZXIgZmlndXJlIHRoaXMKPiBvdXQuIEl0J3Mgc29tZXRoaW5nIEkndmUgYmVlbiB3b25kZXJpbmcg Zm9yIGEgZmV3IHllYXJzIG5vdywgYnV0IG5ldmVyCj4gYWN0dWFsbHkgdGVzdGVkIHRvIHNlZSBp ZiB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBsZXNzLgoKSW4gdGhhdCBjYXNlIGEgY29tbWVudCB3b3Vs ZCBiZSBncmVhdCwgbWF5YmUgZXZlbiB3aXRoIHRoZSBCc3BlYyBjaXRhdGlvbi4KLURhbmllbAoK PiAKPiA+IAo+ID4gT3IgZGlkIEkgbWlzcyBzb21ldGhpbmc/Cj4gPiAtRGFuaWVsCj4gPiAKPiA+ ID4gK30KPiA+ID4gKwo+ID4gPiAgc3RhdGljIHZvaWQgaTh4eF9mYmNfZGVhY3RpdmF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICB7Cj4gPiA+ICAJdTMyIGZiY19j dGw7Cj4gPiA+IEBAIC02MDQsMTEgKzY0MywxNyBAQCBhZ2FpbjoKPiA+ID4gIAl9Cj4gPiA+ICB9 Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyBpbnQgaW50ZWxfZmJjX2FsbG9jX2NmYihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBzaXplLAo+ID4gPiAtCQkJICAgICAgIGludCBm Yl9jcHApCj4gPiA+ICtzdGF0aWMgaW50IGludGVsX2ZiY19hbGxvY19jZmIoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gPiA+ICB7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ID4gPiArCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7Cj4gPiA+ICAJ c3RydWN0IGRybV9tbV9ub2RlICp1bmluaXRpYWxpemVkX3Zhcihjb21wcmVzc2VkX2xsYik7Cj4g PiA+IC0JaW50IHJldDsKPiA+ID4gKwlpbnQgc2l6ZSwgZmJfY3BwLCByZXQ7Cj4gPiA+ICsKPiA+ ID4gKwlXQVJOX09OKGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9mYi5hbGxvY2F0ZWQpOwo+ID4g PiArCj4gPiA+ICsJc2l6ZSA9IGludGVsX2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUoY3J0YywgZmIp Owo+ID4gPiArCWZiX2NwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQs IDApOwo+ID4gPiAgCj4gPiA+ICAJcmV0ID0gZmluZF9jb21wcmVzc2lvbl90aHJlc2hvbGQoZGV2 X3ByaXYsICZkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIsCj4gPiA+ICAJCQkJCSBzaXplLCBm Yl9jcHApOwo+ID4gPiBAQCAtNjg1LDY0ICs3MzAsNiBAQCB2b2lkIGludGVsX2ZiY19jbGVhbnVw X2NmYihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICAJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC0vKgo+ID4g PiAtICogRm9yIFNLTCssIHRoZSBwbGFuZSBzb3VyY2Ugc2l6ZSB1c2VkIGJ5IHRoZSBoYXJkd2Fy ZSBpcyBiYXNlZCBvbiB0aGUgdmFsdWUgd2UKPiA+ID4gLSAqIHdyaXRlIHRvIHRoZSBQTEFORV9T SVpFIHJlZ2lzdGVyLiBGb3IgQkRXLSwgdGhlIGhhcmR3YXJlIGxvb2tzIGF0IHRoZSB2YWx1ZQo+ ID4gPiAtICogd2Ugd3JvdGUgdG8gUElQRVNSQy4KPiA+ID4gLSAqLwo+ID4gPiAtc3RhdGljIHZv aWQgaW50ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vfc2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiA+ID4gLQkJCQkJICAgIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQo+ID4gPiAtewo+ID4g PiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQo+ID4gPiAtCQkJdG9f aW50ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZSk7Cj4gPiA+IC0JaW50 IHcsIGg7Cj4gPiA+IC0KPiA+ID4gLQlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uKSkgewo+ID4gPiAtCQl3ID0gZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiA+ID4gLQkJaCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiA+ID4gLQl9IGVsc2Ugewo+ID4gPiAtCQl3ID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ID4gPiAtCQloID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiA+ID4gLQl9Cj4gPiA+IC0KPiA+ID4g LQlpZiAod2lkdGgpCj4gPiA+IC0JCSp3aWR0aCA9IHc7Cj4gPiA+IC0JaWYgKGhlaWdodCkKPiA+ ID4gLQkJKmhlaWdodCA9IGg7Cj4gPiA+IC19Cj4gPiA+IC0KPiA+ID4gLXN0YXRpYyBpbnQgaW50 ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ID4g LXsKPiA+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNl LmRldi0+ZGV2X3ByaXZhdGU7Cj4gPiA+IC0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBj cnRjLT5iYXNlLnByaW1hcnktPmZiOwo+ID4gPiAtCWludCBsaW5lczsKPiA+ID4gLQo+ID4gPiAt CWludGVsX2ZiY19nZXRfcGxhbmVfc291cmNlX3NpemUoY3J0YywgTlVMTCwgJmxpbmVzKTsKPiA+ ID4gLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3KQo+ID4gPiAtCQlsaW5lcyA9 IG1pbihsaW5lcywgMjA0OCk7Cj4gPiA+IC0KPiA+ID4gLQlyZXR1cm4gbGluZXMgKiBmYi0+cGl0 Y2hlc1swXTsKPiA+ID4gLX0KPiA+ID4gLQo+ID4gPiAtc3RhdGljIGludCBpbnRlbF9mYmNfc2V0 dXBfY2ZiKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gPiAtewo+ID4gPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsK PiA+ID4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ ZmI7Cj4gPiA+IC0JaW50IHNpemUsIGNwcDsKPiA+ID4gLQo+ID4gPiAtCXNpemUgPSBpbnRlbF9m YmNfY2FsY3VsYXRlX2NmYl9zaXplKGNydGMpOwo+ID4gPiAtCWNwcCA9IGRybV9mb3JtYXRfcGxh bmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ID4gPiAtCj4gPiA+IC0JaWYgKGRldl9wcml2 LT5mYmMuY29tcHJlc3NlZF9mYi5hbGxvY2F0ZWQgJiYKPiA+ID4gLQkgICAgc2l6ZSA8PSBkZXZf cHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuc2l6ZSAqIGRldl9wcml2LT5mYmMudGhyZXNob2xkKQo+ ID4gPiAtCQlyZXR1cm4gMDsKPiA+ID4gLQo+ID4gPiAtCS8qIFJlbGVhc2UgYW55IGN1cnJlbnQg YmxvY2sgKi8KPiA+ID4gLQlfX2ludGVsX2ZiY19jbGVhbnVwX2NmYihkZXZfcHJpdik7Cj4gPiA+ IC0KPiA+ID4gLQlyZXR1cm4gaW50ZWxfZmJjX2FsbG9jX2NmYihkZXZfcHJpdiwgc2l6ZSwgY3Bw KTsKPiA+ID4gLX0KPiA+ID4gLQo+ID4gPiAgc3RhdGljIGJvb2wgc3RyaWRlX2lzX3ZhbGlkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gIAkJCSAgICB1bnNpZ25lZCBp bnQgc3RyaWRlKQo+ID4gPiAgewo+ID4gPiBAQCAtOTA0LDggKzg5MSwxOSBAQCBzdGF0aWMgdm9p ZCBfX2ludGVsX2ZiY191cGRhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiA+ICAJCWdv dG8gb3V0X2Rpc2FibGU7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IC0JaWYgKGludGVsX2ZiY19z ZXR1cF9jZmIoY3J0YykpIHsKPiA+ID4gLQkJc2V0X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsICJu b3QgZW5vdWdoIHN0b2xlbiBtZW1vcnkiKTsKPiA+ID4gKwkvKiBJdCBpcyBwb3NzaWJsZSBmb3Ig dGhlIHJlcXVpcmVkIENGQiBzaXplIGNoYW5nZSB3aXRob3V0IGEKPiA+ID4gKwkgKiBjcnRjLT5k aXNhYmxlICsgY3J0Yy0+ZW5hYmxlIHNpbmNlIGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUK PiA+ID4gKwkgKiBzdHJpZGUgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZnVsbCBtb2Rlc2V0LiBTaW5j ZSB3ZSB0cnkgdG8KPiA+ID4gKwkgKiBvdmVyLWFsbG9jYXRlIHRoZSBDRkIsIHRoZXJlJ3MgYSBj aGFuY2Ugd2UgbWF5IGtlZXAgRkJDIGVuYWJsZWQgZXZlbgo+ID4gPiArCSAqIGlmIHRoaXMgaGFw cGVucywgYnV0IGlmIHdlIGV4Y2VlZCB0aGUgY3VycmVudCBDRkIgc2l6ZSB3ZSdsbCBoYXZlIHRv Cj4gPiA+ICsJICogZGlzYWJsZSBGQkMuIE5vdGljZSB0aGF0IGl0IHdvdWxkIGJlIHBvc3NpYmxl IHRvIGRpc2FibGUgRkJDLCB3YWl0Cj4gPiA+ICsJICogZm9yIGEgZnJhbWUsIGZyZWUgdGhlIHN0 b2xlbiBub2RlLCB0aGVuIHRyeSB0byByZWVuYWJsZSBGQkMgaW4gY2FzZQo+ID4gPiArCSAqIHdl IGRpZG4ndCBnZXQgYW55IGludmFsaWRhdGUvZGVhY3RpdmF0ZSBjYWxscywgYnV0IHRoaXMgd291 bGQgcmVxdWlyZQo+ID4gPiArCSAqIGEgbG90IG9mIHRyYWNraW5nIGp1c3QgZm9yIGEgY2FzZSB3 ZSBleHBlY3QgdG8gYmUgdW5jb21tb24sIHNvIHdlCj4gPiA+ICsJICoganVzdCBkb24ndCBoYXZl IHRoaXMgY29kZSBmb3Igbm93LiAqLwo+ID4gPiArCWlmIChpbnRlbF9mYmNfY2FsY3VsYXRlX2Nm Yl9zaXplKGNydGMsIGZiKSA+Cj4gPiA+ICsJICAgIGRldl9wcml2LT5mYmMuY29tcHJlc3NlZF9m Yi5zaXplICogZGV2X3ByaXYtPmZiYy50aHJlc2hvbGQpIHsKPiA+ID4gKwkJc2V0X25vX2ZiY19y ZWFzb24oZGV2X3ByaXYsICJDRkIgcmVxdWlyZW1lbnRzIGNoYW5nZWQiKTsKPiA+ID4gIAkJZ290 byBvdXRfZGlzYWJsZTsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gQEAgLTk1OCw3ICs5NTYsNiBA QCBvdXRfZGlzYWJsZToKPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygidW5zdXBwb3J0ZWQgY29uZmln LCBkZWFjdGl2YXRpbmcgRkJDXG4iKTsKPiA+ID4gIAkJX19pbnRlbF9mYmNfZGVhY3RpdmF0ZShk ZXZfcHJpdik7Cj4gPiA+ICAJfQo+ID4gPiAtCV9faW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9w cml2KTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgLyoKPiA+ID4gQEAgLTExMDIsNiArMTA5OSwx MSBAQCB2b2lkIGludGVsX2ZiY19lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiA+ ICAJCWdvdG8gb3V0Owo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiArCWlmIChpbnRlbF9mYmNfYWxs b2NfY2ZiKGNydGMpKSB7Cj4gPiA+ICsJCXNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCAibm90 IGVub3VnaCBzdG9sZW4gbWVtb3J5Iik7Cj4gPiA+ICsJCWdvdG8gb3V0Owo+ID4gPiArCX0KPiA+ ID4gKwo+ID4gPiAgCURSTV9ERUJVR19LTVMoIkVuYWJsaW5nIEZCQyBvbiBwaXBlICVjXG4iLCBw aXBlX25hbWUoY3J0Yy0+cGlwZSkpOwo+ID4gPiAgCWRldl9wcml2LT5mYmMubm9fZmJjX3JlYXNv biA9ICJGQkMgZW5hYmxlZCBidXQgbm90IGFjdGl2ZSB5ZXRcbiI7Cj4gPiA+ICAKPiA+ID4gQEAg LTExMjksNiArMTEzMSw4IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfZmJjX2Rpc2FibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgCj4gPiA+ICAJRFJNX0RFQlVHX0tN UygiRGlzYWJsaW5nIEZCQyBvbiBwaXBlICVjXG4iLCBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOwo+ ID4gPiAgCj4gPiA+ICsJX19pbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwo+ID4gPiAr Cj4gPiA+ICAJZGV2X3ByaXYtPmZiYy5lbmFibGVkID0gZmFsc2U7Cj4gPiA+ICAJZGV2X3ByaXYt PmZiYy5jcnRjID0gTlVMTDsKPiA+ID4gIH0KPiA+ID4gLS0gCj4gPiA+IDIuNi4xCj4gPiA+IAo+ ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4g PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiA+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo+ID4gCj4gPiAtLSAKPiA+IERhbmllbCBWZXR0ZXIKPiA+IFNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiA+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4g Cj4gLS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwgT1RDCgotLSAKRGFuaWVsIFZldHRlcgpT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK