From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 08/13] drm/fb-helper: Stop using mode_config.mutex for internals Date: Tue, 4 Jul 2017 17:18:28 +0200 Message-ID: <20170704151833.17304-9-daniel.vetter@ffwll.ch> References: <20170704151833.17304-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id E00006E37A for ; Tue, 4 Jul 2017 15:18:52 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id j85so26983205wmj.0 for ; Tue, 04 Jul 2017 08:18:52 -0700 (PDT) In-Reply-To: <20170704151833.17304-1-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development , Thierry Reding , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org VGhvc2UgYXJlIG5vdyBhbGwgcHJvdGVjdGVkIHVzaW5nIGZiX2hlbHBlci0+bG9jay4KCnYyOiBX ZSBzdGlsbCBuZWVkIHRvIGhvbGQgbW9kZV9jb25maWcubXV0ZXggcmlnaHQgYXJvdW5kIGNhbGxp bmcKY29ubmVjdG9yLT5maWxsX21vZGVzLgoKdjM6IEkgZm9yZ290IHRvIGhvbGQgbW9kZV9jb25m aWcubXV0ZXggd2hpbGUgbG9va2luZyBhdApjb25uZWN0b3ItPnN0YXR1cyBhbmQgdGhlIG1vZGUg bGlzdC4gQWxzbywgd2UgbmVlZCB0byBwYXRjaCB1cCB0aGUKaTkxNSAtPmluaXRpYWxfY29uZmln IGNhbGxiYWNrIHRvIGdyYWIgdGhlIGxvY2tzIGl0IG5lZWRzIHRvIGluc3BlY3QKdGhlIG1vZGVz ZXQgc3RhdGUgcmVjb3ZlcmVkIGZyb20gdGhlIGZ3LgoKQ2M6IEpvaG4gU3R1bHR6IDxqb2huLnN0 dWx0ekBsaW5hcm8ub3JnPgpDYzogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4K U2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyAgICB8IDMzICsrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyAgICAgICB8 ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIHwgMTYgKysrKysrKysr KysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwppbmRleCA0MDBiYmIwN2VmZjIuLjU5ZTI5MTY0NzFi MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIERF RklORV9NVVRFWChrZXJuZWxfZmJfaGVscGVyX2xvY2spOwogICovCiAKICNkZWZpbmUgZHJtX2Zi X2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJoLCBpX18pIFwKLQlmb3IgKCh7IGxvY2tkZXBf YXNzZXJ0X2hlbGQoJihmYmgpLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsgfSksIFwKKwlmb3Ig KCh7IGxvY2tkZXBfYXNzZXJ0X2hlbGQoJihmYmgpLT5sb2NrKTsgfSksIFwKIAkgICAgIGlfXyA9 IDA7IGlfXyA8IChmYmgpLT5jb25uZWN0b3JfY291bnQ7IGlfXysrKQogCiBzdGF0aWMgaW50IF9f ZHJtX2ZiX2hlbHBlcl9hZGRfb25lX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyLApAQCAtMTIwLDcgKzEyMCw2IEBAIHN0YXRpYyBpbnQgX19kcm1fZmJfaGVscGVyX2Fk ZF9vbmVfY29ubmVjdG9yKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCXJldHVy biAwOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZmJfaGVscGVyLT5sb2NrKTsKLQlsb2NrZGVw X2Fzc2VydF9oZWxkKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwogCiAJY291 bnQgPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCArIDE7CiAKQEAgLTE1MiwxMSArMTUxLDcg QEAgaW50IGRybV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3Ioc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlciwKIAlpbnQgZXJyOwogCiAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2Nr KTsKLQltdXRleF9sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwotCiAJ ZXJyID0gX19kcm1fZmJfaGVscGVyX2FkZF9vbmVfY29ubmVjdG9yKGZiX2hlbHBlciwgY29ubmVj dG9yKTsKLQotCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4 KTsKIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7CiAKIAlyZXR1cm4gZXJyOwpAQCAt MTg4LDcgKzE4Myw2IEBAIGludCBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3Rv cnMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAkJcmV0dXJuIDA7CiAKIAltdXRl eF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOwotCW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcu bXV0ZXgpOwogCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7 CiAJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewog CQlyZXQgPSBfX2RybV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3IoZmJfaGVscGVyLCBjb25u ZWN0b3IpOwpAQCAtMjEwLDcgKzIwNCw2IEBAIGludCBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRf YWxsX2Nvbm5lY3RvcnMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAlmYl9oZWxw ZXItPmNvbm5lY3Rvcl9jb3VudCA9IDA7CiBvdXQ6CiAJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJf ZW5kKCZjb25uX2l0ZXIpOwotCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7 CiAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwogCiAJcmV0dXJuIHJldDsKQEAgLTI1 MywxMSArMjQ2LDcgQEAgaW50IGRybV9mYl9oZWxwZXJfcmVtb3ZlX29uZV9jb25uZWN0b3Ioc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAlpbnQgZXJyOwogCiAJbXV0ZXhfbG9jaygm ZmJfaGVscGVyLT5sb2NrKTsKLQltdXRleF9sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25m aWcubXV0ZXgpOwotCiAJZXJyID0gX19kcm1fZmJfaGVscGVyX3JlbW92ZV9vbmVfY29ubmVjdG9y KGZiX2hlbHBlciwgY29ubmVjdG9yKTsKLQotCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5kZXYt Pm1vZGVfY29uZmlnLm11dGV4KTsKIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7CiAK IAlyZXR1cm4gZXJyOwpAQCAtMTg5MywxMiArMTg4MiwxMSBAQCB2b2lkIGRybV9mYl9oZWxwZXJf ZmlsbF92YXIoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZQogRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2ZpbGxfdmFyKTsKIAogc3RhdGljIGlu dCBkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9tb2RlcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyLAotCQkJCQkgICAgICAgdWludDMyX3QgbWF4WCwKLQkJCQkJICAgICAgIHVp bnQzMl90IG1heFkpCisJCQkJCQl1aW50MzJfdCBtYXhYLAorCQkJCQkJdWludDMyX3QgbWF4WSkK IHsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwotCWludCBjb3VudCA9IDA7Ci0J aW50IGk7CisJaW50IGksIGNvdW50ID0gMDsKIAogCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29u bmVjdG9yKGZiX2hlbHBlciwgaSkgewogCQljb25uZWN0b3IgPSBmYl9oZWxwZXItPmNvbm5lY3Rv cl9pbmZvW2ldLT5jb25uZWN0b3I7CkBAIC0yMjk2LDEyICsyMjg0LDggQEAgc3RhdGljIHZvaWQg ZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJaW50IGk7 CiAKIAlEUk1fREVCVUdfS01TKCJcbiIpOwotCWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5l Y3Rvcl9tb2RlcyhmYl9oZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCi0JCURSTV9ERUJVR19L TVMoIk5vIGNvbm5lY3RvcnMgcmVwb3J0ZWQgY29ubmVjdGVkIHdpdGggbW9kZXNcbiIpOwotCiAJ LyogcHJldmVudCBjb25jdXJyZW50IG1vZGlmaWNhdGlvbiBvZiBjb25uZWN0b3JfY291bnQgYnkg aG90cGx1ZyAqLwogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmZiX2hlbHBlci0+bG9jayk7Ci0JbG9j a2RlcF9hc3NlcnRfaGVsZCgmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAog CWNydGNzID0ga2NhbGxvYyhmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwKIAkJCXNpemVvZihz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICopLCBHRlBfS0VSTkVMKTsKQEAgLTIzMTYsNyArMjMw MCwxMCBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlciwKIAkJZ290byBvdXQ7CiAJfQogCisJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5k ZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAlkcm1fZW5hYmxlX2Nvbm5lY3RvcnMoZmJfaGVscGVy LCBlbmFibGVkKTsKKwlpZiAoZHJtX2ZiX2hlbHBlcl9wcm9iZV9jb25uZWN0b3JfbW9kZXMoZmJf aGVscGVyLCB3aWR0aCwgaGVpZ2h0KSA9PSAwKQorCQlEUk1fREVCVUdfS01TKCJObyBjb25uZWN0 b3JzIHJlcG9ydGVkIGNvbm5lY3RlZCB3aXRoIG1vZGVzXG4iKTsKIAogCWlmICghKGZiX2hlbHBl ci0+ZnVuY3MtPmluaXRpYWxfY29uZmlnICYmCiAJICAgICAgZmJfaGVscGVyLT5mdW5jcy0+aW5p dGlhbF9jb25maWcoZmJfaGVscGVyLCBjcnRjcywgbW9kZXMsCkBAIC0yMzM3LDYgKzIzMjQsNyBA QCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlciwKIAogCQlkcm1fcGlja19jcnRjcyhmYl9oZWxwZXIsIGNydGNzLCBtb2RlcywgMCwgd2lk dGgsIGhlaWdodCk7CiAJfQorCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29u ZmlnLm11dGV4KTsKIAogCS8qIG5lZWQgdG8gc2V0IHRoZSBtb2Rlc2V0cyB1cCBoZXJlIGZvciB1 c2UgbGF0ZXIgKi8KIAkvKiBmaWxsIG91dCB0aGUgY29ubmVjdG9yPC0+Y3J0YyBtYXBwaW5ncyBp bnRvIHRoZSBtb2Rlc2V0cyAqLwpAQCAtMjQyOCwxMiArMjQxNiwxMCBAQCBpbnQgZHJtX2ZiX2hl bHBlcl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQg YnBwX3NlbCkKIAkJcmV0dXJuIDA7CiAKIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOwot CW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwogCWRybV9zZXR1cF9jcnRjcyhm Yl9oZWxwZXIsCiAJCQlkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCwKIAkJCWRldi0+bW9kZV9j b25maWcubWF4X2hlaWdodCk7CiAJcmV0ID0gZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUo ZmJfaGVscGVyLCBicHBfc2VsKTsKLQltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0 ZXgpOwogCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwpAQCAtMjQ5NiwxMCArMjQ4Miw3IEBAIGludCBkcm1fZmJfaGVscGVyX2hvdHBsdWdf ZXZlbnQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAogCURSTV9ERUJVR19LTVMo IlxuIik7CiAKLQltdXRleF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAlkcm1fc2V0 dXBfY3J0Y3MoZmJfaGVscGVyLCBmYl9oZWxwZXItPmZiLT53aWR0aCwgZmJfaGVscGVyLT5mYi0+ aGVpZ2h0KTsKLQotCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CiAJbXV0 ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwogCiAJZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKGZi X2hlbHBlci0+ZmJkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92Ymxhbmsu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKaW5kZXggYmZlODZmYTJkM2IxLi43MGYy Yjk1OTNlZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwpAQCAtODM2LDcgKzgzNiw3IEBAIHN0YXRpYyB2 b2lkIHNlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAgKiBOT1RFOiBE cml2ZXJzIHVzaW5nIHRoaXMgdG8gc2VuZCBvdXQgdGhlICZkcm1fY3J0Y19zdGF0ZS5ldmVudCBh cyBwYXJ0IG9mIGFuCiAgKiBhdG9taWMgY29tbWl0IG11c3QgZW5zdXJlIHRoYXQgdGhlIG5leHQg dmJsYW5rIGhhcHBlbnMgYXQgZXhhY3RseSB0aGUgc2FtZQogICogdGltZSBhcyB0aGUgYXRvbWlj IGNvbW1pdCBpcyBjb21taXR0ZWQgdG8gdGhlIGhhcmR3YXJlLiBUaGlzIGZ1bmN0aW9uIGl0c2Vs ZgotICogZG9lcyAqKm5vdCoqIHByb3RlY3QgYWdhaW4gdGhlIG5leHQgdmJsYW5rIGludGVycnVw dCByYWNpbmcgd2l0aCBlaXRoZXIgdGhpcworICogZG9lcyAqKm5vdCoqIHByb3RlY3QgYWdhaW5z dCB0aGUgbmV4dCB2YmxhbmsgaW50ZXJydXB0IHJhY2luZyB3aXRoIGVpdGhlciB0aGlzCiAgKiBm dW5jdGlvbiBjYWxsIG9yIHRoZSBhdG9taWMgY29tbWl0IG9wZXJhdGlvbi4gQSBwb3NzaWJsZSBz ZXF1ZW5jZSBjb3VsZCBiZToKICAqCiAgKiAxLiBEcml2ZXIgY29tbWl0cyBuZXcgaGFyZHdhcmUg c3RhdGUgaW50byB2Ymxhbmstc3luY2hyb25pemVkIHJlZ2lzdGVycy4KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmRldi5jCmluZGV4IDAzMzQ3YzZhZTU5OS4uNDYwY2EwYjNmYjg4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2ZiZGV2LmMKQEAgLTM1MiwxNCArMzUyLDIwIEBAIHN0YXRpYyBib29sIGlu dGVsX2ZiX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJ dW5zaWduZWQgaW50IGNvdW50ID0gbWluKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LCBCSVRT X1BFUl9MT05HKTsKIAlpbnQgaSwgajsKIAlib29sICpzYXZlX2VuYWJsZWQ7Ci0JYm9vbCBmYWxs YmFjayA9IHRydWU7CisJYm9vbCBmYWxsYmFjayA9IHRydWUsIHJldCA9IHRydWU7CiAJaW50IG51 bV9jb25uZWN0b3JzX2VuYWJsZWQgPSAwOwogCWludCBudW1fY29ubmVjdG9yc19kZXRlY3RlZCA9 IDA7CisJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKIAogCXNhdmVfZW5hYmxl ZCA9IGtjYWxsb2MoY291bnQsIHNpemVvZihib29sKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFzYXZl X2VuYWJsZWQpCiAJCXJldHVybiBmYWxzZTsKIAorCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgm Y3R4LCAwKTsKKworCXdoaWxlIChkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgoZmJfaGVscGVyLT5k ZXYsICZjdHgpICE9IDApCisJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7CisKIAltZW1jcHko c2F2ZV9lbmFibGVkLCBlbmFibGVkLCBjb3VudCk7CiAJbWFzayA9IEdFTk1BU0soY291bnQgLSAx LCAwKTsKIAljb25uX2NvbmZpZ3VyZWQgPSAwOwpAQCAtNTA5LDEyICs1MTUsMTQgQEAgc3RhdGlj IGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlciwKIGJhaWw6CiAJCURSTV9ERUJVR19LTVMoIk5vdCB1c2luZyBmaXJtd2FyZSBjb25maWd1 cmF0aW9uXG4iKTsKIAkJbWVtY3B5KGVuYWJsZWQsIHNhdmVfZW5hYmxlZCwgY291bnQpOwotCQlr ZnJlZShzYXZlX2VuYWJsZWQpOwotCQlyZXR1cm4gZmFsc2U7CisJCXJldCA9IGZhbHNlOwogCX0K IAorCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CisJZHJtX21vZGVzZXRfYWNxdWlyZV9m aW5pKCZjdHgpOworCiAJa2ZyZWUoc2F2ZV9lbmFibGVkKTsKLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1 cm4gcmV0OwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJfZnVuY3MgaW50 ZWxfZmJfaGVscGVyX2Z1bmNzID0gewotLSAKMi4xMy4yCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK