From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 2/8] xen/balloon: Move common memory reservation routines to a module Date: Tue, 29 May 2018 21:22:25 +0300 Message-ID: <89de7bdb-8759-419f-63bf-8ed0d57650f0@gmail.com> References: <20180525153331.31188-1-andr2000@gmail.com> <20180525153331.31188-3-andr2000@gmail.com> <59ab73b0-967b-a82f-3b0d-95f1b0dc40a5@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id B59A56E406 for ; Tue, 29 May 2018 18:22:30 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id v135-v6so224718lfa.9 for ; Tue, 29 May 2018 11:22:30 -0700 (PDT) In-Reply-To: <59ab73b0-967b-a82f-3b0d-95f1b0dc40a5@oracle.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Ostrovsky , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org T24gMDUvMjkvMjAxOCAwOTowNCBQTSwgQm9yaXMgT3N0cm92c2t5IHdyb3RlOgo+IE9uIDA1LzI1 LzIwMTggMTE6MzMgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBGcm9tOiBP bGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+ Cj4+Cj4+IE1lbW9yeSB7aW5jcmVhc2V8ZGVjcmVhc2V9X3Jlc2VydmF0aW9uIGFuZCBWQSBtYXBw aW5ncyB1cGRhdGUvcmVzZXQKPj4gY29kZSB1c2VkIGluIGJhbGxvb24gZHJpdmVyIGNhbiBiZSBt YWRlIGNvbW1vbiwgc28gb3RoZXIgZHJpdmVycyBjYW4KPj4gYWxzbyByZS11c2UgdGhlIHNhbWUg ZnVuY3Rpb25hbGl0eSB3aXRob3V0IG9wZW4tY29kaW5nLgo+PiBDcmVhdGUgYSBkZWRpY2F0ZWQg bW9kdWxlCj4gSUlVSUMgdGhpcyBpcyBub3QgcmVhbGx5IGEgbW9kdWxlLCBpdCdzIGEgY29tbW9u IGZpbGUuClN1cmUsIHdpbGwgcHV0ICJmaWxlIiBoZXJlCj4KPj4gZm9yIHRoZSBzaGFyZWQgY29k ZSBhbmQgZXhwb3J0IGNvcnJlc3BvbmRpbmcKPj4gc3ltYm9scyBmb3Igb3RoZXIga2VybmVsIG1v ZHVsZXMuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVr c2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy94ZW4vTWFr ZWZpbGUgICAgICAgICAgfCAgIDEgKwo+PiAgIGRyaXZlcnMveGVuL2JhbGxvb24uYyAgICAgICAg IHwgIDcxICsrLS0tLS0tLS0tLS0tLS0tLQo+PiAgIGRyaXZlcnMveGVuL21lbS1yZXNlcnZhdGlv bi5jIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gICBpbmNsdWRl L3hlbi9tZW1fcmVzZXJ2YXRpb24uaCB8ICAyOSArKysrKysrKwo+PiAgIDQgZmlsZXMgY2hhbmdl ZCwgMTcwIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQo+PiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3hlbi9tZW0tcmVzZXJ2YXRpb24uYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBpbmNsdWRlL3hlbi9tZW1fcmVzZXJ2YXRpb24uaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy94ZW4vTWFrZWZpbGUgYi9kcml2ZXJzL3hlbi9NYWtlZmlsZQo+PiBpbmRleCA0NTFlODMzZjU5 MzEuLjNjODdiMGMzYWNhNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy94ZW4vTWFrZWZpbGUKPj4g KysrIGIvZHJpdmVycy94ZW4vTWFrZWZpbGUKPj4gQEAgLTIsNiArMiw3IEBACj4+ICAgb2JqLSQo Q09ORklHX0hPVFBMVUdfQ1BVKQkJKz0gY3B1X2hvdHBsdWcubwo+PiAgIG9iai0kKENPTkZJR19Y ODYpCQkJKz0gZmFsbGJhY2subwo+PiAgIG9iai15CSs9IGdyYW50LXRhYmxlLm8gZmVhdHVyZXMu byBiYWxsb29uLm8gbWFuYWdlLm8gcHJlZW1wdC5vIHRpbWUubwo+PiArb2JqLXkJKz0gbWVtLXJl c2VydmF0aW9uLm8KPj4gICBvYmoteQkrPSBldmVudHMvCj4+ICAgb2JqLXkJKz0geGVuYnVzLwo+ PiAgIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vYmFsbG9vbi5jIGIvZHJpdmVycy94ZW4v YmFsbG9vbi5jCj4+IGluZGV4IDA2NWYwYjYwNzM3My4uNTdiNDgyZDY3YTNhIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL3hlbi9iYWxsb29uLmMKPj4gKysrIGIvZHJpdmVycy94ZW4vYmFsbG9vbi5j Cj4+IEBAIC03MSw2ICs3MSw3IEBACj4+ICAgI2luY2x1ZGUgPHhlbi9iYWxsb29uLmg+Cj4+ICAg I2luY2x1ZGUgPHhlbi9mZWF0dXJlcy5oPgo+PiAgICNpbmNsdWRlIDx4ZW4vcGFnZS5oPgo+PiAr I2luY2x1ZGUgPHhlbi9tZW1fcmVzZXJ2YXRpb24uaD4KPj4gICAKPj4gICBzdGF0aWMgaW50IHhl bl9ob3RwbHVnX3VucG9wdWxhdGVkOwo+PiAgIAo+PiBAQCAtMTU3LDEzICsxNTgsNiBAQCBzdGF0 aWMgREVDTEFSRV9ERUxBWUVEX1dPUksoYmFsbG9vbl93b3JrZXIsIGJhbGxvb25fcHJvY2Vzcyk7 Cj4+ICAgI2RlZmluZSBHRlBfQkFMTE9PTiBcCj4+ICAgCShHRlBfSElHSFVTRVIgfCBfX0dGUF9O T1dBUk4gfCBfX0dGUF9OT1JFVFJZIHwgX19HRlBfTk9NRU1BTExPQykKPj4gICAKPj4gLXN0YXRp YyB2b2lkIHNjcnViX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCj4+IC17Cj4+IC0jaWZkZWYgQ09O RklHX1hFTl9TQ1JVQl9QQUdFUwo+PiAtCWNsZWFyX2hpZ2hwYWdlKHBhZ2UpOwo+PiAtI2VuZGlm Cj4+IC19Cj4+IC0KPj4gICAvKiBiYWxsb29uX2FwcGVuZDogYWRkIHRoZSBnaXZlbiBwYWdlIHRv IHRoZSBiYWxsb29uLiAqLwo+PiAgIHN0YXRpYyB2b2lkIF9fYmFsbG9vbl9hcHBlbmQoc3RydWN0 IHBhZ2UgKnBhZ2UpCj4+ICAgewo+PiBAQCAtNDYzLDExICs0NTcsNiBAQCBzdGF0aWMgZW51bSBi cF9zdGF0ZSBpbmNyZWFzZV9yZXNlcnZhdGlvbih1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQo+PiAg IAlpbnQgcmM7Cj4+ICAgCXVuc2lnbmVkIGxvbmcgaTsKPj4gICAJc3RydWN0IHBhZ2UgICAqcGFn ZTsKPj4gLQlzdHJ1Y3QgeGVuX21lbW9yeV9yZXNlcnZhdGlvbiByZXNlcnZhdGlvbiA9IHsKPj4g LQkJLmFkZHJlc3NfYml0cyA9IDAsCj4+IC0JCS5leHRlbnRfb3JkZXIgPSBFWFRFTlRfT1JERVIs Cj4+IC0JCS5kb21pZCAgICAgICAgPSBET01JRF9TRUxGCj4+IC0JfTsKPj4gICAKPj4gICAJaWYg KG5yX3BhZ2VzID4gQVJSQVlfU0laRShmcmFtZV9saXN0KSkKPj4gICAJCW5yX3BhZ2VzID0gQVJS QVlfU0laRShmcmFtZV9saXN0KTsKPj4gQEAgLTQ4Niw5ICs0NzUsNyBAQCBzdGF0aWMgZW51bSBi cF9zdGF0ZSBpbmNyZWFzZV9yZXNlcnZhdGlvbih1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQo+PiAg IAkJcGFnZSA9IGJhbGxvb25fbmV4dF9wYWdlKHBhZ2UpOwo+PiAgIAl9Cj4+ICAgCj4+IC0Jc2V0 X3hlbl9ndWVzdF9oYW5kbGUocmVzZXJ2YXRpb24uZXh0ZW50X3N0YXJ0LCBmcmFtZV9saXN0KTsK Pj4gLQlyZXNlcnZhdGlvbi5ucl9leHRlbnRzID0gbnJfcGFnZXM7Cj4+IC0JcmMgPSBIWVBFUlZJ U09SX21lbW9yeV9vcChYRU5NRU1fcG9wdWxhdGVfcGh5c21hcCwgJnJlc2VydmF0aW9uKTsKPj4g KwlyYyA9IHhlbm1lbV9yZXNlcnZhdGlvbl9pbmNyZWFzZShucl9wYWdlcywgZnJhbWVfbGlzdCk7 Cj4+ICAgCWlmIChyYyA8PSAwKQo+PiAgIAkJcmV0dXJuIEJQX0VBR0FJTjsKPj4gICAKPj4gQEAg LTQ5NiwyOSArNDgzLDcgQEAgc3RhdGljIGVudW0gYnBfc3RhdGUgaW5jcmVhc2VfcmVzZXJ2YXRp b24odW5zaWduZWQgbG9uZyBucl9wYWdlcykKPj4gICAJCXBhZ2UgPSBiYWxsb29uX3JldHJpZXZl KGZhbHNlKTsKPj4gICAJCUJVR19PTihwYWdlID09IE5VTEwpOwo+PiAgIAo+PiAtI2lmZGVmIENP TkZJR19YRU5fSEFWRV9QVk1NVQo+PiAtCQkvKgo+PiAtCQkgKiBXZSBkb24ndCBzdXBwb3J0IFBW IE1NVSB3aGVuIExpbnV4IGFuZCBYZW4gaXMgdXNpbmcKPj4gLQkJICogZGlmZmVyZW50IHBhZ2Ug Z3JhbnVsYXJpdHkuCj4+IC0JCSAqLwo+PiAtCQlCVUlMRF9CVUdfT04oWEVOX1BBR0VfU0laRSAh PSBQQUdFX1NJWkUpOwo+PiAtCj4+IC0JCWlmICgheGVuX2ZlYXR1cmUoWEVORkVBVF9hdXRvX3Ry YW5zbGF0ZWRfcGh5c21hcCkpIHsKPj4gLQkJCXVuc2lnbmVkIGxvbmcgcGZuID0gcGFnZV90b19w Zm4ocGFnZSk7Cj4+IC0KPj4gLQkJCXNldF9waHlzX3RvX21hY2hpbmUocGZuLCBmcmFtZV9saXN0 W2ldKTsKPj4gLQo+PiAtCQkJLyogTGluayBiYWNrIGludG8gdGhlIHBhZ2UgdGFibGVzIGlmIG5v dCBoaWdobWVtLiAqLwo+PiAtCQkJaWYgKCFQYWdlSGlnaE1lbShwYWdlKSkgewo+PiAtCQkJCWlu dCByZXQ7Cj4+IC0JCQkJcmV0ID0gSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZygKPj4gLQkJ CQkJCSh1bnNpZ25lZCBsb25nKV9fdmEocGZuIDw8IFBBR0VfU0hJRlQpLAo+PiAtCQkJCQkJbWZu X3B0ZShmcmFtZV9saXN0W2ldLCBQQUdFX0tFUk5FTCksCj4+IC0JCQkJCQkwKTsKPj4gLQkJCQlC VUdfT04ocmV0KTsKPj4gLQkJCX0KPj4gLQkJfQo+PiAtI2VuZGlmCj4+ICsJCXhlbm1lbV9yZXNl cnZhdGlvbl92YV9tYXBwaW5nX3VwZGF0ZSgxLCAmcGFnZSwgJmZyYW1lX2xpc3RbaV0pOwo+Cj4g Q2FuIHlvdSBtYWtlIGEgc2luZ2xlIGNhbGwgdG8geGVubWVtX3Jlc2VydmF0aW9uX3ZhX21hcHBp bmdfdXBkYXRlKHJjLAo+IC4uLik/IFlvdSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgcGFnZXMgYnV0 IHByZXN1bWFibGUgdGhleSBjYW4gYmUgcHV0Cj4gaW50byBhbiBhcnJheSAob3IgYSBsaXN0KS4g SW4gZmFjdCwgcGVyaGFwcyB3ZSBjYW4gaGF2ZQo+IGJhbGxvb25fcmV0cmlldmUoKSByZXR1cm4g YSBzZXQgb2YgcGFnZXMuClRoaXMgaXMgYWN0dWFsbHkgaG93IGl0IGlzIHVzZWQgbGF0ZXIgb24g Zm9yIGRtYS1idWYsIGJ1dCBJIGp1c3QgZGlkbid0IHdhbnQKdG8gYWx0ZXIgb3JpZ2luYWwgYmFs bG9vbiBjb2RlIHRvbyBtdWNoLCBidXQgdGhpcyBjYW4gYmUgZG9uZSwgaW4gb3JkZXIgCm9mIHNp bXBsaWNpdHk6CgoxLiBTaW1pbGFyIHRvIGZyYW1lX2xpc3QsIGUuZy4gc3RhdGljIGFycmF5IG9m IHN0cnVjdCBwYWdlKiBvZiBzaXplIApBUlJBWV9TSVpFKGZyYW1lX2xpc3QpOgptb3JlIHN0YXRp YyBtZW1vcnkgaXMgdXNlZCwgYnV0IG5vIGFsbG9jYXRpb25zCgoyLiBBbGxvY2F0ZWQgYXQgcnVu LXRpbWUgd2l0aCBrY2FsbG9jOiBhbGxvY2F0aW9uIGNhbiBmYWlsCgozLiBNYWtlIGJhbGxvb25f cmV0cmlldmUoKSByZXR1cm4gYSBzZXQgb2YgcGFnZXM6IHdpbGwgcmVxdWlyZSAKbGlzdC9hcnJh eSBhbGxvY2F0aW9uCmFuZCBoYW5kbGluZywgYWxsb2NhdGlvbiBtYXkgZmFpbCwgYmFsbG9vbl9y ZXRyaWV2ZSBwcm90b3R5cGUgY2hhbmdlCgpDb3VsZCB5b3UgcGxlYXNlIHRlbGwgd2hpY2ggb2Yg dGhlIGFib3ZlIHdpbGwgZml0IGJldHRlcj8KCj4KPgo+Cj4+ICAgCj4+ICAgCQkvKiBSZWxpbnF1 aXNoIHRoZSBwYWdlIGJhY2sgdG8gdGhlIGFsbG9jYXRvci4gKi8KPj4gICAJCWZyZWVfcmVzZXJ2 ZWRfcGFnZShwYWdlKTsKPj4gQEAgLTUzNSwxMSArNTAwLDYgQEAgc3RhdGljIGVudW0gYnBfc3Rh dGUgZGVjcmVhc2VfcmVzZXJ2YXRpb24odW5zaWduZWQgbG9uZyBucl9wYWdlcywgZ2ZwX3QgZ2Zw KQo+PiAgIAl1bnNpZ25lZCBsb25nIGk7Cj4+ICAgCXN0cnVjdCBwYWdlICpwYWdlLCAqdG1wOwo+ PiAgIAlpbnQgcmV0Owo+PiAtCXN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIHJlc2VydmF0 aW9uID0gewo+PiAtCQkuYWRkcmVzc19iaXRzID0gMCwKPj4gLQkJLmV4dGVudF9vcmRlciA9IEVY VEVOVF9PUkRFUiwKPj4gLQkJLmRvbWlkICAgICAgICA9IERPTUlEX1NFTEYKPj4gLQl9Owo+PiAg IAlMSVNUX0hFQUQocGFnZXMpOwo+PiAgIAo+PiAgIAlpZiAobnJfcGFnZXMgPiBBUlJBWV9TSVpF KGZyYW1lX2xpc3QpKQo+PiBAQCAtNTUzLDcgKzUxMyw3IEBAIHN0YXRpYyBlbnVtIGJwX3N0YXRl IGRlY3JlYXNlX3Jlc2VydmF0aW9uKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIGdmcF90IGdmcCkK Pj4gICAJCQlicmVhazsKPj4gICAJCX0KPj4gICAJCWFkanVzdF9tYW5hZ2VkX3BhZ2VfY291bnQo cGFnZSwgLTEpOwo+PiAtCQlzY3J1Yl9wYWdlKHBhZ2UpOwo+PiArCQl4ZW5tZW1fcmVzZXJ2YXRp b25fc2NydWJfcGFnZShwYWdlKTsKPj4gICAJCWxpc3RfYWRkKCZwYWdlLT5scnUsICZwYWdlcyk7 Cj4+ICAgCX0KPj4gICAKPj4gQEAgLTU3NSwyNSArNTM1LDggQEAgc3RhdGljIGVudW0gYnBfc3Rh dGUgZGVjcmVhc2VfcmVzZXJ2YXRpb24odW5zaWduZWQgbG9uZyBucl9wYWdlcywgZ2ZwX3QgZ2Zw KQo+PiAgIAkJLyogWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uIHJlcXVpcmVzIGEgR0ZOICov Cj4+ICAgCQlmcmFtZV9saXN0W2krK10gPSB4ZW5fcGFnZV90b19nZm4ocGFnZSk7Cj4+ICAgCj4+ IC0jaWZkZWYgQ09ORklHX1hFTl9IQVZFX1BWTU1VCj4+IC0JCS8qCj4+IC0JCSAqIFdlIGRvbid0 IHN1cHBvcnQgUFYgTU1VIHdoZW4gTGludXggYW5kIFhlbiBpcyB1c2luZwo+PiAtCQkgKiBkaWZm ZXJlbnQgcGFnZSBncmFudWxhcml0eS4KPj4gLQkJICovCj4+IC0JCUJVSUxEX0JVR19PTihYRU5f UEFHRV9TSVpFICE9IFBBR0VfU0laRSk7Cj4+IC0KPj4gLQkJaWYgKCF4ZW5fZmVhdHVyZShYRU5G RUFUX2F1dG9fdHJhbnNsYXRlZF9waHlzbWFwKSkgewo+PiAtCQkJdW5zaWduZWQgbG9uZyBwZm4g PSBwYWdlX3RvX3BmbihwYWdlKTsKPj4gKwkJeGVubWVtX3Jlc2VydmF0aW9uX3ZhX21hcHBpbmdf cmVzZXQoMSwgJnBhZ2UpOwo+Cj4gYW5kIGhlcmUgdG9vLgpzZWUgYWJvdmUKPgo+PiAgIAo+PiAt CQkJaWYgKCFQYWdlSGlnaE1lbShwYWdlKSkgewo+PiAtCQkJCXJldCA9IEhZUEVSVklTT1JfdXBk YXRlX3ZhX21hcHBpbmcoCj4+IC0JCQkJCQkodW5zaWduZWQgbG9uZylfX3ZhKHBmbiA8PCBQQUdF X1NISUZUKSwKPj4gLQkJCQkJCV9fcHRlX21hKDApLCAwKTsKPj4gLQkJCQlCVUdfT04ocmV0KTsK Pj4gLQkJCX0KPj4gLQkJCV9fc2V0X3BoeXNfdG9fbWFjaGluZShwZm4sIElOVkFMSURfUDJNX0VO VFJZKTsKPj4gLQkJfQo+PiAtI2VuZGlmCj4+ICAgCQlsaXN0X2RlbCgmcGFnZS0+bHJ1KTsKPj4g ICAKPj4gICAJCWJhbGxvb25fYXBwZW5kKHBhZ2UpOwo+PiBAQCAtNjAxLDkgKzU0NCw3IEBAIHN0 YXRpYyBlbnVtIGJwX3N0YXRlIGRlY3JlYXNlX3Jlc2VydmF0aW9uKHVuc2lnbmVkIGxvbmcgbnJf cGFnZXMsIGdmcF90IGdmcCkKPj4gICAKPj4gICAJZmx1c2hfdGxiX2FsbCgpOwo+PiAgIAo+PiAt CXNldF94ZW5fZ3Vlc3RfaGFuZGxlKHJlc2VydmF0aW9uLmV4dGVudF9zdGFydCwgZnJhbWVfbGlz dCk7Cj4+IC0JcmVzZXJ2YXRpb24ubnJfZXh0ZW50cyAgID0gbnJfcGFnZXM7Cj4+IC0JcmV0ID0g SFlQRVJWSVNPUl9tZW1vcnlfb3AoWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uLCAmcmVzZXJ2 YXRpb24pOwo+PiArCXJldCA9IHhlbm1lbV9yZXNlcnZhdGlvbl9kZWNyZWFzZShucl9wYWdlcywg ZnJhbWVfbGlzdCk7Cj4+ICAgCUJVR19PTihyZXQgIT0gbnJfcGFnZXMpOwo+PiAgIAo+PiAgIAli YWxsb29uX3N0YXRzLmN1cnJlbnRfcGFnZXMgLT0gbnJfcGFnZXM7Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3hlbi9tZW0tcmVzZXJ2YXRpb24uYyBiL2RyaXZlcnMveGVuL21lbS1yZXNlcnZhdGlv bi5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjk4ODJl NDMyNGY1Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy94ZW4vbWVtLXJlc2VydmF0 aW9uLmMKPj4gQEAgLTAsMCArMSwxMzQgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wIE9SIE1JVAo+Cj4gV2h5IGlzIHRoaXMgIk9SIE1JVCI/IFRoZSBvcmlnaW5hbCBm aWxlIHdhcyBsaWNlbnNlZCBHUEx2MiBvbmx5LgpXaWxsIGZpeCAtIEkgd2FzIG5vdCBzdXJlIGFi b3V0IHRoZSBsaWNlbnNlIHRvIGJlIHVzZWQgaGVyZSwgdGhhbmtzCj4KPj4gKwo+PiArLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgo+PiArICogWGVuIG1lbW9yeSByZXNlcnZhdGlvbiB1dGlsaXRpZXMu Cj4+ICsgKgo+PiArICogQ29weXJpZ2h0IChjKSAyMDAzLCBCIERyYWdvdmljCj4+ICsgKiBDb3B5 cmlnaHQgKGMpIDIwMDMtMjAwNCwgTSBXaWxsaWFtc29uLCBLIEZyYXNlcgo+PiArICogQ29weXJp Z2h0IChjKSAyMDA1IERhbiBNLiBTbWl0aCwgSUJNIENvcnBvcmF0aW9uCj4+ICsgKiBDb3B5cmln aHQgKGMpIDIwMTAgRGFuaWVsIEtpcGVyCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIE9sZWtz YW5kciBBbmRydXNoY2hlbmtvLCBFUEFNIFN5c3RlbXMgSW5jLgo+PiArICovCj4+ICsKPj4gKyNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ICsK Pj4gKyNpbmNsdWRlIDxhc20vdGxiLmg+Cj4+ICsjaW5jbHVkZSA8YXNtL3hlbi9oeXBlcmNhbGwu aD4KPj4gKwo+PiArI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvbWVtb3J5Lmg+Cj4+ICsjaW5jbHVk ZSA8eGVuL3BhZ2UuaD4KPj4gKwo+PiArLyoKPj4gKyAqIFVzZSBvbmUgZXh0ZW50IHBlciBQQUdF X1NJWkUgdG8gYXZvaWQgdG8gYnJlYWsgZG93biB0aGUgcGFnZSBpbnRvCj4+ICsgKiBtdWx0aXBs ZSBmcmFtZS4KPj4gKyAqLwo+PiArI2RlZmluZSBFWFRFTlRfT1JERVIgKGZscyhYRU5fUEZOX1BF Ul9QQUdFKSAtIDEpCj4+ICsKPj4gK3ZvaWQgeGVubWVtX3Jlc2VydmF0aW9uX3NjcnViX3BhZ2Uo c3RydWN0IHBhZ2UgKnBhZ2UpCj4+ICt7Cj4+ICsjaWZkZWYgQ09ORklHX1hFTl9TQ1JVQl9QQUdF Uwo+PiArCWNsZWFyX2hpZ2hwYWdlKHBhZ2UpOwo+PiArI2VuZGlmCj4+ICt9Cj4+ICtFWFBPUlRf U1lNQk9MKHhlbm1lbV9yZXNlcnZhdGlvbl9zY3J1Yl9wYWdlKTsKPj4gKwo+PiArdm9pZCB4ZW5t ZW1fcmVzZXJ2YXRpb25fdmFfbWFwcGluZ191cGRhdGUodW5zaWduZWQgbG9uZyBjb3VudCwKPj4g KwkJCQkJICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+PiArCQkJCQkgIHhlbl9wZm5fdCAqZnJhbWVz KQo+PiArewo+PiArI2lmZGVmIENPTkZJR19YRU5fSEFWRV9QVk1NVQo+PiArCWludCBpOwo+PiAr Cj4+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKPj4gKwkJc3RydWN0IHBhZ2UgKnBh Z2U7Cj4+ICsKPj4gKwkJcGFnZSA9IHBhZ2VzW2ldOwo+PiArCQlCVUdfT04ocGFnZSA9PSBOVUxM KTsKPj4gKwo+PiArCQkvKgo+PiArCQkgKiBXZSBkb24ndCBzdXBwb3J0IFBWIE1NVSB3aGVuIExp bnV4IGFuZCBYZW4gaXMgdXNpbmcKPj4gKwkJICogZGlmZmVyZW50IHBhZ2UgZ3JhbnVsYXJpdHku Cj4+ICsJCSAqLwo+PiArCQlCVUlMRF9CVUdfT04oWEVOX1BBR0VfU0laRSAhPSBQQUdFX1NJWkUp Owo+PiArCj4+ICsJCWlmICgheGVuX2ZlYXR1cmUoWEVORkVBVF9hdXRvX3RyYW5zbGF0ZWRfcGh5 c21hcCkpIHsKPj4gKwkJCXVuc2lnbmVkIGxvbmcgcGZuID0gcGFnZV90b19wZm4ocGFnZSk7Cj4+ ICsKPj4gKwkJCXNldF9waHlzX3RvX21hY2hpbmUocGZuLCBmcmFtZXNbaV0pOwo+PiArCj4+ICsJ CQkvKiBMaW5rIGJhY2sgaW50byB0aGUgcGFnZSB0YWJsZXMgaWYgbm90IGhpZ2htZW0uICovCj4+ ICsJCQlpZiAoIVBhZ2VIaWdoTWVtKHBhZ2UpKSB7Cj4+ICsJCQkJaW50IHJldDsKPj4gKwo+PiAr CQkJCXJldCA9IEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoCj4+ICsJCQkJCQkodW5zaWdu ZWQgbG9uZylfX3ZhKHBmbiA8PCBQQUdFX1NISUZUKSwKPj4gKwkJCQkJCW1mbl9wdGUoZnJhbWVz W2ldLCBQQUdFX0tFUk5FTCksCj4+ICsJCQkJCQkwKTsKPj4gKwkJCQlCVUdfT04ocmV0KTsKPj4g KwkJCX0KPj4gKwkJfQo+PiArCX0KPj4gKyNlbmRpZgo+PiArfQo+PiArRVhQT1JUX1NZTUJPTCh4 ZW5tZW1fcmVzZXJ2YXRpb25fdmFfbWFwcGluZ191cGRhdGUpOwo+PiArCj4+ICt2b2lkIHhlbm1l bV9yZXNlcnZhdGlvbl92YV9tYXBwaW5nX3Jlc2V0KHVuc2lnbmVkIGxvbmcgY291bnQsCj4+ICsJ CQkJCSBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQo+PiArewo+PiArI2lmZGVmIENPTkZJR19YRU5fSEFW RV9QVk1NVQo+PiArCWludCBpOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKysp IHsKPj4gKwkJLyoKPj4gKwkJICogV2UgZG9uJ3Qgc3VwcG9ydCBQViBNTVUgd2hlbiBMaW51eCBh bmQgWGVuIGlzIHVzaW5nCj4+ICsJCSAqIGRpZmZlcmVudCBwYWdlIGdyYW51bGFyaXR5Lgo+PiAr CQkgKi8KPj4gKwkJQlVJTERfQlVHX09OKFhFTl9QQUdFX1NJWkUgIT0gUEFHRV9TSVpFKTsKPj4g Kwo+PiArCQlpZiAoIXhlbl9mZWF0dXJlKFhFTkZFQVRfYXV0b190cmFuc2xhdGVkX3BoeXNtYXAp KSB7Cj4+ICsJCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHBhZ2VzW2ldOwo+PiArCQkJdW5zaWduZWQg bG9uZyBwZm4gPSBwYWdlX3RvX3BmbihwYWdlKTsKPj4gKwo+PiArCQkJaWYgKCFQYWdlSGlnaE1l bShwYWdlKSkgewo+PiArCQkJCWludCByZXQ7Cj4+ICsKPj4gKwkJCQlyZXQgPSBIWVBFUlZJU09S X3VwZGF0ZV92YV9tYXBwaW5nKAo+PiArCQkJCQkJKHVuc2lnbmVkIGxvbmcpX192YShwZm4gPDwg UEFHRV9TSElGVCksCj4+ICsJCQkJCQlfX3B0ZV9tYSgwKSwgMCk7Cj4+ICsJCQkJQlVHX09OKHJl dCk7Cj4+ICsJCQl9Cj4+ICsJCQlfX3NldF9waHlzX3RvX21hY2hpbmUocGZuLCBJTlZBTElEX1Ay TV9FTlRSWSk7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsjZW5kaWYKPj4gK30KPj4gK0VYUE9SVF9TWU1C T0woeGVubWVtX3Jlc2VydmF0aW9uX3ZhX21hcHBpbmdfcmVzZXQpOwo+PiArCj4+ICtpbnQgeGVu bWVtX3Jlc2VydmF0aW9uX2luY3JlYXNlKGludCBjb3VudCwgeGVuX3Bmbl90ICpmcmFtZXMpCj4+ ICt7Cj4+ICsJc3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gcmVzZXJ2YXRpb24gPSB7Cj4+ ICsJCS5hZGRyZXNzX2JpdHMgPSAwLAo+PiArCQkuZXh0ZW50X29yZGVyID0gRVhURU5UX09SREVS LAo+PiArCQkuZG9taWQgICAgICAgID0gRE9NSURfU0VMRgo+PiArCX07Cj4+ICsKPj4gKwlzZXRf eGVuX2d1ZXN0X2hhbmRsZShyZXNlcnZhdGlvbi5leHRlbnRfc3RhcnQsIGZyYW1lcyk7Cj4+ICsJ cmVzZXJ2YXRpb24ubnJfZXh0ZW50cyA9IGNvdW50Owo+PiArCXJldHVybiBIWVBFUlZJU09SX21l bW9yeV9vcChYRU5NRU1fcG9wdWxhdGVfcGh5c21hcCwgJnJlc2VydmF0aW9uKTsKPj4gK30KPj4g K0VYUE9SVF9TWU1CT0woeGVubWVtX3Jlc2VydmF0aW9uX2luY3JlYXNlKTsKPj4gKwo+PiAraW50 IHhlbm1lbV9yZXNlcnZhdGlvbl9kZWNyZWFzZShpbnQgY291bnQsIHhlbl9wZm5fdCAqZnJhbWVz KQo+PiArewo+PiArCXN0cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIHJlc2VydmF0aW9uID0g ewo+PiArCQkuYWRkcmVzc19iaXRzID0gMCwKPj4gKwkJLmV4dGVudF9vcmRlciA9IEVYVEVOVF9P UkRFUiwKPj4gKwkJLmRvbWlkICAgICAgICA9IERPTUlEX1NFTEYKPj4gKwl9Owo+PiArCj4+ICsJ c2V0X3hlbl9ndWVzdF9oYW5kbGUocmVzZXJ2YXRpb24uZXh0ZW50X3N0YXJ0LCBmcmFtZXMpOwo+ PiArCXJlc2VydmF0aW9uLm5yX2V4dGVudHMgPSBjb3VudDsKPj4gKwlyZXR1cm4gSFlQRVJWSVNP Ul9tZW1vcnlfb3AoWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uLCAmcmVzZXJ2YXRpb24pOwo+ PiArfQo+PiArRVhQT1JUX1NZTUJPTCh4ZW5tZW1fcmVzZXJ2YXRpb25fZGVjcmVhc2UpOwo+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vbWVtX3Jlc2VydmF0aW9uLmggYi9pbmNsdWRlL3hlbi9t ZW1fcmVzZXJ2YXRpb24uaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAw MDAwMDAuLjkzMDZkOWI4NzQzYwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2luY2x1ZGUveGVu L21lbV9yZXNlcnZhdGlvbi5oCj4+IEBAIC0wLDAgKzEsMjkgQEAKPj4gKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVCAqLwo+IGFuZCBoZXJlIHRvby4Kd2lsbCBmaXgK Pgo+IC1ib3Jpcwo+ClRoYW5rIHlvdSwKT2xla3NhbmRyCj4+ICsKPj4gKy8qCj4+ICsgKiBYZW4g bWVtb3J5IHJlc2VydmF0aW9uIHV0aWxpdGllcy4KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMDMsIEIgRHJhZ292aWMKPj4gKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBNIFdpbGxp YW1zb24sIEsgRnJhc2VyCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDUgRGFuIE0uIFNtaXRoLCBJ Qk0gQ29ycG9yYXRpb24KPj4gKyAqIENvcHlyaWdodCAoYykgMjAxMCBEYW5pZWwgS2lwZXIKPj4g KyAqIENvcHlyaWdodCAoYykgMjAxOCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28sIEVQQU0gU3lz dGVtcyBJbmMuCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBfWEVOTUVNX1JFU0VSVkFUSU9OX0gK Pj4gKyNkZWZpbmUgX1hFTk1FTV9SRVNFUlZBVElPTl9ICj4+ICsKPj4gK3ZvaWQgeGVubWVtX3Jl c2VydmF0aW9uX3NjcnViX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOwo+PiArCj4+ICt2b2lkIHhl bm1lbV9yZXNlcnZhdGlvbl92YV9tYXBwaW5nX3VwZGF0ZSh1bnNpZ25lZCBsb25nIGNvdW50LAo+ PiArCQkJCQkgIHN0cnVjdCBwYWdlICoqcGFnZXMsCj4+ICsJCQkJCSAgeGVuX3Bmbl90ICpmcmFt ZXMpOwo+PiArCj4+ICt2b2lkIHhlbm1lbV9yZXNlcnZhdGlvbl92YV9tYXBwaW5nX3Jlc2V0KHVu c2lnbmVkIGxvbmcgY291bnQsCj4+ICsJCQkJCSBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsKPj4gKwo+ PiAraW50IHhlbm1lbV9yZXNlcnZhdGlvbl9pbmNyZWFzZShpbnQgY291bnQsIHhlbl9wZm5fdCAq ZnJhbWVzKTsKPj4gKwo+PiAraW50IHhlbm1lbV9yZXNlcnZhdGlvbl9kZWNyZWFzZShpbnQgY291 bnQsIHhlbl9wZm5fdCAqZnJhbWVzKTsKPj4gKwo+PiArI2VuZGlmCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK