From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v2 03/27] ARM: GICv3 ITS: allocate device and collection table Date: Tue, 21 Mar 2017 16:29:56 -0700 (PDT) Message-ID: References: <20170316112030.20419-1-andre.przywara@arm.com> <20170316112030.20419-4-andre.przywara@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 1cqTE4-0005aq-9w for xen-devel@lists.xenproject.org; Tue, 21 Mar 2017 23:30:04 +0000 In-Reply-To: <20170316112030.20419-4-andre.przywara@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 , Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAxNiBNYXIgMjAxNywgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gRWFjaCBJVFMgbWFw cyBhIHBhaXIgb2YgYSBEZXZpY2VJRCAoZm9yIGluc3RhbmNlIGRlcml2ZWQgZnJvbSBhIFBDSQo+ IGIvZC9mIHRyaXBsZXQpIGFuZCBhbiBFdmVudElEICh0aGUgTVNJIHBheWxvYWQgb3IgaW50ZXJy dXB0IElEKSB0byBhCj4gcGFpciBvZiBMUEkgbnVtYmVyIGFuZCBjb2xsZWN0aW9uIElELCB3aGlj aCBwb2ludHMgdG8gdGhlIHRhcmdldCBDUFUuCj4gVGhpcyBtYXBwaW5nIGlzIHN0b3JlZCBpbiB0 aGUgZGV2aWNlIGFuZCBjb2xsZWN0aW9uIHRhYmxlcywgd2hpY2ggc29mdHdhcmUKPiBoYXMgdG8g cHJvdmlkZSBmb3IgdGhlIElUUyB0byB1c2UuCj4gQWxsb2NhdGUgdGhlIHJlcXVpcmVkIG1lbW9y eSBhbmQgaGFuZCBpdCB0byB0aGUgSVRTLgo+IFRoZSBtYXhpbXVtIG51bWJlciBvZiBkZXZpY2Vz IGlzIGxpbWl0ZWQgdG8gYSBjb21waWxlLXRpbWUgY29uc3RhbnQKPiBleHBvc2VkIGluIEtjb25m aWcuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFy bS5jb20+Cj4gLS0tCj4gIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIHwgICA4 ICsrCj4gIHhlbi9hcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDE0ICsrKysKPiAg eGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYyAgICAgICAgICAgfCAxNjMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9hcmNoL2FybS9naWMtdjMuYyAgICAgICAgICAg ICAgIHwgICAzICsKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggICAgfCAgNjMg KysrKysrKysrKysrKy0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAyNTAgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93biBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4gaW5kZXggNjE5 MDE2ZC4uMDY4ZDExNiAxMDA2NDQKPiAtLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93bgo+ICsrKyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4gQEAg LTExNTgsNiArMTE1OCwxNCBAQCBiYXNlZCBpbnRlcnJ1cHRzLiBBbnkgaGlnaGVyIElSUXMgd2ls bCBiZSBhdmFpbGFibGUgZm9yIHVzZSB2aWEgUENJIE1TSS4KPiAgIyMjIG1heGNwdXMKPiAgPiBg PSA8aW50ZWdlcj5gCj4gIAo+ICsjIyMgbWF4XF9pdHNcX2RldmljZVxfYml0cwo+ICs+IGA9IDxp bnRlZ2VyPmAKPiArCj4gK1NwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGV2aWNlcyB1 c2luZyBNU0lzIG9uIHRoZSBBUk0gR0lDdjMgSVRTCj4gK2NvbnRyb2xsZXIgdG8gYWxsb2NhdGUg dGFibGUgZW50cmllcyBmb3IuIEVhY2ggdGFibGUgZW50cnkgdXNlcyBhIGhhcmR3YXJlCj4gK3Nw ZWNpZmljIHNpemUsIHR5cGljYWxseSA4IG9yIDE2IGJ5dGVzLgo+ICtEZWZhdWx0cyB0byAxMCBi aXRzICh0byBjb3ZlciBhdCBtb3N0IDEwMjQgZGV2aWNlcykuCj4gKwo+ICAjIyMgbWF4XF9scGlc X2JpdHMKPiAgPiBgPSA8aW50ZWdlcj5gCj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v S2NvbmZpZyBiL3hlbi9hcmNoL2FybS9LY29uZmlnCj4gaW5kZXggODZmN2I1My4uMGQ1MDE1NiAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vS2NvbmZpZwo+ICsrKyBiL3hlbi9hcmNoL2FybS9L Y29uZmlnCj4gQEAgLTY0LDYgKzY0LDIwIEBAIGNvbmZpZyBNQVhfUEhZU19MUElfQklUUwo+ICAg ICAgICAgICAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBvbiB0aGUgY29tbWFuZCBsaW5lIHdpdGgg dGhlIG1heF9scGlfYml0cwo+ICAgICAgICAgICAgcGFyYW1ldGVyLgo+ICAKPiArY29uZmlnIE1B WF9QSFlTX0lUU19ERVZJQ0VfQklUUwo+ICsgICAgICAgIGRlcGVuZHMgb24gSEFTX0lUUwo+ICsg ICAgICAgIGludCAiTnVtYmVyIG9mIGRldmljZSBiaXRzIHRoZSBJVFMgc3VwcG9ydHMiCj4gKyAg ICAgICAgcmFuZ2UgMSAzMgo+ICsgICAgICAgIGRlZmF1bHQgIjEwIgo+ICsgICAgICAgIGhlbHAK PiArICAgICAgICAgIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGV2aWNlcyB3aGlj aCB3YW50IHRvIHVzZSB0aGUgSVRTLgo+ICsgICAgICAgICAgWGVuIG5lZWRzIHRvIGFsbG9jYXRl cyBtZW1vcnkgZm9yIHRoZSB3aG9sZSByYW5nZSB2ZXJ5IGVhcmx5Lgo+ICsgICAgICAgICAgVGhl IGFsbG9jYXRpb24gc2NoZW1lIG1heSBiZSBzcGFyc2UsIHNvIGEgbXVjaCBsYXJnZXIgbnVtYmVy IG11c3QKPiArICAgICAgICAgIGJlIHN1cHBvcnRlZCB0byBjb3ZlciBkZXZpY2VzIHdpdGggYSBo aWdoIGJ1cyBudW1iZXIgb3IgdGhvc2Ugb24KPiArICAgICAgICAgIHNlcGFyYXRlIGJ1cyBzZWdt ZW50cy4KPiArICAgICAgICAgIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gb24gdGhlIGNvbW1hbmQg bGluZSB3aXRoIHRoZQo+ICsgICAgICAgICAgbWF4X2l0c19kZXZpY2VfYml0cyBwYXJhbWV0ZXIu Cj4gKwo+ICBlbmRtZW51Cj4gIAo+ICBtZW51ICJBUk0gZXJyYXRhIHdvcmthcm91bmQgdmlhIHRo ZSBhbHRlcm5hdGl2ZSBmcmFtZXdvcmsiCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMt djMtaXRzLmMgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jCj4gaW5kZXggNDA1NmU1Yi4uOTk4 MmZlOSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jCj4gKysrIGIveGVu L2FyY2gvYXJtL2dpYy12My1pdHMuYwo+IEBAIC0xOSw4ICsxOSwxMCBAQAo+ICAgKi8KPiAgCj4g ICNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vbW0uaD4KPiAgI2luY2x1ZGUg PGFzbS9naWNfdjNfZGVmcy5oPgo+ICAjaW5jbHVkZSA8YXNtL2dpY192M19pdHMuaD4KPiArI2lu Y2x1ZGUgPGFzbS9pby5oPgo+ICAKPiAgTElTVF9IRUFEKGhvc3RfaXRzX2xpc3QpOwo+ICAKPiBA QCAtMjksNiArMzEsMTY3IEBAIGJvb2wgZ2ljdjNfaXRzX2hvc3RfaGFzX2l0cyh2b2lkKQo+ICAg ICAgcmV0dXJuICFsaXN0X2VtcHR5KCZob3N0X2l0c19saXN0KTsKPiAgfQo+ICAKPiArI2RlZmlu ZSBCQVNFUl9BVFRSX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+ICsgICAgICAgICgoMHgzVUwgPDwgR0lUU19CQVNFUl9TSEFSRUFCSUxJVFlfU0hJRlQp ICAgICAgICAgICAgICAgfCBcCj4gKyAgICAgICAgICgweDdVTCA8PCBHSVRTX0JBU0VSX09VVEVS X0NBQ0hFQUJJTElUWV9TSElGVCkgICAgICAgICB8IFwKPiArICAgICAgICAgKDB4N1VMIDw8IEdJ VFNfQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX1NISUZUKSkKPiArI2RlZmluZSBCQVNFUl9ST19N QVNLICAgKEdFTk1BU0soNTgsIDU2KSB8IEdFTk1BU0soNTIsIDQ4KSkKPiArCj4gKy8qIENoZWNr IHRoYXQgdGhlIHBoeXNpY2FsIGFkZHJlc3MgY2FuIGJlIGVuY29kZWQgaW4gdGhlIFBST1BCQVNF UiByZWdpc3Rlci4gKi8KPiArc3RhdGljIGJvb2wgY2hlY2tfcHJvcGJhc2VyX3BoeXNfYWRkcih2 b2lkICp2YWRkciwgdW5zaWduZWQgaW50IHBhZ2VfYml0cykKPiArewo+ICsgICAgcGFkZHJfdCBw YWRkciA9IHZpcnRfdG9fbWFkZHIodmFkZHIpOwo+ICsKPiArICAgIHJldHVybiAoIShwYWRkciAm IH5HRU5NQVNLKHBhZ2VfYml0cyA8IDE2ID8gNDcgOiA1MSwgcGFnZV9iaXRzKSkpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdWludDY0X3QgZW5jb2RlX3Byb3BiYXNlcl9waHlzX2FkZHIocGFkZHJfdCBh ZGRyLCB1bnNpZ25lZCBpbnQgcGFnZV9iaXRzKQo+ICt7Cj4gKyAgICB1aW50NjRfdCByZXQgPSBh ZGRyICYgR0VOTUFTSyg0NywgcGFnZV9iaXRzKTsKPiArCj4gKyAgICBpZiAoIHBhZ2VfYml0cyA8 IDE2ICkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgIC8qIEZvciA2NEsgcGFnZXMg YWRkcmVzcyBiaXRzIDUxLTQ4IGFyZSBlbmNvZGVkIGluIGJpdHMgMTUtMTIuICovCj4gKyAgICBy ZXR1cm4gcmV0IHwgKChhZGRyICYgR0VOTUFTSyg1MSwgNDgpKSA+PiAoNDggLSAxMikpOwo+ICt9 Cj4gKwo+ICsvKiBUaGUgSVRTIEJBU0UgcmVnaXN0ZXJzIHdvcmsgd2l0aCBwYWdlIHNpemVzIG9m IDRLLCAxNksgb3IgNjRLLiAqLwo+ICsjZGVmaW5lIEJBU0VSX1BBR0VfQklUUyhzeikgKChzeikg KiAyICsgMTIpCj4gKwo+ICtzdGF0aWMgaW50IGl0c19tYXBfYmFzZXIodm9pZCBfX2lvbWVtICpi YXNlcmVnLCB1aW50NjRfdCByZWdjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IG5yX2l0ZW1zKQo+ICt7Cj4gKyAgICB1aW50NjRfdCBhdHRyLCByZWc7Cj4gKyAgICB1 bnNpZ25lZCBpbnQgZW50cnlfc2l6ZSA9IEdJVFNfQkFTRVJfRU5UUllfU0laRShyZWdjKTsKPiAr ICAgIHVuc2lnbmVkIGludCBwYWdlc3ogPSAyLCBvcmRlciwgdGFibGVfc2l6ZTsKPiArICAgIHZv aWQgKmJ1ZmZlcjsKPiArCj4gKyAgICBhdHRyICA9IEdJQ19CQVNFUl9Jbm5lclNoYXJlYWJsZSA8 PCBHSVRTX0JBU0VSX1NIQVJFQUJJTElUWV9TSElGVDsKPiArICAgIGF0dHIgfD0gR0lDX0JBU0VS X0NBQ0hFX1NhbWVBc0lubmVyIDw8IEdJVFNfQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZU Owo+ICsgICAgYXR0ciB8PSBHSUNfQkFTRVJfQ0FDSEVfUmFXYVdiIDw8IEdJVFNfQkFTRVJfSU5O RVJfQ0FDSEVBQklMSVRZX1NISUZUOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBTZXR1cCB0aGUg QkFTRSByZWdpc3RlciB3aXRoIHRoZSBhdHRyaWJ1dGVzIHRoYXQgd2UgbGlrZS4gVGhlbiByZWFk Cj4gKyAgICAgKiBpdCBiYWNrIGFuZCBzZWUgd2hhdCBzdGlja3MgKHBhZ2Ugc2l6ZSwgY2FjaGVh YmlsaXR5IGFuZCBzaGFyZWFiaWxpdHkKPiArICAgICAqIGF0dHJpYnV0ZXMpLCByZXRyeWluZyBp ZiBuZWNlc3NhcnkuCj4gKyAgICAgKi8KPiArcmV0cnk6Cj4gKyAgICB0YWJsZV9zaXplID0gUk9V TkRVUChucl9pdGVtcyAqIGVudHJ5X3NpemUsIEJJVChCQVNFUl9QQUdFX0JJVFMocGFnZXN6KSkp Owo+ICsgICAgLyogVGhlIEJBU0UgcmVnaXN0ZXJzIHN1cHBvcnQgYXQgbW9zdCAyNTYgcGFnZXMu ICovCj4gKyAgICB0YWJsZV9zaXplID0gbWluKHRhYmxlX3NpemUsIDI1NlUgPDwgQkFTRVJfUEFH RV9CSVRTKHBhZ2VzeikpOwo+ICsgICAgLyogVGhlIG1lbW9yeSBibG9jayBtdXN0IGJlIGFsaWdu ZWQgdG8gdGhlIHJlcXVlc3RlZCBwYWdlIHNpemUuICovCj4gKyAgICBvcmRlciA9IG1heChnZXRf b3JkZXJfZnJvbV9ieXRlcyh0YWJsZV9zaXplKSwgcGFnZXN6ICogMik7Cj4gKwo+ICsgICAgYnVm ZmVyID0gYWxsb2NfeGVuaGVhcF9wYWdlcyhvcmRlciwgMCk7Cj4gKyAgICBpZiAoICFidWZmZXIg KQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsKPiArICAgIGlmICggIWNoZWNrX3Byb3Bi YXNlcl9waHlzX2FkZHIoYnVmZmVyLCBCQVNFUl9QQUdFX0JJVFMocGFnZXN6KSkgKQo+ICsgICAg ewo+ICsgICAgICAgIGZyZWVfeGVuaGVhcF9wYWdlcyhidWZmZXIsIDApOwo+ICsgICAgICAgIHJl dHVybiAtRVJBTkdFOwo+ICsgICAgfQo+ICsgICAgbWVtc2V0KGJ1ZmZlciwgMCwgdGFibGVfc2l6 ZSk7Cj4gKwo+ICsgICAgcmVnICA9IGF0dHI7Cj4gKyAgICByZWcgfD0gKHBhZ2VzeiA8PCBHSVRT X0JBU0VSX1BBR0VfU0laRV9TSElGVCk7Cj4gKyAgICByZWcgfD0gKHRhYmxlX3NpemUgPj4gQkFT RVJfUEFHRV9CSVRTKHBhZ2VzeikpIC0gMTsKPiArICAgIHJlZyB8PSByZWdjICYgQkFTRVJfUk9f TUFTSzsKPiArICAgIHJlZyB8PSBHSVRTX1ZBTElEX0JJVDsKPiArICAgIHJlZyB8PSBlbmNvZGVf cHJvcGJhc2VyX3BoeXNfYWRkcih2aXJ0X3RvX21hZGRyKGJ1ZmZlciksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFTRVJfUEFHRV9CSVRTKHBhZ2VzeikpOwo+ICsK PiArICAgIHdyaXRlcV9yZWxheGVkKHJlZywgYmFzZXJlZyk7Cj4gKyAgICByZWdjID0gcmVhZHFf cmVsYXhlZChiYXNlcmVnKTsKPiArCj4gKyAgICAvKiBUaGUgaG9zdCBkaWRuJ3QgbGlrZSBvdXIg YXR0cmlidXRlcywganVzdCB1c2Ugd2hhdCBpdCByZXR1cm5lZC4gKi8KPiArICAgIGlmICggKHJl Z2MgJiBCQVNFUl9BVFRSX01BU0spICE9IGF0dHIgKQo+ICsgICAgewo+ICsgICAgICAgIC8qIElm IHdlIGNhbid0IG1hcCBpdCBzaGFyZWFibGUsIGRyb3AgY2FjaGVhYmlsaXR5IGFzIHdlbGwuICov Cj4gKyAgICAgICAgaWYgKCAocmVnYyAmIEdJVFNfQkFTRVJfU0hBUkVBQklMSVRZX01BU0spID09 IEdJQ19CQVNFUl9Ob25TaGFyZWFibGUgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcmVn YyAmPSB+R0lUU19CQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfTUFTSzsKPiArICAgICAgICAgICAg d3JpdGVxX3JlbGF4ZWQocmVnYywgYmFzZXJlZyk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGF0 dHIgPSByZWdjICYgQkFTRVJfQVRUUl9NQVNLOwo+ICsgICAgfQo+ICsgICAgaWYgKCAocmVnYyAm IEdJVFNfQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX01BU0spIDw9IEdJQ19CQVNFUl9DQUNIRV9u QyApCj4gKyAgICAgICAgY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3ZhX3JhbmdlKGJ1ZmZl ciwgdGFibGVfc2l6ZSk7Cj4gKwo+ICsgICAgLyogSWYgdGhlIGhvc3QgYWNjZXB0ZWQgb3VyIHBh Z2Ugc2l6ZSwgd2UgYXJlIGRvbmUuICovCj4gKyAgICBpZiAoICgocmVnYyA+PiBHSVRTX0JBU0VS X1BBR0VfU0laRV9TSElGVCkgJiAweDNVTCkgPT0gcGFnZXN6ICkKPiArICAgICAgICByZXR1cm4g MDsKPiArCj4gKyAgICBmcmVlX3hlbmhlYXBfcGFnZXMoYnVmZmVyLCBvcmRlcik7Cj4gKwo+ICsg ICAgaWYgKCBwYWdlc3otLSA+IDAgKQo+ICsgICAgICAgIGdvdG8gcmV0cnk7Cj4gKwo+ICsgICAg LyogTm9uZSBvZiB0aGUgcGFnZSBzaXplcyB3YXMgYWNjZXB0ZWQsIGdpdmUgdXAgKi8KPiArICAg IHJldHVybiAtRUlOVkFMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IG1heF9pdHNf ZGV2aWNlX2JpdHMgPSBDT05GSUdfTUFYX1BIWVNfSVRTX0RFVklDRV9CSVRTOwo+ICtpbnRlZ2Vy X3BhcmFtKCJtYXhfaXRzX2RldmljZV9iaXRzIiwgbWF4X2l0c19kZXZpY2VfYml0cyk7Cj4gKwo+ ICtzdGF0aWMgaW50IGdpY3YzX2l0c19pbml0X3NpbmdsZV9pdHMoc3RydWN0IGhvc3RfaXRzICpo d19pdHMpCj4gK3sKPiArICAgIHVpbnQ2NF90IHJlZzsKPiArICAgIGludCBpOwo+ICsgICAgdW5z aWduZWQgaW50IGRldmlkX2JpdHM7Cj4gKwo+ICsgICAgaHdfaXRzLT5pdHNfYmFzZSA9IGlvcmVt YXBfbm9jYWNoZShod19pdHMtPmFkZHIsIGh3X2l0cy0+c2l6ZSk7Cj4gKyAgICBpZiAoICFod19p dHMtPml0c19iYXNlICkKPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICByZWcg PSByZWFkcV9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX1RZUEVSKTsKPiArICAgIGRl dmlkX2JpdHMgPSBHSVRTX1RZUEVSX0RFVklDRV9JRF9CSVRTKHJlZyk7Cj4gKyAgICBkZXZpZF9i aXRzID0gbWluKGRldmlkX2JpdHMsIG1heF9pdHNfZGV2aWNlX2JpdHMpOwo+ICsKPiArICAgIGZv ciAoIGkgPSAwOyBpIDwgR0lUU19CQVNFUl9OUl9SRUdTOyBpKysgKQo+ICsgICAgewo+ICsgICAg ICAgIHZvaWQgX19pb21lbSAqYmFzZXJlZyA9IGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX0JBU0VS MCArIGkgKiA4Owo+ICsgICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwo+ICsKPiArICAgICAgICBy ZWcgPSByZWFkcV9yZWxheGVkKGJhc2VyZWcpOwo+ICsgICAgICAgIHR5cGUgPSAocmVnICYgR0lU U19CQVNFUl9UWVBFX01BU0spID4+IEdJVFNfQkFTRVJfVFlQRV9TSElGVDsKPiArICAgICAgICBz d2l0Y2ggKCB0eXBlICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgY2FzZSBHSVRTX0JBU0VSX1RZ UEVfTk9ORToKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgY2FzZSBHSVRTX0JB U0VSX1RZUEVfREVWSUNFOgo+ICsgICAgICAgICAgICBpdHNfbWFwX2Jhc2VyKGJhc2VyZWcsIHJl ZywgQklUKGRldmlkX2JpdHMpKTsKCkNoZWNrIHJldHVybiB2YWx1ZSBvZiBpdHNfbWFwX2Jhc2Vy PwoKCj4gKyAgICAgICAgICAgIGJyZWFrOwoKPiArICAgICAgICBjYXNlIEdJVFNfQkFTRVJfVFlQ RV9DT0xMRUNUSU9OOgo+ICsgICAgICAgICAgICBpdHNfbWFwX2Jhc2VyKGJhc2VyZWcsIHJlZywg TlJfQ1BVUyk7CgpXZSBzaG91bGQgdXNlIG51bV9wb3NzaWJsZV9jcHVzKCkgaW5zdGVhZCBvZiBO Ul9DUFVTIGhlcmUKCgo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAvKiBJbiBjYXNl IHRoaXMgaXMgYSBHSUN2NCwgcHJvdmlkZSBhIChkdW1teSkgdlBFIHRhYmxlIGFzIHdlbGwuICov Cj4gKyAgICAgICAgY2FzZSBHSVRTX0JBU0VSX1RZUEVfVkNQVToKPiArICAgICAgICAgICAgaXRz X21hcF9iYXNlcihiYXNlcmVnLCByZWcsIDEpOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAg ICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICB9Cj4gKyAg ICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBnaWN2M19pdHNfaW5pdCh2 b2lkKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0czsKPiArICAgIGludCByZXQ7 Cj4gKwo+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShod19pdHMsICZob3N0X2l0c19saXN0LCBl bnRyeSkgewo+ICsgICAgICAgIHJldCA9IGdpY3YzX2l0c19pbml0X3NpbmdsZV9pdHMoaHdfaXRz KTsKPiArICAgICAgICBpZiAoIHJldCApCj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gIC8qIFNjYW4gdGhlIERUIGZvciBh bnkgSVRTIG5vZGVzIGFuZCBjcmVhdGUgYSBsaXN0IG9mIGhvc3QgSVRTZXMgb3V0IG9mIGl0LiAq Lwo+ICB2b2lkIGdpY3YzX2l0c19kdF9pbml0KGNvbnN0IHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAq bm9kZSkKPiAgewo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMgYi94ZW4vYXJj aC9hcm0vZ2ljLXYzLmMKPiBpbmRleCBlZDc4MzYzLi5jYzFlMjE5IDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL2FybS9naWMtdjMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+IEBAIC0x NTkwLDYgKzE1OTAsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2M19pbml0KHZvaWQpCj4gICAg ICBzcGluX2xvY2soJmdpY3YzLmxvY2spOwo+ICAKPiAgICAgIGdpY3YzX2Rpc3RfaW5pdCgpOwo+ ICsgICAgcmVzID0gZ2ljdjNfaXRzX2luaXQoKTsKPiArICAgIGlmICggcmVzICkKPiArICAgICAg ICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIkdJQ3YzOiBJVFM6IGluaXRpYWxpemF0aW9uIGZhaWxl ZDogJWRcbiIsIHJlcyk7Cj4gICAgICByZXMgPSBnaWN2M19jcHVfaW5pdCgpOwo+ICAgICAgZ2lj djNfaHlwX2luaXQoKTsKPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2lj X3YzX2l0cy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiBpbmRleCAyMTlk MTA5Li5hNmMwYWNjIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0 cy5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiBAQCAtMjAsNiAr MjAsNjAgQEAKPiAgI2lmbmRlZiBfX0FTTV9BUk1fSVRTX0hfXwo+ICAjZGVmaW5lIF9fQVNNX0FS TV9JVFNfSF9fCj4gIAo+ICsjZGVmaW5lIEdJVFNfQ1RMUiAgICAgICAgICAgICAgICAgICAgICAg MHgwMDAKPiArI2RlZmluZSBHSVRTX0lJRFIgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0Cj4g KyNkZWZpbmUgR0lUU19UWVBFUiAgICAgICAgICAgICAgICAgICAgICAweDAwOAo+ICsjZGVmaW5l IEdJVFNfQ0JBU0VSICAgICAgICAgICAgICAgICAgICAgMHgwODAKPiArI2RlZmluZSBHSVRTX0NX UklURVIgICAgICAgICAgICAgICAgICAgIDB4MDg4Cj4gKyNkZWZpbmUgR0lUU19DUkVBRFIgICAg ICAgICAgICAgICAgICAgICAweDA5MAo+ICsjZGVmaW5lIEdJVFNfQkFTRVJfTlJfUkVHUyAgICAg ICAgICAgICAgOAo+ICsjZGVmaW5lIEdJVFNfQkFTRVIwICAgICAgICAgICAgICAgICAgICAgMHgx MDAKPiArI2RlZmluZSBHSVRTX0JBU0VSMSAgICAgICAgICAgICAgICAgICAgIDB4MTA4Cj4gKyNk ZWZpbmUgR0lUU19CQVNFUjIgICAgICAgICAgICAgICAgICAgICAweDExMAo+ICsjZGVmaW5lIEdJ VFNfQkFTRVIzICAgICAgICAgICAgICAgICAgICAgMHgxMTgKPiArI2RlZmluZSBHSVRTX0JBU0VS NCAgICAgICAgICAgICAgICAgICAgIDB4MTIwCj4gKyNkZWZpbmUgR0lUU19CQVNFUjUgICAgICAg ICAgICAgICAgICAgICAweDEyOAo+ICsjZGVmaW5lIEdJVFNfQkFTRVI2ICAgICAgICAgICAgICAg ICAgICAgMHgxMzAKPiArI2RlZmluZSBHSVRTX0JBU0VSNyAgICAgICAgICAgICAgICAgICAgIDB4 MTM4Cj4gKwo+ICsvKiBSZWdpc3RlciBiaXRzICovCj4gKyNkZWZpbmUgR0lUU19WQUxJRF9CSVQg ICAgICAgICAgICAgICAgICBCSVRfVUxMKDYzKQo+ICsKPiArI2RlZmluZSBHSVRTX0NUTFJfUVVJ RVNDRU5UICAgICAgICAgICAgIEJJVCgzMSkKPiArI2RlZmluZSBHSVRTX0NUTFJfRU5BQkxFICAg ICAgICAgICAgICAgIEJJVCgwKQo+ICsKPiArI2RlZmluZSBHSVRTX1RZUEVSX0RFVklEU19TSElG VCAgICAgICAgIDEzCj4gKyNkZWZpbmUgR0lUU19UWVBFUl9ERVZJRFNfTUFTSyAgICAgICAgICAo MHgxZlVMIDw8IEdJVFNfVFlQRVJfREVWSURTX1NISUZUKQo+ICsjZGVmaW5lIEdJVFNfVFlQRVJf REVWSUNFX0lEX0JJVFMocikgICAgKCgociAmIEdJVFNfVFlQRVJfREVWSURTX01BU0spID4+IFwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSVRTX1RZ UEVSX0RFVklEU19TSElGVCkgKyAxKQo+ICsKPiArI2RlZmluZSBHSVRTX0lJRFJfVkFMVUUgICAg ICAgICAgICAgICAgIDB4MzRjCj4gKwo+ICsjZGVmaW5lIEdJVFNfQkFTRVJfSU5ESVJFQ1QgICAg ICAgICAgICAgQklUX1VMTCg2MikKPiArI2RlZmluZSBHSVRTX0JBU0VSX0lOTkVSX0NBQ0hFQUJJ TElUWV9TSElGVCAgICAgICAgNTkKPiArI2RlZmluZSBHSVRTX0JBU0VSX1RZUEVfU0hJRlQgICAg ICAgICAgIDU2Cj4gKyNkZWZpbmUgR0lUU19CQVNFUl9UWVBFX01BU0sgICAgICAgICAgICAoN1VM TCA8PCBHSVRTX0JBU0VSX1RZUEVfU0hJRlQpCj4gKyNkZWZpbmUgR0lUU19CQVNFUl9PVVRFUl9D QUNIRUFCSUxJVFlfU0hJRlQgICAgICAgIDUzCj4gKyNkZWZpbmUgR0lUU19CQVNFUl9UWVBFX05P TkUgICAgICAgICAgICAwVUwKPiArI2RlZmluZSBHSVRTX0JBU0VSX1RZUEVfREVWSUNFICAgICAg ICAgIDFVTAo+ICsjZGVmaW5lIEdJVFNfQkFTRVJfVFlQRV9WQ1BVICAgICAgICAgICAgMlVMCj4g KyNkZWZpbmUgR0lUU19CQVNFUl9UWVBFX0NQVSAgICAgICAgICAgICAzVUwKPiArI2RlZmluZSBH SVRTX0JBU0VSX1RZUEVfQ09MTEVDVElPTiAgICAgIDRVTAo+ICsjZGVmaW5lIEdJVFNfQkFTRVJf VFlQRV9SRVNFUlZFRDUgICAgICAgNVVMCj4gKyNkZWZpbmUgR0lUU19CQVNFUl9UWVBFX1JFU0VS VkVENiAgICAgICA2VUwKPiArI2RlZmluZSBHSVRTX0JBU0VSX1RZUEVfUkVTRVJWRUQ3ICAgICAg IDdVTAo+ICsjZGVmaW5lIEdJVFNfQkFTRVJfRU5UUllfU0laRV9TSElGVCAgICAgNDgKPiArI2Rl ZmluZSBHSVRTX0JBU0VSX0VOVFJZX1NJWkUocmVnKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgKCgocmVnID4+IEdJVFNf QkFTRVJfRU5UUllfU0laRV9TSElGVCkgJiAweDFmKSArIDEpCj4gKyNkZWZpbmUgR0lUU19CQVNF Ul9TSEFSRUFCSUxJVFlfU0hJRlQgICAxMAo+ICsjZGVmaW5lIEdJVFNfQkFTRVJfUEFHRV9TSVpF X1NISUZUICAgICAgOAo+ICsjZGVmaW5lIEdJVFNfQkFTRVJfUk9fTUFTSyAgICAgICAgICAgICAg KEdJVFNfQkFTRVJfVFlQRV9NQVNLIHwgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDMxVUwgPDwgR0lUU19CQVNFUl9FTlRSWV9TSVpFX1NISUZUKSB8XAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lUU19CQVNFUl9JTkRJUkVD VCkKPiArI2RlZmluZSBHSVRTX0JBU0VSX1NIQVJFQUJJTElUWV9NQVNLICAgKDB4M1VMTCA8PCBH SVRTX0JBU0VSX1NIQVJFQUJJTElUWV9TSElGVCkKPiArI2RlZmluZSBHSVRTX0JBU0VSX09VVEVS X0NBQ0hFQUJJTElUWV9NQVNLICAgKDB4N1VMTCA8PCBHSVRTX0JBU0VSX09VVEVSX0NBQ0hFQUJJ TElUWV9TSElGVCkKPiArI2RlZmluZSBHSVRTX0JBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9NQVNL ICAgKDB4N1VMTCA8PCBHSVRTX0JBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVCkKPiArCj4g ICNpbmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4KPiAgCj4gIC8qIGRhdGEgc3RydWN0dXJlIGZv ciBlYWNoIGhhcmR3YXJlIElUUyAqLwo+IEBAIC0yOCw2ICs4Miw3IEBAIHN0cnVjdCBob3N0X2l0 cyB7Cj4gICAgICBjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKmR0X25vZGU7Cj4gICAgICBw YWRkcl90IGFkZHI7Cj4gICAgICBwYWRkcl90IHNpemU7Cj4gKyAgICB2b2lkIF9faW9tZW0gKml0 c19iYXNlOwo+ICB9Owo+ICAKPiAgCj4gQEAgLTQyLDggKzk3LDkgQEAgYm9vbCBnaWN2M19pdHNf aG9zdF9oYXNfaXRzKHZvaWQpOwo+ICAKPiAgaW50IGdpY3YzX2xwaV9pbml0X3JkaXN0KHZvaWQg X19pb21lbSAqIHJkaXN0X2Jhc2UpOwo+ICAKPiAtLyogSW5pdGlhbGl6ZSB0aGUgaG9zdCBzdHJ1 Y3R1cmVzIGZvciBMUElzLiAqLwo+ICsvKiBJbml0aWFsaXplIHRoZSBob3N0IHN0cnVjdHVyZXMg Zm9yIExQSXMgYW5kIHRoZSBob3N0IElUU2VzLiAqLwo+ICBpbnQgZ2ljdjNfbHBpX2luaXRfaG9z dF9scGlzKHVuc2lnbmVkIGludCBucl9scGlzKTsKPiAraW50IGdpY3YzX2l0c19pbml0KHZvaWQp Owo+ICAKPiAgI2Vsc2UKPiAgCj4gQEAgLTY3LDYgKzEyMywxMSBAQCBzdGF0aWMgaW5saW5lIGlu dCBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXModW5zaWduZWQgaW50IG5yX2xwaXMpCj4gIHsKPiAg ICAgIHJldHVybiAwOwo+ICB9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBnaWN2M19pdHNfaW5p dCh2b2lkKQo+ICt7Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICAjZW5kaWYgLyogQ09ORklHX0hB U19JVFMgKi8KPiAgCj4gICNlbmRpZgo+IC0tIAo+IDIuOS4wCj4gCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK