From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH] drm: Add crtc/encoder/bridge->mode_valid() callbacks Date: Fri, 12 May 2017 14:29:30 +0300 Message-ID: <3470654.vCquJWGtFr@avalon> References: <5da664901535d3675a240af4e06e4741ffdd861a.1494492646.git.joabreu@synopsys.com> <20170512073100.3252-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [IPv6:2001:4b98:dc2:45:216:3eff:febb:480d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 809FE6E00D for ; Fri, 12 May 2017 11:29:29 +0000 (UTC) In-Reply-To: <20170512073100.3252-1-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Jose Abreu , Daniel Vetter , Jose Abreu , Alexey Brodkin , Carlos Palminha List-Id: dri-devel@lists.freedesktop.org SGkgRGFuaWVsLAoKT24gRnJpZGF5IDEyIE1heSAyMDE3IDA5OjMxOjAwIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gRnJvbTogSm9zZSBBYnJldSA8Sm9zZS5BYnJldUBzeW5vcHN5cy5jb20+Cj4gCj4g VGhpcyBhZGRzIGEgbmV3IGNhbGxiYWNrIHRvIGNydGMsIGVuY29kZXIgYW5kIGJyaWRnZSBoZWxw ZXIgZnVuY3Rpb25zCj4gY2FsbGVkIG1vZGVfdmFsaWQoKS4gVGhpcyBjYWxsYmFjayBzaGFsbCBi ZSBpbXBsZW1lbnRlZCBpZiB0aGUKPiBjb3JyZXNwb25kaW5nIGNvbXBvbmVudCBoYXMgc29tZSBz b3J0IG9mIHJlc3RyaWN0aW9uIGluIHRoZSBtb2Rlcwo+IHRoYXQgY2FuIGJlIGRpc3BsYXllZC4g QSBOVUxMIGNhbGxiYWNrIGltcGxpY2F0ZXMgdGhhdCB0aGUgY29tcG9uZW50Cj4gY2FuIGRpc3Bs YXkgYWxsIHRoZSBtb2Rlcy4KPiAKPiBXZSBhbHNvIGNoYW5nZSB0aGUgZG9jdW1lbnRhdGlvbiBz byB0aGF0IHRoZSBuZXcgYW5kIG9sZCBjYWxsYmFja3MKPiBhcmUgY29ycmVjdGx5IGRvY3VtZW50 ZWQuCj4gCj4gT25seSB0aGUgY2FsbGJhY2tzIHdlcmUgaW1wbGVtZW50ZWQgdG8gc2ltcGxpZnkg cmV2aWV3IHByb2Nlc3MsCj4gZm9sbG93aW5nIHBhdGNoZXMgd2lsbCBtYWtlIHVzZSBvZiB0aGVt Lgo+IAo+IENoYW5nZXMgaW4gdjIgZnJvbSBEYW5pZWw6Cj4gLSBVcGRhdGUgdGhlIHdhcm5pbmcg YWJvdXQgaG93IG1vZGVzIGFyZW4ndCBmaWx0ZXJlZCBpbiBhdG9taWNfY2hlY2sgLQo+ICAgdGhl IGhlbGVwcnMgaGVscCBvdXQgYSBsb3QgbW9yZSBub3cuCj4gLSBDb25zaXN0ZW5seSByb2xsIG91 dCB0aGF0IHdhcm5pbmcsIGNydGMvZW5jb2RlcidzIGF0b21pY19jaGVjawo+ICAgbWlzc2VkIGl0 Lgo+IC0gU3ByaW5rbGUgbW9yZSBsaW5rcyBhbGwgb3ZlciB0aGUgcGxhY2UsIHNvIGl0J3MgZWFz aWVyIHRvIHNlZSB3aGVyZQo+ICAgdGhpcyBzdHVmZiBpcyB1c2VkIGFuZCBob3cgdGhlIGRpZmZl cmVuIGhvb2tzIGFyZSByZWxhdGVkLgo+IC0gTm90ZSB0aGF0IC0+bW9kZV92YWxpZCBpcyBvcHRp b25hbCBldmVyeXdoZXJlLgo+IC0gRXhwbGFpbiB3aHkgdGhlIGNvbm5lY3RvcidzIG1vZGVfdmFs aWQgaXMgc3BlY2lhbCBhbmQgZG9lcyBfbm90XyBnZXQKPiAgIGNhbGxlZCBpbiBhdG9taWNfY2hl Y2suCgpBcyBjb21tZW50ZWQgb24gdjIgKGJ1dCBhZnRlciB5b3Ugc2VudCB0aGlzIHBhdGNoKSwg SSB0aGluayB3ZSBuZWVkIHRvIApkb2N1bWVudCBjbGVhcmx5IGhvdyBtb2RlX3ZhbGlkIGFuZCBt b2RlX2ZpeHVwIHNob3VsZCBpbnRlcmFjdC4gSXQncyB2ZXJ5IApjb25mdXNpbmcgZm9yIGRyaXZl ciBhdXRob3JzIGF0IHRoZSBtb21lbnQuCgo+IFNpZ25lZC1vZmYtYnk6IEpvc2UgQWJyZXUgPGpv YWJyZXVAc3lub3BzeXMuY29tPgo+IENjOiBKb3NlIEFicmV1IDxqb2FicmV1QHN5bm9wc3lzLmNv bT4KPiBDYzogQ2FybG9zIFBhbG1pbmhhIDxwYWxtaW5oYUBzeW5vcHN5cy5jb20+Cj4gQ2M6IEFs ZXhleSBCcm9ka2luIDxhYnJvZGtpbkBzeW5vcHN5cy5jb20+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gQ2M6IERhdmUgQWlybGllIDxhaXJsaWVkQGxpbnV4Lmll Pgo+IENjOiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgo+IENjOiBBcmNoaXQg VGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgo+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ICh2MikKPiAtLS0KPiAgaW5jbHVkZS9kcm0v ZHJtX2JyaWRnZS5oICAgICAgICAgICAgICAgICB8ICAzMSArKysrKysrKysKPiAgaW5jbHVkZS9k cm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaCB8IDExNgo+ICsrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0gMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgMzMKPiBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oIGIv aW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gaW5kZXggZmRkODJmY2JmMTY4Li5mNjk0ZGU3NTZl Y2YgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2JyaWRnZS5oCj4gQEAgLTU5LDYgKzU5LDMxIEBAIHN0cnVjdCBkcm1fYnJpZGdl X2Z1bmNzIHsKPiAgCXZvaWQgKCpkZXRhY2gpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ IAo+ICAJLyoqCj4gKwkgKiBAbW9kZV92YWxpZDoKPiArCSAqCj4gKwkgKiBUaGlzIGNhbGxiYWNr IGlzIHVzZWQgdG8gY2hlY2sgaWYgYSBzcGVjaWZpYyBtb2RlIGlzIHZhbGlkIGluIHRoaXMKPiAr CSAqIGJyaWRnZS4gVGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaWYgdGhlIGJyaWRnZSBoYXMg c29tZSBzb3J0IG9mCj4gKwkgKiByZXN0cmljdGlvbiBpbiB0aGUgbW9kZXMgaXQgY2FuIGRpc3Bs YXkuIEZvciBleGFtcGxlLCBhIGdpdmVuIApicmlkZ2UKPiArCSAqIG1heSBiZSByZXNwb25zaWJs ZSB0byBzZXQgYSBjbG9jayB2YWx1ZS4gSWYgdGhlIGNsb2NrIGNhbiBub3QKPiArCSAqIHByb2R1 Y2UgYWxsIHRoZSB2YWx1ZXMgZm9yIHRoZSBhdmFpbGFibGUgbW9kZXMgdGhlbiB0aGlzIGNhbGxi YWNrCj4gKwkgKiBjYW4gYmUgdXNlZCB0byByZXN0cmljdCB0aGUgbnVtYmVyIG9mIG1vZGVzIHRv IG9ubHkgdGhlIG9uZXMgdGhhdAo+ICsJICogY2FuIGJlIGRpc3BsYXllZC4KPiArCSAqCj4gKwkg KiBUaGlzIGhvb2sgaXMgdXNlZCBieSB0aGUgcHJvYmUgaGVscGVycyB0byBmaWx0ZXIgdGhlIG1v ZGUgbGlzdCBpbgo+ICsJICogZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVz KCksIGFuZCBpdCBpcyB1c2VkIGJ5IHRoZQo+ICsJICogYXRvbWljIGhlbHBlcnMgdG8gdmFsaWRh dGUgbW9kZXMgc3VwcGxpZWQgYnkgdXNlcnNwYWNlIGluCj4gKwkgKiBkcm1fYXRvbWljX2hlbHBl cl9jaGVja19tb2Rlc2V0KCkuCj4gKwkgKgo+ICsJICogVGhpcyBmdW5jdGlvbiBpcyBvcHRpb25h bC4KPiArCSAqCj4gKwkgKiBSRVRVUk5TOgo+ICsJICoKPiArCSAqIGRybV9tb2RlX3N0YXR1cyBF bnVtCj4gKwkgKi8KPiArCWVudW0gZHJtX21vZGVfc3RhdHVzICgqbW9kZV92YWxpZCkoc3RydWN0 IGRybV9icmlkZ2UgKmNydGMsCj4gKwkJCQkJICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgCiptb2RlKTsKPiArCj4gKwkvKioKPiAgCSAqIEBtb2RlX2ZpeHVwOgo+ICAJICoKPiAgCSAq IFRoaXMgY2FsbGJhY2sgaXMgdXNlZCB0byB2YWxpZGF0ZSBhbmQgYWRqdXN0IGEgbW9kZS4gVGhl IHBhcmFtYXRlcgo+IEBAIC04Miw2ICsxMDcsMTIgQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mg ewo+ICAJICogTk9UIHRvdWNoIGFueSBwZXJzaXN0ZW50IHN0YXRlIChoYXJkd2FyZSBvciBzb2Z0 d2FyZSkgb3IgZGF0YQo+ICAJICogc3RydWN0dXJlcyBleGNlcHQgdGhlIHBhc3NlZCBpbiBAc3Rh dGUgcGFyYW1ldGVyLgo+ICAJICoKPiArCSAqIEFsc28gYmV3YXJlIHRoYXQgdXNlcnNwYWNlIGNh biByZXF1ZXN0IGl0cyBvd24gY3VzdG9tIG1vZGVzLCAKbmVpdGhlcgo+ICsJICogY29yZSBub3Ig aGVscGVycyBmaWx0ZXIgbW9kZXMgdG8gdGhlIGxpc3Qgb2YgcHJvYmUgbW9kZXMgcmVwb3J0ZWQg CmJ5Cj4gKwkgKiB0aGUgR0VUQ09OTkVDVE9SIElPQ1RMIGFuZCBzdG9yZWQgaW4gJmRybV9jb25u ZWN0b3IubW9kZXMuIFRvIAplbnN1cmUKPiArCSAqIHRoYXQgbW9kZXMgYXJlIGZpbHRlcmVkIGNv bnNpc3RlbnRseSBwdXQgYW55IGJyaWRnZSBjb25zdHJhaW50cyBhbmQKPiArCSAqIGxpbWl0cyBj aGVja3MgaW50byBAbW9kZV92YWxpZC4KPiArCSAqCj4gIAkgKiBSRVRVUk5TOgo+ICAJICoKPiAg CSAqIFRydWUgaWYgYW4gYWNjZXB0YWJsZSBjb25maWd1cmF0aW9uIGlzIHBvc3NpYmxlLCBmYWxz ZSBpZiB0aGUgCm1vZGVzZXQKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRf aGVscGVyX3Z0YWJsZXMuaAo+IGIvaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJs ZXMuaCBpbmRleCBjMDFjMzI4ZjZjYzguLjkxZDA3MWZmMTIzMgo+IDEwMDY0NAo+IC0tLSBhL2lu Y2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmgKPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oCj4gQEAgLTEwNiw2ICsxMDYsMzEgQEAgc3Ry dWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyB7Cj4gIAl2b2lkICgqY29tbWl0KShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpOwo+IAo+ICAJLyoqCj4gKwkgKiBAbW9kZV92YWxpZDoKPiArCSAqCj4gKwkg KiBUaGlzIGNhbGxiYWNrIGlzIHVzZWQgdG8gY2hlY2sgaWYgYSBzcGVjaWZpYyBtb2RlIGlzIHZh bGlkIGluIHRoaXMKPiArCSAqIGNydGMuIFRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIHRo ZSBjcnRjIGhhcyBzb21lIHNvcnQgb2YKPiArCSAqIHJlc3RyaWN0aW9uIGluIHRoZSBtb2RlcyBp dCBjYW4gZGlzcGxheS4gRm9yIGV4YW1wbGUsIGEgZ2l2ZW4gY3J0Ywo+ICsJICogbWF5IGJlIHJl c3BvbnNpYmxlIHRvIHNldCBhIGNsb2NrIHZhbHVlLiBJZiB0aGUgY2xvY2sgY2FuIG5vdAo+ICsJ ICogcHJvZHVjZSBhbGwgdGhlIHZhbHVlcyBmb3IgdGhlIGF2YWlsYWJsZSBtb2RlcyB0aGVuIHRo aXMgY2FsbGJhY2sKPiArCSAqIGNhbiBiZSB1c2VkIHRvIHJlc3RyaWN0IHRoZSBudW1iZXIgb2Yg bW9kZXMgdG8gb25seSB0aGUgb25lcyB0aGF0Cj4gKwkgKiBjYW4gYmUgZGlzcGxheWVkLgo+ICsJ ICoKPiArCSAqIFRoaXMgaG9vayBpcyB1c2VkIGJ5IHRoZSBwcm9iZSBoZWxwZXJzIHRvIGZpbHRl ciB0aGUgbW9kZSBsaXN0IGluCj4gKwkgKiBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0 b3JfbW9kZXMoKSwgYW5kIGl0IGlzIHVzZWQgYnkgdGhlCj4gKwkgKiBhdG9taWMgaGVscGVycyB0 byB2YWxpZGF0ZSBtb2RlcyBzdXBwbGllZCBieSB1c2Vyc3BhY2UgaW4KPiArCSAqIGRybV9hdG9t aWNfaGVscGVyX2NoZWNrX21vZGVzZXQoKS4KPiArCSAqCj4gKwkgKiBUaGlzIGZ1bmN0aW9uIGlz IG9wdGlvbmFsLgo+ICsJICoKPiArCSAqIFJFVFVSTlM6Cj4gKwkgKgo+ICsJICogZHJtX21vZGVf c3RhdHVzIEVudW0KPiArCSAqLwo+ICsJZW51bSBkcm1fbW9kZV9zdGF0dXMgKCptb2RlX3ZhbGlk KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkJICAgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgCiptb2RlKTsKPiArCj4gKwkvKioKPiAgCSAqIEBtb2RlX2ZpeHVwOgo+ICAJICoK PiAgCSAqIFRoaXMgY2FsbGJhY2sgaXMgdXNlZCB0byB2YWxpZGF0ZSBhIG1vZGUuIFRoZSBwYXJh bWV0ZXIgbW9kZSBpcyB0aGUKPiBAQCAtMTMyLDIwICsxNTcsMTEgQEAgc3RydWN0IGRybV9jcnRj X2hlbHBlcl9mdW5jcyB7Cj4gIAkgKiBBdG9taWMgZHJpdmVycyB3aGljaCBuZWVkIHRvIGluc3Bl Y3QgYW5kIGFkanVzdCBtb3JlIHN0YXRlIHNob3VsZAo+ICAJICogaW5zdGVhZCB1c2UgdGhlIEBh dG9taWNfY2hlY2sgY2FsbGJhY2suCj4gIAkgKgo+IC0JICogQWxzbyBiZXdhcmUgdGhhdCBuZWl0 aGVyIGNvcmUgbm9yIGhlbHBlcnMgZmlsdGVyIG1vZGVzIGJlZm9yZQo+IC0JICogcGFzc2luZyB0 aGVtIHRvIHRoZSBkcml2ZXI6IFdoaWxlIHRoZSBsaXN0IG9mIG1vZGVzIHRoYXQgaXMKPiAtCSAq IGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGlzIGZpbHRlcmVkIHVzaW5nIHRoZQo+IC0JICogJmRy bV9jb25uZWN0b3IubW9kZV92YWxpZCBjYWxsYmFjaywgbmVpdGhlciB0aGUgY29yZSBub3IgdGhl IApoZWxwZXJzCj4gLQkgKiBkbyBhbnkgZmlsdGVyaW5nIG9uIG1vZGVzIHBhc3NlZCBpbiBmcm9t IHVzZXJzcGFjZSB3aGVuIHNldHRpbmcgYQo+IC0JICogbW9kZS4gSXQgaXMgdGhlcmVmb3JlIHBv c3NpYmxlIGZvciB1c2Vyc3BhY2UgdG8gcGFzcyBpbiBhIG1vZGUgdGhhdAo+IC0JICogd2FzIHBy ZXZpb3VzbHkgZmlsdGVyZWQgb3V0IHVzaW5nICZkcm1fY29ubmVjdG9yLm1vZGVfdmFsaWQgb3Ig YWRkIAphCj4gLQkgKiBjdXN0b20gbW9kZSB0aGF0IHdhc24ndCBwcm9iZWQgZnJvbSBFRElEIG9y IHNpbWlsYXIgdG8gYmVnaW4gd2l0aC4KPiAtCSAqIEV2ZW4gdGhvdWdoIHRoaXMgaXMgYW4gYWR2 YW5jZWQgZmVhdHVyZSBhbmQgcmFyZWx5IHVzZWQgbm93YWRheXMsCj4gLQkgKiBzb21lIHVzZXJz IHJlbHkgb24gYmVpbmcgYWJsZSB0byBzcGVjaWZ5IG1vZGVzIG1hbnVhbGx5IHNvIGRyaXZlcnMK PiAtCSAqIG11c3QgYmUgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIGl0LiBTcGVjaWZpY2FsbHkgdGhp cyBtZWFucyB0aGF0IGFsbAo+IC0JICogZHJpdmVycyBuZWVkIG5vdCBvbmx5IHZhbGlkYXRlIG1v ZGVzIGluICZkcm1fY29ubmVjdG9yLm1vZGVfdmFsaWQgCmJ1dAo+IC0JICogYWxzbyBpbiB0aGlz IG9yIGluIHRoZSAmZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzLm1vZGVfZml4dXAgCmNhbGxiYWNr Cj4gLQkgKiB0byBtYWtlIHN1cmUgaW52YWxpZCBtb2RlcyBwYXNzZWQgaW4gZnJvbSB1c2Vyc3Bh Y2UgYXJlIHJlamVjdGVkLgo+ICsJICogQWxzbyBiZXdhcmUgdGhhdCB1c2Vyc3BhY2UgY2FuIHJl cXVlc3QgaXRzIG93biBjdXN0b20gbW9kZXMsIApuZWl0aGVyCj4gKwkgKiBjb3JlIG5vciBoZWxw ZXJzIGZpbHRlciBtb2RlcyB0byB0aGUgbGlzdCBvZiBwcm9iZSBtb2RlcyByZXBvcnRlZCAKYnkK PiArCSAqIHRoZSBHRVRDT05ORUNUT1IgSU9DVEwgYW5kIHN0b3JlZCBpbiAmZHJtX2Nvbm5lY3Rv ci5tb2Rlcy4gVG8gCmVuc3VyZQo+ICsJICogdGhhdCBtb2RlcyBhcmUgZmlsdGVyZWQgY29uc2lz dGVudGx5IHB1dCBhbnkgQ1JUQyBjb25zdHJhaW50cyBhbmQKPiArCSAqIGxpbWl0cyBjaGVja3Mg aW50byBAbW9kZV92YWxpZC4KPiAgCSAqCj4gIAkgKiBSRVRVUk5TOgo+ICAJICoKPiBAQCAtMzQx LDYgKzM1NywxMiBAQCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIHsKPiAgCSAqIHN0YXRl IG9iamVjdHMgcGFzc2VkLWluIG9yIGFzc2VtYmxlZCBpbiB0aGUgb3ZlcmFsbCAKJmRybV9hdG9t aWNfc3RhdGUKPiAgCSAqIHVwZGF0ZSB0cmFja2luZyBzdHJ1Y3R1cmUuCj4gIAkgKgo+ICsJICog QWxzbyBiZXdhcmUgdGhhdCB1c2Vyc3BhY2UgY2FuIHJlcXVlc3QgaXRzIG93biBjdXN0b20gbW9k ZXMsIApuZWl0aGVyCj4gKwkgKiBjb3JlIG5vciBoZWxwZXJzIGZpbHRlciBtb2RlcyB0byB0aGUg bGlzdCBvZiBwcm9iZSBtb2RlcyByZXBvcnRlZCAKYnkKPiArCSAqIHRoZSBHRVRDT05ORUNUT1Ig SU9DVEwgYW5kIHN0b3JlZCBpbiAmZHJtX2Nvbm5lY3Rvci5tb2Rlcy4gVG8gCmVuc3VyZQo+ICsJ ICogdGhhdCBtb2RlcyBhcmUgZmlsdGVyZWQgY29uc2lzdGVudGx5IHB1dCBhbnkgQ1JUQyBjb25z dHJhaW50cyBhbmQKPiArCSAqIGxpbWl0cyBjaGVja3MgaW50byBAbW9kZV92YWxpZC4KPiArCSAq Cj4gIAkgKiBSRVRVUk5TOgo+ICAJICoKPiAgCSAqIDAgb24gc3VjY2VzcywgLUVJTlZBTCBpZiB0 aGUgc3RhdGUgb3IgdGhlIHRyYW5zaXRpb24gY2FuJ3QgYmUKPiBAQCAtNDU3LDYgKzQ3OSwzMSBA QCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIHsKPiAgCXZvaWQgKCpkcG1zKShzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2RlKTsKPiAKPiAgCS8qKgo+ICsJICogQG1v ZGVfdmFsaWQ6Cj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyB1c2VkIHRvIGNoZWNrIGlm IGEgc3BlY2lmaWMgbW9kZSBpcyB2YWxpZCBpbiB0aGlzCj4gKwkgKiBlbmNvZGVyLiBUaGlzIHNo b3VsZCBiZSBpbXBsZW1lbnRlZCBpZiB0aGUgZW5jb2RlciBoYXMgc29tZSBzb3J0Cj4gKwkgKiBv ZiByZXN0cmljdGlvbiBpbiB0aGUgbW9kZXMgaXQgY2FuIGRpc3BsYXkuIEZvciBleGFtcGxlLCBh IGdpdmVuCj4gKwkgKiBlbmNvZGVyIG1heSBiZSByZXNwb25zaWJsZSB0byBzZXQgYSBjbG9jayB2 YWx1ZS4gSWYgdGhlIGNsb2NrIGNhbgo+ICsJICogbm90IHByb2R1Y2UgYWxsIHRoZSB2YWx1ZXMg Zm9yIHRoZSBhdmFpbGFibGUgbW9kZXMgdGhlbiB0aGlzIApjYWxsYmFjawo+ICsJICogY2FuIGJl IHVzZWQgdG8gcmVzdHJpY3QgdGhlIG51bWJlciBvZiBtb2RlcyB0byBvbmx5IHRoZSBvbmVzIHRo YXQKPiArCSAqIGNhbiBiZSBkaXNwbGF5ZWQuCj4gKwkgKgo+ICsJICogVGhpcyBob29rIGlzIHVz ZWQgYnkgdGhlIHByb2JlIGhlbHBlcnMgdG8gZmlsdGVyIHRoZSBtb2RlIGxpc3QgaW4KPiArCSAq IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcygpLCBhbmQgaXQgaXMgdXNl ZCBieSB0aGUKPiArCSAqIGF0b21pYyBoZWxwZXJzIHRvIHZhbGlkYXRlIG1vZGVzIHN1cHBsaWVk IGJ5IHVzZXJzcGFjZSBpbgo+ICsJICogZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldCgp Lgo+ICsJICoKPiArCSAqIFRoaXMgZnVuY3Rpb24gaXMgb3B0aW9uYWwuCj4gKwkgKgo+ICsJICog UkVUVVJOUzoKPiArCSAqCj4gKwkgKiBkcm1fbW9kZV9zdGF0dXMgRW51bQo+ICsJICovCj4gKwll bnVtIGRybV9tb2RlX3N0YXR1cyAoKm1vZGVfdmFsaWQpKHN0cnVjdCBkcm1fZW5jb2RlciAqY3J0 YywKPiArCQkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAKKm1vZGUpOwo+ICsK PiArCS8qKgo+ICAJICogQG1vZGVfZml4dXA6Cj4gIAkgKgo+ICAJICogVGhpcyBjYWxsYmFjayBp cyB1c2VkIHRvIHZhbGlkYXRlIGFuZCBhZGp1c3QgYSBtb2RlLiBUaGUgcGFyYW1ldGVyCj4gQEAg LTQ4MiwyMSArNTI5LDExIEBAIHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3Mgewo+ICAJ ICogQXRvbWljIGRyaXZlcnMgd2hpY2ggbmVlZCB0byBpbnNwZWN0IGFuZCBhZGp1c3QgbW9yZSBz dGF0ZSBzaG91bGQKPiAgCSAqIGluc3RlYWQgdXNlIHRoZSBAYXRvbWljX2NoZWNrIGNhbGxiYWNr Lgo+ICAJICoKPiAtCSAqIEFsc28gYmV3YXJlIHRoYXQgbmVpdGhlciBjb3JlIG5vciBoZWxwZXJz IGZpbHRlciBtb2RlcyBiZWZvcmUKPiAtCSAqIHBhc3NpbmcgdGhlbSB0byB0aGUgZHJpdmVyOiBX aGlsZSB0aGUgbGlzdCBvZiBtb2RlcyB0aGF0IGlzCj4gLQkgKiBhZHZlcnRpc2VkIHRvIHVzZXJz cGFjZSBpcyBmaWx0ZXJlZCB1c2luZyB0aGUgY29ubmVjdG9yJ3MKPiAtCSAqICZkcm1fY29ubmVj dG9yX2hlbHBlcl9mdW5jcy5tb2RlX3ZhbGlkIGNhbGxiYWNrLCBuZWl0aGVyIHRoZSBjb3JlIApu b3IKPiAtCSAqIHRoZSBoZWxwZXJzIGRvIGFueSBmaWx0ZXJpbmcgb24gbW9kZXMgcGFzc2VkIGlu IGZyb20gdXNlcnNwYWNlIHdoZW4KPiAtCSAqIHNldHRpbmcgYSBtb2RlLiBJdCBpcyB0aGVyZWZv cmUgcG9zc2libGUgZm9yIHVzZXJzcGFjZSB0byBwYXNzIGluIGEKPiAtCSAqIG1vZGUgdGhhdCB3 YXMgcHJldmlvdXNseSBmaWx0ZXJlZCBvdXQgdXNpbmcKPiAtCSAqICZkcm1fY29ubmVjdG9yX2hl bHBlcl9mdW5jcy5tb2RlX3ZhbGlkIG9yIGFkZCBhIGN1c3RvbSBtb2RlIHRoYXQKPiAtCSAqIHdh c24ndCBwcm9iZWQgZnJvbSBFRElEIG9yIHNpbWlsYXIgdG8gYmVnaW4gd2l0aC4gIEV2ZW4gdGhv dWdoIHRoaXMKPiAtCSAqIGlzIGFuIGFkdmFuY2VkIGZlYXR1cmUgYW5kIHJhcmVseSB1c2VkIG5v d2FkYXlzLCBzb21lIHVzZXJzIHJlbHkgb24KPiAtCSAqIGJlaW5nIGFibGUgdG8gc3BlY2lmeSBt b2RlcyBtYW51YWxseSBzbyBkcml2ZXJzIG11c3QgYmUgcHJlcGFyZWQgdG8KPiAtCSAqIGRlYWwg d2l0aCBpdC4gU3BlY2lmaWNhbGx5IHRoaXMgbWVhbnMgdGhhdCBhbGwgZHJpdmVycyBuZWVkIG5v dCAKb25seQo+IC0JICogdmFsaWRhdGUgbW9kZXMgaW4gJmRybV9jb25uZWN0b3IubW9kZV92YWxp ZCBidXQgYWxzbyBpbiB0aGlzIG9yIGluCj4gLQkgKiB0aGUgJmRybV9jcnRjX2hlbHBlcl9mdW5j cy5tb2RlX2ZpeHVwIGNhbGxiYWNrIHRvIG1ha2Ugc3VyZQo+IC0JICogaW52YWxpZCBtb2RlcyBw YXNzZWQgaW4gZnJvbSB1c2Vyc3BhY2UgYXJlIHJlamVjdGVkLgo+ICsJICogQWxzbyBiZXdhcmUg dGhhdCB1c2Vyc3BhY2UgY2FuIHJlcXVlc3QgaXRzIG93biBjdXN0b20gbW9kZXMsIApuZWl0aGVy Cj4gKwkgKiBjb3JlIG5vciBoZWxwZXJzIGZpbHRlciBtb2RlcyB0byB0aGUgbGlzdCBvZiBwcm9i ZSBtb2RlcyByZXBvcnRlZCAKYnkKPiArCSAqIHRoZSBHRVRDT05ORUNUT1IgSU9DVEwgYW5kIHN0 b3JlZCBpbiAmZHJtX2Nvbm5lY3Rvci5tb2Rlcy4gVG8gCmVuc3VyZQo+ICsJICogdGhhdCBtb2Rl cyBhcmUgZmlsdGVyZWQgY29uc2lzdGVudGx5IHB1dCBhbnkgZW5jb2RlciBjb25zdHJhaW50cyAK YW5kCj4gKwkgKiBsaW1pdHMgY2hlY2tzIGludG8gQG1vZGVfdmFsaWQuCj4gIAkgKgo+ICAJICog UkVUVVJOUzoKPiAgCSAqCj4gQEAgLTY4Niw2ICs3MjMsMTIgQEAgc3RydWN0IGRybV9lbmNvZGVy X2hlbHBlcl9mdW5jcyB7Cj4gIAkgKiBzdGF0ZSBvYmplY3RzIHBhc3NlZC1pbiBvciBhc3NlbWJs ZWQgaW4gdGhlIG92ZXJhbGwgCiZkcm1fYXRvbWljX3N0YXRlCj4gIAkgKiB1cGRhdGUgdHJhY2tp bmcgc3RydWN0dXJlLgo+ICAJICoKPiArCSAqIEFsc28gYmV3YXJlIHRoYXQgdXNlcnNwYWNlIGNh biByZXF1ZXN0IGl0cyBvd24gY3VzdG9tIG1vZGVzLCAKbmVpdGhlcgo+ICsJICogY29yZSBub3Ig aGVscGVycyBmaWx0ZXIgbW9kZXMgdG8gdGhlIGxpc3Qgb2YgcHJvYmUgbW9kZXMgcmVwb3J0ZWQg CmJ5Cj4gKwkgKiB0aGUgR0VUQ09OTkVDVE9SIElPQ1RMIGFuZCBzdG9yZWQgaW4gJmRybV9jb25u ZWN0b3IubW9kZXMuIFRvIAplbnN1cmUKPiArCSAqIHRoYXQgbW9kZXMgYXJlIGZpbHRlcmVkIGNv bnNpc3RlbnRseSBwdXQgYW55IGVuY29kZXIgY29uc3RyYWludHMgCmFuZAo+ICsJICogbGltaXRz IGNoZWNrcyBpbnRvIEBtb2RlX3ZhbGlkLgo+ICsJICoKPiAgCSAqIFJFVFVSTlM6Cj4gIAkgKgo+ ICAJICogMCBvbiBzdWNjZXNzLCAtRUlOVkFMIGlmIHRoZSBzdGF0ZSBvciB0aGUgdHJhbnNpdGlv biBjYW4ndCBiZQo+IEBAIC03OTUsMTMgKzgzOCwyMCBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3Mgewo+ICAJICogKHdoaWNoIGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRoZSBF RElEIGRhdGEgYmxvY2sgZnJvbSB0aGUgc2luaykuCj4gIAkgKiBTZWUgZS5nLiBkcm1faGVscGVy X3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMoKS4KPiAgCSAqCj4gKwkgKiBUaGlzIGZ1bmN0 aW9uIGlzIG9wdGlvbmFsLgo+ICsJICoKPiAgCSAqIE5PVEU6Cj4gIAkgKgo+ICAJICogVGhpcyBv bmx5IGZpbHRlcnMgdGhlIG1vZGUgbGlzdCBzdXBwbGllZCB0byB1c2Vyc3BhY2UgaW4gdGhlCj4g LQkgKiBHRVRDT05ORUNPVFIgSU9DVEwuIFVzZXJzcGFjZSBpcyBmcmVlIHRvIGNyZWF0ZSBtb2Rl cyBvZiBpdHMgb3duIAphbmQKPiAtCSAqIGFzayB0aGUga2VybmVsIHRvIHVzZSB0aGVtLiBJdCB0 aGlzIGNhc2UgdGhlIGF0b21pYyBoZWxwZXJzIG9yIApsZWdhY3kKPiAtCSAqIENSVEMgaGVscGVy cyB3aWxsIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24uIERyaXZlcnMgdGhlcmVmb3JlIG11c3QKPiAt CSAqIHN0aWxsIGZ1bGx5IHZhbGlkYXRlIGFueSBtb2RlIHBhc3NlZCBpbiBpbiBhIG1vZGVzZXQg cmVxdWVzdC4KPiArCSAqIEdFVENPTk5FQ1RPUiBJT0NUTC4gQ29tcGFyZWQgdG8gCiZkcm1fZW5j b2Rlcl9oZWxwZXJfZnVuY3MubW9kZV92YWxpZCwKPiArCSAqICZkcm1fY3J0Y19oZWxwZXJfZnVu Y3MubW9kZV92YWxpZCBhbmQgJmRybV9icmlkZ2VfZnVuY3MubW9kZV92YWxpZCwKPiArCSAqIHdo aWNoIGFyZSBhbHNvIGNhbGxlZCBieSB0aGUgYXRvbWljIGhlbHBlcnMgZnJvbQo+ICsJICogZHJt X2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldCgpLiBUaGlzIGFsbG93cyB1c2Vyc3BhY2UgdG8g Zm9yY2UgCmFuZAo+ICsJICogaWdub3JlIHNpbmsgY29uc3RyYWludCAobGlrZSB0aGUgcGl4ZWwg Y2xvY2sgbGltaXRzIGluIHRoZSBzY3JlZW4ncwo+ICsJICogRURJRCksIHdoaWNoIGlzIHVzZWZ1 bCBmb3IgZS5nLiB0ZXN0aW5nLCBvciB3b3JraW5nIGFyb3VuZCBhIGJyb2tlbgo+ICsJICogRURJ RC4gQW55IHNvdXJjZSBoYXJkd2FyZSBjb25zdHJhaW50ICh3aGljaCBhbHdheXMgbmVlZCB0byBi ZQo+ICsJICogZW5mb3JjZWQpIHRoZXJlZm9yZSBzaG91bGQgYmUgY2hlY2tlZCBpbiBvbmUgb2Yg dGhlIGFib3ZlIApjYWxsYmFja3MsCj4gKwkgKiBhbmQgbm90IHRoaXMgb25lIGhlcmUuCj4gIAkg Kgo+ICAJICogVG8gYXZvaWQgcmFjZXMgd2l0aCBjb25jdXJyZW50IGNvbm5lY3RvciBzdGF0ZSB1 cGRhdGVzLCB0aGUgaGVscGVyCj4gIAkgKiBsaWJyYXJpZXMgYWx3YXlzIGNhbGwgdGhpcyB3aXRo IHRoZSAKJmRybV9tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4CgotLSAKUmVnYXJkcywKCkxh dXJlbnQgUGluY2hhcnQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=