From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC v2][PATCH] arm-acpi: Add ITS Support for Dom0 Date: Fri, 9 Jun 2017 09:39:36 +0100 Message-ID: <8b1715ab-47c0-3f5b-775f-56e14dbe9187@arm.com> References: <6ed5eb3b-861c-e1bd-20a2-f24e55ce59e3@caviumnetworks.com> <7fbe04ae-7029-705f-90ae-2e7cb1e2feed@arm.com> <2a6f5dd6-68b8-91d3-b2aa-15568b53a1e2@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 1dJFSI-0007qq-Ej for xen-devel@lists.xenproject.org; Fri, 09 Jun 2017 08:39:42 +0000 In-Reply-To: <2a6f5dd6-68b8-91d3-b2aa-15568b53a1e2@caviumnetworks.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Manish Jaggi , "xen-devel@lists.xenproject.org" , Andre Przywara , Stefano Stabellini , Punit Agrawal Cc: nd@arm.com List-Id: xen-devel@lists.xenproject.org CgpPbiAwOS8wNi8yMDE3IDA3OjQ4LCBNYW5pc2ggSmFnZ2kgd3JvdGU6Cj4KPiBPbiA2LzgvMjAx NyA3OjI4IFBNLCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4+IEhpLAo+IEhlbGxvIEp1bGllbiwKCkhl bGxvLAoKPj4+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShpdHNfZGF0YSwgJmhvc3RfaXRzX2xp c3QsIGVudHJ5KQo+Pj4gKyAgICB7Cj4+Cj4+IFBvaW50bGVzcyB7Cj4+Cj4+PiArICAgICAgICBz aXplICs9IHNpemVvZihzdHJ1Y3QgYWNwaV9tYWR0X2dlbmVyaWNfdHJhbnNsYXRvcik7Cj4+PiAr ICAgIH0KPiBKdXN0IGZvciByZWFkYWJpbGl0eSBvZiBjb2RlLgoKWW91IGhhdmUgaW5kZW50YXRp b24gZm9yIHRoYXQuIFNvIEkgZG9uJ3QgdGhpbmsgaXQgaGVscHMuCgo+Pgo+PiBTYW1lIGhlcmUg KyBhZGQgYSBuZXdsaW5lLgo+Pgo+IFN1cmUuCj4+PiArICAgIHJldHVybiBzaXplOwo+Pj4gK30K Pj4+ICsKPj4+ICt1MzIgZ2ljdjNfaXRzX21ha2VfaHdkb21fbWFkdCh1OCAqYmFzZV9wdHIsIHUz MiBvZmZzZXQpCj4+PiArewo+Pj4gKyAgICBzdHJ1Y3QgYWNwaV9tYWR0X2dlbmVyaWNfdHJhbnNs YXRvciAqZ2ljX2l0czsKPj4+ICsgICAgY29uc3Qgc3RydWN0IGhvc3RfaXRzICppdHNfZGF0YTsK Pj4+ICsgICAgdTMyIHRhYmxlX2xlbiA9IG9mZnNldCwgc2l6ZTsKPj4+ICsKPj4+ICsgICAgLyog VXBkYXRlIEdJQyBJVFMgaW5mb3JtYXRpb24gaW4gaGFyZHdhcmUgZG9tYWluJ3MgTUFEVCAqLwo+ Pj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0c19kYXRhLCAmaG9zdF9pdHNfbGlzdCwgZW50 cnkpCj4+PiArICAgIHsKPj4+ICsgICAgICAgIHNpemUgPSBzaXplb2Yoc3RydWN0IGFjcGlfbWFk dF9nZW5lcmljX3RyYW5zbGF0b3IpOwo+Pj4gKyAgICAgICAgZ2ljX2l0cyA9IChzdHJ1Y3QgYWNw aV9tYWR0X2dlbmVyaWNfdHJhbnNsYXRvciAqKShiYXNlX3B0ciArCj4+PiB0YWJsZV9sZW4pOwo+ Pgo+PiBUaGlzIGxpbmUgaXMgbGlrZWx5IHRvbyBsb25nLgo+Pgo+IEkgd2lsbCBjaGVjayBpdC4K Pj4+ICsgICAgICAgIGdpY19pdHMtPmhlYWRlci50eXBlID0gQUNQSV9NQURUX1RZUEVfR0VORVJJ Q19UUkFOU0xBVE9SOwo+Pj4gKyAgICAgICAgZ2ljX2l0cy0+aGVhZGVyLmxlbmd0aCA9IHNpemU7 Cj4+PiArICAgICAgICBnaWNfaXRzLT5iYXNlX2FkZHJlc3MgPSBpdHNfZGF0YS0+YWRkcjsKPj4K Pj4gT24gdGhlIHByZXZpb3VzIHBhdGNoIHlvdSBoYWQ6Cj4+Cj4+IGdpY19pdHMtPnRyYW5zbGF0 aW9uX2lkID0gaXRzX2RhdGEtPnRyYW5zbGF0aW9uX2lkOwo+Pgo+PiBJIGFza2VkIHRvIGV4cGxh aW4gd2h5IHlvdSBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgSUQgYXMgdGhlIGhvc3QuIEFuZAo+PiBu b3cgeW91IGRyb3BwZWQgaXQuIFRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIHNwZWMgKFRhYmxlIDUt NjcgaW4gQUNQSQo+PiA2LjEpOgo+Pgo+PiAiR0lDIElUUyBJRC4gSW4gYSBzeXN0ZW0gd2l0aCBt dWx0aXBsZSBHSUMgSVRTIHVuaXRzLCB0aGlzIHZhbHVlIG11c3QKPj4gYmUgdW5pcXVlIHRvIGVh Y2ggb25lLiIKPj4KPj4gQnV0IGhlcmUsIHRoZSBJVFMgSUQgd2lsbCBub3QgYmUgdW5pcXVlLiBT byB3aHkgZGlkIHlvdSBkcm9wcGVkIGl0Pwo+Pgo+IFRoZSByZWFzb24gSSBkcm9wcGVkIGl0IGZy b20gaXRzX2RhdGEgYXMgSSB3YXMgbm90IHNldHRpbmcgaXQuIFNvIGl0Cj4gZG9lc24ndCBiZWxv bmcgdGhlcmUuCgpXaGVyZSB3b3VsZCBpdCBiZWxvbmcgdGhlbj8KClRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBnZW5lcmF0ZSBBQ1BJIHRhYmxlcyBmb3IgdGhlIGhhcmR3YXJlIGRvbWFpbi4KCgo+ IFdpbGwgdGhlIGJlbG93IGNvZGUgYmUgb2s/CgpJZiB5b3Ugbm90aWNlZCwgSSBkaWRuJ3Qgc2F5 IHRoaXMgY29kZSBpcyB3cm9uZy4gSW5zdGVhZCBJIGFza2VkIHdoeSB5b3UgCnVzZSB0aGUgc2Ft ZSBJRC4gTWVhbmluZywgaXMgdGhlcmUgYW55dGhpbmcgaW4gdGhlIERTRFQgcmVxdWlyaW5nIHRo aXMgCnZhbHVlPwoKPiArIGludCB0cmFzX2lkID0gMDsKCnVuc2lnbmVkLgoKPiArIGxpc3RfZm9y X2VhY2hfZW50cnkoaXRzX2RhdGEsICZob3N0X2l0c19saXN0LCBlbnRyeSkKPiArIHsKPiArICAg IGdpY19pdHMtPnRyYW5zbGF0aW9uX2lkID0gKyt0cmFuc19pZDsKCllvdSBzdGFydCB0aGUgdHJh bnNsYXRpb24gSUQgYXQgMS4gV2h5PwoKPgo+Pj4gKyAgICAgICAgdGFibGVfbGVuICs9ICBzaXpl Owo+Pj4gKyAgICB9Cj4+PiArICAgIHJldHVybiB0YWJsZV9sZW47Cj4+PiArfQo+Pj4gKwo+Pj4g IC8qCj4+PiAgICogQ3JlYXRlIHRoZSByZXNwZWN0aXZlIGd1ZXN0IERUIG5vZGVzIGZyb20gYSBs aXN0IG9mIGhvc3QgSVRTZXMuCj4+PiAgICogVGhpcyBjb3BpZXMgdGhlIHJlZyBwcm9wZXJ0eSwg c28gdGhlIGd1ZXN0IHNlZXMgdGhlIElUUyBhdCB0aGUgc2FtZQo+Pj4gYWRkcmVzcwo+Pj4gQEAg LTk5Miw2ICsxMDQ1LDI2IEBAIGludCBnaWN2M19pdHNfbWFrZV9od2RvbV9kdF9ub2Rlcyhjb25z dCBzdHJ1Y3QKPj4+IGRvbWFpbiAqZCwKPj4+ICAgICAgcmV0dXJuIHJlczsKPj4+ICB9Cj4+Pgo+ Pj4gK2ludCBnaWN2M19pdHNfYWNwaV9pbml0KHN0cnVjdCBhY3BpX3N1YnRhYmxlX2hlYWRlciAq aGVhZGVyLCBjb25zdAo+Pj4gdW5zaWduZWQgbG9uZyBlbmQpCj4+Cj4+IEFDUEkgaXMgYW4gb3B0 aW9uIGFuZCBpcyBub3QgYWJsZSBieSBkZWZhdWx0LiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQKPj4g dGhpcyBjb2RlIGJ1aWxkIHdpdGhvdXQgQUNQSS4gTGlrZWx5IHRoaXMgbWVhbnMgc3Vycm91bmRp bmcgd2l0aAo+PiAjaWZkZWYgQ09ORklHX0FDUEkuCj4gSSB3aWxsIGdldCBjb21waWxlZCBidXQg bm90IGNhbGxlZC4gRG8geW91IHN0aWxsIHdhbnQgdG8gcHV0IGlmZGVmLCBpCj4gY2FuIGFkZCB0 aGF0LgoKQWxsIEFDUElzIGZ1bmN0aW9ucyBhcmUgcHJvdGVjdGVkIGJ5IGlmZGVmLiBTbyB0aGlz IG9uZSBzaG91bGQgYmUgYXMgd2VsbC4KCj4+Cj4+PiArewo+Pj4gKyAgICBzdHJ1Y3QgYWNwaV9t YWR0X2dlbmVyaWNfdHJhbnNsYXRvciAqaXRzX2VudHJ5Owo+Pj4gKyAgICBzdHJ1Y3QgaG9zdF9p dHMgKml0c19kYXRhOwo+Pj4gKwo+Pj4gKyAgICBpdHNfZGF0YSA9IHh6YWxsb2Moc3RydWN0IGhv c3RfaXRzKTsKPj4+ICsgICAgaWYgKCFpdHNfZGF0YSkKPj4KPj4gQ29kaW5nIHN0eWxlLgo+Pgo+ IFN1cmUuCj4+PiArICAgICAgICByZXR1cm4gLTE7Cj4+PiArCj4+PiArICAgIGl0c19lbnRyeSA9 IChzdHJ1Y3QgYWNwaV9tYWR0X2dlbmVyaWNfdHJhbnNsYXRvciAqKWhlYWRlcjsKPj4+ICsgICAg aXRzX2RhdGEtPmFkZHIgID0gaXRzX2VudHJ5LT5iYXNlX2FkZHJlc3M7Cj4+PiArICAgIGl0c19k YXRhLT5zaXplID0gQUNQSV9HSUNWM19JVFNfTUVNX1NJWkU7Cj4+PiArCj4+PiArICAgIHNwaW5f bG9ja19pbml0KCZpdHNfZGF0YS0+Y21kX2xvY2spOwo+Pj4gKwo+Pj4gKyAgICBwcmludGsoIkdJ Q3YzOiBGb3VuZCBJVFMgQDB4JWx4XG4iLCBpdHNfZGF0YS0+YWRkcik7Cj4+PiArCj4+PiArICAg IGxpc3RfYWRkX3RhaWwoJml0c19kYXRhLT5lbnRyeSwgJmhvc3RfaXRzX2xpc3QpOwo+Pgo+PiBB cyBzYWlkIG9uIHYxLCBsaWtlbHkgeW91IGNvdWxkIHJlLXVzZSBmYWN0b3JpemUgYSBwYXJ0IG9m Cj4+IGdpY3YzX2l0c19kdF9pbml0IHRvIGF2b2lkIGltcGxlbWVudGluZyB0d2ljZSB0aGUgaW5p dGlhbGl6YXRpb24uCj4+Cj4gRm9yIHRoaXMgSSBoYXZlIGEgZGlmZmVyZW50IG9waW5pb24uCgpX aHkgZGlkbid0IHlvdSBzdGF0ZSBpdCBvbiB0aGUgcHJldmlvdXMgdmVyc2lvbj8gSSB1c3VhbGx5 IGludGVycHJldCBhIApub24tYW5zd2VyIGFzIGFuIGFja25vd2xlZGdtZW50LgoKPiBnaWN2M19p dHNfZHRfaW5pdCBoYXMgYSBsb29wICBkdF9mb3JfZWFjaF9jaGlsZF9ub2RlKG5vZGUsIGl0cykg d2hpbGUKPiBnaWN2M19pdHNfYWNwaV9pbml0IGlzIGEgY2FsbGJhY2suCj4gTW9yZW92ZXIsICBh cGFydCBmcm9tIHh6YWxsb2MgYW5kIGxpc3RfYWRkX3RhaWwgbW9zdCBvZiB0aGUgY29kZSBpcwo+ IGRpZmZlcmVudC4gc28gSU1ITyBrZWVwaW5nIHRoZW0gc2VwYXJhdGUgaXMgYmV0dGVyLgoKWW91 IHN0aWxsIHNldCBhZGRyIGFuZCBzaXplIGFzIGluIHRoZSBEVCBjb3VudGVycGFydC4gQWxzbywg dGhpcyBpcyBhIApjYWxsIHRvIGZvcmdldCB0byBpbml0aWFsaXplIGEgZmllbGQgaWYgd2UgZGVj aWRlZCB0byBleHRlbmQgdGhlIApzdHJ1Y3R1cmUgaG9zdF9pdHMuIFNvIEkgc3RpbGwgZG9uJ3Qg c2VlIGFueSByZWFzb24gdG8gb3Blbi1jb2RlIGl0IGFuZCAKdGFrZSB0aGUgcmlzayB0byBpbnRy b2R1Y2UgYnVnIGluIHRoZSBmdXR1cmUuLi4KCj4+IEFsc28gbmV3bGluZS4KPj4KPj4+ICsgICAg cmV0dXJuIDA7Cj4+PiArfQo+Pgo+PiBOZXdsaW5lIGhlcmUuCj4gU3VyZS4KPj4KPj4+ICAvKiBT Y2FuIHRoZSBEVCBmb3IgYW55IElUUyBub2RlcyBhbmQgY3JlYXRlIGEgbGlzdCBvZiBob3N0IElU U2VzIG91dCBvZgo+Pj4gaXQuICovCj4+PiAgdm9pZCBnaWN2M19pdHNfZHRfaW5pdChjb25zdCBz dHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm5vZGUpCj4+PiAgewo+Pj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS9naWMtdjMuYyBiL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+Pj4gaW5kZXggYzkyNzMw Ni4uZjBmNmQxMiAxMDA2NDQKPj4+IC0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+Pj4gKysr IGIveGVuL2FyY2gvYXJtL2dpYy12My5jCj4+PiBAQCAtMTMzMyw5ICsxMzMzLDggQEAgc3RhdGlj IGludCBnaWN2M19pb21lbV9kZW55X2FjY2Vzcyhjb25zdCBzdHJ1Y3QKPj4+IGRvbWFpbiAqZCkK Pj4+ICAgICAgICAgIHJldHVybiBpb21lbV9kZW55X2FjY2VzcyhkLCBtZm4sIG1mbiArIG5yKTsK Pj4+ICAgICAgfQo+Pj4KPj4+IC0gICAgcmV0dXJuIDA7Cj4+PiArICAgIHJldHVybiBnaWN2M19p dHNfZGVueV9hY2Nlc3MoZCk7Cj4+Cj4+IENvcHlpbmcgbXkgYW5zd2VyIGZyb20gdjEgZm9yIGNv bnZlbmllbmNlOgo+Pgo+PiAgICAgaWYgKCB2YmFzZSAhPSBJTlZBTElEX1BBRERSICkKPj4gICAg IHsKPj4gICAgICAgICBtZm4gPSB2YmFzZSA+PiBQQUdFX1NISUZUOwo+PiAgICAgICAgIG5yID0g RElWX1JPVU5EX1VQKGNzaXplLCBQQUdFX1NJWkUpOwo+PiAgICAgICAgIHJldHVybiBpb21lbV9k ZW55X2FjY2VzcyhkLCBtZm4sIG1mbiArIG5yKTsKPj4gICAgIH0KPj4KPj4gV2hlbiBHSUN2MyBp cyBhYmxlIHRvIHN1cHBvcnQgR0lDdjIsIHZiYXNlIHdpbGwgYmUgdmFsaWQgYW5kIHRoZSBjb2Rl Cj4+IHdpbGwgYmFpbCBvdXQgYWZ0ZXIgZGVueWluZyBhY2Nlc3MgdG8gdGhlIEdJQ1YuIFNvIHRo ZSBJVFMgcmVnaW9ucwo+PiB3aWxsIG5vdCBiZSBkZW5pZWQuCj4+Cj4gT2ssIGdvdCB5b3VyIHBv aW50LiBXb3VsZCB0aGUgYmVsb3cgY29kZSBiZSBvaz8KCkxHVE0uCgo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC9hcm0vZ2ljLXYzLmMgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiBpbmRleCBjOTI3 MzA2Li5hM2QxZWZmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+ICsrKyBi L3hlbi9hcmNoL2FybS9naWMtdjMuYwo+IEBAIC0xMzA4LDYgKzEzMDgsMTMgQEAgc3RhdGljIGlu dCBnaWN2M19pb21lbV9kZW55X2FjY2Vzcyhjb25zdCBzdHJ1Y3QKPiBkb21haW4gKmQpCj4gICAg ICBpZiAoIHJjICkKPiAgICAgICAgICByZXR1cm4gcmM7Cj4KPiArICAgIGlmICggZ2ljdjNfaXRz X2hvc3RfaGFzX2l0cygpICkKPiArICAgIHsKPiArICAgICAgICByYyA9IGdpY3YzX2l0c19kZW55 X2FjY2VzcyhkKTsKPiArICAgICAgICBpZiAoIHJjICkKPiArICAgICAgICAgICAgcmV0dXJuIHJj Owo+ICsgICAgfQo+ICsKPiAgICAgIGZvciAoIGkgPSAwOyBpIDwgZ2ljdjMucmRpc3RfY291bnQ7 IGkrKyApCj4gICAgICB7Cj4gICAgICAgICAgbWZuID0gZ2ljdjMucmRpc3RfcmVnaW9uc1tpXS5i YXNlID4+IFBBR0VfU0hJRlQ7Cj4+PiAgfQo+Pj4gLQo+Pgo+PiBBZ2Fpbiwgd2h5IGRpZCB5b3Ug ZHJvcCB0aGlzIG5ld2xpbmU/Cj4gSSB3aWxsIGZpeCBpdAo+Pgo+Pj4gICNpZmRlZiBDT05GSUdf QUNQSQo+Pj4gIHN0YXRpYyB2b2lkIF9faW5pdAo+Pj4gIGdpY19hY3BpX2FkZF9yZGlzdF9yZWdp b24ocGFkZHJfdCBiYXNlLCBwYWRkcl90IHNpemUsIGJvb2wKPj4+IHNpbmdsZV9yZGlzdCkKPj4+ IEBAIC0xMzc0LDYgKzEzNzMsNyBAQCBzdGF0aWMgaW50IGdpY3YzX21ha2VfaHdkb21fbWFkdChj b25zdCBzdHJ1Y3QKPj4+IGRvbWFpbiAqZCwgdTMyIG9mZnNldCkKPj4+ICAgICAgZm9yICggaSA9 IDA7IGkgPCBkLT5tYXhfdmNwdXM7IGkrKyApCj4+PiAgICAgIHsKPj4+ICAgICAgICAgIGdpY2Mg PSAoc3RydWN0IGFjcGlfbWFkdF9nZW5lcmljX2ludGVycnVwdCAqKShiYXNlX3B0ciArCj4+PiB0 YWJsZV9sZW4pOwo+Pj4gKwo+Pgo+PiBBcyBzYWlkIG9uIHYxLCBzcHVyaW91cyBjaGFuZ2UuCj4g Tm8uIEkgd2FudGVkIHRvIGFkZCBpdCBpbnRlbnRpb25hbGx5LiBmb3IgYSBiZXR0ZXIgY29kZSBy ZWFkYWJpbGl0eS4KCkEgZ2VuZXJhbCBhbmQgc2ltcGxlIHJ1bGUgaXMgdG8gc2VwYXJhdGUgY29k ZSBjbGVhbi11cCB3aXRoIG5ldyAKZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3QgYSBuZXcgZnVu Y3Rpb25hbGl0eSBhbmQgdGhlcmVmb3JlIHNob3VsZCBub3QgCmJlIHRoZXJlLgoKPj4KPj4+ICAg ICAgICAgIEFDUElfTUVNQ1BZKGdpY2MsIGhvc3RfZ2ljYywgc2l6ZSk7Cj4+PiAgICAgICAgICBn aWNjLT5jcHVfaW50ZXJmYWNlX251bWJlciA9IGk7Cj4+PiAgICAgICAgICBnaWNjLT51aWQgPSBp Owo+Pj4gQEAgLTEzOTksNyArMTM5OSw3IEBAIHN0YXRpYyBpbnQgZ2ljdjNfbWFrZV9od2RvbV9t YWR0KGNvbnN0IHN0cnVjdAo+Pj4gZG9tYWluICpkLCB1MzIgb2Zmc2V0KQo+Pj4gICAgICAgICAg Z2ljci0+bGVuZ3RoID0gZC0+YXJjaC52Z2ljLnJkaXN0X3JlZ2lvbnNbaV0uc2l6ZTsKPj4+ICAg ICAgICAgIHRhYmxlX2xlbiArPSBzaXplOwo+Pj4gICAgICB9Cj4+PiAtCj4+Cj4+IEFnYWluIHdo eSBkaWQgeW91IGRyb3AgdGhlIG5ld2xpbmU/Cj4gSSB3aWxsIGZpeCBpdAo+Pgo+Pj4gKyAgICB0 YWJsZV9sZW4gPSBnaWN2M19pdHNfbWFrZV9od2RvbV9tYWR0KGJhc2VfcHRyLCB0YWJsZV9sZW4p Owo+Pj4gICAgICByZXR1cm4gdGFibGVfbGVuOwo+Pj4gIH0KPj4+Cj4+PiBAQCAtMTU2Nyw2ICsx NTY3LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGdpY3YzX2FjcGlfaW5pdCh2b2lkKQo+Pj4KPj4+ ICAgICAgZ2ljdjMucmRpc3Rfc3RyaWRlID0gMDsKPj4+Cj4+PiArICAgIGFjcGlfdGFibGVfcGFy c2VfbWFkdChBQ1BJX01BRFRfVFlQRV9HRU5FUklDX1RSQU5TTEFUT1IsCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICBnaWN2M19pdHNfYWNwaV9pbml0LCAwKTsKPj4KPj4gQXMgc2FpZCBv biB2MSwgYWNwaV90YWJsZV9wYXJzZV9tYWR0IG1heSByZXR1cm4gYW4gZXJyb3IuIFdoeSB0aGlz IGlzCj4+IG5vdCBjaGVja2VkPwo+Pgo+IEkgbWlzc2VkIHRoYXQsIEkgd2lsbCBhZGQgaXQsCj4+ PiArCj4+PiAgICAgIC8qCj4+PiAgICAgICAqIEluIEFDUEksIDAgaXMgY29uc2lkZXJlZCBhcyB0 aGUgaW52YWxpZCBhZGRyZXNzLiBIb3dldmVyIHRoZQo+Pj4gcmVzdAo+Pj4gICAgICAgKiBvZiB0 aGUgaW5pdGlhbGl6YXRpb24gcmVseSBvbiB0aGUgaW52YWxpZCBhZGRyZXNzIHRvIGJlCj4+PiBA QCAtMTU4NSw2ICsxNTg4LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGdpY3YzX2FjcGlfaW5pdCh2 b2lkKQo+Pj4gICAgICBlbHNlCj4+PiAgICAgICAgICB2c2l6ZSA9IEdVRVNUX0dJQ0NfU0laRTsK Pj4+Cj4+PiArCj4+Cj4+IEFzIHNhaWQgb24gdjEsIHRoaXMgaXMgYSBzcHVyaW91cyBuZXdsaW5l Lgo+IG9rCj4+Cj4+PiAgfQo+Pj4gICNlbHNlCj4+PiAgc3RhdGljIHZvaWQgX19pbml0IGdpY3Yz X2FjcGlfaW5pdCh2b2lkKSB7IH0KPj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJt L2dpY192M19pdHMuaAo+Pj4gYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAo+Pj4g aW5kZXggZDJhM2U1My4uYjcyYWVjMiAxMDA2NDQKPj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vZ2ljX3YzX2l0cy5oCj4+PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMu aAo+Pj4gQEAgLTEwNSw2ICsxMDUsNyBAQAo+Pj4KPj4+ICAjaW5jbHVkZSA8eGVuL2RldmljZV90 cmVlLmg+Cj4+PiAgI2luY2x1ZGUgPHhlbi9yYnRyZWUuaD4KPj4+ICsjaW5jbHVkZSA8eGVuL2Fj cGkuaD4KPj4+Cj4+PiAgI2RlZmluZSBIT1NUX0lUU19GTFVTSF9DTURfUVVFVUUgICAgICAgICgx VSA8PCAwKQo+Pj4gICNkZWZpbmUgSE9TVF9JVFNfVVNFU19QVEEgICAgICAgICAgICAgICAoMVUg PDwgMSkKPj4+IEBAIC0xMzQsNiArMTM1LDcgQEAgZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaG9z dF9pdHNfbGlzdDsKPj4+Cj4+PiAgLyogUGFyc2UgdGhlIGhvc3QgRFQgYW5kIHBpY2sgdXAgYWxs IGhvc3QgSVRTZXMuICovCj4+PiAgdm9pZCBnaWN2M19pdHNfZHRfaW5pdChjb25zdCBzdHJ1Y3Qg ZHRfZGV2aWNlX25vZGUgKm5vZGUpOwo+Pj4gK2ludCAgZ2ljdjNfaXRzX2FjcGlfaW5pdChzdHJ1 Y3QgYWNwaV9zdWJ0YWJsZV9oZWFkZXIgKmhlYWRlciwgY29uc3QKPj4+IHVuc2lnbmVkIGxvbmcg ZW5kKTsKPj4KPj4gVGhpcyB3aWxsIGxpa2VseSBuZWVkIGFuICNpZmRlZiBDT05GSUdfQUNQSS4g QW5kIGFsc28gYSBzdHViIHdvdWxkIGJlCj4+IHJlcXVpcmVkIGlmIElUUyBpcyBkaXNhYmxlZC4K Pj4KPiBTb3JyeSBkaWRudCBnb3QgeW91ciBwb2ludC4gb24gaWZkZWYuCgpMb29rIGhvdyBnaWN2 M19pdHNfZHRfaW5pdCBoYXMgYmVlbiBpbnRyb2R1Y2VkLiBUaGVyZSBpcyBhIHN0dWIgZm9yIHdo ZW4gCklUUyBpcyBub3QgYnVpbHQtaW4uIEZ1cnRoZXJtb3JlLCB0aGUgZnVuY3Rpb24gaXMgQUNQ SSBzcGVjaWZpYyBhcmUgCnRoZXJlZm9yZSBzaG91bGQgYmUgcHJvdGVjdGVkIHdpdGggI2lmZGVm IENPTkZJR19BQ1BJLgoKPiBJIGNhbiBhZGQgYSBjaGVjayBnaWN2M19pdHNfaG9zdF9oYXNfaXRz KCkgYmVmb3JlIGNhbGxpbmcKPiBnaWN2M19pdHNfYWNwaV9pbml0LCB3b3VsZCB0aGF0IGJlIG9r PwoKZ2ljdjNfaXRzX2hvc3RfaGFzX2l0cyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgYXMgaXQg aXMgcmVseSBvbiB0aGUgCmxpc3Qgb2YgSVRTIHRvIGJlIHBvcHVsYXRlZC4gSG93ZXZlciwgdGhp cyB3aWxsIGJlIHBvcHVsYXRlZCBieSAKZ2ljdjNfaXRzX2FjcGlfaW5pdC4uLgoKUmVnYXJkcywK Ci0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=