From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC v2 1/8] drm: provide management functions for drm_file Date: Tue, 9 Jan 2018 11:20:17 +0100 Message-ID: <20180109102017.GP26573@phenom.ffwll.local> References: <20180103222110.45855-1-noralf@tronnes.org> <20180103222110.45855-2-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180103222110.45855-2-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, laurent.pinchart@ideasonboard.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKYW4gMDMsIDIwMTggYXQgMTE6MjE6MDNQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IEZyb206IERhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+Cj4g Cj4gUmF0aGVyIHRoYW4gZG9pbmcgZHJtX2ZpbGUgYWxsb2NhdGlvbi9kZXN0cnVjdGlvbiByaWdo dCBpbiB0aGUgZm9wcywgbGV0cwo+IHByb3ZpZGUgc2VwYXJhdGUgaGVscGVycy4gVGhpcyBkZWNv dXBsZXMgZHJtX2ZpbGUgbWFuYWdlbWVudCBmcm9tIHRoZQo+IHN0aWxsLW1hbmRhdG9yeSBkcm0t Zm9wcy4gSXQgcHJlcGFyZXMgZm9yIHVzZSBvZiBkcm1fZmlsZSB3aXRob3V0IHRoZQo+IGZvcHMs IGJvdGggYnkgcG9zc2libGUgc2VwYXJhdGUgZm9wcyBpbXBsZW1lbnRhdGlvbnMgYW5kIEFQSXMg KG5vdCB0aGF0IEkKPiBhbSBhd2FyZSBvZiBhbnkgc3VjaCBwbGFucyksIGFuZCBtb3JlIGltcG9y dGFudGx5IGZyb20gaW4ta2VybmVsIHVzZSB3aGVyZQo+IG5vIHJlYWwgZmlsZSBpcyBhdmFpbGFi bGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5uQGdtYWls LmNvbT4KPiBbcmViYXNlZF0KPiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFs ZkB0cm9ubmVzLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMgICAgIHwg MzA5ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9kcm1faW50ZXJuYWwuaCB8ICAgMiArCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTc5IGlu c2VydGlvbnMoKyksIDEzMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9maWxlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwo+IGluZGV4IGIz YzZlOTk3Y2NkYi4uZDIwOGZhYWRlMjdlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZmlsZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMKPiBAQCAtMTAxLDYg KzEwMSwxNzkgQEAgREVGSU5FX01VVEVYKGRybV9nbG9iYWxfbXV0ZXgpOwo+ICAKPiAgc3RhdGlj IGludCBkcm1fb3Blbl9oZWxwZXIoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBkcm1fbWlub3Ig Km1pbm9yKTsKPiAgCj4gKy8qKgo+ICsgKiBkcm1fZmlsZV9hbGxvYyAtIGFsbG9jYXRlIGZpbGUg Y29udGV4dAo+ICsgKiBAbWlub3I6IG1pbm9yIHRvIGFsbG9jYXRlIG9uCj4gKyAqCj4gKyAqIFRo aXMgYWxsb2NhdGVzIGEgbmV3IERSTSBmaWxlIGNvbnRleHQuIEl0IGlzIG5vdCBsaW5rZWQgaW50 byBhbnkgY29udGV4dCBhbmQKPiArICogY2FuIGJlIHVzZWQgYnkgdGhlIGNhbGxlciBmcmVlbHku IE5vdGUgdGhhdCB0aGUgY29udGV4dCBrZWVwcyBhIHBvaW50ZXIgdG8KPiArICogQG1pbm9yLCBz byBpdCBtdXN0IGJlIGZyZWVkIGJlZm9yZSBAbWlub3IgaXMuCj4gKyAqCj4gKyAqIFRoZSBsZWdh Y3kgcGF0aHMgbWlnaHQgcmVxdWlyZSB0aGUgZHJtX2dsb2JhbF9tdXRleCB0byBiZSBoZWxkLgoK SSdkIHJlbW92ZSB0aGlzIGxpbmUsIHNpbmNlIGl0J3Mgb25seSByZWxldmFudCB0byBjbG9zZSB0 aGUgZHJpdmVyIGxvYWQKdnMuIGZpbGUgb3BlbiByYWNlIGZvciBkcml2ZXJzIHN0aWxsIHVzaW5n IHRoZSBkZXByZWNhdGVkIC0+bG9hZCBjYWxsYmFjay4KVGhpcyBvbmx5IGNvbmZ1c2VzIGFuZCBk b2Vzbid0IGhlbHAgYW55b25lIHdyaXRpbmcgYSBuZXcvbW9kZXJuIGRyaXZlci4KCj4gKyAqCj4g KyAqIFJFVFVSTlM6Cj4gKyAqIFBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIGNvbnRleHQsIEVS Ul9QVFIgb24gZmFpbHVyZS4KPiArICovCj4gK3N0cnVjdCBkcm1fZmlsZSAqZHJtX2ZpbGVfYWxs b2Moc3RydWN0IGRybV9taW5vciAqbWlub3IpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBtaW5vci0+ZGV2Owo+ICsJc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICsJaW50IHJldDsK PiArCj4gKwlmaWxlID0ga3phbGxvYyhzaXplb2YoKmZpbGUpLCBHRlBfS0VSTkVMKTsKPiArCWlm ICghZmlsZSkKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlmaWxlLT5waWQg PSBnZXRfcGlkKHRhc2tfcGlkKGN1cnJlbnQpKTsKPiArCWZpbGUtPm1pbm9yID0gbWlub3I7Cj4g Kwo+ICsJLyogZm9yIGNvbXBhdGliaWxpdHkgcm9vdCBpcyBhbHdheXMgYXV0aGVudGljYXRlZCAq Lwo+ICsJZmlsZS0+YXV0aGVudGljYXRlZCA9IGNhcGFibGUoQ0FQX1NZU19BRE1JTik7Cj4gKwlm aWxlLT5sb2NrX2NvdW50ID0gMDsKPiArCj4gKwlJTklUX0xJU1RfSEVBRCgmZmlsZS0+bGhlYWQp Owo+ICsJSU5JVF9MSVNUX0hFQUQoJmZpbGUtPmZicyk7Cj4gKwltdXRleF9pbml0KCZmaWxlLT5m YnNfbG9jayk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZmlsZS0+YmxvYnMpOwo+ICsJSU5JVF9MSVNU X0hFQUQoJmZpbGUtPnBlbmRpbmdfZXZlbnRfbGlzdCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZmls ZS0+ZXZlbnRfbGlzdCk7Cj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZmaWxlLT5ldmVudF93YWl0 KTsKPiArCWZpbGUtPmV2ZW50X3NwYWNlID0gNDA5NjsgLyogc2V0IGFzaWRlIDRrIGZvciBldmVu dCBidWZmZXIgKi8KPiArCj4gKwltdXRleF9pbml0KCZmaWxlLT5ldmVudF9yZWFkX2xvY2spOwo+ ICsKPiArCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCj4gKwkJ ZHJtX2dlbV9vcGVuKGRldiwgZmlsZSk7Cj4gKwo+ICsJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1 cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCj4gKwkJZHJtX3N5bmNvYmpfb3BlbihmaWxlKTsKPiAr Cj4gKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkpCj4gKwkJ ZHJtX3ByaW1lX2luaXRfZmlsZV9wcml2YXRlKCZmaWxlLT5wcmltZSk7Cj4gKwo+ICsJaWYgKGRl di0+ZHJpdmVyLT5vcGVuKSB7Cj4gKwkJcmV0ID0gZGV2LT5kcml2ZXItPm9wZW4oZGV2LCBmaWxl KTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJZ290byBvdXRfcHJpbWVfZGVzdHJveTsKPiArCX0K PiArCj4gKwlpZiAoZHJtX2lzX3ByaW1hcnlfY2xpZW50KGZpbGUpKSB7Cj4gKwkJcmV0ID0gZHJt X21hc3Rlcl9vcGVuKGZpbGUpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gb3V0X2Nsb3NlOwo+ ICsJfQo+ICsKPiArCXJldHVybiBmaWxlOwo+ICsKPiArb3V0X2Nsb3NlOgo+ICsJaWYgKGRldi0+ ZHJpdmVyLT5wb3N0Y2xvc2UpCj4gKwkJZGV2LT5kcml2ZXItPnBvc3RjbG9zZShkZXYsIGZpbGUp Owo+ICtvdXRfcHJpbWVfZGVzdHJveToKPiArCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRl diwgRFJJVkVSX1BSSU1FKSkKPiArCQlkcm1fcHJpbWVfZGVzdHJveV9maWxlX3ByaXZhdGUoJmZp bGUtPnByaW1lKTsKPiArCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZ TkNPQkopKQo+ICsJCWRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZSk7Cj4gKwlpZiAoZHJtX2NvcmVf Y2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKQo+ICsJCWRybV9nZW1fcmVsZWFzZShkZXYs IGZpbGUpOwo+ICsJcHV0X3BpZChmaWxlLT5waWQpOwo+ICsJa2ZyZWUoZmlsZSk7Cj4gKwo+ICsJ cmV0dXJuIEVSUl9QVFIocmV0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHJtX2V2ZW50c19y ZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZmlsZV9wcml2LT5taW5vci0+ZGV2Owo+ICsJc3RydWN0IGRybV9wZW5kaW5n X2V2ZW50ICplLCAqZXQ7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArCXNwaW5fbG9j a19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiArCj4gKwkvKiBVbmxpbmsgcGVu ZGluZyBldmVudHMgKi8KPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBldCwgJmZpbGVf cHJpdi0+cGVuZGluZ19ldmVudF9saXN0LAo+ICsJCQkJIHBlbmRpbmdfbGluaykgewo+ICsJCWxp c3RfZGVsKCZlLT5wZW5kaW5nX2xpbmspOwo+ICsJCWUtPmZpbGVfcHJpdiA9IE5VTEw7Cj4gKwl9 Cj4gKwo+ICsJLyogUmVtb3ZlIHVuY29uc3VtZWQgZXZlbnRzICovCj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUoZSwgZXQsICZmaWxlX3ByaXYtPmV2ZW50X2xpc3QsIGxpbmspIHsKPiArCQls aXN0X2RlbCgmZS0+bGluayk7Cj4gKwkJa2ZyZWUoZSk7Cj4gKwl9Cj4gKwo+ICsJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gK30KPiArCj4gKy8qKgo+ ICsgKiBkcm1fZmlsZV9mcmVlIC0gZnJlZSBmaWxlIGNvbnRleHQKPiArICogQGZpbGU6IGNvbnRl eHQgdG8gZnJlZSwgb3IgTlVMTAo+ICsgKgo+ICsgKiBUaGlzIGRlc3Ryb3lzIGFuZCBkZWFsbG9j YXRlcyBhIERSTSBmaWxlIGNvbnRleHQgcHJldmlvdXNseSBhbGxvY2F0ZWQgdmlhCj4gKyAqIGRy bV9maWxlX2FsbG9jKCkuIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgdG8gdW5saW5rIGl0IGZy b20gYW55IGNvbnRleHRzCj4gKyAqIGJlZm9yZSBjYWxsaW5nIHRoaXMuCj4gKyAqCj4gKyAqIFRo ZSBsZWdhY3kgcGF0aHMgbWlnaHQgcmVxdWlyZSB0aGUgZHJtX2dsb2JhbF9tdXRleCB0byBiZSBo ZWxkLgoKU2FtZSBoZXJlLgoKV2l0aCB0aGUgYmlrZXNoZWRzIGFkZHJlc3MgYW5kIG1heWJlIHRo ZSBFWFBPUlRfU1lNQk9MIGZvciB0aGVzZSBmcm9tCnBhdGNoIDMgbW92ZWQgdG8gaGVyZToKClJl dmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKCj4gKyAq Cj4gKyAqIElmIE5VTEwgaXMgcGFzc2VkLCB0aGlzIGlzIGEgbm8tb3AuCj4gKyAqCj4gKyAqIFJF VFVSTlM6Cj4gKyAqIDAgb24gc3VjY2Vzcywgb3IgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsg Ki8KPiArdm9pZCBkcm1fZmlsZV9mcmVlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiArCj4gKwlpZiAoIWZpbGUpCj4gKwkJcmV0dXJuOwo+ ICsKPiArCWRldiA9IGZpbGUtPm1pbm9yLT5kZXY7Cj4gKwo+ICsJRFJNX0RFQlVHKCJwaWQgPSAl ZCwgZGV2aWNlID0gMHglbHgsIG9wZW5fY291bnQgPSAlZFxuIiwKPiArCQkgIHRhc2tfcGlkX25y KGN1cnJlbnQpLAo+ICsJCSAgKGxvbmcpb2xkX2VuY29kZV9kZXYoZmlsZS0+bWlub3ItPmtkZXYt PmRldnQpLAo+ICsJCSAgZGV2LT5vcGVuX2NvdW50KTsKPiArCj4gKwlpZiAoZHJtX2NvcmVfY2hl Y2tfZmVhdHVyZShkZXYsIERSSVZFUl9MRUdBQ1kpICYmCj4gKwkgICAgZGV2LT5kcml2ZXItPnBy ZWNsb3NlKQo+ICsJCWRldi0+ZHJpdmVyLT5wcmVjbG9zZShkZXYsIGZpbGUpOwo+ICsKPiArCWlm IChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0xFR0FDWSkpCj4gKwkJZHJtX2xl Z2FjeV9sb2NrX3JlbGVhc2UoZGV2LCBmaWxlLT5maWxwKTsKPiArCj4gKwlpZiAoZHJtX2NvcmVf Y2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9IQVZFX0RNQSkpCj4gKwkJZHJtX2xlZ2FjeV9yZWNs YWltX2J1ZmZlcnMoZGV2LCBmaWxlKTsKPiArCj4gKwlkcm1fZXZlbnRzX3JlbGVhc2UoZmlsZSk7 Cj4gKwo+ICsJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkp IHsKPiArCQlkcm1fZmJfcmVsZWFzZShmaWxlKTsKPiArCQlkcm1fcHJvcGVydHlfZGVzdHJveV91 c2VyX2Jsb2JzKGRldiwgZmlsZSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGRybV9jb3JlX2NoZWNrX2Zl YXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCj4gKwkJZHJtX3N5bmNvYmpfcmVsZWFzZShmaWxl KTsKPiArCj4gKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKQo+ ICsJCWRybV9nZW1fcmVsZWFzZShkZXYsIGZpbGUpOwo+ICsKPiArCWRybV9sZWdhY3lfY3R4Yml0 bWFwX2ZsdXNoKGRldiwgZmlsZSk7Cj4gKwo+ICsJaWYgKGRybV9pc19wcmltYXJ5X2NsaWVudChm aWxlKSkKPiArCQlkcm1fbWFzdGVyX3JlbGVhc2UoZmlsZSk7Cj4gKwo+ICsJaWYgKGRldi0+ZHJp dmVyLT5wb3N0Y2xvc2UpCj4gKwkJZGV2LT5kcml2ZXItPnBvc3RjbG9zZShkZXYsIGZpbGUpOwo+ ICsKPiArCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKPiAr CQlkcm1fcHJpbWVfZGVzdHJveV9maWxlX3ByaXZhdGUoJmZpbGUtPnByaW1lKTsKPiArCj4gKwlX QVJOX09OKCFsaXN0X2VtcHR5KCZmaWxlLT5ldmVudF9saXN0KSk7Cj4gKwo+ICsJcHV0X3BpZChm aWxlLT5waWQpOwo+ICsJa2ZyZWUoZmlsZSk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgZHJtX3Nl dHVwKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KQo+ICB7Cj4gIAlpbnQgcmV0Owo+IEBAIC0xOTYs NyArMzY5LDYgQEAgc3RhdGljIGludCBkcm1fb3Blbl9oZWxwZXIoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbWlub3ItPmRldjsKPiAgCXN0cnVjdCBkcm1fZmlsZSAqcHJpdjsKPiAtCWludCByZXQ7Cj4g IAo+ICAJaWYgKGZpbHAtPmZfZmxhZ3MgJiBPX0VYQ0wpCj4gIAkJcmV0dXJuIC1FQlVTWTsJLyog Tm8gZXhjbHVzaXZlIG9wZW5zICovCj4gQEAgLTIwNyw1MCArMzc5LDEyIEBAIHN0YXRpYyBpbnQg ZHJtX29wZW5faGVscGVyKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5v cikKPiAgCj4gIAlEUk1fREVCVUcoInBpZCA9ICVkLCBtaW5vciA9ICVkXG4iLCB0YXNrX3BpZF9u cihjdXJyZW50KSwgbWlub3ItPmluZGV4KTsKPiAgCj4gLQlwcml2ID0ga3phbGxvYyhzaXplb2Yo KnByaXYpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghcHJpdikKPiAtCQlyZXR1cm4gLUVOT01FTTsK PiArCXByaXYgPSBkcm1fZmlsZV9hbGxvYyhtaW5vcik7Cj4gKwlpZiAoSVNfRVJSKHByaXYpKQo+ ICsJCXJldHVybiBQVFJfRVJSKHByaXYpOwo+ICAKPiAgCWZpbHAtPnByaXZhdGVfZGF0YSA9IHBy aXY7Cj4gIAlwcml2LT5maWxwID0gZmlscDsKPiAtCXByaXYtPnBpZCA9IGdldF9waWQodGFza19w aWQoY3VycmVudCkpOwo+IC0JcHJpdi0+bWlub3IgPSBtaW5vcjsKPiAtCj4gLQkvKiBmb3IgY29t cGF0aWJpbGl0eSByb290IGlzIGFsd2F5cyBhdXRoZW50aWNhdGVkICovCj4gLQlwcml2LT5hdXRo ZW50aWNhdGVkID0gY2FwYWJsZShDQVBfU1lTX0FETUlOKTsKPiAtCXByaXYtPmxvY2tfY291bnQg PSAwOwo+IC0KPiAtCUlOSVRfTElTVF9IRUFEKCZwcml2LT5saGVhZCk7Cj4gLQlJTklUX0xJU1Rf SEVBRCgmcHJpdi0+ZmJzKTsKPiAtCW11dGV4X2luaXQoJnByaXYtPmZic19sb2NrKTsKPiAtCUlO SVRfTElTVF9IRUFEKCZwcml2LT5ibG9icyk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmcHJpdi0+cGVu ZGluZ19ldmVudF9saXN0KTsKPiAtCUlOSVRfTElTVF9IRUFEKCZwcml2LT5ldmVudF9saXN0KTsK PiAtCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnByaXYtPmV2ZW50X3dhaXQpOwo+IC0JcHJpdi0+ZXZl bnRfc3BhY2UgPSA0MDk2OyAvKiBzZXQgYXNpZGUgNGsgZm9yIGV2ZW50IGJ1ZmZlciAqLwo+IC0K PiAtCW11dGV4X2luaXQoJnByaXYtPmV2ZW50X3JlYWRfbG9jayk7Cj4gLQo+IC0JaWYgKGRybV9j b3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKPiAtCQlkcm1fZ2VtX29wZW4oZGV2 LCBwcml2KTsKPiAtCj4gLQlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9T WU5DT0JKKSkKPiAtCQlkcm1fc3luY29ial9vcGVuKHByaXYpOwo+IC0KPiAtCWlmIChkcm1fY29y ZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKPiAtCQlkcm1fcHJpbWVfaW5pdF9m aWxlX3ByaXZhdGUoJnByaXYtPnByaW1lKTsKPiAtCj4gLQlpZiAoZGV2LT5kcml2ZXItPm9wZW4p IHsKPiAtCQlyZXQgPSBkZXYtPmRyaXZlci0+b3BlbihkZXYsIHByaXYpOwo+IC0JCWlmIChyZXQg PCAwKQo+IC0JCQlnb3RvIG91dF9wcmltZV9kZXN0cm95Owo+IC0JfQo+IC0KPiAtCWlmIChkcm1f aXNfcHJpbWFyeV9jbGllbnQocHJpdikpIHsKPiAtCQlyZXQgPSBkcm1fbWFzdGVyX29wZW4ocHJp dik7Cj4gLQkJaWYgKHJldCkKPiAtCQkJZ290byBvdXRfY2xvc2U7Cj4gLQl9Cj4gIAo+ICAJbXV0 ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gIAlsaXN0X2FkZCgmcHJpdi0+bGhlYWQs ICZkZXYtPmZpbGVsaXN0KTsKPiBAQCAtMjc3LDQ1ICs0MTEsNiBAQCBzdGF0aWMgaW50IGRybV9v cGVuX2hlbHBlcihzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGRybV9taW5vciAqbWlub3IpCj4g ICNlbmRpZgo+ICAKPiAgCXJldHVybiAwOwo+IC0KPiAtb3V0X2Nsb3NlOgo+IC0JaWYgKGRldi0+ ZHJpdmVyLT5wb3N0Y2xvc2UpCj4gLQkJZGV2LT5kcml2ZXItPnBvc3RjbG9zZShkZXYsIHByaXYp Owo+IC1vdXRfcHJpbWVfZGVzdHJveToKPiAtCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRl diwgRFJJVkVSX1BSSU1FKSkKPiAtCQlkcm1fcHJpbWVfZGVzdHJveV9maWxlX3ByaXZhdGUoJnBy aXYtPnByaW1lKTsKPiAtCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZ TkNPQkopKQo+IC0JCWRybV9zeW5jb2JqX3JlbGVhc2UocHJpdik7Cj4gLQlpZiAoZHJtX2NvcmVf Y2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKQo+IC0JCWRybV9nZW1fcmVsZWFzZShkZXYs IHByaXYpOwo+IC0JcHV0X3BpZChwcml2LT5waWQpOwo+IC0Ja2ZyZWUocHJpdik7Cj4gLQlmaWxw LT5wcml2YXRlX2RhdGEgPSBOVUxMOwo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGlj IHZvaWQgZHJtX2V2ZW50c19yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+IC17 Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmlsZV9wcml2LT5taW5vci0+ZGV2Owo+IC0J c3RydWN0IGRybV9wZW5kaW5nX2V2ZW50ICplLCAqZXQ7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdz Owo+IC0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiAt Cj4gLQkvKiBVbmxpbmsgcGVuZGluZyBldmVudHMgKi8KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShlLCBldCwgJmZpbGVfcHJpdi0+cGVuZGluZ19ldmVudF9saXN0LAo+IC0JCQkJIHBlbmRp bmdfbGluaykgewo+IC0JCWxpc3RfZGVsKCZlLT5wZW5kaW5nX2xpbmspOwo+IC0JCWUtPmZpbGVf cHJpdiA9IE5VTEw7Cj4gLQl9Cj4gLQo+IC0JLyogUmVtb3ZlIHVuY29uc3VtZWQgZXZlbnRzICov Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgZXQsICZmaWxlX3ByaXYtPmV2ZW50X2xp c3QsIGxpbmspIHsKPiAtCQlsaXN0X2RlbCgmZS0+bGluayk7Cj4gLQkJa2ZyZWUoZSk7Cj4gLQl9 Cj4gLQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGRybV9sZWdhY3lfZGV2X3JlaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+IEBAIC0zODIsNTcgKzQ3Nyw3IEBAIGludCBkcm1fcmVsZWFzZShzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKPiAgCWxpc3RfZGVsKCZmaWxlX3By aXYtPmxoZWFkKTsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gIAo+ IC0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTEVHQUNZKSAmJgo+IC0J ICAgIGRldi0+ZHJpdmVyLT5wcmVjbG9zZSkKPiAtCQlkZXYtPmRyaXZlci0+cHJlY2xvc2UoZGV2 LCBmaWxlX3ByaXYpOwo+IC0KPiAtCS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Cj4gLQkgKiBCZWdpbiBpbmxpbmUgZHJtX3JlbGVhc2UK PiAtCSAqLwo+IC0KPiAtCURSTV9ERUJVRygicGlkID0gJWQsIGRldmljZSA9IDB4JWx4LCBvcGVu X2NvdW50ID0gJWRcbiIsCj4gLQkJICB0YXNrX3BpZF9ucihjdXJyZW50KSwKPiAtCQkgIChsb25n KW9sZF9lbmNvZGVfZGV2KGZpbGVfcHJpdi0+bWlub3ItPmtkZXYtPmRldnQpLAo+IC0JCSAgZGV2 LT5vcGVuX2NvdW50KTsKPiAtCj4gLQlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERS SVZFUl9MRUdBQ1kpKQo+IC0JCWRybV9sZWdhY3lfbG9ja19yZWxlYXNlKGRldiwgZmlscCk7Cj4g LQo+IC0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfSEFWRV9ETUEpKQo+ IC0JCWRybV9sZWdhY3lfcmVjbGFpbV9idWZmZXJzKGRldiwgZmlsZV9wcml2KTsKPiAtCj4gLQlk cm1fZXZlbnRzX3JlbGVhc2UoZmlsZV9wcml2KTsKPiAtCj4gLQlpZiAoZHJtX2NvcmVfY2hlY2tf ZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSkgewo+IC0JCWRybV9mYl9yZWxlYXNlKGZpbGVf cHJpdik7Cj4gLQkJZHJtX3Byb3BlcnR5X2Rlc3Ryb3lfdXNlcl9ibG9icyhkZXYsIGZpbGVfcHJp dik7Cj4gLQl9Cj4gLQo+IC0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf U1lOQ09CSikpCj4gLQkJZHJtX3N5bmNvYmpfcmVsZWFzZShmaWxlX3ByaXYpOwo+IC0KPiAtCWlm IChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCj4gLQkJZHJtX2dlbV9y ZWxlYXNlKGRldiwgZmlsZV9wcml2KTsKPiAtCj4gLQlkcm1fbGVnYWN5X2N0eGJpdG1hcF9mbHVz aChkZXYsIGZpbGVfcHJpdik7Cj4gLQo+IC0JaWYgKGRybV9pc19wcmltYXJ5X2NsaWVudChmaWxl X3ByaXYpKQo+IC0JCWRybV9tYXN0ZXJfcmVsZWFzZShmaWxlX3ByaXYpOwo+IC0KPiAtCWlmIChk ZXYtPmRyaXZlci0+cG9zdGNsb3NlKQo+IC0JCWRldi0+ZHJpdmVyLT5wb3N0Y2xvc2UoZGV2LCBm aWxlX3ByaXYpOwo+IC0KPiAtCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVS X1BSSU1FKSkKPiAtCQlkcm1fcHJpbWVfZGVzdHJveV9maWxlX3ByaXZhdGUoJmZpbGVfcHJpdi0+ cHJpbWUpOwo+IC0KPiAtCVdBUk5fT04oIWxpc3RfZW1wdHkoJmZpbGVfcHJpdi0+ZXZlbnRfbGlz dCkpOwo+IC0KPiAtCXB1dF9waWQoZmlsZV9wcml2LT5waWQpOwo+IC0Ja2ZyZWUoZmlsZV9wcml2 KTsKPiAtCj4gLQkvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQo+IC0JICogRW5kIGlubGluZSBkcm1fcmVsZWFzZQo+IC0JICovCj4gKwlk cm1fZmlsZV9mcmVlKGZpbGVfcHJpdik7Cj4gIAo+ICAJaWYgKCEtLWRldi0+b3Blbl9jb3VudCkg ewo+ICAJCWRybV9sYXN0Y2xvc2UoZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCj4gaW5kZXgg YjcyMjQyZTkzZWE0Li40MDE3OWM1ZmM2YjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9pbnRlcm5hbC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCj4g QEAgLTI2LDYgKzI2LDggQEAKPiAgCj4gIC8qIGRybV9maWxlLmMgKi8KPiAgZXh0ZXJuIHN0cnVj dCBtdXRleCBkcm1fZ2xvYmFsX211dGV4Owo+ICtzdHJ1Y3QgZHJtX2ZpbGUgKmRybV9maWxlX2Fs bG9jKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKPiArdm9pZCBkcm1fZmlsZV9mcmVlKHN0cnVj dCBkcm1fZmlsZSAqZmlsZSk7Cj4gIHZvaWQgZHJtX2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiAgCj4gIC8qIGRybV9wY2kuYyAqLwo+IC0tIAo+IDIuMTQuMgo+IAoKLS0gCkRh bmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9i bG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=