From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Starkey Subject: Re: [PATCH v8 3/3] drm/fence: add out-fences support Date: Fri, 11 Nov 2016 17:38:30 +0000 Message-ID: <20161111173830.GA31023@e106950-lin.cambridge.arm.com> References: <1478873759-6580-1-git-send-email-gustavo@padovan.org> <1478873759-6580-4-git-send-email-gustavo@padovan.org> 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 285506E236 for ; Fri, 11 Nov 2016 17:38:38 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1478873759-6580-4-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan Cc: marcheu@google.com, Daniel Stone , seanpaul@google.com, Daniel Vetter , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, m.chehab@samsung.com, Gustavo Padovan , John Harrison , laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org U3BvdHRlZCBvbmUgbW9yZSB0aGluZyBvbiBhIGNsZWFudXAgcGF0aC4uLgoKT24gRnJpLCBOb3Yg MTEsIDIwMTYgYXQgMTE6MTU6NTlQTSArMDkwMCwgR3VzdGF2byBQYWRvdmFuIHdyb3RlOgo+RnJv bTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+Cj5T dXBwb3J0IERSTSBvdXQtZmVuY2VzIGJ5IGNyZWF0aW5nIGEgc3luY19maWxlIHdpdGggYSBmZW5j ZSBmb3IgZWFjaCBDUlRDCj50aGF0IHNldHMgdGhlIE9VVF9GRU5DRV9QVFIgcHJvcGVydHkuCj4K PldlIHVzZSB0aGUgb3V0X2ZlbmNlIHBvaW50ZXIgcmVjZWl2ZWQgaW4gdGhlIE9VVF9GRU5DRV9Q VFIgcHJvcCB0byBzZW5kCj50aGUgc3luY19maWxlIGZkIGJhY2sgdG8gdXNlcnNwYWNlLgo+Cj5U aGUgc3luY19maWxlIGFuZCBmZCBhcmUgYWxsb2NhdGVkL2NyZWF0ZWQgYmVmb3JlIGNvbW1pdCwg YnV0IHRoZQo+ZmRfaW5zdGFsbCBvcGVyYXRpb24gb25seSBoYXBwZW5zIGFmdGVyIHdlIGtub3cg dGhhdCBjb21taXQgc3VjY2VlZC4KPgo+djI6IENvbW1lbnQgYnkgUm9iIENsYXJrOgo+CS0gU3F1 YXNoIGNvbW1pdCB0aGF0IGFkZHMgRFJNX01PREVfQVRPTUlDX09VVF9GRU5DRSBmbGFnIGhlcmUu Cj4KPiAgICBDb21tZW50IGJ5IERhbmllbCBWZXR0ZXI6Cj4JLSBBZGQgY2xlYW4gdXAgY29kZSBm b3Igb3V0X2ZlbmNlcwo+Cj52MzogQ29tbWVudHMgYnkgRGFuaWVsIFZldHRlcjoKPgktIGNyZWF0 ZSBEUk1fTU9ERV9BVE9NSUNfRVZFTlRfTUFTSwo+CS0gdXNlcnNwYWNlIHNob3VsZCBmaWxsIG91 dF9mZW5jZXNfcHRyIHdpdGggdGhlIGNydGNfaWRzIGZvciB3aGljaAo+CWl0IHdhbnRzIGZlbmNl cyBiYWNrLgo+Cj52NDogQ3JlYXRlIE9VVF9GRU5DRV9QVFIgcHJvcGVydGllcyBhbmQgcmVtb3Zl IG9sZCBhcHByb2FjaC4KPgo+djU6IENvbW1lbnRzIGJ5IEJyaWFuIFN0YXJrZXk6Cj4JLSBSZW1v dmUgZXh0cmEgZmVuY2VfZ2V0KCkgaW4gYXRvbWljX2lvY3RsKCkKPgktIENoZWNrIHJldCBiZWZv cmUgaXRlcmF0aW5nIG9uIHRoZSBjcnRjX3N0YXRlCj4JLSBjaGVjayByZXQgYmVmb3JlIGZkX2lu c3RhbGwKPgktIHNldCBmZW5jZV9zdGF0ZSB0byBOVUxMIGF0IHRoZSBiZWdpbm5pbmcKPgktIGNo ZWNrIGZlbmNlX3N0YXRlLT5vdXRfZmVuY2VfcHRyIGJlZm9yZSBwdXRfdXNlcigpCj4JLSBjaGFu Z2Ugb3JkZXIgb2YgZnB1dCgpIGFuZCBwdXRfdW51c2VkX2ZkKCkgb24gZmFpbHVyZQo+Cj4gICAg IC0gQWRkIGFjY2Vzc19vaygpIGNoZWNrIHRvIHRoZSBvdXRfZmVuY2VfcHRyIHJlY2VpdmVkCj4g ICAgIC0gUmViYXNlIGFmdGVyIGZlbmNlIC0+IGRtYV9mZW5jZSByZW5hbWUKPiAgICAgLSBTdG9y ZSBvdXRfZmVuY2VfcHRyIGluIHRoZSBkcm1fYXRvbWljX3N0YXRlCj4gICAgIC0gU3BsaXQgY3J0 Y19zZXR1cF9vdXRfZmVuY2UoKQo+ICAgICAtIHJldHVybiAtMSBhcyBvdXRfZmVuY2Ugd2l0aCBU RVNUX09OTFkgZmxhZwo+Cj52NjogQ29tbWVudHMgYnkgRGFuaWVsIFZldHRlcgo+CS0gQWRkIHBy ZXBhcmUvdW5wcmVwYXJlX2NydGNfc2lnbmFsaW5nKCkKPgktIG1vdmUgc3RydWN0IGRybV9vdXRf ZmVuY2Vfc3RhdGUgdG8gZHJtX2F0b21pYy5jCj4JLSBtYXJrIGdldF9jcnRjX2ZlbmNlKCkgYXMg c3RhdGljCj4KPiAgICBDb21tZW50cyBieSBCcmlhbiBTdGFya2V5Cj4JLSBwcm9wZXIgc2V0IGZl bmNlX3B0ciBmZW5jZV9zdGF0ZSBhcnJheQo+CS0gaXNvbGF0ZSBmZW5jZV9pZHggaW5jcmVtZW50 Cj4KPiAgICAtIGltcHJvdmUgZXJyb3IgaGFuZGxpbmcKPgo+djc6IENvbW1lbnRzIGJ5IERhbmll bCBWZXR0ZXIKPgktIHJlbW92ZSBwcmVmaXggZnJvbSBpbnRlcm5hbCBmdW5jdGlvbnMKPgktIG1h a2Ugb3V0X2ZlbmNlX3B0ciBhbiBzNjQgcG9pbnRlcgo+CS0gZGVncmFkZSBEUk1fSU5GTyB0byBE Uk1fREVCVUdfQVRPTUlDIHdoZW4gcHV0X3VzZXIgZmFpbAo+CS0gZml4IGRvYyBpc3N1ZXMKPgkt IGZpbHRlciBvdXQgT1VUX0ZFTkNFX1BUUiA9PSBOVUxMIGFuZCBkbyBub3QgZmFpbCBpbiB0aGlz IGNhc2UKPgktIGFkZCBjb21wbGV0ZV9jcnRjX3NpZ25hbGxpbmcoKQo+CS0ga3JlYWxsb2MgZmVu Y2Vfc3RhdGUgb24gZGVtYW5kCj4KPiAgICBDb21tZW50IGJ5IEJyaWFuIFN0YXJrZXkKPgktIHJl bW92ZSB1bnVzZWQgY3J0Y19zdGF0ZSBhcmcgZnJvbSBnZXRfb3V0X2ZlbmNlKCkKPgo+djg6IENv bW1lbnQgYnkgQnJpYW4gU3RhcmtleQo+CS0gY2FuY2VsIGV2ZW50cyBiZWZvcmUgY2hlY2sgZm9y ICFmZW5jZV9zdGF0ZQo+CS0gY29udmVydCBhIGZldyBsZWZvdmVycyB1NjQgdHlwZXMgZm9yIG91 dF9mZW5jZV9wdHIKPgktIGZpeCBtZW1sZWFrIGJ5IGFzc2lnbiBmZW5jZV9zdGF0ZSBlYXJsaWVy IGFmdGVyIHJlYWxsb2MKPgktIHByb3BlciBhY2NvdXQgbnVtX2ZlbmNlcyBpbiBjYXNlIG9mIGVy cm9yCj4KPlNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNv bGxhYm9yYS5jby51az4KPi0tLQo+IGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgfCAyNDMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+IGRyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Yy5jICAgfCAgIDggKysKPiBpbmNsdWRlL2RybS9kcm1fYXRvbWljLmggICAg IHwgICAxICsKPiBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgIHwgICA2ICsrCj4gNCBmaWxl cyBjaGFuZ2VkLCAyMTMgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCj4KPmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYwo+aW5kZXggOGUyNmFkMS4uMzRjZGM2ZSAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljLmMKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPkBA IC0yOTAsNiArMjkwLDIzIEBAIGRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlLAo+IH0KPiBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfZ2V0X2Ny dGNfc3RhdGUpOwo+Cj4rc3RhdGljIHZvaWQgc2V0X291dF9mZW5jZV9mb3JfY3J0YyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4rCQkJCSAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg czY0IF9fdXNlciAqZmVuY2VfcHRyKQo+K3sKPisJc3RhdGUtPmNydGNzW2RybV9jcnRjX2luZGV4 KGNydGMpXS5vdXRfZmVuY2VfcHRyID0gZmVuY2VfcHRyOwo+K30KPisKPitzdGF0aWMgczY0IF9f dXNlciAqIGdldF9vdXRfZmVuY2VfZm9yX2NydGMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAo+KwkJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+K3sKPisJczY0IF9fdXNlciAq ZmVuY2VfcHRyOwo+Kwo+KwlmZW5jZV9wdHIgPSBzdGF0ZS0+Y3J0Y3NbZHJtX2NydGNfaW5kZXgo Y3J0YyldLm91dF9mZW5jZV9wdHI7Cj4rCXN0YXRlLT5jcnRjc1tkcm1fY3J0Y19pbmRleChjcnRj KV0ub3V0X2ZlbmNlX3B0ciA9IE5VTEw7Cj4rCj4rCXJldHVybiBmZW5jZV9wdHI7Cj4rfQo+Kwo+ IC8qKgo+ICAqIGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMgLSBzZXQgbW9kZSBmb3IgQ1JU Qwo+ICAqIEBzdGF0ZTogdGhlIENSVEMgd2hvc2UgaW5jb21pbmcgc3RhdGUgdG8gdXBkYXRlCj5A QCAtNDkxLDYgKzUwOCwxNiBAQCBpbnQgZHJtX2F0b21pY19jcnRjX3NldF9wcm9wZXJ0eShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gCQkJCQkmcmVwbGFjZWQpOwo+IAkJc3RhdGUtPmNvbG9yX21n bXRfY2hhbmdlZCB8PSByZXBsYWNlZDsKPiAJCXJldHVybiByZXQ7Cj4rCX0gZWxzZSBpZiAocHJv cGVydHkgPT0gY29uZmlnLT5wcm9wX291dF9mZW5jZV9wdHIpIHsKPisJCXM2NCBfX3VzZXIgKmZl bmNlX3B0ciA9IHU2NF90b191c2VyX3B0cih2YWwpOwo+Kwo+KwkJaWYgKCFmZW5jZV9wdHIpCj4r CQkJcmV0dXJuIDA7Cj4rCj4rCQlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIGZlbmNlX3B0 ciwgc2l6ZW9mKCpmZW5jZV9wdHIpKSkKPisJCQlyZXR1cm4gLUVGQVVMVDsKPisKPisJCXNldF9v dXRfZmVuY2VfZm9yX2NydGMoc3RhdGUtPnN0YXRlLCBjcnRjLCBmZW5jZV9wdHIpOwo+IAl9IGVs c2UgaWYgKGNydGMtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KQo+IAkJcmV0dXJuIGNydGMt PmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KGNydGMsIHN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsK PiAJZWxzZQo+QEAgLTUzMyw2ICs1NjAsOCBAQCBkcm1fYXRvbWljX2NydGNfZ2V0X3Byb3BlcnR5 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAJCSp2YWwgPSAoc3RhdGUtPmN0bSkgPyBzdGF0ZS0+ Y3RtLT5iYXNlLmlkIDogMDsKPiAJZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5nYW1tYV9s dXRfcHJvcGVydHkpCj4gCQkqdmFsID0gKHN0YXRlLT5nYW1tYV9sdXQpID8gc3RhdGUtPmdhbW1h X2x1dC0+YmFzZS5pZCA6IDA7Cj4rCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9v dXRfZmVuY2VfcHRyKQo+KwkJKnZhbCA9IDA7Cj4gCWVsc2UgaWYgKGNydGMtPmZ1bmNzLT5hdG9t aWNfZ2V0X3Byb3BlcnR5KQo+IAkJcmV0dXJuIGNydGMtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3Bl cnR5KGNydGMsIHN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPiAJZWxzZQo+QEAgLTE2NTksMTEgKzE2 ODgsOSBAQCBpbnQgZHJtX2F0b21pY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5vciAqbWlu b3IpCj4gICovCj4KPiBzdGF0aWMgc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqY3Jl YXRlX3ZibGFua19ldmVudCgKPi0JCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2LAo+LQkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsIHVpbnQ2NF90IHVz ZXJfZGF0YSkKPisJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQ2NF90IHVzZXJfZGF0YSkK PiB7Cj4gCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUgPSBOVUxMOwo+LQlpbnQg cmV0Owo+Cj4gCWUgPSBremFsbG9jKHNpemVvZiAqZSwgR0ZQX0tFUk5FTCk7Cj4gCWlmICghZSkK PkBAIC0xNjczLDE3ICsxNzAwLDYgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGVuZGluZ192Ymxhbmtf ZXZlbnQgKmNyZWF0ZV92YmxhbmtfZXZlbnQoCj4gCWUtPmV2ZW50LmJhc2UubGVuZ3RoID0gc2l6 ZW9mKGUtPmV2ZW50KTsKPiAJZS0+ZXZlbnQudXNlcl9kYXRhID0gdXNlcl9kYXRhOwo+Cj4tCWlm IChmaWxlX3ByaXYpIHsKPi0JCXJldCA9IGRybV9ldmVudF9yZXNlcnZlX2luaXQoZGV2LCBmaWxl X3ByaXYsICZlLT5iYXNlLAo+LQkJCQkJICAgICAmZS0+ZXZlbnQuYmFzZSk7Cj4tCQlpZiAocmV0 KSB7Cj4tCQkJa2ZyZWUoZSk7Cj4tCQkJcmV0dXJuIE5VTEw7Cj4tCQl9Cj4tCX0KPi0KPi0JZS0+ YmFzZS5mZW5jZSA9IGZlbmNlOwo+LQo+IAlyZXR1cm4gZTsKPiB9Cj4KPkBAIC0xNzg4LDYgKzE4 MDQsMTY3IEBAIHZvaWQgZHJtX2F0b21pY19jbGVhbl9vbGRfZmIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiB9Cj4gRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2NsZWFuX29sZF9mYik7Cj4KPitz dGF0aWMgc3RydWN0IGRtYV9mZW5jZSAqZ2V0X2NydGNfZmVuY2Uoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+K3sKPisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4rCj4rCWZlbmNlID0ga3phbGxv YyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tFUk5FTCk7Cj4rCWlmICghZmVuY2UpCj4rCQlyZXR1cm4g TlVMTDsKPisKPisJZG1hX2ZlbmNlX2luaXQoZmVuY2UsICZkcm1fY3J0Y19mZW5jZV9vcHMsICZj cnRjLT5mZW5jZV9sb2NrLAo+KwkJICAgICAgIGNydGMtPmZlbmNlX2NvbnRleHQsICsrY3J0Yy0+ ZmVuY2Vfc2Vxbm8pOwo+Kwo+KwlyZXR1cm4gZmVuY2U7Cj4rfQo+Kwo+K3N0cnVjdCBkcm1fb3V0 X2ZlbmNlX3N0YXRlIHsKPisJczY0IF9fdXNlciAqb3V0X2ZlbmNlX3B0cjsKPisJc3RydWN0IHN5 bmNfZmlsZSAqc3luY19maWxlOwo+KwlpbnQgZmQ7Cj4rfTsKPisKPitzdGF0aWMgaW50IHNldHVw X291dF9mZW5jZShzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVuY2Vfc3RhdGUsCj4rCQkJ ICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4rewo+KwlmZW5jZV9zdGF0ZS0+ZmQgPSBnZXRf dW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7Cj4rCWlmIChmZW5jZV9zdGF0ZS0+ZmQgPCAwKQo+ KwkJcmV0dXJuIGZlbmNlX3N0YXRlLT5mZDsKPisKPisJaWYgKHB1dF91c2VyKGZlbmNlX3N0YXRl LT5mZCwgZmVuY2Vfc3RhdGUtPm91dF9mZW5jZV9wdHIpKQo+KwkJcmV0dXJuIC1FRkFVTFQ7Cj4r Cj4rCWZlbmNlX3N0YXRlLT5zeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfY3JlYXRlKGZlbmNlKTsKPisJ aWYoIWZlbmNlX3N0YXRlLT5zeW5jX2ZpbGUpCj4rCQlyZXR1cm4gLUVOT01FTTsKPisKPisJcmV0 dXJuIDA7Cj4rfQo+Kwo+K3N0YXRpYyBpbnQgcHJlcGFyZV9jcnRjX3NpZ25hbGluZyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+KwkJCQkgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK PisJCQkJICBzdHJ1Y3QgZHJtX21vZGVfYXRvbWljICphcmcsCj4rCQkJCSAgc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYsCj4rCQkJCSAgc3RydWN0IGRybV9vdXRfZmVuY2Vfc3RhdGUgKipmZW5j ZV9zdGF0ZSwKPisJCQkJICB1bnNpZ25lZCBpbnQgKm51bV9mZW5jZXMpCj4rewo+KwlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7Cj4rCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPisJ aW50IGksIHJldDsKPisKPisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0 Y19zdGF0ZSwgaSkgewo+KwkJdTY0IF9fdXNlciAqZmVuY2VfcHRyOwo+Kwo+KwkJZmVuY2VfcHRy ID0gZ2V0X291dF9mZW5jZV9mb3JfY3J0YyhjcnRjX3N0YXRlLT5zdGF0ZSwgY3J0Yyk7Cj4rCj4r CQlpZiAoYXJnLT5mbGFncyAmIERSTV9NT0RFX0FUT01JQ19URVNUX09OTFkgJiYgZmVuY2VfcHRy KSB7Cj4rCQkJaWYgKHB1dF91c2VyKC0xLCBmZW5jZV9wdHIpKQo+KwkJCQlyZXR1cm4gLUVGQVVM VDsKPisKPisJCQljb250aW51ZTsKPisJCX0KPisKPisJCWlmIChhcmctPmZsYWdzICYgRFJNX01P REVfUEFHRV9GTElQX0VWRU5UIHx8IGZlbmNlX3B0cikgewo+KwkJCXN0cnVjdCBkcm1fcGVuZGlu Z192YmxhbmtfZXZlbnQgKmU7Cj4rCj4rCQkJZSA9IGNyZWF0ZV92YmxhbmtfZXZlbnQoZGV2LCBh cmctPnVzZXJfZGF0YSk7Cj4rCQkJaWYgKCFlKQo+KwkJCQlyZXR1cm4gLUVOT01FTTsKPisKPisJ CQljcnRjX3N0YXRlLT5ldmVudCA9IGU7Cj4rCQl9Cj4rCj4rCQlpZiAoYXJnLT5mbGFncyAmIERS TV9NT0RFX1BBR0VfRkxJUF9FVkVOVCkgewo+KwkJCXN0cnVjdCBkcm1fcGVuZGluZ192Ymxhbmtf ZXZlbnQgKmUgPSBjcnRjX3N0YXRlLT5ldmVudDsKPisKPisJCQlpZiAoIWZpbGVfcHJpdikKPisJ CQkJY29udGludWU7Cj4rCj4rCQkJcmV0ID0gZHJtX2V2ZW50X3Jlc2VydmVfaW5pdChkZXYsIGZp bGVfcHJpdiwgJmUtPmJhc2UsCj4rCQkJCQkJICAgICAmZS0+ZXZlbnQuYmFzZSk7Cj4rCQkJaWYg KHJldCkgewo+KwkJCQlrZnJlZShlKTsKPisJCQkJY3J0Y19zdGF0ZS0+ZXZlbnQgPSBOVUxMOwo+ KwkJCQlyZXR1cm4gcmV0Owo+KwkJCX0KPisJCX0KPisKPisJCWlmIChmZW5jZV9wdHIpIHsKPisJ CQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPisJCQlzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0 ZSAqZjsKPisKPisJCQlmID0ga3JlYWxsb2MoKmZlbmNlX3N0YXRlLCBzaXplb2YoKipmZW5jZV9z dGF0ZSkgKgo+KwkJCQkgICAgICgqbnVtX2ZlbmNlcyArIDEpLCBHRlBfS0VSTkVMKTsKPisJCQlp ZiAoIWYpCj4rCQkJCXJldHVybiAtRU5PTUVNOwoKV2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIG5l dyBiaXQgb2YgZmVuY2Vfc3RhdGUgaXMgemVyb2VkLCBvdGhlcndpc2UKZmFpbGluZyBhZnRlciB0 aGUgKCpudW1fZmVuY2VzKSsrIGNvdWxkIGxlYWQgdG8gZnB1dC9wdXRfdW51c2VkX2ZkIG9uCnJh bmRvbSBudW1iZXJzLgoKLUJyaWFuCgo+Kwo+KwkJCWZbKm51bV9mZW5jZXNdLm91dF9mZW5jZV9w dHIgPSBmZW5jZV9wdHI7Cj4rCQkJKmZlbmNlX3N0YXRlID0gZjsKPisKPisJCQlmZW5jZSA9IGdl dF9jcnRjX2ZlbmNlKGNydGMpOwo+KwkJCWlmICghZmVuY2UpIHsKPisJCQkJKCpudW1fZmVuY2Vz KSsrOwo+KwkJCQlyZXR1cm4gLUVOT01FTTsKPisJCQl9Cj4rCj4rCQkJcmV0ID0gc2V0dXBfb3V0 X2ZlbmNlKCZmWygqbnVtX2ZlbmNlcykrK10sIGZlbmNlKTsKPisJCQlpZiAocmV0KSB7Cj4rCQkJ CWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+KwkJCQlyZXR1cm4gcmV0Owo+KwkJCX0KPisKPisJCQlj cnRjX3N0YXRlLT5ldmVudC0+YmFzZS5mZW5jZSA9IGZlbmNlOwo+Kwo+KwkJfQo+Kwl9Cj4rCj4r CXJldHVybiAwOwo+K30KPisKPitzdGF0aWMgdm9pZCBjb21wbGV0ZV9jcnRjX3NpZ25hbGluZyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+KwkJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKPisJCQkJICAgICBzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVuY2Vfc3Rh dGUsCj4rCQkJCSAgICAgdW5zaWduZWQgaW50IG51bV9mZW5jZXMsIGludCByZXQpCj4rewo+Kwlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4rCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTsKPisJaW50IGk7Cj4rCj4rCWlmICghcmV0KSB7Cj4rCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2Zl bmNlczsgaSsrKQo+KwkJCWZkX2luc3RhbGwoZmVuY2Vfc3RhdGVbaV0uZmQsCj4rCQkJCSAgIGZl bmNlX3N0YXRlW2ldLnN5bmNfZmlsZS0+ZmlsZSk7Cj4rCQlyZXR1cm47Cj4rCX0KPisKPisJZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+KwkJLyoK PisJCSAqIFRFU1RfT05MWSBhbmQgUEFHRV9GTElQX0VWRU5UIGFyZSBtdXR1YWxseQo+KwkJICog ZXhjbHVzaXZlLCBpZiB0aGV5IHdlcmVuJ3QsIHRoaXMgY29kZSBzaG91bGQgYmUKPisJCSAqIGNh bGxlZCBvbiBzdWNjZXNzIGZvciBURVNUX09OTFkgdG9vLgo+KwkJICovCj4rCQlpZiAoY3J0Y19z dGF0ZS0+ZXZlbnQpCj4rCQkJZHJtX2V2ZW50X2NhbmNlbF9mcmVlKGRldiwgJmNydGNfc3RhdGUt PmV2ZW50LT5iYXNlKTsKPisJfQo+Kwo+KwlpZiAoIWZlbmNlX3N0YXRlKQo+KwkJcmV0dXJuOwo+ Kwo+Kwlmb3IgKGkgPSAwOyBpIDwgbnVtX2ZlbmNlczsgaSsrKSB7Cj4rCQlpZiAoZmVuY2Vfc3Rh dGVbaV0uc3luY19maWxlKQo+KwkJCWZwdXQoZmVuY2Vfc3RhdGVbaV0uc3luY19maWxlLT5maWxl KTsKPisJCWlmIChmZW5jZV9zdGF0ZVtpXS5mZCA+PSAwKQo+KwkJCXB1dF91bnVzZWRfZmQoZmVu Y2Vfc3RhdGVbaV0uZmQpOwo+Kwo+KwkJLyogSWYgdGhpcyBmYWlscyBsb2cgZXJyb3IgdG8gdGhl IHVzZXIgKi8KPisJCWlmIChmZW5jZV9zdGF0ZVtpXS5vdXRfZmVuY2VfcHRyICYmCj4rCQkgICAg cHV0X3VzZXIoLTEsIGZlbmNlX3N0YXRlW2ldLm91dF9mZW5jZV9wdHIpKQo+KwkJCURSTV9ERUJV R19BVE9NSUMoIkNvdWxkbid0IGNsZWFyIG91dF9mZW5jZV9wdHJcbiIpOwo+Kwl9Cj4rCj4rCWtm cmVlKGZlbmNlX3N0YXRlKTsKPit9Cj4rCj4gaW50IGRybV9tb2RlX2F0b21pY19pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+IAkJCSAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYpCj4gewo+QEAgLTE4MDAsMTEgKzE5NzcsMTAgQEAgaW50IGRybV9tb2RlX2F0b21p Y19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGU7Cj4gCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gCXN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lOwo+LQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4tCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPisJc3RydWN0IGRybV9vdXRfZmVuY2Vfc3RhdGUg KmZlbmNlX3N0YXRlID0gTlVMTDsKPiAJdW5zaWduZWQgcGxhbmVfbWFzazsKPiAJaW50IHJldCA9 IDA7Cj4tCXVuc2lnbmVkIGludCBpLCBqOwo+Kwl1bnNpZ25lZCBpbnQgaSwgaiwgbnVtX2ZlbmNl cyA9IDA7Cj4KPiAJLyogZGlzYWxsb3cgZm9yIGRyaXZlcnMgbm90IHN1cHBvcnRpbmcgYXRvbWlj OiAqLwo+IAlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfQVRPTUlDKSkK PkBAIC0xOTE5LDIwICsyMDk1LDEwIEBAIGludCBkcm1fbW9kZV9hdG9taWNfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAJCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShvYmopOwo+ IAl9Cj4KPi0JaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQpIHsKPi0J CWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPi0J CQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplOwo+LQo+LQkJCWUgPSBjcmVhdGVf dmJsYW5rX2V2ZW50KGRldiwgZmlsZV9wcml2LCBOVUxMLAo+LQkJCQkJCWFyZy0+dXNlcl9kYXRh KTsKPi0JCQlpZiAoIWUpIHsKPi0JCQkJcmV0ID0gLUVOT01FTTsKPi0JCQkJZ290byBvdXQ7Cj4t CQkJfQo+LQo+LQkJCWNydGNfc3RhdGUtPmV2ZW50ID0gZTsKPi0JCX0KPi0JfQo+KwlyZXQgPSBw cmVwYXJlX2NydGNfc2lnbmFsaW5nKGRldiwgc3RhdGUsIGFyZywgZmlsZV9wcml2LCAmZmVuY2Vf c3RhdGUsCj4rCQkJCSAgICAgJm51bV9mZW5jZXMpOwo+KwlpZiAocmV0KQo+KwkJZ290byBvdXQ7 Cj4KPiAJaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZKSB7Cj4gCQkv Kgo+QEAgLTE5NTIsMjAgKzIxMTgsNyBAQCBpbnQgZHJtX21vZGVfYXRvbWljX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gb3V0Ogo+IAlkcm1fYXRvbWljX2NsZWFuX29sZF9mYihkZXYs IHBsYW5lX21hc2ssIHJldCk7Cj4KPi0JaWYgKHJldCAmJiBhcmctPmZsYWdzICYgRFJNX01PREVf UEFHRV9GTElQX0VWRU5UKSB7Cj4tCQkvKgo+LQkJICogVEVTVF9PTkxZIGFuZCBQQUdFX0ZMSVBf RVZFTlQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwKPi0JCSAqIGlmIHRoZXkgd2VyZW4ndCwgdGhp cyBjb2RlIHNob3VsZCBiZSBjYWxsZWQgb24gc3VjY2Vzcwo+LQkJICogZm9yIFRFU1RfT05MWSB0 b28uCj4tCQkgKi8KPi0KPi0JCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKPi0JCQlpZiAoIWNydGNfc3RhdGUtPmV2ZW50KQo+LQkJCQljb250aW51 ZTsKPi0KPi0JCQlkcm1fZXZlbnRfY2FuY2VsX2ZyZWUoZGV2LCAmY3J0Y19zdGF0ZS0+ZXZlbnQt PmJhc2UpOwo+LQkJfQo+LQl9Cj4rCWNvbXBsZXRlX2NydGNfc2lnbmFsaW5nKGRldiwgc3RhdGUs IGZlbmNlX3N0YXRlLCBudW1fZmVuY2VzLCByZXQpOwo+Cj4gCWlmIChyZXQgPT0gLUVERUFETEsp IHsKPiAJCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwo+ZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPmluZGV4 IDliOTg4MWIuLmU4YmMxYWUgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMu Ywo+KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPkBAIC0yNzQsNiArMjc0LDggQEAg aW50IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+IAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERS SVZFUl9BVE9NSUMpKSB7Cj4gCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFz ZSwgY29uZmlnLT5wcm9wX2FjdGl2ZSwgMCk7Cj4gCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmY3J0Yy0+YmFzZSwgY29uZmlnLT5wcm9wX21vZGVfaWQsIDApOwo+KwkJZHJtX29iamVjdF9h dHRhY2hfcHJvcGVydHkoJmNydGMtPmJhc2UsCj4rCQkJCQkgICBjb25maWctPnByb3Bfb3V0X2Zl bmNlX3B0ciwgMCk7Cj4gCX0KPgo+IAlyZXR1cm4gMDsKPkBAIC00MzQsNiArNDM2LDEyIEBAIHN0 YXRpYyBpbnQgZHJtX21vZGVfY3JlYXRlX3N0YW5kYXJkX3Byb3BlcnRpZXMoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAJCXJldHVybiAtRU5PTUVNOwo+IAlkZXYtPm1vZGVfY29uZmlnLnByb3Bf aW5fZmVuY2VfZmQgPSBwcm9wOwo+Cj4rCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3Jhbmdl KGRldiwgRFJNX01PREVfUFJPUF9BVE9NSUMsCj4rCQkJIk9VVF9GRU5DRV9QVFIiLCAwLCBVNjRf TUFYKTsKPisJaWYgKCFwcm9wKQo+KwkJcmV0dXJuIC1FTk9NRU07Cj4rCWRldi0+bW9kZV9jb25m aWcucHJvcF9vdXRfZmVuY2VfcHRyID0gcHJvcDsKPisKPiAJcHJvcCA9IGRybV9wcm9wZXJ0eV9j cmVhdGVfb2JqZWN0KGRldiwgRFJNX01PREVfUFJPUF9BVE9NSUMsCj4gCQkJIkNSVENfSUQiLCBE Uk1fTU9ERV9PQkpFQ1RfQ1JUQyk7Cj4gCWlmICghcHJvcCkKPmRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS9kcm1fYXRvbWljLmggYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPmluZGV4IDMzMWJi MTAuLmMwZWFlYzcgMTAwNjQ0Cj4tLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPisrKyBi L2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAo+QEAgLTE0NCw2ICsxNDQsNyBAQCBzdHJ1Y3QgX19k cm1fY3J0Y3Nfc3RhdGUgewo+IAlzdHJ1Y3QgZHJtX2NydGMgKnB0cjsKPiAJc3RydWN0IGRybV9j cnRjX3N0YXRlICpzdGF0ZTsKPiAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+Kwlz NjQgX191c2VyICpvdXRfZmVuY2VfcHRyOwo+IH07Cj4KPiBzdHJ1Y3QgX19kcm1fY29ubm5lY3Rv cnNfc3RhdGUgewo+ZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRl L2RybS9kcm1fY3J0Yy5oCj5pbmRleCAwODcwZGUxLi40NDU3MWJjIDEwMDY0NAo+LS0tIGEvaW5j bHVkZS9kcm0vZHJtX2NydGMuaAo+KysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+QEAgLTEy NjQsNiArMTI2NCwxMiBAQCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnIHsKPiAJICovCj4gCXN0cnVj dCBkcm1fcHJvcGVydHkgKnByb3BfaW5fZmVuY2VfZmQ7Cj4gCS8qKgo+KwkgKiBAcHJvcF9vdXRf ZmVuY2VfcHRyOiBTeW5jIEZpbGUgZmQgcG9pbnRlciByZXByZXNlbnRpbmcgdGhlCj4rCSAqIG91 dGdvaW5nIGZlbmNlcyBmb3IgYSBDUlRDLiBVc2Vyc3BhY2Ugc2hvdWxkIHByb3ZpZGUgYSBwb2lu dGVyIHRvIGEKPisJICogdmFsdWUgb2YgdHlwZSBzNjQsIGFuZCB0aGVuIGNhc3QgdGhhdCBwb2lu dGVyIHRvIHU2NC4KPisJICovCj4rCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3Bfb3V0X2ZlbmNl X3B0cjsKPisJLyoqCj4gCSAqIEBwcm9wX2NydGNfaWQ6IERlZmF1bHQgYXRvbWljIHBsYW5lIHBy b3BlcnR5IHRvIHNwZWNpZnkgdGhlCj4gCSAqICZkcm1fY3J0Yy4KPiAJICovCj4tLSAKPjIuNS41 Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==