From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Wed, 22 May 2019 16:57:06 +0100 Message-Id: <20190522155720.28723-2-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190522155720.28723-1-tvrtko.ursulin@linux.intel.com> References: <20190522155720.28723-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 01/15] gem_wsim: Engine map support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClN1cHBvcnQg bmV3IGk5MTUgdUFQSSBmb3IgY29uZmlndXJpbmcgY29udGV4dHMgd2l0aCBlbmdpbmUgbWFwcy4K ClBsZWFzZSByZWZlciB0byB0aGUgUkVBRE1FIGZpbGUgZm9yIG1vcmUgZGV0YWlsZWQgZXhwbGFu YXRpb24uCgp2MjoKICogQWxsb3cgZGVmaW5pbmcgZW5naW5lIG1hcHMgYnkgY2xhc3MuCgpTaWdu ZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0K IGJlbmNobWFya3MvZ2VtX3dzaW0uYyAgfCAyMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0KIGJlbmNobWFya3Mvd3NpbS9SRUFETUUgfCAgMjUgKysrKy0KIDIgZmls ZXMgY2hhbmdlZCwgMjA0IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwppbmRleCA2 MGI3ZDMyZTIyZDQuLmU1YjEyZTM3NDkwZSAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9nZW1fd3Np bS5jCisrKyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1 ZGUgImV3bWEuaCIKIAogZW51bSBpbnRlbF9lbmdpbmVfaWQgeworCURFRkFVTFQsCiAJUkNTLAog CUJDUywKIAlWQ1MsCkBAIC04MSw3ICs4Miw4IEBAIGVudW0gd190eXBlCiAJU1dfRkVOQ0UsCiAJ U1dfRkVOQ0VfU0lHTkFMLAogCUNUWF9QUklPUklUWSwKLQlQUkVFTVBUSU9OCisJUFJFRU1QVElP TiwKKwlFTkdJTkVfTUFQCiB9OwogCiBzdHJ1Y3QgZGVwcwpAQCAtMTE1LDYgKzExNywxMCBAQCBz dHJ1Y3Qgd19zdGVwCiAJCWludCB0aHJvdHRsZTsKIAkJaW50IGZlbmNlX3NpZ25hbDsKIAkJaW50 IHByaW9yaXR5OworCQlzdHJ1Y3QgeworCQkJdW5zaWduZWQgaW50IGVuZ2luZV9tYXBfY291bnQ7 CisJCQllbnVtIGludGVsX2VuZ2luZV9pZCAqZW5naW5lX21hcDsKKwkJfTsKIAl9OwogCiAJLyog SW1wbGVtZW50YXRpb24gZGV0YWlscyAqLwpAQCAtMTQyLDYgKzE0OCw4IEBAIERFQ0xBUkVfRVdN QSh1aW50NjRfdCwgcnQsIDQsIDIpCiBzdHJ1Y3QgY3R4IHsKIAl1aW50MzJfdCBpZDsKIAlpbnQg cHJpb3JpdHk7CisJdW5zaWduZWQgaW50IGVuZ2luZV9tYXBfY291bnQ7CisJZW51bSBpbnRlbF9l bmdpbmVfaWQgKmVuZ2luZV9tYXA7CiAJYm9vbCB0YXJnZXRzX2luc3RhbmNlOwogCWJvb2wgd2Fu dHNfYmFsYW5jZTsKIAl1bnNpZ25lZCBpbnQgc3RhdGljX3ZjczsKQEAgLTIwMCwxMCArMjA4LDEw IEBAIHN0cnVjdCB3b3JrbG9hZAogCQlpbnQgZmQ7CiAJCWJvb2wgZmlyc3Q7CiAJCXVuc2lnbmVk IGludCBudW1fZW5naW5lczsKLQkJdW5zaWduZWQgaW50IGVuZ2luZV9tYXBbNV07CisJCXVuc2ln bmVkIGludCBlbmdpbmVfbWFwW05VTV9FTkdJTkVTXTsKIAkJdWludDY0X3QgdF9wcmV2OwotCQl1 aW50NjRfdCBwcmV2WzVdOwotCQlkb3VibGUgYnVzeVs1XTsKKwkJdWludDY0X3QgcHJldltOVU1f RU5HSU5FU107CisJCWRvdWJsZSBidXN5W05VTV9FTkdJTkVTXTsKIAl9IGJ1c3lfYmFsYW5jZXI7 CiB9OwogCkBAIC0yMzQsNiArMjQyLDcgQEAgc3RhdGljIGludCBmZDsKICNkZWZpbmUgUkVHKHgp ICh2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyAr IHgpCiAKIHN0YXRpYyBjb25zdCBjaGFyICpyaW5nX3N0cl9tYXBbTlVNX0VOR0lORVNdID0gewor CVtERUZBVUxUXSA9ICJERUZBVUxUIiwKIAlbUkNTXSA9ICJSQ1MiLAogCVtCQ1NdID0gIkJDUyIs CiAJW1ZDU10gPSAiVkNTIiwKQEAgLTMzMCw2ICszMzksNDMgQEAgc3RhdGljIGludCBzdHJfdG9f ZW5naW5lKGNvbnN0IGNoYXIgKnN0cikKIAlyZXR1cm4gLTE7CiB9CiAKK3N0YXRpYyBpbnQgcGFy c2VfZW5naW5lX21hcChzdHJ1Y3Qgd19zdGVwICpzdGVwLCBjb25zdCBjaGFyICpfc3RyKQorewor CWNoYXIgKnRva2VuLCAqdGN0eCA9IE5VTEwsICp0c3RhcnQgPSAoY2hhciAqKV9zdHI7CisKKwl3 aGlsZSAoKHRva2VuID0gc3RydG9rX3IodHN0YXJ0LCAifCIsICZ0Y3R4KSkpIHsKKwkJZW51bSBp bnRlbF9lbmdpbmVfaWQgZW5naW5lOworCQl1bnNpZ25lZCBpbnQgYWRkOworCisJCXRzdGFydCA9 IE5VTEw7CisKKwkJaWYgKCFzdHJjbXAodG9rZW4sICJERUZBVUxUIikpCisJCQlyZXR1cm4gLTE7 CisKKwkJZW5naW5lID0gc3RyX3RvX2VuZ2luZSh0b2tlbik7CisJCWlmICgoaW50KWVuZ2luZSA8 IDApCisJCQlyZXR1cm4gLTE7CisKKwkJaWYgKGVuZ2luZSAhPSBWQ1MgJiYgZW5naW5lICE9IFZD UzEgJiYgZW5naW5lICE9IFZDUzIpCisJCQlyZXR1cm4gLTE7IC8qIFRPRE8gKi8KKworCQlhZGQg PSBlbmdpbmUgPT0gVkNTID8gMiA6IDE7CisJCXN0ZXAtPmVuZ2luZV9tYXBfY291bnQgKz0gYWRk OworCQlzdGVwLT5lbmdpbmVfbWFwID0gcmVhbGxvYyhzdGVwLT5lbmdpbmVfbWFwLAorCQkJCQkg ICBzdGVwLT5lbmdpbmVfbWFwX2NvdW50ICoKKwkJCQkJICAgc2l6ZW9mKHN0ZXAtPmVuZ2luZV9t YXBbMF0pKTsKKworCQlpZiAoZW5naW5lICE9IFZDUykgeworCQkJc3RlcC0+ZW5naW5lX21hcFtz dGVwLT5lbmdpbmVfbWFwX2NvdW50IC0gMV0gPSBlbmdpbmU7CisJCX0gZWxzZSB7CisJCQlzdGVw LT5lbmdpbmVfbWFwW3N0ZXAtPmVuZ2luZV9tYXBfY291bnQgLSAyXSA9IFZDUzE7CisJCQlzdGVw LT5lbmdpbmVfbWFwW3N0ZXAtPmVuZ2luZV9tYXBfY291bnQgLSAxXSA9IFZDUzI7CisJCX0KKwl9 CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHN0cnVjdCB3b3JrbG9hZCAqCiBwYXJzZV93b3Jr bG9hZChzdHJ1Y3Qgd19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xv YWQgKmFwcF93KQogewpAQCAtNDQ4LDYgKzQ5NCwzMyBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qg d19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQog CQkJfSBlbHNlIGlmICghc3RyY21wKGZpZWxkLCAiZiIpKSB7CiAJCQkJc3RlcC50eXBlID0gU1df RkVOQ0U7CiAJCQkJZ290byBhZGRfc3RlcDsKKwkJCX0gZWxzZSBpZiAoIXN0cmNtcChmaWVsZCwg Ik0iKSkgeworCQkJCXVuc2lnbmVkIGludCBuciA9IDA7CisJCQkJd2hpbGUgKChmaWVsZCA9IHN0 cnRva19yKGZzdGFydCwgIi4iLCAmZmN0eCkpICE9CisJCQkJICAgIE5VTEwpIHsKKwkJCQkJdG1w ID0gYXRvaShmaWVsZCk7CisJCQkJCWNoZWNrX2FyZyhuciA9PSAwICYmIHRtcCA8PSAwLAorCQkJ CQkJICAiSW52YWxpZCBjb250ZXh0IGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBucl9zdGVwcyk7 CisJCQkJCWNoZWNrX2FyZyhuciA+IDEsCisJCQkJCQkgICJJbnZhbGlkIGVuZ2luZSBtYXAgZm9y bWF0IGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBucl9zdGVwcyk7CisKKwkJCQkJaWYgKG5yID09 IDApIHsKKwkJCQkJCXN0ZXAuY29udGV4dCA9IHRtcDsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXRt cCA9IHBhcnNlX2VuZ2luZV9tYXAoJnN0ZXAsCisJCQkJCQkJCSAgICAgICBmaWVsZCk7CisJCQkJ CQljaGVja19hcmcodG1wIDwgMCwKKwkJCQkJCQkgICJJbnZhbGlkIGVuZ2luZSBtYXAgbGlzdCBh dCBzdGVwICV1IVxuIiwKKwkJCQkJCQkgIG5yX3N0ZXBzKTsKKwkJCQkJfQorCisJCQkJCW5yKys7 CisJCQkJfQorCisJCQkJc3RlcC50eXBlID0gRU5HSU5FX01BUDsKKwkJCQlnb3RvIGFkZF9zdGVw OwogCQkJfSBlbHNlIGlmICghc3RyY21wKGZpZWxkLCAiWCIpKSB7CiAJCQkJdW5zaWduZWQgaW50 IG5yID0gMDsKIAkJCQl3aGlsZSAoKGZpZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4 KSkgIT0KQEAgLTc3NCw2ICs4NDcsNyBAQCB0ZXJtaW5hdGVfYmIoc3RydWN0IHdfc3RlcCAqdywg dW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGViX2Vu Z2luZV9tYXBbTlVNX0VOR0lORVNdID0geworCVtERUZBVUxUXSA9IEk5MTVfRVhFQ19ERUZBVUxU LAogCVtSQ1NdID0gSTkxNV9FWEVDX1JFTkRFUiwKIAlbQkNTXSA9IEk5MTVfRVhFQ19CTFQsCiAJ W1ZDU10gPSBJOTE1X0VYRUNfQlNELApAQCAtNzk2LDExICs4NzAsMzYgQEAgZWJfc2V0X2VuZ2lu ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICplYiwKIAkJZWItPmZsYWdzID0gZWJf ZW5naW5lX21hcFtlbmdpbmVdOwogfQogCitzdGF0aWMgdW5zaWduZWQgaW50CitmaW5kX2VuZ2lu ZV9pbl9tYXAoc3RydWN0IGN0eCAqY3R4LCBlbnVtIGludGVsX2VuZ2luZV9pZCBlbmdpbmUpCit7 CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3R4LT5lbmdpbmVfbWFwX2Nv dW50OyBpKyspIHsKKwkJaWYgKGN0eC0+ZW5naW5lX21hcFtpXSA9PSBlbmdpbmUpCisJCQlyZXR1 cm4gaSArIDE7CisJfQorCisJaWd0X2Fzc2VydCgwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHN0cnVjdCBjdHggKgorX19nZXRfY3R4KHN0cnVjdCB3b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19z dGVwICp3KQoreworCXJldHVybiAmd3JrLT5jdHhfbGlzdFt3LT5jb250ZXh0ICogMl07Cit9CisK IHN0YXRpYyB2b2lkCi1lYl91cGRhdGVfZmxhZ3Moc3RydWN0IHdfc3RlcCAqdywgZW51bSBpbnRl bF9lbmdpbmVfaWQgZW5naW5lLAotCQl1bnNpZ25lZCBpbnQgZmxhZ3MpCitlYl91cGRhdGVfZmxh Z3Moc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncsCisJCWVudW0gaW50ZWxf ZW5naW5lX2lkIGVuZ2luZSwgdW5zaWduZWQgaW50IGZsYWdzKQogewotCWViX3NldF9lbmdpbmUo JnctPmViLCBlbmdpbmUsIGZsYWdzKTsKKwlzdHJ1Y3QgY3R4ICpjdHggPSBfX2dldF9jdHgod3Jr LCB3KTsKKworCWlmIChjdHgtPmVuZ2luZV9tYXApCisJCXctPmViLmZsYWdzID0gZmluZF9lbmdp bmVfaW5fbWFwKGN0eCwgZW5naW5lKTsKKwllbHNlCisJCWViX3NldF9lbmdpbmUoJnctPmViLCBl bmdpbmUsIGZsYWdzKTsKIAogCXctPmViLmZsYWdzIHw9IEk5MTVfRVhFQ19IQU5ETEVfTFVUOwog CXctPmViLmZsYWdzIHw9IEk5MTVfRVhFQ19OT19SRUxPQzsKQEAgLTgxOSwxMiArOTE4LDYgQEAg Z2V0X3N0YXR1c19vYmplY3RzKHN0cnVjdCB3b3JrbG9hZCAqd3JrKQogCQlyZXR1cm4gd3JrLT5z dGF0dXNfb2JqZWN0OwogfQogCi1zdGF0aWMgc3RydWN0IGN0eCAqCi1fX2dldF9jdHgoc3RydWN0 IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncpCi17Ci0JcmV0dXJuICZ3cmstPmN0eF9s aXN0W3ctPmNvbnRleHQgKiAyXTsKLX0KLQogc3RhdGljIHVpbnQzMl90CiBnZXRfY3R4aWQoc3Ry dWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncpCiB7CkBAIC04OTQsNyArOTg3LDcg QEAgYWxsb2Nfc3RlcF9iYXRjaChzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAq dywgdW5zaWduZWQgaW50IGZsYWdzKQogCQllbmdpbmUgPSBWQ1MyOwogCWVsc2UgaWYgKGZsYWdz ICYgU1dBUFZDUyAmJiBlbmdpbmUgPT0gVkNTMikKIAkJZW5naW5lID0gVkNTMTsKLQllYl91cGRh dGVfZmxhZ3ModywgZW5naW5lLCBmbGFncyk7CisJZWJfdXBkYXRlX2ZsYWdzKHdyaywgdywgZW5n aW5lLCBmbGFncyk7CiAjaWZkZWYgREVCVUcKIAlwcmludGYoIiV1OiAldTp8Iiwgdy0+aWR4LCB3 LT5lYi5idWZmZXJfY291bnQpOwogCWZvciAoaSA9IDA7IGkgPD0gajsgaSsrKQpAQCAtOTM2LDcg KzEwMjksNyBAQCBzdGF0aWMgdm9pZCB2bV9kZXN0cm95KGludCBpOTE1LCB1aW50MzJfdCB2bV9p ZCkKIAlpZ3RfYXNzZXJ0X2VxKF9fdm1fZGVzdHJveShpOTE1LCB2bV9pZCksIDApOwogfQogCi1z dGF0aWMgdm9pZAorc3RhdGljIGludAogcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQs IHN0cnVjdCB3b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJdW5zaWduZWQg aW50IGN0eF92Y3M7CkBAIC05OTksMzAgKzEwOTIsNTMgQEAgcHJlcGFyZV93b3JrbG9hZCh1bnNp Z25lZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJ LyoKIAkgKiBJZGVudGlmeSBpZiBjb250ZXh0cyB0YXJnZXQgc3BlY2lmaWMgZW5naW5lIGluc3Rh bmNlcyBhbmQgaWYgdGhleQogCSAqIHdhbnQgdG8gYmUgYmFsYW5jZWQuCisJICoKKwkgKiBUcmFu c2ZlciBvdmVyIGVuZ2luZSBtYXAgY29uZmlndXJhdGlvbiBmcm9tIHRoZSB3b3JrbG9hZCBzdGVw LgogCSAqLwogCWZvciAoaiA9IDA7IGogPCB3cmstPm5yX2N0eHM7IGogKz0gMikgewogCQlib29s IHRhcmdldHMgPSBmYWxzZTsKIAkJYm9vbCBiYWxhbmNlID0gZmFsc2U7CiAKIAkJZm9yIChpID0g MCwgdyA9IHdyay0+c3RlcHM7IGkgPCB3cmstPm5yX3N0ZXBzOyBpKyssIHcrKykgewotCQkJaWYg KHctPnR5cGUgIT0gQkFUQ0gpCi0JCQkJY29udGludWU7Ci0KIAkJCWlmICh3LT5jb250ZXh0ICE9 IChqIC8gMikpCiAJCQkJY29udGludWU7CiAKLQkJCWlmICh3LT5lbmdpbmUgPT0gVkNTKQotCQkJ CWJhbGFuY2UgPSB0cnVlOwotCQkJZWxzZQotCQkJCXRhcmdldHMgPSB0cnVlOworCQkJaWYgKHct PnR5cGUgPT0gQkFUQ0gpIHsKKwkJCQlpZiAody0+ZW5naW5lID09IFZDUykKKwkJCQkJYmFsYW5j ZSA9IHRydWU7CisJCQkJZWxzZQorCQkJCQl0YXJnZXRzID0gdHJ1ZTsKKwkJCX0gZWxzZSBpZiAo dy0+dHlwZSA9PSBFTkdJTkVfTUFQKSB7CisJCQkJd3JrLT5jdHhfbGlzdFtqXS5lbmdpbmVfbWFw ID0gdy0+ZW5naW5lX21hcDsKKwkJCQl3cmstPmN0eF9saXN0W2pdLmVuZ2luZV9tYXBfY291bnQg PQorCQkJCQl3LT5lbmdpbmVfbWFwX2NvdW50OworCQkJfQogCQl9CiAKLQkJaWYgKGZsYWdzICYg STkxNSkgewotCQkJd3JrLT5jdHhfbGlzdFtqXS50YXJnZXRzX2luc3RhbmNlID0gdGFyZ2V0czsK KwkJd3JrLT5jdHhfbGlzdFtqXS50YXJnZXRzX2luc3RhbmNlID0gdGFyZ2V0czsKKwkJaWYgKGZs YWdzICYgSTkxNSkKIAkJCXdyay0+Y3R4X2xpc3Rbal0ud2FudHNfYmFsYW5jZSA9IGJhbGFuY2U7 CisJfQorCisJLyoKKwkgKiBFbnN1cmUgVkNTIGlzIG5vdCBhbGxvd2VkIHdpdGggZW5naW5lIG1h cCBjb250ZXh0cy4KKwkgKi8KKwlmb3IgKGogPSAwOyBqIDwgd3JrLT5ucl9jdHhzOyBqICs9IDIp IHsKKwkJZm9yIChpID0gMCwgdyA9IHdyay0+c3RlcHM7IGkgPCB3cmstPm5yX3N0ZXBzOyBpKyss IHcrKykgeworCQkJaWYgKHctPmNvbnRleHQgIT0gKGogLyAyKSkKKwkJCQljb250aW51ZTsKKwor CQkJaWYgKHctPnR5cGUgIT0gQkFUQ0gpCisJCQkJY29udGludWU7CisKKwkJCWlmICh3cmstPmN0 eF9saXN0W2pdLmVuZ2luZV9tYXAgJiYgdy0+ZW5naW5lID09IFZDUykgeworCQkJCXdzaW1fZXJy KCJCYXRjaGVzIHRhcmdldHRpbmcgZW5naW5lIG1hcHMgbXVzdCB1c2UgZXhwbGljaXQgZW5naW5l cyFcbiIpOworCQkJCXJldHVybiAtMTsKKwkJCX0KIAkJfQogCX0KIAorCiAJLyoKIAkgKiBDcmVh dGUgYW5kIGNvbmZpZ3VyZSBjb250ZXh0cy4KIAkgKi8KQEAgLTEwMzMsNyArMTE0OSw3IEBAIHBy ZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5z aWduZWQgaW50IGZsYWdzKQogCQlpZiAoY3R4LT5pZCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChm bGFncyAmIEk5MTUpIHsKKwkJaWYgKChmbGFncyAmIEk5MTUpIHx8IGN0eC0+ZW5naW5lX21hcCkg ewogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gZXh0 ID0gewogCQkJCS5iYXNlLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwK IAkJCQkucGFyYW0ucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fVk0sCkBAIC0xMDYzLDcgKzEx NzksNyBAQCBwcmVwYXJlX3dvcmtsb2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2Fk ICp3cmssIHVuc2lnbmVkIGludCBmbGFncykKIAkJCQlicmVhazsKIAkJCX0KIAotCQkJaWYgKCFj dHgtPnRhcmdldHNfaW5zdGFuY2UpCisJCQlpZiAoIWN0eC0+ZW5naW5lX21hcCAmJiAhY3R4LT50 YXJnZXRzX2luc3RhbmNlKQogCQkJCWFyZ3MuZmxhZ3MgfD0KIAkJCQkgICAgIEk5MTVfQ09OVEVY VF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVMSU5FOwogCkBAIC0xMDk2LDcgKzEyMTIsNyBAQCBw cmVwYXJlX3dvcmtsb2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmssIHVu c2lnbmVkIGludCBmbGFncykKIAkJICogYm90aCB3YW50IHRvIHRhcmdldCBzcGVjaWZpYyBlbmdp bmVzIGFuZCBiZSBiYWxhbmNlZCBieSBpOTE1PwogCQkgKi8KIAkJaWYgKChmbGFncyAmIEk5MTUp ICYmIGN0eC0+d2FudHNfYmFsYW5jZSAmJgotCQkgICAgY3R4LT50YXJnZXRzX2luc3RhbmNlKSB7 CisJCSAgICBjdHgtPnRhcmdldHNfaW5zdGFuY2UgJiYgIWN0eC0+ZW5naW5lX21hcCkgewogCQkJ c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gZXh0ID0gewog CQkJCS5iYXNlLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwKIAkJCQku cGFyYW0ucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fVk0sCkBAIC0xMTIxLDcgKzEyMzcsMzMg QEAgcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9hZCAqd3Jr LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCQlfX2N0eF9zZXRfcHJpbyhjdHhfaWQsIHdyay0+cHJp byk7CiAJCX0KIAotCQlpZiAoY3R4LT53YW50c19iYWxhbmNlKSB7CisJCWlmIChjdHgtPmVuZ2lu ZV9tYXApIHsKKwkJCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhzZXRfZW5naW5l cywKKwkJCQkJCQkgIGN0eC0+ZW5naW5lX21hcF9jb3VudCArIDEpOworCQkJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0geworCQkJCS5jdHhfaWQgPSBjdHhfaWQsCisJ CQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJCQkJLnNpemUgPSBzaXpl b2Yoc2V0X2VuZ2luZXMpLAorCQkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc2V0X2VuZ2lu ZXMpLAorCQkJfTsKKworCQkJc2V0X2VuZ2luZXMuZXh0ZW5zaW9ucyA9IDA7CisKKwkJCS8qIFJl c2VydmUgc2xvdCBmb3IgdmlydHVhbCBlbmdpbmUuICovCisJCQlzZXRfZW5naW5lcy5lbmdpbmVz WzBdLmVuZ2luZV9jbGFzcyA9CisJCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsKKwkJCXNl dF9lbmdpbmVzLmVuZ2luZXNbMF0uZW5naW5lX2luc3RhbmNlID0KKwkJCQlJOTE1X0VOR0lORV9D TEFTU19JTlZBTElEX05PTkU7CisKKwkJCWZvciAoaiA9IDE7IGogPD0gY3R4LT5lbmdpbmVfbWFw X2NvdW50OyBqKyspIHsKKwkJCQlzZXRfZW5naW5lcy5lbmdpbmVzW2pdLmVuZ2luZV9jbGFzcyA9 CisJCQkJCUk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPOyAvKiBGSVhNRSAqLworCQkJCXNldF9lbmdp bmVzLmVuZ2luZXNbal0uZW5naW5lX2luc3RhbmNlID0KKwkJCQkJY3R4LT5lbmdpbmVfbWFwW2og LSAxXSAtIFZDUzE7IC8qIEZJWE1FICovCisJCQl9CisKKwkJCWdlbV9jb250ZXh0X3NldF9wYXJh bShmZCwgJnBhcmFtKTsKKwkJfSBlbHNlIGlmIChjdHgtPndhbnRzX2JhbGFuY2UpIHsKIAkJCUk5 MTVfREVGSU5FX0NPTlRFWFRfRU5HSU5FU19MT0FEX0JBTEFOQ0UobG9hZF9iYWxhbmNlLCAyKSA9 IHsKIAkJCQkuYmFzZS5uYW1lID0gSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5D RSwKIAkJCQkubnVtX3NpYmxpbmdzID0gMiwKQEAgLTEyMDQsNiArMTM0Niw4IEBAIHByZXBhcmVf d29ya2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQg aW50IGZsYWdzKQogCiAJCWFsbG9jX3N0ZXBfYmF0Y2god3JrLCB3LCBfZmxhZ3MpOwogCX0KKwor CXJldHVybiAwOwogfQogCiBzdGF0aWMgZG91YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0IHRpbWVz cGVjICpzdGFydCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICplbmQpCkBAIC0xOTQxLDcgKzIwODUs NyBAQCBkb19lYihzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAqdywgZW51bSBp bnRlbF9lbmdpbmVfaWQgZW5naW5lLAogCXVpbnQzMl90IHNlcW5vID0gbmV3X3NlcW5vKHdyaywg ZW5naW5lKTsKIAl1bnNpZ25lZCBpbnQgaTsKIAotCWViX3VwZGF0ZV9mbGFncyh3LCBlbmdpbmUs IGZsYWdzKTsKKwllYl91cGRhdGVfZmxhZ3Mod3JrLCB3LCBlbmdpbmUsIGZsYWdzKTsKIAogCWlm IChmbGFncyAmIFNFUU5PKQogCQl1cGRhdGVfYmJfc2Vxbm8odywgZW5naW5lLCBzZXFubyk7CkBA IC0yMDkwLDcgKzIyMzQsOCBAQCBzdGF0aWMgdm9pZCAqcnVuX3dvcmtsb2FkKHZvaWQgKmRhdGEp CiAJCQkJCQkJCSAgICB3LT5wcmlvcml0eTsKIAkJCQl9CiAJCQkJY29udGludWU7Ci0JCQl9IGVs c2UgaWYgKHctPnR5cGUgPT0gUFJFRU1QVElPTikgeworCQkJfSBlbHNlIGlmICh3LT50eXBlID09 IFBSRUVNUFRJT04gfHwKKwkJCQkgICB3LT50eXBlID09IEVOR0lORV9NQVApIHsKIAkJCQljb250 aW51ZTsKIAkJCX0KIApAQCAtMjY0OCw3ICsyNzkzLDExIEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJd1tpXS0+cHJpbnRfc3RhdHMgPSB2ZXJib3NlID4gMSB8fAogCQkJCSAg ICAodmVyYm9zZSA+IDAgJiYgbWFzdGVyX3dvcmtsb2FkID09IGkpOwogCi0JCXByZXBhcmVfd29y a2xvYWQoaSwgd1tpXSwgZmxhZ3NfKTsKKwkJaWYgKHByZXBhcmVfd29ya2xvYWQoaSwgd1tpXSwg ZmxhZ3NfKSkgeworCQkJd3NpbV9lcnIoIkZhaWxlZCB0byBwcmVwYXJlIHdvcmtsb2FkICV1IVxu IiwgaSk7CisJCQlyZXR1cm4gMTsKKwkJfQorCiAKIAkJaWYgKGJhbGFuY2VyICYmIGJhbGFuY2Vy LT5pbml0KSB7CiAJCQlpbnQgcmV0ID0gYmFsYW5jZXItPmluaXQoYmFsYW5jZXIsIHdbaV0pOwpk aWZmIC0tZ2l0IGEvYmVuY2htYXJrcy93c2ltL1JFQURNRSBiL2JlbmNobWFya3Mvd3NpbS9SRUFE TUUKaW5kZXggNDc4NmYxMTZiNGFjLi41M2Y4MTRhNzNjNzMgMTAwNjQ0Ci0tLSBhL2JlbmNobWFy a3Mvd3NpbS9SRUFETUUKKysrIGIvYmVuY2htYXJrcy93c2ltL1JFQURNRQpAQCAtMyw2ICszLDcg QEAgV29ya2xvYWQgZGVzY3JpcHRvciBmb3JtYXQKIAogY3R4LmVuZ2luZS5kdXJhdGlvbl91cy5k ZXBlbmRlbmN5LndhaXQsLi4uCiA8dWludD4uPHN0cj4uPHVpbnQ+Wy08dWludD5dLjxpbnQgPD0g MD5bLzxpbnQgPD0gMD5dWy4uLl0uPDB8MT4sLi4uCitNLjx1aW50Pi48c3RyPlt8PHN0cj5dLi4u CiBQfFguPHVpbnQ+LjxpbnQ+CiBkfHB8c3x0fHF8YS48aW50PiwuLi4KIGYKQEAgLTIzLDEwICsy NCwxMSBAQCBBZGRpdGlvbmFsIHdvcmtsb2FkIHN0ZXBzIGFyZSBhbHNvIHN1cHBvcnRlZDoKICAn cScgLSBUaHJvdHRsZSB0byBuIG1heCBxdWV1ZSBkZXB0aC4KICAnZicgLSBDcmVhdGUgYSBzeW5j IGZlbmNlLgogICdhJyAtIEFkdmFuY2UgdGhlIHByZXZpb3VzbHkgY3JlYXRlZCBzeW5jIGZlbmNl LgorICdNJyAtIFNldCB1cCBlbmdpbmUgbWFwLgogICdQJyAtIENvbnRleHQgcHJpb3JpdHkuCiAg J1gnIC0gQ29udGV4dCBwcmVlbXB0aW9uIGNvbnRyb2wuCiAKLUVuZ2luZSBpZHM6IFJDUywgQkNT LCBWQ1MsIFZDUzEsIFZDUzIsIFZFQ1MKK0VuZ2luZSBpZHM6IERFRkFVTFQsIFJDUywgQkNTLCBW Q1MsIFZDUzEsIFZDUzIsIFZFQ1MKIAogRXhhbXBsZSAobGVhZGluZyBzcGFjZXMgbXVzdCBub3Qg YmUgcHJlc2VudCBpbiB0aGUgYWN0dWFsIGZpbGUpOgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTYxLDMgKzE2Mywy NCBAQCBUaGUgc2FtZSBjb250ZXh0IGlzIHRoZW4gbWFya2VkIHRvIGhhdmUgYmF0Y2hlcyB3aGlj aCBjYW4gYmUgcHJlZW1wdGVkIGV2ZXJ5CiAKIFNhbWUgYXMgd2l0aCBjb250ZXh0IHByaW9yaXR5 LCBjb250ZXh0IHByZWVtcHRpb24gY29tbWFuZHMgYXJlIHZhbGlkIHVudGlsCiBvcHRpb25hbGx5 IG92ZXJyaWRlbiBieSBhbm90aGVyIHByZWVtcHRpb24gY29udHJvbCBjaGFuZ2Ugb24gdGhlIHNh bWUgY29udGV4dC4KKworRW5naW5lIG1hcHMKKy0tLS0tLS0tLS0tCisKK0VuZ2luZSBtYXBzIGFy ZSBhIHBlciBjb250ZXh0IGZlYXR1cmUgd2hpY2ggY2hhbmdlcyB0aGUgd2F5IGVuZ2luZSBzZWxl Y3Rpb24gaXMKK2RvbmUgaW4gdGhlIGRyaXZlci4KKworRXhhbXBsZToKKworICBNLjEuVkNTMXxW Q1MyCisKK1RoaXMgc2V0cyB1cCBjb250ZXh0IDEgd2l0aCBhbiBlbmdpbmUgbWFwIGNvbnRhaW5p bmcgVkNTMSBhbmQgVkNTMiBlbmdpbmUuCitTdWJtaXNzaW9uIHRvIHRoaXMgY29udGV4dCBjYW4g bm93IG9ubHkgcmVmZXJlbmNlIHRoZXNlIHR3byBlbmdpbmVzLgorCitFbmdpbmUgbWFwcyBjYW4g YWxzbyBiZSBkZWZpbmVkIGJhc2VkIG9uIGNsYXNzIGxpa2UgVkNTLgorCitFeGFtcGxlOgorCitN LjEuVkNTCisKK1RoaXMgc2V0cyB1cCB0aGUgZW5naW5lIG1hcCB0byBhbGwgYXZhaWxhYmxlIFZD UyBjbGFzcyBlbmdpbmVzLgotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXY=