From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 10/12] drm/amdgpu: add independent DMA-buf export v3 Date: Tue, 30 Apr 2019 16:16:38 +0200 Message-ID: <20190430141638.GT3271@phenom.ffwll.local> References: <20190426123638.40221-1-christian.koenig@amd.com> <20190426123638.40221-10-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 820B6891AC for ; Tue, 30 Apr 2019 14:16:44 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id b8so3373851edm.11 for ; Tue, 30 Apr 2019 07:16:44 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190426123638.40221-10-christian.koenig@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBcHIgMjYsIDIwMTkgYXQgMDI6MzY6MzZQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBUaGUgY2FjaGluZyBvZiBTR1QncyBpcyBhY3R1YWxseSBxdWl0ZSBoYXJtZnVs IGFuZCBzaG91bGQgcHJvYmFibHkgcmVtb3ZlZAo+IGFsdG9nZXRoZXIgd2hlbiBhbGwgZHJpdmVy cyBhcmUgYXVkaXRlZC4KPiAKPiBTdGFydCBieSBwcm92aWRpbmcgYSBzZXBhcmF0ZSBETUEtYnVm IGV4cG9ydCBpbXBsZW1lbnRhdGlvbiBpbiBhbWRncHUuIFRoaXMgaXMKPiBhbHNvIGEgcHJlcmVx dWlzaXRlIG9mIHVucGlubmVkIERNQS1idWYgaGFuZGxpbmcuCj4gCj4gdjI6IGZpeCB1bmludGVu ZGVkIHJlY3Vyc2lvbiwgcmVtb3ZlIGRlYnVnZ2luZyBsZWZ0b3ZlcnMKPiB2Mzogc3BsaXQgb3V0 IGZyb20gdW5waW5uZWQgRE1BLWJ1ZiB3b3JrCj4gdjQ6IHJlYmFzZSBvbiB0b3Agb2YgbmV3IG5v X3NndF9jYWNoZSBmbGFnCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hy aXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKRm9yIG15IG93biB1bmRlcnN0YW5kaW5nIGZpZ3VyZWQg aXQnZCBiZSBnb29kIHRvIHJlYWQgdGhlIGFtZGdwdSBwYXRjaGVzCmluIG1vcmUgZGV0YWlsIHRv by4gU29tZSBxdWVzdGlvbnMgYmVsb3cuCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kcnYuYyAgICB8ICAgMSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9nZW0uaCAgICB8ICAgMSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9vYmplY3QuYyB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9wcmltZS5jICB8IDE2MiArKysrKysrKysrKysrLS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2Vk LCAxMDkgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+IGluZGV4IDEzYTY4ZjYyYmNjOC4uZjE4MTUyMjNhMWEx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+IEBAIC0xMjU0 LDcgKzEyNTQsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIga21zX2RyaXZlciA9IHsKPiAg CS5nZW1fcHJpbWVfZXhwb3J0ID0gYW1kZ3B1X2dlbV9wcmltZV9leHBvcnQsCj4gIAkuZ2VtX3By aW1lX2ltcG9ydCA9IGFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0LAo+ICAJLmdlbV9wcmltZV9yZXNf b2JqID0gYW1kZ3B1X2dlbV9wcmltZV9yZXNfb2JqLAo+IC0JLmdlbV9wcmltZV9nZXRfc2dfdGFi bGUgPSBhbWRncHVfZ2VtX3ByaW1lX2dldF9zZ190YWJsZSwKPiAgCS5nZW1fcHJpbWVfaW1wb3J0 X3NnX3RhYmxlID0gYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUsCj4gIAkuZ2VtX3By aW1lX3ZtYXAgPSBhbWRncHVfZ2VtX3ByaW1lX3ZtYXAsCj4gIAkuZ2VtX3ByaW1lX3Z1bm1hcCA9 IGFtZGdwdV9nZW1fcHJpbWVfdnVubWFwLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZ2VtLmgKPiBpbmRleCBmMWRkZmM1MGJjYzcuLjBjNTBkMTRhOTczOSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmgKPiBAQCAtMzksNyArMzksNiBAQCBpbnQg YW1kZ3B1X2dlbV9vYmplY3Rfb3BlbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPiAgdm9p ZCBhbWRncHVfZ2VtX29iamVjdF9jbG9zZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPiAg CQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiAgdW5zaWduZWQgbG9uZyBhbWRncHVf Z2VtX3RpbWVvdXQodWludDY0X3QgdGltZW91dF9ucyk7Cj4gLXN0cnVjdCBzZ190YWJsZSAqYW1k Z3B1X2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ ICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKgo+ICBhbWRncHVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190 YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJIHN0cnVjdCBkbWFfYnVmX2F0dGFj aG1lbnQgKmF0dGFjaCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVj dC5jCj4gaW5kZXggOTNiMmM1YTQ4YTcxLi5kMjZlMmYwYjg4ZDIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4gQEAgLTMxLDYgKzMxLDcgQEAKPiAg ICovCj4gICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ ICAjaW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY2FjaGUu aD4KPiBAQCAtMTE5NCw2ICsxMTk1LDEwIEBAIHZvaWQgYW1kZ3B1X2JvX21vdmVfbm90aWZ5KHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4gIAo+ICAJYW1kZ3B1X2JvX2t1bm1hcChhYm8p Owo+ICAKPiArCWlmIChhYm8tPmdlbV9iYXNlLmRtYV9idWYgJiYgIWFiby0+Z2VtX2Jhc2UuaW1w b3J0X2F0dGFjaCAmJgo+ICsJICAgIGJvLT5tZW0ubWVtX3R5cGUgIT0gVFRNX1BMX1NZU1RFTSkK PiArCQlkbWFfYnVmX2ludmFsaWRhdGVfbWFwcGluZ3MoYWJvLT5nZW1fYmFzZS5kbWFfYnVmKTsK PiArCj4gIAkvKiByZW1lbWJlciB0aGUgZXZpY3Rpb24gKi8KPiAgCWlmIChldmljdCkKPiAgCQlh dG9taWM2NF9pbmMoJmFkZXYtPm51bV9ldmljdGlvbnMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9wcmltZS5jCj4gaW5kZXggYTM4ZTBmYjRhNmZlLi5jZGMzYzFlNjNhNjgg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYwo+IEBAIC00 MCwyMiArNDAsNiBAQAo+ICAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ICAjaW5jbHVkZSA8 bGludXgvZG1hLWZlbmNlLWFycmF5Lmg+Cj4gIAo+IC0vKioKPiAtICogYW1kZ3B1X2dlbV9wcmlt ZV9nZXRfc2dfdGFibGUgLSAmZHJtX2RyaXZlci5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlCj4gLSAq IGltcGxlbWVudGF0aW9uCj4gLSAqIEBvYmo6IEdFTSBidWZmZXIgb2JqZWN0IChCTykKPiAtICoK PiAtICogUmV0dXJuczoKPiAtICogQSBzY2F0dGVyL2dhdGhlciB0YWJsZSBmb3IgdGhlIHBpbm5l ZCBwYWdlcyBvZiB0aGUgQk8ncyBtZW1vcnkuCj4gLSAqLwo+IC1zdHJ1Y3Qgc2dfdGFibGUgKmFt ZGdwdV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ IC17Cj4gLQlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGdlbV90b19hbWRncHVfYm8ob2JqKTsKPiAt CWludCBucGFnZXMgPSBiby0+dGJvLm51bV9wYWdlczsKPiAtCj4gLQlyZXR1cm4gZHJtX3ByaW1l X3BhZ2VzX3RvX3NnKGJvLT50Ym8udHRtLT5wYWdlcywgbnBhZ2VzKTsKPiAtfQo+IC0KPiAgLyoq Cj4gICAqIGFtZGdwdV9nZW1fcHJpbWVfdm1hcCAtICZkbWFfYnVmX29wcy52bWFwIGltcGxlbWVu dGF0aW9uCj4gICAqIEBvYmo6IEdFTSBCTwo+IEBAIC0yMzEsMzQgKzIxNSw4NCBAQCBfX3Jlc2Vy dmF0aW9uX29iamVjdF9tYWtlX2V4Y2x1c2l2ZShzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpv YmopCj4gIH0KPiAgCj4gIC8qKgo+IC0gKiBhbWRncHVfZ2VtX21hcF9hdHRhY2ggLSAmZG1hX2J1 Zl9vcHMuYXR0YWNoIGltcGxlbWVudGF0aW9uCj4gLSAqIEBkbWFfYnVmOiBTaGFyZWQgRE1BIGJ1 ZmZlcgo+ICsgKiBhbWRncHVfZ2VtX3Bpbl9kbWFfYnVmIC0gJmRtYV9idWZfb3BzLnBpbl9kbWFf YnVmIGltcGxlbWVudGF0aW9uCj4gKyAqCj4gKyAqIEBkbWFfYnVmOiBETUEtYnVmIHRvIHBpbiBp biBtZW1vcnkKPiArICoKPiArICogUGluIHRoZSBCTyB3aGljaCBpcyBiYWNraW5nIHRoZSBETUEt YnVmIHNvIHRoYXQgaXQgY2FuJ3QgbW92ZSBhbnkgbW9yZS4KPiArICovCj4gK3N0YXRpYyBpbnQg YW1kZ3B1X2dlbV9waW5fZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZikKPiArewo+ICsJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2Owo+ICsJc3RydWN0IGFt ZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4gKwo+ICsJLyogcGluIGJ1ZmZl ciBpbnRvIEdUVCAqLwo+ICsJcmV0dXJuIGFtZGdwdV9ib19waW4oYm8sIEFNREdQVV9HRU1fRE9N QUlOX0dUVCk7CgpUaGlzIGlzIGtpbmRhIHdoYXQgSSBtZWFuIHdpdGggInNob3VsZG4ndCB3ZSBw aW4gdGhlIGF0dGFjaG1lbnQiIC0gYWZhaXVpCnRoaXMgY2FuIGZhaWwgaXMgc29tZW9uZSBhbHJl YWR5IHBpbm5lZCB0aGUgYnVmZmVyIGludG8gdnJhbS4gQW5kIHRoYXQKa2luZCBvZiBjaGVja2lu ZyBpcyBzdXBwb3NlZCB0byBoYXBwZW4gaW4gdGhlIGJ1ZmZlciBhdHRhY2htZW50LgoKQWxzbyB3 aWxsIHAycCBwaW4gaW50byBWUkFNIGlmIGFsbCBhdHRhY2htZW50cyBhcmUgcDJwIGNhcGFibGU/ IE9yIGlzIHlvdXIKcGxhbiB0byByZXF1aXJlIGR5bmFtaWMgaW52YWxpZGF0ZSB0byBhdm9pZCBm cmFnbWVudGluZyB2cmFtIGJhZGx5IHdpdGgKcGlubmVkIHN0dWZmIHlvdSBjYW4ndCBtb3ZlPwoK PiArfQo+ICsKPiArLyoqCj4gKyAqIGFtZGdwdV9nZW1fdW5waW5fZG1hX2J1ZiAtICZkbWFfYnVm X29wcy51bnBpbl9kbWFfYnVmIGltcGxlbWVudGF0aW9uCj4gKyAqCj4gKyAqIEBkbWFfYnVmOiBE TUEtYnVmIHRvIHVucGluCj4gKyAqCj4gKyAqIFVucGluIGEgcHJldmlvdXNseSBwaW5uZWQgQk8g dG8gbWFrZSBpdCBtb3ZhYmxlIGFnYWluLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgYW1kZ3B1X2dl bV91bnBpbl9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRtYV9idWYtPnByaXY7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2Jv ICpibyA9IGdlbV90b19hbWRncHVfYm8ob2JqKTsKPiArCj4gKwlhbWRncHVfYm9fdW5waW4oYm8p Owo+ICt9Cj4gKwo+ICsvKioKPiArICogYW1kZ3B1X2dlbV9kbWFfYnVmX2F0dGFjaCAtICZkbWFf YnVmX29wcy5hdHRhY2ggaW1wbGVtZW50YXRpb24KPiArICoKPiArICogQGRtYV9idWY6IERNQS1i dWYgd2UgYXR0YWNoIHRvCj4gICAqIEBhdHRhY2g6IERNQS1idWYgYXR0YWNobWVudAo+ICAgKgo+ ICsgKiBSZXR1cm5zOgo+ICsgKiBBbHdheXMgemVybyBmb3Igc3VjY2Vzcy4KPiArICovCj4gK3N0 YXRpYyBpbnQgYW1kZ3B1X2dlbV9kbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1 ZiwKPiArCQkJCSAgICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRtYV9idWYtPnByaXY7Cj4gKwlzdHJ1Y3Qg YW1kZ3B1X2JvICpibyA9IGdlbV90b19hbWRncHVfYm8ob2JqKTsKPiArCj4gKwkvKiBNYWtlIHN1 cmUgdGhlIGJ1ZmZlciBpcyBwaW5uZWQgd2hlbiB1c2Vyc3BhY2UgZGlkbid0IHNldCBHVFQgYXMK PiArCSAqIHByZWZlcnJlZCBkb21haW4uIFRoaXMgYXZvaWQgcGluZy9wb25nIHNpdHVhdGlvbnMg d2l0aCBzY2FuIG91dCBCT3MuCj4gKwkgKi8KPiArCWlmICghKGJvLT5wcmVmZXJyZWRfZG9tYWlu cyAmIEFNREdQVV9HRU1fRE9NQUlOX0dUVCkpCj4gKwkJYXR0YWNoLT5pbnZhbGlkYXRlID0gTlVM TDsKCk5vdCBmb2xsb3dpbmcgaGVyZSBhdCBhbGwuIElmIHRoZSBCTyBjYW4ndCBiZSBpbiBHVFQg SSdkIGd1ZXNzIHlvdSBzaG91bGQKcmVqZWN0IHRoZSBhdHRhY2ggb3V0cmlnaHQsIHNpbmNlIHRo ZSBwaW5uaW5nL21hcCBsYXRlciBvbiB3aWxsIGZhaWwgSQpndWVzcz8gQXQgbGVhc3QgSSdtIG5v dCBtYWtpbmcgdGhlIGNvbm5lY3Rpb24gd2l0aCB3aHkgZHluYW1pYyBkbWEtYnVmCndvbid0IHdv cmsgYW55bW9yZSwgc2luY2UgZHluYW1pYyBkbWEtYnVmIGlzIHRvIG1ha2UgcDJwIG9mIGJvIGlu IHZyYW0Kd29yayBiZXR0ZXIsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB0aGlzIGhlcmUgc2VlbXMg dG8gY2hlY2sgZm9yLgoKT3IgaXMgdGhpcyBqdXN0IGEgcXVpY2sgY2hlY2sgdW50aWwgeW91IGFk ZCBmdWxsIHAycCBzdXBwb3J0PwoKQ291bnQgbWUgY29uZnVzZWQgLi4uCgo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogYW1kZ3B1X2dlbV9tYXBfZG1hX2J1ZiAtICZkbWFf YnVmX29wcy5tYXBfZG1hX2J1ZiBpbXBsZW1lbnRhdGlvbgo+ICsgKiBAYXR0YWNoOiBETUEtYnVm IGF0dGFjaG1lbnQKPiArICogQGRpcjogRE1BIGRpcmVjdGlvbgo+ICsgKgo+ICAgKiBNYWtlcyBz dXJlIHRoYXQgdGhlIHNoYXJlZCBETUEgYnVmZmVyIGNhbiBiZSBhY2Nlc3NlZCBieSB0aGUgdGFy Z2V0IGRldmljZS4KPiAgICogRm9yIG5vdywgc2ltcGx5IHBpbnMgaXQgdG8gdGhlIEdUVCBkb21h aW4sIHdoZXJlIGl0IHNob3VsZCBiZSBhY2Nlc3NpYmxlIGJ5Cj4gICAqIGFsbCBETUEgZGV2aWNl cy4KPiAgICoKPiAgICogUmV0dXJuczoKPiAtICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKiBzZ190YWJsZSBmaWxsZWQgd2l0aCB0aGUgRE1B IGFkZHJlc3NlcyB0byB1c2Ugb3IgRVJSX1BSVCB3aXRoIG5lZ2F0aXZlIGVycm9yCj4gKyAqIGNv ZGUuCj4gICAqLwo+IC1zdGF0aWMgaW50IGFtZGdwdV9nZW1fbWFwX2F0dGFjaChzdHJ1Y3QgZG1h X2J1ZiAqZG1hX2J1ZiwKPiAtCQkJCSBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gp Cj4gK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKgo+ICthbWRncHVfZ2VtX21hcF9kbWFfYnVmKHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKPiArCQkgICAgICAgZW51bSBkbWFfZGF0 YV9kaXJlY3Rpb24gZGlyKQo+ICB7Cj4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiA9IGF0dGFj aC0+ZG1hYnVmOwo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2 Owo+ICAJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4gIAlz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYp Owo+ICsJc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4gIAlsb25nIHI7Cj4gIAo+IC0JciA9IGRybV9n ZW1fbWFwX2F0dGFjaChkbWFfYnVmLCBhdHRhY2gpOwo+IC0JaWYgKHIpCj4gLQkJcmV0dXJuIHI7 Cj4gLQo+IC0JciA9IGFtZGdwdV9ib19yZXNlcnZlKGJvLCBmYWxzZSk7Cj4gLQlpZiAodW5saWtl bHkociAhPSAwKSkKPiAtCQlnb3RvIGVycm9yX2RldGFjaDsKPiAtCj4gLQo+ICAJaWYgKGF0dGFj aC0+ZGV2LT5kcml2ZXIgIT0gYWRldi0+ZGV2LT5kcml2ZXIpIHsKPiAgCQkvKgo+ICAJCSAqIFdl IG9ubHkgY3JlYXRlIHNoYXJlZCBmZW5jZXMgZm9yIGludGVybmFsIHVzZSwgYnV0IGltcG9ydGVy cwo+IEBAIC0yNzAsNTMgKzMwNCw2NCBAQCBzdGF0aWMgaW50IGFtZGdwdV9nZW1fbWFwX2F0dGFj aChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAgCQkgKi8KPiAgCQlyID0gX19yZXNlcnZhdGlv bl9vYmplY3RfbWFrZV9leGNsdXNpdmUoYm8tPnRiby5yZXN2KTsKPiAgCQlpZiAocikKPiAtCQkJ Z290byBlcnJvcl91bnJlc2VydmU7Cj4gKwkJCXJldHVybiBFUlJfUFRSKHIpOwo+ICAJfQo+ICAK PiAtCS8qIHBpbiBidWZmZXIgaW50byBHVFQgKi8KPiAtCXIgPSBhbWRncHVfYm9fcGluKGJvLCBB TURHUFVfR0VNX0RPTUFJTl9HVFQpOwo+IC0JaWYgKHIpCj4gLQkJZ290byBlcnJvcl91bnJlc2Vy dmU7Cj4gKwlpZiAoYXR0YWNoLT5pbnZhbGlkYXRlKSB7Cj4gKwkJLyogbW92ZSBidWZmZXIgaW50 byBHVFQgKi8KPiArCQlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0geyBmYWxzZSwgZmFs c2UgfTsKPiArCj4gKwkJYW1kZ3B1X2JvX3BsYWNlbWVudF9mcm9tX2RvbWFpbihibywgQU1ER1BV X0dFTV9ET01BSU5fR1RUKTsKPiArCQlyID0gdHRtX2JvX3ZhbGlkYXRlKCZiby0+dGJvLCAmYm8t PnBsYWNlbWVudCwgJmN0eCk7Cj4gKwkJaWYgKHIpCj4gKwkJCXJldHVybiBFUlJfUFRSKHIpOwo+ ICsJfQo+ICsKPiArCXNndCA9IGRybV9wcmltZV9wYWdlc190b19zZyhiby0+dGJvLnR0bS0+cGFn ZXMsIGJvLT50Ym8ubnVtX3BhZ2VzKTsKPiArCWlmIChJU19FUlIoc2d0KSkKPiArCQlyZXR1cm4g c2d0Owo+ICsKPiArCWlmICghZG1hX21hcF9zZ19hdHRycyhhdHRhY2gtPmRldiwgc2d0LT5zZ2ws IHNndC0+bmVudHMsIGRpciwKPiArCQkJICAgICAgRE1BX0FUVFJfU0tJUF9DUFVfU1lOQykpCj4g KwkJZ290byBlcnJvcl9mcmVlOwo+ICAKPiAgCWlmIChhdHRhY2gtPmRldi0+ZHJpdmVyICE9IGFk ZXYtPmRldi0+ZHJpdmVyKQo+ICAJCWJvLT5wcmltZV9zaGFyZWRfY291bnQrKzsKPiAgCj4gLWVy cm9yX3VucmVzZXJ2ZToKPiAtCWFtZGdwdV9ib191bnJlc2VydmUoYm8pOwo+ICsJcmV0dXJuIHNn dDsKPiAgCj4gLWVycm9yX2RldGFjaDoKPiAtCWlmIChyKQo+IC0JCWRybV9nZW1fbWFwX2RldGFj aChkbWFfYnVmLCBhdHRhY2gpOwo+IC0JcmV0dXJuIHI7Cj4gK2Vycm9yX2ZyZWU6Cj4gKwlzZ19m cmVlX3RhYmxlKHNndCk7Cj4gKwlrZnJlZShzZ3QpOwo+ICsJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gIH0KPiAgCj4gIC8qKgo+IC0gKiBhbWRncHVfZ2VtX21hcF9kZXRhY2ggLSAmZG1hX2J1 Zl9vcHMuZGV0YWNoIGltcGxlbWVudGF0aW9uCj4gLSAqIEBkbWFfYnVmOiBTaGFyZWQgRE1BIGJ1 ZmZlcgo+ICsgKiBhbWRncHVfZ2VtX3VubWFwX2RtYV9idWYgLSAmZG1hX2J1Zl9vcHMudW5tYXBf ZG1hX2J1ZiBpbXBsZW1lbnRhdGlvbgo+ICAgKiBAYXR0YWNoOiBETUEtYnVmIGF0dGFjaG1lbnQK PiArICogQHNndDogc2dfdGFibGUgdG8gdW5tYXAKPiArICogQGRpcjogRE1BIGRpcmVjdGlvbgo+ ICAgKgo+ICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgc2hhcmVkIERNQSBidWZmZXIgbm8gbG9u Z2VyIG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgYnkKPiAgICogYW5vdGhlciBkZXZpY2UuIEZvciBu b3csIHNpbXBseSB1bnBpbnMgdGhlIGJ1ZmZlciBmcm9tIEdUVC4KPiAgICovCj4gLXN0YXRpYyB2 b2lkIGFtZGdwdV9nZW1fbWFwX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAtCQkJ CSAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICtzdGF0aWMgdm9pZCBhbWRn cHVfZ2VtX3VubWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ ICsJCQkJICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnNndCwKPiArCQkJCSAgICAgZW51bSBkbWFfZGF0 YV9kaXJlY3Rpb24gZGlyKQo+ICB7Cj4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiA9IGF0dGFj aC0+ZG1hYnVmOwo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2 Owo+ICAJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4gIAlz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYp Owo+IC0JaW50IHJldCA9IDA7Cj4gLQo+IC0JcmV0ID0gYW1kZ3B1X2JvX3Jlc2VydmUoYm8sIHRy dWUpOwo+IC0JaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKPiAtCQlnb3RvIGVycm9yOwo+ICAKPiAt CWFtZGdwdV9ib191bnBpbihibyk7Cj4gIAlpZiAoYXR0YWNoLT5kZXYtPmRyaXZlciAhPSBhZGV2 LT5kZXYtPmRyaXZlciAmJiBiby0+cHJpbWVfc2hhcmVkX2NvdW50KQo+ICAJCWJvLT5wcmltZV9z aGFyZWRfY291bnQtLTsKPiAtCWFtZGdwdV9ib191bnJlc2VydmUoYm8pOwo+ICAKPiAtZXJyb3I6 Cj4gLQlkcm1fZ2VtX21hcF9kZXRhY2goZG1hX2J1ZiwgYXR0YWNoKTsKPiArCWlmIChzZ3QpIHsK ClRoaXMgY2hlY2sgc2VlbXMgdG8gYmUgbGVmdG92ZXJzIGZyb20gdGhlIHNndCBjYWNoaW5nIGlu IGRybV9wcmltZS5jLiBXaXRoCnRoZSBuZXcgY29kZSBvcmdhbml6YXRpb24gSSBkb24ndCB0aGlu ayB5b3UgbmVlZCB0aGlzIGNoZWNrLCBsb29rcyBsaWtlIGl0CndvdWxkIHBhcGVyIG92ZXIgZG1h LWJ1Zi5jIG9yIGltcG9ydGVyIGJ1Z3MuCgpDaGVlcnMsIERhbmllbAoKPiArCQlkbWFfdW5tYXBf c2coYXR0YWNoLT5kZXYsIHNndC0+c2dsLCBzZ3QtPm5lbnRzLCBkaXIpOwo+ICsJCXNnX2ZyZWVf dGFibGUoc2d0KTsKPiArCQlrZnJlZShzZ3QpOwo+ICsJfQo+ICB9Cj4gIAo+ICAvKioKPiBAQCAt Mzc0LDEwICs0MTksMTEgQEAgc3RhdGljIGludCBhbWRncHVfZ2VtX2JlZ2luX2NwdV9hY2Nlc3Mo c3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gIH0KPiAgCj4gIGNvbnN0IHN0cnVjdCBkbWFfYnVm X29wcyBhbWRncHVfZG1hYnVmX29wcyA9IHsKPiAtCS5hdHRhY2ggPSBhbWRncHVfZ2VtX21hcF9h dHRhY2gsCj4gLQkuZGV0YWNoID0gYW1kZ3B1X2dlbV9tYXBfZGV0YWNoLAo+IC0JLm1hcF9kbWFf YnVmID0gZHJtX2dlbV9tYXBfZG1hX2J1ZiwKPiAtCS51bm1hcF9kbWFfYnVmID0gZHJtX2dlbV91 bm1hcF9kbWFfYnVmLAo+ICsJLnBpbiA9IGFtZGdwdV9nZW1fcGluX2RtYV9idWYsCj4gKwkudW5w aW4gPSBhbWRncHVfZ2VtX3VucGluX2RtYV9idWYsCj4gKwkuYXR0YWNoID0gYW1kZ3B1X2dlbV9k bWFfYnVmX2F0dGFjaCwKPiArCS5tYXBfZG1hX2J1ZiA9IGFtZGdwdV9nZW1fbWFwX2RtYV9idWYs Cj4gKwkudW5tYXBfZG1hX2J1ZiA9IGFtZGdwdV9nZW1fdW5tYXBfZG1hX2J1ZiwKPiAgCS5yZWxl YXNlID0gZHJtX2dlbV9kbWFidWZfcmVsZWFzZSwKPiAgCS5iZWdpbl9jcHVfYWNjZXNzID0gYW1k Z3B1X2dlbV9iZWdpbl9jcHVfYWNjZXNzLAo+ICAJLm1tYXAgPSBkcm1fZ2VtX2RtYWJ1Zl9tbWFw LAo+IC0tIAo+IDIuMTcuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIElu dGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==