From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Starkey Subject: Re: [RFC PATCH v2 8/9] drm: writeback: Add out-fences for writeback connectors Date: Thu, 27 Oct 2016 11:07:37 +0100 Message-ID: <20161027100736.GB18708@e106950-lin.cambridge.arm.com> References: <1477472108-27222-1-git-send-email-brian.starkey@arm.com> <1477472108-27222-9-git-send-email-brian.starkey@arm.com> <20161026214029.GG12629@joana> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by gabe.freedesktop.org (Postfix) with ESMTP id EB3776E21D for ; Thu, 27 Oct 2016 10:07:39 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20161026214029.GG12629@joana> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SGkgR3VzdGF2bywKCk9uIFdlZCwgT2N0IDI2LCAyMDE2IGF0IDA3OjQwOjI5UE0gLTAyMDAsIEd1 c3Rhdm8gUGFkb3ZhbiB3cm90ZToKPjIwMTYtMTAtMjYgQnJpYW4gU3RhcmtleSA8YnJpYW4uc3Rh cmtleUBhcm0uY29tPjoKPgo+PiBBZGQgdGhlIE9VVF9GRU5DRV9QVFIgcHJvcGVydHkgdG8gd3Jp dGViYWNrIGNvbm5lY3RvcnMsIHRvIGVuYWJsZQo+PiB1c2Vyc3BhY2UgdG8gZ2V0IGEgZmVuY2Ug d2hpY2ggd2lsbCBzaWduYWwgb25jZSB0aGUgd3JpdGViYWNrIGlzCj4+IGNvbXBsZXRlLgo+Pgo+ PiBBIHRpbWVsaW5lIGlzIGFkZGVkIHRvIGRybV9jb25uZWN0b3IgZm9yIHVzZSBieSB0aGUgd3Jp dGViYWNrCj4+IG91dC1mZW5jZXMuIEl0IGlzIHVwIHRvIGRyaXZlcnMgdG8gY2hlY2sgZm9yIGEg ZmVuY2UgaW4gdGhlCj4+IGNvbm5lY3Rvcl9zdGF0ZSBhbmQgc2lnbmFsIHRoZSBpdCBhcHByb3By aWF0ZWx5IHdoZW4gdGhlaXIgd3JpdGViYWNrIGhhcwo+PiBmaW5pc2hlZC4KPj4KPj4gSXQgaXMg bm90IGFsbG93ZWQgdG8gcmVxdWVzdCBhbiBvdXQtZmVuY2Ugd2l0aG91dCBhIGZyYW1lYnVmZmVy IGF0dGFjaGVkCj4+IHRvIHRoZSBjb25uZWN0b3IuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEJyaWFu IFN0YXJrZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4KPj4gLS0tCj4+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pYy5jICAgICAgICB8ICAgNjAgKysrKysrKysrKysrKysrKysrKysrKystLS0K Pj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgICAgNSArKy0KPj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMgICAgIHwgICA4MCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+PiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAg ICAgfCAgIDE0ICsrKysrKwo+PiAgaW5jbHVkZS9kcm0vZHJtX3dyaXRlYmFjay5oICAgICAgICAg fCAgICAyICsKPj4gIDUgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDYgZGVsZXRp b25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+PiBpbmRleCAzZjhmYzk3Li4wNjFlYTEzIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPj4gQEAgLTMwLDYgKzMwLDcgQEAKPj4gICNpbmNsdWRl IDxkcm0vZHJtX2F0b21pYy5oPgo+PiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZS5oPgo+PiAgI2lu Y2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV93cml0 ZWJhY2suaD4KPj4gICNpbmNsdWRlIDxsaW51eC9zeW5jX2ZpbGUuaD4KPj4KPj4gICNpbmNsdWRl ICJkcm1fY3J0Y19pbnRlcm5hbC5oIgo+PiBAQCAtNjQ2LDYgKzY0NywxMiBAQCBzdGF0aWMgaW50 IGRybV9hdG9taWNfY29ubmVjdG9yX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCj4+ICAJCXJldHVybiAtRUlOVkFMOwo+PiAgCX0KPj4KPj4gKwlpZiAoc3RhdGUtPm91dF9m ZW5jZSAmJiAhc3RhdGUtPmZiKSB7Cj4+ICsJCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6 JWQ6JXNdIHJlcXVlc3Rpbmcgb3V0LWZlbmNlIHdpdGhvdXQgZnJhbWVidWZmZXJcbiIsCj4+ICsJ CQkJIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lKTsKPj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4+ICsJfQo+PiArCj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+Cj4+IEBAIC0xMDQ3LDYg KzEwNTQsOCBAQCBpbnQgZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAJCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9jb25u ZWN0b3Ioc3RhdGUsIGZiKTsKPj4gIAkJaWYgKGZiKQo+PiAgCQkJZHJtX2ZyYW1lYnVmZmVyX3Vu cmVmZXJlbmNlKGZiKTsKPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9v dXRfZmVuY2VfcHRyKSB7Cj4+ICsJCXN0YXRlLT5vdXRfZmVuY2VfcHRyID0gdTY0X3RvX3VzZXJf cHRyKHZhbCk7Cj4KPldlIG5lZWQgdG8gbW92ZSB0aGlzIG91dCBvZiB0aGUgY29ubl9zdGF0ZS4g Rm9yIG15IHY2IG9uIENSVEMgb3V0IGZlbmNlcwo+SSBhZGRlZCBkcm1fYXRvbWljX3NldF9vdXRf ZmVuY2VfZm9yX2NydGMoKSBhbmQKPmRybV9hdG9taWNfZ2V0X291dF9mZW5jZV9mb3JfY3J0Yygp LiBTZWUgcGFkb3Zhbi9mZW5jZXMuCj4KClllcCwgd2lsbCBkby4gSSB3YXMgZXhwZWN0aW5nIHRo aXMgdG8gY2hhbmdlCgo+PiAgCX0gZWxzZSBpZiAoY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX3Nl dF9wcm9wZXJ0eSkgewo+PiAgCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX3NldF9w cm9wZXJ0eShjb25uZWN0b3IsCj4+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+PiBAQCAt MTA4OCw2ICsxMDk3LDggQEAgZHJtX2F0b21pY19jb25uZWN0b3JfZ2V0X3Byb3BlcnR5KHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBj b25maWctPndyaXRlYmFja19mYl9pZF9wcm9wZXJ0eSkgewo+PiAgCQkvKiBXcml0ZWJhY2sgZnJh bWVidWZmZXIgaXMgb25lLXNob3QsIHdyaXRlIGFuZCBmb3JnZXQgKi8KPj4gIAkJKnZhbCA9IDA7 Cj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3Bfb3V0X2ZlbmNlX3B0cikg ewo+PiArCQkqdmFsID0gMDsKPj4gIAl9IGVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21p Y19nZXRfcHJvcGVydHkpIHsKPj4gIAkJcmV0dXJuIGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19n ZXRfcHJvcGVydHkoY29ubmVjdG9yLAo+PiAgCQkJCXN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPj4g QEAgLTE3MzYsNiArMTc0NywzOSBAQCBzdGF0aWMgaW50IHNldHVwX291dF9mZW5jZShzdHJ1Y3Qg ZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVuY2Vfc3RhdGUsCj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+ Cj4+ICtzdGF0aWMgaW50IHNldHVwX2Nvbm5lY3Rvcl9vdXRfZmVuY2VzKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwKPj4gKwkJCQkgICAgICBzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0 ZSAqZmVuY2Vfc3RhdGUsCj4+ICsJCQkJICAgICAgaW50ICpmZW5jZV9pZHgpCj4+ICt7Cj4+ICsJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGU7Cj4+ICsJaW50IGksIHJldDsKPj4gKwo+PiArCWZvcl9lYWNoX2Nvbm5l Y3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewo+PiArCQlzdHJ1Y3Qg ZmVuY2UgKmZlbmNlOwo+PiArCj4+ICsJCWlmICghY29ubl9zdGF0ZS0+b3V0X2ZlbmNlX3B0cikK Pj4gKwkJCWNvbnRpbnVlOwo+PiArCj4+ICsJCWZlbmNlID0gZHJtX3dyaXRlYmFja19nZXRfb3V0 X2ZlbmNlKGNvbm4sIGNvbm5fc3RhdGUpOwo+PiArCQlpZiAoIWZlbmNlKQo+PiArCQkJcmV0dXJu IC1FTk9NRU07Cj4+ICsKPj4gKwkJcmV0ID0gc2V0dXBfb3V0X2ZlbmNlKCZmZW5jZV9zdGF0ZVso KmZlbmNlX2lkeCkrK10sCj4+ICsJCQkJICAgICAgY29ubl9zdGF0ZS0+b3V0X2ZlbmNlX3B0ciwK Pj4gKwkJCQkgICAgICBmZW5jZSk7Cj4+ICsJCWlmIChyZXQpIHsKPj4gKwkJCWZlbmNlX3B1dChm ZW5jZSk7Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCQl9Cj4+ICsKPj4gKwkJLyogT25lLXRpbWUg dXNhZ2Ugb25seSAqLwo+PiArCQljb25uX3N0YXRlLT5vdXRfZmVuY2VfcHRyID0gTlVMTDsKPj4g Kwl9Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgaW50IGRybV9tb2RlX2F0b21p Y19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQkJICB2b2lkICpkYXRhLCBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKPj4gIHsKPj4gQEAgLTE4NjgsOCArMTkxMiw4IEBAIHJl dHJ5Ogo+PiAgCQlkcm1fbW9kZV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKPj4gIAl9Cj4+Cj4+ IC0JZmVuY2Vfc3RhdGUgPSBrY2FsbG9jKGRldi0+bW9kZV9jb25maWcubnVtX2NydGMsIHNpemVv ZigqZmVuY2Vfc3RhdGUpLAo+PiAtCQkJICAgICAgR0ZQX0tFUk5FTCk7Cj4+ICsJZmVuY2Vfc3Rh dGUgPSBrY2FsbG9jKGRldi0+bW9kZV9jb25maWcubnVtX2NydGMgKyBzdGF0ZS0+bnVtX2Nvbm5l Y3RvciwKPj4gKwkJCSAgICAgIHNpemVvZigqZmVuY2Vfc3RhdGUpLCBHRlBfS0VSTkVMKTsKPj4g IAlpZiAoIWZlbmNlX3N0YXRlKSB7Cj4+ICAJCXJldCA9IC1FTk9NRU07Cj4+ICAJCWdvdG8gb3V0 Owo+PiBAQCAtMTkyOSwxMCArMTk3MywxNiBAQCByZXRyeToKPj4gIAkJICogQmVsb3cgd2UgY2Fs bCBkcm1fYXRvbWljX3N0YXRlX2ZyZWUgZm9yIGl0Lgo+PiAgCQkgKi8KPj4gIAkJcmV0ID0gZHJt X2F0b21pY19jaGVja19vbmx5KHN0YXRlKTsKPj4gLQl9IGVsc2UgaWYgKGFyZy0+ZmxhZ3MgJiBE Uk1fTU9ERV9BVE9NSUNfTk9OQkxPQ0spIHsKPj4gLQkJcmV0ID0gZHJtX2F0b21pY19ub25ibG9j a2luZ19jb21taXQoc3RhdGUpOwo+PiAgCX0gZWxzZSB7Cj4+IC0JCXJldCA9IGRybV9hdG9taWNf Y29tbWl0KHN0YXRlKTsKPj4gKwkJcmV0ID0gc2V0dXBfY29ubmVjdG9yX291dF9mZW5jZXMoc3Rh dGUsIGZlbmNlX3N0YXRlLAo+PiArCQkJCQkJICZmZW5jZV9pZHgpOwo+PiArCQlpZiAocmV0KQo+ PiArCQkJZ290byBvdXQ7Cj4KPkknZCBkbyB0aGlzIGJlZm9yZSB0aGlzIGJsb2NrLiBBdCB0aGUg RFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSBvciB3ZQo+Y2hlY2sgb3Igd2UgY29tbWl0LiBNb3Jl b3ZlciB5b3Ugc2hvdWxkIGNoZWNrIGlmIG91dF9mZW5jZXMKPmFyZSBub3Qgc2V0IHdpdGggVEVT VF9PTkxZLgo+CgpJIGRvbid0IHF1aXRlIGZvbGxvdyB0aGUgc2Vjb25kIHNlbnRlbmNlOyB5b3Ug bWVhbiB5b3UnZCByYXRoZXIgSQp3YXMgZmluaXNoZWQgc2V0dGluZyB0aGluZ3MgdXAgYmVmb3Jl IHRoZSBURVNUX09OTFkgY2hlY2s/IFRoYXQgc291bmRzCk9LLgoKRm9yIFRFU1RfT05MWSBJIGFj dHVhbGx5IHRoaW5rIHdlIHNob3VsZG4ndCByZWplY3QgY29tbWl0cyB3aXRoCk9VVF9GRU5DRV9Q VFJzIGFuZCBURVNUX09OTFkuIEkgdGhvdWdodCB0aGUgaWRlYSBvZiBURVNUX09OTFkgd2FzIGZv cgp1c2Vyc3BhY2UgdG8gYnVpbGQgYSBjb21taXQsIHRoZW4gc2VlIGlmIGl0IGNhbiB3b3JrLCB0 aGVuIGNvbW1pdCBpdApmb3IgcmVhbC4KCkJ5IHJlamVjdGluZyBURVNUX09OTFkgKyBPVVRfRkVO Q0VfUFRScyB5b3UncmUgc2F5aW5nIHVzZXJzcGFjZSBjYW4KbmV2ZXIgdGVzdCB3aGF0IGl0IGFj dHVhbGx5IGludGVuZHMgdG8gY29tbWl0LiBJdCBoYXMgdG8gdGVzdCwgdGhlbgphZGQgdGhlIG91 dC1mZW5jZXMsIHRoZW4gY29tbWl0IGFuZCBob3BlIGZvciB0aGUgYmVzdC4KCkhvdyBhYm91dCBh bHdheXMgc2V0dGluZyB0aGUgb3V0LWZlbmNlcyB0byAtMSBmb3IgVEVTVF9PTkxZPwoKVGhhbmtz IGZvciB0aGUgcmV2aWV3LAotQnJpYW4KCj4+ICsKPj4gKwkJaWYgKGFyZy0+ZmxhZ3MgJiBEUk1f TU9ERV9BVE9NSUNfTk9OQkxPQ0spCj4+ICsJCQlyZXQgPSBkcm1fYXRvbWljX25vbmJsb2NraW5n X2NvbW1pdChzdGF0ZSk7Cj4+ICsJCWVsc2UKPj4gKwkJCXJldCA9IGRybV9hdG9taWNfY29tbWl0 KHN0YXRlKTsKPj4gIAl9Cj4+Cj4+ICAJaWYgKCFyZXQpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jCj4+IGluZGV4IGJiYTg2NzIuLjg4ZGEyOTkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCj4+IEBAIC0zMjM0LDggKzMyMzQsOSBAQCBfX2RybV9hdG9taWNf aGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKPj4gIAlpZiAoc3RhdGUtPmNydGMpCj4+ICAJCWRybV9jb25uZWN0b3JfcmVmZXJl bmNlKGNvbm5lY3Rvcik7Cj4+Cj4+IC0JLyogRG9uJ3QgY29weSBvdmVyIGZyYW1lYnVmZmVycywg dGhleSBhcmUgdXNlZCBvbmx5IG9uY2UgKi8KPj4gKwkvKiBEb24ndCBjb3B5IG92ZXIgZnJhbWVi dWZmZXJzIG9yIGZlbmNlcywgdGhleSBhcmUgdXNlZCBvbmx5IG9uY2UgKi8KPj4gIAlzdGF0ZS0+ ZmIgPSBOVUxMOwo+PiArCXN0YXRlLT5vdXRfZmVuY2UgPSBOVUxMOwo+PiAgfQo+PiAgRVhQT1JU X1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUpOwo+ Pgo+PiBAQCAtMzM2NSw2ICszMzY2LDggQEAgX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUpCj4+ICAJCWRy bV9jb25uZWN0b3JfdW5yZWZlcmVuY2Uoc3RhdGUtPmNvbm5lY3Rvcik7Cj4+ICAJaWYgKHN0YXRl LT5mYikKPj4gIAkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKHN0YXRlLT5mYik7Cj4+ICsK Pj4gKwlmZW5jZV9wdXQoc3RhdGUtPm91dF9mZW5jZSk7Cj4+ICB9Cj4+ICBFWFBPUlRfU1lNQk9M KF9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUpOwo+Pgo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2suYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fd3JpdGViYWNrLmMKPj4gaW5kZXggNWE2ZTBhZC4uNGE2ZWYzMCAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2suYwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX3dyaXRlYmFjay5jCj4+IEBAIC0xMSw2ICsxMSw3IEBACj4+ICAjaW5jbHVkZSA8ZHJt L2RybV9jcnRjLmg+Cj4+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcm9wZXJ0eS5oPgo+PiAgI2luY2x1 ZGUgPGRybS9kcm1QLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZmVuY2UuaD4KPj4KPj4gIC8qKgo+ PiAgICogRE9DOiBvdmVydmlldwo+PiBAQCAtMzIsNiArMzMsMTYgQEAKPj4gICAqIGV4cGxpY2l0 bHkgY2xlYXJlZCBpbiBvcmRlciB0byBtYWtlIGEgc3Vic2VxdWVudCBjb21taXQgd2hpY2ggZG9l c24ndCB1c2UKPj4gICAqIHdyaXRlYmFjay4KPj4gICAqCj4+ICsgKiBVbmxpa2Ugd2l0aCBwbGFu ZXMsIHdoZW4gYSB3cml0ZWJhY2sgZnJhbWVidWZmZXIgaXMgcmVtb3ZlZCBieSB1c2Vyc3BhY2Ug RFJNCj4+ICsgKiBtYWtlcyBubyBhdHRlbXB0IHRvIHJlbW92ZSBpdCBmcm9tIGFjdGl2ZSB1c2Ug YnkgdGhlIGNvbm5lY3Rvci4gVGhpcyBpcwo+PiArICogYmVjYXVzZSBubyBtZXRob2QgaXMgcHJv dmlkZWQgdG8gYWJvcnQgYSB3cml0ZWJhY2sgb3BlcmF0aW9uLCBhbmQgaW4gYW55Cj4+ICsgKiBj YXNlIG1ha2luZyBhIG5ldyBjb21taXQgd2hpbHN0IGEgd3JpdGViYWNrIGlzIG9uZ29pbmcgaXMg dW5kZWZpbmVkIChzZWUKPj4gKyAqIE9VVF9GRU5DRV9QVFIgYmVsb3cpLiBBcyBzb29uIGFzIHRo ZSBjdXJyZW50IHdyaXRlYmFjayBpcyBmaW5pc2hlZCwgdGhlCj4+ICsgKiBmcmFtZWJ1ZmZlciB3 aWxsIGF1dG9tYXRpY2FsbHkgbm8gbG9uZ2VyIGJlIGluIGFjdGl2ZSB1c2UuIEFzIGl0IHdpbGwg YWxzbwo+PiArICogaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBmcmFtZWJ1ZmZl ciBsaXN0LCB0aGVyZSB3aWxsIGJlIG5vIHdheSBmb3IKPj4gKyAqIGFueSB1c2Vyc3BhY2UgYXBw bGljYXRpb24gdG8gcmV0cmlldmUgYSByZWZlcmVuY2UgdG8gaXQgaW4gdGhlIGludGVydmVuaW5n Cj4+ICsgKiBwZXJpb2QuCj4+ICsgKgo+PiAgICogV3JpdGViYWNrIGNvbm5lY3RvcnMgaGF2ZSBz ZXZlcmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcywgd2hpY2ggdXNlcnNwYWNlCj4+ICAgKiBjYW4g dXNlIHRvIHF1ZXJ5IGFuZCBjb250cm9sIHRoZW06Cj4+ICAgKgo+PiBAQCAtNTIsOCArNjMsNDgg QEAKPj4gICAqICAiUElYRUxfRk9STUFUU19TSVpFIjoKPj4gICAqCUltbXV0YWJsZSB1bnNpZ25l ZCByYW5nZSBwcm9wZXJ0eSBzdG9yaW5nIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUKPj4g ICAqCVBJWEVMX0ZPUk1BVFMgYXJyYXkuCj4+ICsgKgo+PiArICogICJPVVRfRkVOQ0VfUFRSIjoK Pj4gKyAqCVVzZXJzcGFjZSBjYW4gcHJvdmlkZSB0aGUgYWRkcmVzcyBvZiBhIDY0LWJpdCBpbnRl Z2VyIGluIHRoaXMgcHJvcGVydHksCj4+ICsgKgl3aGljaCB3aWxsIGJlIGZpbGxlZCB3aXRoIGEg c3luY19maWxlIGZpbGUgZGVzY3JpcHRvciBieSB0aGUga2VybmVsLgo+PiArICoJVGhlIHN5bmNf ZmlsZSB3aWxsIHNpZ25hbCB3aGVuIHRoZSBhc3NvY2lhdGVkIHdyaXRlYmFjayBoYXMgZmluaXNo ZWQuCj4+ICsgKglVc2Vyc3BhY2Ugc2hvdWxkIHdhaXQgZm9yIHRoaXMgZmVuY2UgdG8gc2lnbmFs IGJlZm9yZSBtYWtpbmcgYW5vdGhlcgo+PiArICoJY29tbWl0IGFmZmVjdGluZyBhbnkgb2YgdGhl IHNhbWUgQ1JUQ3MsIFBsYW5lcyBvciBDb25uZWN0b3JzLgo+PiArICoJKipGYWlsdXJlIHRvIGRv IHNvIHdpbGwgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvdXIuKioKPj4gKyAqCUZvciB0aGlz IHJlYXNvbiBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IGFsbCB1c2Vyc3BhY2UKPj4g KyAqCWFwcGxpY2F0aW9ucyBtYWtpbmcgdXNlIG9mIHdyaXRlYmFjayBjb25uZWN0b3JzICphbHdh eXMqIHJldHJpZXZlIGFuCj4+ICsgKglvdXQtZmVuY2UgZm9yIHRoZSBjb21taXQgYW5kIHVzZSBp dCBhcHByb3ByaWF0ZWx5Lgo+PiArICoJRnJvbSB1c2Vyc3BhY2UsIHRoaXMgcHJvcGVydHkgd2ls bCBhbHdheXMgcmVhZCBhcyB6ZXJvLgo+PiAgICovCj4+Cj4+ICsjZGVmaW5lIGZlbmNlX3RvX2Nv bm5lY3Rvcih4KSBjb250YWluZXJfb2YoeC0+bG9jaywgc3RydWN0IGRybV9jb25uZWN0b3IsIGZl bmNlX2xvY2spCj4+ICsKPj4gK3N0YXRpYyBjb25zdCBjaGFyICpkcm1fd3JpdGViYWNrX2ZlbmNl X2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQo+PiArewo+PiArCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBmZW5jZV90b19jb25uZWN0b3IoZmVuY2UpOwo+PiAr Cj4+ICsJcmV0dXJuIGNvbm5lY3Rvci0+ZGV2LT5kcml2ZXItPm5hbWU7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBjb25zdCBjaGFyICpkcm1fd3JpdGViYWNrX2ZlbmNlX2dldF90aW1lbGluZV9uYW1l KHN0cnVjdCBmZW5jZSAqZmVuY2UpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciA9IGZlbmNlX3RvX2Nvbm5lY3RvcihmZW5jZSk7Cj4+ICsKPj4gKwlyZXR1cm4gY29u bmVjdG9yLT50aW1lbGluZV9uYW1lOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBkcm1fd3Jp dGViYWNrX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpmZW5jZSkKPj4gK3sK Pj4gKwlyZXR1cm4gdHJ1ZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBmZW5j ZV9vcHMgZHJtX3dyaXRlYmFja19mZW5jZV9vcHMgPSB7Cj4+ICsJLmdldF9kcml2ZXJfbmFtZSA9 IGRybV93cml0ZWJhY2tfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lLAo+PiArCS5nZXRfdGltZWxpbmVf bmFtZSA9IGRybV93cml0ZWJhY2tfZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUsCj4+ICsJLmVuYWJs ZV9zaWduYWxpbmcgPSBkcm1fd3JpdGViYWNrX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcsCj4+ICsJ LndhaXQgPSBmZW5jZV9kZWZhdWx0X3dhaXQsCj4+ICt9Owo+PiArCj4+ICAvKioKPj4gICAqIGNy ZWF0ZV93cml0ZWJhY2tfcHJvcGVydGllcyAtIENyZWF0ZSB3cml0ZWJhY2sgY29ubmVjdG9yLXNw ZWNpZmljIHByb3BlcnRpZXMKPj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPj4gQEAgLTEzNiw2ICsx ODcsMTQgQEAgaW50IGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPj4gIAlpZiAocmV0KQo+PiAgCQlnb3RvIGZhaWw7Cj4+Cj4+ICsJY29ubmVjdG9y LT5mZW5jZV9jb250ZXh0ID0gZmVuY2VfY29udGV4dF9hbGxvYygxKTsKPj4gKwlzcGluX2xvY2tf aW5pdCgmY29ubmVjdG9yLT5mZW5jZV9sb2NrKTsKPj4gKwlzbnByaW50Zihjb25uZWN0b3ItPnRp bWVsaW5lX25hbWUsIHNpemVvZihjb25uZWN0b3ItPnRpbWVsaW5lX25hbWUpLAo+PiArCQkgIkNP Tk5FQ1RPUjolZCIsIGNvbm5lY3Rvci0+YmFzZS5pZCk7Cj4+ICsKPj4gKwlkcm1fb2JqZWN0X2F0 dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAo+PiArCQkJCSAgIGNvbmZpZy0+cHJvcF9v dXRfZmVuY2VfcHRyLCAwKTsKPj4gKwo+PiAgCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZj b25uZWN0b3ItPmJhc2UsCj4+ICAJCQkJICAgY29uZmlnLT53cml0ZWJhY2tfZmJfaWRfcHJvcGVy dHksIDApOwo+Pgo+PiBAQCAtMTU1LDMgKzIxNCwyNCBAQCBmYWlsOgo+PiAgCXJldHVybiByZXQ7 Cj4+ICB9Cj4+ICBFWFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQpOwo+ PiArCj4+ICtzdHJ1Y3QgZmVuY2UgKmRybV93cml0ZWJhY2tfZ2V0X291dF9mZW5jZShzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiArCQkJCQkgIHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlKQo+PiArewo+PiArCXN0cnVjdCBmZW5jZSAqZmVuY2U7Cj4+ICsK Pj4gKwlpZiAoV0FSTl9PTihjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NP Tk5FQ1RPUl9XUklURUJBQ0spKQo+PiArCQlyZXR1cm4gTlVMTDsKPj4gKwo+PiArCWZlbmNlID0g a3phbGxvYyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFmZW5jZSkKPj4g KwkJcmV0dXJuIE5VTEw7Cj4+ICsKPj4gKwlmZW5jZV9pbml0KGZlbmNlLCAmZHJtX3dyaXRlYmFj a19mZW5jZV9vcHMsICZjb25uZWN0b3ItPmZlbmNlX2xvY2ssCj4+ICsJCSAgIGNvbm5lY3Rvci0+ ZmVuY2VfY29udGV4dCwgKytjb25uZWN0b3ItPmZlbmNlX3NlcW5vKTsKPj4gKwo+PiArCWNvbm5f c3RhdGUtPm91dF9mZW5jZSA9IGZlbmNlX2dldChmZW5jZSk7Cj4+ICsKPj4gKwlyZXR1cm4gZmVu Y2U7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tfZ2V0X291dF9mZW5jZSk7 Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2Ry bS9kcm1fY29ubmVjdG9yLmgKPj4gaW5kZXggYTVlMzc3OC4uN2Q0MDUzNyAxMDA2NDQKPj4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaAo+PiBAQCAtMTk5LDYgKzE5OSw3IEBAIGludCBkcm1fZGlzcGxheV9pbmZvX3Nl dF9idXNfZm9ybWF0cyhzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbywKPj4gICAqIEBiZXN0 X2VuY29kZXI6IGNhbiBiZSB1c2VkIGJ5IGhlbHBlcnMgYW5kIGRyaXZlcnMgdG8gc2VsZWN0IHRo ZSBlbmNvZGVyCj4+ICAgKiBAc3RhdGU6IGJhY2twb2ludGVyIHRvIGdsb2JhbCBkcm1fYXRvbWlj X3N0YXRlCj4+ICAgKiBAZmI6IFdyaXRlYmFjayBmcmFtZWJ1ZmZlciwgZm9yIERSTV9NT0RFX0NP Tk5FQ1RPUl9XUklURUJBQ0sKPj4gKyAqIEBvdXRfZmVuY2U6IEZlbmNlIHdoaWNoIHdpbGwgY2xl YXIgd2hlbiB0aGUgZnJhbWVidWZmZXIgd3JpdGUgaGFzIGZpbmlzaGVkCj4+ICAgKi8KPj4gIHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKPj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yOwo+PiBAQCAtMjE2LDYgKzIxNyw5IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl IHsKPj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4+Cj4+ICAJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmI7ICAvKiBkbyBub3Qgd3JpdGUgZGlyZWN0bHksIHVzZSBkcm1fYXRv bWljX3NldF9mYl9mb3JfY29ubmVjdG9yKCkgKi8KPj4gKwo+PiArCXN0cnVjdCBmZW5jZSAqb3V0 X2ZlbmNlOwo+PiArCXU2NCBfX3VzZXIgKm91dF9mZW5jZV9wdHI7Cj4+ICB9Owo+Pgo+PiAgLyoq Cj4+IEBAIC01NDYsNiArNTUwLDEwIEBAIHN0cnVjdCBkcm1fY21kbGluZV9tb2RlIHsKPj4gICAq IEB0aWxlX3ZfbG9jOiB2ZXJ0aWNhbCBsb2NhdGlvbiBvZiB0aGlzIHRpbGUKPj4gICAqIEB0aWxl X2hfc2l6ZTogaG9yaXpvbnRhbCBzaXplIG9mIHRoaXMgdGlsZS4KPj4gICAqIEB0aWxlX3Zfc2l6 ZTogdmVydGljYWwgc2l6ZSBvZiB0aGlzIHRpbGUuCj4+ICsgKiBAZmVuY2VfY29udGV4dDogY29u dGV4dCBmb3IgZmVuY2Ugc2lnbmFsbGluZwo+PiArICogQGZlbmNlX2xvY2s6IGZlbmNlIGxvY2sg Zm9yIHRoZSBmZW5jZSBjb250ZXh0Cj4+ICsgKiBAZmVuY2Vfc2Vxbm86IHNlcW5vIHZhcmlhYmxl IHRvIGNyZWF0ZSBmZW5jZXMKPj4gKyAqIEB0aW1lbGluZV9uYW1lOiBmZW5jZSB0aW1lbGluZSBu YW1lCj4+ICAgKgo+PiAgICogRWFjaCBjb25uZWN0b3IgbWF5IGJlIGNvbm5lY3RlZCB0byBvbmUg b3IgbW9yZSBDUlRDcywgb3IgbWF5IGJlIGNsb25hYmxlIGJ5Cj4+ICAgKiBhbm90aGVyIGNvbm5l Y3RvciBpZiB0aGV5IGNhbiBzaGFyZSBhIENSVEMuICBFYWNoIGNvbm5lY3RvciBhbHNvIGhhcyBh IHNwZWNpZmljCj4+IEBAIC02OTQsNiArNzAyLDEyIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsK Pj4gIAl1aW50OF90IG51bV9oX3RpbGUsIG51bV92X3RpbGU7Cj4+ICAJdWludDhfdCB0aWxlX2hf bG9jLCB0aWxlX3ZfbG9jOwo+PiAgCXVpbnQxNl90IHRpbGVfaF9zaXplLCB0aWxlX3Zfc2l6ZTsK Pj4gKwo+PiArCS8qIGZlbmNlIHRpbWVsaW5lcyBpbmZvIGZvciBEUk0gb3V0LWZlbmNlcyAqLwo+ PiArCXVuc2lnbmVkIGludCBmZW5jZV9jb250ZXh0Owo+PiArCXNwaW5sb2NrX3QgZmVuY2VfbG9j azsKPj4gKwl1bnNpZ25lZCBsb25nIGZlbmNlX3NlcW5vOwo+PiArCWNoYXIgdGltZWxpbmVfbmFt ZVszMl07Cj4+ICB9Owo+Pgo+PiAgI2RlZmluZSBvYmpfdG9fY29ubmVjdG9yKHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciwgYmFzZSkKPj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV93cml0ZWJhY2suaCBiL2luY2x1ZGUvZHJtL2RybV93cml0ZWJhY2suaAo+PiBp bmRleCBhZmRjMjc0Mi4uMDFmMzNiYyAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3dy aXRlYmFjay5oCj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV93cml0ZWJhY2suaAo+PiBAQCAtMTYs NCArMTYsNiBAQCBpbnQgZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+PiAgCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyAqZnVu Y3MsCj4+ICAJCQkJIHUzMiAqZm9ybWF0cywgaW50IG5fZm9ybWF0cyk7Cj4+Cj4+ICtzdHJ1Y3Qg ZmVuY2UgKmRybV93cml0ZWJhY2tfZ2V0X291dF9mZW5jZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+PiArCQkJCQkgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlKTsKPj4gICNlbmRpZgo+PiAtLQo+PiAxLjcuOS41Cj4+Cj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+Cl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=