From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulina Szubarczyk Subject: Re: [PATCH v3 2/2] qdisk - hw/block/xen_disk: grant copy implementation Date: Tue, 19 Jul 2016 12:51:43 +0200 Message-ID: <578E063F.8010807@gmail.com> References: <1466584733-19459-1-git-send-email-paulinaszubarczyk@gmail.com> <1466584733-19459-3-git-send-email-paulinaszubarczyk@gmail.com> <20160715165527.GN1729@perard.uk.xensource.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 ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bPScy-0004ki-W3 for xen-devel@lists.xenproject.org; Tue, 19 Jul 2016 10:51:53 +0000 Received: by mail-lf0-f65.google.com with SMTP id l89so934031lfi.2 for ; Tue, 19 Jul 2016 03:51:51 -0700 (PDT) In-Reply-To: <20160715165527.GN1729@perard.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Anthony PERARD Cc: sstabellini@kernel.org, wei.liu2@citrix.com, ian.jackson@eu.citrix.com, david.vrabel@citrix.com, xen-devel@lists.xenproject.org, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org CgpPbiAwNy8xNS8yMDE2IDA2OjU1IFBNLCBBbnRob255IFBFUkFSRCB3cm90ZToKPiBPbiBXZWQs IEp1biAyMiwgMjAxNiBhdCAxMDozODo1M0FNICswMjAwLCBQYXVsaW5hIFN6dWJhcmN6eWsgd3Jv dGU6Cj4+IENvcHkgZGF0YSBvcGVyYXRlZCBvbiBkdXJpbmcgcmVxdWVzdCBmcm9tL3RvIGxvY2Fs IGJ1ZmZlcnMgdG8vZnJvbQo+PiB0aGUgZ3JhbnQgcmVmZXJlbmNlcy4KPj4KPj4gQmVmb3JlIGdy YW50IGNvcHkgb3BlcmF0aW9uIGxvY2FsIGJ1ZmZlcnMgbXVzdCBiZSBhbGxvY2F0ZWQgd2hhdCBp cwo+PiBkb25lIGJ5IGNhbGxpbmcgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMuIEZvciB0aGUgJ3Jl YWQnIG9wZXJhdGlvbiwKPj4gZmlyc3QsIHRoZSBxZW11IGRldmljZSBpbnZva2VzIHRoZSByZWFk IG9wZXJhdGlvbiBvbiBsb2NhbCBidWZmZXJzCj4+IGFuZCBvbiB0aGUgY29tcGxldGlvbiBncmFu dCBjb3B5IGlzIGNhbGxlZCBhbmQgYnVmZmVycyBhcmUgZnJlZWQuCj4+IEZvciB0aGUgJ3dyaXRl JyBvcGVyYXRpb24gZ3JhbnQgY29weSBpcyBwZXJmb3JtZWQgYmVmb3JlIGludm9raW5nCj4+IHdy aXRlIGJ5IHFlbXUgZGV2aWNlLgo+Pgo+PiBBIG5ldyB2YWx1ZSAnZmVhdHVyZV9ncmFudF9jb3B5 JyBpcyBhZGRlZCB0byByZWNvZ25pemUgd2hlbiB0aGUKPj4gZ3JhbnQgY29weSBvcGVyYXRpb24g aXMgc3VwcG9ydGVkIGJ5IGEgZ3Vlc3QuCj4+IFRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiAnaW9y ZXFfcnVuaW9fcWVtdV9haW8nIGlzIG1vdmVkIHRvCj4+ICdpb3JlcV9ydW5pb19xZW11X2Fpb19i bGsnIGFuZCBpbiB0aGUgJ2lvcmVxX3J1bmlvX3FlbXVfYWlvJyBkZXBlbmRpbmcKPj4gb24gdGhl IHN1cHBvcnQgZm9yIGdyYW50IGNvcHkgYWNjb3JkaW5nIGNoZWNrcywgaW5pdGlhbGl6YXRpb24s IGdyYW50Cj4+IG9wZXJhdGlvbiBhcmUgbWFkZSwgdGhlbiB0aGUgJ2lvcmVxX3J1bmlvX3FlbXVf YWlvX2JsaycgZnVuY3Rpb24gaXMKPj4gY2FsbGVkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBQYXVs aW5hIFN6dWJhcmN6eWsgPHBhdWxpbmFzenViYXJjenlrQGdtYWlsLmNvbT4KPgo+PiBkaWZmIC0t Z2l0IGEvaHcvYmxvY2sveGVuX2Rpc2suYyBiL2h3L2Jsb2NrL3hlbl9kaXNrLmMKPj4gaW5kZXgg MzdlMTRkMS4uNGVjYTA2YSAxMDA2NDQKPj4gLS0tIGEvaHcvYmxvY2sveGVuX2Rpc2suYwo+PiAr KysgYi9ody9ibG9jay94ZW5fZGlzay5jCj4+IEBAIC01MDAsNiArNTAzLDk5IEBAIHN0YXRpYyBp bnQgaW9yZXFfbWFwKHN0cnVjdCBpb3JlcSAqaW9yZXEpCj4+ICAgICAgIHJldHVybiAwOwo+PiAg IH0KPj4KPj4gK3N0YXRpYyB2b2lkKiBnZXRfYnVmZmVyKGludCBjb3VudCkKPj4gK3sKPj4gKyAg ICByZXR1cm4geGNfbWVtYWxpZ24oeGVuX3hjLCBYQ19QQUdFX1NJWkUsIGNvdW50KlhDX1BBR0Vf U0laRSk7Cj4KPiBJbnN0ZWFkIG9mIHhjX21lbWFsaWduLCBJIHRoaW5rIHlvdSBuZWVkIHRvIGNh bGwgcWVtdV9tZW1hbGlnbigpIGhlcmUuCj4gSGF2ZSBhIGxvb2sgYXQgdGhlIGZpbGUgSEFDS0lO RywgdGhlIHNlY3Rpb24gJzMuIExvdyBsZXZlbCBtZW1vcnkKPiBtYW5hZ2VtZW50Jy4gQWxzbywg eW91IHByb2JhYmx5IGRvIG5vdCBuZWVkIGFuIHRoZSBleHRyYSBmdW5jdGlvbgo+IGdldF9idWZm ZXIoKSBhbmQgY2FuIGNhbGwgcWVtdV9tZW1hbGlnbigpIGRpcmVjdGx5IGluCj4gaW9yZXFfaW5p dF9jb3B5X2J1ZmZlcnMoKS4KPgoKT2ssIEkgd2lsbCBjaGFuZ2VkIHRoYXQuCgo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgdm9pZCBmcmVlX2J1ZmZlcnMoc3RydWN0IGlvcmVxICppb3JlcSkKPj4gK3sK Pj4gKyAgICBpbnQgaTsKPj4gKwo+PiArICAgIGZvciAoaSA9IDA7IGkgPCBpb3JlcS0+di5uaW92 OyBpKyspIHsKPj4gKyAgICAgICAgaW9yZXEtPnBhZ2VbaV0gPSBOVUxMOwo+PiArICAgIH0KPj4g Kwo+PiArICAgIGZyZWUoaW9yZXEtPnBhZ2VzKTsKPgo+IFdpdGggdGhlIHVzZSBvZiBxZW11X21l bWFsaWduLCB0aGlzIHdvdWxkIG5lZWQgdG8gYmUgcWVtdV92ZnJlZSgpLgo+Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyBpbnQgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMoc3RydWN0IGlvcmVxICppb3Jl cSkgewo+PiArICAgIGludCBpOwo+PiArCj4+ICsgICAgaWYgKGlvcmVxLT52Lm5pb3YgPT0gMCkg ewo+PiArICAgICAgICByZXR1cm4gMDsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBpb3JlcS0+cGFn ZXMgPSBnZXRfYnVmZmVyKGlvcmVxLT52Lm5pb3YpOwo+PiArICAgIGlmICghaW9yZXEtPnBhZ2Vz KSB7Cj4+ICsgICAgICAgIHJldHVybiAtMTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBmb3IgKGkg PSAwOyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7Cj4+ICsgICAgICAgIGlvcmVxLT5wYWdlW2ld ID0gaW9yZXEtPnBhZ2VzICsgaSpYQ19QQUdFX1NJWkU7Cj4+ICsgICAgICAgIGlvcmVxLT52Lmlv dltpXS5pb3ZfYmFzZSArPSAodWludHB0cl90KWlvcmVxLT5wYWdlW2ldOwo+Cj4gSXMgdGhlICs9 IGludGVuZGVkIGhlcmU/Cj4KCkkgd2FzIHN1Z2dlc3RlZCBieSBpb3JlcV9tYXAgYXNzaWdubWVu dCB0byB0aGUgaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlIAp3aGljaCBpcyBtYWRlIHRoYXQgd2F5 LiBCdXQgSSBkbyBub3QgdGhpbmsgdGhhdCBtYWtlcyBzZW5zZSB0byBzdW0gdXAgCnRoZSBwb2lu dGVycy4gSSB3aWxsIGNoYW5nZSBpdCB0byA9LgoKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByZXR1 cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBpb3JlcV9jb3B5KHN0cnVjdCBpb3JlcSAq aW9yZXEpCj4+ICt7Cj4+ICsgICAgWGVuR250dGFiIGdudCA9IGlvcmVxLT5ibGtkZXYtPnhlbmRl di5nbnR0YWJkZXY7Cj4+ICsgICAgeGVuZ250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90IHNlZ3Nb QkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKPj4gKyAgICBpbnQgaSwgY291bnQgPSAw LCByLCByYzsKPj4gKyAgICBpbnQ2NF90IGZpbGVfYmxrID0gaW9yZXEtPmJsa2Rldi0+ZmlsZV9i bGs7Cj4+ICsKPj4gKyAgICBpZiAoaW9yZXEtPnYubmlvdiA9PSAwKSB7Cj4+ICsgICAgICAgIHJl dHVybiAwOwo+PiArICAgIH0KPj4gKwo+PiArICAgIGNvdW50ID0gaW9yZXEtPnYubmlvdjsKPj4g Kwo+PiArICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4+ICsKPj4gKyAgICAgICAg aWYgKGlvcmVxLT5yZXEub3BlcmF0aW9uID09IEJMS0lGX09QX1JFQUQpIHsKPj4gKyAgICAgICAg ICAgIHNlZ3NbaV0uZmxhZ3MgPSBHTlRDT1BZX2Rlc3RfZ3JlZjsKPj4gKyAgICAgICAgICAgIHNl Z3NbaV0uZGVzdC5mb3JlaWduLnJlZiA9IGlvcmVxLT5yZWZzW2ldOwo+PiArICAgICAgICAgICAg c2Vnc1tpXS5kZXN0LmZvcmVpZ24uZG9taWQgPSBpb3JlcS0+ZG9taWRzW2ldOwo+PiArICAgICAg ICAgICAgc2Vnc1tpXS5kZXN0LmZvcmVpZ24ub2Zmc2V0ID0gaW9yZXEtPnJlcS5zZWdbaV0uZmly c3Rfc2VjdCAqIGZpbGVfYmxrOwo+PiArICAgICAgICAgICAgc2Vnc1tpXS5zb3VyY2UudmlydCA9 IGlvcmVxLT52LmlvdltpXS5pb3ZfYmFzZTsKPj4gKyAgICAgICAgfSBlbHNlIHsKPj4gKyAgICAg ICAgICAgIHNlZ3NbaV0uZmxhZ3MgPSBHTlRDT1BZX3NvdXJjZV9ncmVmOwo+PiArICAgICAgICAg ICAgc2Vnc1tpXS5zb3VyY2UuZm9yZWlnbi5yZWYgPSBpb3JlcS0+cmVmc1tpXTsKPj4gKyAgICAg ICAgICAgIHNlZ3NbaV0uc291cmNlLmZvcmVpZ24uZG9taWQgPSBpb3JlcS0+ZG9taWRzW2ldOwo+ PiArICAgICAgICAgICAgc2Vnc1tpXS5zb3VyY2UuZm9yZWlnbi5vZmZzZXQgPSBpb3JlcS0+cmVx LnNlZ1tpXS5maXJzdF9zZWN0ICogZmlsZV9ibGs7Cj4+ICsgICAgICAgICAgICBzZWdzW2ldLmRl c3QudmlydCA9IGlvcmVxLT52LmlvdltpXS5pb3ZfYmFzZTsKPj4gKyAgICAgICAgfQo+PiArICAg ICAgICBzZWdzW2ldLmxlbiA9IChpb3JlcS0+cmVxLnNlZ1tpXS5sYXN0X3NlY3QKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgLSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICsgMSkgKiBm aWxlX2JsazsKPj4gKwo+PiArICAgIH0KPj4gKwo+PiArICAgIHJjID0geGVuZ250dGFiX2dyYW50 X2NvcHkoZ250LCBjb3VudCwgc2Vncyk7Cj4+ICsKPj4gKyAgICBpZiAocmMpIHsKPj4gKyAgICAg ICAgeGVuX2JlX3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAwLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICJmYWlsZWQgdG8gY29weSBkYXRhICVkIFxuIiwgcmMpOwo+PiArICAgICAg ICBpb3JlcS0+YWlvX2Vycm9ycysrOwo+PiArICAgICAgICByZXR1cm4gLTE7Cj4+ICsgICAgfSBl bHNlIHsKPj4gKyAgICAgICAgciA9IDA7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgZm9yIChpID0g MDsgaSA8IGNvdW50OyBpKyspIHsKPj4gKyAgICAgICAgaWYgKHNlZ3NbaV0uc3RhdHVzICE9IEdO VFNUX29rYXkpIHsKPj4gKyAgICAgICAgICAgIHhlbl9iZV9wcmludGYoJmlvcmVxLT5ibGtkZXYt PnhlbmRldiwgMywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBjb3B5 IGRhdGEgJWQgZm9yIGdyZWYgJWQsIGRvbWlkICVkXG4iLCByYywKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgaW9yZXEtPnJlZnNbaV0sIGlvcmVxLT5kb21pZHNbaV0pOwo+PiArICAgICAg ICAgICAgaW9yZXEtPmFpb19lcnJvcnMrKzsKPj4gKyAgICAgICAgICAgIHIgPSAtMTsKPj4gKyAg ICAgICAgfQo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiByOwo+PiArfQo+PiArCj4+ICAg c3RhdGljIGludCBpb3JlcV9ydW5pb19xZW11X2FpbyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKTsKPj4K Pj4gICBzdGF0aWMgdm9pZCBxZW11X2Fpb19jb21wbGV0ZSh2b2lkICpvcGFxdWUsIGludCByZXQp Cj4+IEBAIC01MjgsOCArNjI0LDMxIEBAIHN0YXRpYyB2b2lkIHFlbXVfYWlvX2NvbXBsZXRlKHZv aWQgKm9wYXF1ZSwgaW50IHJldCkKPj4gICAgICAgICAgIHJldHVybjsKPj4gICAgICAgfQo+Pgo+ PiArICAgIGlmIChpb3JlcS0+YmxrZGV2LT5mZWF0dXJlX2dyYW50X2NvcHkpIHsKPj4gKyAgICAg ICAgc3dpdGNoIChpb3JlcS0+cmVxLm9wZXJhdGlvbikgewo+PiArICAgICAgICBjYXNlIEJMS0lG X09QX1JFQUQ6Cj4+ICsgICAgICAgICAgICAvKiBpbiBjYXNlIG9mIGZhaWx1cmUgaW9yZXEtPmFp b19lcnJvcnMgaXMgaW5jcmVhc2VkICovCj4+ICsgICAgICAgICAgICBpb3JlcV9jb3B5KGlvcmVx KTsKPj4gKyAgICAgICAgICAgIGZyZWVfYnVmZmVycyhpb3JlcSk7Cj4+ICsgICAgICAgICAgICBi cmVhazsKPj4gKyAgICAgICAgY2FzZSBCTEtJRl9PUF9XUklURToKPj4gKyAgICAgICAgY2FzZSBC TEtJRl9PUF9GTFVTSF9ESVNLQ0FDSEU6Cj4+ICsgICAgICAgICAgICBpZiAoIWlvcmVxLT5yZXEu bnJfc2VnbWVudHMpIHsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAg IH0KPj4gKyAgICAgICAgICAgIGZyZWVfYnVmZmVycyhpb3JlcSk7Cj4+ICsgICAgICAgICAgICBi cmVhazsKPj4gKyAgICAgICAgZGVmYXVsdDoKPj4gKyAgICAgICAgICAgIGJyZWFrOwo+PiArICAg ICAgICB9Cj4+ICsgICAgfQo+PiArCj4+ICAgICAgIGlvcmVxLT5zdGF0dXMgPSBpb3JlcS0+YWlv X2Vycm9ycyA/IEJMS0lGX1JTUF9FUlJPUiA6IEJMS0lGX1JTUF9PS0FZOwo+PiAtICAgIGlvcmVx X3VubWFwKGlvcmVxKTsKPj4gKwo+PiArICAgIGlmICghaW9yZXEtPmJsa2Rldi0+ZmVhdHVyZV9n cmFudF9jb3B5KSB7Cj4+ICsgICAgICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKPj4gKyAgICB9Cj4+ ICsKPj4gICAgICAgaW9yZXFfZmluaXNoKGlvcmVxKTsKPj4gICAgICAgc3dpdGNoIChpb3JlcS0+ cmVxLm9wZXJhdGlvbikgewo+PiAgICAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgo+PiBAQCAtNTQ3 LDE0ICs2NjYsNDIgQEAgc3RhdGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVl LCBpbnQgcmV0KQo+PiAgICAgICBxZW11X2JoX3NjaGVkdWxlKGlvcmVxLT5ibGtkZXYtPmJoKTsK Pj4gICB9Cj4+Cj4+ICtzdGF0aWMgaW50IGlvcmVxX3J1bmlvX3FlbXVfYWlvX2JsayhzdHJ1Y3Qg aW9yZXEgKmlvcmVxKTsKPj4gKwo+PiAgIHN0YXRpYyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8o c3RydWN0IGlvcmVxICppb3JlcSkKPj4gICB7Cj4+IC0gICAgc3RydWN0IFhlbkJsa0RldiAqYmxr ZGV2ID0gaW9yZXEtPmJsa2RldjsKPj4gKyAgICBpZiAoaW9yZXEtPmJsa2Rldi0+ZmVhdHVyZV9n cmFudF9jb3B5KSB7Cj4+ICsKPj4gKyAgICAgICAgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMoaW9y ZXEpOwo+PiArICAgICAgICBpZiAoaW9yZXEtPnJlcS5ucl9zZWdtZW50cyAmJiAoaW9yZXEtPnJl cS5vcGVyYXRpb24gPT0gQkxLSUZfT1BfV1JJVEUgfHwKPj4gKyAgICAgICAgICAgIGlvcmVxLT5y ZXEub3BlcmF0aW9uID09IEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRSkpIHsKPj4gKyAgICAgICAg ICAgIGlmIChpb3JlcV9jb3B5KGlvcmVxKSkgewo+Cj4gV291bGQgaXQgbWFrZSBzZW5zIHRvIGRv IHRoaXMgaW9yZXFfY29weSgpIGRpcmVjdGx5IGluCj4gaW9yZXFfcnVuaW9fcWVtdV9haW9fYmxr ID8KCkRvIHlvdSBtZWFuIG1vdmluZyBvbmx5IHRoZSBpb3JlcV9jb3B5KCkgb3IgcmVtb3ZlIHRo YXQgbmV3IGZ1bmN0aW9uPwoKSSBkaXZpZGVkIHRoZSBvbGQgaW9yZXFfcnVuaW9fcWVtdV9haW8g ZnVuY3Rpb24gb24gdHdvIHBhcnRzLiBJdCAKY2xhcmlmaWVzIHdoaWNoIGZlYXR1cmUgaXMgY2hv c2VuLiBUaGUgZ3JhbnQgY29weSBhbmQgZ3JhbnQgbWFwIAppbml0aWFsaXphdGlvbiBhbmQgZXJy b3IgaGFuZGxpbmcgaXMgZGlmZmVyZW50IGFuZCB0aGF0IHdheSB0aGUgWGVuIAptZW1vcnkgbWFu YWdlbWVudCBhbmQgYW4gYWN0dWFsIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QgYnkgcWVtdSBpcyBz ZXBhcmF0ZWQuCgo+Cj4+ICsgICAgICAgICAgICAgICAgZnJlZV9idWZmZXJzKGlvcmVxKTsKPj4g KyAgICAgICAgICAgICAgICBnb3RvIGVycjsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAg fQo+PiArICAgICAgICBpZiAoaW9yZXFfcnVuaW9fcWVtdV9haW9fYmxrKGlvcmVxKSkgZ290byBl cnI7Cj4+ICsKPj4gKyAgICB9IGVsc2Ugewo+Pgo+PiAtICAgIGlmIChpb3JlcS0+cmVxLm5yX3Nl Z21lbnRzICYmIGlvcmVxX21hcChpb3JlcSkgPT0gLTEpIHsKPj4gLSAgICAgICAgZ290byBlcnJf bm9fbWFwOwo+PiArICAgICAgICBpZiAoaW9yZXEtPnJlcS5ucl9zZWdtZW50cyAmJiBpb3JlcV9t YXAoaW9yZXEpKSBnb3RvIGVycjsKPj4gKyAgICAgICAgaWYgKGlvcmVxX3J1bmlvX3FlbXVfYWlv X2Jsayhpb3JlcSkpIHsKPj4gKyAgICAgICAgICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKPj4gKyAg ICAgICAgICAgIGdvdG8gZXJyOwo+PiArICAgICAgICB9Cj4+ICAgICAgIH0KPj4KPj4gKyAgICBy ZXR1cm4gMDsKPj4gK2VycjoKPj4gKyAgICBpb3JlcV9maW5pc2goaW9yZXEpOwo+PiArICAgIGlv cmVxLT5zdGF0dXMgPSBCTEtJRl9SU1BfRVJST1I7Cj4+ICsgICAgcmV0dXJuIC0xOwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgaW50IGlvcmVxX3J1bmlvX3FlbXVfYWlvX2JsayhzdHJ1Y3QgaW9yZXEg KmlvcmVxKQo+PiArewo+PiArICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGlvcmVxLT5i bGtkZXY7Cj4+ICsKPj4gICAgICAgaW9yZXEtPmFpb19pbmZsaWdodCsrOwo+PiAgICAgICBpZiAo aW9yZXEtPnByZXN5bmMpIHsKPj4gICAgICAgICAgIGJsa19haW9fZmx1c2goaW9yZXEtPmJsa2Rl di0+YmxrLCBxZW11X2Fpb19jb21wbGV0ZSwgaW9yZXEpOwo+PiBAQCAtNTk0LDE5ICs3NDEsMTIg QEAgc3RhdGljIGludCBpb3JlcV9ydW5pb19xZW11X2FpbyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQo+ PiAgICAgICB9Cj4+ICAgICAgIGRlZmF1bHQ6Cj4+ICAgICAgICAgICAvKiB1bmtub3duIG9wZXJh dGlvbiAoc2hvdWxkbid0IGhhcHBlbiAtLSBwYXJzZSBjYXRjaGVzIHRoaXMpICovCj4+IC0gICAg ICAgIGdvdG8gZXJyOwo+PiArICAgICAgICByZXR1cm4gLTE7Cj4+ICAgICAgIH0KPj4KPj4gICAg ICAgcWVtdV9haW9fY29tcGxldGUoaW9yZXEsIDApOwo+Pgo+PiAgICAgICByZXR1cm4gMDsKPj4g LQo+PiAtZXJyOgo+PiAtICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKPj4gLWVycl9ub19tYXA6Cj4+ IC0gICAgaW9yZXFfZmluaXNoKGlvcmVxKTsKPj4gLSAgICBpb3JlcS0+c3RhdHVzID0gQkxLSUZf UlNQX0VSUk9SOwo+PiAtICAgIHJldHVybiAtMTsKPj4gICB9Cj4+Cj4+ICAgc3RhdGljIGludCBi bGtfc2VuZF9yZXNwb25zZV9vbmUoc3RydWN0IGlvcmVxICppb3JlcSkKPj4gQEAgLTEwMjAsMTAg KzExNjAsMTcgQEAgc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5k ZXYpCj4+Cj4+ICAgICAgIHhlbl9iZV9iaW5kX2V2dGNobigmYmxrZGV2LT54ZW5kZXYpOwo+Pgo+ PiArICAgIGJsa2Rldi0+ZmVhdHVyZV9ncmFudF9jb3B5ID0KPj4gKyAgICAgICAgICAgICAgICAo eGVuZ250dGFiX2dyYW50X2NvcHkoYmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2LCAwLCBOVUxMKSA9 PSAwKTsKPj4gKwo+PiArICAgIHhlbl9iZV9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAzLCAiZ3Jh bnQgY29weSBvcGVyYXRpb24gJXNcbiIsCj4+ICsgICAgICAgICAgICAgICAgICBibGtkZXYtPmZl YXR1cmVfZ3JhbnRfY29weSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwo+PiArCj4+ICAgICAg IHhlbl9iZV9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAxLCAib2s6IHByb3RvICVzLCByaW5nLXJl ZiAlZCwgIgo+PiAgICAgICAgICAgICAgICAgICAgICJyZW1vdGUgcG9ydCAlZCwgbG9jYWwgcG9y dCAlZFxuIiwKPj4gICAgICAgICAgICAgICAgICAgICBibGtkZXYtPnhlbmRldi5wcm90b2NvbCwg YmxrZGV2LT5yaW5nX3JlZiwKPj4gICAgICAgICAgICAgICAgICAgICBibGtkZXYtPnhlbmRldi5y ZW1vdGVfcG9ydCwgYmxrZGV2LT54ZW5kZXYubG9jYWxfcG9ydCk7Cj4+ICsKPj4gICAgICAgcmV0 dXJuIDA7Cj4+ICAgfQo+Cj4gT3RoZXIgdGhpbmdzLCBjb3VsZCB5b3UgcmViYXNlIHlvdXIgcGF0 Y2ggb24gUUVNVSB1cHN0cmVhbSBhbmQgQ0MKPiBxZW11LWRldmVsQG5vbmdudS5vcmc/IFlvdSBj YW4gYWxzbyBjaGVjayB0aGUgY29kaW5nIHN0eWxlIG9mIHRoZSBwYXRjaAo+IHdpdGggLi9zY3Jp cHRzL2NoZWNrcGF0Y2gucGwuCj4KPiBUaGFuayB5b3UsCj4KClllcywgdGhhbmsgeW91LgoKUGF1 bGluYQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==