From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [RFC PATCH v2 07/26] ARM: GICv3 ITS: introduce host LPI array Date: Thu, 5 Jan 2017 10:56:41 -0800 (PST) Message-ID: References: <20161222182446.18791-1-andre.przywara@arm.com> <20161222182446.18791-8-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 1cPDDW-0003xf-5N for xen-devel@lists.xenproject.org; Thu, 05 Jan 2017 18:56:50 +0000 In-Reply-To: <20161222182446.18791-8-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 , Vijay Kilari List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAyMiBEZWMgMjAxNiwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cjc+IFRoZSBudW1iZXIg b2YgTFBJcyBvbiBhIGhvc3QgY2FuIGJlIHBvdGVudGlhbGx5IGh1Z2UgKG1pbGxpb25zKSwKPiBh bHRob3VnaCBpbiBwcmFjdGlzZSB3aWxsIGJlIG1vc3RseSByZWFzb25hYmxlLiBTbyBwcmVtYXR1 cmVseSBhbGxvY2F0aW5nCj4gYW4gYXJyYXkgb2Ygc3RydWN0IGlycV9kZXNjJ3MgZm9yIGVhY2gg TFBJIGlzIG5vdCBhbiBvcHRpb24uCj4gSG93ZXZlciBYZW4gaXRzZWxmIGRvZXMgbm90IGNhcmUg YWJvdXQgTFBJcywgYXMgZXZlcnkgTFBJIHdpbGwgYmUgaW5qZWN0ZWQKPiBpbnRvIGEgZ3Vlc3Qg KERvbTAgZm9yIG5vdykuCj4gQ3JlYXRlIGEgZGVuc2UgZGF0YSBzdHJ1Y3R1cmUgKDggQnl0ZXMp IGZvciBlYWNoIExQSSB3aGljaCBob2xkcyBqdXN0Cj4gZW5vdWdoIGluZm9ybWF0aW9uIHRvIGRl dGVybWluZSB0aGUgdmlydHVhbCBJUlEgbnVtYmVyIGFuZCB0aGUgVkNQVSBpbnRvCj4gd2hpY2gg dGhlIExQSSBuZWVkcyB0byBiZSBpbmplY3RlZC4KPiBBbHNvIHRvIG5vdCBhcnRpZmljaWFsbHkg bGltaXQgdGhlIG51bWJlciBvZiBMUElzLCB3ZSBjcmVhdGUgYSAyLWxldmVsCj4gdGFibGUgZm9y IGhvbGRpbmcgdGhvc2Ugc3RydWN0dXJlcy4KPiBUaGlzIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rp b25zIHRvIGluaXRpYWxpemUgdGhlc2UgdGFibGVzIGFuZCB0bwo+IGNyZWF0ZSwgbG9va3VwIGFu ZCBkZXN0cm95IGVudHJpZXMgZm9yIGEgZ2l2ZW4gTFBJLgo+IFdlIGFsbG9jYXRlIGFuZCBhY2Nl c3MgTFBJIGluZm9ybWF0aW9uIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgcmVxdWlyZQo+IGEgbG9j ay4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJt LmNvbT4KPiAtLS0KPiAgeGVuL2FyY2gvYXJtL2dpYy1pdHMuYyAgICAgICAgfCAyMzMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIHhlbi9pbmNsdWRlL2FzbS1h cm0vZ2ljLWl0cy5oIHwgICAxICsKPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMzMgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLWl0cy5j IGIveGVuL2FyY2gvYXJtL2dpYy1pdHMuYwo+IGluZGV4IGUxNTdjNmIuLmU3ZGRkOTAgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy1pdHMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMt aXRzLmMKPiBAQCAtMTgsMjEgKzE4LDM2IEBACj4gIAo+ICAjaW5jbHVkZSA8eGVuL2NvbmZpZy5o Pgo+ICAjaW5jbHVkZSA8eGVuL2xpYi5oPgo+ICsjaW5jbHVkZSA8eGVuL3NjaGVkLmg+Cj4gICNp bmNsdWRlIDx4ZW4vZXJyLmg+Cj4gICNpbmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4KPiAgI2lu Y2x1ZGUgPHhlbi9saWJmZHQvbGliZmR0Lmg+Cj4gICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KPiAg I2luY2x1ZGUgPHhlbi9zaXplcy5oPgo+ICAjaW5jbHVkZSA8YXNtL3AybS5oPgo+ICsjaW5jbHVk ZSA8YXNtL2RvbWFpbi5oPgo+ICAjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gICNpbmNsdWRlIDxhc20v Z2ljLmg+Cj4gICNpbmNsdWRlIDxhc20vZ2ljX3YzX2RlZnMuaD4KPiAgI2luY2x1ZGUgPGFzbS9n aWMtaXRzLmg+Cj4gIAo+ICsvKiBMUElzIG9uIHRoZSBob3N0IGFsd2F5cyBnbyB0byBhIGd1ZXN0 LCBzbyBubyBzdHJ1Y3QgaXJxX2Rlc2MgZm9yIHRoZW0uICovCj4gK3VuaW9uIGhvc3RfbHBpIHsK PiArICAgIHVpbnQ2NF90IGRhdGE7Cj4gKyAgICBzdHJ1Y3Qgewo+ICsgICAgICAgIHVpbnQ2NF90 IHZpcnRfbHBpOjMyOwo+ICsgICAgICAgIHVpbnQ2NF90IGRvbV9pZDoxNjsKPiArICAgICAgICB1 aW50NjRfdCB2Y3B1X2lkOjE2Owo+ICsgICAgfTsKPiArfTsKCkp1c3QgZ28gd2l0aCBhIHJlZ3Vs YXIgc3RydWN0CgogICAgc3RydWN0IGhvc3RfbHBpIHsKICAgICAgICB1aW50MzJfdCB2aXJ0X2xw aTsKICAgICAgICB1aW50MTZfdCBkb21faWQ7CiAgICAgICAgdWludDE2X3QgdmNwdV9pZDsKICAg IH07CgpUaGUgYWFyY2g2NCBDIEFCSSBndWFyYW50ZWVzIHRoZSBhbGlnbm1lbnRzIG9mIHRoZSBm aWVsZHMuCgoKPiAgLyogR2xvYmFsIHN0YXRlICovCj4gIHN0YXRpYyBzdHJ1Y3Qgewo+ICAgICAg dWludDhfdCAqbHBpX3Byb3BlcnR5Owo+ICsgICAgdW5pb24gaG9zdF9scGkgKipob3N0X2xwaXM7 Cj4gICAgICB1bnNpZ25lZCBpbnQgaG9zdF9scGlfYml0czsKPiArICAgIC8qIFByb3RlY3RzIGFs bG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiBob3N0IExQSXMsIGJ1dCBub3QgdGhlIGFjY2Vz cyAqLwo+ICsgICAgc3BpbmxvY2tfdCBob3N0X2xwaXNfbG9jazsKPiAgfSBscGlfZGF0YTsKPiAg Cj4gIC8qIFBoeXNpY2FsIHJlZGlzdHJpYnV0b3IgYWRkcmVzcyAqLwo+IEBAIC00Myw2ICs1OCwx OSBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUodWludDY0X3QsIHJkaXN0X2lkKTsKPiAgc3RhdGlj IERFRklORV9QRVJfQ1BVKHZvaWQgKiwgcGVuZGluZ190YWJsZSk7Cj4gIAo+ICAjZGVmaW5lIE1B WF9QSFlTX0xQSVMgICAoQklUX1VMTChscGlfZGF0YS5ob3N0X2xwaV9iaXRzKSAtIDgxOTIpCj4g KyNkZWZpbmUgSE9TVF9MUElTX1BFUl9QQUdFICAgICAgKFBBR0VfU0laRSAvIHNpemVvZih1bmlv biBob3N0X2xwaSkpCj4gKwo+ICtzdGF0aWMgdW5pb24gaG9zdF9scGkgKmdpY19nZXRfaG9zdF9s cGkodWludDMyX3QgcGxwaSkKPiArewo+ICsgICAgaWYgKCBwbHBpIDwgODE5MiB8fCBwbHBpID49 IE1BWF9QSFlTX0xQSVMgKyA4MTkyICkKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4gKyAg ICBwbHBpIC09IDgxOTI7Cj4gKyAgICBpZiAoICFscGlfZGF0YS5ob3N0X2xwaXNbcGxwaSAvIEhP U1RfTFBJU19QRVJfUEFHRV0gKQo+ICsgICAgICAgIHJldHVybiBOVUxMOwo+ICsKPiArICAgIHJl dHVybiAmbHBpX2RhdGEuaG9zdF9scGlzW3BscGkgLyBIT1NUX0xQSVNfUEVSX1BBR0VdW3BscGkg JSBIT1NUX0xQSVNfUEVSX1BBR0VdOwo+ICt9Cj4gIAo+ICAjZGVmaW5lIElUU19DTURfUVVFVUVf U1ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNaXzY0Swo+ICAKPiBAQCAtOTYsNiAr MTI0LDIwIEBAIHN0YXRpYyBpbnQgaXRzX3NlbmRfY21kX3N5bmMoc3RydWN0IGhvc3RfaXRzICpp dHMsIGludCBjcHUpCj4gICAgICByZXR1cm4gaXRzX3NlbmRfY29tbWFuZChpdHMsIGNtZCk7Cj4g IH0KPiAgCj4gK3N0YXRpYyBpbnQgaXRzX3NlbmRfY21kX21hcHRpKHN0cnVjdCBob3N0X2l0cyAq aXRzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXZpY2VpZCwg dWludDMyX3QgZXZlbnRpZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgcGludGlkLCB1aW50MTZfdCBpY2lkKQo+ICt7Cj4gKyAgICB1aW50NjRfdCBjbWRbNF07Cj4g Kwo+ICsgICAgY21kWzBdID0gR0lUU19DTURfTUFQVEkgfCAoKHVpbnQ2NF90KWRldmljZWlkIDw8 IDMyKTsKPiArICAgIGNtZFsxXSA9IGV2ZW50aWQgfCAoKHVpbnQ2NF90KXBpbnRpZCA8PCAzMik7 Cj4gKyAgICBjbWRbMl0gPSBpY2lkOwo+ICsgICAgY21kWzNdID0gMHgwMDsKPiArCj4gKyAgICBy ZXR1cm4gaXRzX3NlbmRfY29tbWFuZChpdHMsIGNtZCk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQg aXRzX3NlbmRfY21kX21hcGMoc3RydWN0IGhvc3RfaXRzICppdHMsIGludCBjb2xsZWN0aW9uX2lk LCBpbnQgY3B1KQo+ICB7Cj4gICAgICB1aW50NjRfdCBjbWRbNF07Cj4gQEAgLTEyNCw2ICsxNjYs MTkgQEAgc3RhdGljIGludCBpdHNfc2VuZF9jbWRfbWFwZChzdHJ1Y3QgaG9zdF9pdHMgKml0cywg dWludDMyX3QgZGV2aWNlaWQsCj4gICAgICByZXR1cm4gaXRzX3NlbmRfY29tbWFuZChpdHMsIGNt ZCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgaXRzX3NlbmRfY21kX2ludihzdHJ1Y3QgaG9zdF9p dHMgKml0cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRldmljZWlk LCB1aW50MzJfdCBldmVudGlkKQo+ICt7Cj4gKyAgICB1aW50NjRfdCBjbWRbNF07Cj4gKwo+ICsg ICAgY21kWzBdID0gR0lUU19DTURfSU5WIHwgKCh1aW50NjRfdClkZXZpY2VpZCA8PCAzMik7Cj4g KyAgICBjbWRbMV0gPSBldmVudGlkOwo+ICsgICAgY21kWzJdID0gMHgwMDsKPiArICAgIGNtZFsz XSA9IDB4MDA7Cj4gKwo+ICsgICAgcmV0dXJuIGl0c19zZW5kX2NvbW1hbmQoaXRzLCBjbWQpOwo+ ICt9Cj4gKwo+ICAvKiBTZXQgdXAgdGhlICgxOjEpIGNvbGxlY3Rpb24gbWFwcGluZyBmb3IgdGhl IGdpdmVuIGhvc3QgQ1BVLiAqLwo+ICB2b2lkIGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKGlu dCBjcHUpCj4gIHsKPiBAQCAtMzY2LDIxICs0MjEsMTgxIEBAIHVpbnQ2NF90IGdpY3YzX2xwaV9n ZXRfcHJvcHRhYmxlKCkKPiAgc3RhdGljIHVuc2lnbmVkIGludCBtYXhfbHBpX2JpdHMgPSBDT05G SUdfTUFYX0hPU1RfTFBJX0JJVFM7Cj4gIGludGVnZXJfcGFyYW0oIm1heF9scGlfYml0cyIsIG1h eF9scGlfYml0cyk7Cj4gIAo+ICsvKiBBbGxvY2F0ZSB0aGUgMm5kIGxldmVsIGFycmF5IGZvciBo b3N0IExQSXMuIFRoaXMgb25lIGhvbGRzIHBvaW50ZXJzCj4gKyAqIHRvIHRoZSBwYWdlIHdpdGgg dGhlIGFjdHVhbCAidW5pb24gaG9zdF9scGkiIGVudHJpZXMuIE91ciBMUEkgbGltaXQKPiArICog YXZvaWRzIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UuCj4gKyAqLwo+ICBpbnQgZ2ljdjNfbHBpX2lu aXRfaG9zdF9scGlzKHVuc2lnbmVkIGludCBod19scGlfYml0cykKPiAgewo+ICsgICAgaW50IG5y X2xwaV9wdHJzOwo+ICsKPiAgICAgIGxwaV9kYXRhLmhvc3RfbHBpX2JpdHMgPSBtaW4oaHdfbHBp X2JpdHMsIG1heF9scGlfYml0cyk7Cj4gIAo+ICsgICAgc3Bpbl9sb2NrX2luaXQoJmxwaV9kYXRh Lmhvc3RfbHBpc19sb2NrKTsKPiArCj4gKyAgICBucl9scGlfcHRycyA9IE1BWF9QSFlTX0xQSVMg LyAoUEFHRV9TSVpFIC8gc2l6ZW9mKHVuaW9uIGhvc3RfbHBpKSk7Cj4gKyAgICBscGlfZGF0YS5o b3N0X2xwaXMgPSB4emFsbG9jX2FycmF5KHVuaW9uIGhvc3RfbHBpICosIG5yX2xwaV9wdHJzKTsK PiArICAgIGlmICggIWxwaV9kYXRhLmhvc3RfbHBpcyApCj4gKyAgICAgICAgcmV0dXJuIC1FTk9N RU07Cj4gKwo+ICAgICAgcHJpbnRrKCJHSUN2MzogdXNpbmcgYXQgbW9zdCAlbGxkIExQSXMgb24g dGhlIGhvc3QuXG4iLCBNQVhfUEhZU19MUElTKTsKPiAgCj4gICAgICByZXR1cm4gMDsKPiAgfQo+ ICAKPiArI2RlZmluZSBJTlZBTElEX0RPTUlEICgodWludDE2X3QpfjApCj4gKyNkZWZpbmUgTFBJ X0JMT0NLICAgICAgIDMyCgpXaHkgMzI/IFdoYXQgaXMgdGhlIHJlYXNvbiBiZWhpbmQgaXQ/IEl0 IHNob3VsZCBiZSBleHBsYWluZWQgaW4gdGhlCmNvbW1pdCBtZXNzYWdlIGFuZCBpbiB0aGUgY29k ZS4KClBsZWFzZSBhZGQgc29tZSBudW1iZXJzIG9mIG1lbW9yeSBjb25zdW1wdGlvbiBhbmQgYXZl cmFnZSBudW1iZXIgb2YKaXRlcmF0aW9ucyByZXF1aXJlZCB0byBzZXR1cCBscGlzIG9uIGFuIGV4 YW1wbGUgc2VydmVyIHN5c3RlbS4gSXQgaXMKaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaWYgdGhl IGN1cnJlbnQgYWxnb3JpdGhtIGFuZCBkYXRhIHN0cnVjdHMgYXJlCnN1ZmZpY2llbnQgZm9yIG91 ciBuZWVkcy4KCldpdGggdGhlIG5ldyBob3N0X2xwaXMgZGF0YSBzdHJ1Y3QgYmVsb3csIHRoZSBt ZW1vcnkgY29uc3VtcHRpb24gaXMKCiAgICBST1VORFVQKG5yX3BscGlzICogOCwgNDA5NikgKwog ICAgKFJPVU5EVVAobnJfcGxwaXMgKiA4LCA0MDk2KSAvIDQwOTYpICogOCArCiAgICAobnJfZXZl bnRzIC8gMzIpICogNAoKV2hpY2gsIGFzc3VtaW5nIG5yX2V2ZW50cyA9IG5yX3BscGlzID0gMTAy NCwgbWVhbnMgODE5MiArIDE2ICsgMTI4LCByaWdodD8KCgo+ICsvKiBNdXN0IGJlIGNhbGxlZCB3 aXRoIGhvc3RfbHBpc19sb2NrIGhlbGQuICovCj4gK3N0YXRpYyBpbnQgZmluZF91bnVzZWRfaG9z dF9scGkoaW50IHN0YXJ0LCB1aW50MzJfdCAqaW5kZXgpCj4gK3sKPiArICAgIGludCBjaHVuazsK PiArICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7Cj4gKwo+ICsgICAgZm9yICggY2h1bmsgPSBzdGFy dDsgY2h1bmsgPCBNQVhfUEhZU19MUElTIC8gSE9TVF9MUElTX1BFUl9QQUdFOyBjaHVuaysrICkK PiArICAgIHsKPiArICAgICAgICAvKiBJZiB3ZSBoaXQgYW4gdW5hbGxvY2F0ZWQgY2h1bmssIHVz ZSBlbnRyeSAwIGluIHRoYXQgb25lLiAqLwo+ICsgICAgICAgIGlmICggIWxwaV9kYXRhLmhvc3Rf bHBpc1tjaHVua10gKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgKmluZGV4ID0gMDsKPiAr ICAgICAgICAgICAgcmV0dXJuIGNodW5rOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgLyog RmluZCBhbiB1bmFsbG9jYXRlZCBlbnRyeSBpbiB0aGlzIGNodW5rLiAqLwo+ICsgICAgICAgIGZv ciAoIDsgaSA8IEhPU1RfTFBJU19QRVJfUEFHRTsgaSArPSBMUElfQkxPQ0sgKQo+ICsgICAgICAg IHsKPiArICAgICAgICAgICAgaWYgKCBscGlfZGF0YS5ob3N0X2xwaXNbY2h1bmtdW2ldLmRvbV9p ZCA9PSBJTlZBTElEX0RPTUlEICkKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAg KmluZGV4ID0gaTsKPiArICAgICAgICAgICAgICAgIHJldHVybiBjaHVuazsKPiArICAgICAgICAg ICAgfQoKVGhpcyBhc3N1bWVzIHRoYXQgcGxwaXMgYXJlIGFsd2F5cyBhbGxvY2F0ZWQgMzIgYXQg YSB0aW1lLCBieSBub3QKY2hlY2tpbmcgd2l0aGluIGEgYmxvY2suCgoKPiArICAgICAgICB9Cj4g KyAgICAgICAgaSA9IDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ ICsvKgo+ICsgKiBBbGxvY2F0ZSBhIGJsb2NrIG9mIDMyIExQSXMgb24gdGhlIGdpdmVuIGhvc3Qg SVRTIGZvciBkZXZpY2UgImRldmlkIiwKPiArICogc3RhcnRpbmcgd2l0aCAiZXZlbnRpZCIuIFB1 dCB0aGVtIGludG8gdGhlIHJlc3BlY3RpdmUgSVRUIGJ5IGlzc3VpbmcgYQo+ICsgKiBNQVBUSSBj b21tYW5kIGZvciBlYWNoIG9mIHRoZW0uCj4gKyAqLwo+ICtzdGF0aWMgaW50IGdpY3YzX2FsbG9j YXRlX2hvc3RfbHBpX2Jsb2NrKHN0cnVjdCBob3N0X2l0cyAqaXRzLCBzdHJ1Y3QgZG9tYWluICpk LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGhv c3RfZGV2aWQsIHVpbnQzMl90IGV2ZW50aWQpCj4gK3sKPiArICAgIHN0YXRpYyB1aW50MzJfdCBu ZXh0X2xwaSA9IDA7Cj4gKyAgICB1aW50MzJfdCBscGksIGxwaV9pZHggPSBuZXh0X2xwaSAlIEhP U1RfTFBJU19QRVJfUEFHRTsKPiArICAgIGludCBjaHVuazsKPiArICAgIGludCBpOwo+ICsKPiAr ICAgIHNwaW5fbG9jaygmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOwo+ICsgICAgY2h1bmsgPSBm aW5kX3VudXNlZF9ob3N0X2xwaShuZXh0X2xwaSAvIEhPU1RfTFBJU19QRVJfUEFHRSwgJmxwaV9p ZHgpOwo+ICsKPiArICAgIGlmICggY2h1bmsgPT0gLSAxICkgICAgICAgICAgLyogcmVzY2FuIGZv ciBhIGhvbGUgZnJvbSB0aGUgYmVnaW5uaW5nICovCj4gKyAgICB7Cj4gKyAgICAgICAgbHBpX2lk eCA9IDA7Cj4gKyAgICAgICAgY2h1bmsgPSBmaW5kX3VudXNlZF9ob3N0X2xwaSgwLCAmbHBpX2lk eCk7Cj4gKyAgICAgICAgaWYgKCBjaHVuayA9PSAtMSApCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICBzcGluX3VubG9jaygmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOwo+ICsgICAgICAgICAg ICByZXR1cm4gLUVOT1NQQzsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogSWYg d2UgaGl0IGFuIHVuYWxsb2NhdGVkIGNodW5rLCB3ZSBpbml0aWFsaXplIGl0IGFuZCB1c2UgZW50 cnkgMC4gKi8KPiArICAgIGlmICggIWxwaV9kYXRhLmhvc3RfbHBpc1tjaHVua10gKQo+ICsgICAg ewo+ICsgICAgICAgIHVuaW9uIGhvc3RfbHBpICpuZXdfY2h1bms7Cj4gKwo+ICsgICAgICAgIG5l d19jaHVuayA9IGFsbG9jX3hlbmhlYXBfcGFnZXMoMCwgMCk7Cj4gKyAgICAgICAgaWYgKCAhbmV3 X2NodW5rICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZscGlfZGF0 YS5ob3N0X2xwaXNfbG9jayk7Cj4gKyAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAg ICAgIH0KPiArCj4gKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBIT1NUX0xQSVNfUEVSX1BBR0U7 IGkgKz0gTFBJX0JMT0NLICkKPiArICAgICAgICAgICAgbmV3X2NodW5rW2ldLmRvbV9pZCA9IElO VkFMSURfRE9NSUQ7CgpEb24ndCB3ZSBuZWVkIHRvIHByb3Blcmx5IGluaXRpYWxpemUgZWFjaCBl bnRyeSBpbiB0aGUgYmxvY2s/IEkgd291bGQKdXNlIG1lbXNldCBmb3IgaW5pdGlhbGl6YXRpb24u CgoKPiArICAgICAgICBscGlfZGF0YS5ob3N0X2xwaXNbY2h1bmtdID0gbmV3X2NodW5rOwo+ICsg ICAgICAgIGxwaV9pZHggPSAwOwo+ICsgICAgfQo+ICsKPiArICAgIGxwaSA9IGNodW5rICogSE9T VF9MUElTX1BFUl9QQUdFICsgbHBpX2lkeDsKPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IExQ SV9CTE9DSzsgaSsrICkKPiArICAgIHsKPiArICAgICAgICB1bmlvbiBob3N0X2xwaSBobHBpOwo+ ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIE1hcmsgdGhpcyBob3N0IExQSSBhcyBiZWxv bmdpbmcgdG8gdGhlIGRvbWFpbiwgYnV0IGRvbid0IGFzc2lnbgo+ICsgICAgICAgICAqIGFueSB2 aXJ0dWFsIExQSSBvciBhIFZDUFUgeWV0Lgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIGhscGku dmlydF9scGkgPSAwOwoKICNkZWZpbmUgMCB0byBpbnZhbGlkIHZscGkKCgo+ICsgICAgICAgIGhs cGkuZG9tX2lkID0gZC0+ZG9tYWluX2lkOwo+ICsgICAgICAgIGhscGkudmNwdV9pZCA9IH4wOwoK ICNkZWZpbmUgfjAgdG8gaW52YWxpZCB2Y3B1CgoKPiArICAgICAgICBscGlfZGF0YS5ob3N0X2xw aXNbY2h1bmtdW2xwaV9pZHggKyBpXS5kYXRhID0gaGxwaS5kYXRhOwo+ICsKPiArICAgICAgICAv Kgo+ICsgICAgICAgICAqIEVuYWJsZSB0aGlzIGhvc3QgTFBJLCBzbyB3ZSBkb24ndCBoYXZlIHRv IGRvIHRoaXMgZHVyaW5nIHRoZQo+ICsgICAgICAgICAqIGd1ZXN0J3MgcnVudGltZS4KPiArICAg ICAgICAgKi8KPiArICAgICAgICBscGlfZGF0YS5scGlfcHJvcGVydHlbbHBpICsgaV0gfD0gTFBJ X1BST1BfRU5BQkxFRDsKPiArICAgIH0KPiArCj4gKyAgICAvKiBXZSBoYXZlIGFsbG9jYXRlZCBh bmQgaW5pdGlhbGl6ZWQgdGhlIGhvc3QgTFBJIGVudHJpZXMsIHNvIGl0J3Mgc2FmZQo+ICsgICAg ICogdG8gZHJvcCB0aGUgbG9jayBub3cuIEFjY2VzcyB0byB0aGUgc3RydWN0dXJlcyBjYW4gYmUg ZG9uZSBjb25jdXJyZW50bHkKPiArICAgICAqIGFzIGl0IGludm9sdmVzIG9ubHkgYW4gYXRvbWlj IHVpbnQ2NF90IGFjY2Vzcy4KPiArICAgICAqLwo+ICsgICAgc3Bpbl91bmxvY2soJmxwaV9kYXRh Lmhvc3RfbHBpc19sb2NrKTsKPiArCj4gKyAgICBfX2ZsdXNoX2RjYWNoZV9hcmVhKCZscGlfZGF0 YS5scGlfcHJvcGVydHlbbHBpXSwgTFBJX0JMT0NLKTsKPiArCj4gKyAgICAvKiBUZWxsIHRoZSBy ZWRpc3RyaWJ1dG9yIGFib3V0IHRoZSBjaGFuZ2VkIGVuYWJsZWQgYml0cyBhbmQgbWFwIHRoZSBM UElzICovCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IExQSV9CTE9DSzsgaSsrICkKPiArICAgIHsK PiArICAgICAgICBpdHNfc2VuZF9jbWRfbWFwdGkoaXRzLCBob3N0X2RldmlkLCBldmVudGlkICsg aSwgbHBpICsgaSArIDgxOTIsIDApOwo+ICsgICAgICAgIGl0c19zZW5kX2NtZF9pbnYoaXRzLCBo b3N0X2RldmlkLCBldmVudGlkICsgaSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaXRzX3NlbmRfY21k X3N5bmMoaXRzLCAwKTsKPiArCj4gKyAgICBuZXh0X2xwaSA9IGxwaSArIExQSV9CTE9DSzsKPiAr ICAgIHJldHVybiBscGkgKyA4MTkyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGdpY3YzX2ZyZWVf aG9zdF9scGlfYmxvY2soc3RydWN0IGhvc3RfaXRzICppdHMsIHVpbnQzMl90IGxwaSkKPiArewo+ ICsgICAgdW5pb24gaG9zdF9scGkgKmhscGksIGVtcHR5X2xwaSA9IHsgLmRvbV9pZCA9IElOVkFM SURfRE9NSUQgfTsKPiArICAgIGludCBpOwo+ICsKPiArICAgIGhscGkgPSBnaWNfZ2V0X2hvc3Rf bHBpKGxwaSk7Cj4gKyAgICBpZiAoICFobHBpICkKPiArICAgICAgICByZXR1cm4gLUVOT0VOVDsK PiArCj4gKyAgICBzcGluX2xvY2soJmxwaV9kYXRhLmhvc3RfbHBpc19sb2NrKTsKPiArCj4gKyAg ICBmb3IgKCBpID0gMDsgaSA8IExQSV9CTE9DSzsgaSsrICkKPiArICAgICAgICBobHBpW2ldLmRh dGEgPSBlbXB0eV9scGkuZGF0YTsKPiArCj4gKyAgICBzcGluX3VubG9jaygmbHBpX2RhdGEuaG9z dF9scGlzX2xvY2spOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9p ZCByZW1vdmVfbWFwcGVkX2d1ZXN0X2RldmljZShzdHJ1Y3QgaXRzX2RldmljZXMgKmRldikKPiAg ewo+ICsgICAgaW50IGk7Cj4gKwo+ICAgICAgaWYgKCBkZXYtPmh3X2l0cyApCj4gICAgICAgICAg aXRzX3NlbmRfY21kX21hcGQoZGV2LT5od19pdHMsIGRldi0+aG9zdF9kZXZpZCwgMCwgMCwgZmFs c2UpOwo+ICAKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgZGV2LT5ldmVudGlkcyAvIDMyOyBpKysg KQo+ICsgICAgICAgIGdpY3YzX2ZyZWVfaG9zdF9scGlfYmxvY2soZGV2LT5od19pdHMsIGRldi0+ aG9zdF9scGlzW2ldKTsKPiArCj4gICAgICB4ZnJlZShkZXYtPml0dF9hZGRyKTsKPiArICAgIHhm cmVlKGRldi0+aG9zdF9scGlzKTsKPiAgICAgIHhmcmVlKGRldik7Cj4gIH0KPiAgCj4gQEAgLTM5 MCw3ICs2MDUsNyBAQCBpbnQgZ2ljdjNfaXRzX21hcF9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwg aW50IGhvc3RfZGV2aWQsIGludCBndWVzdF9kZXZpZCwKPiAgICAgIHZvaWQgKml0dF9hZGRyID0g TlVMTDsKPiAgICAgIHN0cnVjdCBpdHNfZGV2aWNlcyAqZGV2LCAqdGVtcDsKPiAgICAgIHN0cnVj dCBob3N0X2l0cyAqaHdfaXRzOwo+IC0gICAgaW50IHJldDsKPiArICAgIGludCByZXQsIGk7Cj4g IAo+ICAgICAgLyogY2hlY2sgZm9yIGFscmVhZHkgZXhpc3RpbmcgbWFwcGluZ3MgKi8KPiAgICAg IHNwaW5fbG9jaygmZC0+YXJjaC52Z2ljLml0c19kZXZpY2VzX2xvY2spOwo+IEBAIC00MzUsOSAr NjUwLDE4IEBAIGludCBnaWN2M19pdHNfbWFwX2RldmljZShzdHJ1Y3QgZG9tYWluICpkLCBpbnQg aG9zdF9kZXZpZCwgaW50IGd1ZXN0X2RldmlkLAo+ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ ICAgICAgfQo+ICAKPiArICAgIGRldi0+aG9zdF9scGlzID0geHphbGxvY19hcnJheSh1aW50MzJf dCwgQklUKGJpdHMpIC8gMzIpOwo+ICsgICAgaWYgKCAhZGV2LT5ob3N0X2xwaXMgKQo+ICsgICAg ewo+ICsgICAgICAgIHhmcmVlKGRldik7Cj4gKyAgICAgICAgeGZyZWUoaXR0X2FkZHIpOwo+ICsg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAgfQo+ICsKPiAgICAgIHJldCA9IGl0c19zZW5k X2NtZF9tYXBkKGh3X2l0cywgaG9zdF9kZXZpZCwgYml0cyAtIDEsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2aXJ0X3RvX21hZGRyKGl0dF9hZGRyKSwgdHJ1ZSk7Cj4gICAgICBpZiAo cmV0KSB7Cj4gKyAgICAgICAgeGZyZWUoZGV2LT5ob3N0X2xwaXMpOwo+ICAgICAgICAgIHhmcmVl KGl0dF9hZGRyKTsKPiAgICAgICAgICB4ZnJlZShkZXYpOwo+ICAgICAgICAgIHJldHVybiByZXQ7 Cj4gQEAgLTQ1Myw2ICs2NzcsMTMgQEAgaW50IGdpY3YzX2l0c19tYXBfZGV2aWNlKHN0cnVjdCBk b21haW4gKmQsIGludCBob3N0X2RldmlkLCBpbnQgZ3Vlc3RfZGV2aWQsCj4gICAgICBsaXN0X2Fk ZF90YWlsKCZkZXYtPmVudHJ5LCAmZC0+YXJjaC52Z2ljLml0c19kZXZpY2VzKTsKPiAgICAgIHNw aW5fdW5sb2NrKCZkLT5hcmNoLnZnaWMuaXRzX2RldmljZXNfbG9jayk7Cj4gIAo+ICsgICAgLyog TWFwIGFsbCBob3N0IExQSXMgd2l0aGluIHRoaXMgZGV2aWNlIGFscmVhZHkuIFdlIGNhbid0IGFm Zm9yZCB0byBxdWV1ZQo+ICsgICAgICogYW55IGhvc3QgSVRTIGNvbW1hbmRzIGxhdGVyIG9uIGR1 cmluZyB0aGUgZ3Vlc3QncyBydW50aW1lLgo+ICsgICAgICovCj4gKyAgICBmb3IgKCBpID0gMDsg aSA8IEJJVChiaXRzKSAvIDMyOyBpKysgKQo+ICsgICAgICAgIGRldi0+aG9zdF9scGlzW2ldID0g Z2ljdjNfYWxsb2NhdGVfaG9zdF9scGlfYmxvY2soaHdfaXRzLCBkLCBob3N0X2RldmlkLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aSAqIDMyKTsKClNob3VsZG4ndCB3ZSBjaGVjayBmb3IgZXJyb3JzIHJldHVybmVkIGJ5IGdpY3Yz X2FsbG9jYXRlX2hvc3RfbHBpX2Jsb2NrPwpJZiBCSVQoYml0cykgPCAzMiwgaXQgaXMgcG9zc2li bGUgdG8gYWxsb2NhdGUgbW9yZSBwbHBpcyB0aGFuIG5lY2Vzc2FyeS4KSXQgaXMgYWxzbyBwb3Nz aWJsZSB0byBlbmQgdXAgY2FsbGluZyBtYXB0aSB3aXRoIGFuIGluZXhpc3RlbnQgZXZlbnRpZApm b3IgaG9zdF9kZXZpZC4gQ291bGQgdGhhdCBiZSBhIHByb2JsZW0/CgoKPiAgICAgIHJldHVybiAw Owo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaCBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oCj4gaW5kZXggNTI1YTI5ZC4uZDFlYmMxOSAx MDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaAo+ICsrKyBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vZ2ljLWl0cy5oCj4gQEAgLTEwNCw2ICsxMDQsNyBAQCBzdHJ1Y3QgaXRz X2RldmljZXMgewo+ICAgICAgdWludDMyX3QgZ3Vlc3RfZGV2aWQ7Cj4gICAgICB1aW50MzJfdCBo b3N0X2RldmlkOwo+ICAgICAgdWludDMyX3QgZXZlbnRpZHM7Cj4gKyAgICB1aW50MzJfdCAqaG9z dF9scGlzOwo+ICB9Owo+ICAKPiAgZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaG9zdF9pdHNfbGlz dDsKPiAtLSAKPiAyLjkuMAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==