From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v6 07/36] ARM: GICv3 ITS: introduce host LPI array Date: Fri, 7 Apr 2017 10:55:49 -0700 (PDT) Message-ID: References: <20170407173307.9788-1-andre.przywara@arm.com> <20170407173307.9788-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cwY75-0005kZ-A9 for xen-devel@lists.xenproject.org; Fri, 07 Apr 2017 17:55:59 +0000 In-Reply-To: <20170407173307.9788-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 , Shanker Donthineni List-Id: xen-devel@lists.xenproject.org T24gRnJpLCA3IEFwciAyMDE3LCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPiBUaGUgbnVtYmVyIG9m IExQSXMgb24gYSBob3N0IGNhbiBiZSBwb3RlbnRpYWxseSBodWdlIChtaWxsaW9ucyksCj4gYWx0 aG91Z2ggaW4gcHJhY3Rpc2Ugd2lsbCBiZSBtb3N0bHkgcmVhc29uYWJsZS4gU28gcHJlbWF0dXJl bHkgYWxsb2NhdGluZwo+IGFuIGFycmF5IG9mIHN0cnVjdCBpcnFfZGVzYydzIGZvciBlYWNoIExQ SSBpcyBub3QgYW4gb3B0aW9uLgo+IEhvd2V2ZXIgWGVuIGl0c2VsZiBkb2VzIG5vdCBjYXJlIGFi b3V0IExQSXMsIGFzIGV2ZXJ5IExQSSB3aWxsIGJlIGluamVjdGVkCj4gaW50byBhIGd1ZXN0IChE b20wIGZvciBub3cpLgo+IENyZWF0ZSBhIGRlbnNlIGRhdGEgc3RydWN0dXJlICg4IEJ5dGVzKSBm b3IgZWFjaCBMUEkgd2hpY2ggaG9sZHMganVzdAo+IGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZXRl cm1pbmUgdGhlIHZpcnR1YWwgSVJRIG51bWJlciBhbmQgdGhlIFZDUFUgaW50bwo+IHdoaWNoIHRo ZSBMUEkgbmVlZHMgdG8gYmUgaW5qZWN0ZWQuCj4gQWxzbyB0byBub3QgYXJ0aWZpY2lhbGx5IGxp bWl0IHRoZSBudW1iZXIgb2YgTFBJcywgd2UgY3JlYXRlIGEgMi1sZXZlbAo+IHRhYmxlIGZvciBo b2xkaW5nIHRob3NlIHN0cnVjdHVyZXMuCj4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9u cyB0byBpbml0aWFsaXplIHRoZXNlIHRhYmxlcyBhbmQgdG8KPiBjcmVhdGUsIGxvb2t1cCBhbmQg ZGVzdHJveSBlbnRyaWVzIGZvciBhIGdpdmVuIExQSS4KPiBCeSB1c2luZyB0aGUgbmF0dXJhbGx5 IGF0b21pYyBhY2Nlc3MgZ3VhcmFudGVlIHRoZSBuYXRpdmUgdWludDY0X3QgZGF0YQo+IHR5cGUg Z2l2ZXMgdXMsIHdlIGFsbG9jYXRlIGFuZCBhY2Nlc3MgTFBJIGluZm9ybWF0aW9uIGluIGEgd2F5 IHRoYXQgZG9lcwo+IG5vdCByZXF1aXJlIGEgbG9jay4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRy ZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KClJldmlld2VkLWJ5OiBTdGVmYW5v IFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CgoKPiAtLS0KPiAgeGVuL2FyY2gv YXJtL2dpYy12My1scGkuYyAgICAgICAgfCAyMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oIHwgICA2ICsK PiAgeGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaCAgICAgICAgfCAgIDggKysKPiAgMyBmaWxlcyBj aGFuZ2VkLCAyNDQgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v Z2ljLXYzLWxwaS5jIGIveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwo+IGluZGV4IGQ4YTRmNWEu LjI5MmYyZDAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwo+ICsrKyBi L3hlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMKPiBAQCAtMjAsMTQgKzIwLDM3IEBACj4gIAo+ICAj aW5jbHVkZSA8eGVuL2xpYi5oPgo+ICAjaW5jbHVkZSA8eGVuL21tLmg+Cj4gKyNpbmNsdWRlIDx4 ZW4vc2NoZWQuaD4KPiAgI2luY2x1ZGUgPHhlbi9zaXplcy5oPgo+ICAjaW5jbHVkZSA8eGVuL3dh cm5pbmcuaD4KPiArI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KPiArI2luY2x1ZGUgPGFzbS9kb21h aW4uaD4KPiAgI2luY2x1ZGUgPGFzbS9naWMuaD4KPiAgI2luY2x1ZGUgPGFzbS9naWNfdjNfZGVm cy5oPgo+ICAjaW5jbHVkZSA8YXNtL2dpY192M19pdHMuaD4KPiAgI2luY2x1ZGUgPGFzbS9pby5o Pgo+ICAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPiAgCj4gKy8qCj4gKyAqIFRoZXJlIGNvdWxkIGJl IGEgbG90IG9mIExQSXMgb24gdGhlIGhvc3Qgc2lkZSwgYW5kIHRoZXkgYWx3YXlzIGdvIHRvCj4g KyAqIGEgZ3Vlc3QuIFNvIGhhdmluZyBhIHN0cnVjdCBpcnFfZGVzYyBmb3IgZWFjaCBvZiB0aGVt IHdvdWxkIGJlIHdhc3RlZnVsCj4gKyAqIGFuZCB1c2VsZXNzLgo+ICsgKiBJbnN0ZWFkIGp1c3Qg c3RvcmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGZpbmQgdGhlIHJpZ2h0IFZDUFUgdG8gaW5qZWN0 Cj4gKyAqIHRob3NlIExQSXMgaW50bywgd2hpY2gganVzdCByZXF1aXJlcyB0aGUgdmlydHVhbCBM UEkgbnVtYmVyLgo+ICsgKiBUbyBhdm9pZCBhIGdsb2JhbCBsb2NrIG9uIHRoaXMgZGF0YSBzdHJ1 Y3R1cmUsIHRoaXMgaXMgdXNpbmcgYSBsb2NrbGVzcwo+ICsgKiBhcHByb2FjaCByZWx5aW5nIG9u IHRoZSBhcmNoaXRlY3R1cmFsIGF0b21pY2l0eSBvZiBuYXRpdmUgZGF0YSB0eXBlczoKPiArICog V2UgcmVhZCBvciB3cml0ZSB0aGUgImRhdGEiIHZpZXcgb2YgdGhpcyB1bmlvbiBhdG9taWNhbGx5 LCB0aGVuIGNhbgo+ICsgKiBhY2Nlc3MgdGhlIGJyb2tlbi1kb3duIGZpZWxkcyBpbiBvdXIgbG9j YWwgY29weS4KPiArICovCj4gK3VuaW9uIGhvc3RfbHBpIHsKPiArICAgIHVpbnQ2NF90IGRhdGE7 Cj4gKyAgICBzdHJ1Y3Qgewo+ICsgICAgICAgIHVpbnQzMl90IHZpcnRfbHBpOwo+ICsgICAgICAg IHVpbnQxNl90IGRvbV9pZDsKPiArICAgICAgICB1aW50MTZfdCB2Y3B1X2lkOwo+ICsgICAgfTsK PiArfTsKPiArCj4gICNkZWZpbmUgTFBJX1BST1BUQUJMRV9ORUVEU19GTFVTSElORyAgICAoMVUg PDwgMCkKPiAgCj4gIC8qIEdsb2JhbCBzdGF0ZSAqLwo+IEBAIC0zNSwxMiArNTgsMjMgQEAgc3Rh dGljIHN0cnVjdCB7Cj4gICAgICAvKiBUaGUgZ2xvYmFsIExQSSBwcm9wZXJ0eSB0YWJsZSwgc2hh cmVkIGJ5IGFsbCByZWRpc3RyaWJ1dG9ycy4gKi8KPiAgICAgIHVpbnQ4X3QgKmxwaV9wcm9wZXJ0 eTsKPiAgICAgIC8qCj4gKyAgICAgKiBBIHR3by1sZXZlbCB0YWJsZSB0byBsb29rdXAgTFBJcyBm aXJpbmcgb24gdGhlIGhvc3QgYW5kIGxvb2sgdXAgdGhlCj4gKyAgICAgKiBWQ1BVIGFuZCB2aXJ0 dWFsIExQSSBudW1iZXIgdG8gaW5qZWN0IGludG8uCj4gKyAgICAgKi8KPiArICAgIHVuaW9uIGhv c3RfbHBpICoqaG9zdF9scGlzOwo+ICsgICAgLyoKPiAgICAgICAqIE51bWJlciBvZiBwaHlzaWNh bCBMUElzIHRoZSBob3N0IHN1cHBvcnRzLiBUaGlzIGlzIGEgcHJvcGVydHkgb2YKPiAgICAgICAq IHRoZSBHSUMgaGFyZHdhcmUuIFdlIGRlcGFydCBmcm9tIHRoZSBoYWJpdCBvZiBuYW1pbmcgdGhl c2UgdGhpbmdzCj4gICAgICAgKiAicGh5c2ljYWwiIGluIFhlbiwgYXMgdGhlIEdJQ3YzLzQgc3Bl YyB1c2VzIHRoZSB0ZXJtICJwaHlzaWNhbCBMUEkiCj4gICAgICAgKiBpbiBhIGRpZmZlcmVudCBj b250ZXh0IHRvIGRpZmZlcmVudGlhdGUgdGhlbSBmcm9tICJ2aXJ0dWFsIExQSXMiLgo+ICAgICAg ICovCj4gICAgICB1bnNpZ25lZCBsb25nIGludCBtYXhfaG9zdF9scGlfaWRzOwo+ICsgICAgLyoK PiArICAgICAqIFByb3RlY3RzIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiBob3N0IExQ SXMgYW5kIG5leHRfZnJlZV9scGksCj4gKyAgICAgKiBidXQgbm90IHRoZSBhY3R1YWwgZGF0YSBz dG9yZWQgaW4gdGhlIGhvc3RfbHBpIGVudHJ5Lgo+ICsgICAgICovCj4gKyAgICBzcGlubG9ja190 IGhvc3RfbHBpc19sb2NrOwo+ICsgICAgdWludDMyX3QgbmV4dF9mcmVlX2xwaTsKPiAgICAgIHVu c2lnbmVkIGludCBmbGFnczsKPiAgfSBscGlfZGF0YTsKPiAgCj4gQEAgLTUzLDYgKzg3LDI4IEBA IHN0cnVjdCBscGlfcmVkaXN0X2RhdGEgewo+ICBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0 IGxwaV9yZWRpc3RfZGF0YSwgbHBpX3JlZGlzdCk7Cj4gIAo+ICAjZGVmaW5lIE1BWF9OUl9IT1NU X0xQSVMgICAobHBpX2RhdGEubWF4X2hvc3RfbHBpX2lkcyAtIExQSV9PRkZTRVQpCj4gKyNkZWZp bmUgSE9TVF9MUElTX1BFUl9QQUdFICAgICAgKFBBR0VfU0laRSAvIHNpemVvZih1bmlvbiBob3N0 X2xwaSkpCj4gKwo+ICtzdGF0aWMgdW5pb24gaG9zdF9scGkgKmdpY19nZXRfaG9zdF9scGkodWlu dDMyX3QgcGxwaSkKPiArewo+ICsgICAgdW5pb24gaG9zdF9scGkgKmJsb2NrOwo+ICsKPiArICAg IGlmICggIWlzX2xwaShwbHBpKSB8fCBwbHBpID49IE1BWF9OUl9IT1NUX0xQSVMgKyBMUElfT0ZG U0VUICkKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4gKyAgICBBU1NFUlQocGxwaSA+PSBM UElfT0ZGU0VUKTsKPiArCj4gKyAgICBwbHBpIC09IExQSV9PRkZTRVQ7Cj4gKwo+ICsgICAgYmxv Y2sgPSBscGlfZGF0YS5ob3N0X2xwaXNbcGxwaSAvIEhPU1RfTFBJU19QRVJfUEFHRV07Cj4gKyAg ICBpZiAoICFibG9jayApCj4gKyAgICAgICAgcmV0dXJuIE5VTEw7Cj4gKwo+ICsgICAgLyogTWF0 Y2hlcyB0aGUgd3JpdGUgYmFycmllciBpbiBhbGxvY2F0aW9uIGNvZGUuICovCj4gKyAgICBzbXBf cm1iKCk7Cj4gKwo+ICsgICAgcmV0dXJuICZibG9ja1twbHBpICUgSE9TVF9MUElTX1BFUl9QQUdF XTsKPiArfQo+ICAKPiAgLyoKPiAgICogQW4gSVRTIGNhbiByZWZlciB0byByZWRpc3RyaWJ1dG9y cyBpbiB0d28gd2F5czogZWl0aGVyIGJ5IGFuIElEIChwb3NzaWJseQo+IEBAIC0yMjAsOCArMjc2 LDE4IEBAIGludCBnaWN2M19scGlfaW5pdF9yZGlzdCh2b2lkIF9faW9tZW0gKiByZGlzdF9iYXNl KQo+ICBzdGF0aWMgdW5zaWduZWQgaW50IG1heF9scGlfYml0cyA9IDIwOwo+ICBpbnRlZ2VyX3Bh cmFtKCJtYXhfbHBpX2JpdHMiLCBtYXhfbHBpX2JpdHMpOwo+ICAKPiArLyoKPiArICogQWxsb2Nh dGUgdGhlIDJuZCBsZXZlbCBhcnJheSBmb3IgaG9zdCBMUElzLiBUaGlzIG9uZSBob2xkcyBwb2lu dGVycwo+ICsgKiB0byB0aGUgcGFnZSB3aXRoIHRoZSBhY3R1YWwgInVuaW9uIGhvc3RfbHBpIiBl bnRyaWVzLiBPdXIgTFBJIGxpbWl0Cj4gKyAqIGF2b2lkcyBleGNlc3NpdmUgbWVtb3J5IHVzYWdl Lgo+ICsgKi8KPiAgaW50IGdpY3YzX2xwaV9pbml0X2hvc3RfbHBpcyh1bnNpZ25lZCBpbnQgaG9z dF9scGlfYml0cykKPiAgewo+ICsgICAgdW5zaWduZWQgaW50IG5yX2xwaV9wdHJzOwo+ICsKPiAr ICAgIC8qIFdlIHJlbHkgb24gdGhlIGRhdGEgc3RydWN0dXJlIGJlaW5nIGF0b21pY2FsbHkgYWNj ZXNzaWJsZS4gKi8KPiArICAgIEJVSUxEX0JVR19PTihzaXplb2YodW5pb24gaG9zdF9scGkpID4g c2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKPiArCj4gICAgICAvKgo+ICAgICAgICogQW4gaW1wbGVt ZW50YXRpb24gbmVlZHMgdG8gc3VwcG9ydCBhdCBsZWFzdCAxNCBiaXRzIG9mIExQSSBJRHMuCj4g ICAgICAgKiBUZWxsIHRoZSB1c2VyIGFib3V0IGl0LCB0aGUgYWN0dWFsIG51bWJlciBpcyByZXBv cnRlZCBiZWxvdy4KPiBAQCAtMjQwLDExICszMDYsMTc1IEBAIGludCBnaWN2M19scGlfaW5pdF9o b3N0X2xwaXModW5zaWduZWQgaW50IGhvc3RfbHBpX2JpdHMpCj4gICAgICBpZiAoIGxwaV9kYXRh Lm1heF9ob3N0X2xwaV9pZHMgPiBCSVQoMjQpICkKPiAgICAgICAgICB3YXJuaW5nX2FkZCgiVXNp bmcgaGlnaCBudW1iZXIgb2YgTFBJcywgbGltaXQgbWVtb3J5IHVzYWdlIHdpdGggbWF4X2xwaV9i aXRzXG4iKTsKPiAgCj4gKyAgICBzcGluX2xvY2tfaW5pdCgmbHBpX2RhdGEuaG9zdF9scGlzX2xv Y2spOwo+ICsgICAgbHBpX2RhdGEubmV4dF9mcmVlX2xwaSA9IDA7Cj4gKwo+ICsgICAgbnJfbHBp X3B0cnMgPSBNQVhfTlJfSE9TVF9MUElTIC8gKFBBR0VfU0laRSAvIHNpemVvZih1bmlvbiBob3N0 X2xwaSkpOwo+ICsgICAgbHBpX2RhdGEuaG9zdF9scGlzID0geHphbGxvY19hcnJheSh1bmlvbiBo b3N0X2xwaSAqLCBucl9scGlfcHRycyk7Cj4gKyAgICBpZiAoICFscGlfZGF0YS5ob3N0X2xwaXMg KQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsKPiAgICAgIHByaW50aygiR0lDdjM6IHVz aW5nIGF0IG1vc3QgJWx1IExQSXMgb24gdGhlIGhvc3QuXG4iLCBNQVhfTlJfSE9TVF9MUElTKTsK PiAgCj4gICAgICByZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBmaW5kX3VudXNlZF9o b3N0X2xwaSh1aW50MzJfdCBzdGFydCwgdWludDMyX3QgKmluZGV4KQo+ICt7Cj4gKyAgICB1bnNp Z25lZCBpbnQgY2h1bms7Cj4gKyAgICB1aW50MzJfdCBpID0gKmluZGV4Owo+ICsKPiArICAgIEFT U0VSVChzcGluX2lzX2xvY2tlZCgmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spKTsKPiArCj4gKyAg ICBmb3IgKCBjaHVuayA9IHN0YXJ0Owo+ICsgICAgICAgICAgY2h1bmsgPCBNQVhfTlJfSE9TVF9M UElTIC8gSE9TVF9MUElTX1BFUl9QQUdFOwo+ICsgICAgICAgICAgY2h1bmsrKyApCj4gKyAgICB7 Cj4gKyAgICAgICAgLyogSWYgd2UgaGl0IGFuIHVuYWxsb2NhdGVkIGNodW5rLCB1c2UgZW50cnkg MCBpbiB0aGF0IG9uZS4gKi8KPiArICAgICAgICBpZiAoICFscGlfZGF0YS5ob3N0X2xwaXNbY2h1 bmtdICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgICppbmRleCA9IDA7Cj4gKyAgICAgICAg ICAgIHJldHVybiBjaHVuazsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIC8qIEZpbmQgYW4g dW5hbGxvY2F0ZWQgZW50cnkgaW4gdGhpcyBjaHVuay4gKi8KPiArICAgICAgICBmb3IgKCA7IGkg PCBIT1NUX0xQSVNfUEVSX1BBR0U7IGkgKz0gTFBJX0JMT0NLICkKPiArICAgICAgICB7Cj4gKyAg ICAgICAgICAgIGlmICggbHBpX2RhdGEuaG9zdF9scGlzW2NodW5rXVtpXS5kb21faWQgPT0gRE9N SURfSU5WQUxJRCApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgICppbmRleCA9 IGk7Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gY2h1bms7Cj4gKyAgICAgICAgICAgIH0KPiAr ICAgICAgICB9Cj4gKyAgICAgICAgaSA9IDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIC0x Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBBbGxvY2F0ZSBhIGJsb2NrIG9mIDMyIExQSXMgb24gdGhl IGdpdmVuIGhvc3QgSVRTIGZvciBkZXZpY2UgImRldmlkIiwKPiArICogc3RhcnRpbmcgd2l0aCAi ZXZlbnRpZCIuIFB1dCB0aGVtIGludG8gdGhlIHJlc3BlY3RpdmUgSVRUIGJ5IGlzc3VpbmcgYQo+ ICsgKiBNQVBUSSBjb21tYW5kIGZvciBlYWNoIG9mIHRoZW0uCj4gKyAqLwo+ICtpbnQgZ2ljdjNf YWxsb2NhdGVfaG9zdF9scGlfYmxvY2soc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgKmZpcnN0 X2xwaSkKPiArewo+ICsgICAgdWludDMyX3QgbHBpLCBscGlfaWR4Owo+ICsgICAgaW50IGNodW5r Owo+ICsgICAgaW50IGk7Cj4gKwo+ICsgICAgc3Bpbl9sb2NrKCZscGlfZGF0YS5ob3N0X2xwaXNf bG9jayk7Cj4gKyAgICBscGlfaWR4ID0gbHBpX2RhdGEubmV4dF9mcmVlX2xwaSAlIEhPU1RfTFBJ U19QRVJfUEFHRTsKPiArICAgIGNodW5rID0gZmluZF91bnVzZWRfaG9zdF9scGkobHBpX2RhdGEu bmV4dF9mcmVlX2xwaSAvIEhPU1RfTFBJU19QRVJfUEFHRSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmxwaV9pZHgpOwo+ICsKPiArICAgIGlmICggY2h1bmsgPT0gLSAxICkg ICAgICAgICAgLyogcmVzY2FuIGZvciBhIGhvbGUgZnJvbSB0aGUgYmVnaW5uaW5nICovCj4gKyAg ICB7Cj4gKyAgICAgICAgbHBpX2lkeCA9IDA7Cj4gKyAgICAgICAgY2h1bmsgPSBmaW5kX3VudXNl ZF9ob3N0X2xwaSgwLCAmbHBpX2lkeCk7Cj4gKyAgICAgICAgaWYgKCBjaHVuayA9PSAtMSApCj4g KyAgICAgICAgewo+ICsgICAgICAgICAgICBzcGluX3VubG9jaygmbHBpX2RhdGEuaG9zdF9scGlz X2xvY2spOwo+ICsgICAgICAgICAgICByZXR1cm4gLUVOT1NQQzsKPiArICAgICAgICB9Cj4gKyAg ICB9Cj4gKwo+ICsgICAgLyogSWYgd2UgaGl0IGFuIHVuYWxsb2NhdGVkIGNodW5rLCB3ZSBpbml0 aWFsaXplIGl0IGFuZCB1c2UgZW50cnkgMC4gKi8KPiArICAgIGlmICggIWxwaV9kYXRhLmhvc3Rf bHBpc1tjaHVua10gKQo+ICsgICAgewo+ICsgICAgICAgIHVuaW9uIGhvc3RfbHBpICpuZXdfY2h1 bms7Cj4gKwo+ICsgICAgICAgIC8qIFRPRE86IE5VTUEgbG9jYWxpdHkgZm9yIHF1aWNrZXIgSVJR IHBhdGg/ICovCj4gKyAgICAgICAgbmV3X2NodW5rID0gYWxsb2NfeGVuaGVhcF9wYWdlKCk7Cj4g KyAgICAgICAgaWYgKCAhbmV3X2NodW5rICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHNw aW5fdW5sb2NrKCZscGlfZGF0YS5ob3N0X2xwaXNfbG9jayk7Cj4gKyAgICAgICAgICAgIHJldHVy biAtRU5PTUVNOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBI T1NUX0xQSVNfUEVSX1BBR0U7IGkgKz0gTFBJX0JMT0NLICkKPiArICAgICAgICAgICAgbmV3X2No dW5rW2ldLmRvbV9pZCA9IERPTUlEX0lOVkFMSUQ7Cj4gKwo+ICsgICAgICAgIC8qCj4gKyAgICAg ICAgICogTWFrZSBzdXJlIGFsbCBzbG90cyBhcmUgcmVhbGx5IG1hcmtlZCBlbXB0eSBiZWZvcmUg cHVibGlzaGluZyB0aGUKPiArICAgICAgICAgKiBuZXcgY2h1bmsuCj4gKyAgICAgICAgICovCj4g KyAgICAgICAgc21wX3dtYigpOwo+ICsKPiArICAgICAgICBscGlfZGF0YS5ob3N0X2xwaXNbY2h1 bmtdID0gbmV3X2NodW5rOwo+ICsgICAgICAgIGxwaV9pZHggPSAwOwo+ICsgICAgfQo+ICsKPiAr ICAgIGxwaSA9IGNodW5rICogSE9TVF9MUElTX1BFUl9QQUdFICsgbHBpX2lkeDsKPiArCj4gKyAg ICBmb3IgKCBpID0gMDsgaSA8IExQSV9CTE9DSzsgaSsrICkKPiArICAgIHsKPiArICAgICAgICB1 bmlvbiBob3N0X2xwaSBobHBpOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIE1hcmsg dGhpcyBob3N0IExQSSBhcyBiZWxvbmdpbmcgdG8gdGhlIGRvbWFpbiwgYnV0IGRvbid0IGFzc2ln bgo+ICsgICAgICAgICAqIGFueSB2aXJ0dWFsIExQSSBvciBhIFZDUFUgeWV0Lgo+ICsgICAgICAg ICAqLwo+ICsgICAgICAgIGhscGkudmlydF9scGkgPSBJTlZBTElEX0xQSTsKPiArICAgICAgICBo bHBpLmRvbV9pZCA9IGQtPmRvbWFpbl9pZDsKPiArICAgICAgICBobHBpLnZjcHVfaWQgPSBJTlZB TElEX1ZDUFVfSUQ7Cj4gKyAgICAgICAgd3JpdGVfdTY0X2F0b21pYygmbHBpX2RhdGEuaG9zdF9s cGlzW2NodW5rXVtscGlfaWR4ICsgaV0uZGF0YSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg IGhscGkuZGF0YSk7Cj4gKwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogRW5hYmxlIHRoaXMg aG9zdCBMUEksIHNvIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhpcyBkdXJpbmcgdGhlCj4gKyAgICAg ICAgICogZ3Vlc3QncyBydW50aW1lLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIGxwaV9kYXRh LmxwaV9wcm9wZXJ0eVtscGkgKyBpXSB8PSBMUElfUFJPUF9FTkFCTEVEOwo+ICsgICAgfQo+ICsK PiArICAgIGxwaV9kYXRhLm5leHRfZnJlZV9scGkgPSBscGkgKyBMUElfQkxPQ0s7Cj4gKwo+ICsg ICAgLyoKPiArICAgICAqIFdlIGhhdmUgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCB0aGUgaG9z dCBMUEkgZW50cmllcywgc28gaXQncyBzYWZlCj4gKyAgICAgKiB0byBkcm9wIHRoZSBsb2NrIG5v dy4gQWNjZXNzIHRvIHRoZSBzdHJ1Y3R1cmVzIGNhbiBiZSBkb25lIGNvbmN1cnJlbnRseQo+ICsg ICAgICogYXMgaXQgaW52b2x2ZXMgb25seSBhbiBhdG9taWMgdWludDY0X3QgYWNjZXNzLgo+ICsg ICAgICovCj4gKyAgICBzcGluX3VubG9jaygmbHBpX2RhdGEuaG9zdF9scGlzX2xvY2spOwo+ICsK PiArICAgIGlmICggbHBpX2RhdGEuZmxhZ3MgJiBMUElfUFJPUFRBQkxFX05FRURTX0ZMVVNISU5H ICkKPiArICAgICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFuZ2UoJmxwaV9k YXRhLmxwaV9wcm9wZXJ0eVtscGldLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMUElfQkxPQ0spOwo+ICsKPiArICAgICpmaXJzdF9scGkgPSBscGkgKyBM UElfT0ZGU0VUOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGdpY3YzX2Zy ZWVfaG9zdF9scGlfYmxvY2sodWludDMyX3QgZmlyc3RfbHBpKQo+ICt7Cj4gKyAgICB1bmlvbiBo b3N0X2xwaSAqaGxwaSwgZW1wdHlfbHBpID0geyAuZG9tX2lkID0gRE9NSURfSU5WQUxJRCB9Owo+ ICsgICAgaW50IGk7Cj4gKwo+ICsgICAgLyogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0 aCB0aGUgYmVnaW5uaW5nIG9mIGEgYmxvY2suICovCj4gKyAgICBBU1NFUlQoKGZpcnN0X2xwaSAl IExQSV9CTE9DSykgPT0gMCk7Cj4gKwo+ICsgICAgaGxwaSA9IGdpY19nZXRfaG9zdF9scGkoZmly c3RfbHBpKTsKPiArICAgIGlmICggIWhscGkgKQo+ICsgICAgICAgIHJldHVybjsgICAgICAgICAv KiBOb3RoaW5nIHRvIGZyZWUgaGVyZS4gKi8KPiArCj4gKyAgICBzcGluX2xvY2soJmxwaV9kYXRh Lmhvc3RfbHBpc19sb2NrKTsKPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IExQSV9CTE9DSzsg aSsrICkKPiArICAgICAgICB3cml0ZV91NjRfYXRvbWljKCZobHBpW2ldLmRhdGEsIGVtcHR5X2xw aS5kYXRhKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogTWFrZSBzdXJlIHRoZSBuZXh0IGFsbG9j YXRpb24gY2FuIHJldXNlIHRoaXMgYmxvY2ssIGFzIHdlIGRvIG9ubHkKPiArICAgICAqIGZvcndh cmQgc2Nhbm5pbmcgd2hlbiBmaW5kaW5nIGFuIHVudXNlZCBibG9jay4KPiArICAgICAqLwo+ICsg ICAgaWYgKCBscGlfZGF0YS5uZXh0X2ZyZWVfbHBpID4gZmlyc3RfbHBpICkKPiArICAgICAgICBs cGlfZGF0YS5uZXh0X2ZyZWVfbHBpID0gZmlyc3RfbHBpOwo+ICsKPiArICAgIHNwaW5fdW5sb2Nr KCZscGlfZGF0YS5ob3N0X2xwaXNfbG9jayk7Cj4gKwo+ICsgICAgcmV0dXJuOwo+ICt9Cj4gKwo+ ICAvKgo+ICAgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gICAqIG1vZGU6IEMKPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dp Y192M19pdHMuaAo+IGluZGV4IDEzNzk0ZTAuLmE5NmM5ZGMgMTAwNjQ0Cj4gLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dp Y192M19pdHMuaAo+IEBAIC0xMDMsNiArMTAzLDkgQEAKPiAgI2RlZmluZSBIT1NUX0lUU19GTFVT SF9DTURfUVVFVUUgICAgICAgICgxVSA8PCAwKQo+ICAjZGVmaW5lIEhPU1RfSVRTX1VTRVNfUFRB ICAgICAgICAgICAgICAgKDFVIDw8IDEpCj4gIAo+ICsvKiBXZSBhbGxvY2F0ZSBMUElzIG9uIHRo ZSBob3N0cyBpbiBjaHVua3Mgb2YgMzIgdG8gcmVkdWNlIGhhbmRsaW5nIG92ZXJoZWFkLiAqLwo+ ICsjZGVmaW5lIExQSV9CTE9DSyAgICAgICAgICAgICAgICAgICAgICAgMzJVCj4gKwo+ICAvKiBk YXRhIHN0cnVjdHVyZSBmb3IgZWFjaCBoYXJkd2FyZSBJVFMgKi8KPiAgc3RydWN0IGhvc3RfaXRz IHsKPiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7Cj4gQEAgLTE0MSw2ICsxNDQsOSBAQCB1 aW50NjRfdCBnaWN2M19nZXRfcmVkaXN0X2FkZHJlc3ModW5zaWduZWQgaW50IGNwdSwgYm9vbCB1 c2VfcHRhKTsKPiAgLyogTWFwIGEgY29sbGVjdGlvbiBmb3IgdGhpcyBob3N0IENQVSB0byBlYWNo IGhvc3QgSVRTLiAqLwo+ICBpbnQgZ2ljdjNfaXRzX3NldHVwX2NvbGxlY3Rpb24odW5zaWduZWQg aW50IGNwdSk7Cj4gIAo+ICtpbnQgZ2ljdjNfYWxsb2NhdGVfaG9zdF9scGlfYmxvY2soc3RydWN0 IGRvbWFpbiAqZCwgdWludDMyX3QgKmZpcnN0X2xwaSk7Cj4gK3ZvaWQgZ2ljdjNfZnJlZV9ob3N0 X2xwaV9ibG9jayh1aW50MzJfdCBmaXJzdF9scGkpOwo+ICsKPiAgI2Vsc2UKPiAgCj4gIHN0YXRp YyBpbmxpbmUgdm9pZCBnaWN2M19pdHNfZHRfaW5pdChjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25v ZGUgKm5vZGUpCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vaXJxLmggYi94ZW4v aW5jbHVkZS9hc20tYXJtL2lycS5oCj4gaW5kZXggZjk0MDA5Mi4uN2M3NjYyNiAxMDA2NDQKPiAt LS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy bS9pcnEuaAo+IEBAIC0yOCw2ICsyOCw5IEBAIHN0cnVjdCBhcmNoX2lycV9kZXNjIHsKPiAgCj4g ICNkZWZpbmUgTFBJX09GRlNFVCAgICAgIDgxOTIKPiAgCj4gKy8qIExQSXMgYXJlIGFsd2F5cyBu dW1iZXJlZCBzdGFydGluZyBhdCA4MTkyLCBzbyAwIGlzIGEgZ29vZCBpbnZhbGlkIGNhc2UuICov Cj4gKyNkZWZpbmUgSU5WQUxJRF9MUEkgICAgIDAKPiArCj4gICNkZWZpbmUgbnJfaXJxcyBOUl9J UlFTCj4gICNkZWZpbmUgbnJfc3RhdGljX2lycXMgTlJfSVJRUwo+ICAjZGVmaW5lIGFyY2hfaHdk b21faXJxcyhkb21pZCkgTlJfSVJRUwo+IEBAIC00MSw2ICs0NCwxMSBAQCBzdHJ1Y3QgaXJxX2Rl c2MgKl9faXJxX3RvX2Rlc2MoaW50IGlycSk7Cj4gIAo+ICB2b2lkIGRvX0lSUShzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqcmVncywgdW5zaWduZWQgaW50IGlycSwgaW50IGlzX2ZpcSk7Cj4gIAo+ICtz dGF0aWMgaW5saW5lIGJvb2wgaXNfbHBpKHVuc2lnbmVkIGludCBpcnEpCj4gK3sKPiArICAgIHJl dHVybiBpcnEgPj0gTFBJX09GRlNFVDsKPiArfQo+ICsKPiAgI2RlZmluZSBkb21haW5fcGlycV90 b19pcnEoZCwgcGlycSkgKHBpcnEpCj4gIAo+ICBib29sX3QgaXNfYXNzaWduYWJsZV9pcnEodW5z aWduZWQgaW50IGlycSk7Cj4gLS0gCj4gMi45LjAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=