From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PULL 12/15] xen_disk: remove use of grant map/unmap Date: Mon, 21 May 2018 12:35:01 -0700 Message-ID: <1526931304-7289-12-git-send-email-sstabellini@kernel.org> References: 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 1fKqaP-0000VL-ST for xen-devel@lists.xenproject.org; Mon, 21 May 2018 19:35:13 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: peter.maydell@linaro.org, stefanha@gmail.com Cc: sstabellini@kernel.org, qemu-devel@nongnu.org, Paul Durrant , stefanha@redhat.com, anthony.perard@citrix.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org RnJvbTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KCk5vdyB0aGF0IHRo ZSAobmF0aXZlIG9yIGVtdWxhdGVkKSB4ZW5fYmVfY29weV9ncmFudF9yZWZzKCkgaGVscGVyIGlz CmFsd2F5cyBhdmFpbGFibGUsIHRoZSB4ZW5fZGlzayBjb2RlIGNhbiBiZSBzaWduaWZpY2FudGx5 IHNpbXBsaWZpZWQgYnkKcmVtb3ZpbmcgZGlyZWN0IHVzZSBvZiBncmFudCBtYXAgYW5kIHVubWFw IG9wZXJhdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBj aXRyaXguY29tPgpBY2tlZC1ieTogQW50aG9ueSBQZXJhcmQgPGFudGhvbnkucGVyYXJkQGNpdHJp eC5jb20+ClNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2Vy bmVsLm9yZz4KLS0tCiBody9ibG9jay94ZW5fZGlzay5jIHwgMzUyICsrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBp bnNlcnRpb25zKCspLCAzMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaHcvYmxvY2sveGVu X2Rpc2suYyBiL2h3L2Jsb2NrL3hlbl9kaXNrLmMKaW5kZXggZDNiZTQ1YS4uMjhiZThiNiAxMDA2 NDQKLS0tIGEvaHcvYmxvY2sveGVuX2Rpc2suYworKysgYi9ody9ibG9jay94ZW5fZGlzay5jCkBA IC0zNiwyNyArMzYsOSBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBpbnQgYmF0Y2hfbWFwcyAg ID0gMDsKLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLwotCiAjZGVmaW5lIEJMT0NLX1NJWkUgIDUxMgogI2RlZmluZSBJ T0NCX0NPVU5UICAoQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUICsgMikKIAotc3RydWN0 IFBlcnNpc3RlbnRHcmFudCB7Ci0gICAgdm9pZCAqcGFnZTsKLSAgICBzdHJ1Y3QgWGVuQmxrRGV2 ICpibGtkZXY7Ci19OwotCi10eXBlZGVmIHN0cnVjdCBQZXJzaXN0ZW50R3JhbnQgUGVyc2lzdGVu dEdyYW50OwotCi1zdHJ1Y3QgUGVyc2lzdGVudFJlZ2lvbiB7Ci0gICAgdm9pZCAqYWRkcjsKLSAg ICBpbnQgbnVtOwotfTsKLQotdHlwZWRlZiBzdHJ1Y3QgUGVyc2lzdGVudFJlZ2lvbiBQZXJzaXN0 ZW50UmVnaW9uOwotCiBzdHJ1Y3QgaW9yZXEgewogICAgIGJsa2lmX3JlcXVlc3RfdCAgICAgcmVx OwogICAgIGludDE2X3QgICAgICAgICAgICAgc3RhdHVzOwpAQCAtNjUsMTQgKzQ3LDExIEBAIHN0 cnVjdCBpb3JlcSB7CiAgICAgb2ZmX3QgICAgICAgICAgICAgICBzdGFydDsKICAgICBRRU1VSU9W ZWN0b3IgICAgICAgIHY7CiAgICAgaW50ICAgICAgICAgICAgICAgICBwcmVzeW5jOwotICAgIHVp bnQ4X3QgICAgICAgICAgICAgbWFwcGVkOwogCiAgICAgLyogZ3JhbnQgbWFwcGluZyAqLwogICAg IHVpbnQzMl90ICAgICAgICAgICAgcmVmc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1Rd OwotICAgIGludCAgICAgICAgICAgICAgICAgcHJvdDsKICAgICB2b2lkICAgICAgICAgICAgICAg ICpwYWdlW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07CiAgICAgdm9pZCAgICAgICAg ICAgICAgICAqcGFnZXM7Ci0gICAgaW50ICAgICAgICAgICAgICAgICBudW1fdW5tYXA7CiAKICAg ICAvKiBhaW8gc3RhdHVzICovCiAgICAgaW50ICAgICAgICAgICAgICAgICBhaW9faW5mbGlnaHQ7 CkBAIC0xMDMsNyArODIsNiBAQCBzdHJ1Y3QgWGVuQmxrRGV2IHsKICAgICBpbnQgICAgICAgICAg ICAgICAgIHByb3RvY29sOwogICAgIGJsa2lmX2JhY2tfcmluZ3NfdCAgcmluZ3M7CiAgICAgaW50 ICAgICAgICAgICAgICAgICBtb3JlX3dvcms7Ci0gICAgaW50ICAgICAgICAgICAgICAgICBjbnRf bWFwOwogCiAgICAgLyogcmVxdWVzdCBsaXN0cyAqLwogICAgIFFMSVNUX0hFQUQoaW5mbGlnaHRf aGVhZCwgaW9yZXEpIGluZmxpZ2h0OwpAQCAtMTE0LDEzICs5Miw3IEBAIHN0cnVjdCBYZW5CbGtE ZXYgewogICAgIGludCAgICAgICAgICAgICAgICAgcmVxdWVzdHNfZmluaXNoZWQ7CiAgICAgdW5z aWduZWQgaW50ICAgICAgICBtYXhfcmVxdWVzdHM7CiAKLSAgICAvKiBQZXJzaXN0ZW50IGdyYW50 cyBleHRlbnNpb24gKi8KICAgICBnYm9vbGVhbiAgICAgICAgICAgIGZlYXR1cmVfZGlzY2FyZDsK LSAgICBnYm9vbGVhbiAgICAgICAgICAgIGZlYXR1cmVfcGVyc2lzdGVudDsKLSAgICBHVHJlZSAg ICAgICAgICAgICAgICpwZXJzaXN0ZW50X2dudHM7Ci0gICAgR1NMaXN0ICAgICAgICAgICAgICAq cGVyc2lzdGVudF9yZWdpb25zOwotICAgIHVuc2lnbmVkIGludCAgICAgICAgcGVyc2lzdGVudF9n bnRfY291bnQ7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICBtYXhfZ3JhbnRzOwogCiAgICAgLyog cWVtdSBibG9jayBkcml2ZXIgKi8KICAgICBEcml2ZUluZm8gICAgICAgICAgICpkaW5mbzsKQEAg LTEzOSwxMCArMTExLDggQEAgc3RhdGljIHZvaWQgaW9yZXFfcmVzZXQoc3RydWN0IGlvcmVxICpp b3JlcSkKICAgICBpb3JlcS0+c3RhdHVzID0gMDsKICAgICBpb3JlcS0+c3RhcnQgPSAwOwogICAg IGlvcmVxLT5wcmVzeW5jID0gMDsKLSAgICBpb3JlcS0+bWFwcGVkID0gMDsKIAogICAgIG1lbXNl dChpb3JlcS0+cmVmcywgMCwgc2l6ZW9mKGlvcmVxLT5yZWZzKSk7Ci0gICAgaW9yZXEtPnByb3Qg PSAwOwogICAgIG1lbXNldChpb3JlcS0+cGFnZSwgMCwgc2l6ZW9mKGlvcmVxLT5wYWdlKSk7CiAg ICAgaW9yZXEtPnBhZ2VzID0gTlVMTDsKIApAQCAtMTU2LDM3ICsxMjYsNiBAQCBzdGF0aWMgdm9p ZCBpb3JlcV9yZXNldChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAgIHFlbXVfaW92ZWNfcmVzZXQo JmlvcmVxLT52KTsKIH0KIAotc3RhdGljIGdpbnQgaW50X2NtcChnY29uc3Rwb2ludGVyIGEsIGdj b25zdHBvaW50ZXIgYiwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICAgIHVpbnQgdWEgPSBHUE9J TlRFUl9UT19VSU5UKGEpOwotICAgIHVpbnQgdWIgPSBHUE9JTlRFUl9UT19VSU5UKGIpOwotICAg IHJldHVybiAodWEgPiB1YikgLSAodWEgPCB1Yik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRlc3Ryb3lf Z3JhbnQoZ3BvaW50ZXIgcGdudCkKLXsKLSAgICBQZXJzaXN0ZW50R3JhbnQgKmdyYW50ID0gcGdu dDsKLSAgICBzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYgPSBncmFudC0+YmxrZGV2OwotICAgIHN0 cnVjdCBYZW5EZXZpY2UgKnhlbmRldiA9ICZibGtkZXYtPnhlbmRldjsKLQotICAgIHhlbl9iZV91 bm1hcF9ncmFudF9yZWYoeGVuZGV2LCBncmFudC0+cGFnZSk7Ci0gICAgZ3JhbnQtPmJsa2Rldi0+ cGVyc2lzdGVudF9nbnRfY291bnQtLTsKLSAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMywgInVu bWFwcGVkIGdyYW50ICVwXG4iLCBncmFudC0+cGFnZSk7Ci0gICAgZ19mcmVlKGdyYW50KTsKLX0K LQotc3RhdGljIHZvaWQgcmVtb3ZlX3BlcnNpc3RlbnRfcmVnaW9uKGdwb2ludGVyIGRhdGEsIGdw b2ludGVyIGRldikKLXsKLSAgICBQZXJzaXN0ZW50UmVnaW9uICpyZWdpb24gPSBkYXRhOwotICAg IHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGRldjsKLSAgICBzdHJ1Y3QgWGVuRGV2aWNlICp4 ZW5kZXYgPSAmYmxrZGV2LT54ZW5kZXY7Ci0KLSAgICB4ZW5fYmVfdW5tYXBfZ3JhbnRfcmVmcyh4 ZW5kZXYsIHJlZ2lvbi0+YWRkciwgcmVnaW9uLT5udW0pOwotICAgIHhlbl9wdl9wcmludGYoeGVu ZGV2LCAzLCAidW5tYXBwZWQgZ3JhbnQgcmVnaW9uICVwIHdpdGggJWQgcGFnZXNcbiIsCi0gICAg ICAgICAgICAgICAgICByZWdpb24tPmFkZHIsIHJlZ2lvbi0+bnVtKTsKLSAgICBnX2ZyZWUocmVn aW9uKTsKLX0KLQogc3RhdGljIHN0cnVjdCBpb3JlcSAqaW9yZXFfc3RhcnQoc3RydWN0IFhlbkJs a0RldiAqYmxrZGV2KQogewogICAgIHN0cnVjdCBpb3JlcSAqaW9yZXEgPSBOVUxMOwpAQCAtMjU0 LDcgKzE5Myw2IEBAIHN0YXRpYyBpbnQgaW9yZXFfcGFyc2Uoc3RydWN0IGlvcmVxICppb3JlcSkK ICAgICAgICAgICAgICAgICAgIGlvcmVxLT5yZXEuaGFuZGxlLCBpb3JlcS0+cmVxLmlkLCBpb3Jl cS0+cmVxLnNlY3Rvcl9udW1iZXIpOwogICAgIHN3aXRjaCAoaW9yZXEtPnJlcS5vcGVyYXRpb24p IHsKICAgICBjYXNlIEJMS0lGX09QX1JFQUQ6Ci0gICAgICAgIGlvcmVxLT5wcm90ID0gUFJPVF9X UklURTsgLyogdG8gbWVtb3J5ICovCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQkxLSUZfT1Bf RkxVU0hfRElTS0NBQ0hFOgogICAgICAgICBpb3JlcS0+cHJlc3luYyA9IDE7CkBAIC0yNjMsNyAr MjAxLDYgQEAgc3RhdGljIGludCBpb3JlcV9wYXJzZShzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAg ICAgICB9CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2UgQkxLSUZfT1BfV1JJ VEU6Ci0gICAgICAgIGlvcmVxLT5wcm90ID0gUFJPVF9SRUFEOyAvKiBmcm9tIG1lbW9yeSAqLwog ICAgICAgICBicmVhazsKICAgICBjYXNlIEJMS0lGX09QX0RJU0NBUkQ6CiAgICAgICAgIHJldHVy biAwOwpAQCAtMzEwLDE3MSArMjQ3LDYgQEAgZXJyOgogICAgIHJldHVybiAtMTsKIH0KIAotc3Rh dGljIHZvaWQgaW9yZXFfdW5tYXAoc3RydWN0IGlvcmVxICppb3JlcSkKLXsKLSAgICBzdHJ1Y3Qg WGVuQmxrRGV2ICpibGtkZXYgPSBpb3JlcS0+YmxrZGV2OwotICAgIHN0cnVjdCBYZW5EZXZpY2Ug KnhlbmRldiA9ICZibGtkZXYtPnhlbmRldjsKLSAgICBpbnQgaTsKLQotICAgIGlmIChpb3JlcS0+ bnVtX3VubWFwID09IDAgfHwgaW9yZXEtPm1hcHBlZCA9PSAwKSB7Ci0gICAgICAgIHJldHVybjsK LSAgICB9Ci0gICAgaWYgKGJhdGNoX21hcHMpIHsKLSAgICAgICAgaWYgKCFpb3JlcS0+cGFnZXMp IHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB4ZW5fYmVfdW5tYXBf Z3JhbnRfcmVmcyh4ZW5kZXYsIGlvcmVxLT5wYWdlcywgaW9yZXEtPm51bV91bm1hcCk7Ci0gICAg ICAgIGlvcmVxLT5ibGtkZXYtPmNudF9tYXAgLT0gaW9yZXEtPm51bV91bm1hcDsKLSAgICAgICAg aW9yZXEtPnBhZ2VzID0gTlVMTDsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGkgPSAwOyBp IDwgaW9yZXEtPm51bV91bm1hcDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoIWlvcmVxLT5wYWdl W2ldKSB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg ICAgICB4ZW5fYmVfdW5tYXBfZ3JhbnRfcmVmKHhlbmRldiwgaW9yZXEtPnBhZ2VbaV0pOwotICAg ICAgICAgICAgaW9yZXEtPmJsa2Rldi0+Y250X21hcC0tOwotICAgICAgICAgICAgaW9yZXEtPnBh Z2VbaV0gPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGlvcmVxLT5tYXBwZWQgPSAwOwot fQotCi1zdGF0aWMgaW50IGlvcmVxX21hcChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQotewotICAgIHN0 cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGlvcmVxLT5ibGtkZXY7Ci0gICAgc3RydWN0IFhlbkRl dmljZSAqeGVuZGV2ID0gJmJsa2Rldi0+eGVuZGV2OwotICAgIHVpbnQzMl90IHJlZnNbQkxLSUZf TUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKLSAgICB2b2lkICpwYWdlW0JMS0lGX01BWF9TRUdN RU5UU19QRVJfUkVRVUVTVF07Ci0gICAgaW50IGksIGosIG5ld19tYXBzID0gMDsKLSAgICBQZXJz aXN0ZW50R3JhbnQgKmdyYW50OwotICAgIFBlcnNpc3RlbnRSZWdpb24gKnJlZ2lvbjsKLSAgICAv KiByZWZzIHZhcmlhYmxlIHdpbGwgY29udGFpbiB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5Ci0g ICAgICogdG8gbWFwIHRoZSBncmFudHMgdGhhdCBhcmUgbmVlZGVkIHRvIGZ1bGZpbGwgdGhpcyBy ZXF1ZXN0LgotICAgICAqCi0gICAgICogQWZ0ZXIgbWFwcGluZyB0aGUgbmVlZGVkIGdyYW50cywg dGhlIHBhZ2UgYXJyYXkgd2lsbCBjb250YWluIHRoZQotICAgICAqIG1lbW9yeSBhZGRyZXNzIG9m IGVhY2ggZ3JhbnRlZCBwYWdlIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gaW9yZXEKLSAgICAg KiAoZGlzcmVnYXJkaW5nIGlmIGl0J3MgYSBwZXJzaXN0ZW50IGdyYW50IG9yIG5vdCkuCi0gICAg ICovCi0KLSAgICBpZiAoaW9yZXEtPnYubmlvdiA9PSAwIHx8IGlvcmVxLT5tYXBwZWQgPT0gMSkg ewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKGlvcmVxLT5ibGtkZXYtPmZlYXR1 cmVfcGVyc2lzdGVudCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPnYubmlvdjsg aSsrKSB7Ci0gICAgICAgICAgICBncmFudCA9IGdfdHJlZV9sb29rdXAoaW9yZXEtPmJsa2Rldi0+ cGVyc2lzdGVudF9nbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VJ TlRfVE9fUE9JTlRFUihpb3JlcS0+cmVmc1tpXSkpOwotCi0gICAgICAgICAgICBpZiAoZ3JhbnQg IT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHBhZ2VbaV0gPSBncmFudC0+cGFnZTsKLSAgICAg ICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAidXNpbmcgcGVyc2lzdGVudC1ncmFudCAlIiBQUkl1 MzIgIlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvcmVxLT5yZWZzW2ldKTsK LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEFkZCB0aGUgZ3Jh bnQgdG8gdGhlIGxpc3Qgb2YgZ3JhbnRzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICogc2hv dWxkIGJlIG1hcHBlZAotICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAg ICAgcmVmc1tuZXdfbWFwc10gPSBpb3JlcS0+cmVmc1tpXTsKLSAgICAgICAgICAgICAgICAgICAg cGFnZVtpXSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIG5ld19tYXBzKys7Ci0gICAgICAg ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLyogU2V0IHRoZSBwcm90ZWN0aW9uIHRvIFJXLCBz aW5jZSBncmFudHMgbWF5IGJlIHJldXNlZCBsYXRlcgotICAgICAgICAgKiB3aXRoIGEgZGlmZmVy ZW50IHByb3RlY3Rpb24gdGhhbiB0aGUgb25lIG5lZWRlZCBmb3IgdGhpcyByZXF1ZXN0Ci0gICAg ICAgICAqLwotICAgICAgICBpb3JlcS0+cHJvdCA9IFBST1RfV1JJVEUgfCBQUk9UX1JFQUQ7Ci0g ICAgfSBlbHNlIHsKLSAgICAgICAgLyogQWxsIGdyYW50cyBpbiB0aGUgcmVxdWVzdCBzaG91bGQg YmUgbWFwcGVkICovCi0gICAgICAgIG1lbWNweShyZWZzLCBpb3JlcS0+cmVmcywgc2l6ZW9mKHJl ZnMpKTsKLSAgICAgICAgbWVtc2V0KHBhZ2UsIDAsIHNpemVvZihwYWdlKSk7Ci0gICAgICAgIG5l d19tYXBzID0gaW9yZXEtPnYubmlvdjsKLSAgICB9Ci0KLSAgICBpZiAoYmF0Y2hfbWFwcyAmJiBu ZXdfbWFwcykgewotICAgICAgICBpb3JlcS0+cGFnZXMgPSB4ZW5fYmVfbWFwX2dyYW50X3JlZnMo eGVuZGV2LCByZWZzLCBuZXdfbWFwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlvcmVxLT5wcm90KTsKLSAgICAgICAgaWYgKGlvcmVxLT5wYWdlcyA9PSBO VUxMKSB7Ci0gICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYs IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBtYXAgJWQgZ3JhbnQgcmVmcyAo JXMsICVkIG1hcHMpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFwcywgc3Ry ZXJyb3IoZXJybm8pLCBpb3JlcS0+YmxrZGV2LT5jbnRfbWFwKTsKLSAgICAgICAgICAgIHJldHVy biAtMTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGlvcmVxLT52 Lm5pb3Y7IGkrKykgewotICAgICAgICAgICAgaWYgKHBhZ2VbaV0gPT0gTlVMTCkgewotICAgICAg ICAgICAgICAgIHBhZ2VbaV0gPSBpb3JlcS0+cGFnZXMgKyAoaisrKSAqIFhDX1BBR0VfU0laRTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpb3JlcS0+YmxrZGV2LT5jbnRfbWFw ICs9IG5ld19tYXBzOwotICAgIH0gZWxzZSBpZiAobmV3X21hcHMpICB7Ci0gICAgICAgIGZvciAo aSA9IDA7IGkgPCBuZXdfbWFwczsgaSsrKSB7Ci0gICAgICAgICAgICBpb3JlcS0+cGFnZVtpXSA9 IHhlbl9iZV9tYXBfZ3JhbnRfcmVmKHhlbmRldiwgcmVmc1tpXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yZXEtPnByb3QpOwotICAgICAgICAg ICAgaWYgKGlvcmVxLT5wYWdlW2ldID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB4ZW5fcHZf cHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiY2FuJ3QgbWFwIGdyYW50IHJlZiAlZCAoJXMsICVkIG1hcHMpXG4iLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tpXSwgc3RyZXJyb3IoZXJybm8pLCBpb3JlcS0+ YmxrZGV2LT5jbnRfbWFwKTsKLSAgICAgICAgICAgICAgICBpb3JlcS0+bWFwcGVkID0gMTsKLSAg ICAgICAgICAgICAgICBpb3JlcV91bm1hcChpb3JlcSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW9yZXEtPmJsa2Rldi0+Y250X21hcCsr OwotICAgICAgICB9Ci0gICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgaW9yZXEtPnYubmlv djsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocGFnZVtpXSA9PSBOVUxMKSB7Ci0gICAgICAgICAg ICAgICAgcGFnZVtpXSA9IGlvcmVxLT5wYWdlW2orK107Ci0gICAgICAgICAgICB9Ci0gICAgICAg IH0KLSAgICB9Ci0gICAgaWYgKGlvcmVxLT5ibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCAmJiBu ZXdfbWFwcyAhPSAwICYmCi0gICAgICAgICghYmF0Y2hfbWFwcyB8fCAoaW9yZXEtPmJsa2Rldi0+ cGVyc2lzdGVudF9nbnRfY291bnQgKyBuZXdfbWFwcyA8PQotICAgICAgICBpb3JlcS0+YmxrZGV2 LT5tYXhfZ3JhbnRzKSkpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogSWYgd2UgYXJlIHVzaW5n IHBlcnNpc3RlbnQgZ3JhbnRzIGFuZCBiYXRjaCBtYXBwaW5ncyBvbmx5Ci0gICAgICAgICAqIGFk ZCB0aGUgbmV3IG1hcHMgdG8gdGhlIGxpc3Qgb2YgcGVyc2lzdGVudCBncmFudHMgaWYgdGhlIHdo b2xlCi0gICAgICAgICAqIGFyZWEgY2FuIGJlIHBlcnNpc3RlbnRseSBtYXBwZWQuCi0gICAgICAg ICAqLwotICAgICAgICBpZiAoYmF0Y2hfbWFwcykgewotICAgICAgICAgICAgcmVnaW9uID0gZ19t YWxsb2MwKHNpemVvZigqcmVnaW9uKSk7Ci0gICAgICAgICAgICByZWdpb24tPmFkZHIgPSBpb3Jl cS0+cGFnZXM7Ci0gICAgICAgICAgICByZWdpb24tPm51bSA9IG5ld19tYXBzOwotICAgICAgICAg ICAgaW9yZXEtPmJsa2Rldi0+cGVyc2lzdGVudF9yZWdpb25zID0gZ19zbGlzdF9hcHBlbmQoCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYt PnBlcnNpc3RlbnRfcmVnaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVnaW9uKTsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAoKGlvcmVxLT5ibGtk ZXYtPnBlcnNpc3RlbnRfZ250X2NvdW50IDwgaW9yZXEtPmJsa2Rldi0+bWF4X2dyYW50cykKLSAg ICAgICAgICAgICAgJiYgbmV3X21hcHMpIHsKLSAgICAgICAgICAgIC8qIEdvIHRocm91Z2ggdGhl IGxpc3Qgb2YgbmV3bHkgbWFwcGVkIGdyYW50cyBhbmQgYWRkIGFzIG1hbnkKLSAgICAgICAgICAg ICAqIGFzIHBvc3NpYmxlIHRvIHRoZSBsaXN0IG9mIHBlcnNpc3RlbnRseSBtYXBwZWQgZ3JhbnRz LgotICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAqIFNpbmNlIHdlIHN0YXJ0IGF0IHRoZSBl bmQgb2YgaW9yZXEtPnBhZ2UocyksIHdlIG9ubHkgbmVlZAotICAgICAgICAgICAgICogdG8gZGVj cmVhc2UgbmV3X21hcHMgdG8gcHJldmVudCB0aGlzIGdyYW50ZWQgcGFnZXMgZnJvbQotICAgICAg ICAgICAgICogYmVpbmcgdW5tYXBwZWQgaW4gaW9yZXFfdW5tYXAuCi0gICAgICAgICAgICAgKi8K LSAgICAgICAgICAgIGdyYW50ID0gZ19tYWxsb2MwKHNpemVvZigqZ3JhbnQpKTsKLSAgICAgICAg ICAgIG5ld19tYXBzLS07Ci0gICAgICAgICAgICBpZiAoYmF0Y2hfbWFwcykgewotICAgICAgICAg ICAgICAgIGdyYW50LT5wYWdlID0gaW9yZXEtPnBhZ2VzICsgKG5ld19tYXBzKSAqIFhDX1BBR0Vf U0laRTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZ3JhbnQtPnBhZ2Ug PSBpb3JlcS0+cGFnZVtuZXdfbWFwc107Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBncmFu dC0+YmxrZGV2ID0gaW9yZXEtPmJsa2RldjsKLSAgICAgICAgICAgIHhlbl9wdl9wcmludGYoJmlv cmVxLT5ibGtkZXYtPnhlbmRldiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImFkZGlu ZyBncmFudCAlIiBQUkl1MzIgIiBwYWdlOiAlcFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVmc1tuZXdfbWFwc10sIGdyYW50LT5wYWdlKTsKLSAgICAgICAgICAgIGdfdHJlZV9pbnNl cnQoaW9yZXEtPmJsa2Rldi0+cGVyc2lzdGVudF9nbnRzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICBHVUlOVF9UT19QT0lOVEVSKHJlZnNbbmV3X21hcHNdKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3JhbnQpOwotICAgICAgICAgICAgaW9yZXEtPmJsa2Rldi0+cGVyc2lzdGVudF9n bnRfY291bnQrKzsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQoIWJhdGNoX21hcHMgfHwgbmV3 X21hcHMgPT0gMCk7Ci0gICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBpb3JlcS0+di5uaW92OyBp KyspIHsKLSAgICAgICAgaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlICs9ICh1aW50cHRyX3QpcGFn ZVtpXTsKLSAgICB9Ci0gICAgaW9yZXEtPm1hcHBlZCA9IDE7Ci0gICAgaW9yZXEtPm51bV91bm1h cCA9IG5ld19tYXBzOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgdm9pZCBpb3JlcV9mcmVl X2NvcHlfYnVmZmVycyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogewogICAgIGludCBpOwpAQCAtNTcw LDMyICszNDIsMjggQEAgc3RhdGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVl LCBpbnQgcmV0KQogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCi0gICAgaWYgKHhlbl9mZWF0 dXJlX2dyYW50X2NvcHkpIHsKLSAgICAgICAgc3dpdGNoIChpb3JlcS0+cmVxLm9wZXJhdGlvbikg ewotICAgICAgICBjYXNlIEJMS0lGX09QX1JFQUQ6Ci0gICAgICAgICAgICAvKiBpbiBjYXNlIG9m IGZhaWx1cmUgaW9yZXEtPmFpb19lcnJvcnMgaXMgaW5jcmVhc2VkICovCi0gICAgICAgICAgICBp ZiAocmV0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpb3JlcV9ncmFudF9jb3B5KGlvcmVxKTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlvcmVxX2ZyZWVfY29weV9idWZmZXJzKGlvcmVx KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgotICAg ICAgICBjYXNlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRToKLSAgICAgICAgICAgIGlmICghaW9y ZXEtPnJlcS5ucl9zZWdtZW50cykgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg ICAgfQotICAgICAgICAgICAgaW9yZXFfZnJlZV9jb3B5X2J1ZmZlcnMoaW9yZXEpOwotICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6CisgICAgc3dpdGNoIChpb3JlcS0+cmVxLm9w ZXJhdGlvbikgeworICAgIGNhc2UgQkxLSUZfT1BfUkVBRDoKKyAgICAgICAgLyogaW4gY2FzZSBv ZiBmYWlsdXJlIGlvcmVxLT5haW9fZXJyb3JzIGlzIGluY3JlYXNlZCAqLworICAgICAgICBpZiAo cmV0ID09IDApIHsKKyAgICAgICAgICAgIGlvcmVxX2dyYW50X2NvcHkoaW9yZXEpOworICAgICAg ICB9CisgICAgICAgIGlvcmVxX2ZyZWVfY29weV9idWZmZXJzKGlvcmVxKTsKKyAgICAgICAgYnJl YWs7CisgICAgY2FzZSBCTEtJRl9PUF9XUklURToKKyAgICBjYXNlIEJMS0lGX09QX0ZMVVNIX0RJ U0tDQUNIRToKKyAgICAgICAgaWYgKCFpb3JlcS0+cmVxLm5yX3NlZ21lbnRzKSB7CiAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpb3JlcV9mcmVlX2NvcHlfYnVmZmVycyhp b3JlcSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAg IH0KIAogICAgIGlvcmVxLT5zdGF0dXMgPSBpb3JlcS0+YWlvX2Vycm9ycyA/IEJMS0lGX1JTUF9F UlJPUiA6IEJMS0lGX1JTUF9PS0FZOwotICAgIGlmICgheGVuX2ZlYXR1cmVfZ3JhbnRfY29weSkg ewotICAgICAgICBpb3JlcV91bm1hcChpb3JlcSk7Ci0gICAgfQogICAgIGlvcmVxX2ZpbmlzaChp b3JlcSk7CisKICAgICBzd2l0Y2ggKGlvcmVxLT5yZXEub3BlcmF0aW9uKSB7CiAgICAgY2FzZSBC TEtJRl9PUF9XUklURToKICAgICBjYXNlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRToKQEAgLTY1 NSwxOCArNDIzLDEzIEBAIHN0YXRpYyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlv cmVxICppb3JlcSkKIHsKICAgICBzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYgPSBpb3JlcS0+Ymxr ZGV2OwogCi0gICAgaWYgKHhlbl9mZWF0dXJlX2dyYW50X2NvcHkpIHsKLSAgICAgICAgaW9yZXFf aW5pdF9jb3B5X2J1ZmZlcnMoaW9yZXEpOwotICAgICAgICBpZiAoaW9yZXEtPnJlcS5ucl9zZWdt ZW50cyAmJiAoaW9yZXEtPnJlcS5vcGVyYXRpb24gPT0gQkxLSUZfT1BfV1JJVEUgfHwKLSAgICAg ICAgICAgIGlvcmVxLT5yZXEub3BlcmF0aW9uID09IEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRSkg JiYKLSAgICAgICAgICAgIGlvcmVxX2dyYW50X2NvcHkoaW9yZXEpKSB7Ci0gICAgICAgICAgICAg ICAgaW9yZXFfZnJlZV9jb3B5X2J1ZmZlcnMoaW9yZXEpOwotICAgICAgICAgICAgICAgIGdvdG8g ZXJyOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGlvcmVxLT5yZXEubnJf c2VnbWVudHMgJiYgaW9yZXFfbWFwKGlvcmVxKSkgewotICAgICAgICAgICAgZ290byBlcnI7Ci0g ICAgICAgIH0KKyAgICBpb3JlcV9pbml0X2NvcHlfYnVmZmVycyhpb3JlcSk7CisgICAgaWYgKGlv cmVxLT5yZXEubnJfc2VnbWVudHMgJiYKKyAgICAgICAgKGlvcmVxLT5yZXEub3BlcmF0aW9uID09 IEJMS0lGX09QX1dSSVRFIHx8CisgICAgICAgICBpb3JlcS0+cmVxLm9wZXJhdGlvbiA9PSBCTEtJ Rl9PUF9GTFVTSF9ESVNLQ0FDSEUpICYmCisgICAgICAgIGlvcmVxX2dyYW50X2NvcHkoaW9yZXEp KSB7CisgICAgICAgIGlvcmVxX2ZyZWVfY29weV9idWZmZXJzKGlvcmVxKTsKKyAgICAgICAgZ290 byBlcnI7CiAgICAgfQogCiAgICAgaW9yZXEtPmFpb19pbmZsaWdodCsrOwpAQCAtNzA3LDkgKzQ3 MCw2IEBAIHN0YXRpYyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3Jl cSkKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgLyogdW5rbm93biBvcGVyYXRpb24gKHNo b3VsZG4ndCBoYXBwZW4gLS0gcGFyc2UgY2F0Y2hlcyB0aGlzKSAqLwotICAgICAgICBpZiAoIXhl bl9mZWF0dXJlX2dyYW50X2NvcHkpIHsKLSAgICAgICAgICAgIGlvcmVxX3VubWFwKGlvcmVxKTsK LSAgICAgICAgfQogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAKQEAgLTg5NSwxMCArNjU1LDYg QEAgc3RhdGljIHZvaWQgYmxrX2FsbG9jKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKIAogICAg IGJsa2Rldi0+Y3R4ID0gaW90aHJlYWRfZ2V0X2Fpb19jb250ZXh0KGJsa2Rldi0+aW90aHJlYWQp OwogICAgIGJsa2Rldi0+YmggPSBhaW9fYmhfbmV3KGJsa2Rldi0+Y3R4LCBibGtfYmgsIGJsa2Rl dik7Ci0KLSAgICBpZiAoeGVuX21vZGUgIT0gWEVOX0VNVUxBVEUpIHsKLSAgICAgICAgYmF0Y2hf bWFwcyA9IDE7Ci0gICAgfQogfQogCiBzdGF0aWMgdm9pZCBibGtfcGFyc2VfZGlzY2FyZChzdHJ1 Y3QgWGVuQmxrRGV2ICpibGtkZXYpCkBAIC05ODEsMTUgKzczNywxMCBAQCBzdGF0aWMgaW50IGJs a19pbml0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKIAogICAgIGJsa2Rldi0+ZmlsZV9ibGsg ID0gQkxPQ0tfU0laRTsKIAotICAgIHhlbl9wdl9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAzLCAi Z3JhbnQgY29weSBvcGVyYXRpb24gJXNcbiIsCi0gICAgICAgICAgICAgICAgICB4ZW5fZmVhdHVy ZV9ncmFudF9jb3B5ID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7Ci0KICAgICAvKiBmaWxsIGlu Zm8KICAgICAgKiBibGtfY29ubmVjdCBzdXBwbGllcyBzZWN0b3Itc2l6ZSBhbmQgc2VjdG9ycwog ICAgICAqLwogICAgIHhlbnN0b3JlX3dyaXRlX2JlX2ludCgmYmxrZGV2LT54ZW5kZXYsICJmZWF0 dXJlLWZsdXNoLWNhY2hlIiwgMSk7Ci0gICAgeGVuc3RvcmVfd3JpdGVfYmVfaW50KCZibGtkZXYt PnhlbmRldiwgImZlYXR1cmUtcGVyc2lzdGVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICF4ZW5fZmVhdHVyZV9ncmFudF9jb3B5KTsKICAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQoJmJs a2Rldi0+eGVuZGV2LCAiaW5mbyIsIGluZm8pOwogCiAgICAgeGVuc3RvcmVfd3JpdGVfYmVfaW50 KCZibGtkZXYtPnhlbmRldiwgIm1heC1yaW5nLXBhZ2Utb3JkZXIiLApAQCAtMTAxNiwxOSArNzY3 LDEwIEBAIG91dF9lcnJvcjoKICAgICByZXR1cm4gLTE7CiB9CiAKLS8qCi0gKiBXZSBuZWVkIHRv IGFjY291bnQgZm9yIHRoZSBncmFudCBhbGxvY2F0aW9ucyByZXF1aXJpbmcgY29udGlndW91cwot ICogY2h1bmtzOyB0aGUgd29yc3QgY2FzZSBudW1iZXIgd291bGQgYmUKLSAqICAgICBtYXhfcmVx ICogbWF4X3NlZyArIChtYXhfcmVxIC0gMSkgKiAobWF4X3NlZyAtIDEpICsgMSwKLSAqIGJ1dCBp biBvcmRlciB0byBrZWVwIHRoaW5ncyBzaW1wbGUganVzdCB1c2UKLSAqICAgICAyICogbWF4X3Jl cSAqIG1heF9zZWcuCi0gKi8KLSNkZWZpbmUgTUFYX0dSQU5UUyhtYXhfcmVxLCBtYXhfc2VnKSAo MiAqIChtYXhfcmVxKSAqIChtYXhfc2VnKSkKLQogc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1 Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiB7CiAgICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0g Y29udGFpbmVyX29mKHhlbmRldiwgc3RydWN0IFhlbkJsa0RldiwgeGVuZGV2KTsKLSAgICBpbnQg cGVycywgaW5kZXgsIHFmbGFnczsKKyAgICBpbnQgaW5kZXgsIHFmbGFnczsKICAgICBib29sIHJl YWRvbmx5ID0gdHJ1ZTsKICAgICBib29sIHdyaXRldGhyb3VnaCA9IHRydWU7CiAgICAgaW50IG9y ZGVyLCByaW5nX3JlZjsKQEAgLTExNTAsMTEgKzg5Miw2IEBAIHN0YXRpYyBpbnQgYmxrX2Nvbm5l Y3Qoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmYmxrZGV2LT54ZW5kZXYucmVtb3RlX3BvcnQpID09IC0xKSB7CiAgICAgICAgIHJldHVybiAt MTsKICAgICB9Ci0gICAgaWYgKHhlbnN0b3JlX3JlYWRfZmVfaW50KCZibGtkZXYtPnhlbmRldiwg ImZlYXR1cmUtcGVyc2lzdGVudCIsICZwZXJzKSkgewotICAgICAgICBibGtkZXYtPmZlYXR1cmVf cGVyc2lzdGVudCA9IEZBTFNFOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJsa2Rldi0+ZmVhdHVy ZV9wZXJzaXN0ZW50ID0gISFwZXJzOwotICAgIH0KIAogICAgIGlmICghYmxrZGV2LT54ZW5kZXYu cHJvdG9jb2wpIHsKICAgICAgICAgYmxrZGV2LT5wcm90b2NvbCA9IEJMS0lGX1BST1RPQ09MX05B VElWRTsKQEAgLTExODksMTEgKzkyNiw4IEBAIHN0YXRpYyBpbnQgYmxrX2Nvbm5lY3Qoc3RydWN0 IFhlbkRldmljZSAqeGVuZGV2KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgLyog Q2FsY3VsYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBncmFudHMgbmVlZGVkIGJ5IGlvcmVxcyAq LwotICAgIG1heF9ncmFudHMgPSBNQVhfR1JBTlRTKGJsa2Rldi0+bWF4X3JlcXVlc3RzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCk7 CiAgICAgLyogQWRkIG9uIHRoZSBudW1iZXIgbmVlZGVkIGZvciB0aGUgcmluZyBwYWdlcyAqLwot ICAgIG1heF9ncmFudHMgKz0gYmxrZGV2LT5ucl9yaW5nX3JlZjsKKyAgICBtYXhfZ3JhbnRzID0g YmxrZGV2LT5ucl9yaW5nX3JlZjsKIAogICAgIHhlbl9iZV9zZXRfbWF4X2dyYW50X3JlZnMoeGVu ZGV2LCBtYXhfZ3JhbnRzKTsKIApAQCAtMTIwNCw4ICs5MzgsNiBAQCBzdGF0aWMgaW50IGJsa19j b25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICAgICAgcmV0dXJuIC0xOwogICAg IH0KIAotICAgIGJsa2Rldi0+Y250X21hcCsrOwotCiAgICAgc3dpdGNoIChibGtkZXYtPnByb3Rv Y29sKSB7CiAgICAgY2FzZSBCTEtJRl9QUk9UT0NPTF9OQVRJVkU6CiAgICAgewpAQCAtMTIyOSwx OSArOTYxLDYgQEAgc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5k ZXYpCiAgICAgfQogICAgIH0KIAotICAgIGlmIChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkg ewotICAgICAgICAvKiBJbml0IHBlcnNpc3RlbnQgZ3JhbnRzICovCi0gICAgICAgIGJsa2Rldi0+ bWF4X2dyYW50cyA9IGJsa2Rldi0+bWF4X3JlcXVlc3RzICoKLSAgICAgICAgICAgIEJMS0lGX01B WF9TRUdNRU5UU19QRVJfUkVRVUVTVDsKLSAgICAgICAgYmxrZGV2LT5wZXJzaXN0ZW50X2dudHMg PSBnX3RyZWVfbmV3X2Z1bGwoKEdDb21wYXJlRGF0YUZ1bmMpaW50X2NtcCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaF9tYXBzID8KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSlnX2Zy ZWUgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdEZXN0 cm95Tm90aWZ5KWRlc3Ryb3lfZ3JhbnQpOwotICAgICAgICBibGtkZXYtPnBlcnNpc3RlbnRfcmVn aW9ucyA9IE5VTEw7Ci0gICAgICAgIGJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQgPSAwOwot ICAgIH0KLQogICAgIGJsa19zZXRfYWlvX2NvbnRleHQoYmxrZGV2LT5ibGssIGJsa2Rldi0+Y3R4 KTsKIAogICAgIHhlbl9iZV9iaW5kX2V2dGNobigmYmxrZGV2LT54ZW5kZXYpOwpAQCAtMTI3NCwy OSArOTkzLDggQEAgc3RhdGljIHZvaWQgYmxrX2Rpc2Nvbm5lY3Qoc3RydWN0IFhlbkRldmljZSAq eGVuZGV2KQogICAgIGlmIChibGtkZXYtPnNyaW5nKSB7CiAgICAgICAgIHhlbl9iZV91bm1hcF9n cmFudF9yZWZzKHhlbmRldiwgYmxrZGV2LT5zcmluZywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYmxrZGV2LT5ucl9yaW5nX3JlZik7Ci0gICAgICAgIGJsa2Rldi0+Y250X21hcC0t OwogICAgICAgICBibGtkZXYtPnNyaW5nID0gTlVMTDsKICAgICB9Ci0KLSAgICAvKgotICAgICAq IFVubWFwIHBlcnNpc3RlbnQgZ3JhbnRzIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdGhlIGNsb3NlZCBz dGF0ZQotICAgICAqIHNvIHRoZSBmcm9udGVuZCBjYW4gZnJlZSB0aGVtLgotICAgICAqCi0gICAg ICogSW4gdGhlICFiYXRjaF9tYXBzIGNhc2UgZ190cmVlX2Rlc3Ryb3kgd2lsbCB0YWtlIGNhcmUg b2YgdW5tYXBwaW5nCi0gICAgICogdGhlIGdyYW50LCBidXQgaW4gdGhlIGJhdGNoX21hcHMgY2Fz ZSB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBldmVyeQotICAgICAqIHJlZ2lvbiBpbiBwZXJzaXN0 ZW50X3JlZ2lvbnMgYW5kIHVubWFwIGl0LgotICAgICAqLwotICAgIGlmIChibGtkZXYtPmZlYXR1 cmVfcGVyc2lzdGVudCkgewotICAgICAgICBnX3RyZWVfZGVzdHJveShibGtkZXYtPnBlcnNpc3Rl bnRfZ250cyk7Ci0gICAgICAgIGFzc2VydChiYXRjaF9tYXBzIHx8IGJsa2Rldi0+cGVyc2lzdGVu dF9nbnRfY291bnQgPT0gMCk7Ci0gICAgICAgIGlmIChiYXRjaF9tYXBzKSB7Ci0gICAgICAgICAg ICBibGtkZXYtPnBlcnNpc3RlbnRfZ250X2NvdW50ID0gMDsKLSAgICAgICAgICAgIGdfc2xpc3Rf Zm9yZWFjaChibGtkZXYtPnBlcnNpc3RlbnRfcmVnaW9ucywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoR0Z1bmMpcmVtb3ZlX3BlcnNpc3RlbnRfcmVnaW9uLCBibGtkZXYpOwotICAgICAg ICAgICAgZ19zbGlzdF9mcmVlKGJsa2Rldi0+cGVyc2lzdGVudF9yZWdpb25zKTsKLSAgICAgICAg fQotICAgICAgICBibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCA9IGZhbHNlOwotICAgIH0KIH0K IAogc3RhdGljIGludCBibGtfZnJlZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCi0tIAoxLjku MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=