From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulina Szubarczyk Subject: [PATCH v3 2/2] qdisk - hw/block/xen_disk: grant copy implementation Date: Wed, 22 Jun 2016 10:38:53 +0200 Message-ID: <1466584733-19459-3-git-send-email-paulinaszubarczyk@gmail.com> References: <1466584733-19459-1-git-send-email-paulinaszubarczyk@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bFdkc-0005CX-NT for xen-devel@lists.xenproject.org; Wed, 22 Jun 2016 08:43:10 +0000 Received: by mail-lf0-f67.google.com with SMTP id a2so12509908lfe.3 for ; Wed, 22 Jun 2016 01:43:09 -0700 (PDT) In-Reply-To: <1466584733-19459-1-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: sstabellini@kernel.org, wei.liu2@citrix.com, Paulina Szubarczyk , ian.jackson@eu.citrix.com, david.vrabel@citrix.com, anthony.perard@citrix.com List-Id: xen-devel@lists.xenproject.org Q29weSBkYXRhIG9wZXJhdGVkIG9uIGR1cmluZyByZXF1ZXN0IGZyb20vdG8gbG9jYWwgYnVmZmVy cyB0by9mcm9tCnRoZSBncmFudCByZWZlcmVuY2VzLgoKQmVmb3JlIGdyYW50IGNvcHkgb3BlcmF0 aW9uIGxvY2FsIGJ1ZmZlcnMgbXVzdCBiZSBhbGxvY2F0ZWQgd2hhdCBpcwpkb25lIGJ5IGNhbGxp bmcgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMuIEZvciB0aGUgJ3JlYWQnIG9wZXJhdGlvbiwKZmly c3QsIHRoZSBxZW11IGRldmljZSBpbnZva2VzIHRoZSByZWFkIG9wZXJhdGlvbiBvbiBsb2NhbCBi dWZmZXJzCmFuZCBvbiB0aGUgY29tcGxldGlvbiBncmFudCBjb3B5IGlzIGNhbGxlZCBhbmQgYnVm ZmVycyBhcmUgZnJlZWQuCkZvciB0aGUgJ3dyaXRlJyBvcGVyYXRpb24gZ3JhbnQgY29weSBpcyBw ZXJmb3JtZWQgYmVmb3JlIGludm9raW5nCndyaXRlIGJ5IHFlbXUgZGV2aWNlLgoKQSBuZXcgdmFs dWUgJ2ZlYXR1cmVfZ3JhbnRfY29weScgaXMgYWRkZWQgdG8gcmVjb2duaXplIHdoZW4gdGhlCmdy YW50IGNvcHkgb3BlcmF0aW9uIGlzIHN1cHBvcnRlZCBieSBhIGd1ZXN0LgpUaGUgYm9keSBvZiB0 aGUgZnVuY3Rpb24gJ2lvcmVxX3J1bmlvX3FlbXVfYWlvJyBpcyBtb3ZlZCB0bwonaW9yZXFfcnVu aW9fcWVtdV9haW9fYmxrJyBhbmQgaW4gdGhlICdpb3JlcV9ydW5pb19xZW11X2FpbycgZGVwZW5k aW5nCm9uIHRoZSBzdXBwb3J0IGZvciBncmFudCBjb3B5IGFjY29yZGluZyBjaGVja3MsIGluaXRp YWxpemF0aW9uLCBncmFudApvcGVyYXRpb24gYXJlIG1hZGUsIHRoZW4gdGhlICdpb3JlcV9ydW5p b19xZW11X2Fpb19ibGsnIGZ1bmN0aW9uIGlzCmNhbGxlZC4KClNpZ25lZC1vZmYtYnk6IFBhdWxp bmEgU3p1YmFyY3p5ayA8cGF1bGluYXN6dWJhcmN6eWtAZ21haWwuY29tPgotLS0KQ2hhbmdlcyBz aW5jZSB2MjoKLSB0byB1c2UgdGhlIHhlbmdudHRhYl8qIGZ1bmN0aW9uIGRpcmVjdGx5IGFkZGVk IC1seGVuZ250dGFiIHRvIGNvbmZpZ3VyZQogIGFuZCBpbmNsdWRlIDx4ZW5nbnR0YWIuaD4gaW4g aW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCi0gaW4gaW9yZXFfY29weSByZW1vdmVkIGFuIG91 dCBwYXRoLCBjaGFuZ2VkIGEgbG9nIGxldmVsLCBtYWRlIGV4cGxpY2l0IAogIGFzc2lnbmVtZW50 IHRvICd4ZW5nbnR0YWJfY29weV9ncmFudF9zZWdtZW50JwoqIEkgZGlkIG5vdCBjaGFuZ2UgdGhl IHdheSBvZiB0ZXN0aW5nIGlmIGdyYW50X2NvcHkgb3BlcmF0aW9uIGlzIGltcGxlbWVudGVkLgog IEFzIGZhciBhcyBJIHVuZGVyc3RhbmQgaWYgdGhlIGNvZGUgZnJvbSBnbnR0YWJfdW5pbXAuYyBp cyB1c2VkIHRoZW4gdGhlIGdudHRhYiAKICBkZXZpY2UgaXMgdW5hdmFpbGFibGUgYW5kIHRoZSBo YW5kbGVyIHRvIGdudGRldiB3b3VsZCBiZSBpbnZhbGlkLiBCdXQgCiAgaWYgdGhlIGhhbmRsZXIg aXMgdmFsaWQgdGhlbiB0aGUgaW9jdGwgc2hvdWxkIHJldHVybiBvcGVyYXRpb24gdW5pbXBsZW1l bnRlZCAKICBpZiB0aGUgZ250ZGV2IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uLgoK IGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogaHcvYmxvY2sveGVuX2Rpc2su YyAgICAgICAgIHwgMTcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tCiBpbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmggfCAgIDIgKwogMyBmaWxlcyBjaGFuZ2Vk LCAxNjIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29uZmln dXJlIGIvY29uZmlndXJlCmluZGV4IGU0MTg3NmEuLjM1NWQzZmEgMTAwNzU1Ci0tLSBhL2NvbmZp Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE4NDMsNyArMTg0Myw3IEBAIGZpCiAjIHhlbiBwcm9i ZQogCiBpZiB0ZXN0ICIkeGVuIiAhPSAibm8iIDsgdGhlbgotICB4ZW5fbGlicz0iLWx4ZW5zdG9y ZSAtbHhlbmN0cmwgLWx4ZW5ndWVzdCIKKyAgeGVuX2xpYnM9Ii1seGVuc3RvcmUgLWx4ZW5jdHJs IC1seGVuZ3Vlc3QgLWx4ZW5nbnR0YWIiCiAKICAgIyBGaXJzdCB3ZSB0ZXN0IHdoZXRoZXIgWGVu IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBhcmUgYXZhaWxhYmxlLgogICAjIElmIG5vLCB3ZSBhcmUg ZG9uZSBhbmQgdGhlcmUgaXMgbm8gWGVuIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9ody9ibG9jay94 ZW5fZGlzay5jIGIvaHcvYmxvY2sveGVuX2Rpc2suYwppbmRleCAzN2UxNGQxLi40ZWNhMDZhIDEw MDY0NAotLS0gYS9ody9ibG9jay94ZW5fZGlzay5jCisrKyBiL2h3L2Jsb2NrL3hlbl9kaXNrLmMK QEAgLTEzMSw2ICsxMzEsOSBAQCBzdHJ1Y3QgWGVuQmxrRGV2IHsKICAgICB1bnNpZ25lZCBpbnQg ICAgICAgIHBlcnNpc3RlbnRfZ250X2NvdW50OwogICAgIHVuc2lnbmVkIGludCAgICAgICAgbWF4 X2dyYW50czsKIAorICAgIC8qIEdyYW50IGNvcHkgKi8KKyAgICBnYm9vbGVhbiAgICAgICAgICAg IGZlYXR1cmVfZ3JhbnRfY29weTsKKwogICAgIC8qIHFlbXUgYmxvY2sgZHJpdmVyICovCiAgICAg RHJpdmVJbmZvICAgICAgICAgICAqZGluZm87CiAgICAgQmxvY2tCYWNrZW5kICAgICAgICAqYmxr OwpAQCAtNTAwLDYgKzUwMyw5OSBAQCBzdGF0aWMgaW50IGlvcmVxX21hcChzdHJ1Y3QgaW9yZXEg KmlvcmVxKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCogZ2V0X2J1ZmZlcihpbnQg Y291bnQpCit7CisgICAgcmV0dXJuIHhjX21lbWFsaWduKHhlbl94YywgWENfUEFHRV9TSVpFLCBj b3VudCpYQ19QQUdFX1NJWkUpOworfQorCitzdGF0aWMgdm9pZCBmcmVlX2J1ZmZlcnMoc3RydWN0 IGlvcmVxICppb3JlcSkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBpb3Jl cS0+di5uaW92OyBpKyspIHsKKyAgICAgICAgaW9yZXEtPnBhZ2VbaV0gPSBOVUxMOworICAgIH0K KworICAgIGZyZWUoaW9yZXEtPnBhZ2VzKTsKK30KKworc3RhdGljIGludCBpb3JlcV9pbml0X2Nv cHlfYnVmZmVycyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKSB7CisgICAgaW50IGk7CisKKyAgICBpZiAo aW9yZXEtPnYubmlvdiA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlv cmVxLT5wYWdlcyA9IGdldF9idWZmZXIoaW9yZXEtPnYubmlvdik7CisgICAgaWYgKCFpb3JlcS0+ cGFnZXMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkg PCBpb3JlcS0+di5uaW92OyBpKyspIHsKKyAgICAgICAgaW9yZXEtPnBhZ2VbaV0gPSBpb3JlcS0+ cGFnZXMgKyBpKlhDX1BBR0VfU0laRTsKKyAgICAgICAgaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNl ICs9ICh1aW50cHRyX3QpaW9yZXEtPnBhZ2VbaV07CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgaW9yZXFfY29weShzdHJ1Y3QgaW9yZXEgKmlvcmVxKQoreworICAgIFhl bkdudHRhYiBnbnQgPSBpb3JlcS0+YmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2OworICAgIHhlbmdu dHRhYl9ncmFudF9jb3B5X3NlZ21lbnRfdCBzZWdzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVR VUVTVF07CisgICAgaW50IGksIGNvdW50ID0gMCwgciwgcmM7CisgICAgaW50NjRfdCBmaWxlX2Js ayA9IGlvcmVxLT5ibGtkZXYtPmZpbGVfYmxrOworCisgICAgaWYgKGlvcmVxLT52Lm5pb3YgPT0g MCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb3VudCA9IGlvcmVxLT52Lm5p b3Y7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCisgICAgICAgIGlmIChp b3JlcS0+cmVxLm9wZXJhdGlvbiA9PSBCTEtJRl9PUF9SRUFEKSB7CisgICAgICAgICAgICBzZWdz W2ldLmZsYWdzID0gR05UQ09QWV9kZXN0X2dyZWY7CisgICAgICAgICAgICBzZWdzW2ldLmRlc3Qu Zm9yZWlnbi5yZWYgPSBpb3JlcS0+cmVmc1tpXTsKKyAgICAgICAgICAgIHNlZ3NbaV0uZGVzdC5m b3JlaWduLmRvbWlkID0gaW9yZXEtPmRvbWlkc1tpXTsKKyAgICAgICAgICAgIHNlZ3NbaV0uZGVz dC5mb3JlaWduLm9mZnNldCA9IGlvcmVxLT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKiBmaWxlX2Js azsKKyAgICAgICAgICAgIHNlZ3NbaV0uc291cmNlLnZpcnQgPSBpb3JlcS0+di5pb3ZbaV0uaW92 X2Jhc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZWdzW2ldLmZsYWdzID0gR05U Q09QWV9zb3VyY2VfZ3JlZjsKKyAgICAgICAgICAgIHNlZ3NbaV0uc291cmNlLmZvcmVpZ24ucmVm ID0gaW9yZXEtPnJlZnNbaV07CisgICAgICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLmRv bWlkID0gaW9yZXEtPmRvbWlkc1tpXTsKKyAgICAgICAgICAgIHNlZ3NbaV0uc291cmNlLmZvcmVp Z24ub2Zmc2V0ID0gaW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCAqIGZpbGVfYmxrOworICAg ICAgICAgICAgc2Vnc1tpXS5kZXN0LnZpcnQgPSBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2U7Cisg ICAgICAgIH0KKyAgICAgICAgc2Vnc1tpXS5sZW4gPSAoaW9yZXEtPnJlcS5zZWdbaV0ubGFzdF9z ZWN0CisgICAgICAgICAgICAgICAgICAgICAgIC0gaW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2Vj dCArIDEpICogZmlsZV9ibGs7CisKKyAgICB9CisKKyAgICByYyA9IHhlbmdudHRhYl9ncmFudF9j b3B5KGdudCwgY291bnQsIHNlZ3MpOworCisgICAgaWYgKHJjKSB7CisgICAgICAgIHhlbl9iZV9w cmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAi ZmFpbGVkIHRvIGNvcHkgZGF0YSAlZCBcbiIsIHJjKTsKKyAgICAgICAgaW9yZXEtPmFpb19lcnJv cnMrKzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIHIgPSAwOwor ICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChz ZWdzW2ldLnN0YXR1cyAhPSBHTlRTVF9va2F5KSB7CisgICAgICAgICAgICB4ZW5fYmVfcHJpbnRm KCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJm YWlsZWQgdG8gY29weSBkYXRhICVkIGZvciBncmVmICVkLCBkb21pZCAlZFxuIiwgcmMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvcmVxLT5yZWZzW2ldLCBpb3JlcS0+ZG9taWRzW2ldKTsK KyAgICAgICAgICAgIGlvcmVxLT5haW9fZXJyb3JzKys7CisgICAgICAgICAgICByID0gLTE7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcjsKK30KKwogc3RhdGljIGludCBpb3JlcV9y dW5pb19xZW11X2FpbyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKTsKIAogc3RhdGljIHZvaWQgcWVtdV9h aW9fY29tcGxldGUodm9pZCAqb3BhcXVlLCBpbnQgcmV0KQpAQCAtNTI4LDggKzYyNCwzMSBAQCBz dGF0aWMgdm9pZCBxZW11X2Fpb19jb21wbGV0ZSh2b2lkICpvcGFxdWUsIGludCByZXQpCiAgICAg ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoaW9yZXEtPmJsa2Rldi0+ZmVhdHVyZV9ncmFu dF9jb3B5KSB7CisgICAgICAgIHN3aXRjaCAoaW9yZXEtPnJlcS5vcGVyYXRpb24pIHsKKyAgICAg ICAgY2FzZSBCTEtJRl9PUF9SRUFEOgorICAgICAgICAgICAgLyogaW4gY2FzZSBvZiBmYWlsdXJl IGlvcmVxLT5haW9fZXJyb3JzIGlzIGluY3JlYXNlZCAqLworICAgICAgICAgICAgaW9yZXFfY29w eShpb3JlcSk7CisgICAgICAgICAgICBmcmVlX2J1ZmZlcnMoaW9yZXEpOworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIGNhc2UgQkxLSUZfT1BfV1JJVEU6CisgICAgICAgIGNhc2UgQkxLSUZf T1BfRkxVU0hfRElTS0NBQ0hFOgorICAgICAgICAgICAgaWYgKCFpb3JlcS0+cmVxLm5yX3NlZ21l bnRzKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBmcmVlX2J1ZmZlcnMoaW9yZXEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1 bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlvcmVxLT5z dGF0dXMgPSBpb3JlcS0+YWlvX2Vycm9ycyA/IEJMS0lGX1JTUF9FUlJPUiA6IEJMS0lGX1JTUF9P S0FZOwotICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKKworICAgIGlmICghaW9yZXEtPmJsa2Rldi0+ ZmVhdHVyZV9ncmFudF9jb3B5KSB7CisgICAgICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKKyAgICB9 CisKICAgICBpb3JlcV9maW5pc2goaW9yZXEpOwogICAgIHN3aXRjaCAoaW9yZXEtPnJlcS5vcGVy YXRpb24pIHsKICAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgpAQCAtNTQ3LDE0ICs2NjYsNDIgQEAg c3RhdGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVlLCBpbnQgcmV0KQogICAg IHFlbXVfYmhfc2NoZWR1bGUoaW9yZXEtPmJsa2Rldi0+YmgpOwogfQogCitzdGF0aWMgaW50IGlv cmVxX3J1bmlvX3FlbXVfYWlvX2JsayhzdHJ1Y3QgaW9yZXEgKmlvcmVxKTsKKwogc3RhdGljIGlu dCBpb3JlcV9ydW5pb19xZW11X2FpbyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogewotICAgIHN0cnVj dCBYZW5CbGtEZXYgKmJsa2RldiA9IGlvcmVxLT5ibGtkZXY7CisgICAgaWYgKGlvcmVxLT5ibGtk ZXYtPmZlYXR1cmVfZ3JhbnRfY29weSkgeworCisgICAgICAgIGlvcmVxX2luaXRfY29weV9idWZm ZXJzKGlvcmVxKTsKKyAgICAgICAgaWYgKGlvcmVxLT5yZXEubnJfc2VnbWVudHMgJiYgKGlvcmVx LT5yZXEub3BlcmF0aW9uID09IEJMS0lGX09QX1dSSVRFIHx8CisgICAgICAgICAgICBpb3JlcS0+ cmVxLm9wZXJhdGlvbiA9PSBCTEtJRl9PUF9GTFVTSF9ESVNLQ0FDSEUpKSB7CisgICAgICAgICAg ICBpZiAoaW9yZXFfY29weShpb3JlcSkpIHsKKyAgICAgICAgICAgICAgICBmcmVlX2J1ZmZlcnMo aW9yZXEpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgfQorICAgICAg ICB9CisgICAgICAgIGlmIChpb3JlcV9ydW5pb19xZW11X2Fpb19ibGsoaW9yZXEpKSBnb3RvIGVy cjsKKworICAgIH0gZWxzZSB7CiAKLSAgICBpZiAoaW9yZXEtPnJlcS5ucl9zZWdtZW50cyAmJiBp b3JlcV9tYXAoaW9yZXEpID09IC0xKSB7Ci0gICAgICAgIGdvdG8gZXJyX25vX21hcDsKKyAgICAg ICAgaWYgKGlvcmVxLT5yZXEubnJfc2VnbWVudHMgJiYgaW9yZXFfbWFwKGlvcmVxKSkgZ290byBl cnI7CisgICAgICAgIGlmIChpb3JlcV9ydW5pb19xZW11X2Fpb19ibGsoaW9yZXEpKSB7CisgICAg ICAgICAgICBpb3JlcV91bm1hcChpb3JlcSk7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAg ICAgfQogICAgIH0KIAorICAgIHJldHVybiAwOworZXJyOgorICAgIGlvcmVxX2ZpbmlzaChpb3Jl cSk7CisgICAgaW9yZXEtPnN0YXR1cyA9IEJMS0lGX1JTUF9FUlJPUjsKKyAgICByZXR1cm4gLTE7 Cit9CisKK3N0YXRpYyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW9fYmxrKHN0cnVjdCBpb3JlcSAq aW9yZXEpCit7CisgICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0gaW9yZXEtPmJsa2RldjsK KwogICAgIGlvcmVxLT5haW9faW5mbGlnaHQrKzsKICAgICBpZiAoaW9yZXEtPnByZXN5bmMpIHsK ICAgICAgICAgYmxrX2Fpb19mbHVzaChpb3JlcS0+YmxrZGV2LT5ibGssIHFlbXVfYWlvX2NvbXBs ZXRlLCBpb3JlcSk7CkBAIC01OTQsMTkgKzc0MSwxMiBAQCBzdGF0aWMgaW50IGlvcmVxX3J1bmlv X3FlbXVfYWlvKHN0cnVjdCBpb3JlcSAqaW9yZXEpCiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAg ICAgIC8qIHVua25vd24gb3BlcmF0aW9uIChzaG91bGRuJ3QgaGFwcGVuIC0tIHBhcnNlIGNhdGNo ZXMgdGhpcykgKi8KLSAgICAgICAgZ290byBlcnI7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9 CiAKICAgICBxZW11X2Fpb19jb21wbGV0ZShpb3JlcSwgMCk7CiAKICAgICByZXR1cm4gMDsKLQot ZXJyOgotICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKLWVycl9ub19tYXA6Ci0gICAgaW9yZXFfZmlu aXNoKGlvcmVxKTsKLSAgICBpb3JlcS0+c3RhdHVzID0gQkxLSUZfUlNQX0VSUk9SOwotICAgIHJl dHVybiAtMTsKIH0KIAogc3RhdGljIGludCBibGtfc2VuZF9yZXNwb25zZV9vbmUoc3RydWN0IGlv cmVxICppb3JlcSkKQEAgLTEwMjAsMTAgKzExNjAsMTcgQEAgc3RhdGljIGludCBibGtfY29ubmVj dChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAKICAgICB4ZW5fYmVfYmluZF9ldnRjaG4oJmJs a2Rldi0+eGVuZGV2KTsKIAorICAgIGJsa2Rldi0+ZmVhdHVyZV9ncmFudF9jb3B5ID0KKyAgICAg ICAgICAgICAgICAoeGVuZ250dGFiX2dyYW50X2NvcHkoYmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2 LCAwLCBOVUxMKSA9PSAwKTsKKworICAgIHhlbl9iZV9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAz LCAiZ3JhbnQgY29weSBvcGVyYXRpb24gJXNcbiIsCisgICAgICAgICAgICAgICAgICBibGtkZXYt PmZlYXR1cmVfZ3JhbnRfY29weSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOworCiAgICAgeGVu X2JlX3ByaW50ZigmYmxrZGV2LT54ZW5kZXYsIDEsICJvazogcHJvdG8gJXMsIHJpbmctcmVmICVk LCAiCiAgICAgICAgICAgICAgICAgICAicmVtb3RlIHBvcnQgJWQsIGxvY2FsIHBvcnQgJWRcbiIs CiAgICAgICAgICAgICAgICAgICBibGtkZXYtPnhlbmRldi5wcm90b2NvbCwgYmxrZGV2LT5yaW5n X3JlZiwKICAgICAgICAgICAgICAgICAgIGJsa2Rldi0+eGVuZGV2LnJlbW90ZV9wb3J0LCBibGtk ZXYtPnhlbmRldi5sb2NhbF9wb3J0KTsKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQg YS9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmggYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9u LmgKaW5kZXggNGFjMGM2Zi4uYmVkNTMwNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ody94ZW4veGVu X2NvbW1vbi5oCisrKyBiL2luY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaApAQCAtMTQsNiArMTQs OCBAQAogI2VuZGlmCiAjaW5jbHVkZSA8eGVuL2lvL3hlbmJ1cy5oPgogCisjaW5jbHVkZSA8eGVu Z250dGFiLmg+CisKICNpbmNsdWRlICJody9ody5oIgogI2luY2x1ZGUgImh3L3hlbi94ZW4uaCIK ICNpbmNsdWRlICJody9wY2kvcGNpLmgiCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==