From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/6] drm: provide management functions for drm_file Date: Mon, 19 Sep 2016 13:55:24 +0200 Message-ID: <20160919115524.GF20761@phenom.ffwll.local> References: <20160901124837.680-1-dh.herrmann@gmail.com> <20160901124837.680-5-dh.herrmann@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6F6AC6E023 for ; Mon, 19 Sep 2016 11:55:32 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id b184so14555947wma.3 for ; Mon, 19 Sep 2016 04:55:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20160901124837.680-5-dh.herrmann@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Herrmann Cc: Daniel Vetter , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBTZXAgMDEsIDIwMTYgYXQgMDI6NDg6MzVQTSArMDIwMCwgRGF2aWQgSGVycm1hbm4g d3JvdGU6Cj4gUmF0aGVyIHRoYW4gZG9pbmcgZHJtX2ZpbGUgYWxsb2NhdGlvbi9kZXN0cnVjdGlv biByaWdodCBpbiB0aGUgZm9wcywgbGV0cwo+IHByb3ZpZGUgc2VwYXJhdGUgaGVscGVycy4gVGhp cyBkZWNvdXBsZXMgZHJtX2ZpbGUgbWFuYWdlbWVudCBmcm9tIHRoZQo+IHN0aWxsLW1hbmRhdG9y eSBkcm0tZm9wcy4gSXQgcHJlcGFyZXMgZm9yIHVzZSBvZiBkcm1fZmlsZSB3aXRob3V0IHRoZQo+ IGZvcHMsIGJvdGggYnkgcG9zc2libGUgc2VwYXJhdGUgZm9wcyBpbXBsZW1lbnRhdGlvbnMgYW5k IEFQSXMgKG5vdCB0aGF0IEkKPiBhbSBhd2FyZSBvZiBhbnkgc3VjaCBwbGFucyksIGFuZCBtb3Jl IGltcG9ydGFudGx5IGZyb20gaW4ta2VybmVsIHVzZSB3aGVyZQo+IG5vIHJlYWwgZmlsZSBpcyBh dmFpbGFibGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5u QGdtYWlsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyAgICAgIHwgMTM1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fZm9wcy5jICAgICB8IDEzMiArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCB8ICAgNCArKwo+ICAz IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2Rydi5jCj4gaW5kZXggNTdjZTk3My4uOWFiMDAxNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+IEBA IC05NSw2ICs5NSwxNDEgQEAgdm9pZCBkcm1fdXRfZGVidWdfcHJpbnRrKGNvbnN0IGNoYXIgKmZ1 bmN0aW9uX25hbWUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQo+ICB9Cj4gIEVYUE9SVF9TWU1C T0woZHJtX3V0X2RlYnVnX3ByaW50ayk7Cj4gIAo+ICsvKioKPiArICogZHJtX2ZpbGVfYWxsb2Mg LSBhbGxvY2F0ZSBmaWxlIGNvbnRleHQKPiArICogQG1pbm9yOiBtaW5vciB0byBhbGxvY2F0ZSBv bgo+ICsgKgo+ICsgKiBUaGlzIGFsbG9jYXRlcyBhIG5ldyBEUk0gZmlsZSBjb250ZXh0LiBJdCBp cyBub3QgbGlua2VkIGludG8gYW55IGNvbnRleHQgYW5kCj4gKyAqIGNhbiBiZSB1c2VkIGJ5IHRo ZSBjYWxsZXIgZnJlZWx5LiBOb3RlIHRoYXQgdGhlIGNvbnRleHQga2VlcHMgYSBwb2ludGVyIHRv Cj4gKyAqIEBtaW5vciwgc28gaXQgbXVzdCBiZSBmcmVlZCBiZWZvcmUgQG1pbm9yIGlzLgo+ICsg Kgo+ICsgKiBUaGUgbGVnYWN5IHBhdGhzIG1pZ2h0IHJlcXVpcmUgdGhlIGRybV9nbG9iYWxfbXV0 ZXggdG8gYmUgaGVsZC4KPiArICoKPiArICogUkVUVVJOUzoKPiArICogUG9pbnRlciB0byBuZXds eSBhbGxvY2F0ZWQgY29udGV4dCwgRVJSX1BUUiBvbiBmYWlsdXJlLgo+ICsgKi8KCgpIbSwgaW4g ZHJtIGNvcmUgd2Ugb25seSB0eXBlIGtlcm5lbGRvYyBmb3IgZXhwb3J0ZWQgc3R1ZmYsIG5vdCBp bnRlcm5hbAppbnRlcmZhY2VzLiBUaGUgaWRlYSBiZWluZyB0aGF0IHRoZSB0YXJnZXQgYXVkaWVu Y2UgZm9yIHRob3NlIGRvY3MgaXMKKG1vc3RseSkgZHJpdmVyIGF1dGhvcnMuCgpBbmQgc2luY2Ug eW91J3JlIHRvdWNoaW5nIHRoaXMsIGRybV9maWxlLltoY10gd291bGQgbG9vayBwcmV0dHkgSSB0 aGluaywKd2l0aCBrZXJuZWxkb2MgZm9yIHRoZSBzdHJ1Y3R1cmVzIC4uLgotRGFuaWVsCgoKPiAr c3RydWN0IGRybV9maWxlICpkcm1fZmlsZV9hbGxvYyhzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikK PiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1pbm9yLT5kZXY7Cj4gKwlzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWZpbGUgPSBremFsbG9jKHNpemVv ZigqZmlsZSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFmaWxlKQo+ICsJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwo+ICsKPiArCWZpbGUtPnBpZCA9IGdldF9waWQodGFza19waWQoY3VycmVudCkp Owo+ICsJZmlsZS0+bWlub3IgPSBtaW5vcjsKPiArCWZpbGUtPmF1dGhlbnRpY2F0ZWQgPSBjYXBh YmxlKENBUF9TWVNfQURNSU4pOyAvKiBsZWdhY3kgY29tcGF0ICovCj4gKwlJTklUX0xJU1RfSEVB RCgmZmlsZS0+bGhlYWQpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmZpbGUtPmZicyk7Cj4gKwltdXRl eF9pbml0KCZmaWxlLT5mYnNfbG9jayk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZmlsZS0+YmxvYnMp Owo+ICsJSU5JVF9MSVNUX0hFQUQoJmZpbGUtPnBlbmRpbmdfZXZlbnRfbGlzdCk7Cj4gKwlJTklU X0xJU1RfSEVBRCgmZmlsZS0+ZXZlbnRfbGlzdCk7Cj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZm aWxlLT5ldmVudF93YWl0KTsKPiArCWZpbGUtPmV2ZW50X3NwYWNlID0gNDA5NjsgLyogc2V0IGFz aWRlIDRrIGZvciBldmVudCBidWZmZXIgKi8KPiArCW11dGV4X2luaXQoJmZpbGUtPmV2ZW50X3Jl YWRfbG9jayk7Cj4gKwo+ICsJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf R0VNKSkKPiArCQlkcm1fZ2VtX29wZW4oZGV2LCBmaWxlKTsKPiArCWlmIChkcm1fY29yZV9jaGVj a19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKPiArCQlkcm1fcHJpbWVfaW5pdF9maWxlX3By aXZhdGUoJmZpbGUtPnByaW1lKTsKPiArCj4gKwlpZiAoZGV2LT5kcml2ZXItPm9wZW4pIHsKPiAr CQlyZXQgPSBkZXYtPmRyaXZlci0+b3BlbihkZXYsIGZpbGUpOwo+ICsJCWlmIChyZXQgPCAwKQo+ ICsJCQlnb3RvIG91dF9wcmltZV9kZXN0cm95Owo+ICsJfQo+ICsKPiArCWlmIChkcm1faXNfcHJp bWFyeV9jbGllbnQoZmlsZSkpIHsKPiArCQlyZXQgPSBkcm1fbWFzdGVyX29wZW4oZmlsZSk7Cj4g KwkJaWYgKHJldCkKPiArCQkJZ290byBvdXRfY2xvc2U7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGZp bGU7Cj4gKwo+ICtvdXRfY2xvc2U6Cj4gKwlpZiAoZGV2LT5kcml2ZXItPnBvc3RjbG9zZSkKPiAr CQlkZXYtPmRyaXZlci0+cG9zdGNsb3NlKGRldiwgZmlsZSk7Cj4gK291dF9wcmltZV9kZXN0cm95 Ogo+ICsJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfUFJJTUUpKQo+ICsJ CWRybV9wcmltZV9kZXN0cm95X2ZpbGVfcHJpdmF0ZSgmZmlsZS0+cHJpbWUpOwo+ICsJaWYgKGRy bV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKPiArCQlkcm1fZ2VtX3JlbGVh c2UoZGV2LCBmaWxlKTsKPiArCXB1dF9waWQoZmlsZS0+cGlkKTsKPiArCWtmcmVlKGZpbGUpOwo+ ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9maWxlX2Zy ZWUgLSBmcmVlIGZpbGUgY29udGV4dAo+ICsgKiBAZmlsZTogY29udGV4dCB0byBmcmVlLCBvciBO VUxMCj4gKyAqCj4gKyAqIFRoaXMgZGVzdHJveXMgYW5kIGRlYWxsb2NhdGVzIGEgRFJNIGZpbGUg Y29udGV4dCBwcmV2aW91c2x5IGFsbG9jYXRlZCB2aWEKPiArICogZHJtX2ZpbGVfYWxsb2MoKS4g VGhlIGNhbGxlciBtdXN0IG1ha2Ugc3VyZSB0byB1bmxpbmsgaXQgZnJvbSBhbnkgY29udGV4dHMK PiArICogYmVmb3JlIGNhbGxpbmcgdGhpcy4KPiArICoKPiArICogVGhlIGxlZ2FjeSBwYXRocyBt aWdodCByZXF1aXJlIHRoZSBkcm1fZ2xvYmFsX211dGV4IHRvIGJlIGhlbGQuCj4gKyAqCj4gKyAq IElmIE5VTEwgaXMgcGFzc2VkLCB0aGlzIGlzIGEgbm8tb3AuCj4gKyAqCj4gKyAqIFJFVFVSTlM6 Cj4gKyAqIDAgb24gc3VjY2Vzcywgb3IgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAr dm9pZCBkcm1fZmlsZV9mcmVlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ICsJc3RydWN0 IGRybV9wZW5kaW5nX2V2ZW50ICplOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiArCj4g KwlpZiAoIWZpbGUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWRldiA9IGZpbGUtPm1pbm9yLT5kZXY7 Cj4gKwo+ICsJaWYgKGRldi0+ZHJpdmVyLT5wcmVjbG9zZSkKPiArCQlkZXYtPmRyaXZlci0+cHJl Y2xvc2UoZGV2LCBmaWxlKTsKPiArCWlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERS SVZFUl9NT0RFU0VUKSkKPiArCQlkcm1fbGVnYWN5X2xvY2tfcmVsZWFzZShkZXYsIGZpbGUtPmxl Z2FjeV9maWxwKTsKPiArCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0hB VkVfRE1BKSkKPiArCQlkcm1fbGVnYWN5X3JlY2xhaW1fYnVmZmVycyhkZXYsIGZpbGUpOwo+ICsK PiArCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Cj4gKwl3aGlsZSAoKGUgPSBsaXN0 X2ZpcnN0X2VudHJ5X29yX251bGwoJmZpbGUtPnBlbmRpbmdfZXZlbnRfbGlzdCwKPiArCQkJCQkg ICAgIHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCwKPiArCQkJCQkgICAgIHBlbmRpbmdfbGluaykp KSB7Cj4gKwkJbGlzdF9kZWwoJmUtPnBlbmRpbmdfbGluayk7Cj4gKwkJZS0+ZmlsZV9wcml2ID0g TlVMTDsKPiArCX0KPiArCXdoaWxlICgoZSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZmls ZS0+ZXZlbnRfbGlzdCwKPiArCQkJCQkgICAgIHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCwgbGlu aykpKSB7Cj4gKwkJbGlzdF9kZWwoJmUtPmxpbmspOwo+ICsJCWtmcmVlKGUpOwo+ICsJfQo+ICsJ c3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+ICsKPiArCWRybV9sZWdhY3lfY3R4 Yml0bWFwX2ZsdXNoKGRldiwgZmlsZSk7Cj4gKwo+ICsJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1 cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkpIHsKPiArCQlkcm1fZmJfcmVsZWFzZShmaWxlKTsKPiAr CQlkcm1fcHJvcGVydHlfZGVzdHJveV91c2VyX2Jsb2JzKGRldiwgZmlsZSk7Cj4gKwl9Cj4gKwo+ ICsJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKPiArCQlkcm1f Z2VtX3JlbGVhc2UoZGV2LCBmaWxlKTsKPiArCWlmIChkcm1faXNfcHJpbWFyeV9jbGllbnQoZmls ZSkpCj4gKwkJZHJtX21hc3Rlcl9yZWxlYXNlKGZpbGUpOwo+ICsJaWYgKGRldi0+ZHJpdmVyLT5w b3N0Y2xvc2UpCj4gKwkJZGV2LT5kcml2ZXItPnBvc3RjbG9zZShkZXYsIGZpbGUpOwo+ICsJaWYg KGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfUFJJTUUpKQo+ICsJCWRybV9wcmlt ZV9kZXN0cm95X2ZpbGVfcHJpdmF0ZSgmZmlsZS0+cHJpbWUpOwo+ICsKPiArCVdBUk5fT04oIWxp c3RfZW1wdHkoJmZpbGUtPmV2ZW50X2xpc3QpKTsKPiArCXB1dF9waWQoZmlsZS0+cGlkKTsKPiAr CWtmcmVlKGZpbGUpOwo+ICt9Cj4gKwo+ICAvKgo+ICAgKiBEUk0gTWlub3JzCj4gICAqIEEgRFJN IGRldmljZSBjYW4gcHJvdmlkZSBzZXZlcmFsIGNoYXItZGV2IGludGVyZmFjZXMgb24gdGhlIERS TS1NYWpvci4gRWFjaAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jCj4gaW5kZXggNjllZjIzYy4uMzU5YzYzNiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZm9wcy5jCj4gQEAgLTE4Miw3ICsxODIsNiBAQCBzdGF0aWMgaW50IGRybV9vcGVu X2hlbHBlcihzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGRybV9taW5vciAqbWlub3IpCj4gIHsK PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtaW5vci0+ZGV2Owo+ICAJc3RydWN0IGRybV9m aWxlICpwcml2Owo+IC0JaW50IHJldDsKPiAgCj4gIAlpZiAoZmlscC0+Zl9mbGFncyAmIE9fRVhD TCkKPiAgCQlyZXR1cm4gLUVCVVNZOwkvKiBObyBleGNsdXNpdmUgb3BlbnMgKi8KPiBAQCAtMTkz LDQ3ICsxOTIsMTIgQEAgc3RhdGljIGludCBkcm1fb3Blbl9oZWxwZXIoc3RydWN0IGZpbGUgKmZp bHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQo+ICAKPiAgCURSTV9ERUJVRygicGlkID0gJWQs IG1pbm9yID0gJWRcbiIsIHRhc2tfcGlkX25yKGN1cnJlbnQpLCBtaW5vci0+aW5kZXgpOwo+ICAK PiAtCXByaXYgPSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFw cml2KQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJcHJpdiA9IGRybV9maWxlX2FsbG9jKG1pbm9y KTsKPiArCWlmIChJU19FUlIocHJpdikpCj4gKwkJcmV0dXJuIFBUUl9FUlIocHJpdik7Cj4gIAo+ IC0JZmlscC0+cHJpdmF0ZV9kYXRhID0gcHJpdjsKPiAgCXByaXYtPmxlZ2FjeV9maWxwID0gZmls cDsKPiAtCXByaXYtPnBpZCA9IGdldF9waWQodGFza19waWQoY3VycmVudCkpOwo+IC0JcHJpdi0+ bWlub3IgPSBtaW5vcjsKPiAtCj4gLQkvKiBmb3IgY29tcGF0aWJpbGl0eSByb290IGlzIGFsd2F5 cyBhdXRoZW50aWNhdGVkICovCj4gLQlwcml2LT5hdXRoZW50aWNhdGVkID0gY2FwYWJsZShDQVBf U1lTX0FETUlOKTsKPiAtCXByaXYtPmxvY2tfY291bnQgPSAwOwo+IC0KPiAtCUlOSVRfTElTVF9I RUFEKCZwcml2LT5saGVhZCk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmcHJpdi0+ZmJzKTsKPiAtCW11 dGV4X2luaXQoJnByaXYtPmZic19sb2NrKTsKPiAtCUlOSVRfTElTVF9IRUFEKCZwcml2LT5ibG9i cyk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmcHJpdi0+cGVuZGluZ19ldmVudF9saXN0KTsKPiAtCUlO SVRfTElTVF9IRUFEKCZwcml2LT5ldmVudF9saXN0KTsKPiAtCWluaXRfd2FpdHF1ZXVlX2hlYWQo JnByaXYtPmV2ZW50X3dhaXQpOwo+IC0JcHJpdi0+ZXZlbnRfc3BhY2UgPSA0MDk2OyAvKiBzZXQg YXNpZGUgNGsgZm9yIGV2ZW50IGJ1ZmZlciAqLwo+IC0KPiAtCW11dGV4X2luaXQoJnByaXYtPmV2 ZW50X3JlYWRfbG9jayk7Cj4gLQo+IC0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfR0VNKSkKPiAtCQlkcm1fZ2VtX29wZW4oZGV2LCBwcml2KTsKPiAtCj4gLQlpZiAoZHJt X2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkpCj4gLQkJZHJtX3ByaW1lX2lu aXRfZmlsZV9wcml2YXRlKCZwcml2LT5wcmltZSk7Cj4gLQo+IC0JaWYgKGRldi0+ZHJpdmVyLT5v cGVuKSB7Cj4gLQkJcmV0ID0gZGV2LT5kcml2ZXItPm9wZW4oZGV2LCBwcml2KTsKPiAtCQlpZiAo cmV0IDwgMCkKPiAtCQkJZ290byBvdXRfcHJpbWVfZGVzdHJveTsKPiAtCX0KPiAtCj4gLQlpZiAo ZHJtX2lzX3ByaW1hcnlfY2xpZW50KHByaXYpKSB7Cj4gLQkJcmV0ID0gZHJtX21hc3Rlcl9vcGVu KHByaXYpOwo+IC0JCWlmIChyZXQpCj4gLQkJCWdvdG8gb3V0X2Nsb3NlOwo+IC0JfQo+ICsJZmls cC0+cHJpdmF0ZV9kYXRhID0gcHJpdjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0 X211dGV4KTsKPiAgCWxpc3RfYWRkKCZwcml2LT5saGVhZCwgJmRldi0+ZmlsZWxpc3QpOwo+IEBA IC0yNjAsNDMgKzIyNCw2IEBAIHN0YXRpYyBpbnQgZHJtX29wZW5faGVscGVyKHN0cnVjdCBmaWxl ICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKPiAgI2VuZGlmCj4gIAo+ICAJcmV0dXJu IDA7Cj4gLQo+IC1vdXRfY2xvc2U6Cj4gLQlpZiAoZGV2LT5kcml2ZXItPnBvc3RjbG9zZSkKPiAt CQlkZXYtPmRyaXZlci0+cG9zdGNsb3NlKGRldiwgcHJpdik7Cj4gLW91dF9wcmltZV9kZXN0cm95 Ogo+IC0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfUFJJTUUpKQo+IC0J CWRybV9wcmltZV9kZXN0cm95X2ZpbGVfcHJpdmF0ZSgmcHJpdi0+cHJpbWUpOwo+IC0JaWYgKGRy bV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKPiAtCQlkcm1fZ2VtX3JlbGVh c2UoZGV2LCBwcml2KTsKPiAtCXB1dF9waWQocHJpdi0+cGlkKTsKPiAtCWtmcmVlKHByaXYpOwo+ IC0JZmlscC0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4g LXN0YXRpYyB2b2lkIGRybV9ldmVudHNfcmVsZWFzZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp dikKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZpbGVfcHJpdi0+bWlub3ItPmRl djsKPiAtCXN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCAqZSwgKmV0Owo+IC0JdW5zaWduZWQgbG9u ZyBmbGFnczsKPiAtCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFn cyk7Cj4gLQo+IC0JLyogVW5saW5rIHBlbmRpbmcgZXZlbnRzICovCj4gLQlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUoZSwgZXQsICZmaWxlX3ByaXYtPnBlbmRpbmdfZXZlbnRfbGlzdCwKPiAtCQkJ CSBwZW5kaW5nX2xpbmspIHsKPiAtCQlsaXN0X2RlbCgmZS0+cGVuZGluZ19saW5rKTsKPiAtCQll LT5maWxlX3ByaXYgPSBOVUxMOwo+IC0JfQo+IC0KPiAtCS8qIFJlbW92ZSB1bmNvbnN1bWVkIGV2 ZW50cyAqLwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIGV0LCAmZmlsZV9wcml2LT5l dmVudF9saXN0LCBsaW5rKSB7Cj4gLQkJbGlzdF9kZWwoJmUtPmxpbmspOwo+IC0JCWtmcmVlKGUp Owo+IC0JfQo+IC0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywg ZmxhZ3MpOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC0zNzAsNTkgKzI5NywxNiBAQCBpbnQgZHJtX3Jl bGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCj4gIAo+ICAJbXV0 ZXhfbG9jaygmZHJtX2dsb2JhbF9tdXRleCk7Cj4gIAo+IC0JRFJNX0RFQlVHKCJvcGVuX2NvdW50 ID0gJWRcbiIsIGRldi0+b3Blbl9jb3VudCk7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmZGV2LT5maWxl bGlzdF9tdXRleCk7Cj4gLQlsaXN0X2RlbCgmZmlsZV9wcml2LT5saGVhZCk7Cj4gLQltdXRleF91 bmxvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+IC0KPiAtCWlmIChkZXYtPmRyaXZlci0+cHJl Y2xvc2UpCj4gLQkJZGV2LT5kcml2ZXItPnByZWNsb3NlKGRldiwgZmlsZV9wcml2KTsKPiAtCj4g LQkvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQo+IC0JICogQmVnaW4gaW5saW5lIGRybV9yZWxlYXNlCj4gLQkgKi8KPiAtCj4gIAlEUk1f REVCVUcoInBpZCA9ICVkLCBkZXZpY2UgPSAweCVseCwgb3Blbl9jb3VudCA9ICVkXG4iLAo+ICAJ CSAgdGFza19waWRfbnIoY3VycmVudCksCj4gIAkJICAobG9uZylvbGRfZW5jb2RlX2RldihmaWxl X3ByaXYtPm1pbm9yLT5rZGV2LT5kZXZ0KSwKPiAgCQkgIGRldi0+b3Blbl9jb3VudCk7Cj4gIAo+ IC0JaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpKQo+IC0J CWRybV9sZWdhY3lfbG9ja19yZWxlYXNlKGRldiwgZmlscCk7Cj4gLQo+IC0JaWYgKGRybV9jb3Jl X2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfSEFWRV9ETUEpKQo+IC0JCWRybV9sZWdhY3lfcmVj bGFpbV9idWZmZXJzKGRldiwgZmlsZV9wcml2KTsKPiAtCj4gLQlkcm1fZXZlbnRzX3JlbGVhc2Uo ZmlsZV9wcml2KTsKPiAtCj4gLQlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZF Ul9NT0RFU0VUKSkgewo+IC0JCWRybV9mYl9yZWxlYXNlKGZpbGVfcHJpdik7Cj4gLQkJZHJtX3By b3BlcnR5X2Rlc3Ryb3lfdXNlcl9ibG9icyhkZXYsIGZpbGVfcHJpdik7Cj4gLQl9Cj4gLQo+IC0J aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKPiAtCQlkcm1fZ2Vt X3JlbGVhc2UoZGV2LCBmaWxlX3ByaXYpOwo+IC0KPiAtCWRybV9sZWdhY3lfY3R4Yml0bWFwX2Zs dXNoKGRldiwgZmlsZV9wcml2KTsKPiAtCj4gLQlpZiAoZHJtX2lzX3ByaW1hcnlfY2xpZW50KGZp bGVfcHJpdikpCj4gLQkJZHJtX21hc3Rlcl9yZWxlYXNlKGZpbGVfcHJpdik7Cj4gLQo+IC0JaWYg KGRldi0+ZHJpdmVyLT5wb3N0Y2xvc2UpCj4gLQkJZGV2LT5kcml2ZXItPnBvc3RjbG9zZShkZXYs IGZpbGVfcHJpdik7Cj4gLQo+IC0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklW RVJfUFJJTUUpKQo+IC0JCWRybV9wcmltZV9kZXN0cm95X2ZpbGVfcHJpdmF0ZSgmZmlsZV9wcml2 LT5wcmltZSk7Cj4gLQo+IC0JV0FSTl9PTighbGlzdF9lbXB0eSgmZmlsZV9wcml2LT5ldmVudF9s aXN0KSk7Cj4gLQo+IC0JcHV0X3BpZChmaWxlX3ByaXYtPnBpZCk7Cj4gLQlrZnJlZShmaWxlX3By aXYpOwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gKwlsaXN0X2RlbCgm ZmlsZV9wcml2LT5saGVhZCk7Cj4gKwltdXRleF91bmxvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgp Owo+ICAKPiAtCS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Cj4gLQkgKiBFbmQgaW5saW5lIGRybV9yZWxlYXNlCj4gLQkgKi8KPiArCWRy bV9maWxlX2ZyZWUoZmlsZV9wcml2KTsKPiAgCj4gIAlpZiAoIS0tZGV2LT5vcGVuX2NvdW50KSB7 Cj4gIAkJZHJtX2xhc3RjbG9zZShkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKPiBpbmRleCBi ODZkYzliLi45YjY2Y2M0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJu YWwuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAo+IEBAIC0yOCw2ICsy OCwxMCBAQCBleHRlcm4gdW5zaWduZWQgaW50IGRybV90aW1lc3RhbXBfbW9ub3RvbmljOwo+ICBl eHRlcm4gc3RydWN0IG11dGV4IGRybV9nbG9iYWxfbXV0ZXg7Cj4gIHZvaWQgZHJtX2xhc3RjbG9z ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgCj4gKy8qIGRybV9kcnYuYyAqLwo+ICtzdHJ1 Y3QgZHJtX2ZpbGUgKmRybV9maWxlX2FsbG9jKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKPiAr dm9pZCBkcm1fZmlsZV9mcmVlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4gKwo+ICAvKiBkcm1f cGNpLmMgKi8KPiAgaW50IGRybV9pcnFfYnlfYnVzaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPiAgCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiAtLSAK PiAyLjkuMwo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=