From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Thu, 27 Jun 2019 11:20:19 +0100 Message-Id: <20190627102019.9019-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] tests/i915/gem_ctx_switch: Update with engine discovery 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: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkkgY29udmVy dGVkIHRoaXMgb25lIGFzIGFuIGV4YW1wbGUsIG9yIGF0IGxlYXN0IHRvIGRyaXZlIHRoZSBkaXNj dXNzaW9uLApob3cgbW9yZSBjb21wbGV4IHRlc3RzIGNhbiBiZSBjb252ZXJ0ZWQuCgpJIGhhdmUg a2VwdCB0aGUgbGVnYWN5IGV4ZWNidWYgYWJpIHRlc3RpbmcgcHJlZml4ZWQgd2l0aCAibGVnYWN5 LSIuCgpOZXcgdGVzdHMgd2VyZSBhZGRlZCB0byBleGVyY2lzZSBwaHlzaWNhbCBlbmdpbmVzIHZp YSBlbmdpbmUgZGlzY292ZXJ5IGFuZAphbHNvICJhbGwiIHRlc3RzIGhhdmUgYmVlbiB1cGRhdGVk IGluIHRoZSBzYW1lIHdheS4KClRvIGtlZXAgdGhpbmdzIHNpbXBsZXIgYW5kIGF2b2lkIGhhdmlu ZyB0byBjcmVhdGUgc2VwYXJhdGUgY29udGV4dHMgbGVnYWN5CnRlc3RzIGhhdmUgdG8gYmUgZmly c3Qgc2luY2UgdGhlIF9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lIGl0ZXJhdG9yIHdvdWxkCm90 aGVyd2lzZSBjb25maWd1cmUgdGhlIGRlZmF1bHQgY29udGV4dCBhbmQgY29uZnVzZSB0aGUgdGVz dC4KClNvIGxlZ2FjeSB0ZXN0cyBydW4gb24gdGhlIHVuY29uZmlndXJlZCAod2l0aCBlbmdpbmUg bWFwKSBjb250ZXh0IGFuZCB1c2UKYSBuZXcgaGVscGVyIGdlbV9lYl9mbGFnc190b19lbmdpbmUg dG8gbG9vayB1cCB0aGUgZW5naW5lIGZyb20gdGhlCmludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMiBz dGF0aWMgbGlzdC4gVGhpcyBpcyBvbmx5IHRvIGVuYWJsZSB0aGUgY29yZSB0ZXN0CmNvZGUgdG8g YmUgc2hhcmVkLgoKUGxhY2VzIHdoZXJlIG5ldyBjb250ZXh0cyBhcmUgY3JlYXRlZCBoYWQgdG8g YmUgdXBkYXRlZCB0byBlaXRoZXIgZXF1YWxseQpjb25maWd1cmUgdGhlIGNvbnRleHRzIG9yIG5v dC4gQW5vdGhlciBuZXcgaGVscGVyLApnZW1fY29udGV4dF9oYXNfZW5naW5lX21hcCB3YXMgYWRk ZWQgdG8gZW5hYmxlIHRoaXMuCgpBbHNvIGJld2FyZSBvZiBkcml2ZS1ieSBmb3JtYXR0aW5nIGNo YW5nZXMuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBS YW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+CkNjOiBBbmRpIFNoeXRpIDxhbmRp LnNoeXRpQGludGVsLmNvbT4KLS0tCiBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMgICAg ICAgIHwgIDI3ICsrKysrCiBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggICAgICAgIHwg ICA1ICsKIHRlc3RzL2k5MTUvZ2VtX2N0eF9zd2l0Y2guYyAgICAgICAgICAgfCAxMzggKysrKysr KysrKysrKysrKysrLS0tLS0tLS0KIHRlc3RzL2ludGVsLWNpL2JsYWNrbGlzdC50eHQgICAgICAg ICAgfCAgIDIgKy0KIHRlc3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QgfCAgIDMg Ky0KIDUgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyBiL2xpYi9pOTE1L2dl bV9lbmdpbmVfdG9wb2xvZ3kuYwppbmRleCBmZGQxYjk1MTY3MmIuLjZjZmUzNDY4ZTNkOCAxMDA2 NDQKLS0tIGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCisrKyBiL2xpYi9pOTE1L2dl bV9lbmdpbmVfdG9wb2xvZ3kuYwpAQCAtMjg5LDMgKzI4OSwzMCBAQCBib29sIGdlbV9oYXNfZW5n aW5lX3RvcG9sb2d5KGludCBmZCkKIAogCXJldHVybiAhX19nZW1fY29udGV4dF9nZXRfcGFyYW0o ZmQsICZwYXJhbSk7CiB9CisKK2NvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq CitnZW1fZWJfZmxhZ3NfdG9fZW5naW5lKHVuc2lnbmVkIGludCBmbGFncykKK3sKKwljb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyOworCisJX19mb3JfZWFjaF9zdGF0aWNf ZW5naW5lKGUyKSB7CisJCWlmIChlMi0+ZmxhZ3MgPT0gZmxhZ3MpCisJCQlyZXR1cm4gZTI7CisJ fQorCisJcmV0dXJuIE5VTEw7Cit9CisKK2Jvb2wgZ2VtX2NvbnRleHRfaGFzX2VuZ2luZV9tYXAo aW50IGZkLCB1aW50MzJfdCBjdHgpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtIHBhcmFtID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwkJ LmN0eF9pZCA9IGN0eAorCX07CisJaW50IHJldDsKKworCXJldCA9IF9fZ2VtX2NvbnRleHRfZ2V0 X3BhcmFtKGZkLCAmcGFyYW0pOworCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKKworCXJldHVybiBw YXJhbS5zaXplOworfQpkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5o IGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCmluZGV4IDI0MTVmZDFlMzc5Yi4uYjE3 NTQ4M2ZhYzFjIDEwMDY0NAotLS0gYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKKysr IGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCkBAIC01Myw2ICs1MywxMSBAQCBpbnQg Z2VtX2NvbnRleHRfbG9va3VwX2VuZ2luZShpbnQgZmQsIHVpbnQ2NF90IGVuZ2luZSwgdWludDMy X3QgY3R4X2lkLAogCiB2b2lkIGdlbV9jb250ZXh0X3NldF9hbGxfZW5naW5lcyhpbnQgZmQsIHVp bnQzMl90IGN0eCk7CiAKK2Jvb2wgZ2VtX2NvbnRleHRfaGFzX2VuZ2luZV9tYXAoaW50IGZkLCB1 aW50MzJfdCBjdHgpOworCitjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgor Z2VtX2ViX2ZsYWdzX3RvX2VuZ2luZSh1bnNpZ25lZCBpbnQgZmxhZ3MpOworCiAjZGVmaW5lIF9f Zm9yX2VhY2hfc3RhdGljX2VuZ2luZShlX18pIFwKIAlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKIApkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fY3R4X3N3aXRjaC5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4X3N3aXRjaC5jCmluZGV4 IDY0NzkxMWQ0YzQyZS4uZGUzOTc0ODM0NGI4IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9j dHhfc3dpdGNoLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fY3R4X3N3aXRjaC5jCkBAIC01NSw3ICs1 NSw3IEBAIHN0YXRpYyBkb3VibGUgZWxhcHNlZChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnN0YXJ0 LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKmVuZCkKIAogc3RhdGljIGludCBtZWFzdXJlX3FsZW4o aW50IGZkLAogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlY2J1ZiwKLQkJ CXVuc2lnbmVkIGludCAqZW5naW5lLCB1bnNpZ25lZCBpbnQgbmVuZ2luZSwKKwkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZW5naW5lcywKIAkJCWludCB0aW1lb3V0KQogewogCWNv bnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICogY29uc3Qgb2JqID0KQEAgLTYz LDE1ICs2MywxNyBAQCBzdGF0aWMgaW50IG1lYXN1cmVfcWxlbihpbnQgZmQsCiAJdWludDMyX3Qg Y3R4WzY0XTsKIAlpbnQgbWluID0gSU5UX01BWCwgbWF4ID0gMDsKIAotCWZvciAoaW50IGkgPSAw OyBpIDwgQVJSQVlfU0laRShjdHgpOyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGN0eCk7IGkrKykgewogCQljdHhbaV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOworCQln ZW1fY29udGV4dF9zZXRfYWxsX2VuZ2luZXMoZmQsIGN0eFtpXSk7CisJfQogCi0JZm9yICh1bnNp Z25lZCBpbnQgbiA9IDA7IG4gPCBuZW5naW5lOyBuKyspIHsKKwlmb3IgKHVuc2lnbmVkIGludCBu ID0gMDsgbiA8IGVuZ2luZXMtPm5lbmdpbmVzOyBuKyspIHsKIAkJdWludDY0X3Qgc2F2ZWQgPSBl eGVjYnVmLT5mbGFnczsKIAkJc3RydWN0IHRpbWVzcGVjIHR2ID0ge307CiAJCWludCBxOwogCi0J CWV4ZWNidWYtPmZsYWdzIHw9IGVuZ2luZVtuXTsKKwkJZXhlY2J1Zi0+ZmxhZ3MgfD0gZW5naW5l cy0+ZW5naW5lc1tuXS5mbGFnczsKIAogCQlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUo Y3R4KTsgaSsrKSB7CiAJCQlleGVjYnVmLT5yc3ZkMSA9IGN0eFtpXTsKQEAgLTkwLDcgKzkyLDgg QEAgc3RhdGljIGludCBtZWFzdXJlX3FsZW4oaW50IGZkLAogCQkgKiBCZSBjb25zZXJ2YXRpdmUg YW5kIGFpbSBub3QgdG8gb3ZlcnNob290IHRpbWVvdXQsIHNvIHNjYWxlCiAJCSAqIGRvd24gYnkg OCBmb3IgaG9wZWZ1bGx5IGEgbWF4IG9mIDEyLjUlIGVycm9yLgogCQkgKi8KLQkJcSA9IEFSUkFZ X1NJWkUoY3R4KSAqIHRpbWVvdXQgKiAxZTkgLyBpZ3RfbnNlY19lbGFwc2VkKCZ0dikgLyA4ICsg MTsKKwkJcSA9IEFSUkFZX1NJWkUoY3R4KSAqIHRpbWVvdXQgKiAxZTkgLyBpZ3RfbnNlY19lbGFw c2VkKCZ0dikgLworCQkgICAgOCArIDE7CiAJCWlmIChxIDwgbWluKQogCQkJbWluID0gcTsKIAkJ aWYgKHEgPiBtYXgpCkBAIC0xMDcsNyArMTEwLDcgQEAgc3RhdGljIGludCBtZWFzdXJlX3FsZW4o aW50IGZkLAogfQogCiBzdGF0aWMgdm9pZCBzaW5nbGUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs Ci0JCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lICplLAorCQkgICBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyLAogCQkgICB1bnNpZ25lZCBmbGFn cywKIAkJICAgY29uc3QgaW50IG5jcHVzLAogCQkgICBpbnQgdGltZW91dCkKQEAgLTEyNSwxMyAr MTI4LDE0IEBAIHN0YXRpYyB2b2lkIHNpbmdsZShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwKIAlz aGFyZWQgPSBtbWFwKE5VTEwsIDQwOTYsIFBST1RfV1JJVEUsIE1BUF9TSEFSRUQgfCBNQVBfQU5P TiwgLTEsIDApOwogCWlndF9hc3NlcnQoc2hhcmVkICE9IE1BUF9GQUlMRUQpOwogCi0JZ2VtX3Jl cXVpcmVfcmluZyhmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKTsKLQogCWZvciAobiA9IDA7IG4g PCA2NDsgbisrKSB7CiAJCWlmIChmbGFncyAmIFFVRVVFKQogCQkJY29udGV4dHNbbl0gPSBnZW1f cXVldWVfY3JlYXRlKGZkKTsKIAkJZWxzZQogCQkJY29udGV4dHNbbl0gPSBnZW1fY29udGV4dF9j cmVhdGUoZmQpOworCisJCWlmIChnZW1fY29udGV4dF9oYXNfZW5naW5lX21hcChmZCwgMCkpCisJ CQlnZW1fY29udGV4dF9zZXRfYWxsX2VuZ2luZXMoZmQsIGNvbnRleHRzW25dKTsKIAl9CiAKIAlt ZW1zZXQoJm9iaiwgMCwgc2l6ZW9mKG9iaikpOwpAQCAtMTUyLDEyICsxNTYsMTIgQEAgc3RhdGlj IHZvaWQgc2luZ2xlKGludCBmZCwgdWludDMyX3QgaGFuZGxlLAogCWV4ZWNidWYuYnVmZmVyc19w dHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7CiAJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAxOwog CWV4ZWNidWYucnN2ZDEgPSBjb250ZXh0c1swXTsKLQlleGVjYnVmLmZsYWdzID0gZS0+ZXhlY19p ZCB8IGUtPmZsYWdzOworCWV4ZWNidWYuZmxhZ3MgPSBlMi0+ZmxhZ3M7CiAJZXhlY2J1Zi5mbGFn cyB8PSBMT0NBTF9JOTE1X0VYRUNfSEFORExFX0xVVDsKIAlleGVjYnVmLmZsYWdzIHw9IExPQ0FM X0k5MTVfRVhFQ19OT19SRUxPQzsKIAlpZ3RfcmVxdWlyZShfX2dlbV9leGVjYnVmKGZkLCAmZXhl Y2J1ZikgPT0gMCk7CiAJaWYgKF9fZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKSkgewotCQlleGVj YnVmLmZsYWdzID0gZS0+ZXhlY19pZCB8IGUtPmZsYWdzOworCQlleGVjYnVmLmZsYWdzID0gZTIt PmZsYWdzOwogCQlyZWxvYy50YXJnZXRfaGFuZGxlID0gb2JqLmhhbmRsZTsKIAkJZ2VtX2V4ZWNi dWYoZmQsICZleGVjYnVmKTsKIAl9CkBAIC0xOTAsNyArMTk0LDggQEAgc3RhdGljIHZvaWQgc2lu Z2xlKGludCBmZCwgdWludDMyX3QgaGFuZGxlLAogCQljbG9ja19nZXR0aW1lKENMT0NLX01PTk9U T05JQywgJm5vdyk7CiAKIAkJaWd0X2luZm8oIlslZF0gJXM6ICUndSBjeWNsZXM6ICUuM2Z1cyVz XG4iLAotCQkJIGNoaWxkLCBlLT5uYW1lLCBjb3VudCwgZWxhcHNlZCgmc3RhcnQsICZub3cpKjFl NiAvIGNvdW50LAorCQkJIGNoaWxkLCBlMi0+bmFtZSwgY291bnQsCisJCQkgZWxhcHNlZCgmc3Rh cnQsICZub3cpICogMWU2IC8gY291bnQsCiAJCQkgZmxhZ3MgJiBJTlRFUlJVUFRJQkxFID8gIiAo aW50ZXJydXB0aWJsZSkiIDogIiIpOwogCiAJCXNoYXJlZFtjaGlsZF0uZWxhcHNlZCA9IGVsYXBz ZWQoJnN0YXJ0LCAmbm93KTsKQEAgLTIwOSw3ICsyMTQsNyBAQCBzdGF0aWMgdm9pZCBzaW5nbGUo aW50IGZkLCB1aW50MzJfdCBoYW5kbGUsCiAJCX0KIAogCQlpZ3RfaW5mbygiVG90YWwgJXM6ICUn bHUgY3ljbGVzOiAlLjNmdXMlc1xuIiwKLQkJCSBlLT5uYW1lLCB0b3RhbCwgbWF4KjFlNiAvIHRv dGFsLAorCQkJIGUyLT5uYW1lLCB0b3RhbCwgbWF4KjFlNiAvIHRvdGFsLAogCQkJIGZsYWdzICYg SU5URVJSVVBUSUJMRSA/ICIgKGludGVycnVwdGlibGUpIiA6ICIiKTsKIAl9CiAKQEAgLTIyMywy NSArMjI4LDIwIEBAIHN0YXRpYyB2b2lkIGFsbChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdW5z aWduZWQgZmxhZ3MsIGludCB0aW1lb3V0KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1 ZmZlcjIgZXhlY2J1ZjsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07 Ci0JdW5zaWduZWQgaW50IGVuZ2luZVsxNl0sIGU7Ci0JY29uc3QgY2hhciAqbmFtZVsxNl07CisJ c3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGVuZ2luZXMgPSB7IH07CiAJdWludDMyX3QgY29udGV4 dHNbNjVdOwotCXVuc2lnbmVkIGludCBuZW5naW5lOwogCWludCBuLCBxbGVuOwogCi0JbmVuZ2lu ZSA9IDA7Ci0JZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7Ci0JCWVuZ2luZVtuZW5n aW5lXSA9IGU7Ci0JCW5hbWVbbmVuZ2luZV0gPSBlX18tPm5hbWU7Ci0JCW5lbmdpbmUrKzsKLQl9 Ci0JaWd0X3JlcXVpcmUobmVuZ2luZSk7CisJZW5naW5lcyA9IGludGVsX2luaXRfZW5naW5lX2xp c3QoZmQsIDApOworCWlndF9yZXF1aXJlKGVuZ2luZXMubmVuZ2luZXMpOwogCiAJZm9yIChuID0g MDsgbiA8IEFSUkFZX1NJWkUoY29udGV4dHMpOyBuKyspIHsKIAkJaWYgKGZsYWdzICYgUVVFVUUp CiAJCQljb250ZXh0c1tuXSA9IGdlbV9xdWV1ZV9jcmVhdGUoZmQpOwogCQllbHNlCiAJCQljb250 ZXh0c1tuXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisKKwkJZ2VtX2NvbnRleHRfc2V0X2Fs bF9lbmdpbmVzKGZkLCBjb250ZXh0c1tuXSk7CiAJfQogCiAJbWVtc2V0KG9iaiwgMCwgc2l6ZW9m KG9iaikpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIGFsbChpbnQgZmQsIHVpbnQz Ml90IGhhbmRsZSwgdW5zaWduZWQgZmxhZ3MsIGludCB0aW1lb3V0KQogCWlndF9yZXF1aXJlKF9f Z2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKSA9PSAwKTsKIAlnZW1fc3luYyhmZCwgaGFuZGxlKTsK IAotCXFsZW4gPSBtZWFzdXJlX3FsZW4oZmQsICZleGVjYnVmLCBlbmdpbmUsIG5lbmdpbmUsIHRp bWVvdXQpOworCXFsZW4gPSBtZWFzdXJlX3FsZW4oZmQsICZleGVjYnVmLCAmZW5naW5lcywgdGlt ZW91dCk7CiAJaWd0X2luZm8oIlVzaW5nIHRpbWluZyBkZXB0aCBvZiAlZCBiYXRjaGVzXG4iLCBx bGVuKTsKIAogCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKTsKQEAg LTI2NCwxMyArMjY0LDE1IEBAIHN0YXRpYyB2b2lkIGFsbChpbnQgZmQsIHVpbnQzMl90IGhhbmRs ZSwgdW5zaWduZWQgZmxhZ3MsIGludCB0aW1lb3V0KQogCiAJZm9yIChpbnQgcG90ID0gMjsgcG90 IDw9IDY0OyBwb3QgKj0gMikgewogCQlmb3IgKGludCBuY3R4ID0gcG90IC0gMTsgbmN0eCA8PSBw b3QgKyAxOyBuY3R4KyspIHsKLQkJCWlndF9mb3JrKGNoaWxkLCBuZW5naW5lKSB7CisJCQlpZ3Rf Zm9yayhjaGlsZCwgZW5naW5lcy5uZW5naW5lcykgewogCQkJCXN0cnVjdCB0aW1lc3BlYyBzdGFy dCwgbm93OwogCQkJCXVuc2lnbmVkIGludCBjb3VudCA9IDA7CiAKIAkJCQlvYmpbMF0uaGFuZGxl ID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Ci0JCQkJZXhlY2J1Zi5mbGFncyB8PSBlbmdpbmVbY2hp bGRdOwotCQkJCWZvciAoaW50IGxvb3AgPSAwOyBsb29wIDwgQVJSQVlfU0laRShjb250ZXh0cyk7 IGxvb3ArKykgeworCQkJCWV4ZWNidWYuZmxhZ3MgfD0gZW5naW5lcy5lbmdpbmVzW2NoaWxkXS5m bGFnczsKKwkJCQlmb3IgKGludCBsb29wID0gMDsKKwkJCQkgICAgIGxvb3AgPCBBUlJBWV9TSVpF KGNvbnRleHRzKTsKKwkJCQkgICAgIGxvb3ArKykgewogCQkJCQlleGVjYnVmLnJzdmQxID0gY29u dGV4dHNbbG9vcF07CiAJCQkJCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7CiAJCQkJfQpAQCAt Mjc5LDcgKzI4MSw4IEBAIHN0YXRpYyB2b2lkIGFsbChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwg dW5zaWduZWQgZmxhZ3MsIGludCB0aW1lb3V0KQogCQkJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9O T1RPTklDLCAmc3RhcnQpOwogCQkJCWRvIHsKIAkJCQkJZm9yIChpbnQgbG9vcCA9IDA7IGxvb3Ag PCBxbGVuOyBsb29wKyspIHsKLQkJCQkJCWV4ZWNidWYucnN2ZDEgPSBjb250ZXh0c1tsb29wICUg bmN0eF07CisJCQkJCQlleGVjYnVmLnJzdmQxID0KKwkJCQkJCQljb250ZXh0c1tsb29wICUgbmN0 eF07CiAJCQkJCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwogCQkJCQl9CiAJCQkJCWNvdW50 ICs9IHFsZW47CkBAIC0yOTEsOCArMjk0LDExIEBAIHN0YXRpYyB2b2lkIGFsbChpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSwgdW5zaWduZWQgZmxhZ3MsIGludCB0aW1lb3V0KQogCQkJCWdlbV9jbG9z ZShmZCwgb2JqWzBdLmhhbmRsZSk7CiAKIAkJCQlpZ3RfaW5mbygiWyVkOiVkXSAlczogJSd1IGN5 Y2xlczogJS4zZnVzJXMgKGVsYXBzZWQ6ICUuM2ZzKVxuIiwKLQkJCQkJIG5jdHgsIGNoaWxkLCBu YW1lW2NoaWxkXSwgY291bnQsIGVsYXBzZWQoJnN0YXJ0LCAmbm93KSoxZTYgLyBjb3VudCwKLQkJ CQkJIGZsYWdzICYgSU5URVJSVVBUSUJMRSA/ICIgKGludGVycnVwdGlibGUpIiA6ICIiLAorCQkJ CQkgbmN0eCwgY2hpbGQsCisJCQkJCSBlbmdpbmVzLmVuZ2luZXNbY2hpbGRdLm5hbWUsIGNvdW50 LAorCQkJCQkgZWxhcHNlZCgmc3RhcnQsICZub3cpICogMWU2IC8gY291bnQsCisJCQkJCSBmbGFn cyAmIElOVEVSUlVQVElCTEUgPworCQkJCQkgIiAoaW50ZXJydXB0aWJsZSkiIDogIiIsCiAJCQkJ CSBlbGFwc2VkKCZzdGFydCwgJm5vdykpOwogCQkJfQogCQkJaWd0X3dhaXRjaGlsZHJlbigpOwpA QCAtMzA2LDYgKzMxMiw3IEBAIHN0YXRpYyB2b2lkIGFsbChpbnQgZmQsIHVpbnQzMl90IGhhbmRs ZSwgdW5zaWduZWQgZmxhZ3MsIGludCB0aW1lb3V0KQogaWd0X21haW4KIHsKIAljb25zdCBpbnQg bmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKwljb25zdCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lICplOwogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCQljb25zdCBjaGFyICpuYW1lOwpA QCAtMzM4LDcgKzM0NSw0OSBAQCBpZ3RfbWFpbgogCQlpZ3RfZm9ya19oYW5nX2RldGVjdG9yKGZk KTsKIAl9CiAKKwkvKiBMZWdhY3kgdGVzdGluZyBtdXN0IGJlIGZpcnN0LiAqLwogCWZvciAoZSA9 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzOyBlLT5uYW1lOyBlKyspIHsKKwkJZTIgPSBnZW1fZWJf ZmxhZ3NfdG9fZW5naW5lKGUtPmV4ZWNfaWQgfCBlLT5mbGFncyk7CisJCWlmICghZTIpCisJCQlj b250aW51ZTsgLyogSTkxNV9FWEVDX0JTRCB3aXRoIG5vIHJpbmcgc2VsZWN0b3JzICovCisKKwkJ Zm9yICh0eXBlb2YoKnBoYXNlcykgKnAgPSBwaGFzZXM7IHAtPm5hbWU7IHArKykgeworCQkJaWd0 X3N1YnRlc3RfZ3JvdXAgeworCQkJCWlndF9maXh0dXJlIHsKKwkJCQkJZ2VtX3JlcXVpcmVfcmlu ZyhmZCwgZTItPmZsYWdzKTsKKwkJCQkJaWYgKHAtPnJlcXVpcmUpCisJCQkJCQlpZ3RfcmVxdWly ZShwLT5yZXF1aXJlKGZkKSk7CisJCQkJfQorCisJCQkJaWd0X3N1YnRlc3RfZigibGVnYWN5LSVz JXMlcyIsCisJCQkJCSAgICAgIGUtPm5hbWUsCisJCQkJCSAgICAgICpwLT5uYW1lID8gIi0iIDog IiIsCisJCQkJCSAgICAgIHAtPm5hbWUpCisJCQkJCXNpbmdsZShmZCwgbGlnaHQsIGUyLCBwLT5m bGFncywgMSwgNSk7CisKKwkJCQlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7CisKKwkJCQlpZ3Rf c3VidGVzdF9mKCJsZWdhY3ktJXMlcy1oZWF2eSVzIiwKKwkJCQkJICAgICAgZS0+ZXhlY19pZCA9 PSAwID8gImJhc2ljLSIgOiAiIiwKKwkJCQkJICAgICAgZS0+bmFtZSwKKwkJCQkJICAgICAgcC0+ bmFtZSkKKwkJCQkJc2luZ2xlKGZkLCBoZWF2eSwgZTIsIHAtPmZsYWdzLCAxLCA1KTsKKwkJCQlp Z3Rfc3VidGVzdF9mKCJsZWdhY3ktZm9ya2VkLSVzJXMiLAorCQkJCQkgICAgICBlLT5uYW1lLAor CQkJCQkgICAgICBwLT5uYW1lKQorCQkJCQlzaW5nbGUoZmQsIGxpZ2h0LCBlMiwgcC0+ZmxhZ3Ms IG5jcHVzLAorCQkJCQkgICAgICAgMTUwKTsKKwkJCQlpZ3Rfc3VidGVzdF9mKCJsZWdhY3ktZm9y a2VkLSVzLWhlYXZ5JXMiLAorCQkJCQkgICAgICBlLT5uYW1lLAorCQkJCQkgICAgICBwLT5uYW1l KQorCQkJCQlzaW5nbGUoZmQsIGhlYXZ5LCBlMiwgcC0+ZmxhZ3MsIG5jcHVzLAorCQkJCQkgICAg ICAgMTUwKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIE11c3QgY29tZSBhZnRlciBsZWdhY3kgc3Vi dGVzdHMuICovCisJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGUyKSB7CiAJCWZvciAo dHlwZW9mKCpwaGFzZXMpICpwID0gcGhhc2VzOyBwLT5uYW1lOyBwKyspIHsKIAkJCWlndF9zdWJ0 ZXN0X2dyb3VwIHsKIAkJCQlpZ3RfZml4dHVyZSB7CkBAIC0zNDYsMzMgKzM5NSw0MCBAQCBpZ3Rf bWFpbgogCQkJCQkJaWd0X3JlcXVpcmUocC0+cmVxdWlyZShmZCkpOwogCQkJCX0KIAotCQkJCWln dF9zdWJ0ZXN0X2YoIiVzJXMlcyIsIGUtPmV4ZWNfaWQgPT0gMCA/ICJiYXNpYy0iIDogIiIsIGUt Pm5hbWUsIHAtPm5hbWUpCi0JCQkJCXNpbmdsZShmZCwgbGlnaHQsIGUsIHAtPmZsYWdzLCAxLCA1 KTsKKwkJCQlpZ3Rfc3VidGVzdF9mKCIlcyVzJXMiLAorCQkJCQkgICAgICBlMi0+bmFtZSwKKwkJ CQkJICAgICAgKnAtPm5hbWUgPyAiLSIgOiAiIiwKKwkJCQkJICAgICAgcC0+bmFtZSkKKwkJCQkJ c2luZ2xlKGZkLCBsaWdodCwgZTIsIHAtPmZsYWdzLCAxLCA1KTsKIAogCQkJCWlndF9za2lwX29u X3NpbXVsYXRpb24oKTsKIAotCQkJCWlndF9zdWJ0ZXN0X2YoIiVzJXMtaGVhdnklcyIsIGUtPmV4 ZWNfaWQgPT0gMCA/ICJiYXNpYy0iIDogIiIsIGUtPm5hbWUsIHAtPm5hbWUpCi0JCQkJCXNpbmds ZShmZCwgaGVhdnksIGUsIHAtPmZsYWdzLCAxLCA1KTsKLQkJCQlpZ3Rfc3VidGVzdF9mKCJmb3Jr ZWQtJXMlcyIsIGUtPm5hbWUsIHAtPm5hbWUpCi0JCQkJCXNpbmdsZShmZCwgbGlnaHQsIGUsIHAt PmZsYWdzLCBuY3B1cywgMTUwKTsKLQkJCQlpZ3Rfc3VidGVzdF9mKCJmb3JrZWQtJXMtaGVhdnkl cyIsIGUtPm5hbWUsIHAtPm5hbWUpCi0JCQkJCXNpbmdsZShmZCwgaGVhdnksIGUsIHAtPmZsYWdz LCBuY3B1cywgMTUwKTsKKwkJCQlpZ3Rfc3VidGVzdF9mKCIlcy1oZWF2eSVzIiwgZTItPm5hbWUs IHAtPm5hbWUpCisJCQkJCXNpbmdsZShmZCwgaGVhdnksIGUyLCBwLT5mbGFncywgMSwgNSk7CisJ CQkJaWd0X3N1YnRlc3RfZigiJXMtZm9ya2VkJXMiLCBlMi0+bmFtZSwgcC0+bmFtZSkKKwkJCQkJ c2luZ2xlKGZkLCBsaWdodCwgZTIsIHAtPmZsYWdzLCBuY3B1cywKKwkJCQkJICAgICAgIDE1MCk7 CisJCQkJaWd0X3N1YnRlc3RfZigiJXMtZm9ya2VkLWhlYXZ5JXMiLAorCQkJCQkgICAgICBlMi0+ bmFtZSwKKwkJCQkJICAgICAgcC0+bmFtZSkKKwkJCQkJc2luZ2xlKGZkLCBoZWF2eSwgZTIsIHAt PmZsYWdzLCBuY3B1cywKKwkJCQkJICAgICAgIDE1MCk7CiAJCQl9CiAJCX0KIAl9CiAKLQlpZ3Rf c3VidGVzdCgiYmFzaWMtYWxsLWxpZ2h0IikKKwlpZ3Rfc3VidGVzdCgiYWxsLWxpZ2h0IikKIAkJ YWxsKGZkLCBsaWdodCwgMCwgNSk7Ci0JaWd0X3N1YnRlc3QoImJhc2ljLWFsbC1oZWF2eSIpCisJ aWd0X3N1YnRlc3QoImFsbC1oZWF2eSIpCiAJCWFsbChmZCwgaGVhdnksIDAsIDUpOwogCiAJaWd0 X3N1YnRlc3RfZ3JvdXAgewogCQlpZ3RfZml4dHVyZSB7CiAJCQlpZ3RfcmVxdWlyZShnZW1faGFz X3F1ZXVlcyhmZCkpOwogCQl9Ci0JCWlndF9zdWJ0ZXN0KCJiYXNpYy1xdWV1ZS1saWdodCIpCisJ CWlndF9zdWJ0ZXN0KCJxdWV1ZS1saWdodCIpCiAJCQlhbGwoZmQsIGxpZ2h0LCBRVUVVRSwgNSk7 Ci0JCWlndF9zdWJ0ZXN0KCJiYXNpYy1xdWV1ZS1oZWF2eSIpCisJCWlndF9zdWJ0ZXN0KCJxdWV1 ZS1oZWF2eSIpCiAJCQlhbGwoZmQsIGhlYXZ5LCBRVUVVRSwgNSk7CiAJfQogCmRpZmYgLS1naXQg YS90ZXN0cy9pbnRlbC1jaS9ibGFja2xpc3QudHh0IGIvdGVzdHMvaW50ZWwtY2kvYmxhY2tsaXN0 LnR4dAppbmRleCAyYTU4OTNjZTFiMzcuLjhlM2RhZmE5ODM2YiAxMDA2NDQKLS0tIGEvdGVzdHMv aW50ZWwtY2kvYmxhY2tsaXN0LnR4dAorKysgYi90ZXN0cy9pbnRlbC1jaS9ibGFja2xpc3QudHh0 CkBAIC0yNSw3ICsyNSw3IEBAIGlndEBnZW1fY3NfcHJlZmV0Y2goQC4qKT8KIGlndEBnZW1fY3R4 X2NyZWF0ZUAoPyEuKmJhc2ljKS4qCiBpZ3RAZ2VtX2N0eF9leGVjQCg/IS4qYmFzaWMpLioKIGln dEBnZW1fY3R4X3NoYXJlZEAqZXhoYXVzdCoKLWlndEBnZW1fY3R4X3N3aXRjaEAoPyEuKmJhc2lj KS4qCitpZ3RAZ2VtX2N0eF9zd2l0Y2hALiooZm9ya2VkfGludGVycnVwdGlibGUpLioKIGlndEBn ZW1fY3R4X3RocmFzaChALiopPwogaWd0QGdlbV9ldmljdF9hbGlnbm1lbnQoQC4qKT8KIGlndEBn ZW1fZXZpY3RfZXZlcnl0aGluZyhALiopPwpkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwtY2kvZmFz dC1mZWVkYmFjay50ZXN0bGlzdCBiL3Rlc3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxp c3QKaW5kZXggNThlNmI1YzVmODgyLi5jZmU2MTAyYTM5ZjcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2lu dGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QKKysrIGIvdGVzdHMvaW50ZWwtY2kvZmFzdC1m ZWVkYmFjay50ZXN0bGlzdApAQCAtMTQsNyArMTQsOCBAQCBpZ3RAZ2VtX2N0eF9jcmVhdGVAYmFz aWMtZmlsZXMKIGlndEBnZW1fY3R4X2V4ZWNAYmFzaWMKIGlndEBnZW1fY3R4X3BhcmFtQGJhc2lj CiBpZ3RAZ2VtX2N0eF9wYXJhbUBiYXNpYy1kZWZhdWx0Ci1pZ3RAZ2VtX2N0eF9zd2l0Y2hAYmFz aWMtZGVmYXVsdAoraWd0QGdlbV9jdHhfc3dpdGNoQGxlZ2FjeS1yZW5kZXIKK2lndEBnZW1fY3R4 X3N3aXRjaEByY3MwCiBpZ3RAZ2VtX2V4ZWNfYmFzaWNAYmFzaWMtYWxsCiBpZ3RAZ2VtX2V4ZWNf Y3JlYXRlQGJhc2ljCiBpZ3RAZ2VtX2V4ZWNfZmVuY2VAYmFzaWMtYnVzeS1kZWZhdWx0Ci0tIAoy LjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmln dC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==