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: Wed, 13 Jul 2016 14:34:37 +0200 Message-ID: <5786355D.8040601@gmail.com> References: <1466584733-19459-1-git-send-email-paulinaszubarczyk@gmail.com> <1466584733-19459-3-git-send-email-paulinaszubarczyk@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bNJOo-0007kR-Dt for xen-devel@lists.xenproject.org; Wed, 13 Jul 2016 12:36:22 +0000 Received: by mail-lf0-f65.google.com with SMTP id f93so3663497lfi.0 for ; Wed, 13 Jul 2016 05:36:20 -0700 (PDT) In-Reply-To: <1466584733-19459-3-git-send-email-paulinaszubarczyk@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, roger.pau@citrix.com Cc: anthony.perard@citrix.com, ian.jackson@eu.citrix.com, sstabellini@kernel.org, wei.liu2@citrix.com, david.vrabel@citrix.com List-Id: xen-devel@lists.xenproject.org Ck9uIDA2LzIyLzIwMTYgMTA6MzggQU0sIFBhdWxpbmEgU3p1YmFyY3p5ayB3cm90ZToKPiBDb3B5 IGRhdGEgb3BlcmF0ZWQgb24gZHVyaW5nIHJlcXVlc3QgZnJvbS90byBsb2NhbCBidWZmZXJzIHRv L2Zyb20KPiB0aGUgZ3JhbnQgcmVmZXJlbmNlcy4KPgo+IEJlZm9yZSBncmFudCBjb3B5IG9wZXJh dGlvbiBsb2NhbCBidWZmZXJzIG11c3QgYmUgYWxsb2NhdGVkIHdoYXQgaXMKPiBkb25lIGJ5IGNh bGxpbmcgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMuIEZvciB0aGUgJ3JlYWQnIG9wZXJhdGlvbiwK PiBmaXJzdCwgdGhlIHFlbXUgZGV2aWNlIGludm9rZXMgdGhlIHJlYWQgb3BlcmF0aW9uIG9uIGxv Y2FsIGJ1ZmZlcnMKPiBhbmQgb24gdGhlIGNvbXBsZXRpb24gZ3JhbnQgY29weSBpcyBjYWxsZWQg YW5kIGJ1ZmZlcnMgYXJlIGZyZWVkLgo+IEZvciB0aGUgJ3dyaXRlJyBvcGVyYXRpb24gZ3JhbnQg Y29weSBpcyBwZXJmb3JtZWQgYmVmb3JlIGludm9raW5nCj4gd3JpdGUgYnkgcWVtdSBkZXZpY2Uu Cj4KPiBBIG5ldyB2YWx1ZSAnZmVhdHVyZV9ncmFudF9jb3B5JyBpcyBhZGRlZCB0byByZWNvZ25p emUgd2hlbiB0aGUKPiBncmFudCBjb3B5IG9wZXJhdGlvbiBpcyBzdXBwb3J0ZWQgYnkgYSBndWVz dC4KPiBUaGUgYm9keSBvZiB0aGUgZnVuY3Rpb24gJ2lvcmVxX3J1bmlvX3FlbXVfYWlvJyBpcyBt b3ZlZCB0bwo+ICdpb3JlcV9ydW5pb19xZW11X2Fpb19ibGsnIGFuZCBpbiB0aGUgJ2lvcmVxX3J1 bmlvX3FlbXVfYWlvJyBkZXBlbmRpbmcKPiBvbiB0aGUgc3VwcG9ydCBmb3IgZ3JhbnQgY29weSBh Y2NvcmRpbmcgY2hlY2tzLCBpbml0aWFsaXphdGlvbiwgZ3JhbnQKPiBvcGVyYXRpb24gYXJlIG1h ZGUsIHRoZW4gdGhlICdpb3JlcV9ydW5pb19xZW11X2Fpb19ibGsnIGZ1bmN0aW9uIGlzCj4gY2Fs bGVkLgo+Cj4gU2lnbmVkLW9mZi1ieTogUGF1bGluYSBTenViYXJjenlrIDxwYXVsaW5hc3p1YmFy Y3p5a0BnbWFpbC5jb20+Cj4gLS0tCj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiAtIHRvIHVzZSB0aGUg eGVuZ250dGFiXyogZnVuY3Rpb24gZGlyZWN0bHkgYWRkZWQgLWx4ZW5nbnR0YWIgdG8gY29uZmln dXJlCj4gICAgYW5kIGluY2x1ZGUgPHhlbmdudHRhYi5oPiBpbiBpbmNsdWRlL2h3L3hlbi94ZW5f Y29tbW9uLmgKPiAtIGluIGlvcmVxX2NvcHkgcmVtb3ZlZCBhbiBvdXQgcGF0aCwgY2hhbmdlZCBh IGxvZyBsZXZlbCwgbWFkZSBleHBsaWNpdAo+ICAgIGFzc2lnbmVtZW50IHRvICd4ZW5nbnR0YWJf Y29weV9ncmFudF9zZWdtZW50Jwo+ICogSSBkaWQgbm90IGNoYW5nZSB0aGUgd2F5IG9mIHRlc3Rp bmcgaWYgZ3JhbnRfY29weSBvcGVyYXRpb24gaXMgaW1wbGVtZW50ZWQuCj4gICAgQXMgZmFyIGFz IEkgdW5kZXJzdGFuZCBpZiB0aGUgY29kZSBmcm9tIGdudHRhYl91bmltcC5jIGlzIHVzZWQgdGhl biB0aGUgZ250dGFiCj4gICAgZGV2aWNlIGlzIHVuYXZhaWxhYmxlIGFuZCB0aGUgaGFuZGxlciB0 byBnbnRkZXYgd291bGQgYmUgaW52YWxpZC4gQnV0Cj4gICAgaWYgdGhlIGhhbmRsZXIgaXMgdmFs aWQgdGhlbiB0aGUgaW9jdGwgc2hvdWxkIHJldHVybiBvcGVyYXRpb24gdW5pbXBsZW1lbnRlZAo+ ICAgIGlmIHRoZSBnbnRkZXYgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24uCj4KPiAg IGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ICAgaHcvYmxvY2sveGVuX2Rp c2suYyAgICAgICAgIHwgMTcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tCj4gICBpbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmggfCAgIDIgKwo+ICAgMyBmaWxl cyBjaGFuZ2VkLCAxNjIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t Z2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCj4gaW5kZXggZTQxODc2YS4uMzU1ZDNmYSAxMDA3 NTUKPiAtLS0gYS9jb25maWd1cmUKPiArKysgYi9jb25maWd1cmUKPiBAQCAtMTg0Myw3ICsxODQz LDcgQEAgZmkKPiAgICMgeGVuIHByb2JlCj4KPiAgIGlmIHRlc3QgIiR4ZW4iICE9ICJubyIgOyB0 aGVuCj4gLSAgeGVuX2xpYnM9Ii1seGVuc3RvcmUgLWx4ZW5jdHJsIC1seGVuZ3Vlc3QiCj4gKyAg eGVuX2xpYnM9Ii1seGVuc3RvcmUgLWx4ZW5jdHJsIC1seGVuZ3Vlc3QgLWx4ZW5nbnR0YWIiCj4K PiAgICAgIyBGaXJzdCB3ZSB0ZXN0IHdoZXRoZXIgWGVuIGhlYWRlcnMgYW5kIGxpYnJhcmllcyBh cmUgYXZhaWxhYmxlLgo+ICAgICAjIElmIG5vLCB3ZSBhcmUgZG9uZSBhbmQgdGhlcmUgaXMgbm8g WGVuIHN1cHBvcnQuCj4gZGlmZiAtLWdpdCBhL2h3L2Jsb2NrL3hlbl9kaXNrLmMgYi9ody9ibG9j ay94ZW5fZGlzay5jCj4gaW5kZXggMzdlMTRkMS4uNGVjYTA2YSAxMDA2NDQKPiAtLS0gYS9ody9i bG9jay94ZW5fZGlzay5jCj4gKysrIGIvaHcvYmxvY2sveGVuX2Rpc2suYwo+IEBAIC0xMzEsNiAr MTMxLDkgQEAgc3RydWN0IFhlbkJsa0RldiB7Cj4gICAgICAgdW5zaWduZWQgaW50ICAgICAgICBw ZXJzaXN0ZW50X2dudF9jb3VudDsKPiAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgIG1heF9ncmFu dHM7Cj4KPiArICAgIC8qIEdyYW50IGNvcHkgKi8KPiArICAgIGdib29sZWFuICAgICAgICAgICAg ZmVhdHVyZV9ncmFudF9jb3B5Owo+ICsKPiAgICAgICAvKiBxZW11IGJsb2NrIGRyaXZlciAqLwo+ ICAgICAgIERyaXZlSW5mbyAgICAgICAgICAgKmRpbmZvOwo+ICAgICAgIEJsb2NrQmFja2VuZCAg ICAgICAgKmJsazsKPiBAQCAtNTAwLDYgKzUwMyw5OSBAQCBzdGF0aWMgaW50IGlvcmVxX21hcChz dHJ1Y3QgaW9yZXEgKmlvcmVxKQo+ICAgICAgIHJldHVybiAwOwo+ICAgfQo+Cj4gK3N0YXRpYyB2 b2lkKiBnZXRfYnVmZmVyKGludCBjb3VudCkKPiArewo+ICsgICAgcmV0dXJuIHhjX21lbWFsaWdu KHhlbl94YywgWENfUEFHRV9TSVpFLCBjb3VudCpYQ19QQUdFX1NJWkUpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBmcmVlX2J1ZmZlcnMoc3RydWN0IGlvcmVxICppb3JlcSkKPiArewo+ICsgICAg aW50IGk7Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8IGlvcmVxLT52Lm5pb3Y7IGkrKykgewo+ ICsgICAgICAgIGlvcmVxLT5wYWdlW2ldID0gTlVMTDsKPiArICAgIH0KPiArCj4gKyAgICBmcmVl KGlvcmVxLT5wYWdlcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaW9yZXFfaW5pdF9jb3B5X2J1 ZmZlcnMoc3RydWN0IGlvcmVxICppb3JlcSkgewo+ICsgICAgaW50IGk7Cj4gKwo+ICsgICAgaWYg KGlvcmVxLT52Lm5pb3YgPT0gMCkgewo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsK PiArICAgIGlvcmVxLT5wYWdlcyA9IGdldF9idWZmZXIoaW9yZXEtPnYubmlvdik7Cj4gKyAgICBp ZiAoIWlvcmVxLT5wYWdlcykgewo+ICsgICAgICAgIHJldHVybiAtMTsKPiArICAgIH0KPiArCj4g KyAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7Cj4gKyAgICAgICAgaW9y ZXEtPnBhZ2VbaV0gPSBpb3JlcS0+cGFnZXMgKyBpKlhDX1BBR0VfU0laRTsKPiArICAgICAgICBp b3JlcS0+di5pb3ZbaV0uaW92X2Jhc2UgKz0gKHVpbnRwdHJfdClpb3JlcS0+cGFnZVtpXTsKPiAr ICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBpb3JlcV9j b3B5KHN0cnVjdCBpb3JlcSAqaW9yZXEpCj4gK3sKPiArICAgIFhlbkdudHRhYiBnbnQgPSBpb3Jl cS0+YmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2Owo+ICsgICAgeGVuZ250dGFiX2dyYW50X2NvcHlf c2VnbWVudF90IHNlZ3NbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKPiArICAgIGlu dCBpLCBjb3VudCA9IDAsIHIsIHJjOwo+ICsgICAgaW50NjRfdCBmaWxlX2JsayA9IGlvcmVxLT5i bGtkZXYtPmZpbGVfYmxrOwo+ICsKPiArICAgIGlmIChpb3JlcS0+di5uaW92ID09IDApIHsKPiAr ICAgICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArCj4gKyAgICBjb3VudCA9IGlvcmVxLT52Lm5p b3Y7Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKPiArCj4gKyAgICAg ICAgaWYgKGlvcmVxLT5yZXEub3BlcmF0aW9uID09IEJMS0lGX09QX1JFQUQpIHsKPiArICAgICAg ICAgICAgc2Vnc1tpXS5mbGFncyA9IEdOVENPUFlfZGVzdF9ncmVmOwo+ICsgICAgICAgICAgICBz ZWdzW2ldLmRlc3QuZm9yZWlnbi5yZWYgPSBpb3JlcS0+cmVmc1tpXTsKPiArICAgICAgICAgICAg c2Vnc1tpXS5kZXN0LmZvcmVpZ24uZG9taWQgPSBpb3JlcS0+ZG9taWRzW2ldOwo+ICsgICAgICAg ICAgICBzZWdzW2ldLmRlc3QuZm9yZWlnbi5vZmZzZXQgPSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJz dF9zZWN0ICogZmlsZV9ibGs7Cj4gKyAgICAgICAgICAgIHNlZ3NbaV0uc291cmNlLnZpcnQgPSBp b3JlcS0+di5pb3ZbaV0uaW92X2Jhc2U7Cj4gKyAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAg ICAgc2Vnc1tpXS5mbGFncyA9IEdOVENPUFlfc291cmNlX2dyZWY7Cj4gKyAgICAgICAgICAgIHNl Z3NbaV0uc291cmNlLmZvcmVpZ24ucmVmID0gaW9yZXEtPnJlZnNbaV07Cj4gKyAgICAgICAgICAg IHNlZ3NbaV0uc291cmNlLmZvcmVpZ24uZG9taWQgPSBpb3JlcS0+ZG9taWRzW2ldOwo+ICsgICAg ICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLm9mZnNldCA9IGlvcmVxLT5yZXEuc2VnW2ld LmZpcnN0X3NlY3QgKiBmaWxlX2JsazsKPiArICAgICAgICAgICAgc2Vnc1tpXS5kZXN0LnZpcnQg PSBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2U7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHNlZ3Nb aV0ubGVuID0gKGlvcmVxLT5yZXEuc2VnW2ldLmxhc3Rfc2VjdAo+ICsgICAgICAgICAgICAgICAg ICAgICAgIC0gaW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCArIDEpICogZmlsZV9ibGs7Cj4g Kwo+ICsgICAgfQo+ICsKPiArICAgIHJjID0geGVuZ250dGFiX2dyYW50X2NvcHkoZ250LCBjb3Vu dCwgc2Vncyk7Cj4gKwo+ICsgICAgaWYgKHJjKSB7Cj4gKyAgICAgICAgeGVuX2JlX3ByaW50Zigm aW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgImZhaWxl ZCB0byBjb3B5IGRhdGEgJWQgXG4iLCByYyk7Cj4gKyAgICAgICAgaW9yZXEtPmFpb19lcnJvcnMr KzsKPiArICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIHIgPSAw Owo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gKyAg ICAgICAgaWYgKHNlZ3NbaV0uc3RhdHVzICE9IEdOVFNUX29rYXkpIHsKPiArICAgICAgICAgICAg eGVuX2JlX3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAzLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICJmYWlsZWQgdG8gY29weSBkYXRhICVkIGZvciBncmVmICVkLCBkb21pZCAl ZFxuIiwgcmMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yZXEtPnJlZnNbaV0sIGlv cmVxLT5kb21pZHNbaV0pOwo+ICsgICAgICAgICAgICBpb3JlcS0+YWlvX2Vycm9ycysrOwo+ICsg ICAgICAgICAgICByID0gLTE7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVy biByOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBpb3JlcV9ydW5pb19xZW11X2FpbyhzdHJ1Y3Qg aW9yZXEgKmlvcmVxKTsKPgo+ICAgc3RhdGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAq b3BhcXVlLCBpbnQgcmV0KQo+IEBAIC01MjgsOCArNjI0LDMxIEBAIHN0YXRpYyB2b2lkIHFlbXVf YWlvX2NvbXBsZXRlKHZvaWQgKm9wYXF1ZSwgaW50IHJldCkKPiAgICAgICAgICAgcmV0dXJuOwo+ ICAgICAgIH0KPgo+ICsgICAgaWYgKGlvcmVxLT5ibGtkZXYtPmZlYXR1cmVfZ3JhbnRfY29weSkg ewo+ICsgICAgICAgIHN3aXRjaCAoaW9yZXEtPnJlcS5vcGVyYXRpb24pIHsKPiArICAgICAgICBj YXNlIEJMS0lGX09QX1JFQUQ6Cj4gKyAgICAgICAgICAgIC8qIGluIGNhc2Ugb2YgZmFpbHVyZSBp b3JlcS0+YWlvX2Vycm9ycyBpcyBpbmNyZWFzZWQgKi8KPiArICAgICAgICAgICAgaW9yZXFfY29w eShpb3JlcSk7Cj4gKyAgICAgICAgICAgIGZyZWVfYnVmZmVycyhpb3JlcSk7Cj4gKyAgICAgICAg ICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgQkxLSUZfT1BfV1JJVEU6Cj4gKyAgICAgICAgY2Fz ZSBCTEtJRl9PUF9GTFVTSF9ESVNLQ0FDSEU6Cj4gKyAgICAgICAgICAgIGlmICghaW9yZXEtPnJl cS5ucl9zZWdtZW50cykgewo+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAg IH0KPiArICAgICAgICAgICAgZnJlZV9idWZmZXJzKGlvcmVxKTsKPiArICAgICAgICAgICAgYnJl YWs7Cj4gKyAgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAg fQo+ICsgICAgfQo+ICsKPiAgICAgICBpb3JlcS0+c3RhdHVzID0gaW9yZXEtPmFpb19lcnJvcnMg PyBCTEtJRl9SU1BfRVJST1IgOiBCTEtJRl9SU1BfT0tBWTsKPiAtICAgIGlvcmVxX3VubWFwKGlv cmVxKTsKPiArCj4gKyAgICBpZiAoIWlvcmVxLT5ibGtkZXYtPmZlYXR1cmVfZ3JhbnRfY29weSkg ewo+ICsgICAgICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKPiArICAgIH0KPiArCj4gICAgICAgaW9y ZXFfZmluaXNoKGlvcmVxKTsKPiAgICAgICBzd2l0Y2ggKGlvcmVxLT5yZXEub3BlcmF0aW9uKSB7 Cj4gICAgICAgY2FzZSBCTEtJRl9PUF9XUklURToKPiBAQCAtNTQ3LDE0ICs2NjYsNDIgQEAgc3Rh dGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVlLCBpbnQgcmV0KQo+ICAgICAg IHFlbXVfYmhfc2NoZWR1bGUoaW9yZXEtPmJsa2Rldi0+YmgpOwo+ICAgfQo+Cj4gK3N0YXRpYyBp bnQgaW9yZXFfcnVuaW9fcWVtdV9haW9fYmxrKHN0cnVjdCBpb3JlcSAqaW9yZXEpOwo+ICsKPiAg IHN0YXRpYyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKPiAg IHsKPiAtICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGlvcmVxLT5ibGtkZXY7Cj4gKyAg ICBpZiAoaW9yZXEtPmJsa2Rldi0+ZmVhdHVyZV9ncmFudF9jb3B5KSB7Cj4gKwo+ICsgICAgICAg IGlvcmVxX2luaXRfY29weV9idWZmZXJzKGlvcmVxKTsKPiArICAgICAgICBpZiAoaW9yZXEtPnJl cS5ucl9zZWdtZW50cyAmJiAoaW9yZXEtPnJlcS5vcGVyYXRpb24gPT0gQkxLSUZfT1BfV1JJVEUg fHwKPiArICAgICAgICAgICAgaW9yZXEtPnJlcS5vcGVyYXRpb24gPT0gQkxLSUZfT1BfRkxVU0hf RElTS0NBQ0hFKSkgewo+ICsgICAgICAgICAgICBpZiAoaW9yZXFfY29weShpb3JlcSkpIHsKPiAr ICAgICAgICAgICAgICAgIGZyZWVfYnVmZmVycyhpb3JlcSk7Cj4gKyAgICAgICAgICAgICAgICBn b3RvIGVycjsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoaW9y ZXFfcnVuaW9fcWVtdV9haW9fYmxrKGlvcmVxKSkgZ290byBlcnI7Cj4gKwo+ICsgICAgfSBlbHNl IHsKPgo+IC0gICAgaWYgKGlvcmVxLT5yZXEubnJfc2VnbWVudHMgJiYgaW9yZXFfbWFwKGlvcmVx KSA9PSAtMSkgewo+IC0gICAgICAgIGdvdG8gZXJyX25vX21hcDsKPiArICAgICAgICBpZiAoaW9y ZXEtPnJlcS5ucl9zZWdtZW50cyAmJiBpb3JlcV9tYXAoaW9yZXEpKSBnb3RvIGVycjsKPiArICAg ICAgICBpZiAoaW9yZXFfcnVuaW9fcWVtdV9haW9fYmxrKGlvcmVxKSkgewo+ICsgICAgICAgICAg ICBpb3JlcV91bm1hcChpb3JlcSk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAg IH0KPiAgICAgICB9Cj4KPiArICAgIHJldHVybiAwOwo+ICtlcnI6Cj4gKyAgICBpb3JlcV9maW5p c2goaW9yZXEpOwo+ICsgICAgaW9yZXEtPnN0YXR1cyA9IEJMS0lGX1JTUF9FUlJPUjsKPiArICAg IHJldHVybiAtMTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpb3JlcV9ydW5pb19xZW11X2Fpb19i bGsoc3RydWN0IGlvcmVxICppb3JlcSkKPiArewo+ICsgICAgc3RydWN0IFhlbkJsa0RldiAqYmxr ZGV2ID0gaW9yZXEtPmJsa2RldjsKPiArCj4gICAgICAgaW9yZXEtPmFpb19pbmZsaWdodCsrOwo+ ICAgICAgIGlmIChpb3JlcS0+cHJlc3luYykgewo+ICAgICAgICAgICBibGtfYWlvX2ZsdXNoKGlv cmVxLT5ibGtkZXYtPmJsaywgcWVtdV9haW9fY29tcGxldGUsIGlvcmVxKTsKPiBAQCAtNTk0LDE5 ICs3NDEsMTIgQEAgc3RhdGljIGludCBpb3JlcV9ydW5pb19xZW11X2FpbyhzdHJ1Y3QgaW9yZXEg KmlvcmVxKQo+ICAgICAgIH0KPiAgICAgICBkZWZhdWx0Ogo+ICAgICAgICAgICAvKiB1bmtub3du IG9wZXJhdGlvbiAoc2hvdWxkbid0IGhhcHBlbiAtLSBwYXJzZSBjYXRjaGVzIHRoaXMpICovCj4g LSAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgcmV0dXJuIC0xOwo+ICAgICAgIH0KPgo+ICAg ICAgIHFlbXVfYWlvX2NvbXBsZXRlKGlvcmVxLCAwKTsKPgo+ICAgICAgIHJldHVybiAwOwo+IC0K PiAtZXJyOgo+IC0gICAgaW9yZXFfdW5tYXAoaW9yZXEpOwo+IC1lcnJfbm9fbWFwOgo+IC0gICAg aW9yZXFfZmluaXNoKGlvcmVxKTsKPiAtICAgIGlvcmVxLT5zdGF0dXMgPSBCTEtJRl9SU1BfRVJS T1I7Cj4gLSAgICByZXR1cm4gLTE7Cj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQgYmxrX3NlbmRfcmVz cG9uc2Vfb25lKHN0cnVjdCBpb3JlcSAqaW9yZXEpCj4gQEAgLTEwMjAsMTAgKzExNjAsMTcgQEAg c3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCj4KPiAgICAg ICB4ZW5fYmVfYmluZF9ldnRjaG4oJmJsa2Rldi0+eGVuZGV2KTsKPgo+ICsgICAgYmxrZGV2LT5m ZWF0dXJlX2dyYW50X2NvcHkgPQo+ICsgICAgICAgICAgICAgICAgKHhlbmdudHRhYl9ncmFudF9j b3B5KGJsa2Rldi0+eGVuZGV2LmdudHRhYmRldiwgMCwgTlVMTCkgPT0gMCk7Cj4gKwo+ICsgICAg eGVuX2JlX3ByaW50ZigmYmxrZGV2LT54ZW5kZXYsIDMsICJncmFudCBjb3B5IG9wZXJhdGlvbiAl c1xuIiwKPiArICAgICAgICAgICAgICAgICAgYmxrZGV2LT5mZWF0dXJlX2dyYW50X2NvcHkgPyAi ZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKPiArCj4gICAgICAgeGVuX2JlX3ByaW50ZigmYmxrZGV2 LT54ZW5kZXYsIDEsICJvazogcHJvdG8gJXMsIHJpbmctcmVmICVkLCAiCj4gICAgICAgICAgICAg ICAgICAgICAicmVtb3RlIHBvcnQgJWQsIGxvY2FsIHBvcnQgJWRcbiIsCj4gICAgICAgICAgICAg ICAgICAgICBibGtkZXYtPnhlbmRldi5wcm90b2NvbCwgYmxrZGV2LT5yaW5nX3JlZiwKPiAgICAg ICAgICAgICAgICAgICAgIGJsa2Rldi0+eGVuZGV2LnJlbW90ZV9wb3J0LCBibGtkZXYtPnhlbmRl di5sb2NhbF9wb3J0KTsKPiArCj4gICAgICAgcmV0dXJuIDA7Cj4gICB9Cj4KPiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oIGIvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1v bi5oCj4gaW5kZXggNGFjMGM2Zi4uYmVkNTMwNyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2h3L3hl bi94ZW5fY29tbW9uLmgKPiArKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKPiBAQCAt MTQsNiArMTQsOCBAQAo+ICAgI2VuZGlmCj4gICAjaW5jbHVkZSA8eGVuL2lvL3hlbmJ1cy5oPgo+ Cj4gKyNpbmNsdWRlIDx4ZW5nbnR0YWIuaD4KPiArCj4gICAjaW5jbHVkZSAiaHcvaHcuaCIKPiAg ICNpbmNsdWRlICJody94ZW4veGVuLmgiCj4gICAjaW5jbHVkZSAiaHcvcGNpL3BjaS5oIgo+CgpX aGVuIGl0IGNvbWVzIHRvIHRoYXQgc2Vjb25kIHBhcnQgb2YgdGhlIHBhdGNoLCBzaG91bGQgSSBk byBzb21lIGNoYW5nZXMgCmhlcmU/CgpQYXVsaW5hCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK