From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH v5 3/5] drm/gem: Add drm_gem_object_funcs Date: Mon, 22 Oct 2018 14:57:28 +0200 Message-ID: References: <20181017130454.44292-1-noralf@tronnes.org> <20181017130454.44292-4-noralf@tronnes.org> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181017130454.44292-4-noralf@tronnes.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= , dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, sam@ravnborg.org, david@lechnology.com List-Id: intel-gfx@lists.freedesktop.org QW0gMTcuMTAuMTggdW0gMTU6MDQgc2NocmllYiBOb3JhbGYgVHLDuG5uZXM6Cj4gVGhpcyBhZGRz IGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRhYmxlIG9uIEdFTSBvYmplY3RzLgo+IFRoZSBtYWluIGJl bmVmaXQgaXMgZm9yIGRyaXZlcnMgdGhhdCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgdHlwZSBvZgo+ IG1lbW9yeSAoc2htZW0sdnJhbSxjbWEpIGZvciB0aGVpciBidWZmZXJzIGRlcGVuZGluZyBvbiB0 aGUgaGFyZHdhcmUgaXQKPiBydW5zIG9uLiBXaXRoIHRoZSBjYWxsYmFja3MgYXR0YWNoZWQgdG8g dGhlIEdFTSBvYmplY3QgaXRzZWxmLCBpdCBpcwo+IGVhc2llciB0byBoYXZlIGNvcmUgaGVscGVy cyBmb3IgdGhlIHRoZSB2YXJpb3VzIGJ1ZmZlciB0eXBlcy4gVGhlIGRyaXZlcgo+IG9ubHkgaGFz IHRvIG1ha2UgdGhlIGRlY2lzaW9uIGFib3V0IGJ1ZmZlciB0eXBlIG9uIEdFTSBvYmplY3QgY3Jl YXRpb24KPiBhbmQgYWxsIG90aGVyIGNhbGxiYWNrcyBjYW4gYmUgaGFuZGxlZCBieSB0aGUgY2hv c2VuIGhlbHBlci4KPgo+IGRybV9kcml2ZXItPmdlbV9wcmltZV9yZXNfb2JqIGhhcyBub3QgYmVl biBhZGRlZCBzaW5jZSB0aGVyZSdzIGEgdG9kbyB0bwo+IHB1dCBhIHJlc2VydmF0aW9uX29iamVj dCBpbnRvIGRybV9nZW1fb2JqZWN0Lgo+Cj4gdjI6IERyb3AgZHJtX2dlbV9vYmplY3RfZnVuY3Mt PnByaW1lX21tYXAgaW4gZmF2b3VyIG9mCj4gZHJtX2dlbV9wcmltZV9tbWFwKCkgKERhbmllbCBW ZXR0ZXIpCj4KPiB2MToKPiAtIGRybV9nZW1fb2JqZWN0X2Z1bmNzLm1hcCAtPiAucHJpbWVfbWFw IGxldCBpdCBvbmx5IGRvIFBSSU1FIG1tYXAgbGlrZQo+ICAgIHRoZSBmdW5jdGlvbiBpdCBzdXBl cnNlZWRzIChEYW5pZWwgVmV0dGVyKQo+IC0gRmxpcCBhcm91bmQgdGhlIGlmIGxhZGRlcnMgYW5k IG1ha2Ugb2JqLT5mdW5jcyB0aGUgZmlyc3QgY2hvaWNlCj4gICAgaGlnaGxpZ2h0aW5nIHRoZSBm YWN0IHRoYXQgdGhpcyB0aGUgbmV3IGRlZmF1bHQgd2F5IG9mIGRvaW5nIGl0Cj4gICAgKERhbmll bCBWZXR0ZXIpCgpXZWxsIGNvdWxkIHdlIHBsZWFzZSBtYWtlIHRoaXMgbWFuZGF0b3J5IGFuZCBj b252ZXJ0IGRyaXZlcnMgYml0IGJ5IGJpdD8KCkNocmlzdGlhbi4KCj4KPiBTaWduZWQtb2ZmLWJ5 OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiBBY2tlZC1ieTogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fY2xpZW50LmMgfCAgMTIgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYyAg ICB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2RybV9wcmltZS5jICB8ICAzNCArKysrKystLS0tLQo+ICAgaW5jbHVkZS9kcm0vZHJt X2dlbS5oICAgICAgICB8IDEzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gICA0IGZpbGVzIGNoYW5nZWQsIDI1MiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jIGIvZHJp dmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwo+IGluZGV4IDE3ZDlhNjRlODg1ZS4uZWNhNzMzMTc2 MmU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCj4gQEAgLTgwLDggKzgwLDcgQEAgaW50IGRybV9j bGllbnRfbmV3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY2xpZW50X2RldiAq Y2xpZW50LAo+ICAgewo+ICAgCWludCByZXQ7Cj4gICAKPiAtCWlmICghZHJtX2NvcmVfY2hlY2tf ZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSB8fAo+IC0JICAgICFkZXYtPmRyaXZlci0+ZHVt Yl9jcmVhdGUgfHwgIWRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcCkKPiArCWlmICghZHJtX2Nv cmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSB8fCAhZGV2LT5kcml2ZXItPmR1 bWJfY3JlYXRlKQo+ICAgCQlyZXR1cm4gLUVPUE5PVFNVUFA7Cj4gICAKPiAgIAlpZiAoZnVuY3Mg JiYgIXRyeV9tb2R1bGVfZ2V0KGZ1bmNzLT5vd25lcikpCj4gQEAgLTIxMiw4ICsyMTEsNyBAQCBz dGF0aWMgdm9pZCBkcm1fY2xpZW50X2J1ZmZlcl9kZWxldGUoc3RydWN0IGRybV9jbGllbnRfYnVm ZmVyICpidWZmZXIpCj4gICB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGJ1ZmZlci0+ Y2xpZW50LT5kZXY7Cj4gICAKPiAtCWlmIChidWZmZXItPnZhZGRyICYmIGRldi0+ZHJpdmVyLT5n ZW1fcHJpbWVfdnVubWFwKQo+IC0JCWRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdnVubWFwKGJ1ZmZl ci0+Z2VtLCBidWZmZXItPnZhZGRyKTsKPiArCWRybV9nZW1fdnVubWFwKGJ1ZmZlci0+Z2VtLCBi dWZmZXItPnZhZGRyKTsKPiAgIAo+ICAgCWlmIChidWZmZXItPmdlbSkKPiAgIAkJZHJtX2dlbV9v YmplY3RfcHV0X3VubG9ja2VkKGJ1ZmZlci0+Z2VtKTsKPiBAQCAtMjY2LDkgKzI2NCw5IEBAIGRy bV9jbGllbnRfYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdTMy IHdpZHRoLCB1MzIgaGVpZ2h0LCB1Cj4gICAJICogZmRfaW5zdGFsbCBzdGVwIG91dCBvZiB0aGUg ZHJpdmVyIGJhY2tlbmQgaG9va3MsIHRvIG1ha2UgdGhhdAo+ICAgCSAqIGZpbmFsIHN0ZXAgb3B0 aW9uYWwgZm9yIGludGVybmFsIHVzZXJzLgo+ICAgCSAqLwo+IC0JdmFkZHIgPSBkZXYtPmRyaXZl ci0+Z2VtX3ByaW1lX3ZtYXAob2JqKTsKPiAtCWlmICghdmFkZHIpIHsKPiAtCQlyZXQgPSAtRU5P TUVNOwo+ICsJdmFkZHIgPSBkcm1fZ2VtX3ZtYXAob2JqKTsKPiArCWlmIChJU19FUlIodmFkZHIp KSB7Cj4gKwkJcmV0ID0gUFRSX0VSUih2YWRkcik7Cj4gICAJCWdvdG8gZXJyX2RlbGV0ZTsKPiAg IAl9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fZ2VtLmMKPiBpbmRleCA1MTIwNzhlYmQ5N2IuLjhiNTVlY2U5Nzk2NyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9nZW0uYwo+IEBAIC0yNTcsNyArMjU3LDkgQEAgZHJtX2dlbV9vYmplY3RfcmVs ZWFzZV9oYW5kbGUoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCj4gICAJc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmogPSBwdHI7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9i ai0+ZGV2Owo+ICAgCj4gLQlpZiAoZGV2LT5kcml2ZXItPmdlbV9jbG9zZV9vYmplY3QpCj4gKwlp ZiAob2JqLT5mdW5jcyAmJiBvYmotPmZ1bmNzLT5jbG9zZSkKPiArCQlvYmotPmZ1bmNzLT5jbG9z ZShvYmosIGZpbGVfcHJpdik7Cj4gKwllbHNlIGlmIChkZXYtPmRyaXZlci0+Z2VtX2Nsb3NlX29i amVjdCkKPiAgIAkJZGV2LT5kcml2ZXItPmdlbV9jbG9zZV9vYmplY3Qob2JqLCBmaWxlX3ByaXYp Owo+ICAgCj4gICAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfUFJJTUUp KQo+IEBAIC00MTAsNyArNDEyLDExIEBAIGRybV9nZW1faGFuZGxlX2NyZWF0ZV90YWlsKHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2LAo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJyX3JlbW92 ZTsKPiAgIAo+IC0JaWYgKGRldi0+ZHJpdmVyLT5nZW1fb3Blbl9vYmplY3QpIHsKPiArCWlmIChv YmotPmZ1bmNzICYmIG9iai0+ZnVuY3MtPm9wZW4pIHsKPiArCQlyZXQgPSBvYmotPmZ1bmNzLT5v cGVuKG9iaiwgZmlsZV9wcml2KTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycl9yZXZva2U7 Cj4gKwl9IGVsc2UgaWYgKGRldi0+ZHJpdmVyLT5nZW1fb3Blbl9vYmplY3QpIHsKPiAgIAkJcmV0 ID0gZGV2LT5kcml2ZXItPmdlbV9vcGVuX29iamVjdChvYmosIGZpbGVfcHJpdik7Cj4gICAJCWlm IChyZXQpCj4gICAJCQlnb3RvIGVycl9yZXZva2U7Cj4gQEAgLTgzNSw3ICs4NDEsOSBAQCBkcm1f Z2VtX29iamVjdF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQo+ICAgCQljb250YWluZXJfb2Yoa3Jl Ziwgc3RydWN0IGRybV9nZW1fb2JqZWN0LCByZWZjb3VudCk7Cj4gICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IG9iai0+ZGV2Owo+ICAgCj4gLQlpZiAoZGV2LT5kcml2ZXItPmdlbV9mcmVlX29i amVjdF91bmxvY2tlZCkgewo+ICsJaWYgKG9iai0+ZnVuY3MpIHsKPiArCQlvYmotPmZ1bmNzLT5m cmVlKG9iaik7Cj4gKwl9IGVsc2UgaWYgKGRldi0+ZHJpdmVyLT5nZW1fZnJlZV9vYmplY3RfdW5s b2NrZWQpIHsKPiAgIAkJZGV2LT5kcml2ZXItPmdlbV9mcmVlX29iamVjdF91bmxvY2tlZChvYmop Owo+ICAgCX0gZWxzZSBpZiAoZGV2LT5kcml2ZXItPmdlbV9mcmVlX29iamVjdCkgewo+ICAgCQlX QVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7Cj4gQEAgLTg2NCwx MyArODcyLDEzIEBAIGRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaikKPiAgIAo+ICAgCWRldiA9IG9iai0+ZGV2Owo+ICAgCj4gLQlpZiAoZGV2LT5k cml2ZXItPmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCkgewo+IC0JCWtyZWZfcHV0KCZvYmotPnJl ZmNvdW50LCBkcm1fZ2VtX29iamVjdF9mcmVlKTsKPiAtCX0gZWxzZSB7Cj4gKwlpZiAoZGV2LT5k cml2ZXItPmdlbV9mcmVlX29iamVjdCkgewo+ICAgCQltaWdodF9sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Cj4gICAJCWlmIChrcmVmX3B1dF9tdXRleCgmb2JqLT5yZWZjb3VudCwgZHJtX2dlbV9v YmplY3RfZnJlZSwKPiAgIAkJCQkmZGV2LT5zdHJ1Y3RfbXV0ZXgpKQo+ICAgCQkJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwl9IGVsc2Ugewo+ICsJCWtyZWZfcHV0KCZvYmot PnJlZmNvdW50LCBkcm1fZ2VtX29iamVjdF9mcmVlKTsKPiAgIAl9Cj4gICB9Cj4gICBFWFBPUlRf U1lNQk9MKGRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCk7Cj4gQEAgLTk2MCwxMSArOTY4LDE0 IEBAIGludCBkcm1fZ2VtX21tYXBfb2JqKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB1bnNp Z25lZCBsb25nIG9ial9zaXplLAo+ICAgCWlmIChvYmpfc2l6ZSA8IHZtYS0+dm1fZW5kIC0gdm1h LT52bV9zdGFydCkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAtCWlmICghZGV2LT5kcml2 ZXItPmdlbV92bV9vcHMpCj4gKwlpZiAob2JqLT5mdW5jcyAmJiBvYmotPmZ1bmNzLT52bV9vcHMp Cj4gKwkJdm1hLT52bV9vcHMgPSBvYmotPmZ1bmNzLT52bV9vcHM7Cj4gKwllbHNlIGlmIChkZXYt PmRyaXZlci0+Z2VtX3ZtX29wcykKPiArCQl2bWEtPnZtX29wcyA9IGRldi0+ZHJpdmVyLT5nZW1f dm1fb3BzOwo+ICsJZWxzZQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+ICAgCXZtYS0+dm1f ZmxhZ3MgfD0gVk1fSU8gfCBWTV9QRk5NQVAgfCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVA7 Cj4gLQl2bWEtPnZtX29wcyA9IGRldi0+ZHJpdmVyLT5nZW1fdm1fb3BzOwo+ICAgCXZtYS0+dm1f cHJpdmF0ZV9kYXRhID0gb2JqOwo+ICAgCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X3dyaXRl Y29tYmluZSh2bV9nZXRfcGFnZV9wcm90KHZtYS0+dm1fZmxhZ3MpKTsKPiAgIAl2bWEtPnZtX3Bh Z2VfcHJvdCA9IHBncHJvdF9kZWNyeXB0ZWQodm1hLT52bV9wYWdlX3Byb3QpOwo+IEBAIC0xMDY2 LDYgKzEwNzcsODYgQEAgdm9pZCBkcm1fZ2VtX3ByaW50X2luZm8oc3RydWN0IGRybV9wcmludGVy ICpwLCB1bnNpZ25lZCBpbnQgaW5kZW50LAo+ICAgCWRybV9wcmludGZfaW5kZW50KHAsIGluZGVu dCwgImltcG9ydGVkPSVzXG4iLAo+ICAgCQkJICBvYmotPmltcG9ydF9hdHRhY2ggPyAieWVzIiA6 ICJubyIpOwo+ICAgCj4gLQlpZiAob2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW50X2luZm8pCj4g KwlpZiAob2JqLT5mdW5jcyAmJiBvYmotPmZ1bmNzLT5wcmludF9pbmZvKQo+ICsJCW9iai0+ZnVu Y3MtPnByaW50X2luZm8ocCwgaW5kZW50LCBvYmopOwo+ICsJZWxzZSBpZiAob2JqLT5kZXYtPmRy aXZlci0+Z2VtX3ByaW50X2luZm8pCj4gICAJCW9iai0+ZGV2LT5kcml2ZXItPmdlbV9wcmludF9p bmZvKHAsIGluZGVudCwgb2JqKTsKPiAgIH0KPiArCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX3BpbiAt IFBpbiBiYWNraW5nIGJ1ZmZlciBpbiBtZW1vcnkKPiArICogQG9iajogR0VNIG9iamVjdAo+ICsg Kgo+ICsgKiBNYWtlIHN1cmUgdGhlIGJhY2tpbmcgYnVmZmVyIGlzIHBpbm5lZCBpbiBtZW1vcnku Cj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVy cm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1fZ2VtX3BpbihzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5jcy0+ cGluKQo+ICsJCXJldHVybiBvYmotPmZ1bmNzLT5waW4ob2JqKTsKPiArCWVsc2UgaWYgKG9iai0+ ZGV2LT5kcml2ZXItPmdlbV9wcmltZV9waW4pCj4gKwkJcmV0dXJuIG9iai0+ZGV2LT5kcml2ZXIt PmdlbV9wcmltZV9waW4ob2JqKTsKPiArCWVsc2UKPiArCQlyZXR1cm4gMDsKPiArfQo+ICtFWFBP UlRfU1lNQk9MKGRybV9nZW1fcGluKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX3VucGluIC0g VW5waW4gYmFja2luZyBidWZmZXIgZnJvbSBtZW1vcnkKPiArICogQG9iajogR0VNIG9iamVjdAo+ ICsgKgo+ICsgKiBSZWxheCB0aGUgcmVxdWlyZW1lbnQgdGhhdCB0aGUgYmFja2luZyBidWZmZXIg aXMgcGlubmVkIGluIG1lbW9yeS4KPiArICovCj4gK3ZvaWQgZHJtX2dlbV91bnBpbihzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5j cy0+dW5waW4pCj4gKwkJb2JqLT5mdW5jcy0+dW5waW4ob2JqKTsKPiArCWVsc2UgaWYgKG9iai0+ ZGV2LT5kcml2ZXItPmdlbV9wcmltZV91bnBpbikKPiArCQlvYmotPmRldi0+ZHJpdmVyLT5nZW1f cHJpbWVfdW5waW4ob2JqKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9nZW1fdW5waW4pOwo+ ICsKPiArLyoqCj4gKyAqIGRybV9nZW1fdm1hcCAtIE1hcCBidWZmZXIgaW50byBrZXJuZWwgdmly dHVhbCBhZGRyZXNzIHNwYWNlCj4gKyAqIEBvYmo6IEdFTSBvYmplY3QKPiArICoKPiArICogUmV0 dXJuczoKPiArICogQSB2aXJ0dWFsIHBvaW50ZXIgdG8gYSBuZXdseSBjcmVhdGVkIEdFTSBvYmpl Y3Qgb3IgYW4gRVJSX1BUUi1lbmNvZGVkIG5lZ2F0aXZlCj4gKyAqIGVycm9yIGNvZGUgb24gZmFp bHVyZS4KPiArICovCj4gK3ZvaWQgKmRybV9nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaikKPiArewo+ICsJdm9pZCAqdmFkZHI7Cj4gKwo+ICsJaWYgKG9iai0+ZnVuY3MgJiYgb2Jq LT5mdW5jcy0+dm1hcCkKPiArCQl2YWRkciA9IG9iai0+ZnVuY3MtPnZtYXAob2JqKTsKPiArCWVs c2UgaWYgKG9iai0+ZGV2LT5kcml2ZXItPmdlbV9wcmltZV92bWFwKQo+ICsJCXZhZGRyID0gb2Jq LT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXAob2JqKTsKPiArCWVsc2UKPiArCQl2YWRkciA9 IEVSUl9QVFIoLUVPUE5PVFNVUFApOwo+ICsKPiArCWlmICghdmFkZHIpCj4gKwkJdmFkZHIgPSBF UlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXJldHVybiB2YWRkcjsKPiArfQo+ICtFWFBPUlRfU1lN Qk9MKGRybV9nZW1fdm1hcCk7Cj4gKwo+ICsvKioKPiArICogZHJtX2dlbV92dW5tYXAgLSBSZW1v dmUgYnVmZmVyIG1hcHBpbmcgZnJvbSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIHNwYWNlCj4gKyAq IEBvYmo6IEdFTSBvYmplY3QKPiArICogQHZhZGRyOiBWaXJ0dWFsIGFkZHJlc3MgKGNhbiBiZSBO VUxMKQo+ICsgKi8KPiArdm9pZCBkcm1fZ2VtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgdm9pZCAqdmFkZHIpCj4gK3sKPiArCWlmICghdmFkZHIpCj4gKwkJcmV0dXJuOwo+ICsK PiArCWlmIChvYmotPmZ1bmNzICYmIG9iai0+ZnVuY3MtPnZ1bm1hcCkKPiArCQlvYmotPmZ1bmNz LT52dW5tYXAob2JqLCB2YWRkcik7Cj4gKwllbHNlIGlmIChvYmotPmRldi0+ZHJpdmVyLT5nZW1f cHJpbWVfdnVubWFwKQo+ICsJCW9iai0+ZGV2LT5kcml2ZXItPmdlbV9wcmltZV92dW5tYXAob2Jq LCB2YWRkcik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3Z1bm1hcCk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJpbWUuYwo+IGluZGV4IDQyYWJmOThjMWQ0YS4uZTBhYjUyMTNlZmE3IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJpbWUuYwo+IEBAIC0xOTksNyArMTk5LDYgQEAgaW50IGRybV9nZW1fbWFwX2F0dGFjaChzdHJ1 Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX3ByaW1lX2F0dGFjaG1l bnQgKnByaW1lX2F0dGFjaDsKPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRtYV9i dWYtPnByaXY7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7Cj4gICAKPiAg IAlwcmltZV9hdHRhY2ggPSBremFsbG9jKHNpemVvZigqcHJpbWVfYXR0YWNoKSwgR0ZQX0tFUk5F TCk7Cj4gICAJaWYgKCFwcmltZV9hdHRhY2gpCj4gQEAgLTIwOCwxMCArMjA3LDcgQEAgaW50IGRy bV9nZW1fbWFwX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAgIAlwcmltZV9hdHRh Y2gtPmRpciA9IERNQV9OT05FOwo+ICAgCWF0dGFjaC0+cHJpdiA9IHByaW1lX2F0dGFjaDsKPiAg IAo+IC0JaWYgKCFkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3BpbikKPiAtCQlyZXR1cm4gMDsKPiAt Cj4gLQlyZXR1cm4gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9waW4ob2JqKTsKPiArCXJldHVybiBk cm1fZ2VtX3BpbihvYmopOwo+ICAgfQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX21hcF9hdHRh Y2gpOwo+ICAgCj4gQEAgLTIyOCw3ICsyMjQsNiBAQCB2b2lkIGRybV9nZW1fbWFwX2RldGFjaChz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX3ByaW1lX2F0dGFj aG1lbnQgKnByaW1lX2F0dGFjaCA9IGF0dGFjaC0+cHJpdjsKPiAgIAlzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiA9IGRtYV9idWYtPnByaXY7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g b2JqLT5kZXY7Cj4gICAKPiAgIAlpZiAocHJpbWVfYXR0YWNoKSB7Cj4gICAJCXN0cnVjdCBzZ190 YWJsZSAqc2d0ID0gcHJpbWVfYXR0YWNoLT5zZ3Q7Cj4gQEAgLTI0Nyw4ICsyNDIsNyBAQCB2b2lk IGRybV9nZW1fbWFwX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAgIAkJYXR0YWNo LT5wcml2ID0gTlVMTDsKPiAgIAl9Cj4gICAKPiAtCWlmIChkZXYtPmRyaXZlci0+Z2VtX3ByaW1l X3VucGluKQo+IC0JCWRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdW5waW4ob2JqKTsKPiArCWRybV9n ZW1fdW5waW4ob2JqKTsKPiAgIH0KPiAgIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9tYXBfZGV0YWNo KTsKPiAgIAo+IEBAIC0zMTAsNyArMzA0LDEwIEBAIHN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9t YXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4gICAJaWYgKFdB Uk5fT04ocHJpbWVfYXR0YWNoLT5kaXIgIT0gRE1BX05PTkUpKQo+ICAgCQlyZXR1cm4gRVJSX1BU UigtRUJVU1kpOwo+ICAgCj4gLQlzZ3QgPSBvYmotPmRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfZ2V0 X3NnX3RhYmxlKG9iaik7Cj4gKwlpZiAob2JqLT5mdW5jcykKPiArCQlzZ3QgPSBvYmotPmZ1bmNz LT5nZXRfc2dfdGFibGUob2JqKTsKPiArCWVsc2UKPiArCQlzZ3QgPSBvYmotPmRldi0+ZHJpdmVy LT5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKG9iaik7Cj4gICAKPiAgIAlpZiAoIUlTX0VSUihzZ3Qp KSB7Cj4gICAJCWlmICghZG1hX21hcF9zZ19hdHRycyhhdHRhY2gtPmRldiwgc2d0LT5zZ2wsIHNn dC0+bmVudHMsIGRpciwKPiBAQCAtNDA2LDEyICs0MDMsMTMgQEAgRVhQT1JUX1NZTUJPTChkcm1f Z2VtX2RtYWJ1Zl9yZWxlYXNlKTsKPiAgIHZvaWQgKmRybV9nZW1fZG1hYnVmX3ZtYXAoc3RydWN0 IGRtYV9idWYgKmRtYV9idWYpCj4gICB7Cj4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmog PSBkbWFfYnVmLT5wcml2Owo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2Owo+ ICsJdm9pZCAqdmFkZHI7Cj4gICAKPiAtCWlmIChkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXAp Cj4gLQkJcmV0dXJuIGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcChvYmopOwo+IC0JZWxzZQo+ IC0JCXJldHVybiBOVUxMOwo+ICsJdmFkZHIgPSBkcm1fZ2VtX3ZtYXAob2JqKTsKPiArCWlmIChJ U19FUlIodmFkZHIpKQo+ICsJCXZhZGRyID0gTlVMTDsKPiArCj4gKwlyZXR1cm4gdmFkZHI7Cj4g ICB9Cj4gICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fZG1hYnVmX3ZtYXApOwo+ICAgCj4gQEAgLTQy NiwxMCArNDI0LDggQEAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX2RtYWJ1Zl92bWFwKTsKPiAgIHZv aWQgZHJtX2dlbV9kbWFidWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB2b2lkICp2 YWRkcikKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRtYV9idWYtPnBy aXY7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7Cj4gICAKPiAtCWlmIChk ZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcCkKPiAtCQlkZXYtPmRyaXZlci0+Z2VtX3ByaW1l X3Z1bm1hcChvYmosIHZhZGRyKTsKPiArCWRybV9nZW1fdnVubWFwKG9iaiwgdmFkZHIpOwo+ICAg fQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX2RtYWJ1Zl92dW5tYXApOwo+ICAgCj4gQEAgLTUy OSw3ICs1MjUsOSBAQCBzdGF0aWMgc3RydWN0IGRtYV9idWYgKmV4cG9ydF9hbmRfcmVnaXN0ZXJf b2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCXJldHVybiBkbWFidWY7Cj4gICAJ fQo+ICAgCj4gLQlpZiAoZGV2LT5kcml2ZXItPmdlbV9wcmltZV9leHBvcnQpCj4gKwlpZiAob2Jq LT5mdW5jcyAmJiBvYmotPmZ1bmNzLT5leHBvcnQpCj4gKwkJZG1hYnVmID0gb2JqLT5mdW5jcy0+ ZXhwb3J0KG9iaiwgZmxhZ3MpOwo+ICsJZWxzZSBpZiAoZGV2LT5kcml2ZXItPmdlbV9wcmltZV9l eHBvcnQpCj4gICAJCWRtYWJ1ZiA9IGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfZXhwb3J0KGRldiwg b2JqLCBmbGFncyk7Cj4gICAJZWxzZQo+ICAgCQlkbWFidWYgPSBkcm1fZ2VtX3ByaW1lX2V4cG9y dChkZXYsIG9iaiwgZmxhZ3MpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtLmgg Yi9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKPiBpbmRleCAzNTgzYjk4YTE3MTguLmY0NjZjZTViZGUw ZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fZ2VtLmgKPiBAQCAtMzgsNiArMzgsMTIxIEBACj4gICAKPiAgICNpbmNsdWRlIDxkcm0v ZHJtX3ZtYV9tYW5hZ2VyLmg+Cj4gICAKPiArc3RydWN0IGRybV9nZW1fb2JqZWN0Owo+ICsKPiAr LyoqCj4gKyAqIHN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcyAtIEdFTSBvYmplY3QgZnVuY3Rp b25zCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3Mgewo+ICsJLyoqCj4gKwkg KiBAZnJlZToKPiArCSAqCj4gKwkgKiBEZWNvbnN0cnVjdG9yIGZvciBkcm1fZ2VtX29iamVjdHMu Cj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBtYW5kYXRvcnkuCj4gKwkgKi8KPiArCXZv aWQgKCpmcmVlKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gKwo+ICsJLyoqCj4gKwkg KiBAb3BlbjoKPiArCSAqCj4gKwkgKiBDYWxsZWQgdXBvbiBHRU0gaGFuZGxlIGNyZWF0aW9uLgo+ ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gKwkgKi8KPiArCWludCAo Km9wZW4pKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp Owo+ICsKPiArCS8qKgo+ICsJICogQGNsb3NlOgo+ICsJICoKPiArCSAqIENhbGxlZCB1cG9uIEdF TSBoYW5kbGUgcmVsZWFzZS4KPiArCSAqCj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFs Lgo+ICsJICovCj4gKwl2b2lkICgqY2xvc2UpKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ICsKPiArCS8qKgo+ICsJICogQHByaW50X2luZm86Cj4g KwkgKgo+ICsJICogSWYgZHJpdmVyIHN1YmNsYXNzZXMgc3RydWN0ICZkcm1fZ2VtX29iamVjdCwg aXQgY2FuIGltcGxlbWVudCB0aGlzCj4gKwkgKiBvcHRpb25hbCBob29rIGZvciBwcmludGluZyBh ZGRpdGlvbmFsIGRyaXZlciBzcGVjaWZpYyBpbmZvLgo+ICsJICoKPiArCSAqIGRybV9wcmludGZf aW5kZW50KCkgc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGNhbGxiYWNrIHBhc3NpbmcgaXQgdGhlCj4g KwkgKiBpbmRlbnQgYXJndW1lbnQuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBjYWxs ZWQgZnJvbSBkcm1fZ2VtX3ByaW50X2luZm8oKS4KPiArCSAqCj4gKwkgKiBUaGlzIGNhbGxiYWNr IGlzIG9wdGlvbmFsLgo+ICsJICovCj4gKwl2b2lkICgqcHJpbnRfaW5mbykoc3RydWN0IGRybV9w cmludGVyICpwLCB1bnNpZ25lZCBpbnQgaW5kZW50LAo+ICsJCQkgICBjb25zdCBzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZXhwb3J0Ogo+ICsJICoKPiAr CSAqIEV4cG9ydCBiYWNraW5nIGJ1ZmZlciBhcyBhICZkbWFfYnVmLgo+ICsJICogSWYgdGhpcyBp cyBub3Qgc2V0IGRybV9nZW1fcHJpbWVfZXhwb3J0KCkgaXMgdXNlZC4KPiArCSAqCj4gKwkgKiBU aGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLgo+ICsJICovCj4gKwlzdHJ1Y3QgZG1hX2J1ZiAqKCpl eHBvcnQpKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBpbnQgZmxhZ3MpOwo+ICsKPiArCS8q Kgo+ICsJICogQHBpbjoKPiArCSAqCj4gKwkgKiBQaW4gYmFja2luZyBidWZmZXIgaW4gbWVtb3J5 Lgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gKwkgKi8KPiArCWlu dCAoKnBpbikoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICsKPiArCS8qKgo+ICsJICog QHVucGluOgo+ICsJICoKPiArCSAqIFVucGluIGJhY2tpbmcgYnVmZmVyLgo+ICsJICoKPiArCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gKwkgKi8KPiArCXZvaWQgKCp1bnBpbikoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICsKPiArCS8qKgo+ICsJICogQGdldF9zZ190YWJs ZToKPiArCSAqCj4gKwkgKiBSZXR1cm5zIGEgU2NhdHRlci1HYXRoZXIgdGFibGUgcmVwcmVzZW50 YXRpb24gb2YgdGhlIGJ1ZmZlci4KPiArCSAqIFVzZWQgd2hlbiBleHBvcnRpbmcgYSBidWZmZXIu Cj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBtYW5kYXRvcnkgaWYgYnVmZmVyIGV4cG9y dCBpcyBzdXBwb3J0ZWQuCj4gKwkgKi8KPiArCXN0cnVjdCBzZ190YWJsZSAqKCpnZXRfc2dfdGFi bGUpKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiArCj4gKwkvKioKPiArCSAqIEB2bWFw Ogo+ICsJICoKPiArCSAqIFJldHVybnMgYSB2aXJ0dWFsIGFkZHJlc3MgZm9yIHRoZSBidWZmZXIu Cj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4KPiArCSAqLwo+ICsJdm9p ZCAqKCp2bWFwKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gKwo+ICsJLyoqCj4gKwkg KiBAdnVubWFwOgo+ICsJICoKPiArCSAqIFJlbGVhc2VzIHRoZSB0aGUgYWRkcmVzcyBwcmV2aW91 c2x5IHJldHVybmVkIGJ5IEB2bWFwLgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0 aW9uYWwuCj4gKwkgKi8KPiArCXZvaWQgKCp2dW5tYXApKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqLCB2b2lkICp2YWRkcik7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAdm1fb3BzOgo+ICsJICoKPiAr CSAqIFZpcnR1YWwgbWVtb3J5IG9wZXJhdGlvbnMgdXNlZCB3aXRoIG1tYXAuCj4gKwkgKgo+ICsJ ICogVGhpcyBpcyBvcHRpb25hbCBidXQgbmVjZXNzYXJ5IGZvciBtbWFwIHN1cHBvcnQuCj4gKwkg Ki8KPiArCWNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAqdm1fb3BzOwo+ICt9Owo+ ICsKPiAgIC8qKgo+ICAgICogc3RydWN0IGRybV9nZW1fb2JqZWN0IC0gR0VNIGJ1ZmZlciBvYmpl Y3QKPiAgICAqCj4gQEAgLTE0Niw2ICsyNjEsMTcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0IHsK PiAgIAkgKiBzaW1wbHkgbGVhdmUgaXQgYXMgTlVMTC4KPiAgIAkgKi8KPiAgIAlzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICppbXBvcnRfYXR0YWNoOwo+ICsKPiArCS8qKgo+ICsJICogQGZ1bmNz Ogo+ICsJICoKPiArCSAqIE9wdGlvbmFsIEdFTSBvYmplY3QgZnVuY3Rpb25zLiBJZiB0aGlzIGlz IHNldCwgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlCj4gKwkgKiBjb3JyZXNwb25kaW5n ICZkcm1fZHJpdmVyIEdFTSBjYWxsYmFja3MuCj4gKwkgKgo+ICsJICogTmV3IGRyaXZlcnMgc2hv dWxkIHVzZSB0aGlzLgo+ICsJICoKPiArCSAqLwo+ICsJY29uc3Qgc3RydWN0IGRybV9nZW1fb2Jq ZWN0X2Z1bmNzICpmdW5jczsKPiAgIH07Cj4gICAKPiAgIC8qKgo+IEBAIC0yOTMsNCArNDE5LDkg QEAgaW50IGRybV9nZW1fZHVtYl9kZXN0cm95KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiAgIAkJ CSBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJIHVpbnQzMl90IGhhbmRsZSk7Cj4gICAK PiAraW50IGRybV9nZW1fcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiArdm9pZCBk cm1fZ2VtX3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiArdm9pZCAqZHJtX2dl bV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiArdm9pZCBkcm1fZ2VtX3Z1bm1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpOwo+ICsKPiAgICNlbmRp ZiAvKiBfX0RSTV9HRU1fSF9fICovCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK