From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC] drm/i915: store all mmio bases in intel_engines Date: Mon, 12 Mar 2018 11:04:16 +0000 Message-ID: <650027ea-07aa-ecd6-1212-5c4f5ba01b33@linux.intel.com> References: <20180307194515.17135-1-daniele.ceraolospurio@intel.com> <9c99352f-eaf9-a264-8d14-303a55e5fac2@intel.com> <6f96c344-9714-a9a8-60ad-48e4d6a98017@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id EC5086E2F1 for ; Mon, 12 Mar 2018 11:04:18 +0000 (UTC) In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA5LzAzLzIwMTggMTk6NDQsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+IAo+IE9uIDA5LzAz LzIwMTggMTg6NDcsIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4+IE9uIDA5LzAzLzE4 IDAxOjUzLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4+Cj4+PiBPbiAwOC8wMy8yMDE4IDE4OjQ2 LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+Pj4+IE9uIDA4LzAzLzE4IDAxOjMxLCBU dnJ0a28gVXJzdWxpbiB3cm90ZToKPj4+Pj4KPj4+Pj4gT24gMDcvMDMvMjAxOCAxOTo0NSwgRGFu aWVsZSBDZXJhb2xvIFNwdXJpbyB3cm90ZToKPj4+Pj4+IFRoZSBtbWlvIGJhc2VzIHdlJ3JlIGN1 cnJlbnRseSBzdG9yaW5nIGluIHRoZSBpbnRlbF9lbmdpbmVzIGFycmF5IGFyZQo+Pj4+Pj4gb25s eSB2YWxpZCBmb3IgYSBzdWJzZXQgb2YgZ2Vucywgc28gd2UgbmVlZCB0byBpZ25vcmUgdGhlbSBh bmQgdXNlCj4+Pj4+PiBkaWZmZXJlbnQgdmFsdWVzIGluIHNvbWUgY2FzZXMuIEluc3RlYWQgb2Yg ZG9pbmcgdGhhdCwgd2UgY2FuIGhhdmUgYQo+Pj4+Pj4gdGFibGUgb2YgW3N0YXJ0aW5nIGdlbiwg bW1pbyBiYXNlXSBwYWlycyBmb3IgZWFjaCBlbmdpbmUgaW4KPj4+Pj4+IGludGVsX2VuZ2luZXMg YW5kIHNlbGVjdCB0aGUgY29ycmVjdCBvbmUgYmFzZWQgb24gdGhlIGdlbiB3ZSdyZSAKPj4+Pj4+ IHJ1bm5pbmcKPj4+Pj4+IG9uIGluIGEgY29uc2lzdGVudCB3YXkuCj4+Pj4+Pgo+Pj4+Pj4gQ2M6 IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+Pj4+Pj4gQ2M6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+Pj4+PiBTaWduZWQt b2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIAo+Pj4+Pj4gPGRhbmllbGUuY2VyYW9sb3Nw dXJpb0BpbnRlbC5jb20+Cj4+Pj4+PiAtLS0KPj4+Pj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jwqAgfCA3NyAKPj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLQo+Pj4+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jIHzCoCAxIC0KPj4+Pj4+IMKgIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwg MjkgZGVsZXRpb25zKC0pCj4+Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIAo+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYwo+Pj4+Pj4gaW5kZXggNGJhMTM5YzI3ZmJhLi4xZGQ5MmNhYzhkNjcg MTAwNjQ0Cj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu Ywo+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPj4+ Pj4+IEBAIC04MSwxMiArODEsMTYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlbmdpbmVfY2xhc3Nf aW5mbyAKPj4+Pj4+IGludGVsX2VuZ2luZV9jbGFzc2VzW10gPSB7Cj4+Pj4+PiDCoMKgwqDCoMKg IH0sCj4+Pj4+PiDCoCB9Owo+Pj4+Pj4gKyNkZWZpbmUgTUFYX01NSU9fQkFTRVMgMwo+Pj4+Pj4g wqAgc3RydWN0IGVuZ2luZV9pbmZvIHsKPj4+Pj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGh3 X2lkOwo+Pj4+Pj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgdWFiaV9pZDsKPj4+Pj4+IMKgwqDC oMKgwqAgdTggY2xhc3M7Cj4+Pj4+PiDCoMKgwqDCoMKgIHU4IGluc3RhbmNlOwo+Pj4+Pj4gLcKg wqDCoCB1MzIgbW1pb19iYXNlOwo+Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZW5naW5lX21taW9fYmFz ZSB7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgdTMyIGdlbiA6IDg7Cj4+Pj4+PiArwqDCoMKgwqDC oMKgwqAgdTMyIGJhc2UgOiAyNDsKPj4+Pj4+ICvCoMKgwqAgfSBtbWlvX2Jhc2VzW01BWF9NTUlP X0JBU0VTXTsKPj4+Pj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgaXJxX3NoaWZ0Owo+Pj4+Pj4gwqAg fTsKPj4+Pj4KPj4+Pj4gSXQncyBub3QgYmFkLCBidXQgSSBhbSBqdXN0IHdvbmRlcmluZyBpZiBp dCBpcyB0b28gY29tcGxpY2F0ZWQgCj4+Pj4+IHZlcnN1cyBzaW1wbHkgZHVwbGljYXRpbmcgdGhl IHRhYmxlcy4KPj4+Pj4KPj4+Pj4gRHVwbGljYXRlZCB0YWJsZXMgd291bGQgY2VydGFpbmx5IGJl IG11Y2ggbGVzcyBjb2RlIGFuZCBjb21wbGV4aXR5LCAKPj4+Pj4gYnV0IHdoYXQgYWJvdXQgdGhl IHNpemUgb2YgcHVyZSBkYXRhPwo+Pj4+Pgo+Pj4+PiBJbiB0aGlzIHBhdGNoIHNpemVvZihzdHJ1 Y3QgZW5naW5lX2luZm8pIGdyb3dzIGJ5IE1BWF9NTUlPX0JBU0VTICogCj4+Pj4+IHNpemVvZih1 MzIpLCBzbyAxMiwgdG8gdGhlIHRvdGFsIG9mIDMwIGlmIEkgYW0gbm90IG1pc3Rha2VuLiBUaW1l cyAKPj4+Pj4gTlVNX0VOR0lORVMgZXF1YWxzIDI0MCBieXRlcyBmb3IgaW50ZWxfZW5naW5lc1td IGFycmF5IHdpdGggdGhpcyAKPj4+Pj4gc2NoZW1lLgo+Pj4+Pgo+Pj4+Cj4+Pj4gd2UgcmVtb3Zl IGEgdTMyICh0aGUgb2xkIG1taW8gYmFzZSkgc28gd2Ugb25seSBncm93IDggcGVyIGVuZ2luZSwg Cj4+Pj4gYnV0IHRoZSBjb21waWxlciByb3VuZHMgdXAgdG8gYSBtdWx0aXBsZSBvZiB1MzIgc28g MjggcGVyIGVuZ2luZSwgCj4+Pj4gZm9yIGEgdG90YWwgb2YgMjI0Lgo+Pj4+Cj4+Pj4+IFNlcGFy YXRlIHRhYmxlcyBwZXIgZ2VucyB3b3VsZCBiZToKPj4+Pj4KPj4+Pj4gc2l6ZW9mKHN0cnVjdCBl bmdpbmVfaW5mbykgaXMgMTggYnl0ZXMuCj4+Pj4+Cj4+Pj4+IEZvciA8IGdlbjYgd2UnZCBuZWVk IDMgZW5naW5lcyAqIDE4ID0gNTQKPj4+Pj4gPCBnZW4xMSA9IDUgZW5naW5lcyAqIDE4ID0gOTAK Pj4+Pj4gwqA+PSBnZW4xMSA9IDggZW5naW5lcyAqIDE4ID0gMTQ0Cj4+Pj4+Cj4+Pj4+IDU0ICsg OTAgKyAxNDQgPSAyODggYnl0ZXMKPj4+Pj4KPj4+Pj4gU28gYSBsaXR0bGUgYml0IGJpZ2dlci4g SG0uIFBsdXMgd2Ugd291bGQgbmVlZCB0byByZWZhY3RvciBzbyAKPj4+Pj4gaW50ZWxfZW5naW5l c1tdIGlzIG5vdCBpbmRleGVkIGJ5IGVuZ2luZS0+aWQgYnV0IGlzIGNvbnRpZ3VvdXMgCj4+Pj4+ IGFycmF5IHdpdGggZW5naW5lLT5pZCBpbiB0aGUgZWxlbWVudHMuIENvZGUgdG8gbG9va3VwIHRo ZSBjb21wYWN0IAo+Pj4+PiBhcnJheSBzaG91bGQgYmUgc2ltcGxlciB0aGFuIGNvbWJpbmVkIG5l dyBjb2RlIGZyb20gdGhpcyBwYXRjaCwgCj4+Pj4+IGVzcGVjaWFsbHkgaWYgeW91IGFkZCB0aGUg dGVzdCBhcyBDaHJpcyBzdWdnZXN0ZWQuIFNvIHNlcGFyYXRlIAo+Pj4+PiBlbmdpbmUgaW5mbyBh cnJheXMgd291bGQgd2luIEkgdGhpbmsgb3ZlcmFsbCAtIHdoZW4gY29uc2lkZXJpbmcgCj4+Pj4+ IHNpemUgb2YgdGV4dCArIHNpemUgb2YgZGF0YSArIHNpemUgb2Ygc291cmNlIGNvZGUuCj4+Pj4+ Cj4+Pj4KPj4+PiBOb3Qgc3VyZS4gSSB3b3VsZCBleGNsdWRlIHRoZSBzZWxmdGVzdCwgd2hpY2gg aXMgdXN1YWxseSBub3QgCj4+Pj4gY29tcGlsZWQgZm9yIHJlbGVhc2VkIGtlcm5lbHMsIHdoaWNo IGxlYWRzIHRvOgo+Pj4KPj4+IFllcywgYnV0IHdlIGNhbm5vdCBleGNsdWRlIGl0cyBzb3VyY2Ug c2luY2Ugc2VsZnRlc3RzIGZvciBzZXBhcmF0ZSAKPj4+IHRhYmxlcyB3b3VsZG4ndCBiZSBuZWVk ZWQuCj4+Pgo+Pj4+IGFkZC9yZW1vdmU6IDAvMCBncm93L3NocmluazogMy8xIHVwL2Rvd246IDEw MC8tNyAoOTMpCj4+Pj4gRnVuY3Rpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2xkwqDCoMKgwqAgbmV3wqDC oCBkZWx0YQo+Pj4+IGludGVsX2VuZ2luZXPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNjDCoMKgwqDCoCAyMjTCoMKgwqDCoCAr NjQKPj4+PiBfX2Z1bmNfX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEzODkxwqDCoCAxMzkxMMKgwqDCoMKgICsxOQo+ Pj4+IGludGVsX2VuZ2luZXNfaW5pdF9tbWlvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAxMjQ3wqDCoMKgIDEyNjTCoMKgwqDCoCArMTcKPj4+PiBpbnRlbF9pbml0X2Jz ZF9yaW5nX2J1ZmZlcsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNDLCoMKg wqDCoCAxMzXCoMKgwqDCoMKgIC03Cj4+Pj4gVG90YWw6IEJlZm9yZT0xNDc5NjI2LCBBZnRlcj0x NDc5NzE5LCBjaGcgKzAuMDElCj4+Pj4KPj4+PiBUb3RhbCBncm93dGggaXMgOTMsIHdoaWNoIGlz IGxlc3MgdGhlbiB5b3VyIGVzdGltYXRpb24gZm9yIHRoZSAKPj4+PiBncm93dGggaW50cm9kdWNl ZCBieSByZXBsaWNhdGluZyB0aGUgdGFibGUuCj4+Pj4KPj4+Pj4gQnV0IG9uIHRoZSBvdGhlciBo YW5kIHlvdXIgc29sdXRpb24gbWlnaHQgYmUgbW9yZSBmdXR1cmUgcHJvb2YuIFNvIAo+Pj4+PiBJ IGRvbid0IGtub3cuIFVzZSB0aGUgY3J5c3RhbCBiYWxsIHRvIGRlY2lkZT8gOikKPj4+Pj4KPj4+ Pgo+Pj4+IEkgdGhpbmsgd2Ugc2hvdWxkIGV4cGVjdCB0aGF0IHRoZSB0b3RhbCBlbmdpbmUgY291 bnQgY291bGQgZ3JvdyB3aXRoIAo+Pj4+IGZ1dHVyZSBnZW5zLiBJbiB0aGlzIGNhc2UgdG8gbWUg YWRkaW5nIGEgbmV3IGVudHJ5IHRvIGEgdW5pZmllZCAKPj4+PiB0YWJsZSBzZWVtcyBtdWNoIGNs ZWFuZXIgKGFuZCB1c2VzIGxlc3MgZGF0YSkgdGhhbiBhZGRpbmcgYSAKPj4+PiBjb21wbGV0ZWx5 IG5ldyB0YWJsZSBlYWNoIHRpbWUuCj4+Pgo+Pj4gT2theSBJIHdhcyBvZmYgaW4gbXkgZXN0aW1h dGVzLiBCdXQgaW4gZ2VuZXJhbCBJIHdhcyBjb21pbmcgZnJvbSB0aGUgCj4+PiBhbmdsZSBvZiB0 aGlua2luZyB0aGF0IGV2ZXJ5IG5ldyBtbWlvIGJhc2UgZGlmZmVyZW5jZSBpbiB0aGlzIHNjaGVt ZSAKPj4+IGdyb3dzIHRoZSBzaXplIGZvciBhbGwgZW5naW5lcy4gU28gaWYganVzdCBWQ1MgZ3Jv d3Mgb25lIG5ldyBiYXNlLCAKPj4+IGltcGFjdCBpcyBtdWx0aXBsaWVkIGJ5IE5VTV9FTkdJTkVT LiBCdXQgbWF5YmUgc2VwYXJhdGUgdGFibGVzIGFyZSAKPj4+IGFsc28gbm90IGEgc29sdXRpb24u IFBlcmhhcHMgcHVsbGluZyBvdXQgbW1pb19iYXNlIGFycmF5cyB0byBvdXRzaWRlIAo+Pj4gc3Ry dWN0IGVuZ2luZV9pbmZvIGluIGFub3RoZXIgc2V0IG9mIHN0YXRpYyB0YWJsZXMsIHNvIHRoZXkg Y291bGQgYmUgCj4+PiBudWxsIHRlcm1pbmF0ZWQgd291bGQgYmUgYmVzdCBvZiBib3RoIHdvcmxk cz8KPj4+Cj4+PiBzdHJ1Y3QgZW5naW5lX21taW9fYmFzZSB7Cj4+PiDCoMKgwqDCoMKgdTMyIGdl biA6IDg7Cj4+PiDCoMKgwqDCoMKgdTMyIGJhc2UgOiAyNDsKPj4+IH07Cj4+Pgo+Pj4gc3RhdGlj IGNvbnN0IHN0cnVjdCBlbmdpbmVfbW1pb19iYXNlIHZjczBfbW1pb19iYXNlc1tdID0gewo+Pj4g wqDCoMKgwqDCoHsgLmdlbiA9IDExLCAuYmFzZSA9IEdFTjExX0JTRF9SSU5HX0JBU0UgfSwKPj4+ IMKgwqDCoMKgwqB7IC5nZW4gPSA2LCAuYmFzZSA9IEdFTjZfQlNEX1JJTkdfQkFTRSB9LAo+Pj4g wqDCoMKgwqDCoHsgLmdlbiA9IDQsIC5iYXNlID0gQlNEX1JJTkdfQkFTRSB9LAo+Pj4gwqDCoMKg wqDCoHsgfSwKPj4+IH07Cj4+Pgo+Pj4gQW5kIHRoZW4gaW4gaW50ZWxfZW5naW5lcyBhcnJheSwg Zm9yIEJTRDoKPj4+Cj4+PiDCoMKgwqAgewo+Pj4gwqDCoMKgwqDCoC4uLgo+Pj4gwqDCoMKgwqDC oC5tbWlvX2Jhc2VzID0gJnZjczBfbW1pb19iYXNlczsKPj4+IMKgwqDCoMKgwqAuLi4KPj4+IMKg wqDCoCB9LAo+Pj4KPj4+IFRoaXMgd2F5IHdlIGxpbWl0IGRhdGEgZ3Jvd3RoIG9ubHkgdG8gZW5n aW5lcyB3aGljaCBjaGFuZ2UgdGhlaXIgbW1pbyAKPj4+IGJhc2VzIGZyZXF1ZW50bHkuCj4+Pgo+ Pj4gSnVzdCBhbiBpZGVhLgo+Pj4KPj4KPj4gSSBnYXZlIHRoaXMgYSB0cnkgYW5kIHRoZSBjb2Rl IGFjdHVhbGx5IGdyb3dzOgo+Pgo+PiBhZGQvcmVtb3ZlOiA4LzAgZ3Jvdy9zaHJpbms6IDIvMCB1 cC9kb3duOiAxMjAvMCAoMTIwKQo+PiBGdW5jdGlvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvbGTCoMKgwqDC oCBuZXfCoMKgIGRlbHRhCj4+IGludGVsX2VuZ2luZXPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMjTCoMKgwqDCoCAyNTbCoMKg wqDCoCArMzIKPj4gdmNzMF9tbWlvX2Jhc2VzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgwqDCoMKgwqAgMTbCoMKgwqDCoCAr MTYKPj4gdmVjczFfbW1pb19iYXNlc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtwqDCoMKgwqDCoCAxMsKgwqDCoMKgICsxMgo+PiB2 ZWNzMF9tbWlvX2Jhc2VzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgIDEywqDCoMKgwqAgKzEyCj4+IHZjczFfbW1p b19iYXNlc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgIDEywqDCoMKgwqAgKzEyCj4+IHZjczNfbW1pb19iYXNl c8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC3CoMKgwqDCoMKgwqAgOMKgwqDCoMKgwqAgKzgKPj4gdmNzMl9tbWlvX2Jhc2VzwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLcKgwqDCoMKgwqDCoCA4wqDCoMKgwqDCoCArOAo+PiByY3NfbW1pb19iYXNlc8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LcKgwqDCoMKgwqDCoCA4wqDCoMKgwqDCoCArOAo+PiBpbnRlbF9lbmdpbmVzX2luaXRfbW1pb8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTI2NMKgwqDCoCAxMjcywqDC oMKgwqDCoCArOAo+PiBiY3NfbW1pb19iYXNlc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgwqDCoMKgwqDCoCA0wqDCoMKg wqDCoCArNAo+PiBUb3RhbDogQmVmb3JlPTE0Nzk3MTksIEFmdGVyPTE0Nzk4MzksIGNoZyArMC4w MSUKPj4KPj4gSSBoYXZlIG5vIGlkZWEgd2hhdCB0aGUgY29tcGlsZXIgaXMgZG9pbmcgdG8gZ3Jv dyBpbnRlbF9lbmdpbmVzLCBzaW5jZSAKPj4gYnkgcmVwbGFjaW5nIGFuZCBhcnJheSBvZiAzIHUz MnMgd2l0aCBhIHBvaW50ZXIgSSB3b3VsZCBleHBlY3QgYSAKPj4gc2hyaW5rIG9mIDQgYnl0ZXMg cGVyLWVuZ2luZS4gQW55d2F5LCBldmVuIHdpdGhvdXQgdGhlIGNvbXBpbGVyIAo+PiB3ZWlyZG5l c3Mgd2l0aAo+IAo+IEl0IHByb2JhYmx5IGhhcyB0byBhbGlnbiB0aGUgcG9pbnRlciB0byA4IGJ5 dGVzIHNvIHRoYXQgY3JlYXRlcyBhIGhvbGUuIAo+IE1vdmluZyBtbWlvX2Jhc2UgcG9pbnRlciBo aWdoZXIgdXAsIGVpdGhlciB0byB0aGUgdG9wIG9yIGFmdGVyIHR3byAKPiB1bnNpZ25lZCBpbnRz IHNob3VsZCB3b3JrLiBPciBwYWNraW5nIHRoZSBzdHJ1Y3QuCj4gCj4+IHRoaXMgbWV0aG9kIHdl IHdvdWxkIGdyb3cgdGhlIGNvZGUgc2l6ZSBvZiBhdCBsZWFzdCA0IGJ5dGVzIHBlciBlbmdpbmUg Cj4+IGJlY2F1c2Ugd2UgcmVwbGFjZSBhbiBhcnJheSBvZiAzIHUzMiAoMTJCKSB3aXRoIGEgcG9p bnRlciAoOEIpIGFuZCBhbiAKPj4gYXJyYXkgb2YgYXQgMiBvciBtb3JlIHUzMiAoOEIrKS4gSSBn dWVzcyB3ZSBjYW4gcmVjb25zaWRlciBpZi93aGVuIG9uZSAKPj4gZW5naW5lIHJlYWNoZXMgbW9y ZSB0aGFuIDMgbW1pbyBiYXNlcy4KPiAKPiBZZWFoIGl0J3MgZmluZS4gSSB3YXMgdGhpbmtpbmcg dGhhdCBzaW5jZSB5b3UgYXJlIGFsbW9zdCB0aGVyZSBpdCBtYWtlcyAKPiBzZW5zZSB0byBmdXR1 cmUgcHJvb2YgaXQgbW9yZSwgc2luY2Ugbm8gb25lIHdpbGwgcHJvYmFibHkgcmVtZW1iZXIgaXQg Cj4gbGF0ZXIuIEJ1dCBPSy4KCk9uZSBpZGVhIHRvIGNvbXBhY3QgbW9yZSwgaW4gYWRkaXRpb24g dG8gYXZvaWRpbmcgYWxpZ25tZW50IGhvbGVzLCBjb3VsZCAKYmUgdG8gc3RvcmUgdGhlIGVuZ2lu ZV9tbWlvX2Jhc2UgZGlyZWN0bHkgaW4gdGhlIGVuZ2luZV9tbWlvX2Jhc2UgCnBvaW50ZXIgd2hl biBpdCBpcyBhIHNpbmdsZSBlbnRyeSwgb3RoZXdyaXNlIHVzZSBhIHBvaW50ZXIgdG8gbnVsbCAK dGVybWluYXRlZCBhcnJheS4gQWN0dWFsbHkgd2UgY291bGQgc3RvcmUgdHdvIHdpdGhvdXQgdGFi bGUgaW5kaXJlY3Rpb24gCnRvIGJlIG1vc3Qgb3B0aW1hbCBvbiA2NC1iaXQuIFNvbWV0aGluZyBs aWtlOgoKc3RydWN0IGVuZ2luZV9tbWlvX2Jhc2UgewogICAgIHUzMiBiYXNlIDogMjQ7IC8qIE11 c3QgYmUgTFNCLCAqLwogICAgIHUzMiBnZW4gOiA4Owp9OwoKdW5pb24gZW5naW5lX21taW8gewoJ c3RydWN0IGVuZ2luZV9tbWlvX2Jhc2UgbW1pb19iYXNlWzJdOwoJc3RydWN0IGVuZ2luZV9tbWlv X2Jhc2UgKm1taW9fYmFzZV9saXN0Owp9OwoKI2RlZmluZSBNTUlPX1BUUl9MSVNUIEJJVCgwKQoK ICAgIHsKICAgICAuLi4gcmVuZGVyIGVuZ2luZSAuLi4KICAgICAubW1pbyA9IHsgKHN0cnVjdCBl bmdpbmVfbW1pb19iYXNlKXsuYmFzZSA9IC4uLiwgLi5nZW4gPSAuLi59IH0sCiAgICAgLi4uCiAg ICB9LAogICAgewogICAgIC4uLgogICAgIC5tbWlvID0geyAubW1pb19iYXNlX2xpc3QgPSAmdmNz MF9tbWlvX2Jhc2VzIHwgTU1JT19QVFJfTElTVCB9CiAgICAgLi4uCiAgICB9LAoKVGhpcyBjb3Vs ZCBiZSB0aGUgYmVzdCBvZiBib3RoIHdvcmxkcywgd2l0aCB1cCB0byB0d28gYmFzZXMgYnVpbHQt aW4sIAphbmQgZW5naW5lcyB3aXRoIG1vcmUgcG9pbnQgdG8gYW4gYXJyYXkuCgoKUmVnYXJkcywK ClR2cnRrbwoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==