From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [RFC PATCH v2 06/26] ARM: GICv3 ITS: introduce device mapping Date: Fri, 13 Jan 2017 11:22:17 -0800 (PST) Message-ID: References: <20161222182446.18791-1-andre.przywara@arm.com> <20161222182446.18791-7-andre.przywara@arm.com> <394aa346-184b-d4fc-796f-55accca099f9@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cS7Qg-0003r3-0N for xen-devel@lists.xenproject.org; Fri, 13 Jan 2017 19:22:26 +0000 In-Reply-To: <394aa346-184b-d4fc-796f-55accca099f9@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara Cc: xen-devel@lists.xenproject.org, Julien Grall , Stefano Stabellini , Vijay Kilari List-Id: xen-devel@lists.xenproject.org T24gRnJpLCAxMyBKYW4gMjAxNywgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gSGkgU3RlZmFubywK PiAKPiBPbiAwNS8wMS8xNyAwMDoxMywgU3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+ID4gT24g VGh1LCAyMiBEZWMgMjAxNiwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gPj4gVGhlIElUUyB1c2Vz IGRldmljZSBJRHMgdG8gbWFwIExQSXMgdG8gYSBkZXZpY2UuIERvbTAgd2lsbCBsYXRlciB1c2UK PiA+PiB0aG9zZSBJRHMsIHdoaWNoIHdlIGRpcmVjdGx5IHBhc3Mgb24gdG8gdGhlIGhvc3QuCj4g Pj4gRm9yIHRoaXMgd2UgaGF2ZSB0byBtYXAgZWFjaCBkZXZpY2UgdGhhdCBEb20wIG1heSByZXF1 ZXN0IHRvIGEgaG9zdAo+ID4+IElUUyBkZXZpY2Ugd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyLgo+ ID4+IEFsbG9jYXRlIHRoZSByZXNwZWN0aXZlIG1lbW9yeSBhbmQgZW50ZXIgZWFjaCBkZXZpY2Ug aW50byBhIGxpc3QgdG8KPiA+PiBsYXRlciBiZSBhYmxlIHRvIGl0ZXJhdGUgb3ZlciBpdCBvciB0 byBlYXNpbHkgdGVhcmRvd24gZ3Vlc3RzLgo+ID4+Cj4gPj4gU2lnbmVkLW9mZi1ieTogQW5kcmUg UHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Cj4gPj4gLS0tCj4gPj4gIHhlbi9hcmNo L2FybS9naWMtaXRzLmMgICAgICAgIHwgMTE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ID4+ICB4ZW4vYXJjaC9hcm0vdmdpYy5jICAgICAgICAgICB8ICAgMyAr Kwo+ID4+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oICB8ICAgMiArCj4gPj4gIHhlbi9p bmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oIHwgIDIyICsrKysrKysrCj4gPj4gIDQgZmlsZXMgY2hh bmdlZCwgMTQ1IGluc2VydGlvbnMoKykKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vZ2ljLWl0cy5jIGIveGVuL2FyY2gvYXJtL2dpYy1pdHMuYwo+ID4+IGluZGV4IGQwZjVmZDEu LmUxNTdjNmIgMTAwNjQ0Cj4gPj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy1pdHMuYwo+ID4+ICsr KyBiL3hlbi9hcmNoL2FybS9naWMtaXRzLmMKPiA+PiBAQCAtMjEsNiArMjEsNyBAQAo+ID4+ICAj aW5jbHVkZSA8eGVuL2Vyci5oPgo+ID4+ICAjaW5jbHVkZSA8eGVuL2RldmljZV90cmVlLmg+Cj4g Pj4gICNpbmNsdWRlIDx4ZW4vbGliZmR0L2xpYmZkdC5oPgo+ID4+ICsjaW5jbHVkZSA8eGVuL3Nj aGVkLmg+Cj4gPj4gICNpbmNsdWRlIDx4ZW4vc2l6ZXMuaD4KPiA+PiAgI2luY2x1ZGUgPGFzbS9w Mm0uaD4KPiA+PiAgI2luY2x1ZGUgPGFzbS9pby5oPgo+ID4+IEBAIC0xMDgsNiArMTA5LDIxIEBA IHN0YXRpYyBpbnQgaXRzX3NlbmRfY21kX21hcGMoc3RydWN0IGhvc3RfaXRzICppdHMsIGludCBj b2xsZWN0aW9uX2lkLCBpbnQgY3B1KQo+ID4+ICAgICAgcmV0dXJuIGl0c19zZW5kX2NvbW1hbmQo aXRzLCBjbWQpOwo+ID4+ICB9Cj4gPj4KPiA+PiArc3RhdGljIGludCBpdHNfc2VuZF9jbWRfbWFw ZChzdHJ1Y3QgaG9zdF9pdHMgKml0cywgdWludDMyX3QgZGV2aWNlaWQsCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIHVpbnQ2NF90IGl0dF9hZGRyLCBib29sIHZh bGlkKQo+ID4+ICt7Cj4gPj4gKyAgICB1aW50NjRfdCBjbWRbNF07Cj4gPj4gKwo+ID4+ICsgICAg Y21kWzBdID0gR0lUU19DTURfTUFQRCB8ICgodWludDY0X3QpZGV2aWNlaWQgPDwgMzIpOwo+ID4+ ICsgICAgY21kWzFdID0gc2l6ZSAmIEdFTk1BU0soNCwgMCk7Cj4gPj4gKyAgICBjbWRbMl0gPSBp dHRfYWRkciAmIEdFTk1BU0soNTEsIDgpOwo+ID4+ICsgICAgaWYgKCB2YWxpZCApCj4gPj4gKyAg ICAgICAgY21kWzJdIHw9IEJJVF9VTEwoNjMpOwo+ID4+ICsgICAgY21kWzNdID0gMHgwMDsKPiA+ PiArCj4gPj4gKyAgICByZXR1cm4gaXRzX3NlbmRfY29tbWFuZChpdHMsIGNtZCk7Cj4gPj4gK30K PiA+PiArCj4gPj4gIC8qIFNldCB1cCB0aGUgKDE6MSkgY29sbGVjdGlvbiBtYXBwaW5nIGZvciB0 aGUgZ2l2ZW4gaG9zdCBDUFUuICovCj4gPj4gIHZvaWQgZ2ljdjNfaXRzX3NldHVwX2NvbGxlY3Rp b24oaW50IGNwdSkKPiA+PiAgewo+ID4+IEBAIC0yMzcsNiArMjUzLDcgQEAgaW50IGdpY3YzX2l0 c19pbml0KHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzKQo+ID4+Cj4gPj4gICAgICByZWcgPSByZWFk cV9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX1RZUEVSKTsKPiA+PiAgICAgIGh3X2l0 cy0+cHRhID0gISEocmVnICYgR0lUU19UWVBFUl9QVEEpOwo+ID4+ICsgICAgaHdfaXRzLT5pdHRl X3NpemUgPSAoKHJlZyA+PiA0KSAmIDB4ZikgKyAxOwo+ID4KPiA+IFBsZWFzZSAjZGVmaW5lIGFs bCBudW1iZXJzCj4gPgo+ID4KPiA+PiAgICAgIGZvciAoIGkgPSAwOyBpIDwgR0lUU19CQVNFUl9O Ul9SRUdTOyBpKysgKQo+ID4+ICAgICAgewo+ID4+IEBAIC0zNTgsNiArMzc1LDEwNyBAQCBpbnQg Z2ljdjNfbHBpX2luaXRfaG9zdF9scGlzKHVuc2lnbmVkIGludCBod19scGlfYml0cykKPiA+PiAg ICAgIHJldHVybiAwOwo+ID4+ICB9Cj4gPj4KPiA+PiArc3RhdGljIHZvaWQgcmVtb3ZlX21hcHBl ZF9ndWVzdF9kZXZpY2Uoc3RydWN0IGl0c19kZXZpY2VzICpkZXYpCj4gPj4gK3sKPiA+PiArICAg IGlmICggZGV2LT5od19pdHMgKQo+ID4+ICsgICAgICAgIGl0c19zZW5kX2NtZF9tYXBkKGRldi0+ aHdfaXRzLCBkZXYtPmhvc3RfZGV2aWQsIDAsIDAsIGZhbHNlKTsKPiA+PiArCj4gPj4gKyAgICB4 ZnJlZShkZXYtPml0dF9hZGRyKTsKPiA+PiArICAgIHhmcmVlKGRldik7Cj4gPj4gK30KPiA+PiAr Cj4gPj4gK2ludCBnaWN2M19pdHNfbWFwX2RldmljZShzdHJ1Y3QgZG9tYWluICpkLCBpbnQgaG9z dF9kZXZpZCwgaW50IGd1ZXN0X2RldmlkLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGJpdHMsIGJvb2wgdmFsaWQpCj4gPj4gK3sKPiA+PiArICAgIHZvaWQgKml0dF9hZGRyID0g TlVMTDsKPiA+PiArICAgIHN0cnVjdCBpdHNfZGV2aWNlcyAqZGV2LCAqdGVtcDsKPiA+PiArICAg IHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzOwo+ID4+ICsgICAgaW50IHJldDsKPiA+PiArCj4gPj4g KyAgICAvKiBjaGVjayBmb3IgYWxyZWFkeSBleGlzdGluZyBtYXBwaW5ncyAqLwo+ID4+ICsgICAg c3Bpbl9sb2NrKCZkLT5hcmNoLnZnaWMuaXRzX2RldmljZXNfbG9jayk7Cj4gPj4gKyAgICBsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCB0ZW1wLCAmZC0+YXJjaC52Z2ljLml0c19kZXZpY2Vz LCBlbnRyeSkKPiA+PiArICAgIHsKPiA+PiArICAgICAgICBpZiAoIGRldi0+Z3Vlc3RfZGV2aWQg IT0gZ3Vlc3RfZGV2aWQgKQo+ID4+ICsgICAgICAgICAgICBjb250aW51ZTsKPiA+PiArCj4gPj4g KyAgICAgICAgaWYgKCAhdmFsaWQgKQo+ID4+ICsgICAgICAgICAgICBsaXN0X2RlbCgmZGV2LT5l bnRyeSk7Cj4gPj4gKwo+ID4+ICsgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLnZnaWMuaXRz X2RldmljZXNfbG9jayk7Cj4gPj4gKwo+ID4+ICsgICAgICAgIGlmICggdmFsaWQgKQo+ID4+ICsg ICAgICAgICAgICByZXR1cm4gLUVCVVNZOwo+ID4+ICsKPiA+PiArICAgICAgICByZW1vdmVfbWFw cGVkX2d1ZXN0X2RldmljZShkZXYpOwo+ID4+ICsKPiA+PiArICAgICAgICByZXR1cm4gMDsKPiA+ PiArICAgIH0KPiA+PiArICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLnZnaWMuaXRzX2RldmljZXNf bG9jayk7Cj4gPgo+ID4gQ29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24sIG5vdyB0aGUg bGlzdCBpcyBwZXItZG9tYWluLCB3aGljaCBpcwo+ID4gYmV0dGVyIGZvciBEb21VcywgYnV0IG5v dCBmb3IgRG9tMC4gSW4gdGhlIGNhc2Ugb2YgRG9tMCB0aGUgbnVtYmVyIG9mCj4gPiBpdGVyYXRp b25zIHdpbGwgYmUgdGhlIHNhbWUuCj4gPgo+ID4gSSBzdWdnZXN0IHdlIG1vdmUgdG8gYSBkaWZm ZXJlbnQgZGF0YSBzdHJ1Y3R1cmUsIHN1Y2ggYXMgYW4gaGFzaHRhYmxlIG9yCj4gPiBhbiByYnRy ZWUuIElmIGRldmlkcyB3ZXJlIGd1YXJhbnRlZWQgdG8gYmUgZGVuc2UsIHRoZW4gd2UgY291bGQg c3RvcmUKPiA+IHN0cnVjdCBpdHNfZGV2aWNlcyBwb2ludGVycyBpbiBhbiBhcnJheSBhbmQgZGly ZWN0IGFjY2VzcyB0aGVtLCBidXQgSQo+ID4gZG9uJ3QgdGhpbmsgdGhleSBhcmU/Cj4gCj4gVGhl eSBhcmUgaW5kZWVkIHF1aXRlIHNwYXJzZSwgYXMgdGhleSBlZmZlY3RpdmVseSBhcmUgUENJIElE cy4KPiBCdXQgQUZBSUNTIHRoaXMgbGlzdCBpcyBuZXZlciBpdGVyYXRlZCBpbiBhIGhvdCBwYXRo LiBUaGVyZSBhcmUgdGhyZWUKPiB1c2VycyBvZiB0aGUgbGlzdDoKPiAtIGdpY3YzX2l0c19tYXBf ZGV2aWNlKCksIHdoaWNoIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBwaHlzZGV2X29wcwo+IGhhbmRs ZXIsIHNvIG9ubHkgb25jZSBhdCBEb20wIGJvb3QsIGJhc2ljYWxseS4KPiAtIGl0c19yZW1vdmVf ZG9tYWluKCksIHdoaWNoIGhhcyBubyBjYWxsZXIgYXQgdGhlIG1vbWVudCBhbmQgaXMganVzdAo+ IGhlcmUgZm9yIHRoZSBzYWtlIG9mIGNvbXBsZXRlbmVzcyBhbmQgdG8gbWFrZSBzdXJlIHdlIHJl bW92ZSBhbnl0aGluZwo+IHRoYXQgd2UgY3JlYXRlZC4gQnV0IGl0IGlzbid0IHBlcmZvcm1hbmNl IGNyaXRpY2FsIGF0IGFsbC4KPiAtIGZpbmRfZ3Vlc3RfbHBpKCksIHdoaWNoIGlzIGNhbGxlZCBi eSBnaWN2M19hc3NpZ25fZ3Vlc3RfZXZlbnQoKSBhbmQKPiBnaWN2M19scGlfY2hhbmdlX3ZjcHUo KS4gVGhvc2UgYXJlIGNhbGxlZCBieSB0aGUgTUFQVEksIERJU0NBUkQgYW5kIE1PVkkKPiB2aXJ0 dWFsIElUUyBjb21tYW5kIGhhbmRsZXJzLCBidXQgdGhvc2UgY29tbWFuZHMgYXJlIGV4cGVjdGVk IHRvIGJlIHJhcmUuCj4gCj4gU28gZ29pbmcgYXdheSBmcm9tIGEgbGlzdCBpcyBub3Qgc3RyaWN0 bHkgbmVjZXNzYXJ5LCBJTUhPLgo+IEJ1dCBmcmFua2x5IEkganVzdCBjaG9zZSBhIGxpc3QgYmVj YXVzZSBJIGtub3cgaG93IGl0IHdvcmtzIGJ5IGhlYXJ0LiBJCj4gZ3Vlc3MgSSBoYXZlIHRvIGNo ZWNrIGhvdyBlYXN5IHJidHJlZXMgb3IgaGFzaCB0YWJsZXMgYXJlIHRvIHVzZSBpbiBYZW4sCj4g YXMgaXQgc291bmRzIGluZGVlZCBzZW5zaWJsZSB0byB1c2Ugb25lIG9mIHRoZW0gKHByb2JhYmx5 IGFuIHJidHJlZSkKPiBpbnN0ZWFkLgoKV2UgZG8gaGF2ZSByYnRyZWVzLgoKCj4gPiBJZiBkZXZp ZHMgYXJlIHNwYXJzZSwgdXNpbmcgYSBwZXItZG9tYWluIHN0cnVjdHVyZSBjb3VsZCBiZSBhIGdv b2QgaWRlYSwKPiA+IGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHByZXZlbnQgYSBkZXZpY2UgZnJvbSBi ZWluZyBhc3NpZ25lZCB0byB0d28gZG9tYWlucwo+ID4gc2ltdWx0YW5lb3VzbHkuIElzIHRoZXJl IGEgY2hlY2sgdG8gYXZvaWQgdGhhdD8KPiAKPiBOb3QgYXQgdGhlIG1vbWVudCwgYW5kIEkgd291 bGRuJ3QgZXhwZWN0IGl0IHRvIGJlIHRoZSB0YXNrIG9mIHRoZSBJVFMKPiBlbXVsYXRpb24gdG8g dGFrZSBjYXJlIG9mIHRoYXQuIFRoYXQgc291bmRzIGxpa2Ugc29tZXRoaW5nIGZvciB0aGUgUENJ Cj4gcGFzc3Rocm91Z2ggc3Vic3lzdGVtIHRvIGNoZWNrLiBUaGlzIGZ1bmN0aW9uIGhlcmUgd2ls bCBldmVudHVhbGx5IGdldAo+IGNhbGxlZCBieSB0aGF0IGxheWVyIG9uY2UgaXQgaGFzIHNhbml0 aXplZCB0aGUgcmVxdWVzdCBhbmQgcHJlcGFyZXMgdGhlCj4gZGV2aWNlIGZvciB0cmlnZ2VyaW5n IE1TSXMuCj4gCj4gRm9yIHRoaXMgc2VyaWVzIHRoZXJlIGlzIG9ubHkgb25lIGRvbWFpbiB0byBj b25zaWRlciAoRG9tMCkgYW5kIHdlIGNoZWNrCj4gdGhlIHBlci1kb21haW4gZGV2aWNlIGxpc3Qg dG8gYXZvaWQgZG91YmxlIGFzc2lnbm1lbnQsIHNvIHRoaXMgaXMgc2FmZS4KCklmIHdlIGV4cGVj dCB0aGUgbmV4dCBlbmdpbmVlciwgdGhlIG9uZSB0aGF0IGlzIGdvaW5nIHRvIHdvcmsgb24KZW5h YmxpbmcgYW5kIHRlc3RpbmcgSVRTIHN1cHBvcnQgZm9yIERvbVVzLCB0byBhZGQgYSBjaGVjayBm b3IgdGhpcyBvcgptYWtlIHN1cmUgdGhhdCBzdWNoIGEgY2hlY2sgYWxyZWFkeSBleGlzdHMsIHdl IG5lZWQgYW4gLyogWFhYIGluIHRoZQpjb2RlIHNvbWV3aGVyZS4KCgo+ID4+ICsgICAgaWYgKCAh dmFsaWQgKQo+ID4+ICsgICAgICAgIHJldHVybiAtRU5PRU5UOwo+ID4+ICsKPiA+PiArICAgIC8q IFRPRE86IFdvcmsgb3V0IHRoZSBjb3JyZWN0IGhhcmR3YXJlIElUUyB0byB1c2UgaGVyZS4KPiA+ PiArICAgICAqIE1heWJlIGEgcGVyLXBsYXRmb3JtIGZ1bmN0aW9uOiBkZXZpZCAtPiBJVFM/Cj4g Pj4gKyAgICAgKiBPciBwYXJzaW5nIHRoZSBEVCB0byBmaW5kIHRoZSBtc2lfcGFyZW50Pwo+ID4+ ICsgICAgICogT3IgZ2V0IERvbTAgdG8gZ2l2ZSB1cyB0aGlzIGluZm9ybWF0aW9uPwo+ID4+ICsg ICAgICogRm9yIG5vdyBqdXN0IHVzZSB0aGUgZmlyc3QgSVRTLgo+ID4+ICsgICAgICovCj4gPj4g KyAgICBod19pdHMgPSBsaXN0X2ZpcnN0X2VudHJ5KCZob3N0X2l0c19saXN0LCBzdHJ1Y3QgaG9z dF9pdHMsIGVudHJ5KTsKPiA+PiArCj4gPj4gKyAgICBpdHRfYWRkciA9IF94bWFsbG9jKEJJVChi aXRzKSAqIGh3X2l0cy0+aXR0ZV9zaXplLCAyNTYpOwo+ID4+ICsgICAgaWYgKCAhaXR0X2FkZHIg KQo+ID4+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4+ICsKPiA+PiArICAgIGRldiA9IHht YWxsb2Moc3RydWN0IGl0c19kZXZpY2VzKTsKPiA+PiArICAgIGlmICggIWRldiApCj4gPj4gKyAg ICB7Cj4gPj4gKyAgICAgICAgeGZyZWUoaXR0X2FkZHIpOwo+ID4+ICsgICAgICAgIHJldHVybiAt RU5PTUVNOwo+ID4+ICsgICAgfQo+ID4+ICsKPiA+PiArICAgIHJldCA9IGl0c19zZW5kX2NtZF9t YXBkKGh3X2l0cywgaG9zdF9kZXZpZCwgYml0cyAtIDEsCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2aXJ0X3RvX21hZGRyKGl0dF9hZGRyKSwgdHJ1ZSk7Cj4gPj4gKyAgICBpZiAo cmV0KSB7Cj4gPj4gKyAgICAgICAgeGZyZWUoaXR0X2FkZHIpOwo+ID4+ICsgICAgICAgIHhmcmVl KGRldik7Cj4gPj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiA+PiArICAgIH0KPiA+PiArCj4gPj4g KyAgICBkZXYtPml0dF9hZGRyID0gaXR0X2FkZHI7Cj4gPj4gKyAgICBkZXYtPmh3X2l0cyA9IGh3 X2l0czsKPiA+PiArICAgIGRldi0+Z3Vlc3RfZGV2aWQgPSBndWVzdF9kZXZpZDsKPiA+PiArICAg IGRldi0+aG9zdF9kZXZpZCA9IGhvc3RfZGV2aWQ7Cj4gPj4gKyAgICBkZXYtPmV2ZW50aWRzID0g QklUKGJpdHMpOwo+ID4+ICsKPiA+PiArICAgIHNwaW5fbG9jaygmZC0+YXJjaC52Z2ljLml0c19k ZXZpY2VzX2xvY2spOwo+ID4+ICsgICAgbGlzdF9hZGRfdGFpbCgmZGV2LT5lbnRyeSwgJmQtPmFy Y2gudmdpYy5pdHNfZGV2aWNlcyk7Cj4gPj4gKyAgICBzcGluX3VubG9jaygmZC0+YXJjaC52Z2lj Lml0c19kZXZpY2VzX2xvY2spOwo+ID4+ICsKPiA+PiArICAgIHJldHVybiAwOwo+ID4+ICt9Cj4g Pj4gKwo+ID4+ICsvKiBSZW1vdmluZyBhbnkgY29ubmVjdGlvbnMgYSBkb21haW4gaGFkIHRvIGFu eSBJVFMgaW4gdGhlIHN5c3RlbS4gKi8KPiA+PiAraW50IGl0c19yZW1vdmVfZG9tYWluKHN0cnVj dCBkb21haW4gKmQpCj4gPj4gK3sKPiA+PiArICAgIHN0cnVjdCBpdHNfZGV2aWNlcyAqZGV2LCAq dGVtcDsKPiA+PiArCj4gPj4gK3JldHJ5Ogo+ID4+ICsKPiA+PiArICAgIHNwaW5fbG9jaygmZC0+ YXJjaC52Z2ljLml0c19kZXZpY2VzX2xvY2spOwo+ID4+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKGRldiwgdGVtcCwgJmQtPmFyY2gudmdpYy5pdHNfZGV2aWNlcywgZW50cnkpCj4gPj4g KyAgICB7Cj4gPj4gKyAgICAgICAgbGlzdF9kZWwoJmRldi0+ZW50cnkpOwo+ID4+ICsgICAgICAg IHNwaW5fdW5sb2NrKCZkLT5hcmNoLnZnaWMuaXRzX2RldmljZXNfbG9jayk7Cj4gPj4gKwo+ID4+ ICsgICAgICAgIHJlbW92ZV9tYXBwZWRfZ3Vlc3RfZGV2aWNlKGRldik7Cj4gPj4gKyAgICAgICAg Z290byByZXRyeTsKPiA+PiArICAgIH0KPiA+PiArCj4gPj4gKyAgICByZXR1cm4gMDsKPiA+PiAr fQo+ID4+ICsKPiA+PiAgLyogU2NhbiB0aGUgRFQgZm9yIGFueSBJVFMgbm9kZXMgYW5kIGNyZWF0 ZSBhIGxpc3Qgb2YgaG9zdCBJVFNlcyBvdXQgb2YgaXQuICovCj4gPj4gIHZvaWQgZ2ljdjNfaXRz X2R0X2luaXQoY29uc3Qgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlKQo+ID4+ICB7Cj4gPj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy5jCj4g Pj4gaW5kZXggMzY0ZDVmMC4uZGU3N2FhYSAxMDA2NDQKPiA+PiAtLS0gYS94ZW4vYXJjaC9hcm0v dmdpYy5jCj4gPj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMuYwo+ID4+IEBAIC0xNTYsNiArMTU2 LDkgQEAgaW50IGRvbWFpbl92Z2ljX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IG5yX3NwaXMpCj4gPj4gICAgICBmb3IgKCBpID0gMDsgaSA8IE5SX0dJQ19TR0k7IGkrKyApCj4g Pj4gICAgICAgICAgc2V0X2JpdChpLCBkLT5hcmNoLnZnaWMuYWxsb2NhdGVkX2lycXMpOwo+ID4+ Cj4gPj4gKyAgICBzcGluX2xvY2tfaW5pdCgmZC0+YXJjaC52Z2ljLml0c19kZXZpY2VzX2xvY2sp Owo+ID4+ICsgICAgSU5JVF9MSVNUX0hFQUQoJmQtPmFyY2gudmdpYy5pdHNfZGV2aWNlcyk7Cj4g Pj4gKwo+ID4+ICAgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4u aAo+ID4+IGluZGV4IDJkNmZiYjEuLjhjY2MzMmEgMTAwNjQ0Cj4gPj4gLS0tIGEveGVuL2luY2x1 ZGUvYXNtLWFybS9kb21haW4uaAo+ID4+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWlu LmgKPiA+PiBAQCAtMTA5LDYgKzEwOSw4IEBAIHN0cnVjdCBhcmNoX2RvbWFpbgo+ID4+ICAgICAg ICAgIH0gKnJkaXN0X3JlZ2lvbnM7Cj4gPj4gICAgICAgICAgaW50IG5yX3JlZ2lvbnM7ICAgICAg ICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIHJkaXN0IHJlZ2lvbnMgKi8KPiA+PiAgICAgICAg ICB1aW50MzJfdCByZGlzdF9zdHJpZGU7ICAgICAgICAgICAgICAvKiBSZS1EaXN0cmlidXRvciBz dHJpZGUgKi8KPiA+PiArICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGl0c19kZXZpY2VzOyAgICAg ICAvKiBkZXZpY2VzIG1hcHBlZCB0byBhbiBJVFMgKi8KPiA+PiArICAgICAgICBzcGlubG9ja190 IGl0c19kZXZpY2VzX2xvY2s7ICAgICAgICAvKiBwcm90ZWN0cyB0aGUgaXRzX2RldmljZXMgbGlz dCAqLwo+ID4+ICAjZW5kaWYKPiA+PiAgICAgIH0gdmdpYzsKPiA+Pgo+ID4+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2lj LWl0cy5oCj4gPj4gaW5kZXggNjhlNWY2My4uNTI1YTI5ZCAxMDA2NDQKPiA+PiAtLS0gYS94ZW4v aW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaAo+ID4+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v Z2ljLWl0cy5oCj4gPj4gQEAgLTkzLDkgKzkzLDE5IEBAIHN0cnVjdCBob3N0X2l0cyB7Cj4gPj4g ICAgICB2b2lkIF9faW9tZW0gKml0c19iYXNlOwo+ID4+ICAgICAgc3BpbmxvY2tfdCBjbWRfbG9j azsKPiA+PiAgICAgIHZvaWQgKmNtZF9idWY7Cj4gPj4gKyAgICBpbnQgaXR0ZV9zaXplOwo+ID4+ ICAgICAgYm9vbCBwdGE7Cj4gPj4gIH07Cj4gPj4KPiA+PiArc3RydWN0IGl0c19kZXZpY2VzIHsK PiA+PiArICAgIHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7Cj4gPj4gKyAgICBzdHJ1Y3QgaG9zdF9p dHMgKmh3X2l0czsKPiA+PiArICAgIHZvaWQgKml0dF9hZGRyOwo+ID4+ICsgICAgdWludDMyX3Qg Z3Vlc3RfZGV2aWQ7Cj4gPj4gKyAgICB1aW50MzJfdCBob3N0X2RldmlkOwo+ID4+ICsgICAgdWlu dDMyX3QgZXZlbnRpZHM7Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICBleHRlcm4gc3RydWN0IGxpc3Rf aGVhZCBob3N0X2l0c19saXN0Owo+ID4+Cj4gPj4gICNpZmRlZiBDT05GSUdfSEFTX0lUUwo+ID4+ IEBAIC0xMTksNiArMTI5LDEzIEBAIHZvaWQgZ2ljdjNfc2V0X3JlZGlzdF9hZGRyKHBhZGRyX3Qg YWRkcmVzcywgaW50IHJlZGlzdF9pZCk7Cj4gPj4gIC8qIE1hcCBhIGNvbGxlY3Rpb24gZm9yIHRo aXMgaG9zdCBDUFUgdG8gZWFjaCBob3N0IElUUy4gKi8KPiA+PiAgdm9pZCBnaWN2M19pdHNfc2V0 dXBfY29sbGVjdGlvbihpbnQgY3B1KTsKPiA+Pgo+ID4+ICsvKiBNYXAgYSBkZXZpY2Ugb24gdGhl IGhvc3QgYnkgYWxsb2NhdGluZyBhbiBJVFQgb24gdGhlIGhvc3QgKElUUykuCj4gPj4gKyAqICJi aXRzIiBzcGVjaWZpZXMgaG93IG1hbnkgZXZlbnRzIChpbnRlcnJ1cHRzKSB0aGlzIGRldmljZSB3 aWxsIG5lZWQuCj4gPj4gKyAqIFNldHRpbmcgInZhbGlkIiB0byBmYWxzZSBkZWFsbG9jYXRlcyB0 aGUgZGV2aWNlLgo+ID4+ICsgKi8KPiA+PiAraW50IGdpY3YzX2l0c19tYXBfZGV2aWNlKHN0cnVj dCBkb21haW4gKmQsIGludCBob3N0X2RldmlkLCBpbnQgZ3Vlc3RfZGV2aWQsCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgYml0cywgYm9vbCB2YWxpZCk7Cj4gPj4gKwo+ID4+ICAj ZWxzZQo+ID4+Cj4gPj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBnaWN2M19pdHNfZHRfaW5pdChjb25z dCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm5vZGUpCj4gPj4gQEAgLTE0Niw2ICsxNjMsMTEgQEAg c3RhdGljIGlubGluZSB2b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcihwYWRkcl90IGFkZHJlc3Ms IGludCByZWRpc3RfaWQpCj4gPj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBnaWN2M19pdHNfc2V0dXBf Y29sbGVjdGlvbihpbnQgY3B1KQo+ID4+ICB7Cj4gPj4gIH0KPiA+PiArc3RhdGljIGlubGluZSBp bnQgZ2ljdjNfaXRzX21hcF9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgaW50IGhvc3RfZGV2aWQs Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3Vlc3RfZGV2aWQsIGludCBiaXRz LCBib29sIHZhbGlkKQo+ID4+ICt7Cj4gPj4gKyAgICByZXR1cm4gLUVOT0RFVjsKPiA+PiArfQo+ ID4+Cj4gPj4gICNlbmRpZiAvKiBDT05GSUdfSEFTX0lUUyAqLwo+ID4+Cj4gPj4gLS0KPiA+PiAy LjkuMAo+ID4+Cj4gSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwg YW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2 aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90 aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVu dHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUg b3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lgo+IAo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gWGVuLWRldmVs IG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCj4gaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==