From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 11/22] xen/arm: p2m: Find the memory attributes based on the p2m type Date: Tue, 26 Jul 2016 17:41:18 -0700 (PDT) Message-ID: References: <1469031064-23344-1-git-send-email-julien.grall@arm.com> <1469031064-23344-12-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1469031064-23344-12-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: proskurin@sec.in.tum.de, sstabellini@kernel.org, steve.capper@arm.com, wei.chen@linaro.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCAyMCBKdWwgMjAxNiwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEN1cnJlbnRseSwgbWZu X3RvX3AybV9lbnRyeSBpcyByZWx5aW5nIG9uIHRoZSBjYWxsZXIgdG8gcHJvdmlkZSB0aGUKPiBj b3JyZWN0IG1lbW9yeSBhdHRyaWJ1dGUgYW5kIHdpbGwgZGVkdWNlIHRoZSBzaGFyYWJpbGl0eSBi YXNlZCBvbiBpdC4KPiAKPiBTb21lIG9mIHRoZSBjYWxsZXJzLCBzdWNoIGFzIHAybV9jcmVhdGVf dGFibGUsIGFyZSB1c2luZyBzYW1lIG1lbW9yeQo+IGF0dHJpYnV0ZSByZWdhcmRsZXNzIHRoZSB1 bmRlcmx5aW5nIHAybSB0eXBlLiBGb3IgaW5zdGFuY2UsIHRoaXMgd2lsbAo+IGxlYWQgdG8gdXNl IGNoYW5nZSB0aGUgbWVtb3J5IGF0dHJpYnV0ZSBmcm9tIE1BVFRSX0RFViB0byBNQVRUUl9NRU0g d2hlbgo+IGEgTU1JTyBzdXBlcnBhZ2UgaXMgc2hhdHRlcmVkLgo+IAo+IEZ1cnRoZXJtb3JlLCBp dCBtYWtlcyBtb3JlIGRpZmZpY3VsdCB0byBzdXBwb3J0IGRpZmZlcmVudCBzaGFyZWFiaWxpdHkK PiB3aXRoIHRoZSBzYW1lIG1lbW9yeSBhdHRyaWJ1dGUuCj4gCj4gQWxsIHRoZSBtZW1vcnkgYXR0 cmlidXRlcyBjb3VsZCBiZSBkZWR1Y2VkIHZpYSB0aGUgcDJtIHR5cGUuIFRoaXMgd2lsbAo+IHNp bXBsaWZ5IHRoZSBjb2RlIGJ5IGRyb3BwaW5nIG9uZSBwYXJhbWV0ZXIuCj4gCj4gLS0tCj4gICAg IEkgYW0gbm90IHN1cmUgd2hldGhlciBwMm1fZGlyZWN0X21taW9fYyAoY2FjaGVhYmxlIE1NSU8p IHNob3VsZCB1c2UKPiAgICAgdGhlIG91dGVyLXNoYXJlYWJpbGl0eSBvciBpbm5lci1zaGFyZWFi aWxpdHkuIEFueSBvcGluaW9ucz8KCkkgdGhpbmsgeW91IGRpZCB0aGUgcmlnaHQgdGhpbmcgYnkg c2V0dGluZyBpdCB0byBvdXRlci4gR29vZCB3b3JrLgoKUmV2aWV3ZWQtYnk6IFN0ZWZhbm8gU3Rh YmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KCgo+IC0tLQo+ICB4ZW4vYXJjaC9hcm0v cDJtLmMgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJtLmMgYi94ZW4vYXJjaC9hcm0v cDJtLmMKPiBpbmRleCA5OTlkZTJiLi4yZjUwYjRmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2Fy bS9wMm0uYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+IEBAIC0zMjUsOCArMzI1LDcgQEAg c3RhdGljIHZvaWQgcDJtX3NldF9wZXJtaXNzaW9uKGxwYWVfdCAqZSwgcDJtX3R5cGVfdCB0LCBw Mm1fYWNjZXNzX3QgYSkKPiAgICAgIH0KPiAgfQo+ICAKPiAtc3RhdGljIGxwYWVfdCBtZm5fdG9f cDJtX2VudHJ5KG1mbl90IG1mbiwgdW5zaWduZWQgaW50IG1hdHRyLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCB0LCBwMm1fYWNjZXNzX3QgYSkKPiArc3RhdGlj IGxwYWVfdCBtZm5fdG9fcDJtX2VudHJ5KG1mbl90IG1mbiwgcDJtX3R5cGVfdCB0LCBwMm1fYWNj ZXNzX3QgYSkKPiAgewo+ICAgICAgLyoKPiAgICAgICAqIHNoLCB4biBhbmQgd3JpdGUgYml0IHdp bGwgYmUgZGVmaW5lZCBpbiB0aGUgZm9sbG93aW5nIHN3aXRjaGVzCj4gQEAgLTMzNSw3ICszMzQs NiBAQCBzdGF0aWMgbHBhZV90IG1mbl90b19wMm1fZW50cnkobWZuX3QgbWZuLCB1bnNpZ25lZCBp bnQgbWF0dHIsCj4gICAgICBscGFlX3QgZSA9IChscGFlX3QpIHsKPiAgICAgICAgICAucDJtLmFm ID0gMSwKPiAgICAgICAgICAucDJtLnJlYWQgPSAxLAo+IC0gICAgICAgIC5wMm0ubWF0dHIgPSBt YXR0ciwKPiAgICAgICAgICAucDJtLnRhYmxlID0gMSwKPiAgICAgICAgICAucDJtLnZhbGlkID0g MSwKPiAgICAgICAgICAucDJtLnR5cGUgPSB0LAo+IEBAIC0zNDMsMTggKzM0MSwyMSBAQCBzdGF0 aWMgbHBhZV90IG1mbl90b19wMm1fZW50cnkobWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQgbWF0dHIs Cj4gIAo+ICAgICAgQlVJTERfQlVHX09OKHAybV9tYXhfcmVhbF90eXBlID4gKDEgPDwgNCkpOwo+ ICAKPiAtICAgIHN3aXRjaCAobWF0dHIpCj4gKyAgICBzd2l0Y2ggKCB0ICkKPiAgICAgIHsKPiAt ICAgIGNhc2UgTUFUVFJfTUVNOgo+IC0gICAgICAgIGUucDJtLnNoID0gTFBBRV9TSF9JTk5FUjsK PiArICAgIGNhc2UgcDJtX21taW9fZGlyZWN0X25jOgo+ICsgICAgICAgIGUucDJtLm1hdHRyID0g TUFUVFJfREVWOwo+ICsgICAgICAgIGUucDJtLnNoID0gTFBBRV9TSF9PVVRFUjsKPiAgICAgICAg ICBicmVhazsKPiAgCj4gLSAgICBjYXNlIE1BVFRSX0RFVjoKPiArICAgIGNhc2UgcDJtX21taW9f ZGlyZWN0X2M6Cj4gKyAgICAgICAgZS5wMm0ubWF0dHIgPSBNQVRUUl9NRU07Cj4gICAgICAgICAg ZS5wMm0uc2ggPSBMUEFFX1NIX09VVEVSOwo+ICAgICAgICAgIGJyZWFrOwo+ICsKPiAgICAgIGRl ZmF1bHQ6Cj4gLSAgICAgICAgQlVHKCk7Cj4gLSAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgZS5w Mm0ubWF0dHIgPSBNQVRUUl9NRU07Cj4gKyAgICAgICAgZS5wMm0uc2ggPSBMUEFFX1NIX0lOTkVS Owo+ICAgICAgfQo+ICAKPiAgICAgIHAybV9zZXRfcGVybWlzc2lvbigmZSwgdCwgYSk7Cj4gQEAg LTQyMSw3ICs0MjIsNyBAQCBzdGF0aWMgaW50IHAybV9jcmVhdGVfdGFibGUoc3RydWN0IGRvbWFp biAqZCwgbHBhZV90ICplbnRyeSwKPiAgICAgICAgICAgKi8KPiAgICAgICAgICAgZm9yICggaT0w IDsgaSA8IExQQUVfRU5UUklFUzsgaSsrICkKPiAgICAgICAgICAgewo+IC0gICAgICAgICAgICAg cHRlID0gbWZuX3RvX3AybV9lbnRyeShtZm4sIE1BVFRSX01FTSwgdCwgcDJtLT5kZWZhdWx0X2Fj Y2Vzcyk7Cj4gKyAgICAgICAgICAgICBwdGUgPSBtZm5fdG9fcDJtX2VudHJ5KG1mbiwgdCwgcDJt LT5kZWZhdWx0X2FjY2Vzcyk7Cj4gIAo+ICAgICAgICAgICAgICAgbWZuID0gbWZuX2FkZChtZm4s IDFVTCA8PCAobGV2ZWxfc2hpZnQgLSBMUEFFX1NISUZUKSk7Cj4gIAo+IEBAIC00NDUsNyArNDQ2 LDcgQEAgc3RhdGljIGludCBwMm1fY3JlYXRlX3RhYmxlKHN0cnVjdCBkb21haW4gKmQsIGxwYWVf dCAqZW50cnksCj4gIAo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocCk7Cj4gIAo+IC0gICAgcHRl ID0gbWZuX3RvX3AybV9lbnRyeShfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKSwgTUFUVFJfTUVNLCBw Mm1faW52YWxpZCwKPiArICAgIHB0ZSA9IG1mbl90b19wMm1fZW50cnkoX21mbihwYWdlX3RvX21m bihwYWdlKSksIHAybV9pbnZhbGlkLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm0t PmRlZmF1bHRfYWNjZXNzKTsKPiAgCj4gICAgICBwMm1fd3JpdGVfcHRlKGVudHJ5LCBwdGUsIGZs dXNoX2NhY2hlKTsKPiBAQCAtNjY2LDcgKzY2Nyw2IEBAIHN0YXRpYyBpbnQgYXBwbHlfb25lX2xl dmVsKHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRy X3QgKmFkZHIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgKm1hZGRyLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sX3QgKmZsdXNoLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbWF0dHIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg IHAybV90eXBlX3QgdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2FjY2Vzc190 IGEpCj4gIHsKPiBAQCAtNjk1LDcgKzY5NSw3IEBAIHN0YXRpYyBpbnQgYXBwbHlfb25lX2xldmVs KHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgICAgICAgICByZXR1cm4gcmM7Cj4gIAo+ICAg ICAgICAgICAgICAvKiBOZXcgbWFwcGluZyBpcyBzdXBlcnBhZ2UgYWxpZ25lZCwgbWFrZSBpdCAq Lwo+IC0gICAgICAgICAgICBwdGUgPSBtZm5fdG9fcDJtX2VudHJ5KF9tZm4oKm1hZGRyID4+IFBB R0VfU0hJRlQpLCBtYXR0ciwgdCwgYSk7Cj4gKyAgICAgICAgICAgIHB0ZSA9IG1mbl90b19wMm1f ZW50cnkoX21mbigqbWFkZHIgPj4gUEFHRV9TSElGVCksIHQsIGEpOwo+ICAgICAgICAgICAgICBp ZiAoIGxldmVsIDwgMyApCj4gICAgICAgICAgICAgICAgICBwdGUucDJtLnRhYmxlID0gMDsgLyog U3VwZXJwYWdlIGVudHJ5ICovCj4gIAo+IEBAIC05MTUsNyArOTE1LDYgQEAgc3RhdGljIGludCBh cHBseV9wMm1fY2hhbmdlcyhzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgICAgICAgICAgICAgICAg ICBnZm5fdCBzZ2ZuLAo+ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5yLAo+ ICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBzbWZuLAo+IC0gICAgICAgICAgICAgICAgICAg ICBpbnQgbWF0dHIsCj4gICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hc2ssCj4gICAg ICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCwKPiAgICAgICAgICAgICAgICAgICAgICAg cDJtX2FjY2Vzc190IGEpCj4gQEAgLTEwNTQsNyArMTA1Myw3IEBAIHN0YXRpYyBpbnQgYXBwbHlf cDJtX2NoYW5nZXMoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxldmVsLCBmbHVzaF9wdCwgb3AsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGFydF9ncGFkZHIsIGVuZF9ncGFkZHIsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmYWRkciwgJm1hZGRyLCAmZmx1c2gsCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYXR0ciwgdCwgYSk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0LCBhKTsKPiAgICAgICAgICAgICAgaWYgKCByZXQgPCAwICkgeyByYyA9 IHJldCA7IGdvdG8gb3V0OyB9Cj4gICAgICAgICAgICAgIGNvdW50ICs9IHJldDsKPiAgCj4gQEAg LTExNjMsNyArMTE2Miw3IEBAIG91dDoKPiAgICAgICAgICAgKiBtYXBwaW5nLgo+ICAgICAgICAg ICAqLwo+ICAgICAgICAgIGFwcGx5X3AybV9jaGFuZ2VzKGQsIFJFTU9WRSwgc2dmbiwgZ2ZuIC0g Z2ZuX3goc2dmbiksIHNtZm4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0dHIsIDAs IHAybV9pbnZhbGlkLCBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vzcyk7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgMCwgcDJtX2ludmFsaWQsIGQtPmFyY2gucDJtLmRlZmF1bHRfYWNjZXNz KTsKPiAgICAgIH0KPiAgCj4gICAgICByZXR1cm4gcmM7Cj4gQEAgLTExNzMsMTAgKzExNzIsMTAg QEAgc3RhdGljIGlubGluZSBpbnQgcDJtX2luc2VydF9tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQs Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5fdCBzdGFydF9nZm4s Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5y LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHRyLCBwMm1fdHlwZV90 IHQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90IHQp Cj4gIHsKPiAgICAgIHJldHVybiBhcHBseV9wMm1fY2hhbmdlcyhkLCBJTlNFUlQsIHN0YXJ0X2dm biwgbnIsIG1mbiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXR0ciwgMCwgdCwg ZC0+YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3MpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDAsIHQsIGQtPmFyY2gucDJtLmRlZmF1bHRfYWNjZXNzKTsKPiAgfQo+ICAKPiAgc3RhdGlj IGlubGluZSBpbnQgcDJtX3JlbW92ZV9tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQsCj4gQEAgLTEx ODYsOCArMTE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHAybV9yZW1vdmVfbWFwcGluZyhzdHJ1 Y3QgZG9tYWluICpkLAo+ICB7Cj4gICAgICByZXR1cm4gYXBwbHlfcDJtX2NoYW5nZXMoZCwgUkVN T1ZFLCBzdGFydF9nZm4sIG5yLCBtZm4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogYXJndW1lbnRzIGJlbG93IG5vdCB1c2VkIHdoZW4gcmVtb3ZpbmcgbWFwcGluZyAqLwo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BVFRSX01FTSwgMCwgcDJtX2ludmFsaWQsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3Mp Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHAybV9pbnZhbGlkLCBkLT5hcmNo LnAybS5kZWZhdWx0X2FjY2Vzcyk7Cj4gIH0KPiAgCj4gIGludCBtYXBfcmVnaW9uc19yd19jYWNo ZShzdHJ1Y3QgZG9tYWluICpkLAo+IEBAIC0xMTk1LDggKzExOTMsNyBAQCBpbnQgbWFwX3JlZ2lv bnNfcndfY2FjaGUoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbnIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4p Cj4gIHsKPiAtICAgIHJldHVybiBwMm1faW5zZXJ0X21hcHBpbmcoZCwgZ2ZuLCBuciwgbWZuLAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVRUUl9NRU0sIHAybV9tbWlvX2RpcmVj dF9jKTsKPiArICAgIHJldHVybiBwMm1faW5zZXJ0X21hcHBpbmcoZCwgZ2ZuLCBuciwgbWZuLCBw Mm1fbW1pb19kaXJlY3RfYyk7Cj4gIH0KPiAgCj4gIGludCB1bm1hcF9yZWdpb25zX3J3X2NhY2hl KHN0cnVjdCBkb21haW4gKmQsCj4gQEAgLTEyMTIsOCArMTIwOSw3IEBAIGludCBtYXBfbW1pb19y ZWdpb25zKHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgbnIsCj4gICAgICAgICAgICAgICAgICAgICAgIG1mbl90IG1mbikKPiAgewo+IC0gICAg cmV0dXJuIHAybV9pbnNlcnRfbWFwcGluZyhkLCBzdGFydF9nZm4sIG5yLCBtZm4sCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1BVFRSX0RFViwgcDJtX21taW9fZGlyZWN0X25jKTsK PiArICAgIHJldHVybiBwMm1faW5zZXJ0X21hcHBpbmcoZCwgc3RhcnRfZ2ZuLCBuciwgbWZuLCBw Mm1fbW1pb19kaXJlY3RfbmMpOwo+ICB9Cj4gIAo+ICBpbnQgdW5tYXBfbW1pb19yZWdpb25zKHN0 cnVjdCBkb21haW4gKmQsCj4gQEAgLTEyNTEsOCArMTI0Nyw3IEBAIGludCBndWVzdF9waHlzbWFw X2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBwYWdlX29yZGVyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcDJtX3R5cGVfdCB0KQo+ICB7Cj4gLSAgICByZXR1cm4gcDJtX2luc2VydF9tYXBwaW5nKGQs IGdmbiwgKDEgPDwgcGFnZV9vcmRlciksIG1mbiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTUFUVFJfTUVNLCB0KTsKPiArICAgIHJldHVybiBwMm1faW5zZXJ0X21hcHBpbmcoZCwg Z2ZuLCAoMSA8PCBwYWdlX29yZGVyKSwgbWZuLCB0KTsKPiAgfQo+ICAKPiAgdm9pZCBndWVzdF9w aHlzbWFwX3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsCj4gQEAgLTE0MTIsNyArMTQwNyw3 IEBAIGludCByZWxpbnF1aXNoX3AybV9tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICBu ciA9IGdmbl94KHAybS0+bWF4X21hcHBlZF9nZm4pIC0gZ2ZuX3gocDJtLT5sb3dlc3RfbWFwcGVk X2dmbik7Cj4gIAo+ICAgICAgcmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIFJFTElOUVVJU0gs IHAybS0+bG93ZXN0X21hcHBlZF9nZm4sIG5yLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElOVkFMSURfTUZOLCBNQVRUUl9NRU0sIDAsIHAybV9pbnZhbGlkLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElOVkFMSURfTUZOLCAwLCBwMm1faW52YWxpZCwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vzcyk7Cj4gIH0K PiAgCj4gQEAgLTE0MjUsOCArMTQyMCw3IEBAIGludCBwMm1fY2FjaGVfZmx1c2goc3RydWN0IGRv bWFpbiAqZCwgZ2ZuX3Qgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnIpCj4gICAgICBlbmQgPSBnZm5f bWluKGVuZCwgcDJtLT5tYXhfbWFwcGVkX2dmbik7Cj4gIAo+ICAgICAgcmV0dXJuIGFwcGx5X3Ay bV9jaGFuZ2VzKGQsIENBQ0hFRkxVU0gsIHN0YXJ0LCBuciwgSU5WQUxJRF9NRk4sCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfTUVNLCAwLCBwMm1faW52YWxpZCwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vzcyk7Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcDJtX2ludmFsaWQsIGQtPmFyY2gucDJt LmRlZmF1bHRfYWNjZXNzKTsKPiAgfQo+ICAKPiAgbWZuX3QgZ2ZuX3RvX21mbihzdHJ1Y3QgZG9t YWluICpkLCBnZm5fdCBnZm4pCj4gQEAgLTE4MjcsOCArMTgyMSw3IEBAIGxvbmcgcDJtX3NldF9t ZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgdWludDMyX3QgbnIsCj4gICAg ICB9Cj4gIAo+ICAgICAgcmMgPSBhcHBseV9wMm1fY2hhbmdlcyhkLCBNRU1BQ0NFU1MsIGdmbl9h ZGQoZ2ZuLCBzdGFydCksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChuciAtIHN0YXJ0 KSwgSU5WQUxJRF9NRk4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BVFRSX01FTSwg bWFzaywgMCwgYSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChuciAtIHN0YXJ0KSwg SU5WQUxJRF9NRk4sIG1hc2ssIDAsIGEpOwo+ICAgICAgaWYgKCByYyA8IDAgKQo+ICAgICAgICAg IHJldHVybiByYzsKPiAgICAgIGVsc2UgaWYgKCByYyA+IDAgKQo+IC0tIAo+IDEuOS4xCj4gCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK