From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [RFC] drm/i915: store all mmio bases in intel_engines Date: Mon, 12 Mar 2018 14:05:49 -0700 Message-ID: References: <20180307194515.17135-1-daniele.ceraolospurio@intel.com> <9c99352f-eaf9-a264-8d14-303a55e5fac2@intel.com> <6f96c344-9714-a9a8-60ad-48e4d6a98017@linux.intel.com> <650027ea-07aa-ecd6-1212-5c4f5ba01b33@linux.intel.com> <336af63a-e0e3-d37b-5534-d9590cc9f75c@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 182526E22B for ; Mon, 12 Mar 2018 21:05:51 +0000 (UTC) In-Reply-To: <336af63a-e0e3-d37b-5534-d9590cc9f75c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMi8wMy8xOCAxMDo0OCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyB3cm90ZToKPiAKPiAK PiBPbiAxMi8wMy8xOCAwNDowNCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+Cj4+IE9uIDA5LzAz LzIwMTggMTk6NDQsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4KPj4+IE9uIDA5LzAzLzIwMTgg MTg6NDcsIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4+Pj4gT24gMDkvMDMvMTggMDE6 NTMsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4+Pgo+Pj4+PiBPbiAwOC8wMy8yMDE4IDE4OjQ2 LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+Pj4+Pj4gT24gMDgvMDMvMTggMDE6MzEs IFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4+Pj4+Cj4+Pj4+Pj4gT24gMDcvMDMvMjAxOCAxOTo0 NSwgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyB3cm90ZToKPj4+Pj4+Pj4gVGhlIG1taW8gYmFzZXMg d2UncmUgY3VycmVudGx5IHN0b3JpbmcgaW4gdGhlIGludGVsX2VuZ2luZXMgCj4+Pj4+Pj4+IGFy cmF5IGFyZQo+Pj4+Pj4+PiBvbmx5IHZhbGlkIGZvciBhIHN1YnNldCBvZiBnZW5zLCBzbyB3ZSBu ZWVkIHRvIGlnbm9yZSB0aGVtIGFuZCB1c2UKPj4+Pj4+Pj4gZGlmZmVyZW50IHZhbHVlcyBpbiBz b21lIGNhc2VzLiBJbnN0ZWFkIG9mIGRvaW5nIHRoYXQsIHdlIGNhbiAKPj4+Pj4+Pj4gaGF2ZSBh Cj4+Pj4+Pj4+IHRhYmxlIG9mIFtzdGFydGluZyBnZW4sIG1taW8gYmFzZV0gcGFpcnMgZm9yIGVh Y2ggZW5naW5lIGluCj4+Pj4+Pj4+IGludGVsX2VuZ2luZXMgYW5kIHNlbGVjdCB0aGUgY29ycmVj dCBvbmUgYmFzZWQgb24gdGhlIGdlbiB3ZSdyZSAKPj4+Pj4+Pj4gcnVubmluZwo+Pj4+Pj4+PiBv biBpbiBhIGNvbnNpc3RlbnQgd2F5Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBDYzogTWlrYSBLdW9wcGFs YSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4+Pj4+Pj4+IENjOiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBE YW5pZWxlIENlcmFvbG8gU3B1cmlvIAo+Pj4+Pj4+PiA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGlu dGVsLmNvbT4KPj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2VuZ2luZV9jcy5jwqAgfCA3NyAKPj4+Pj4+Pj4gKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tCj4+Pj4+Pj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYyB8wqAgMSAtCj4+Pj4+Pj4+IMKgIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygr KSwgMjkgZGVsZXRpb25zKC0pCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAKPj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+Pj4+Pj4+PiBpbmRleCA0YmExMzljMjdmYmEuLjFk ZDkyY2FjOGQ2NyAxMDA2NDQKPj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMKPj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZW5naW5lX2NzLmMKPj4+Pj4+Pj4gQEAgLTgxLDEyICs4MSwxNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGVuZ2luZV9jbGFzc19pbmZvIAo+Pj4+Pj4+PiBpbnRlbF9lbmdpbmVfY2xhc3Nlc1tdID0g ewo+Pj4+Pj4+PiDCoMKgwqDCoMKgIH0sCj4+Pj4+Pj4+IMKgIH07Cj4+Pj4+Pj4+ICsjZGVmaW5l IE1BWF9NTUlPX0JBU0VTIDMKPj4+Pj4+Pj4gwqAgc3RydWN0IGVuZ2luZV9pbmZvIHsKPj4+Pj4+ Pj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaHdfaWQ7Cj4+Pj4+Pj4+IMKgwqDCoMKgwqAgdW5z aWduZWQgaW50IHVhYmlfaWQ7Cj4+Pj4+Pj4+IMKgwqDCoMKgwqAgdTggY2xhc3M7Cj4+Pj4+Pj4+ IMKgwqDCoMKgwqAgdTggaW5zdGFuY2U7Cj4+Pj4+Pj4+IC3CoMKgwqAgdTMyIG1taW9fYmFzZTsK Pj4+Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZW5naW5lX21taW9fYmFzZSB7Cj4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCB1MzIgZ2VuIDogODsKPj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBiYXNl IDogMjQ7Cj4+Pj4+Pj4+ICvCoMKgwqAgfSBtbWlvX2Jhc2VzW01BWF9NTUlPX0JBU0VTXTsKPj4+ Pj4+Pj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBpcnFfc2hpZnQ7Cj4+Pj4+Pj4+IMKgIH07Cj4+Pj4+ Pj4KPj4+Pj4+PiBJdCdzIG5vdCBiYWQsIGJ1dCBJIGFtIGp1c3Qgd29uZGVyaW5nIGlmIGl0IGlz IHRvbyBjb21wbGljYXRlZCAKPj4+Pj4+PiB2ZXJzdXMgc2ltcGx5IGR1cGxpY2F0aW5nIHRoZSB0 YWJsZXMuCj4+Pj4+Pj4KPj4+Pj4+PiBEdXBsaWNhdGVkIHRhYmxlcyB3b3VsZCBjZXJ0YWlubHkg YmUgbXVjaCBsZXNzIGNvZGUgYW5kIAo+Pj4+Pj4+IGNvbXBsZXhpdHksIGJ1dCB3aGF0IGFib3V0 IHRoZSBzaXplIG9mIHB1cmUgZGF0YT8KPj4+Pj4+Pgo+Pj4+Pj4+IEluIHRoaXMgcGF0Y2ggc2l6 ZW9mKHN0cnVjdCBlbmdpbmVfaW5mbykgZ3Jvd3MgYnkgTUFYX01NSU9fQkFTRVMgCj4+Pj4+Pj4g KiBzaXplb2YodTMyKSwgc28gMTIsIHRvIHRoZSB0b3RhbCBvZiAzMCBpZiBJIGFtIG5vdCBtaXN0 YWtlbi4gCj4+Pj4+Pj4gVGltZXMgTlVNX0VOR0lORVMgZXF1YWxzIDI0MCBieXRlcyBmb3IgaW50 ZWxfZW5naW5lc1tdIGFycmF5IHdpdGggCj4+Pj4+Pj4gdGhpcyBzY2hlbWUuCj4+Pj4+Pj4KPj4+ Pj4+Cj4+Pj4+PiB3ZSByZW1vdmUgYSB1MzIgKHRoZSBvbGQgbW1pbyBiYXNlKSBzbyB3ZSBvbmx5 IGdyb3cgOCBwZXIgZW5naW5lLCAKPj4+Pj4+IGJ1dCB0aGUgY29tcGlsZXIgcm91bmRzIHVwIHRv IGEgbXVsdGlwbGUgb2YgdTMyIHNvIDI4IHBlciBlbmdpbmUsIAo+Pj4+Pj4gZm9yIGEgdG90YWwg b2YgMjI0Lgo+Pj4+Pj4KPj4+Pj4+PiBTZXBhcmF0ZSB0YWJsZXMgcGVyIGdlbnMgd291bGQgYmU6 Cj4+Pj4+Pj4KPj4+Pj4+PiBzaXplb2Yoc3RydWN0IGVuZ2luZV9pbmZvKSBpcyAxOCBieXRlcy4K Pj4+Pj4+Pgo+Pj4+Pj4+IEZvciA8IGdlbjYgd2UnZCBuZWVkIDMgZW5naW5lcyAqIDE4ID0gNTQK Pj4+Pj4+PiA8IGdlbjExID0gNSBlbmdpbmVzICogMTggPSA5MAo+Pj4+Pj4+IMKgPj0gZ2VuMTEg PSA4IGVuZ2luZXMgKiAxOCA9IDE0NAo+Pj4+Pj4+Cj4+Pj4+Pj4gNTQgKyA5MCArIDE0NCA9IDI4 OCBieXRlcwo+Pj4+Pj4+Cj4+Pj4+Pj4gU28gYSBsaXR0bGUgYml0IGJpZ2dlci4gSG0uIFBsdXMg d2Ugd291bGQgbmVlZCB0byByZWZhY3RvciBzbyAKPj4+Pj4+PiBpbnRlbF9lbmdpbmVzW10gaXMg bm90IGluZGV4ZWQgYnkgZW5naW5lLT5pZCBidXQgaXMgY29udGlndW91cyAKPj4+Pj4+PiBhcnJh eSB3aXRoIGVuZ2luZS0+aWQgaW4gdGhlIGVsZW1lbnRzLiBDb2RlIHRvIGxvb2t1cCB0aGUgY29t cGFjdCAKPj4+Pj4+PiBhcnJheSBzaG91bGQgYmUgc2ltcGxlciB0aGFuIGNvbWJpbmVkIG5ldyBj b2RlIGZyb20gdGhpcyBwYXRjaCwgCj4+Pj4+Pj4gZXNwZWNpYWxseSBpZiB5b3UgYWRkIHRoZSB0 ZXN0IGFzIENocmlzIHN1Z2dlc3RlZC4gU28gc2VwYXJhdGUgCj4+Pj4+Pj4gZW5naW5lIGluZm8g YXJyYXlzIHdvdWxkIHdpbiBJIHRoaW5rIG92ZXJhbGwgLSB3aGVuIGNvbnNpZGVyaW5nIAo+Pj4+ Pj4+IHNpemUgb2YgdGV4dCArIHNpemUgb2YgZGF0YSArIHNpemUgb2Ygc291cmNlIGNvZGUuCj4+ Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBOb3Qgc3VyZS4gSSB3b3VsZCBleGNsdWRlIHRoZSBzZWxmdGVz dCwgd2hpY2ggaXMgdXN1YWxseSBub3QgCj4+Pj4+PiBjb21waWxlZCBmb3IgcmVsZWFzZWQga2Vy bmVscywgd2hpY2ggbGVhZHMgdG86Cj4+Pj4+Cj4+Pj4+IFllcywgYnV0IHdlIGNhbm5vdCBleGNs dWRlIGl0cyBzb3VyY2Ugc2luY2Ugc2VsZnRlc3RzIGZvciBzZXBhcmF0ZSAKPj4+Pj4gdGFibGVz IHdvdWxkbid0IGJlIG5lZWRlZC4KPj4+Pj4KPj4+Pj4+IGFkZC9yZW1vdmU6IDAvMCBncm93L3No cmluazogMy8xIHVwL2Rvd246IDEwMC8tNyAoOTMpCj4+Pj4+PiBGdW5jdGlvbsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBvbGTCoMKgwqDCoCBuZXfCoMKgIGRlbHRhCj4+Pj4+PiBpbnRlbF9lbmdpbmVzwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MTYwwqDCoMKgwqAgMjI0wqDCoMKgwqAgKzY0Cj4+Pj4+PiBfX2Z1bmNfX8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEz ODkxwqDCoCAxMzkxMMKgwqDCoMKgICsxOQo+Pj4+Pj4gaW50ZWxfZW5naW5lc19pbml0X21taW/C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEyNDfCoMKgwqAgMTI2NMKg wqDCoMKgICsxNwo+Pj4+Pj4gaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXLCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTQywqDCoMKgwqAgMTM1wqDCoMKgwqDCoCAtNwo+Pj4+ Pj4gVG90YWw6IEJlZm9yZT0xNDc5NjI2LCBBZnRlcj0xNDc5NzE5LCBjaGcgKzAuMDElCj4+Pj4+ Pgo+Pj4+Pj4gVG90YWwgZ3Jvd3RoIGlzIDkzLCB3aGljaCBpcyBsZXNzIHRoZW4geW91ciBlc3Rp bWF0aW9uIGZvciB0aGUgCj4+Pj4+PiBncm93dGggaW50cm9kdWNlZCBieSByZXBsaWNhdGluZyB0 aGUgdGFibGUuCj4+Pj4+Pgo+Pj4+Pj4+IEJ1dCBvbiB0aGUgb3RoZXIgaGFuZCB5b3VyIHNvbHV0 aW9uIG1pZ2h0IGJlIG1vcmUgZnV0dXJlIHByb29mLiAKPj4+Pj4+PiBTbyBJIGRvbid0IGtub3cu IFVzZSB0aGUgY3J5c3RhbCBiYWxsIHRvIGRlY2lkZT8gOikKPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+ IEkgdGhpbmsgd2Ugc2hvdWxkIGV4cGVjdCB0aGF0IHRoZSB0b3RhbCBlbmdpbmUgY291bnQgY291 bGQgZ3JvdyAKPj4+Pj4+IHdpdGggZnV0dXJlIGdlbnMuIEluIHRoaXMgY2FzZSB0byBtZSBhZGRp bmcgYSBuZXcgZW50cnkgdG8gYSAKPj4+Pj4+IHVuaWZpZWQgdGFibGUgc2VlbXMgbXVjaCBjbGVh bmVyIChhbmQgdXNlcyBsZXNzIGRhdGEpIHRoYW4gYWRkaW5nIAo+Pj4+Pj4gYSBjb21wbGV0ZWx5 IG5ldyB0YWJsZSBlYWNoIHRpbWUuCj4+Pj4+Cj4+Pj4+IE9rYXkgSSB3YXMgb2ZmIGluIG15IGVz dGltYXRlcy4gQnV0IGluIGdlbmVyYWwgSSB3YXMgY29taW5nIGZyb20gCj4+Pj4+IHRoZSBhbmds ZSBvZiB0aGlua2luZyB0aGF0IGV2ZXJ5IG5ldyBtbWlvIGJhc2UgZGlmZmVyZW5jZSBpbiB0aGlz IAo+Pj4+PiBzY2hlbWUgZ3Jvd3MgdGhlIHNpemUgZm9yIGFsbCBlbmdpbmVzLiBTbyBpZiBqdXN0 IFZDUyBncm93cyBvbmUgbmV3IAo+Pj4+PiBiYXNlLCBpbXBhY3QgaXMgbXVsdGlwbGllZCBieSBO VU1fRU5HSU5FUy4gQnV0IG1heWJlIHNlcGFyYXRlIAo+Pj4+PiB0YWJsZXMgYXJlIGFsc28gbm90 IGEgc29sdXRpb24uIFBlcmhhcHMgcHVsbGluZyBvdXQgbW1pb19iYXNlIAo+Pj4+PiBhcnJheXMg dG8gb3V0c2lkZSBzdHJ1Y3QgZW5naW5lX2luZm8gaW4gYW5vdGhlciBzZXQgb2Ygc3RhdGljIAo+ Pj4+PiB0YWJsZXMsIHNvIHRoZXkgY291bGQgYmUgbnVsbCB0ZXJtaW5hdGVkIHdvdWxkIGJlIGJl c3Qgb2YgYm90aCB3b3JsZHM/Cj4+Pj4+Cj4+Pj4+IHN0cnVjdCBlbmdpbmVfbW1pb19iYXNlIHsK Pj4+Pj4gwqDCoMKgwqDCoHUzMiBnZW4gOiA4Owo+Pj4+PiDCoMKgwqDCoMKgdTMyIGJhc2UgOiAy NDsKPj4+Pj4gfTsKPj4+Pj4KPj4+Pj4gc3RhdGljIGNvbnN0IHN0cnVjdCBlbmdpbmVfbW1pb19i YXNlIHZjczBfbW1pb19iYXNlc1tdID0gewo+Pj4+PiDCoMKgwqDCoMKgeyAuZ2VuID0gMTEsIC5i YXNlID0gR0VOMTFfQlNEX1JJTkdfQkFTRSB9LAo+Pj4+PiDCoMKgwqDCoMKgeyAuZ2VuID0gNiwg LmJhc2UgPSBHRU42X0JTRF9SSU5HX0JBU0UgfSwKPj4+Pj4gwqDCoMKgwqDCoHsgLmdlbiA9IDQs IC5iYXNlID0gQlNEX1JJTkdfQkFTRSB9LAo+Pj4+PiDCoMKgwqDCoMKgeyB9LAo+Pj4+PiB9Owo+ Pj4+Pgo+Pj4+PiBBbmQgdGhlbiBpbiBpbnRlbF9lbmdpbmVzIGFycmF5LCBmb3IgQlNEOgo+Pj4+ Pgo+Pj4+PiDCoMKgwqAgewo+Pj4+PiDCoMKgwqDCoMKgLi4uCj4+Pj4+IMKgwqDCoMKgwqAubW1p b19iYXNlcyA9ICZ2Y3MwX21taW9fYmFzZXM7Cj4+Pj4+IMKgwqDCoMKgwqAuLi4KPj4+Pj4gwqDC oMKgIH0sCj4+Pj4+Cj4+Pj4+IFRoaXMgd2F5IHdlIGxpbWl0IGRhdGEgZ3Jvd3RoIG9ubHkgdG8g ZW5naW5lcyB3aGljaCBjaGFuZ2UgdGhlaXIgCj4+Pj4+IG1taW8gYmFzZXMgZnJlcXVlbnRseS4K Pj4+Pj4KPj4+Pj4gSnVzdCBhbiBpZGVhLgo+Pj4+Pgo+Pj4+Cj4+Pj4gSSBnYXZlIHRoaXMgYSB0 cnkgYW5kIHRoZSBjb2RlIGFjdHVhbGx5IGdyb3dzOgo+Pj4+Cj4+Pj4gYWRkL3JlbW92ZTogOC8w IGdyb3cvc2hyaW5rOiAyLzAgdXAvZG93bjogMTIwLzAgKDEyMCkKPj4+PiBGdW5jdGlvbsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBvbGTCoMKgwqDCoCBuZXfCoMKgIGRlbHRhCj4+Pj4gaW50ZWxfZW5naW5lc8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDIyNMKgwqDCoMKgIDI1NsKgwqDCoMKgICszMgo+Pj4+IHZjczBfbW1pb19iYXNlc8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC3CoMKgwqDCoMKgIDE2wqDCoMKgwqAgKzE2Cj4+Pj4gdmVjczFfbW1pb19iYXNlc8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtwqDC oMKgwqDCoCAxMsKgwqDCoMKgICsxMgo+Pj4+IHZlY3MwX21taW9fYmFzZXPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgwqDCoMKg wqAgMTLCoMKgwqDCoCArMTIKPj4+PiB2Y3MxX21taW9fYmFzZXPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtwqDCoMKgwqDCoCAx MsKgwqDCoMKgICsxMgo+Pj4+IHZjczNfbW1pb19iYXNlc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgwqAgOMKg wqDCoMKgwqAgKzgKPj4+PiB2Y3MyX21taW9fYmFzZXPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtwqDCoMKgwqDCoMKgIDjCoMKg wqDCoMKgICs4Cj4+Pj4gcmNzX21taW9fYmFzZXPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC3CoMKgwqDCoMKgwqAgOMKgwqDC oMKgwqAgKzgKPj4+PiBpbnRlbF9lbmdpbmVzX2luaXRfbW1pb8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMTI2NMKgwqDCoCAxMjcywqDCoMKgwqDCoCArOAo+Pj4+IGJj c19tbWlvX2Jhc2VzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAtwqDCoMKgwqDCoMKgIDTCoMKgwqDCoMKgICs0Cj4+Pj4gVG90 YWw6IEJlZm9yZT0xNDc5NzE5LCBBZnRlcj0xNDc5ODM5LCBjaGcgKzAuMDElCj4+Pj4KPj4+PiBJ IGhhdmUgbm8gaWRlYSB3aGF0IHRoZSBjb21waWxlciBpcyBkb2luZyB0byBncm93IGludGVsX2Vu Z2luZXMsIAo+Pj4+IHNpbmNlIGJ5IHJlcGxhY2luZyBhbmQgYXJyYXkgb2YgMyB1MzJzIHdpdGgg YSBwb2ludGVyIEkgd291bGQgZXhwZWN0IAo+Pj4+IGEgc2hyaW5rIG9mIDQgYnl0ZXMgcGVyLWVu Z2luZS4gQW55d2F5LCBldmVuIHdpdGhvdXQgdGhlIGNvbXBpbGVyIAo+Pj4+IHdlaXJkbmVzcyB3 aXRoCj4+Pgo+Pj4gSXQgcHJvYmFibHkgaGFzIHRvIGFsaWduIHRoZSBwb2ludGVyIHRvIDggYnl0 ZXMgc28gdGhhdCBjcmVhdGVzIGEgCj4+PiBob2xlLiBNb3ZpbmcgbW1pb19iYXNlIHBvaW50ZXIg aGlnaGVyIHVwLCBlaXRoZXIgdG8gdGhlIHRvcCBvciBhZnRlciAKPj4+IHR3byB1bnNpZ25lZCBp bnRzIHNob3VsZCB3b3JrLiBPciBwYWNraW5nIHRoZSBzdHJ1Y3QuCj4+Pgo+Pj4+IHRoaXMgbWV0 aG9kIHdlIHdvdWxkIGdyb3cgdGhlIGNvZGUgc2l6ZSBvZiBhdCBsZWFzdCA0IGJ5dGVzIHBlciAK Pj4+PiBlbmdpbmUgYmVjYXVzZSB3ZSByZXBsYWNlIGFuIGFycmF5IG9mIDMgdTMyICgxMkIpIHdp dGggYSBwb2ludGVyIAo+Pj4+ICg4QikgYW5kIGFuIGFycmF5IG9mIGF0IDIgb3IgbW9yZSB1MzIg KDhCKykuIEkgZ3Vlc3Mgd2UgY2FuIAo+Pj4+IHJlY29uc2lkZXIgaWYvd2hlbiBvbmUgZW5naW5l IHJlYWNoZXMgbW9yZSB0aGFuIDMgbW1pbyBiYXNlcy4KPj4+Cj4+PiBZZWFoIGl0J3MgZmluZS4g SSB3YXMgdGhpbmtpbmcgdGhhdCBzaW5jZSB5b3UgYXJlIGFsbW9zdCB0aGVyZSBpdCAKPj4+IG1h a2VzIHNlbnNlIHRvIGZ1dHVyZSBwcm9vZiBpdCBtb3JlLCBzaW5jZSBubyBvbmUgd2lsbCBwcm9i YWJseSAKPj4+IHJlbWVtYmVyIGl0IGxhdGVyLiBCdXQgT0suCj4+Cj4+IE9uZSBpZGVhIHRvIGNv bXBhY3QgbW9yZSwgaW4gYWRkaXRpb24gdG8gYXZvaWRpbmcgYWxpZ25tZW50IGhvbGVzLCAKPj4g Y291bGQgYmUgdG8gc3RvcmUgdGhlIGVuZ2luZV9tbWlvX2Jhc2UgZGlyZWN0bHkgaW4gdGhlIAo+ PiBlbmdpbmVfbW1pb19iYXNlIHBvaW50ZXIgd2hlbiBpdCBpcyBhIHNpbmdsZSBlbnRyeSwgb3Ro ZXdyaXNlIHVzZSBhIAo+PiBwb2ludGVyIHRvIG51bGwgdGVybWluYXRlZCBhcnJheS4gQWN0dWFs bHkgd2UgY291bGQgc3RvcmUgdHdvIHdpdGhvdXQgCj4+IHRhYmxlIGluZGlyZWN0aW9uIHRvIGJl IG1vc3Qgb3B0aW1hbCBvbiA2NC1iaXQuIFNvbWV0aGluZyBsaWtlOgo+Pgo+PiBzdHJ1Y3QgZW5n aW5lX21taW9fYmFzZSB7Cj4+IMKgwqDCoMKgIHUzMiBiYXNlIDogMjQ7IC8qIE11c3QgYmUgTFNC LCAqLwo+PiDCoMKgwqDCoCB1MzIgZ2VuIDogODsKPj4gfTsKPj4KPj4gdW5pb24gZW5naW5lX21t aW8gewo+PiDCoMKgwqDCoMKgc3RydWN0IGVuZ2luZV9tbWlvX2Jhc2UgbW1pb19iYXNlWzJdOwo+ PiDCoMKgwqDCoMKgc3RydWN0IGVuZ2luZV9tbWlvX2Jhc2UgKm1taW9fYmFzZV9saXN0Owo+PiB9 Owo+Pgo+PiAjZGVmaW5lIE1NSU9fUFRSX0xJU1QgQklUKDApCj4+Cj4+IMKgwqDCoCB7Cj4+IMKg wqDCoMKgIC4uLiByZW5kZXIgZW5naW5lIC4uLgo+PiDCoMKgwqDCoCAubW1pbyA9IHsgKHN0cnVj dCBlbmdpbmVfbW1pb19iYXNlKXsuYmFzZSA9IC4uLiwgLi5nZW4gPSAuLi59IH0sCj4+IMKgwqDC oMKgIC4uLgo+PiDCoMKgwqAgfSwKPj4gwqDCoMKgIHsKPj4gwqDCoMKgwqAgLi4uCj4+IMKgwqDC oMKgIC5tbWlvID0geyAubW1pb19iYXNlX2xpc3QgPSAmdmNzMF9tbWlvX2Jhc2VzIHwgTU1JT19Q VFJfTElTVCB9Cj4gCj4gVGhpcyBpcyBnaXZpbmcgYSBjb21waWxlciBlcnJvciAoZXZlbiB3aXRo IHRoZSBhcHByb3ByaWF0ZSBjYXN0aW5nKSBmb3IgCj4gdmFsdWUgbm90IGNvbnN0YW50LiBJJ3Zl IHNvbHZlZCBieSBkb2luZzoKPiAKPiB1bmlvbiBlbmdpbmVfbW1pbyB7Cj4gIMKgwqDCoMKgY29u c3Qgc3RydWN0IGVuZ2luZV9tbWlvX2Jhc2UgYmFzZXNbTUFYX0JVSUxUSU5fTU1JT19CQVNFU107 Cj4gIMKgwqDCoMKgY29uc3Qgc3RydWN0IGVuZ2luZV9tbWlvX2Jhc2UgKmJhc2VzX2xpc3Q7Cj4g IMKgwqDCoMKgdW5pb24gewo+ICDCoMKgwqDCoMKgwqDCoCBjb25zdCB1NjQgaXNfbGlzdCA6IDE7 Cj4gIMKgwqDCoMKgwqDCoMKgIGNvbnN0IHU2NMKgwqDCoMKgwqDCoCA6IDYzOwo+ICDCoMKgwqDC oH07Cj4gfTsKPgoKSSByZXRyYWN0IHRoaXMgc3RhdGVtZW50LiBUaGUgdHJpY2sgd2l0aCB0aGUg dW5pb24gY29tcGlsZXMgZmluZSBidXQgCm9ubHkgb25lIG9mIHRoZSAyIGFzc2lnbm1lbnRzIChi ZXR3ZWVuIGJhc2VzX2xpc3QgYW5kIGlzX2xpc3QpIGFjdHVhbGx5IAplbmRzIHVwIGluIHRoZSBz dHJ1Y3R1cmUuCkkndmUgZXhwZXJpbWVudGVkIHdpdGggb3RoZXIgcG9zc2libGUgc29sdXRpb25z IHdpdGggc2hpZnRzIGFuZC9vciBPUnMsIApidXQgdGhleSBhbGwgbGVhZCB0byBhIGNvbXBpbGVy IGVycm9yIGZvciB2YWx1ZSBub3QgY29uc3RhbnQuIEF0IHRoaXMgCnBvaW50IEknbGwgc3RpY2sg d2l0aCB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gYXMgSSB3YW50IHRvIGF2b2lkIApvdmVy LWVuZ2luZWVyaW5nIHRoaXMuCgpEYW5pZWxlCgo+IENvZGUgc2l6ZSBpcyBhbG1vc3QgdW5jaGFu Z2VkIGJ1dCBzdGlsbCBsb29rcyBsaWtlIGEgZ29vZCBjb21wcm9taXNlLiAKPiBXaWxsIHVwZGF0 ZSB0aGUgc2VsZnRlc3QgYW5kIHNlbmQgcGF0Y2hlcyBzb29uLgo+IAo+IERhbmllbGUKPiAKPj4g wqDCoMKgwqAgLi4uCj4+IMKgwqDCoCB9LAo+Pgo+PiBUaGlzIGNvdWxkIGJlIHRoZSBiZXN0IG9m IGJvdGggd29ybGRzLCB3aXRoIHVwIHRvIHR3byBiYXNlcyBidWlsdC1pbiwgCj4+IGFuZCBlbmdp bmVzIHdpdGggbW9yZSBwb2ludCB0byBhbiBhcnJheS4KPj4KPj4KPj4gUmVnYXJkcywKPj4KPj4g VHZydGtvCj4+Cj4+Cj4+Cj4+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=