From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH RFC] fixup! virtio: convert to use DMA api Date: Tue, 19 Apr 2016 08:44:33 -0600 Message-ID: <20160419084433.4c4fffc2@t450s.home> References: <1460979793-6621-1-git-send-email-mst@redhat.com> <1460980717.12793.43.camel@infradead.org> <20160418160731-mutt-send-email-mst@redhat.com> <1460988232.22654.7.camel@infradead.org> <20160418170534-mutt-send-email-mst@redhat.com> <1460992923.3765.8.camel@infradead.org> <20160418182320-mutt-send-email-mst@redhat.com> <1460994701.3765.23.camel@infradead.org> <20160418190203-mutt-send-email-mst@redhat.com> <1461004173.3765.73.camel@infradead.org> <20160419103815-mutt-send-email-mst@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160419103815-mutt-send-email-mst@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: "Michael S. Tsirkin" Cc: Wei Liu , Andy Lutomirski , qemu-block@nongnu.org, Christian Borntraeger , qemu-devel@nongnu.org, peterx@redhat.com, linux-kernel@vger.kernel.org, Amit Shah , Stefan Hajnoczi , kvm@vger.kernel.org, pbonzini@redhat.com, virtualization@lists.linux-foundation.org, David Woodhouse List-Id: virtualization@lists.linuxfoundation.org T24gVHVlLCAxOSBBcHIgMjAxNiAxMjoxMzoyOSArMDMwMAoiTWljaGFlbCBTLiBUc2lya2luIiA8 bXN0QHJlZGhhdC5jb20+IHdyb3RlOgoKPiBPbiBNb24sIEFwciAxOCwgMjAxNiBhdCAwMjoyOToz M1BNIC0wNDAwLCBEYXZpZCBXb29kaG91c2Ugd3JvdGU6Cj4gPiBPbiBNb24sIDIwMTYtMDQtMTgg YXQgMTk6MjcgKzAzMDAsIE1pY2hhZWwgUy4gVHNpcmtpbiB3cm90ZTogIAo+ID4gPiBJIGJhbGsg YXQgYWRkaW5nIG1vcmUgaGFja3MgdG8gYSBicm9rZW4gc3lzdGVtLiBNeSBnb2FscyBhcmUKPiA+ ID4gbWVyZWx5IHRvCj4gPiA+IC0gbWFrZSB0aGluZ3Mgd29yayBjb3JyZWN0bHkgd2l0aCBhbiBJ T01NVSBhbmQgbmV3IGd1ZXN0cywKPiA+ID4gwqAgc28gcGVvcGxlIGNhbiB1c2UgdXNlcnNwYWNl IGRyaXZlcnMgd2l0aCB2aXJ0aW8gZGV2aWNlcwo+ID4gPiAtIHByZXZlbnQgc2VjdXJpdHkgcmlz a3Mgd2hlbiBndWVzdCBrZXJuZWwgbWlzdGFrZW5seSB0aGlua3MKPiA+ID4gwqAgaXQncyBwcm90 ZWN0ZWQgYnkgYW4gSU9NTVUsIGJ1dCBpbiBmYWN0IGlzbid0Cj4gPiA+IC0gYXZvaWQgYnJlYWtp bmcgYW55IHdvcmtpbmcgY29uZmlndXJhdGlvbnMgIAo+ID4gCj4gPiBBRkFJQ1QgdGhlIFZJUlRJ T19GX0lPTU1VX1BBU1NUSFJPVUdIIHRoaW5nIHNlZW1zIG9ydGhvZ29uYWwgdG8gdGhpcy4KPiA+ IFRoYXQncyBqdXN0IGFuIG9wdGltaXNhdGlvbiwgZm9yIHRlbGxpbmcgYW4gT1MgInlvdSBkb24n dCByZWFsbHkgbmVlZAo+ID4gdG8gYm90aGVyIHdpdGggdGhlIElPTU1VLCBldmVuIHRob3VnaCB5 b3UgaXQgd29ya3MiLgo+ID4gCj4gPiBUaGVyZSBhcmUgdHdvIG1haW4gcmVhc29ucyB3aHkgYW4g b3BlcmF0aW5nIHN5c3RlbSBtaWdodCB3YW50IHRvIHVzZQo+ID4gdGhlIElPTU1VIHZpYSB0aGUg RE1BIEFQSSBmb3IgbmF0aXZlIGRyaXZlcnM6wqAKPiA+IMKgLSBUbyBwcm90ZWN0IGFnYWluc3Qg ZHJpdmVyIGJ1Z3MgdHJpZ2dlcmluZyByb2d1ZSBETUEuCj4gPiDCoC0gVG8gcHJvdGVjdCBhZ2Fp bnN0IGhhcmR3YXJlIChvciBmaXJtd2FyZSkgYnVncy4KPiA+IAo+ID4gV2l0aCB2aXJ0aW8sIHRo ZSBmaXJzdCByZWFzb24gc3RpbGwgZXhpc3RzLiBCdXQgdGhlIHNlY29uZCBpcyBtb290Cj4gPiBi ZWNhdXNlIHRoZSBkZXZpY2UgaXMgcGFydCBvZiB0aGUgaHlwZXJ2aXNvciBhbmQgaWYgdGhlIGh5 cGVydmlzb3IgaXMKPiA+IHVudHJ1c3R3b3J0aHkgdGhlbiB5b3UncmUgc2NyZXdlZCBhbnl3YXku Li4gYnV0IHRoZW4gYWdhaW4sIGluIFNvQwo+ID4gZGV2aWNlcyB5b3UgY291bGQgcmVwbGFjZSAn aHlwZXJ2aXNvcicgd2l0aCAnY2hpcCcgYW5kIHRoZSBzYW1lIGlzCj4gPiB0cnVlLCBpc24ndCBp dD8gSXMgdGhlcmUgKnJlYWxseSogYW55dGhpbmcgdmlydGlvLXNwZWNpZmljIGhlcmU/Cj4gPgo+ ID4gU3VyZSwgSSB3YW50IG15ICpleHRlcm5hbCogbmV0d29yayBkZXZpY2Ugb24gYSBQQ0llIGNh cmQgd2l0aCBzb2Z0d2FyZS0KPiA+IGxvYWRhYmxlIGZpcm13YXJlIHRvIGJlIGJlaGluZCBhbiBJ T01NVSBiZWNhdXNlIEkgZG9uJ3QgdHJ1c3QgaXQgYXMgZmFyCj4gPiBhcyBJIGNhbiB0aHJvdyBp dC4gQnV0IGZvciBvbi1Tb0MgZGV2aWNlcyBzdXJlbHkgdGhlIHNpdHVhdGlvbiBpcwo+ID4gKmp1 c3QqIHRoZSBzYW1lIGFzIGRldmljZXMgcHJvdmlkZWQgYnkgYSBoeXBlcnZpc29yPyAgCj4gCj4g RGVwZW5kcyBvbiBob3cgU29DIGlzIGRlc2lnbmVkIEkgZ3Vlc3MuICBBdCB0aGUgbW9tZW50IHNw ZWNpZmljYWxseSBRRU1VCj4gcnVucyBldmVyeXRoaW5nIGluIGEgc2luZ2xlIG1lbW9yeSBzcGFj ZSBzbyBhbiBJT01NVSB0YWJsZSBsb29rdXAgZG9lcwo+IG5vdCBvZmZlciBhbnkgZXh0cmEgcHJv dGVjdGlvbi4gVGhhdCdzIG5vdCBhIG11c3QsIG9uZSBjb3VsZCBjb21lCj4gdXAgd2l0aCBtb2R1 bGFyIGh5cGVydmlzb3IgZGVzaWducyAtIGl0J3MganVzdCB3aGF0IHdlIGhhdmUgQVRNLgo+IAo+ IAo+ID4gQW5kIHNvbWUgcGVvcGxlIHdhbnQgdGhhdCBleHRlcm5hbCBuZXR3b3JrIGRldmljZSB0 byB1c2UgcGFzc3Rocm91Z2gKPiA+IGFueXdheSwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICAK PiAKPiBUaGF0J3MgYSBwb2xpY3kgZGVjaXNpb24gdGhvdWdoLgo+IAo+ID4gT24gdGhlIHdob2xl LCB0aGVyZSBhcmUgKnBsZW50eSogb2YgcmVhc29ucyB3aHkgd2UgbWlnaHQgd2FudCB0byBoYXZl IGEKPiA+IHBhc3N0aHJvdWdoIG1hcHBpbmcgb24gYSBwZXItZGV2aWNlIGJhc2lzLCAgCj4gCj4g VGhhdCdzIHRydWUuIEFuZCBkcml2ZXIgc2VjdXJpdHkgYWxzbyBtaWdodCBkaWZmZXIsIGZvciBl eGFtcGxlIG1heWJlIEkKPiB0cnVzdCBhIGRpc3Ryby1zdXBwbGllZCBkcml2ZXIgbW9yZSB0aGFu IGFuIG91dCBvZiB0cmVlIG9uZS4gIE9yIG1heWJlIEkKPiB0cnVzdCBhIGRpc3Ryby1zdXBwbGll ZCB1c2Vyc3BhY2UgZHJpdmVyIG1vcmUgdGhhbiBhIGNsb3NlZC1zb3VyY2Ugb25lLgo+IEFuZCBt YXliZSBJIHRydXN0IGRldmljZXMgZnJvbSBzYW1lIHZlbmRvciBhcyBteSBjaGlwIG1vcmUgdGhh biBhIDNyZAo+IHBhcnR5IG9uZS4gIFNvIG9uZSBjYW4gZ2VuZXJhbGl6ZSB0aGlzIGV2ZW4gZnVy dGhlciwgdGhpbmsgYWJvdXQgZGV2aWNlCj4gYW5kIGRyaXZlciBzZWN1cml0eS90cnVzdCBsZXZl bCBhcyBhbiBpbnRlZ2VyIGFuZCBwbGF0Zm9ybSBwcm90ZWN0aW9uIGFzIGFuCj4gaW50ZWdlci4K PiAKPiBJZiBwbGF0Zm9ybSBJT01NVSBvZmZlcnMgeW91IGV4dHJhIHByb3RlY3Rpb24gb3ZlciB0 cnVzdGluZyB0aGUgZGV2aWNlCj4gKHRydXN0IDwgcHJvdGVjdGlvbikgaXQgaW1wcm92ZXMgeW91 IHNlY3VyaXR5IHRvIHVzZSBwbGF0Zm9ybSB0byBsaW1pdAo+IHRoZSBkZXZpY2UuIElmIHRydXN0 ID49IHByb3RlY3Rpb24gaXQganVzdCBhZGRzIG92ZXJoZWFkIHdpdGhvdXQKPiBpbmNyZWFzaW5n IHRoZSBzZWN1cml0eS4KPiAKPiA+IGFuZCBJIHJlYWxseSBzdHJ1Z2dsZSB0bwo+ID4gZmluZCBq dXN0aWZpY2F0aW9uIGZvciBoYXZpbmcgdGhpcyAnaGludCcgaW4gYSB2aXJ0aW8tc3BlY2lmaWMg d2F5LiAgCj4gCj4gSXQncyBhIHdheS4gTm8gc3lzdGVtIHNlZW1zIHRvIGV4cG9zZSB0aGlzIGlu Zm9ybWF0aW9uIGluIGEgbW9yZSBnZW5lcmljCj4gd2F5IGF0IHRoZSBtb21lbnQsIGFuZCBpdCdz IHBvcnRhYmxlLiBXb3VsZCB5b3UgbGlrZSB0byBwdXNoIGZvciBzb21lCj4ga2luZCBvZiBzdGFu ZGFydGl6YXRpb24gb2Ygc3VjaCBhIGhpbnQ/IEkgd291bGQgYmUgaW50ZXJlc3RlZAo+IHRvIGhl YXIgYWJvdXQgdGhhdC4KPiAKPiAKPiA+IEFuZCBpdCdzIGNvbXBsaWNhdGluZyB0aGUgZGlzY3Vz c2lvbiBvZiB0aGUgKmFjdHVhbCogZml4IHdlJ3JlIGxvb2tpbmcKPiA+IGF0LiAgCj4gCj4gSSBn dWVzcyB5b3UgYXJlIHJpZ2h0IGluIHRoYXQgd2Ugc2hvdWxkIHNwbGl0IHRoaXMgcGFydCBvdXQu Cj4gV2hhdCBJIHdhbnRlZCBpcyByZWFsbHkgdGhlIGNvbWJpbmF0aW9uCj4gUEFTU1RIUk9VR0gg JiYgIVBMQVRGT1JNIHNvIHRoYXQgd2UgY2FuIHNheSAib2sgd2UgZG9uJ3QKPiBuZWVkIHRvIGd1 ZXNzLCB0aGlzIGRldmljZSBhY3R1YWxseSBieXBhc3NlcyB0aGUgSU9NTVUiLgo+IAo+IEFuZCBJ IHRob3VnaHQgaXQncyBhIG5pY2UgaWRlYSB0byB1c2UgUEFTU1RIUk9VR0ggJiYgUExBVEZPUk0K PiBhcyBhIGhpbnQgc2luY2UgaXQgc2VlbWVkIHRvIGJlIHVudXNlZC4KPiBCdXQgbWF5YmUgdGhl IGJlc3QgdGhpbmcgdG8gZG8gZm9yIG5vdyBpcyB0byBzYXkKPiAtIGhvc3RzIHNob3VsZCBub3Qg c2V0IFBBU1NUSFJPVUdIICYmIFBMQVRGT1JNCj4gLSBndWVzdHMgc2hvdWxkIGlnbm9yZSBQQVNT VEhST1VHSCBpZiBQTEFURk9STSBpcyBzZXQKPiAKPiBhbmQgdGhlbiB3ZSBjYW4gY29tZSBiYWNr IHRvIHRoaXMgb3B0aW1pemF0aW9uIGlkZWEgbGF0ZXIKPiBpZiBpdCdzIGFwcHJvcHJpYXRlLgo+ IAo+IFNvIHllcyBJIHRoaW5rIHdlIG5lZWQgdGhlIHR3byBiaXRzIGJ1dCBubyB3ZSBkb24ndCBu ZWVkIHRvCj4gbWl4IHRoZSBoaW50IGRpc2N1c3Npb24gaW4gaGVyZS4KPiAKPiA+ID4gTG9va2lu ZyBhdCBndWVzdCBjb2RlLCBpdCBsb29rcyBsaWtlIHZpcnRpbyB3YXMgYWx3YXlzCj4gPiA+IGJ5 cGFzc2luZyB0aGUgSU9NTVUgZXZlbiBpZiBjb25maWd1cmVkLCBidXQgbm8gb3RoZXIKPiA+ID4g Z3Vlc3QgZHJpdmVyIGRpZC4KPiA+ID4gCj4gPiA+IFRoaXMgbWFrZXMgbWUgdGhpbmsgdGhlIHBy b2JsZW0gd2hlcmUgZ3Vlc3QgZHJpdmVycwo+ID4gPiBpZ25vcmUgdGhlIElPTU1VIGlzIHZpcnRp byBzcGVjaWZpYwo+ID4gPiBhbmQgc28gYSB2aXJ0aW8gc3BlY2lmaWMgc29sdXRpb24gc2VlbXMg Y2xlYW5lci4KPiA+ID4gCj4gPiA+IFRoZSBwcm9ibGVtIGZvciBhc3NpZ25lZCBkZXZpY2VzIGlz IElNSE8gZGlmZmVyZW50OiB0aGV5IGJ5cGFzcwo+ID4gPiB0aGUgZ3Vlc3QgSU9NTVUgdG9vIGJ1 dCBubyBndWVzdCBkcml2ZXIga25vd3MgYWJvdXQgdGhpcywKPiA+ID4gc28gZ3Vlc3RzIGRvIG5v dCB3b3JrLiBTZWVtcyBjbGVhbmVyIHRvIGZpeCBRRU1VIHRvIG1ha2UKPiA+ID4gZXhpc3Rpbmcg Z3Vlc3RzIHdvcmsuICAKPiA+IAo+ID4gSSBjZXJ0YWlubHkgYWdyZWUgdGhhdCBpdCdzIGJldHRl ciB0byBmaXggUUVNVS4gV2hldGhlciBkZXZpY2VzIGFyZQo+ID4gYmVoaW5kIGFuIElPTU1VIG9y IG5vdCwgdGhlIERNQVIgdGFibGVzIHdlIGV4cG9zZSB0byBhIGd1ZXN0IHNob3VsZAo+ID4gdGVs bCB0aGUgdHJ1dGguCj4gPiAKPiA+IFBhcnQgb2YgdGhlIGlzc3VlIGhlcmUgaXMgdmlydGlvLXNw ZWNpZmljOyBwYXJ0IGlzbid0Lgo+ID4gCj4gPiBCYXNpY2FsbHksIHdlIGhhdmUgYSBjb25qdW5j dGlvbiBvZiB0d28gc2VwYXJhdGUgYnVncyB3aGljaCBoYXBwZW5lZCB0bwo+ID4gd29yayAoZm9y IHZpcnRpbykg4oCUIHRoZSBJT01NVSBzdXBwb3J0IGluIFFFTVUgd2Fzbid0IHdvcmtpbmcgZm9y IHZpcnRpbwo+ID4gKGFuZCBhc3NpZ25lZCkgZGV2aWNlcyBldmVuIHRob3VnaCBpdCB0aGVvcmV0 aWNhbGx5ICpzaG91bGQqIGhhdmUgYmVlbiwKPiA+IGFuZCB0aGUgdmlydGlvIGRyaXZlcnMgd2Vy ZW4ndCB1c2luZyB0aGUgRE1BIEFQSSBhcyB0aGV5IHRoZW9yZXRpY2FsbHkKPiA+IHNob3VsZCBo YXZlIGJlZW4uCj4gPiAKPiA+IFNvIHRoZXJlIHdlcmUgY29ybmVyIGNhc2VzIGxpa2UgYXNzaWdu ZWQgUENJIGRldmljZXMsIGFuZCByZWFsIGhhcmR3YXJlCj4gPiBpbXBsZW1lbnRhdGlvbnMgb2Yg dmlydGlvIHN0dWZmIChhbmQgcGVyaGFwcyB2aXJ0aW8gZGV2aWNlcyBiZWluZwo+ID4gYXNzaWdu ZWQgdG8gbmVzdGVkIGd1ZXN0cykgd2hpY2ggZGlkbid0IHdvcmsuIEJ1dCBmb3IgdGhlICpjb21t b24qIHVzZQo+ID4gY2FzZSwgb25lIGJ1ZyBjYW5jZWxsZWQgb3V0IHRoZSBvdGhlci4KPiA+IAo+ ID4gTm93IHdlIHdhbnQgdG8gZml4IGJvdGggYnVncywgYW5kIG9mIGNvdXJzZSB0aGF0IGludm9s dmVzIGNhcmVmdWxseQo+ID4gY29vcmRpbmF0aW5nIGJvdGggZml4ZXMuCj4gPiAKPiA+IEkgKmxp a2UqIHlvdXIgaWRlYSBvZiBhIGZsYWcgZnJvbSB0aGUgaHlwZXJ2aXNvciB3aGljaCBlc3NlbnRp YWxseSBzYXlzCj4gPiAidHJ1c3QgbWUsIEknbSB0ZWxsaW5nIHRoZSB0cnV0aCBub3ciLgo+ID4g Cj4gPiBCdXQgZG9uJ3QgdGhpbmsgdGhhdCB3YW50cyB0byBiZSB2aXJ0aW8tc3BlY2lmaWMsIGJl Y2F1c2Ugd2UgYWN0dWFsbHkKPiA+IHdhbnQgaXQgdG8gY292ZXIgKmFsbCogdGhlIGNvcm5lciBj YXNlcywgbm90IGp1c3QgdGhlIGNvbW1vbiBjYXNlIHdoaWNoCj4gPiAqaGFwcGVuZWQqIHRvIHdv cmsgYmVmb3JlIGR1ZSB0byB0aGUgYWxpZ25tZW50IG9mIHRoZSB0d28gcHJldmlvdXMKPiA+IGJ1 Z3MuICAKPiAKPiBJIGd1ZXNzIHdlIGRpZmZlciBoZXJlLiBJIGNhcmUgYWJvdXQgZml4aW5nIGJ1 Z3MgYW5kIG5vdCBicmVha2luZwo+IHdvcmtpbmcgc2V0dXBzIGJ1dCBJIHNlZSBsaXR0bGUgdmFs dWUgaW4gd29ya2luZyBhcm91bmQKPiBleGlzdGluZyBidWdzIGlmIHRoZXkgY2FuIGJlIGZpeGVk IGF0IHRoZWlyIHNvdXJjZS4KPiAKPiBCdWlsZGluZyBhIGdlbmVyaWMgbWVjaGFuaXNtIHRvIHJl cG9ydCB3aGljaCBkZXZpY2VzIGJ5cGFzcyB0aGUgSU9NTVUKPiBpc24ndCB0cml2aWFsIGJlY2F1 c2UgdGhlcmUncyBubyBzaW1wbGUgZ2VuZXJpYyB3YXkgdG8gYWRkcmVzcwo+IGFuIGFyYml0cmFy eSBkZXZpY2UgZnJvbSBoeXBlcnZpc29yLiBGb3IgZXhhbXBsZSwgRE1BUiB0YWJsZXMKPiBjb21t b25seSB1c2UgYnVzIG51bWJlcnMgZm9yIHRoYXQgYnV0IHRoZXNlIGFyZSBndWVzdCAoYmlvcykg YXNzaWduZWQuCj4gU28gaWYgd2UgdXNlZCBidXMgbnVtYmVycyB3ZSdkIGhhdmUgdG8gYXNrIGJp b3MgdG8gYnVpbGQgYSBjdXN0b20KPiBBQ1BJIHRhYmxlIGFuZCBzdGljayBidXMgbnVtYmVycyB0 aGVyZS4KClRoaXMgaXMgaW5jb3JyZWN0LCB0aGUgRE1BUiB0YWJsZSBzcGVjaWZpY2FsbHkgdXNl cyBkZXZpY2VzIHBhdGhzIGluCm9yZGVyIHRvIGF2b2lkIHRoZSBpc3N1ZSB3aXRoIGd1ZXN0IGFz c2lnbmVkIGJ1cyBudW1iZXJzLiAgVGhlIG9ubHkKYnVzIG51bWJlciB1c2VkIGlzIHRoZSBzdGFy dGluZyBidXMgbnVtYmVyLCB3aGljaCBpcyBnZW5lcmFsbHkKcHJvdmlkZWQgYnkgdGhlIHBsYXRm b3JtIGFueXdheS4gIEV4Y2x1ZGluZyBkZXZpY2VzIGlzbid0IG5lY2Vzc2FyaWx5CmVhc3kgd2l0 aCBETUFSIHRob3VnaCwgd2UgZG9uJ3QgZ2V0IHRvIGJlIGxhenkgYW5kIHVzZSB0aGUKSU5DTFVE RV9QQ0lfQUxMIGZsYWcuICBIb3RwbHVnIGlzIGFsc28gYW4gaXNzdWUsIHdlIGVpdGhlciBuZWVk IHRvCmhvdC1hZGQgZGV2aWNlcyBpbnRvIHNsb3RzIHdoZXJlIHRoZXJlJ3MgYWxyZWFkeSB0aGUg Y29ycmVjdCBETUFSCmNvdmVyYWdlIChvciBsYWNrIG9mIGNvdmVyYWdlKSB0byByZXByZXNlbnQg dGhlIGluY2x1c2lvbiBvciBleGNsdXNpb24Kb3IgZW5hYmxlIGR5bmFtaWMgdGFibGUgc3VwcG9y dC4gIEFuZCByZWFsbHkgaXQgc2VlbXMgbGlrZSBkeW5hbWljCnRhYmxlcyBhcmUgdGhlIG9ubHkg cG9zc2libGUgd2F5IERNQVIgY291bGQgc3VwcG9ydCByZXBsYWNpbmcgYQpkZXZpY2UgdGhhdCBv YmV5cyB0aGUgSU9NTVUgd2l0aCBvbmUgdGhhdCBkb2VzIG5vdCBhdCB0aGUgc2FtZSBhZGRyZXNz LApvciB2aWNhIHZlcnNhLgoKRm9yIGFueSBzb3J0IG9mIHNhbmUgaW1wbGVtZW50YXRpb24sIGl0 IHByb2JhYmx5IGNvbWVzIGRvd24gdG8gZnVsbHkKZW51bWVyYXRpbmcgcm9vdCBidXMgZGV2aWNl cyBpbiB0aGUgRE1BUiBhbmQgY3JlYXRpbmcgUENJIHN1Yi1oaWVyYXJjaHkKZW50cmllcyBmb3Ig Y2VydGFpbiBzdWJvcmRpbmF0ZSBidXNlcywgbGVhdmluZyBvdGhlcnMgdW5kZWZpbmVkLgpEZXZp Y2VzIG1ha2luZyB1c2Ugb2YgdGhlIElPTU1VIGNvdWxkIG9ubHkgYmUgYXR0YWNoZWQgYmVoaW5k IHRob3NlCnN1Yi1oaWVyYXJjaGllcyBhbmQgZGV2aWNlcyBub3QgbWFraW5nIHVzZSBvZiB0aGUg SU9NTVUgd291bGQgYmUKZG93bnN0cmVhbSBvZiBicmlkZ2VzIG5vdCBjb3ZlcmVkLiAgVGhlIG1h bmFnZW1lbnQgc3RhY2sgd291bGQgbmVlZCB0bwprbm93IHdoZXJlIHRvIHBsYWNlIGRldmljZXMu CiAKPiA+IEFuIHVwZGF0ZWQgZ3Vlc3QgT1MgY2FuIGxvb2sgZm9yIHRoaXMgZmxhZyAoaW4gaXRz IGdlbmVyaWMgSU9NTVUgY29kZSkKPiA+IGFuZCBjYW4gYXBwbHkgYSBoZXVyaXN0aWMgb2YgaXRz IG93biB0byB3b3JrIG91dCB3aGljaCBkZXZpY2VzICphcmVuJ3QqCj4gPiBiZWhpbmQgdGhlIElP TU1VLCBpZiB0aGUgZmxhZyBpc24ndCBwcmVzZW50LiBBbmQgaXQgY2FuIGdldCB0aGF0IHJpZ2h0 Cj4gPiBldmVuIGZvciBhc3NpZ25lZCBkZXZpY2VzLCBzbyB0aGF0IG5ldyBrZXJuZWxzIGNhbiBy dW4gaGFwcGlseSBldmVuIG9uCj4gPiB0b2RheSdzIFFFTVUgaW5zdGFuY2VzLiAgCj4gCj4gV2l0 aCBpb21tdSBlbmFibGVkPyBQb2ludCBpcywgSSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCB0aGF0 Lgo+IEF0IHRoaXMgcG9pbnQgb25seSBhIHZlcnkgc21hbGwgbnVtYmVyIG9mIGRldmljZXMgd29y ayB3aXRoIHRoaXMKPiBJT01NVSBhdCBhbGwuIEkgZXhwZWN0IHRoYXQgd2UnbGwgZml4IGFzc2ln bmVkIGRldmljZXMgdmVyeSBzb29uLgo+IAo+ID4gQW5kIHRoZSB2aXJ0aW8gZHJpdmVyIGluIG5l dyBrZXJuZWxzIHNob3VsZAo+ID4ganVzdCB1c2UgdGhlIERNQSBBUEkgYW5kIGV4cGVjdCBpdCB0 byB3b3JrLiBKdXN0IGFzIHRoZSB2YXJpb3VzIGRyaXZlcnMKPiA+IGZvciBhc3NpZ25lZCBQQ0kg ZGV2aWNlcyBkby4gIAo+IAo+IEFic29sdXRlbHkgYnV0IHRoYXQncyBhIHNlcGFyYXRlIGRpc2N1 c3Npb24uCj4gCj4gPiBUaGUgb3RoZXIgaW50ZXJlc3RpbmcgY2FzZSBmb3IgY29tcGF0aWJpbGl0 eSBpcyBvbGQga2VybmVscyBydW5uaW5nIGluCj4gPiBhIG5ldyBRRU1VLiBBbmQgZm9yIHRoYXQg Y2FzZSwgdGhpbmdzIGFyZSBsaWtlbHkgdG8gYnJlYWsgaWYgeW91Cj4gPiBzdWRkZW5seSBzdGFy dCBwdXR0aW5nIHRoZSB2aXJ0aW8gZGV2aWNlcyBiZWhpbmQgYW4gSU9NTVUuIFRoZXJlJ3MKPiA+ IG5vdGhpbmcgeW91IGNhbiBkbyBvbiBBUk0gYW5kIFBvd2VyIHRvIHN0b3AgdGhhdCBicmVha2Fn ZSwgc2luY2UgdGhleQo+ID4gZG9uJ3QgKmhhdmUqIGEgd2F5IHRvIHRlbGwgbGVnYWN5IGd1ZXN0 cyB0aGF0IGNlcnRhaW4gZGV2aWNlcyBhcmVuJ3QKPiA+IHRyYW5zbGF0ZWQuIFNvIEkgc3VzcGVj dCB5b3UgcHJvYmFibHkgY2FuJ3QgZW5hYmxlIHZpcnRpby1iZWhpbmQtSU9NTVUKPiA+IGluIFFF TVUgKmV2ZXIqIGZvciB0aG9zZSBwbGF0Zm9ybXMgYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgo+ ID4gCj4gPiBGb3IgeDg2LCB5b3UgKmNhbiogZW5hYmxlIHZpcnRpby1iZWhpbmQtSU9NTVUgaWYg eW91ciBETUFSIHRhYmxlcyB0ZWxsCj4gPiB0aGUgdHJ1dGgsIGFuZCBldmVuIGxlZ2FjeSBrZXJu ZWxzIG91Z2h0IHRvIGNvcGUgd2l0aCB0aGF0LiAgCj4gCj4gSSBkb24ndCBzZWUgaG93IGluIHRo YXQgbGVnYWN5IGtlcm5lbHMgYnlwYXNzZWQgdGhlIERNQSBBUEkuCgpJdCdzIGEgbWF0dGVyIG9m IGV4Y2x1ZGluZyB0aGUgZGV2aWNlIGZyb20gYmVpbmcgZXhwbGljaXRseSBjb3ZlcmVkIGJ5CnRo ZSBETUFSIEFJVUkuICBUaGlzIGlzIHRoZW9yZXRpY2FsbHkgcG9zc2libGUsIGJ1dCBJIHdvbmRl ciBpZiBpdAphY3R1YWxseSB3b3JrcyBmb3IgYWxsIGtlcm5lbHMuCgo+IFRvIG1lIGl0IGxvb2tz IGxpa2Ugd2UgZWl0aGVyIHVzZSBwaHlzaWNhbCBhZGRyZXNzZXMgdGhhdCB0aGV5IGdpdmUgdXMK PiBvciB0aGV5IGRvbid0IHdvcmsgYXQgYWxsIChhdCBsZWFzdCB3aXRob3V0IGlvbW11PXB0KSwK PiBzaW5jZSB0aGUgVlQtRCBzcGVjIHNheXM6Cj4gCURNQSByZXF1ZXN0cyBwcm9jZXNzZWQgdGhy b3VnaCByb290LWVudHJpZXMgd2l0aCBwcmVzZW50IGZpZWxkCj4gCUNsZWFyIHJlc3VsdCBpbiB0 cmFuc2xhdGlvbi1mYXVsdC4KPiAKPiBTbyBJIHN1c3BlY3QgdGhlIElPTU1VX1BMQVRGT1JNIGZs YWcgd291bGQgaGF2ZSB0byBzdGF5IG9mZgo+IGJ5IGRlZmF1bHQgZm9yIGEgd2hpbGUuCj4gCj4g Cj4gPiBGU1ZPICdvdWdodCB0bycgd2hlcmUgSSBzdXNwZWN0IHNvbWUgb2YgdGhlbSB3aWxsIGFj dHVhbGx5IGNyYXNoIHdpdGggYQo+ID4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGlmIHRoZXJl J3Mgbm8gImNhdGNoLWFsbCIgRE1BUiB1bml0IGluIHRoZQo+ID4gdGFibGVzLCB3aGljaCBwdXRz IGl0IGJhY2sgaW50byB0aGUgc2FtZSBjYW1wIGFzIEFSTSBhbmQgUG93ZXIuICAKPiAKPiBSaWdo dC4gIFRoYXQgd291bGQgYWxzbyBiZSBhbiBpc3N1ZS4KPiAKPiA+ICAgCj4gPiA+IFRydWUgYnV0 IEkgdGhpbmsgd2Ugc2hvdWxkIGZpeCBRRU1VIHRvIHNoYWRvdyBJT01NVQo+ID4gPiBwYWdlIHRh YmxlcyBmb3IgYXNzaWduZWQgZGV2aWNlcy4gVGhpcyBzZWVtcyByYXRoZXIKPiA+ID4gcG9zc2li bGUgd2l0aCBWVC1ELCBhbmQgdGhlcmUgYXJlIHBhdGNoZXMgYWxyZWFkeSBvbiBsaXN0Lgo+ID4g PiAKPiA+ID4gSXQgbG9va3MgbGlrZSB0aGlzIHdpbGwgZml4IGFsbCBsZWdhY3kgZ3Vlc3RzIHdo aWNoIGlzCj4gPiA+IG11Y2ggbmljZXIgdGhhbiB3aGF0IHlvdSBzdWdnZXN0IHdoaWNoIHdpbGwg b25seSBoZWxwIG5ldyBndWVzdHMuICAKPiA+IAo+ID4gWWVzLCB3ZSBzaG91bGQgZG8gdGhhdC4g QW5kIGluIHRoZSBzaG9ydCB0ZXJtIHdlIHNob3VsZCBhdCAqbGVhc3QqIGZpeAo+ID4gdGhlIERN QVIgdGFibGVzIHRvIHRlbGwgdGhlIHRydXRoLiAgCj4gCj4gUmlnaHQuIEhvd2V2ZXIsIHRoZSB3 YXkgdGltaW5nIGhhcHBlbnMgdG8gd29yaywgd2UgYXJlIG91dCBvZiB0aW1lIHRvCj4gZml4IGl0 IGluIDIuNiBhbmQgd2UgYXJlIGhpZ2hseSBsaWtlbHkgdG8gaGF2ZSB0aGUgcHJvcGVyIFZGSU8g Zml4IGluCj4gMi43LiAgU28gSSdtIG5vdCBzdXJlIHRoZXJlJ3Mgc3BhY2UgZm9yIGEgc2hvcnQg dGVybSBmaXguCgpOb3RlIHRoYXQgdmZpbyBhbHJlYWR5IHdvcmtzIHdpdGggSU9NTVVzIG9uIHBv d2VyLCB0aGUgaXNzdWUgSSBiZWxpZXZlCndlJ3JlIHRhbGtpbmcgYWJvdXQgZm9yIGFzc2lnbmVk IGRldmljZXMgYnlwYXNzaW5nIHRoZSBndWVzdCBJT01NVSBpcwpsaW1pdGVkIHRvIHRoZSBRRU1V IFZULWQgaW1wbGVtZW50YXRpb24gZmFpbGluZyB0byBkbyB0aGUgcHJvcGVyCm5vdGlmaWVzLiAg TGVnYWN5IEtWTSBkZXZpY2UgYXNzaWdubWVudCBvZiBjb3Vyc2UgaGFzIG5vIGlkZWEgYWJvdXQg dGhlCklPTU1VIGJlY2F1c2UgaXQgcGlnZ3kgYmFja3Mgb24gS1ZNIG1lbW9yeSBzbG90IG1hcHBp bmcgaW5zdGVhZCBvZgpvcGVyYXRpbmcgd2l0aGluIHRoZSBRRU1VIE1lbW9yeSBBUEkgbGlrZSB2 ZmlvIGRvZXMuCgpUaGUgaXNzdWVzIEkgYmVsaWV2ZSB3ZSdyZSBnb2luZyB0byBoaXQgd2l0aCB2 ZmlvIGFzc2lnbmVkIGRldmljZXMgYW5kClFFTVUgVlQtZCBhcmUgdGhhdCAxKSB0aGUgdmZpbyBJ T01NVSBpbnRlcmZhY2UgaXMgbm90IGRlc2lnbmVkIGZvciB0aGUKZnJlcXVlbmN5IG9mIG1hcHBp bmcgdGhhdCBhIERNQSBBUEkgbWFuYWdlZCBndWVzdCBkZXZpY2Ugd2lsbCBnZW5lcmF0ZSwKMikg d2UgaGF2ZSBhY2NvdW50aW5nIGlzc3VlcyBmb3IgbG9ja2VkIHBhZ2VzIHNpbmNlIGVhY2ggZGV2 aWNlIHdpbGwKcnVuIGluIGEgc2VwYXJhdGUgSU9NTVUgZG9tYWluLCBhY2NvdW50ZWQgc2VwYXJh dGVseSwgYW5kIDMpIHdlIGRvbid0CmhhdmUgYSB3YXkgdG8gZXhwb3NlIGhvc3QgZ3JvdXBpbmcg dG8gdGhlIFZNIHNvIHRyeWluZyB0byBhc3NpZ24KbXVsdGlwbGUgZGV2aWNlcyBmcm9tIHRoZSBz YW1lIGdyb3VwIGlzIGxpa2VseSB0byBmYWlsLiAgV2UnZCBhbG1vc3QKbmVlZCB0byBwdXQgYWxs IG9mIHRoZSBkZXZpY2VzIHdpdGhpbiBhIGdyb3VwIGJlaGluZCBhIGNvbnZlbnRpb25hbCBQQ0kK YnJpZGdlIGluIHRoZSBWTSB0byBnZXQgdGhlbSBpbnRvIHRoZSBzYW1lIGFkZHJlc3Mgc3BhY2Us IGJ1dCBJIHN1c3BlY3QKUUVNVSBWVC1kIGRvZXNuJ3QgdGFrZSB0aGF0IGFsaWFzaW5nIGludG8g YWNjb3VudC4KCj4gPiA+ID4gCj4gPiA+ID4gRnVydGhlcm1vcmUsIHNvbWUgcGxhdGZvcm1zIGRv bid0ICpoYXZlKiBhIHN0YW5kYXJkIHdheSBmb3IgcWVtdSB0bwo+ID4gPiA+ICd0ZWxsIHRoZSB0 cnV0aCcgdG8gdGhlIGd1ZXN0cywgYW5kIHRoYXQncyB3aGVyZSB0aGUgcmVhbCBmdW4gY29tZXMg aW4uCj4gPiA+ID4gQnV0IHN0aWxsLCBJJ2QgbGlrZSB0byBzZWUgYSBnZW5lcmljIHNvbHV0aW9u IGZvciB0aGF0IGxhY2sgaW5zdGVhZCBvZgo+ID4gPiA+IGEgdmlydGlvLXNwZWNpZmljIGhhY2su ICAKPiA+ID4gQnV0IHRoZSBpc3N1ZSBpcyBub3QganVzdCB0aGVzZSBob2xlcy7CoMKgRS5nLiB3 aXRoIFZULUQgaXQgaXMgb25seSBlYXN5Cj4gPiA+IHRvIGVtdWxhdGUgYmVjYXVzZSB0aGVyZSdz IGEgImNhY2hpbmcgbW9kZSIgaG9vay4gSXQgaXMgZnVuZGFtZW50YWxseQo+ID4gPiBwYXJhdmly dHVhbGl6YXRpb24uwqDCoFNvIGEgY29tcGxldGVseSBnZW5lcmljIHNvbHV0aW9uIHdvdWxkIGJl IGEKPiA+ID4gcGFyYXZpcnR1YWxpemVkIElPTU1VIGludGVyZmFjZSwgcmVwbGFjaW5nIFZULUQg Zm9yIFZNcy4gSXQgbWlnaHQgYmUKPiA+ID4ganVzdGlmaWVkIGlmIG1hbnkgcGxhdGZvcm1zIGhh dmUgaGFyZCB0byBlbXVsYXRlIGludGVyZmFjZXMuICAKPiA+IAo+ID4gSG0sIEknbSBub3Qgc3Vy ZSBJIHVuZGVyc3RhbmQgdGhlIHBvaW50IGhlcmUuCj4gPiAKPiA+IEVpdGhlciB0aGVyZSBpcyBh IHdheSBmb3IgdGhlIGh5cGVydmlzb3IgdG8gZXhwb3NlIGFuIElPTU1VIHRvIGEgZ3Vlc3QKPiA+ IChiZSBpdCBmdWxsIGhhcmR3YXJlIHZpcnQsIG9yIHBhcmF2aXJ0KS4gT3IgdGhlcmUgaXNuJ3Qu Cj4gPiAKPiA+IElmIHRoZXJlIGlzLCBpdCBkb2Vzbid0IG1hdHRlciAqaG93KiBpdCdzIGRvbmUu ICAKPiAKPiBXZWxsIGl0IGRvZXMgbWF0dGVyIGZvciBwZW9wbGUgZG9pbmcgaXQgOikKPiAKPiA+ IEFuZCBpZiB0aGVyZSBpc24ndCwgdGhlCj4gPiB3aG9sZSBkaXNjdXNzaW9uIGlzIG1vb3QgYW55 d2F5LiAgCj4gCj4gUG9pbnQgd2FzIHRoYXQgd2UgY2FuIGFsd2F5cyBidWlsZCBhIHBhcmF2aXJ0 IGludGVyZmFjZQo+IGlmIGl0IGRvZXMgbm90IGV4aXN0LCBidXQgaXQncyBlYXNpZXIgdG8gbWFp bnRhaW4KPiBpZiBpdCdzIG1pbmltYWwsIGJlaW5nIGFzIGNsb3NlIHRvIGVtdWxhdGluZyBoYXJk d2FyZQo+IGFzIHdlIGNhbi4KPiAKPiA+IC0tIAo+ID4gZHdtdzIKPiA+IAo+ID4gICAKPiAKPiAK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxp emF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9u Lm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92 aXJ0dWFsaXphdGlvbg==