From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 15/15] drm: omapdrm: gem: Implement dma_buf import Date: Sat, 5 Dec 2015 16:40:14 +0100 Message-ID: <20151205154014.GS10243@phenom.ffwll.local> References: <1449268039-24682-1-git-send-email-laurent.pinchart@ideasonboard.com> <1449268039-24682-16-git-send-email-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f52.google.com (mail-wm0-f52.google.com [74.125.82.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id BEE916E26E for ; Sat, 5 Dec 2015 07:40:18 -0800 (PST) Received: by wmuu63 with SMTP id u63so94589097wmu.0 for ; Sat, 05 Dec 2015 07:40:17 -0800 (PST) Content-Disposition: inline In-Reply-To: <1449268039-24682-16-git-send-email-laurent.pinchart@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCBEZWMgMDUsIDIwMTUgYXQgMTI6Mjc6MTlBTSArMDIwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBPTUFQIEdFTSBvYmplY3RzIGJhY2tlZCBieSBkbWFfYnVmIHJldXNlIHRoZSBj dXJyZW50IE9NQVAgR0VNIG9iamVjdAo+IHN1cHBvcnQgYXMgbXVjaCBhcyBwb3NzaWJsZS4gSWYg dGhlIGltcG9ydGVkIGJ1ZmZlciBpcyBwaHlzaWNhbGx5Cj4gY29udGlndW91cyBpdHMgcGh5c2lj YWwgYWRkcmVzcyB3aWxsIGJlIHVzZWQgZGlyZWN0bHksIHJldXNpbmcgdGhlCj4gT01BUF9CT19N RU1fRE1BX0FQSSBjb2RlIHBhdGhzLiBPdGhlcndpc2UgaXQgd2lsbCBiZSBtYXBwZWQgdGhyb3Vn aCB0aGUKPiBUSUxFUiB1c2luZyBhIHBhZ2VzIGxpc3QgY3JlYXRlZCBmcm9tIHRoZSBzY2F0dGVy bGlzdCBpbnN0ZWFkIG9mIHRoZQo+IHNobWVtIGJhY2tpbmcgc3RvcmFnZS4KPiAKPiBEaXNhbGxv dyBleHBvcnRpbmcgaW1wb3J0ZWQgYnVmZmVycyBmb3Igbm93IGFzIHRob3NlIGNvZGUgcGF0aHMg aGF2ZW4ndAo+IGJlZW4gdmVyaWZpZWQuIFVzZSBjYXNlcyBvZiBzdWNoIGEgZmVhdHVyZSBhcmUg c3VzcGljaW91cyBhbnl3YXkuCgpJZiB5b3UgZXhwb3J0IGEgYnVmZmVyIHRoYXQncyBiZWVuIGlt cG9ydGVkIHRoZSBkcm1fcHJpbWUuYyBoZWxwZXJzIHNob3VsZApkaWcgb3V0IHRoZSBvcmlnaW5h bCBkbWEtYnVmIGFnYWluLiBZb3Ugc2hvdWxkIG5ldmVyIGVuZCB1cCB3aXRoIGEgZG1hLWJ1Zgot PiBvbWFwIGdlbSBibyAtPiBkbWEtYnVmIGNoYWluLgoKSWYgdGhhdCBkb2Vzbid0IHdvcmsgdGhl biB0aGVyZSdzIGEgYnVnIHNvbWV3aGVyZSAuLi4KLURhbmllbAoKPiBTaWduZWQtb2ZmLWJ5OiBM YXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmggICAgICAgIHwgICAyICsKPiAg ZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9nZW0uYyAgICAgICAgfCAxMzggKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZ2Vt X2RtYWJ1Zi5jIHwgIDU3ICsrKysrKysrKy0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNl cnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL29tYXBkcm0vb21hcF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2 LmgKPiBpbmRleCA5N2ZjYjg5MmZkZDcuLjY2MTViN2Q1MWVlMyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL29t YXBkcm0vb21hcF9kcnYuaAo+IEBAIC0yMDAsNiArMjAwLDggQEAgdm9pZCBvbWFwX2dlbV9kZWlu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIAo+ICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9tYXBfZ2VtX25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXVuaW9uIG9tYXBfZ2Vt X3NpemUgZ3NpemUsIHVpbnQzMl90IGZsYWdzKTsKPiArc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv bWFwX2dlbV9uZXdfZG1hYnVmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLAo+ ICsJCXN0cnVjdCBzZ190YWJsZSAqc2d0KTsKPiAgaW50IG9tYXBfZ2VtX25ld19oYW5kbGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICAJCXVuaW9uIG9t YXBfZ2VtX3NpemUgZ3NpemUsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKTsKPiAg dm9pZCBvbWFwX2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbS5jCj4gaW5kZXggMTFkZjRmNzhkOGE3Li44YTU0ZDMz M2E0N2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9nZW0uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZ2VtLmMKPiBAQCAtMzMsNiArMzMs NyBAQAo+ICAjZGVmaW5lIE9NQVBfQk9fTUVNX0RNQV9BUEkJMHgwMTAwMDAwMAkvKiBtZW1vcnkg YWxsb2NhdGVkIHdpdGggdGhlIGRtYV9hbGxvY18qIEFQSSAqLwo+ICAjZGVmaW5lIE9NQVBfQk9f TUVNX1NITUVNCTB4MDIwMDAwMDAJLyogbWVtb3J5IGFsbG9jYXRlZCB0aHJvdWdoIHNobWVtIGJh Y2tpbmcgKi8KPiAgI2RlZmluZSBPTUFQX0JPX01FTV9FWFQJCTB4MDQwMDAwMDAJLyogbWVtb3J5 IGFsbG9jYXRlZCBleHRlcm5hbGx5ICovCj4gKyNkZWZpbmUgT01BUF9CT19NRU1fRE1BQlVGCTB4 MDgwMDAwMDAJLyogbWVtb3J5IGltcG9ydGVkIGZyb20gYSBkbWFidWYgKi8KPiAgI2RlZmluZSBP TUFQX0JPX0VYVF9TWU5DCTB4MTAwMDAwMDAJLyogZXh0ZXJuYWxseSBhbGxvY2F0ZWQgc3luYyBv YmplY3QgKi8KPiAgCj4gIHN0cnVjdCBvbWFwX2dlbV9vYmplY3Qgewo+IEBAIC00OSwxNyArNTAs MjUgQEAgc3RydWN0IG9tYXBfZ2VtX29iamVjdCB7Cj4gIAl1aW50MzJfdCByb2xsOwo+ICAKPiAg CS8qKgo+IC0JICogSWYgYnVmZmVyIGlzIGFsbG9jYXRlZCBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMs IHRoZSBPTUFQX0JPX01FTV9ETUFfQVBJCj4gLQkgKiBmbGFnIGlzIHNldCBhbmQgdGhlIHBhZGRy IGlzIHZhbGlkLiAgQWxzbyBpZiB0aGUgYnVmZmVyIGlzIHJlbWFwcGVkCj4gLQkgKiBpbiBUSUxF UiBhbmQgcGFkZHJfY250ID4gMCwgdGhlbiBwYWRkciBpcyB2YWxpZC4gQnV0IGlmIHlvdSBhcmUg dXNpbmcKPiAtCSAqIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBPTUFQX0JPX01FTV9ETUFfQVBJ IGlzIG5vdCBzZXQsIHRoZW4geW91Cj4gLQkgKiBzaG91bGQgYmUgZ29pbmcgdGhydSBvbWFwX2dl bV97Z2V0LHB1dH1fcGFkZHIoKSB0byBlbnN1cmUgdGhlIG1hcHBpbmcKPiAtCSAqIGlzIG5vdCBy ZW1vdmVkIGZyb20gdW5kZXIgeW91ciBmZWV0Lgo+ICsJICogcGFkZHIgY29udGFpbnMgdGhlIGJ1 ZmZlciBETUEgYWRkcmVzcy4gSXQgaXMgdmFsaWQgZm9yCj4gIAkgKgo+IC0JICogTm90ZSB0aGF0 IE9NQVBfQk9fU0NBTk9VVCBpcyBhIGhpbnQgZnJvbSB1c2Vyc3BhY2UgdGhhdCBETUEgY2FwYWJs ZQo+IC0JICogYnVmZmVyIGlzIHJlcXVlc3RlZCwgYnV0IGRvZXNuJ3QgbWVhbiB0aGF0IGl0IGlz LiBVc2UgdGhlCj4gLQkgKiBPTUFQX0JPX01FTV9ETUFfQVBJIGZsYWcgdG8gZGV0ZXJtaW5lIGlm IHRoZSBidWZmZXIgaGFzIGEgRE1BIGNhcGFibGUKPiAtCSAqIHBoeXNpY2FsIGFkZHJlc3MuCj4g KwkgKiAtIGJ1ZmZlcnMgYWxsb2NhdGVkIHRocm91Z2ggdGhlIERNQSBtYXBwaW5nIEFQSSAod2l0 aCB0aGUKPiArCSAqICAgT01BUF9CT19NRU1fRE1BX0FQSSBmbGFnIHNldCkKPiArCSAqCj4gKwkg KiAtIGJ1ZmZlcnMgaW1wb3J0ZWQgZnJvbSBkbWFidWYgKHdpdGggdGhlIE9NQVBfQk9fTUVNX0RN QUJVRiBmbGFnIHNldCkKPiArCSAqICAgaWYgdGhleSBhcmUgcGh5c2ljYWxseSBjb250aWd1b3Vz ICh3aGVuIHNndC0+b3JpZ19uZW50cyA9PSAxKQo+ICsJICoKPiArCSAqIC0gYnVmZmVycyBtYXBw ZWQgdGhyb3VnaCB0aGUgVElMRVIgd2hlbiBwYWRkcl9jbnQgaXMgbm90IHplcm8sIGluCj4gKwkg KiAgIHdoaWNoIGNhc2UgdGhlIERNQSBhZGRyZXNzIHBvaW50cyB0byB0aGUgVElMRVIgYXBlcnR1 cmUKPiArCSAqCj4gKwkgKiBQaHlzaWNhbGx5IGNvbnRpZ3VvdXMgYnVmZmVycyBoYXZlIHRoZWly IERNQSBhZGRyZXNzIGVxdWFsIHRvIHRoZQo+ICsJICogcGh5c2ljYWwgYWRkcmVzcyBhcyB3ZSBk b24ndCByZW1hcCB0aG9zZSBidWZmZXJzIHRocm91Z2ggdGhlIFRJTEVSLgo+ICsJICoKPiArCSAq IEJ1ZmZlcnMgbWFwcGVkIHRvIHRoZSBUSUxFUiBoYXZlIHRoZWlyIERNQSBhZGRyZXNzIHBvaW50 aW5nIHRvIHRoZQo+ICsJICogVElMRVIgYXBlcnR1cmUuIEFzIFRJTEVSIG1hcHBpbmdzIGFyZSBy ZWZjb3VudGVkICh0aHJvdWdoIHBhZGRyX2NudCkKPiArCSAqIHRoZSBETUEgYWRkcmVzcyBtdXN0 IGJlIGFjY2Vzc2VkIHRocm91Z2ggb21hcF9nZXRfZ2V0X3BhZGRyKCkgdG8KPiArCSAqIGVuc3Vy ZSB0aGF0IHRoZSBtYXBwaW5nIHdvbid0IGRpc2FwcGVhciB1bmV4cGVjdGVkbHkuIFJlZmVyZW5j ZXMgbXVzdAo+ICsJICogYmUgcmVsZWFzZWQgd2l0aCBvbWFwX2dlbV9wdXRfcGFkZHIoKS4KPiAg CSAqLwo+ICAJZG1hX2FkZHJfdCBwYWRkcjsKPiAgCj4gQEAgLTY5LDYgKzc4LDEyIEBAIHN0cnVj dCBvbWFwX2dlbV9vYmplY3Qgewo+ICAJdWludDMyX3QgcGFkZHJfY250Owo+ICAKPiAgCS8qKgo+ ICsJICogSWYgdGhlIGJ1ZmZlciBoYXMgYmVlbiBpbXBvcnRlZCBmcm9tIGEgZG1hYnVmIHRoZSBP TUFQX0RCX0RNQUJVRiBmbGFnCj4gKwkgKiBpcyBzZXQgYW5kIHRoZSBzZ3QgZmllbGQgaXMgdmFs aWQuCj4gKwkgKi8KPiArCXN0cnVjdCBzZ190YWJsZSAqc2d0Owo+ICsKPiArCS8qKgo+ICAJICog dGlsZXIgYmxvY2sgdXNlZCB3aGVuIGJ1ZmZlciBpcyByZW1hcHBlZCBpbiBETU0vVElMRVIuCj4g IAkgKi8KPiAgCXN0cnVjdCB0aWxlcl9ibG9jayAqYmxvY2s7Cj4gQEAgLTE2Niw2ICsxODEsMTcg QEAgc3RhdGljIHVpbnQ2NF90IG1tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq KQo+ICAJcmV0dXJuIGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmb2JqLT52bWFfbm9kZSk7Cj4g IH0KPiAgCj4gK3N0YXRpYyBib29sIGlzX2NvbnRpZ3VvdXMoc3RydWN0IG9tYXBfZ2VtX29iamVj dCAqb21hcF9vYmopCj4gK3sKPiArCWlmIChvbWFwX29iai0+ZmxhZ3MgJiBPTUFQX0JPX01FTV9E TUFfQVBJKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWlmICgob21hcF9vYmotPmZsYWdzICYg T01BUF9CT19NRU1fRE1BQlVGKSAmJiBvbWFwX29iai0+c2d0LT5uZW50cyA9PSAxKQo+ICsJCXJl dHVybiB0cnVlOwo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAgLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiAgICogRXZpY3Rpb24KPiAgICovCj4gQEAgLTM4NCw3ICs0MTAsNyBAQCBz dGF0aWMgaW50IGZhdWx0XzFkKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAo+ICAJCW9tYXBf Z2VtX2NwdV9zeW5jKG9iaiwgcGdvZmYpOwo+ICAJCXBmbiA9IHBhZ2VfdG9fcGZuKG9tYXBfb2Jq LT5wYWdlc1twZ29mZl0pOwo+ICAJfSBlbHNlIHsKPiAtCQlCVUdfT04oIShvbWFwX29iai0+Zmxh Z3MgJiBPTUFQX0JPX01FTV9ETUFfQVBJKSk7Cj4gKwkJQlVHX09OKCFpc19jb250aWd1b3VzKG9t YXBfb2JqKSk7Cj4gIAkJcGZuID0gKG9tYXBfb2JqLT5wYWRkciA+PiBQQUdFX1NISUZUKSArIHBn b2ZmOwo+ICAJfQo+ICAKPiBAQCAtNzc0LDggKzgwMCw3IEBAIGludCBvbWFwX2dlbV9nZXRfcGFk ZHIoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCj4gIAo+ICAJbXV0ZXhfbG9jaygmb2JqLT5k ZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JaWYgKCEob21hcF9vYmotPmZsYWdzICYgT01BUF9C T19NRU1fRE1BX0FQSSkgJiYKPiAtCSAgICByZW1hcCAmJiBwcml2LT51c2VyZ2FydCkgewo+ICsJ aWYgKCFpc19jb250aWd1b3VzKG9tYXBfb2JqKSAmJiByZW1hcCAmJiBwcml2LT51c2VyZ2FydCkg ewo+ICAJCWlmIChvbWFwX29iai0+cGFkZHJfY250ID09IDApIHsKPiAgCQkJc3RydWN0IHBhZ2Ug KipwYWdlczsKPiAgCQkJdWludDMyX3QgbnBhZ2VzID0gb2JqLT5zaXplID4+IFBBR0VfU0hJRlQ7 Cj4gQEAgLTgyMiw3ICs4NDcsNyBAQCBpbnQgb21hcF9nZW1fZ2V0X3BhZGRyKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLAo+ICAJCW9tYXBfb2JqLT5wYWRkcl9jbnQrKzsKPiAgCj4gIAkJKnBh ZGRyID0gb21hcF9vYmotPnBhZGRyOwo+IC0JfSBlbHNlIGlmIChvbWFwX29iai0+ZmxhZ3MgJiBP TUFQX0JPX01FTV9ETUFfQVBJKSB7Cj4gKwl9IGVsc2UgaWYgKGlzX2NvbnRpZ3VvdXMob21hcF9v YmopKSB7Cj4gIAkJKnBhZGRyID0gb21hcF9vYmotPnBhZGRyOwo+ICAJfSBlbHNlIHsKPiAgCQly ZXQgPSAtRUlOVkFMOwo+IEBAIC0xMjkwLDkgKzEzMTUsNiBAQCB1bmxvY2s6Cj4gICAqIENvbnN0 cnVjdG9yICYgRGVzdHJ1Y3Rvcgo+ICAgKi8KPiAgCj4gLS8qIGRvbid0IGNhbGwgZGlyZWN0bHku LiBjYWxsZWQgZnJvbSBHRU0gY29yZSB3aGVuIGl0IGlzIHRpbWUgdG8gYWN0dWFsbHkKPiAtICog ZnJlZSB0aGUgb2JqZWN0Li4KPiAtICovCj4gIHZvaWQgb21hcF9nZW1fZnJlZV9vYmplY3Qoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBvYmotPmRldjsKPiBAQCAtMTMxNCwxNCArMTMzNiwyMCBAQCB2b2lkIG9tYXBfZ2VtX2ZyZWVf b2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ICAKPiAgCS8qIGRvbid0IGZyZWUg ZXh0ZXJuYWxseSBhbGxvY2F0ZWQgYmFja2luZyBtZW1vcnkgKi8KPiAgCWlmICghKG9tYXBfb2Jq LT5mbGFncyAmIE9NQVBfQk9fTUVNX0VYVCkpIHsKPiAtCQlpZiAob21hcF9vYmotPnBhZ2VzKQo+ IC0JCQlvbWFwX2dlbV9kZXRhY2hfcGFnZXMob2JqKTsKPiArCQlpZiAob21hcF9vYmotPnBhZ2Vz KSB7Cj4gKwkJCWlmIChvbWFwX29iai0+ZmxhZ3MgJiBPTUFQX0JPX01FTV9ETUFCVUYpCj4gKwkJ CQlrZnJlZShvbWFwX29iai0+cGFnZXMpOwo+ICsJCQllbHNlCj4gKwkJCQlvbWFwX2dlbV9kZXRh Y2hfcGFnZXMob2JqKTsKPiArCQl9Cj4gIAo+ICAJCWlmIChvbWFwX29iai0+ZmxhZ3MgJiBPTUFQ X0JPX01FTV9ETUFfQVBJKSB7Cj4gIAkJCWRtYV9mcmVlX3dyaXRlY29tYmluZShkZXYtPmRldiwg b2JqLT5zaXplLAo+ICAJCQkJCW9tYXBfb2JqLT52YWRkciwgb21hcF9vYmotPnBhZGRyKTsKPiAg CQl9IGVsc2UgaWYgKG9tYXBfb2JqLT52YWRkcikgewo+ICAJCQl2dW5tYXAob21hcF9vYmotPnZh ZGRyKTsKPiArCQl9IGVsc2UgaWYgKG9iai0+aW1wb3J0X2F0dGFjaCkgewo+ICsJCQlkcm1fcHJp bWVfZ2VtX2Rlc3Ryb3kob2JqLCBvbWFwX29iai0+c2d0KTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBA IC0xMzY3LDE0ICsxMzk1LDE1IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb21hcF9nZW1fbmV3 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJZmxhZ3MgfD0gdGlsZXJfZ2V0X2NwdV9jYWNo ZV9mbGFncygpOwo+ICAJfSBlbHNlIGlmICgoZmxhZ3MgJiBPTUFQX0JPX1NDQU5PVVQpICYmICFw cml2LT51c2VyZ2FydCkgewo+ICAJCS8qCj4gLQkJICogVXNlIGNvbnRpZ3VvdXMgbWVtb3J5IGlm IHdlIGRvbid0IGhhdmUgRE1NIHRvIHJlbWFwCj4gLQkJICogZGlzY29udGlndW91cyBidWZmZXJz Lgo+ICsJCSAqIE9NQVBfQk9fU0NBTk9VVCBoaW50cyB0aGF0IHRoZSBidWZmZXIgZG9lc24ndCBu ZWVkIHRvIGJlCj4gKwkJICogdGlsZWQuIEhvd2V2ZXIsIHRvIGxvd2VyIHRoZSBwcmVzc3VyZSBv biBtZW1vcnkgYWxsb2NhdGlvbiwKPiArCQkgKiB1c2UgY29udGlndW91cyBtZW1vcnkgb25seSBp ZiBubyBUSUxFUiBpcyBhdmFpbGFibGUuCj4gIAkJICovCj4gIAkJZmxhZ3MgfD0gT01BUF9CT19N RU1fRE1BX0FQSTsKPiAtCX0gZWxzZSBpZiAoIShmbGFncyAmIE9NQVBfQk9fTUVNX0VYVCkpIHsK PiArCX0gZWxzZSBpZiAoIShmbGFncyAmIChPTUFQX0JPX01FTV9FWFQgfCBPTUFQX0JPX01FTV9E TUFCVUYpKSkgewo+ICAJCS8qCj4gLQkJICogQWxsIG90aGVyIGJ1ZmZlcnMgbm90IGJhY2tlZCB3 aXRoIGV4dGVybmFsIG1lbW9yeSBhcmUKPiAtCQkgKiBzaG1lbS1iYWNrZWQuCj4gKwkJICogQWxs IG90aGVyIGJ1ZmZlcnMgbm90IGJhY2tlZCBieSBleHRlcm5hbCBtZW1vcnkgb3IgZG1hX2J1Zgo+ ICsJCSAqIGFyZSBzaG1lbS1iYWNrZWQuCj4gIAkJICovCj4gIAkJZmxhZ3MgfD0gT01BUF9CT19N RU1fU0hNRU07Cj4gIAl9Cj4gQEAgLTE0MzYsNiArMTQ2NSw2NyBAQCBmYWlsOgo+ICAJcmV0dXJu IE5VTEw7Cj4gIH0KPiAgCj4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqb21hcF9nZW1fbmV3X2Rt YWJ1ZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKPiArCQkJCQkgICBzdHJ1 Y3Qgc2dfdGFibGUgKnNndCkKPiArewo+ICsJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IG9tYXBfZ2VtX29iamVjdCAqb21hcF9vYmo7 Cj4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPiArCXVuaW9uIG9tYXBfZ2VtX3NpemUg Z3NpemU7Cj4gKwo+ICsJLyogV2l0aG91dCBhIERNTSBvbmx5IHBoeXNpY2FsbHkgY29udGlndW91 cyBidWZmZXJzIGNhbiBiZSBzdXBwb3J0ZWQuICovCj4gKwlpZiAoc2d0LT5vcmlnX25lbnRzICE9 IDEgJiYgIXByaXYtPnVzZXJnYXJ0KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsK PiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCj4gKwlnc2l6ZS5ieXRlcyA9 IFBBR0VfQUxJR04oc2l6ZSk7Cj4gKwlvYmogPSBvbWFwX2dlbV9uZXcoZGV2LCBnc2l6ZSwgT01B UF9CT19NRU1fRE1BQlVGIHwgT01BUF9CT19XQyk7Cj4gKwlpZiAoIW9iaikgewo+ICsJCW9iaiA9 IEVSUl9QVFIoLUVOT01FTSk7Cj4gKwkJZ290byBkb25lOwo+ICsJfQo+ICsKPiArCW9tYXBfb2Jq ID0gdG9fb21hcF9ibyhvYmopOwo+ICsJb21hcF9vYmotPnNndCA9IHNndDsKPiArCj4gKwlpZiAo c2d0LT5vcmlnX25lbnRzID09IDEpIHsKPiArCQlvbWFwX29iai0+cGFkZHIgPSBzZ19kbWFfYWRk cmVzcyhzZ3QtPnNnbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIENyZWF0ZSBwYWdlcyBsaXN0IGZy b20gc2d0ICovCj4gKwkJc3RydWN0IHNnX3BhZ2VfaXRlciBpdGVyOwo+ICsJCXN0cnVjdCBwYWdl ICoqcGFnZXM7Cj4gKwkJdW5zaWduZWQgaW50IG5wYWdlczsKPiArCQl1bnNpZ25lZCBpbnQgaSA9 IDA7Cj4gKwo+ICsJCW5wYWdlcyA9IERJVl9ST1VORF9VUChzaXplLCBQQUdFX1NJWkUpOwo+ICsJ CXBhZ2VzID0ga2NhbGxvYyhucGFnZXMsIHNpemVvZigqcGFnZXMpLCBHRlBfS0VSTkVMKTsKPiAr CQlpZiAoIXBhZ2VzKSB7Cj4gKwkJCW9tYXBfZ2VtX2ZyZWVfb2JqZWN0KG9iaik7Cj4gKwkJCW9i aiA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gKwkJCWdvdG8gZG9uZTsKPiArCQl9Cj4gKwo+ICsJCW9t YXBfb2JqLT5wYWdlcyA9IHBhZ2VzOwo+ICsKPiArCQlmb3JfZWFjaF9zZ19wYWdlKHNndC0+c2ds LCAmaXRlciwgc2d0LT5vcmlnX25lbnRzLCAwKSB7Cj4gKwkJCXBhZ2VzW2krK10gPSBzZ19wYWdl X2l0ZXJfcGFnZSgmaXRlcik7Cj4gKwkJCWlmIChpID4gbnBhZ2VzKQo+ICsJCQkJYnJlYWs7Cj4g KwkJfQo+ICsKPiArCQlpZiAoV0FSTl9PTihpICE9IG5wYWdlcykpIHsKPiArCQkJb21hcF9nZW1f ZnJlZV9vYmplY3Qob2JqKTsKPiArCQkJb2JqID0gRVJSX1BUUigtRU5PTUVNKTsKPiArCQkJZ290 byBkb25lOwo+ICsJCX0KPiArCX0KPiArCj4gK2RvbmU6Cj4gKwltdXRleF91bmxvY2soJmRldi0+ c3RydWN0X211dGV4KTsKPiArCXJldHVybiBvYmo7Cj4gK30KPiArCj4gIC8qIGNvbnZlbmllbmNl IG1ldGhvZCB0byBjb25zdHJ1Y3QgYSBHRU0gYnVmZmVyIG9iamVjdCwgYW5kIHVzZXJzcGFjZSBo YW5kbGUgKi8KPiAgaW50IG9tYXBfZ2VtX25ld19oYW5kbGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICAJCXVuaW9uIG9tYXBfZ2VtX3NpemUgZ3NpemUs IHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL29tYXBfZ2VtX2RtYWJ1Zi5jCj4gaW5kZXggMjdjMjk3NjcyMDc2Li4zZjdkMjVhOGJhZjEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9nZW1fZG1hYnVmLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYuYwo+IEBAIC0y MSw2ICsyMSwxMCBAQAo+ICAKPiAgI2luY2x1ZGUgIm9tYXBfZHJ2LmgiCj4gIAo+ICsvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ICsgKiBETUFCVUYgRXhwb3J0Cj4gKyAqLwo+ICsKPiAgc3RhdGlj IHN0cnVjdCBzZ190YWJsZSAqb21hcF9nZW1fbWFwX2RtYV9idWYoCj4gIAkJc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKPiAgCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXIpCj4gQEAgLTE3MCw2ICsxNzQsMTAgQEAgc3RydWN0IGRtYV9idWYgKm9tYXBfZ2VtX3ByaW1l X2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICB7Cj4gIAlERUZJTkVfRE1BX0JVRl9F WFBPUlRfSU5GTyhleHBfaW5mbyk7Cj4gIAo+ICsJLyogRG9uJ3QgYWxsb3cgZXhwb3J0aW5nIGJ1 ZmZlcnMgdGhhdCBoYXZlIGJlZW4gaW1wb3J0ZWQuICovCj4gKwlpZiAob2JqLT5pbXBvcnRfYXR0 YWNoKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsKPiAgCWV4cF9pbmZvLm9wcyA9 ICZvbWFwX2RtYWJ1Zl9vcHM7Cj4gIAlleHBfaW5mby5zaXplID0gb2JqLT5zaXplOwo+ICAJZXhw X2luZm8uZmxhZ3MgPSBmbGFnczsKPiBAQCAtMTc4LDE1ICsxODYsMjAgQEAgc3RydWN0IGRtYV9i dWYgKm9tYXBfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJcmV0 dXJuIGRtYV9idWZfZXhwb3J0KCZleHBfaW5mbyk7Cj4gIH0KPiAgCj4gKy8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gKyAqIERNQUJVRiBJbXBvcnQKPiArICovCj4gKwo+ICBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9tYXBfZ2VtX3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ IC0JCXN0cnVjdCBkbWFfYnVmICpidWZmZXIpCj4gKwkJCQkJICAgICBzdHJ1Y3QgZG1hX2J1ZiAq ZG1hX2J1ZikKPiAgewo+ICsJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoOwo+ICAJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPiAr CWludCByZXQ7Cj4gIAo+IC0JLyogaXMgdGhpcyBvbmUgb2Ygb3duIG9iamVjdHM/ICovCj4gLQlp ZiAoYnVmZmVyLT5vcHMgPT0gJm9tYXBfZG1hYnVmX29wcykgewo+IC0JCW9iaiA9IGJ1ZmZlci0+ cHJpdjsKPiAtCQkvKiBpcyBpdCBmcm9tIG91ciBkZXZpY2U/ICovCj4gKwlpZiAoZG1hX2J1Zi0+ b3BzID09ICZvbWFwX2RtYWJ1Zl9vcHMpIHsKPiArCQlvYmogPSBkbWFfYnVmLT5wcml2Owo+ICAJ CWlmIChvYmotPmRldiA9PSBkZXYpIHsKPiAgCQkJLyoKPiAgCQkJICogSW1wb3J0aW5nIGRtYWJ1 ZiBleHBvcnRlZCBmcm9tIG91dCBvd24gZ2VtIGluY3JlYXNlcwo+IEBAIC0xOTcsOSArMjEwLDMz IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb21hcF9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCS8qCj4gLQkgKiBUT0RPIGFkZCBz dXBwb3J0IGZvciBpbXBvcnRpbmcgYnVmZmVycyBmcm9tIG90aGVyIGRldmljZXMuLgo+IC0JICog Zm9yIG5vdyB3ZSBkb24ndCBuZWVkIHRoaXMgYnV0IHdvdWxkIGJlIG5pY2UgdG8gYWRkIGV2ZW50 dWFsbHkKPiAtCSAqLwo+IC0JcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwlhdHRhY2ggPSBk bWFfYnVmX2F0dGFjaChkbWFfYnVmLCBkZXYtPmRldik7Cj4gKwlpZiAoSVNfRVJSKGF0dGFjaCkp Cj4gKwkJcmV0dXJuIEVSUl9DQVNUKGF0dGFjaCk7Cj4gKwo+ICsJZ2V0X2RtYV9idWYoZG1hX2J1 Zik7Cj4gKwo+ICsJc2d0ID0gZG1hX2J1Zl9tYXBfYXR0YWNobWVudChhdHRhY2gsIERNQV9CSURJ UkVDVElPTkFMKTsKPiArCWlmIChJU19FUlIoc2d0KSkgewo+ICsJCXJldCA9IFBUUl9FUlIoc2d0 KTsKPiArCQlnb3RvIGZhaWxfZGV0YWNoOwo+ICsJfQo+ICsKPiArCW9iaiA9IG9tYXBfZ2VtX25l d19kbWFidWYoZGV2LCBkbWFfYnVmLT5zaXplLCBzZ3QpOwo+ICsJaWYgKElTX0VSUihvYmopKSB7 Cj4gKwkJcmV0ID0gUFRSX0VSUihvYmopOwo+ICsJCWdvdG8gZmFpbF91bm1hcDsKPiArCX0KPiAr Cj4gKwlvYmotPmltcG9ydF9hdHRhY2ggPSBhdHRhY2g7Cj4gKwo+ICsJcmV0dXJuIG9iajsKPiAr Cj4gK2ZhaWxfdW5tYXA6Cj4gKwlkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoYXR0YWNoLCBzZ3Qs IERNQV9CSURJUkVDVElPTkFMKTsKPiArZmFpbF9kZXRhY2g6Cj4gKwlkbWFfYnVmX2RldGFjaChk bWFfYnVmLCBhdHRhY2gpOwo+ICsJZG1hX2J1Zl9wdXQoZG1hX2J1Zik7Cj4gKwo+ICsJcmV0dXJu IEVSUl9QVFIocmV0KTsKPiAgfQo+IC0tIAo+IDIuNC4xMAo+IAo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK