From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [RFC 2/4] drm: writeback: Add out-fences for writeback connectors Date: Fri, 23 Feb 2018 11:14:11 -0500 Message-ID: <20180223161411.GK223881@art_vandelay> References: <20180223131758.18362-1-robdclark@gmail.com> <20180223131758.18362-3-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180223131758.18362-3-robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Rob Clark Cc: Maarten Lankhorst , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Liviu Dudau , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, David Airlie , Sean Paul , Gustavo Padovan , Mihail Atanassov , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Brian Starkey List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMDg6MTc6NTJBTSAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IEZyb206IEJyaWFuIFN0YXJrZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4KPiAKPiBBZGQg dGhlIFdSSVRFQkFDS19PVVRfRkVOQ0VfUFRSIHByb3BlcnR5IHRvIHdyaXRlYmFjayBjb25uZWN0 b3JzLCB0bwo+IGVuYWJsZSB1c2Vyc3BhY2UgdG8gZ2V0IGEgZmVuY2Ugd2hpY2ggd2lsbCBzaWdu YWwgb25jZSB0aGUgd3JpdGViYWNrIGlzCj4gY29tcGxldGUuIEl0IGlzIG5vdCBhbGxvd2VkIHRv IHJlcXVlc3QgYW4gb3V0LWZlbmNlIHdpdGhvdXQgYQo+IGZyYW1lYnVmZmVyIGF0dGFjaGVkIHRv IHRoZSBjb25uZWN0b3IuCj4gCj4gQSB0aW1lbGluZSBpcyBhZGRlZCB0byBkcm1fd3JpdGViYWNr X2Nvbm5lY3RvciBmb3IgdXNlIGJ5IHRoZSB3cml0ZWJhY2sKPiBvdXQtZmVuY2VzLgo+IAo+IElu IHRoZSBjYXNlIG9mIGEgY29tbWl0IGZhaWx1cmUgb3IgRFJNX01PREVfQVRPTUlDX1RFU1RfT05M WSwgdGhlIGZlbmNlCj4gaXMgc2V0IHRvIC0xLgo+IAo+IENoYW5nZXMgZnJvbSB2MjoKPiAgLSBS ZWJhc2Ugb250byBHdXN0YXZvIFBhZG92YW4ncyB2OSBleHBsaWNpdCBzeW5jIHNlcmllcwo+ICAt IENoYW5nZSBvdXRfZmVuY2VfcHRyIHR5cGUgdG8gczMyIF9fdXNlciAqCj4gIC0gU2V0ICpvdXRf ZmVuY2VfcHRyIHRvIC0xIGluIGRybV9hdG9taWNfY29ubmVjdG9yX3NldF9wcm9wZXJ0eQo+ICAt IFN0b3JlIGZlbmNlIGluIGRybV93cml0ZWJhY2tfam9iCj4gIEd1c3Rhdm8gUGFkb3ZhbjoKPiAg LSBNb3ZlIG91dF9mZW5jZV9wdHIgb3V0IG9mIGNvbm5lY3Rvcl9zdGF0ZQo+ICAtIFNpZ25hbCBm ZW5jZSBmcm9tIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24gaW5zdGVhZCBvZgo+ICAg IGluIGRyaXZlciBkaXJlY3RseQo+IAo+IENoYW5nZXMgZnJvbSB2MzoKPiAgLSBSZWJhc2Ugb250 byA3ZTkwODFjNWFhYzcgZHJtL2ZlbmNlOiBmaXggbWVtb3J5IG92ZXJ3cml0ZSB3aGVuIHNldHRp bmcgb3V0X2ZlbmNlIGZkCj4gICAgKGNoYW5nZSBvdXRfZmVuY2VfcHRyIHRvIHMzMiBfX3VzZXIg KiwgZm9yIHJlYWwgdGhpcyB0aW1lLikKPiAgLSBVcGRhdGUgZG9jdW1lbnRhdGlvbiBhcm91bmQg V1JJVEVCQUNLX09VVF9GRU5DRV9QVFIKPiAKPiBTaWduZWQtb2ZmLWJ5OiBCcmlhbiBTdGFya2V5 IDxicmlhbi5zdGFya2V5QGFybS5jb20+Cj4gW3JlYmFzZWQgYW5kIGZpeGVkIGNvbmZsaWN0c10K PiBTaWduZWQtb2ZmLWJ5OiBNaWhhaWwgQXRhbmFzc292IDxtaWhhaWwuYXRhbmFzc292QGFybS5j b20+Cj4gU2lnbmVkLW9mZi1ieTogTGl2aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+Cj4g U2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgoKUmV2aWV3ZWQt Ynk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgoKPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWMuYyAgICB8ICA5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2suYyB8IDEwOSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGluY2x1ZGUvZHJtL2RybV9hdG9t aWMuaCAgICAgICAgfCAgIDggKysrCj4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAg fCAgIDggKy0tCj4gIGluY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oICAgfCAgIDggKysrCj4g IGluY2x1ZGUvZHJtL2RybV93cml0ZWJhY2suaCAgICAgfCAgNDEgKysrKysrKysrKysrKystCj4g IDYgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWMuYwo+IGluZGV4IDAxOWYxMzFmZThiZS4uZmM4YzRkYTQwOWZmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pYy5jCj4gQEAgLTMxOCw2ICszMTgsMzUgQEAgc3RhdGljIHMzMiBfX3Vz ZXIgKmdldF9vdXRfZmVuY2VfZm9yX2NydGMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAo+ICAJcmV0dXJuIGZlbmNlX3B0cjsKPiAgfQo+ICAKPiArc3RhdGljIGludCBzZXRfb3V0X2Zl bmNlX2Zvcl9jb25uZWN0b3Ioc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJ CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkJczMyIF9fdXNlciAqZmVu Y2VfcHRyKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgaW5kZXggPSBkcm1fY29ubmVjdG9yX2luZGV4 KGNvbm5lY3Rvcik7Cj4gKwo+ICsJaWYgKCFmZW5jZV9wdHIpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJaWYgKHB1dF91c2VyKC0xLCBmZW5jZV9wdHIpKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsK PiArCXN0YXRlLT5jb25uZWN0b3JzW2luZGV4XS5vdXRfZmVuY2VfcHRyID0gZmVuY2VfcHRyOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgczMyIF9fdXNlciAqZ2V0X291dF9m ZW5jZV9mb3JfY29ubmVjdG9yKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJ CQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJdW5zaWdu ZWQgaW50IGluZGV4ID0gZHJtX2Nvbm5lY3Rvcl9pbmRleChjb25uZWN0b3IpOwo+ICsJczMyIF9f dXNlciAqZmVuY2VfcHRyOwo+ICsKPiArCWZlbmNlX3B0ciA9IHN0YXRlLT5jb25uZWN0b3JzW2lu ZGV4XS5vdXRfZmVuY2VfcHRyOwo+ICsJc3RhdGUtPmNvbm5lY3RvcnNbaW5kZXhdLm91dF9mZW5j ZV9wdHIgPSBOVUxMOwo+ICsKPiArCXJldHVybiBmZW5jZV9wdHI7Cj4gK30KPiArCj4gIC8qKgo+ ICAgKiBkcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjIC0gc2V0IG1vZGUgZm9yIENSVEMKPiAg ICogQHN0YXRlOiB0aGUgQ1JUQyB3aG9zZSBpbmNvbWluZyBzdGF0ZSB0byB1cGRhdGUKPiBAQCAt Njc2LDYgKzcwNSwxMiBAQCBzdGF0aWMgaW50IGRybV9hdG9taWNfY29ubmVjdG9yX2NoZWNrKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9 Cj4gIAo+ICsJaWYgKHdyaXRlYmFja19qb2ItPm91dF9mZW5jZSAmJiAhd3JpdGViYWNrX2pvYi0+ ZmIpIHsKPiArCQlEUk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVkOiVzXSByZXF1ZXN0aW5n IG91dC1mZW5jZSB3aXRob3V0IGZyYW1lYnVmZmVyXG4iLAo+ICsJCQkJIGNvbm5lY3Rvci0+YmFz ZS5pZCwgY29ubmVjdG9yLT5uYW1lKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4g IAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtMTI3Nyw2ICsxMzEyLDExIEBAIHN0YXRpYyBpbnQg ZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCj4gIAkJaWYgKGZiKQo+ICAJCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2Uo ZmIpOwo+ICAJCXJldHVybiByZXQ7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ d3JpdGViYWNrX291dF9mZW5jZV9wdHJfcHJvcGVydHkpIHsKPiArCQlzMzIgX191c2VyICpmZW5j ZV9wdHIgPSB1NjRfdG9fdXNlcl9wdHIodmFsKTsKPiArCj4gKwkJcmV0dXJuIHNldF9vdXRfZmVu Y2VfZm9yX2Nvbm5lY3RvcihzdGF0ZS0+c3RhdGUsIGNvbm5lY3RvciwKPiArCQkJCQkJICAgZmVu Y2VfcHRyKTsKPiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX3NldF9wcm9w ZXJ0eSkgewo+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5 KGNvbm5lY3RvciwKPiAgCQkJCXN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPiBAQCAtMTM2MSw2ICsx NDAxLDggQEAgZHJtX2F0b21pY19jb25uZWN0b3JfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+d3Jp dGViYWNrX2ZiX2lkX3Byb3BlcnR5KSB7Cj4gIAkJLyogV3JpdGViYWNrIGZyYW1lYnVmZmVyIGlz IG9uZS1zaG90LCB3cml0ZSBhbmQgZm9yZ2V0ICovCj4gIAkJKnZhbCA9IDA7Cj4gKwl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IGNvbmZpZy0+d3JpdGViYWNrX291dF9mZW5jZV9wdHJfcHJvcGVydHkp IHsKPiArCQkqdmFsID0gMDsKPiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRvbWlj X2dldF9wcm9wZXJ0eSkgewo+ICAJCXJldHVybiBjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfZ2V0 X3Byb3BlcnR5KGNvbm5lY3RvciwKPiAgCQkJCXN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPiBAQCAt MjIyMSw3ICsyMjYzLDcgQEAgc3RhdGljIGludCBzZXR1cF9vdXRfZmVuY2Uoc3RydWN0IGRybV9v dXRfZmVuY2Vfc3RhdGUgKmZlbmNlX3N0YXRlLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0 YXRpYyBpbnQgcHJlcGFyZV9jcnRjX3NpZ25hbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICtzdGF0aWMgaW50IHByZXBhcmVfc2lnbmFsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAkJCQkgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCSAgc3RydWN0IGRy bV9tb2RlX2F0b21pYyAqYXJnLAo+ICAJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwK PiBAQCAtMjIzMCw2ICsyMjcyLDggQEAgc3RhdGljIGludCBwcmVwYXJlX2NydGNfc2lnbmFsaW5n KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK PiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7 Cj4gIAlpbnQgaSwgYyA9IDAsIHJldDsKPiAgCj4gIAlpZiAoYXJnLT5mbGFncyAmIERSTV9NT0RF X0FUT01JQ19URVNUX09OTFkpCj4gQEAgLTIyOTUsNiArMjMzOSw0MyBAQCBzdGF0aWMgaW50IHBy ZXBhcmVfY3J0Y19zaWduYWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQljKys7Cj4g IAl9Cj4gIAo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwg Y29ubl9zdGF0ZSwgaSkgewo+ICsJCXN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iOwo+ICsJ CXN0cnVjdCBkcm1fb3V0X2ZlbmNlX3N0YXRlICpmOwo+ICsJCXN0cnVjdCBkbWFfZmVuY2UgKmZl bmNlOwo+ICsJCXMzMiBfX3VzZXIgKmZlbmNlX3B0cjsKPiArCj4gKwkJZmVuY2VfcHRyID0gZ2V0 X291dF9mZW5jZV9mb3JfY29ubmVjdG9yKHN0YXRlLCBjb25uKTsKPiArCQlpZiAoIWZlbmNlX3B0 cikKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWpvYiA9IGRybV9hdG9taWNfZ2V0X3dyaXRlYmFj a19qb2IoY29ubl9zdGF0ZSk7Cj4gKwkJaWYgKCFqb2IpCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ ICsKPiArCQlmID0ga3JlYWxsb2MoKmZlbmNlX3N0YXRlLCBzaXplb2YoKipmZW5jZV9zdGF0ZSkg Kgo+ICsJCQkgICAgICgqbnVtX2ZlbmNlcyArIDEpLCBHRlBfS0VSTkVMKTsKPiArCQlpZiAoIWYp Cj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCQltZW1zZXQoJmZbKm51bV9mZW5jZXNdLCAw LCBzaXplb2YoKmYpKTsKPiArCj4gKwkJZlsqbnVtX2ZlbmNlc10ub3V0X2ZlbmNlX3B0ciA9IGZl bmNlX3B0cjsKPiArCQkqZmVuY2Vfc3RhdGUgPSBmOwo+ICsKPiArCQlmZW5jZSA9IGRybV93cml0 ZWJhY2tfZ2V0X291dF9mZW5jZSgoc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICopY29u bik7Cj4gKwkJaWYgKCFmZW5jZSkKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJCXJldCA9 IHNldHVwX291dF9mZW5jZSgmZlsoKm51bV9mZW5jZXMpKytdLCBmZW5jZSk7Cj4gKwkJaWYgKHJl dCkgewo+ICsJCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9 Cj4gKwo+ICsJCWpvYi0+b3V0X2ZlbmNlID0gZmVuY2U7Cj4gKwl9Cj4gKwo+ICAJLyoKPiAgCSAq IEhhdmluZyB0aGlzIGZsYWcgbWVhbnMgdXNlciBtb2RlIHBlbmRzIG9uIGV2ZW50IHdoaWNoIHdp bGwgbmV2ZXIKPiAgCSAqIHJlYWNoIGR1ZSB0byBsYWNrIG9mIGF0IGxlYXN0IG9uZSBDUlRDIGZv ciBzaWduYWxpbmcKPiBAQCAtMjMwNSwxMSArMjM4NiwxMSBAQCBzdGF0aWMgaW50IHByZXBhcmVf Y3J0Y19zaWduYWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBjb21wbGV0ZV9jcnRjX3NpZ25hbGluZyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+IC0JCQkJICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAt CQkJCSAgICBzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVuY2Vfc3RhdGUsCj4gLQkJCQkg ICAgdW5zaWduZWQgaW50IG51bV9mZW5jZXMsCj4gLQkJCQkgICAgYm9vbCBpbnN0YWxsX2ZkcykK PiArc3RhdGljIHZvaWQgY29tcGxldGVfc2lnbmFsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCSAgICAg ICBzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVuY2Vfc3RhdGUsCj4gKwkJCSAgICAgICB1 bnNpZ25lZCBpbnQgbnVtX2ZlbmNlcywKPiArCQkJICAgICAgIGJvb2wgaW5zdGFsbF9mZHMpCj4g IHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKPiBAQCAtMjQ4OCw4ICsyNTY5LDggQEAgaW50IGRybV9tb2RlX2F0b21pY19p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWRybV9tb2RlX29iamVjdF9wdXQob2Jq KTsKPiAgCX0KPiAgCj4gLQlyZXQgPSBwcmVwYXJlX2NydGNfc2lnbmFsaW5nKGRldiwgc3RhdGUs IGFyZywgZmlsZV9wcml2LCAmZmVuY2Vfc3RhdGUsCj4gLQkJCQkgICAgICZudW1fZmVuY2VzKTsK PiArCXJldCA9IHByZXBhcmVfc2lnbmFsaW5nKGRldiwgc3RhdGUsIGFyZywgZmlsZV9wcml2LCAm ZmVuY2Vfc3RhdGUsCj4gKwkJCQkmbnVtX2ZlbmNlcyk7Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8g b3V0Owo+ICAKPiBAQCAtMjUwNyw3ICsyNTg4LDcgQEAgaW50IGRybV9tb2RlX2F0b21pY19pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICBvdXQ6Cj4gIAlkcm1fYXRvbWljX2NsZWFuX29s ZF9mYihkZXYsIHBsYW5lX21hc2ssIHJldCk7Cj4gIAo+IC0JY29tcGxldGVfY3J0Y19zaWduYWxp bmcoZGV2LCBzdGF0ZSwgZmVuY2Vfc3RhdGUsIG51bV9mZW5jZXMsICFyZXQpOwo+ICsJY29tcGxl dGVfc2lnbmFsaW5nKGRldiwgc3RhdGUsIGZlbmNlX3N0YXRlLCBudW1fZmVuY2VzLCAhcmV0KTsK PiAgCj4gIAlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gIAkJZHJtX2F0b21pY19zdGF0ZV9jbGVh cihzdGF0ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX3dyaXRlYmFjay5jCj4gaW5kZXggZGE2MWY5MjljYmMzLi44 MzllNzk5MzJjMTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2su Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMKPiBAQCAtMTMsNiArMTMs NyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcm9wZXJ0eS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV93cml0ZWJhY2suaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9kbWEtZmVuY2UuaD4KPiAgCj4gIC8qKgo+ICAgKiBET0M6IG92ZXJ2aWV3Cj4gQEAgLTMwLDYg KzMxLDE2IEBACj4gICAqIGZyYW1lYnVmZmVyIGFwcGxpZXMgb25seSB0byBhIHNpbmdsZSBjb21t aXQgKHNlZSBiZWxvdykuIEEgZnJhbWVidWZmZXIgbWF5Cj4gICAqIG5vdCBiZSBhdHRhY2hlZCB3 aGlsZSB0aGUgQ1JUQyBpcyBvZmYuCj4gICAqCj4gKyAqIFVubGlrZSB3aXRoIHBsYW5lcywgd2hl biBhIHdyaXRlYmFjayBmcmFtZWJ1ZmZlciBpcyByZW1vdmVkIGJ5IHVzZXJzcGFjZSBEUk0KPiAr ICogbWFrZXMgbm8gYXR0ZW1wdCB0byByZW1vdmUgaXQgZnJvbSBhY3RpdmUgdXNlIGJ5IHRoZSBj b25uZWN0b3IuIFRoaXMgaXMKPiArICogYmVjYXVzZSBubyBtZXRob2QgaXMgcHJvdmlkZWQgdG8g YWJvcnQgYSB3cml0ZWJhY2sgb3BlcmF0aW9uLCBhbmQgaW4gYW55Cj4gKyAqIGNhc2UgbWFraW5n IGEgbmV3IGNvbW1pdCB3aGlsc3QgYSB3cml0ZWJhY2sgaXMgb25nb2luZyBpcyB1bmRlZmluZWQg KHNlZQo+ICsgKiBXUklURUJBQ0tfT1VUX0ZFTkNFX1BUUiBiZWxvdykuIEFzIHNvb24gYXMgdGhl IGN1cnJlbnQgd3JpdGViYWNrIGlzIGZpbmlzaGVkLAo+ICsgKiB0aGUgZnJhbWVidWZmZXIgd2ls bCBhdXRvbWF0aWNhbGx5IG5vIGxvbmdlciBiZSBpbiBhY3RpdmUgdXNlLiBBcyBpdCB3aWxsCj4g KyAqIGFsc28gaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBmcmFtZWJ1ZmZlciBs aXN0LCB0aGVyZSB3aWxsIGJlIG5vCj4gKyAqIHdheSBmb3IgYW55IHVzZXJzcGFjZSBhcHBsaWNh dGlvbiB0byByZXRyaWV2ZSBhIHJlZmVyZW5jZSB0byBpdCBpbiB0aGUKPiArICogaW50ZXJ2ZW5p bmcgcGVyaW9kLgo+ICsgKgo+ICAgKiBXcml0ZWJhY2sgY29ubmVjdG9ycyBoYXZlIHNvbWUgYWRk aXRpb25hbCBwcm9wZXJ0aWVzLCB3aGljaCB1c2Vyc3BhY2UKPiAgICogY2FuIHVzZSB0byBxdWVy eSBhbmQgY29udHJvbCB0aGVtOgo+ICAgKgo+IEBAIC00Niw4ICs1Nyw1NCBAQAo+ICAgKglkYXRh IGlzIGFuIGFycmF5IG9mIHUzMiBEUk1fRk9STUFUXyogZm91cmNjIHZhbHVlcy4KPiAgICoJVXNl cnNwYWNlIGNhbiB1c2UgdGhpcyBibG9iIHRvIGZpbmQgb3V0IHdoYXQgcGl4ZWwgZm9ybWF0cyBh cmUgc3VwcG9ydGVkCj4gICAqCWJ5IHRoZSBjb25uZWN0b3IncyB3cml0ZWJhY2sgZW5naW5lLgo+ ICsgKgo+ICsgKiAgIldSSVRFQkFDS19PVVRfRkVOQ0VfUFRSIjoKPiArICoJVXNlcnNwYWNlIGNh biB1c2UgdGhpcyBwcm9wZXJ0eSB0byBwcm92aWRlIGEgcG9pbnRlciBmb3IgdGhlIGtlcm5lbCB0 bwo+ICsgKglmaWxsIHdpdGggYSBzeW5jX2ZpbGUgZmlsZSBkZXNjcmlwdG9yLCB3aGljaCB3aWxs IHNpZ25hbCBvbmNlIHRoZQo+ICsgKgl3cml0ZWJhY2sgaXMgZmluaXNoZWQuIFRoZSB2YWx1ZSBz aG91bGQgYmUgdGhlIGFkZHJlc3Mgb2YgYSAzMi1iaXQKPiArICoJc2lnbmVkIGludGVnZXIsIGNh c3QgdG8gYSB1NjQuCj4gKyAqCVVzZXJzcGFjZSBzaG91bGQgd2FpdCBmb3IgdGhpcyBmZW5jZSB0 byBzaWduYWwgYmVmb3JlIG1ha2luZyBhbm90aGVyCj4gKyAqCWNvbW1pdCBhZmZlY3RpbmcgYW55 IG9mIHRoZSBzYW1lIENSVENzLCBQbGFuZXMgb3IgQ29ubmVjdG9ycy4KPiArICoJKipGYWlsdXJl IHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvdXIuKioKPiArICoJRm9y IHRoaXMgcmVhc29uIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgYWxsIHVzZXJzcGFj ZQo+ICsgKglhcHBsaWNhdGlvbnMgbWFraW5nIHVzZSBvZiB3cml0ZWJhY2sgY29ubmVjdG9ycyAq YWx3YXlzKiByZXRyaWV2ZSBhbgo+ICsgKglvdXQtZmVuY2UgZm9yIHRoZSBjb21taXQgYW5kIHVz ZSBpdCBhcHByb3ByaWF0ZWx5Lgo+ICsgKglGcm9tIHVzZXJzcGFjZSwgdGhpcyBwcm9wZXJ0eSB3 aWxsIGFsd2F5cyByZWFkIGFzIHplcm8uCj4gICAqLwo+ICAKPiArI2RlZmluZSBmZW5jZV90b193 Yl9jb25uZWN0b3IoeCkgY29udGFpbmVyX29mKHgtPmxvY2ssIFwKPiArCQkJCQkgICAgICBzdHJ1 Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IsIFwKPiArCQkJCQkgICAgICBmZW5jZV9sb2NrKQo+ ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKmRybV93cml0ZWJhY2tfZmVuY2VfZ2V0X2RyaXZlcl9u YW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3dyaXRlYmFj a19jb25uZWN0b3IgKndiX2Nvbm5lY3RvciA9Cj4gKwkJZmVuY2VfdG9fd2JfY29ubmVjdG9yKGZl bmNlKTsKPiArCj4gKwlyZXR1cm4gd2JfY29ubmVjdG9yLT5iYXNlLmRldi0+ZHJpdmVyLT5uYW1l Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqCj4gK2RybV93cml0ZWJhY2tfZmVuY2Vf Z2V0X3RpbWVsaW5lX25hbWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArCXN0cnVj dCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yID0KPiArCQlmZW5jZV90b193 Yl9jb25uZWN0b3IoZmVuY2UpOwo+ICsKPiArCXJldHVybiB3Yl9jb25uZWN0b3ItPnRpbWVsaW5l X25hbWU7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGRybV93cml0ZWJhY2tfZmVuY2VfZW5hYmxl X3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ICsJcmV0dXJuIHRydWU7 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkcm1fd3JpdGVi YWNrX2ZlbmNlX29wcyA9IHsKPiArCS5nZXRfZHJpdmVyX25hbWUgPSBkcm1fd3JpdGViYWNrX2Zl bmNlX2dldF9kcml2ZXJfbmFtZSwKPiArCS5nZXRfdGltZWxpbmVfbmFtZSA9IGRybV93cml0ZWJh Y2tfZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUsCj4gKwkuZW5hYmxlX3NpZ25hbGluZyA9IGRybV93 cml0ZWJhY2tfZmVuY2VfZW5hYmxlX3NpZ25hbGluZywKPiArCS53YWl0ID0gZG1hX2ZlbmNlX2Rl ZmF1bHRfd2FpdCwKPiArfTsKPiArCj4gIHN0YXRpYyBib29sIGNyZWF0ZV93cml0ZWJhY2tfcHJv cGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3Bl cnR5ICpwcm9wOwo+IEBAIC02OSw2ICsxMjYsMTUgQEAgc3RhdGljIGJvb2wgY3JlYXRlX3dyaXRl YmFja19wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2LT5tb2RlX2Nv bmZpZy53cml0ZWJhY2tfcGl4ZWxfZm9ybWF0c19wcm9wZXJ0eSA9IHByb3A7Cj4gIAl9Cj4gIAo+ ICsJaWYgKCFkZXYtPm1vZGVfY29uZmlnLndyaXRlYmFja19vdXRfZmVuY2VfcHRyX3Byb3BlcnR5 KSB7Cj4gKwkJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2LCBEUk1fTU9ERV9Q Uk9QX0FUT01JQywKPiArCQkJCQkJICJXUklURUJBQ0tfT1VUX0ZFTkNFX1BUUiIsIDAsCj4gKwkJ CQkJCSBVNjRfTUFYKTsKPiArCQlpZiAoIXByb3ApCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ICsJ CWRldi0+bW9kZV9jb25maWcud3JpdGViYWNrX291dF9mZW5jZV9wdHJfcHJvcGVydHkgPSBwcm9w Owo+ICsJfQo+ICsKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IEBAIC0xMzgsNiArMjA0LDE1 IEBAIGludCBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlJTklUX0xJU1RfSEVBRCgmd2JfY29ubmVjdG9yLT5qb2JfcXVldWUpOwo+ICAJc3Bp bl9sb2NrX2luaXQoJndiX2Nvbm5lY3Rvci0+am9iX2xvY2spOwo+ICAKPiArCXdiX2Nvbm5lY3Rv ci0+ZmVuY2VfY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+ICsJc3Bpbl9s b2NrX2luaXQoJndiX2Nvbm5lY3Rvci0+ZmVuY2VfbG9jayk7Cj4gKwlzbnByaW50Zih3Yl9jb25u ZWN0b3ItPnRpbWVsaW5lX25hbWUsCj4gKwkJIHNpemVvZih3Yl9jb25uZWN0b3ItPnRpbWVsaW5l X25hbWUpLAo+ICsJCSAiQ09OTkVDVE9SOiVkLSVzIiwgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25u ZWN0b3ItPm5hbWUpOwo+ICsKPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0 b3ItPmJhc2UsCj4gKwkJCQkgICBjb25maWctPndyaXRlYmFja19vdXRfZmVuY2VfcHRyX3Byb3Bl cnR5LCAwKTsKPiArCj4gIAlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5i YXNlLAo+ICAJCQkJICAgY29uZmlnLT53cml0ZWJhY2tfZmJfaWRfcHJvcGVydHksIDApOwo+ICAK PiBAQCAtMjAwLDYgKzI3NSw3IEBAIHZvaWQgZHJtX3dyaXRlYmFja19jbGVhbnVwX2pvYihzdHJ1 Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYikKPiAgCj4gIAlpZiAoam9iLT5mYikKPiAgCQlkcm1f ZnJhbWVidWZmZXJfdW5yZWZlcmVuY2Uoam9iLT5mYik7Cj4gKwlkbWFfZmVuY2VfcHV0KGpvYi0+ b3V0X2ZlbmNlKTsKPiAgCWtmcmVlKGpvYik7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fd3Jp dGViYWNrX2NsZWFudXBfam9iKTsKPiBAQCAtMjIyLDYgKzI5OCw3IEBAIHN0YXRpYyB2b2lkIGNs ZWFudXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIC8qKgo+ICAgKiBkcm1fd3Jp dGViYWNrX3NpZ25hbF9jb21wbGV0aW9uIC0gU2lnbmFsIHRoZSBjb21wbGV0aW9uIG9mIGEgd3Jp dGViYWNrIGpvYgo+ICAgKiBAd2JfY29ubmVjdG9yOiBUaGUgd3JpdGViYWNrIGNvbm5lY3RvciB3 aG9zZSBqb2IgaXMgY29tcGxldGUKPiArICogQHN0YXR1czogU3RhdHVzIGNvZGUgdG8gc2V0IGlu IHRoZSB3cml0ZWJhY2sgb3V0X2ZlbmNlICgwIGZvciBzdWNjZXNzKQo+ICAgKgo+ICAgKiBEcml2 ZXJzIHNob3VsZCBjYWxsIHRoaXMgdG8gc2lnbmFsIHRoZSBjb21wbGV0aW9uIG9mIGEgcHJldmlv dXNseSBxdWV1ZWQKPiAgICogd3JpdGViYWNrIGpvYi4gSXQgc2hvdWxkIGJlIGNhbGxlZCBhcyBz b29uIGFzIHBvc3NpYmxlIGFmdGVyIHRoZSBoYXJkd2FyZQo+IEBAIC0yMzUsNyArMzEyLDggQEAg c3RhdGljIHZvaWQgY2xlYW51cF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgICog U2VlIGFsc286IGRybV93cml0ZWJhY2tfcXVldWVfam9iKCkKPiAgICovCj4gIHZvaWQKPiAtZHJt X3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbihzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0 b3IgKndiX2Nvbm5lY3RvcikKPiArZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbihzdHJ1 Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm5lY3RvciwKPiArCQkJCWludCBzdGF0 dXMpCj4gIHsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAlzdHJ1Y3QgZHJtX3dyaXRlYmFj a19qb2IgKmpvYjsKPiBAQCAtMjQ0LDggKzMyMiwxNCBAQCBkcm1fd3JpdGViYWNrX3NpZ25hbF9j b21wbGV0aW9uKHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yKQo+ ICAJam9iID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZ3Yl9jb25uZWN0b3ItPmpvYl9xdWV1 ZSwKPiAgCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IsCj4gIAkJCQkgICAgICAg bGlzdF9lbnRyeSk7Cj4gLQlpZiAoam9iKQo+ICsJaWYgKGpvYikgewo+ICAJCWxpc3RfZGVsKCZq b2ItPmxpc3RfZW50cnkpOwo+ICsJCWlmIChqb2ItPm91dF9mZW5jZSkgewo+ICsJCQlpZiAoc3Rh dHVzKQo+ICsJCQkJZG1hX2ZlbmNlX3NldF9lcnJvcihqb2ItPm91dF9mZW5jZSwgc3RhdHVzKTsK PiArCQkJZG1hX2ZlbmNlX3NpZ25hbChqb2ItPm91dF9mZW5jZSk7Cj4gKwkJfQo+ICsJfQo+ICAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmd2JfY29ubmVjdG9yLT5qb2JfbG9jaywgZmxhZ3MpOwo+ ICAKPiAgCWlmIChXQVJOX09OKCFqb2IpKQo+IEBAIC0yNTUsMyArMzM5LDI0IEBAIGRybV93cml0 ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3 Yl9jb25uZWN0b3IpCj4gIAlxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCAmam9iLT5jbGVhbnVw X3dvcmspOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxl dGlvbik7Cj4gKwo+ICtzdHJ1Y3QgZG1hX2ZlbmNlICoKPiArZHJtX3dyaXRlYmFja19nZXRfb3V0 X2ZlbmNlKHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yKQo+ICt7 Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiArCj4gKwlpZiAoV0FSTl9PTih3Yl9jb25u ZWN0b3ItPmJhc2UuY29ubmVjdG9yX3R5cGUgIT0KPiArCQkgICAgRFJNX01PREVfQ09OTkVDVE9S X1dSSVRFQkFDSykpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJZmVuY2UgPSBremFsbG9jKHNp emVvZigqZmVuY2UpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZmVuY2UpCj4gKwkJcmV0dXJuIE5V TEw7Cj4gKwo+ICsJZG1hX2ZlbmNlX2luaXQoZmVuY2UsICZkcm1fd3JpdGViYWNrX2ZlbmNlX29w cywKPiArCQkgICAgICAgJndiX2Nvbm5lY3Rvci0+ZmVuY2VfbG9jaywgd2JfY29ubmVjdG9yLT5m ZW5jZV9jb250ZXh0LAo+ICsJCSAgICAgICArK3diX2Nvbm5lY3Rvci0+ZmVuY2Vfc2Vxbm8pOwo+ ICsKPiArCXJldHVybiBmZW5jZTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tf Z2V0X291dF9mZW5jZSk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaCBi L2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAo+IGluZGV4IGQ3YjAyNjNjYzVjZi4uMDkwNzZhNjI1 NjM3IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAo+ICsrKyBiL2luY2x1 ZGUvZHJtL2RybV9hdG9taWMuaAo+IEBAIC0xNjAsNiArMTYwLDE0IEBAIHN0cnVjdCBfX2RybV9j cnRjc19zdGF0ZSB7Cj4gIHN0cnVjdCBfX2RybV9jb25ubmVjdG9yc19zdGF0ZSB7Cj4gIAlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqcHRyOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0 YXRlLCAqb2xkX3N0YXRlLCAqbmV3X3N0YXRlOwo+ICsJLyoqCj4gKwkgKiBAb3V0X2ZlbmNlX3B0 cjoKPiArCSAqCj4gKwkgKiBVc2VyLXByb3ZpZGVkIHBvaW50ZXIgd2hpY2ggdGhlIGtlcm5lbCB1 c2VzIHRvIHJldHVybiBhIHN5bmNfZmlsZQo+ICsJICogZmlsZSBkZXNjcmlwdG9yLiBVc2VkIGJ5 IHdyaXRlYmFjayBjb25uZWN0b3JzIHRvIHNpZ25hbCBjb21wbGV0aW9uIG9mCj4gKwkgKiB0aGUg d3JpdGViYWNrLgo+ICsJICovCj4gKwlzMzIgX191c2VyICpvdXRfZmVuY2VfcHRyOwo+ICB9Owo+ ICAKPiAgc3RydWN0IGRybV9wcml2YXRlX29iajsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gaW5kZXggODcw MWViY2M2OGIzLi5kYTU2ZmRhNmUyMTggMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nv bm5lY3Rvci5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gQEAgLTQyOSwx MCArNDI5LDEwIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKPiAgCS8qKgo+ICAJICog QHdyaXRlYmFja19qb2I6IFdyaXRlYmFjayBqb2IgZm9yIHdyaXRlYmFjayBjb25uZWN0b3JzCj4g IAkgKgo+IC0JICogSG9sZHMgdGhlIGZyYW1lYnVmZmVyIGZvciBhIHdyaXRlYmFjayBjb25uZWN0 b3IuIEFzIHRoZSB3cml0ZWJhY2sKPiAtCSAqIGNvbXBsZXRpb24gbWF5IGJlIGFzeW5jaHJvbm91 cyB0byB0aGUgbm9ybWFsIGNvbW1pdCBjeWNsZSwgdGhlCj4gLQkgKiB3cml0ZWJhY2sgam9iIGxp ZmV0aW1lIGlzIG1hbmFnZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBub3JtYWwgYXRvbWljCj4gLQkg KiBzdGF0ZSBieSB0aGlzIG9iamVjdC4KPiArCSAqIEhvbGRzIHRoZSBmcmFtZWJ1ZmZlciBhbmQg b3V0LWZlbmNlIGZvciBhIHdyaXRlYmFjayBjb25uZWN0b3IuIEFzCj4gKwkgKiB0aGUgd3JpdGVi YWNrIGNvbXBsZXRpb24gbWF5IGJlIGFzeW5jaHJvbm91cyB0byB0aGUgbm9ybWFsIGNvbW1pdAo+ ICsJICogY3ljbGUsIHRoZSB3cml0ZWJhY2sgam9iIGxpZmV0aW1lIGlzIG1hbmFnZWQgc2VwYXJh dGVseSBmcm9tIHRoZQo+ICsJICogbm9ybWFsIGF0b21pYyBzdGF0ZSBieSB0aGlzIG9iamVjdC4K PiAgCSAqCj4gIAkgKiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IoKSBhbmQKPiAg CSAqIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oKQo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5o Cj4gaW5kZXggYzAxMmUxMTQ4ZWMwLi45MzBlMDA1NjAzODAgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25m aWcuaAo+IEBAIC03OTIsNiArNzkyLDE0IEBAIHN0cnVjdCBkcm1fbW9kZV9jb25maWcgewo+ICAJ ICogU2VlIGFsc286IGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoKQo+ICAJICovCj4gIAlz dHJ1Y3QgZHJtX3Byb3BlcnR5ICp3cml0ZWJhY2tfcGl4ZWxfZm9ybWF0c19wcm9wZXJ0eTsKPiAr CS8qKgo+ICsJICogQHdyaXRlYmFja19vdXRfZmVuY2VfcHRyX3Byb3BlcnR5OiBQcm9wZXJ0eSBm b3Igd3JpdGViYWNrIGNvbm5lY3RvcnMsCj4gKwkgKiBmZCBwb2ludGVyIHJlcHJlc2VudGluZyB0 aGUgb3V0Z29pbmcgZmVuY2VzIGZvciBhIHdyaXRlYmFjawo+ICsJICogY29ubmVjdG9yLiBVc2Vy c3BhY2Ugc2hvdWxkIHByb3ZpZGUgYSBwb2ludGVyIHRvIGEgdmFsdWUgb2YgdHlwZSBzMzIsCj4g KwkgKiBhbmQgdGhlbiBjYXN0IHRoYXQgcG9pbnRlciB0byB1NjQuCj4gKwkgKiBTZWUgYWxzbzog ZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1fcHJv cGVydHkgKndyaXRlYmFja19vdXRfZmVuY2VfcHRyX3Byb3BlcnR5Owo+ICAKPiAgCS8qIGR1bWIg aW9jdGwgcGFyYW1ldGVycyAqLwo+ICAJdWludDMyX3QgcHJlZmVycmVkX2RlcHRoLCBwcmVmZXJf c2hhZG93Owo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fd3JpdGViYWNrLmggYi9pbmNs dWRlL2RybS9kcm1fd3JpdGViYWNrLmgKPiBpbmRleCAwYmI5NWZkNDkwN2QuLmI5NDcwYWUyYTUz ZCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fd3JpdGViYWNrLmgKPiArKysgYi9pbmNs dWRlL2RybS9kcm1fd3JpdGViYWNrLmgKPiBAQCAtNDksNiArNDksMzIgQEAgc3RydWN0IGRybV93 cml0ZWJhY2tfY29ubmVjdG9yIHsKPiAgCSAqIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRp b24oKQo+ICAJICovCj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGpvYl9xdWV1ZTsKPiArCj4gKwkvKioK PiArCSAqIEBmZW5jZV9jb250ZXh0Ogo+ICsJICoKPiArCSAqIHRpbWVsaW5lIGNvbnRleHQgdXNl ZCBmb3IgZmVuY2Ugb3BlcmF0aW9ucy4KPiArCSAqLwo+ICsJdW5zaWduZWQgaW50IGZlbmNlX2Nv bnRleHQ7Cj4gKwkvKioKPiArCSAqIEBmZW5jZV9sb2NrOgo+ICsJICoKPiArCSAqIHNwaW5sb2Nr IHRvIHByb3RlY3QgdGhlIGZlbmNlcyBpbiB0aGUgZmVuY2VfY29udGV4dC4KPiArCSAqLwo+ICsJ c3BpbmxvY2tfdCBmZW5jZV9sb2NrOwo+ICsJLyoqCj4gKwkgKiBAZmVuY2Vfc2Vxbm86Cj4gKwkg Kgo+ICsJICogU2Vxbm8gdmFyaWFibGUgdXNlZCBhcyBtb25vdG9uaWMgY291bnRlciBmb3IgdGhl IGZlbmNlcwo+ICsJICogY3JlYXRlZCBvbiB0aGUgY29ubmVjdG9yJ3MgdGltZWxpbmUuCj4gKwkg Ki8KPiArCXVuc2lnbmVkIGxvbmcgZmVuY2Vfc2Vxbm87Cj4gKwkvKioKPiArCSAqIEB0aW1lbGlu ZV9uYW1lOgo+ICsJICoKPiArCSAqIFRoZSBuYW1lIG9mIHRoZSBjb25uZWN0b3IncyBmZW5jZSB0 aW1lbGluZS4KPiArCSAqLwo+ICsJY2hhciB0aW1lbGluZV9uYW1lWzMyXTsKPiAgfTsKPiAgI2Rl ZmluZSB0b193Yl9jb25uZWN0b3IoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fd3JpdGVi YWNrX2Nvbm5lY3RvciwgYmFzZSkKPiAgCj4gQEAgLTczLDYgKzk5LDEzIEBAIHN0cnVjdCBkcm1f d3JpdGViYWNrX2pvYiB7Cj4gIAkgKiBkaXJlY3RseSwgdXNlIGRybV9hdG9taWNfc2V0X3dyaXRl YmFja19mYl9mb3JfY29ubmVjdG9yKCkKPiAgCSAqLwo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmI7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAb3V0X2ZlbmNlOgo+ICsJICoKPiArCSAqIEZlbmNl IHdoaWNoIHdpbGwgc2lnbmFsIG9uY2UgdGhlIHdyaXRlYmFjayBoYXMgY29tcGxldGVkCj4gKwkg Ki8KPiArCXN0cnVjdCBkbWFfZmVuY2UgKm91dF9mZW5jZTsKPiAgfTsKPiAgCj4gIGludCBkcm1f d3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTg1 LDUgKzExOCwxMSBAQCB2b2lkIGRybV93cml0ZWJhY2tfcXVldWVfam9iKHN0cnVjdCBkcm1fd3Jp dGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ICAJCQkgICAgIHN0cnVjdCBkcm1fd3Jp dGViYWNrX2pvYiAqam9iKTsKPiAgCj4gIHZvaWQgZHJtX3dyaXRlYmFja19jbGVhbnVwX2pvYihz dHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYik7Cj4gLXZvaWQgZHJtX3dyaXRlYmFja19zaWdu YWxfY29tcGxldGlvbihzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm5lY3Rv cik7Cj4gKwo+ICt2b2lkCj4gK2RybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oc3RydWN0 IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3Yl9jb25uZWN0b3IsCj4gKwkJCQlpbnQgc3RhdHVz KTsKPiArCj4gK3N0cnVjdCBkbWFfZmVuY2UgKgo+ICtkcm1fd3JpdGViYWNrX2dldF9vdXRfZmVu Y2Uoc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3Yl9jb25uZWN0b3IpOwo+ICAjZW5k aWYKPiAtLSAKPiAyLjE0LjMKPiAKCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBH b29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9m cmVlZHJlbm8K