From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 6/9] xen_disk: remove use of grant map/unmap Date: Thu, 17 May 2018 16:35:55 +0100 Message-ID: <1526571358-26685-7-git-send-email-paul.durrant@citrix.com> References: <1526571358-26685-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fJKww-0001tZ-4K for xen-devel@lists.xenproject.org; Thu, 17 May 2018 15:36:14 +0000 In-Reply-To: <1526571358-26685-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Kevin Wolf , Paul Durrant , Stefano Stabellini , Max Reitz List-Id: xen-devel@lists.xenproject.org Tm93IHRoYXQgdGhlIChuYXRpdmUgb3IgZW11bGF0ZWQpIHhlbl9iZV9jb3B5X2dyYW50X3JlZnMo KSBoZWxwZXIgaXMKYWx3YXlzIGF2YWlsYWJsZSwgdGhlIHhlbl9kaXNrIGNvZGUgY2FuIGJlIHNp Z25pZmljYW50bHkgc2ltcGxpZmllZCBieQpyZW1vdmluZyBkaXJlY3QgdXNlIG9mIGdyYW50IG1h cCBhbmQgdW5tYXAgb3BlcmF0aW9ucy4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1 bC5kdXJyYW50QGNpdHJpeC5jb20+CkFja2VkLWJ5OiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5w ZXJhcmRAY2l0cml4LmNvbT4KLS0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5p QGtlcm5lbC5vcmc+CkNjOiBLZXZpbiBXb2xmIDxrd29sZkByZWRoYXQuY29tPgpDYzogTWF4IFJl aXR6IDxtcmVpdHpAcmVkaGF0LmNvbT4KCnYyOgogLSBTcXVhc2hlZCBpbiBzZXBhcmF0ZSBwYXRj aGUgcmVtb3ZpbmcgcGVyc2lzdGVudCBncmFudCB1c2UKIC0gUmUtYmFzZWQKLS0tCiBody9ibG9j ay94ZW5fZGlzay5jIHwgMzUyICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAzMjcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaHcvYmxvY2sveGVuX2Rpc2suYyBiL2h3L2Jsb2NrL3hl bl9kaXNrLmMKaW5kZXggZDNiZTQ1YS4uMjhiZThiNiAxMDA2NDQKLS0tIGEvaHcvYmxvY2sveGVu X2Rpc2suYworKysgYi9ody9ibG9jay94ZW5fZGlzay5jCkBAIC0zNiwyNyArMzYsOSBAQAogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICovCiAKLXN0YXRpYyBpbnQgYmF0Y2hfbWFwcyAgID0gMDsKLQotLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwot CiAjZGVmaW5lIEJMT0NLX1NJWkUgIDUxMgogI2RlZmluZSBJT0NCX0NPVU5UICAoQkxLSUZfTUFY X1NFR01FTlRTX1BFUl9SRVFVRVNUICsgMikKIAotc3RydWN0IFBlcnNpc3RlbnRHcmFudCB7Ci0g ICAgdm9pZCAqcGFnZTsKLSAgICBzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXY7Ci19OwotCi10eXBl ZGVmIHN0cnVjdCBQZXJzaXN0ZW50R3JhbnQgUGVyc2lzdGVudEdyYW50OwotCi1zdHJ1Y3QgUGVy c2lzdGVudFJlZ2lvbiB7Ci0gICAgdm9pZCAqYWRkcjsKLSAgICBpbnQgbnVtOwotfTsKLQotdHlw ZWRlZiBzdHJ1Y3QgUGVyc2lzdGVudFJlZ2lvbiBQZXJzaXN0ZW50UmVnaW9uOwotCiBzdHJ1Y3Qg aW9yZXEgewogICAgIGJsa2lmX3JlcXVlc3RfdCAgICAgcmVxOwogICAgIGludDE2X3QgICAgICAg ICAgICAgc3RhdHVzOwpAQCAtNjUsMTQgKzQ3LDExIEBAIHN0cnVjdCBpb3JlcSB7CiAgICAgb2Zm X3QgICAgICAgICAgICAgICBzdGFydDsKICAgICBRRU1VSU9WZWN0b3IgICAgICAgIHY7CiAgICAg aW50ICAgICAgICAgICAgICAgICBwcmVzeW5jOwotICAgIHVpbnQ4X3QgICAgICAgICAgICAgbWFw cGVkOwogCiAgICAgLyogZ3JhbnQgbWFwcGluZyAqLwogICAgIHVpbnQzMl90ICAgICAgICAgICAg cmVmc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwotICAgIGludCAgICAgICAgICAg ICAgICAgcHJvdDsKICAgICB2b2lkICAgICAgICAgICAgICAgICpwYWdlW0JMS0lGX01BWF9TRUdN RU5UU19QRVJfUkVRVUVTVF07CiAgICAgdm9pZCAgICAgICAgICAgICAgICAqcGFnZXM7Ci0gICAg aW50ICAgICAgICAgICAgICAgICBudW1fdW5tYXA7CiAKICAgICAvKiBhaW8gc3RhdHVzICovCiAg ICAgaW50ICAgICAgICAgICAgICAgICBhaW9faW5mbGlnaHQ7CkBAIC0xMDMsNyArODIsNiBAQCBz dHJ1Y3QgWGVuQmxrRGV2IHsKICAgICBpbnQgICAgICAgICAgICAgICAgIHByb3RvY29sOwogICAg IGJsa2lmX2JhY2tfcmluZ3NfdCAgcmluZ3M7CiAgICAgaW50ICAgICAgICAgICAgICAgICBtb3Jl X3dvcms7Ci0gICAgaW50ICAgICAgICAgICAgICAgICBjbnRfbWFwOwogCiAgICAgLyogcmVxdWVz dCBsaXN0cyAqLwogICAgIFFMSVNUX0hFQUQoaW5mbGlnaHRfaGVhZCwgaW9yZXEpIGluZmxpZ2h0 OwpAQCAtMTE0LDEzICs5Miw3IEBAIHN0cnVjdCBYZW5CbGtEZXYgewogICAgIGludCAgICAgICAg ICAgICAgICAgcmVxdWVzdHNfZmluaXNoZWQ7CiAgICAgdW5zaWduZWQgaW50ICAgICAgICBtYXhf cmVxdWVzdHM7CiAKLSAgICAvKiBQZXJzaXN0ZW50IGdyYW50cyBleHRlbnNpb24gKi8KICAgICBn Ym9vbGVhbiAgICAgICAgICAgIGZlYXR1cmVfZGlzY2FyZDsKLSAgICBnYm9vbGVhbiAgICAgICAg ICAgIGZlYXR1cmVfcGVyc2lzdGVudDsKLSAgICBHVHJlZSAgICAgICAgICAgICAgICpwZXJzaXN0 ZW50X2dudHM7Ci0gICAgR1NMaXN0ICAgICAgICAgICAgICAqcGVyc2lzdGVudF9yZWdpb25zOwot ICAgIHVuc2lnbmVkIGludCAgICAgICAgcGVyc2lzdGVudF9nbnRfY291bnQ7Ci0gICAgdW5zaWdu ZWQgaW50ICAgICAgICBtYXhfZ3JhbnRzOwogCiAgICAgLyogcWVtdSBibG9jayBkcml2ZXIgKi8K ICAgICBEcml2ZUluZm8gICAgICAgICAgICpkaW5mbzsKQEAgLTEzOSwxMCArMTExLDggQEAgc3Rh dGljIHZvaWQgaW9yZXFfcmVzZXQoc3RydWN0IGlvcmVxICppb3JlcSkKICAgICBpb3JlcS0+c3Rh dHVzID0gMDsKICAgICBpb3JlcS0+c3RhcnQgPSAwOwogICAgIGlvcmVxLT5wcmVzeW5jID0gMDsK LSAgICBpb3JlcS0+bWFwcGVkID0gMDsKIAogICAgIG1lbXNldChpb3JlcS0+cmVmcywgMCwgc2l6 ZW9mKGlvcmVxLT5yZWZzKSk7Ci0gICAgaW9yZXEtPnByb3QgPSAwOwogICAgIG1lbXNldChpb3Jl cS0+cGFnZSwgMCwgc2l6ZW9mKGlvcmVxLT5wYWdlKSk7CiAgICAgaW9yZXEtPnBhZ2VzID0gTlVM TDsKIApAQCAtMTU2LDM3ICsxMjYsNiBAQCBzdGF0aWMgdm9pZCBpb3JlcV9yZXNldChzdHJ1Y3Qg aW9yZXEgKmlvcmVxKQogICAgIHFlbXVfaW92ZWNfcmVzZXQoJmlvcmVxLT52KTsKIH0KIAotc3Rh dGljIGdpbnQgaW50X2NtcChnY29uc3Rwb2ludGVyIGEsIGdjb25zdHBvaW50ZXIgYiwgZ3BvaW50 ZXIgdXNlcl9kYXRhKQotewotICAgIHVpbnQgdWEgPSBHUE9JTlRFUl9UT19VSU5UKGEpOwotICAg IHVpbnQgdWIgPSBHUE9JTlRFUl9UT19VSU5UKGIpOwotICAgIHJldHVybiAodWEgPiB1YikgLSAo dWEgPCB1Yik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRlc3Ryb3lfZ3JhbnQoZ3BvaW50ZXIgcGdudCkK LXsKLSAgICBQZXJzaXN0ZW50R3JhbnQgKmdyYW50ID0gcGdudDsKLSAgICBzdHJ1Y3QgWGVuQmxr RGV2ICpibGtkZXYgPSBncmFudC0+YmxrZGV2OwotICAgIHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl diA9ICZibGtkZXYtPnhlbmRldjsKLQotICAgIHhlbl9iZV91bm1hcF9ncmFudF9yZWYoeGVuZGV2 LCBncmFudC0+cGFnZSk7Ci0gICAgZ3JhbnQtPmJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQt LTsKLSAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMywgInVubWFwcGVkIGdyYW50ICVwXG4iLCBn cmFudC0+cGFnZSk7Ci0gICAgZ19mcmVlKGdyYW50KTsKLX0KLQotc3RhdGljIHZvaWQgcmVtb3Zl X3BlcnNpc3RlbnRfcmVnaW9uKGdwb2ludGVyIGRhdGEsIGdwb2ludGVyIGRldikKLXsKLSAgICBQ ZXJzaXN0ZW50UmVnaW9uICpyZWdpb24gPSBkYXRhOwotICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJs a2RldiA9IGRldjsKLSAgICBzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYgPSAmYmxrZGV2LT54ZW5k ZXY7Ci0KLSAgICB4ZW5fYmVfdW5tYXBfZ3JhbnRfcmVmcyh4ZW5kZXYsIHJlZ2lvbi0+YWRkciwg cmVnaW9uLT5udW0pOwotICAgIHhlbl9wdl9wcmludGYoeGVuZGV2LCAzLCAidW5tYXBwZWQgZ3Jh bnQgcmVnaW9uICVwIHdpdGggJWQgcGFnZXNcbiIsCi0gICAgICAgICAgICAgICAgICByZWdpb24t PmFkZHIsIHJlZ2lvbi0+bnVtKTsKLSAgICBnX2ZyZWUocmVnaW9uKTsKLX0KLQogc3RhdGljIHN0 cnVjdCBpb3JlcSAqaW9yZXFfc3RhcnQoc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2KQogewogICAg IHN0cnVjdCBpb3JlcSAqaW9yZXEgPSBOVUxMOwpAQCAtMjU0LDcgKzE5Myw2IEBAIHN0YXRpYyBp bnQgaW9yZXFfcGFyc2Uoc3RydWN0IGlvcmVxICppb3JlcSkKICAgICAgICAgICAgICAgICAgIGlv cmVxLT5yZXEuaGFuZGxlLCBpb3JlcS0+cmVxLmlkLCBpb3JlcS0+cmVxLnNlY3Rvcl9udW1iZXIp OwogICAgIHN3aXRjaCAoaW9yZXEtPnJlcS5vcGVyYXRpb24pIHsKICAgICBjYXNlIEJMS0lGX09Q X1JFQUQ6Ci0gICAgICAgIGlvcmVxLT5wcm90ID0gUFJPVF9XUklURTsgLyogdG8gbWVtb3J5ICov CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQkxLSUZfT1BfRkxVU0hfRElTS0NBQ0hFOgogICAg ICAgICBpb3JlcS0+cHJlc3luYyA9IDE7CkBAIC0yNjMsNyArMjAxLDYgQEAgc3RhdGljIGludCBp b3JlcV9wYXJzZShzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAgICAgICB9CiAgICAgICAgIC8qIGZh bGwgdGhyb3VnaCAqLwogICAgIGNhc2UgQkxLSUZfT1BfV1JJVEU6Ci0gICAgICAgIGlvcmVxLT5w cm90ID0gUFJPVF9SRUFEOyAvKiBmcm9tIG1lbW9yeSAqLwogICAgICAgICBicmVhazsKICAgICBj YXNlIEJMS0lGX09QX0RJU0NBUkQ6CiAgICAgICAgIHJldHVybiAwOwpAQCAtMzEwLDE3MSArMjQ3 LDYgQEAgZXJyOgogICAgIHJldHVybiAtMTsKIH0KIAotc3RhdGljIHZvaWQgaW9yZXFfdW5tYXAo c3RydWN0IGlvcmVxICppb3JlcSkKLXsKLSAgICBzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYgPSBp b3JlcS0+YmxrZGV2OwotICAgIHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiA9ICZibGtkZXYtPnhl bmRldjsKLSAgICBpbnQgaTsKLQotICAgIGlmIChpb3JlcS0+bnVtX3VubWFwID09IDAgfHwgaW9y ZXEtPm1hcHBlZCA9PSAwKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGJhdGNo X21hcHMpIHsKLSAgICAgICAgaWYgKCFpb3JlcS0+cGFnZXMpIHsKLSAgICAgICAgICAgIHJldHVy bjsKLSAgICAgICAgfQotICAgICAgICB4ZW5fYmVfdW5tYXBfZ3JhbnRfcmVmcyh4ZW5kZXYsIGlv cmVxLT5wYWdlcywgaW9yZXEtPm51bV91bm1hcCk7Ci0gICAgICAgIGlvcmVxLT5ibGtkZXYtPmNu dF9tYXAgLT0gaW9yZXEtPm51bV91bm1hcDsKLSAgICAgICAgaW9yZXEtPnBhZ2VzID0gTlVMTDsK LSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPm51bV91bm1hcDsg aSsrKSB7Ci0gICAgICAgICAgICBpZiAoIWlvcmVxLT5wYWdlW2ldKSB7Ci0gICAgICAgICAgICAg ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ZW5fYmVfdW5tYXBfZ3Jh bnRfcmVmKHhlbmRldiwgaW9yZXEtPnBhZ2VbaV0pOwotICAgICAgICAgICAgaW9yZXEtPmJsa2Rl di0+Y250X21hcC0tOwotICAgICAgICAgICAgaW9yZXEtPnBhZ2VbaV0gPSBOVUxMOwotICAgICAg ICB9Ci0gICAgfQotICAgIGlvcmVxLT5tYXBwZWQgPSAwOwotfQotCi1zdGF0aWMgaW50IGlvcmVx X21hcChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQotewotICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJsa2Rl diA9IGlvcmVxLT5ibGtkZXY7Ci0gICAgc3RydWN0IFhlbkRldmljZSAqeGVuZGV2ID0gJmJsa2Rl di0+eGVuZGV2OwotICAgIHVpbnQzMl90IHJlZnNbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFV RVNUXTsKLSAgICB2b2lkICpwYWdlW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Ci0g ICAgaW50IGksIGosIG5ld19tYXBzID0gMDsKLSAgICBQZXJzaXN0ZW50R3JhbnQgKmdyYW50Owot ICAgIFBlcnNpc3RlbnRSZWdpb24gKnJlZ2lvbjsKLSAgICAvKiByZWZzIHZhcmlhYmxlIHdpbGwg Y29udGFpbiB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5Ci0gICAgICogdG8gbWFwIHRoZSBncmFu dHMgdGhhdCBhcmUgbmVlZGVkIHRvIGZ1bGZpbGwgdGhpcyByZXF1ZXN0LgotICAgICAqCi0gICAg ICogQWZ0ZXIgbWFwcGluZyB0aGUgbmVlZGVkIGdyYW50cywgdGhlIHBhZ2UgYXJyYXkgd2lsbCBj b250YWluIHRoZQotICAgICAqIG1lbW9yeSBhZGRyZXNzIG9mIGVhY2ggZ3JhbnRlZCBwYWdlIGlu IHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gaW9yZXEKLSAgICAgKiAoZGlzcmVnYXJkaW5nIGlmIGl0 J3MgYSBwZXJzaXN0ZW50IGdyYW50IG9yIG5vdCkuCi0gICAgICovCi0KLSAgICBpZiAoaW9yZXEt PnYubmlvdiA9PSAwIHx8IGlvcmVxLT5tYXBwZWQgPT0gMSkgewotICAgICAgICByZXR1cm4gMDsK LSAgICB9Ci0gICAgaWYgKGlvcmVxLT5ibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewotICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7Ci0gICAgICAgICAgICBn cmFudCA9IGdfdHJlZV9sb29rdXAoaW9yZXEtPmJsa2Rldi0+cGVyc2lzdGVudF9nbnRzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VJTlRfVE9fUE9JTlRFUihpb3JlcS0+ cmVmc1tpXSkpOwotCi0gICAgICAgICAgICBpZiAoZ3JhbnQgIT0gTlVMTCkgewotICAgICAgICAg ICAgICAgIHBhZ2VbaV0gPSBncmFudC0+cGFnZTsKLSAgICAgICAgICAgICAgICB4ZW5fcHZfcHJp bnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAidXNpbmcgcGVyc2lzdGVudC1ncmFudCAlIiBQUkl1MzIgIlxuIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlvcmVxLT5yZWZzW2ldKTsKLSAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgICAgIC8qIEFkZCB0aGUgZ3JhbnQgdG8gdGhlIGxpc3Qgb2YgZ3Jh bnRzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICogc2hvdWxkIGJlIG1hcHBlZAotICAgICAg ICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgcmVmc1tuZXdfbWFwc10gPSBp b3JlcS0+cmVmc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgcGFnZVtpXSA9IE5VTEw7Ci0gICAg ICAgICAgICAgICAgICAgIG5ld19tYXBzKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg ICAgICAgLyogU2V0IHRoZSBwcm90ZWN0aW9uIHRvIFJXLCBzaW5jZSBncmFudHMgbWF5IGJlIHJl dXNlZCBsYXRlcgotICAgICAgICAgKiB3aXRoIGEgZGlmZmVyZW50IHByb3RlY3Rpb24gdGhhbiB0 aGUgb25lIG5lZWRlZCBmb3IgdGhpcyByZXF1ZXN0Ci0gICAgICAgICAqLwotICAgICAgICBpb3Jl cS0+cHJvdCA9IFBST1RfV1JJVEUgfCBQUk9UX1JFQUQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg LyogQWxsIGdyYW50cyBpbiB0aGUgcmVxdWVzdCBzaG91bGQgYmUgbWFwcGVkICovCi0gICAgICAg IG1lbWNweShyZWZzLCBpb3JlcS0+cmVmcywgc2l6ZW9mKHJlZnMpKTsKLSAgICAgICAgbWVtc2V0 KHBhZ2UsIDAsIHNpemVvZihwYWdlKSk7Ci0gICAgICAgIG5ld19tYXBzID0gaW9yZXEtPnYubmlv djsKLSAgICB9Ci0KLSAgICBpZiAoYmF0Y2hfbWFwcyAmJiBuZXdfbWFwcykgewotICAgICAgICBp b3JlcS0+cGFnZXMgPSB4ZW5fYmVfbWFwX2dyYW50X3JlZnMoeGVuZGV2LCByZWZzLCBuZXdfbWFw cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvcmVxLT5w cm90KTsKLSAgICAgICAgaWYgKGlvcmVxLT5wYWdlcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB4 ZW5fcHZfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICJjYW4ndCBtYXAgJWQgZ3JhbnQgcmVmcyAoJXMsICVkIG1hcHMpXG4iLAotICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFwcywgc3RyZXJyb3IoZXJybm8pLCBpb3JlcS0+ YmxrZGV2LT5jbnRfbWFwKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAg ICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGlvcmVxLT52Lm5pb3Y7IGkrKykgewotICAgICAg ICAgICAgaWYgKHBhZ2VbaV0gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHBhZ2VbaV0gPSBp b3JlcS0+cGFnZXMgKyAoaisrKSAqIFhDX1BBR0VfU0laRTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgfQotICAgICAgICBpb3JlcS0+YmxrZGV2LT5jbnRfbWFwICs9IG5ld19tYXBzOwotICAgIH0g ZWxzZSBpZiAobmV3X21hcHMpICB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXdfbWFwczsg aSsrKSB7Ci0gICAgICAgICAgICBpb3JlcS0+cGFnZVtpXSA9IHhlbl9iZV9tYXBfZ3JhbnRfcmVm KHhlbmRldiwgcmVmc1tpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW9yZXEtPnByb3QpOwotICAgICAgICAgICAgaWYgKGlvcmVxLT5wYWdlW2ld ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKCZpb3JlcS0+YmxrZGV2 LT54ZW5kZXYsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgbWFwIGdy YW50IHJlZiAlZCAoJXMsICVkIG1hcHMpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVmc1tpXSwgc3RyZXJyb3IoZXJybm8pLCBpb3JlcS0+YmxrZGV2LT5jbnRfbWFwKTsKLSAg ICAgICAgICAgICAgICBpb3JlcS0+bWFwcGVkID0gMTsKLSAgICAgICAgICAgICAgICBpb3JlcV91 bm1hcChpb3JlcSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQot ICAgICAgICAgICAgaW9yZXEtPmJsa2Rldi0+Y250X21hcCsrOwotICAgICAgICB9Ci0gICAgICAg IGZvciAoaSA9IDAsIGogPSAwOyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7Ci0gICAgICAgICAg ICBpZiAocGFnZVtpXSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcGFnZVtpXSA9IGlvcmVx LT5wYWdlW2orK107Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGlv cmVxLT5ibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCAmJiBuZXdfbWFwcyAhPSAwICYmCi0gICAg ICAgICghYmF0Y2hfbWFwcyB8fCAoaW9yZXEtPmJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQg KyBuZXdfbWFwcyA8PQotICAgICAgICBpb3JlcS0+YmxrZGV2LT5tYXhfZ3JhbnRzKSkpIHsKLSAg ICAgICAgLyoKLSAgICAgICAgICogSWYgd2UgYXJlIHVzaW5nIHBlcnNpc3RlbnQgZ3JhbnRzIGFu ZCBiYXRjaCBtYXBwaW5ncyBvbmx5Ci0gICAgICAgICAqIGFkZCB0aGUgbmV3IG1hcHMgdG8gdGhl IGxpc3Qgb2YgcGVyc2lzdGVudCBncmFudHMgaWYgdGhlIHdob2xlCi0gICAgICAgICAqIGFyZWEg Y2FuIGJlIHBlcnNpc3RlbnRseSBtYXBwZWQuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoYmF0 Y2hfbWFwcykgewotICAgICAgICAgICAgcmVnaW9uID0gZ19tYWxsb2MwKHNpemVvZigqcmVnaW9u KSk7Ci0gICAgICAgICAgICByZWdpb24tPmFkZHIgPSBpb3JlcS0+cGFnZXM7Ci0gICAgICAgICAg ICByZWdpb24tPm51bSA9IG5ld19tYXBzOwotICAgICAgICAgICAgaW9yZXEtPmJsa2Rldi0+cGVy c2lzdGVudF9yZWdpb25zID0gZ19zbGlzdF9hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYtPnBlcnNpc3RlbnRfcmVnaW9ucywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uKTsKLSAg ICAgICAgfQotICAgICAgICB3aGlsZSAoKGlvcmVxLT5ibGtkZXYtPnBlcnNpc3RlbnRfZ250X2Nv dW50IDwgaW9yZXEtPmJsa2Rldi0+bWF4X2dyYW50cykKLSAgICAgICAgICAgICAgJiYgbmV3X21h cHMpIHsKLSAgICAgICAgICAgIC8qIEdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgbmV3bHkgbWFwcGVk IGdyYW50cyBhbmQgYWRkIGFzIG1hbnkKLSAgICAgICAgICAgICAqIGFzIHBvc3NpYmxlIHRvIHRo ZSBsaXN0IG9mIHBlcnNpc3RlbnRseSBtYXBwZWQgZ3JhbnRzLgotICAgICAgICAgICAgICoKLSAg ICAgICAgICAgICAqIFNpbmNlIHdlIHN0YXJ0IGF0IHRoZSBlbmQgb2YgaW9yZXEtPnBhZ2Uocyks IHdlIG9ubHkgbmVlZAotICAgICAgICAgICAgICogdG8gZGVjcmVhc2UgbmV3X21hcHMgdG8gcHJl dmVudCB0aGlzIGdyYW50ZWQgcGFnZXMgZnJvbQotICAgICAgICAgICAgICogYmVpbmcgdW5tYXBw ZWQgaW4gaW9yZXFfdW5tYXAuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGdyYW50ID0g Z19tYWxsb2MwKHNpemVvZigqZ3JhbnQpKTsKLSAgICAgICAgICAgIG5ld19tYXBzLS07Ci0gICAg ICAgICAgICBpZiAoYmF0Y2hfbWFwcykgewotICAgICAgICAgICAgICAgIGdyYW50LT5wYWdlID0g aW9yZXEtPnBhZ2VzICsgKG5ld19tYXBzKSAqIFhDX1BBR0VfU0laRTsKLSAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICAgZ3JhbnQtPnBhZ2UgPSBpb3JlcS0+cGFnZVtuZXdfbWFw c107Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBncmFudC0+YmxrZGV2ID0gaW9yZXEtPmJs a2RldjsKLSAgICAgICAgICAgIHhlbl9wdl9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwg MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImFkZGluZyBncmFudCAlIiBQUkl1MzIgIiBw YWdlOiAlcFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tuZXdfbWFwc10sIGdy YW50LT5wYWdlKTsKLSAgICAgICAgICAgIGdfdHJlZV9pbnNlcnQoaW9yZXEtPmJsa2Rldi0+cGVy c2lzdGVudF9nbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHVUlOVF9UT19QT0lOVEVS KHJlZnNbbmV3X21hcHNdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnQpOwotICAg ICAgICAgICAgaW9yZXEtPmJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQrKzsKLSAgICAgICAg fQotICAgICAgICBhc3NlcnQoIWJhdGNoX21hcHMgfHwgbmV3X21hcHMgPT0gMCk7Ci0gICAgfQot ICAgIGZvciAoaSA9IDA7IGkgPCBpb3JlcS0+di5uaW92OyBpKyspIHsKLSAgICAgICAgaW9yZXEt PnYuaW92W2ldLmlvdl9iYXNlICs9ICh1aW50cHRyX3QpcGFnZVtpXTsKLSAgICB9Ci0gICAgaW9y ZXEtPm1hcHBlZCA9IDE7Ci0gICAgaW9yZXEtPm51bV91bm1hcCA9IG5ld19tYXBzOwotICAgIHJl dHVybiAwOwotfQotCiBzdGF0aWMgdm9pZCBpb3JlcV9mcmVlX2NvcHlfYnVmZmVycyhzdHJ1Y3Qg aW9yZXEgKmlvcmVxKQogewogICAgIGludCBpOwpAQCAtNTcwLDMyICszNDIsMjggQEAgc3RhdGlj IHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVlLCBpbnQgcmV0KQogICAgICAgICBn b3RvIGRvbmU7CiAgICAgfQogCi0gICAgaWYgKHhlbl9mZWF0dXJlX2dyYW50X2NvcHkpIHsKLSAg ICAgICAgc3dpdGNoIChpb3JlcS0+cmVxLm9wZXJhdGlvbikgewotICAgICAgICBjYXNlIEJMS0lG X09QX1JFQUQ6Ci0gICAgICAgICAgICAvKiBpbiBjYXNlIG9mIGZhaWx1cmUgaW9yZXEtPmFpb19l cnJvcnMgaXMgaW5jcmVhc2VkICovCi0gICAgICAgICAgICBpZiAocmV0ID09IDApIHsKLSAgICAg ICAgICAgICAgICBpb3JlcV9ncmFudF9jb3B5KGlvcmVxKTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIGlvcmVxX2ZyZWVfY29weV9idWZmZXJzKGlvcmVxKTsKLSAgICAgICAgICAgIGJyZWFr OwotICAgICAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgotICAgICAgICBjYXNlIEJMS0lGX09QX0ZM VVNIX0RJU0tDQUNIRToKLSAgICAgICAgICAgIGlmICghaW9yZXEtPnJlcS5ucl9zZWdtZW50cykg ewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW9y ZXFfZnJlZV9jb3B5X2J1ZmZlcnMoaW9yZXEpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg IGRlZmF1bHQ6CisgICAgc3dpdGNoIChpb3JlcS0+cmVxLm9wZXJhdGlvbikgeworICAgIGNhc2Ug QkxLSUZfT1BfUkVBRDoKKyAgICAgICAgLyogaW4gY2FzZSBvZiBmYWlsdXJlIGlvcmVxLT5haW9f ZXJyb3JzIGlzIGluY3JlYXNlZCAqLworICAgICAgICBpZiAocmV0ID09IDApIHsKKyAgICAgICAg ICAgIGlvcmVxX2dyYW50X2NvcHkoaW9yZXEpOworICAgICAgICB9CisgICAgICAgIGlvcmVxX2Zy ZWVfY29weV9idWZmZXJzKGlvcmVxKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCTEtJRl9P UF9XUklURToKKyAgICBjYXNlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRToKKyAgICAgICAgaWYg KCFpb3JlcS0+cmVxLm5yX3NlZ21lbnRzKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg fQorICAgICAgICBpb3JlcV9mcmVlX2NvcHlfYnVmZmVycyhpb3JlcSk7CisgICAgICAgIGJyZWFr OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlvcmVxLT5zdGF0 dXMgPSBpb3JlcS0+YWlvX2Vycm9ycyA/IEJMS0lGX1JTUF9FUlJPUiA6IEJMS0lGX1JTUF9PS0FZ OwotICAgIGlmICgheGVuX2ZlYXR1cmVfZ3JhbnRfY29weSkgewotICAgICAgICBpb3JlcV91bm1h cChpb3JlcSk7Ci0gICAgfQogICAgIGlvcmVxX2ZpbmlzaChpb3JlcSk7CisKICAgICBzd2l0Y2gg KGlvcmVxLT5yZXEub3BlcmF0aW9uKSB7CiAgICAgY2FzZSBCTEtJRl9PUF9XUklURToKICAgICBj YXNlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRToKQEAgLTY1NSwxOCArNDIzLDEzIEBAIHN0YXRp YyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKIHsKICAgICBz dHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYgPSBpb3JlcS0+YmxrZGV2OwogCi0gICAgaWYgKHhlbl9m ZWF0dXJlX2dyYW50X2NvcHkpIHsKLSAgICAgICAgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMoaW9y ZXEpOwotICAgICAgICBpZiAoaW9yZXEtPnJlcS5ucl9zZWdtZW50cyAmJiAoaW9yZXEtPnJlcS5v cGVyYXRpb24gPT0gQkxLSUZfT1BfV1JJVEUgfHwKLSAgICAgICAgICAgIGlvcmVxLT5yZXEub3Bl cmF0aW9uID09IEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRSkgJiYKLSAgICAgICAgICAgIGlvcmVx X2dyYW50X2NvcHkoaW9yZXEpKSB7Ci0gICAgICAgICAgICAgICAgaW9yZXFfZnJlZV9jb3B5X2J1 ZmZlcnMoaW9yZXEpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICB9Ci0gICAg fSBlbHNlIHsKLSAgICAgICAgaWYgKGlvcmVxLT5yZXEubnJfc2VnbWVudHMgJiYgaW9yZXFfbWFw KGlvcmVxKSkgewotICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIH0KKyAgICBpb3JlcV9p bml0X2NvcHlfYnVmZmVycyhpb3JlcSk7CisgICAgaWYgKGlvcmVxLT5yZXEubnJfc2VnbWVudHMg JiYKKyAgICAgICAgKGlvcmVxLT5yZXEub3BlcmF0aW9uID09IEJMS0lGX09QX1dSSVRFIHx8Cisg ICAgICAgICBpb3JlcS0+cmVxLm9wZXJhdGlvbiA9PSBCTEtJRl9PUF9GTFVTSF9ESVNLQ0FDSEUp ICYmCisgICAgICAgIGlvcmVxX2dyYW50X2NvcHkoaW9yZXEpKSB7CisgICAgICAgIGlvcmVxX2Zy ZWVfY29weV9idWZmZXJzKGlvcmVxKTsKKyAgICAgICAgZ290byBlcnI7CiAgICAgfQogCiAgICAg aW9yZXEtPmFpb19pbmZsaWdodCsrOwpAQCAtNzA3LDkgKzQ3MCw2IEBAIHN0YXRpYyBpbnQgaW9y ZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKICAgICB9CiAgICAgZGVmYXVs dDoKICAgICAgICAgLyogdW5rbm93biBvcGVyYXRpb24gKHNob3VsZG4ndCBoYXBwZW4gLS0gcGFy c2UgY2F0Y2hlcyB0aGlzKSAqLwotICAgICAgICBpZiAoIXhlbl9mZWF0dXJlX2dyYW50X2NvcHkp IHsKLSAgICAgICAgICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKLSAgICAgICAgfQogICAgICAgICBn b3RvIGVycjsKICAgICB9CiAKQEAgLTg5NSwxMCArNjU1LDYgQEAgc3RhdGljIHZvaWQgYmxrX2Fs bG9jKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKIAogICAgIGJsa2Rldi0+Y3R4ID0gaW90aHJl YWRfZ2V0X2Fpb19jb250ZXh0KGJsa2Rldi0+aW90aHJlYWQpOwogICAgIGJsa2Rldi0+YmggPSBh aW9fYmhfbmV3KGJsa2Rldi0+Y3R4LCBibGtfYmgsIGJsa2Rldik7Ci0KLSAgICBpZiAoeGVuX21v ZGUgIT0gWEVOX0VNVUxBVEUpIHsKLSAgICAgICAgYmF0Y2hfbWFwcyA9IDE7Ci0gICAgfQogfQog CiBzdGF0aWMgdm9pZCBibGtfcGFyc2VfZGlzY2FyZChzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYp CkBAIC05ODEsMTUgKzczNywxMCBAQCBzdGF0aWMgaW50IGJsa19pbml0KHN0cnVjdCBYZW5EZXZp Y2UgKnhlbmRldikKIAogICAgIGJsa2Rldi0+ZmlsZV9ibGsgID0gQkxPQ0tfU0laRTsKIAotICAg IHhlbl9wdl9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAzLCAiZ3JhbnQgY29weSBvcGVyYXRpb24g JXNcbiIsCi0gICAgICAgICAgICAgICAgICB4ZW5fZmVhdHVyZV9ncmFudF9jb3B5ID8gImVuYWJs ZWQiIDogImRpc2FibGVkIik7Ci0KICAgICAvKiBmaWxsIGluZm8KICAgICAgKiBibGtfY29ubmVj dCBzdXBwbGllcyBzZWN0b3Itc2l6ZSBhbmQgc2VjdG9ycwogICAgICAqLwogICAgIHhlbnN0b3Jl X3dyaXRlX2JlX2ludCgmYmxrZGV2LT54ZW5kZXYsICJmZWF0dXJlLWZsdXNoLWNhY2hlIiwgMSk7 Ci0gICAgeGVuc3RvcmVfd3JpdGVfYmVfaW50KCZibGtkZXYtPnhlbmRldiwgImZlYXR1cmUtcGVy c2lzdGVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICF4ZW5fZmVhdHVyZV9ncmFudF9j b3B5KTsKICAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQoJmJsa2Rldi0+eGVuZGV2LCAiaW5mbyIs IGluZm8pOwogCiAgICAgeGVuc3RvcmVfd3JpdGVfYmVfaW50KCZibGtkZXYtPnhlbmRldiwgIm1h eC1yaW5nLXBhZ2Utb3JkZXIiLApAQCAtMTAxNiwxOSArNzY3LDEwIEBAIG91dF9lcnJvcjoKICAg ICByZXR1cm4gLTE7CiB9CiAKLS8qCi0gKiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBncmFu dCBhbGxvY2F0aW9ucyByZXF1aXJpbmcgY29udGlndW91cwotICogY2h1bmtzOyB0aGUgd29yc3Qg Y2FzZSBudW1iZXIgd291bGQgYmUKLSAqICAgICBtYXhfcmVxICogbWF4X3NlZyArIChtYXhfcmVx IC0gMSkgKiAobWF4X3NlZyAtIDEpICsgMSwKLSAqIGJ1dCBpbiBvcmRlciB0byBrZWVwIHRoaW5n cyBzaW1wbGUganVzdCB1c2UKLSAqICAgICAyICogbWF4X3JlcSAqIG1heF9zZWcuCi0gKi8KLSNk ZWZpbmUgTUFYX0dSQU5UUyhtYXhfcmVxLCBtYXhfc2VnKSAoMiAqIChtYXhfcmVxKSAqIChtYXhf c2VnKSkKLQogc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYp CiB7CiAgICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0gY29udGFpbmVyX29mKHhlbmRldiwg c3RydWN0IFhlbkJsa0RldiwgeGVuZGV2KTsKLSAgICBpbnQgcGVycywgaW5kZXgsIHFmbGFnczsK KyAgICBpbnQgaW5kZXgsIHFmbGFnczsKICAgICBib29sIHJlYWRvbmx5ID0gdHJ1ZTsKICAgICBi b29sIHdyaXRldGhyb3VnaCA9IHRydWU7CiAgICAgaW50IG9yZGVyLCByaW5nX3JlZjsKQEAgLTEx NTAsMTEgKzg5Miw2IEBAIHN0YXRpYyBpbnQgYmxrX2Nvbm5lY3Qoc3RydWN0IFhlbkRldmljZSAq eGVuZGV2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxrZGV2LT54ZW5kZXYucmVt b3RlX3BvcnQpID09IC0xKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgaWYgKHhl bnN0b3JlX3JlYWRfZmVfaW50KCZibGtkZXYtPnhlbmRldiwgImZlYXR1cmUtcGVyc2lzdGVudCIs ICZwZXJzKSkgewotICAgICAgICBibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCA9IEZBTFNFOwot ICAgIH0gZWxzZSB7Ci0gICAgICAgIGJsa2Rldi0+ZmVhdHVyZV9wZXJzaXN0ZW50ID0gISFwZXJz OwotICAgIH0KIAogICAgIGlmICghYmxrZGV2LT54ZW5kZXYucHJvdG9jb2wpIHsKICAgICAgICAg YmxrZGV2LT5wcm90b2NvbCA9IEJMS0lGX1BST1RPQ09MX05BVElWRTsKQEAgLTExODksMTEgKzky Niw4IEBAIHN0YXRpYyBpbnQgYmxrX2Nvbm5lY3Qoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KQog ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgLyogQ2FsY3VsYXRlIHRoZSBtYXhpbXVt IG51bWJlciBvZiBncmFudHMgbmVlZGVkIGJ5IGlvcmVxcyAqLwotICAgIG1heF9ncmFudHMgPSBN QVhfR1JBTlRTKGJsa2Rldi0+bWF4X3JlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCk7CiAgICAgLyogQWRkIG9uIHRoZSBu dW1iZXIgbmVlZGVkIGZvciB0aGUgcmluZyBwYWdlcyAqLwotICAgIG1heF9ncmFudHMgKz0gYmxr ZGV2LT5ucl9yaW5nX3JlZjsKKyAgICBtYXhfZ3JhbnRzID0gYmxrZGV2LT5ucl9yaW5nX3JlZjsK IAogICAgIHhlbl9iZV9zZXRfbWF4X2dyYW50X3JlZnMoeGVuZGV2LCBtYXhfZ3JhbnRzKTsKIApA QCAtMTIwNCw4ICs5MzgsNiBAQCBzdGF0aWMgaW50IGJsa19jb25uZWN0KHN0cnVjdCBYZW5EZXZp Y2UgKnhlbmRldikKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGJsa2Rldi0+Y250 X21hcCsrOwotCiAgICAgc3dpdGNoIChibGtkZXYtPnByb3RvY29sKSB7CiAgICAgY2FzZSBCTEtJ Rl9QUk9UT0NPTF9OQVRJVkU6CiAgICAgewpAQCAtMTIyOSwxOSArOTYxLDYgQEAgc3RhdGljIGlu dCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgfQogICAgIH0KIAot ICAgIGlmIChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewotICAgICAgICAvKiBJbml0IHBl cnNpc3RlbnQgZ3JhbnRzICovCi0gICAgICAgIGJsa2Rldi0+bWF4X2dyYW50cyA9IGJsa2Rldi0+ bWF4X3JlcXVlc3RzICoKLSAgICAgICAgICAgIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVT VDsKLSAgICAgICAgYmxrZGV2LT5wZXJzaXN0ZW50X2dudHMgPSBnX3RyZWVfbmV3X2Z1bGwoKEdD b21wYXJlRGF0YUZ1bmMpaW50X2NtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBiYXRjaF9tYXBzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSlnX2ZyZWUgOgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KWRlc3Ryb3lfZ3Jh bnQpOwotICAgICAgICBibGtkZXYtPnBlcnNpc3RlbnRfcmVnaW9ucyA9IE5VTEw7Ci0gICAgICAg IGJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQgPSAwOwotICAgIH0KLQogICAgIGJsa19zZXRf YWlvX2NvbnRleHQoYmxrZGV2LT5ibGssIGJsa2Rldi0+Y3R4KTsKIAogICAgIHhlbl9iZV9iaW5k X2V2dGNobigmYmxrZGV2LT54ZW5kZXYpOwpAQCAtMTI3NCwyOSArOTkzLDggQEAgc3RhdGljIHZv aWQgYmxrX2Rpc2Nvbm5lY3Qoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KQogICAgIGlmIChibGtk ZXYtPnNyaW5nKSB7CiAgICAgICAgIHhlbl9iZV91bm1hcF9ncmFudF9yZWZzKHhlbmRldiwgYmxr ZGV2LT5zcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxrZGV2LT5ucl9y aW5nX3JlZik7Ci0gICAgICAgIGJsa2Rldi0+Y250X21hcC0tOwogICAgICAgICBibGtkZXYtPnNy aW5nID0gTlVMTDsKICAgICB9Ci0KLSAgICAvKgotICAgICAqIFVubWFwIHBlcnNpc3RlbnQgZ3Jh bnRzIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdGhlIGNsb3NlZCBzdGF0ZQotICAgICAqIHNvIHRoZSBm cm9udGVuZCBjYW4gZnJlZSB0aGVtLgotICAgICAqCi0gICAgICogSW4gdGhlICFiYXRjaF9tYXBz IGNhc2UgZ190cmVlX2Rlc3Ryb3kgd2lsbCB0YWtlIGNhcmUgb2YgdW5tYXBwaW5nCi0gICAgICog dGhlIGdyYW50LCBidXQgaW4gdGhlIGJhdGNoX21hcHMgY2FzZSB3ZSBuZWVkIHRvIGl0ZXJhdGUg b3ZlciBldmVyeQotICAgICAqIHJlZ2lvbiBpbiBwZXJzaXN0ZW50X3JlZ2lvbnMgYW5kIHVubWFw IGl0LgotICAgICAqLwotICAgIGlmIChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewotICAg ICAgICBnX3RyZWVfZGVzdHJveShibGtkZXYtPnBlcnNpc3RlbnRfZ250cyk7Ci0gICAgICAgIGFz c2VydChiYXRjaF9tYXBzIHx8IGJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQgPT0gMCk7Ci0g ICAgICAgIGlmIChiYXRjaF9tYXBzKSB7Ci0gICAgICAgICAgICBibGtkZXYtPnBlcnNpc3RlbnRf Z250X2NvdW50ID0gMDsKLSAgICAgICAgICAgIGdfc2xpc3RfZm9yZWFjaChibGtkZXYtPnBlcnNp c3RlbnRfcmVnaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0Z1bmMpcmVtb3Zl X3BlcnNpc3RlbnRfcmVnaW9uLCBibGtkZXYpOwotICAgICAgICAgICAgZ19zbGlzdF9mcmVlKGJs a2Rldi0+cGVyc2lzdGVudF9yZWdpb25zKTsKLSAgICAgICAgfQotICAgICAgICBibGtkZXYtPmZl YXR1cmVfcGVyc2lzdGVudCA9IGZhbHNlOwotICAgIH0KIH0KIAogc3RhdGljIGludCBibGtfZnJl ZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=