From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tamas K Lengyel Subject: Re: [PATCH 4/4] vm_event: Add support for multi-page ring buffer Date: Thu, 13 Sep 2018 10:42:36 -0600 Message-ID: References: <145fcbfb13ae8027df5fefdaa88d537d2d976b7b.1536850239.git.ppircalabu@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g0Ui5-0001Sr-H2 for xen-devel@lists.xenproject.org; Thu, 13 Sep 2018 16:43:17 +0000 Received: by mail-ed1-f66.google.com with SMTP id s10-v6so5147186edb.11 for ; Thu, 13 Sep 2018 09:43:16 -0700 (PDT) Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com. [209.85.221.52]) by smtp.gmail.com with ESMTPSA id m42-v6sm1893027edd.46.2018.09.13.09.43.13 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Sep 2018 09:43:14 -0700 (PDT) Received: by mail-wr1-f52.google.com with SMTP id v90-v6so6876300wrc.0 for ; Thu, 13 Sep 2018 09:43:13 -0700 (PDT) In-Reply-To: <145fcbfb13ae8027df5fefdaa88d537d2d976b7b.1536850239.git.ppircalabu@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Petre Pircalabu Cc: Stefano Stabellini , Wei Liu , Razvan Cojocaru , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Xen-devel List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBTZXAgMTMsIDIwMTggYXQgOTowMiBBTSBQZXRyZSBQaXJjYWxhYnUKPHBwaXJjYWxh YnVAYml0ZGVmZW5kZXIuY29tPiB3cm90ZToKPgo+IEluIGhpZ2ggdGhyb3VnaHB1dCBpbnRyb3Nw ZWN0aW9uIHNjZW5hcmlvcyB3aGVyZSBsb3RzIG9mIG1vbml0b3IKPiB2bV9ldmVudHMgYXJlIGdl bmVyYXRlZCwgdGhlIHJpbmcgYnVmZmVyIGNhbiBmaWxsIHVwIGJlZm9yZSB0aGUgbW9uaXRvcgo+ IGFwcGxpY2F0aW9uIGdldHMgYSBjaGFuY2UgdG8gaGFuZGxlIGFsbCB0aGUgcmVxdWVzdHMgdGh1 cyBibG9ja2luZwo+IG90aGVyIHZjcHVzIHdoaWNoIHdpbGwgaGF2ZSB0byB3YWl0IGZvciBhIHNs b3QgdG8gYmVjb21lIGF2YWlsYWJsZS4KPgo+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBl eHRlbmRpbmcgdGhlIHJpbmcgYnVmZmVyIGJ5IGFsbG9jYXRpbmcgYQo+IG51bWJlciBvZiBwYWdl cyBmcm9tIGRvbWhlYXAgYW5kIG1hcHBpbmcgdGhlbSB0byB0aGUgbW9uaXRvcgo+IGFwcGxpY2F0 aW9uJ3MgZG9tYWluIHVzaW5nIHRoZSBmb3JlaWdubWVtb3J5X21hcF9yZXNvdXJjZSBpbnRlcmZh Y2UuCj4gVW5saWtlIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmluZyBidWZmZXIg cGFnZXMgYXJlIG5vdCBwYXJ0IG9mCj4gdGhlIGludHJvc3BlY3RlZCBEb21VLCBzbyB0aGV5IHdp bGwgbm90IGJlIHJlY2xhaW1lZCB3aGVuIHRoZSBtb25pdG9yIGlzCj4gZGlzYWJsZWQuCj4KPiBT aWduZWQtb2ZmLWJ5OiBQZXRyZSBQaXJjYWxhYnUgPHBwaXJjYWxhYnVAYml0ZGVmZW5kZXIuY29t PgoKVGhhbmtzIGZvciB0aGlzIGFkZGl0aW9uLCBpdCBoYXMgYmVlbiBvbiB0aGUgVE9ETyBmb3Ig YSBsb25nIHdoaWxlCm5vdy4gQ291bGQgeW91IGFsc28gcGxlYXNlIHB1c2ggdGhlIHBhdGNoZXMg YXMgYSBnaXQgYnJhbmNoIHNvbWV3aGVyZT8KCj4gLS0tCj4gIHRvb2xzL2xpYnhjL2luY2x1ZGUv eGVuY3RybC5oICAgICAgIHwgICAyICsKPiAgdG9vbHMvbGlieGMveGNfbW9uaXRvci5jICAgICAg ICAgICAgfCAgIDcgKwo+ICB0b29scy9saWJ4Yy94Y19wcml2YXRlLmggICAgICAgICAgICB8ICAg MyArCj4gIHRvb2xzL2xpYnhjL3hjX3ZtX2V2ZW50LmMgICAgICAgICAgIHwgIDQ5ICsrKysrKysK PiAgdG9vbHMvdGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMgfCAgMzMgKysrLS0KPiAgeGVu L2FyY2gveDg2L2RvbWFpbl9wYWdlLmMgICAgICAgICAgfCAgIDMgKy0KPiAgeGVuL2FyY2gveDg2 L21tLmMgICAgICAgICAgICAgICAgICAgfCAgMTQgKysKPiAgeGVuL2NvbW1vbi92bV9ldmVudC5j ICAgICAgICAgICAgICAgfCAyNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t Cj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCAgICAgICAgIHwgICAxICsKPiAgeGVuL2lu Y2x1ZGUvcHVibGljL21lbW9yeS5oICAgICAgICAgfCAgIDEgKwo+ICB4ZW4vaW5jbHVkZS94ZW4v c2NoZWQuaCAgICAgICAgICAgICB8ICAgNSArLQo+ICB4ZW4vaW5jbHVkZS94ZW4vdm1fZXZlbnQu aCAgICAgICAgICB8ICAgNCArCj4gIDEyIGZpbGVzIGNoYW5nZWQsIDMwNSBpbnNlcnRpb25zKCsp LCA3NSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hl bmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCj4gaW5kZXggYmI3NWJjYy4u NGY5MWVlOSAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAo+ICsr KyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCj4gQEAgLTIwMDUsNiArMjAwNSw4IEBA IGludCB4Y19nZXRfbWVtX2FjY2Vzcyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWlu X2lkLAo+ICAgKiBDYWxsZXIgaGFzIHRvIHVubWFwIHRoaXMgcGFnZSB3aGVuIGRvbmUuCj4gICAq Lwo+ICB2b2lkICp4Y19tb25pdG9yX2VuYWJsZSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qg ZG9tYWluX2lkLCB1aW50MzJfdCAqcG9ydCk7Cj4gK3ZvaWQgKnhjX21vbml0b3JfZW5hYmxlX2V4 KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBvcmRlciwgdWludDMyX3QgKnBvcnQpOwoKSSBkb24ndCB0aGluayB0 aGVyZSBpcyB2YWx1ZSBpbiBrZWVwaW5nIGJvdGggdmVyc2lvbiBvZiB0aGUgQVBJCmFyb3VuZC4g QXMgbGlieGMgaXMgbm90IGNvbnNpZGVyZWQgdG8gYmUgYSBzdGFibGUgQVBJIGV4dGVuZGluZyB0 aGUKZXhpc3RpbmcgQVBJIHdvdWxkIGJlIHRoZSByb3V0ZSBJIHdvdWxkIHByZWZlci4gQWxzbywg cGVyaGFwcyBpbnN0ZWFkCm9mICJvcmRlciIgbmFtZSB0aGUgaW5wdXQgdmFyaWFibGUgInBhZ2Vf Y291bnQiIHRvIG1ha2UgaXQgbW9yZSBjbGVhcgp3aGF0IGl0J3MgYWJvdXQuCgo+ICBpbnQgeGNf bW9uaXRvcl9kaXNhYmxlKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQpOwo+ ICBpbnQgeGNfbW9uaXRvcl9yZXN1bWUoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWFp bl9pZCk7Cj4gIC8qCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX21vbml0b3IuYyBiL3Rv b2xzL2xpYnhjL3hjX21vbml0b3IuYwo+IGluZGV4IDE1ZTZhMGUuLjUxODg4MzUgMTAwNjQ0Cj4g LS0tIGEvdG9vbHMvbGlieGMveGNfbW9uaXRvci5jCj4gKysrIGIvdG9vbHMvbGlieGMveGNfbW9u aXRvci5jCj4gQEAgLTI4LDYgKzI4LDEzIEBAIHZvaWQgKnhjX21vbml0b3JfZW5hYmxlKHhjX2lu dGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsIHVpbnQzMl90ICpwb3J0KQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0KTsKPiAgfQo+Cj4gK3ZvaWQgKnhjX21vbml0 b3JfZW5hYmxlX2V4KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsIGludCBv cmRlciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnBvcnQpCj4gK3sK PiArICAgIHJldHVybiB4Y192bV9ldmVudF9lbmFibGVfZXgoeGNoLCBkb21haW5faWQsIFhFTl9W TV9FVkVOVF9UWVBFX01PTklUT1IsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9yZGVyLCBwb3J0KTsKPiArfQo+ICsKPiAgaW50IHhjX21vbml0b3JfZGlzYWJsZSh4Y19pbnRl cmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkKQo+ICB7Cj4gICAgICByZXR1cm4geGNfdm1f ZXZlbnRfY29udHJvbCh4Y2gsIGRvbWFpbl9pZCwKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMv eGNfcHJpdmF0ZS5oIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCj4gaW5kZXggYmUyMjk4Ni4u MDNkOTQ2MCAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKPiArKysgYi90 b29scy9saWJ4Yy94Y19wcml2YXRlLmgKPiBAQCAtNDM2LDYgKzQzNiw5IEBAIGludCB4Y192bV9l dmVudF9jb250cm9sKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsIHVuc2ln bmVkIGludCBvcCwKPiAgdm9pZCAqeGNfdm1fZXZlbnRfZW5hYmxlKHhjX2ludGVyZmFjZSAqeGNo LCB1aW50MzJfdCBkb21haW5faWQsIGludCB0eXBlLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgKnBvcnQpOwo+Cj4gK3ZvaWQgKnhjX3ZtX2V2ZW50X2VuYWJsZV9leCh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBpbnQgdHlwZSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBvcmRlciwgdWludDMyX3QgKnBvcnQpOwo+ICsKPiAgaW50 IGRvX2RtX29wKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwgdW5zaWduZWQgaW50 IG5yX2J1ZnMsIC4uLik7Cj4KPiAgI2VuZGlmIC8qIF9fWENfUFJJVkFURV9IX18gKi8KPiBkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfdm1fZXZlbnQuYyBiL3Rvb2xzL2xpYnhjL3hjX3ZtX2V2 ZW50LmMKPiBpbmRleCBkZTM3Y2E1Li4yMTZiYmUyIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhj L3hjX3ZtX2V2ZW50LmMKPiArKysgYi90b29scy9saWJ4Yy94Y192bV9ldmVudC5jCj4gQEAgLTIx LDYgKzIxLDcgQEAKPiAgICovCj4KPiAgI2luY2x1ZGUgInhjX3ByaXZhdGUuaCIKPiArI2luY2x1 ZGUgInhlbmZvcmVpZ25tZW1vcnkuaCIKPgo+ICBpbnQgeGNfdm1fZXZlbnRfY29udHJvbCh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCB1bnNpZ25lZCBpbnQgb3AsCj4gICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtb2RlLCB1aW50MzJfdCAqcG9ydCkK PiBAQCAtMTg0LDYgKzE4NSw1NCBAQCB2b2lkICp4Y192bV9ldmVudF9lbmFibGUoeGNfaW50ZXJm YWNlICp4Y2gsIHVpbnQzMl90IGRvbWFpbl9pZCwgaW50IHR5cGUsCj4gICAgICByZXR1cm4gcmlu Z19wYWdlOwo+ICB9Cj4KPiArdm9pZCAqeGNfdm1fZXZlbnRfZW5hYmxlX2V4KHhjX2ludGVyZmFj ZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsIGludCB0eXBlLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IG9yZGVyLCB1aW50MzJfdCAqcG9ydCkKPiArewo+ICsgICAgeGVuZm9y ZWlnbm1lbW9yeV9yZXNvdXJjZV9oYW5kbGUgKmZyZXMgPSBOVUxMOwo+ICsgICAgaW50IHNhdmVk X2Vycm5vOwo+ICsgICAgdm9pZCAqcmluZ19idWZmZXIgPSBOVUxMOwo+ICsKPiArICAgIGlmICgg IXBvcnQgKQo+ICsgICAgewo+ICsgICAgICAgIGVycm5vID0gRUlOVkFMOwo+ICsgICAgICAgIHJl dHVybiBOVUxMOwo+ICsgICAgfQo+ICsKPiArICAgIC8qIFBhdXNlIHRoZSBkb21haW4gZm9yIHJp bmcgcGFnZSBzZXR1cCAqLwo+ICsgICAgaWYgKCB4Y19kb21haW5fcGF1c2UoeGNoLCBkb21haW5f aWQpICkKPiArICAgIHsKPiArICAgICAgICBQRVJST1IoIlVuYWJsZSB0byBwYXVzZSBkb21haW5c biIpOwo+ICsgICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgfQo+ICsKPiArICAgIGZyZXMgPSB4 ZW5mb3JlaWdubWVtb3J5X21hcF9yZXNvdXJjZSh4Y2gtPmZtZW0sIGRvbWFpbl9pZCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5NRU1fcmVzb3VyY2Vfdm1f ZXZlbnQsIHR5cGUsIDAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3JkZXIsICZyaW5nX2J1ZmZlciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCAwKTsKPiArICAgIGlmICggIWZyZXMg KQo+ICsgICAgewo+ICsgICAgICAgIFBFUlJPUigiVW5hYmxlIHRvIG1hcCB2bV9ldmVudCByaW5n IHBhZ2VzIHJlc291cmNlXG4iKTsKPiArICAgICAgICBnb3RvIG91dDsKPiArICAgIH0KPiArCj4g KyAgICBpZiAoIHhjX3ZtX2V2ZW50X2NvbnRyb2woeGNoLCBkb21haW5faWQsIFhFTl9WTV9FVkVO VF9HRVRfUE9SVCwgdHlwZSwgcG9ydCkgKQo+ICsgICAgICAgIFBFUlJPUigiVW5hYmxlIHRvIGdl dCB2bV9ldmVudCBjaGFubmVsIHBvcnRcbiIpOwo+ICsKPiArb3V0Ogo+ICsgICAgc2F2ZWRfZXJy bm8gPSBlcnJubzsKPiArICAgIGlmICggeGNfZG9tYWluX3VucGF1c2UoeGNoLCBkb21haW5faWQp ICE9IDAgKQo+ICsgICAgewo+ICsgICAgICAgIGlmIChmcmVzKQo+ICsgICAgICAgICAgICBzYXZl ZF9lcnJubyA9IGVycm5vOwo+ICsgICAgICAgIFBFUlJPUigiVW5hYmxlIHRvIHVucGF1c2UgZG9t YWluIik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZnJlZShmcmVzKTsKPiArICAgIGVycm5vID0gc2F2 ZWRfZXJybm87Cj4gKyAgICByZXR1cm4gcmluZ19idWZmZXI7Cj4gK30KPiArCj4gKwo+ICAvKgo+ ICAgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gICAqIG1vZGU6IEMKPiBkaWZmIC0tZ2l0IGEvdG9vbHMv dGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMgYi90b29scy90ZXN0cy94ZW4tYWNjZXNzL3hl bi1hY2Nlc3MuYwo+IGluZGV4IDZhYWVlMTYuLmY0YzRlZGEgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMv dGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMKPiArKysgYi90b29scy90ZXN0cy94ZW4tYWNj ZXNzL3hlbi1hY2Nlc3MuYwo+IEBAIC02OCw3ICs2OCw4IEBAIHR5cGVkZWYgc3RydWN0IHZtX2V2 ZW50IHsKPiAgICAgIGludCBwb3J0Owo+ICAgICAgdm1fZXZlbnRfYmFja19yaW5nX3QgYmFja19y aW5nOwo+ICAgICAgdWludDMyX3QgZXZ0Y2huX3BvcnQ7Cj4gLSAgICB2b2lkICpyaW5nX3BhZ2U7 Cj4gKyAgICB2b2lkICpyaW5nX2J1ZmZlcjsKPiArICAgIHVuc2lnbmVkIGludCByaW5nX3BhZ2Vf Y291bnQ7Cj4gIH0gdm1fZXZlbnRfdDsKPgo+ICB0eXBlZGVmIHN0cnVjdCB4ZW5hY2Nlc3Mgewo+ IEBAIC0xMzYsOCArMTM3LDkgQEAgaW50IHhlbmFjY2Vzc190ZWFyZG93bih4Y19pbnRlcmZhY2Ug KnhjaCwgeGVuYWNjZXNzX3QgKnhlbmFjY2VzcykKPiAgICAgICAgICByZXR1cm4gMDsKPgo+ICAg ICAgLyogVGVhciBkb3duIGRvbWFpbiB4ZW5hY2Nlc3MgaW4gWGVuICovCj4gLSAgICBpZiAoIHhl bmFjY2Vzcy0+dm1fZXZlbnQucmluZ19wYWdlICkKPiAtICAgICAgICBtdW5tYXAoeGVuYWNjZXNz LT52bV9ldmVudC5yaW5nX3BhZ2UsIFhDX1BBR0VfU0laRSk7Cj4gKyAgICBpZiAoIHhlbmFjY2Vz cy0+dm1fZXZlbnQucmluZ19idWZmZXIgKQo+ICsgICAgICAgIG11bm1hcCh4ZW5hY2Nlc3MtPnZt X2V2ZW50LnJpbmdfYnVmZmVyLAo+ICsgICAgICAgICAgICAgICB4ZW5hY2Nlc3MtPnZtX2V2ZW50 LnJpbmdfcGFnZV9jb3VudCAqIFhDX1BBR0VfU0laRSApOwo+Cj4gICAgICBpZiAoIG1lbV9hY2Nl c3NfZW5hYmxlICkKPiAgICAgIHsKPiBAQCAtMjEwLDEyICsyMTIsMjUgQEAgeGVuYWNjZXNzX3Qg KnhlbmFjY2Vzc19pbml0KHhjX2ludGVyZmFjZSAqKnhjaF9yLCBkb21pZF90IGRvbWFpbl9pZCkK PiAgICAgIC8qIFNldCBkb21haW4gaWQgKi8KPiAgICAgIHhlbmFjY2Vzcy0+dm1fZXZlbnQuZG9t YWluX2lkID0gZG9tYWluX2lkOwo+Cj4gLSAgICAvKiBFbmFibGUgbWVtX2FjY2VzcyAqLwo+IC0g ICAgeGVuYWNjZXNzLT52bV9ldmVudC5yaW5nX3BhZ2UgPQo+ICsgICAgLyogUmluZyBidWZmZXIg cGFnZSBjb3VudCAqLwo+ICsgICAgeGVuYWNjZXNzLT52bV9ldmVudC5yaW5nX3BhZ2VfY291bnQg PSAyOwo+ICsKPiArICAgIHhlbmFjY2Vzcy0+dm1fZXZlbnQucmluZ19idWZmZXIgPSB4Y19tb25p dG9yX2VuYWJsZV9leCgKPiArICAgICAgICB4ZW5hY2Nlc3MtPnhjX2hhbmRsZSwKPiArICAgICAg ICB4ZW5hY2Nlc3MtPnZtX2V2ZW50LmRvbWFpbl9pZCwKPiArICAgICAgICB4ZW5hY2Nlc3MtPnZt X2V2ZW50LnJpbmdfcGFnZV9jb3VudCwKPiArICAgICAgICAmeGVuYWNjZXNzLT52bV9ldmVudC5l dnRjaG5fcG9ydCk7Cj4gKwo+ICsgICAgaWYgKHhlbmFjY2Vzcy0+dm1fZXZlbnQucmluZ19idWZm ZXIgPT0gTlVMTCAmJiBlcnJubyA9PSBFT1BOT1RTVVBQKQoKSG93IHdvdWxkIHRoaXMgc2l0dWF0 aW9uIGV2ZXIgYXJpc2U/IElmIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgeW91CmNhbid0IHNldHVw IG11bHRpLXBhZ2UgcmluZ3MsIHBlcmhhcHMgYWRkaW5nIGEgaHlwZXJjYWxsIHRoYXQgd291bGQK dGVsbCB0aGUgdXNlciBob3cgbWFueSBwYWdlcyBhcmUgbWF4IGF2YWlsYWJsZSBmb3IgdGhlIHJp bmcgaXMgdGhlCmJldHRlciByb3V0ZS4gVGhpcyBqdXN0IHNlZW1zIGxpa2UgZ3Vlc3Npbmcgcmln aHQgbm93LgoKPiArICAgIHsKPiArICAgICAgICB4ZW5hY2Nlc3MtPnZtX2V2ZW50LnJpbmdfcGFn ZV9jb3VudCA9IDE7Cj4gKyAgICAgICAgeGVuYWNjZXNzLT52bV9ldmVudC5yaW5nX2J1ZmZlciA9 Cj4gICAgICAgICAgICAgIHhjX21vbml0b3JfZW5hYmxlKHhlbmFjY2Vzcy0+eGNfaGFuZGxlLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5hY2Nlc3MtPnZtX2V2ZW50LmRvbWFp bl9pZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhlbmFjY2Vzcy0+dm1fZXZl bnQuZXZ0Y2huX3BvcnQpOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==