From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: [PATCH 1/2] drm/i915: Introduce execlist_port_* accessors Date: Thu, 30 Nov 2017 11:10:27 +0200 Message-ID: <20171130091028.18818-2-mika.kuoppala@linux.intel.com> References: <20171130091028.18818-1-mika.kuoppala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB4026EA76 for ; Thu, 30 Nov 2017 09:11:12 +0000 (UTC) In-Reply-To: <20171130091028.18818-1-mika.kuoppala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+CgpJbnN0ZWFkIG9m IHRydXN0aW5nIHRoYXQgZmlyc3QgYXZhaWxhYmxlIHBvcnQgaXMgYXQgaW5kZXggMCwKdXNlIGFj Y2Vzc29yIHRvIGhpZGUgdGhpcy4gVGhpcyBpcyBhIHByZXBhcmF0aW9uIGZvciBhCmZvbGxvd2lu ZyBwYXRjaGVzIHdoZXJlIGhlYWQgY2FuIGJlIGF0IGFyYml0cmFyeSBsb2NhdGlvbgppbiB0aGUg cG9ydCBhcnJheS4KCnYyOiBpbXByb3ZlZCBjb21taXQgbWVzc2FnZSwgZWxzcF9yZWFkeSByZWFk YWJpbGl0eSAoQ2hyaXMpCnYzOiBzL2V4ZWNsaXN0X3BvcnRfaW5kZXgvZXhlY2xpc3RfcG9ydCAo Q2hyaXMpCnY0OiByZWJhc2UgdG8gbmV3IG5hbWluZwp2NTogZml4IHBvcnRfbmV4dCBpbmRleGlu Zwp2NjogYWRhcHQgdG8gcHJlZW1wdAp2NzogaW1wcm92ZWQgX3BvcnRfbmV4dCAoQ2hyaXMpCnY4 OiB3aGl0ZXNwYWNlLCBmb3IgbG9vcCAoQ2hyaXMpLAogICAgZmluZF9maXJzdF91bnNldCBhbmQg R0VNX0JVR19PTiBhZnRlciBuZXh0X3BvcnQgaW4gZ3VjIHN1Ym1pc3Npb24KCkNjOiBNaWNoYcWC IFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGlu ZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1ieTogTWlrYSBLdW9wcGFsYSA8bWlr YS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYyAgICAgICB8ICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYyAgICAgIHwgMTggKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19zdWJtaXNzaW9uLmMgfCA3MSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICB8IDU1ICsrKysrKysrKysr KystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAg fCA0NCArKysrKysrKysrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMo KyksIDU0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmlu ZGV4IDg3NmJlOGYxZDkzMC4uMDJiYWU3ZDY5N2RhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMKQEAgLTEzNTAsMTEgKzEzNTAsMTIgQEAgc3RhdGljIHZvaWQgZW5naW5lX3Jl Y29yZF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiBzdGF0aWMgdm9p ZCBlcnJvcl9yZWNvcmRfZW5naW5lX2V4ZWNsaXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJCQkJCSAgc3RydWN0IGRybV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUpCiB7Ci0JY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5n aW5lLT5leGVjbGlzdHM7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBl eGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CiAJdW5zaWduZWQgaW50IG47CiAKIAlmb3Ig KG4gPSAwOyBuIDwgZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpOyBuKyspIHsKLQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSA9IHBvcnRfcmVxdWVzdCgmZXhlY2xpc3RzLT5w b3J0W25dKTsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSA9CisJCQlwb3J0X3Jl cXVlc3QoZXhlY2xpc3RzX3BvcnQoZXhlY2xpc3RzLCBuKSk7CiAKIAkJaWYgKCFycSkKIAkJCWJy ZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBjZmZkMGM4MTJi N2UuLmU5NTRhNTBkMjBjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMK QEAgLTE2NjcsNyArMTY2Nyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3JlcXVlc3Qoc3RydWN0IGRy bV9wcmludGVyICptLAogdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsIHN0cnVjdCBkcm1fcHJpbnRlciAqbSkKIHsKIAlzdHJ1Y3QgaW50ZWxfYnJl YWRjcnVtYnMgKiBjb25zdCBiID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7Ci0JY29uc3Qgc3RydWN0 IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVj bGlzdHM7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMg PSAmZW5naW5lLT5leGVjbGlzdHM7CiAJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICogY29uc3QgZXJy b3IgPSAmZW5naW5lLT5pOTE1LT5ncHVfZXJyb3I7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cnE7CkBAIC0xNzgwLDE2ICsxNzgwLDIwIEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0pCiAKIAkJcmN1 X3JlYWRfbG9jaygpOwogCQlmb3IgKGlkeCA9IDA7IGlkeCA8IGV4ZWNsaXN0c19udW1fcG9ydHMo ZXhlY2xpc3RzKTsgaWR4KyspIHsKLQkJCXVuc2lnbmVkIGludCBjb3VudDsKKwkJCXN0cnVjdCBl eGVjbGlzdF9wb3J0ICpwb3J0OworCQkJdW5zaWduZWQgaW50IGNvdW50LCBpZHhfYWJzOworCisJ CQlwb3J0ID0gZXhlY2xpc3RzX3BvcnQoZXhlY2xpc3RzLCBpZHgpOworCQkJaWR4X2FicyA9IHBv cnRfaW5kZXgocG9ydCwgZXhlY2xpc3RzKTsKIAotCQkJcnEgPSBwb3J0X3VucGFjaygmZXhlY2xp c3RzLT5wb3J0W2lkeF0sICZjb3VudCk7CisJCQlycSA9IHBvcnRfdW5wYWNrKHBvcnQsICZjb3Vu dCk7CiAJCQlpZiAocnEpIHsKLQkJCQlkcm1fcHJpbnRmKG0sICJcdFx0RUxTUFslZF0gY291bnQ9 JWQsICIsCi0JCQkJCSAgIGlkeCwgY291bnQpOworCQkJCWRybV9wcmludGYobSwgIlx0XHRFTFNQ WyVkOiVkXSBjb3VudD0lZCwgIiwKKwkJCQkJICAgaWR4LCBpZHhfYWJzLCBjb3VudCk7CiAJCQkJ cHJpbnRfcmVxdWVzdChtLCBycSwgInJxOiAiKTsKIAkJCX0gZWxzZSB7Ci0JCQkJZHJtX3ByaW50 ZihtLCAiXHRcdEVMU1BbJWRdIGlkbGVcbiIsCi0JCQkJCSAgIGlkeCk7CisJCQkJZHJtX3ByaW50 ZihtLCAiXHRcdEVMU1BbJWQ6JWRdIGlkbGVcbiIsCisJCQkJCSAgIGlkeCwgaWR4X2Ficyk7CiAJ CQl9CiAJCX0KIAkJZHJtX3ByaW50ZihtLCAiXHRcdEhXIGFjdGl2ZT8gMHgleFxuIiwgZXhlY2xp c3RzLT5hY3RpdmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9u LmMKaW5kZXggOTEyZmYxNDNkNTMxLi42MTU3ODI3NDQwOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtNjk3LDE2ICs2OTcsMTggQEAgc3RhdGlj IHZvaWQgZ3VjX3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3Ry dWN0IGludGVsX2d1YyAqZ3VjID0gJmVuZ2luZS0+aTkxNS0+Z3VjOwogCXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwot CXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZXhlY2xpc3RzLT5wb3J0OwogCXVuc2lnbmVk IGludCBuOwogCiAJZm9yIChuID0gMDsgbiA8IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3Rz KTsgbisrKSB7CisJCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0OwogCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJxOwogCQl1bnNpZ25lZCBpbnQgY291bnQ7CiAKLQkJcnEgPSBwb3J0 X3VucGFjaygmcG9ydFtuXSwgJmNvdW50KTsKKwkJcG9ydCA9IGV4ZWNsaXN0c19wb3J0KGV4ZWNs aXN0cywgbik7CisJCXJxID0gcG9ydF91bnBhY2socG9ydCwgJmNvdW50KTsKKwogCQlpZiAocnEg JiYgY291bnQgPT0gMCkgewotCQkJcG9ydF9zZXQoJnBvcnRbbl0sIHBvcnRfcGFjayhycSwgKytj b3VudCkpOworCQkJcG9ydF9zZXQocG9ydCwgcG9ydF9wYWNrKHJxLCArK2NvdW50KSk7CiAKIAkJ CWZsdXNoX2dndHRfd3JpdGVzKHJxLT5yaW5nLT52bWEpOwogCkBAIC03MTUsNiArNzE3LDIyIEBA IHN0YXRpYyB2b2lkIGd1Y19zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CX0KIH0KIAorc3RhdGljIHN0cnVjdCBleGVjbGlzdF9wb3J0ICoKK3BvcnRfZmluZF9maXJzdF91 bnNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cywKKwkJ ICAgICAgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKiBjb25zdCBwcmV2KQoreworCXN0cnVjdCBleGVj bGlzdF9wb3J0ICpwb3J0ID0gZXhlY2xpc3RzX3BvcnRfbmV4dChleGVjbGlzdHMsIHByZXYpOwor CisJd2hpbGUgKHBvcnQgIT0gcHJldikgeworCQlpZiAoIXBvcnRfaXNzZXQocG9ydCkpCisJCQly ZXR1cm4gcG9ydDsKKworCQlwb3J0ID0gZXhlY2xpc3RzX3BvcnRfbmV4dChleGVjbGlzdHMsIHBv cnQpOworCX0KKworCXJldHVybiBOVUxMOworfQorCiBzdGF0aWMgdm9pZCBwb3J0X2Fzc2lnbihz dHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCwKIAkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEpCiB7CkBAIC03MjYsMTAgKzc0NCw4IEBAIHN0YXRpYyB2b2lkIHBvcnRfYXNzaWduKHN0 cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0LAogc3RhdGljIHZvaWQgZ3VjX2RlcXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xp c3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwotCXN0cnVjdCBleGVj bGlzdF9wb3J0ICpwb3J0ID0gZXhlY2xpc3RzLT5wb3J0OworCXN0cnVjdCBleGVjbGlzdF9wb3J0 ICpwb3J0LCAqbGFzdF9wb3J0OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdCA9 IE5VTEw7Ci0JY29uc3Qgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKiBjb25zdCBsYXN0X3BvcnQgPQot CQkmZXhlY2xpc3RzLT5wb3J0W2V4ZWNsaXN0cy0+cG9ydF9tYXNrXTsKIAlib29sIHN1Ym1pdCA9 IGZhbHNlOwogCXN0cnVjdCByYl9ub2RlICpyYjsKIApAQCAtNzQwLDYgKzc1Niw5IEBAIHN0YXRp YyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAo IXJiKQogCQlnb3RvIHVubG9jazsKIAorCXBvcnQgPSBleGVjbGlzdHNfcG9ydF9oZWFkKGV4ZWNs aXN0cyk7CisJbGFzdF9wb3J0ID0gZXhlY2xpc3RzX3BvcnRfdGFpbChleGVjbGlzdHMpOworCiAJ aWYgKHBvcnRfaXNzZXQocG9ydCkpIHsKIAkJaWYgKEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElP TihlbmdpbmUtPmk5MTUpKSB7CiAJCQlzdHJ1Y3QgZ3VjX3ByZWVtcHRfd29yayAqcHJlZW1wdF93 b3JrID0KQEAgLTc1NSw4ICs3NzQsOCBAQCBzdGF0aWMgdm9pZCBndWNfZGVxdWV1ZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCQl9CiAJCX0KIAotCQlwb3J0Kys7Ci0JCWlmIChw b3J0X2lzc2V0KHBvcnQpKQorCQlwb3J0ID0gcG9ydF9maW5kX2ZpcnN0X3Vuc2V0KGV4ZWNsaXN0 cywgcG9ydCk7CisJCWlmICghcG9ydCkKIAkJCWdvdG8gdW5sb2NrOwogCX0KIAlHRU1fQlVHX09O KHBvcnRfaXNzZXQocG9ydCkpOwpAQCAtNzc1LDcgKzc5NCw5IEBAIHN0YXRpYyB2b2lkIGd1Y19k ZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCQkJCWlmIChzdWJtaXQp CiAJCQkJCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOwotCQkJCXBvcnQrKzsKKworCQkJCXBvcnQg PSBleGVjbGlzdHNfcG9ydF9uZXh0KGV4ZWNsaXN0cywgcG9ydCk7CisJCQkJR0VNX0JVR19PTihw b3J0X2lzc2V0KHBvcnQpKTsKIAkJCX0KIAogCQkJSU5JVF9MSVNUX0hFQUQoJnJxLT5wcmlvdHJl ZS5saW5rKTsKQEAgLTgwNCwyOSArODI1LDM3IEBAIHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+ dGltZWxpbmUtPmxvY2spOwogfQogCi1zdGF0aWMgdm9pZCBndWNfc3VibWlzc2lvbl90YXNrbGV0 KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3N0YXRpYyB2b2lkIGd1Y19jb21wbGV0ZV9yZWFkeV9wb3J0 cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQogewotCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUgPSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq KWRhdGE7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMg PSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVj bGlzdHMtPnBvcnQ7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKKwlzdHJ1Y3Qg ZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGV4ZWNsaXN0c19wb3J0X2hlYWQoZXhlY2xpc3RzKTsKKwor CXdoaWxlIChwb3J0X2lzc2V0KHBvcnQpKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEgPSBwb3J0X3JlcXVlc3QocG9ydCk7CisKKwkJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2Nv bXBsZXRlZChycSkpCisJCQlicmVhazsKIAotCXJxID0gcG9ydF9yZXF1ZXN0KCZwb3J0WzBdKTsK LQl3aGlsZSAocnEgJiYgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7CiAJCXRyYWNl X2k5MTVfZ2VtX3JlcXVlc3Rfb3V0KHJxKTsKIAkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocnEpOwog Ci0JCWV4ZWNsaXN0c19wb3J0X2NvbXBsZXRlKGV4ZWNsaXN0cywgcG9ydCk7CisJCXBvcnQgPSBl eGVjbGlzdHNfaGVhZF9jb21wbGV0ZShleGVjbGlzdHMsIHBvcnQpOworCX07CiAKLQkJcnEgPSBw b3J0X3JlcXVlc3QoJnBvcnRbMF0pOwotCX0KLQlpZiAoIXJxKQorCWlmICghcG9ydF9pc3NldChw b3J0KSkKIAkJZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJ VkVfVVNFUik7Cit9CisKK3N0YXRpYyB2b2lkIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWdu ZWQgbG9uZyBkYXRhKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUg PSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKWRhdGE7CisJc3RydWN0IGludGVsX2VuZ2luZV9l eGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CisKKwlndWNf Y29tcGxldGVfcmVhZHlfcG9ydHMoZXhlY2xpc3RzKTsKIAogCWlmIChleGVjbGlzdHNfaXNfYWN0 aXZlKGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKSAmJgogCSAgICBpbnRlbF9y ZWFkX3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX1BSRUVNUFRfSU5ERVgpID09CiAJ ICAgIEdVQ19QUkVFTVBUX0ZJTklTSEVEKSB7Ci0JCWV4ZWNsaXN0c19jYW5jZWxfcG9ydF9yZXF1 ZXN0cygmZW5naW5lLT5leGVjbGlzdHMpOworCQlleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVz dHMoZXhlY2xpc3RzKTsKIAkJZXhlY2xpc3RzX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGV4 ZWNsaXN0cyk7CiAKIAkJd2FpdF9mb3JfZ3VjX3ByZWVtcHRfcmVwb3J0KGVuZ2luZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDJhODE2MGY2MDNhYi4uYmM4Mzk3MjlhNzhjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNDMwLDI0ICs0MzAsMjcgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGVsc3Bfd3JpdGUodTY0IGRlc2MsIHUzMiBfX2lvbWVtICplbHNwKQogCiBzdGF0aWMg dm9pZCBleGVjbGlzdHNfc3VibWl0X3BvcnRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIHsKLQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGVuZ2luZS0+ZXhlY2xpc3RzLnBv cnQ7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAm ZW5naW5lLT5leGVjbGlzdHM7CiAJdTMyIF9faW9tZW0gKmVsc3AgPQogCQllbmdpbmUtPmk5MTUt PnJlZ3MgKyBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0VMU1AoZW5naW5lKSk7CiAJdW5zaWdu ZWQgaW50IG47CiAKLQlmb3IgKG4gPSBleGVjbGlzdHNfbnVtX3BvcnRzKCZlbmdpbmUtPmV4ZWNs aXN0cyk7IG4tLTsgKSB7CisJZm9yIChuID0gZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMp OyBuLS07ICkgeworCQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydDsKIAkJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpycTsKIAkJdW5zaWduZWQgaW50IGNvdW50OwogCQl1NjQgZGVzYzsK IAotCQlycSA9IHBvcnRfdW5wYWNrKCZwb3J0W25dLCAmY291bnQpOworCQlwb3J0ID0gZXhlY2xp c3RzX3BvcnQoZXhlY2xpc3RzLCBuKTsKKwkJcnEgPSBwb3J0X3VucGFjayhwb3J0LCAmY291bnQp OwogCQlpZiAocnEpIHsKIAkJCUdFTV9CVUdfT04oY291bnQgPiAhbik7CiAJCQlpZiAoIWNvdW50 KyspCiAJCQkJZXhlY2xpc3RzX2NvbnRleHRfc2NoZWR1bGVfaW4ocnEpOwotCQkJcG9ydF9zZXQo JnBvcnRbbl0sIHBvcnRfcGFjayhycSwgY291bnQpKTsKKworCQkJcG9ydF9zZXQocG9ydCwgcG9y dF9wYWNrKHJxLCBjb3VudCkpOwogCQkJZGVzYyA9IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChy cSk7Ci0JCQlHRU1fREVCVUdfRVhFQyhwb3J0W25dLmNvbnRleHRfaWQgPSB1cHBlcl8zMl9iaXRz KGRlc2MpKTsKKwkJCUdFTV9ERUJVR19FWEVDKHBvcnQtPmNvbnRleHRfaWQgPSB1cHBlcl8zMl9i aXRzKGRlc2MpKTsKIAogCQkJR0VNX1RSQUNFKCIlcyBpblslZF06ICBjdHg9JWQuJWQsIHNlcW5v PSV4XG4iLAogCQkJCSAgZW5naW5lLT5uYW1lLCBuLApAQCAtNTE5LDEwICs1MjIsOCBAQCBzdGF0 aWMgdm9pZCBpbmplY3RfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4 ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9y dCA9IGV4ZWNsaXN0cy0+cG9ydDsKLQljb25zdCBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqIGNvbnN0 IGxhc3RfcG9ydCA9Ci0JCSZleGVjbGlzdHMtPnBvcnRbZXhlY2xpc3RzLT5wb3J0X21hc2tdOwot CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdCA9IHBvcnRfcmVxdWVzdChwb3J0KTsK KwlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCwgKmxhc3RfcG9ydDsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKmxhc3Q7CiAJc3RydWN0IHJiX25vZGUgKnJiOwogCWJvb2wgc3VibWl0 ID0gZmFsc2U7CiAKQEAgLTU1Myw2ICs1NTQsOSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVx dWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKCFyYikKIAkJZ290byB1 bmxvY2s7CiAKKwlwb3J0ID0gZXhlY2xpc3RzX3BvcnRfaGVhZChleGVjbGlzdHMpOworCWxhc3Qg PSBwb3J0X3JlcXVlc3QocG9ydCk7CisKIAlpZiAobGFzdCkgewogCQkvKgogCQkgKiBEb24ndCBy ZXN1Ym1pdCBvciBzd2l0Y2ggdW50aWwgYWxsIG91dHN0YW5kaW5nCkBAIC01NjAsOCArNTY0LDgg QEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCQkgKiBrbm93IHRoZSBuZXh0IHByZWVtcHRpb24gc3RhdHVzIHdlIHNlZSBjb3Jy ZXNwb25kcwogCQkgKiB0byB0aGlzIEVMU1AgdXBkYXRlLgogCQkgKi8KLQkJR0VNX0JVR19PTigh cG9ydF9jb3VudCgmcG9ydFswXSkpOwotCQlpZiAocG9ydF9jb3VudCgmcG9ydFswXSkgPiAxKQor CQlHRU1fQlVHX09OKCFwb3J0X2NvdW50KHBvcnQpKTsKKwkJaWYgKHBvcnRfY291bnQocG9ydCkg PiAxKQogCQkJZ290byB1bmxvY2s7CiAKIAkJLyoKQEAgLTYwNiw3ICs2MTAsNyBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJ CQkgKiB0aGUgZHJpdmVyIGlzIHVuYWJsZSB0byBrZWVwIHVwIHRoZSBzdXBwbHkgb2YgbmV3CiAJ CQkgKiB3b3JrKS4KIAkJCSAqLwotCQkJaWYgKHBvcnRfY291bnQoJnBvcnRbMV0pKQorCQkJaWYg KHBvcnRfY291bnQoZXhlY2xpc3RzX3BvcnRfbmV4dChleGVjbGlzdHMsIHBvcnQpKSkKIAkJCQln b3RvIHVubG9jazsKIAogCQkJLyogV2FJZGxlTGl0ZVJlc3RvcmU6YmR3LHNrbApAQCAtNjIwLDYg KzYyNCw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAkJfQogCX0KIAorCWxhc3RfcG9ydCA9IGV4ZWNsaXN0c19wb3J0X3Rh aWwoZXhlY2xpc3RzKTsKKwogCWRvIHsKIAkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSByYl9l bnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEsICpybjsKQEAgLTY2Niw4ICs2NzIsOCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVx dWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIAkJCQlpZiAoc3VibWl0KQog CQkJCQlwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKLQkJCQlwb3J0Kys7CiAKKwkJCQlwb3J0ID0g ZXhlY2xpc3RzX3BvcnRfbmV4dChleGVjbGlzdHMsIHBvcnQpOwogCQkJCUdFTV9CVUdfT04ocG9y dF9pc3NldChwb3J0KSk7CiAJCQl9CiAKQEAgLTcwMCwyMCArNzA2LDIxIEBAIHN0YXRpYyB2b2lk IGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHZvaWQK IGV4ZWNsaXN0c19jYW5jZWxfcG9ydF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNs aXN0cyAqIGNvbnN0IGV4ZWNsaXN0cykKIHsKLQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9 IGV4ZWNsaXN0cy0+cG9ydDsKIAl1bnNpZ25lZCBpbnQgbnVtX3BvcnRzID0gZXhlY2xpc3RzX251 bV9wb3J0cyhleGVjbGlzdHMpOworCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0OwogCi0Jd2hp bGUgKG51bV9wb3J0cy0tICYmIHBvcnRfaXNzZXQocG9ydCkpIHsKKwlmb3IgKHBvcnQgPSBleGVj bGlzdHNfcG9ydF9oZWFkKGV4ZWNsaXN0cyk7CisJICAgICBudW1fcG9ydHMtLSAmJiBwb3J0X2lz c2V0KHBvcnQpOworCSAgICAgcG9ydCA9IGV4ZWNsaXN0c19oZWFkX2NvbXBsZXRlKGV4ZWNsaXN0 cywgcG9ydCkpIHsKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSA9IHBvcnRfcmVx dWVzdChwb3J0KTsKIAogCQlHRU1fQlVHX09OKCFleGVjbGlzdHMtPmFjdGl2ZSk7CiAJCWludGVs X2VuZ2luZV9jb250ZXh0X291dChycS0+ZW5naW5lKTsKIAkJZXhlY2xpc3RzX2NvbnRleHRfc3Rh dHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9QUkVFTVBURUQpOwogCQlpOTE1 X2dlbV9yZXF1ZXN0X3B1dChycSk7Ci0KLQkJbWVtc2V0KHBvcnQsIDAsIHNpemVvZigqcG9ydCkp OwotCQlwb3J0Kys7CiAJfQorCisJR0VNX0JVR19PTihwb3J0X2lzc2V0KGV4ZWNsaXN0c19wb3J0 X2hlYWQoZXhlY2xpc3RzKSkpOwogfQogCiBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY2FuY2VsX3Jl cXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKQEAgLTc4MCw3ICs3ODcsNiBA QCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxvbmcg ZGF0YSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lID0gKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKilkYXRhOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3Rz ICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwotCXN0cnVjdCBleGVjbGlz dF9wb3J0ICogY29uc3QgcG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CiAKIAkvKiBXZSBjYW4gc2tpcCBhY3F1 aXJpbmcgaW50ZWxfcnVudGltZV9wbV9nZXQoKSBoZXJlIGFzIGl0IHdhcyB0YWtlbgpAQCAtNzk5 LDYgKzgwNSw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5z aWduZWQgbG9uZyBkYXRhKQogCSAqIG5ldyByZXF1ZXN0IChvdXRzaWRlIG9mIHRoZSBjb250ZXh0 LXN3aXRjaCBpbnRlcnJ1cHQpLgogCSAqLwogCXdoaWxlICh0ZXN0X2JpdChFTkdJTkVfSVJRX0VY RUNMSVNULCAmZW5naW5lLT5pcnFfcG9zdGVkKSkgeworCQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAq cG9ydDsKKwogCQkvKiBUaGUgSFdTUCBjb250YWlucyBhIChjYWNoZWFibGUpIG1pcnJvciBvZiB0 aGUgQ1NCICovCiAJCWNvbnN0IHUzMiAqYnVmID0KIAkJCSZlbmdpbmUtPnN0YXR1c19wYWdlLnBh Z2VfYWRkcltJOTE1X0hXU19DU0JfQlVGMF9JTkRFWF07CkBAIC04MzksNiArODQ3LDggQEAgc3Rh dGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEp CiAJCQkgIGhlYWQsIEdFTjhfQ1NCX1JFQURfUFRSKHJlYWRsKGRldl9wcml2LT5yZWdzICsgaTkx NV9tbWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSkpKSwKIAkJ CSAgdGFpbCwgR0VOOF9DU0JfV1JJVEVfUFRSKHJlYWRsKGRldl9wcml2LT5yZWdzICsgaTkxNV9t bWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSkpKSk7CiAKKwkJ cG9ydCA9IGV4ZWNsaXN0c19wb3J0X2hlYWQoZXhlY2xpc3RzKTsKKwogCQl3aGlsZSAoaGVhZCAh PSB0YWlsKSB7CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxOwogCQkJdW5zaWdu ZWQgaW50IHN0YXR1czsKQEAgLTkxNCwxNCArOTI0LDE0IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCQkJR0VNX0JVR19PTihj b3VudCA9PSAwKTsKIAkJCWlmICgtLWNvdW50ID09IDApIHsKIAkJCQlHRU1fQlVHX09OKHN0YXR1 cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpOwotCQkJCUdFTV9CVUdfT04ocG9ydF9pc3Nl dCgmcG9ydFsxXSkgJiYKKwkJCQlHRU1fQlVHX09OKHBvcnRfaXNzZXQoZXhlY2xpc3RzX3BvcnQo ZXhlY2xpc3RzLCAxKSkgJiYKIAkJCQkJICAgIShzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfRUxF TUVOVF9TV0lUQ0gpKTsKIAkJCQlHRU1fQlVHX09OKCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRl ZChycSkpOwogCQkJCWV4ZWNsaXN0c19jb250ZXh0X3NjaGVkdWxlX291dChycSk7CiAJCQkJdHJh Y2VfaTkxNV9nZW1fcmVxdWVzdF9vdXQocnEpOwogCQkJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJx KTsKIAotCQkJCWV4ZWNsaXN0c19wb3J0X2NvbXBsZXRlKGV4ZWNsaXN0cywgcG9ydCk7CisJCQkJ cG9ydCA9IGV4ZWNsaXN0c19oZWFkX2NvbXBsZXRlKGV4ZWNsaXN0cywgcG9ydCk7CiAJCQl9IGVs c2UgewogCQkJCXBvcnRfc2V0KHBvcnQsIHBvcnRfcGFjayhycSwgY291bnQpKTsKIAkJCX0KQEAg LTk2MSw2ICs5NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnNlcnRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCiBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogewogCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwogCiAJLyogV2lsbCBiZSBjYWxsZWQgZnJvbSBpcnEtY29udGV4dCB3 aGVuIHVzaW5nIGZvcmVpZ24gZmVuY2VzLiAqLwpAQCAtOTY4LDcgKzk3OSw3IEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCiAKIAlpbnNlcnRfcmVxdWVzdChlbmdpbmUsICZyZXF1ZXN0LT5wcmlvdHJlZSwg cmVxdWVzdC0+cHJpb3RyZWUucHJpb3JpdHkpOwogCi0JR0VNX0JVR19PTighZW5naW5lLT5leGVj bGlzdHMuZmlyc3QpOworCUdFTV9CVUdfT04oIWV4ZWNsaXN0cy0+Zmlyc3QpOwogCUdFTV9CVUdf T04obGlzdF9lbXB0eSgmcmVxdWVzdC0+cHJpb3RyZWUubGluaykpOwogCiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IGM2OGFiM2VhZDgzYy4uMTdmMWZiNGRlZDg5 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC0yNTEsNiArMjUx LDExIEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzIHsKIAl1bnNpZ25lZCBpbnQgcG9y dF9tYXNrOwogCiAJLyoqCisJICogQHBvcnRfaGVhZDogZmlyc3QgdXNlZCBleGVjbGlzdCBwb3J0 CisJICovCisJdW5zaWduZWQgaW50IHBvcnRfaGVhZDsKKworCS8qKgogCSAqIEBxdWV1ZTogcXVl dWUgb2YgcmVxdWVzdHMsIGluIHByaW9yaXR5IGxpc3RzCiAJICovCiAJc3RydWN0IHJiX3Jvb3Qg cXVldWU7CkBAIC02NDMsOCArNjQ4LDQxIEBAIGV4ZWNsaXN0c19udW1fcG9ydHMoY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMpCiAJcmV0dXJuIGV4 ZWNsaXN0cy0+cG9ydF9tYXNrICsgMTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkCi1leGVjbGlz dHNfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4 ZWNsaXN0cywKKyNkZWZpbmUgX19wb3J0X2FkZChzdGFydCwgbiwgbWFzaykgKCgoc3RhcnQpICsg KG4pKSAmIChtYXNrKSkKKyNkZWZpbmUgcG9ydF9oZWFkX2FkZChlLCBuKSBfX3BvcnRfYWRkKChl KS0+cG9ydF9oZWFkLCBuLCAoZSktPnBvcnRfbWFzaykKKworLyogSW5kZXggc3RhcnRpbmcgZnJv bSBwb3J0X2hlYWQgKi8KK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKgorZXhl Y2xpc3RzX3BvcnQoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlz dHMsCisJICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBuKQoreworCXJldHVybiAmZXhlY2xpc3Rz LT5wb3J0W3BvcnRfaGVhZF9hZGQoZXhlY2xpc3RzLCBuKV07Cit9CisKK3N0YXRpYyBpbmxpbmUg c3RydWN0IGV4ZWNsaXN0X3BvcnQgKgorZXhlY2xpc3RzX3BvcnRfaGVhZChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cykKK3sKKwlyZXR1cm4gZXhlY2xpc3Rz X3BvcnQoZXhlY2xpc3RzLCAwKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhlY2xpc3Rf cG9ydCAqCitleGVjbGlzdHNfcG9ydF90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3Rz ICogY29uc3QgZXhlY2xpc3RzKQoreworCXJldHVybiBleGVjbGlzdHNfcG9ydChleGVjbGlzdHMs IC0xKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqCitleGVjbGlz dHNfcG9ydF9uZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xp c3RzLAorCQkgICAgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQpCit7CisJaWYgKHBvcnQrKyA9 PSBleGVjbGlzdHMtPnBvcnQgKyBleGVjbGlzdHMtPnBvcnRfbWFzaykKKwkJcG9ydCA9IGV4ZWNs aXN0cy0+cG9ydDsKKworCXJldHVybiBwb3J0OworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBl eGVjbGlzdF9wb3J0ICoKK2V4ZWNsaXN0c19oZWFkX2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzLAogCQkJc3RydWN0IGV4ZWNsaXN0X3BvcnQg KiBjb25zdCBwb3J0KQogewogCWNvbnN0IHVuc2lnbmVkIGludCBtID0gZXhlY2xpc3RzLT5wb3J0 X21hc2s7CkBAIC02NTQsNiArNjkyLDggQEAgZXhlY2xpc3RzX3BvcnRfY29tcGxldGUoc3RydWN0 IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMsCiAKIAltZW1tb3ZlKHBv cnQsIHBvcnQgKyAxLCBtICogc2l6ZW9mKHN0cnVjdCBleGVjbGlzdF9wb3J0KSk7CiAJbWVtc2V0 KHBvcnQgKyBtLCAwLCBzaXplb2Yoc3RydWN0IGV4ZWNsaXN0X3BvcnQpKTsKKworCXJldHVybiBl eGVjbGlzdHNfcG9ydF9oZWFkKGV4ZWNsaXN0cyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgaW50Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=