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, 27 Feb 2017 12:48:43 +0000 Message-ID: References: <20170130183153.28566-1-andre.przywara@arm.com> <20170130183153.28566-4-andre.przywara@arm.com> <4a6be01d-f26b-66db-387d-5e6a307f725e@arm.com> <7a5e77e6-778a-dd23-82ec-03a4cb4816a4@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ciKjT-0008EY-Jn for xen-devel@lists.xenproject.org; Mon, 27 Feb 2017 12:48:52 +0000 In-Reply-To: <7a5e77e6-778a-dd23-82ec-03a4cb4816a4@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, nd@arm.com, Vijay Kilari List-Id: xen-devel@lists.xenproject.org CgpPbiAyNy8wMi8xNyAxMTozNCwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gSGksCgpIaSBBbmRy ZSwKCj4KPiAiWWVzLCB3aWxsIGZpeCIgdG8gZXZlcnl0aGluZyBub3QgZXhwbGljaXRseSBtZW50 aW9uZWQgYmVsb3cuCj4KPiBPbiAwNi8wMi8xNyAxNjoyNiwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+ PiBIaSBBbmRyZSwKPj4KPj4gT24gMzAvMDEvMTcgMTg6MzEsIEFuZHJlIFByenl3YXJhIHdyb3Rl Ogo+Pj4gVGhlIEFSTSBHSUN2MyBwcm92aWRlcyBhIG5ldyBraW5kIG9mIGludGVycnVwdCBjYWxs ZWQgTFBJcy4KPj4+IFRoZSBwZW5kaW5nIGJpdHMgYW5kIHRoZSBjb25maWd1cmF0aW9uIGRhdGEg KHByaW9yaXR5LCBlbmFibGUgYml0cykgZm9yCj4+PiB0aG9zZSBMUElzIGFyZSBzdG9yZWQgaW4g dGFibGVzIGluIG5vcm1hbCBtZW1vcnksIHdoaWNoIHNvZnR3YXJlIGhhcyB0bwo+Pj4gcHJvdmlk ZSB0byB0aGUgaGFyZHdhcmUuCj4+PiBBbGxvY2F0ZSB0aGUgcmVxdWlyZWQgbWVtb3J5LCBpbml0 aWFsaXplIGl0IGFuZCBoYW5kIGl0IG92ZXIgdG8gZWFjaAo+Pj4gcmVkaXN0cmlidXRvci4gVGhl IG1heGltdW0gbnVtYmVyIG9mIExQSXMgdG8gYmUgdXNlZCBjYW4gYmUgYWRqdXN0ZWQgd2l0aAo+ Pj4gdGhlIGNvbW1hbmQgbGluZSBvcHRpb24gIm1heF9scGlfYml0cyIsIHdoaWNoIGRlZmF1bHRz IHRvIGEgY29tcGlsZSB0aW1lCj4+PiBjb25zdGFudCBleHBvc2VkIGluIEtjb25maWcuCj4+Pgo+ Pj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+ Cj4+PiAtLS0KPj4+ICB4ZW4vYXJjaC9hcm0vS2NvbmZpZyAgICAgICAgICAgICAgfCAgMTUgKysr KysKPj4+ICB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKwo+Pj4gIHhl bi9hcmNoL2FybS9naWMtdjMtbHBpLmMgICAgICAgICB8IDEyOQo+Pj4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPj4+ICB4ZW4vYXJjaC9hcm0vZ2ljLXYzLmMgICAgICAg ICAgICAgfCAgNDQgKysrKysrKysrKysrKwo+Pj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vYml0b3Bz LmggICAgICB8ICAgMSArCj4+PiAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaCAgICAgICAgIHwg ICAyICsKPj4+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19kZWZzLmggfCAgNTIgKysrKysr KysrKysrKystCj4+PiAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggIHwgIDIyICsr KysrKy0KPj4+ICA4IGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vZ2ljLXYzLWxwaS5jCj4+ Pgo+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9LY29uZmlnIGIveGVuL2FyY2gvYXJtL0tj b25maWcKPj4+IGluZGV4IGJmNjRjNjEuLjcxNzM0YTEgMTAwNjQ0Cj4+PiAtLS0gYS94ZW4vYXJj aC9hcm0vS2NvbmZpZwo+Pj4gKysrIGIveGVuL2FyY2gvYXJtL0tjb25maWcKPj4+IEBAIC00OSw2 ICs0OSwyMSBAQCBjb25maWcgSEFTX0lUUwo+Pj4gICAgICAgICAgYm9vbCAiR0lDdjMgSVRTIE1T SSBjb250cm9sbGVyIHN1cHBvcnQiCj4+PiAgICAgICAgICBkZXBlbmRzIG9uIEhBU19HSUNWMwo+ Pj4KPj4+ICtjb25maWcgTUFYX1BIWVNfTFBJX0JJVFMKPj4+ICsgICAgICAgIGRlcGVuZHMgb24g SEFTX0lUUwo+Pj4gKyAgICAgICAgaW50ICJNYXhpbXVtIGJpdHMgZm9yIEdJQ3YzIGhvc3QgTFBJ cyAoMTQtMzIpIgo+Pj4gKyAgICAgICAgcmFuZ2UgMTQgMzIKPj4+ICsgICAgICAgIGRlZmF1bHQg IjIwIgo+Pj4gKyAgICAgICAgaGVscAo+Pj4gKyAgICAgICAgICBTcGVjaWZpZXMgdGhlIG1heGlt dW0gbnVtYmVyIG9mIExQSXMgKGluIGJpdHMpIFhlbiBzaG91bGQgdGFrZQo+Pj4gKyAgICAgICAg ICBjYXJlIG9mLiBUaGUgaG9zdCBJVFMgbWF5IHByb3ZpZGUgc3VwcG9ydCBmb3IgYSB2ZXJ5IGxh cmdlCj4+PiBudW1iZXIKPj4+ICsgICAgICAgICAgb2Ygc3VwcG9ydGVkIExQSXMsIGZvciBhbGwg b2Ygd2hpY2ggd2UgbWF5IG5vdCB3YW50IHRvCj4+PiBhbGxvY2F0ZQo+Pj4gKyAgICAgICAgICBt ZW1vcnksIHNvIHRoaXMgbnVtYmVyIGhlcmUgYWxsb3dzIHRvIGxpbWl0IHRoaXMuCj4+Cj4+IEkg dGhpbmsgdGhlIGRlc2NyaXB0aW9uIGlzIG1pc2xlYWRpbmcsIGlmIGEgdXNlciB3YW50cyA4SyB3 b3J0aCBvZiBMUElzCj4+IGJ5IGRlZmF1bHQsIGhlIHdvdWxkIGhhdmUgdG8gdXNlIDE0IGFuZCBu b3QgMTMuCj4+Cj4+IEZ1cnRoZXJtb3JlLCB5b3UgcHJvdmlkZSBib3RoIGEgcnVudGltZSBvcHRp b24gKHZpYSBjb21tYW5kIGxpbmUpIGFuZAo+PiBidWlsZCB0aW1lIG9wdGlvbiAodmlhIEtjb25m aWcpLiBZb3UgZG9uJ3QgZXhwcmVzcyB3aGF0IGlzIHRoZQo+PiBkaWZmZXJlbmNlcyBiZXR3ZWVu IGJvdGggYW5kIGhvdyB0aGVyZSBhcmUgc3VwcG9zZWQgdG8gY28tZXhpc3QuCj4+Cj4+IEFueXdh eSwgSUhNTyB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiBzaG91bGQgYmUgc3VmZmljaWVudCB0byBh bGxvdwo+PiBvdmVycmlkZSBpZiBuZWNlc3NhcnkuIFNvIEkgd291bGQgZHJvcCB0aGUgS2NvbmZp ZyB2ZXJzaW9uLgo+Cj4gVGhlIGlkZWEgaXMgc2ltcGx5IHRvIGxldCB0aGUgS2NvbmZpZyB2ZXJz aW9uIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmFsdWUKPiBpZiB0aGVyZSBpcyBubyBjb21tYW5kIGxp bmUgb3B0aW9uLiBTbyBnaXZpbmcgYSBjb21tYW5kIGxpbmUgb3B0aW9uIHdpbGwKPiBhbHdheXMg b3ZlcnJpZGUgS2NvbmZpZy4KPiBTaG91bGQgd2Uga25vdyBhIHNlbnNpYmxlIGRlZmF1bHQgdmFs dWUsIHdlIGNhbiBpbmRlZWQgZ2V0IHJpZCBvZiB0aGlzCj4gS2NvbmZpZyBzbmlwcGV0IGhlcmUu CgpQbGVhc2UgaGF2ZSBpbiBtaW5kIHRoYXQgZGlzdHJpYnV0aW9uIHdpbGwgc2hpcCBvbmUgdmVy c2lvbiBvZiBYZW4gZm9yIAphbGwgdGhlIHBsYXRmb3Jtcy4gVGhlcmUgaXMgbm8gc2Vuc2libGUg ZGVmYXVsdCB2YWx1ZSBhbmQgSSBkb24ndCBzZWUgCmhvdyBhIGRpc3RyaWJ1dGlvbiB3aWxsIGJl IGFibGUgdG8gcGljay11cCBvbmUuCgpTbyBJIHN0aWxsIGRvbid0IHNlZSB0aGUgcG9pbnQgb2Yg dGhpcyBkZWZhdWx0IG9wdGlvbi4KCj4KPj4+ICsgICAgICAgICAgWGVuIGl0c2VsZiBkb2VzIG5v dCBrbm93IGhvdyBtYW55IExQSXMgZG9tYWlucyB3aWxsIGV2ZXIgbmVlZAo+Pj4gKyAgICAgICAg ICBiZWZvcmVoYW5kLgo+Pj4gKyAgICAgICAgICBUaGlzIGNhbiBiZSBvdmVycmlkZW4gb24gdGhl IGNvbW1hbmQgbGluZSB3aXRoIHRoZQo+Pj4gbWF4X2xwaV9iaXRzCj4+Cj4+IHMvb3ZlcnJpZGVu L292ZXJyaWRkZW4vCj4+Cj4+PiArICAgICAgICAgIHBhcmFtZXRlci4KPj4+ICsKPj4+ICBlbmRt ZW51Cj4+Pgo+Pj4gIG1lbnUgIkFSTSBlcnJhdGEgd29ya2Fyb3VuZCB2aWEgdGhlIGFsdGVybmF0 aXZlIGZyYW1ld29yayIKPj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94 ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPj4+IGluZGV4IDVmNGZmMjMuLjRjY2YyZWIgMTAwNjQ0Cj4+ PiAtLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPj4+ICsrKyBiL3hlbi9hcmNoL2FybS9NYWtl ZmlsZQo+Pj4gQEAgLTE5LDYgKzE5LDcgQEAgb2JqLXkgKz0gZ2ljLm8KPj4+ICBvYmoteSArPSBn aWMtdjIubwo+Pj4gIG9iai0kKENPTkZJR19IQVNfR0lDVjMpICs9IGdpYy12My5vCj4+PiAgb2Jq LSQoQ09ORklHX0hBU19JVFMpICs9IGdpYy12My1pdHMubwo+Pj4gK29iai0kKENPTkZJR19IQVNf SVRTKSArPSBnaWMtdjMtbHBpLm8KPj4+ICBvYmoteSArPSBndWVzdGNvcHkubwo+Pj4gIG9iai15 ICs9IGh2bS5vCj4+PiAgb2JqLXkgKz0gaW8ubwo+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS9naWMtdjMtbHBpLmMgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLWxwaS5jCj4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uZTJmYzkwMQo+Pj4gLS0tIC9kZXYvbnVsbAo+ Pj4gKysrIGIveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwo+Pj4gQEAgLTAsMCArMSwxMjkgQEAK Pj4+ICsvKgo+Pj4gKyAqIHhlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMKPj4+ICsgKgo+Pj4gKyAq IEFSTSBHSUN2MyBMb2NhbGl0eS1zcGVjaWZpYyBQZXJpcGhlcmFsIEludGVycnVwdHMgKExQSSkg c3VwcG9ydAo+Pj4gKyAqCj4+PiArICogQ29weXJpZ2h0IChDKSAyMDE2LDIwMTcgLSBBUk0gTHRk Cj4+PiArICoKPj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+Pj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4+PiArICog dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKPj4+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+Pj4g KyAqCj4+PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCj4+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4+PiArICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4+ICsgKi8KPj4+ICsK Pj4+ICsjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgo+Pgo+PiB4ZW4vY29uZmlnLmggaXMgbm90IG5l Y2Vzc2FyeS4KPj4KPj4+ICsjaW5jbHVkZSA8eGVuL2xpYi5oPgo+Pj4gKyNpbmNsdWRlIDx4ZW4v bW0uaD4KPj4+ICsjaW5jbHVkZSA8eGVuL3NpemVzLmg+Cj4+PiArI2luY2x1ZGUgPGFzbS9naWMu aD4KPj4+ICsjaW5jbHVkZSA8YXNtL2dpY192M19kZWZzLmg+Cj4+PiArI2luY2x1ZGUgPGFzbS9n aWNfdjNfaXRzLmg+Cj4+PiArCj4+PiArLyogR2xvYmFsIHN0YXRlICovCj4+PiArc3RhdGljIHN0 cnVjdCB7Cj4+PiArICAgIHVpbnQ4X3QgKmxwaV9wcm9wZXJ0eTsKPj4+ICsgICAgdW5zaWduZWQg aW50IGhvc3RfbHBpX2JpdHM7Cj4+Cj4+IE9uIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCBTdGVmYW5v IHN1Z2dlc3RlZCB0byByZW5hbWUgdGhpcyB0bwo+PiBwaHlzX2xwaV9iaXRzICsgYWRkaW5nIGEg Y29tbWVudCBhcyB5b3Ugc3RvcmUgdGhlIG51bWJlciBvZiBiaXRzLgo+Pgo+PiBIb3dldmVyLCBs b29raW5nIGF0IHRoZSB1c2FnZSB0aGUgbnVtYmVyIG9mIGJpdHMgaXMgb25seSByZXF1aXJlZCBk dXJpbmcKPj4gdGhlIGluaXRpYWxpemF0aW9uLiBSdW50aW1lIGNvZGUgKHN1Y2ggYXMgZ2ljX2dl dF9ob3N0X2xwaSkgd2lsbCB1c2UgdGhlCj4+IG51bWJlciBvZiBMUElzIChzZWUgZ2ljX2dldF9o b3N0X2xwaSkgYW5kIHRoZXJlZm9yZSByZXF1aXJlIGV4dHJhCj4+IGluc3RydWN0aW9ucyB0byBj b21wdXRlIHRoZSB2YWx1ZS4KPj4KPj4gU28gSSB3b3VsZCBwcmVmZXIgaWYgeW91IHN0b3JlIHRo ZSBudW1iZXIgb2YgTFBJcyBoZXJlIHRvIG9wdGltaXplIHRoZQo+PiBjb21tb24gY2FzZS4KPgo+ IFdlbGwsIGl0J3MgYSBzaGlmdCwgbm90IHRoZSA1dGggcm9vdC4gVGhpcyBpcyBpbiBmYWN0IHRo ZSBvbmx5Cj4gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gYXBwcm9hY2hlczoKPiAwMDAwMDAw MDAwMjRkNzcwIDxnaWNfZ2V0X2hvc3RfbHBpPjoKPiAgIC4uLgo+ICAgMjRkNzg4OiAgICAgICA5 YWMyMjQyMSAgICAgICAgbHNyICAgICB4MSwgeDEsIHgyCgpPbmUgaW5zdHJ1Y3Rpb24gY2FuIG1h a2UgYSBsb3Qgb2YgZGlmZmVyZW5jZXMgd2hlbiBhIGZ1bmN0aW9uIGlzIApleGVjdXRlZCBodW5k cmVkIHRpbWVzLgoKPiBBbmQgSSB3YXMgdGhpbmtpbmcgYWJvdXQgaXQgYmVmb3JlLCBteSByYXRp b25hbGUgZm9yIG5vdCBkb2luZyBpdCB3YXM6Cj4gLSBXZSBuZWVkIGJvdGggdGhlIG51bWJlciBh bmQgdGhlIHNoaWZ0LCBhbmQgaXQncyBtdWNoIGVhc2llciB0byBnZXQgdGhlCj4gbnVtYmVyIGZy b20gdGhlIGJpdHMgdGhhbiB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KCkJ1dCB5b3Ugb25seSBuZWVk IHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW5pdGlhbGl6YXRpb24uIEkgZG9uJ3QgY2FyZSAK aWYgdGhlIElUUyBpbml0aWFsaXphdGlvbiBpcyBsaXR0bGUgc2xvd2VyIHRoYW4gdGhlIGludmVy dC4KCj4gLSBUaGUgYml0cyBhcmUgdGhlIHJlYWwgc291cmNlIG9mIHRoZSBpbmZvcm1hdGlvbiAo ZnJvbSBUWVBFUikuCgpTbz8gSXQgaXMgZmluZSB0byB1c2UgYW5vdGhlciB3YXkgdG8gc3RvcmUg dGhlIHZhbHVlIGluIFhlbiBpZiBpdCBtYWtlcyAKZWFzaWVyIHRvIHVzZSBpbiBtb3N0IG9mIHRo ZSBwbGFjZXMuIFRoaXMgd2lsbCBhbHNvIGJlIGxlc3MgY29uZnVzaW5nIApmb3IgdGhlIHVzZXJz LgoKPiAtIEhhdmluZyBhIG51bWJlciB3b3VsZCBhbHdheXMgcmFpc2UgdGhlIHF1ZXN0aW9uIHdo ZXRoZXIgd2UgbmVlZCB0bwo+IG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUg Yml0IHNldCBpbiB0aGVyZSBhbmQgaG93IHRvIGRlYWwKPiB3aXRoIGl0LgoKSXQgaXMgbm90IGRp ZmZpY3VsdCB0byBoYW5kbGUgdGhhdC4KCj4KPj4gQWxzbywgSSBmaW5kIHRoZSBuYW1pbmcgImlk X2JpdHMiIGNvbmZ1c2luZyBiZWNhdXNlIHlvdSBzdG9yZSB0aGUgbnVtYmVyCj4+IG9mIGJpdHMg dG8gZW5jb2RlIHRoZSBtYXggTFBJIElEIGFuZCBub3QgdGhlIG51bWJlciBvZiBiaXRzIHRvIGVu Y29kZQo+PiB0aGUgbnVtYmVyIG9mIExQSS4KPgo+ICJJRGJpdHMiIGlzIHRoZSBzcGVjIHRlcm0g dXNlZC4gSXQgZGVzY3JpYmVzIGhvdyBtYW55IGJpdHMgeW91IG5lZWQgdG8KPiBkZXNjcmliZSBh biBMUEkgbnVtYmVyLiBMUElzIHN0YXJ0IGF0IG51bWJlciA4MTkyLgo+IEdJQ3YzIHNwZWMsIDgu OS4yNDoKPiBJRGJpdHMsIGJpdHMgWzIzOjE5XQo+ICAgICAgICBUaGUgbnVtYmVyIG9mIGludGVy cnVwdCBpZGVudGlmaWVyIGJpdHMgc3VwcG9ydGVkLCBtaW51cyBvbmUuCj4KPiBJIGNhbiByZW5h bWUgdGhpcyB0byAicGh5c19scGlfaWRiaXRzIiwgaWYgdGhhdCBzb3VuZHMgcmVhc29uYWJsZS4K Pgo+Pj4gK30gbHBpX2RhdGE7Cj4+PiArCj4+PiArLyogUGVuZGluZyB0YWJsZSBmb3IgZWFjaCBy ZWRpc3RyaWJ1dG9yICovCj4+PiArc3RhdGljIERFRklORV9QRVJfQ1BVKHZvaWQgKiwgcGVuZGlu Z190YWJsZSk7Cj4+PiArCj4+PiArI2RlZmluZSBNQVhfUEhZU19MUElTICAgKEJJVF9VTEwobHBp X2RhdGEuaG9zdF9scGlfYml0cykgLSBMUElfT0ZGU0VUKQo+Pj4gKwo+Pj4gK3VpbnQ2NF90IGdp Y3YzX2xwaV9hbGxvY2F0ZV9wZW5kdGFibGUodm9pZCkKPj4+ICt7Cj4+PiArICAgIHVpbnQ2NF90 IHJlZzsKPj4+ICsgICAgdm9pZCAqcGVuZHRhYmxlOwo+Pj4gKwo+Pj4gKyAgICByZWcgID0gR0lD X0JBU0VSX0NBQ0hFX1JhV2FXYiA8PAo+Pj4gR0lDUl9QRU5EQkFTRVJfSU5ORVJfQ0FDSEVBQklM SVRZX1NISUZUOwo+Pj4gKyAgICByZWcgfD0gR0lDX0JBU0VSX0NBQ0hFX1NhbWVBc0lubmVyIDw8 Cj4+PiBHSUNSX1BFTkRCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQ7Cj4+PiArICAgIHJl ZyB8PSBHSUNfQkFTRVJfSW5uZXJTaGFyZWFibGUgPDwKPj4+IEdJQ1JfUEVOREJBU0VSX1NIQVJF QUJJTElUWV9TSElGVDsKPj4+ICsKPj4+ICsgICAgaWYgKCAhdGhpc19jcHUocGVuZGluZ190YWJs ZSkgKQo+Pj4gKyAgICB7Cj4+PiArICAgICAgICAvKgo+Pj4gKyAgICAgICAgICogVGhlIHBlbmRp bmcgdGFibGUgaG9sZHMgb25lIGJpdCBwZXIgTFBJIGFuZCBldmVuIGNvdmVycwo+Pj4gYml0cyBm b3IKPj4+ICsgICAgICAgICAqIGludGVycnVwdCBJRHMgYmVsb3cgODE5Miwgc28gd2UgYWxsb2Nh dGUgdGhlIGZ1bGwgcmFuZ2UuCj4+PiArICAgICAgICAgKiBUaGUgR0lDdjMgaW1wb3NlcyBhIDY0 S0IgYWxpZ25tZW50IHJlcXVpcmVtZW50Lgo+Pj4gKyAgICAgICAgICovCj4+PiArICAgICAgICBw ZW5kdGFibGUgPSBfeG1hbGxvYyhCSVRfVUxMKGxwaV9kYXRhLmhvc3RfbHBpX2JpdHMpIC8gOCwK Pj4+IFNaXzY0Syk7Cj4+PiArICAgICAgICBpZiAoICFwZW5kdGFibGUgKQo+Pj4gKyAgICAgICAg ICAgIHJldHVybiAwOwo+Pj4gKwo+Pj4gKyAgICAgICAgbWVtc2V0KHBlbmR0YWJsZSwgMCwgQklU X1VMTChscGlfZGF0YS5ob3N0X2xwaV9iaXRzKSAvIDgpOwo+Pgo+PiBZb3UgY2FuIHVzZSBfemFs bG9jIHRvIGRvIHRoZSBhbGxvY2F0aW9uIGFuZCB0aGVuIG1lbXNldCB0byAwLgo+Pgo+Pj4gKyAg ICAgICAgX19mbHVzaF9kY2FjaGVfYXJlYShwZW5kdGFibGUsCj4+PiBCSVRfVUxMKGxwaV9kYXRh Lmhvc3RfbHBpX2JpdHMpIC8gOCk7Cj4+Cj4+IFBsZWFzZSB1c2UgY2xlYW5fYW5kX2ludmFsaWRh dGVfZGNhY2hlX3ZhX3JhbmdlLgo+Pgo+Pj4gKwo+Pj4gKyAgICAgICAgdGhpc19jcHUocGVuZGlu Z190YWJsZSkgPSBwZW5kdGFibGU7Cj4+PiArICAgIH0KPj4+ICsgICAgZWxzZQo+Pj4gKyAgICB7 Cj4+PiArICAgICAgICBwZW5kdGFibGUgPSB0aGlzX2NwdShwZW5kaW5nX3RhYmxlKTsKPj4+ICsg ICAgfQo+Pgo+PiBUaGUge30gYXJlIG5vdCBuZWNlc3NhcnkuCj4KPiBTdXJlLCB0aGlzIHdhcyBj b21pbmcgZnJvbSB0aGUgTGludXggcnVsZSBoZXJlOiBpZiB0aGUgaWYtY2xhdXNlCj4gcmVxdWly ZXMgYnJhY2VzLCB0aGUgZWxzZS1jbGF1c2UgaGFzIHRvIGhhdmUgdGhvc2UgdG9vLiBUbyBtZSBp dCBsb29rcwo+IHdlaXJkIG90aGVyd2lzZS4gWGVuJ3MgY29kaW5nIHN0eWxlIGRvY3VtZW50IGRv ZXNuJ3QgZXhwbGljaXRseSBzYXkuCgpXZSB0ZW5kIHRvIGF2b2lkIHBvaW50bGVzcyB7fSBpbiBY ZW4uCgo+Cj4+IEFsc28sIG9uIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGl0IHdhcyBtZW50aW9uZWQK Pj4gdGhpcyBzaG91bGQgYmUgYW4gZXJyb3IgYW5kIHRoZW4gcmVwbGFjZSBieSBhIEJVR19PTigp Lgo+Cj4gSSBkb24ndCBzZWUgaG93IHRoaXMgd291bGQgYmUgYW4gYWN0dWFsIGJ1Zy4gWWVzLCB0 aGUgY29kZSBhcyBpdCBpcwo+IHJpZ2h0IG5vdyBjYWxscyB0aGlzIG9ubHkgb25jZSwgYnV0IGl0 IHdvdWxkbid0IGh1cnQgaWYgd2UgY2FsbCB0aGlzCj4gbXVsdGlwbGUgdGltZXMuIEFuZCBJIGFt IGFsd2F5cyBhIGJpdCB3YXJ5IG9mIGNyYXNoaW5nIHRoZSBzeXN0ZW0gaWYgd2UKPiBjb3VsZCBq dXN0IGNhcnJ5IG9uIGluc3RlYWQsIGJ1dCAuLi4KPgo+PiBQbGVhc2UgZG8gdGhlIGNoYW5nZS4K Pgo+IC4uLiBob3dldmVyIHlvdSBsaWtlLgoKVGhlIHF1ZXN0aW9uIGlzIG5vdCB3aGV0aGVyIGl0 IHdvdWxkIGh1cnQgdG8gY2FsbCB0aGlzIGNvZGUgdHdpY2UgYnV0IGlmIAppdCBtYWtlcyBzZW5z ZS4gSXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byB0cnkgdG8gYWxsb2NhdGUgdGhlIHBlbmR0YWJs ZSAKdHdpY2UgZm9yIHRoZSBzYW1lIENQVS4gU28gaXQgaXMgZXZlciBoYXBwZW5pbmcgaXQgbWVh bnMgdGhpcyBpcyBhIApwcm9ncmFtbWluZyBlcnJvciwgaGVuY2UgYSBCVUdfT04gbWFrZXMgc2Vu c2UgaGVyZS4KCkFub3RoZXIgc29sdXRpb24gaXMgaGF2aW5nIGFuIEFTU0VSVCh0aGlzX2NwdShw ZW5kaW5nX3RhYmxlKSA9PSBOVUxMKTsgCmF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9u LgoKPgo+Pj4gKwo+Pj4gKyAgICByZWcgfD0gR0lDUl9QRU5EQkFTRVJfUFRaOwo+Pj4gKwo+Pj4g KyAgICBBU1NFUlQoISh2aXJ0X3RvX21hZGRyKHBlbmR0YWJsZSkgJiB+R0VOTUFTSyg1MSwgMTYp KSk7Cj4+Cj4+IEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIEFTU0VSVC4g VGhlIGJpdHMgMTU6MCBzaG91bGQKPj4gYWx3YXlzIGJlIHplcm8gb3RoZXJ3aXNlIHRoaXMgd291 bGQgYmUgYSBidWcgaW4gdGhlIG1lbW9yeSBhbGxvY2F0b3IuCj4+IEZvciBiaXRzIDY0OjUyLCB0 aGUgYXJjaGl0ZWN0dXJlIHNvIGZhciBvbmx5IHN1cHBvcnQgdXAgdG8gNTIgYml0cy4KPgo+IFlv dSBjb21wbGFpbmVkIGFib3V0IHVzaW5nIGEgbWFzayBvbiB0aGUgYWRkcmVzcyBiZWZvcmUsIHdo aWNoIEkgY2FuCj4gdW5kZXJzdGFuZC4KPiBIb3dldmVyIHdlIGFyZSB3cml0aW5nIHRvIGEgcmVn aXN0ZXIgZGVzY3JpYmVkIGluIHRoZSBzcGVjIGhlcmUgYW5kCj4gc2hvdWxkIG9ic2VydmUgdGhh dCB0aGUgYWRkcmVzcyBvbmx5IGdvZXMgaW50byBiaXRzIFs1MToxNl0uIEFueSBvdGhlcgo+IGJp dHMgc2hvdWxkIG5vdCBiZSB0b3VjaGVkIG9yIHdlIGFyZSBnZXR0aW5nIHdlaXJkIGVycm9ycy4K PiBTbyBzb21laG93IEkgaGF2ZSB0byBtYWtlIHN1cmUgd2UgY29tcGx5IHdpdGggdGhpcy4KPiBU aGlzIGNvdWxkIGVpdGhlciBiZSBhIG1hc2sgb3IgYW4gQVNTRVJULgo+IElmIHRoZSBhc3NlcnQg bmV2ZXIgZmlyZXM6IGdyZWF0LiBOb3RoaW5nIHRvIHdvcnJ5IGFib3V0IGhlcmUuCj4gQnV0IEkg dGhpbmsgdGhpcyBtYXRjaGVzIHRoZSBBU1NFUlQgaWRlYTogd2UgcmVseSBvbiB0aGlzIGFkZHJl c3MgYmVpbmcgNEsKPiBhbGlnbmVkIGFuZCBub3QgZXhjZWVkaW5nIDUyIGJpdHMgd29ydGggb2Yg YWRkcmVzcyBiaXRzLCBzbyB3ZSBzaG91bGQKPiBjaGVjayB0aGVzZSBhc3N1bXB0aW9ucy4KCkFT U0VSVCBhcmUgb25seSBmb3IgZGVidWcgYnVpbGQuIEhvd2V2ZXIsIG5vdGhpbmcgcHJldmVudCB0 aGUgWGVuIAphbGxvY2F0b3IgdG8gZGlmZmVyIGJldHdlZW4gbm9uLWRlYnVnIGFuZCBkZWJ1ZyBi dWlsZC4gU28geW91IG1heSBlbmQgdXAgCnRvIG5ldmVyIGFsbG9jYXRlIGFkZHJlc3MgdGhhdCBh cmUgaW52YWxpZCBmb3IgdGhlIEdJQyBpbiBub24tZGVidWcgYnVpbGQuCgo+Cj4+IEJ5IGtlZXBp bmcgdGhpcyBBU1NFUlQsIHlvdSB3aWxsIG1ha2Ugb3VyIGxpZmUgbW9yZSBkaWZmaWN1bHQgdG8g ZXh0ZW5kCj4+IHRoZSBudW1iZXIgb2YgcGh5c2ljYWwgYWRkcmVzcyBzdXBwb3J0ZWQgaWYgQVJN IGRlY2lkZXMgdG8gYnVtcCBpdC4KPgo+IFRoaXMgR0lDUiByZWdpc3RlciBpcyBsaW1pdGVkIHRv IDUyIGJpdHMgb2YgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZQo+IGFjY29yZGluZyB0byB0aGUgc3Bl Yy4KPiBJZiB3ZSBldmVyIHVwZ3JhZGUgdGhlIGFkZHJlc3Mgc2l6ZSwgdGhlIEdJQyBzcGVjIHdv dWxkIG5lZWQgdG8gYmUKPiB1cGdyYWRlZCBhcyB3ZWxsLCBzbyBjaGFuY2VzIGFyZSB3ZSBlaXRo ZXIgbmVlZCB0byB0b3VjaCB0aGF0IGNvZGUgaGVyZQo+IGFueXdheXMgb3Igd2UgdXNlIGEgR0lD djUgb3IgdGhlIGxpa2UgZnJvbSB0aGUgYmVnaW5uaW5nLgoKSSBhbSBxdWl0ZSBjb252aW5jZWQg aXQgd2lsbCBtYWtlIG91ciBsaWZlIG1vcmUgZGlmZmljdWx0LiBCdXQgSSBhbSBub3QgCmdvaW5n IHRvIGZpZ2h0IGZvciBhbiBBU1NFUlQsIHRoZXJlIGFyZSBtb3JlIGltcG9ydGFudCBzdHVmZiB0 byBmaXguIDopCgoKPj4gV2h5IGRvbid0IHlvdSBqdXN0IGRpc2FibGUgTFBJcyBoZXJlPyBBRkFJ SywgaXQgc2hvdWxkIGp1c3QgYmUKPj4gd3JpdGVsX3JlbGF4ZWQocmVnICYgfkdJQ1JfQ1RMUl9F TkFCTEVfTFBJUywgR0lDUl9DVExSKTsKPgo+IFBsZWFzZSBkb24ndCBzaG9vdCB0aGUgbWVzc2Vu Z2VyLCBidXQ6Cj4gR0lDdjMgc3BlYyA4LjExLjIgIkdJQ1JfQ1RMUiwgUmVkaXN0cmlidXRvciBD b250cm9sIFJlZ2lzdGVyIjoKPiBFbmFibGVfTFBJcywgYml0IFswXToKPiAiLi4uIFdoZW4gYSB3 cml0ZSBjaGFuZ2VzIHRoaXMgYml0IGZyb20gMCB0byAxLCB0aGlzIGJpdCBiZWNvbWVzIFJFUzEK PiBhbmQgdGhlIFJlZGlzdHJpYnV0b3IgbXVzdCBsb2FkIHRoZSBMUEkgUGVuZGluZyB0YWJsZSBm cm9tIG1lbW9yeSB0bwo+IGNoZWNrIGZvciBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzLiIKPgo+IFJl YWQ6IExQSXMgYXJlIHNvIGdyZWF0IHRoYXQgeW91IGNhbid0IGRpc2FibGUgdGhlbSBhbnltb3Jl IG9uY2UgeW91Cj4gaGF2ZSBlbmFibGVkIHRoZW0uCgpIb3cgdGhpcyB3b3VsZCB3b3JrIHdpdGgg a2V4ZWM/Cgo+IFllcywgdGhpcyBpcyBhIGJpdCB3ZWlyZCwgZXZlbiBoYXMgbmFzdHkgc2lkZSBl ZmZlY3RzLgoKSW4gdGhhdCBjYXNlLCBJIHdvdWxkIHByZWZlciB0byBoYXZlIGVpdGhlciBhIHBh bmljIG9yIG1ha2UgdGhlIENQVSAKdW51c2FibGUgdG8gYXZvaWQgaGF2aW5nIHdlaXJkIGJlaGF2 aW9yIGFmdGVyd2FyZHMuCgpbLi4uXQoKPj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t YXJtL2JpdG9wcy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9iaXRvcHMuaAo+Pj4gaW5kZXggYmRh ODg5OC4uMWNiZmI5ZSAxMDA2NDQKPj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYml0b3Bz LmgKPj4+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vYml0b3BzLmgKPj4+IEBAIC0yNCw2ICsy NCw3IEBACj4+PiAgI2RlZmluZSBCSVQobnIpICAgICAgICAgICAgICAgICAoMVVMIDw8IChucikp Cj4+PiAgI2RlZmluZSBCSVRfTUFTSyhucikgICAgICAgICAgICAoMVVMIDw8ICgobnIpICUgQklU U19QRVJfV09SRCkpCj4+PiAgI2RlZmluZSBCSVRfV09SRChucikgICAgICAgICAgICAoKG5yKSAv IEJJVFNfUEVSX1dPUkQpCj4+PiArI2RlZmluZSBCSVRfVUxMKG5yKSAgICAgICAgICAgICAoMVVM TCA8PCAobnIpKQo+Pj4gICNkZWZpbmUgQklUU19QRVJfQllURSAgICAgICAgICAgOAo+Pj4KPj4+ ICAjZGVmaW5lIEFERFIgKCoodm9sYXRpbGUgaW50ICopIGFkZHIpCj4+PiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmgKPj4+ IGluZGV4IDgzNmExMDMuLjEyYmQxNTUgMTAwNjQ0Cj4+PiAtLS0gYS94ZW4vaW5jbHVkZS9hc20t YXJtL2dpYy5oCj4+PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oCj4+PiBAQCAtMjIw LDYgKzIyMCw4IEBAIGVudW0gZ2ljX3ZlcnNpb24gewo+Pj4gICAgICBHSUNfVjMsCj4+PiAgfTsK Pj4+Cj4+PiArI2RlZmluZSBMUElfT0ZGU0VUICAgICAgODE5Mgo+Pj4gKwo+Pgo+PiBJdCB3b3Vs ZCBtYWtlIG11Y2ggc2Vuc2UgdG8gaGF2ZSB0aGlzIGRlZmluaXRpb24gbW92ZWQgaW4gaXJxLmgg Y2xvc2UgdG8KPj4gTlJfSVJRUy4KPj4KPj4gQWxzbywgSSBhbSBhIGJpdCBzdXJwcmlzZWQgdGhh dCBOUl9JUlFTICYgY28gaGFzIG5vdCBiZWVuIG1vZGlmaWVkLiBJcwo+PiB0aGVyZSBhbnkgcmVh c29uIGZvciB0aGF0Pwo+Cj4gSXQgd2Fzbid0IG5lZWRlZCBhbmQgcmVhbGx5IHNob3VsZG4ndCBi ZS4KPiBMUEkgYXJlIHRvIHNvbWUgZGVncmVlICpub3QqIGZpcnN0IGNsYXNzIGNpdGl6ZW4gSVJR cywgYW5kIEFGQUlDVAo+IE5SX0lSUVMgcmVsYXRlIHRvIHN0cnVjdCBpcnFfZGVjcydzLCB3aGlj aCB3ZSBkb24ndCBoYXZlIGZvciBMUElzIChzaW5jZQo+IFhlbiBpdHNlbGYgZG9lc24ndCByZWFs bHkgY2FyZSBhYm91dCBMUElzLCBhdCBsZWFzdCBhcyBpbnRlcnJ1cHRzKS4KPgo+IEkgYW0gc3Rp bGwgY2hhc2luZyBldmVyeSAoZGVyaXZlZCkgdXNlIG9mIE5SX0lSUVMsIGJ1dCBzbyBmYXIgdGhp cyBsb29rcwo+IGdvb2QgdG8gbWUuIExldCBtZSBrbm93IGlmIHlvdSBmaW5kIGFueSBpc3N1ZXMg d2l0aCB0aGF0LgoKQ2FuIHdlIGhhdmUgYSBjb21tZW50IG9uIHRvcCBvZiBOUl9JUlFTIGV4cGxh aW5pbmcgd2h5IExQSXMgYXJlIG5vdCAKdGFrZW4gaW50byBhY2NvdW50PwoKQ2hlZXJzLAoKLS0g Ckp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==