From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v6 12/36] ARM: GICv3: forward pending LPIs to guests Date: Fri, 7 Apr 2017 11:59:29 -0700 (PDT) Message-ID: References: <20170407173307.9788-1-andre.przywara@arm.com> <20170407173307.9788-13-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 1cwZ6h-0002rj-L5 for xen-devel@lists.xenproject.org; Fri, 07 Apr 2017 18:59:39 +0000 In-Reply-To: <20170407173307.9788-13-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 T24gRnJpLCA3IEFwciAyMDE3LCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPiBVcG9uIHJlY2Vpdmlu ZyBhbiBMUEkgb24gdGhlIGhvc3QsIHdlIG5lZWQgdG8gZmluZCB0aGUgcmlnaHQgVkNQVSBhbmQK PiB2aXJ0dWFsIElSUSBudW1iZXIgdG8gZ2V0IHRoaXMgSVJRIGluamVjdGVkLgo+IEl0ZXJhdGUg b3VyIHR3by1sZXZlbCBMUEkgdGFibGUgdG8gZmluZCB0aGlzIGluZm9ybWF0aW9uIHF1aWNrbHkg d2hlbgo+IHRoZSBob3N0IHRha2VzIGFuIExQSS4gQ2FsbCB0aGUgZXhpc3RpbmcgaW5qZWN0aW9u IGZ1bmN0aW9uIHRvIGxldCB0aGUKPiBHSUMgZW11bGF0aW9uIGRlYWwgd2l0aCB0aGlzIGludGVy cnVwdC4KPiBBbHNvIHdlIGVuaGFuY2Ugc3RydWN0IHBlbmRpbmdfaXJxIHRvIGNhY2hlIHRoZSBw ZW5kaW5nIGJpdCBhbmQgdGhlCj4gcHJpb3JpdHkgaW5mb3JtYXRpb24gZm9yIExQSXMuIFJlYWRp bmcgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlcmUgaXMKPiBmYXN0ZXIgdGhhbiBhY2Nlc3Npbmcg dGhlIHByb3BlcnR5IHRhYmxlIGZyb20gZ3Vlc3QgbWVtb3J5LiBBbHNvIGl0Cj4gdXNlIHNvbWUg cGFkZGluZyBhcmVhLCBzbyBkb2VzIG5vdCByZXF1aXJlIG1vcmUgbWVtb3J5Lgo+IFRoaXMgaW50 cm9kdWNlcyBhIGRvX0xQSSgpIGFzIGEgaGFyZHdhcmUgZ2ljX29wcyBhbmQgYSBmdW5jdGlvbiB0 bwo+IHJldHJpZXZlIHRoZSAoY2FjaGVkKSBwcmlvcml0eSB2YWx1ZSBvZiBhbiBMUEkgYW5kIGEg dmdpY19vcHMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3 YXJhQGFybS5jb20+Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9naWMtdjIuYyAgICAgICAgICAgIHwg IDcgKysrKysKPiAgeGVuL2FyY2gvYXJtL2dpYy12My1scGkuYyAgICAgICAgfCA1NiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9hcmNoL2FybS9naWMtdjMu YyAgICAgICAgICAgIHwgIDEgKwo+ICB4ZW4vYXJjaC9hcm0vZ2ljLmMgICAgICAgICAgICAgICB8 ICA4ICsrKysrLQo+ICB4ZW4vYXJjaC9hcm0vdmdpYy12Mi5jICAgICAgICAgICB8ICA3ICsrKysr Cj4gIHhlbi9hcmNoL2FybS92Z2ljLXYzLmMgICAgICAgICAgIHwgMTIgKysrKysrKysrCj4gIHhl bi9hcmNoL2FybS92Z2ljLmMgICAgICAgICAgICAgIHwgIDcgKysrKy0KPiAgeGVuL2luY2x1ZGUv YXNtLWFybS9kb21haW4uaCAgICAgfCAgMyArKy0KPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWMu aCAgICAgICAgfCAgMiArKwo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaCB8ICA4 ICsrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCAgICAgICB8ICA4ICsrKysrKwo+ ICAxMSBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12Mi5jIGIveGVuL2FyY2gvYXJtL2dpYy12 Mi5jCj4gaW5kZXggMjcwYTEzNi4uZmZiZTQ3YyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0v Z2ljLXYyLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYyLmMKPiBAQCAtMTIxNyw2ICsxMjE3 LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGdpY3YyX2luaXQodm9pZCkKPiAgICAgIHJldHVybiAw Owo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBnaWN2Ml9kb19MUEkodW5zaWduZWQgaW50IGxwaSkK PiArewo+ICsgICAgLyogTm8gTFBJcyBpbiBhIEdJQ3YyICovCj4gKyAgICBCVUcoKTsKPiArfQo+ ICsKPiAgY29uc3Qgc3RhdGljIHN0cnVjdCBnaWNfaHdfb3BlcmF0aW9ucyBnaWN2Ml9vcHMgPSB7 Cj4gICAgICAuaW5mbyAgICAgICAgICAgICAgICA9ICZnaWN2Ml9pbmZvLAo+ICAgICAgLmluaXQg ICAgICAgICAgICAgICAgPSBnaWN2Ml9pbml0LAo+IEBAIC0xMjQ0LDYgKzEyNTAsNyBAQCBjb25z dCBzdGF0aWMgc3RydWN0IGdpY19od19vcGVyYXRpb25zIGdpY3YyX29wcyA9IHsKPiAgICAgIC5t YWtlX2h3ZG9tX21hZHQgICAgID0gZ2ljdjJfbWFrZV9od2RvbV9tYWR0LAo+ICAgICAgLm1hcF9o d2RvbV9leHRyYV9tYXBwaW5ncyA9IGdpY3YyX21hcF9od2Rvd25fZXh0cmFfbWFwcGluZ3MsCj4g ICAgICAuaW9tZW1fZGVueV9hY2Nlc3MgICA9IGdpY3YyX2lvbWVtX2RlbnlfYWNjZXNzLAo+ICsg ICAgLmRvX0xQSSAgICAgICAgICAgICAgPSBnaWN2Ml9kb19MUEksCj4gIH07Cj4gIAo+ICAvKiBT ZXQgdXAgdGhlIEdJQyAqLwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWxwaS5j IGIveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwo+IGluZGV4IDI5MmYyZDAuLjVmM2ZlMmMgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwo+ICsrKyBiL3hlbi9hcmNoL2Fy bS9naWMtdjMtbHBpLmMKPiBAQCAtMTM2LDYgKzEzNiw2MiBAQCB1aW50NjRfdCBnaWN2M19nZXRf cmVkaXN0X2FkZHJlc3ModW5zaWduZWQgaW50IGNwdSwgYm9vbCB1c2VfcHRhKQo+ICAgICAgICAg IHJldHVybiBwZXJfY3B1KGxwaV9yZWRpc3QsIGNwdSkucmVkaXN0X2lkIDw8IDE2Owo+ICB9Cj4g IAo+ICsvKgo+ICsgKiBIYW5kbGUgaW5jb21pbmcgTFBJcywgd2hpY2ggYXJlIGEgYml0IHNwZWNp YWwsIGJlY2F1c2UgdGhleSBhcmUgcG90ZW50aWFsbHkKPiArICogbnVtZXJvdXMgYW5kIGFsc28g b25seSBnZXQgaW5qZWN0ZWQgaW50byBndWVzdHMuIFRyZWF0IHRoZW0gc3BlY2lhbGx5IGhlcmUs Cj4gKyAqIGJ5IGp1c3QgbG9va2luZyB1cCB0aGVpciB0YXJnZXQgdkNQVSBhbmQgdmlydHVhbCBM UEkgbnVtYmVyIGFuZCBoYW5kIGl0Cj4gKyAqIG92ZXIgdG8gdGhlIGluamVjdGlvbiBmdW5jdGlv bi4KPiArICogUGxlYXNlIG5vdGUgdGhhdCBMUElzIGFyZSBlZGdlLXRyaWdnZXJlZCBvbmx5LCBh bHNvIGhhdmUgbm8gYWN0aXZlIHN0YXRlLAo+ICsgKiBzbyBzcHVyaW91cyBpbnRlcnJ1cHRzIG9u IHRoZSBob3N0IHNpZGUgYXJlIG5vIGlzc3VlICh3ZSBjYW4ganVzdCBpZ25vcmUKPiArICogdGhl bSkuCj4gKyAqIEFsc28gYSBndWVzdCBjYW5ub3QgZXhwZWN0IHRoYXQgZmlyaW5nIGludGVycnVw dHMgdGhhdCBoYXZlbid0IGJlZW4KPiArICogZnVsbHkgY29uZmlndXJlZCB5ZXQgd2lsbCByZWFj aCB0aGUgQ1BVLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQKPiArICogdGhpcyBzcGVj aWFsIGNhc2UuCj4gKyAqLwo+ICt2b2lkIGdpY3YzX2RvX0xQSSh1bnNpZ25lZCBpbnQgbHBpKQo+ ICt7Cj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkOwo+ICsgICAgdW5pb24gaG9zdF9scGkgKmhscGlw LCBobHBpOwo+ICsgICAgc3RydWN0IHZjcHUgKnZjcHU7Cj4gKwo+ICsgICAgLyogRU9JIHRoZSBM UEkgYWxyZWFkeS4gKi8KPiArICAgIFdSSVRFX1NZU1JFRzMyKGxwaSwgSUNDX0VPSVIxX0VMMSk7 Cj4gKwo+ICsgICAgLyogRmluZCBvdXQgaWYgYSBndWVzdCBtYXBwZWQgc29tZXRoaW5nIHRvIHRo aXMgcGh5c2ljYWwgTFBJLiAqLwo+ICsgICAgaGxwaXAgPSBnaWNfZ2V0X2hvc3RfbHBpKGxwaSk7 Cj4gKyAgICBpZiAoICFobHBpcCApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgIGhscGku ZGF0YSA9IHJlYWRfdTY0X2F0b21pYygmaGxwaXAtPmRhdGEpOwo+ICsKPiArICAgIC8qCj4gKyAg ICAgKiBVbm1hcHBlZCBldmVudHMgYXJlIG1hcmtlZCB3aXRoIGFuIGludmFsaWQgTFBJIElELiBX ZSBjYW4gc2FmZWx5Cj4gKyAgICAgKiBpZ25vcmUgdGhlbSwgYXMgdGhleSBoYXZlIG5vIGZ1cnRo ZXIgc3RhdGUgYW5kIG5vLW9uZSBjYW4gZXhwZWN0Cj4gKyAgICAgKiB0byBzZWUgdGhlbSBpZiB0 aGV5IGhhdmUgbm90IGJlZW4gbWFwcGVkLgo+ICsgICAgICovCj4gKyAgICBpZiAoIGhscGkudmly dF9scGkgPT0gSU5WQUxJRF9MUEkgKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAgICBkID0g cmN1X2xvY2tfZG9tYWluX2J5X2lkKGhscGkuZG9tX2lkKTsKPiArICAgIGlmICggIWQgKQo+ICsg ICAgICAgIHJldHVybjsKPiArCj4gKyAgICAvKiBNYWtlIHN1cmUgd2UgZG9uJ3Qgc3RlcCBiZXlv bmQgdGhlIHZjcHUgYXJyYXkuICovCj4gKyAgICBpZiAoIGhscGkudmNwdV9pZCA+PSBkLT5tYXhf dmNwdXMgKQo+ICsgICAgewo+ICsgICAgICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOwo+ICsgICAg ICAgIHJldHVybjsKPiArICAgIH0KPiArCj4gKyAgICB2Y3B1ID0gZC0+dmNwdVtobHBpLnZjcHVf aWRdOwo+ICsKPiArICAgIC8qIENoZWNrIGlmIHRoZSBWQ1BVIGlzIHJlYWR5IHRvIHJlY2VpdmUg TFBJcy4gKi8KPiArICAgIGlmICggdmNwdS0+YXJjaC52Z2ljLmZsYWdzICYgVkdJQ19WM19MUElT X0VOQUJMRUQgKQo+ICsgICAgICAgIHZnaWNfdmNwdV9pbmplY3RfaXJxKHZjcHUsIGhscGkudmly dF9scGkpOwo+ICsKPiArICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgaW50IGdpY3YzX2xwaV9hbGxvY2F0ZV9wZW5kdGFibGUodWludDY0X3QgKnJlZykKPiAgewo+ ICAgICAgdWludDY0X3QgdmFsOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMg Yi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiBpbmRleCBhNTU5ZTVlLi42M2RiYzIxIDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtdjMu Ywo+IEBAIC0xNjcwLDYgKzE2NzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdpY19od19vcGVy YXRpb25zIGdpY3YzX29wcyA9IHsKPiAgICAgIC5tYWtlX2h3ZG9tX2R0X25vZGUgID0gZ2ljdjNf bWFrZV9od2RvbV9kdF9ub2RlLAo+ICAgICAgLm1ha2VfaHdkb21fbWFkdCAgICAgPSBnaWN2M19t YWtlX2h3ZG9tX21hZHQsCj4gICAgICAuaW9tZW1fZGVueV9hY2Nlc3MgICA9IGdpY3YzX2lvbWVt X2RlbnlfYWNjZXNzLAo+ICsgICAgLmRvX0xQSSAgICAgICAgICAgICAgPSBnaWN2M19kb19MUEks Cj4gIH07Cj4gIAo+ICBzdGF0aWMgaW50IF9faW5pdCBnaWN2M19kdF9wcmVpbml0KHN0cnVjdCBk dF9kZXZpY2Vfbm9kZSAqbm9kZSwgY29uc3Qgdm9pZCAqZGF0YSkKPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL2dpYy5jIGIveGVuL2FyY2gvYXJtL2dpYy5jCj4gaW5kZXggNDRjMzRiMS4uYTZm YjkyNyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLmMKPiArKysgYi94ZW4vYXJjaC9h cm0vZ2ljLmMKPiBAQCAtNzI4LDcgKzcyOCwxMyBAQCB2b2lkIGdpY19pbnRlcnJ1cHQoc3RydWN0 IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGludCBpc19maXEpCj4gICAgICAgICAgICAgIGRvX0lSUShy ZWdzLCBpcnEsIGlzX2ZpcSk7Cj4gICAgICAgICAgICAgIGxvY2FsX2lycV9kaXNhYmxlKCk7Cj4g ICAgICAgICAgfQo+IC0gICAgICAgIGVsc2UgaWYgKHVubGlrZWx5KGlycSA8IDE2KSkKPiArICAg ICAgICBlbHNlIGlmICggaXNfbHBpKGlycSkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg bG9jYWxfaXJxX2VuYWJsZSgpOwo+ICsgICAgICAgICAgICBnaWNfaHdfb3BzLT5kb19MUEkoaXJx KTsKPiArICAgICAgICAgICAgbG9jYWxfaXJxX2Rpc2FibGUoKTsKPiArICAgICAgICB9Cj4gKyAg ICAgICAgZWxzZSBpZiAoIHVubGlrZWx5KGlycSA8IDE2KSApCj4gICAgICAgICAgewo+ICAgICAg ICAgICAgICBkb19zZ2kocmVncywgaXJxKTsKPiAgICAgICAgICB9Cj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS92Z2ljLXYyLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy12Mi5jCj4gaW5kZXggMDU4 NzU2OS4uZGY5MTk0MCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy12Mi5jCj4gKysr IGIveGVuL2FyY2gvYXJtL3ZnaWMtdjIuYwo+IEBAIC03MDksMTEgKzcwOSwxOCBAQCBzdGF0aWMg c3RydWN0IHBlbmRpbmdfaXJxICp2Z2ljX3YyX2xwaV90b19wZW5kaW5nKHN0cnVjdCBkb21haW4g KmQsCj4gICAgICBCVUcoKTsKPiAgfQo+ICAKPiArc3RhdGljIGludCB2Z2ljX3YyX2xwaV9nZXRf cHJpb3JpdHkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHZscGkpCj4gK3sKPiArICAg IC8qIER1bW15IGZ1bmN0aW9uLCBubyBMUElzIG9uIGEgVkdJQ3YyLiAqLwo+ICsgICAgQlVHKCk7 Cj4gK30KPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19vcHMgdmdpY192Ml9vcHMgPSB7 Cj4gICAgICAudmNwdV9pbml0ICAgPSB2Z2ljX3YyX3ZjcHVfaW5pdCwKPiAgICAgIC5kb21haW5f aW5pdCA9IHZnaWNfdjJfZG9tYWluX2luaXQsCj4gICAgICAuZG9tYWluX2ZyZWUgPSB2Z2ljX3Yy X2RvbWFpbl9mcmVlLAo+ICAgICAgLmxwaV90b19wZW5kaW5nID0gdmdpY192Ml9scGlfdG9fcGVu ZGluZywKPiArICAgIC5scGlfZ2V0X3ByaW9yaXR5ID0gdmdpY192Ml9scGlfZ2V0X3ByaW9yaXR5 LAo+ICAgICAgLm1heF92Y3B1cyA9IDgsCj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vdmdpYy12My5jIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwo+IGluZGV4IGYyNTEyNWUu LjZiYzNkNzYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwo+ICsrKyBiL3hl bi9hcmNoL2FybS92Z2ljLXYzLmMKPiBAQCAtMTU1MywxMiArMTU1MywyNCBAQCBzdGF0aWMgc3Ry dWN0IHBlbmRpbmdfaXJxICp2Z2ljX3YzX2xwaV90b19wZW5kaW5nKHN0cnVjdCBkb21haW4gKmQs Cj4gICAgICByZXR1cm4gcGlycTsKPiAgfQo+ICAKPiArLyogUmV0cmlldmUgdGhlIHByaW9yaXR5 IG9mIGFuIExQSSBmcm9tIGl0cyBzdHJ1Y3QgcGVuZGluZ19pcnEuICovCj4gK3N0YXRpYyBpbnQg dmdpY192M19scGlfZ2V0X3ByaW9yaXR5KHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZscGkp Cj4gK3sKPiArICAgIHN0cnVjdCBwZW5kaW5nX2lycSAqcCA9IHZnaWNfdjNfbHBpX3RvX3BlbmRp bmcoZCwgdmxwaSk7Cj4gKwo+ICsgICAgaWYgKCAhcCApCj4gKyAgICAgICAgcmV0dXJuIEdJQ19Q UklfSVJROwo+ICsKPiArICAgIHJldHVybiBwLT5scGlfcHJpb3JpdHk7Cj4gK30KPiArCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19vcHMgdjNfb3BzID0gewo+ICAgICAgLnZjcHVfaW5pdCAg ID0gdmdpY192M192Y3B1X2luaXQsCj4gICAgICAuZG9tYWluX2luaXQgPSB2Z2ljX3YzX2RvbWFp bl9pbml0LAo+ICAgICAgLmRvbWFpbl9mcmVlID0gdmdpY192M19kb21haW5fZnJlZSwKPiAgICAg IC5lbXVsYXRlX3JlZyAgPSB2Z2ljX3YzX2VtdWxhdGVfcmVnLAo+ICAgICAgLmxwaV90b19wZW5k aW5nID0gdmdpY192M19scGlfdG9fcGVuZGluZywKPiArICAgIC5scGlfZ2V0X3ByaW9yaXR5ID0g dmdpY192M19scGlfZ2V0X3ByaW9yaXR5LAo+ICAgICAgLyoKPiAgICAgICAqIFdlIHVzZSBib3Ro IEFGRjEgYW5kIEFGRjAgaW4gKHYpTVBJRFIuIFRodXMsIHRoZSBtYXggbnVtYmVyIG9mIENQVQo+ ICAgICAgICogdGhhdCBjYW4gYmUgc3VwcG9ydGVkIGlzIHVwIHRvIDQwOTYoPT0yNTYqMTYpIGlu IHRoZW9yeS4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMuYyBiL3hlbi9hcmNoL2Fy bS92Z2ljLmMKPiBpbmRleCBhN2E1MGJjLi5lNmM5N2IyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L2FybS92Z2ljLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vdmdpYy5jCj4gQEAgLTIyNiwxMCArMjI2 LDE1IEBAIHN0cnVjdCB2Y3B1ICp2Z2ljX2dldF90YXJnZXRfdmNwdShzdHJ1Y3QgdmNwdSAqdiwg dW5zaWduZWQgaW50IHZpcnEpCj4gIAo+ICBzdGF0aWMgaW50IHZnaWNfZ2V0X3ZpcnFfcHJpb3Jp dHkoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCB2aXJxKQo+ICB7Cj4gLSAgICBzdHJ1Y3Qg dmdpY19pcnFfcmFuayAqcmFuayA9IHZnaWNfcmFua19pcnEodiwgdmlycSk7Cj4gKyAgICBzdHJ1 Y3QgdmdpY19pcnFfcmFuayAqcmFuazsKPiAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAg ICBpbnQgcHJpb3JpdHk7Cj4gIAo+ICsgICAgLyogTFBJcyBkb24ndCBoYXZlIGEgcmFuaywgYWxz byBzdG9yZSB0aGVpciBwcmlvcml0eSBzZXBhcmF0ZWx5LiAqLwo+ICsgICAgaWYgKCBpc19scGko dmlycSkgKQo+ICsgICAgICAgIHJldHVybiB2LT5kb21haW4tPmFyY2gudmdpYy5oYW5kbGVyLT5s cGlfZ2V0X3ByaW9yaXR5KHYtPmRvbWFpbiwgdmlycSk7Cj4gKwo+ICsgICAgcmFuayA9IHZnaWNf cmFua19pcnEodiwgdmlycSk7Cj4gICAgICB2Z2ljX2xvY2tfcmFuayh2LCByYW5rLCBmbGFncyk7 Cj4gICAgICBwcmlvcml0eSA9IHJhbmstPnByaW9yaXR5W3ZpcnEgJiBJTlRFUlJVUFRfUkFOS19N QVNLXTsKPiAgICAgIHZnaWNfdW5sb2NrX3JhbmsodiwgcmFuaywgZmxhZ3MpOwo+IGRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9k b21haW4uaAo+IGluZGV4IDkxZGZlMGEuLjU4M2Q0OTEgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1 ZGUvYXNtLWFybS9kb21haW4uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgK PiBAQCAtMjU5LDcgKzI1OSw4IEBAIHN0cnVjdCBhcmNoX3ZjcHUKPiAgCj4gICAgICAgICAgLyog R0lDdjM6IHJlZGlzdHJpYnV0b3IgYmFzZSBhbmQgZmxhZ3MgZm9yIHRoaXMgdkNQVSAqLwo+ICAg ICAgICAgIHBhZGRyX3QgcmRpc3RfYmFzZTsKPiAtI2RlZmluZSBWR0lDX1YzX1JESVNUX0xBU1Qg ICgxIDw8IDApICAgICAgICAvKiBsYXN0IHZDUFUgb2YgdGhlIHJkaXN0ICovCj4gKyNkZWZpbmUg VkdJQ19WM19SRElTVF9MQVNUICAgICAgKDEgPDwgMCkgICAgICAgIC8qIGxhc3QgdkNQVSBvZiB0 aGUgcmRpc3QgKi8KPiArI2RlZmluZSBWR0lDX1YzX0xQSVNfRU5BQkxFRCAgICAoMSA8PCAxKQo+ ICAgICAgICAgIHVpbnQ4X3QgZmxhZ3M7Cj4gICAgICB9IHZnaWM7Cj4gIAo+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaAo+ IGluZGV4IDgzNmExMDMuLjQyOTYzYzAgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFy bS9naWMuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmgKPiBAQCAtMzY2LDYgKzM2 Niw4IEBAIHN0cnVjdCBnaWNfaHdfb3BlcmF0aW9ucyB7Cj4gICAgICBpbnQgKCptYXBfaHdkb21f ZXh0cmFfbWFwcGluZ3MpKHN0cnVjdCBkb21haW4gKmQpOwo+ICAgICAgLyogRGVueSBhY2Nlc3Mg dG8gR0lDIHJlZ2lvbnMgKi8KPiAgICAgIGludCAoKmlvbWVtX2RlbnlfYWNjZXNzKShjb25zdCBz dHJ1Y3QgZG9tYWluICpkKTsKPiArICAgIC8qIEhhbmRsZSBMUElzLCB3aGljaCByZXF1aXJlIHNw ZWNpYWwgaGFuZGxpbmcgKi8KPiArICAgIHZvaWQgKCpkb19MUEkpKHVuc2lnbmVkIGludCBscGkp Owo+ICB9Owo+ICAKPiAgdm9pZCByZWdpc3Rlcl9naWNfb3BzKGNvbnN0IHN0cnVjdCBnaWNfaHdf b3BlcmF0aW9ucyAqb3BzKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNf djNfaXRzLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAo+IGluZGV4IDI5NTU5 YTMuLjc0NzA3NzkgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRz LmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAo+IEBAIC0xMzQsNiAr MTM0LDggQEAgdm9pZCBnaWN2M19pdHNfZHRfaW5pdChjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25v ZGUgKm5vZGUpOwo+ICAKPiAgYm9vbCBnaWN2M19pdHNfaG9zdF9oYXNfaXRzKHZvaWQpOwo+ICAK PiArdm9pZCBnaWN2M19kb19MUEkodW5zaWduZWQgaW50IGxwaSk7Cj4gKwo+ICBpbnQgZ2ljdjNf bHBpX2luaXRfcmRpc3Qodm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSk7Cj4gIAo+ICAvKiBJbml0 aWFsaXplIHRoZSBob3N0IHN0cnVjdHVyZXMgZm9yIExQSXMgYW5kIHRoZSBob3N0IElUU2VzLiAq Lwo+IEBAIC0xNzUsNiArMTc3LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBnaWN2M19pdHNfaG9z dF9oYXNfaXRzKHZvaWQpCj4gICAgICByZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gK3N0YXRpYyBp bmxpbmUgdm9pZCBnaWN2M19kb19MUEkodW5zaWduZWQgaW50IGxwaSkKPiArewo+ICsgICAgLyog V2UgZG9uJ3QgZW5hYmxlIExQSXMgd2l0aG91dCBhbiBJVFMuICovCj4gKyAgICBCVUcoKTsKPiAr fQo+ICsKPiAgc3RhdGljIGlubGluZSBpbnQgZ2ljdjNfbHBpX2luaXRfcmRpc3Qodm9pZCBfX2lv bWVtICogcmRpc3RfYmFzZSkKPiAgewo+ICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92Z2lj LmgKPiBpbmRleCAwNDk3MmQzLi41Mjg1NmNhIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vdmdpYy5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmgKPiBAQCAtNjAs MTggKzYwLDI1IEBAIHN0cnVjdCBwZW5kaW5nX2lycQo+ICAgICAgICogdmNwdSB3aGlsZSBpdCBp cyBzdGlsbCBpbmZsaWdodCBhbmQgb24gYW4gR0lDSF9MUiByZWdpc3RlciBvbiB0aGUKPiAgICAg ICAqIG9sZCB2Y3B1Lgo+ICAgICAgICoKPiArICAgICAqIEdJQ19JUlFfR1VFU1RfTFBJX1BFTkRJ Tkc6IHRoaXMgY2FjaGVzIHRoZSBwZW5kaW5nIGJpdCBvZiBhbiBMUEkuCj4gKyAgICAgKiBPbiBo YXJkd2FyZSB0aGUgTFBJIHBlbmRpbmcgYml0IGlzIHN0b3JlZCBpbiBhIHRhYmxlIGluIHN5c3Rl bQo+ICsgICAgICogbWVtb3J5LCB3aGljaCB3b3VsZCByZXF1aXJlIHVzIHRvIGFjY2VzcyBndWVz dCBtZW1vcnkgZXZlcnkgdGltZQo+ICsgICAgICogd2Ugd2FudCB0byBsZWFybiB0aGUgc3RhdGUu IFNvIHdlIGNhY2hlIHRoZSBzdGF0ZSBoZXJlLgo+ICsgICAgICoKPiAgICAgICAqLwo+ICAjZGVm aW5lIEdJQ19JUlFfR1VFU1RfUVVFVUVEICAgMAo+ICAjZGVmaW5lIEdJQ19JUlFfR1VFU1RfQUNU SVZFICAgMQo+ICAjZGVmaW5lIEdJQ19JUlFfR1VFU1RfVklTSUJMRSAgMgo+ICAjZGVmaW5lIEdJ Q19JUlFfR1VFU1RfRU5BQkxFRCAgMwo+ICAjZGVmaW5lIEdJQ19JUlFfR1VFU1RfTUlHUkFUSU5H ICAgNAo+ICsjZGVmaW5lIEdJQ19JUlFfR1VFU1RfTFBJX1BFTkRJTkcgNQoKU2FtZSBjb21tZW50 IG9uIEdJQ19JUlFfR1VFU1RfTFBJX1BFTkRJTkcKCgo+ICAgICAgdW5zaWduZWQgbG9uZyBzdGF0 dXM7Cj4gICAgICBzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2M7IC8qIG9ubHkgc2V0IGl0IHRoZSBpcnEg Y29ycmVzcG9uZHMgdG8gYSBwaHlzaWNhbCBpcnEgKi8KPiAgICAgIHVuc2lnbmVkIGludCBpcnE7 Cj4gICNkZWZpbmUgR0lDX0lOVkFMSURfTFIgICAgICAgICAodWludDhfdCl+MAo+ICAgICAgdWlu dDhfdCBscjsKPiAgICAgIHVpbnQ4X3QgcHJpb3JpdHk7Cj4gKyAgICB1aW50OF90IGxwaV9wcmlv cml0eTsgICAgICAgLyogQ2FjaGVzIHRoZSBwcmlvcml0eSBpZiB0aGlzIGlzIGFuIExQSS4gKi8K PiAgICAgIC8qIGluZmxpZ2h0IGlzIHVzZWQgdG8gYXBwZW5kIGluc3RhbmNlcyBvZiBwZW5kaW5n X2lycSB0bwo+ICAgICAgICogdmdpYy5pbmZsaWdodF9pcnFzICovCj4gICAgICBzdHJ1Y3QgbGlz dF9oZWFkIGluZmxpZ2h0Owo+IEBAIC0xMzYsNiArMTQzLDcgQEAgc3RydWN0IHZnaWNfb3BzIHsK PiAgICAgIGJvb2wgKCplbXVsYXRlX3JlZykoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVu aW9uIGhzciBoc3IpOwo+ICAgICAgLyogbG9va3VwIHRoZSBzdHJ1Y3QgcGVuZGluZ19pcnEgZm9y IGEgZ2l2ZW4gTFBJIGludGVycnVwdCAqLwo+ICAgICAgc3RydWN0IHBlbmRpbmdfaXJxICooKmxw aV90b19wZW5kaW5nKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdmxwaSk7Cj4gKyAg ICBpbnQgKCpscGlfZ2V0X3ByaW9yaXR5KShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCB2bHBp KTsKPiAgICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIHZDUFUgc3VwcG9ydGVkICovCj4gICAgICBj b25zdCB1bnNpZ25lZCBpbnQgbWF4X3ZjcHVzOwo+ICB9Owo+IC0tIAo+IDIuOS4wCj4gCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK