From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [RFC 1/3] xen/balloon: Allow allocating DMA buffers Date: Tue, 22 May 2018 21:27:42 +0300 Message-ID: <533ca735-333b-8403-85f7-d17794ea97ca__27164.0808591203$1527013615$gmane$org@gmail.com> References: <20180517082604.14828-1-andr2000@gmail.com> <20180517082604.14828-2-andr2000@gmail.com> <6a108876-19b7-49d0-3de2-9e10f984736c@oracle.com> <9541926e-001a-e41e-317c-dbff6d687761@gmail.com> <218e2bf7-490d-f89e-9866-27b7e3dbc835@oracle.com> <77c20852-b9b8-c35a-26b0-b0317e6aba09@gmail.com> <2a88de28-27ef-8fe4-ddc1-35eb9e698567@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fLC0j-0006lP-Lp for xen-devel@lists.xenproject.org; Tue, 22 May 2018 18:27:49 +0000 Received: by mail-wm0-x244.google.com with SMTP id a67-v6so2257580wmf.3 for ; Tue, 22 May 2018 11:27:46 -0700 (PDT) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Boris Ostrovsky , "Oleksandr_Andrushchenko@epam.com" , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, matthew.d.roper@intel.com, dongwon.kim@intel.com List-Id: xen-devel@lists.xenproject.org T24gMDUvMjIvMjAxOCAwOTowMiBQTSwgQm9yaXMgT3N0cm92c2t5IHdyb3RlOgo+IE9uIDA1LzIy LzIwMTggMTE6MDAgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBPbiAwNS8y Mi8yMDE4IDA1OjMzIFBNLCBCb3JpcyBPc3Ryb3Zza3kgd3JvdGU6Cj4+PiBPbiAwNS8yMi8yMDE4 IDAxOjU1IEFNLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+PiBPbiAwNS8yMS8y MDE4IDExOjM2IFBNLCBCb3JpcyBPc3Ryb3Zza3kgd3JvdGU6Cj4+Pj4+IE9uIDA1LzIxLzIwMTgg MDM6MTMgUE0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+Pj4+Pj4gT24gMDUvMjEv MjAxOCAwOTo1MyBQTSwgQm9yaXMgT3N0cm92c2t5IHdyb3RlOgo+Pj4+Pj4+IE9uIDA1LzIxLzIw MTggMDE6MzIgUE0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+Pj4+Pj4+PiBPbiAw NS8yMS8yMDE4IDA3OjM1IFBNLCBCb3JpcyBPc3Ryb3Zza3kgd3JvdGU6Cj4+Pj4+Pj4+PiBPbiAw NS8yMS8yMDE4IDAxOjQwIEFNLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+Pj4+ Pj4+PiBPbiAwNS8xOS8yMDE4IDAxOjA0IEFNLCBCb3JpcyBPc3Ryb3Zza3kgd3JvdGU6Cj4+Pj4+ Pj4+Pj4+IE9uIDA1LzE3LzIwMTggMDQ6MjYgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdy b3RlOgo+Pj4+Pj4+Pj4+Pj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28KPj4+Pj4+Pj4+ Pj4+IDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4+Pj4+Pj4+Pj4gQSBjb21t aXQgbWVzc2FnZSB3b3VsZCBiZSB1c2VmdWwuCj4+Pj4+Pj4+Pj4gU3VyZSwgdjEgd2lsbCBoYXZl IGl0Cj4+Pj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbwo+ Pj4+Pj4+Pj4+Pj4gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IG5yX3Bh Z2VzOyBpKyspIHsKPj4+Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBwYWdlID0gYWxsb2NfcGFn ZShnZnApOwo+Pj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChwYWdlID09IE5VTEwpIHsK Pj4+Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5yX3BhZ2VzID0gaTsKPj4+Pj4+ Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0YXRlID0gQlBfRUFHQUlOOwo+Pj4+Pj4+ Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+Pj4+Pj4+Pj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKGV4dF9wYWdlcykgewo+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcGFnZSA9IGV4dF9wYWdlc1tpXTsKPj4+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9 IGVsc2Ugewo+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFnZSA9IGFsbG9j X3BhZ2UoZ2ZwKTsKPj4+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChwYWdl ID09IE5VTEwpIHsKPj4+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bnJfcGFnZXMgPSBpOwo+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdGF0ZSA9IEJQX0VBR0FJTjsKPj4+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4+Pj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ Pj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+Pj4+Pj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNjcnViX3BhZ2UocGFnZSk7Cj4+Pj4+Pj4+Pj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9hZGQoJnBhZ2UtPmxydSwgJnBhZ2VzKTsK Pj4+Pj4+Pj4+Pj4+IEBAIC01MjksNyArNTY1LDcgQEAgc3RhdGljIGVudW0gYnBfc3RhdGUKPj4+ Pj4+Pj4+Pj4+IGRlY3JlYXNlX3Jlc2VydmF0aW9uKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIGdm cF90IGdmcCkKPj4+Pj4+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgaSA9IDA7Cj4+Pj4+Pj4+ Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwYWdlLCB0 bXAsICZwYWdlcywgbHJ1KSB7Cj4+Pj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyogWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uIHJlcXVpcmVzIGEgR0ZOICovCj4+Pj4+ Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgZnJhbWVfbGlzdFtpKytdID0geGVuX3BhZ2VfdG9fZ2Zu KHBhZ2UpOwo+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZyYW1lc1tpKytdID0geGVuX3Bh Z2VfdG9fZ2ZuKHBhZ2UpOwo+Pj4+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqAgwqAgI2lmZGVmIENPTkZJ R19YRU5fSEFWRV9QVk1NVQo+Pj4+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qCj4+Pj4+Pj4+Pj4+PiBAQCAtNTUyLDE4ICs1ODgsMjIgQEAgc3RhdGljIGVudW0gYnBfc3Rh dGUKPj4+Pj4+Pj4+Pj4+IGRlY3JlYXNlX3Jlc2VydmF0aW9uKHVuc2lnbmVkIGxvbmcgbnJfcGFn ZXMsIGdmcF90IGdmcCkKPj4+Pj4+Pj4+Pj4+ICDCoMKgwqDCoMKgICNlbmRpZgo+Pj4+Pj4+Pj4+ Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxpc3RfZGVsKCZwYWdlLT5scnUpOwo+Pj4+ Pj4+Pj4+Pj4gIMKgwqDCoMKgwqAgLcKgwqDCoMKgwqDCoMKgIGJhbGxvb25fYXBwZW5kKHBhZ2Up Owo+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghZXh0X3BhZ2VzKQo+Pj4+Pj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmFsbG9vbl9hcHBlbmQocGFnZSk7Cj4+Pj4+Pj4+ Pj4+IFNvIHdoYXQgeW91IGFyZSBwcm9wb3NpbmcgaXMgbm90IHJlYWxseSBiYWxsb29uaW5nLiBZ b3UgYXJlIGp1c3QKPj4+Pj4+Pj4+Pj4gcGlnZ3liYWNraW5nIG9uIGV4aXN0aW5nIGludGVyZmFj ZXMsIGFyZW4ndCB5b3U/Cj4+Pj4+Pj4+Pj4gU29ydCBvZi4gQmFzaWNhbGx5IEkgbmVlZCB0byB7 aW5jcmVhc2V8ZGVjcmVhc2V9X3Jlc2VydmF0aW9uLCBub3QKPj4+Pj4+Pj4+PiBhY3R1YWxseQo+ Pj4+Pj4+Pj4+IGFsbG9jYXRpbmcgYmFsbG9vbmVkIHBhZ2VzLgo+Pj4+Pj4+Pj4+IERvIHlvdSB0 aGluayBJIGNhbiBzaW1wbHkgRVhQT1JUX1NZTUJPTCBmb3IKPj4+Pj4+Pj4+PiB7aW5jcmVhc2V8 ZGVjcmVhc2V9X3Jlc2VydmF0aW9uPwo+Pj4+Pj4+Pj4+IEFueSBvdGhlciBzdWdnZXN0aW9uPwo+ Pj4+Pj4+Pj4gSSBhbSBhY3R1YWxseSB3b25kZXJpbmcgaG93IG11Y2ggb2YgdGhhdCBjb2RlIHlv dSBlbmQgdXAgcmV1c2luZy4KPj4+Pj4+Pj4+IFlvdQo+Pj4+Pj4+Pj4gcHJldHR5IG11Y2ggY3Jl YXRlIG5ldyBjb2RlIHBhdGhzIGluIGJvdGggcm91dGluZXMgYW5kIGNvbW1vbiBjb2RlCj4+Pj4+ Pj4+PiBlbmRzCj4+Pj4+Pj4+PiB1cCBiZWluZyBlc3NlbnRpYWxseSB0aGUgaHlwZXJjYWxsLgo+ Pj4+Pj4+PiBXZWxsLCBJIGhvcGVkIHRoYXQgaXQgd291bGQgYmUgZWFzaWVyIHRvIG1haW50YWlu IGlmIEkgbW9kaWZ5Cj4+Pj4+Pj4+IGV4aXN0aW5nCj4+Pj4+Pj4+IGNvZGUKPj4+Pj4+Pj4gdG8g c3VwcG9ydCBib3RoIHVzZS1jYXNlcywgYnV0IEkgYW0gYWxzbyBvayB0byBjcmVhdGUgbmV3Cj4+ Pj4+Pj4+IHJvdXRpbmVzIGlmCj4+Pj4+Pj4+IHRoaXMKPj4+Pj4+Pj4gc2VlbXMgdG8gYmUgcmVh c29uYWJsZSAtIHBsZWFzZSBsZXQgbWUga25vdwo+Pj4+Pj4+Pj4gIMKgwqDCoMKgIFNvIHRoZSBx dWVzdGlvbiBpcyAtLS0gd291bGQgaXQgbWFrZQo+Pj4+Pj4+Pj4gc2Vuc2UgdG8gZG8gYWxsIG9m IHRoaXMgc2VwYXJhdGVseSBmcm9tIHRoZSBiYWxsb29uIGRyaXZlcj8KPj4+Pj4+Pj4gVGhpcyBj YW4gYmUgZG9uZSwgYnV0IHdoaWNoIGRyaXZlciB3aWxsIGhvc3QgdGhpcyBjb2RlIHRoZW4/IElm IHdlCj4+Pj4+Pj4+IG1vdmUgZnJvbQo+Pj4+Pj4+PiB0aGUgYmFsbG9vbiBkcml2ZXIsIHRoZW4g dGhpcyBjb3VsZCBnbyB0byBlaXRoZXIgZ250ZGV2IG9yCj4+Pj4+Pj4+IGdyYW50LXRhYmxlLgo+ Pj4+Pj4+PiBXaGF0J3MgeW91ciBwcmVmZXJlbmNlPwo+Pj4+Pj4+IEEgc2VwYXJhdGUgbW9kdWxl Pwo+Pj4+Pj4+IElzIHRoZXJlIGFueSB1c2UgZm9yIHRoaXMgZmVhdHVyZSBvdXRzaWRlIG9mIHlv dXIgemVyby1jb3B5IERSTQo+Pj4+Pj4+IGRyaXZlcj8KPj4+Pj4+IEludGVsJ3MgaHlwZXIgZG1h LWJ1ZiAoRG9uZ3dvbi9NYXR0IENDJ2VkKSwgVjRML0dQVSBhdCBsZWFzdC4KPj4+Pj4+Cj4+Pj4+ PiBBdCB0aGUgdGltZSBJIHRyaWVkIHRvIHVwc3RyZWFtIHpjb3B5IGRyaXZlciBpdCB3YXMgZGlz Y3Vzc2VkIGFuZAo+Pj4+Pj4gZGVjaWRlZCB0aGF0Cj4+Pj4+PiBpdCB3b3VsZCBiZSBiZXR0ZXIg aWYgSSByZW1vdmUgYWxsIERSTSBzcGVjaWZpYyBjb2RlIGFuZCBtb3ZlIGl0IHRvCj4+Pj4+PiBY ZW4gZHJpdmVycy4KPj4+Pj4+IFRodXMsIHRoaXMgUkZDLgo+Pj4+Pj4KPj4+Pj4+IEJ1dCBpdCBj YW4gYWxzbyBiZSBpbXBsZW1lbnRlZCBhcyBhIGRlZGljYXRlZCBYZW4gZG1hLWJ1ZiBkcml2ZXIK Pj4+Pj4+IHdoaWNoCj4+Pj4+PiB3aWxsIGhhdmUgYWxsIHRoZQo+Pj4+Pj4gY29kZSBmcm9tIHRo aXMgUkZDICsgYSBiaXQgbW9yZSAoY2hhci9taXNjIGRldmljZSBoYW5kbGluZyBhdCBsZWFzdCku Cj4+Pj4+PiBUaGlzIHdpbGwgYWxzbyByZXF1aXJlIGEgZGVkaWNhdGVkIHVzZXItc3BhY2UgbGli cmFyeSwganVzdCBsaWtlCj4+Pj4+PiBsaWJ4ZW5nbnR0YWIuc28KPj4+Pj4+IGZvciBnbnRkZXYg KG5vdyBJIGhhdmUgYWxsIG5ldyBJT0NUTHMgY292ZXJlZCB0aGVyZSkuCj4+Pj4+Pgo+Pj4+Pj4g SWYgdGhlIGlkZWEgb2YgYSBkZWRpY2F0ZWQgWGVuIGRtYS1idWYgZHJpdmVyIHNlZW1zIHRvIGJl IG1vcmUKPj4+Pj4+IGF0dHJhY3RpdmUgd2UKPj4+Pj4+IGNhbiB3b3JrIHRvd2FyZCB0aGlzIHNv bHV0aW9uLiBCVFcsIEkgZG8gc3VwcG9ydCB0aGlzIGlkZWEsIGJ1dAo+Pj4+Pj4gd2FzIG5vdAo+ Pj4+Pj4gc3VyZSBpZiBYZW4gY29tbXVuaXR5IGFjY2VwdHMgeWV0IGFub3RoZXIgZHJpdmVyIHdo aWNoIGR1cGxpY2F0ZXMKPj4+Pj4+IHF1aXRlIHNvbWUgY29kZQo+Pj4+Pj4gb2YgdGhlIGV4aXN0 aW5nIGdudGRldi9iYWxsb29uL2dyYW50LXRhYmxlLiBBbmQgbm93IGFmdGVyIHRoaXMgUkZDIEkK Pj4+Pj4+IGhvcGUgdGhhdCBhbGwgY29ucwo+Pj4+Pj4gYW5kIHByb3Mgb2YgYm90aCBkZWRpY2F0 ZWQgZHJpdmVyIGFuZCBnbnRkZXYvYmFsbG9vbi9ncmFudC10YWJsZQo+Pj4+Pj4gZXh0ZW5zaW9u IGFyZQo+Pj4+Pj4gY2xlYXJseSBzZWVuIGFuZCB3ZSBjYW4gbWFrZSBhIGRlY2lzaW9uLgo+Pj4+ PiBJSVJDIHRoZSBvYmplY3Rpb24gZm9yIGEgc2VwYXJhdGUgbW9kdWxlIHdhcyBpbiB0aGUgY29u dGV4dCBvZiBnbnRkZXYKPj4+Pj4gd2FzIGRpc2N1c3Npb24sIGJlY2F1c2UgKGFtb25nIG90aGVy IHRoaW5ncykgcGVvcGxlIGRpZG4ndCB3YW50IHRvCj4+Pj4+IGhhdmUKPj4+Pj4geWV0IGFub3Ro ZXIgZmlsZSBpbiAvZGV2L3hlbi8KPj4+Pj4KPj4+Pj4gSGVyZSB3ZSBhcmUgdGFsa2luZyBhYm91 dCAoYSBuZXcpIGJhbGxvb24tbGlrZSBtb2R1bGUgd2hpY2ggZG9lc24ndAo+Pj4+PiBjcmVhdGUg YW55IG5ldyB1c2VyLXZpc2libGUgaW50ZXJmYWNlcy4gQW5kIGFzIGZvciBkdXBsaWNhdGluZyBj b2RlCj4+Pj4+IC0tLQo+Pj4+PiBhcyBJIHNhaWQsIEkgYW0gbm90IGNvbnZpbmNlZCB0aGVyZSBp cyBtdWNoIG9mIGR1cGxpY2F0aW9uLgo+Pj4+Pgo+Pj4+PiBJIG1pZ2h0IGV2ZW4gYXJndWUgdGhh dCB3ZSBzaG91bGQgYWRkIGEgbmV3IGNvbmZpZyBvcHRpb24gZm9yIHRoaXMKPj4+Pj4gbW9kdWxl Lgo+Pj4+IEkgYW0gbm90IHF1aXRlIHN1cmUgSSBhbSBmdWxseSBmb2xsb3dpbmcgeW91IGhlcmU6 IHNvLCB5b3Ugc3VnZ2VzdAo+Pj4+IHRoYXQgd2UgaGF2ZSBiYWxsb29uLmMgdW5jaGFuZ2VkLCBi dXQgaW5zdGVhZCBjcmVhdGUgYSBuZXcKPj4+PiBtb2R1bGUgKG5hbWVseSBhIGZpbGUgdW5kZXIg dGhlIHNhbWUgZm9sZGVyIGFzIGJhbGxvb24uYywgZS5nLgo+Pj4+IGRtYS1idWYtcmVzZXJ2YXRp b24uYykgYW5kIG1vdmUgdGhvc2Uge2luY3JlYXNlfGRlY3JlYXNlfV9yZXNlcnZhdGlvbgo+Pj4+ IHJvdXRpbmVzIChzcGVjaWZpYyB0byBkbWEtYnVmKSB0byB0aGF0IG5ldyBmaWxlPyBBbmQgbWFr ZSBpdCBzZWxlY3RhYmxlCj4+Pj4gdmlhIEtjb25maWc/IElmIHNvLCB0aGVuIGhvdyBhYm91dCB0 aGUgY2hhbmdlcyB0byBncmFudC10YWJsZSBhbmQKPj4+PiBnbnRkZXY/Cj4+Pj4gVGhvc2Ugd2ls bCBsb29rIGluY29uc2lzdGVudCB0aGVuLgo+Pj4gSW5jb25zaXN0ZW50IHdpdGggd2hhdD8gVGhl IGNoYW5nZXMgdG8gZ3JhbnQgY29kZSB3aWxsIGFsc28gYmUgdW5kZXIgdGhlCj4+PiBuZXcgY29u ZmlnIG9wdGlvbi4KPj4gQWgsIG9rLgo+Pgo+PiBPcHRpb24gMS4gV2Ugd2lsbCBoYXZlIEtjb25m aWcgb3B0aW9uIHdoaWNoIHdpbGwgY292ZXIgZG1hLWJ1Zgo+PiBjaGFuZ2VzIGluIGJhbGxvb24s Cj4gSSByZWFsbHkgZG9uJ3QgdGhpbmsgeW91ciBjaGFuZ2VzIHRvIGJhbGxvb24gZHJpdmVyIGJl bG9uZyB0aGVyZS4gVGhlCj4gaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggYmFsbG9vbmluZywKPgo+ PiBncmFudC10YWJsZSBhbmQgZ250ZGV2LiBBbmQgZm9yIHRoYXQgd2Ugd2lsbAo+PiBjcmVhdGUg ZGVkaWNhdGVkIHJvdXRpbmVzIGluIGJhbGxvb24gYW5kIGdyYW50LXRhYmxlIChjb3B5IG9mCj4+ IHRoZSBleGlzdGluZyBvbmVzLCBidXQgbW9kaWZpZWQgdG8gZml0IGRtYS1idWYgdXNlLWNhc2Up IGFuZAo+PiB0aG9zZSB1bmRlciBzb21ldGhpbmcgbGlrZSAiI2lmIENPTkZJR19YRU5fRE1BQlVG Ij8KPj4gVGhpcyBpcyByZWxhdGl2ZWx5IGVhc3kgdG8gZG8gZm9yIGJhbGxvb24vZ3JhbnQtdGFi bGUsIGJ1dCBub3QgdGhhdAo+PiBlYXN5IGZvciBnbnRkZXY6IHRoZXJlIHN0aWxsIHNlZW1zIHRv IGJlIGxvdHMgb2YgY29kZSB3aGljaCBjYW4gYmUKPj4gcmV1c2VkLAo+PiBzbyBJJ2xsIGhhdmUg dG8gcHV0IGxvdHMgb2YgIiNpZiBDT05GSUdfWEVOX0RNQUJVRiIgdGhlcmUuIEV2ZW4gbW9yZSwK Pj4gSSBjaGFuZ2UKPj4gaW50ZXJmYWNlcyBvZiB0aGUgZXhpc3RpbmcgZ250ZGV2IHJvdXRpbmVz IHdoaWNoIHdvbid0IGxvb2sgY3V0ZSB3aXRoCj4+ICNpZidzLCBJTU8uCj4+Cj4+IE9wdGlvbiAy LiBUcnkgbW92aW5nIGRtYS1idWYgcmVsYXRlZCBjaGFuZ2VzIGZyb20gYmFsbG9vbiBhbmQKPj4g Z3JhbnQtdGFibGUgdG8gYSBuZXcgZmlsZS4gVGhlbiBnbnRkZXYncyBLY29uZmlnIGNvbmNlcm5z IGZyb20gYWJvdmUKPj4gd2lsbCBzdGlsbAo+PiBiZSB0aGVyZSwgYnV0IGJhbGxvb24vZ3JhbnQt dGFibGUgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIGxvY2FsaXplZCBpbiBhCj4+IG5ldyBtb2R1bGUu Cj4gSSBkb24ndCBzZWUgYSBwcm9ibGVtIHdpdGggbGVhdmluZyB5b3VyIGNvZGUgKGZyb20gcGF0 Y2ggMikgd2hlcmUgaXQgaXMKPiBub3csIGluIGdyYW50IHRhYmxlLiBJdCdzIGEgc21hbGwgY2hh bmdlIGFuZCBpdCBzZWVtcyB0byBtZSBhIHNpbmdsZQo+ICNpZmRlZi8jZW5kaWYgd291bGQgY292 ZXIgaXQsIGV2ZW4gaWYgeW91IGZhY3RvciBvdXQgY29tbW9uIGNvZGUgdGhlcmUKPiBhcyB3ZSd2 ZSBkaXNjdXNzZWQuIFRvIG15IGV5ZSBpdCBsb2dpY2FsbHkgYmVsb25ncyB0aGVyZS4gSnVzdCBs aWtlIHlvdXIKPiBnbnRkZXYgY2hhbmdlcyBiZWxvbmcgdG8gZ250ZGV2IGZpbGUuIChQcmVzdW1h Ymx5LCBiZWNhdXNlIEkgaGF2ZW4ndAo+IGFjdHVhbGx5IGxvb2tlZCBhdCB0aGVtIDstKSkKPgo+ IFNvIG15IHN1Z2dlc3Rpb24gaXMKPiAtIHNlcGFyYXRlIG1vZHVsZSBmb3IgeW91ciBjaGFuZ2Vz IGluIGJhbGxvb24uYwpPaywgc28sIGJhc2ljYWxseSwgdGhlIGNoYW5nZXMgSSBuZWVkIGZyb20g dGhlIGJhbGxvb24gZHJpdmVyIGlzCntpbmNyZWFzZXxkZWNyZWFzZX1fcmVzZXJ2YXRpb24gYW5k IERNQWFibGUgbWVtb3J5IGFsbG9jYXRpb25zLCBzbwpJJ2xsIG1vdmUgdGhhdCBpbnRvIGEgc2Vw YXJhdGUgZmlsZTogd2hhdCBjb3VsZCBiZSB0aGUgbmFtZSBmb3Igc3VjaCBhIGZpbGU/Cgo+IC0g a2VlcCBncmFudC10YWJsZSBjaGFuZ2VzLCB3aXRoIGNvbmZpZyBvcHRpb24KQ2FuIHdlIGNvbnNp ZGVyIG1vdmluZyBleC1iYWxsb29uIGNvZGUgaW50byBncmFudC10YWJsZT8KCj4gLSBrZWVwIGdu dGRldiBjaGFuZ2VzLCB3aXRoIGNvbmZpZyBvcHRpb24uCkknbGwgdHJ5IHRvIHNlZSB3aGF0IGhh cHBlbnMgdG8gZ250ZGV2IHdpdGggS2NvbmZpZyBvcHRpb24gd3J0IGZ1bmN0aW9uIApwcm90b3R5 cGUKY2hhbmdlcy4gSSBhbHNvIGhhdmUgdG8gY2hlY2sgaWYgVUFQSSBvZiBnbnRkZXYgY2FuIGFs c28gc3VwcG9ydCAKQ09ORklHX1hYWCBpZmRlZnMKdy9vIHByb2JsZW1zIC0gZG8geW91IGJ5IGNo YW5jZSBrbm93IGlmICNpZiBDT05GSUdfIGlzIG9rIGZvciBVQVBJIGZpbGVzPwpPciBJIGNhbiBs ZWF2ZSBVQVBJIGFzIGlzIGFuZCBpZmRlZiBpbiAuaW9jdGwgY2FsbGJhY2suCj4gICAoYnV0IHdo ZW4geW91IGdldCB0byBwb3N0Cj4gYWN0dWFsIHBhdGNoZXMgSSB3b3VsZCBhcHByZWNpYXRlIGlm IHlvdSBjb3VsZCBzcGxpdCB0aGlzIGludG8gYSBzZXJpZXMKPiBvZiBsb2dpY2FsIGNoYW5nZXMg YW5kIG5vdCBwb3N0IGEgb25lIGdpYW50IHBhdGNoKS4KT2YgY291cnNlLCBhcyB0aGlzIGlzIGF0 IFJGQyBzdGFnZSB0aGUgaWRlYSB3YXMgdG8gcm9sbCBvdXQgYWxsIHRoZSAKY2hhbmdlcyBhdCBv bmNlLCBzbwpldmVyeW9uZSBoYXMgdGhlIGZ1bGwgcGljdHVyZSBhbmQgZG9uJ3QgbmVlZCB0byBj b2xsZWN0IGNoYW5nZXMgZnJvbSBzZXQgCm9mIHBhdGNoZXMuCj4KPiAtYm9yaXMKPgpUaGFuayB5 b3UsCk9sZWtzYW5kcgo+PiBJIGFtIHN0aWxsIG1pc3NpbmcgeW91ciBwb2ludCBoZXJlPwo+Pgo+ Pj4+IElmIHlvdSBzdWdnZXN0IGEgbmV3IGtlcm5lbCBkcml2ZXIgbW9kdWxlOgo+Pj4+IElNTywg dGhlcmUgaXMgbm90aGluZyBiYWQgaWYgd2UgY3JlYXRlIGEgZGVkaWNhdGVkIGtlcm5lbCBtb2R1 bGUKPj4+PiAoZHJpdmVyKSBmb3IgWGVuIGRtYS1idWYgaGFuZGxpbmcgc2VsZWN0YWJsZSB1bmRl ciBLY29uZmlnIG9wdGlvbi4KPj4+PiBZZXMsIHRoaXMgd2lsbCBjcmVhdGUgYSB5ZXQgYW5vdGhl ciBkZXZpY2UgdW5kZXIgL2Rldi94ZW4sCj4+Pj4gYnV0IG1vc3QgcGVvcGxlIHdpbGwgbmV2ZXIg c2VlIGl0IGlmIHdlIHNldCBLY29uZmlnIHRvIGRlZmF1bHQgdG8gIm4iLgo+Pj4+IEFuZCB0aGVu IHdlJ2xsIG5lZWQgdXNlci1zcGFjZSBzdXBwb3J0IGZvciB0aGF0LCBzbyBYZW4gdG9vbHMgd2ls bAo+Pj4+IGJlIGV4dGVuZGVkIHdpdGggbGlieGVuZG1hYnVmLnNvIG9yIHNvLgo+Pj4+IFRoaXMg d2F5IGFsbCBYZW4gZG1hLWJ1ZiBzdXBwb3J0IGNhbiBiZSBsb2NhbGl6ZWQgYXQgb25lIHBsYWNl IHdoaWNoCj4+Pj4gbWlnaHQgYmUgZWFzaWVyIHRvIG1haW50YWluLiBXaGF0IGlzIG1vcmUgaXQg Y291bGQgYmUgdG90YWxseQo+Pj4+IHRyYW5zcGFyZW50Cj4+Pj4gdG8gbW9zdCBvZiB1cyBhcyBL Y29uZmlnIG9wdGlvbiB3b24ndCBiZSBzZXQgYnkgZGVmYXVsdCAoYm90aCBrZXJuZWwKPj4+PiBh bmQgWGVuKS4KPj4+IFRoZSBkb3duc2lkZSBpcyB0aGF0IHdlIHdpbGwgZW5kIHVwIGhhdmluZyBh bm90aGVyIGRldmljZSBmb3IgZG9pbmcKPj4+IHRoaW5ncyB0aGF0IGFyZSBub3QgdGhhdCBkaWZm ZXJlbnQgZnJvbSB3aGF0IHdlIGFyZSBhbHJlYWR5IGRvaW5nIHdpdGgKPj4+IGV4aXN0aW5nIGdu dHRhYiBkZXZpY2UuIE9yIGFyZSB0aGV5Pwo+PiBBZ3JlZSwgYnV0IEtjb25maWcgb3B0aW9uLCBJ TU8sIHdvbid0IG1ha2UgaXQgbG9vayBuaWNlIGJlY2F1c2UKPj4gb2YgZ250ZGV2IGNoYW5nZXMg YW5kIGNvZGUgcmV1c2UuCj4+PiAtYm9yaXMKPj4gVGhhbmsgeW91LAo+PiBPbGVrc2FuZHIKPj4K Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gWGVu LWRldmVsIG1haWxpbmcgbGlzdAo+PiBYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPj4g aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=