From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 2/3] drm: Add helper iterator functions to iterate over plane damage. Date: Thu, 5 Apr 2018 15:52:07 +0200 Message-ID: <20180405135207.GY3881@phenom.ffwll.local> References: <1522885748-67122-1-git-send-email-drawat@vmware.com> <1522885748-67122-3-git-send-email-drawat@vmware.com> <20180405075205.GQ3881@phenom.ffwll.local> <0edfe662-6463-a143-e00a-d3d4bc06a229@vmware.com> <20180405101007.GU3881@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 78CF86E5F8 for ; Thu, 5 Apr 2018 13:52:11 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id p9so5897173wmc.3 for ; Thu, 05 Apr 2018 06:52:11 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Hellstrom Cc: airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-graphics-maintainer@vmware.com, Deepak Rawat , lukasz.spintzyk@displaylink.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBcHIgMDUsIDIwMTggYXQgMDE6NTE6NDlQTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBPbiAwNC8wNS8yMDE4IDEyOjEwIFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ ID4gT24gVGh1LCBBcHIgMDUsIDIwMTggYXQgMTA6NDk6MDlBTSArMDIwMCwgVGhvbWFzIEhlbGxz dHJvbSB3cm90ZToKPiA+ID4gT24gMDQvMDUvMjAxOCAwOTo1MiBBTSwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiA+ID4gPiBPbiBXZWQsIEFwciAwNCwgMjAxOCBhdCAwNDo0OTowN1BNIC0wNzAwLCBE ZWVwYWsgUmF3YXQgd3JvdGU6Cj4gPiA+ID4gPiBXaXRoIGRhbWFnZSBwcm9wZXJ0eSBpbiBkcm1f cGxhbmVfc3RhdGUsIHRoaXMgcGF0Y2ggYWRkcyBoZWxwZXIgaXRlcmF0b3IKPiA+ID4gPiA+IHRv IHRyYXZlcnNlIHRoZSBkYW1hZ2UgY2xpcHMuIEl0ZXJhdG9yIHdpbGwgcmV0dXJuIHRoZSBkYW1h Z2UgcmVjdGFuZ2xlcwo+ID4gPiA+ID4gaW4gZnJhbWVidWZmZXIsIHBsYW5lIG9yIGNydGMgY29v cmRpbmF0ZXMgYXMgbmVlZCBieSBkcml2ZXIKPiA+ID4gPiA+IGltcGxlbWVudGF0aW9uLgo+ID4g PiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEZWVwYWsgUmF3YXQgPGRyYXdhdEB2bXdh cmUuY29tPgo+ID4gPiA+IEknZCByZWFsbHkgbGlrZSBzZWxmdGVzdC91bml0dGVzdHMgZm9yIHRo aXMgc3R1ZmYuIFRoZXJlJ3MgYW4gYXdmdWwgbG90IG9mCj4gPiA+ID4gY29ybmVyY2FzZXMgaW4g dGhpcyBoZXJlIChmb3IgYW55IG9mIHRoZSB0cmFuc2Zvcm1lZCBpdGVyYXRvcnMgYXQgbGVhc3Qp LAo+ID4gPiA+IGFuZCB1bml0IHRlc3RzIGlzIHRoZSBiZXN0IHdheSB0byBtYWtlIHN1cmUgd2Ug aGFuZGxlIHRoZW0gYWxsIGNvcnJlY3RseS4KPiA+ID4gPiAKPiA+ID4gPiBCb251cyBwb2ludHMg aWYgeW91IGludGVncmF0ZSB0aGUgbmV3IHNlbGZ0ZXN0cyBpbnRvIGlndCBzbyBpbnRlbCBDSSBj YW4KPiA+ID4gPiBydW4gdGhlbSwgc2VlbCBpZ3QvdGVzdHMvZHJtX21tLmMgZm9yIGFuIGV4YW1w bGUuIGRybV9tbSBzZWxmdGVzdCBpcyBhbHNvCj4gPiA+ID4gdGhlIGZyYW1ld29yayBJJ2QgY29w eSBmb3IgdGhpcyBzdHVmZi4KPiA+ID4gPiAKPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gICAgZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAxMjIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiAgICBpbmNsdWRlL2RybS9kcm1fYXRvbWljX2hl bHBlci5oICAgICB8ICAzOSArKysrKysrKysrKysKPiA+ID4gPiA+ICAgIDIgZmlsZXMgY2hhbmdl ZCwgMTYxIGluc2VydGlvbnMoKykKPiA+ID4gPiA+IAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfaGVscGVyLmMKPiA+ID4gPiA+IGluZGV4IDU1YjQ0ZTMuLjM1NWI1MTQgMTAwNjQ0Cj4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+ID4gPiA+IEBA IC0zODY1LDMgKzM4NjUsMTI1IEBAIHZvaWQgX19kcm1fYXRvbWljX2hlbHBlcl9wcml2YXRlX29i al9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqCj4gPiA+ID4gPiAg ICAJbWVtY3B5KHN0YXRlLCBvYmotPnN0YXRlLCBzaXplb2YoKnN0YXRlKSk7Cj4gPiA+ID4gPiAg ICB9Cj4gPiA+ID4gPiAgICBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfcHJpdmF0 ZV9vYmpfZHVwbGljYXRlX3N0YXRlKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsvKioKPiA+ID4g PiA+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0IC0gaW5pdGlhbGl6ZSB0 aGUgZGFtYWdlIGl0ZXJhdG9yCj4gPiA+ID4gPiArICogQGl0ZXI6IFRoZSBpdGVyYXRvciB0byBp bml0aWFsaXplLgo+ID4gPiA+ID4gKyAqIEB0eXBlOiBDb29yZGluYXRlIHR5cGUgY2FsbGVyIGlz IGludGVyZXN0ZWQgaW4uCj4gPiA+ID4gPiArICogQHN0YXRlOiBwbGFuZV9zdGF0ZSBmcm9tIHdo aWNoIHRvIGl0ZXJhdGUgdGhlIGRhbWFnZSBjbGlwcy4KPiA+ID4gPiA+ICsgKiBAaGRpc3BsYXk6 IFdpZHRoIG9mIGNydGMgb24gd2hpY2ggcGxhbmUgaXMgc2Nhbm5lZCBvdXQuCj4gPiA+ID4gPiAr ICogQHZkaXNwbGF5OiBIZWlnaHQgb2YgY3J0YyBvbiB3aGljaCBwbGFuZSBpcyBzY2FubmVkIG91 dC4KPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAqIEluaXRpYWxpemUgYW4gaXRlcmF0b3IgdGhh dCBpcyB1c2VkIHRvIHRyYW5zbGF0ZSBhbmQgY2xpcCBhIHNldCBvZiBkYW1hZ2UKPiA+ID4gPiA+ ICsgKiByZWN0YW5nbGVzIGluIGZyYW1lYnVmZmVyIGNvb3JkaW5hdGVzIHRvIHBsYW5lIGFuZCBj cnRjIGNvb3JkaW5hdGVzLiBUaGUgdHlwZQo+ID4gPiA+ID4gKyAqIGFyZ3VtZW50IHNwZWNpZnkg d2hpY2ggdHlwZSBvZiBjb29yZGluYXRlIHRvIGl0ZXJhdGUgaW4uCj4gPiA+ID4gPiArICoKPiA+ ID4gPiA+ICsgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MgYW5kIG5lZ2F0aXZlIGVycm9yIGNvZGUg b24gZXJyb3IuIElmIGFuIGVycm9yIGNvZGUgaXMKPiA+ID4gPiA+ICsgKiByZXR1cm5lZCB0aGVu IGl0IG1lYW5zIHRoZSBwbGFuZSBzdGF0ZSBzaG91bGQgbm90IHVwZGF0ZS4KPiA+ID4gPiA+ICsg Ki8KPiA+ID4gPiA+ICtpbnQKPiA+ID4gPiA+ICtkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRl cl9pbml0KHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciAqaXRlciwKPiA+ID4g PiA+ICsJCQkJICAgZW51bSBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfY2xpcF90eXBlIHR5cGUs Cj4gPiA+ID4gPiArCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLAo+ ID4gPiA+ID4gKwkJCQkgICB1aW50MzJfdCBoZGlzcGxheSwgdWludDMyX3QgdmRpc3BsYXkpCj4g PiA+ID4gPiArewo+ID4gPiA+ID4gKwlpZiAoIXN0YXRlIHx8ICFzdGF0ZS0+Y3J0YyB8fCAhc3Rh dGUtPmZiKQo+ID4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCW1lbXNldChpdGVyLCAwLCBzaXplb2YoKml0ZXIpKTsKPiA+ID4gPiA+ICsJaXRlci0+Y2xp cHMgPSAoc3RydWN0IGRybV9yZWN0ICopc3RhdGUtPmRhbWFnZV9jbGlwcy0+ZGF0YTsKPiA+ID4g PiA+ICsJaXRlci0+bnVtX2NsaXBzID0gc3RhdGUtPm51bV9jbGlwczsKPiA+ID4gPiA+ICsJaXRl ci0+dHlwZSA9IHR5cGU7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qCj4gPiA+ID4gPiArCSAq IEZ1bGwgdXBkYXRlIGluIGNhc2Ugb2Ygc2NhbGluZyBvciByb3RhdGlvbi4gSW4gZnV0dXJlIHN1 cHBvcnQgZm9yCj4gPiA+ID4gPiArCSAqIHNjYWxpbmcvcm90YXRpbmcgZGFtYWdlIGNsaXBzIGNh biBiZSBhZGRlZAo+ID4gPiA+ID4gKwkgKi8KPiA+ID4gPiA+ICsJaWYgKHN0YXRlLT5jcnRjX3cg IT0gKHN0YXRlLT5zcmNfdyA+PiAxNikgfHwKPiA+ID4gPiA+ICsJICAgIHN0YXRlLT5jcnRjX2gg IT0gc3RhdGUtPnNyY19oID4+IDE2IHx8IHN0YXRlLT5yb3RhdGlvbiAhPSAwKSB7Cj4gPiA+ID4g PiArCQlpdGVyLT5jdXJyX2NsaXAgPSBpdGVyLT5udW1fY2xpcHM7Cj4gPiA+ID4gPiArCQlyZXR1 cm4gMDsKPiA+ID4gPiBHaXZlbiB0aGVyZSdzIG5vIHVzZXIgb2YgdGhpcyBJIGhhdmUgbm8gaWRl YSBob3cgdGhpcyBtYW5hZ2VzIHRvIHByb3Zva2UgYQo+ID4gPiA+IGZ1bGwgY2xpcCByZWN0LiBz ZWxmdGVzdCBjb2RlIHdvdWxkIGJlIHBlcmZlY3QgZm9yIHN0dWZmIGxpa2UgdGhpcy4KPiA+ID4g PiAKPiA+ID4gPiBBbHNvLCBJIHRoaW5rIHdlIHNob3VsZCBwcm92aWRlIGEgZnVsbCBjbGlwIGZv ciB0aGUgY2FzZSBvZiBudW1fY2xpcHMgPT0KPiA+ID4gPiAwLCBzbyB0aGF0IGRyaXZlciBjb2Rl IGNhbiBzaW1wbHkgaXRlcmF0ZSBvdmVyIGFsbCBjbGlwcyBhbmQgZG9lc24ndCBldmVyCj4gPiA+ ID4gaGF2ZSB0byBoYW5kbGUgdGhlICJubyBjbGlwIHJlY3RzIHByb3ZpZGVkIiBjYXNlIGFzIGEg c3BlY2lhbCBjYXNlIGl0c2VsZi4KPiA+ID4gPiAKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKwlpdGVyLT5mYl9zcmMueDEgPSAwOwo+ID4gPiA+ID4gKwlpdGVyLT5mYl9zcmMu eTEgPSAwOwo+ID4gPiA+ID4gKwlpdGVyLT5mYl9zcmMueDIgPSBzdGF0ZS0+ZmItPndpZHRoOwo+ ID4gPiA+ID4gKwlpdGVyLT5mYl9zcmMueTIgPSBzdGF0ZS0+ZmItPmhlaWdodDsKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsJaXRlci0+cGxhbmVfc3JjLngxID0gc3RhdGUtPnNyY194ID4+IDE2Owo+ ID4gPiA+ID4gKwlpdGVyLT5wbGFuZV9zcmMueTEgPSBzdGF0ZS0+c3JjX3kgPj4gMTY7Cj4gPiA+ ID4gPiArCWl0ZXItPnBsYW5lX3NyYy54MiA9IGl0ZXItPnBsYW5lX3NyYy54MSArIChzdGF0ZS0+ c3JjX3cgPj4gMTYpOwo+ID4gPiA+ID4gKwlpdGVyLT5wbGFuZV9zcmMueTIgPSBpdGVyLT5wbGFu ZV9zcmMueTEgKyAoc3RhdGUtPnNyY19oID4+IDE2KTsKPiA+ID4gPiA+ICsJaXRlci0+dHJhbnNs YXRlX3BsYW5lX3ggPSAtaXRlci0+cGxhbmVfc3JjLngxOwo+ID4gPiA+ID4gKwlpdGVyLT50cmFu c2xhdGVfcGxhbmVfeSA9IC1pdGVyLT5wbGFuZV9zcmMueTE7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCS8qIENsaXAgcGxhbmUgc3JjIHJlY3QgdG8gZmIgZGltZW5zaW9ucyAqLwo+ID4gPiA+ID4g Kwlkcm1fcmVjdF9pbnRlcnNlY3QoJml0ZXItPnBsYW5lX3NyYywgJml0ZXItPmZiX3NyYyk7Cj4g PiA+ID4gVGhpcyBzbWVsbHMgbGlrZSBkcml2ZXIgYnVnLiBBbHNvLCBzZWUgVmlsbGUncyByZWNl bnQgZWZmb3J0cyB0byBpbXByb3ZlCj4gPiA+ID4gdGhlIGF0b21pYyBwbGFuZSBjbGlwcGluZywg SSB0aGluayBkcm1fcGxhbmVfc3RhdGUgYWxyZWFkeSBoYXMgYWxsIHRoZQo+ID4gPiA+IGNsaXAg cmVjdHMgeW91IHdhbnQuCj4gPiA+ID4gCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWl0ZXItPmNy dGNfc3JjLngxID0gMDsKPiA+ID4gPiA+ICsJaXRlci0+Y3J0Y19zcmMueTEgPSAwOwo+ID4gPiA+ ID4gKwlpdGVyLT5jcnRjX3NyYy54MiA9IGhkaXNwbGF5Owo+ID4gPiA+ID4gKwlpdGVyLT5jcnRj X3NyYy55MiA9IHZkaXNwbGF5Owo+ID4gPiA+ID4gKwlpdGVyLT50cmFuc2xhdGVfY3J0Y194ID0g LShpdGVyLT5wbGFuZV9zcmMueDEgLSBzdGF0ZS0+Y3J0Y194KTsKPiA+ID4gPiA+ICsJaXRlci0+ dHJhbnNsYXRlX2NydGNfeCA9IC0oaXRlci0+cGxhbmVfc3JjLnkxIC0gc3RhdGUtPmNydGNfeSk7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIENsaXAgY3J0YyBzcmMgcmVjdCB0byBwbGFuZSBk aW1lbnNpb25zICovCj4gPiA+ID4gPiArCWRybV9yZWN0X3RyYW5zbGF0ZSgmaXRlci0+Y3J0Y19z cmMsIC1pdGVyLT50cmFuc2xhdGVfY3J0Y194LAo+ID4gPiA+ID4gKwkJCSAgIC1pdGVyLT50cmFu c2xhdGVfY3J0Y194KTsKPiA+ID4gPiBXZSBjYW4gYWxzbyBzY2FsZS4KPiA+ID4gSSBzdWdnZXN0 IHdlIGxlYXZlIG91dCBzY2FsaW5nIGZvciBub3cgdW50aWwgc29tZW9uZSBhY3R1YWxseSBuZWVk cyBpdC4KPiA+IEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIFdBUk5fT04gYW5kIGJhaWwgb3V0IGlm IHRoZXJlJ3Mgc2NhbGluZyBnb2luZyBvbi4KPiA+IEknbSB0b3RhbGx5IGZpbmUgd2l0aCBub3Qg c29sdmluZyB0aGUgd29ybGQgaGVyZSwgYnV0IHBsZWFzZSBubyB0cmFwZG9vcnMKPiA+IGZvciBm b2xsb3dpbmcgZHJpdmVyJ3MgdXNlLWNhc2VzLgo+ID4gCj4gCj4gQWdyZWVkLgo+IAo+ID4gPiA+ ID4gKwlkcm1fcmVjdF9pbnRlcnNlY3QoJml0ZXItPmNydGNfc3JjLCAmaXRlci0+cGxhbmVfc3Jj KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ ID4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCk7Cj4g PiA+ID4gPiArCj4gPiA+ID4gPiArLyoqCj4gPiA+ID4gPiArICogZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXJfbmV4dCAtIGFkdmFuY2UgdGhlIGRhbWFnZSBpdGVyYXRvcgo+ID4gPiA+ID4g KyAqIEBpdGVyOiBUaGUgaXRlcmF0b3IgdG8gYWR2YW5jZS4KPiA+ID4gPiA+ICsgKiBAcmVjdDog UmV0dXJuIGEgcmVjdGFuZ2xlIGluIGNvb3JkaW5hdGUgc3BlY2lmaWVkIGR1cmluZyBpdGVyYXRv ciBpbml0Lgo+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICogUmV0dXJuczogIHRydWUgaWYgdGhl IG91dHB1dCBpcyB2YWxpZCwgZmFsc2UgaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZQo+ ID4gPiA+ID4gKyAqIHJlY3RhbmdsZSBsaXN0LiBJZiB0aGUgZmlyc3QgY2FsbCByZXR1cm4gZmFs c2UsIG1lYW5zIG5lZWQgZnVsbCB1cGRhdGUuCj4gPiA+ID4gPiArICovCj4gPiA+ID4gPiArYm9v bAo+ID4gPiA+ID4gK2RybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX25leHQoc3RydWN0IGRy bV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyICppdGVyLAo+ID4gPiA+ID4gKwkJCQkgICBzdHJ1 Y3QgZHJtX3JlY3QgKnJlY3QpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwljb25zdCBzdHJ1Y3Qg ZHJtX3JlY3QgKmN1cnJfY2xpcDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtuZXh0X2NsaXA6Cj4g PiA+ID4gPiArCWlmIChpdGVyLT5jdXJyX2NsaXAgPj0gaXRlci0+bnVtX2NsaXBzKQo+ID4gPiA+ ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwljdXJyX2NsaXAgPSAm aXRlci0+Y2xpcHNbaXRlci0+Y3Vycl9jbGlwXTsKPiA+ID4gPiA+ICsJaXRlci0+Y3Vycl9jbGlw Kys7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXJlY3QtPngxID0gY3Vycl9jbGlwLT54MTsKPiA+ ID4gPiA+ICsJcmVjdC0+eDIgPSBjdXJyX2NsaXAtPngyOwo+ID4gPiA+ID4gKwlyZWN0LT55MSA9 IGN1cnJfY2xpcC0+eTE7Cj4gPiA+ID4gPiArCXJlY3QtPnkyID0gY3Vycl9jbGlwLT55MjsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogQ2xpcCBkYW1hZ2UgcmVjdCB3aXRoaW4gZmIgbGltaXQg Ki8KPiA+ID4gPiA+ICsJaWYgKCFkcm1fcmVjdF9pbnRlcnNlY3QocmVjdCwgJml0ZXItPmZiX3Ny YykpCj4gPiA+ID4gPiArCQlnb3RvIG5leHRfY2xpcDsKPiA+ID4gPiA+ICsJZWxzZSBpZiAoaXRl ci0+dHlwZSAmIERSTV9BVE9NSUNfSEVMUEVSX0RBTUFHRV9DTElQX1RZUEVfRkIpCj4gPiA+ID4g PiArCQlyZXR1cm4gdHJ1ZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogQ2xpcCBkYW1hZ2Ug cmVjdCB3aXRoaW4gcGxhbmUgbGltaXQgKi8KPiA+ID4gPiA+ICsJaWYgKCFkcm1fcmVjdF9pbnRl cnNlY3QocmVjdCwgJml0ZXItPnBsYW5lX3NyYykpCj4gPiA+ID4gPiArCQlnb3RvIG5leHRfY2xp cDsKPiA+ID4gPiA+ICsJZWxzZSBpZiAoaXRlci0+dHlwZSAmIERSTV9BVE9NSUNfSEVMUEVSX0RB TUFHRV9DTElQX1RZUEVfUExBTkUpIHsKPiA+ID4gPiA+ICsJCWRybV9yZWN0X3RyYW5zbGF0ZShy ZWN0LCBpdGVyLT50cmFuc2xhdGVfcGxhbmVfeCwKPiA+ID4gPiA+ICsJCQkJICAgaXRlci0+dHJh bnNsYXRlX3BsYW5lX3kpOwo+ID4gPiA+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiA+ID4gPiArCX0K PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogQ2xpcCBkYW1hZ2UgcmVjdCB3aXRoaW4gY3J0YyBs aW1pdCAqLwo+ID4gPiA+ID4gKwlpZiAoIWRybV9yZWN0X2ludGVyc2VjdChyZWN0LCAmaXRlci0+ Y3J0Y19zcmMpKQo+ID4gPiA+ID4gKwkJZ290byBuZXh0X2NsaXA7Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArCWRybV9yZWN0X3RyYW5zbGF0ZShyZWN0LCBpdGVyLT50cmFuc2xhdGVfY3J0Y194LAo+ ID4gPiA+ID4gKwkJCSAgIGl0ZXItPnRyYW5zbGF0ZV9jcnRjX3kpOwo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArRVhQT1JUX1NZTUJP TChkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9uZXh0KTsKPiA+ID4gPiA+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0 b21pY19oZWxwZXIuaAo+ID4gPiA+ID4gaW5kZXggMjZhYWJhNS4uZWJkNGI2NiAxMDA2NDQKPiA+ ID4gPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKPiA+ID4gPiA+ICsr KyBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKPiA+ID4gPiA+IEBAIC0zNiw2ICsz NiwzNyBAQCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsKPiA+ID4gPiA+ICAgIHN0cnVjdCBkcm1f cHJpdmF0ZV9vYmo7Cj4gPiA+ID4gPiAgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGU7Cj4gPiA+ ID4gPiArLyoqCj4gPiA+ID4gPiArICogZW51bSBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfY2xp cF90eXBlIC0gdHlwZSBvZiBjbGlwcyB0byBpdGVyYXRvciBvdmVyCj4gPiA+ID4gPiArICoKPiA+ ID4gPiA+ICsgKiBXaGlsZSB1c2luZyBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciB0aGUg dHlwZSBvZiBjbGlwIGNvb3JkaW5hdGVzIGNhbGxlcgo+ID4gPiA+ID4gKyAqIGlzIGludGVyZXN0 ZWQgaW4uCj4gPiA+ID4gPiArICovCj4gPiA+ID4gPiArZW51bSBkcm1fYXRvbWljX2hlbHBlcl9k YW1hZ2VfY2xpcF90eXBlIHsKPiA+ID4gPiA+ICsJRFJNX0FUT01JQ19IRUxQRVJfREFNQUdFX0NM SVBfVFlQRV9GQiAgICAgICA9IDB4MCwKPiA+ID4gPiA+ICsJRFJNX0FUT01JQ19IRUxQRVJfREFN QUdFX0NMSVBfVFlQRV9QTEFORSAgICA9IDB4MSwKPiA+ID4gPiA+ICsJRFJNX0FUT01JQ19IRUxQ RVJfREFNQUdFX0NMSVBfVFlQRV9DUlRDICAgICA9IDB4MiwKPiA+ID4gPiBJJ20gY29uZnVzZWQg d2l0aCB3aGF0IGV4YWN0bHkgdGhlc2UgZGlmZmVyZW50IHR5cGVzIG9mIGl0ZXJhdG9ycyBhcmUK PiA+ID4gPiBzdXBwb3NlZCB0byBhY2hpZXZlLiBUWVBFX0ZCIG1ha2VzIHNlbnNlLCB0aGF0J3Mg d2hhdCB2bXdnZnggYW5kIG90aGVyCj4gPiA+ID4gdmlydHVhbCBkcml2ZXJzIG5lZWQgdG8gZmln dXJlIG91dCB3aGljaCBwYXJ0cyBvZiBhIGJ1ZmZlciB0byB1cGxvYWQgdG8KPiA+ID4gPiB0aGUg aG9zdC4KPiA+ID4gPiAKPiA+ID4gPiBUWVBFX1BMQU5FIEkgaGF2ZSBubyBpZGVhIHdobyBuZWVk cyB0aGF0LiBJIHN1Z2dlc3Qgd2UganVzdCBkcm9wIGl0Lgo+ID4gPiA+IAo+ID4gPiA+IFRZUEVf Q1JUQyBpcyB3aGF0IEknZCB3YW50IHRvIHVzZSBmb3IgbWFudWFsIHVwbG9hZCBodywgd2VyZSBp bnN0ZWFkIG9mCj4gPiA+ID4gY29tcG9zaXRpbmcgdGhlIGVudGlyZSBzY3JlZW4gd2UgY2FuIGxp bWl0IHRoZSB1cGxvYWRlZCBhcmVhIHRvIDEgb3IgMgo+ID4gPiA+IHJlY3RhbmdsZXMgKGRlcGVu ZGluZyB1cG9uIGhvdyB0aGUgaHcgd29ya3MpLiBCdXQgdGhvc2UgZHJpdmVycyB3YW50IGFsbAo+ ID4gPiA+IHRoZSBjcnRjIGNsaXAgcmVjdHMgZm9yIF9hbGxfIHRoZSBwbGFuZXMgY29tYmluZWQs IG5vdCBmb3IgZWFjaCBwbGFuZQo+ID4gPiA+IGluZGl2aWR1YWxseS4KPiA+ID4gPiAKPiA+ID4g PiBNeSBzdWdnZXN0aW9uIGlzIHRvIGRyb3AgVFlQRV9DUlRDIHVudGlsIHNvbWVvbmUgbmVlZHMg aXQgZm9yIGEgZHJpdmVyLgo+ID4gPiA+IEFuZCBtb3N0IGxpa2VseSB0aGUgb25seSBpdGVyYXRv ciB3ZSB3YW50IGZvciBUWVBFX0NSVEMgaXMgb25lIHRoYXQgZ2l2ZXMKPiA+ID4gPiB5b3UgdGhl IG92ZXJhbGwgZGFtYWdlIGFyZWEsIGluY2x1ZGluZyBhbHBoYS9jdG0vZ2FtbWEvZXZlcnl0aGlu ZyBlbHNlLAo+ID4gPiA+IGNvYWxlc2NlZCBpbnRvIGp1c3QgMSBjbGlwIHJlY3QuIFNvIHByb2Jh Ymx5IGFuIGVudGlyZWx5IGRpZmZlcmVudAo+ID4gPiA+IGZ1bmN0aW9uLgo+ID4gPiBBY3R1YWxs eSBmb3Igdm13Z2Z4LCB0aGUgZGlzcGxheSBwYXJ0IG9mIHRoZSBoYXJkd2FyZSBjb21lcyBpbiBk aWZmZXJlbnQKPiA+ID4gdmVyc2lvbnMgYW5kIHdlJ2QgdHlwaWNhbGx5IGV4cGVjdCBib3RoIHRo ZSBGQiBjb29yZGluYXRlcyBhbmQgdGhlIENSVEMKPiA+ID4gY29vcmRpbmF0ZXMuIEluIHRoZSBs YXRlc3QgdmVyc2lvbiB0aGUgc3VyZmFjZSBiYWNraW5nIHRoZSBzY3JlZW4gbmVlZHMgdG8KPiA+ ID4gZXhhY3RseSBmaXQgdGhlIENSVEMgc2Nhbm91dCBhcmVhLCBhbmQgaWYgdGhlIEZCIGRvZXNu J3QgZG8gdGhhdCwgd2UgbmVlZCB0bwo+ID4gPiBjcmVhdGUgYSBzdXJmYWNlIHRoYXQgZG9lcyBh bmQgY29weSBpbiB0aGUga2VybmVsIGRyaXZlci4gQWZ0ZXIgdGhhdCwgYXMgYQo+ID4gPiBzZWNv bmQgc3RlcCwgd2UgbmVlZCB0byBub3RpZnkgdGhlIGRpc3BsYXkgc3lzdGVtIG9mIHRoZSBkYW1h Z2VkIGFyZWEgaW4KPiA+ID4gQ1JUQyBjb29yZGluYXRlcy4KPiA+IEhtLCB0aGF0J3MgYW4gdW5l eHBlY3RlZCB1c2UtY2FzZS4gSSdtIGxlYW5pbmcgdG93YXJkcyBqdXN0IGhhdmluZyBhIGZiCj4g PiBjb29yZGluYXRpb24gaXRlcmF0b3IgYW5kIGFkanVzdGluZyB0aGUgc3RhdGljIG9mZnNldCBp biB2bXdnZnggY29kZS4gWW91cgo+ID4gdXNlLWNhc2UgaXMgcmF0aGVyIGRpZmZlcmVudCBmcm9t IG1hbnVhbCB1cGxvYWQgc2NyZWVucyBJIHRoaW5rLCBzbyBoYXZpbmcKPiA+IGEgQ1JUQyBkYW1h Z2UgaXRlcmF0b3Igd2hpY2ggZG9lc24ndCBhY3R1YWxseSBkbyB3aGF0IG1vc3Qgb3RoZXIgZHJp dmVycwo+ID4gd2FudCB3aWxsIGJlIGNvbmZ1c2luZy4KPiA+IAo+ID4gQW5kIHNpbmNlIGl0J3Mg anVzdCBhIHN0YXRpYyBkcm1fcmVjdF90cmFuc2xhdGUgZm9yIHlvdSBpdCdsbCBiZSBvbmx5IDEK PiA+IGFkZGl0aW9uYWwgbGluZSBpbiB2bXdnZnguIEltbyB0aGF0J3Mgd29ydGggdGhlIHNhZmVy L2NsZWFuZXIgc2VtYW50aWNzCj4gPiBmb3IgdGhlIGNvcmUgaGVscGVycy4KPiAKPiBTb3VuZHMg cmVhc29uYWJsZS4gV2UgY291bGQgaGF2ZSBhbiBmYiBjb29yZCBpdGVyYXRvciBvbmx5LCBhbmQg ZG8gdGhlCj4gdHJhbnNsYXRpb24gdG8gY3J0YyBjb29yZGluYXRlcyBvdXRzaWRlLiBCdXQgSSBz dGlsbCB0aGluayB3ZSBzaG91bGQgZG8gdGhlCj4gcGxhbmUgY2xpcHBpbmcgaW4KPiB0aGUgaXRl cmF0b3IsIGlmIG5lZWRlZCB3aXRoIGEgYmlnIFdBUk5fT04gZm9yIHRyYW5zZm9ybWVkIHBsYW5l cy4KClNob3VsZG4ndCBuZWVkIGEgV0FSTl9PTiBmb3IgdHJhbnNmb3JtZWQgcGxhbmVzLCBzaW5j ZSB3ZSdkIGNsaXAgdG8gdGhlCnNyYyByZWN0LiBTbyBqdXN0IGFncmVlaW5nIG9uIGhvdyB3ZSdy ZSBnb2luZyB0byByb3VuZCBzdHVmZiAoSSdkIHZvdGUgZm9yCmluY2x1ZGluZyBhbnkgcGFydGlh bCBwaXhlbHMpLgoKT25lIHRyb3VibGUgd2l0aCB0aGlzIGlzIHRoYXQgaWYgdGhlIHBsYW5lIHNy YyBzaGlmdHMsIHdlIG5lZWQgdG8gdXBsb2FkCmFueSBvZiB0aGUgbmV3IHBpeGVscyAoc2luY2Ug d2UgbWlnaHQgaGF2ZSBza2lwcGVkIHRoZW0gcHJldmlvdXNseSkuIFNvCnRoZSBpdGVyYXRvciB3 b3VsZCBuZWVkIHRvIGFkZCB0aG9zZSBvbiBpdHMgb3duIGFzIGEgbmV3IGRpcnR5IHJlY3QuCgpC ZXNpZGVzIHRob3NlIGRldGFpbHMgSSB0aGluayBjbGlwcGluZyB0byB0aGUgdmlzaWJsZSBhcmVh IG1ha2VzIHNlbnNlLgpCdXQgaXQncyBhZ2FpbiBub3QgZW50aXJlbHkgdHJpdmlhbCwgaGVuY2Ug c2VsZnRlc3RzIGZvciB0aGVzZSBzcGVjaWFsCmNhc2VzIHdvdWxkIGJlIHJlYWwgZ29vZC4KClRo YW5rcywgRGFuaWVsCgo+IAo+IC9UaG9tYXMKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK