From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 71CDE6E027 for ; Thu, 18 Oct 2018 15:28:35 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id 61-v6so34170253wrb.6 for ; Thu, 18 Oct 2018 08:28:35 -0700 (PDT) From: Tvrtko Ursulin Date: Thu, 18 Oct 2018 16:28:09 +0100 Message-Id: <20181018152815.31816-12-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20181018152815.31816-1-tvrtko.ursulin@linux.intel.com> References: <20181018152815.31816-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t 11/17] gem_wsim: Engine map support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 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 YXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyAgfCAyMTIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGJlbmNobWFya3Mvd3NpbS9SRUFETUUgfCAgMTcg KysrLQogMiBmaWxlcyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIvYmVuY2htYXJrcy9nZW1fd3Np bS5jCmluZGV4IDE3MzI1ZDJjZWFmNi4uZmJlYzIzYWQxNzUzIDEwMDY0NAotLS0gYS9iZW5jaG1h cmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCkBAIC01Niw2ICs1Niw3 IEBACiAjaW5jbHVkZSAiZXdtYS5oIgogCiBlbnVtIGludGVsX2VuZ2luZV9pZCB7CisJREVGQVVM VCwKIAlSQ1MsCiAJQkNTLAogCVZDUywKQEAgLTgwLDcgKzgxLDggQEAgZW51bSB3X3R5cGUKIAlT V19GRU5DRSwKIAlTV19GRU5DRV9TSUdOQUwsCiAJQ1RYX1BSSU9SSVRZLAotCVBSRUVNUFRJT04K KwlQUkVFTVBUSU9OLAorCUVOR0lORV9NQVAKIH07CiAKIHN0cnVjdCBkZXBzCkBAIC0xMTQsNiAr MTE2LDEwIEBAIHN0cnVjdCB3X3N0ZXAKIAkJaW50IHRocm90dGxlOwogCQlpbnQgZmVuY2Vfc2ln bmFsOwogCQlpbnQgcHJpb3JpdHk7CisJCXN0cnVjdCB7CisJCQl1bnNpZ25lZCBpbnQgZW5naW5l X21hcF9jb3VudDsKKwkJCWVudW0gaW50ZWxfZW5naW5lX2lkICplbmdpbmVfbWFwOworCQl9Owog CX07CiAKIAkvKiBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzICovCkBAIC0xNDMsNiArMTQ5LDggQEAg REVDTEFSRV9FV01BKHVpbnQ2NF90LCBydCwgNCwgMikKIHN0cnVjdCBjdHggewogCXVpbnQzMl90 IGlkOwogCWludCBwcmlvcml0eTsKKwl1bnNpZ25lZCBpbnQgZW5naW5lX21hcF9jb3VudDsKKwll bnVtIGludGVsX2VuZ2luZV9pZCAqZW5naW5lX21hcDsKIAlib29sIHRhcmdldHNfaW5zdGFuY2U7 CiAJYm9vbCB3YW50c19iYWxhbmNlOwogCXVuc2lnbmVkIGludCBzdGF0aWNfdmNzOwpAQCAtMjAx LDEwICsyMDksMTAgQEAgc3RydWN0IHdvcmtsb2FkCiAJCWludCBmZDsKIAkJYm9vbCBmaXJzdDsK IAkJdW5zaWduZWQgaW50IG51bV9lbmdpbmVzOwotCQl1bnNpZ25lZCBpbnQgZW5naW5lX21hcFs1 XTsKKwkJdW5zaWduZWQgaW50IGVuZ2luZV9tYXBbTlVNX0VOR0lORVNdOwogCQl1aW50NjRfdCB0 X3ByZXY7Ci0JCXVpbnQ2NF90IHByZXZbNV07Ci0JCWRvdWJsZSBidXN5WzVdOworCQl1aW50NjRf dCBwcmV2W05VTV9FTkdJTkVTXTsKKwkJZG91YmxlIGJ1c3lbTlVNX0VOR0lORVNdOwogCX0gYnVz eV9iYWxhbmNlcjsKIH07CiAKQEAgLTIzNSw2ICsyNDMsNyBAQCBzdGF0aWMgaW50IGZkOwogI2Rl ZmluZSBSRUcoeCkgKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2ds b2JhbF9tbWlvICsgeCkKIAogc3RhdGljIGNvbnN0IGNoYXIgKnJpbmdfc3RyX21hcFtOVU1fRU5H SU5FU10gPSB7CisJW0RFRkFVTFRdID0gIkRFRkFVTFQiLAogCVtSQ1NdID0gIlJDUyIsCiAJW0JD U10gPSAiQkNTIiwKIAlbVkNTXSA9ICJWQ1MiLApAQCAtMzMxLDYgKzM0MCwzNyBAQCBzdGF0aWMg aW50IHN0cl90b19lbmdpbmUoY29uc3QgY2hhciAqc3RyKQogCXJldHVybiAtMTsKIH0KIAorc3Rh dGljIGludCBwYXJzZV9lbmdpbmVfbWFwKHN0cnVjdCB3X3N0ZXAgKnN0ZXAsIGNvbnN0IGNoYXIg Kl9zdHIpCit7CisJY2hhciAqdG9rZW4sICp0Y3R4ID0gTlVMTCwgKnRzdGFydCA9IChjaGFyICop X3N0cjsKKworCXdoaWxlICgodG9rZW4gPSBzdHJ0b2tfcih0c3RhcnQsICJ8IiwgJnRjdHgpKSkg eworCQllbnVtIGludGVsX2VuZ2luZV9pZCBlbmdpbmU7CisKKwkJdHN0YXJ0ID0gTlVMTDsKKwor CQlpZiAoIXN0cmNtcCh0b2tlbiwgIkRFRkFVTFQiKSkKKwkJCXJldHVybiAtMTsKKwkJZWxzZSBp ZiAoIXN0cmNtcCh0b2tlbiwgIlZDUyIpKQorCQkJcmV0dXJuIC0xOworCisJCWVuZ2luZSA9IHN0 cl90b19lbmdpbmUodG9rZW4pOworCQlpZiAoKGludCllbmdpbmUgPCAwKQorCQkJcmV0dXJuIC0x OworCisJCWlmIChlbmdpbmUgIT0gVkNTMSAmJiBlbmdpbmUgIT0gVkNTMikKKwkJCXJldHVybiAt MTsgLyogVE9ETyAqLworCisJCXN0ZXAtPmVuZ2luZV9tYXBfY291bnQrKzsKKwkJc3RlcC0+ZW5n aW5lX21hcCA9IHJlYWxsb2Moc3RlcC0+ZW5naW5lX21hcCwKKwkJCQkJICAgc3RlcC0+ZW5naW5l X21hcF9jb3VudCAqCisJCQkJCSAgIHNpemVvZihzdGVwLT5lbmdpbmVfbWFwWzBdKSk7CisJCXN0 ZXAtPmVuZ2luZV9tYXBbc3RlcC0+ZW5naW5lX21hcF9jb3VudCAtIDFdID0gZW5naW5lOworCX0K KworCXJldHVybiAwOworfQorCiBzdGF0aWMgc3RydWN0IHdvcmtsb2FkICoKIHBhcnNlX3dvcmts b2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9h ZCAqYXBwX3cpCiB7CkBAIC00NDksNiArNDg5LDMzIEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3 X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJ CQl9IGVsc2UgaWYgKCFzdHJjbXAoZmllbGQsICJmIikpIHsKIAkJCQlzdGVwLnR5cGUgPSBTV19G RU5DRTsKIAkJCQlnb3RvIGFkZF9zdGVwOworCQkJfSBlbHNlIGlmICghc3RyY21wKGZpZWxkLCAi TSIpKSB7CisJCQkJdW5zaWduZWQgaW50IG5yID0gMDsKKwkJCQl3aGlsZSAoKGZpZWxkID0gc3Ry dG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4KSkgIT0KKwkJCQkgICAgTlVMTCkgeworCQkJCQl0bXAg PSBhdG9pKGZpZWxkKTsKKwkJCQkJY2hlY2tfYXJnKG5yID09IDAgJiYgdG1wIDw9IDAsCisJCQkJ CQkgICJJbnZhbGlkIGNvbnRleHQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsK KwkJCQkJY2hlY2tfYXJnKG5yID4gMSwKKwkJCQkJCSAgIkludmFsaWQgZW5naW5lIG1hcCBmb3Jt YXQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsKKworCQkJCQlpZiAobnIgPT0g MCkgeworCQkJCQkJc3RlcC5jb250ZXh0ID0gdG1wOworCQkJCQl9IGVsc2UgeworCQkJCQkJdG1w ID0gcGFyc2VfZW5naW5lX21hcCgmc3RlcCwKKwkJCQkJCQkJICAgICAgIGZpZWxkKTsKKwkJCQkJ CWNoZWNrX2FyZyh0bXAgPCAwLAorCQkJCQkJCSAgIkludmFsaWQgZW5naW5lIG1hcCBsaXN0IGF0 IHN0ZXAgJXUhXG4iLAorCQkJCQkJCSAgbnJfc3RlcHMpOworCQkJCQl9CisKKwkJCQkJbnIrKzsK KwkJCQl9CisKKwkJCQlzdGVwLnR5cGUgPSBFTkdJTkVfTUFQOworCQkJCWdvdG8gYWRkX3N0ZXA7 CiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoZmllbGQsICJYIikpIHsKIAkJCQl1bnNpZ25lZCBpbnQg bnIgPSAwOwogCQkJCXdoaWxlICgoZmllbGQgPSBzdHJ0b2tfcihmc3RhcnQsICIuIiwgJmZjdHgp KSAhPQpAQCAtNDkwLDkgKzU1Nyw3IEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJn LCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQlpID0gc3Ry X3RvX2VuZ2luZShmaWVsZCk7CiAJCQljaGVja19hcmcoaSA8IDAsCiAJCQkJICAiSW52YWxpZCBl bmdpbmUgaWQgYXQgc3RlcCAldSFcbiIsIG5yX3N0ZXBzKTsKLQkJCWlmIChpID49IDApCi0JCQkJ dmFsaWQrKzsKLQorCQkJdmFsaWQrKzsKIAkJCXN0ZXAuZW5naW5lID0gaTsKIAogCQkJaWYgKHN0 ZXAuZW5naW5lID09IEJDUykKQEAgLTc2OSw2ICs4MzQsNyBAQCB0ZXJtaW5hdGVfYmIoc3RydWN0 IHdfc3RlcCAqdywgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgaW50IGViX2VuZ2luZV9tYXBbTlVNX0VOR0lORVNdID0geworCVtERUZBVUxUXSA9IEk5MTVf RVhFQ19ERUZBVUxULAogCVtSQ1NdID0gSTkxNV9FWEVDX1JFTkRFUiwKIAlbQkNTXSA9IEk5MTVf RVhFQ19CTFQsCiAJW1ZDU10gPSBJOTE1X0VYRUNfQlNELApAQCAtNzg1LDE4ICs4NTEsNDIgQEAg ZWJfc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICplYiwKIAlpZiAo ZW5naW5lID09IFZDUzIgJiYgKGZsYWdzICYgVkNTMlJFTUFQKSkKIAkJZW5naW5lID0gQkNTOwog Ci0JaWYgKChmbGFncyAmIEk5MTUpICYmIGVuZ2luZSA9PSBWQ1MpIHsKKwlpZiAoKGZsYWdzICYg STkxNSkgJiYgZW5naW5lID09IFZDUykKIAkJZWItPmZsYWdzID0gMDsKLQl9IGVsc2UgeworCWVs c2UKIAkJZWItPmZsYWdzID0gZWJfZW5naW5lX21hcFtlbmdpbmVdOworfQorCitzdGF0aWMgdW5z aWduZWQgaW50CitmaW5kX2VuZ2luZV9pbl9tYXAoc3RydWN0IGN0eCAqY3R4LCBlbnVtIGludGVs X2VuZ2luZV9pZCBlbmdpbmUpCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBp IDwgY3R4LT5lbmdpbmVfbWFwX2NvdW50OyBpKyspIHsKKwkJaWYgKGN0eC0+ZW5naW5lX21hcFtp XSA9PSBlbmdpbmUpCisJCQlyZXR1cm4gaSArIDE7CiAJfQorCisJaWd0X2Fzc2VydCgwKTsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBjdHggKgorX19nZXRfY3R4KHN0cnVjdCB3b3Jr bG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3KQoreworCXJldHVybiAmd3JrLT5jdHhfbGlzdFt3 LT5jb250ZXh0ICogMl07CiB9CiAKIHN0YXRpYyB2b2lkCi1lYl91cGRhdGVfZmxhZ3Moc3RydWN0 IHdfc3RlcCAqdywgZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lLAotCQl1bnNpZ25lZCBpbnQg ZmxhZ3MpCitlYl91cGRhdGVfZmxhZ3Moc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0 ZXAgKncsCisJCWVudW0gaW50ZWxfZW5naW5lX2lkIGVuZ2luZSwgdW5zaWduZWQgaW50IGZsYWdz KQogewotCWViX3NldF9lbmdpbmUoJnctPmViLCBlbmdpbmUsIGZsYWdzKTsKKwlzdHJ1Y3QgY3R4 ICpjdHggPSBfX2dldF9jdHgod3JrLCB3KTsKKworCWlmIChjdHgtPmVuZ2luZV9tYXApCisJCXct PmViLmZsYWdzID0gZmluZF9lbmdpbmVfaW5fbWFwKGN0eCwgZW5naW5lKTsKKwllbHNlCisJCWVi X3NldF9lbmdpbmUoJnctPmViLCBlbmdpbmUsIGZsYWdzKTsKIAogCXctPmViLmZsYWdzIHw9IEk5 MTVfRVhFQ19IQU5ETEVfTFVUOwogCXctPmViLmZsYWdzIHw9IEk5MTVfRVhFQ19OT19SRUxPQzsK QEAgLTgxNSwxMiArOTA1LDYgQEAgZ2V0X3N0YXR1c19vYmplY3RzKHN0cnVjdCB3b3JrbG9hZCAq d3JrKQogCQlyZXR1cm4gd3JrLT5zdGF0dXNfb2JqZWN0OwogfQogCi1zdGF0aWMgc3RydWN0IGN0 eCAqCi1fX2dldF9jdHgoc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncpCi17 Ci0JcmV0dXJuICZ3cmstPmN0eF9saXN0W3ctPmNvbnRleHQgKiAyXTsKLX0KLQogc3RhdGljIHVp bnQzMl90CiBnZXRfY3R4aWQoc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncp CiB7CkBAIC04OTAsNyArOTc0LDcgQEAgYWxsb2Nfc3RlcF9iYXRjaChzdHJ1Y3Qgd29ya2xvYWQg Kndyaywgc3RydWN0IHdfc3RlcCAqdywgdW5zaWduZWQgaW50IGZsYWdzKQogCQllbmdpbmUgPSBW Q1MyOwogCWVsc2UgaWYgKGZsYWdzICYgU1dBUFZDUyAmJiBlbmdpbmUgPT0gVkNTMikKIAkJZW5n aW5lID0gVkNTMTsKLQllYl91cGRhdGVfZmxhZ3ModywgZW5naW5lLCBmbGFncyk7CisJZWJfdXBk YXRlX2ZsYWdzKHdyaywgdywgZW5naW5lLCBmbGFncyk7CiAjaWZkZWYgREVCVUcKIAlwcmludGYo IiV1OiAldTp8Iiwgdy0+aWR4LCB3LT5lYi5idWZmZXJfY291bnQpOwogCWZvciAoaSA9IDA7IGkg PD0gajsgaSsrKQpAQCAtOTEzLDcgKzk5Nyw3IEBAIHN0YXRpYyB2b2lkIF9fY3R4X3NldF9wcmlv KHVpbnQzMl90IGN0eF9pZCwgdW5zaWduZWQgaW50IHByaW8pCiAJCWdlbV9jb250ZXh0X3NldF9w YXJhbShmZCwgJnBhcmFtKTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIHByZXBhcmVf d29ya2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQg aW50IGZsYWdzKQogewogCXVuc2lnbmVkIGludCBjdHhfdmNzID0gMDsKQEAgLTk3NCwzMCArMTA1 OCw1MyBAQCBwcmVwYXJlX3dvcmtsb2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2Fk ICp3cmssIHVuc2lnbmVkIGludCBmbGFncykKIAkvKgogCSAqIElkZW50aWZ5IGlmIGNvbnRleHRz IHRhcmdldCBzcGVjaWZpYyBlbmdpbmUgaW5zdGFuY2VzIGFuZCBpZiB0aGV5CiAJICogd2FudCB0 byBiZSBiYWxhbmNlZC4KKwkgKgorCSAqIFRyYW5zZmVyIG92ZXIgZW5naW5lIG1hcCBjb25maWd1 cmF0aW9uIGZyb20gdGhlIHdvcmtsb2FkIHN0ZXAuCiAJICovCiAJZm9yIChqID0gMDsgaiA8IHdy ay0+bnJfY3R4czsgaiArPSAyKSB7CiAJCWJvb2wgdGFyZ2V0cyA9IGZhbHNlOwogCQlib29sIGJh bGFuY2UgPSBmYWxzZTsKIAogCQlmb3IgKGkgPSAwLCB3ID0gd3JrLT5zdGVwczsgaSA8IHdyay0+ bnJfc3RlcHM7IGkrKywgdysrKSB7Ci0JCQlpZiAody0+dHlwZSAhPSBCQVRDSCkKLQkJCQljb250 aW51ZTsKLQogCQkJaWYgKHctPmNvbnRleHQgIT0gKGogLyAyKSkKIAkJCQljb250aW51ZTsKIAot CQkJaWYgKHctPmVuZ2luZSA9PSBWQ1MpCi0JCQkJYmFsYW5jZSA9IHRydWU7Ci0JCQllbHNlCi0J CQkJdGFyZ2V0cyA9IHRydWU7CisJCQlpZiAody0+dHlwZSA9PSBCQVRDSCkgeworCQkJCWlmICh3 LT5lbmdpbmUgPT0gVkNTKQorCQkJCQliYWxhbmNlID0gdHJ1ZTsKKwkJCQllbHNlCisJCQkJCXRh cmdldHMgPSB0cnVlOworCQkJfSBlbHNlIGlmICh3LT50eXBlID09IEVOR0lORV9NQVApIHsKKwkJ CQl3cmstPmN0eF9saXN0W2pdLmVuZ2luZV9tYXAgPSB3LT5lbmdpbmVfbWFwOworCQkJCXdyay0+ Y3R4X2xpc3Rbal0uZW5naW5lX21hcF9jb3VudCA9CisJCQkJCXctPmVuZ2luZV9tYXBfY291bnQ7 CisJCQl9CiAJCX0KIAotCQlpZiAoZmxhZ3MgJiBJOTE1KSB7Ci0JCQl3cmstPmN0eF9saXN0W2pd LnRhcmdldHNfaW5zdGFuY2UgPSB0YXJnZXRzOworCQl3cmstPmN0eF9saXN0W2pdLnRhcmdldHNf aW5zdGFuY2UgPSB0YXJnZXRzOworCQlpZiAoZmxhZ3MgJiBJOTE1KQogCQkJd3JrLT5jdHhfbGlz dFtqXS53YW50c19iYWxhbmNlID0gYmFsYW5jZTsKKwl9CisKKwkvKgorCSAqIEVuc3VyZSBWQ1Mg aXMgbm90IGFsbG93ZWQgd2l0aCBlbmdpbmUgbWFwIGNvbnRleHRzLgorCSAqLworCWZvciAoaiA9 IDA7IGogPCB3cmstPm5yX2N0eHM7IGogKz0gMikgeworCQlmb3IgKGkgPSAwLCB3ID0gd3JrLT5z dGVwczsgaSA8IHdyay0+bnJfc3RlcHM7IGkrKywgdysrKSB7CisJCQlpZiAody0+Y29udGV4dCAh PSAoaiAvIDIpKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAody0+dHlwZSAhPSBCQVRDSCkKKwkJ CQljb250aW51ZTsKKworCQkJaWYgKHdyay0+Y3R4X2xpc3Rbal0uZW5naW5lX21hcCAmJiB3LT5l bmdpbmUgPT0gVkNTKSB7CisJCQkJd3NpbV9lcnIoIkJhdGNoZXMgdGFyZ2V0dGluZyBlbmdpbmUg bWFwcyBtdXN0IHVzZSBleHBsaWNpdCBlbmdpbmVzIVxuIik7CisJCQkJcmV0dXJuIC0xOworCQkJ fQogCQl9CiAJfQogCisKIAkvKgogCSAqIENyZWF0ZSBhbmQgY29uZmlndXJlIGNvbnRleHRzLgog CSAqLwpAQCAtMTAwOCw3ICsxMTE1LDcgQEAgcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25lZCBpbnQg aWQsIHN0cnVjdCB3b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCWlmIChjdHgt PmlkKQogCQkJY29udGludWU7CiAKLQkJaWYgKGZsYWdzICYgSTkxNSkgeworCQlpZiAoKGZsYWdz ICYgSTkxNSkgfHwgY3R4LT5lbmdpbmVfbWFwKSB7CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfY3JlYXRlX3YyIGFyZ3MgPSB7IH07CiAKIAkJCS8qIEZpbmQgZXhpc3RpbmcgY29udGV4 dCB0byBzaGFyZSBwcGd0dCB3aXRoLiAqLwpAQCAtMTAyMiw3ICsxMTI5LDcgQEAgcHJlcGFyZV93 b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCiAJCQkJYnJlYWs7CiAJCQl9CiAKLQkJCWlmICghY3R4LT50YXJnZXRzX2luc3Rh bmNlKQorCQkJaWYgKCghY3R4LT5lbmdpbmVfbWFwICYmICFjdHgtPnRhcmdldHNfaW5zdGFuY2Up KQogCQkJCWFyZ3MuZmxhZ3MgfD0gSTkxNV9HRU1fQ09OVEVYVF9TSU5HTEVfVElNRUxJTkU7CiAK IAkJCWRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsICZhcmdz KTsKQEAgLTEwNTMsNyArMTE2MCw3IEBAIHByZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50IGlk LCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZsYWdzKQogCQkgKiBib3RoIHdh bnQgdG8gdGFyZ2V0IHNwZWNpZmljIGVuZ2luZXMgYW5kIGJlIGJhbGFuY2VkIGJ5IGk5MTU/CiAJ CSAqLwogCQlpZiAoKGZsYWdzICYgSTkxNSkgJiYgY3R4LT53YW50c19iYWxhbmNlICYmCi0JCSAg ICBjdHgtPnRhcmdldHNfaW5zdGFuY2UpIHsKKwkJICAgIGN0eC0+dGFyZ2V0c19pbnN0YW5jZSAm JiAhY3R4LT5lbmdpbmVfbWFwKSB7CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3Jl YXRlX3YyIGFyZ3MgPSB7fTsKIAogCQkJaWd0X2Fzc2VydChzaGFyZV9jdHgpOwpAQCAtMTA3MSw3 ICsxMTc4LDMzIEBAIHByZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29y a2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZsYWdzKQogCQkJX19jdHhfc2V0X3ByaW8oY3R4X2lk LCB3cmstPnByaW8pOwogCQl9CiAKLQkJaWYgKGN0eC0+d2FudHNfYmFsYW5jZSkgeworCQlpZiAo Y3R4LT5lbmdpbmVfbWFwKSB7CisJCQlzdHJ1Y3QgbG9jYWxfaTkxNV9jb250ZXh0X3BhcmFtX2Vu Z2luZXMgeworCQkJCV9fdTY0IGV4dGVuc2lvbnM7CisKKwkJCQlzdHJ1Y3QgeworCQkJCQlfX3Ux NiBjbGFzczsgLyogc2VlIGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2luZV9jbGFzcyAqLworCQkJCQlf X3UxNiBpbnN0YW5jZTsKKwkJCQl9IGVuZ2luZXNbY3R4LT5lbmdpbmVfbWFwX2NvdW50XTsKKwkJ CX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgc2V0X2VuZ2luZXM7CisJCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCQkJLmN0eF9pZCA9IGN0eF9pZCwKKwkJ CQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwkJCQkuc2l6ZSA9IHNpemVv ZihzZXRfZW5naW5lcyksCisJCQkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzZXRfZW5naW5l cyksCisJCQl9OworCisJCQlzZXRfZW5naW5lcy5leHRlbnNpb25zID0gMDsKKworCQkJZm9yIChq ID0gMDsgaiA8IGN0eC0+ZW5naW5lX21hcF9jb3VudDsgaisrKSB7CisJCQkJc2V0X2VuZ2luZXMu ZW5naW5lc1tqXS5jbGFzcyA9CisJCQkJCUk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPOyAvKiBGSVhN RSAqLworCQkJCXNldF9lbmdpbmVzLmVuZ2luZXNbal0uaW5zdGFuY2UgPQorCQkJCQljdHgtPmVu Z2luZV9tYXBbal0gLSBWQ1MxOyAvKiBGSVhNRSAqLworCQkJfQorCisJCQlnZW1fY29udGV4dF9z ZXRfcGFyYW0oZmQsICZwYXJhbSk7CisJCX0gZWxzZSBpZiAoY3R4LT53YW50c19iYWxhbmNlKSB7 CiAJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfbG9hZF9iYWxhbmNlIGxvYWRfYmFsYW5j ZSA9CiAJCQkJeyAuYmFzZS5uYW1lID0gSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFM QU5DRSwKIAkJCQkgIC5lbmdpbmVzX21hc2sgPSAtMSwKQEAgLTExNTEsNiArMTI4NCw4IEBAIHBy ZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5z aWduZWQgaW50IGZsYWdzKQogCiAJCWFsbG9jX3N0ZXBfYmF0Y2god3JrLCB3LCBfZmxhZ3MpOwog CX0KKworCXJldHVybiAwOwogfQogCiBzdGF0aWMgZG91YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0 IHRpbWVzcGVjICpzdGFydCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICplbmQpCkBAIC0xODg4LDcg KzIwMjMsNyBAQCBkb19lYihzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAqdywg ZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lLAogCXVpbnQzMl90IHNlcW5vID0gbmV3X3NlcW5v KHdyaywgZW5naW5lKTsKIAl1bnNpZ25lZCBpbnQgaTsKIAotCWViX3VwZGF0ZV9mbGFncyh3LCBl bmdpbmUsIGZsYWdzKTsKKwllYl91cGRhdGVfZmxhZ3Mod3JrLCB3LCBlbmdpbmUsIGZsYWdzKTsK IAogCWlmIChmbGFncyAmIFNFUU5PKQogCQl1cGRhdGVfYmJfc2Vxbm8odywgZW5naW5lLCBzZXFu byk7CkBAIC0yMDM3LDcgKzIxNzIsOCBAQCBzdGF0aWMgdm9pZCAqcnVuX3dvcmtsb2FkKHZvaWQg KmRhdGEpCiAJCQkJCQkJCSAgICB3LT5wcmlvcml0eTsKIAkJCQl9CiAJCQkJY29udGludWU7Ci0J CQl9IGVsc2UgaWYgKHctPnR5cGUgPT0gUFJFRU1QVElPTikgeworCQkJfSBlbHNlIGlmICh3LT50 eXBlID09IFBSRUVNUFRJT04gfHwKKwkJCQkgICB3LT50eXBlID09IEVOR0lORV9NQVApIHsKIAkJ CQljb250aW51ZTsKIAkJCX0KIApAQCAtMjU5NSw3ICsyNzMxLDExIEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJd1tpXS0+cHJpbnRfc3RhdHMgPSB2ZXJib3NlID4gMSB8fAog CQkJCSAgICAodmVyYm9zZSA+IDAgJiYgbWFzdGVyX3dvcmtsb2FkID09IGkpOwogCi0JCXByZXBh cmVfd29ya2xvYWQoaSwgd1tpXSwgZmxhZ3NfKTsKKwkJaWYgKHByZXBhcmVfd29ya2xvYWQoaSwg d1tpXSwgZmxhZ3NfKSkgeworCQkJd3NpbV9lcnIoIkZhaWxlZCB0byBwcmVwYXJlIHdvcmtsb2Fk ICV1IVxuIiwgaSk7CisJCQlyZXR1cm4gMTsKKwkJfQorCiAKIAkJaWYgKGJhbGFuY2VyICYmIGJh bGFuY2VyLT5pbml0KSB7CiAJCQlpbnQgcmV0ID0gYmFsYW5jZXItPmluaXQoYmFsYW5jZXIsIHdb aV0pOwpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy93c2ltL1JFQURNRSBiL2JlbmNobWFya3Mvd3Np bS9SRUFETUUKaW5kZXggNDc4NmYxMTZiNGFjLi4yMGUzZTM1OGNkMmUgMTAwNjQ0Ci0tLSBhL2Jl bmNobWFya3Mvd3NpbS9SRUFETUUKKysrIGIvYmVuY2htYXJrcy93c2ltL1JFQURNRQpAQCAtMyw2 ICszLDcgQEAgV29ya2xvYWQgZGVzY3JpcHRvciBmb3JtYXQKIAogY3R4LmVuZ2luZS5kdXJhdGlv bl91cy5kZXBlbmRlbmN5LndhaXQsLi4uCiA8dWludD4uPHN0cj4uPHVpbnQ+Wy08dWludD5dLjxp bnQgPD0gMD5bLzxpbnQgPD0gMD5dWy4uLl0uPDB8MT4sLi4uCitNLjx1aW50Pi48c3RyPlt8PHN0 cj5dLi4uCiBQfFguPHVpbnQ+LjxpbnQ+CiBkfHB8c3x0fHF8YS48aW50PiwuLi4KIGYKQEAgLTIz LDEwICsyNCwxMSBAQCBBZGRpdGlvbmFsIHdvcmtsb2FkIHN0ZXBzIGFyZSBhbHNvIHN1cHBvcnRl ZDoKICAncScgLSBUaHJvdHRsZSB0byBuIG1heCBxdWV1ZSBkZXB0aC4KICAnZicgLSBDcmVhdGUg YSBzeW5jIGZlbmNlLgogICdhJyAtIEFkdmFuY2UgdGhlIHByZXZpb3VzbHkgY3JlYXRlZCBzeW5j IGZlbmNlLgorICdNJyAtIFNldCB1cCBlbmdpbmUgbWFwLgogICdQJyAtIENvbnRleHQgcHJpb3Jp dHkuCiAgJ1gnIC0gQ29udGV4dCBwcmVlbXB0aW9uIGNvbnRyb2wuCiAKLUVuZ2luZSBpZHM6IFJD UywgQkNTLCBWQ1MsIFZDUzEsIFZDUzIsIFZFQ1MKK0VuZ2luZSBpZHM6IERFRkFVTFQsIFJDUywg QkNTLCBWQ1MsIFZDUzEsIFZDUzIsIFZFQ1MKIAogRXhhbXBsZSAobGVhZGluZyBzcGFjZXMgbXVz dCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYWN0dWFsIGZpbGUpOgogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTYxLDMg KzE2MywxNiBAQCBUaGUgc2FtZSBjb250ZXh0IGlzIHRoZW4gbWFya2VkIHRvIGhhdmUgYmF0Y2hl cyB3aGljaCBjYW4gYmUgcHJlZW1wdGVkIGV2ZXJ5CiAKIFNhbWUgYXMgd2l0aCBjb250ZXh0IHBy aW9yaXR5LCBjb250ZXh0IHByZWVtcHRpb24gY29tbWFuZHMgYXJlIHZhbGlkIHVudGlsCiBvcHRp b25hbGx5IG92ZXJyaWRlbiBieSBhbm90aGVyIHByZWVtcHRpb24gY29udHJvbCBjaGFuZ2Ugb24g dGhlIHNhbWUgY29udGV4dC4KKworRW5naW5lIG1hcHMKKy0tLS0tLS0tLS0tCisKK0VuZ2luZSBt YXBzIGFyZSBhIHBlciBjb250ZXh0IGZlYXR1cmUgd2hpY2ggY2hhbmdlcyB0aGUgd2F5IGVuZ2lu ZSBzZWxlY3Rpb24gaXMKK2RvbmUgaW4gdGhlIGRyaXZlci4KKworRXhhbXBsZToKKworICAxLk0u VkNTMXxWQ1MyCisKK1RoaXMgc2V0cyB1cCBjb250ZXh0IDEgd2l0aCBhbiBlbmdpbmUgbWFwIGNv bnRhaW5pbmcgVkNTMSBhbmQgVkNTMiBlbmdpbmUuCitTdWJtaXNzaW9uIHRvIHRoaXMgY29udGV4 dCBjYW4gbm93IG9ubHkgcmVmZXJlbmNlIHRoZXNlIHR3byBlbmdpbmVzLgotLSAKMi4xNy4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1h aWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK