From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v2 02/27] ARM: GICv3: allocate LPI pending and property table Date: Tue, 21 Mar 2017 21:23:33 +0000 Message-ID: <5083e870-8ea2-235b-92d7-598a0ab4a992@arm.com> References: <20170316112030.20419-1-andre.przywara@arm.com> <20170316112030.20419-3-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqgHX-0001vs-Kq for xen-devel@lists.xenproject.org; Wed, 22 Mar 2017 13:26:31 +0000 In-Reply-To: <20170316112030.20419-3-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 , Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAwMy8xNi8yMDE3IDExOjIwIEFNLCBBbmRyZSBQcnp5d2FyYSB3cm90ZToK PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcgYi94ZW4vYXJjaC9hcm0vS2NvbmZp Zwo+IGluZGV4IGJmNjRjNjEuLjg2ZjdiNTMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL0tj b25maWcKPiArKysgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwo+IEBAIC00OSw2ICs0OSwyMSBAQCBj b25maWcgSEFTX0lUUwo+ICAgICAgICAgIGJvb2wgIkdJQ3YzIElUUyBNU0kgY29udHJvbGxlciBz dXBwb3J0Igo+ICAgICAgICAgIGRlcGVuZHMgb24gSEFTX0dJQ1YzCj4KPiArY29uZmlnIE1BWF9Q SFlTX0xQSV9CSVRTCj4gKyAgICAgICAgZGVwZW5kcyBvbiBIQVNfSVRTCj4gKyAgICAgICAgaW50 ICJNYXhpbXVtIGJpdHMgZm9yIEdJQ3YzIGhvc3QgTFBJcyAoMTQtMzIpIgo+ICsgICAgICAgIHJh bmdlIDE0IDMyCj4gKyAgICAgICAgZGVmYXVsdCAiMjAiCj4gKyAgICAgICAgaGVscAo+ICsgICAg ICAgICAgU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBMUElzIChpbiBiaXRzKSBYZW4g c2hvdWxkIHRha2UKPiArICAgICAgICAgIGNhcmUgb2YuIFRoZSBob3N0IElUUyBtYXkgcHJvdmlk ZSBzdXBwb3J0IGZvciBhIHZlcnkgbGFyZ2UgbnVtYmVyCj4gKyAgICAgICAgICBvZiBzdXBwb3J0 ZWQgTFBJcywgZm9yIGFsbCBvZiB3aGljaCB3ZSBtYXkgbm90IHdhbnQgdG8gYWxsb2NhdGUKPiAr ICAgICAgICAgIG1lbW9yeSwgc28gdGhpcyBudW1iZXIgaGVyZSBhbGxvd3MgdG8gbGltaXQgdGhp cy4KPiArICAgICAgICAgIFhlbiBpdHNlbGYgZG9lcyBub3Qga25vdyBob3cgbWFueSBMUElzIGRv bWFpbnMgd2lsbCBldmVyIG5lZWQKPiArICAgICAgICAgIGJlZm9yZWhhbmQuCj4gKyAgICAgICAg ICBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aCB0aGUgbWF4 X2xwaV9iaXRzCj4gKyAgICAgICAgICBwYXJhbWV0ZXIuCgpJIGNvbnRpbnVlIHRvIGRpc2FncmVl IG9uIHRoaXMgS2NvbmZpZyBvcHRpb24uIFRoZXJlIGlzIG5vIHNlbnNpYmxlIApkZWZhdWx0IHZh bHVlIGFuZCBJIGRvbid0IHNlZSBob3cgYSBkaXN0cmlidXRpb24gd2lsbCBiZSBhYmxlIHRvIHBp Y2stdXAgCm9uZSB2YWx1ZSBoZXJlLgoKSWYgdGhlIG51bWJlciBvZiBMUElzIGhhdmUgdG8gYmUg cmVzdHJpY3RlZCwgdGhpcyBzaG91bGQgYmUgZG9uZSB2aWEgdGhlIApjb21tYW5kIGxpbmUgb3Ig YSBwZXItcGxhdGZvcm0gb3B0aW9uLgoKSSBoYXZlIGFscmVhZHkgbWFkZSBteSBwb2ludCBvbiBw cmV2aW91cyBlLW1haWxzIHNvIEkgYW0gbm90IGdvaW5nIHRvIAphcmd1ZSBtb3JlLgoKPiArCj4g IGVuZG1lbnUKPgo+ICBtZW51ICJBUk0gZXJyYXRhIHdvcmthcm91bmQgdmlhIHRoZSBhbHRlcm5h dGl2ZSBmcmFtZXdvcmsiCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZSBiL3hl bi9hcmNoL2FybS9NYWtlZmlsZQo+IGluZGV4IDU0ODYwZTAuLjAyYTg3MzcgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4gKysrIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4g QEAgLTE5LDYgKzE5LDcgQEAgb2JqLXkgKz0gZ2ljLm8KPiAgb2JqLXkgKz0gZ2ljLXYyLm8KPiAg b2JqLSQoQ09ORklHX0hBU19HSUNWMykgKz0gZ2ljLXYzLm8KPiAgb2JqLSQoQ09ORklHX0hBU19J VFMpICs9IGdpYy12My1pdHMubwo+ICtvYmotJChDT05GSUdfSEFTX0lUUykgKz0gZ2ljLXYzLWxw aS5vCj4gIG9iai15ICs9IGd1ZXN0Y29weS5vCj4gIG9iai15ICs9IGh2bS5vCj4gIG9iai15ICs9 IGlvLm8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYyBiL3hlbi9hcmNo L2FybS9naWMtdjMtbHBpLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LjRmODQxNGIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2FyY2gvYXJtL2dpYy12My1scGku Ywo+IEBAIC0wLDAgKzEsMjAxIEBACj4gKy8qCj4gKyAqIHhlbi9hcmNoL2FybS9naWMtdjMtbHBp LmMKPiArICoKPiArICogQVJNIEdJQ3YzIExvY2FsaXR5LXNwZWNpZmljIFBlcmlwaGVyYWwgSW50 ZXJydXB0cyAoTFBJKSBzdXBwb3J0Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiwyMDE3 IC0gQVJNIEx0ZAo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsg KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB1bmRlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHhlbi9saWIu aD4KPiArI2luY2x1ZGUgPHhlbi9tbS5oPgo+ICsjaW5jbHVkZSA8YXNtL2dpYy5oPgo+ICsjaW5j bHVkZSA8YXNtL2dpY192M19kZWZzLmg+Cj4gKyNpbmNsdWRlIDxhc20vZ2ljX3YzX2l0cy5oPgo+ ICsjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gKyNpbmNsdWRlIDxhc20vcGFnZS5oPgo+ICsKPiArI2Rl ZmluZSBMUElfUFJPUFRBQkxFX05FRURTX0ZMVVNISU5HICAgICgxVSA8PCAwKQoKTklUOiBOZXds aW5lIGhlcmUgcGxlYXNlLgoKPiArLyogR2xvYmFsIHN0YXRlICovCj4gK3N0YXRpYyBzdHJ1Y3Qg ewo+ICsgICAgLyogVGhlIGdsb2JhbCBMUEkgcHJvcGVydHkgdGFibGUsIHNoYXJlZCBieSBhbGwg cmVkaXN0cmlidXRvcnMuICovCj4gKyAgICB1aW50OF90ICpscGlfcHJvcGVydHk7Cj4gKyAgICAv Kgo+ICsgICAgICogTnVtYmVyIG9mIHBoeXNpY2FsIExQSXMgdGhlIGhvc3Qgc3VwcG9ydHMuIFRo aXMgaXMgYSBwcm9wZXJ0eSBvZgo+ICsgICAgICogdGhlIEdJQyBoYXJkd2FyZS4gV2UgZGVwYXJ0 IGZyb20gdGhlIGhhYml0IG9mIG5hbWluZyB0aGVzZSB0aGluZ3MKPiArICAgICAqICJwaHlzaWNh bCIgaW4gWGVuLCBhcyB0aGUgR0lDdjMvNCBzcGVjIHVzZXMgdGhlIHRlcm0gInBoeXNpY2FsIExQ SSIKPiArICAgICAqIGluIGEgZGlmZmVyZW50IGNvbnRleHQgdG8gZGlmZmVyZW50aWF0ZSB0aGVt IGZyb20gInZpcnR1YWwgTFBJcyIuCj4gKyAgICAgKi8KPiArICAgIHVuc2lnbmVkIGxvbmcgaW50 IG5yX2hvc3RfbHBpczsKCldoeSB1bnNpZ25lZCBsb25nPwoKPiArICAgIHVuc2lnbmVkIGludCBm bGFnczsKPiArfSBscGlfZGF0YTsKPiArCj4gK3N0cnVjdCBscGlfcmVkaXN0X2RhdGEgewo+ICsg ICAgdm9pZCAgICAgICAgICAgICAgICAqcGVuZGluZ190YWJsZTsKPiArfTsKPiArCj4gK3N0YXRp YyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgbHBpX3JlZGlzdF9kYXRhLCBscGlfcmVkaXN0KTsKPiAr Cj4gKyNkZWZpbmUgTUFYX1BIWVNfTFBJUyAgIChscGlfZGF0YS5ucl9ob3N0X2xwaXMgLSBMUElf T0ZGU0VUKQoKVGhpcyBpcyBmYWlybHkgY29uZnVzaW5nLiBXaGVuIEkgcmVhZCAibnJfaG9zdF9s cGlzIiBJIHVuZGVyc3RhbmQgdGhhdCAKeW91IHN0b3JlIHRoZSBudW1iZXIgb2YgTFBJcy4gQnV0 IGluIGZhY3QgeW91IHN0b3JlIHRoZSBtYXhpbXVtIExQSSBJRC4KCkFsc28gaXQgaXMgdmVyeSB1 bmNsZWFyIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gTUFYX1BIWVNfTFBJUyBhbmQgCm5yX2hvc3Rf bHBpcyBhbmQgd2lsbCBsaWtlbHkgY2F1c2UgdHJvdWJsZSBpbiB0aGUgZnV0dXJlLgoKU28gaXQg bG9va3MgbGlrZSB0byBtZSB0aGF0IG5yX2hvc3RfbHBpcyBzaG91bGQgYmUgbmFtZWQgCm1heF9o b3N0X2xwaXNfaWRzIGFuZCBNQVhfUEhZU19MUElTIHNob3VsZCBiZSBNQVhfTlJfUEhZU19MUElT LgoKQWxzbywgcGxlYXNlIHN0YXkgY29uc2lzdGVudCB3aXRoIHRoZSBuYW1pbmcuIElmIHlvdSB1 c2UgaG9zdCB0aGVuIHVzZSAKaG9zdCBldmVyeXdoZXJlIGFuZCBub3QgYSBtaXggYmV0d2VlbiBw aHlzIGFuZCBob3N0IGZvciB0aGUgc2FtZSBwdXJwb3NlLgoKPiArCj4gK3N0YXRpYyBpbnQgZ2lj djNfbHBpX2FsbG9jYXRlX3BlbmR0YWJsZSh1aW50NjRfdCAqcmVnKQo+ICt7Cj4gKyAgICB1aW50 NjRfdCB2YWw7Cj4gKyAgICB1bnNpZ25lZCBpbnQgb3JkZXI7Cj4gKyAgICB2b2lkICpwZW5kdGFi bGU7Cj4gKwo+ICsgICAgaWYgKCB0aGlzX2NwdShscGlfcmVkaXN0KS5wZW5kaW5nX3RhYmxlICkK PiArICAgICAgICByZXR1cm4gLUVCVVNZOwo+ICsKPiArICAgIHZhbCAgPSBHSUNfQkFTRVJfQ0FD SEVfUmFXYVdiIDw8IEdJQ1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVDsKPiAr ICAgIHZhbCB8PSBHSUNfQkFTRVJfQ0FDSEVfU2FtZUFzSW5uZXIgPDwgR0lDUl9QRU5EQkFTRVJf T1VURVJfQ0FDSEVBQklMSVRZX1NISUZUOwo+ICsgICAgdmFsIHw9IEdJQ19CQVNFUl9Jbm5lclNo YXJlYWJsZSA8PCBHSUNSX1BFTkRCQVNFUl9TSEFSRUFCSUxJVFlfU0hJRlQ7Cj4gKwo+ICsgICAg LyoKPiArICAgICAqIFRoZSBwZW5kaW5nIHRhYmxlIGhvbGRzIG9uZSBiaXQgcGVyIExQSSBhbmQg ZXZlbiBjb3ZlcnMgYml0cyBmb3IKPiArICAgICAqIGludGVycnVwdCBJRHMgYmVsb3cgODE5Miwg c28gd2UgYWxsb2NhdGUgdGhlIGZ1bGwgcmFuZ2UuCj4gKyAgICAgKiBUaGUgR0lDdjMgaW1wb3Nl cyBhIDY0S0IgYWxpZ25tZW50IHJlcXVpcmVtZW50LCBhbHNvIHJlcXVpcmVzCj4gKyAgICAgKiBw aHlzaWNhbGx5IGNvbnRpZ2lvdXMgbWVtb3J5LgoKVGhlIGJpdCBhZnRlciB0aGUgY29tbWEgc2Vl bXMgcXVpdGUgb2J2aW91cy4gQm90aCB4YWxsb2MgYW5kIAphbGxvY194ZW5oZWFwX3BhZ2VzIHdp bGwgZW5zdXJlIHRoYXQgdGhlIHJlZ2lvbiB3aWxsIGJlIGNvbnRpZ3VvdXMgaW4gCnRoZSBwaHlz aWNhbCBhZGRyZXNzIHNwYWNlLgoKWy4uLl0KCj4gK3N0YXRpYyBpbnQgZ2ljdjNfbHBpX3NldF9w cm9wdGFibGUodm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSkKPiArewo+ICsgICAgdWludDY0X3Qg cmVnOwo+ICsKPiArICAgIHJlZyAgPSBHSUNfQkFTRVJfQ0FDSEVfUmFXYVdiIDw8IEdJQ1JfUFJP UEJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVDsKPiArICAgIHJlZyB8PSBHSUNfQkFTRVJf Q0FDSEVfU2FtZUFzSW5uZXIgPDwgR0lDUl9QUk9QQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NI SUZUOwo+ICsgICAgcmVnIHw9IEdJQ19CQVNFUl9Jbm5lclNoYXJlYWJsZSA8PCBHSUNSX1BST1BC QVNFUl9TSEFSRUFCSUxJVFlfU0hJRlQ7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFRoZSBwcm9w ZXJ0eSB0YWJsZSBpcyBzaGFyZWQgYWNyb3NzIGFsbCByZWRpc3RyaWJ1dG9ycywgc28gYWxsb2Nh dGUKPiArICAgICAqIHRoaXMgb25seSBvbmNlLCBidXQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIG9u IHN1YnNlcXVlbnQgY2FsbHMuCj4gKyAgICAgKi8KPiArICAgIGlmICggIWxwaV9kYXRhLmxwaV9w cm9wZXJ0eSApCj4gKyAgICB7Cj4gKyAgICAgICAgLyogVGhlIHByb3BlcnR5IHRhYmxlIGhvbGRz IG9uZSBieXRlIHBlciBMUEkuICovCj4gKyAgICAgICAgdW5zaWduZWQgaW50IG9yZGVyID0gZ2V0 X29yZGVyX2Zyb21fYnl0ZXMobHBpX2RhdGEubnJfaG9zdF9scGlzKTsKPiArICAgICAgICB2b2lk ICp0YWJsZSA9IGFsbG9jX3hlbmhlYXBfcGFnZXMob3JkZXIsIDApOwo+ICsKPiArICAgICAgICBp ZiAoICF0YWJsZSApCj4gKyAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsKPiArICAgICAg ICAvKiBNYWtlIHN1cmUgdGhlIHBoeXNpY2FsIGFkZHJlc3MgY2FuIGJlIGVuY29kZWQgaW4gdGhl IHJlZ2lzdGVyLiAqLwo+ICsgICAgICAgIGlmICggKHZpcnRfdG9fbWFkZHIodGFibGUpICYgfkdF Tk1BU0soNTEsIDEyKSkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgZnJlZV94ZW5oZWFw X3BhZ2VzKHRhYmxlLCAwKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7Cj4gKyAgICAg ICAgfQo+ICsgICAgICAgIG1lbXNldCh0YWJsZSwgR0lDX1BSSV9JUlEgfCBMUElfUFJPUF9SRVMx LCBNQVhfUEhZU19MUElTKTsKPiArICAgICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVf dmFfcmFuZ2UodGFibGUsIE1BWF9QSFlTX0xQSVMpOwo+ICsgICAgICAgIGxwaV9kYXRhLmxwaV9w cm9wZXJ0eSA9IHRhYmxlOwo+ICsgICAgfQo+ICsKPiArICAgIC8qIEVuY29kZSB0aGUgbnVtYmVy IG9mIGJpdHMgbmVlZGVkLCBtaW51cyBvbmUgKi8KPiArICAgIHJlZyB8PSAoKGZscyhscGlfZGF0 YS5ucl9ob3N0X2xwaXMgLSAxKSAtIDEpIDw8IDApOwoKQXMgc2FpZCBvbiB0aGUgcHJldmlvdXMg dmVyc2lvbiwgcGxlYXNlIGF2b2lkIGhhcmRjb2RlZCBzaGlmdC4KClsuLi5dCgo+ICtpbnQgZ2lj djNfbHBpX2luaXRfcmRpc3Qodm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSkKPiArewo+ICsgICAg dWludDMyX3QgcmVnOwo+ICsgICAgdWludDY0X3QgdGFibGVfcmVnOwo+ICsgICAgaW50IHJldDsK PiArCj4gKyAgICAvKiBXZSBkb24ndCBzdXBwb3J0IExQSXMgd2l0aG91dCBhbiBJVFMuICovCj4g KyAgICBpZiAoICFnaWN2M19pdHNfaG9zdF9oYXNfaXRzKCkgKQo+ICsgICAgICAgIHJldHVybiAt RU5PREVWOwo+ICsKPiArICAgIC8qIE1ha2Ugc3VyZSBMUElzIGFyZSBkaXNhYmxlZCBiZWZvcmUg c2V0dGluZyB1cCB0aGUgdGFibGVzLiAqLwo+ICsgICAgcmVnID0gcmVhZGxfcmVsYXhlZChyZGlz dF9iYXNlICsgR0lDUl9DVExSKTsKPiArICAgIGlmICggcmVnICYgR0lDUl9DVExSX0VOQUJMRV9M UElTICkKPiArICAgICAgICByZXR1cm4gLUVCVVNZOwo+ICsKPiArICAgIHJldCA9IGdpY3YzX2xw aV9hbGxvY2F0ZV9wZW5kdGFibGUoJnRhYmxlX3JlZyk7Cj4gKyAgICBpZiAocmV0KQo+ICsgICAg ICAgIHJldHVybiByZXQ7Cj4gKyAgICB3cml0ZXFfcmVsYXhlZCh0YWJsZV9yZWcsIHJkaXN0X2Jh c2UgKyBHSUNSX1BFTkRCQVNFUik7CgpTYW1lIHF1ZXN0aW9uIGFzIG9uIHRoZSBwcmV2aW91cyB2 ZXJzaW9uLiBUaGUgY2FjaGVhYmlsaXR5IGFuZCAKc2hhcmVhYmlsaXR5IG1heSBub3Qgc3RpY2su IFRoaXMgd2FzIGEgYnVnIGZpeCBpbiBMaW51eCAoc2VlIGNvbW1pdCAKMjQxYTM4NikgYW5kIEkg YW0gc3RydWdnbGluZyB0byB1bmRlcnN0YW5kIHdoeSBYZW4gd291bGQgbm90IGJlIGFmZmVjdGVk PwoKPiArCj4gKyAgICByZXR1cm4gZ2ljdjNfbHBpX3NldF9wcm9wdGFibGUocmRpc3RfYmFzZSk7 Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X2xwaV9iaXRzID0gQ09ORklHX01B WF9QSFlTX0xQSV9CSVRTOwo+ICtpbnRlZ2VyX3BhcmFtKCJtYXhfbHBpX2JpdHMiLCBtYXhfbHBp X2JpdHMpOwo+ICsKPiAraW50IGdpY3YzX2xwaV9pbml0X2hvc3RfbHBpcyh1bnNpZ25lZCBpbnQg aHdfbHBpX2JpdHMpCj4gK3sKCgpQbGVhc2UgYWRkIGEgY29tbWVudCB0byBleHBsYWluIHdoeSB5 b3UgZG9uJ3Qgc2FuaXRpemUgdGhlIHZhbHVlIGZyb20gCnRoZSBjb21tYW5kIGxpbmUuCgo+ICsg ICAgbHBpX2RhdGEubnJfaG9zdF9scGlzID0gQklUX1VMTChtaW4oaHdfbHBpX2JpdHMsIG1heF9s cGlfYml0cykpOwoKbnJfaG9zdF9scGlzIGlzICJ1bnNpZ25lZCBsb25nIiBzbyB3aHkgYXJlIHlv dSB1c2luZyBCSVRfVUxMPwoKPiArCj4gKyAgICBwcmludGsoIkdJQ3YzOiB1c2luZyBhdCBtb3N0 ICVsZCBMUElzIG9uIHRoZSBob3N0LlxuIiwgTUFYX1BIWVNfTFBJUyk7CgpzLyVsZC8lbHUvCgpb Li4uXQoKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My5jIGIveGVuL2FyY2gvYXJt L2dpYy12My5jCj4gaW5kZXggMTUxMjUyMS4uZWQ3ODM2MyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC9hcm0vZ2ljLXYzLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiBAQCAtNTQ4LDYg KzU0OCw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBnaWN2M19kaXN0X2luaXQodm9pZCkKPiAgICAg IHR5cGUgPSByZWFkbF9yZWxheGVkKEdJQ0QgKyBHSUNEX1RZUEVSKTsKPiAgICAgIG5yX2xpbmVz ID0gMzIgKiAoKHR5cGUgJiBHSUNEX1RZUEVfTElORVMpICsgMSk7Cj4KPiArICAgIGlmICggdHlw ZSAmIEdJQ0RfVFlQRV9MUElTICkKPiArICAgICAgICBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXMo KCh0eXBlID4+IEdJQ0RfVFlQRV9JRF9CSVRTX1NISUZUKSAmIDB4MWYpICsgMSk7CgpBZ2Fpbiwg YSBtYWNybyBoYXMgYmVlbiBzdWdnZXN0ZWQgb24gaW4gdGhlIGxhc3QgMiB2ZXJzaW9ucyB0byBh dm9pZCAKaGFyZGNvZGVkIHZhbHVlLiBZb3Ugc2FpZCB5b3Ugd2lsbCBmaXggaXQgYW5kIGl0IGlz IG5vdCBkb25lLiBQbGVhc2UgZG8gaXQuCgpbLi4uXQoKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9naWMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmgKPiBpbmRleCA4MzZh MTAzLi4xMmJkMTU1IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmgKPiAr KysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oCj4gQEAgLTIyMCw2ICsyMjAsOCBAQCBlbnVt IGdpY192ZXJzaW9uIHsKPiAgICAgIEdJQ19WMywKPiAgfTsKPgo+ICsjZGVmaW5lIExQSV9PRkZT RVQgICAgICA4MTkyCgpNeSBjb21tZW50cyBvbiB0aGUgcHJldmlvdXMgdmVyc2lvbiBhYm91dCBM UElfT0ZGU0VUIGFyZSBub3QgYWRkcmVzc2VkLiAKQW5kIG9uZSBxdWVzdGlvbiB3YXMgbGVmdCB1 bmFuc3dlcmVkLgoKPiArCj4gIGV4dGVybiBlbnVtIGdpY192ZXJzaW9uIGdpY19od192ZXJzaW9u KHZvaWQpOwo+Cj4gIC8qIFByb2dyYW0gdGhlIElSUSB0eXBlIGludG8gdGhlIEdJQyAqLwoKWy4u Ll0KCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oIGIveGVu L2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiBpbmRleCA3NjVhNjU1Li4yMTlkMTA5IDEw MDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oCj4gKysrIGIveGVu L2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiBAQCAtNDAsNiArNDAsMTEgQEAgdm9pZCBn aWN2M19pdHNfZHRfaW5pdChjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm5vZGUpOwo+Cj4g IGJvb2wgZ2ljdjNfaXRzX2hvc3RfaGFzX2l0cyh2b2lkKTsKPgo+ICtpbnQgZ2ljdjNfbHBpX2lu aXRfcmRpc3Qodm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSk7Cj4gKwo+ICsvKiBJbml0aWFsaXpl IHRoZSBob3N0IHN0cnVjdHVyZXMgZm9yIExQSXMuICovCj4gK2ludCBnaWN2M19scGlfaW5pdF9o b3N0X2xwaXModW5zaWduZWQgaW50IG5yX2xwaXMpOwoKSW4gdGhlIGltcGxlbWVudGF0aW9uLCB0 aGUgcGFyYW1ldGVyIGlzIGNhbGxlZCAiaHdfbHBpX2JpdHMiLiBQbGVhc2UgCnN0YXkgY29uc2lz dGVudC4KCj4gKwo+ICAjZWxzZQo+Cj4gIHN0YXRpYyBMSVNUX0hFQUQoaG9zdF9pdHNfbGlzdCk7 Cj4gQEAgLTUzLDYgKzU4LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBnaWN2M19pdHNfaG9zdF9o YXNfaXRzKHZvaWQpCj4gICAgICByZXR1cm4gZmFsc2U7Cj4gIH0KPgo+ICtzdGF0aWMgaW5saW5l IGludCBnaWN2M19scGlfaW5pdF9yZGlzdCh2b2lkIF9faW9tZW0gKiByZGlzdF9iYXNlKQo+ICt7 Cj4gKyAgICByZXR1cm4gLUVOT0RFVjsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgZ2lj djNfbHBpX2luaXRfaG9zdF9scGlzKHVuc2lnbmVkIGludCBucl9scGlzKQoKRGl0dG8uCgo+ICt7 Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICAjZW5kaWYgLyogQ09ORklHX0hBU19JVFMgKi8KPgo+ ICAjZW5kaWYKPgoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==