From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t] benchmarks/gem_wsim: Heap allocate VLA structs Date: Fri, 24 May 2019 08:25:51 +0100 Message-ID: <20190524072551.24429-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QXBwYXJlbnRseSBWTEEgc3RydWN0cyAoZS5nLiBzdHJ1Y3QgeyBpbnQgYXJyYXlbY291bnRdIH0p IGlzIGEgZ2NjCmV4dGVuc2lvbiB0aGF0IGNsYW5nIHJlZnVzZXMgdG8gc3VwcG9ydCBhcyBoYW5k bGluZyBtZW1vcnkgbGF5b3V0IGlzIHRvbwpkaWZmaWN1bHQgZm9yIGl0LgoKTW92ZSB0aGUgb24t c3RhY2sgVkxBIHRvIHRoZSBoZWFwLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyB8IDE0NiArKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NSBpbnNlcnRp b25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV93c2lt LmMgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKaW5kZXggZTJmZmI5M2E5Li4wYTAwMzJiZmYgMTAw NjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYworKysgYi9iZW5jaG1hcmtzL2dlbV93c2lt LmMKQEAgLTE0NDEsNiArMTQ0MSw0OCBAQCBzZXRfY3R4X3NzZXUoc3RydWN0IGN0eCAqY3R4LCB1 aW50NjRfdCBzbGljZV9tYXNrKQogCXJldHVybiBzbGljZV9tYXNrOwogfQogCitzdGF0aWMgc2l6 ZV90IHNpemVvZl9sb2FkX2JhbGFuY2UoaW50IGNvdW50KQoreworCXN0cnVjdCBpOTE1X2NvbnRl eHRfZW5naW5lc19sb2FkX2JhbGFuY2UgKnB0cjsKKworCWFzc2VydChzaXplb2YocHRyLT5lbmdp bmVzW2NvdW50XSkgPT0gY291bnQgKiBzaXplb2YocHRyLT5lbmdpbmVzWzBdKSk7CisJcmV0dXJu IHNpemVvZigqcHRyKSArIHNpemVvZihwdHItPmVuZ2luZXNbY291bnRdKTsKK30KKworc3RhdGlj IHN0cnVjdCBpOTE1X2NvbnRleHRfZW5naW5lc19sb2FkX2JhbGFuY2UgKgorYWxsb2NfbG9hZF9i YWxhbmNlKGludCBjb3VudCkKK3sKKwlyZXR1cm4gY2FsbG9jKDEsIHNpemVvZl9sb2FkX2JhbGFu Y2UoY291bnQpKTsKK30KKworc3RhdGljIHNpemVfdCBzaXplb2ZfcGFyYW1fZW5naW5lcyhpbnQg Y291bnQpCit7CisJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICpwdHI7CisKKwlh c3NlcnQoc2l6ZW9mKHB0ci0+ZW5naW5lc1tjb3VudF0pID09IGNvdW50ICogc2l6ZW9mKHB0ci0+ ZW5naW5lc1swXSkpOworCXJldHVybiBzaXplb2YoKnB0cikgKyBzaXplb2YocHRyLT5lbmdpbmVz W2NvdW50XSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMg KgorYWxsb2NfcGFyYW1fZW5naW5lcyhpbnQgY291bnQpCit7CisJcmV0dXJuIGNhbGxvYygxLCBz aXplb2ZfcGFyYW1fZW5naW5lcyhjb3VudCkpOworfQorCitzdGF0aWMgc2l6ZV90IHNpemVvZl9l bmdpbmVzX2JvbmQoaW50IGNvdW50KQoreworCXN0cnVjdCBpOTE1X2NvbnRleHRfZW5naW5lc19i b25kICpwdHI7CisKKwlhc3NlcnQoc2l6ZW9mKHB0ci0+ZW5naW5lc1tjb3VudF0pID09IGNvdW50 ICogc2l6ZW9mKHB0ci0+ZW5naW5lc1swXSkpOworCXJldHVybiBzaXplb2YoKnB0cikgKyBzaXpl b2YocHRyLT5lbmdpbmVzW2NvdW50XSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9jb250ZXh0 X2VuZ2luZXNfYm9uZCAqCithbGxvY19lbmdpbmVzX2JvbmQoaW50IGNvdW50KQoreworCXJldHVy biBjYWxsb2MoMSwgc2l6ZW9mX2VuZ2luZXNfYm9uZChjb3VudCkpOworfQorCiBzdGF0aWMgaW50 CiBwcmVwYXJlX3dvcmtsb2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmss IHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTE2NzYsNjYgKzE3MTgsNTQgQEAgcHJlcGFyZV93 b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAoY3R4LT5lbmdpbmVfbWFwKSB7Ci0JCQlJOTE1X0RFRklO RV9DT05URVhUX1BBUkFNX0VOR0lORVMoc2V0X2VuZ2luZXMsCi0JCQkJCQkJICBjdHgtPmVuZ2lu ZV9tYXBfY291bnQgKyAxKTsKLQkJCUk5MTVfREVGSU5FX0NPTlRFWFRfRU5HSU5FU19MT0FEX0JB TEFOQ0UobG9hZF9iYWxhbmNlLAotCQkJCQkJCQkgY3R4LT5lbmdpbmVfbWFwX2NvdW50KTsKKwkJ CXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqc2V0X2VuZ2luZXMgPQorCQkJCWFs bG9jX3BhcmFtX2VuZ2luZXMoY3R4LT5lbmdpbmVfbWFwX2NvdW50ICsgMSk7CisJCQlzdHJ1Y3Qg aTkxNV9jb250ZXh0X2VuZ2luZXNfbG9hZF9iYWxhbmNlICpsb2FkX2JhbGFuY2UgPQorCQkJCWFs bG9jX2xvYWRfYmFsYW5jZShjdHgtPmVuZ2luZV9tYXBfY291bnQpOwogCQkJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0gewogCQkJCS5jdHhfaWQgPSBjdHhfaWQsCiAJ CQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCi0JCQkJLnNpemUgPSBzaXpl b2Yoc2V0X2VuZ2luZXMpLAotCQkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc2V0X2VuZ2lu ZXMpLAorCQkJCS5zaXplID0gc2l6ZW9mX3BhcmFtX2VuZ2luZXMoY3R4LT5lbmdpbmVfbWFwX2Nv dW50ICsgMSksCisJCQkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKHNldF9lbmdpbmVzKSwKIAkJ CX07CisJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCAqbGFzdCA9IE5VTEw7CiAK IAkJCWlmIChjdHgtPndhbnRzX2JhbGFuY2UpIHsKLQkJCQlzZXRfZW5naW5lcy5leHRlbnNpb25z ID0KLQkJCQkJdG9fdXNlcl9wb2ludGVyKCZsb2FkX2JhbGFuY2UpOworCQkJCXNldF9lbmdpbmVz LT5leHRlbnNpb25zID0KKwkJCQkJdG9fdXNlcl9wb2ludGVyKGxvYWRfYmFsYW5jZSk7CiAKLQkJ CQltZW1zZXQoJmxvYWRfYmFsYW5jZSwgMCwgc2l6ZW9mKGxvYWRfYmFsYW5jZSkpOwotCQkJCWxv YWRfYmFsYW5jZS5iYXNlLm5hbWUgPQorCQkJCWxvYWRfYmFsYW5jZS0+YmFzZS5uYW1lID0KIAkJ CQkJSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5DRTsKLQkJCQlsb2FkX2JhbGFu Y2UubnVtX3NpYmxpbmdzID0KKwkJCQlsb2FkX2JhbGFuY2UtPm51bV9zaWJsaW5ncyA9CiAJCQkJ CWN0eC0+ZW5naW5lX21hcF9jb3VudDsKIAogCQkJCWZvciAoaiA9IDA7IGogPCBjdHgtPmVuZ2lu ZV9tYXBfY291bnQ7IGorKykKLQkJCQkJbG9hZF9iYWxhbmNlLmVuZ2luZXNbal0gPQorCQkJCQls b2FkX2JhbGFuY2UtPmVuZ2luZXNbal0gPQogCQkJCQkJZ2V0X2VuZ2luZShjdHgtPmVuZ2luZV9t YXBbal0pOwotCQkJfSBlbHNlIHsKLQkJCQlzZXRfZW5naW5lcy5leHRlbnNpb25zID0gMDsKIAkJ CX0KIAogCQkJLyogUmVzZXJ2ZSBzbG90IGZvciB2aXJ0dWFsIGVuZ2luZS4gKi8KLQkJCXNldF9l bmdpbmVzLmVuZ2luZXNbMF0uZW5naW5lX2NsYXNzID0KKwkJCXNldF9lbmdpbmVzLT5lbmdpbmVz WzBdLmVuZ2luZV9jbGFzcyA9CiAJCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsKLQkJCXNl dF9lbmdpbmVzLmVuZ2luZXNbMF0uZW5naW5lX2luc3RhbmNlID0KKwkJCXNldF9lbmdpbmVzLT5l bmdpbmVzWzBdLmVuZ2luZV9pbnN0YW5jZSA9CiAJCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJ RF9OT05FOwogCiAJCQlmb3IgKGogPSAxOyBqIDw9IGN0eC0+ZW5naW5lX21hcF9jb3VudDsgaisr KQotCQkJCXNldF9lbmdpbmVzLmVuZ2luZXNbal0gPQorCQkJCXNldF9lbmdpbmVzLT5lbmdpbmVz W2pdID0KIAkJCQkJZ2V0X2VuZ2luZShjdHgtPmVuZ2luZV9tYXBbaiAtIDFdKTsKIAorCQkJbGFz dCA9IE5VTEw7CiAJCQlmb3IgKGogPSAwOyBqIDwgY3R4LT5ib25kX2NvdW50OyBqKyspIHsKIAkJ CQl1bnNpZ25lZCBsb25nIG1hc2sgPSBjdHgtPmJvbmRzW2pdLm1hc2s7Ci0JCQkJSTkxNV9ERUZJ TkVfQ09OVEVYVF9FTkdJTkVTX0JPTkQoYm9uZCwKLQkJCQkJCQkJIF9fYnVpbHRpbl9wb3Bjb3Vu dChtYXNrKSk7Ci0JCQkJc3RydWN0IGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQgKnAgPSBOVUxM LCAqcHJldjsKKwkJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCAqYm9uZCA9CisJ CQkJCWFsbG9jX2VuZ2luZXNfYm9uZChfX2J1aWx0aW5fcG9wY291bnQobWFzaykpOwogCQkJCXVu c2lnbmVkIGludCBiLCBlOwogCi0JCQkJcHJldiA9IHA7Ci0JCQkJcCA9IGFsbG9jYShzaXplb2Yo Ym9uZCkpOwotCQkJCWFzc2VydChwKTsKLQkJCQltZW1zZXQocCwgMCwgc2l6ZW9mKGJvbmQpKTsK LQotCQkJCWlmIChqID09IDApCi0JCQkJCWxvYWRfYmFsYW5jZS5iYXNlLm5leHRfZXh0ZW5zaW9u ID0KLQkJCQkJCXRvX3VzZXJfcG9pbnRlcihwKTsKLQkJCQllbHNlIGlmIChqIDwgKGN0eC0+Ym9u ZF9jb3VudCAtIDEpKQotCQkJCQlwcmV2LT5iYXNlLm5leHRfZXh0ZW5zaW9uID0KLQkJCQkJCXRv X3VzZXJfcG9pbnRlcihwKTsKKwkJCQlib25kLT5iYXNlLm5leHRfZXh0ZW5zaW9uID0gdG9fdXNl cl9wb2ludGVyKGxhc3QpOworCQkJCWJvbmQtPmJhc2UubmFtZSA9IEk5MTVfQ09OVEVYVF9FTkdJ TkVTX0VYVF9CT05EOwogCi0JCQkJcC0+YmFzZS5uYW1lID0gSTkxNV9DT05URVhUX0VOR0lORVNf RVhUX0JPTkQ7Ci0JCQkJcC0+dmlydHVhbF9pbmRleCA9IDA7Ci0JCQkJcC0+bWFzdGVyID0gZ2V0 X2VuZ2luZShjdHgtPmJvbmRzW2pdLm1hc3Rlcik7CisJCQkJYm9uZC0+dmlydHVhbF9pbmRleCA9 IDA7CisJCQkJYm9uZC0+bWFzdGVyID0gZ2V0X2VuZ2luZShjdHgtPmJvbmRzW2pdLm1hc3Rlcik7 CiAKIAkJCQlmb3IgKGIgPSAwLCBlID0gMDsgbWFzazsgZSsrLCBtYXNrID4+PSAxKSB7CiAJCQkJ CXVuc2lnbmVkIGludCBpZHg7CkBAIC0xNzQzLDQ0ICsxNzczLDU4IEBAIHByZXBhcmVfd29ya2xv YWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZs YWdzKQogCQkJCQlpZiAoIShtYXNrICYgMSkpCiAJCQkJCQljb250aW51ZTsKIAotCQkJCQlpZHgg PSBmaW5kX2VuZ2luZSgmc2V0X2VuZ2luZXMuZW5naW5lc1sxXSwKKwkJCQkJaWR4ID0gZmluZF9l bmdpbmUoJnNldF9lbmdpbmVzLT5lbmdpbmVzWzFdLAogCQkJCQkJCSAgY3R4LT5lbmdpbmVfbWFw X2NvdW50LAogCQkJCQkJCSAgZSk7Ci0JCQkJCXAtPmVuZ2luZXNbYisrXSA9Ci0JCQkJCQlzZXRf ZW5naW5lcy5lbmdpbmVzWzEgKyBpZHhdOworCQkJCQlib25kLT5lbmdpbmVzW2IrK10gPQorCQkJ CQkJc2V0X2VuZ2luZXMtPmVuZ2luZXNbMSArIGlkeF07CiAJCQkJfQorCisJCQkJbGFzdCA9IGJv bmQ7CiAJCQl9CisJCQlsb2FkX2JhbGFuY2UtPmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2Vy X3BvaW50ZXIobGFzdCk7CiAKIAkJCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJnBhcmFtKTsK KworCQkJd2hpbGUgKGxhc3QpIHsKKwkJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9u ZCAqbmV4dCA9CisJCQkJCWZyb21fdXNlcl9wb2ludGVyKGxhc3QtPmJhc2UubmV4dF9leHRlbnNp b24pOworCQkJCWZyZWUobGFzdCk7CisJCQkJbGFzdCA9IG5leHQ7CisJCQl9CisJCQlmcmVlKGxv YWRfYmFsYW5jZSk7CisJCQlmcmVlKHNldF9lbmdpbmVzKTsKIAkJfSBlbHNlIGlmIChjdHgtPndh bnRzX2JhbGFuY2UpIHsKIAkJCWNvbnN0IHVuc2lnbmVkIGludCBjb3VudCA9IG51bV9lbmdpbmVz X2luX2NsYXNzKFZDUyk7Ci0JCQlJOTE1X0RFRklORV9DT05URVhUX0VOR0lORVNfTE9BRF9CQUxB TkNFKGxvYWRfYmFsYW5jZSwKLQkJCQkJCQkJIGNvdW50KTsKLQkJCUk5MTVfREVGSU5FX0NPTlRF WFRfUEFSQU1fRU5HSU5FUyhzZXRfZW5naW5lcywKLQkJCQkJCQkgIGNvdW50ICsgMSk7CisJCQlz dHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfbG9hZF9iYWxhbmNlICpsb2FkX2JhbGFuY2UgPQor CQkJCWFsbG9jX2xvYWRfYmFsYW5jZShjb3VudCk7CisJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X3Bh cmFtX2VuZ2luZXMgKnNldF9lbmdpbmVzID0KKwkJCQlhbGxvY19wYXJhbV9lbmdpbmVzKGNvdW50 ICsgMSk7CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CiAJ CQkJLmN0eF9pZCA9IGN0eF9pZCwKIAkJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5H SU5FUywKLQkJCQkuc2l6ZSA9IHNpemVvZihzZXRfZW5naW5lcyksCi0JCQkJLnZhbHVlID0gdG9f dXNlcl9wb2ludGVyKCZzZXRfZW5naW5lcyksCisJCQkJLnNpemUgPSBzaXplb2ZfcGFyYW1fZW5n aW5lcyhjb3VudCArIDEpLAorCQkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihzZXRfZW5naW5l cyksCiAJCQl9OwogCi0JCQlzZXRfZW5naW5lcy5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVy KCZsb2FkX2JhbGFuY2UpOworCQkJc2V0X2VuZ2luZXMtPmV4dGVuc2lvbnMgPSB0b191c2VyX3Bv aW50ZXIobG9hZF9iYWxhbmNlKTsKIAotCQkJc2V0X2VuZ2luZXMuZW5naW5lc1swXS5lbmdpbmVf Y2xhc3MgPQorCQkJc2V0X2VuZ2luZXMtPmVuZ2luZXNbMF0uZW5naW5lX2NsYXNzID0KIAkJCQlJ OTE1X0VOR0lORV9DTEFTU19JTlZBTElEOwotCQkJc2V0X2VuZ2luZXMuZW5naW5lc1swXS5lbmdp bmVfaW5zdGFuY2UgPQorCQkJc2V0X2VuZ2luZXMtPmVuZ2luZXNbMF0uZW5naW5lX2luc3RhbmNl ID0KIAkJCQlJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkU7Ci0JCQlmaWxsX2VuZ2luZXNf Y2xhc3MoJnNldF9lbmdpbmVzLmVuZ2luZXNbMV0sIFZDUyk7CisJCQlmaWxsX2VuZ2luZXNfY2xh c3MoJnNldF9lbmdpbmVzLT5lbmdpbmVzWzFdLCBWQ1MpOwogCi0JCQltZW1zZXQoJmxvYWRfYmFs YW5jZSwgMCwgc2l6ZW9mKGxvYWRfYmFsYW5jZSkpOwotCQkJbG9hZF9iYWxhbmNlLmJhc2UubmFt ZSA9CisJCQlsb2FkX2JhbGFuY2UtPmJhc2UubmFtZSA9CiAJCQkJSTkxNV9DT05URVhUX0VOR0lO RVNfRVhUX0xPQURfQkFMQU5DRTsKLQkJCWxvYWRfYmFsYW5jZS5udW1fc2libGluZ3MgPSBjb3Vu dDsKKwkJCWxvYWRfYmFsYW5jZS0+bnVtX3NpYmxpbmdzID0gY291bnQ7CiAKLQkJCWZpbGxfZW5n aW5lc19jbGFzcygmbG9hZF9iYWxhbmNlLmVuZ2luZXNbMF0sIFZDUyk7CisJCQlmaWxsX2VuZ2lu ZXNfY2xhc3MoJmxvYWRfYmFsYW5jZS0+ZW5naW5lc1swXSwgVkNTKTsKIAogCQkJZ2VtX2NvbnRl eHRfc2V0X3BhcmFtKGZkLCAmcGFyYW0pOworCisJCQlmcmVlKHNldF9lbmdpbmVzKTsKKwkJCWZy ZWUobG9hZF9iYWxhbmNlKTsKIAkJfQogCiAJCWlmICh3cmstPnNzZXUpIHsKLS0gCjIuMjAuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Fri, 24 May 2019 08:25:51 +0100 Message-Id: <20190524072551.24429-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] benchmarks/gem_wsim: Heap allocate VLA structs 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: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org, Tvrtko Ursulin List-ID: QXBwYXJlbnRseSBWTEEgc3RydWN0cyAoZS5nLiBzdHJ1Y3QgeyBpbnQgYXJyYXlbY291bnRdIH0p IGlzIGEgZ2NjCmV4dGVuc2lvbiB0aGF0IGNsYW5nIHJlZnVzZXMgdG8gc3VwcG9ydCBhcyBoYW5k bGluZyBtZW1vcnkgbGF5b3V0IGlzIHRvbwpkaWZmaWN1bHQgZm9yIGl0LgoKTW92ZSB0aGUgb24t c3RhY2sgVkxBIHRvIHRoZSBoZWFwLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyB8IDE0NiArKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NSBpbnNlcnRp b25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV93c2lt LmMgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKaW5kZXggZTJmZmI5M2E5Li4wYTAwMzJiZmYgMTAw NjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYworKysgYi9iZW5jaG1hcmtzL2dlbV93c2lt LmMKQEAgLTE0NDEsNiArMTQ0MSw0OCBAQCBzZXRfY3R4X3NzZXUoc3RydWN0IGN0eCAqY3R4LCB1 aW50NjRfdCBzbGljZV9tYXNrKQogCXJldHVybiBzbGljZV9tYXNrOwogfQogCitzdGF0aWMgc2l6 ZV90IHNpemVvZl9sb2FkX2JhbGFuY2UoaW50IGNvdW50KQoreworCXN0cnVjdCBpOTE1X2NvbnRl eHRfZW5naW5lc19sb2FkX2JhbGFuY2UgKnB0cjsKKworCWFzc2VydChzaXplb2YocHRyLT5lbmdp bmVzW2NvdW50XSkgPT0gY291bnQgKiBzaXplb2YocHRyLT5lbmdpbmVzWzBdKSk7CisJcmV0dXJu IHNpemVvZigqcHRyKSArIHNpemVvZihwdHItPmVuZ2luZXNbY291bnRdKTsKK30KKworc3RhdGlj IHN0cnVjdCBpOTE1X2NvbnRleHRfZW5naW5lc19sb2FkX2JhbGFuY2UgKgorYWxsb2NfbG9hZF9i YWxhbmNlKGludCBjb3VudCkKK3sKKwlyZXR1cm4gY2FsbG9jKDEsIHNpemVvZl9sb2FkX2JhbGFu Y2UoY291bnQpKTsKK30KKworc3RhdGljIHNpemVfdCBzaXplb2ZfcGFyYW1fZW5naW5lcyhpbnQg Y291bnQpCit7CisJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICpwdHI7CisKKwlh c3NlcnQoc2l6ZW9mKHB0ci0+ZW5naW5lc1tjb3VudF0pID09IGNvdW50ICogc2l6ZW9mKHB0ci0+ ZW5naW5lc1swXSkpOworCXJldHVybiBzaXplb2YoKnB0cikgKyBzaXplb2YocHRyLT5lbmdpbmVz W2NvdW50XSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMg KgorYWxsb2NfcGFyYW1fZW5naW5lcyhpbnQgY291bnQpCit7CisJcmV0dXJuIGNhbGxvYygxLCBz aXplb2ZfcGFyYW1fZW5naW5lcyhjb3VudCkpOworfQorCitzdGF0aWMgc2l6ZV90IHNpemVvZl9l bmdpbmVzX2JvbmQoaW50IGNvdW50KQoreworCXN0cnVjdCBpOTE1X2NvbnRleHRfZW5naW5lc19i b25kICpwdHI7CisKKwlhc3NlcnQoc2l6ZW9mKHB0ci0+ZW5naW5lc1tjb3VudF0pID09IGNvdW50 ICogc2l6ZW9mKHB0ci0+ZW5naW5lc1swXSkpOworCXJldHVybiBzaXplb2YoKnB0cikgKyBzaXpl b2YocHRyLT5lbmdpbmVzW2NvdW50XSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9jb250ZXh0 X2VuZ2luZXNfYm9uZCAqCithbGxvY19lbmdpbmVzX2JvbmQoaW50IGNvdW50KQoreworCXJldHVy biBjYWxsb2MoMSwgc2l6ZW9mX2VuZ2luZXNfYm9uZChjb3VudCkpOworfQorCiBzdGF0aWMgaW50 CiBwcmVwYXJlX3dvcmtsb2FkKHVuc2lnbmVkIGludCBpZCwgc3RydWN0IHdvcmtsb2FkICp3cmss IHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTE2NzYsNjYgKzE3MTgsNTQgQEAgcHJlcGFyZV93 b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAoY3R4LT5lbmdpbmVfbWFwKSB7Ci0JCQlJOTE1X0RFRklO RV9DT05URVhUX1BBUkFNX0VOR0lORVMoc2V0X2VuZ2luZXMsCi0JCQkJCQkJICBjdHgtPmVuZ2lu ZV9tYXBfY291bnQgKyAxKTsKLQkJCUk5MTVfREVGSU5FX0NPTlRFWFRfRU5HSU5FU19MT0FEX0JB TEFOQ0UobG9hZF9iYWxhbmNlLAotCQkJCQkJCQkgY3R4LT5lbmdpbmVfbWFwX2NvdW50KTsKKwkJ CXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqc2V0X2VuZ2luZXMgPQorCQkJCWFs bG9jX3BhcmFtX2VuZ2luZXMoY3R4LT5lbmdpbmVfbWFwX2NvdW50ICsgMSk7CisJCQlzdHJ1Y3Qg aTkxNV9jb250ZXh0X2VuZ2luZXNfbG9hZF9iYWxhbmNlICpsb2FkX2JhbGFuY2UgPQorCQkJCWFs bG9jX2xvYWRfYmFsYW5jZShjdHgtPmVuZ2luZV9tYXBfY291bnQpOwogCQkJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0gewogCQkJCS5jdHhfaWQgPSBjdHhfaWQsCiAJ CQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCi0JCQkJLnNpemUgPSBzaXpl b2Yoc2V0X2VuZ2luZXMpLAotCQkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc2V0X2VuZ2lu ZXMpLAorCQkJCS5zaXplID0gc2l6ZW9mX3BhcmFtX2VuZ2luZXMoY3R4LT5lbmdpbmVfbWFwX2Nv dW50ICsgMSksCisJCQkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKHNldF9lbmdpbmVzKSwKIAkJ CX07CisJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCAqbGFzdCA9IE5VTEw7CiAK IAkJCWlmIChjdHgtPndhbnRzX2JhbGFuY2UpIHsKLQkJCQlzZXRfZW5naW5lcy5leHRlbnNpb25z ID0KLQkJCQkJdG9fdXNlcl9wb2ludGVyKCZsb2FkX2JhbGFuY2UpOworCQkJCXNldF9lbmdpbmVz LT5leHRlbnNpb25zID0KKwkJCQkJdG9fdXNlcl9wb2ludGVyKGxvYWRfYmFsYW5jZSk7CiAKLQkJ CQltZW1zZXQoJmxvYWRfYmFsYW5jZSwgMCwgc2l6ZW9mKGxvYWRfYmFsYW5jZSkpOwotCQkJCWxv YWRfYmFsYW5jZS5iYXNlLm5hbWUgPQorCQkJCWxvYWRfYmFsYW5jZS0+YmFzZS5uYW1lID0KIAkJ CQkJSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5DRTsKLQkJCQlsb2FkX2JhbGFu Y2UubnVtX3NpYmxpbmdzID0KKwkJCQlsb2FkX2JhbGFuY2UtPm51bV9zaWJsaW5ncyA9CiAJCQkJ CWN0eC0+ZW5naW5lX21hcF9jb3VudDsKIAogCQkJCWZvciAoaiA9IDA7IGogPCBjdHgtPmVuZ2lu ZV9tYXBfY291bnQ7IGorKykKLQkJCQkJbG9hZF9iYWxhbmNlLmVuZ2luZXNbal0gPQorCQkJCQls b2FkX2JhbGFuY2UtPmVuZ2luZXNbal0gPQogCQkJCQkJZ2V0X2VuZ2luZShjdHgtPmVuZ2luZV9t YXBbal0pOwotCQkJfSBlbHNlIHsKLQkJCQlzZXRfZW5naW5lcy5leHRlbnNpb25zID0gMDsKIAkJ CX0KIAogCQkJLyogUmVzZXJ2ZSBzbG90IGZvciB2aXJ0dWFsIGVuZ2luZS4gKi8KLQkJCXNldF9l bmdpbmVzLmVuZ2luZXNbMF0uZW5naW5lX2NsYXNzID0KKwkJCXNldF9lbmdpbmVzLT5lbmdpbmVz WzBdLmVuZ2luZV9jbGFzcyA9CiAJCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsKLQkJCXNl dF9lbmdpbmVzLmVuZ2luZXNbMF0uZW5naW5lX2luc3RhbmNlID0KKwkJCXNldF9lbmdpbmVzLT5l bmdpbmVzWzBdLmVuZ2luZV9pbnN0YW5jZSA9CiAJCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJ RF9OT05FOwogCiAJCQlmb3IgKGogPSAxOyBqIDw9IGN0eC0+ZW5naW5lX21hcF9jb3VudDsgaisr KQotCQkJCXNldF9lbmdpbmVzLmVuZ2luZXNbal0gPQorCQkJCXNldF9lbmdpbmVzLT5lbmdpbmVz W2pdID0KIAkJCQkJZ2V0X2VuZ2luZShjdHgtPmVuZ2luZV9tYXBbaiAtIDFdKTsKIAorCQkJbGFz dCA9IE5VTEw7CiAJCQlmb3IgKGogPSAwOyBqIDwgY3R4LT5ib25kX2NvdW50OyBqKyspIHsKIAkJ CQl1bnNpZ25lZCBsb25nIG1hc2sgPSBjdHgtPmJvbmRzW2pdLm1hc2s7Ci0JCQkJSTkxNV9ERUZJ TkVfQ09OVEVYVF9FTkdJTkVTX0JPTkQoYm9uZCwKLQkJCQkJCQkJIF9fYnVpbHRpbl9wb3Bjb3Vu dChtYXNrKSk7Ci0JCQkJc3RydWN0IGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQgKnAgPSBOVUxM LCAqcHJldjsKKwkJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCAqYm9uZCA9CisJ CQkJCWFsbG9jX2VuZ2luZXNfYm9uZChfX2J1aWx0aW5fcG9wY291bnQobWFzaykpOwogCQkJCXVu c2lnbmVkIGludCBiLCBlOwogCi0JCQkJcHJldiA9IHA7Ci0JCQkJcCA9IGFsbG9jYShzaXplb2Yo Ym9uZCkpOwotCQkJCWFzc2VydChwKTsKLQkJCQltZW1zZXQocCwgMCwgc2l6ZW9mKGJvbmQpKTsK LQotCQkJCWlmIChqID09IDApCi0JCQkJCWxvYWRfYmFsYW5jZS5iYXNlLm5leHRfZXh0ZW5zaW9u ID0KLQkJCQkJCXRvX3VzZXJfcG9pbnRlcihwKTsKLQkJCQllbHNlIGlmIChqIDwgKGN0eC0+Ym9u ZF9jb3VudCAtIDEpKQotCQkJCQlwcmV2LT5iYXNlLm5leHRfZXh0ZW5zaW9uID0KLQkJCQkJCXRv X3VzZXJfcG9pbnRlcihwKTsKKwkJCQlib25kLT5iYXNlLm5leHRfZXh0ZW5zaW9uID0gdG9fdXNl cl9wb2ludGVyKGxhc3QpOworCQkJCWJvbmQtPmJhc2UubmFtZSA9IEk5MTVfQ09OVEVYVF9FTkdJ TkVTX0VYVF9CT05EOwogCi0JCQkJcC0+YmFzZS5uYW1lID0gSTkxNV9DT05URVhUX0VOR0lORVNf RVhUX0JPTkQ7Ci0JCQkJcC0+dmlydHVhbF9pbmRleCA9IDA7Ci0JCQkJcC0+bWFzdGVyID0gZ2V0 X2VuZ2luZShjdHgtPmJvbmRzW2pdLm1hc3Rlcik7CisJCQkJYm9uZC0+dmlydHVhbF9pbmRleCA9 IDA7CisJCQkJYm9uZC0+bWFzdGVyID0gZ2V0X2VuZ2luZShjdHgtPmJvbmRzW2pdLm1hc3Rlcik7 CiAKIAkJCQlmb3IgKGIgPSAwLCBlID0gMDsgbWFzazsgZSsrLCBtYXNrID4+PSAxKSB7CiAJCQkJ CXVuc2lnbmVkIGludCBpZHg7CkBAIC0xNzQzLDQ0ICsxNzczLDU4IEBAIHByZXBhcmVfd29ya2xv YWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZs YWdzKQogCQkJCQlpZiAoIShtYXNrICYgMSkpCiAJCQkJCQljb250aW51ZTsKIAotCQkJCQlpZHgg PSBmaW5kX2VuZ2luZSgmc2V0X2VuZ2luZXMuZW5naW5lc1sxXSwKKwkJCQkJaWR4ID0gZmluZF9l bmdpbmUoJnNldF9lbmdpbmVzLT5lbmdpbmVzWzFdLAogCQkJCQkJCSAgY3R4LT5lbmdpbmVfbWFw X2NvdW50LAogCQkJCQkJCSAgZSk7Ci0JCQkJCXAtPmVuZ2luZXNbYisrXSA9Ci0JCQkJCQlzZXRf ZW5naW5lcy5lbmdpbmVzWzEgKyBpZHhdOworCQkJCQlib25kLT5lbmdpbmVzW2IrK10gPQorCQkJ CQkJc2V0X2VuZ2luZXMtPmVuZ2luZXNbMSArIGlkeF07CiAJCQkJfQorCisJCQkJbGFzdCA9IGJv bmQ7CiAJCQl9CisJCQlsb2FkX2JhbGFuY2UtPmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2Vy X3BvaW50ZXIobGFzdCk7CiAKIAkJCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJnBhcmFtKTsK KworCQkJd2hpbGUgKGxhc3QpIHsKKwkJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9u ZCAqbmV4dCA9CisJCQkJCWZyb21fdXNlcl9wb2ludGVyKGxhc3QtPmJhc2UubmV4dF9leHRlbnNp b24pOworCQkJCWZyZWUobGFzdCk7CisJCQkJbGFzdCA9IG5leHQ7CisJCQl9CisJCQlmcmVlKGxv YWRfYmFsYW5jZSk7CisJCQlmcmVlKHNldF9lbmdpbmVzKTsKIAkJfSBlbHNlIGlmIChjdHgtPndh bnRzX2JhbGFuY2UpIHsKIAkJCWNvbnN0IHVuc2lnbmVkIGludCBjb3VudCA9IG51bV9lbmdpbmVz X2luX2NsYXNzKFZDUyk7Ci0JCQlJOTE1X0RFRklORV9DT05URVhUX0VOR0lORVNfTE9BRF9CQUxB TkNFKGxvYWRfYmFsYW5jZSwKLQkJCQkJCQkJIGNvdW50KTsKLQkJCUk5MTVfREVGSU5FX0NPTlRF WFRfUEFSQU1fRU5HSU5FUyhzZXRfZW5naW5lcywKLQkJCQkJCQkgIGNvdW50ICsgMSk7CisJCQlz dHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfbG9hZF9iYWxhbmNlICpsb2FkX2JhbGFuY2UgPQor CQkJCWFsbG9jX2xvYWRfYmFsYW5jZShjb3VudCk7CisJCQlzdHJ1Y3QgaTkxNV9jb250ZXh0X3Bh cmFtX2VuZ2luZXMgKnNldF9lbmdpbmVzID0KKwkJCQlhbGxvY19wYXJhbV9lbmdpbmVzKGNvdW50 ICsgMSk7CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CiAJ CQkJLmN0eF9pZCA9IGN0eF9pZCwKIAkJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5H SU5FUywKLQkJCQkuc2l6ZSA9IHNpemVvZihzZXRfZW5naW5lcyksCi0JCQkJLnZhbHVlID0gdG9f dXNlcl9wb2ludGVyKCZzZXRfZW5naW5lcyksCisJCQkJLnNpemUgPSBzaXplb2ZfcGFyYW1fZW5n aW5lcyhjb3VudCArIDEpLAorCQkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihzZXRfZW5naW5l cyksCiAJCQl9OwogCi0JCQlzZXRfZW5naW5lcy5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVy KCZsb2FkX2JhbGFuY2UpOworCQkJc2V0X2VuZ2luZXMtPmV4dGVuc2lvbnMgPSB0b191c2VyX3Bv aW50ZXIobG9hZF9iYWxhbmNlKTsKIAotCQkJc2V0X2VuZ2luZXMuZW5naW5lc1swXS5lbmdpbmVf Y2xhc3MgPQorCQkJc2V0X2VuZ2luZXMtPmVuZ2luZXNbMF0uZW5naW5lX2NsYXNzID0KIAkJCQlJ OTE1X0VOR0lORV9DTEFTU19JTlZBTElEOwotCQkJc2V0X2VuZ2luZXMuZW5naW5lc1swXS5lbmdp bmVfaW5zdGFuY2UgPQorCQkJc2V0X2VuZ2luZXMtPmVuZ2luZXNbMF0uZW5naW5lX2luc3RhbmNl ID0KIAkJCQlJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkU7Ci0JCQlmaWxsX2VuZ2luZXNf Y2xhc3MoJnNldF9lbmdpbmVzLmVuZ2luZXNbMV0sIFZDUyk7CisJCQlmaWxsX2VuZ2luZXNfY2xh c3MoJnNldF9lbmdpbmVzLT5lbmdpbmVzWzFdLCBWQ1MpOwogCi0JCQltZW1zZXQoJmxvYWRfYmFs YW5jZSwgMCwgc2l6ZW9mKGxvYWRfYmFsYW5jZSkpOwotCQkJbG9hZF9iYWxhbmNlLmJhc2UubmFt ZSA9CisJCQlsb2FkX2JhbGFuY2UtPmJhc2UubmFtZSA9CiAJCQkJSTkxNV9DT05URVhUX0VOR0lO RVNfRVhUX0xPQURfQkFMQU5DRTsKLQkJCWxvYWRfYmFsYW5jZS5udW1fc2libGluZ3MgPSBjb3Vu dDsKKwkJCWxvYWRfYmFsYW5jZS0+bnVtX3NpYmxpbmdzID0gY291bnQ7CiAKLQkJCWZpbGxfZW5n aW5lc19jbGFzcygmbG9hZF9iYWxhbmNlLmVuZ2luZXNbMF0sIFZDUyk7CisJCQlmaWxsX2VuZ2lu ZXNfY2xhc3MoJmxvYWRfYmFsYW5jZS0+ZW5naW5lc1swXSwgVkNTKTsKIAogCQkJZ2VtX2NvbnRl eHRfc2V0X3BhcmFtKGZkLCAmcGFyYW0pOworCisJCQlmcmVlKHNldF9lbmdpbmVzKTsKKwkJCWZy ZWUobG9hZF9iYWxhbmNlKTsKIAkJfQogCiAJCWlmICh3cmstPnNzZXUpIHsKLS0gCjIuMjAuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2