From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC v2 6/8] drm: Handle fbdev emulation in core Date: Thu, 11 Jan 2018 08:45:54 +0100 Message-ID: <20180111074554.GZ13066@phenom.ffwll.local> References: <20180103222110.45855-1-noralf@tronnes.org> <20180103222110.45855-7-noralf@tronnes.org> <20180109103819.GS26573@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) by gabe.freedesktop.org (Postfix) with ESMTPS id DA0A36E387 for ; Thu, 11 Jan 2018 07:46:00 +0000 (UTC) Received: by mail-wm0-x22a.google.com with SMTP id i186so3477358wmi.4 for ; Wed, 10 Jan 2018 23:46:00 -0800 (PST) Content-Disposition: inline In-Reply-To: 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: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, dh.herrmann@gmail.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKYW4gMTAsIDIwMTggYXQgMDY6MDI6MzhQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAwOS4wMS4yMDE4IDExLjM4LCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ ID4gT24gV2VkLCBKYW4gMDMsIDIwMTggYXQgMTE6MjE6MDhQTSArMDEwMCwgTm9yYWxmIFRyw7hu bmVzIHdyb3RlOgo+ID4gPiBQcmVwYXJlIGZvciBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbiBieSBs ZXR0aW5nIERSTSBjb3JlIHdvcmsgZGlyZWN0bHkKPiA+ID4gd2l0aCB0aGUgZmJkZXYgY29tcGF0 aWJpbGl0eSBsYXllci4gVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBuZXcgZmJkZXYKPiA+ID4gaGVs cGVyIHZ0YWJsZSBjYWxsYmFja3MgZm9yIHJlc3RvcmUsIGhvdHBsdWdfZXZlbnQsIHVucmVnaXN0 ZXIgYW5kCj4gPiA+IHJlbGVhc2UuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYg VHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiA+IE5vIGNsdWUgd2hldGhlciBteSBpZGVh IGlzIGFueSBnb29kLCBidXQgaW5zcGlyZWQgYnkgdGhlIGJvb3RzcGxhc2gKPiA+IGRpc2N1c3Np b24sIGFuZCB0aGUgcHJvc3BlY3QgdGhhdCB3ZSBtaWdodCBnZXQgb3RoZXIgaW4ta2VybmVsIGRy bS9rbXMKPiA+IGNsaWVudHMgSSdtIHdvbmRlcmluZyB3aGV0aGVyIHdlIHNob3VsZCBtYWtlIHRo aXMgYSBiaXQgbW9yZSBnZW5lcmljIGFuZAo+ID4gdGllIGl0IHRvIGRybV9maWxlPwo+ID4gCj4g PiBUaGUgaWRlYSB3b3VsZCBiZSB0byBoYXZlIGEgbGlzdCBvZiBpbnRlcm5hbCBkcm0gY2xpZW50 cyBieSBwdXR0aW5nIGFsbAo+ID4gdGhlIGludGVybmFsIGRybV9maWxlcyBvbnRvIGEgbGlzdCAo c2FtZSB3YXkgd2UgZG8gd2l0aCB0aGUgdXNlcnNwYWNlCj4gPiBvbmVzKS4gVGhlbiB3ZSdkIGp1 c3Qgd2FsayB0aGF0IGxpc3QgYW5kIGNhbGwgLT5ob3RwbHVnLCAtPnVucmVnaXN0ZXIgYW5kCj4g PiAtPnJlbGVhc2UgYXQgdGhlIHJpZ2h0IHBsYWNlcy4KPiA+IAo+ID4gLT5yZXN0b3JlIHdvdWxk IGJlIGEgYml0IGRpZmZlcmVudCwgSSBndWVzcyBmb3IgdGhhdCB3ZSdkIG9ubHkgY2FsbCB0aGUK PiA+IC0+cmVzdG9yZSBjYWxsYmFjayBvZiB0aGUgdmVyeSBmaXJzdCBrZXJuZWwtaW50ZXJuYWwg Y2xpZW50Lgo+ID4gCj4gPiBXaXRoIHRoYXQgd2UgY291bGQgdGhlbiBhZGQvcmVtb3ZlIGtlcm5l bC1pbnRlcm5hbCBkcm0gY2xpZW50cyBsaWtlIG5vcm1hbAo+ID4gdXNlcnNwYWNlIGNsaWVudHMs IHdoaWNoIHNob3VsZCBtYWtlIGludGVncmF0aW9uIG9mIGVtZXJnZW5jeSBjb25zb2xlcywKPiA+ IGJvb3Qgc3BsYXNoZXMgYW5kIHdoYXRldmVyIGVsc2UgcmVhbCBlYXN5LiBBbmQgSSB0aGluayBp dCB3b3VsZCBiZSBhIGxvdAo+ID4gY2xlYW5lciB0aGFuIGxlYWtpbmcgZmJfaGVscGVyIGtub3ds ZWRnZSBpbnRvIHRoZSBkcm0gY29yZSwgd2hpY2ggZmVlbHMgYQo+ID4gcmF0aGVyIGJhY2t3YXJk cy4KPiA+IAo+ID4gT3RvaCB0aGF0IGZlZWxzIGEgYml0IG92ZXJlbmdpbmVlcmVkIChidXQgYXQg bGVhc3QgaXQgc2hvdWxkbid0IGJlIGEgbG90Cj4gPiBtb3JlIGNvZGUgcmVhbGx5KS4gSWYgdGhl IGxpc3QgaXMgdG9vIG11Y2ggd29yayB3ZSBjb3VsZCBzdGFydCB3aXRoIDEKPiA+IGRybV9maWxl ICogcG9pbnRlciBmb3IgaW50ZXJuYWwgc3R1ZmYgKGJ1dCB3b3VsZCBzdGlsbCBuZWVkIGxvY2tp bmcsIHNvCj4gPiBsaXN0X2hlYWQgaXMgcHJvYmFibHkgZWFzaWVyKS4KPiA+IAo+ID4gVGhvdWdo dHM/Cj4gCj4gSSBwcmVmZXIgdG8gaGF2ZSBhIHByb3BlciBpbi1rZXJuZWwgY2xpZW50IEFQSSBm cm9tIHRoZSBnZXQgZ28sIGluc3RlYWQKPiBvZiBmaXhpbmcgaXQgdXAgbGF0ZXIuIFRoZSByZWFz b24gSSBza2lwcGVkIHNwZW5kaW5nIHRpbWUgb24gaXQgaW4gdGhpcwo+IFJGQywgd2FzIHRoYXQg SSBkaWRuJ3Qga25vdyBpZiBJIHdhcyBvbiB0aGUgcmlnaHQgdHJhY2sgYXQgdGhlIHJpZ2h0IHRp bWUKPiB0byBnZXQgdGhlIG5lY2Vzc2FyeSBhdHRlbnRpb24gdG8gbWFrZSB0aGlzIGR1bWJfYnVm ZmVyIGlkZWEgaGFwcGVuLgo+IAo+IFdpdGggYSBkcm1fZmlsZSBjZW50cmljIGFwcHJvYWNoLCBh cmUgeW91IHRoaW5raW5nIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4gCj4gwqBzdHJ1Y3QgZHJtX2Rl dmljZSB7Cj4gK8KgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVsaXN0X2ludGVybmFsOwo+IMKg fTsKPiAKPiArc3RydWN0IGRybV9maWxlX2Z1bmNzIHsKPiArwqDCoMKgIGludCAoKnJlc3RvcmUp KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4gK8KgwqDCoCB2b2lkICgqaG90cGx1Zykoc3RydWN0 IGRybV9maWxlICpmaWxlKTsKPiArwqDCoMKgIHZvaWQgKCp1bnJlZ2lzdGVyKShzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpOwoKSSBndWVzcyB3ZSBzdGlsbCBuZWVkIGEgY2xlYW51cCBjYWxsYmFjayBo ZXJlPyBGb3IgdGhlIHVzdWFsIHR3by1zdGFnZQpkcml2ZXIgdW5sb2FkIHNlcXVlbmNlIG9mIDEu IHVucmVnaXN0ZXIgMi4gY2xlYW51cC4KCj4gK307Cj4gCj4gwqBzdHJ1Y3QgZHJtX2ZpbGUgewo+ ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiArwqDCoMKgIGNvbnN0IHN0cnVjdCBk cm1fZmlsZV9mdW5jcyAqZnVuY3M7Cj4gwqB9Owo+IAo+IMKgc3RydWN0IGRybV9maWxlICpkcm1f ZmlsZV9hbGxvYyhzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKPiDCoHsKPiArwqDCoMKgIGZpbGUt PmRldiA9IGRldjsKPiDCoH0KPiAKPiBzdHJ1Y3QgZHJtX2ZpbGUqIGRybV9pbnRlcm5hbF9vcGVu KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKg wqAgY29uc3Qgc3RydWN0IGRybV9maWxlX2Z1bmNzICpmdW5jcykKPiDCoMKgwqAgc3RydWN0IGRy bV9maWxlICpmaWxlOwo+IMKgwqDCoCBpbnQgcmV0Owo+IAo+IMKgwqDCoCBpZiAoIXRyeV9tb2R1 bGVfZ2V0KGRldi0+ZHJpdmVyLT5mb3BzLT5vd25lcikpCj4gwqDCoMKgIMKgwqDCoCByZXR1cm4g RVJSX1BUUigtRU5PREVWKTsKPiAKPiDCoMKgwqAgZHJtX2Rldl9yZWYoZGV2KTsKPiAKPiDCoMKg wqAgZmlsZSA9IGRybV9maWxlX2FsbG9jKGRldik7Cj4gwqDCoMKgIGlmIChJU19FUlIoZmlsZSkp IHsKPiDCoMKgwqAgwqDCoMKgIGRybV9kZXZfdW5yZWYoZGV2KTsKPiDCoMKgwqAgwqDCoMKgIG1v ZHVsZV9wdXQoZGV2LT5kcml2ZXItPmZvcHMtPm93bmVyKTsKPiDCoMKgwqAgwqDCoMKgIHJldHVy biBmaWxlOwo+IMKgwqDCoCB9Cj4gCj4gwqDCoMKgIGZpbGUtPmZ1bmNzID0gZnVuY3M7Cj4gCj4g wqDCoMKgIG11dGV4X2xvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+IMKgwqDCoCBsaXN0X2Fk ZCgmZmlsZS0+bGhlYWQsICZkZXYtPmZpbGVsaXN0X2ludGVybmFsKTsKPiDCoMKgwqAgbXV0ZXhf dW5sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiAKPiDCoMKgwqAgcmV0dXJuIGZpbGU7Cj4g fQo+IAo+IHZvaWQgZHJtX2ludGVybmFsX3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpmaWxlKQo+ IHsKPiDCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZpbGUtPmRldjsKPiAKPiDCoMKg wqAgbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gwqDCoMKgIGxpc3RfZGVsKCZm aWxlLT5saGVhZCk7Cj4gwqDCoMKgIG11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7 Cj4gCj4gwqDCoMKgIGRybV9maWxlX2ZyZWUoZmlsZSk7Cj4gwqDCoMKgIGRybV9kZXZfdW5yZWYo ZGV2KTsKPiDCoMKgwqAgbW9kdWxlX3B1dChkZXYtPmRyaXZlci0+Zm9wcy0+b3duZXIpOwo+IH0K PiAKPiDCoHZvaWQgZHJtX2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgewo+ IAo+ICvCoMKgwqAgbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gK8KgwqDCoCBs aXN0X2Zvcl9lYWNoX2VudHJ5KGZpbGUsICZkZXYtPmZpbGVsaXN0X2ludGVybmFsLCBsaGVhZCkg ewo+ICvCoMKgwqAgwqDCoMKgIGlmIChmaWxlLT5mdW5jcyAmJiBmaWxlLT5mdW5jcy0+cmVzdG9y ZSAmJgo+ICvCoMKgwqAgwqDCoMKgIMKgwqDCoCAhZmlsZS0+ZnVuY3MtPnJlc3RvcmUoZmlsZSkp Cj4gK8KgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCBicmVhazsKPiArwqDCoMKgIG11dGV4X3Vu bG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gwqB9Cj4gCj4gwqB2b2lkIGRybV9rbXNfaGVs cGVyX2hvdHBsdWdfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoHsKPiAKPiArwqDC oMKgIG11dGV4X2xvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+ICvCoMKgwqAgbGlzdF9mb3Jf ZWFjaF9lbnRyeShmaWxlLCAmZGV2LT5maWxlbGlzdF9pbnRlcm5hbCwgbGhlYWQpIHsKPiArwqDC oMKgIMKgwqDCoCBpZiAoZmlsZS0+ZnVuY3MgJiYgZmlsZS0+ZnVuY3MtPmhvdHBsdWcpCj4gK8Kg wqDCoCDCoMKgwqAgwqDCoMKgIGZpbGUtPmZ1bmNzLT5ob3RwbHVnKGZpbGUpOwo+ICvCoMKgwqAg bXV0ZXhfdW5sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiDCoH0KPiAKPiBIb3cgaXMgbG9j a2luZyBkb25lIHdoZW4gLnVucmVnaXN0ZXIgd2lsbCBjYWxsIGludG8gZHJtX2ludGVybmFsX3Jl bGVhc2UoKT8KPiAKPiDCoHZvaWQgZHJtX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gwqB7Cj4gCj4gK8KgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpbGUsICZkZXYt PmZpbGVsaXN0X2ludGVybmFsLCBsaGVhZCkgewo+ICvCoMKgwqAgwqDCoMKgIGlmIChmaWxlLT5m dW5jcyAmJiBmaWxlLT5mdW5jcy0+dW5yZWdpc3RlcikKPiArwqDCoMKgIMKgwqDCoCDCoMKgwqAg ZmlsZS0+ZnVuY3MtPnVucmVnaXN0ZXIoZmlsZSk7Cj4gwqB9Cj4gCj4gVGhlcmUgaXMgYWxzbyB0 aGUgY2FzZSB3aGVyZSAudW5yZWdpc3RlciBjYW4ndCByZWxlYXNlIHRoZSBkcm1fZmlsZQo+IGJl Y2F1c2UgdXNlcnNwYWNlIGhhcyBtbWFwJ2VkIHRoZSBidWZmZXIgKGZiZGV2KS4gVGhlIGNsaWVu dCBob2xkcyBhIHJlZgo+IG9uIGRybV9kZXZpY2Ugc28gY2xlYW51cCBpcyBzdGFsbGVkIGJ1dCB0 aGF0IHJlcXVpcmVzIGEgZHJpdmVyIHRoYXQgY2FuCj4gaGFuZGxlIHRoYXQgKHJlZiB0aGUgdGlu eWRybSB1bnBsdWcgc2VyaWVzIHdoaWNoIGlzIGF3YWl0aW5nIGEgdGltZXNsb3QpLgoKWWVhaCB3 ZSBuZWVkIHRoZSB1c3VhbCBzcGxpdCBpbnRvIDIgdGhpbmdzLCB3aXRoIHVucmVnaXN0ZXIgb25s eSB0YWtpbmcKYXdheSB0aGUgdWFwaSAoYnV0IGtlZXBpbmcgcmVmZXJlbmNlcyBzdGlsbCB0byB0 aGUgZHJtX2RldmljZS9tb2R1bGUpLgpPbmNlIGZiX2Nsb3NlIGhhcyBiZWVuIGNhbGxlZCBhbmQg dGhlIGRybV9kZXZpY2UgY2FuIGJlIGZyZWVkLCB0aGVuIHdlCm5lZWQgYSBzZXBhcmF0ZSBjbGVh bnVwIGNhbGxiYWNrLgoKVGhpcyBhbHNvIG1lYW5zIHRoYXQgbG9ja2luZyBpcyBubyBpc3N1ZSBm b3IgLT51bnJlZ2lzdGVyLiBJdCdzIG9ubHkgYW4KaXNzdWUgZm9yIC0+Y2xlYW51cDoKLSBsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUsIHNpbmNlIHRoZSAtPmNsZWFudXAgY2FsbGJhY2sgd2lsbCBz ZWxmLXJlbW92ZQotIGEgY29tbWVudCBsaWtlIHdlIGFscmVhZHkgaGF2ZSBmb3IgdGhlIGZiIGxp c3QgdGhhdCBzaW5jZSBjbGVhbnVwIGlzCiAgY2FsbGVkIG9ubHkgZnJvbSAxIHRocmVhZCwgYXQg YSB0aW1lIHdoZXJlIHdlIGtub3cgbm90aGluZyBlbHNlIGNhbiBnZXQKICBhdCB0aGUgZHJtX2Rl dmljZSBhbnltb3JlICh0aGUgbGFzdCByZWZlcmVuY2Ugd2FzIGRyb3BwZWQpIGl0J3Mgc2FmZSB0 bwogIGl0ZXJhdGUgd2l0aG91dCBsb2NraW5nLgoKPiBhbWRncHUgaXRlcmF0ZXMgZGV2LT5maWxl bGlzdCBpbiBhbWRncHVfZ2VtX2ZvcmNlX3JlbGVhc2UoKSBhbmQKPiBhbWRncHVfc2NoZWRfcHJv Y2Vzc19wcmlvcml0eV9vdmVycmlkZSgpLiBJIGRvbid0IGtub3cgaWYgaXQgbmVlZHMgdG8KPiBo YW5kbGUgdGhlIGludGVybmFsIG9uZXMgYXMgd2VsbC4KClRoYXQncyBmb3IgdGhlIHNjaGVkdWxl ciwgbm90IGZvciBrbXMuIEFzIGxvbmcgYXMgdGhlIGludGVybmFsIGNsaWVudHMgYXJlCmttcy1v bmx5IChJIGRvbid0IGV4cGVjdCB0aGF0IHRvIGV2ZXIgY2hhbmdlLCBncHUgY29tbWFuZCBzdWJt aXNzaW9uIG5lZWRzCm5vbi1nZW5lcmljIHVzZXJzcGFjZSkgdGhpcyBzaG91bGRuJ3QgYmUgYSBw cm9ibGVtLgoKPiBXaGF0J3MgdGhlIHJhdGlvbmFsIGZvciBoYXZpbmcgc2VwYXJhdGUgbGlzdHMg Zm9yIGludGVybmFsIGFuZCB1c2Vyc3BhY2U/CgpIbSBJIGd1ZXNzIHdlIGNvdWxkIHVuaWZ5IHRo ZW0uIEJ1dCBwcm9iYWJseSBtb3JlIHdvcmsgc2luY2Ugd2UgbmVlZCB0bwptYWtlIHN1cmUgdGhh dCBhbGwgdGhlIGV4aXN0aW5nIGZpbGVsaXN0IHdhbGtlcnMgd29uJ3QgYmUgY29uZnVzZWQgYnkg dGhlCmludGVybmFsIHN0dWZmLiBJIGZpZ3VyZWQgaXQncyBlYXNpZXIgdG8ganVzdCBzcGxpdCB0 aGVtLiBJZiB3ZSBlbmQgdXAKaGF2aW5nIGxvdHMgb2YgZHVwbGljYXRlZCBsb29wcyB3ZSBjYW4g cmVjb25zaWRlciBJIHRoaW5rLgoKPiBUaGVyZSBpcyBvbmUgdGhpbmcgbWlzc2luZyBhbmQgdGhh dCBpcyBub3RpZmljYXRpb24gb2YgbmV3IGRybV9kZXZpY2VzLgo+IFRoZSBjbGllbnQgaXRlcmF0 ZXMgdGhlIGF2YWlsYWJsZSBkcm1fZGV2aWNlcyBvbiBtb2R1bGUgaW5pdCwgYnV0IGl0Cj4gbmVl ZHMgYSB3YXkgdG8ga25vdyBhYm91dCBhbnkgbGF0ZXIgZHJtX2RldmljZSByZWdpc3RyYXRpb25z LgoKT2gsIEkgZGlkbid0IG5vdGljZSB0aGF0IHBhcnQuIFRoYXQncyB0aGUgZXhhY3Qgc2FtZSBu YXN0eSBpc3N1ZSBmYmNvbgp3aXRoIHRyeWluZyB0byBrZWVwIHVwIHRvIGRhdGUgZmJkZXYgZHJp dmVycy4gZmJjb24gdXNlcyBhIG5vdGlmaWVyLCBhbmQKdGhlIHJlc3VsdGluZyBsb2NraW5nIGxv b3BzIGFyZSB0ZXJyaWJsZS4KCkJ1dCBJIHRoaW5rIGlmIHdlIGRvIGEgbm90aWZpZXIgX29ubHlf IGZvciBuZXcgZHJtX2RldmljZSByZWdpc3RyYXRpb25zCihpLmUuIHdlIGNhbGwgdGhlIG5vdGlm aWVyIGZyb20gZHJtX2Rldl9yZWdpc3RlciksIGFuZCBsZXQgdGhlCnVucmVnaXN0ZXIvY2xlYW51 cCBhbGwgZ2V0IGhhbmRsZWQgdGhyb3VnaCB0aGUgbmV3IGRybV9maWxlIGNhbGxiYWNrcywgaXQK c2hvdWxkIGJlIGFsbCBmaW5lLiBUaGUgb25seSB0cmlja3kgYml0IHdpbGwgYmUgY2xvc2luZyB0 aGUgcmFjZSB3aGVuCmxvYWRpbmcgdGhlIGZiZGV2IGVtdWxhdGlvbiBjb2RlIChvciBhbnl0aGlu ZyBlbHNlIHJlYWxseSkuCgpUaGUgcmVhbCBkb3duc2lkZSBvZiB0aGlzIGlzIHRoYXQgaXQgZm9y Y2VzIGRpc3Ryb3MgdG8gbWFudWFsbHkgbG9hZCB0aGUKZmJkZXYgZW11bGF0aW9uIG1vZHVsZSAo cmlnaHQgbm93IHRoZSBleHBsaWNpdCBkcml2ZXIgY2FsbCBpcyBmb3JjaW5nCnRoYXQpLCB3aGlj aCBpcyBhbm5veWluZy4KCkJ1dCBvdmVyIHRoZSBwYXN0IHllYXJzIHdlJ3ZlIGNsZWFuZWQgdXAg dGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgZmJkZXYKZW11bGF0aW9uIGFuZCB0aGUgb3RoZXIg aGVscGVycywgYW5kIHdlIGNvdWxkIHNpbXBseSBtb3ZlIHRoZSBmYmRldgplbXVsYXRpb24gaW50 byB0aGUgY29yZSBkcm0ua28gbW9kdWxlLiBUaGVuIHlvdSdkIHNpbXBseSBwdXQgYSBkaXJlY3Qg Y2FsbAp0byByZWdpc3RlciB0aGUgZmJkZXYgaW5zdGFuY2UgaW50byBkcm1fZGV2X3JlZ2lzdGVy LCBkb25lLiBObyBsb2NraW5nCmhlYWRhY2hlLCBubyByYWNlcywgbm90IG1hbnVhbCBtb2R1bGUg bG9hZGluZyBuZWVkZWQuCgpSaWdodCBub3cgSSdtIGxlYW5pbmcgdG93YXJkcyBtYWtpbmcgdGhl IGZiZGV2IHN0dWZmIGJ1aWx0LWludG8gZHJtLmtvLApidXQgbmVlZCB0byBwb25kZXIgdGhpcyBz b21lIG1vcmUgZmlyc3QuCi1EYW5pZWwKCj4gCj4gTm9yYWxmLgo+IAo+ID4gLURhbmllbAo+ID4g Cj4gPiA+IC0tLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jICAgICAgICAgfCAx MiArKysrKysrKysrKy0KPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMg IHwgMTAgKysrKysrKysrKwo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVy LmMgfCAgNCArKysrCj4gPiA+ICAgaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oICAgICAgICB8 IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiAgIDQgZmlsZXMgY2hh bmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gPiAKPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9m aWxlLmMKPiA+ID4gaW5kZXggNDAwZDQ0NDM3ZTkzLi43ZWMwOWZiODMxMzUgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmlsZS5jCj4gPiA+IEBAIC0zNSw2ICszNSw3IEBACj4gPiA+ICAgI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4KPiA+ID4gICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ICsj aW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KPiA+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9m aWxlLmg+Cj4gPiA+ICAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiA+IEBAIC00NDEsMTAgKzQ0 MiwxOSBAQCBzdGF0aWMgdm9pZCBkcm1fbGVnYWN5X2Rldl9yZWluaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+ID4gICB2b2lkIGRybV9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKiBk ZXYpCj4gPiA+ICAgewo+ID4gPiArCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBk ZXYtPmZiX2hlbHBlcjsKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiArCj4gPiA+ICAgCURSTV9ERUJV RygiXG4iKTsKPiA+ID4gLQlpZiAoZGV2LT5kcml2ZXItPmxhc3RjbG9zZSkKPiA+ID4gKwlpZiAo ZGV2LT5kcml2ZXItPmxhc3RjbG9zZSkgewo+ID4gPiAgIAkJZGV2LT5kcml2ZXItPmxhc3RjbG9z ZShkZXYpOwo+ID4gPiArCX0gZWxzZSBpZiAoZmJfaGVscGVyICYmIGZiX2hlbHBlci0+ZnVuY3Mg JiYgZmJfaGVscGVyLT5mdW5jcy0+cmVzdG9yZSkgewo+ID4gPiArCQlyZXQgPSBmYl9oZWxwZXIt PmZ1bmNzLT5yZXN0b3JlKGZiX2hlbHBlcik7Cj4gPiA+ICsJCWlmIChyZXQpCj4gPiA+ICsJCQlE Uk1fRVJST1IoIkZhaWxlZCB0byByZXN0b3JlIGZiZGV2OiAlZFxuIiwgcmV0KTsKPiA+ID4gKwl9 Cj4gPiA+ICsKPiA+ID4gICAJRFJNX0RFQlVHKCJkcml2ZXIgbGFzdGNsb3NlIGNvbXBsZXRlZFxu Iik7Cj4gPiA+ICAgCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0xFR0FD WSkpCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMKPiA+ID4gaW5kZXggYmM1YzQ2MzA2 YjNkLi4yNjBlYjE3MzAyNDQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f bW9kZV9jb25maWcuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmln LmMKPiA+ID4gQEAgLTIxLDYgKzIxLDcgQEAKPiA+ID4gICAgKi8KPiA+ID4gICAjaW5jbHVkZSA8 ZHJtL2RybV9lbmNvZGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4K PiA+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9tb2RlX2NvbmZpZy5oPgo+ID4gPiAgICNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+ID4gPiBAQCAtNjEsNiArNjIsMTEgQEAgaW50IGRybV9tb2Rlc2V0X3Jl Z2lzdGVyX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiAgIHZvaWQgZHJtX21vZGVz ZXRfdW5yZWdpc3Rlcl9hbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4gICB7Cj4gPiA+ ICsJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGRldi0+ZmJfaGVscGVyOwo+ID4g PiArCj4gPiA+ICsJaWYgKGZiX2hlbHBlciAmJiBmYl9oZWxwZXItPmZ1bmNzICYmIGZiX2hlbHBl ci0+ZnVuY3MtPnVucmVnaXN0ZXIpCj4gPiA+ICsJCWZiX2hlbHBlci0+ZnVuY3MtPnVucmVnaXN0 ZXIoZmJfaGVscGVyKTsKPiA+ID4gKwo+ID4gPiAgIAlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXJf YWxsKGRldik7Cj4gPiA+ICAgCWRybV9lbmNvZGVyX3VucmVnaXN0ZXJfYWxsKGRldik7Cj4gPiA+ ICAgCWRybV9jcnRjX3VucmVnaXN0ZXJfYWxsKGRldik7Cj4gPiA+IEBAIC00MDgsNiArNDE0LDcg QEAgRVhQT1JUX1NZTUJPTChkcm1fbW9kZV9jb25maWdfaW5pdCk7Cj4gPiA+ICAgICovCj4gPiA+ ICAgdm9pZCBkcm1fbW9kZV9jb25maWdfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ID4gPiAgIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gZGV2LT5m Yl9oZWxwZXI7Cj4gPiA+ICAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gPiA+ ICAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7Cj4gPiA+ICAgCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YywgKmN0Owo+ID4gPiBAQCAtNDE3LDYgKzQyNCw5IEBAIHZvaWQg ZHJtX21vZGVfY29uZmlnX2NsZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4gICAJ c3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iLCAqYnQ7Cj4gPiA+ICAgCXN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLCAqcGx0Owo+ID4gPiArCWlmIChmYl9oZWxwZXIgJiYgZmJfaGVscGVyLT5m dW5jcyAmJiBmYl9oZWxwZXItPmZ1bmNzLT5yZWxlYXNlKQo+ID4gPiArCQlmYl9oZWxwZXItPmZ1 bmNzLT5yZWxlYXNlKGZiX2hlbHBlcik7Cj4gPiA+ICsKPiA+ID4gICAJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKGVuY29kZXIsIGVuY3QsICZkZXYtPm1vZGVfY29uZmlnLmVuY29kZXJfbGlzdCwK PiA+ID4gICAJCQkJIGhlYWQpIHsKPiA+ID4gICAJCWVuY29kZXItPmZ1bmNzLT5kZXN0cm95KGVu Y29kZXIpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxw ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMKPiA+ID4gaW5kZXggNTU1 ZmJlNTRkNmUyLi45ZDhiMGJhNTQxNzMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fcHJvYmVfaGVscGVyLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9i ZV9oZWxwZXIuYwo+ID4gPiBAQCAtNTU5LDEwICs1NTksMTQgQEAgRVhQT1JUX1NZTUJPTChkcm1f aGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMpOwo+ID4gPiAgICAqLwo+ID4gPiAg IHZvaWQgZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ID4gPiAgIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gZGV2 LT5mYl9oZWxwZXI7Cj4gPiA+ICsKPiA+ID4gICAJLyogc2VuZCBhIHVldmVudCArIGNhbGwgZmJk ZXYgKi8KPiA+ID4gICAJZHJtX3N5c2ZzX2hvdHBsdWdfZXZlbnQoZGV2KTsKPiA+ID4gICAJaWYg KGRldi0+bW9kZV9jb25maWcuZnVuY3MtPm91dHB1dF9wb2xsX2NoYW5nZWQpCj4gPiA+ICAgCQlk ZXYtPm1vZGVfY29uZmlnLmZ1bmNzLT5vdXRwdXRfcG9sbF9jaGFuZ2VkKGRldik7Cj4gPiA+ICsJ ZWxzZSBpZiAoZmJfaGVscGVyICYmIGZiX2hlbHBlci0+ZnVuY3MgJiYgZmJfaGVscGVyLT5mdW5j cy0+aG90cGx1Z19ldmVudCkKPiA+ID4gKwkJZmJfaGVscGVyLT5mdW5jcy0+aG90cGx1Z19ldmVu dChmYl9oZWxwZXIpOwo+ID4gPiAgIH0KPiA+ID4gICBFWFBPUlRfU1lNQk9MKGRybV9rbXNfaGVs cGVyX2hvdHBsdWdfZXZlbnQpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Zi X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gPiA+IGluZGV4IDE2ZDg3 NzNiNjBlMy4uMzg1Zjk2N2MzNTUyIDEwMDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1f ZmJfaGVscGVyLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gPiA+ IEBAIC0xMjUsNiArMTI1LDM5IEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIHsKPiA+ID4g ICAJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKiptb2RlcywKPiA+ID4gICAJCQkg ICAgICAgc3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCj4gPiA+ICAgCQkJICAgICAgIGJv b2wgKmVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Cj4gPiA+ICsKPiA+ID4gKwkvKioK PiA+ID4gKwkgKiBAcmVzdG9yZToKPiA+ID4gKwkgKgo+ID4gPiArCSAqIE9wdGlvbmFsIGNhbGxi YWNrIGZvciByZXN0b3JpbmcgZmJkZXYgZW11bGF0aW9uLgo+ID4gPiArCSAqIENhbGxlZCBieSBk cm1fbGFzdGNsb3NlKCkgaWYgJmRybV9kcml2ZXItPmxhc3RjbG9zZSBpcyBub3Qgc2V0Lgo+ID4g PiArCSAqLwo+ID4gPiArCWludCAoKnJlc3RvcmUpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIpOwo+ID4gPiArCj4gPiA+ICsJLyoqCj4gPiA+ICsJICogQGhvdHBsdWdfZXZlbnQ6Cj4g PiA+ICsJICoKPiA+ID4gKwkgKiBPcHRpb25hbCBjYWxsYmFjayBmb3IgaG90cGx1ZyBldmVudHMu Cj4gPiA+ICsJICogQ2FsbGVkIGJ5IGRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoKSBpZgo+ ID4gPiArCSAqICZkcm1fbW9kZV9jb25maWdfZnVuY3MtPm91dHB1dF9wb2xsX2NoYW5nZWQgIGlz IG5vdCBzZXQuCj4gPiA+ICsJICovCj4gPiA+ICsJaW50ICgqaG90cGx1Z19ldmVudCkoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcik7Cj4gPiA+ICsKPiA+ID4gKwkvKioKPiA+ID4gKwkg KiBAdW5yZWdpc3RlcjoKPiA+ID4gKwkgKgo+ID4gPiArCSAqIE9wdGlvbmFsIGNhbGxiYWNrIGZv ciB1bnJlZ2lzdHJlcmluZyBmYmRldiBlbXVsYXRpb24uCj4gPiA+ICsJICogQ2FsbGVkIGJ5IGRy bV9kZXZfdW5yZWdpc3RlcigpLgo+ID4gPiArCSAqLwo+ID4gPiArCXZvaWQgKCp1bnJlZ2lzdGVy KShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKTsKPiA+ID4gKwo+ID4gPiArCS8qKgo+ ID4gPiArCSAqIEByZWxlYXNlOgo+ID4gPiArCSAqCj4gPiA+ICsJICogT3B0aW9uYWwgY2FsbGJh Y2sgZm9yIHJlbGVhc2luZyBmYmRldiBlbXVsYXRpb24gcmVzb3VyY2VzLgo+ID4gPiArCSAqIENh bGxlZCBieSBkcm1fbW9kZV9jb25maWdfY2xlYW51cCgpLgo+ID4gPiArCSAqLwo+ID4gPiArCXZv aWQgKCpyZWxlYXNlKShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKTsKPiA+ID4gICB9 Owo+ID4gPiAgIHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciB7Cj4gPiA+IC0tIAo+ID4g PiAyLjE0LjIKPiA+ID4gCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==