From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v3 11/26] ARM: vGICv3: handle virtual LPI pending and property tables Date: Tue, 4 Apr 2017 13:55:34 +0100 Message-ID: References: <20170331180525.30038-1-andre.przywara@arm.com> <20170331180525.30038-12-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 1cvNzm-0004MG-Tw for xen-devel@lists.xenproject.org; Tue, 04 Apr 2017 12:55:39 +0000 In-Reply-To: <20170331180525.30038-12-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 , Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAzMS8wMy8xNyAxOTowNSwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gQWxs b3cgYSBndWVzdCB0byBwcm92aWRlIHRoZSBhZGRyZXNzIGFuZCBzaXplIGZvciB0aGUgbWVtb3J5 IHJlZ2lvbnMKPiBpdCBoYXMgcmVzZXJ2ZWQgZm9yIHRoZSBHSUN2MyBwZW5kaW5nIGFuZCBwcm9w ZXJ0eSB0YWJsZXMuCj4gV2Ugc2FuaXRpc2UgdGhlIHZhcmlvdXMgZmllbGRzIG9mIHRoZSByZXNw ZWN0aXZlIHJlZGlzdHJpYnV0b3IKPiByZWdpc3RlcnMgYW5kIG1hcCB0aG9zZSBwYWdlcyBpbnRv IFhlbidzIGFkZHJlc3Mgc3BhY2UgdG8gaGF2ZSBlYXN5Cj4gYWNjZXNzLgo+Cj4gU2lnbmVkLW9m Zi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Cj4gLS0tCj4gIHhl bi9hcmNoL2FybS92Z2ljLXYzLmMgICAgICAgfCAxMzYgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLQo+ICB4ZW4vY29tbW9uL21lbW9yeS5jICAgICAgICAgIHwgIDYx ICsrKysrKysrKysrKysrKysrKysKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCB8ICAg NiArLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCAgIHwgICAyICsKPiAgeGVuL2luY2x1 ZGUveGVuL21tLmggICAgICAgICB8ICAgOCArKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5z ZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L3ZnaWMtdjMuYyBiL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKPiBpbmRleCA2OTU3MmUzLi43Zjg0 ZmJmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKPiArKysgYi94ZW4vYXJj aC9hcm0vdmdpYy12My5jCj4gQEAgLTIwLDEyICsyMCwxNCBAQAo+Cj4gICNpbmNsdWRlIDx4ZW4v Yml0b3BzLmg+Cj4gICNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vZG9t YWluX3BhZ2UuaD4KPiAgI2luY2x1ZGUgPHhlbi9saWIuaD4KPiAgI2luY2x1ZGUgPHhlbi9pbml0 Lmg+Cj4gICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgo+ICAjaW5jbHVkZSA8eGVuL2lycS5oPgo+ ICAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+Cj4gICNpbmNsdWRlIDx4ZW4vc2l6ZXMuaD4KPiArI2lu Y2x1ZGUgPHhlbi92bWFwLmg+Cj4gICNpbmNsdWRlIDxhc20vY3VycmVudC5oPgo+ICAjaW5jbHVk ZSA8YXNtL21taW8uaD4KPiAgI2luY2x1ZGUgPGFzbS9naWNfdjNfZGVmcy5oPgo+IEBAIC0yMjks MTIgKzIzMSwxNSBAQCBzdGF0aWMgaW50IF9fdmdpY192M19yZGlzdHJfcmRfbW1pb19yZWFkKHN0 cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywKPiAgICAgICAgICBnb3RvIHJlYWRfcmVz ZXJ2ZWQ7Cj4KPiAgICAgIGNhc2UgVlJFRzY0KEdJQ1JfUFJPUEJBU0VSKToKPiAtICAgICAgICAv KiBMUEkncyBub3QgaW1wbGVtZW50ZWQgKi8KPiAtICAgICAgICBnb3RvIHJlYWRfYXNfemVyb182 NDsKPiArICAgICAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8g YmFkX3dpZHRoOwo+ICsgICAgICAgICpyID0gdmdpY19yZWc2NF9leHRyYWN0KHYtPmRvbWFpbi0+ YXJjaC52Z2ljLnJkaXN0X3Byb3BiYXNlLCBpbmZvKTsKCnZnaWNfcmVnNjRfZXh0cmFjdCB3aWxs IGxpa2VseSB0dXJuZWQgaW50byBhIHNlcmllcyBvZiBub24tYXRvbWljIApvcGVyYXRpb24uIFNv IGhvdyBkbyB5b3UgcHJldmVudCBpc3N1ZT8KCj4gKyAgICAgICAgcmV0dXJuIDE7Cj4KPiAgICAg IGNhc2UgVlJFRzY0KEdJQ1JfUEVOREJBU0VSKToKPiAtICAgICAgICAvKiBMUEkncyBub3QgaW1w bGVtZW50ZWQgKi8KPiAtICAgICAgICBnb3RvIHJlYWRfYXNfemVyb182NDsKPiArICAgICAgICBp ZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ICsg ICAgICAgICpyID0gdmdpY19yZWc2NF9leHRyYWN0KHYtPmFyY2gudmdpYy5yZGlzdF9wZW5kYmFz ZSwgaW5mbyk7CgpEaXR0by4KCj4gKyAgICAgICAgKnIgJj0gfkdJQ1JfUEVOREJBU0VSX1BUWjsg ICAgICAgLyogV08sIHJlYWRzIGFzIDAgKi8KPiArICAgICAgICByZXR1cm4gMTsKClsuLi5dCgo+ ICBzdGF0aWMgaW50IF9fdmdpY192M19yZGlzdHJfcmRfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAq diwgbW1pb19pbmZvX3QgKmluZm8sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGdpY3JfcmVnLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWdpc3Rlcl90IHIpCj4gIHsKPiAgICAgIHN0cnVjdCBoc3JfZGFi dCBkYWJ0ID0gaW5mby0+ZGFidDsKPiArICAgIHVpbnQ2NF90IHJlZzsKPgo+ICAgICAgc3dpdGNo ICggZ2ljcl9yZWcgKQo+ICAgICAgewo+IEBAIC0zOTQsMzYgKzQ3OCw1NCBAQCBzdGF0aWMgaW50 IF9fdmdpY192M19yZGlzdHJfcmRfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZv X3QgKmluZm8sCj4gICAgICAgICAgZ290byB3cml0ZV9pbXBsX2RlZmluZWQ7Cj4KPiAgICAgIGNh c2UgVlJFRzY0KEdJQ1JfU0VUTFBJUik6Cj4gLSAgICAgICAgLyogTFBJIGlzIG5vdCBpbXBsZW1l bnRlZCAqLwo+ICsgICAgICAgIC8qIExQSXMgd2l0aG91dCBhbiBJVFMgYXJlIG5vdCBpbXBsZW1l bnRlZCAqLwo+ICAgICAgICAgIGdvdG8gd3JpdGVfaWdub3JlXzY0Owo+Cj4gICAgICBjYXNlIFZS RUc2NChHSUNSX0NMUkxQSVIpOgo+IC0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQg Ki8KPiArICAgICAgICAvKiBMUElzIHdpdGhvdXQgYW4gSVRTIGFyZSBub3QgaW1wbGVtZW50ZWQg Ki8KPiAgICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZV82NDsKPgo+ICAgICAgY2FzZSAweDAwNTA6 Cj4gICAgICAgICAgZ290byB3cml0ZV9yZXNlcnZlZDsKPgo+ICAgICAgY2FzZSBWUkVHNjQoR0lD Ul9QUk9QQkFTRVIpOgo+IC0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KPiAt ICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZV82NDsKPiArICAgICAgICBpZiAoICF2Z2ljX3JlZzY0 X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ICsKPiArICAgICAgICAvKiBX cml0aW5nIFBST1BCQVNFUiB3aXRoIExQSXMgZW5hYmxlZCBpcyBVTlBSRURJQ1RBQkxFLiAqLwo+ ICsgICAgICAgIGlmICggdi0+YXJjaC52Z2ljLmZsYWdzICYgVkdJQ19WM19MUElTX0VOQUJMRUQg KQoKdiB3aWxsIHBvaW50IHRvIHRoZSB2Q1BVIGFzc29jaWF0ZWQgdG8gdGhlIHJlLWRpc3RyaWJ1 dG9yLiBIb3dldmVyLCB0aGlzIApjb3VsZCBiZSB1cGRhdGVkIGZyb20gYW55IHZDUFUuIFNvIEkg dGhpbmsgdGhlcmUgaXMgdGlueSByYWNlIHdoZXJlIAp2LT5hcmNoLnZnaWMuZmxhZ3MgbWF5IG5v dCBiZWVuIHNlZW4gYW5kIHRoZXJlZm9yZSB5b3Ugd2lsbAoKPiArICAgICAgICAgICAgcmV0dXJu IDE7Cj4gKwo+ICsgICAgICAgIHJlZyA9IHYtPmRvbWFpbi0+YXJjaC52Z2ljLnJkaXN0X3Byb3Bi YXNlOwo+ICsgICAgICAgIHZnaWNfcmVnNjRfdXBkYXRlKCZyZWcsIHIsIGluZm8pOwo+ICsgICAg ICAgIHJlZyA9IHNhbml0aXplX3Byb3BiYXNlcihyZWcpOwo+ICsgICAgICAgIHYtPmRvbWFpbi0+ YXJjaC52Z2ljLnJkaXN0X3Byb3BiYXNlID0gcmVnOwoKVGhpcyBjb2RlIGNvdWxkIGJlIGNhbGxl ZCBjb25jdXJyZW50bHkgYW5kIEkgZG9uJ3QgdGhpbmsgdGhpcyB3aWxsIApiZWhhdmUgd2VsbC4K Cj4gKyAgICAgICAgcmV0dXJuIDE7Cj4KPiAgICAgIGNhc2UgVlJFRzY0KEdJQ1JfUEVOREJBU0VS KToKPiAtICAgICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVudGVkICovCj4gLSAgICAgICAgZ290 byB3cml0ZV9pZ25vcmVfNjQ7Cj4gKyAgICAgICAgaWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nl c3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKPiArCj4gKyAgICAgICAgLyogV3JpdGluZyBQRU5E QkFTRVIgd2l0aCBMUElzIGVuYWJsZWQgaXMgVU5QUkVESUNUQUJMRS4gKi8KPiArICAgICAgICBp ZiAoIHYtPmFyY2gudmdpYy5mbGFncyAmIFZHSUNfVjNfTFBJU19FTkFCTEVEICkKCkRpdHRvCgo+ ICsgICAgICAgICAgICByZXR1cm4gMTsKPiArCj4gKyAgICAgICAgcmVnID0gdi0+YXJjaC52Z2lj LnJkaXN0X3BlbmRiYXNlOwo+ICsgICAgICAgIHZnaWNfcmVnNjRfdXBkYXRlKCZyZWcsIHIsIGlu Zm8pOwo+ICsgICAgICAgIHJlZyA9IHNhbml0aXplX3BlbmRiYXNlcihyZWcpOwo+ICsgICAgICAg IHYtPmFyY2gudmdpYy5yZGlzdF9wZW5kYmFzZSA9IHJlZzsKCkRpdHRvLgoKCj4gKyAgICAgICAg cmV0dXJuIDE7CgpbLi4uXQoKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9tZW1vcnkuYyBiL3hl bi9jb21tb24vbWVtb3J5LmMKPiBpbmRleCAyMTc5N2NhLi4yOWVmOWJiIDEwMDY0NAo+IC0tLSBh L3hlbi9jb21tb24vbWVtb3J5LmMKPiArKysgYi94ZW4vY29tbW9uL21lbW9yeS5jCgpBbnkgbW9k aWZpY2F0aW9uIGluIGNvbW1vbiBjb2RlIHNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNoIGFuZCBo YXZlIAphcHByb3ByaWF0ZSBtYWludGFpbmVycyBDQ2VkLgoKPiBAQCAtMTQxOSw2ICsxNDE5LDY3 IEBAIGludCBwcmVwYXJlX3JpbmdfZm9yX2hlbHBlcigKPiAgfQo+Cj4gIC8qCj4gKyAqIE1hcmsg YSBnaXZlbiBudW1iZXIgb2YgZ3Vlc3QgcGFnZXMgYXMgdXNlZCAoYnkgaW5jcmVhc2luZyB0aGVp ciByZWZjb3VudCksCj4gKyAqIHN0YXJ0aW5nIHdpdGggdGhlIGdpdmVuIGd1ZXN0IGFkZHJlc3Mu IFRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIG9uY2UgYmVmb3JlCj4gKyAqIGNhbGxpbmcgKHBvc3Np Ymx5IHJlcGVhdGVkbHkpIG1hcF9vbmVfZ3Vlc3RfcGFnZXMoKS4KPiArICogQmVmb3JlIHRoZSBk b21haW4gZ2V0cyBkZXN0cm95ZWQsIGNhbGwgcHV0X2d1ZXN0X3BhZ2VzKCkgdG8gZHJvcCB0aGUK PiArICogcmVmZXJlbmNlLgo+ICsgKi8KCkkgd2FzIGhvcGluZyB0aGF0IHlvdSB3b3VsZCBoYXZl IHRha2VuIG15IGNvbW1lbnRzIGludG8gYWNjb3VudCB3aGVyZSAKeW91IHdyb3RlIHRoZSBuZXcg ZnVuY3Rpb25zIGJ1dCBpdCBzZWVtcyB0aGV5IHdlcmUgaWdub3JlZCA6Ly4gSSBmZWVsIApsaWtl IGl0IGlzIGEgd2FzdGVkIG9mIG15IHRpbWUgdG8gcmVwZWF0IGFnYWluIGFuZCBhZ2FpbiBjb21t ZW50cy4KCkJvdGggZ2V0X2d1ZXN0X3BhZ2VzIGFuZCBwdXRfZ3Vlc3RfcGFnZXMgYXJlIHdyb25n IGJlY2F1c2UgeW91IGFyZSAKYXNzdW1pbmcgdGhlIHAybSBtYXBwaW5nIHdpbGwgbmV2ZXIgY2hh bmdlcy4gVGhpcyBpcyB3cm9uZyBhbmQgSSBhc2tlZCBhIApmb3J3YXJkIHBsYW4gZm9yIHRoYXQg d2hpY2ggc2VlbXMgdG8gaGF2ZSBiZWVuIHNraXBwZWQgdG9vLi4uCgo+ICtpbnQgZ2V0X2d1ZXN0 X3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBpbnQgbnJfcGFn ZXMpCgpNYW55IGNvbW1lbnRzIGhlcmU6CiAgICAqIHBsZWFzZSB1c2UgdGhlIHR5cGUgZ2ZuX3Qg cmF0aGVyIHBhZGRyX3QsCgo+ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiArICAgIHN0cnVj dCBwYWdlX2luZm8gKnBhZ2U7Cj4gKwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBucl9wYWdlczsg aSsrICkKPiArICAgIHsKPiArICAgICAgICBwYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgKGdw YSA+PiBQQUdFX1NISUZUKSArIGksIE5VTEwsIFAyTV9BTExPQyk7CgpHZXQgcGFnZSBtYXkgcmV0 dXJuIGEgZm9yZWlnbiBwYWdlIChlLmcgYmVsb25naW5nIHRvIGFub3RoZXIgZG9tYWluKSBhbmQg CndlIGRvbid0IHdhbnQgdG8gdXNlIHRoaXMgdHlwZSBvZiBwYWdlIGZvciBJVFMgbWVtb3J5LgoK PiArICAgICAgICBpZiAoICFwYWdlICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIC8qIE1h a2Ugc3VyZSB3ZSBkcm9wIHRoZSByZWZlcmVuY2VzIG9mIHBhZ2VzIHdlIGdvdCBzbyBmYXIuICov Cj4gKyAgICAgICAgICAgIHB1dF9ndWVzdF9wYWdlcyhkLCBncGEsIGkpOwo+ICsgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK3ZvaWQgcHV0X2d1ZXN0X3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHBh ZGRyX3QgZ3BhLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpCgpTYW1lIGNvbW1lbnRzIGFzIGFib3Zl LgoKPiArewo+ICsgICAgbWZuX3QgbWZuOwo+ICsgICAgaW50IGk7Cj4gKwo+ICsgICAgcDJtX3Jl YWRfbG9jaygmZC0+YXJjaC5wMm0pOwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBucl9wYWdlczsg aSsrICkKPiArICAgIHsKPiArICAgICAgICBtZm4gPSBwMm1fZ2V0X2VudHJ5KCZkLT5hcmNoLnAy bSwgX2dmbigoZ3BhID4+IFBBR0VfU0hJRlQpICsgaSksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKPiArICAgICAgICBpZiAoIG1mbl9lcShtZm4sIElO VkFMSURfTUZOKSApCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIHB1dF9wYWdl KG1mbl90b19wYWdlKG1mbl94KG1mbikpKTsKClRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVseSB3 cm9uZyBpbiB0aGUgYWN0dWFsIHN0YXRlLiBZb3UgYXNzdW1lIHRoYXQgCnRoZSBzdGFnZS0yIHBh Z2UgdGFibGUgaGFzIG5vdCBiZWVuIG1vZGlmaWVkIGJ5IHRoZSBndWVzdCBiZXR3ZWVuIApnZXRf Z3Vlc3RfcGFnZXMgYW5kIHB1dF9ndWVzdF9wYWdlcy4gSWYgaXQgaGFzIGJlZW4gbW9kaWZpZWQs IHlvdSBtYXkgCnJlbW92ZSBhIHJlZmVyZW5jZSBvbiB0aGUgd3JvbmcgcGFnZS4KCkZ1cnRoZXJt b3JlLCBpdCBpcyBsaWtlbHkgYW4gZXJyb3IgdG8gaGF2ZSB0aGUgbWZuIG5vdCB2YWxpZCBpbiB0 aGlzIGNhc2UuCgpBcyB3ZSBkaXNjdXNzZWQgZWFybGllciwgdGhlIHdheSBmb3J3YXJkIGlzIHRv IHByb3RlY3QgdGhlIHBhZ2VzLiBJdCBpcyAKbm90IG1hbmRhdG9yeSBmb3IgRE9NMCwgYnV0IGEg Y29tbWVudCBpbiB0aGUgY29kZSBpcyBuZWNlc3NhcnkgdG8gCmV4cGxhaW4gd2hhdCBpcyBtaXNz aW5nLgoKPiArICAgIH0KPiArICAgIHAybV9yZWFkX3VubG9jaygmZC0+YXJjaC5wMm0pOwo+ICt9 Cj4gKwo+ICsvKgo+ICsgKiBQcm92aWRlcyBlYXN5IGFjY2VzcyB0byBndWVzdCBtZW1vcnkgYnkg Im1hcHBpbmciIG9uZSBwYWdlIG9mIGl0IGludG8KPiArICogWGVuJ3MgVkEgc3BhY2UuIEluIGZh Y3QgaXQgcmVsaWVzIG9uIHRoZSBtZW1vcnkgYmVpbmcgYWxyZWFkeSBtYXBwZWQKPiArICogYW5k IGp1c3QgcHJvdmlkZXMgYSBwb2ludGVyIHRvIGl0Lgo+ICsgKi8KPiArdm9pZCAqbWFwX29uZV9n dWVzdF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgZ3Vlc3RfYWRkcikKPiArewo+ICsg ICAgdm9pZCAqcHRyID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4oZ3Vlc3RfYWRkciA+PiBQQUdFX1NI SUZUKSk7CgpUaGlzIG1pZ2h0IGJlIGNvcnJlY3QgZm9yIERPTTAgYnV0IHdpbGwgbm90IHdvcmsg Zm9yIGd1ZXN0LiBFdmVuIGlmIHlvdSAKZG9uJ3Qgc3VwcG9ydCBndWVzdCByaWdodCBub3csIHdl IHNob3VsZCByZWFsbHkgYXZvaWQgc3VjaCBhc3N1bXB0aW9uIGluIAp0aGUgY29kZS4gSXQgd2ls bCBsaWtlbHkgbWVhbiBxdWl0ZSBhIGxvdCBvZiByZXdvcmsgd2hpY2ggSSdkIGxpa2UgdG8gCnNl ZSBub3cuCgpMb29raW5nIGF0IGhvdyB5b3UgdXNlIHRoaXMsIGl0IHdvdWxkIG1ha2UgbW9yZSBz ZW5zZSB0byBoYXZlIGFuIGhlbHBlciAKdG8gY29weSBmcm9tIHRoZSBndWVzdCBtZW1vcnkgdG8g YSBidWZmZXIuIEkgdGhpbmsgdGhpcyBpcyBub3QgdGhlIGZpcnN0IAp0aW1lIEkgYW0gc3VnZ2Vz dGluZyB0aGF0LgoKSSB0aGluayB0aGlzIHdvdWxkIGFsc28gYXZvaWQgcHJvdGVjdGluZyB0aGUg Z3Vlc3QgbWVtb3J5LgoKRm9yIGFuIGV4YW1wbGUgb2Ygd2hhdCBJIG1lYW50IGdpdmUgYSBsb29r IHRvIHRoZSB2SVRTIHNlcmllcyBzZW50IGJ5IApDYXZpdW0gYSB5ZWFyIGFnbzoKCmh0dHBzOi8v cGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvODE3NzI1MS8KCj4gKwo+ICsgICAgcmV0dXJuIHB0 ciArIChndWVzdF9hZGRyICYgflBBR0VfTUFTSyk7Cj4gK30KPiArCj4gKy8qICJVbm1hcCIgYSBw cmV2aW91c2x5IG1hcHBlZCBndWVzdCBwYWdlLiBDb3VsZCBiZSBvcHRpbWl6ZWQgYXdheS4gKi8K PiArdm9pZCB1bm1hcF9vbmVfZ3Vlc3RfcGFnZSh2b2lkICp2YSkKPiArewo+ICsgICAgdW5tYXBf ZG9tYWluX3BhZ2UoKCh1aW50cHRyX3QpdmEgJiBQQUdFX01BU0spKTsKPiArfQo+ICsKPiArLyoK PiAgICogTG9jYWwgdmFyaWFibGVzOgo+ICAgKiBtb2RlOiBDCj4gICAqIGMtZmlsZS1zdHlsZTog IkJTRCIKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKPiBpbmRleCBhODM5MDRhLi5hZDRkZmRjIDEwMDY0NAo+ IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKPiArKysgYi94ZW4vaW5jbHVkZS9h c20tYXJtL2RvbWFpbi5oCj4gQEAgLTExMCw2ICsxMTAsOCBAQCBzdHJ1Y3QgYXJjaF9kb21haW4K PiAgICAgICAgICB9ICpyZGlzdF9yZWdpb25zOwo+ICAgICAgICAgIGludCBucl9yZWdpb25zOyAg ICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiByZGlzdCByZWdpb25zICovCj4gICAgICAg ICAgdWludDMyX3QgcmRpc3Rfc3RyaWRlOyAgICAgICAgICAgICAgLyogUmUtRGlzdHJpYnV0b3Ig c3RyaWRlICovCj4gKyAgICAgICAgdW5zaWduZWQgaW50IG5yX2xwaXM7CgpZb3Ugc3dpdGNoZWQg dG8gInVuc2lnbmVkIGxvbmciIGluIHRoZSBnaWMtdjMtaXRzIGNvZGUsIGJ1dCBzdGlsbCBrZWVw IAoidW5zaWduZWQgaW50IiBoZXJlLgoKV2h5IHRoYXQ/CgpbLi4uXQoKPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaAo+ IGluZGV4IGVhYmRmOTEuLjlmNDhlOWEgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFy bS92Z2ljLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaAo+IEBAIC0zMTAsNiAr MzEwLDggQEAgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfdmdpY19vcHMoc3RydWN0IGRvbWFpbiAqZCwg Y29uc3Qgc3RydWN0IHZnaWNfb3BzICpvcHMpOwo+ICBpbnQgdmdpY192Ml9pbml0KHN0cnVjdCBk b21haW4gKmQsIGludCAqbW1pb19jb3VudCk7Cj4gIGludCB2Z2ljX3YzX2luaXQoc3RydWN0IGRv bWFpbiAqZCwgaW50ICptbWlvX2NvdW50KTsKPgo+ICtleHRlcm4gaW50IHZnaWNfbHBpX2dldF9w cmlvcml0eShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCB2bHBpKTsKClByb3RvdHlwZSBzaG91 bGQgYmUgYWRkZWQgaW4gdGhlIHNhbWUgcGF0Y2ggYXMgdGhlIGRlY2xhcmF0aW9uLiBTbyAKcGxl YXNlIG1vdmUgdG8gcGF0Y2ggIzEwLgoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==