From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robin Murphy Subject: Re: [RFC PATCH v1 0/6] Resolve unwanted DMA backing with IOMMU Date: Thu, 16 Aug 2018 18:23:02 +0100 Message-ID: References: <20180726231624.21084-1-digetx@gmail.com> <2887450.sPhIOOMKZK@dimapc> <2e7fab6e-0640-8f48-07b8-2d475538b8ae@arm.com> <12474499.22jeAM5LNA@dimapc> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <12474499.22jeAM5LNA@dimapc> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dmitry Osipenko , Joerg Roedel Cc: devicetree@vger.kernel.org, Mikko Perttunen , Rob Herring , Frank Rowand , "Rafael J. Wysocki" , Nicolas Chauvet , nouveau@lists.freedesktop.org, Will Deacon , Russell King , dri-devel@lists.freedesktop.org, Jonathan Hunter , iommu@lists.linux-foundation.org, Thierry Reding , Ben Skeggs , Greg Kroah-Hartman , linux-tegra@vger.kernel.org, Catalin Marinas , linux-kernel@vger.kernel.org List-Id: linux-tegra@vger.kernel.org T24gMTUvMDgvMTggMjA6NTYsIERtaXRyeSBPc2lwZW5rbyB3cm90ZToKPiBPbiBGcmlkYXksIDMg QXVndXN0IDIwMTggMTg6NDM6NDEgTVNLIFJvYmluIE11cnBoeSB3cm90ZToKPj4gT24gMDIvMDgv MTggMTk6MjQsIERtaXRyeSBPc2lwZW5rbyB3cm90ZToKPj4+IE9uIEZyaWRheSwgMjcgSnVseSAy MDE4IDIwOjE2OjUzIE1TSyBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+Pj4gT24gRnJpZGF5LCAy NyBKdWx5IDIwMTggMjA6MDM6MjYgTVNLIEpvcmRhbiBDcm91c2Ugd3JvdGU6Cj4+Pj4+IE9uIEZy aSwgSnVsIDI3LCAyMDE4IGF0IDA1OjAyOjM3UE0gKzAxMDAsIFJvYmluIE11cnBoeSB3cm90ZToK Pj4+Pj4+IE9uIDI3LzA3LzE4IDE1OjEwLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+Pj4+Pj4g T24gRnJpZGF5LCAyNyBKdWx5IDIwMTggMTI6MDM6MjggTVNLIFdpbGwgRGVhY29uIHdyb3RlOgo+ Pj4+Pj4+PiBPbiBGcmksIEp1bCAyNywgMjAxOCBhdCAxMDoyNToxM0FNICswMjAwLCBKb2VyZyBS b2VkZWwgd3JvdGU6Cj4+Pj4+Pj4+PiBPbiBGcmksIEp1bCAyNywgMjAxOCBhdCAwMjoxNjoxOEFN ICswMzAwLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+Pj4+Pj4+Pj4gVGhlIHByb3Bvc2VkIHNv bHV0aW9uIGFkZHMgYSBuZXcgb3B0aW9uIHRvIHRoZSBiYXNlIGRldmljZSBkcml2ZXIKPj4+Pj4+ Pj4+PiBzdHJ1Y3R1cmUgdGhhdCBhbGxvd3MgZGV2aWNlIGRyaXZlcnMgdG8gZXhwbGljaXRseSBj b252ZXkgdG8gdGhlCj4+Pj4+Pj4+Pj4gZHJpdmVycwo+Pj4+Pj4+Pj4+IGNvcmUgdGhhdCB0aGUg aW1wbGljaXQgSU9NTVUgYmFja2luZyBmb3IgZGV2aWNlcyBtdXN0IG5vdCBoYXBwZW4uCj4+Pj4+ Pj4+Pgo+Pj4+Pj4+Pj4gV2h5IGlzIElPTU1VIG1hcHBpbmcgYSBwcm9ibGVtIGZvciB0aGUgVGVn cmEgR1BVIGRyaXZlcj8KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBJZiB3ZSBhZGQgc29tZXRoaW5nIGxp a2UgdGhpcyB0aGVuIGl0IHNob3VsZCBub3QgYmUgdGhlIGNob2ljZSBvZgo+Pj4+Pj4+Pj4gdGhl Cj4+Pj4+Pj4+PiBkZXZpY2UgZHJpdmVyLCBidXQgb2YgdGhlIHVzZXIgYW5kL29yIHRoZSBmaXJt d2FyZS4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gQWdyZWVkLCBhbmQgaXQgd291bGQgc3RpbGwgbmVlZCBz b21lYm9keSB0byBjb25maWd1cmUgYW4gaWRlbnRpdHkKPj4+Pj4+Pj4gZG9tYWluCj4+Pj4+Pj4+ IHNvCj4+Pj4+Pj4+IHRoYXQgdHJhbnNhY3Rpb25zIGFyZW4ndCBhYm9ydGVkIGltbWVkaWF0ZWx5 LiBXZSBjdXJyZW50bHkgYWxsb3cgdGhlCj4+Pj4+Pj4+IGlkZW50aXR5IGRvbWFpbiB0byBiZSB1 c2VkIGJ5IGRlZmF1bHQgdmlhIGEgY29tbWFuZC1saW5lIG9wdGlvbiwgc28gSQo+Pj4+Pj4+PiBn dWVzcwo+Pj4+Pj4+PiB3ZSdkIG5lZWQgYSB3YXkgZm9yIGZpcm13YXJlIHRvIHJlcXVlc3QgdGhh dCBvbiBhIHBlci1kZXZpY2UgYmFzaXMuCj4+Pj4+Pj4KPj4+Pj4+PiBUaGUgSU9NTVUgbWFwcGlu ZyBpdHNlbGYgaXMgbm90IGEgcHJvYmxlbSwgdGhlIHByb2JsZW0gaXMgdGhlCj4+Pj4+Pj4gbWFu YWdlbWVudAo+Pj4+Pj4+IG9mCj4+Pj4+Pj4gdGhlIElPTU1VLiBGb3IgVGVncmEgd2UgZG9uJ3Qg d2FudCBhbnl0aGluZyB0byBpbnRydWRlIGludG8gdGhlIElPTU1VCj4+Pj4+Pj4gYWN0aXZpdGll cyBiZWNhdXNlOgo+Pj4+Pj4+Cj4+Pj4+Pj4gMSkgR1BVIEhXIHJlcXVpcmUgYWRkaXRpb25hbCBj b25maWd1cmF0aW9uIGZvciB0aGUgSU9NTVUgdXNhZ2UgYW5kCj4+Pj4+Pj4gZHVtYgo+Pj4+Pj4+ IG1hcHBpbmcgb2YgdGhlIGFsbG9jYXRpb25zIHNpbXBseSBkb2Vzbid0IHdvcmsuCj4+Pj4+Pgo+ Pj4+Pj4gR2VuZXJhbGx5LCB0aGF0J3MgYWxyZWFkeSBoYW5kbGVkIGJ5IHRoZSBEUk0gZHJpdmVy cyBhbGxvY2F0aW5nCj4+Pj4+PiB0aGVpciBvd24gdW5tYW5hZ2VkIGRvbWFpbnMuIFRoZSBvbmx5 IHByb2JsZW0gd2UgcmVhbGx5IG5lZWQgdG8KPj4+Pj4+IHNvbHZlIGluIHRoYXQgcmVnYXJkIGlz IHRoYXQgY3VycmVudGx5IHRoZSBkZXZpY2UgRE1BIG9wcyBkb24ndCBnZXQKPj4+Pj4+IHVwZGF0 ZWQgd2hlbiBtb3ZpbmcgYXdheSBmcm9tIHRoZSBtYW5hZ2VkIGRvbWFpbi4gVGhhdCdzIGJlZW4g T0sgZm9yCj4+Pj4+PiB0aGUgVkZJTyBjYXNlIHdoZXJlIHRoZSBkZXZpY2UgaXMgYm91bmQgdG8g YSBkaWZmZXJlbnQgZHJpdmVyIHdoaWNoCj4+Pj4+PiB3ZSBrbm93IHdvbid0IG1ha2UgYW55IGV4 cGxpY2l0IERNQSBBUEkgY2FsbHMsIGJ1dCBmb3IgdGhlIG1vcmUKPj4+Pj4+IGdlbmVyYWwgY2Fz ZSBvZiBJT01NVS1hd2FyZSBkcml2ZXJzIHdlIGNvdWxkIGNlcnRhaW5seSBkbyB3aXRoIGEgYml0 Cj4+Pj4+PiBvZiBjb29wZXJhdGlvbiBiZXR3ZWVuIHRoZSBJT01NVSBBUEksIERNQSBBUEksIGFu ZCBhcmNoIGNvZGUgdG8KPj4+Pj4+IHVwZGF0ZSB0aGUgRE1BIG9wcyBkeW5hbWljYWxseSB0byBj b3BlIHdpdGggaW50ZXJtZWRpYXRlIHN1YnN5c3RlbXMKPj4+Pj4+IG1ha2luZyBETUEgQVBJIGNh bGxzIG9uIGJlaGFsZiBvZiBkZXZpY2VzIHRoZXkgZG9uJ3Qga25vdyB0aGUKPj4+Pj4+IGludGlt YXRlIGRldGFpbHMgb2YuCj4+Pj4+Pgo+Pj4+Pj4+IDIpIE9sZGVyIFRlZ3JhIGdlbmVyYXRpb25z IGhhdmUgYSBsaW1pdGVkIHJlc291cmNlIGFuZCBjYXBhYmlsaXRpZXMgaW4KPj4+Pj4+PiByZWdh cmRzIHRvIElPTU1VIHVzYWdlLCBhbGxvY2F0aW5nIElPTU1VIGRvbWFpbiBwZXItZGV2aWNlIGlz IGp1c3QKPj4+Pj4+PiBpbXBvc3NpYmxlIGZvciBleGFtcGxlLgo+Pj4+Pj4+Cj4+Pj4+Pj4gMykg SFcgcGVyZm9ybXMgY29udGV4dCBzd2l0Y2hlcyBhbmQgc28gcGFydGljdWxhciBhbGxvY2F0aW9u cyBoYXZlIHRvCj4+Pj4+Pj4gYmUKPj4+Pj4+PiBhc3NpZ25lZCB0byBhIHBhcnRpY3VsYXIgY29u dGV4dHMgSU9NTVUgZG9tYWluLgo+Pj4+Pj4KPj4+Pj4+IEkgdW5kZXJzdGFuZCBRdWFsY29tbSBT b0NzIGhhdmUgYSBzaW1pbGFyIHRoaW5nIHRvbywgYW5kIEFGQUlDUyB0aGF0Cj4+Pj4+PiBjYXNl IGp1c3QgZG9lc24ndCBmaXQgaW50byB0aGUgY3VycmVudCBBUEkgbW9kZWwgYXQgYWxsLiBXZSBu ZWVkIHRoZQo+Pj4+Pj4gSU9NTVUgZHJpdmVyIHRvIHNvbWVob3cga25vdyBhYm91dCB0aGUgc3Bl Y2lmaWMgZGV0YWlscyBvZiB3aGljaAo+Pj4+Pj4gZGV2aWNlcyBoYXZlIG1hZ2ljIGFzc29jaWF0 aW9ucyB3aXRoIHNwZWNpZmljIGNvbnRleHRzLCBhbmQgd2UKPj4+Pj4+IGFsbW9zdCBjZXJ0YWlu bHkgbmVlZCBhIG1vcmUgZXhwcmVzc2l2ZSBpbnRlcmZhY2UgdGhhbgo+Pj4+Pj4gaW9tbXVfZG9t YWluX2FsbG9jKCkgdG8gaGF2ZSBhbnkgaG9wZSBvZiByZWxpYWJsZSByZXN1bHRzLgo+Pj4+Pgo+ Pj4+PiBUaGlzIGlzIGNvcnJlY3QgZm9yIFF1YWxjb21tIEdQVXMgLSBUaGUgR1BVIGhhcmR3YXJl IGNvbnRleHQgc3dpdGNoaW5nCj4+Pj4+IHJlcXVpcmVzIGEgc3BlY2lmaWMgY29udGV4dCBhbmQg dGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zIGFyb3VuZAo+Pj4+PiBzZWN1cmUgY29udGV4dHMg YXMgd2VsbC4KPj4+Pj4KPj4+Pj4gV2UgZG9uJ3QgcmVhbGx5IGNhcmUgaWYgdGhlIERNQSBhdHRh Y2hlcyB0byBhIGNvbnRleHQganVzdCBhcyBsb25nIGFzIGl0Cj4+Pj4+IGRvZXNuJ3QgYXR0YWNo IHRvIHRoZSBvbmUocykgd2UgY2FyZSBhYm91dC4gUGVyaGFwcyBhICJ2YWxpZCBjb250ZXh0Igo+ Pj4+PiBtYXNrCj4+Pj4+IHdvdWxkIHdvcmsgaW4gZnJvbSB0aGUgRFQgb3IgdGhlIGRldmljZSBz dHJ1Y3QgdG8gZ2l2ZSB0aGUgc3Vic3lzdGVtcyBhCj4+Pj4+IGNsdWUgYXMgdG8gd2hpY2ggZG9t YWlucyB0aGV5IHdlcmUgYWxsb3dlZCB0byB1c2UuIEkgcmVjb2duaXplIHRoYXQKPj4+Pj4gdGhl cmUKPj4+Pj4gaXNuJ3QgYSBvbmUtc2l6ZS1maXRzLWFsbCBzb2x1dGlvbiB0byB0aGlzIHByb2Js ZW0gc28gSSdtIG9wZW4gdG8KPj4+Pj4gZGlmZmVyZW50Cj4+Pj4+IGlkZWFzLgo+Pj4+Cj4+Pj4g RGVzaWduYXRpbmcgd2hldGhlciBpbXBsaWNpdCBJT01NVSBiYWNraW5nIGlzIGFwcHJvcHJpYXRl IGZvciBhIGRldmljZQo+Pj4+IHZpYQo+Pj4+IGRldmljZS10cmVlIHByb3BlcnR5IHNvdW5kcyBh IGJpdCBhd2t3YXJkIGJlY2F1c2UgdGhhdCB3aWxsIGJlIGEga2luZGEKPj4+PiBzb2Z0d2FyZSBk ZXNjcmlwdGlvbiAob2YgYSBjdXN0b20gTGludXggZHJpdmVyIG1vZGVsKSwgd2hpbGUgZGV2aWNl LXRyZWUKPj4+PiBpcwo+Pj4+IHN1cHBvc2VkIHRvIGRlc2NyaWJlIEhXLgo+Pj4+Cj4+Pj4gV2hh dCBhYm91dCB0byBncmFudCBJT01NVSBkcml2ZXJzIHdpdGggYWJpbGl0eSB0byBkZWNpZGUgd2hl dGhlciB0aGUKPj4+PiBpbXBsaWNpdCBiYWNraW5nIGZvciBhIGRldmljZSBpcyBhcHByb3ByaWF0 ZT8gTGlrZSB0aGlzOgo+Pj4+Cj4+Pj4gYm9vbCBpbXBsaWNpdF9pb21tdV9mb3JfZG1hX2lzX2Fs bG93ZWQoc3RydWN0IGRldmljZSAqZGV2KQo+Pj4+IHsKPj4+Pgo+Pj4+IAljb25zdCBzdHJ1Y3Qg aW9tbXVfb3BzICpvcHMgPSBkZXYtPmJ1cy0+aW9tbXVfb3BzOwo+Pj4+IAlzdHJ1Y3QgaW9tbXVf Z3JvdXAgKmdyb3VwOwo+Pj4+IAkKPj4+PiAJZ3JvdXAgPSBpb21tdV9ncm91cF9nZXQoZGV2KTsK Pj4+PiAJaWYgKCFncm91cCkKPj4+PiAJCj4+Pj4gCQlyZXR1cm4gTlVMTDsKPj4+PiAJCj4+Pj4g CWlvbW11X2dyb3VwX3B1dChncm91cCk7Cj4+Pj4gCQo+Pj4+IAlpZiAoIW9wcy0+aW1wbGljaXRf aW9tbXVfZm9yX2RtYV9pc19hbGxvd2VkKQo+Pj4+IAkKPj4+PiAJCXJldHVybiB0cnVlOwo+Pj4+ IAkKPj4+PiAJcmV0dXJuIG9wcy0+aW1wbGljaXRfaW9tbXVfZm9yX2RtYV9pc19hbGxvd2VkKGRl dik7Cj4+Pj4KPj4+PiB9Cj4+Pj4KPj4+PiBUaGVuIGFyY2hfc2V0dXBfZG1hX29wcygpIGNvdWxk IGhhdmUgYSBjbHVlIHdoZXRoZXIgaW1wbGljaXQgSU9NTVUKPj4+PiBiYWNraW5nCj4+Pj4gZm9y IGEgZGV2aWNlIGlzIGFwcHJvcHJpYXRlLgo+Pj4KPj4+IEd1eXMsIGRvZXMgaXQgc291bmQgZ29v ZCB0byB5b3Ugb3IgbWF5YmUgeW91IGhhdmUgc29tZXRoaW5nIGVsc2Ugb24geW91cgo+Pj4gbWlu ZD8gRXZlbiBpZiBpdCdzIG5vdCBhbiBpZGVhbCBzb2x1dGlvbiwgaXQgZml4ZXMgdGhlIGltbWVk aWF0ZSBwcm9ibGVtCj4+PiBhbmQgc2hvdWxkIGJlIGdvb2QgZW5vdWdoIGZvciB0aGUgc3RhcnRl ci4KPj4KPj4gVG8gbWUgdGhhdCBsb29rcyBsaWtlIGEgc3RlcCBpb24gdGhlIHdyb25nIGRpcmVj dGlvbiB0aGF0IHdvbid0IGhlbHAgYXQKPj4gYWxsIGluIGFjdHVhbGx5IGFkZHJlc3NpbmcgdGhl IHVuZGVybHlpbmcgaXNzdWVzLgo+Pgo+PiBJZiB0aGUgR1BVIGRyaXZlciB3YW50cyB0byBleHBs aWNpdGx5IGNvbnRyb2wgSU9NTVUgbWFwcGluZ3MgaW5zdGVhZCBvZgo+PiByZWx5aW5nIG9uIHRo ZSBJT01NVV9ET01BSU5fRE1BIGFic3RyYWN0aW9uLCB0aGVuIGl0IHNob3VsZCB1c2UgaXRzIG93 bgo+PiB1bm1hbmFnZWQgZG9tYWluLiBBdCB0aGF0IHBvaW50IGl0IHNob3VsZG4ndCBtYXR0ZXIg aWYgYSBETUEgb3BzIGRvbWFpbgo+PiB3YXMgYWxsb2NhdGVkLCBzaW5jZSB0aGUgR1BVIGRldmlj ZSB3aWxsIG5vIGxvbmdlciBiZSBhdHRhY2hlZCB0byBpdC4KPiAKPiBJdCBpcyBub3Qgb2J2aW91 cyB0byBtZSB3aGF0IHNvbHV0aW9uIHlvdSBhcmUgcHJvcG9zaW5nLi4KPiAKPiBBcmUgeW91IHNh eWluZyB0aGF0IHRoZSBkZXRhY2hpbmcgZnJvbSB0aGUgRE1BIElPTU1VIGRvbWFpbiB0aGF0IGlz IHByb3ZpZGVkCj4gYnkgZG1hX29wcygpIGltcGxlbWVudGVyIChBUk0zMiBhcmNoIGZvciBleGFt cGxlKSBzaG91bGQgYmUgZ2VuZXJhbGl6ZWQgYW5kCj4gaGVuY2UgdGhlcmUgc2hvdWxkIGJlIHNv bWV0aGluZyBsaWtlOgo+IAo+IAlkbWFfZGV0YWNoX2RldmljZV9mcm9tX2lvbW11X2RtYV9kb21h aW4oZGV2KTsKPiAKPiB0aGF0IGRyaXZlcnMgd2lsbCBoYXZlIHRvIGludm9rZS4KCk5vLCBJIG1l YW4gdGhhdCBkcml2ZXJzIHNob3VsZCBub3QgaGF2ZSB0byBjYXJlIGF0IGFsbC4gSWYgdGhlIGRl dmljZSAKaGFzIGJlZW4gZ2l2ZW4gYSBzZXQgb2YgRE1BIG9wcyB3aGljaCByZWx5IG9uIGl0IGJl aW5nIGF0dGFjaGVkIHRvIGEgCmRlZmF1bHQgRE1BIGRvbWFpbiwgdGhhdCdzIG5vdCB0aGUgZHJp dmVyJ3MgZmF1bHQgYW5kIGl0J3Mgbm90IHNvbWV0aGluZyAKdGhlIGRyaXZlciBzaG91bGQgaGF2 ZSBkZWFsIHdpdGguIEVpdGhlciB0aGUgRE1BIG9wcyB0aGVtc2VsdmVzIHNob3VsZCAKYmUgcm9i dXN0IGFuZCBwcm92aWRlIGEgbm9uLUlPTU1VIGZhbGxiYWNrIGlmIHRoZXkgZGV0ZWN0IHRoYXQg dGhlIApkZXZpY2UgaXMgY3VycmVudGx5IGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGRvbWFpbiwg b3IgdGhlIGF0dGFjaCAKb3BlcmF0aW9uIChpZGVhbGx5IGluIHRoZSBJT01NVSBjb3JlLCBidXQg YXQgd29yc3QgaW4gdGhlIElPTU1VIGRyaXZlcidzIAouYXR0YWNoX2RldiBjYWxsYmFjaykgc2hv dWxkIGF1dG9tYXRpY2FsbHkgdGVsbCB0aGUgYXJjaCBjb2RlIHRvIHVwZGF0ZSAKdGhlIGRldmlj ZSdzIERNQSBvcHMgYXBwcm9wcmlhdGVseSBmb3IgdGhlIHRhcmdldCBkb21haW4uIFRoZXJlIGFy ZSAKYWxyZWFkeSBleGFtcGxlcyBvZiBib3RoIGFwcHJvYWNoZXMgZG90dGVkIGFyb3VuZCBhcmNo LXNwZWNpZmljIGNvZGUsIHNvIAp0aGUgcXVlc3Rpb24gaXMgd2hpY2ggcGFydGljdWxhciBzb2x1 dGlvbiBpcyBtb3N0IGFwcHJvcHJpYXRlIHRvIApzdGFuZGFyZGlzZSBvbiBpbiB3aGF0IGlzIGlu dGVuZGVkIHRvIGJlIGdlbmVyaWMgY29kZS4KCj4gQW5kIGhlbmNlIHRoZXJlIHdpbGwgYmUgZG1h X21hcF9vcHMuaW9tbXVfZGV0YWNoX2RldmljZSgpIHRoYXQgZG1hX29wcygpCj4gcHJvdmlkZXIg d2lsbCBoYXZlIHRvIGltcGxlbWVudC4gVGhlcmVieSBwcm92aWRlciB3aWxsIGRldGFjaCBkZXZp Y2UgZnJvbSBETUEKPiBkb21haW4sIGRlc3Ryb3kgdGhlIGRvbWFpbiBhbmQgdXBkYXRlIHRoZSBE TUEgb3BzIG9mIHRoZSBkZXZpY2UuCj4gCj4+IFllcywgdGhlcmUgbWF5IGJlIHNvbWUgaW1wcm92 ZW1lbnRzIHRvIG1ha2UgbGlrZSBoYXZpbmcgdW51c2VkIGRvbWFpbnMKPj4gbm90IGNvbnN1bWUg aGFyZHdhcmUgY29udGV4dHMsIGJ1dCB0aGF0J3MgaW50ZXJuYWwgdG8gdGhlIHJlbGV2YW50IElP TU1VCj4+IGRyaXZlcnMuIElmIG1vdmluZyBpbiBhbmQgb3V0IG9mIERNQSBvcHMgZG9tYWlucyBs ZWF2ZXMgdGhlIGFjdHVhbAo+PiBkbWFfb3BzIGJyb2tlbiwgdGhhdCdzIGFscmVhZHkgYSBwcm9i bGVtIGJldHdlZW4gdGhlIElPTU1VIEFQSSBhbmQgdGhlCj4+IGFyY2ggRE1BIGNvZGUgYXMgSSd2 ZSBtZW50aW9uZWQgYmVmb3JlLgo+Pgo+PiBGdXJ0aGVybW9yZSwgZ2l2ZW4gd2hhdCB0aGUgZXhh bXBsZSBhYm92ZSBpcyB0cnlpbmcgdG8gZG8sCj4+IGFyY2hfc2V0dXBfZG1hX29wcygpIGlzIHdh eSB0b28gbGF0ZSB0byBkbyBpdCAtIHRoZSBkZWZhdWx0IGRvbWFpbiB3YXMKPj4gYWxyZWFkeSBz ZXQgdXAgaW4gaW9tbXVfZ3JvdXBfZ2V0X2Zvcl9kZXYoKSB3aGVuIHRoZSBJT01NVSBkcml2ZXIg Zmlyc3QKPj4gc2F3IHRoYXQgZGV2aWNlLiBBbiAib3B0LW91dCIgbWVjaGFuaXNtIHRoYXQgZG9l c24ndCBhY3R1YWxseSBvcHQgb3V0Cj4+IGFuZCBqdXN0IGJvZGdlcyBhcm91bmQgYmVpbmcgb3B0 ZWQtaW4gYWZ0ZXIgdGhlIGZhY3QgZG9lc24ndCBzdHJpa2UgbWUKPj4gYXMgc29tZXRoaW5nIHdo aWNoIGNhbiBncm93IHRvIGJlIHJvYnVzdCBhbmQgbWFpbnRhaW5hYmxlLgo+Pgo+PiBGb3IgdGhl IGNhc2Ugd2hlcmUgIGEgZGV2aWNlIGhhcyBzb21lIHNwZWNpYWwgaGFyZHdhcmUgcmVsYXRpb25z aGlwIHdpdGgKPj4gYSBwYXJ0aWN1bGFyIElPTU1VIGNvbnRleHQsIHRoZSBJT01NVSBkcml2ZXIg KmhhcyogdG8gYmUgY29tcGxldGVseQo+PiBhd2FyZSBvZiB0aGF0LCBpLmUuIGl0IG5lZWRzIHRv IGJlIGRlc2NyaWJlZCBpbiBEVC9BQ1BJLCBlaXRoZXIgdmlhIHNvbWUKPj4gZXhwbGljaXQgYmlu ZGluZyBvciBhdCBsZWFzdCBpbmZlcnJlZCBmcm9tIHNvbWUgU29DL2luc3RhbmNlLXNwZWNpZmlj Cj4+IElPTU1VIGNvbXBhdGlibGUuIFRoZW4gdGhlIElPTU1VIGRyaXZlciBuZWVkcyB0byBrbm93 IHdoZW4gdGhlIGRyaXZlcgo+PiBmb3IgdGhhdCBkZXZpY2UgaXMgcmVxdWVzdGluZyBpdHMgc3Bl Y2lhbCBkb21haW4gc28gdGhhdCBpdCBwcm92aWRlIHRoZQo+PiBjb3JyZWN0IGNvbnRleHQgKGFu ZCAqbm90KiBhbGxvY2F0ZSB0aGF0IGNvbnRleHQgZm9yIG90aGVyIHVzZXMpLgo+PiBBbnl0aGlu ZyB3aGljaCBqdXN0IHJlbGllcyBvbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpbmdzIGN1cnJlbnRs eSBoYXBwZW4KPj4gdG8gYmUgYWxsb2NhdGVkIGlzIGZhciB0b28gZnJhZ2lsZSBsb25nLXRlcm0u Cj4gCj4gSWYgaGFyZHdhcmUgaGFzIHNvbWUgcmVzdHJpY3Rpb25zLCB0aGVuIHRoYXQgc2hvdWxk IGJlIHJlZmxlY3RlZCBpbiB0aGUKPiBoYXJkd2FyZSBkZXNjcmlwdGlvbi4gQnV0IHRoYXQncyBu b3Qgd2hhdCB3ZSBhcmUgdHJ5aW5nIHRvIHNvbHZlLCBhdCBsZWFzdAo+IHRoZXJlIGlzIG5vIHN1 Y2ggcHJvYmxlbSByaWdodCBub3cgZm9yIE5WSURJQSBUZWdyYS4KCk9LLCBtYXliZSBJIG1pc3Vu ZGVyc3Rvb2QgIkhXIHBlcmZvcm1zIGNvbnRleHQgc3dpdGNoZXMgYW5kIHNvIApwYXJ0aWN1bGFy IGFsbG9jYXRpb25zIGhhdmUgdG8gYmUgYXNzaWduZWQgdG8gYSBwYXJ0aWN1bGFyIGNvbnRleHRz IApJT01NVSBkb21haW4uIiAtIGlzIGl0IHRoYXQgdGhlIGRvbWFpbiBjYW4gYmUgYmFja2VkIGJ5 IGFueSBoYXJkd2FyZSAKY29udGV4dCBhbmQgdGhlIFRlZ3JhIEdQVSBkcml2ZXIgb25seSBuZWVk cyB0byBrbm93ICp3aGljaCogb25lLCByYXRoZXIgCnRoZW4gbmVlZGluZyBhIHNwZWNpZmljIGhh cmQtd2lyZWQgY29udGV4dCB0byBiZSBhbGxvY2F0ZWQgYXMgaW4gdGhlIApRY29tIGNhc2U/CgpS b2Jpbi4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==