From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: PCI Passthrough Design - Draft 3 Date: Wed, 12 Aug 2015 10:24:13 -0400 Message-ID: <20150812142413.GD17002@l.oracle.com> References: <55C0AFAC.9070706@caviumnetworks.com> <20150811203445.GE7765@l.oracle.com> <55CAF6B3.20606@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <55CAF6B3.20606@caviumnetworks.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Manish Jaggi Cc: "Prasun.kapoor@cavium.com" , Ian Campbell , Stefano Stabellini , "Kumar, Vijaya" , Julien Grall , Xen Devel List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBBdWcgMTIsIDIwMTUgYXQgMDE6MDM6MDdQTSArMDUzMCwgTWFuaXNoIEphZ2dpIHdy b3RlOgo+IEJlbG93IGFyZSB0aGUgY29tbWVudHMuIEkgd2lsbCBhbHNvIHNlbmQgYSBEcmFmdCA0 IHRha2luZyBhY2NvdW50IG9mIHRoZSBjb21tZW50cy4KPiAKPiAKPiBPbiBXZWRuZXNkYXkgMTIg QXVndXN0IDIwMTUgMDI6MDQgQU0sIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToKPiA+T24g VHVlLCBBdWcgMDQsIDIwMTUgYXQgMDU6NTc6MjRQTSArMDUzMCwgTWFuaXNoIEphZ2dpIHdyb3Rl Ogo+ID4+ICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+ICAg ICAgICAgICAgIHwgUENJIFBhc3MtdGhyb3VnaCBpbiBYZW4gQVJNIHwKPiA+PiAgICAgICAgICAg ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+PiAgICAgICAgICAgICBtYW5pc2gu amFnZ2lAY2F2aXVtbmV0d29ya3MuY29tCj4gPj4gICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ID4+Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgRHJhZnQtMwo+ ID4+Li4uCj4gPj5bc25pcF0KPiA+PjIuMiAgICBQSFlTREVWT1BfcGNpX2hvc3RfYnJpZGdlX2Fk ZCBoeXBlcmNhbGwKPiA+Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiA+PlhlbiBjb2RlIGFjY2Vzc2VzIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGJhc2Vk IG9uIHRoZSBzYmRmIHJlY2VpdmVkIGZyb20KPiA+PnRoZQo+ID4+Z3Vlc3QuIFRoZSBvcmRlciBp biB3aGljaCB0aGUgcGNpIGRldmljZSB0cmVlIG5vZGUgYXBwZWFyIG1heSBub3QgYmUgdGhlCj4g Pj5zYW1lCj4gPj5vcmRlciBvZiBkZXZpY2UgZW51bWVyYXRpb24gaW4gZG9tMC4gVGh1cyB0aGVy ZSBuZWVkcyB0byBiZSBhIG1lY2hhbmlzbSB0bwo+ID4+YmluZAo+ID4+dGhlIHNlZ21lbnQgbnVt YmVyIGFzc2lnbmVkIGJ5IGRvbTAgdG8gdGhlIHBjaSBob3N0IGNvbnRyb2xsZXIuIFRoZQo+ID4+ aHlwZXJjYWxsCj4gPj5pcyBpbnRyb2R1Y2VkOgo+ID5XaHkgY2FuJ3Qgd2UgZXh0ZW5kIHRoZSBl eGlzdGluZyBoeXBlcmNhbGwgdG8gaGF2ZSB0aGUgc2VnbWVudCB2YWx1ZT8KPiA+Cj4gPk9oIHdh aXQsIFBIWVNERVZPUF9tYW5hZ2VfcGNpX2FkZF9leHQgZG9lcyBpdCBhbHJlYWR5IQo+IEl0IGRv ZXNu4oCZdCBwYXNzIHRoZSBjZmdfYmFzZSBhbmQgc2l6ZSB0byB4ZW4KCmNmZ19iYXNlIGlzIHRo ZSBCQVI/IE9yIHRoZSBNTUlPID8KCj4gPgo+ID5BbmQgaGF2ZSB0aGUgaHlwZXJjYWxsIChhbmQg WGVuKSBiZSBhYmxlIHRvIGRlYWwgd2l0aCBpbnRyb2R1Y3Rpb24gb2YgUENJCj4gPmRldmljZXMg dGhhdCBhcmUgb3V0IG9mIHN5bmM/Cj4gPgo+ID5NYXliZSBJIGFtIGNvbmZ1c2VkIGJ1dCBhcmVu J3QgUENJIGhvc3QgY29udHJvbGxlcnMgYWxzbyAndXBsb2FkZWQnIHRvCj4gPlhlbj8KPiBJIG5l ZWQgdG8gYWRkIG9uZSBtb3JlIGxpbmUgaGVyZSB0byBiZSBtb3JlIGRlc2NyaXB0aXZlLiBUaGUg YmluZGluZyBpcwo+IGJldHdlZW4gdGhlIHNlZ21lbnQgbnVtYmVyIChkb21haW4gbnVtYmVyIGlu IGxpbnV4KQo+IHVzZWQgYnkgZG9tMCBhbmQgdGhlIHBjaSBjb25maWcgc3BhY2UgYWRkcmVzcyBp biB0aGUgcGNpIG5vZGUgb2YgZGV2aWNlIHRyZWUKPiAocmVnIHByb3BlcnR5KS4KPiBUaGUgaHlw ZXJjYWxsIHdhcyBpbnRyb2R1Y2VkIHRvIGNhdGVyIHRoZSBmYWN0IHRoYXQgdGhlIGRvbTAgbWF5 IHByb2Nlc3MgcGNpCj4gbm9kZXMgaW4gdGhlIGRldmljZSB0cmVlIGluIGFueSBvcmRlci4KCkkg c3RpbGwgZG9uJ3QgZm9sbG93IC0gc29ycnkuCgpXaHkgd291bGQgaXQgbWF0dGVyIHRoYXQgdGhl IFBDSSBub2RlcyBhcmUgcHJvY2Vzc2VkIGluIGFueSBvcmRlcj8KCj4gQnkgdGhpcyBiaW5kaW5n IGl0IGlzIGEgY2xlYXIgQUJJLgo+ID4+I2RlZmluZSBQSFlTREVWT1BfcGNpX2hvc3RfYnJpZGdl X2FkZCAgICA0NAo+ID4+c3RydWN0IHBoeXNkZXZfcGNpX2hvc3RfYnJpZGdlX2FkZCB7Cj4gPj4g ICAgIC8qIElOICovCj4gPj4gICAgIHVpbnQxNl90IHNlZzsKPiA+PiAgICAgdWludDY0X3QgY2Zn X2Jhc2U7Cj4gPj4gICAgIHVpbnQ2NF90IGNmZ19zaXplOwo+ID4+fTsKPiA+Pgo+ID4+VGhpcyBo eXBlcmNhbGwgaXMgaW52b2tlZCBiZWZvcmUgZG9tMCBpbnZva2VzIHRoZSBQSFlTREVWT1BfcGNp X2RldmljZV9hZGQKPiA+Pmh5cGVyY2FsbC4gVGhlIGhhbmRsZXIgY29kZSBpbnZva2VzIHRvIHVw ZGF0ZSBzZWdtZW50IG51bWJlciBpbgo+ID4+cGNpX2hvc3RicmlkZ2U6Cj4gPj4KPiA+PmludCBw Y2lfaG9zdGJyaWRnZV9zZXR1cCh1aW50MzJfdCBzZWdubywgdWludDY0X3QgY2ZnX2Jhc2UsIHVp bnQ2NF90Cj4gPj5jZmdfc2l6ZSk7Cj4gPj4KPiA+PlN1YnNlcXVlbnQgY2FsbHMgdG8gcGNpX2Nv bmZfcmVhZC93cml0ZSBhcmUgY29tcGxldGVkIGJ5IHRoZQo+ID4+cGNpX2hvc3RicmlkZ2Vfb3Bz Cj4gPj5vZiB0aGUgcmVzcGVjdGl2ZSBwY2lfaG9zdGJyaWRnZS4KPiA+VGhpcyBkZXNpZ24gc291 bmRzIGxpa2UgaXQgaXMgYWRkZWQgdG8gZGVhbCB3aXRoIGhhdmluZyB0byBwcmUtYWxsb2NhdGUg dGhlCj4gPmFtb3VudCBob3N0IGNvbnRyb2xsZXJzIHN0cnVjdHVyZSBiZWZvcmUgdGhlIFBDSSBk ZXZpY2VzIGFyZSBzdHJlYW1pbmcgaW4/Cj4gPgo+ID5JbnN0ZWFkIG9mIGhhdmluZyB0aGUgUENJ IGRldmljZXMgYW5kIFBDSSBob3N0IGNvbnRyb2xsZXJzIGJlIHVwZGF0ZWQKPiA+YXMgdGhleSBh cmUgY29taW5nIGluPwo+ID4KPiA+V2h5IGNhbid0IHRoZSBzZWNvbmQgb3B0aW9uIGJlIGRvbmU/ Cj4gSWYgeW91IGFyZSByZWZlcnJpbmcgdG8gQUNQSSwgd2UgaGF2ZSB0byBhZGQgdGhlIHN1cHBv cnQuCj4gUENJIEhvc3QgY29udHJvbGxlcnMgYXJlIHBjaSBub2RlcyBpbiBkZXZpY2UgdHJlZS4K CkkgdGhpbmsgd2hhdCB5b3UgYXJlIHNheWluZyBpcyB0aGF0IHRoZSBQQ0kgZGV2aWNlcyBhcmUg YmVpbmcgdXBsb2FkZWQKZHVyaW5nIEFDUEkgcGFyc2luZy4gVGhlIFBDSSBob3N0IGNvbnRyb2xs ZXJzIGFyZSBkb25lIHZpYQpkZXZpY2UgdHJlZS4KCkJ1dCB3aGF0IGRpZmZlcmVuY2UgZG9lcyB0 aGF0IG1ha2U/IFdoeSBjYW4ndCBYZW4gZGVhbCB3aXRoIHRoZXNlCmJlaW5nIGluIGFueSBvcmRl cj8gQ2FuJ3QgaXQgcmUtb3JnYW5pemUgaXRzIGludGVybmFsIHJlcHJlc2VuYXRpb24Kb2YgUENJ IGhvc3QgY29udHJvbGxlcnMgYW5kIFBDSSBkZXZpY2VzIGJhc2VkIG9uIG5ldyBkYXRhPwoKCgo+ ID4+Mi4zICAgIEhlbHBlciBGdW5jdGlvbnMKPiA+Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ ID4+YSkgcGNpX2hvc3RicmlkZ2VfZHRfbm9kZShwZGV2LT5zZWcpOwo+ID4+UmV0dXJucyB0aGUg ZGV2aWNlIHRyZWUgbm9kZSBwb2ludGVyIG9mIHRoZSBwY2kgbm9kZSBmcm9tIHdoaWNoIHRoZSBw ZGV2IGdvdAo+ID4+ZW51bWVyYXRlZC4KPiA+Pgo+ID4+My4gICAgU01NVSBwcm9ncmFtbWluZwo+ ID4+LS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+Cj4gPj4zLjEuICAgIEFkZGl0aW9ucyBmb3IgUENJ IFBhc3N0aHJvdWdoCj4gPj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+ My4xLjEgLSBhZGRfZGV2aWNlIGluIGlvbW11X29wcyBpcyBpbXBsZW1lbnRlZC4KPiA+Pgo+ID4+ VGhpcyBpcyBjYWxsZWQgd2hlbiBQSFlTREVWT1BfcGNpX2FkZF9kZXZpY2UgaXMgY2FsbGVkIGZy b20gZG9tMC4KPiA+T3IgZm9yIFBIWVNERVZPUF9tYW5hZ2VfcGNpX2FkZF9leHQgPwo+IE5vdCBz dXJlIGJ1dCBpdCBzZWVtcyBsb2dpY2FsIGZvciB0aGlzIGFsc28uCj4gPj4uYWRkX2RldmljZSA9 IGFybV9zbW11X2FkZF9kb20wX2RldiwKPiA+PnN0YXRpYyBpbnQgYXJtX3NtbXVfYWRkX2RvbTBf ZGV2KHU4IGRldmZuLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPj57Cj4gPj4gICAgICAgICBpZiAo ZGV2X2lzX3BjaShkZXYpKSB7Cj4gPj4gICAgICAgICAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXYg PSB0b19wY2lfZGV2KGRldik7Cj4gPj4gICAgICAgICAgICAgcmV0dXJuIGFybV9zbW11X2Fzc2ln bl9kZXYocGRldi0+ZG9tYWluLCBkZXZmbiwgZGV2KTsKPiA+PiAgICAgICAgIH0KPiA+PiAgICAg ICAgIHJldHVybiAtMTsKPiA+Pn0KPiA+Pgo+ID5XaGF0IGFib3V0IHJlbW92YWw/Cj4gPgo+ID5X aGF0IGlmIHRoZSBkZXZpY2UgaXMgcmVtb3ZlZCAoaG90LXVucGx1Z2dlZD8/Cj4gLnJlbW92ZV9k ZXZpY2UgID0gYXJtX3NtbXVfcmVtb3ZlX2RldmljZSgpLiB3b3VsZCBiZSBjYWxsZWQuCj4gV2ls bCB1cGRhdGUgaW4gRHJhZnQ0CgpBbHNvIHBsZWFzZSBtZW50aW9uIHdoYXQgaHlwZXJjYWxsIHlv dSB3b3VsZCB1c2UuCgo+IAo+ID4+My4xLjIgZGV2X2dldF9kZXZfbm9kZSBpcyBtb2RpZmllZCBm b3IgcGNpIGRldmljZXMuCj4gPj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPj5UaGUgZnVuY3Rpb24gaXMg bW9kaWZpZWQgdG8gcmV0dXJuIHRoZSBkdF9ub2RlIG9mIHRoZSBwY2kgaG9zdGJyaWRnZSBmcm9t Cj4gPj50aGUgZGV2aWNlIHRyZWUuIFRoaXMgaXMgcmVxdWlyZWQgYXMgbm9uLWR0IGRldmljZXMg bmVlZCBhIHdheSB0byBmaW5kIG9uCj4gPj53aGljaCBzbW11IHRoZXkgYXJlIGF0dGFjaGVkLgo+ ID4+Cj4gPj5zdGF0aWMgc3RydWN0IGFybV9zbW11X2RldmljZSAqZmluZF9zbW11X2Zvcl9kZXZp Y2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ID4+ewo+ID4+ICAgICAgICAgc3RydWN0IGRldmljZV9u b2RlICpkZXZfbm9kZSA9IGRldl9nZXRfZGV2X25vZGUoZGV2KTsKPiA+Pi4uLi4KPiA+Pgo+ID4+ c3RhdGljIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2X2dldF9kZXZfbm9kZShzdHJ1Y3QgZGV2aWNl ICpkZXYpCj4gPj57Cj4gPj4gICAgICAgICBpZiAoZGV2X2lzX3BjaShkZXYpKSB7Cj4gPj4gICAg ICAgICAgICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXYpOwo+ID4+ ICAgICAgICAgICAgICAgICByZXR1cm4gcGNpX2hvc3RicmlkZ2VfZHRfbm9kZShwZGV2LT5zZWcp Owo+ID4+ICAgICAgICAgfQo+ID4+Li4uCj4gPj4KPiA+Pgo+ID4+My4yLiAgICBNYXBwaW5nIGJl dHdlZW4gc3RyZWFtSUQgLSBkZXZpY2VJRCAtIHBjaSBzYmRmIC0gcmVxdWVzdGVySUQKPiA+Pi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4+Rm9yIGEgc2ltcGxlciBjYXNlIGFsbCBzaG91bGQgYmUgZXF1YWwgdG8g QkRGLiBCdXQgdGhlcmUgYXJlIHNvbWUgZGV2aWNlcwo+ID4+dGhhdAo+ID4+dXNlIHRoZSB3cm9u ZyByZXF1ZXN0ZXIgSUQgZm9yIERNQSB0cmFuc2FjdGlvbnMuIExpbnV4IGtlcm5lbCBoYXMgcGNp IHF1aXJrcwo+ID4+Zm9yIHRoZXNlLiBIb3cgdGhlIHNhbWUgYmUgaW1wbGVtZW50ZWQgaW4gWGVu IG9yIGEgZGlmZnJlbnQgYXBwcm9hY2ggaGFzIHRvCj4gPnMvcGNpL1BDSS8KPiA+PmJlCj4gPj50 YWtlbiBpcyBUT0RPIGhlcmUuCj4gPj5UaWxsIHRoYXQgdGltZSwgZm9yIGJhc2ljIGltcGxlbWVu dGF0aW9uIGl0IGlzIGFzc3VtZWQgdGhhdCBhbGwgYXJlIGVxdWFsIHRvCj4gPj5CREYuCj4gPj4K PiA+Pgo+ID4+NC4gICAgQXNzaWdubWVudCBvZiBQQ0kgZGV2aWNlCj4gPj4tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pgo+ID4+NC4xICAgIERvbTAKPiA+Pi0tLS0tLS0tLS0t LQo+ID4+QWxsIFBDSSBkZXZpY2VzIGFyZSBhc3NpZ25lZCB0byBkb20wIHVubGVzcyBoaWRkZW4g YnkgcGNpLWhpZGUgYm9vdGFyZ3MgaW4KPiA+PmRvbTAuCj4gPidwY2ktaGlkZScgaW4gZG9tMD8g R3JlZXBpbmcgaW4gRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgSSBkb24ndAo+ ID5zZWUgYW55dGhpbmcuCj4gJXMvcGNpLWhpZGUvL3BjaWJhY2svLi9oaWRlLy8KPiA+PkRvbTAg ZW51bWVyYXRlcyB0aGUgUENJIGRldmljZXMuIEZvciBlYWNoIGRldmljZSB0aGUgTU1JTyBzcGFj ZSBoYXMgdG8gYmUKPiA+Pm1hcHBlZAo+ID4+aW4gdGhlIFN0YWdlMiB0cmFuc2xhdGlvbiBmb3Ig ZG9tMC4gRm9yIGRvbTAgeGVuIG1hcHMgdGhlIHJhbmdlcyBmcm9tIGR0IHBjaQo+ID5zL3hlbi9Y ZW4vCj4gPnMvcGNpL1BDSS8KPiA+Pm5vZGVzIGluIHN0YWdlIDIgdHJhbnNsYXRpb24gZHVyaW5n IGJvb3QuCj4gPj40LjEuMSAgICBTdGFnZSAyIE1hcHBpbmcgb2YgR0lUU19JVFJBTlNMQVRFUiBz cGFjZSAoNjRrKQo+ID4+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gPj4KPiA+PkdJVFNfSVRSQU5TTEFURVIgc3BhY2UgKDY0aykgbXVzdCBi ZSBwcm9ncmFtbWVkIGluIFN0YWdlMiB0cmFuc2xhdGlvbiBzbwo+ID4+dGhhdCBTTU1VCj4gPj5j YW4gdHJhbnNsYXRlIE1TSSh4KSBmcm9tIHRoZSBkZXZpY2UgdXNpbmcgdGhlIHBhZ2UgdGFibGUg b2YgdGhlIGRvbWFpbi4KPiA+Pgo+ID4+NC4xLjEuMSBGb3IgRG9tMAo+ID4+LS0tLS0tLS0tLS0t LS0tLS0KPiA+PkdJVFNfSVRSQU5TTEFURVIgYWRkcmVzcyBzcGFjZSBpcyBtYXBwZWQgMToxIGR1 cmluZyBkb20wIGJvb3QuIEZvciBkb20wIHRoaXMKPiA+Pm1hcHBpbmcgaXMgZG9uZSBpbiB0aGUg dmdpYyBkcml2ZXIuIEZvciBkb21VIHRoZSBtYXBwaW5nIGlzIGRvbmUgYnkKPiA+PnRvb2xzdGFj ay4KPiA+Pgo+ID4+NC4xLjEuMiAgICBGb3IgRG9tVQo+ID4+LS0tLS0tLS0tLS0tLS0tLS0KPiA+ PkZvciBkb21VLCB3aGlsZSBjcmVhdGluZyB0aGUgZG9tYWluLCB0aGUgdG9vbHN0YWNrIHJlYWRz IHRoZSBJUEEgZnJvbSB0aGUKPiA+Pm1hY3JvIEdJVFNfSVRSQU5TTEFURVJfU1BBQ0UgZnJvbSB4 ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaC4gVGhlIFBBIGlzCj4gPj5yZWFkIGZyb20gYSBu ZXcgaHlwZXJjYWxsIHdoaWNoIHJldHVybnMgdGhlIFBBIG9mIHRoZQo+ID4+R0lUU19JVFJBTlNM QVRFUl9TUEFDRS4KPiA+PlN1YnNlcXVlbnRseSB0aGUgdG9vbHN0YWNrIHNlbmRzIGEgaHlwZXJj YWxsIHRvIGNyZWF0ZSBhIHN0YWdlIDIgbWFwcGluZy4KPiA+Pgo+ID4+SHlwZXJjYWxsIERldGFp bHM6IFhFTl9ET01DVExfZ2V0X2l0cmFuc2xhdGVyX3NwYWNlCj4gPj4KPiA+Pi8qIFhFTl9ET01D VExfZ2V0X2l0cmFuc2xhdGVyX3NwYWNlICovCj4gPj5zdHJ1Y3QgeGVuX2RvbWN0bF9nZXRfaXRy YW5zbGF0ZXJfc3BhY2Ugewo+ID4+ICAgICAvKiBPVVQgdmFyaWFibGVzLiAqLwo+ID4+ICAgICB1 aW50NjRfYWxpZ25lZF90IHN0YXJ0X2FkZHI7Cj4gPj4gICAgIHVpbnQ2NF9hbGlnbmVkX3Qgc2l6 ZTsKPiA+Pn07Cj4gPj50eXBlZGVmIHN0cnVjdCB4ZW5fZG9tY3RsX2dldF9pdHJhbnNsYXRlcl9z cGFjZQo+ID4+eGVuX2RvbWN0bF9nZXRfaXRyYW5zbGF0ZXJfc3BhY2U7Cj4gPj5ERUZJTkVfWEVO X0dVRVNUX0hBTkRMRSh4ZW5fZG9tY3RsX2dldF9pdHJhbnNsYXRlcl9zcGFjZTsKPiA+Pgo+ID4+ NC4yICAgIERvbVUKPiA+Pi0tLS0tLS0tLS0tLQo+ID4+VGhlcmUgYXJlIHR3byB3YXlzIGEgZGV2 aWNlIGlzIGFzc2lnbmVkCj4gPj5JbiB0aGUgZmxvdyBvZiBwY2ktYXR0YWNoIGRldmljZSwgdGhl IHRvb2xzdGFjayB3aWxsIHJlYWQgdGhlIHBjaQo+ID4+Y29uZmlndXJhdGlvbgo+ID4+c3BhY2Ug QkFSIHJlZ2lzdGVycy4gVGhlIHRvb2xzdGFjayBoYXMgdGhlIGd1ZXN0IG1lbW9yeSBtYXAgYW5k IHRoZQo+ID4+aW5mb3JtYXRpb24KPiA+Pm9mIHRoZSBNTUlPIGhvbGVzLgo+ID4+Cj4gPj5XaGVu IHRoZSBmaXJzdCBwY2kgZGV2aWNlIGlzIGFzc2lnbmVkIHRvIGRvbVUsIHRvb2xzdGFjayBhbGxv Y2F0ZXMgYSB2aXJ0dWFsCj4gPnMvcGNpL1BDSS8KPiA+Cj4gPmZpcnN0PyBXaGF0IGFib3V0IHRo ZSBvdGhlciBvbmVzPwo+ICVzL3RoZSBmaXJzdC9hLwo+IFR5cG8KPiA+Cj4gPj5CQVIgcmVnaW9u IGZyb20gdGhlIE1NSU8gaG9sZSBhcmVhLiB0b29sc3RhY2sgdGhlbiBzZW5kcyBkb21jdGwKPiA+ cy9zZW5kcy9pbnZva2VzLwo+ID4+eGNfZG9tYWluX21lbW9yeV9tYXBwaW5nIHRvIG1hcCBpbiBz dGFnZTIgdHJhbnNsYXRpb24uCj4gPldoYXQgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgZGV2 aWNlPyBIb3cgd2lsbCB0aGUgTU1JTyBhbmQgQkFSIHJlZ2lvbnMKPiA+cGlja2VkPyBCYXNlZCBv biBmaXJzdC1jb21lIGZpcnN0LXNlcnZlPwo+ID4+NC4yLjEgICAgUmVzZXJ2ZWQgQXJlYXMgaW4g Z3Vlc3QgbWVtb3J5IHNwYWNlCj4gPj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4+UGFydHMgb2YgdGhlIGd1ZXN0IGFkZHJlc3Mgc3BhY2UgaXMgcmVzZXJ2 ZWQgZm9yIG1hcHBpbmcgYXNzaWduZWQgcGNpCj4gPj5kZXZpY2Uncwo+ID5zL3BjaS9QQ0kvCj4g Pj5CQVIgcmVnaW9ucy4gVG9vbHN0YWNrIGlzIHJlc3BvbnNpYmxlIGZvciBhbGxvY2F0aW5nIHJh bmdlcyBmcm9tIHRoaXMgYXJlYQo+ID4+YW5kCj4gPj5jcmVhdGluZyBzdGFnZSAyIG1hcHBpbmcg Zm9yIHRoZSBkb21haW4uCj4gPj4KPiA+Pi8qIEZvciAzMmJpdCAqLwo+ID4+R1VFU1RfTU1JT19C QVJfQkFTRV8zMiwgR1VFU1RfTU1JT19CQVJfU0laRV8zMgo+ID4+Cj4gPj4vKiBGb3IgNjRiaXQg Ki8KPiA+Pgo+ID4+R1VFU1RfTU1JT19CQVJfQkFTRV82NCwgR1VFU1RfTU1JT19CQVJfU0laRV82 NAo+IGluIHB1YmxpYy9hcmNoLWFybS5oCj4gCj4gLyogRm9yIDMyYml0ICovCj4gI2RlZmluZSBH VUVTVF9NTUlPX0JBUl9CQVNFXzMyIDw8Pj4KPiAjZGVmaW5lIEdVRVNUX01NSU9fQkFSX1NJWkVf MzIgPDw+Pgo+IAo+IC8qIEZvciA2NGJpdCAqLwo+IAo+ICNkZWZpbmUgR1VFU1RfTU1JT19CQVJf QkFTRV82NCA8PD4+Cj4gI2RlZmluZSBHVUVTVF9NTUlPX0JBUl9TSVpFXzY0IDw8Pj4KPiAKPiAK PiA+Tm90IHN1cmUgd2hhdCB0aGlzIG1lYW5zLgo+IFdpbGwgYWRkIG1vcmUgZGVzY3JpcHRpb24u Cj4gVGhlIGlkZWEgaXMgdG8gbWFwIHRoZSBQQ0kgQkFSIHJlZ2lvbnMgaW50byBndWVzdCBTdGFn ZTIgdHJhbnNsYXRpb24sIHNvIGEKPiBwcmUgZGVmaW5lZCBhcmVhIGluIGd1ZXN0IGFkZHJlc3MK PiBzcGFjZSBpcyByZXNlcnZlZCBmb3IgdGhpcy4KPiBJZiBhIEJBUiByZWdpb24gYWRkcmVzcyBp cyAzMmIgQkFTRV8zMiBhcmVhIHdvdWxkIGJlIHVzZWQsIG90aGVyd2lzZSA2NGIuCgpXaGF0IGlm IHlvdSBoYXZlIGJvdGg/IDMyLWJpdCBhbmQgNjQtYml0PwoKPiA+Pk5vdGU6IEZvciA2NGJpdCBz eXN0ZW1zLCBQQ0kgQkFSIHJlZ2lvbnMgc2hvdWxkIGJlIG1hcHBlZCBmcm9tCj4gPj5HVUVTVF9N TUlPX0JBUl9CQVNFXzY0Lgo+ID4+Cj4gPj5JUEEgaXMgYWxsb2NhdGVkIGZyb20gdGhlIHtHVUVT VF9NTUlPX0JBUl9CQVNFXzY0LCBHVUVTVF9NTUlPX0JBUl9TSVpFXzY0fQo+ICVzL3tHVUVTVF9N TUlPX0JBUl9CQVNFXzY0LCBHVUVTVF9NTUlPX0JBUl9TSVpFXzY0fS8KPiAKPiAoR1VFU1RfTU1J T19CQVJfQkFTRV82NCAuLi4gR1VFU1RfTU1JT19CQVJfQkFTRV82NCtHVUVTVF9NTUlPX0JBUl9T SVpFXzY0KSByZWdpb24KPiAKPiA+PnJhbmdlIGFuZCBQQSBpcyB0aGUgdmFsdWVzIHJlYWQgZnJv bSB0aGUgQkFSIHJlZ2lzdGVycy4KPiA+SXMgdGhlIEJBUiBzaXplIGR5bmFtaWM/Cj4gc2VlIGFi b3ZlCj4gPldoYXQgaGFwcGVucyB3aGVuIHRoZSBkZXZpY2UgaXMgdW5wbHVnZ2VkPyBBbmQgdGhl biBwbHVnZ2VkIGJhY2sgaW4/Cj4gPkhvdyBkbyB5b3UgY2hvb3NlIHdoZXJlIGluIHRoZSBHVUVT VF9NTUlPXy4uIGl0IGlzIGdvaW5nIHRvIGJlIGluPwo+ID5XaGF0IGlzIHRoZSBoeXBlcmNhbGwg eW91IGFyZSBnb2lnbiB0byB1c2UgZm9yIHVucGx1Z2dpbmcgaXQ/Cj4gPgo+ID4+NC4yLjIgICAg TmV3IGVudHJpZXMgaW4geGVuc3RvcmUgZm9yIGRldmljZSBCQVJzCj4gPnMveGVuc3RvcmUvWGVu U3RvcmUvCj4gPgo+ID4+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiA+PnRvb2xzdGFjayBhbHNvIHVwZGF0ZXMgdGhlIHhlbnN0b3JlIGluZm9ybWF0aW9u IGZvciB0aGUgZGV2aWNlCj4gPnMvdG9vbHN0YWNrL1Rvb2xzdGFjawo+ID4KPiA+Pih2aXJ0dWFs YmFyOnBoeXNpY2FsIGJhcikuVGhpcyBpbmZvcm1hdGlvbiBpcyByZWFkIGJ5IHhlbnBjaWJhY2sg YW5kCj4gPnMveGVucGNpYmFjay94ZW4tcGNpYmFjay8KPiA+Cj4gPk5vIHNlZ21lbnQgdmFsdWU/ Cj4gV2hlcmUuIERpZG50IGdldCB5b3UKClRoZSBYZW4gUENJIGJhY2sgY2FuIGFsc28gZGVhbCB3 aXRoIHNlZ21lbnQgdmFsdWVzIChkb21haW4pLgoKPiA+PnJldHVybmVkCj4gPj50byB0aGUgcGNp ZnJvbnQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gc3BhY2UgcmVhZHMgZm9yIEJBUi4KPiA+Pgo+ID4+ RW50cmllcyBjcmVhdGVkIGFyZSBhcyBmb2xsb3dzOgo+ID4+L2xvY2FsL2RvbWFpbi8wL2JhY2tl bmQvcGNpLzEvMAo+ID4+dmRldi1OCj4gPj4gICAgIEJERiA9ICIiCj4gPj4gICAgIEJBUi0wLUlQ QSA9ICIiCj4gPj4gICAgIEJBUi0wLVBBID0gIiIKPiA+PiAgICAgQkFSLTAtU0laRSA9ICIiCj4g Pj4gICAgIC4uLgo+ID4+ICAgICBCQVItTS1JUEEgPSAiIgo+ID4+ICAgICBCQVItTS1QQSA9ICIi Cj4gPj4gICAgIEJBUi1NLVNJWkUgPSAiIgo+ID4+Cj4gPj5Ob3RlOiBJcyBCQVIgTSBTSVpFIGlz IDAsIGl0IGlzIG5vdCBhIHZhbGllZCBlbnRyeS4KPiA+cy92YWxpZWQvdmFsaWQvCj4gPgo+ID5z L0lzL0lmLyA/Cj4gPgo+ID4+NC4yLjQgICAgSHlwZXJjYWxsIE1vZGlmaWNhdGlvbiBmb3IgYmRm IG1hcHBpbmcgbm90aWZpY2F0aW9uIHRvIHhlbgo+ID5zL3hlbi9YZW4vCj4gPj4tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gPj5HdWVzdCBkZXZmbiBnZW5lcmF0aW9uIGN1cnJlbnRseSBkb25lIGJ5IHhlbi1wY2liYWNr IHRvIGJlIGRvbmUgYnkgdG9vbHN0YWNrCj4gPj5vbmx5LiBHdWVzdCBkZXZmbiBpcyBnZW5lcmF0 ZWQgYXQgdGhlIHRpbWUgb2YgZG9tYWluIGNyZWF0aW9uIChpZiBwY2kKPiA+PmRldmljZXMKPiA+ PmFyZSBzcGVjaWZpZWQgaW4gY2ZnIGZpbGUpIG9yIHVzaW5nIHhsIHBjaS1hdHRhY2ggY2FsbC4K PiA+V2hhdCBpcyAnZGV2Zm4gZ2VuZXJhdGlvbic/IEl0IHNvdW5kcyB0byBtZSB0aGF0IHlvdSBh cmUgc2F5aW5nIHRoYXQKPiA+eGVuLXBjaWJhY2sgc2hvdWxkIGZvbGxvdyB0aGUgWGVuU3RvcmUg a2V5cyBhbmQgdXNlIHRob3NlLgo+IFllcywgdGhhdCBpcyB3aGF0IElhbiAvIEp1bGllbiBzdWdn ZXN0ZWQuIHg4NiB0byBmb2xsb3cgdGhlIHNhbWUgYXMgZ3Vlc3QKPiBkZXZmbiBnZW5lcmF0aW9u IHNob3VsZCBiZQo+IGluIHRvb2xzdGFjayBvbiBub3QgaW4gcGNpYmFjay4KPiA+Cj4gPkJ1dCB0 aGUgdGl0bGUgdGFsa3MgYWJvdXQgJ2h5cGVyY2FsbCBtb2RpZmljYXRpb25zJyAtIHdoaWxlIHRo aXMKPiA+dGFsa3MgYWJvdXQgYmRmIG1hcHBpbmc/Cj4gdGhlIHhjX2Fzc2dpbl9kZXZpY2Ugd2ls bCBpbmNsdWRlIHRoZSBndWVzdCBkZXZmbgo+ID4+NS4gRG9tVSBGcm9udEVuZCBCdXMgQ2hhbmdl cwo+ID4+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+Cj4gPj41LjEgICAgQ2hhbmdlIGluIExp bnV4IFBDSSBGb3JudEVuZCAtIGJhY2tlbmQgZHJpdmVyIGZvciBNU0kvWCBwcm9ncmFtbWluZwo+ ID5zL0Zvcm50RW5kL0Zyb250ZW5kLwo+ID4KPiA+QW5kIEkgd291bGQgc2F5ICdMaW51eCBYZW4g UENJIGZyb250ZW5kJy4KPiA+Cj4gPj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+PkZyb250RW5kIGJh Y2tlbmQgY29tbXVuaWNhdGlvbiBmb3IgTVNJIGlzIHJlbW92ZWQgaW4gWEVOIEFSTS4gSXQgd291 bGQgYmUKPiA+PmhhbmRsZWQgYnkgdGhlIGdpYy1pdHMgZHJpdmVyIGluIGd1ZXN0IGtlcm5lbCBh bmQgdHJhcHBlZCBpbiB4ZW4uCj4gPnMveGVuL1hlbi8KPiA+Cj4gPnMvcmVtb3ZlZC9kaXNhYmxl ZC8KPiA+Cj4gPj41LjIgICAgRnJvbnRlbmQgYnVzIGFuZCBpbnRlcnJ1cHQgcGFyZW50IHZJVFMK PiA+Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPj5P biB0aGUgUGNpIGZyb250ZW5kIGJ1cyBtc2ktcGFyZW50IGdpY3YzLWl0cyBpcyBhZGRlZC4gQXMg dGhlcmUgaXMgYSBzaW5nbGUKPiA+cy9QY2kvUENJLwo+ID4KPiA+PnZpcnR1YWwgaXRzIGZvciBh IGRvbVUsIGFzIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgdmlydHVhbCBwY2kgYnVzIGluIGRvbVUu Cj4gPml0cz8KPiA+SVRTIHBlcmhhcHM/Cj4gPgo+ID5XZSBjb3VsZCBoYXZlIG11bHRpcGxlIHNl Z21lbnRzIHRvbyBpbiBYZW4gcGNpLWZyb250ZW5kLi4KPiA+Cj4gPj5UaGlzCj4gPj5lbnN1cmVz IHRoYXQgdGhlIGNvbmZpZ19tc2kgY2FsbHMgYXJlIGhhbmRsZWQgYnkgdGhlIGdpY3YzIGl0cyBk cml2ZXIgaW4KPiA+cy9pdHMvSVRTLwo+ID5zL2dpY3YzL0dJQ1YzLwo+ID4KPiA+PmRvbVUKPiA+ Pmtlcm5lbCBhbmQgbm90IHV0aWxpc2luZyBmcm9udGVuZC1iYWNrZW5kIGNvbW11bmljYXRpb24g YmV0d2VlbiBkb20wLWRvbVUuCj4gPnV0aWxpc2luZz8gVXRpbGl6aW5nLgo+ID4KPiA+Pkl0IGlz IHJlcXVpcmVkIHRvIGhhdmUgYSBnaWN2My1pdHMgbm9kZSBpbiBndWVzdCBkZXZpY2UgdHJlZS4K PiA+T0ssIHlvdSB0b3RhbGx5IGxvc3QgbWUuIFlvdSBzYWlkIGVhcmxpZXIgdGhhdCB3ZSBkbyBu b3Qgd2FudCB0byB1c2UKPiA+WGVuIHBjaWZyb250ZW5kIGZvciBNU0kuIEJ1dCBoZXJlIHlvdSB0 YWxrIGFib3V0ICdQQ0kgZnJvbnRlbmQnPyBTbwo+ID53aGF0IGlzIGl0Pwo+IFBDSSBGcm9udGVu ZCBidXMgaXMgYSB2aXJ0dWFsIGJ1cyBpbiBkb21VIG9uIHdoaWNoIGFzc2lnbmVkIGRldmljZXMg YXJlCj4gZW51bWVyYXRlZC4KPiBXaGlsZSB0aGUgUENJIEZyb250ZW5kIGJhY2tlbmQgY29tbXVu aWNhdGlvbiBpcyBsaW1pdGVkIHRvIGNvbmZpZyBzcGFjZQo+IGFjY2Vzcy4KCkl0IGNhbiBhbHNv IGRvIE1TSSBhbmQgTVNJLVguCj4gPgo+ID5BbmQgaG93IGRvIHlvdSBrZWVwIHRoZSB2SVRTIHNl Z21lbnQ6YnVzOmRldmZuIG1hcHBpbmcgaW4gc3luYwo+ID53aXRoIFhlbiBQQ0kgYmFja2VuZD8g SSBwcmVzdW1lIHlvdSBuZWVkIHRvIHVwZGF0ZSB0aGUgdklUUyBpbgo+ID50aGUgaHlwZXJ2aXNv ciB3aXRoIHRoZSBwcm9wZXIgc2VnbWVudDpidXM6ZGV2Zm4gdmFsdWVzPwo+IEkgd2lsbCBhZGQg YSByZWZlcmVuY2UgdG8gdGhlIHZJVFMgZGVzaWduLgo+IHNlZSBhYm92ZS4gYXNzaWduX2Rldmlj ZSB3aWxsIGhhdmUgYSBndWVzdCBkZXZmbi4KPiA+SXMgdGhlcmUgYW4gaHlwZXJjYWxsIGZvciB0 aGF0Pwo+IHdlIGhhZCBlYXJsaWVyIGEgaHlwZXJjYWxsIG1hcF9zYmRmIGJ1dCByZW1vdmVkIGl0 IGR1ZSB0byBhZGRpdGlvbiBvZiBndWVzdAo+IGRldmZuIGluIGFzc2lnbl9kZXZpY2UgY2FsbC4K CgpIb3dldmVyIEkgZG9uJ3Qgc2VlIGluIHhlbl9kb21jdGxfYXNzaWduX2RldmljZSBhbnl0aGlu ZyBtZW50aW9uaW5nCnRoZSBndWVzdCBzYmRmPyBXaGF0IGlmIHlvdSB3YW50IHRoZSBzYmRmcyBp biB0aGUgZ3Vlc3QgdG8gc3RhcnQgYXQKYSBkaWZmZXJlbnQgc2VnbWVudCBvciBidXMgdGhhbiB3 aGF0IHRoZXkgZG8gaW4gb24gdGhlIHBoeXNpY2FsIG1hY2hpbmU/Cgo+ID4+Ni4gICAgTlVNQSBk b21VIGFuZCB2SVRTCj4gPj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+YSkgT24gTlVN QSBzeXN0ZW1zIGRvbVUgc3RpbGwgaGF2ZSBhIHNpbmdsZSBpdHMgbm9kZS4KPiA+cy9pdHMvSVRT Lwo+ID4KPiA+PmIpIEhvdyBjYW4geGVuIGlkZW50aWZ5IHRoZSBJVFMgb24gd2hpY2ggYSBkZXZp Y2UgaXMgY29ubmVjdGVkLgo+ID5zL3hlbi9YZW4vCj4gPgo+ID4+LSBVc2luZyBzZWdtZW50IG51 bWJlciBxdWVyeSB1c2luZyBhcGkgd2hpY2ggZ2l2ZXMgcGNpIGhvc3QgY29udHJvbGxlcnMKPiA+ PmRldmljZSBub2RlCj4gPnMvYXBpL0FQSS8KPiA+cy9wY2kvUENJLwo+ID4KPiA+V2hpY2ggaXMg PyBJIG9ubHkgc2VlIG9uZSBoeXBlcmNhbGwgbWVudGlvbmVkIGhlcmUuCj4gPgo+ID4+c3RydWN0 IGR0X2RldmljZV9ub2RlKiBwY2lfaG9zdGJyaWRnZV9kdF9ub2RlKHVpbnQzMl90IHNlZ25vKQo+ ID5PaCwgdGhpcyBpcyBJTlRFUk5BTCB0byB0aGUgaHlwZXJ2aXNvci4gU29ycnksIHlvdSBsb3N0 IG1lIGEgYml0Cj4gPndpdGggdGhlIGRvbVUgcGFydCBzbyBJIHRob3VnaHQgaXQgbWVhbnQgdGhl IGRvbVUgc2hvdWxkIGJlIGFibGUKPiA+dG8gcXVlcnkgaXQuCj4gSSB3aWxsIGFkZCBhIGJpdCBt b3JlIG9mIGRlc2NyaXB0aW9uIGluIERyYWZ0IDQgLgo+ID4+YykgUXVlcnkgdGhlIGludGVycnVw dCBwYXJlbnQgb2YgdGhlIHBjaSBkZXZpY2Ugbm9kZSB0byBmaW5kIG91dCB0aGUgaXRzLgo+ID4+ Cj4gPnMvaXRzL0lUUy8KPiA+Cj4gPj8KPiA+Pl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPj5YZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPj5YZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwo+ID4+aHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCj4gCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=