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:11:08 +0200 Message-ID: <20151021071108.GK13786@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id DAC1E6E8FF for ; Wed, 21 Oct 2015 00:11:11 -0700 (PDT) Received: by wicfx6 with SMTP id fx6so77127471wic.1 for ; Wed, 21 Oct 2015 00:11:10 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1445349004-16409-16-git-send-email-paulo.r.zanoni@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMjAsIDIwMTUgYXQgMTE6NTA6MDFBTSAtMDIwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IE9uZSBvZiB0aGUgcHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBjb2RlIGlzIHRoYXQg aXQgZnJlZXMgdGhlIENGQiBhbmQKPiByZWxlYXNlcyBpdHMgZHJtX21tIG5vZGUgYXMgc29vbiBh cyB3ZSBmbGlwIEZCQydzIGVuYWJsZSBiaXQuIFRoaXMgaXMKPiBiYWQgYmVjYXVzZSBhZnRlciB3 ZSBkaXNiYWxlIEZCQyB0aGUgaGFyZHdhcmUgbWF5IHN0aWxsIHVzZSB0aGUgQ0ZCCj4gZm9yIHRo ZSByZXN0IG9mIHRoZSBmcmFtZSwgc28gaW4gdGhlb3J5IHdlIHNob3VsZCBvbmx5IHJlbGVhc2Ug dGhlCj4gZHJtX21tIG5vZGUgb25lIGZyYW1lIGFmdGVyIHdlIGRpc2FibGUgRkJDLiBPdGhlcndp c2UsIGEgc3RvbGVuIG1lbW9yeQo+IGFsbG9jYXRpb24gZG9uZSByaWdodCBhZnRlciBhbiBGQkMg ZGlzYWJsZSBtYXkgcmVzdWx0IGluIGVpdGhlcgo+IGNvcnJ1cHRlZCBtZW1vcnkgZm9yIHRoZSBu ZXcgb3duZXIgb2YgdGhhdCBtZW1vcnkgcmVnaW9uIG9yIGNvcnJ1cHRlZAo+IHNjcmVlbi91bmRl cnJ1bnMgaW4gY2FzZSB0aGUgbmV3IG93bmVyIGNoYW5nZXMgaXQgd2hpbGUgdGhlIGhhcmR3YXJl Cj4gaXMgc3RpbGwgcmVhZGluZyBpdC4gVGhpcyBjYXNlIGlzIG5vdCBleGFjdGx5IGVhc3kgdG8g cmVwcm9kdWNlIHNpbmNlCj4gd2UgY3VycmVudGx5IGRvbid0IGRvIGEgbG90IG9mIHN0b2xlbiBt ZW1vcnkgYWxsb2NhdGlvbnMsIGJ1dCBJIHNlZQo+IHBhdGNoZXMgb24gdGhlIG1haWxpbmcgbGlz dCB0cnlpbmcgdG8gZXhwb3NlIHN0b2xlbiBtZW1vcnkgdG8gdXNlcgo+IHNwYWNlLCBzbyByYWNl cyB3aWxsIGJlIHBvc3NpYmxlLgo+IAo+IEkgdGhvdWdodCBhYm91dCB0aHJlZSBkaWZmZXJlbnQg YXBwcm9hY2hlcyB0byBzb2x2ZSB0aGlzLCBhbmQgdGhleSBhbGwKPiBoYXZlIGRvd25zaWRlcy4K PiAKPiBUaGUgZmlyc3QgYXBwcm9hY2ggd291bGQgYmUgdG8gc2ltcGx5IHVzZSBtdWx0aXBsZSBk cm1fbW0gbm9kZXMgYW5kCj4gZnJlZWluZyB0aGUgdW51c2VkIG9uZXMgb25seSBhZnRlciBhIGZy YW1lIGhhcyBwYXNzZWQuIFRoZSBwcm9ibGVtCj4gd2l0aCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQg c2luY2Ugc3RvbGVuIG1lbW9yeSBpcyByYXRoZXIgc21hbGwsCj4gdGhlcmUncyBhIHJpc2sgd2Ug anVzdCB3b24ndCBiZSBhYmxlIHRvIGFsbG9jYXRlIGEgbmV3IENGQiBmcm9tIHN0b2xlbgo+IGlm IHRoZSBwcmV2aW91cyBvbmUgd2FzIG5vdCBmcmVlZCB5ZXQuIFRoaXMgY291bGQgaGFwcGVuIGlu IGNhc2Ugd2UKPiBxdWlja2x5IGRpc2FibGUgRkJDIGZyb20gcGlwZSBBIGFuZCBkZWNpZGUgdG8g ZW5hYmxlIGl0IG9uIHBpcGUgQiwgb3IKPiBqdXN0IGlmIHdlIGNoYW5nZSBwaXBlIEEncyBmYiBz dHJpZGUgd2hpbGUgRkJDIGlzIGVuYWJsZWQuCj4gCj4gVGhlIHNlY29uZCBhcHByb2FjaCB3b3Vs ZCBiZSBzaW1pbGFyIHRvIHRoZSBmaXJzdCBvbmUsIGJ1dCBtYWludGFpbmluZwo+IGEgc2luZ2xl IGRybV9tbSBub2RlIGFuZCBrZWVwaW5nIHRyYWNrIG9mIHdoZW4gaXQgY2FuIGJlIHJldXNlZC4g VGhpcwo+IHdvdWxkIHJlbW92ZSB0aGUgZGlzYWR2YW50YWdlIG9mIG5vdCBoYXZpbmcgZW5vdWdo IHNwYWNlIGZvciB0d28KPiBub2RlcywgYnV0IHdvdWxkIGNyZWF0ZSB0aGUgbmV3IHByb2JsZW0g d2hlcmUgd2UgbWF5IG5vdCBiZSBhYmxlIHRvCj4gZW5hYmxlIEZCQyBhdCB0aGUgcG9pbnQgaW50 ZWxfZmJjX3VwZGF0ZSgpIGlzIGNhbGxlZCwgc28gd2Ugd291bGQgaGF2ZQo+IHRvIGFkZCBtb3Jl IGNvZGUgdG8gcmV0cnkgdXBkYXRpbmcgRkJDIGFmdGVyIHRoZSB0aW1lIGhhcyBwYXNzZWQuIEFu ZAo+IHRoYXQgY2FuIHF1aWNrbHkgZ2V0IHRvbyBjb21wbGV4IHNpbmNlIHdlIGNhbiBnZXQgaW52 YWxpZGF0ZSwgZmx1c2gsCj4gZmxpcF9wcmVwYXJlLCBkaXNhYmxlIGFuZCBvdGhlciBjYWxscyBp biB0aGUgbWlkZGxlIG9mIHRoZSB3YWl0Lgo+IAo+IEJvdGggc29sdXRpb25zIGFib3ZlIC0gYW5k IGFsc28gdGhlIGN1cnJlbnQgY29kZSAtIGhhdmUgdGhlIHByb2JsZW0KPiB0aGF0IHdlIHVubmVj ZXNzYXJpbHkgZnJlZStyZWFsbG9jIEZCQyBkdXJpbmcgaW52YWxpZGF0ZStmbHVzaAo+IG9wZXJh dGlvbnMgZXZlbiBpZiB0aGUgQ0ZCIHNpemUgZG9lc24ndCBjaGFuZ2UuCj4gCj4gVGhlIHRoaXJk IG9wdGlvbiB3b3VsZCBiZSB0byBtb3ZlIHRoZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiB0bwo+ IGVuYWJsZS9kaXNhYmxlLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUgcGlwZSBpcyBhbHdheXMg ZGlzYWJsZWQgd2hlbgo+IHdlIGFsbG9jYXRlL2RlYWxsb2NhdGUgdGhlIENGQiwgc28gdGhlcmUn cyBubyByaXNrIHRoYXQgdGhlIEZCQwo+IGhhcmR3YXJlIG1heSByZWFkIG9yIHdyaXRlIHRvIHRo ZSBtZW1vcnkgcmlnaHQgYWZ0ZXIgaXQgaXMgZnJlZWQgZnJvbQo+IGRybV9tbS4gVGhlIGRvd25z aWRlIGlzIHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIHVzZXIgc3BhY2UgdG8gY2hhbmdlCj4gdGhl IGJ1ZmZlciBzdHJpZGUgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZGlzYWJsZS9lbmFibGUgLSBvbmx5 Cj4gZGVhY3RpdmF0ZS9hY3RpdmF0ZSAtLCBzbyB3ZSdsbCBoYXZlIHRvIGhhbmRsZSB0aGlzIGNh c2Ugc29tZWhvdywgZXZlbgo+IHRob3VnaCBpdCBpcyB1bmNvbW1vbiAtIHNlZSBpZ3QncyBrbXNf ZnJvbnRidWZmZXJfdHJhY2tpbmcgdGVzdCwKPiBmYmMtc3RyaWRlY2hhbmdlIHN1YnRlc3QuIEl0 IGNvdWxkIGJlIHBvc3NpYmxlIHRvIGltcGxlbWVudCBhIHdheSB0bwo+IGZyZWUrYWxsb2MgdGhl IENGQiBkdXJpbmcgc2FpZCBzdHJpZGUgY2hhbmdlLCBidXQgaXQgd291bGQgaW52b2x2ZSBhCj4g bG90IG9mIGJvb2sta2VlcGluZyAtIGV4YWN0bHkgYXMgbWVudGlvbmVkIGFib3ZlIC0ganVzdCBm b3IgYSByYXJlCj4gY2FzZSwgc28gZm9yIG5vdyBJJ2xsIGtlZXAgaXQgc2ltcGxlIGFuZCBqdXN0 IGRlYWN0aXZhdGUgRkJDLiBCZXNpZGVzLAo+IHdlIG1heSBub3QgZXZlbiBuZWVkIHRvIGRpc2Fi bGUgRkJDIHNpbmNlIHdlIGRvIENGQiBvdmVyLWFsbG9jYXRpb24uCj4gCj4gU2lnbmVkLW9mZi1i eTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIHwgMTMyICsrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgNjQg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBpbmRleCBiZjg1NWIy Li40OGQ4Y2ZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtNTksNiArNTks NDUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfY3J0Y19mZW5jZV95X29mZnNldChzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKPiAgCXJldHVybiBjcnRjLT5iYXNlLnkgLSBjcnRjLT5hZGp1c3Rl ZF95Owo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBGb3IgU0tMKywgdGhlIHBsYW5lIHNvdXJjZSBzaXpl IHVzZWQgYnkgdGhlIGhhcmR3YXJlIGlzIGJhc2VkIG9uIHRoZSB2YWx1ZSB3ZQo+ICsgKiB3cml0 ZSB0byB0aGUgUExBTkVfU0laRSByZWdpc3Rlci4gRm9yIEJEVy0sIHRoZSBoYXJkd2FyZSBsb29r cyBhdCB0aGUgdmFsdWUKPiArICogd2Ugd3JvdGUgdG8gUElQRVNSQy4KPiArICovCj4gK3N0YXRp YyB2b2lkIGludGVsX2ZiY19nZXRfcGxhbmVfc291cmNlX3NpemUoc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gKwkJCQkJICAgIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQo+ICt7Cj4gKwlzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiArCQkJdG9faW50ZWxfcGxhbmVf c3RhdGUoY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZSk7Cj4gKwlpbnQgdywgaDsKPiArCj4gKwlp ZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uKSkg ewo+ICsJCXcgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ICsJ CWggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gKwl9IGVsc2Ug ewo+ICsJCXcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gKwkJ aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gKwl9Cj4gKwo+ ICsJaWYgKHdpZHRoKQo+ICsJCSp3aWR0aCA9IHc7Cj4gKwlpZiAoaGVpZ2h0KQo+ICsJCSpoZWln aHQgPSBoOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2ZiY19jYWxjdWxhdGVfY2ZiX3Np emUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMt PmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiArCWludCBsaW5lczsKPiArCj4gKwlpbnRlbF9mYmNf Z2V0X3BsYW5lX3NvdXJjZV9zaXplKGNydGMsIE5VTEwsICZsaW5lcyk7Cj4gKwlpZiAoSU5URUxf SU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3KQo+ICsJCWxpbmVzID0gbWluKGxpbmVzLCAyMDQ4KTsK PiArCj4gKwlyZXR1cm4gbGluZXMgKiBmYi0+cGl0Y2hlc1swXTsKCldoeSBhcmUgd2UgZXZlbiBs b29raW5nIGF0IGZiLT5waXRjaGVzIGhlcmU/IEkgdGhvdWdodCB0aGF0IGZvciBmYmMgd2UKb25s eSBjb21wcmVzcyB3aGF0IHdlIGFjdHVhbGx5IHNjYW4gb3V0LCBpLmUuIHRoZSBzb3VyY2UgcmVj dGFuZ2xlIG9mIHRoZQpwbGFuZSBpbiBwaXhlbHMuIE1heWJlIHNvbWUgcm91bmRpbmcgaW52b2x2 ZWQgcGVyaGFwcy4KCk9yIGRpZCBJIG1pc3Mgc29tZXRoaW5nPwotRGFuaWVsCgo+ICt9Cj4gKwo+ ICBzdGF0aWMgdm9pZCBpOHh4X2ZiY19kZWFjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgewo+ICAJdTMyIGZiY19jdGw7Cj4gQEAgLTYwNCwxMSArNjQzLDE3IEBA IGFnYWluOgo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGludGVsX2ZiY19hbGxvY19jZmIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgc2l6ZSwKPiAtCQkJICAgICAg IGludCBmYl9jcHApCj4gK3N0YXRpYyBpbnQgaW50ZWxfZmJjX2FsbG9jX2NmYihzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gY3J0Yy0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPnN0YXRlLT5mYjsKPiAgCXN0cnVjdCBkcm1fbW1f bm9kZSAqdW5pbml0aWFsaXplZF92YXIoY29tcHJlc3NlZF9sbGIpOwo+IC0JaW50IHJldDsKPiAr CWludCBzaXplLCBmYl9jcHAsIHJldDsKPiArCj4gKwlXQVJOX09OKGRldl9wcml2LT5mYmMuY29t cHJlc3NlZF9mYi5hbGxvY2F0ZWQpOwo+ICsKPiArCXNpemUgPSBpbnRlbF9mYmNfY2FsY3VsYXRl X2NmYl9zaXplKGNydGMsIGZiKTsKPiArCWZiX2NwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZi LT5waXhlbF9mb3JtYXQsIDApOwo+ICAKPiAgCXJldCA9IGZpbmRfY29tcHJlc3Npb25fdGhyZXNo b2xkKGRldl9wcml2LCAmZGV2X3ByaXYtPmZiYy5jb21wcmVzc2VkX2ZiLAo+ICAJCQkJCSBzaXpl LCBmYl9jcHApOwo+IEBAIC02ODUsNjQgKzczMCw2IEBAIHZvaWQgaW50ZWxfZmJjX2NsZWFudXBf Y2ZiKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmZiYy5sb2NrKTsKPiAgfQo+ICAKPiAtLyoKPiAtICogRm9yIFNLTCssIHRoZSBw bGFuZSBzb3VyY2Ugc2l6ZSB1c2VkIGJ5IHRoZSBoYXJkd2FyZSBpcyBiYXNlZCBvbiB0aGUgdmFs dWUgd2UKPiAtICogd3JpdGUgdG8gdGhlIFBMQU5FX1NJWkUgcmVnaXN0ZXIuIEZvciBCRFctLCB0 aGUgaGFyZHdhcmUgbG9va3MgYXQgdGhlIHZhbHVlCj4gLSAqIHdlIHdyb3RlIHRvIFBJUEVTUkMu Cj4gLSAqLwo+IC1zdGF0aWMgdm9pZCBpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IC0JCQkJCSAgICBpbnQgKndpZHRoLCBpbnQgKmhlaWdo dCkKPiAtewo+IC0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gLQkJ CXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUpOwo+IC0JaW50 IHcsIGg7Cj4gLQo+IC0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChwbGFuZV9zdGF0ZS0+ YmFzZS5yb3RhdGlvbikpIHsKPiAtCQl3ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ c3JjKSA+PiAxNjsKPiAtCQloID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5zcmMpID4+ IDE2Owo+IC0JfSBlbHNlIHsKPiAtCQl3ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5z cmMpID4+IDE2Owo+IC0JCWggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+ IDE2Owo+IC0JfQo+IC0KPiAtCWlmICh3aWR0aCkKPiAtCQkqd2lkdGggPSB3Owo+IC0JaWYgKGhl aWdodCkKPiAtCQkqaGVpZ2h0ID0gaDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBpbnRlbF9mYmNf Y2FsY3VsYXRlX2NmYl9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IC17Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRldi0+ZGV2X3ByaXZh dGU7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ ZmI7Cj4gLQlpbnQgbGluZXM7Cj4gLQo+IC0JaW50ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vfc2l6 ZShjcnRjLCBOVUxMLCAmbGluZXMpOwo+IC0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4g Pj0gNykKPiAtCQlsaW5lcyA9IG1pbihsaW5lcywgMjA0OCk7Cj4gLQo+IC0JcmV0dXJuIGxpbmVz ICogZmItPnBpdGNoZXNbMF07Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgaW50ZWxfZmJjX3NldHVw X2NmYihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPmZiOwo+IC0JaW50IHNp emUsIGNwcDsKPiAtCj4gLQlzaXplID0gaW50ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShjcnRj KTsKPiAtCWNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ IC0KPiAtCWlmIChkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuYWxsb2NhdGVkICYmCj4gLQkg ICAgc2l6ZSA8PSBkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuc2l6ZSAqIGRldl9wcml2LT5m YmMudGhyZXNob2xkKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCS8qIFJlbGVhc2UgYW55IGN1cnJl bnQgYmxvY2sgKi8KPiAtCV9faW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKPiAtCj4g LQlyZXR1cm4gaW50ZWxfZmJjX2FsbG9jX2NmYihkZXZfcHJpdiwgc2l6ZSwgY3BwKTsKPiAtfQo+ IC0KPiAgc3RhdGljIGJvb2wgc3RyaWRlX2lzX3ZhbGlkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQkJICAgIHVuc2lnbmVkIGludCBzdHJpZGUpCj4gIHsKPiBAQCAtOTA0 LDggKzg5MSwxOSBAQCBzdGF0aWMgdm9pZCBfX2ludGVsX2ZiY191cGRhdGUoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gIAkJZ290byBvdXRfZGlzYWJsZTsKPiAgCX0KPiAgCj4gLQlpZiAoaW50 ZWxfZmJjX3NldHVwX2NmYihjcnRjKSkgewo+IC0JCXNldF9ub19mYmNfcmVhc29uKGRldl9wcml2 LCAibm90IGVub3VnaCBzdG9sZW4gbWVtb3J5Iik7Cj4gKwkvKiBJdCBpcyBwb3NzaWJsZSBmb3Ig dGhlIHJlcXVpcmVkIENGQiBzaXplIGNoYW5nZSB3aXRob3V0IGEKPiArCSAqIGNydGMtPmRpc2Fi bGUgKyBjcnRjLT5lbmFibGUgc2luY2UgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZQo+ICsJ ICogc3RyaWRlIHdpdGhvdXQgdHJpZ2dlcmluZyBhIGZ1bGwgbW9kZXNldC4gU2luY2Ugd2UgdHJ5 IHRvCj4gKwkgKiBvdmVyLWFsbG9jYXRlIHRoZSBDRkIsIHRoZXJlJ3MgYSBjaGFuY2Ugd2UgbWF5 IGtlZXAgRkJDIGVuYWJsZWQgZXZlbgo+ICsJICogaWYgdGhpcyBoYXBwZW5zLCBidXQgaWYgd2Ug ZXhjZWVkIHRoZSBjdXJyZW50IENGQiBzaXplIHdlJ2xsIGhhdmUgdG8KPiArCSAqIGRpc2FibGUg RkJDLiBOb3RpY2UgdGhhdCBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBkaXNhYmxlIEZCQywgd2Fp dAo+ICsJICogZm9yIGEgZnJhbWUsIGZyZWUgdGhlIHN0b2xlbiBub2RlLCB0aGVuIHRyeSB0byBy ZWVuYWJsZSBGQkMgaW4gY2FzZQo+ICsJICogd2UgZGlkbid0IGdldCBhbnkgaW52YWxpZGF0ZS9k ZWFjdGl2YXRlIGNhbGxzLCBidXQgdGhpcyB3b3VsZCByZXF1aXJlCj4gKwkgKiBhIGxvdCBvZiB0 cmFja2luZyBqdXN0IGZvciBhIGNhc2Ugd2UgZXhwZWN0IHRvIGJlIHVuY29tbW9uLCBzbyB3ZQo+ ICsJICoganVzdCBkb24ndCBoYXZlIHRoaXMgY29kZSBmb3Igbm93LiAqLwo+ICsJaWYgKGludGVs X2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUoY3J0YywgZmIpID4KPiArCSAgICBkZXZfcHJpdi0+ZmJj LmNvbXByZXNzZWRfZmIuc2l6ZSAqIGRldl9wcml2LT5mYmMudGhyZXNob2xkKSB7Cj4gKwkJc2V0 X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsICJDRkIgcmVxdWlyZW1lbnRzIGNoYW5nZWQiKTsKPiAg CQlnb3RvIG91dF9kaXNhYmxlOwo+ICAJfQo+ICAKPiBAQCAtOTU4LDcgKzk1Niw2IEBAIG91dF9k aXNhYmxlOgo+ICAJCURSTV9ERUJVR19LTVMoInVuc3VwcG9ydGVkIGNvbmZpZywgZGVhY3RpdmF0 aW5nIEZCQ1xuIik7Cj4gIAkJX19pbnRlbF9mYmNfZGVhY3RpdmF0ZShkZXZfcHJpdik7Cj4gIAl9 Cj4gLQlfX2ludGVsX2ZiY19jbGVhbnVwX2NmYihkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIC8qCj4g QEAgLTExMDIsNiArMTA5OSwxMSBAQCB2b2lkIGludGVsX2ZiY19lbmFibGUoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gIAkJZ290byBvdXQ7Cj4gIAl9Cj4gIAo+ICsJaWYgKGludGVsX2ZiY19h bGxvY19jZmIoY3J0YykpIHsKPiArCQlzZXRfbm9fZmJjX3JlYXNvbihkZXZfcHJpdiwgIm5vdCBl bm91Z2ggc3RvbGVuIG1lbW9yeSIpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiAgCURSTV9E RUJVR19LTVMoIkVuYWJsaW5nIEZCQyBvbiBwaXBlICVjXG4iLCBwaXBlX25hbWUoY3J0Yy0+cGlw ZSkpOwo+ICAJZGV2X3ByaXYtPmZiYy5ub19mYmNfcmVhc29uID0gIkZCQyBlbmFibGVkIGJ1dCBu b3QgYWN0aXZlIHlldFxuIjsKPiAgCj4gQEAgLTExMjksNiArMTEzMSw4IEBAIHN0YXRpYyB2b2lk IF9faW50ZWxfZmJjX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAKPiAgCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyBGQkMgb24gcGlwZSAlY1xuIiwgcGlwZV9u YW1lKGNydGMtPnBpcGUpKTsKPiAgCj4gKwlfX2ludGVsX2ZiY19jbGVhbnVwX2NmYihkZXZfcHJp dik7Cj4gKwo+ICAJZGV2X3ByaXYtPmZiYy5lbmFibGVkID0gZmFsc2U7Cj4gIAlkZXZfcHJpdi0+ ZmJjLmNydGMgPSBOVUxMOwo+ICB9Cj4gLS0gCj4gMi42LjEKPiAKPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==