From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 03/28] ARM: GICv3: allocate LPI pending and property table Date: Mon, 6 Feb 2017 16:26:08 +0000 Message-ID: <4a6be01d-f26b-66db-387d-5e6a307f725e@arm.com> References: <20170130183153.28566-1-andre.przywara@arm.com> <20170130183153.28566-4-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 1cam7J-0007Lv-EU for xen-devel@lists.xenproject.org; Mon, 06 Feb 2017 16:26:13 +0000 In-Reply-To: <20170130183153.28566-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 , Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Vijay Kilari List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAzMC8wMS8xNyAxODozMSwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gVGhl IEFSTSBHSUN2MyBwcm92aWRlcyBhIG5ldyBraW5kIG9mIGludGVycnVwdCBjYWxsZWQgTFBJcy4K PiBUaGUgcGVuZGluZyBiaXRzIGFuZCB0aGUgY29uZmlndXJhdGlvbiBkYXRhIChwcmlvcml0eSwg ZW5hYmxlIGJpdHMpIGZvcgo+IHRob3NlIExQSXMgYXJlIHN0b3JlZCBpbiB0YWJsZXMgaW4gbm9y bWFsIG1lbW9yeSwgd2hpY2ggc29mdHdhcmUgaGFzIHRvCj4gcHJvdmlkZSB0byB0aGUgaGFyZHdh cmUuCj4gQWxsb2NhdGUgdGhlIHJlcXVpcmVkIG1lbW9yeSwgaW5pdGlhbGl6ZSBpdCBhbmQgaGFu ZCBpdCBvdmVyIHRvIGVhY2gKPiByZWRpc3RyaWJ1dG9yLiBUaGUgbWF4aW11bSBudW1iZXIgb2Yg TFBJcyB0byBiZSB1c2VkIGNhbiBiZSBhZGp1c3RlZCB3aXRoCj4gdGhlIGNvbW1hbmQgbGluZSBv cHRpb24gIm1heF9scGlfYml0cyIsIHdoaWNoIGRlZmF1bHRzIHRvIGEgY29tcGlsZSB0aW1lCj4g Y29uc3RhbnQgZXhwb3NlZCBpbiBLY29uZmlnLgo+Cj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6 eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9LY29u ZmlnICAgICAgICAgICAgICB8ICAxNSArKysrKwo+ICB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAg ICAgICAgICAgfCAgIDEgKwo+ICB4ZW4vYXJjaC9hcm0vZ2ljLXYzLWxwaS5jICAgICAgICAgfCAx MjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2FyY2gvYXJt L2dpYy12My5jICAgICAgICAgICAgIHwgIDQ0ICsrKysrKysrKysrKysKPiAgeGVuL2luY2x1ZGUv YXNtLWFybS9iaXRvcHMuaCAgICAgIHwgICAxICsKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWMu aCAgICAgICAgIHwgICAyICsKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oIHwg IDUyICsrKysrKysrKysrKysrLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaCAg fCAgMjIgKysrKysrLQo+ICA4IGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2dpYy12My1scGku Ywo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9LY29uZmlnIGIveGVuL2FyY2gvYXJtL0tj b25maWcKPiBpbmRleCBiZjY0YzYxLi43MTczNGExIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2Fy bS9LY29uZmlnCj4gKysrIGIveGVuL2FyY2gvYXJtL0tjb25maWcKPiBAQCAtNDksNiArNDksMjEg QEAgY29uZmlnIEhBU19JVFMKPiAgICAgICAgICBib29sICJHSUN2MyBJVFMgTVNJIGNvbnRyb2xs ZXIgc3VwcG9ydCIKPiAgICAgICAgICBkZXBlbmRzIG9uIEhBU19HSUNWMwo+Cj4gK2NvbmZpZyBN QVhfUEhZU19MUElfQklUUwo+ICsgICAgICAgIGRlcGVuZHMgb24gSEFTX0lUUwo+ICsgICAgICAg IGludCAiTWF4aW11bSBiaXRzIGZvciBHSUN2MyBob3N0IExQSXMgKDE0LTMyKSIKPiArICAgICAg ICByYW5nZSAxNCAzMgo+ICsgICAgICAgIGRlZmF1bHQgIjIwIgo+ICsgICAgICAgIGhlbHAKPiAr ICAgICAgICAgIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgTFBJcyAoaW4gYml0cykg WGVuIHNob3VsZCB0YWtlCj4gKyAgICAgICAgICBjYXJlIG9mLiBUaGUgaG9zdCBJVFMgbWF5IHBy b3ZpZGUgc3VwcG9ydCBmb3IgYSB2ZXJ5IGxhcmdlIG51bWJlcgo+ICsgICAgICAgICAgb2Ygc3Vw cG9ydGVkIExQSXMsIGZvciBhbGwgb2Ygd2hpY2ggd2UgbWF5IG5vdCB3YW50IHRvIGFsbG9jYXRl Cj4gKyAgICAgICAgICBtZW1vcnksIHNvIHRoaXMgbnVtYmVyIGhlcmUgYWxsb3dzIHRvIGxpbWl0 IHRoaXMuCgpJIHRoaW5rIHRoZSBkZXNjcmlwdGlvbiBpcyBtaXNsZWFkaW5nLCBpZiBhIHVzZXIg d2FudHMgOEsgd29ydGggb2YgTFBJcyAKYnkgZGVmYXVsdCwgaGUgd291bGQgaGF2ZSB0byB1c2Ug MTQgYW5kIG5vdCAxMy4KCkZ1cnRoZXJtb3JlLCB5b3UgcHJvdmlkZSBib3RoIGEgcnVudGltZSBv cHRpb24gKHZpYSBjb21tYW5kIGxpbmUpIGFuZCAKYnVpbGQgdGltZSBvcHRpb24gKHZpYSBLY29u ZmlnKS4gWW91IGRvbid0IGV4cHJlc3Mgd2hhdCBpcyB0aGUgCmRpZmZlcmVuY2VzIGJldHdlZW4g Ym90aCBhbmQgaG93IHRoZXJlIGFyZSBzdXBwb3NlZCB0byBjby1leGlzdC4KCkFueXdheSwgSUhN TyB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiBzaG91bGQgYmUgc3VmZmljaWVudCB0byBhbGxvdyAK b3ZlcnJpZGUgaWYgbmVjZXNzYXJ5LiBTbyBJIHdvdWxkIGRyb3AgdGhlIEtjb25maWcgdmVyc2lv bi4KCj4gKyAgICAgICAgICBYZW4gaXRzZWxmIGRvZXMgbm90IGtub3cgaG93IG1hbnkgTFBJcyBk b21haW5zIHdpbGwgZXZlciBuZWVkCj4gKyAgICAgICAgICBiZWZvcmVoYW5kLgo+ICsgICAgICAg ICAgVGhpcyBjYW4gYmUgb3ZlcnJpZGVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aCB0aGUgbWF4 X2xwaV9iaXRzCgpzL292ZXJyaWRlbi9vdmVycmlkZGVuLwoKPiArICAgICAgICAgIHBhcmFtZXRl ci4KPiArCj4gIGVuZG1lbnUKPgo+ICBtZW51ICJBUk0gZXJyYXRhIHdvcmthcm91bmQgdmlhIHRo ZSBhbHRlcm5hdGl2ZSBmcmFtZXdvcmsiCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9NYWtl ZmlsZSBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQo+IGluZGV4IDVmNGZmMjMuLjRjY2YyZWIgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4gKysrIGIveGVuL2FyY2gvYXJtL01h a2VmaWxlCj4gQEAgLTE5LDYgKzE5LDcgQEAgb2JqLXkgKz0gZ2ljLm8KPiAgb2JqLXkgKz0gZ2lj LXYyLm8KPiAgb2JqLSQoQ09ORklHX0hBU19HSUNWMykgKz0gZ2ljLXYzLm8KPiAgb2JqLSQoQ09O RklHX0hBU19JVFMpICs9IGdpYy12My1pdHMubwo+ICtvYmotJChDT05GSUdfSEFTX0lUUykgKz0g Z2ljLXYzLWxwaS5vCj4gIG9iai15ICs9IGd1ZXN0Y29weS5vCj4gIG9iai15ICs9IGh2bS5vCj4g IG9iai15ICs9IGlvLm8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYyBi L3hlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAuLmUyZmM5MDEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2FyY2gvYXJtL2dp Yy12My1scGkuYwo+IEBAIC0wLDAgKzEsMTI5IEBACj4gKy8qCj4gKyAqIHhlbi9hcmNoL2FybS9n aWMtdjMtbHBpLmMKPiArICoKPiArICogQVJNIEdJQ3YzIExvY2FsaXR5LXNwZWNpZmljIFBlcmlw aGVyYWwgSW50ZXJydXB0cyAoTFBJKSBzdXBwb3J0Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykg MjAxNiwyMDE3IC0gQVJNIEx0ZAo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNp bmNsdWRlIDx4ZW4vY29uZmlnLmg+Cgp4ZW4vY29uZmlnLmggaXMgbm90IG5lY2Vzc2FyeS4KCj4g KyNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vbW0uaD4KPiArI2luY2x1ZGUg PHhlbi9zaXplcy5oPgo+ICsjaW5jbHVkZSA8YXNtL2dpYy5oPgo+ICsjaW5jbHVkZSA8YXNtL2dp Y192M19kZWZzLmg+Cj4gKyNpbmNsdWRlIDxhc20vZ2ljX3YzX2l0cy5oPgo+ICsKPiArLyogR2xv YmFsIHN0YXRlICovCj4gK3N0YXRpYyBzdHJ1Y3Qgewo+ICsgICAgdWludDhfdCAqbHBpX3Byb3Bl cnR5Owo+ICsgICAgdW5zaWduZWQgaW50IGhvc3RfbHBpX2JpdHM7CgpPbiB0aGUgcHJldmlvdXMg dmVyc2lvbiwgU3RlZmFubyBzdWdnZXN0ZWQgdG8gcmVuYW1lIHRoaXMgdG8gCnBoeXNfbHBpX2Jp dHMgKyBhZGRpbmcgYSBjb21tZW50IGFzIHlvdSBzdG9yZSB0aGUgbnVtYmVyIG9mIGJpdHMuCgpI b3dldmVyLCBsb29raW5nIGF0IHRoZSB1c2FnZSB0aGUgbnVtYmVyIG9mIGJpdHMgaXMgb25seSBy ZXF1aXJlZCBkdXJpbmcgCnRoZSBpbml0aWFsaXphdGlvbi4gUnVudGltZSBjb2RlIChzdWNoIGFz IGdpY19nZXRfaG9zdF9scGkpIHdpbGwgdXNlIHRoZSAKbnVtYmVyIG9mIExQSXMgKHNlZSBnaWNf Z2V0X2hvc3RfbHBpKSBhbmQgdGhlcmVmb3JlIHJlcXVpcmUgZXh0cmEgCmluc3RydWN0aW9ucyB0 byBjb21wdXRlIHRoZSB2YWx1ZS4KClNvIEkgd291bGQgcHJlZmVyIGlmIHlvdSBzdG9yZSB0aGUg bnVtYmVyIG9mIExQSXMgaGVyZSB0byBvcHRpbWl6ZSB0aGUgCmNvbW1vbiBjYXNlLgoKQWxzbywg SSBmaW5kIHRoZSBuYW1pbmcgImlkX2JpdHMiIGNvbmZ1c2luZyBiZWNhdXNlIHlvdSBzdG9yZSB0 aGUgbnVtYmVyIApvZiBiaXRzIHRvIGVuY29kZSB0aGUgbWF4IExQSSBJRCBhbmQgbm90IHRoZSBu dW1iZXIgb2YgYml0cyB0byBlbmNvZGUgCnRoZSBudW1iZXIgb2YgTFBJLgoKPiArfSBscGlfZGF0 YTsKPiArCj4gKy8qIFBlbmRpbmcgdGFibGUgZm9yIGVhY2ggcmVkaXN0cmlidXRvciAqLwo+ICtz dGF0aWMgREVGSU5FX1BFUl9DUFUodm9pZCAqLCBwZW5kaW5nX3RhYmxlKTsKPiArCj4gKyNkZWZp bmUgTUFYX1BIWVNfTFBJUyAgIChCSVRfVUxMKGxwaV9kYXRhLmhvc3RfbHBpX2JpdHMpIC0gTFBJ X09GRlNFVCkKPiArCj4gK3VpbnQ2NF90IGdpY3YzX2xwaV9hbGxvY2F0ZV9wZW5kdGFibGUodm9p ZCkKPiArewo+ICsgICAgdWludDY0X3QgcmVnOwo+ICsgICAgdm9pZCAqcGVuZHRhYmxlOwo+ICsK PiArICAgIHJlZyAgPSBHSUNfQkFTRVJfQ0FDSEVfUmFXYVdiIDw8IEdJQ1JfUEVOREJBU0VSX0lO TkVSX0NBQ0hFQUJJTElUWV9TSElGVDsKPiArICAgIHJlZyB8PSBHSUNfQkFTRVJfQ0FDSEVfU2Ft ZUFzSW5uZXIgPDwgR0lDUl9QRU5EQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZUOwo+ICsg ICAgcmVnIHw9IEdJQ19CQVNFUl9Jbm5lclNoYXJlYWJsZSA8PCBHSUNSX1BFTkRCQVNFUl9TSEFS RUFCSUxJVFlfU0hJRlQ7Cj4gKwo+ICsgICAgaWYgKCAhdGhpc19jcHUocGVuZGluZ190YWJsZSkg KQo+ICsgICAgewo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogVGhlIHBlbmRpbmcgdGFibGUg aG9sZHMgb25lIGJpdCBwZXIgTFBJIGFuZCBldmVuIGNvdmVycyBiaXRzIGZvcgo+ICsgICAgICAg ICAqIGludGVycnVwdCBJRHMgYmVsb3cgODE5Miwgc28gd2UgYWxsb2NhdGUgdGhlIGZ1bGwgcmFu Z2UuCj4gKyAgICAgICAgICogVGhlIEdJQ3YzIGltcG9zZXMgYSA2NEtCIGFsaWdubWVudCByZXF1 aXJlbWVudC4KPiArICAgICAgICAgKi8KPiArICAgICAgICBwZW5kdGFibGUgPSBfeG1hbGxvYyhC SVRfVUxMKGxwaV9kYXRhLmhvc3RfbHBpX2JpdHMpIC8gOCwgU1pfNjRLKTsKPiArICAgICAgICBp ZiAoICFwZW5kdGFibGUgKQo+ICsgICAgICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICAg bWVtc2V0KHBlbmR0YWJsZSwgMCwgQklUX1VMTChscGlfZGF0YS5ob3N0X2xwaV9iaXRzKSAvIDgp OwoKWW91IGNhbiB1c2UgX3phbGxvYyB0byBkbyB0aGUgYWxsb2NhdGlvbiBhbmQgdGhlbiBtZW1z ZXQgdG8gMC4KCj4gKyAgICAgICAgX19mbHVzaF9kY2FjaGVfYXJlYShwZW5kdGFibGUsIEJJVF9V TEwobHBpX2RhdGEuaG9zdF9scGlfYml0cykgLyA4KTsKClBsZWFzZSB1c2UgY2xlYW5fYW5kX2lu dmFsaWRhdGVfZGNhY2hlX3ZhX3JhbmdlLgoKPiArCj4gKyAgICAgICAgdGhpc19jcHUocGVuZGlu Z190YWJsZSkgPSBwZW5kdGFibGU7Cj4gKyAgICB9Cj4gKyAgICBlbHNlCj4gKyAgICB7Cj4gKyAg ICAgICAgcGVuZHRhYmxlID0gdGhpc19jcHUocGVuZGluZ190YWJsZSk7Cj4gKyAgICB9CgpUaGUg e30gYXJlIG5vdCBuZWNlc3NhcnkuIEFsc28sIG9uIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGl0IHdh cyBtZW50aW9uZWQgCnRoaXMgc2hvdWxkIGJlIGFuIGVycm9yIGFuZCB0aGVuIHJlcGxhY2UgYnkg YSBCVUdfT04oKS4KClBsZWFzZSBkbyB0aGUgY2hhbmdlLgoKPiArCj4gKyAgICByZWcgfD0gR0lD Ul9QRU5EQkFTRVJfUFRaOwo+ICsKPiArICAgIEFTU0VSVCghKHZpcnRfdG9fbWFkZHIocGVuZHRh YmxlKSAmIH5HRU5NQVNLKDUxLCAxNikpKTsKCkkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgcHVycG9z ZSBvZiB0aGlzIEFTU0VSVC4gVGhlIGJpdHMgMTU6MCBzaG91bGQgCmFsd2F5cyBiZSB6ZXJvIG90 aGVyd2lzZSB0aGlzIHdvdWxkIGJlIGEgYnVnIGluIHRoZSBtZW1vcnkgYWxsb2NhdG9yLiAKRm9y IGJpdHMgNjQ6NTIsIHRoZSBhcmNoaXRlY3R1cmUgc28gZmFyIG9ubHkgc3VwcG9ydCB1cCB0byA1 MiBiaXRzLgoKQnkga2VlcGluZyB0aGlzIEFTU0VSVCwgeW91IHdpbGwgbWFrZSBvdXIgbGlmZSBt b3JlIGRpZmZpY3VsdCB0byBleHRlbmQgCnRoZSBudW1iZXIgb2YgcGh5c2ljYWwgYWRkcmVzcyBz dXBwb3J0ZWQgaWYgQVJNIGRlY2lkZXMgdG8gYnVtcCBpdC4KU28gcGxlYXNlIGRyb3AgdGhpcyBB U1NFUlQuCgo+ICsgICAgcmVnIHw9IHZpcnRfdG9fbWFkZHIocGVuZHRhYmxlKTsKPiArCj4gKyAg ICByZXR1cm4gcmVnOwo+ICt9Cj4gKwo+ICt1aW50NjRfdCBnaWN2M19scGlfZ2V0X3Byb3B0YWJs ZSh2b2lkKQo+ICt7Cj4gKyAgICB1aW50NjRfdCByZWc7Cj4gKwo+ICsgICAgcmVnICA9IEdJQ19C QVNFUl9DQUNIRV9SYVdhV2IgPDwgR0lDUl9QRU5EQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX1NI SUZUOwo+ICsgICAgcmVnIHw9IEdJQ19CQVNFUl9DQUNIRV9TYW1lQXNJbm5lciA8PCBHSUNSX1BF TkRCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQ7Cj4gKyAgICByZWcgfD0gR0lDX0JBU0VS X0lubmVyU2hhcmVhYmxlIDw8IEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJTElUWV9TSElGVDsKCllv dSBhcmUgdXNpbmcgdGhlIHNoaWZ0IGRlZmluZXMgZnJvbSBQRU5EQkFTRVIgYW5kIG5vdCBQUk9Q QkFTRVIuCgo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBUaGUgcHJvcGVydHkgdGFibGUgaXMgc2hh cmVkIGFjcm9zcyBhbGwgcmVkaXN0cmlidXRvcnMsIHNvIGFsbG9jYXRlCj4gKyAgICAgKiB0aGlz IG9ubHkgb25jZSwgYnV0IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBvbiBzdWJzZXF1ZW50IGNhbGxz Lgo+ICsgICAgICovCj4gKyAgICBpZiAoICFscGlfZGF0YS5scGlfcHJvcGVydHkgKQo+ICsgICAg ewo+ICsgICAgICAgIC8qIFRoZSBwcm9wZXJ0eSB0YWJsZSBob2xkcyBvbmUgYnl0ZSBwZXIgTFBJ LiAqLwo+ICsgICAgICAgIHZvaWQgKnRhYmxlID0gYWxsb2NfeGVuaGVhcF9wYWdlcyhscGlfZGF0 YS5ob3N0X2xwaV9iaXRzIC0gUEFHRV9TSElGVCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCk7CgpUaGUgcHJvcGVydHkgdGFibGUgYWRkcmVzcyBoYXMgdG8g YmUgNEtCIGFsaWduZWQgcmlnaHQ/IElmIHNvLCBJIHdvdWxkIAptdWNoIHByZWZlciBpZiB5b3Ug dXNlIF94bWFsbG9jKEJJVF9VTEwobHBpX2RhdGEuaG9zdF9scGlfYml0cyksIFNaXzRLKSAKdG8g YXZvaWQgcmVseWluZyBvbiBQQUdFX1NJWkUgPT0gNEtCLgoKQWxzbywgeW91IHdpbGwgYWxsb2Nh dGUgbW9yZSBtZW1vcnkgdGhhbiBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgcHJvcGVydHkgCnRhYmxl IG9ubHkgY292ZXJzIHRoZSBMUElzLgoKPiArCj4gKyAgICAgICAgaWYgKCAhdGFibGUgKQo+ICsg ICAgICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICAgbWVtc2V0KHRhYmxlLCBHSUNfUFJJ X0lSUSB8IExQSV9QUk9QX1JFUzEsIE1BWF9QSFlTX0xQSVMpOwoKWW91IGNvdWxkIGNvbWJpbmUg Ym90aCBzdWdnZXN0ZWQgX3htYWxsb2MgYW5kIG1lbXNldCB0byAwIGluIGEgc2luZ2xlIApjYWxs IHRvIF96YWxsb2MuCgo+ICsgICAgICAgIF9fZmx1c2hfZGNhY2hlX2FyZWEodGFibGUsIE1BWF9Q SFlTX0xQSVMpOwoKUGxlYXNlIHVzZSBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFu Z2UuCgo+ICsgICAgICAgIGxwaV9kYXRhLmxwaV9wcm9wZXJ0eSA9IHRhYmxlOwo+ICsgICAgfQo+ ICsKPiArICAgIHJlZyB8PSAoKGxwaV9kYXRhLmhvc3RfbHBpX2JpdHMgLSAxKSA8PCAwKTsKClBs ZWFzZSBhdm9pZCBoYXJkY29kZWQgc2hpZnQuCgo+ICsKPiArICAgIEFTU0VSVCghKHZpcnRfdG9f bWFkZHIobHBpX2RhdGEubHBpX3Byb3BlcnR5KSAmIH5HRU5NQVNLKDUxLCAxMikpKTsKPiArICAg IHJlZyB8PSB2aXJ0X3RvX21hZGRyKGxwaV9kYXRhLmxwaV9wcm9wZXJ0eSk7Cj4gKwo+ICsgICAg cmV0dXJuIHJlZzsKPiArfQo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGludCBtYXhfbHBpX2JpdHMg PSBDT05GSUdfTUFYX1BIWVNfTFBJX0JJVFM7Cj4gK2ludGVnZXJfcGFyYW0oIm1heF9scGlfYml0 cyIsIG1heF9scGlfYml0cyk7CgpQbGVhc2UgZG9jdW1lbnQgdGhpcyBuZXcgb3B0aW9uIGluIGRv Y3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duLgoKPiArCj4gK2ludCBnaWN2M19scGlf aW5pdF9ob3N0X2xwaXModW5zaWduZWQgaW50IGh3X2xwaV9iaXRzKQoKU3RlZmFubyBzdWdnZXN0 ZWQgdG8gcmVuYW1lIHRoaXMgZnVuY3Rpb24gdG8gZ2ljdjNfbHBpX2luaXRfcGh5c19scGlzIAph bmQgSSBhZ3JlZSB3aXRoIGhpbSBoZXJlLgoKPiArewo+ICsgICAgbHBpX2RhdGEuaG9zdF9scGlf Yml0cyA9IG1pbihod19scGlfYml0cywgbWF4X2xwaV9iaXRzKTsKPiArCj4gKyAgICBwcmludGso IkdJQ3YzOiB1c2luZyBhdCBtb3N0ICVsbGQgTFBJcyBvbiB0aGUgaG9zdC5cbiIsIE1BWF9QSFlT X0xQSVMpOwoKcy9sbGQvbGx1Ly4KCj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8q Cj4gKyAqIExvY2FsIHZhcmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6 ICJCU0QiCj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAo+ICsgKiBFbmQ6Cj4gKyAqLwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMg Yi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiBpbmRleCA4MzhkZDExLi5mY2I4NmM4IDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtdjMu Ywo+IEBAIC01NDYsNiArNTQ2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGdpY3YzX2Rpc3RfaW5p dCh2b2lkKQo+ICAgICAgdHlwZSA9IHJlYWRsX3JlbGF4ZWQoR0lDRCArIEdJQ0RfVFlQRVIpOwo+ ICAgICAgbnJfbGluZXMgPSAzMiAqICgodHlwZSAmIEdJQ0RfVFlQRV9MSU5FUykgKyAxKTsKPgo+ ICsgICAgaWYgKCB0eXBlICYgR0lDRF9UWVBFX0xQSVMgKQo+ICsgICAgICAgIGdpY3YzX2xwaV9p bml0X2hvc3RfbHBpcygoKHR5cGUgPj4gR0lDRF9UWVBFX0lEX0JJVFNfU0hJRlQpICYgMHgxZikg KyAxKTsKCkEgbWFjcm8gaGFzIGJlZW4gc3VnZ2VzdGVkIG9uIHRoZSBwcmV2aW91cyB2ZXJzaW9u IGhlcmUgdG8gYXZvaWQgdGhlIApoYXJkY29kZWQgMHgxZi4KCj4gKwo+ICAgICAgcHJpbnRrKCJH SUN2MzogJWQgbGluZXMsIChJSUQgJTguOHgpLlxuIiwKPiAgICAgICAgICAgICBucl9saW5lcywg cmVhZGxfcmVsYXhlZChHSUNEICsgR0lDRF9JSURSKSk7Cj4KPiBAQCAtNjE2LDYgKzYxOSwzMyBA QCBzdGF0aWMgaW50IGdpY3YzX2VuYWJsZV9yZWRpc3Qodm9pZCkKPiAgICAgIHJldHVybiAwOwo+ ICB9Cj4KPiArc3RhdGljIGludCBnaWN2M19yZGlzdF9pbml0X2xwaXModm9pZCBfX2lvbWVtICog cmRpc3RfYmFzZSkKCkkgdGhpbmsgaXQgd291bGQgbWFrZSBzZW5zZSB0byBtb3ZlIHRoaXMgZnVu Y3Rpb24gaW4gZ2ljdjMtbHBpLmMuIFNvIApvbmx5IG9uZSBmdW5jdGlvbiByYXRoZXIgdGhhbiAy IHdvdWxkIGJlIGV4cG9ydGVkLgoKPiArewo+ICsgICAgdWludDMyX3QgcmVnOwo+ICsgICAgdWlu dDY0X3QgdGFibGVfcmVnOwo+ICsKPiArICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgTFBJcyB3aXRo b3V0IGFuIElUUy4gKi8KPiArICAgIGlmICggbGlzdF9lbXB0eSgmaG9zdF9pdHNfbGlzdCkgKQoK U2VlIG15IGNvbW1lbnQgb24gcGF0Y2ggIzIgcmVnYXJkaW5nIGhvc3RfaXRzX2xpc3QuCgo+ICsg ICAgICAgIHJldHVybiAtRU5PREVWOwo+ICsKPiArICAgIC8qIE1ha2Ugc3VyZSBMUElzIGFyZSBk aXNhYmxlZCBiZWZvcmUgc2V0dGluZyB1cCB0aGUgdGFibGVzLiAqLwo+ICsgICAgcmVnID0gcmVh ZGxfcmVsYXhlZChyZGlzdF9iYXNlICsgR0lDUl9DVExSKTsKPiArICAgIGlmICggcmVnICYgR0lD Ul9DVExSX0VOQUJMRV9MUElTICkKPiArICAgICAgICByZXR1cm4gLUVCVVNZOwoKV2h5IGRvbid0 IHlvdSBqdXN0IGRpc2FibGUgTFBJcyBoZXJlPyBBRkFJSywgaXQgc2hvdWxkIGp1c3QgYmUKd3Jp dGVsX3JlbGF4ZWQocmVnICYgfkdJQ1JfQ1RMUl9FTkFCTEVfTFBJUywgR0lDUl9DVExSKTsKCj4g Kwo+ICsgICAgdGFibGVfcmVnID0gZ2ljdjNfbHBpX2FsbG9jYXRlX3BlbmR0YWJsZSgpOwo+ICsg ICAgaWYgKCAhdGFibGVfcmVnICkKCiBGcm9tIHRoZSBzcGVjLCBHSUNSX1BFTkRCQVNFUiBmdWxs IG9mIDAgaXMgdmFsaWQuCgo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAgd3JpdGVx X3JlbGF4ZWQodGFibGVfcmVnLCByZGlzdF9iYXNlICsgR0lDUl9QRU5EQkFTRVIpOwoKT24gdGhl IGZpcnN0IHZlcnNpb24gb2YgdGhpcyBzZXJpZXMsIEkgbWVudGlvbmVkIHRoYXQgYmFzZWQgb24g dGhlIHNwZWMgCig4LjExLjE4IGluIEFSTSBJSEkgMDA2OUMpIGNhY2hlYWJpbGl0eSBhbmQgc2hh cmVhYmlsaXR5IG1heSBub3Qgc3RpY2suCgpXaGlsc3QgdGhpcyBtYXkgbm90ICg/KSBiZSBhIGNv bmNlcm4gZm9yIHRoZSBwZW5kaW5nIHRhYmxlLCBYZW4gd2lsbCAKd3JpdGUgaW4gdGhlIHByb3Bl cnR5IHRhYmxlIHRvIGVuYWJsZS9kaXNhYmxlIExQSXMuIFNvIHdlIHdvdWxkIG5lZWQgdG8gCmtu b3cgd2hldGhlciB0aGUgY2FjaGUgbmVlZHMgdG8gYmUgY2xlYW5lZCBhZnRlciBlYWNoIGFjY2Vz cyBvciBub3QuCgo+ICsKPiArICAgIHRhYmxlX3JlZyA9IGdpY3YzX2xwaV9nZXRfcHJvcHRhYmxl KCk7Cj4gKyAgICBpZiAoICF0YWJsZV9yZWcgKQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ ICsgICAgd3JpdGVxX3JlbGF4ZWQodGFibGVfcmVnLCByZGlzdF9iYXNlICsgR0lDUl9QUk9QQkFT RVIpOwoKU2VlIGFsbCBteSByZW1hcmtzIGFib3ZlLgoKPiArCj4gKyAgICByZXR1cm4gMDsKPiAr fQo+ICsKPiAgc3RhdGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9pZCkKPiAg ewo+ICAgICAgaW50IGk7Cj4gQEAgLTY1OCw2ICs2ODgsMjAgQEAgc3RhdGljIGludCBfX2luaXQg Z2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9pZCkKPiAgICAgICAgICAgICAgaWYgKCAodHlwZXIgPj4g MzIpID09IGFmZiApCj4gICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgIHRoaXNfY3B1 KHJiYXNlKSA9IHB0cjsKPiArCj4gKyAgICAgICAgICAgICAgICBpZiAoIHR5cGVyICYgR0lDUl9U WVBFUl9QTFBJUyApCj4gKyAgICAgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICAgICAg aW50IHJldDsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gZ2ljdjNfcmRpc3RfaW5p dF9scGlzKHB0cik7Cj4gKyAgICAgICAgICAgICAgICAgICAgaWYgKCByZXQgJiYgcmV0ICE9IC1F Tk9ERVYgKQo+ICsgICAgICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgcHJpbnRrKCJHSUN2MzogQ1BVJWQ6IENhbm5vdCBpbml0aWFsaXplIExQSXM6ICVkXG4iLAoK Q1BVJXUKCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXBfcHJvY2Vzc29yX2lk KCksIHJldCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAg ICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgIH0KPiArCj4gICAgICAgICAgICAgICAgICBw cmludGsoIkdJQ3YzOiBDUFUlZDogRm91bmQgcmVkaXN0cmlidXRvciBpbiByZWdpb24gJWQgQCVw XG4iLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCksIGksIHB0 cik7Cj4gICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9iaXRvcHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vYml0b3BzLmgKPiBpbmRl eCBiZGE4ODk4Li4xY2JmYjllIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYml0 b3BzLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2JpdG9wcy5oCj4gQEAgLTI0LDYgKzI0 LDcgQEAKPiAgI2RlZmluZSBCSVQobnIpICAgICAgICAgICAgICAgICAoMVVMIDw8IChucikpCj4g ICNkZWZpbmUgQklUX01BU0sobnIpICAgICAgICAgICAgKDFVTCA8PCAoKG5yKSAlIEJJVFNfUEVS X1dPUkQpKQo+ICAjZGVmaW5lIEJJVF9XT1JEKG5yKSAgICAgICAgICAgICgobnIpIC8gQklUU19Q RVJfV09SRCkKPiArI2RlZmluZSBCSVRfVUxMKG5yKSAgICAgICAgICAgICAoMVVMTCA8PCAobnIp KQo+ICAjZGVmaW5lIEJJVFNfUEVSX0JZVEUgICAgICAgICAgIDgKPgo+ICAjZGVmaW5lIEFERFIg KCoodm9sYXRpbGUgaW50ICopIGFkZHIpCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vZ2ljLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oCj4gaW5kZXggODM2YTEwMy4uMTJi ZDE1NSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oCj4gKysrIGIveGVu L2luY2x1ZGUvYXNtLWFybS9naWMuaAo+IEBAIC0yMjAsNiArMjIwLDggQEAgZW51bSBnaWNfdmVy c2lvbiB7Cj4gICAgICBHSUNfVjMsCj4gIH07Cj4KPiArI2RlZmluZSBMUElfT0ZGU0VUICAgICAg ODE5Mgo+ICsKCkl0IHdvdWxkIG1ha2UgbXVjaCBzZW5zZSB0byBoYXZlIHRoaXMgZGVmaW5pdGlv biBtb3ZlZCBpbiBpcnEuaCBjbG9zZSB0byAKTlJfSVJRUy4KCkFsc28sIEkgYW0gYSBiaXQgc3Vy cHJpc2VkIHRoYXQgTlJfSVJRUyAmIGNvIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gSXMgCnRoZXJl IGFueSByZWFzb24gZm9yIHRoYXQ/CgpSZWdhcmRzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==