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 09:52:05 +0200 Message-ID: <20180405075205.GQ3881@phenom.ffwll.local> References: <1522885748-67122-1-git-send-email-drawat@vmware.com> <1522885748-67122-3-git-send-email-drawat@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x236.google.com (mail-wm0-x236.google.com [IPv6:2a00:1450:400c:c09::236]) by gabe.freedesktop.org (Postfix) with ESMTPS id 490AB6E391 for ; Thu, 5 Apr 2018 07:52:11 +0000 (UTC) Received: by mail-wm0-x236.google.com with SMTP id r131so4203330wmb.2 for ; Thu, 05 Apr 2018 00:52:11 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1522885748-67122-3-git-send-email-drawat@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Deepak Rawat Cc: thellstrom@vmware.com, airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-graphics-maintainer@vmware.com, lukasz.spintzyk@displaylink.com List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBBcHIgMDQsIDIwMTggYXQgMDQ6NDk6MDdQTSAtMDcwMCwgRGVlcGFrIFJhd2F0IHdy b3RlOgo+IFdpdGggZGFtYWdlIHByb3BlcnR5IGluIGRybV9wbGFuZV9zdGF0ZSwgdGhpcyBwYXRj aCBhZGRzIGhlbHBlciBpdGVyYXRvcgo+IHRvIHRyYXZlcnNlIHRoZSBkYW1hZ2UgY2xpcHMuIEl0 ZXJhdG9yIHdpbGwgcmV0dXJuIHRoZSBkYW1hZ2UgcmVjdGFuZ2xlcwo+IGluIGZyYW1lYnVmZmVy LCBwbGFuZSBvciBjcnRjIGNvb3JkaW5hdGVzIGFzIG5lZWQgYnkgZHJpdmVyCj4gaW1wbGVtZW50 YXRpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogRGVlcGFrIFJhd2F0IDxkcmF3YXRAdm13YXJlLmNv bT4KCkknZCByZWFsbHkgbGlrZSBzZWxmdGVzdC91bml0dGVzdHMgZm9yIHRoaXMgc3R1ZmYuIFRo ZXJlJ3MgYW4gYXdmdWwgbG90IG9mCmNvcm5lcmNhc2VzIGluIHRoaXMgaGVyZSAoZm9yIGFueSBv ZiB0aGUgdHJhbnNmb3JtZWQgaXRlcmF0b3JzIGF0IGxlYXN0KSwKYW5kIHVuaXQgdGVzdHMgaXMg dGhlIGJlc3Qgd2F5IHRvIG1ha2Ugc3VyZSB3ZSBoYW5kbGUgdGhlbSBhbGwgY29ycmVjdGx5LgoK Qm9udXMgcG9pbnRzIGlmIHlvdSBpbnRlZ3JhdGUgdGhlIG5ldyBzZWxmdGVzdHMgaW50byBpZ3Qg c28gaW50ZWwgQ0kgY2FuCnJ1biB0aGVtLCBzZWVsIGlndC90ZXN0cy9kcm1fbW0uYyBmb3IgYW4g ZXhhbXBsZS4gZHJtX21tIHNlbGZ0ZXN0IGlzIGFsc28KdGhlIGZyYW1ld29yayBJJ2QgY29weSBm b3IgdGhpcyBzdHVmZi4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBl ci5jIHwgMTIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRl L2RybS9kcm1fYXRvbWljX2hlbHBlci5oICAgICB8ICAzOSArKysrKysrKysrKysKPiAgMiBmaWxl cyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jCj4gaW5kZXggNTViNDRlMy4uMzU1YjUxNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gQEAgLTM4NjUsMyArMzg2NSwxMjUgQEAgdm9pZCBfX2RybV9hdG9taWNf aGVscGVyX3ByaXZhdGVfb2JqX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2Jq ICpvYmoKPiAgCW1lbWNweShzdGF0ZSwgb2JqLT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSkpOwo+ICB9 Cj4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9wcml2YXRlX29ial9kdXBsaWNh dGVfc3RhdGUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVy X2luaXQgLSBpbml0aWFsaXplIHRoZSBkYW1hZ2UgaXRlcmF0b3IKPiArICogQGl0ZXI6IFRoZSBp dGVyYXRvciB0byBpbml0aWFsaXplLgo+ICsgKiBAdHlwZTogQ29vcmRpbmF0ZSB0eXBlIGNhbGxl ciBpcyBpbnRlcmVzdGVkIGluLgo+ICsgKiBAc3RhdGU6IHBsYW5lX3N0YXRlIGZyb20gd2hpY2gg dG8gaXRlcmF0ZSB0aGUgZGFtYWdlIGNsaXBzLgo+ICsgKiBAaGRpc3BsYXk6IFdpZHRoIG9mIGNy dGMgb24gd2hpY2ggcGxhbmUgaXMgc2Nhbm5lZCBvdXQuCj4gKyAqIEB2ZGlzcGxheTogSGVpZ2h0 IG9mIGNydGMgb24gd2hpY2ggcGxhbmUgaXMgc2Nhbm5lZCBvdXQuCj4gKyAqCj4gKyAqIEluaXRp YWxpemUgYW4gaXRlcmF0b3IgdGhhdCBpcyB1c2VkIHRvIHRyYW5zbGF0ZSBhbmQgY2xpcCBhIHNl dCBvZiBkYW1hZ2UKPiArICogcmVjdGFuZ2xlcyBpbiBmcmFtZWJ1ZmZlciBjb29yZGluYXRlcyB0 byBwbGFuZSBhbmQgY3J0YyBjb29yZGluYXRlcy4gVGhlIHR5cGUKPiArICogYXJndW1lbnQgc3Bl Y2lmeSB3aGljaCB0eXBlIG9mIGNvb3JkaW5hdGUgdG8gaXRlcmF0ZSBpbi4KPiArICoKPiArICog UmV0dXJuczogMCBvbiBzdWNjZXNzIGFuZCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGVycm9yLiBJ ZiBhbiBlcnJvciBjb2RlIGlzCj4gKyAqIHJldHVybmVkIHRoZW4gaXQgbWVhbnMgdGhlIHBsYW5l IHN0YXRlIHNob3VsZCBub3QgdXBkYXRlLgo+ICsgKi8KPiAraW50Cj4gK2RybV9hdG9taWNfaGVs cGVyX2RhbWFnZV9pdGVyX2luaXQoc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVy ICppdGVyLAo+ICsJCQkJICAgZW51bSBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfY2xpcF90eXBl IHR5cGUsCj4gKwkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwKPiAr CQkJCSAgIHVpbnQzMl90IGhkaXNwbGF5LCB1aW50MzJfdCB2ZGlzcGxheSkKPiArewo+ICsJaWYg KCFzdGF0ZSB8fCAhc3RhdGUtPmNydGMgfHwgIXN0YXRlLT5mYikKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCj4gKwltZW1zZXQoaXRlciwgMCwgc2l6ZW9mKCppdGVyKSk7Cj4gKwlpdGVyLT5jbGlw cyA9IChzdHJ1Y3QgZHJtX3JlY3QgKilzdGF0ZS0+ZGFtYWdlX2NsaXBzLT5kYXRhOwo+ICsJaXRl ci0+bnVtX2NsaXBzID0gc3RhdGUtPm51bV9jbGlwczsKPiArCWl0ZXItPnR5cGUgPSB0eXBlOwo+ ICsKPiArCS8qCj4gKwkgKiBGdWxsIHVwZGF0ZSBpbiBjYXNlIG9mIHNjYWxpbmcgb3Igcm90YXRp b24uIEluIGZ1dHVyZSBzdXBwb3J0IGZvcgo+ICsJICogc2NhbGluZy9yb3RhdGluZyBkYW1hZ2Ug Y2xpcHMgY2FuIGJlIGFkZGVkCj4gKwkgKi8KPiArCWlmIChzdGF0ZS0+Y3J0Y193ICE9IChzdGF0 ZS0+c3JjX3cgPj4gMTYpIHx8Cj4gKwkgICAgc3RhdGUtPmNydGNfaCAhPSBzdGF0ZS0+c3JjX2gg Pj4gMTYgfHwgc3RhdGUtPnJvdGF0aW9uICE9IDApIHsKPiArCQlpdGVyLT5jdXJyX2NsaXAgPSBp dGVyLT5udW1fY2xpcHM7Cj4gKwkJcmV0dXJuIDA7CgpHaXZlbiB0aGVyZSdzIG5vIHVzZXIgb2Yg dGhpcyBJIGhhdmUgbm8gaWRlYSBob3cgdGhpcyBtYW5hZ2VzIHRvIHByb3Zva2UgYQpmdWxsIGNs aXAgcmVjdC4gc2VsZnRlc3QgY29kZSB3b3VsZCBiZSBwZXJmZWN0IGZvciBzdHVmZiBsaWtlIHRo aXMuCgpBbHNvLCBJIHRoaW5rIHdlIHNob3VsZCBwcm92aWRlIGEgZnVsbCBjbGlwIGZvciB0aGUg Y2FzZSBvZiBudW1fY2xpcHMgPT0KMCwgc28gdGhhdCBkcml2ZXIgY29kZSBjYW4gc2ltcGx5IGl0 ZXJhdGUgb3ZlciBhbGwgY2xpcHMgYW5kIGRvZXNuJ3QgZXZlcgpoYXZlIHRvIGhhbmRsZSB0aGUg Im5vIGNsaXAgcmVjdHMgcHJvdmlkZWQiIGNhc2UgYXMgYSBzcGVjaWFsIGNhc2UgaXRzZWxmLgoK PiArCX0KPiArCj4gKwlpdGVyLT5mYl9zcmMueDEgPSAwOwo+ICsJaXRlci0+ZmJfc3JjLnkxID0g MDsKPiArCWl0ZXItPmZiX3NyYy54MiA9IHN0YXRlLT5mYi0+d2lkdGg7Cj4gKwlpdGVyLT5mYl9z cmMueTIgPSBzdGF0ZS0+ZmItPmhlaWdodDsKPiArCj4gKwlpdGVyLT5wbGFuZV9zcmMueDEgPSBz dGF0ZS0+c3JjX3ggPj4gMTY7Cj4gKwlpdGVyLT5wbGFuZV9zcmMueTEgPSBzdGF0ZS0+c3JjX3kg Pj4gMTY7Cj4gKwlpdGVyLT5wbGFuZV9zcmMueDIgPSBpdGVyLT5wbGFuZV9zcmMueDEgKyAoc3Rh dGUtPnNyY193ID4+IDE2KTsKPiArCWl0ZXItPnBsYW5lX3NyYy55MiA9IGl0ZXItPnBsYW5lX3Ny Yy55MSArIChzdGF0ZS0+c3JjX2ggPj4gMTYpOwo+ICsJaXRlci0+dHJhbnNsYXRlX3BsYW5lX3gg PSAtaXRlci0+cGxhbmVfc3JjLngxOwo+ICsJaXRlci0+dHJhbnNsYXRlX3BsYW5lX3kgPSAtaXRl ci0+cGxhbmVfc3JjLnkxOwo+ICsKPiArCS8qIENsaXAgcGxhbmUgc3JjIHJlY3QgdG8gZmIgZGlt ZW5zaW9ucyAqLwo+ICsJZHJtX3JlY3RfaW50ZXJzZWN0KCZpdGVyLT5wbGFuZV9zcmMsICZpdGVy LT5mYl9zcmMpOwoKVGhpcyBzbWVsbHMgbGlrZSBkcml2ZXIgYnVnLiBBbHNvLCBzZWUgVmlsbGUn cyByZWNlbnQgZWZmb3J0cyB0byBpbXByb3ZlCnRoZSBhdG9taWMgcGxhbmUgY2xpcHBpbmcsIEkg dGhpbmsgZHJtX3BsYW5lX3N0YXRlIGFscmVhZHkgaGFzIGFsbCB0aGUKY2xpcCByZWN0cyB5b3Ug d2FudC4KCj4gKwo+ICsJaXRlci0+Y3J0Y19zcmMueDEgPSAwOwo+ICsJaXRlci0+Y3J0Y19zcmMu eTEgPSAwOwo+ICsJaXRlci0+Y3J0Y19zcmMueDIgPSBoZGlzcGxheTsKPiArCWl0ZXItPmNydGNf c3JjLnkyID0gdmRpc3BsYXk7Cj4gKwlpdGVyLT50cmFuc2xhdGVfY3J0Y194ID0gLShpdGVyLT5w bGFuZV9zcmMueDEgLSBzdGF0ZS0+Y3J0Y194KTsKPiArCWl0ZXItPnRyYW5zbGF0ZV9jcnRjX3gg PSAtKGl0ZXItPnBsYW5lX3NyYy55MSAtIHN0YXRlLT5jcnRjX3kpOwo+ICsKPiArCS8qIENsaXAg Y3J0YyBzcmMgcmVjdCB0byBwbGFuZSBkaW1lbnNpb25zICovCj4gKwlkcm1fcmVjdF90cmFuc2xh dGUoJml0ZXItPmNydGNfc3JjLCAtaXRlci0+dHJhbnNsYXRlX2NydGNfeCwKPiArCQkJICAgLWl0 ZXItPnRyYW5zbGF0ZV9jcnRjX3gpOwoKV2UgY2FuIGFsc28gc2NhbGUuCgo+ICsJZHJtX3JlY3Rf aW50ZXJzZWN0KCZpdGVyLT5jcnRjX3NyYywgJml0ZXItPnBsYW5lX3NyYyk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRl cl9pbml0KTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9u ZXh0IC0gYWR2YW5jZSB0aGUgZGFtYWdlIGl0ZXJhdG9yCj4gKyAqIEBpdGVyOiBUaGUgaXRlcmF0 b3IgdG8gYWR2YW5jZS4KPiArICogQHJlY3Q6IFJldHVybiBhIHJlY3RhbmdsZSBpbiBjb29yZGlu YXRlIHNwZWNpZmllZCBkdXJpbmcgaXRlcmF0b3IgaW5pdC4KPiArICoKPiArICogUmV0dXJuczog IHRydWUgaWYgdGhlIG91dHB1dCBpcyB2YWxpZCwgZmFsc2UgaWYgd2UndmUgcmVhY2hlZCB0aGUg ZW5kIG9mIHRoZQo+ICsgKiByZWN0YW5nbGUgbGlzdC4gSWYgdGhlIGZpcnN0IGNhbGwgcmV0dXJu IGZhbHNlLCBtZWFucyBuZWVkIGZ1bGwgdXBkYXRlLgo+ICsgKi8KPiArYm9vbAo+ICtkcm1fYXRv bWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9uZXh0KHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1h Z2VfaXRlciAqaXRlciwKPiArCQkJCSAgIHN0cnVjdCBkcm1fcmVjdCAqcmVjdCkKPiArewo+ICsJ Y29uc3Qgc3RydWN0IGRybV9yZWN0ICpjdXJyX2NsaXA7Cj4gKwo+ICtuZXh0X2NsaXA6Cj4gKwlp ZiAoaXRlci0+Y3Vycl9jbGlwID49IGl0ZXItPm51bV9jbGlwcykKPiArCQlyZXR1cm4gZmFsc2U7 Cj4gKwo+ICsJY3Vycl9jbGlwID0gJml0ZXItPmNsaXBzW2l0ZXItPmN1cnJfY2xpcF07Cj4gKwlp dGVyLT5jdXJyX2NsaXArKzsKPiArCj4gKwlyZWN0LT54MSA9IGN1cnJfY2xpcC0+eDE7Cj4gKwly ZWN0LT54MiA9IGN1cnJfY2xpcC0+eDI7Cj4gKwlyZWN0LT55MSA9IGN1cnJfY2xpcC0+eTE7Cj4g KwlyZWN0LT55MiA9IGN1cnJfY2xpcC0+eTI7Cj4gKwo+ICsJLyogQ2xpcCBkYW1hZ2UgcmVjdCB3 aXRoaW4gZmIgbGltaXQgKi8KPiArCWlmICghZHJtX3JlY3RfaW50ZXJzZWN0KHJlY3QsICZpdGVy LT5mYl9zcmMpKQo+ICsJCWdvdG8gbmV4dF9jbGlwOwo+ICsJZWxzZSBpZiAoaXRlci0+dHlwZSAm IERSTV9BVE9NSUNfSEVMUEVSX0RBTUFHRV9DTElQX1RZUEVfRkIpCj4gKwkJcmV0dXJuIHRydWU7 Cj4gKwo+ICsJLyogQ2xpcCBkYW1hZ2UgcmVjdCB3aXRoaW4gcGxhbmUgbGltaXQgKi8KPiArCWlm ICghZHJtX3JlY3RfaW50ZXJzZWN0KHJlY3QsICZpdGVyLT5wbGFuZV9zcmMpKQo+ICsJCWdvdG8g bmV4dF9jbGlwOwo+ICsJZWxzZSBpZiAoaXRlci0+dHlwZSAmIERSTV9BVE9NSUNfSEVMUEVSX0RB TUFHRV9DTElQX1RZUEVfUExBTkUpIHsKPiArCQlkcm1fcmVjdF90cmFuc2xhdGUocmVjdCwgaXRl ci0+dHJhbnNsYXRlX3BsYW5lX3gsCj4gKwkJCQkgICBpdGVyLT50cmFuc2xhdGVfcGxhbmVfeSk7 Cj4gKwkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4gKwo+ICsJLyogQ2xpcCBkYW1hZ2UgcmVjdCB3aXRo aW4gY3J0YyBsaW1pdCAqLwo+ICsJaWYgKCFkcm1fcmVjdF9pbnRlcnNlY3QocmVjdCwgJml0ZXIt PmNydGNfc3JjKSkKPiArCQlnb3RvIG5leHRfY2xpcDsKPiArCj4gKwlkcm1fcmVjdF90cmFuc2xh dGUocmVjdCwgaXRlci0+dHJhbnNsYXRlX2NydGNfeCwKPiArCQkJICAgaXRlci0+dHJhbnNsYXRl X2NydGNfeSk7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1f YXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9uZXh0KTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2F0b21pY19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgK PiBpbmRleCAyNmFhYmE1Li5lYmQ0YjY2IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9h dG9taWNfaGVscGVyLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oCj4g QEAgLTM2LDYgKzM2LDM3IEBAIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlOwo+ICBzdHJ1Y3QgZHJt X3ByaXZhdGVfb2JqOwo+ICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGU7Cj4gIAo+ICsvKioKPiAr ICogZW51bSBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfY2xpcF90eXBlIC0gdHlwZSBvZiBjbGlw cyB0byBpdGVyYXRvciBvdmVyCj4gKyAqCj4gKyAqIFdoaWxlIHVzaW5nIGRybV9hdG9taWNfaGVs cGVyX2RhbWFnZV9pdGVyIHRoZSB0eXBlIG9mIGNsaXAgY29vcmRpbmF0ZXMgY2FsbGVyCj4gKyAq IGlzIGludGVyZXN0ZWQgaW4uCj4gKyAqLwo+ICtlbnVtIGRybV9hdG9taWNfaGVscGVyX2RhbWFn ZV9jbGlwX3R5cGUgewo+ICsJRFJNX0FUT01JQ19IRUxQRVJfREFNQUdFX0NMSVBfVFlQRV9GQiAg ICAgICA9IDB4MCwKPiArCURSTV9BVE9NSUNfSEVMUEVSX0RBTUFHRV9DTElQX1RZUEVfUExBTkUg ICAgPSAweDEsCj4gKwlEUk1fQVRPTUlDX0hFTFBFUl9EQU1BR0VfQ0xJUF9UWVBFX0NSVEMgICAg ID0gMHgyLAoKSSdtIGNvbmZ1c2VkIHdpdGggd2hhdCBleGFjdGx5IHRoZXNlIGRpZmZlcmVudCB0 eXBlcyBvZiBpdGVyYXRvcnMgYXJlCnN1cHBvc2VkIHRvIGFjaGlldmUuIFRZUEVfRkIgbWFrZXMg c2Vuc2UsIHRoYXQncyB3aGF0IHZtd2dmeCBhbmQgb3RoZXIKdmlydHVhbCBkcml2ZXJzIG5lZWQg dG8gZmlndXJlIG91dCB3aGljaCBwYXJ0cyBvZiBhIGJ1ZmZlciB0byB1cGxvYWQgdG8KdGhlIGhv c3QuCgpUWVBFX1BMQU5FIEkgaGF2ZSBubyBpZGVhIHdobyBuZWVkcyB0aGF0LiBJIHN1Z2dlc3Qg d2UganVzdCBkcm9wIGl0LgoKVFlQRV9DUlRDIGlzIHdoYXQgSSdkIHdhbnQgdG8gdXNlIGZvciBt YW51YWwgdXBsb2FkIGh3LCB3ZXJlIGluc3RlYWQgb2YKY29tcG9zaXRpbmcgdGhlIGVudGlyZSBz Y3JlZW4gd2UgY2FuIGxpbWl0IHRoZSB1cGxvYWRlZCBhcmVhIHRvIDEgb3IgMgpyZWN0YW5nbGVz IChkZXBlbmRpbmcgdXBvbiBob3cgdGhlIGh3IHdvcmtzKS4gQnV0IHRob3NlIGRyaXZlcnMgd2Fu dCBhbGwKdGhlIGNydGMgY2xpcCByZWN0cyBmb3IgX2FsbF8gdGhlIHBsYW5lcyBjb21iaW5lZCwg bm90IGZvciBlYWNoIHBsYW5lCmluZGl2aWR1YWxseS4KCk15IHN1Z2dlc3Rpb24gaXMgdG8gZHJv cCBUWVBFX0NSVEMgdW50aWwgc29tZW9uZSBuZWVkcyBpdCBmb3IgYSBkcml2ZXIuCkFuZCBtb3N0 IGxpa2VseSB0aGUgb25seSBpdGVyYXRvciB3ZSB3YW50IGZvciBUWVBFX0NSVEMgaXMgb25lIHRo YXQgZ2l2ZXMKeW91IHRoZSBvdmVyYWxsIGRhbWFnZSBhcmVhLCBpbmNsdWRpbmcgYWxwaGEvY3Rt L2dhbW1hL2V2ZXJ5dGhpbmcgZWxzZSwKY29hbGVzY2VkIGludG8ganVzdCAxIGNsaXAgcmVjdC4g U28gcHJvYmFibHkgYW4gZW50aXJlbHkgZGlmZmVyZW50CmZ1bmN0aW9uLgoKU3VtbWFyaXppbmcg YWxsIHRoaXMsIEknZCBzaW1wbGlmeSB0aGUgaXRlcmF0b3IgdG86Cgpkcm1fYXRvbWljX2hlbHBl cl9kYW1hZ2VfaXRlcl9pbml0KGl0ZXIsIHBsYW5lX3N0YXRlKTsKCkFuZCBsZWF2ZSB0aGUgb3Ro ZXIgMiB1c2UtY2FzZXMgdG8gdGhlIG5leHQgcGF0Y2ggc2VyaWVzLiBGb3IgY3J0YyBkYW1hZ2UK d2UgcHJvYmFibHkgd2FudDoKCmRybV9hdG9taWNfaGVscGVyX2NydGNfZGFtYWdlKGRybV9hdG9t aWNfc3RhdGUsIHJlY3QpCgpXaGljaCBpbnRlcm5hbGx5IGxvb3BzIG92ZXIgYWxsIHBsYW5lcyBh bmQgYWxzbyB0YWtlcyBhbGwgdGhlIG90aGVyIHN0YXRlCmNoYW5nZXMgaW50byBhY2NvdW50LiBU aGF0IHdheSB5b3UgYWxzbyBkb24ndCBoYXZlIHRvIGZpeCB0aGUgc2NhbGluZwppc3N1ZSwgc2lu Y2UgeW91ciBjdXJyZW50IGNvZGUgb25seSBoYW5kbGVzIHRyYW5zbGF0aW9uLgoKQW5vdGhlciBi aXQ6IGRybV9hdG9taWNfaGVscGVyLmMgaXMgaHVnZSwgSSdkIHZvdGUgdG8gcHV0IGFsbCB0aGlz IHN0dWZmCmludG8gYSBuZXcgZHJtX2RhbWFnZV9oZWxwZXIuW2hjXSwgaW5jbHVkaW5nIG5ldyBz ZWN0aW9uIGluIGRybS1rbXMucnN0CmFuZCBhbGwgdGhhdC4gU3BsaXR0aW5nIHVwIGRybV9hdG9t aWNfaGVscGVyLltoY10gaXMgc29tZXdoZXJlIG9uIG15IHRvZG8KLi4uCgpDaGVlcnMsIERhbmll bAoKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdl X2l0ZXIgLSBkYW1hZ2UgY2xpcCBpdGVyYXRvcgo+ICsgKgo+ICsgKiBUaGlzIGl0ZXJhdG9yIHRy YWNrcyBzdGF0ZSBuZWVkZWQgdG8gd2FsayB0aGUgbGlzdCBvZiBkYW1hZ2UgY2xpcHMuCj4gKyAq Lwo+ICtzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgewo+ICsJZW51bSBkcm1f YXRvbWljX2hlbHBlcl9kYW1hZ2VfY2xpcF90eXBlIHR5cGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJt X3JlY3QgKmNsaXBzOwo+ICsJdWludDMyX3QgbnVtX2NsaXBzOwo+ICsJdWludDMyX3QgY3Vycl9j bGlwOwo+ICsJc3RydWN0IGRybV9yZWN0IGZiX3NyYzsKPiArCWludCB0cmFuc2xhdGVfcGxhbmVf eDsKPiArCWludCB0cmFuc2xhdGVfcGxhbmVfeTsKPiArCXN0cnVjdCBkcm1fcmVjdCBwbGFuZV9z cmM7Cj4gKwlpbnQgdHJhbnNsYXRlX2NydGNfeDsKPiArCWludCB0cmFuc2xhdGVfY3J0Y195Owo+ ICsJc3RydWN0IGRybV9yZWN0IGNydGNfc3JjOwo+ICt9Owo+ICsKPiAgaW50IGRybV9hdG9taWNf aGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCXN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIGludCBkcm1fYXRvbWljX2hlbHBlcl9jaGVj a19wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiBAQCAt MTg1LDYgKzIxNiwxNCBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkgICAgICAgc3RydWN0IGRybV9tb2Rlc2V0X2Fj cXVpcmVfY3R4ICpjdHgpOwo+ICB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJfcHJpdmF0ZV9vYmpf ZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaiwKPiAgCQkJCQkJICAg ICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnN0YXRlKTsKPiAraW50Cj4gK2RybV9hdG9taWNf aGVscGVyX2RhbWFnZV9pdGVyX2luaXQoc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9p dGVyICppdGVyLAo+ICsJCQkJICAgZW51bSBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfY2xpcF90 eXBlIHR5cGUsCj4gKwkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwK PiArCQkJCSAgIHVpbnQzMl90IGhkaXNwbGF5LCB1aW50MzJfdCB2ZGlzcGxheSk7Cj4gK2Jvb2wK PiArZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfbmV4dChzdHJ1Y3QgZHJtX2F0b21pY19o ZWxwZXJfZGFtYWdlX2l0ZXIgKml0ZXIsCj4gKwkJCQkgICBzdHJ1Y3QgZHJtX3JlY3QgKnJlY3Qp Owo+ICAKPiAgLyoqCj4gICAqIGRybV9hdG9taWNfY3J0Y19mb3JfZWFjaF9wbGFuZSAtIGl0ZXJh dGUgb3ZlciBwbGFuZXMgY3VycmVudGx5IGF0dGFjaGVkIHRvIENSVEMKPiAtLSAKPiAyLjcuNAo+ IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=