From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 1/9] drm: Begin an API for in-kernel clients Date: Tue, 3 Jul 2018 09:43:42 +0200 Message-ID: <20180703074342.GE7880@phenom.ffwll.local> References: <20180702135433.7960-1-noralf@tronnes.org> <20180702135433.7960-2-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id D03C46E2B8 for ; Tue, 3 Jul 2018 07:43:46 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id l23-v6so905655edq.0 for ; Tue, 03 Jul 2018 00:43:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180702135433.7960-2-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, dri-devel@lists.freedesktop.org, david@lechnology.com List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMDIsIDIwMTggYXQgMDM6NTQ6MjVQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFRoaXMgdGhlIGJlZ2lubmluZyBvZiBhbiBBUEkgZm9yIGluLWtlcm5lbCBjbGll bnRzLgo+IEZpcnN0IG91dCBpcyBhIHdheSB0byBnZXQgYSBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkg YSBkdW1iIGJ1ZmZlci4KPiAKPiBPbmx5IEdFTSBkcml2ZXJzIGFyZSBzdXBwb3J0ZWQuCj4gVGhl IG9yaWdpbmFsIGlkZWEgb2YgdXNpbmcgYW4gZXhwb3J0ZWQgZG1hLWJ1ZiB3YXMgZHJvcHBlZCBi ZWNhdXNlIGl0Cj4gYWxzbyBjcmVhdGVzIGFuIGFub25vbW91cyBmaWxlIGRlc2NyaXB0b3Igd2hp Y2ggZG9lc24ndCB3b3JrIHdoZW4gdGhlCj4gYnVmZmVyIGlzIGNyZWF0ZWQgZnJvbSBhIGtlcm5l bCB0aHJlYWQuIFRoZSBlYXN5IHdheSBvdXQgaXMgdG8gdXNlCj4gZHJtX2RyaXZlci5nZW1fcHJp bWVfdm1hcCB0byBnZXQgdGhlIHZpcnR1YWwgYWRkcmVzcywgd2hpY2ggcmVxdWlyZXMgYQo+IEdF TSBvYmplY3QuIFRoaXMgZXhjbHVkZXMgdGhlIHZtd2dmeCBkcml2ZXIgd2hpY2ggaXMgdGhlIG9u bHkgbm9uLUdFTQo+IGRyaXZlciBhcGFydCBmcm9tIHRoZSBsZWdhY3kgb25lcy4gQSBzb2x1dGlv biBmb3Igdm13Z2Z4IHdpbGwgaGF2ZSB0byBiZQo+IHdvcmtlZCBvdXQgbGF0ZXIgaWYgaXQgd2Fu dHMgdG8gc3VwcG9ydCB0aGUgY2xpZW50IEFQSSB3aGljaCBpdCBwcm9iYWJseQo+IHdpbGwgd2hl biB3ZSBoYXZlIGEgYm9vdHNwbGFzaCBjbGllbnQuCj4gCj4gU2lnbmVkLW9mZi1ieTogTm9yYWxm IFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Cj4gUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gLS0tCj4gIERvY3VtZW50YXRpb24vZ3B1L2Ry bS1jbGllbnQucnN0IHwgIDEyICsrCj4gIERvY3VtZW50YXRpb24vZ3B1L2luZGV4LnJzdCAgICAg IHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgfCAgIDIgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYyAgICAgfCAyODkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgICAgICAg IHwgICAxICsKPiAgaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oICAgICAgICAgfCAgNzYgKysrKysr KysrKwo+ICBpbmNsdWRlL2RybS9kcm1fZGV2aWNlLmggICAgICAgICB8ICAgNyArCj4gIDcgZmls ZXMgY2hhbmdlZCwgMzg3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0Cj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBpbmNsdWRlL2RybS9kcm1fY2xpZW50LmgKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWNsaWVudC5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xpZW50LnJzdAo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43ZTY3MjA2M2U3ZWIK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWNsaWVudC5yc3QK PiBAQCAtMCwwICsxLDEyIEBACj4gKz09PT09PT09PT09PT09PT09Cj4gK0tlcm5lbCBjbGllbnRz Cj4gKz09PT09PT09PT09PT09PT09Cj4gKwo+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUv ZHJtL2RybV9jbGllbnQuYwo+ICsgICA6ZG9jOiBvdmVydmlldwo+ICsKPiArLi4ga2VybmVsLWRv Yzo6IGluY2x1ZGUvZHJtL2RybV9jbGllbnQuaAo+ICsgICA6aW50ZXJuYWw6Cj4gKwo+ICsuLiBr ZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwo+ICsgICA6ZXhwb3J0Ogo+ IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QgYi9Eb2N1bWVudGF0aW9u L2dwdS9pbmRleC5yc3QKPiBpbmRleCAwMDI4OGYzNGM1YTYuLjFmY2Y4ZTg1MWUxNSAxMDA2NDQK PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QKPiArKysgYi9Eb2N1bWVudGF0aW9u L2dwdS9pbmRleC5yc3QKPiBAQCAtMTAsNiArMTAsNyBAQCBMaW51eCBHUFUgRHJpdmVyIERldmVs b3BlcidzIEd1aWRlCj4gICAgIGRybS1rbXMKPiAgICAgZHJtLWttcy1oZWxwZXJzCj4gICAgIGRy bS11YXBpCj4gKyAgIGRybS1jbGllbnQKPiAgICAgZHJpdmVycwo+ICAgICB2Z2Etc3dpdGNoZXJv bwo+ICAgICB2Z2FhcmJpdGVyCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDY5YzEzNTE3ZWEzYS4uZDY2NTdh NjFkMDM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC0xOCw3ICsxOCw3IEBAIGRybS15ICAgICAgIDo9 CWRybV9hdXRoLm8gZHJtX2J1ZnMubyBkcm1fY2FjaGUubyBcCj4gIAkJZHJtX2VuY29kZXIubyBk cm1fbW9kZV9vYmplY3QubyBkcm1fcHJvcGVydHkubyBcCj4gIAkJZHJtX3BsYW5lLm8gZHJtX2Nv bG9yX21nbXQubyBkcm1fcHJpbnQubyBcCj4gIAkJZHJtX2R1bWJfYnVmZmVycy5vIGRybV9tb2Rl X2NvbmZpZy5vIGRybV92YmxhbmsubyBcCj4gLQkJZHJtX3N5bmNvYmoubyBkcm1fbGVhc2UubyBk cm1fd3JpdGViYWNrLm8KPiArCQlkcm1fc3luY29iai5vIGRybV9sZWFzZS5vIGRybV93cml0ZWJh Y2subyBkcm1fY2xpZW50Lm8KPiAgCj4gIGRybS0kKENPTkZJR19EUk1fTElCX1JBTkRPTSkgKz0g bGliL2RybV9yYW5kb20ubwo+ICBkcm0tJChDT05GSUdfRFJNX1ZNKSArPSBkcm1fdm0ubwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9jbGllbnQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw Li45YzliOGFjN2FlYTMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9jbGllbnQuYwo+IEBAIC0wLDAgKzEsMjg5IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE4IE5vcmFsZiBUcsO4bm5lcwo+ ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9t dXRleC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NsaWVudC5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9kZWJ1Z2ZzLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV9kcnYuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX21vZGUuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiAr I2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZHJtX2NydGNfaW50ZXJuYWwu aCIKPiArI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgo+ICsKPiArLyoqCj4gKyAqIERPQzogb3Zl cnZpZXcKPiArICoKPiArICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNsaWVu dHMgcnVubmluZyBpbiB0aGUga2VybmVsIGxpa2UgZmJkZXYgYW5kIGJvb3RzcGxhc2guCj4gKyAq IEN1cnJlbnRseSBpdCdzIG9ubHkgcGFydGlhbGx5IGltcGxlbWVudGVkLCBqdXN0IGVub3VnaCB0 byBzdXBwb3J0IGZiZGV2Lgo+ICsgKgo+ICsgKiBHRU0gZHJpdmVycyB3aGljaCBwcm92aWRlIGEg R0VNIGJhc2VkIGR1bWIgYnVmZmVyIHdpdGggYSB2aXJ0dWFsIGFkZHJlc3MgYXJlIHN1cHBvcnRl ZC4KPiArICovCj4gKwo+ICtzdGF0aWMgaW50IGRybV9jbGllbnRfb3BlbihzdHJ1Y3QgZHJtX2Ns aWVudF9kZXYgKmNsaWVudCkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVu dC0+ZGV2Owo+ICsJc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICsKPiArCWZpbGUgPSBkcm1fZmls ZV9hbGxvYyhkZXYtPnByaW1hcnkpOwo+ICsJaWYgKElTX0VSUihmaWxlKSkKPiArCQlyZXR1cm4g UFRSX0VSUihmaWxlKTsKPiArCj4gKwltdXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsK PiArCWxpc3RfYWRkKCZmaWxlLT5saGVhZCwgJmRldi0+ZmlsZWxpc3RfaW50ZXJuYWwpOwo+ICsJ bXV0ZXhfdW5sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiArCj4gKwljbGllbnQtPmZpbGUg PSBmaWxlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fY2xp ZW50X2Nsb3NlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5m aWxlbGlzdF9tdXRleCk7Cj4gKwlsaXN0X2RlbCgmY2xpZW50LT5maWxlLT5saGVhZCk7Cj4gKwlt dXRleF91bmxvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+ICsKPiArCWRybV9maWxlX2ZyZWUo Y2xpZW50LT5maWxlKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfY2xvc2UpOwo+ ICsKPiArLyoqCj4gKyAqIGRybV9jbGllbnRfbmV3IC0gQ3JlYXRlIGEgRFJNIGNsaWVudAo+ICsg KiBAZGV2OiBEUk0gZGV2aWNlCj4gKyAqIEBjbGllbnQ6IERSTSBjbGllbnQKPiArICogQG5hbWU6 IENsaWVudCBuYW1lCj4gKyAqCj4gKyAqIFVzZSBkcm1fY2xpZW50X3B1dCgpIHRvIGZyZWUgdGhl IGNsaWVudC4KCnMvX3B1dC9fcmVsZWFzZS8gLi4uIHNwb3R0ZWQgd2hpbGUgcmV2aWV3aW5nIHRo ZSAybmQgY2xpZW50IGxpYnJhcnkgcGF0Y2guCi1EYW5pZWwKCj4gKyAqCj4gKyAqIFJldHVybnM6 Cj4gKyAqIFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUu Cj4gKyAqLwo+ICtpbnQgZHJtX2NsaWVudF9uZXcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsCj4gKwkJICAgY29uc3QgY2hhciAqbmFtZSkKPiAr ewo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfTU9ERVNFVCkgfHwKPiArCSAgICAhZGV2LT5kcml2ZXItPmR1bWJfY3JlYXRlIHx8ICFk ZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXApCj4gKwkJcmV0dXJuIC1FTk9UU1VQUDsKPiArCj4g KwljbGllbnQtPmRldiA9IGRldjsKPiArCWNsaWVudC0+bmFtZSA9IG5hbWU7Cj4gKwo+ICsJcmV0 ID0gZHJtX2NsaWVudF9vcGVuKGNsaWVudCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7 Cj4gKwo+ICsJZHJtX2Rldl9nZXQoZGV2KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBP UlRfU1lNQk9MKGRybV9jbGllbnRfbmV3KTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fY2xpZW50X3Jl bGVhc2UgLSBSZWxlYXNlIERSTSBjbGllbnQgcmVzb3VyY2VzCj4gKyAqIEBjbGllbnQ6IERSTSBj bGllbnQKPiArICoKPiArICogUmVsZWFzZXMgcmVzb3VyY2VzIGJ5IGNsb3NpbmcgdGhlICZkcm1f ZmlsZSB0aGF0IHdhcyBvcGVuZWQgYnkgZHJtX2NsaWVudF9uZXcoKS4KPiArICogSXQgaXMgY2Fs bGVkIGF1dG9tYXRpY2FsbHkgaWYgdGhlICZkcm1fY2xpZW50X2Z1bmNzLnVucmVnaXN0ZXIgY2Fs bGJhY2sgaXMgX25vdF8gc2V0Lgo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5 IGJlIGNhbGxlZCBmcm9tIHRoZSB1bnJlZ2lzdGVyIGNhbGxiYWNrLiBBbiBleGNlcHRpb24KPiAr ICogaXMgZmJkZXYgd2hpY2ggY2Fubm90IGZyZWUgdGhlIGJ1ZmZlciBpZiB1c2Vyc3BhY2UgaGFz IG9wZW4gZmlsZSBkZXNjcmlwdG9ycy4KPiArICoKPiArICogTm90ZToKPiArICogQ2xpZW50cyBj YW5ub3QgaW5pdGlhdGUgYSByZWxlYXNlIGJ5IHRoZW1zZWx2ZXMuIFRoaXMgaXMgZG9uZSB0byBr ZWVwIHRoZSBjb2RlIHNpbXBsZS4KPiArICogVGhlIGRyaXZlciBoYXMgdG8gYmUgdW5sb2FkZWQg YmVmb3JlIHRoZSBjbGllbnQgY2FuIGJlIHVubG9hZGVkLgo+ICsgKi8KPiArdm9pZCBkcm1fY2xp ZW50X3JlbGVhc2Uoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCj4gK3sKPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjbGllbnQtPmRldjsKPiArCj4gKwlEUk1fREVWX0RFQlVHX0tN UyhkZXYtPmRldiwgIiVzXG4iLCBjbGllbnQtPm5hbWUpOwo+ICsKPiArCWRybV9jbGllbnRfY2xv c2UoY2xpZW50KTsKPiArCWRybV9kZXZfcHV0KGRldik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChk cm1fY2xpZW50X3JlbGVhc2UpOwo+ICsKPiArc3RhdGljIHZvaWQgZHJtX2NsaWVudF9idWZmZXJf ZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gYnVmZmVyLT5jbGllbnQtPmRldjsKPiArCj4gKwlpZiAoYnVmZmVy LT52YWRkciAmJiBkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcCkKPiArCQlkZXYtPmRyaXZl ci0+Z2VtX3ByaW1lX3Z1bm1hcChidWZmZXItPmdlbSwgYnVmZmVyLT52YWRkcik7Cj4gKwo+ICsJ aWYgKGJ1ZmZlci0+Z2VtKQo+ICsJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChidWZmZXIt PmdlbSk7Cj4gKwo+ICsJZHJtX21vZGVfZGVzdHJveV9kdW1iKGRldiwgYnVmZmVyLT5oYW5kbGUs IGJ1ZmZlci0+Y2xpZW50LT5maWxlKTsKPiArCWtmcmVlKGJ1ZmZlcik7Cj4gK30KPiArCj4gK3N0 YXRpYyBzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKgo+ICtkcm1fY2xpZW50X2J1ZmZlcl9jcmVh dGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwg dTMyIGZvcm1hdCkKPiArewo+ICsJc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iIGR1bWJfYXJn cyA9IHsgfTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjbGllbnQtPmRldjsKPiArCXN0 cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyOwo+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmo7Cj4gKwl2b2lkICp2YWRkcjsKPiArCWludCByZXQ7Cj4gKwo+ICsJYnVmZmVyID0ga3ph bGxvYyhzaXplb2YoKmJ1ZmZlciksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFidWZmZXIpCj4gKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJYnVmZmVyLT5jbGllbnQgPSBjbGllbnQ7 Cj4gKwo+ICsJZHVtYl9hcmdzLndpZHRoID0gd2lkdGg7Cj4gKwlkdW1iX2FyZ3MuaGVpZ2h0ID0g aGVpZ2h0Owo+ICsJZHVtYl9hcmdzLmJwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZvcm1hdCwg MCkgKiA4Owo+ICsJcmV0ID0gZHJtX21vZGVfY3JlYXRlX2R1bWIoZGV2LCAmZHVtYl9hcmdzLCBj bGllbnQtPmZpbGUpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9mcmVlOwo+ICsKPiArCWJ1 ZmZlci0+aGFuZGxlID0gZHVtYl9hcmdzLmhhbmRsZTsKPiArCWJ1ZmZlci0+cGl0Y2ggPSBkdW1i X2FyZ3MucGl0Y2g7Cj4gKwo+ICsJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGNsaWVudC0+ ZmlsZSwgZHVtYl9hcmdzLmhhbmRsZSk7Cj4gKwlpZiAoIW9iaikgIHsKPiArCQlyZXQgPSAtRU5P RU5UOwo+ICsJCWdvdG8gZXJyX2RlbGV0ZTsKPiArCX0KPiArCj4gKwlidWZmZXItPmdlbSA9IG9i ajsKPiArCj4gKwkvKgo+ICsJICogRklYTUU6IFRoZSBkZXBlbmRlbmN5IG9uIEdFTSBoZXJlIGlz bid0IHJlcXVpcmVkLCB3ZSBjb3VsZAo+ICsJICogY29udmVydCB0aGUgZHJpdmVyIGhhbmRsZSB0 byBhIGRtYS1idWYgaW5zdGVhZCBhbmQgdXNlIHRoZQo+ICsJICogYmFja2VuZC1hZ25vc3RpYyBk bWEtYnVmIHZtYXAgc3VwcG9ydCBpbnN0ZWFkLiBUaGlzIHdvdWxkCj4gKwkgKiByZXF1aXJlIHRo YXQgdGhlIGhhbmRsZTJmZCBwcmltZSBpb2N0bCBpcyByZXdvcmtlZCB0byBwdWxsIHRoZQo+ICsJ ICogZmRfaW5zdGFsbCBzdGVwIG91dCBvZiB0aGUgZHJpdmVyIGJhY2tlbmQgaG9va3MsIHRvIG1h a2UgdGhhdAo+ICsJICogZmluYWwgc3RlcCBvcHRpb25hbCBmb3IgaW50ZXJuYWwgdXNlcnMuCj4g KwkgKi8KPiArCXZhZGRyID0gZGV2LT5kcml2ZXItPmdlbV9wcmltZV92bWFwKG9iaik7Cj4gKwlp ZiAoIXZhZGRyKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlnb3RvIGVycl9kZWxldGU7Cj4g Kwl9Cj4gKwo+ICsJYnVmZmVyLT52YWRkciA9IHZhZGRyOwo+ICsKPiArCXJldHVybiBidWZmZXI7 Cj4gKwo+ICtlcnJfZGVsZXRlOgo+ICsJZHJtX2NsaWVudF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7 Cj4gK2Vycl9mcmVlOgo+ICsJa2ZyZWUoYnVmZmVyKTsKPiArCj4gKwlyZXR1cm4gRVJSX1BUUihy ZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fY2xpZW50X2J1ZmZlcl9ybWZiKHN0cnVj dCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlm ICghYnVmZmVyLT5mYikKPiArCQlyZXR1cm47Cj4gKwo+ICsJcmV0ID0gZHJtX21vZGVfcm1mYihi dWZmZXItPmNsaWVudC0+ZGV2LCBidWZmZXItPmZiLT5iYXNlLmlkLCBidWZmZXItPmNsaWVudC0+ ZmlsZSk7Cj4gKwlpZiAocmV0KQo+ICsJCURSTV9ERVZfRVJST1IoYnVmZmVyLT5jbGllbnQtPmRl di0+ZGV2LAo+ICsJCQkgICAgICAiRXJyb3IgcmVtb3ZpbmcgRkI6JXUgKCVkKVxuIiwgYnVmZmVy LT5mYi0+YmFzZS5pZCwgcmV0KTsKPiArCj4gKwlidWZmZXItPmZiID0gTlVMTDsKPiArfQo+ICsK PiArc3RhdGljIGludCBkcm1fY2xpZW50X2J1ZmZlcl9hZGRmYihzdHJ1Y3QgZHJtX2NsaWVudF9i dWZmZXIgKmJ1ZmZlciwKPiArCQkJCSAgIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwgdTMyIGZvcm1h dCkKPiArewo+ICsJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQgPSBidWZmZXItPmNsaWVu dDsKPiArCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgZmJfcmVxID0geyB9Owo+ICsJY29uc3Qgc3Ry dWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsKPiArCWludCByZXQ7Cj4gKwo+ICsJaW5mbyA9IGRy bV9mb3JtYXRfaW5mbyhmb3JtYXQpOwo+ICsJZmJfcmVxLmJwcCA9IGluZm8tPmNwcFswXSAqIDg7 Cj4gKwlmYl9yZXEuZGVwdGggPSBpbmZvLT5kZXB0aDsKPiArCWZiX3JlcS53aWR0aCA9IHdpZHRo Owo+ICsJZmJfcmVxLmhlaWdodCA9IGhlaWdodDsKPiArCWZiX3JlcS5oYW5kbGUgPSBidWZmZXIt PmhhbmRsZTsKPiArCWZiX3JlcS5waXRjaCA9IGJ1ZmZlci0+cGl0Y2g7Cj4gKwo+ICsJcmV0ID0g ZHJtX21vZGVfYWRkZmIoY2xpZW50LT5kZXYsICZmYl9yZXEsIGNsaWVudC0+ZmlsZSk7Cj4gKwlp ZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJYnVmZmVyLT5mYiA9IGRybV9mcmFtZWJ1 ZmZlcl9sb29rdXAoY2xpZW50LT5kZXYsIGJ1ZmZlci0+Y2xpZW50LT5maWxlLCBmYl9yZXEuZmJf aWQpOwo+ICsJaWYgKFdBUk5fT04oIWJ1ZmZlci0+ZmIpKQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ ICsKPiArCS8qIGRyb3AgdGhlIHJlZmVyZW5jZSB3ZSBwaWNrZWQgdXAgaW4gZnJhbWVidWZmZXIg bG9va3VwICovCj4gKwlkcm1fZnJhbWVidWZmZXJfcHV0KGJ1ZmZlci0+ZmIpOwo+ICsKPiArCXN0 cnNjcHkoYnVmZmVyLT5mYi0+Y29tbSwgY2xpZW50LT5uYW1lLCBUQVNLX0NPTU1fTEVOKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9jbGllbnRfZnJhbWVidWZm ZXJfY3JlYXRlIC0gQ3JlYXRlIGEgY2xpZW50IGZyYW1lYnVmZmVyCj4gKyAqIEBjbGllbnQ6IERS TSBjbGllbnQKPiArICogQHdpZHRoOiBGcmFtZWJ1ZmZlciB3aWR0aAo+ICsgKiBAaGVpZ2h0OiBG cmFtZWJ1ZmZlciBoZWlnaHQKPiArICogQGZvcm1hdDogQnVmZmVyIGZvcm1hdAo+ICsgKgo+ICsg KiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSAmZHJtX2NsaWVudF9idWZmZXIgd2hpY2ggY29uc2lz dHMgb2YgYQo+ICsgKiAmZHJtX2ZyYW1lYnVmZmVyIGJhY2tlZCBieSBhIGR1bWIgYnVmZmVyLgo+ ICsgKiBDYWxsIGRybV9jbGllbnRfZnJhbWVidWZmZXJfZGVsZXRlKCkgdG8gZnJlZSB0aGUgYnVm ZmVyLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBQb2ludGVyIHRvIGEgY2xpZW50IGJ1ZmZl ciBvciBhbiBlcnJvciBwb2ludGVyIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2Ns aWVudF9idWZmZXIgKgo+ICtkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJt X2NsaWVudF9kZXYgKmNsaWVudCwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1MzIgZm9ybWF0KQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcjsKPiArCWludCByZXQ7Cj4g Kwo+ICsJYnVmZmVyID0gZHJtX2NsaWVudF9idWZmZXJfY3JlYXRlKGNsaWVudCwgd2lkdGgsIGhl aWdodCwgZm9ybWF0KTsKPiArCWlmIChJU19FUlIoYnVmZmVyKSkKPiArCQlyZXR1cm4gYnVmZmVy Owo+ICsKPiArCXJldCA9IGRybV9jbGllbnRfYnVmZmVyX2FkZGZiKGJ1ZmZlciwgd2lkdGgsIGhl aWdodCwgZm9ybWF0KTsKPiArCWlmIChyZXQpIHsKPiArCQlkcm1fY2xpZW50X2J1ZmZlcl9kZWxl dGUoYnVmZmVyKTsKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICsJfQo+ICsKPiArCXJldHVy biBidWZmZXI7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2Ny ZWF0ZSk7Cj4gKwo+ICsvKioKPiArICogZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUgLSBE ZWxldGUgYSBjbGllbnQgZnJhbWVidWZmZXIKPiArICogQGJ1ZmZlcjogRFJNIGNsaWVudCBidWZm ZXIgKGNhbiBiZSBOVUxMKQo+ICsgKi8KPiArdm9pZCBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2Rl bGV0ZShzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcikKPiArewo+ICsJaWYgKCFidWZm ZXIpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWRybV9jbGllbnRfYnVmZmVyX3JtZmIoYnVmZmVyKTsK PiArCWRybV9jbGllbnRfYnVmZmVyX2RlbGV0ZShidWZmZXIpOwo+ICt9Cj4gK0VYUE9SVF9TWU1C T0woZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+IGluZGV4IDdh Zjc0OGVkMWM1OC4uZTdmZjBiMDMzMjhiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4gQEAgLTUwNSw2ICs1 MDUsNyBAQCBpbnQgZHJtX2Rldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlkZXYt PmRyaXZlciA9IGRyaXZlcjsKPiAgCj4gIAlJTklUX0xJU1RfSEVBRCgmZGV2LT5maWxlbGlzdCk7 Cj4gKwlJTklUX0xJU1RfSEVBRCgmZGV2LT5maWxlbGlzdF9pbnRlcm5hbCk7Cj4gIAlJTklUX0xJ U1RfSEVBRCgmZGV2LT5jdHhsaXN0KTsKPiAgCUlOSVRfTElTVF9IRUFEKCZkZXYtPnZtYWxpc3Qp Owo+ICAJSU5JVF9MSVNUX0hFQUQoJmRldi0+bWFwbGlzdCk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9jbGllbnQuaCBiL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lMzY2Zjk1ZDQ0MTQKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCj4gQEAgLTAsMCArMSw3NiBA QAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ICsKPiArI2lmbmRl ZiBfRFJNX0NMSUVOVF9IXwo+ICsjZGVmaW5lIF9EUk1fQ0xJRU5UX0hfCj4gKwo+ICsjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KPiArCj4gK3N0cnVjdCBkcm1fZGV2aWNlOwo+ICtzdHJ1Y3QgZHJt X2ZpbGU7Cj4gK3N0cnVjdCBkcm1fZnJhbWVidWZmZXI7Cj4gK3N0cnVjdCBkcm1fZ2VtX29iamVj dDsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgLSBEUk0gY2xpZW50IGlu c3RhbmNlCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgewo+ICsJLyoqCj4gKwkgKiBA ZGV2OiBEUk0gZGV2aWNlCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gKwo+ ICsJLyoqCj4gKwkgKiBAbmFtZTogTmFtZSBvZiB0aGUgY2xpZW50Lgo+ICsJICovCj4gKwljb25z dCBjaGFyICpuYW1lOwo+ICsKPiArCS8qKgo+ICsJICogQGZpbGU6IERSTSBmaWxlCj4gKwkgKi8K PiArCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiArfTsKPiArCj4gK2ludCBkcm1fY2xpZW50X25l dyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwK PiArCQkgICBjb25zdCBjaGFyICpuYW1lKTsKPiArdm9pZCBkcm1fY2xpZW50X3JlbGVhc2Uoc3Ry dWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpOwo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCBkcm1f Y2xpZW50X2J1ZmZlciAtIERSTSBjbGllbnQgYnVmZmVyCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2Ns aWVudF9idWZmZXIgewo+ICsJLyoqCj4gKwkgKiBAY2xpZW50OiBEUk0gY2xpZW50Cj4gKwkgKi8K PiArCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50Owo+ICsKPiArCS8qKgo+ICsJICogQGhh bmRsZTogQnVmZmVyIGhhbmRsZQo+ICsJICovCj4gKwl1MzIgaGFuZGxlOwo+ICsKPiArCS8qKgo+ ICsJICogQHBpdGNoOiBCdWZmZXIgcGl0Y2gKPiArCSAqLwo+ICsJdTMyIHBpdGNoOwo+ICsKPiAr CS8qKgo+ICsJICogQGdlbTogR0VNIG9iamVjdCBiYWNraW5nIHRoaXMgYnVmZmVyCj4gKwkgKi8K PiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtOwo+ICsKPiArCS8qKgo+ICsJICogQHZhZGRy OiBWaXJ0dWFsIGFkZHJlc3MgZm9yIHRoZSBidWZmZXIKPiArCSAqLwo+ICsJdm9pZCAqdmFkZHI7 Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZmI6IERSTSBmcmFtZWJ1ZmZlcgo+ICsJICovCj4gKwlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiArfTsKPiArCj4gK3N0cnVjdCBkcm1fY2xpZW50X2J1 ZmZlciAqCj4gK2RybV9jbGllbnRfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBmb3JtYXQpOwo+ICt2b2lk IGRybV9jbGllbnRfZnJhbWVidWZmZXJfZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAq YnVmZmVyKTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZGV2 aWNlLmggYi9pbmNsdWRlL2RybS9kcm1fZGV2aWNlLmgKPiBpbmRleCA4NThiYTE5YTNlMjkuLjll Mjk5NzZkNGU5OCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fZGV2aWNlLmgKPiArKysg Yi9pbmNsdWRlL2RybS9kcm1fZGV2aWNlLmgKPiBAQCAtNzQsNiArNzQsMTMgQEAgc3RydWN0IGRy bV9kZXZpY2Ugewo+ICAJc3RydWN0IG11dGV4IGZpbGVsaXN0X211dGV4Owo+ICAJc3RydWN0IGxp c3RfaGVhZCBmaWxlbGlzdDsKPiAgCj4gKwkvKioKPiArCSAqIEBmaWxlbGlzdF9pbnRlcm5hbDoK PiArCSAqCj4gKwkgKiBMaXN0IG9mIG9wZW4gRFJNIGZpbGVzIGZvciBpbi1rZXJuZWwgY2xpZW50 cy4gUHJvdGVjdGVkIGJ5IEBmaWxlbGlzdF9tdXRleC4KPiArCSAqLwo+ICsJc3RydWN0IGxpc3Rf aGVhZCBmaWxlbGlzdF9pbnRlcm5hbDsKPiArCj4gIAkvKiogXG5hbWUgTWVtb3J5IG1hbmFnZW1l bnQgKi8KPiAgCS8qQHsgKi8KPiAgCXN0cnVjdCBsaXN0X2hlYWQgbWFwbGlzdDsJLyoqPCBMaW5r ZWQgbGlzdCBvZiByZWdpb25zICovCj4gLS0gCj4gMi4xNS4xCj4gCj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0 Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZldHRlcgpT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==