From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Wed, 8 May 2019 13:10:48 +0100 Message-Id: <20190508121058.27038-12-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> References: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t 11/21] 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClN1cHBvcnQg bmV3IGk5MTUgdUFQSSBmb3IgY29uZmlndXJpbmcgY29udGV4dHMgd2l0aCBlbmdpbmUgbWFwcy4K ClBsZWFzZSByZWZlciB0byB0aGUgUkVBRE1FIGZpbGUgZm9yIG1vcmUgZGV0YWlsZWQgZXhwbGFu YXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyAgfCAyMTIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGJlbmNobWFya3Mvd3NpbS9SRUFETUUgfCAgMTcg KysrLQogMiBmaWxlcyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIvYmVuY2htYXJrcy9nZW1fd3Np bS5jCmluZGV4IGY2NTRkZWNiMjRjYy4uZTZiN2I4ZjUzMzVkIDEwMDY0NAotLS0gYS9iZW5jaG1h cmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCkBAIC01Nyw2ICs1Nyw3 IEBACiAjaW5jbHVkZSAiZXdtYS5oIgogCiBlbnVtIGludGVsX2VuZ2luZV9pZCB7CisJREVGQVVM VCwKIAlSQ1MsCiAJQkNTLAogCVZDUywKQEAgLTgxLDcgKzgyLDggQEAgZW51bSB3X3R5cGUKIAlT V19GRU5DRSwKIAlTV19GRU5DRV9TSUdOQUwsCiAJQ1RYX1BSSU9SSVRZLAotCVBSRUVNUFRJT04K KwlQUkVFTVBUSU9OLAorCUVOR0lORV9NQVAKIH07CiAKIHN0cnVjdCBkZXBzCkBAIC0xMTUsNiAr MTE3LDEwIEBAIHN0cnVjdCB3X3N0ZXAKIAkJaW50IHRocm90dGxlOwogCQlpbnQgZmVuY2Vfc2ln bmFsOwogCQlpbnQgcHJpb3JpdHk7CisJCXN0cnVjdCB7CisJCQl1bnNpZ25lZCBpbnQgZW5naW5l X21hcF9jb3VudDsKKwkJCWVudW0gaW50ZWxfZW5naW5lX2lkICplbmdpbmVfbWFwOworCQl9Owog CX07CiAKIAkvKiBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzICovCkBAIC0xNDIsNiArMTQ4LDggQEAg REVDTEFSRV9FV01BKHVpbnQ2NF90LCBydCwgNCwgMikKIHN0cnVjdCBjdHggewogCXVpbnQzMl90 IGlkOwogCWludCBwcmlvcml0eTsKKwl1bnNpZ25lZCBpbnQgZW5naW5lX21hcF9jb3VudDsKKwll bnVtIGludGVsX2VuZ2luZV9pZCAqZW5naW5lX21hcDsKIAlib29sIHRhcmdldHNfaW5zdGFuY2U7 CiAJYm9vbCB3YW50c19iYWxhbmNlOwogCXVuc2lnbmVkIGludCBzdGF0aWNfdmNzOwpAQCAtMjAw LDEwICsyMDgsMTAgQEAgc3RydWN0IHdvcmtsb2FkCiAJCWludCBmZDsKIAkJYm9vbCBmaXJzdDsK IAkJdW5zaWduZWQgaW50IG51bV9lbmdpbmVzOwotCQl1bnNpZ25lZCBpbnQgZW5naW5lX21hcFs1 XTsKKwkJdW5zaWduZWQgaW50IGVuZ2luZV9tYXBbTlVNX0VOR0lORVNdOwogCQl1aW50NjRfdCB0 X3ByZXY7Ci0JCXVpbnQ2NF90IHByZXZbNV07Ci0JCWRvdWJsZSBidXN5WzVdOworCQl1aW50NjRf dCBwcmV2W05VTV9FTkdJTkVTXTsKKwkJZG91YmxlIGJ1c3lbTlVNX0VOR0lORVNdOwogCX0gYnVz eV9iYWxhbmNlcjsKIH07CiAKQEAgLTIzNCw2ICsyNDIsNyBAQCBzdGF0aWMgaW50IGZkOwogI2Rl ZmluZSBSRUcoeCkgKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2ds b2JhbF9tbWlvICsgeCkKIAogc3RhdGljIGNvbnN0IGNoYXIgKnJpbmdfc3RyX21hcFtOVU1fRU5H SU5FU10gPSB7CisJW0RFRkFVTFRdID0gIkRFRkFVTFQiLAogCVtSQ1NdID0gIlJDUyIsCiAJW0JD U10gPSAiQkNTIiwKIAlbVkNTXSA9ICJWQ1MiLApAQCAtMzMwLDYgKzMzOSwzNyBAQCBzdGF0aWMg aW50IHN0cl90b19lbmdpbmUoY29uc3QgY2hhciAqc3RyKQogCXJldHVybiAtMTsKIH0KIAorc3Rh dGljIGludCBwYXJzZV9lbmdpbmVfbWFwKHN0cnVjdCB3X3N0ZXAgKnN0ZXAsIGNvbnN0IGNoYXIg Kl9zdHIpCit7CisJY2hhciAqdG9rZW4sICp0Y3R4ID0gTlVMTCwgKnRzdGFydCA9IChjaGFyICop X3N0cjsKKworCXdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcih0c3RhcnQsICJ8IiwgJnRjdHgpKSkg eworCQllbnVtIGludGVsX2VuZ2luZV9pZCBlbmdpbmU7CisKKwkJdHN0YXJ0ID0gTlVMTDsKKwor CQlpZiAoIXN0cmNtcCh0b2tlbiwgIkRFRkFVTFQiKSkKKwkJCXJldHVybiAtMTsKKwkJZWxzZSBp ZiAoIXN0cmNtcCh0b2tlbiwgIlZDUyIpKQorCQkJcmV0dXJuIC0xOworCisJCWVuZ2luZSA9IHN0 cl90b19lbmdpbmUodG9rZW4pOworCQlpZiAoKGludCllbmdpbmUgPCAwKQorCQkJcmV0dXJuIC0x OworCisJCWlmIChlbmdpbmUgIT0gVkNTMSAmJiBlbmdpbmUgIT0gVkNTMikKKwkJCXJldHVybiAt MTsgLyogVE9ETyAqLworCisJCXN0ZXAtPmVuZ2luZV9tYXBfY291bnQrKzsKKwkJc3RlcC0+ZW5n aW5lX21hcCA9IHJlYWxsb2Moc3RlcC0+ZW5naW5lX21hcCwKKwkJCQkJICAgc3RlcC0+ZW5naW5l X21hcF9jb3VudCAqCisJCQkJCSAgIHNpemVvZihzdGVwLT5lbmdpbmVfbWFwWzBdKSk7CisJCXN0 ZXAtPmVuZ2luZV9tYXBbc3RlcC0+ZW5naW5lX21hcF9jb3VudCAtIDFdID0gZW5naW5lOworCX0K KworCXJldHVybiAwOworfQorCiBzdGF0aWMgc3RydWN0IHdvcmtsb2FkICoKIHBhcnNlX3dvcmts b2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9h ZCAqYXBwX3cpCiB7CkBAIC00NDgsNiArNDg4LDMzIEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3 X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJ CQl9IGVsc2UgaWYgKCFzdHJjbXAoZmllbGQsICJmIikpIHsKIAkJCQlzdGVwLnR5cGUgPSBTV19G RU5DRTsKIAkJCQlnb3RvIGFkZF9zdGVwOworCQkJfSBlbHNlIGlmICghc3RyY21wKGZpZWxkLCAi TSIpKSB7CisJCQkJdW5zaWduZWQgaW50IG5yID0gMDsKKwkJCQl3aGlsZSAoKGZpZWxkID0gc3Ry dG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4KSkgIT0KKwkJCQkgICAgTlVMTCkgeworCQkJCQl0bXAg PSBhdG9pKGZpZWxkKTsKKwkJCQkJY2hlY2tfYXJnKG5yID09IDAgJiYgdG1wIDw9IDAsCisJCQkJ CQkgICJJbnZhbGlkIGNvbnRleHQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsK KwkJCQkJY2hlY2tfYXJnKG5yID4gMSwKKwkJCQkJCSAgIkludmFsaWQgZW5naW5lIG1hcCBmb3Jt YXQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsKKworCQkJCQlpZiAobnIgPT0g MCkgeworCQkJCQkJc3RlcC5jb250ZXh0ID0gdG1wOworCQkJCQl9IGVsc2UgeworCQkJCQkJdG1w ID0gcGFyc2VfZW5naW5lX21hcCgmc3RlcCwKKwkJCQkJCQkJICAgICAgIGZpZWxkKTsKKwkJCQkJ CWNoZWNrX2FyZyh0bXAgPCAwLAorCQkJCQkJCSAgIkludmFsaWQgZW5naW5lIG1hcCBsaXN0IGF0 IHN0ZXAgJXUhXG4iLAorCQkJCQkJCSAgbnJfc3RlcHMpOworCQkJCQl9CisKKwkJCQkJbnIrKzsK KwkJCQl9CisKKwkJCQlzdGVwLnR5cGUgPSBFTkdJTkVfTUFQOworCQkJCWdvdG8gYWRkX3N0ZXA7 CiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoZmllbGQsICJYIikpIHsKIAkJCQl1bnNpZ25lZCBpbnQg bnIgPSAwOwogCQkJCXdoaWxlICgoZmllbGQgPSBzdHJ0b2tfcihmc3RhcnQsICIuIiwgJmZjdHgp KSAhPQpAQCAtNDk3LDkgKzU2NCw3IEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJn LCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQlpID0gc3Ry X3RvX2VuZ2luZShmaWVsZCk7CiAJCQljaGVja19hcmcoaSA8IDAsCiAJCQkJICAiSW52YWxpZCBl bmdpbmUgaWQgYXQgc3RlcCAldSFcbiIsIG5yX3N0ZXBzKTsKLQkJCWlmIChpID49IDApCi0JCQkJ dmFsaWQrKzsKLQorCQkJdmFsaWQrKzsKIAkJCXN0ZXAuZW5naW5lID0gaTsKIAogCQkJaWYgKHN0 ZXAuZW5naW5lID09IEJDUykKQEAgLTc3NCw2ICs4MzksNyBAQCB0ZXJtaW5hdGVfYmIoc3RydWN0 IHdfc3RlcCAqdywgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgaW50IGViX2VuZ2luZV9tYXBbTlVNX0VOR0lORVNdID0geworCVtERUZBVUxUXSA9IEk5MTVf RVhFQ19ERUZBVUxULAogCVtSQ1NdID0gSTkxNV9FWEVDX1JFTkRFUiwKIAlbQkNTXSA9IEk5MTVf RVhFQ19CTFQsCiAJW1ZDU10gPSBJOTE1X0VYRUNfQlNELApAQCAtNzkwLDE4ICs4NTYsNDIgQEAg ZWJfc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICplYiwKIAlpZiAo ZW5naW5lID09IFZDUzIgJiYgKGZsYWdzICYgVkNTMlJFTUFQKSkKIAkJZW5naW5lID0gQkNTOwog Ci0JaWYgKChmbGFncyAmIEk5MTUpICYmIGVuZ2luZSA9PSBWQ1MpIHsKKwlpZiAoKGZsYWdzICYg STkxNSkgJiYgZW5naW5lID09IFZDUykKIAkJZWItPmZsYWdzID0gMDsKLQl9IGVsc2UgeworCWVs c2UKIAkJZWItPmZsYWdzID0gZWJfZW5naW5lX21hcFtlbmdpbmVdOworfQorCitzdGF0aWMgdW5z aWduZWQgaW50CitmaW5kX2VuZ2luZV9pbl9tYXAoc3RydWN0IGN0eCAqY3R4LCBlbnVtIGludGVs X2VuZ2luZV9pZCBlbmdpbmUpCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBp IDwgY3R4LT5lbmdpbmVfbWFwX2NvdW50OyBpKyspIHsKKwkJaWYgKGN0eC0+ZW5naW5lX21hcFtp XSA9PSBlbmdpbmUpCisJCQlyZXR1cm4gaSArIDE7CiAJfQorCisJaWd0X2Fzc2VydCgwKTsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBjdHggKgorX19nZXRfY3R4KHN0cnVjdCB3b3Jr bG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3KQoreworCXJldHVybiAmd3JrLT5jdHhfbGlzdFt3 LT5jb250ZXh0ICogMl07CiB9CiAKIHN0YXRpYyB2b2lkCi1lYl91cGRhdGVfZmxhZ3Moc3RydWN0 IHdfc3RlcCAqdywgZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lLAotCQl1bnNpZ25lZCBpbnQg ZmxhZ3MpCitlYl91cGRhdGVfZmxhZ3Moc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0 ZXAgKncsCisJCWVudW0gaW50ZWxfZW5naW5lX2lkIGVuZ2luZSwgdW5zaWduZWQgaW50IGZsYWdz KQogewotCWViX3NldF9lbmdpbmUoJnctPmViLCBlbmdpbmUsIGZsYWdzKTsKKwlzdHJ1Y3QgY3R4 ICpjdHggPSBfX2dldF9jdHgod3JrLCB3KTsKKworCWlmIChjdHgtPmVuZ2luZV9tYXApCisJCXct PmViLmZsYWdzID0gZmluZF9lbmdpbmVfaW5fbWFwKGN0eCwgZW5naW5lKTsKKwllbHNlCisJCWVi X3NldF9lbmdpbmUoJnctPmViLCBlbmdpbmUsIGZsYWdzKTsKIAogCXctPmViLmZsYWdzIHw9IEk5 MTVfRVhFQ19IQU5ETEVfTFVUOwogCXctPmViLmZsYWdzIHw9IEk5MTVfRVhFQ19OT19SRUxPQzsK QEAgLTgyMCwxMiArOTEwLDYgQEAgZ2V0X3N0YXR1c19vYmplY3RzKHN0cnVjdCB3b3JrbG9hZCAq d3JrKQogCQlyZXR1cm4gd3JrLT5zdGF0dXNfb2JqZWN0OwogfQogCi1zdGF0aWMgc3RydWN0IGN0 eCAqCi1fX2dldF9jdHgoc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncpCi17 Ci0JcmV0dXJuICZ3cmstPmN0eF9saXN0W3ctPmNvbnRleHQgKiAyXTsKLX0KLQogc3RhdGljIHVp bnQzMl90CiBnZXRfY3R4aWQoc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncp CiB7CkBAIC04OTUsNyArOTc5LDcgQEAgYWxsb2Nfc3RlcF9iYXRjaChzdHJ1Y3Qgd29ya2xvYWQg Kndyaywgc3RydWN0IHdfc3RlcCAqdywgdW5zaWduZWQgaW50IGZsYWdzKQogCQllbmdpbmUgPSBW Q1MyOwogCWVsc2UgaWYgKGZsYWdzICYgU1dBUFZDUyAmJiBlbmdpbmUgPT0gVkNTMikKIAkJZW5n aW5lID0gVkNTMTsKLQllYl91cGRhdGVfZmxhZ3ModywgZW5naW5lLCBmbGFncyk7CisJZWJfdXBk YXRlX2ZsYWdzKHdyaywgdywgZW5naW5lLCBmbGFncyk7CiAjaWZkZWYgREVCVUcKIAlwcmludGYo IiV1OiAldTp8Iiwgdy0+aWR4LCB3LT5lYi5idWZmZXJfY291bnQpOwogCWZvciAoaSA9IDA7IGkg PD0gajsgaSsrKQpAQCAtOTE4LDcgKzEwMDIsNyBAQCBzdGF0aWMgdm9pZCBfX2N0eF9zZXRfcHJp byh1aW50MzJfdCBjdHhfaWQsIHVuc2lnbmVkIGludCBwcmlvKQogCQlnZW1fY29udGV4dF9zZXRf cGFyYW0oZmQsICZwYXJhbSk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiBwcmVwYXJl X3dvcmtsb2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmssIHVuc2lnbmVk IGludCBmbGFncykKIHsKIAl1bnNpZ25lZCBpbnQgY3R4X3ZjcyA9IDA7CkBAIC05NzksMzAgKzEw NjMsNTMgQEAgcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9h ZCAqd3JrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJLyoKIAkgKiBJZGVudGlmeSBpZiBjb250ZXh0 cyB0YXJnZXQgc3BlY2lmaWMgZW5naW5lIGluc3RhbmNlcyBhbmQgaWYgdGhleQogCSAqIHdhbnQg dG8gYmUgYmFsYW5jZWQuCisJICoKKwkgKiBUcmFuc2ZlciBvdmVyIGVuZ2luZSBtYXAgY29uZmln dXJhdGlvbiBmcm9tIHRoZSB3b3JrbG9hZCBzdGVwLgogCSAqLwogCWZvciAoaiA9IDA7IGogPCB3 cmstPm5yX2N0eHM7IGogKz0gMikgewogCQlib29sIHRhcmdldHMgPSBmYWxzZTsKIAkJYm9vbCBi YWxhbmNlID0gZmFsc2U7CiAKIAkJZm9yIChpID0gMCwgdyA9IHdyay0+c3RlcHM7IGkgPCB3cmst Pm5yX3N0ZXBzOyBpKyssIHcrKykgewotCQkJaWYgKHctPnR5cGUgIT0gQkFUQ0gpCi0JCQkJY29u dGludWU7Ci0KIAkJCWlmICh3LT5jb250ZXh0ICE9IChqIC8gMikpCiAJCQkJY29udGludWU7CiAK LQkJCWlmICh3LT5lbmdpbmUgPT0gVkNTKQotCQkJCWJhbGFuY2UgPSB0cnVlOwotCQkJZWxzZQot CQkJCXRhcmdldHMgPSB0cnVlOworCQkJaWYgKHctPnR5cGUgPT0gQkFUQ0gpIHsKKwkJCQlpZiAo dy0+ZW5naW5lID09IFZDUykKKwkJCQkJYmFsYW5jZSA9IHRydWU7CisJCQkJZWxzZQorCQkJCQl0 YXJnZXRzID0gdHJ1ZTsKKwkJCX0gZWxzZSBpZiAody0+dHlwZSA9PSBFTkdJTkVfTUFQKSB7CisJ CQkJd3JrLT5jdHhfbGlzdFtqXS5lbmdpbmVfbWFwID0gdy0+ZW5naW5lX21hcDsKKwkJCQl3cmst PmN0eF9saXN0W2pdLmVuZ2luZV9tYXBfY291bnQgPQorCQkJCQl3LT5lbmdpbmVfbWFwX2NvdW50 OworCQkJfQogCQl9CiAKLQkJaWYgKGZsYWdzICYgSTkxNSkgewotCQkJd3JrLT5jdHhfbGlzdFtq XS50YXJnZXRzX2luc3RhbmNlID0gdGFyZ2V0czsKKwkJd3JrLT5jdHhfbGlzdFtqXS50YXJnZXRz X2luc3RhbmNlID0gdGFyZ2V0czsKKwkJaWYgKGZsYWdzICYgSTkxNSkKIAkJCXdyay0+Y3R4X2xp c3Rbal0ud2FudHNfYmFsYW5jZSA9IGJhbGFuY2U7CisJfQorCisJLyoKKwkgKiBFbnN1cmUgVkNT IGlzIG5vdCBhbGxvd2VkIHdpdGggZW5naW5lIG1hcCBjb250ZXh0cy4KKwkgKi8KKwlmb3IgKGog PSAwOyBqIDwgd3JrLT5ucl9jdHhzOyBqICs9IDIpIHsKKwkJZm9yIChpID0gMCwgdyA9IHdyay0+ c3RlcHM7IGkgPCB3cmstPm5yX3N0ZXBzOyBpKyssIHcrKykgeworCQkJaWYgKHctPmNvbnRleHQg IT0gKGogLyAyKSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKHctPnR5cGUgIT0gQkFUQ0gpCisJ CQkJY29udGludWU7CisKKwkJCWlmICh3cmstPmN0eF9saXN0W2pdLmVuZ2luZV9tYXAgJiYgdy0+ ZW5naW5lID09IFZDUykgeworCQkJCXdzaW1fZXJyKCJCYXRjaGVzIHRhcmdldHRpbmcgZW5naW5l IG1hcHMgbXVzdCB1c2UgZXhwbGljaXQgZW5naW5lcyFcbiIpOworCQkJCXJldHVybiAtMTsKKwkJ CX0KIAkJfQogCX0KIAorCiAJLyoKIAkgKiBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBjb250ZXh0cy4K IAkgKi8KQEAgLTEwMTMsNyArMTEyMCw3IEBAIHByZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50 IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZsYWdzKQogCQlpZiAoY3R4 LT5pZCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChmbGFncyAmIEk5MTUpIHsKKwkJaWYgKChmbGFn cyAmIEk5MTUpIHx8IGN0eC0+ZW5naW5lX21hcCkgewogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gZXh0ID0gewogCQkJCS5iYXNlLm5hbWUgPSBJOTE1 X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwKIAkJCQkucGFyYW0ucGFyYW0gPSBJOTE1X0NP TlRFWFRfUEFSQU1fVk0sCkBAIC0xMDQzLDcgKzExNTAsNyBAQCBwcmVwYXJlX3dvcmtsb2FkKHVu c2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmssIHVuc2lnbmVkIGludCBmbGFncykK IAkJCQlicmVhazsKIAkJCX0KIAotCQkJaWYgKCFjdHgtPnRhcmdldHNfaW5zdGFuY2UpCisJCQlp ZiAoIWN0eC0+ZW5naW5lX21hcCAmJiAhY3R4LT50YXJnZXRzX2luc3RhbmNlKQogCQkJCWFyZ3Mu ZmxhZ3MgfD0KIAkJCQkgICAgIEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVM SU5FOwogCkBAIC0xMDc2LDcgKzExODMsNyBAQCBwcmVwYXJlX3dvcmtsb2FkKHVuc2lnbmVkIGlu dCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmssIHVuc2lnbmVkIGludCBmbGFncykKIAkJICogYm90 aCB3YW50IHRvIHRhcmdldCBzcGVjaWZpYyBlbmdpbmVzIGFuZCBiZSBiYWxhbmNlZCBieSBpOTE1 PwogCQkgKi8KIAkJaWYgKChmbGFncyAmIEk5MTUpICYmIGN0eC0+d2FudHNfYmFsYW5jZSAmJgot CQkgICAgY3R4LT50YXJnZXRzX2luc3RhbmNlKSB7CisJCSAgICBjdHgtPnRhcmdldHNfaW5zdGFu Y2UgJiYgIWN0eC0+ZW5naW5lX21hcCkgewogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X2NyZWF0ZV9leHRfc2V0cGFyYW0gZXh0ID0gewogCQkJCS5iYXNlLm5hbWUgPSBJOTE1X0NPTlRF WFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwKIAkJCQkucGFyYW0ucGFyYW0gPSBJOTE1X0NPTlRFWFRf UEFSQU1fVk0sCkBAIC0xMTAxLDcgKzEyMDgsMzMgQEAgcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25l ZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCQlf X2N0eF9zZXRfcHJpbyhjdHhfaWQsIHdyay0+cHJpbyk7CiAJCX0KIAotCQlpZiAoY3R4LT53YW50 c19iYWxhbmNlKSB7CisJCWlmIChjdHgtPmVuZ2luZV9tYXApIHsKKwkJCUk5MTVfREVGSU5FX0NP TlRFWFRfUEFSQU1fRU5HSU5FUyhzZXRfZW5naW5lcywKKwkJCQkJCQkgIGN0eC0+ZW5naW5lX21h cF9jb3VudCArIDEpOworCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFt ID0geworCQkJCS5jdHhfaWQgPSBjdHhfaWQsCisJCQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BB UkFNX0VOR0lORVMsCisJCQkJLnNpemUgPSBzaXplb2Yoc2V0X2VuZ2luZXMpLAorCQkJCS52YWx1 ZSA9IHRvX3VzZXJfcG9pbnRlcigmc2V0X2VuZ2luZXMpLAorCQkJfTsKKworCQkJc2V0X2VuZ2lu ZXMuZXh0ZW5zaW9ucyA9IDA7CisKKwkJCS8qIFJlc2VydmUgc2xvdCBmb3IgdmlydHVhbCBlbmdp bmUuICovCisJCQlzZXRfZW5naW5lcy5lbmdpbmVzWzBdLmVuZ2luZV9jbGFzcyA9CisJCQkJSTkx NV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsKKwkJCXNldF9lbmdpbmVzLmVuZ2luZXNbMF0uZW5naW5l X2luc3RhbmNlID0KKwkJCQlJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkU7CisKKwkJCWZv ciAoaiA9IDE7IGogPD0gY3R4LT5lbmdpbmVfbWFwX2NvdW50OyBqKyspIHsKKwkJCQlzZXRfZW5n aW5lcy5lbmdpbmVzW2pdLmVuZ2luZV9jbGFzcyA9CisJCQkJCUk5MTVfRU5HSU5FX0NMQVNTX1ZJ REVPOyAvKiBGSVhNRSAqLworCQkJCXNldF9lbmdpbmVzLmVuZ2luZXNbal0uZW5naW5lX2luc3Rh bmNlID0KKwkJCQkJY3R4LT5lbmdpbmVfbWFwW2ogLSAxXSAtIFZDUzE7IC8qIEZJWE1FICovCisJ CQl9CisKKwkJCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJnBhcmFtKTsKKwkJfSBlbHNlIGlm IChjdHgtPndhbnRzX2JhbGFuY2UpIHsKIAkJCUk5MTVfREVGSU5FX0NPTlRFWFRfRU5HSU5FU19M T0FEX0JBTEFOQ0UobG9hZF9iYWxhbmNlLCAyKSA9IHsKIAkJCQkuYmFzZS5uYW1lID0gSTkxNV9D T05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5DRSwKIAkJCQkubnVtX3NpYmxpbmdzID0gMiwK QEAgLTExODEsNiArMTMxNCw4IEBAIHByZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50IGlkLCBz dHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZsYWdzKQogCiAJCWFsbG9jX3N0ZXBf YmF0Y2god3JrLCB3LCBfZmxhZ3MpOwogCX0KKworCXJldHVybiAwOwogfQogCiBzdGF0aWMgZG91 YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICpzdGFydCwgY29uc3Qgc3RydWN0IHRp bWVzcGVjICplbmQpCkBAIC0xOTE4LDcgKzIwNTMsNyBAQCBkb19lYihzdHJ1Y3Qgd29ya2xvYWQg Kndyaywgc3RydWN0IHdfc3RlcCAqdywgZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lLAogCXVp bnQzMl90IHNlcW5vID0gbmV3X3NlcW5vKHdyaywgZW5naW5lKTsKIAl1bnNpZ25lZCBpbnQgaTsK IAotCWViX3VwZGF0ZV9mbGFncyh3LCBlbmdpbmUsIGZsYWdzKTsKKwllYl91cGRhdGVfZmxhZ3Mo d3JrLCB3LCBlbmdpbmUsIGZsYWdzKTsKIAogCWlmIChmbGFncyAmIFNFUU5PKQogCQl1cGRhdGVf YmJfc2Vxbm8odywgZW5naW5lLCBzZXFubyk7CkBAIC0yMDY3LDcgKzIyMDIsOCBAQCBzdGF0aWMg dm9pZCAqcnVuX3dvcmtsb2FkKHZvaWQgKmRhdGEpCiAJCQkJCQkJCSAgICB3LT5wcmlvcml0eTsK IAkJCQl9CiAJCQkJY29udGludWU7Ci0JCQl9IGVsc2UgaWYgKHctPnR5cGUgPT0gUFJFRU1QVElP TikgeworCQkJfSBlbHNlIGlmICh3LT50eXBlID09IFBSRUVNUFRJT04gfHwKKwkJCQkgICB3LT50 eXBlID09IEVOR0lORV9NQVApIHsKIAkJCQljb250aW51ZTsKIAkJCX0KIApAQCAtMjYyNSw3ICsy NzYxLDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJd1tpXS0+cHJpbnRf c3RhdHMgPSB2ZXJib3NlID4gMSB8fAogCQkJCSAgICAodmVyYm9zZSA+IDAgJiYgbWFzdGVyX3dv cmtsb2FkID09IGkpOwogCi0JCXByZXBhcmVfd29ya2xvYWQoaSwgd1tpXSwgZmxhZ3NfKTsKKwkJ aWYgKHByZXBhcmVfd29ya2xvYWQoaSwgd1tpXSwgZmxhZ3NfKSkgeworCQkJd3NpbV9lcnIoIkZh aWxlZCB0byBwcmVwYXJlIHdvcmtsb2FkICV1IVxuIiwgaSk7CisJCQlyZXR1cm4gMTsKKwkJfQor CiAKIAkJaWYgKGJhbGFuY2VyICYmIGJhbGFuY2VyLT5pbml0KSB7CiAJCQlpbnQgcmV0ID0gYmFs YW5jZXItPmluaXQoYmFsYW5jZXIsIHdbaV0pOwpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy93c2lt L1JFQURNRSBiL2JlbmNobWFya3Mvd3NpbS9SRUFETUUKaW5kZXggNDc4NmYxMTZiNGFjLi40YjE0 YWEyOGJmYTcgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3Mvd3NpbS9SRUFETUUKKysrIGIvYmVuY2ht YXJrcy93c2ltL1JFQURNRQpAQCAtMyw2ICszLDcgQEAgV29ya2xvYWQgZGVzY3JpcHRvciBmb3Jt YXQKIAogY3R4LmVuZ2luZS5kdXJhdGlvbl91cy5kZXBlbmRlbmN5LndhaXQsLi4uCiA8dWludD4u PHN0cj4uPHVpbnQ+Wy08dWludD5dLjxpbnQgPD0gMD5bLzxpbnQgPD0gMD5dWy4uLl0uPDB8MT4s Li4uCitNLjx1aW50Pi48c3RyPlt8PHN0cj5dLi4uCiBQfFguPHVpbnQ+LjxpbnQ+CiBkfHB8c3x0 fHF8YS48aW50PiwuLi4KIGYKQEAgLTIzLDEwICsyNCwxMSBAQCBBZGRpdGlvbmFsIHdvcmtsb2Fk IHN0ZXBzIGFyZSBhbHNvIHN1cHBvcnRlZDoKICAncScgLSBUaHJvdHRsZSB0byBuIG1heCBxdWV1 ZSBkZXB0aC4KICAnZicgLSBDcmVhdGUgYSBzeW5jIGZlbmNlLgogICdhJyAtIEFkdmFuY2UgdGhl IHByZXZpb3VzbHkgY3JlYXRlZCBzeW5jIGZlbmNlLgorICdNJyAtIFNldCB1cCBlbmdpbmUgbWFw LgogICdQJyAtIENvbnRleHQgcHJpb3JpdHkuCiAgJ1gnIC0gQ29udGV4dCBwcmVlbXB0aW9uIGNv bnRyb2wuCiAKLUVuZ2luZSBpZHM6IFJDUywgQkNTLCBWQ1MsIFZDUzEsIFZDUzIsIFZFQ1MKK0Vu Z2luZSBpZHM6IERFRkFVTFQsIFJDUywgQkNTLCBWQ1MsIFZDUzEsIFZDUzIsIFZFQ1MKIAogRXhh bXBsZSAobGVhZGluZyBzcGFjZXMgbXVzdCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYWN0dWFsIGZp bGUpOgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpAQCAtMTYxLDMgKzE2MywxNiBAQCBUaGUgc2FtZSBjb250ZXh0IGlzIHRo ZW4gbWFya2VkIHRvIGhhdmUgYmF0Y2hlcyB3aGljaCBjYW4gYmUgcHJlZW1wdGVkIGV2ZXJ5CiAK IFNhbWUgYXMgd2l0aCBjb250ZXh0IHByaW9yaXR5LCBjb250ZXh0IHByZWVtcHRpb24gY29tbWFu ZHMgYXJlIHZhbGlkIHVudGlsCiBvcHRpb25hbGx5IG92ZXJyaWRlbiBieSBhbm90aGVyIHByZWVt cHRpb24gY29udHJvbCBjaGFuZ2Ugb24gdGhlIHNhbWUgY29udGV4dC4KKworRW5naW5lIG1hcHMK Ky0tLS0tLS0tLS0tCisKK0VuZ2luZSBtYXBzIGFyZSBhIHBlciBjb250ZXh0IGZlYXR1cmUgd2hp Y2ggY2hhbmdlcyB0aGUgd2F5IGVuZ2luZSBzZWxlY3Rpb24gaXMKK2RvbmUgaW4gdGhlIGRyaXZl ci4KKworRXhhbXBsZToKKworICBNLjEuVkNTMXxWQ1MyCisKK1RoaXMgc2V0cyB1cCBjb250ZXh0 IDEgd2l0aCBhbiBlbmdpbmUgbWFwIGNvbnRhaW5pbmcgVkNTMSBhbmQgVkNTMiBlbmdpbmUuCitT dWJtaXNzaW9uIHRvIHRoaXMgY29udGV4dCBjYW4gbm93IG9ubHkgcmVmZXJlbmNlIHRoZXNlIHR3 byBlbmdpbmVzLgotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZng=