From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37799C433FF for ; Fri, 9 Aug 2019 09:57:09 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 06C232166E for ; Fri, 9 Aug 2019 09:57:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 06C232166E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw1dj-0006vD-Dr; Fri, 09 Aug 2019 09:56:51 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw1di-0006v8-GL for xen-devel@lists.xenproject.org; Fri, 09 Aug 2019 09:56:50 +0000 X-Inumbo-ID: 00d4f05d-ba8c-11e9-8980-bc764e045a96 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTP id 00d4f05d-ba8c-11e9-8980-bc764e045a96; Fri, 09 Aug 2019 09:56:48 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2F9CC15A2; Fri, 9 Aug 2019 02:56:48 -0700 (PDT) Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 464E43F575; Fri, 9 Aug 2019 02:56:47 -0700 (PDT) To: Oleksandr Tyshchenko References: <1564763985-20312-1-git-send-email-olekstysh@gmail.com> <1564763985-20312-7-git-send-email-olekstysh@gmail.com> <42cc28a7-5ab3-e24f-16d3-7a287f7f14e8@arm.com> <7cecce50-31e9-0e3f-d41c-a051ea6f9971@arm.com> <11de4dee-2d2f-2578-57ae-4313c985e645@gmail.com> <03b1bac9-40ca-3bd4-d3fa-a4acc4e9e958@arm.com> <862f74f1-2039-8737-6d71-fe3fc07a06ff@gmail.com> <8d38df29-7314-02a8-94d7-5e317c8ea442@arm.com> From: Julien Grall Message-ID: Date: Fri, 9 Aug 2019 10:56:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [Xen-devel] [PATCH V2 6/6] iommu/arm: Add Renesas IPMMU-VMSA support X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: "xen-devel@lists.xenproject.org" , Yoshihiro Shimoda , "sstabellini@kernel.org" , Robin Murphy , Oleksandr Tyshchenko Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" KCsgUm9iaW4pCgpPbiAwOS8wOC8yMDE5IDAwOjMyLCBPbGVrc2FuZHIgVHlzaGNoZW5rbyB3cm90 ZToKPiBIaSBKdWxpZW4uCgpIaSwKCj4gCj4gU29ycnkgZm9yIHRoZSBwb3NzaWJsZSBmb3JtYXQg aXNzdWVzLgo+IAo+INGH0YIsIDgg0LDQstCzLiAyMDE5INCzLiwgMjM6MzIgSnVsaWVuIEdyYWxs IDxqdWxpZW4uZ3JhbGxAYXJtLmNvbSAKPiA8bWFpbHRvOmp1bGllbi5ncmFsbEBhcm0uY29tPj46 Cj4gCj4gICAgIEhpIE9sZWtzYW5kciwKPiAKPiAgICAgT24gOC84LzE5IDg6MjkgUE0sIE9sZWtz YW5kciB3cm90ZToKPiAgICAgID4+Pj4+Pgo+ICAgICAgPj4+Pj4+PiBTb3JyeSBmb3IgdGhlIHBv c3NpYmxlIGZvcm1hdCBpc3N1ZXMuCj4gICAgICA+Pj4+Pj4+Cj4gICAgICA+Pj4+Pj4+Cj4gICAg ICA+Pj4+Pj4+IMKgwqDCoMKgID4gTm8sIGl0IGlzIG5vdCBkaXNhYmxlZC4gQnV0LCBpcG1tdV9p cnEoKSB1c2VzIGFub3RoZXIKPiAgICAgID4+Pj4+Pj4gbW11LT5sb2NrLiBTbywgSQo+ICAgICAg Pj4+Pj4+PiDCoMKgwqDCoCA+IHRoaW5rLCB0aGVyZSB3b24ndCBiZSBhIGRlYWRsb2NrLgo+ICAg ICAgPj4+Pj4+PiDCoMKgwqDCoCA+Cj4gICAgICA+Pj4+Pj4+IMKgwqDCoMKgID4gT3IgSSByZWFs bHkgbWlzc2VkIHNvbWV0aGluZz8KPiAgICAgID4+Pj4+Pj4gwqDCoMKgwqAgPgo+ICAgICAgPj4+ Pj4+PiDCoMKgwqDCoCA+IElmIHdlIHdvcnJ5IGFib3V0IGlwbW11X3RsYl9pbnZhbGlkYXRlKCkg d2hpY2ggaXMgY2FsbGVkCj4gICAgICA+Pj4+Pj4+IGhlcmUgKHRvCj4gICAgICA+Pj4+Pj4+IMKg wqDCoMKgID4gcGVyZm9ybSBhIGZsdXNoIGJ5IHJlcXVlc3QgZnJvbSBQMk0gY29kZSwgd2hpY2gg bWFuYWdlcyBhCj4gICAgICA+Pj4+Pj4+IHBhZ2UgdGFibGUpCj4gICAgICA+Pj4+Pj4+IMKgwqDC oMKgID4gYW5kIGZyb20gdGhlIGlycSBoYW5kbGVyICh0byBwZXJmb3JtIGEgZmx1c2ggdG8gcmVz dW1lCj4gICAgICA+Pj4+Pj4+IGFkZHJlc3MKPiAgICAgID4+Pj4+Pj4gwqDCoMKgwqAgPiB0cmFu c2xhdGlvbiksIEkgY291bGQgdXNlIGEgdGFza2xldCB0byBzY2hlZHVsZQo+ICAgICAgPj4+Pj4+ PiBpcG1tdV90bGJfaW52YWxpZGF0ZSgpCj4gICAgICA+Pj4+Pj4+IMKgwqDCoMKgID4gZnJvbSB0 aGUgaXJxIGhhbmRsZXIgdGhlbi4gVGhpcyB3YXkgd2Ugd291bGQgZ2V0IHRoaXMKPiAgICAgID4+ Pj4+Pj4gc2VyaWFsaXplZC4gV2hhdAo+ICAgICAgPj4+Pj4+PiDCoMKgwqDCoCA+IGRvIHlvdSB0 aGluaz8KPiAgICAgID4+Pj4+Pj4KPiAgICAgID4+Pj4+Pj4gwqDCoMKgIEkgYW0gYWZyYWlkIGEg dGFza2xldCBpcyBub3QgYW4gb3B0aW9uLiBZb3UgbmVlZCB0byBwZXJmb3JtCj4gICAgICA+Pj4+ Pj4+IHRoZSBUTEIKPiAgICAgID4+Pj4+Pj4gwqDCoMKgIGZsdXNoIHdoZW4gcmVxdWVzdGVkIG90 aGVyd2lzZSB5b3UgYXJlIGludHJvZHVjaW5nIGEgc2VjdXJpdHkKPiAgICAgID4+Pj4+Pj4gaXNz dWUuCj4gICAgICA+Pj4+Pj4+Cj4gICAgICA+Pj4+Pj4+IMKgwqDCoCBUaGlzIGlzIGJlY2F1c2Ug YXMgc29vbiBhcyBhIHJlZ2lvbiBpcyB1bm1hcHBlZCBpbiB0aGUgcGFnZQo+ICAgICAgPj4+Pj4+ PiB0YWJsZSwgd2UKPiAgICAgID4+Pj4+Pj4gwqDCoMKgIHJlbW92ZSB0aGUgZHJvcCB0aGUgcmVm ZXJlbmNlIG9uIGFueSBwYWdlIGJhY2tpbmcgdGhhdAo+ICAgICAgPj4+Pj4+PiByZWdpb24uIFdo ZW4gdGhlCj4gICAgICA+Pj4+Pj4+IMKgwqDCoCByZWZlcmVuY2UgaXMgZHJvcHBlZCB0byB6ZXJv LCB0aGUgcGFnZSBjYW4gYmUgcmVhbGxvY2F0ZWQgdG8KPiAgICAgID4+Pj4+Pj4gYW5vdGhlcgo+ ICAgICAgPj4+Pj4+PiDCoMKgwqAgZG9tYWluIG9yIGV2ZW4gWGVuLiBJZiB0aGUgVExCIGZsdXNo IGhhcHBlbiBhZnRlciwgdGhlbiB0aGUKPiAgICAgID4+Pj4+Pj4gZ3Vlc3QgbWF5Cj4gICAgICA+ Pj4+Pj4+IMKgwqDCoCBzdGlsbCBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgcGFnZSBmb3IgYSBzaG9y dCB0aW1lIGlmIHRoZQo+ICAgICAgPj4+Pj4+PiB0cmFuc2xhdGlvbiBoYXMKPiAgICAgID4+Pj4+ Pj4gwqDCoMKgIGJlZW4gY2FjaGVkIGJ5IHRoZSBhbnkgVExCIChJT01NVSwgUHJvY2Vzc29yKS4K PiAgICAgID4+Pj4+Pj4KPiAgICAgID4+Pj4+Pj4KPiAgICAgID4+Pj4+Pj4KPiAgICAgID4+Pj4+ Pj4gSSB1bmRlcnN0YW5kIHRoaXMuIEnCoGFtIG5vdCBwcm9wb3NpbmcgdG8gZGVsYXkgYSByZXF1 ZXN0ZWQgYnkgUDJNCj4gICAgICA+Pj4+Pj4+IGNvZGUgVExCIGZsdXNoIGluIGFueSBjYXNlLiBJ IGp1c3QgcHJvcG9zZSB0byBpc3N1ZSBUTEIgZmx1c2gKPiAgICAgID4+Pj4+Pj4gKHdoaWNoIHdl IGhhdmUgdG8gcGVyZm9ybSBpbiBjYXNlIG9mIHBhZ2UgZmF1bHRzLCB0byByZXNvbHZlCj4gICAg ICA+Pj4+Pj4+IGVycm9yIGNvbmRpdGlvbiBhbmQgcmVzdW1lIHRyYW5zbGF0aW9ucykgZnJvbSBh IHRhc2tsZXQgcmF0aGVyCj4gICAgICA+Pj4+Pj4+IHRoYW4gZnJvbSBpbnRlcnJ1cHQgaGFuZGxl ciBkaXJlY3RseS4gVGhpcyBpcyB0aGUgVExCIGZsdXNoIEkgYW0KPiAgICAgID4+Pj4+Pj4gc3Bl YWtpbmcgYWJvdXQ6Cj4gICAgICA+Pj4+Pj4+Cj4gICAgICA+Pj4+Pj4+Cj4gICAgIGh0dHBzOi8v Z2l0aHViLmNvbS9vdHlzaGNoZW5rbzEveGVuL2Jsb2IvaXBtbXVfdXBzdHJlYW0yL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2FybS9pcG1tdS12bXNhLmMjTDU5OAo+IAo+ICAgICAgPj4+Pj4+Pgo+ ICAgICAgPj4+Pj4+Pgo+ICAgICAgPj4+Pj4+PiBTb3JyeSBpZiBJIHdhcyB1bmNsZWFyLgo+ICAg ICAgPj4+Pj4+Cj4gICAgICA+Pj4+Pj4gTXkgbWlzdGFrZSwgSSBtaXNyZWFkIHdoYXQgeW91IHdy b3RlLgo+ICAgICAgPj4+Pj4+Cj4gICAgICA+Pj4+Pj4gSSBmb3VuZCB0aGUgZmx1c2ggaW4gdGhl IHJlbmVzYXMtYnNwIGFuZCBub3QgTGludXggdXBzdHJlYW0gYnV0IGl0Cj4gICAgICA+Pj4+Pj4g aXMgbm90IGNsZWFyIHdoeSB0aGlzIGlzIGFjdHVhbGx5IHJlcXVpcmVkLiBZb3UgYXJlIG5vdCBm aXhpbmcgYW55Cj4gICAgICA+Pj4+Pj4gdHJhbnNsYXRpb24gZXJyb3IuIFNvIHdoYXQgdGhpcyBm bHVzaCB3aWxsIGRvPwo+ICAgICAgPj4+Pj4+Cj4gICAgICA+Pj4+Pj4gUmVnYXJkaW5nIHRoZSBw bGFjZW1lbnQgb2YgdGhlIGZsdXNoLCB0aGVuIGlmIHlvdSBleGVjdXRlIGluIGEKPiAgICAgID4+ Pj4+PiB0YXNrbGV0IGl0IHdpbGwgbGlrZWx5IGJlIGRvbmUgbGF0ZXIgb24gd2hlbiB0aGUgSVJR IGhhcyBiZWVuCj4gICAgICA+Pj4+Pj4gYWNrbm93bGVkZ2UuIFdoYXQncyB0aGUgaW1wbGljYXRp b24gdG8gZGVsYXkgaXQ/Cj4gICAgICA+Pj4+Pgo+ICAgICAgPj4+Pj4KPiAgICAgID4+Pj4+IExv b2tzIGxpa2UsIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHV0IHRoaXMgZmx1c2ggaW50byBhIHRhc2ts ZXQuIEFzIEkKPiAgICAgID4+Pj4+IHVuZGVyc3RhbmQgZnJvbSBTaGltb2RhLXNhbidzIGFuc3dl ciBpdCBpcyBPSyB0byBjYWxsIGZsdXNoIGhlcmUuCj4gICAgICA+Pj4+Pgo+ICAgICAgPj4+Pj4g U28sIG15IHdvcnJ5IGFib3V0IGNhbGxpbmcgaXBtbXVfdGxiX2ludmFsaWRhdGUoKSBkaXJlY3Rs eSBmcm9tIHRoZQo+ICAgICAgPj4+Pj4gaW50ZXJydXB0IGhhbmRsZXIgaXMgbm90IGFjdHVhbCBh bnltb3JlLgo+ICAgICAgPj4+Pj4gLS0tLS0tLS0tLQo+ICAgICAgPj4+Pj4gVGhpcyBpcyBteSB1 bmRlcnN0YW5kaW5nIHJlZ2FyZGluZyB0aGUgZmx1c2ggcHVycG9zZSBoZXJlLiBUaGlzCj4gICAg ICA+Pj4+PiBjb2RlLCBqdXN0IGZvbGxvd3MgdGhlIFRSTSwgbm8gbW9yZSBubyBsZXNzLAo+ICAg ICAgPj4+Pj4gd2hpY2ggbWVudGlvbnMgYWJvdXQgYSBuZWVkIHRvIGZsdXNoIFRMQiBhZnRlciBj bGVhcmluZyBlcnJvcgo+ICAgICAgPj4+Pj4gc3RhdHVzIHJlZ2lzdGVyIGFuZCB1cGRhdGluZyBh IHBhZ2UgdGFibGUgZW50cmllcyAod2hpY2gsIEkgYXNzdW1lLAo+ICAgICAgPj4+Pj4gbWVhbnMg dG8gcmVzb2x2ZSBhIHJlYXNvbiB3aHkgdHJhbnNsYXRpb24vcGFnZSBmYXVsdCBlcnJvciBhY3R1 YWxseQo+ICAgICAgPj4+Pj4gaGF2ZSBoYXBwZW5lZCkgdG8gcmVzdW1lIGFkZHJlc3MgdHJhbnNs YXRpb24gcmVxdWVzdC4KPiAgICAgID4+Pj4KPiAgICAgID4+Pj4gV2VsbCwgSSBkb24ndCBoYXZl IHRoZSBUUk0uLi4gc28gbXkgcG9pbnQgb2YgcmVmZXJlbmNlIGlzIExpbnV4LiBXaHkKPiAgICAg ID4+Pj4gZG9lcyB1cHN0cmVhbSBub3QgZG8gdGhlIFRMQiBmbHVzaD8KPiAgICAgID4+Pgo+ICAg ICAgPj4+IEkgaGF2ZSBubyBpZGVhIHJlZ2FyZGluZyB0aGF0LiA+Cj4gICAgICA+Pj4KPiAgICAg ID4+Pj4KPiAgICAgID4+Pj4KPiAgICAgID4+Pj4gSSBoYXZlIGJlZW4gdG9sZCB0aGlzIGlzIGFu IGVycmF0YSBvbiB0aGUgSVBNTVUuIElzIGl0IHJlbGF0ZWQgdG8KPiAgICAgID4+Pj4gdGhlIHNl cmllcyBwb3N0ZWQgb24gbGludXgtaW9tbXUgWzFdPwo+ICAgICAgPj4+Cj4gICAgICA+Pj4gSSBk b24ndCB0aGluaywgdGhlIFRMQiBmbHVzaCB3ZSBhcmUgc3BlYWtpbmcgYWJvdXQsIGlzIHJlbGF0 ZWQgdG8KPiAgICAgID4+PiB0aGF0IHNlcmllcyBbMV0gc29tZWhvdy4gVGhpcyBUTEIgZmx1c2gs IEkgdGhpbmssIGlzIGp1c3QgdGhlIGxhc3QKPiAgICAgID4+PiBzdGVwIGluIGEgc2VxdWVuY2Ug b2YgYWN0aW9ucyB3aGljaCBzaG91bGQgYmUgcGVyZm9ybWVkIHdoZW4gdGhlCj4gICAgICA+Pj4g ZXJyb3Igb2NjdXJzLCBubyBtb3JlIG5vIGxlc3MuIFRoaXMgaXMgaG93IEkgdW5kZXJzdGFuZCB0 aGlzLgo+ICAgICAgPj4KPiAgICAgID4+IElmIHlvdSBoYXZlIHRvIGZsdXNoIHRoZSBUTEJzIGlu IHRoZSBJUlEgY29udGV4dCB0aGVuIHNvbWV0aGluZyBoYXMKPiAgICAgID4+IGdvbmUgcmVhbGx5 IHdyb25nLgo+ICAgICAgPj4KPiAgICAgID4+IEkgZG9uJ3QgZGVueSB0aGF0IEJyZWFrLUJlZm9y ZS1NYWtlIGlzIGFuIGlzc3VlLiBIb3dldmVyLCBpZiBpdCBpcwo+ICAgICAgPj4gaGFuZGxlZCBj b3JyZWN0bHkgaW4gdGhlIFAyTSBjb2RlLiBZb3Ugc2hvdWxkIG9ubHkgYmUgdGhlcmUgYmVjYXVz ZQo+ICAgICAgPj4gdGhlcmUgYXJlIG5vIG1hcHBpbmcgaW4gdGhlIFRMQnMgZm9yIHRoZSBhZGRy ZXNzIGFjY2Vzc2VkLiBTbyBmbHVzaGluZwo+ICAgICAgPj4gdGhlIFRMQnMgc2hvdWxkIGJlIHVu bmVjZXNzYXJ5LCB1bmxlc3MgeW91ciBUTEIgaXMgYWxzbyBjYWNoaW5nCj4gICAgICA+PiBpbnZh bGlkIGVudHJ5Pwo+ICAgICAgPgo+ICAgICAgPiBTb3JyeSwgSSBkb24ndCBxdWl0ZSB1bmRlcnN0 YW5kIHdoeSB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoaXMgZmx1c2gKPiAgICAgID4gdG9vIG11 Y2ggZm9yIGEgY2FzZSB3aGljaCB3b24ndCBvY2N1ciBpbiBub3JtYWwgY29uZGl0aW9uIChpZiBl dmVyeXRoaW5nCj4gICAgICA+IGlzIGNvcnJlY3QpLiBXaHkgd2UgY2FuJ3QganVzdCBjb25zaWRl ciB0aGlzIGZsdXNoIGFzIGEgcmVxdWlyZWQgYWN0aW9uLAo+IAo+ICAgICBBIHRyYW5zbGF0aW9u IGVycm9yIGNhbiBiZSBlYXN5IHRvIHJlYWNoLiBGb3IgaW5zdGFuY2UgaWYgdGhlIGd1ZXN0IGRv ZXMKPiAgICAgbm90IHByb2dyYW0gdGhlIERldmljZSBjb3JyZWN0bHkgYW5kIHJlcXVlc3QgdG8g YWNjZXNzIGFuIGFkZHJlc3MgdGhhdAo+ICAgICBpcyBub3QgbWFwcGVkLgo+IAo+IAo+IFllcywg SSB1bmRlcnN0YW5kIHRoZXNlIGJpdHMuIEJ1dCwgSSB3cm90ZSB0aGF0IGVycm9yIHdvdWxkbid0 IG9jY3VyIGluIG5vcm1hbCAKPiBjb25kaXRpb24gKGlmIGV2ZXJ5dGhpbmcgd2FzIGNvcnJlY3Qp LgoKSSBkb24ndCB1bmRlcnN0YW5kIHlvdXIgcG9pbnQgaGVyZS4gV2hldGhlciB0aGlzIGlzIGlu IGFuIGVycm9yIHBhdGggb3IgY29ycmVjdCAKcGF0aCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdW5k ZXJzdGFuZCB0aGUgcmVhc29uIGJlaGluZCBpdC4gT3RoZXJ3aXNlLCBlcnJvciAKcGF0aCB3b3Vs ZCBiZWNvbWUgdGhlIHdpbGQgd2VzdC4uLgoKPiAKPiAKPiAKPiAKPiAKPiAgICAgID4gd2hpY2gg bmVlZGVkIHRvIGV4aXQgZnJvbSB0aGUgZXJyb3Igc3RhdGUgYW5kIHJlc3VtZSBzdG9wcGVkIGFk ZHJlc3MKPiAgICAgID4gdHJhbnNsYXRpb24gcmVxdWVzdC4gVGhlIHNhbWUgcmVxdWlyZWQgYWN0 aW9uIGFzICJjbGVhcmluZyBlcnJvciBzdGF0dXMKPiAgICAgID4gZmxhZ3MiIGJlZm9yZS4gV2Ug YXJlIG5vdCB0cnlpbmcgdG8gdW5kZXJzdGFuZCwgd2h5IGlzIGl0IHNvIG5lY2Vzc2FyeQo+ICAg ICAgPiB0byBjbGVhciBlcnJvciBmbGFncyB3aGVuIGVycm9yIGhhcHBlbnMsIG9yIGNhbiB3ZSBl bmQgdXAgd2l0aG91dAo+ICAgICAgPiBjbGVhcmluZyBpdCwgZm9yIGV4YW1wbGUuIFdlIGp1c3Qg Zm9sbG93IHdoYXQgZGVzY3JpYmVkIGluIGRvY3VtZW50LiBUaGUKPiAgICAgID4gc2FtZSwgSSB0 aGluaywgd2UgaGF2ZSBmb3IgdGhhdCBmbHVzaCwgaWYgZGVzY3JpYmVkLCB0aGVuIHNob3VsZCBi ZQo+ICAgICAgPiBmb2xsb3dlZC4gTG9va3MgbGlrZSB0aGlzIGZsdXNoIGFjdHMgYXMgYSB0cmln Z2VyIHRvIHVuYmxvY2sgc3RvcHBlZAo+ICAgICAgPiB0cmFuc2FjdGlvbiBpbiB0aGF0IHBhcnRp Y3VsYXIgY2FzZS4KPiAKPiAgICAgV2hhdCB3aWxsIGFjdHVhbGx5IGhhcHBlbiBpZiB0aGUgdHJh bnNhY3Rpb24gZmFpbCBhZ2Fpbj8gRm9yIGluc3RhbmNlLAo+ICAgICBpZiB0aGUgSU9WQSB3YXMg bm90IG1hcHBlZC4gV2lsbCB5b3UgcmVjZWl2ZSB0aGUgaW50ZXJydXB0IGFnYWluPwo+ICAgICBJ ZiBzbywgYXJlIHlvdSBnb2luZyB0byBtYWtlIHRoZSBmbHVzaCBhZ2FpbiBhbmQgYWdhaW4gdW50 aWwgdGhlIGd1ZXN0Cj4gICAgIGlzIGtpbGxlZD8KPiAKPiAKPiBUaGlzIGlzIGEgZ29vZCBxdWVz dGlvbi4gSSB0aGluaywgaWYgYWRkcmVzcyBpcyBub3QgbWFwcGVkLCB0aGUgdHJhbnNhY3Rpb24g d2lsbCAKPiBmYWlsIGFnYWluIGFuZCB3ZSB3aWxsIGdldCB0aGUgaW50ZXJydXB0IGFnYWluLiBO b3Qgc3VyZSwgdW50aWwgdGhlIGd1ZXN0IGlzIAo+IGtpbGxlZCBvciB1bnRpbCB0aGUgZHJpdmVy IGluIHRoZSBndWVzdCBkZXRlY3RzIHRpbWVvdXQgYW5kIGNhbmNlbHMgRE1BLiBMZXQncyAKPiBj b25zaWRlciB0aGUgd29yc3QgY2FzZSwgdW50aWwgdGhlIGd1ZXN0IGlzIGtpbGxlZC4KPiAKPiBT byBteSBxdWVzdGlvbnMgYXJlIHdoYXQgZG8geW91IHRoaW5rIHdvdWxkIGJlIHRoZSBwcm9wZXIg ZHJpdmVyJ3MgYmVoYXZpb3IgaW4gCj4gdGhhdCBjYXNlPyBEbyBub3RoaW5nIGFuZCBkb24ndCBl dmVuIHRyeSB0byByZXNvbHZlIGVycm9yIGNvbmRpdGlvbi91bmJsb2NrIAo+IHRyYW5zbGF0aW9u IGF0IHRoZSBmaXJzdCBwYWdlIGZhdWx0LCBvciBnaXZlIGl0IGEgZmV3IGF0dGVtcHRzLCBvciB1 bmJsb2NrIGV2ZXJ5IAo+IHRpbWUuCgpJIHdpbGwgYW5zd2VyIGJhY2sgd2l0aCBhIHF1ZXN0aW9u IGhlcmUuIEhvdyBpcyB0aGUgVExCIGZsdXNoIGlzIGdvaW5nIHRvIAp1bmJsb2NrIGFueXRoaW5n PyBUaGUgbW9yZSB5b3UgYXJlIG5vdCBmaXhpbmcgYW55IGVycm9yIGNvbmRpdGlvbiBoZXJlLi4u IEFuZCAKdGhlIHByaW50ICJVbmhhbmRsZWQgZmF1bHQiIGp1c3QgYWZ0ZXJ3YXJkcyBjbGVhcmx5 IGxlYWRzIHRvIHRoaW5rIHRoYXQgdGhlcmUgCmFyZSB2ZXJ5IGxpdHRsZSBjaGFuY2UgdGhlIGZh dWx0IGhhcyBiZWVuIHJlc29sdmVkLgoKPiBIb3cgZG9lcyB0aGUgU01NVSBkcml2ZXIgYWN0IGlu IHN1Y2ggc2l0dWF0aW9uPwoKSSBoYXZlIENDZWQgUm9iaW4gd2hvIGtub3dzIGJldHRlciB0aGFu IG1lIHRoZSBTTU1VIGRyaXZlci4gVGhvdWdoIGl0IGlzIHRoZSAKTGludXggb25lIGJ1dCBYZW4g aXMgYmFzZWQgb24gaXQuCgogRnJvbSBteSB1bmRlcnN0YW5kaW5nLCBpdCBpcyBpbXBsZW1lbnRh dGlvbiBkZWZpbmVkIHdoZXRoZXIgdGhlIFNNTVUgc3VwcG9ydHMgCnN0YWxsaW5nIGEgdHJhbnNh Y3Rpb24gb24gZmF1bHQuIEFGQUlDVCwgdGhlIGN1cnJlbnQgWGVuIGRyaXZlciB3aWxsIGp1c3Qg CnRlcm1pbmF0ZSB0aGUgdHJhbnNhY3Rpb24gYW5kIHRoZXJlZm9yZSB0aGUgY2xpZW50IHRyYW5z YWN0aW9uIGJlaGF2ZSBhcyBSQVovV0kuCgo+IAo+IFF1aXRlIGNsZWFyLCBpZiB3ZSBnZXQgYSBm YXVsdCwgdGhlbiBhZGRyZXNzIGlzIG5vdCBtYXBwZWQuIEkgdGhpbmssIGl0IGNhbiBiZSAKPiBi b3RoOiBieSBpc3N1aW5nIHdyb25nIGFkZHJlc3MgKGJhZ2d5IGRyaXZlciwgbWFsaWNpb3VzIGRy aXZlcikgb3IgYnkgcmFjZSAKPiAodW5saWtlbHkpLiBJZiB0aGlzIGlzIHRoZSByZWFsIHJhY2Ug KGRldmljZSBoaXRzIGJyYWtlLWJlZm9yZS1tYWtlLCBmb3IgCj4gZXhhbXBsZSksIHdlIGNvdWxk IGdpdmUgaXQgYW5vdGhlciBhdHRlbXB0LCBmb3IgZXhhbXBsZS4gTG9va3MgbGlrZSB3ZSBuZWVk IHNvbWUgCj4gbWVjaGFuaXNtIHRvIGRlcGxveSBmYXVsdGVkIGFkZHJlc3MgdG8gUDJNIGNvZGUg KHdoaWNoIG1hbmFnZXMgcGFnZSB0YWJsZSkgdG8gCj4gYW5hbHl6ZT8gT3IgaXQgaXMgbm90IHdv cnRoIGRvaW5nIHRoYXQ/CgpZb3Ugc2VlbSB0byBzcGVhayBhYm91dCBicmVhay1iZWZvcmUtbWFr ZSBhcyBpdCB3YXMgYW4gZXJyb3IuIEJyZWFrLUJlZm9yZS1NYWtlIAppcyBqdXN0IGEgc2VxdWVu Y2UgdG8gcHJldmVudCB0aGUgVExCIHdhbGtlciB0byBjYWNoZSBib3RoIG9sZCBhbmQgbmV3IG1h cHBpbmcgCmF0IHRoZSBzYW1lIHRpbWUuIEF0IGEgZ2l2ZW4gcG9pbnQgdGhlIElPVkEgdHJhbnNs YXRpb24gY2FuIG9ubHkgYmU6CiAgICAxKSBUaGUgb2xkIHBoeXNpY2FsIGFkZHJlc3MKICAgIDIp IE5vIGFkZHJlc3MgLT4gcmVzdWx0IHRvIGEgZmF1bHQKICAgIDMpIFRoZSBuZXcgcGh5c2ljYWwg YWRkcmVzcwoKMSkgYW5kIDMpIHNob3VsZCBub3QgcmVzdWx0IHRvIGEgZmF1bHQuIDIpIHdpbGwg cmVzdWx0IHRvIGEgZmF1bHQgYnV0IHRoZW4gdGhlIApUTEIgc2hvdWxkIG5vdCBjYWNoZSBpbnZh bGlkIGVudHJ5LCByaWdodD8KCkluIG9yZGVyIHRvIHNlZSAyKSwgd2UgYWx3YXlzIGZsdXNoIHRo ZSBUTEJzIGFmdGVyIHJlbW92aW5nIHRoZSBvbGQgcGh5c2ljYWwgCmFkZHJlc3MuCgpVbmZvcnR1 bmF0ZWx5LCBzb21lIG9mIHRoZSBJT01NVXMgYXJlIG5vdCBhYmxlIHRvIHJlc3RhcnQgdHJhbnNh Y3Rpb25zLCBYZW4gCmN1cnJlbnRseSBhdm9pZHMgdG8gZmx1c2ggdGhlIFRMQnMgYWZ0ZXIgMiku IFNvIHlvdSBtYXkgYmUgYWJsZSB0byBzZWUgYm90aCAKbWFwcGluZyBhdCB0aGUgc2FtZSB0aW1l LgoKTG9va2luZyBhdCB5b3VyIGRyaXZlciwgSSBiZWxpZXZlIHlvdSB3b3VsZCBoYXZlIHRoZSBm bGFnIElNU1RSLk1ISVQgKG11bHRpcGxlIAp0bGIgaGl0cykgc2V0IGJlY2F1c2UgdGhpcyBpcyB0 aGUgY29uZGl0aW9uIHdlIGFyZSB0cnlpbmcgdG8gcHJldmVudCB3aXRoIApicmVhay1iZWZvcmUt bWFrZS4gVGhlIGNvbW1lbnQgaW4gdGhlIGNvZGUgbGVhZHMgdG8gdGhpbmsgdGhpcyBpcyBhIGZh dWx0IGVycm9yLCAKc28gSSBhbSBub3Qgc3VyZSB3aHkgeW91IHdvdWxkIHJlY292ZXIgaGVyZS4u LgoKSWYgeW91ciBJT01NVSBpcyBhYmxlIHRvIHN0YWxsIHRyYW5zYWN0aW9uLCB0aGVuIGl0IHdv dWxkIGJlIGJlc3QgaWYgd2UgcHJvcGVybHkgCmhhbmRsZSBicmVhay1iZWZvcmUtbWFrZSB3aXRo IGl0LgoKT3ZlcmFsbCwgaXQgZmVlbHMgdG8gbWUgdGhlIFRMQiBmbHVzaCBpcyBoZXJlIGZvciBh IGRpZmZlcmVudCByZWFzb24uCgo+IAo+IAo+ICAgICAgPgo+ICAgICAgPiBEaWZmZXJlbnQgSC9X IGNvdWxkIGhhdmUgZGlmZmVyZW50IHJlc3RvcmluZyBzZXF1ZW5jZXMuIFNvbWUgSC9XCj4gICAg ICA+IHJlcXVpcmVzIGp1c3QgY2xlYXJpbmcgZXJyb3Igc3RhdHVzLCBvdGhlciBIL1cgcmVxdWly ZXMgZnVsbAo+ICAgICAgPiByZS1pbml0aWFsaXphdGlvbiBpbiBhIHNwZWNpZmljIG9yZGVyIHRv IHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUuCj4gICAgICA+Cj4gICAgICA+IFBsZWFzZSBj b3JyZWN0IG1lIGlmIEkgYW0gd3JvbmcuCj4gCj4gICAgIEkgYW0gbm90IGNvbmZpZGVudCB0byBh Y2NlcHQgYW55IGNvZGUgdGhhdCBJIGRvbid0IHVuZGVyc3RhbmQgb3IgSSBkb24ndAo+ICAgICBm aW5kIHNlbnNpYmxlLiBBcyBJIHBvaW50ZWQgb3V0IGluIG15IHByZXZpb3VzIGUtbWFpbCwgdGhp cyBoYXNuJ3QKPiAgICAgcmVhY2hlZCB1cHN0cmVhbSBzbyBzb21ldGhpbmcgbG9va3MgcXVpdGUg ZmlzaHkgaGVyZS4KPiAKPiAKPiBBcyBJIGFuc3dlcmVkIGluIHByZXZpb3VzIGUtbWFpbCwgSSBo b3BlLCB3ZSB3aWxsIGJlIGFibGUgdG8gY2xhcmlmeSBhIHJlYXNvbiAKPiB3aHkgdGhpcyBoYXNu J3QgcmVhY2hlZCB1cHN0cmVhbS4KClRoYW5rIHlvdS4KCkNoZWVycywKCgotLSAKSnVsaWVuIEdy YWxsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs