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 B987B6E07D for ; Thu, 18 Oct 2018 15:28:40 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id n11-v6so34094569wru.13 for ; Thu, 18 Oct 2018 08:28:40 -0700 (PDT) From: Tvrtko Ursulin Date: Thu, 18 Oct 2018 16:28:15 +0100 Message-Id: <20181018152815.31816-18-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 17/17] gem_wsim: Infinite batch 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: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkZvciBzaW11 bGF0aW5nIGZyYW1lIHNwbGl0IHdvcmtsb2FkcyBpdCBpcyB1c2VmdWwgdG8gZXhwcmVzcyBhIGJh dGNoIHdoaWNoCmVuZHMgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgcGFyYWxsZWwgc3VibWlzc2lv biBvbiB0aGUgcmVzcGVjdGl2ZSBib25kZWQKZW5naW5lLiBGb3IgdGhpcyB3ZSBhZGQgc3VwcG9y dCBmb3IgaW5maW5pdGUgYmF0Y2ggZHVyYXRpb25zIGFuZCB0aGUgYmF0Y2gKdGVybWluYXRlIGNv bW1hbmQgKCdUJykuIFN5bnRheCBsb29rcyBsaWtlIHRoaXM6CgogIDEuUkNTLiouMC4wCiAgVC4t MQoKRmlyc3Qgc3RlcCBzdGFydHMgYW4gaW5maW5pdGUgYmF0Y2gsIGFuZCBzZWNvbmQgY29tbWFu ZCB0ZXJtaW5hdGVzIHRoZQppbmZpbml0ZSBiYXRjaCB3aXRoIHRoZSB1c3VhbCByZWxhdGl2ZSB3 b3JrbG9hZCBzdGVwIGFkZHJlc3NpbmcuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyAgICAg ICAgICAgICAgICAgIHwgMTE5ICsrKysrKysrKysrKysrKysrKystLS0tLS0KIGJlbmNobWFya3Mv d3NpbS9SRUFETUUgICAgICAgICAgICAgICAgIHwgICA5ICstCiBiZW5jaG1hcmtzL3dzaW0vZnJh bWUtc3BsaXQtNjBmcHMud3NpbSB8ICAgNiArLQogMyBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0 aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3Np bS5jIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCmluZGV4IGI1YWRlN2IzMzg4My4uMzY2OWMxZjdm MWM5IDEwMDY0NAotLS0gYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9n ZW1fd3NpbS5jCkBAIC04NSw2ICs4NSw3IEBAIGVudW0gd190eXBlCiAJRU5HSU5FX01BUCwKIAlM T0FEX0JBTEFOQ0UsCiAJQk9ORCwKKwlURVJNSU5BVEUsCiB9OwogCiBzdHJ1Y3QgZGVwcwpAQCAt MTEyLDYgKzExMyw3IEBAIHN0cnVjdCB3X3N0ZXAKIAl1bnNpZ25lZCBpbnQgY29udGV4dDsKIAl1 bnNpZ25lZCBpbnQgZW5naW5lOwogCXN0cnVjdCBkdXJhdGlvbiBkdXJhdGlvbjsKKwlib29sIHVu Ym91bmRfZHVyYXRpb247CiAJc3RydWN0IGRlcHMgZGF0YV9kZXBzOwogCXN0cnVjdCBkZXBzIGZl bmNlX2RlcHM7CiAJaW50IGVtaXRfZmVuY2U7CkBAIC0xNDIsNyArMTQ0LDcgQEAgc3RydWN0IHdf c3RlcAogCiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYjsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2Nh dGlvbl9lbnRyeSByZWxvY1s0XTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50 cnkgcmVsb2NbNV07CiAJdW5zaWduZWQgbG9uZyBiYl9zejsKIAl1aW50MzJfdCBiYl9oYW5kbGU7 CiAJdWludDMyX3QgKm1hcHBlZF9iYXRjaDsKQEAgLTE1Myw2ICsxNTUsNyBAQCBzdHJ1Y3Qgd19z dGVwCiAJdWludDMyX3QgKnJ0MV9hZGRyZXNzOwogCXVpbnQzMl90ICpsYXRjaF92YWx1ZTsKIAl1 aW50MzJfdCAqbGF0Y2hfYWRkcmVzczsKKwl1aW50MzJfdCAqcmVjdXJzaXZlX2JiX3N0YXJ0Owog CXVuc2lnbmVkIGludCBtYXBwZWRfbGVuOwogfTsKIApAQCAtNDkyLDYgKzQ5NSwxMCBAQCBwYXJz ZV93b3JrbG9hZChzdHJ1Y3Qgd19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qg d29ya2xvYWQgKmFwcF93KQogCiAJCQkJc3RlcC50eXBlID0gRU5HSU5FX01BUDsKIAkJCQlnb3Rv IGFkZF9zdGVwOworCQkJfSBlbHNlIGlmICghc3RyY21wKGZpZWxkLCAiVCIpKSB7CisJCQkJaW50 X2ZpZWxkKFRFUk1JTkFURSwgdGFyZ2V0LAorCQkJCQkgIHRtcCA+PSAwIHx8ICgoaW50KW5yX3N0 ZXBzICsgdG1wKSA8IDAsCisJCQkJCSAgIkludmFsaWQgdGVybWluYXRlIHRhcmdldCBhdCBzdGVw ICV1IVxuIik7CiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoZmllbGQsICJYIikpIHsKIAkJCQl1bnNp Z25lZCBpbnQgbnIgPSAwOwogCQkJCXdoaWxlICgoZmllbGQgPSBzdHJ0b2tfcihmc3RhcnQsICIu IiwgJmZjdHgpKSkgewpAQCAtNTk4LDIzICs2MDUsMjggQEAgcGFyc2Vfd29ya2xvYWQoc3RydWN0 IHdfYXJnICphcmcsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2FkICphcHBfdykK IAogCQkJZnN0YXJ0ID0gTlVMTDsKIAotCQkJdG1wbCA9IHN0cnRvbChmaWVsZCwgJnNlcCwgMTAp OwotCQkJY2hlY2tfYXJnKHRtcGwgPD0gMCB8fCB0bXBsID09IExPTkdfTUlOIHx8Ci0JCQkJICB0 bXBsID09IExPTkdfTUFYLAotCQkJCSAgIkludmFsaWQgZHVyYXRpb24gYXQgc3RlcCAldSFcbiIs IG5yX3N0ZXBzKTsKLQkJCXN0ZXAuZHVyYXRpb24ubWluID0gdG1wbDsKLQotCQkJaWYgKHNlcCAm JiAqc2VwID09ICctJykgewotCQkJCXRtcGwgPSBzdHJ0b2woc2VwICsgMSwgTlVMTCwgMTApOwot CQkJCWNoZWNrX2FyZyh0bXBsIDw9IDAgfHwKLQkJCQkJICB0bXBsIDw9IHN0ZXAuZHVyYXRpb24u bWluIHx8Ci0JCQkJCSAgdG1wbCA9PSBMT05HX01JTiB8fAorCQkJaWYgKGZpZWxkWzBdID09ICcq JykgeworCQkJCXN0ZXAudW5ib3VuZF9kdXJhdGlvbiA9IHRydWU7CisJCQl9IGVsc2UgeworCQkJ CXRtcGwgPSBzdHJ0b2woZmllbGQsICZzZXAsIDEwKTsKKwkJCQljaGVja19hcmcodG1wbCA8PSAw IHx8IHRtcGwgPT0gTE9OR19NSU4gfHwKIAkJCQkJICB0bXBsID09IExPTkdfTUFYLAotCQkJCQkg ICJJbnZhbGlkIGR1cmF0aW9uIHJhbmdlIGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkgICJJbnZhbGlk IGR1cmF0aW9uIGF0IHN0ZXAgJXUhXG4iLAogCQkJCQkgIG5yX3N0ZXBzKTsKLQkJCQlzdGVwLmR1 cmF0aW9uLm1heCA9IHRtcGw7Ci0JCQl9IGVsc2UgewotCQkJCXN0ZXAuZHVyYXRpb24ubWF4ID0g c3RlcC5kdXJhdGlvbi5taW47CisJCQkJc3RlcC5kdXJhdGlvbi5taW4gPSB0bXBsOworCisJCQkJ aWYgKHNlcCAmJiAqc2VwID09ICctJykgeworCQkJCQl0bXBsID0gc3RydG9sKHNlcCArIDEsIE5V TEwsIDEwKTsKKwkJCQkJY2hlY2tfYXJnKHRtcGwgPD0gMCB8fAorCQkJCQkJdG1wbCA8PSBzdGVw LmR1cmF0aW9uLm1pbiB8fAorCQkJCQkJdG1wbCA9PSBMT05HX01JTiB8fAorCQkJCQkJdG1wbCA9 PSBMT05HX01BWCwKKwkJCQkJCSJJbnZhbGlkIGR1cmF0aW9uIHJhbmdlIGF0IHN0ZXAgJXUhXG4i LAorCQkJCQkJbnJfc3RlcHMpOworCQkJCQlzdGVwLmR1cmF0aW9uLm1heCA9IHRtcGw7CisJCQkJ fSBlbHNlIHsKKwkJCQkJc3RlcC5kdXJhdGlvbi5tYXggPSBzdGVwLmR1cmF0aW9uLm1pbjsKKwkJ CQl9CiAJCQl9CiAKIAkJCXZhbGlkKys7CkBAIC03NzMsNyArNzg1LDcgQEAgaW5pdF9iYihzdHJ1 Y3Qgd19zdGVwICp3LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJdW5zaWduZWQgaW50IGk7CiAJdWlu dDMyX3QgKnB0cjsKIAotCWlmICghYXJiX3BlcmlvZCkKKwlpZiAody0+dW5ib3VuZF9kdXJhdGlv biB8fCAhYXJiX3BlcmlvZCkKIAkJcmV0dXJuOwogCiAJZ2VtX3NldF9kb21haW4oZmQsIHctPmJi X2hhbmRsZSwKQEAgLTc5Myw2ICs4MDUsNyBAQCB0ZXJtaW5hdGVfYmIoc3RydWN0IHdfc3RlcCAq dywgdW5zaWduZWQgaW50IGZsYWdzKQogCWNvbnN0IHVpbnQzMl90IGJiZSA9IDB4YSA8PCAyMzsK IAl1bnNpZ25lZCBsb25nIG1tYXBfc3RhcnQsIG1tYXBfbGVuOwogCXVuc2lnbmVkIGxvbmcgYmF0 Y2hfc3RhcnQgPSB3LT5iYl9zejsKKwl1bnNpZ25lZCBpbnQgciA9IDA7CiAJdWludDMyX3QgKnB0 ciwgKmNzOwogCiAJaWd0X2Fzc2VydCgoKGZsYWdzICYgUlQpICYmIChmbGFncyAmIFNFUU5PKSkg fHwgIShmbGFncyAmIFJUKSk7CkBAIC04MDMsNiArODE2LDkgQEAgdGVybWluYXRlX2JiKHN0cnVj dCB3X3N0ZXAgKncsIHVuc2lnbmVkIGludCBmbGFncykKIAlpZiAoZmxhZ3MgJiBSVCkKIAkJYmF0 Y2hfc3RhcnQgLT0gMTIgKiBzaXplb2YodWludDMyX3QpOwogCisJaWYgKHctPnVuYm91bmRfZHVy YXRpb24pCisJCWJhdGNoX3N0YXJ0IC09IDQgKiBzaXplb2YodWludDMyX3QpOyAvKiBNSV9BUkJf Q0hLICsgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUICovCisKIAltbWFwX3N0YXJ0ID0gcm91bmRkb3du KGJhdGNoX3N0YXJ0LCBQQUdFX1NJWkUpOwogCW1tYXBfbGVuID0gdy0+YmJfc3ogLSBtbWFwX3N0 YXJ0OwogCkBAIC04MTIsOCArODI4LDE5IEBAIHRlcm1pbmF0ZV9iYihzdHJ1Y3Qgd19zdGVwICp3 LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJcHRyID0gZ2VtX21tYXBfX3djKGZkLCB3LT5iYl9oYW5k bGUsIG1tYXBfc3RhcnQsIG1tYXBfbGVuLCBQUk9UX1dSSVRFKTsKIAljcyA9ICh1aW50MzJfdCAq KSgoY2hhciAqKXB0ciArIGJhdGNoX3N0YXJ0IC0gbW1hcF9zdGFydCk7CiAKKwlpZiAody0+dW5i b3VuZF9kdXJhdGlvbikgeworCQl3LT5yZWxvY1tyKytdLm9mZnNldCA9IGJhdGNoX3N0YXJ0ICsg MiAqIHNpemVvZih1aW50MzJfdCk7CisJCWJhdGNoX3N0YXJ0ICs9IDQgKiBzaXplb2YodWludDMy X3QpOworCisJCSpjcysrID0gdy0+cHJlZW1wdF91cyA/IDB4NSA8PCAyMyAvKiBNSV9BUkJfQ0hL OyAqLyA6IE1JX05PT1A7CisJCXctPnJlY3Vyc2l2ZV9iYl9zdGFydCA9IGNzOworCQkqY3MrKyA9 IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgOCB8IDE7CisJCSpjcysrID0gMDsKKwkJKmNz KysgPSAwOworCX0KKwogCWlmIChmbGFncyAmIFNFUU5PKSB7Ci0JCXctPnJlbG9jWzBdLm9mZnNl dCA9IGJhdGNoX3N0YXJ0ICsgc2l6ZW9mKHVpbnQzMl90KTsKKwkJdy0+cmVsb2NbcisrXS5vZmZz ZXQgPSBiYXRjaF9zdGFydCArIHNpemVvZih1aW50MzJfdCk7CiAJCWJhdGNoX3N0YXJ0ICs9IDQg KiBzaXplb2YodWludDMyX3QpOwogCiAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NOwpAQCAt ODI1LDcgKzg1Miw3IEBAIHRlcm1pbmF0ZV9iYihzdHJ1Y3Qgd19zdGVwICp3LCB1bnNpZ25lZCBp bnQgZmxhZ3MpCiAJfQogCiAJaWYgKGZsYWdzICYgUlQpIHsKLQkJdy0+cmVsb2NbMV0ub2Zmc2V0 ID0gYmF0Y2hfc3RhcnQgKyBzaXplb2YodWludDMyX3QpOworCQl3LT5yZWxvY1tyKytdLm9mZnNl dCA9IGJhdGNoX3N0YXJ0ICsgc2l6ZW9mKHVpbnQzMl90KTsKIAkJYmF0Y2hfc3RhcnQgKz0gNCAq IHNpemVvZih1aW50MzJfdCk7CiAKIAkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU07CkBAIC04 MzUsNyArODYyLDcgQEAgdGVybWluYXRlX2JiKHN0cnVjdCB3X3N0ZXAgKncsIHVuc2lnbmVkIGlu dCBmbGFncykKIAkJdy0+cnQwX3ZhbHVlID0gY3M7CiAJCSpjcysrID0gMDsKIAotCQl3LT5yZWxv Y1syXS5vZmZzZXQgPSBiYXRjaF9zdGFydCArIDIgKiBzaXplb2YodWludDMyX3QpOworCQl3LT5y ZWxvY1tyKytdLm9mZnNldCA9IGJhdGNoX3N0YXJ0ICsgMiAqIHNpemVvZih1aW50MzJfdCk7CiAJ CWJhdGNoX3N0YXJ0ICs9IDQgKiBzaXplb2YodWludDMyX3QpOwogCiAJCSpjcysrID0gMHgyNCA8 PCAyMyB8IDI7IC8qIE1JX1NUT1JFX1JFR19NRU0gKi8KQEAgLTg0NCw3ICs4NzEsNyBAQCB0ZXJt aW5hdGVfYmIoc3RydWN0IHdfc3RlcCAqdywgdW5zaWduZWQgaW50IGZsYWdzKQogCQkqY3MrKyA9 IDA7CiAJCSpjcysrID0gMDsKIAotCQl3LT5yZWxvY1szXS5vZmZzZXQgPSBiYXRjaF9zdGFydCAr IHNpemVvZih1aW50MzJfdCk7CisJCXctPnJlbG9jW3IrK10ub2Zmc2V0ID0gYmF0Y2hfc3RhcnQg KyBzaXplb2YodWludDMyX3QpOwogCQliYXRjaF9zdGFydCArPSA0ICogc2l6ZW9mKHVpbnQzMl90 KTsKIAogCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTTsKQEAgLTk3OSwxOSArMTAwNiwyOCBA QCBhbGxvY19zdGVwX2JhdGNoKHN0cnVjdCB3b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3 LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCX0KIAl9CiAKLQl3LT5iYl9zeiA9IGdldF9iYl9zeih3 LT5kdXJhdGlvbi5tYXgpOwotCXctPmJiX2hhbmRsZSA9IHctPm9ialtqXS5oYW5kbGUgPSBnZW1f Y3JlYXRlKGZkLCB3LT5iYl9zeik7CisJaWYgKHctPnVuYm91bmRfZHVyYXRpb24pCisJCS8qIG5v cHMgKyBNSV9BUkJfQ0hLICsgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUICovCisJCXctPmJiX3N6ID0g bWF4KDY0LCBnZXRfYmJfc3oody0+cHJlZW1wdF91cykpICsKKwkJCSAgICgxICsgMykgKiBzaXpl b2YodWludDMyX3QpOworCWVsc2UKKwkJdy0+YmJfc3ogPSBnZXRfYmJfc3oody0+ZHVyYXRpb24u bWF4KTsKKwl3LT5iYl9oYW5kbGUgPSB3LT5vYmpbal0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwg dy0+YmJfc3ogKyAody0+dW5ib3VuZF9kdXJhdGlvbiA/IDQwOTYgOiAwKSk7CiAJaW5pdF9iYih3 LCBmbGFncyk7CiAJdGVybWluYXRlX2JiKHcsIGZsYWdzKTsKIAotCWlmIChmbGFncyAmIFNFUU5P KSB7CisJaWYgKChmbGFncyAmIFNFUU5PKSB8fCB3LT51bmJvdW5kX2R1cmF0aW9uKSB7CiAJCXct Pm9ialtqXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZ3LT5yZWxvYyk7CisJCWlmIChm bGFncyAmIFNFUU5PKQorCQkJdy0+b2JqW2pdLnJlbG9jYXRpb25fY291bnQrKzsKIAkJaWYgKGZs YWdzICYgUlQpCi0JCQl3LT5vYmpbal0ucmVsb2NhdGlvbl9jb3VudCA9IDQ7Ci0JCWVsc2UKLQkJ CXctPm9ialtqXS5yZWxvY2F0aW9uX2NvdW50ID0gMTsKKwkJCXctPm9ialtqXS5yZWxvY2F0aW9u X2NvdW50ICs9IDM7CisJCWlmICh3LT51bmJvdW5kX2R1cmF0aW9uKQorCQkJdy0+b2JqW2pdLnJl bG9jYXRpb25fY291bnQrKzsKIAkJZm9yIChpID0gMDsgaSA8IHctPm9ialtqXS5yZWxvY2F0aW9u X2NvdW50OyBpKyspCiAJCQl3LT5yZWxvY1tpXS50YXJnZXRfaGFuZGxlID0gMTsKKwkJaWYgKHct PnVuYm91bmRfZHVyYXRpb24pCisJCQl3LT5yZWxvY1swXS50YXJnZXRfaGFuZGxlID0gajsKIAl9 CiAKIAl3LT5lYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcih3LT5vYmopOwpAQCAtMTk4 OCw2ICsyMDI0LDE4IEBAIHVwZGF0ZV9iYl9ydChzdHJ1Y3Qgd19zdGVwICp3LCBlbnVtIGludGVs X2VuZ2luZV9pZCBlbmdpbmUsIHVpbnQzMl90IHNlcW5vKQogCX0KIH0KIAorc3RhdGljIHZvaWQK K3VwZGF0ZV9iYl9zdGFydChzdHJ1Y3Qgd19zdGVwICp3KQoreworCWlmICghdy0+dW5ib3VuZF9k dXJhdGlvbikKKwkJcmV0dXJuOworCisJZ2VtX3NldF9kb21haW4oZmQsIHctPmJiX2hhbmRsZSwK KwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9XQywgSTkxNV9HRU1fRE9NQUlOX1dDKTsKKworCSp3 LT5yZWN1cnNpdmVfYmJfc3RhcnQgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAoMSA8PCA4KSB8 IDE7Cit9CisKIHN0YXRpYyB2b2lkIHdfc3luY190byhzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3Ry dWN0IHdfc3RlcCAqdywgaW50IHRhcmdldCkKIHsKIAlpZiAodGFyZ2V0IDwgMCkKQEAgLTIxMjMs OSArMjE3MSwxMyBAQCBkb19lYihzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAq dywgZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lLAogCWlmIChmbGFncyAmIFJUKQogCQl1cGRh dGVfYmJfcnQodywgZW5naW5lLCBzZXFubyk7CiAKKwl1cGRhdGVfYmJfc3RhcnQodyk7CisKIAl3 LT5lYi5iYXRjaF9zdGFydF9vZmZzZXQgPQorCQl3LT51bmJvdW5kX2R1cmF0aW9uID8KKwkJMCA6 CiAJCUFMSUdOKHctPmJiX3N6IC0gZ2V0X2JiX3N6KGdldF9kdXJhdGlvbih3KSksCi0JCQkyICog c2l6ZW9mKHVpbnQzMl90KSk7CisJCSAgICAgIDIgKiBzaXplb2YodWludDMyX3QpKTsKIAogCWZv ciAoaSA9IDA7IGkgPCB3LT5mZW5jZV9kZXBzLm5yOyBpKyspIHsKIAkJaW50IHRndCA9IHctPmlk eCArIHctPmZlbmNlX2RlcHMubGlzdFtpXTsKQEAgLTIyNjUsNiArMjMxNywxNyBAQCBzdGF0aWMg dm9pZCAqcnVuX3dvcmtsb2FkKHZvaWQgKmRhdGEpCiAJCQkJCQkJCSAgICB3LT5wcmlvcml0eTsK IAkJCQl9CiAJCQkJY29udGludWU7CisJCQl9IGVsc2UgaWYgKHctPnR5cGUgPT0gVEVSTUlOQVRF KSB7CisJCQkJdW5zaWduZWQgaW50IHRfaWR4ID0gaSArIHctPnRhcmdldDsKKworCQkJCWlndF9h c3NlcnQodF9pZHggPj0gMCAmJiB0X2lkeCA8IGkpOworCQkJCWlndF9hc3NlcnQod3JrLT5zdGVw c1t0X2lkeF0udHlwZSA9PSBCQVRDSCk7CisJCQkJaWd0X2Fzc2VydCh3cmstPnN0ZXBzW3RfaWR4 XS51bmJvdW5kX2R1cmF0aW9uKTsKKworCQkJCSp3cmstPnN0ZXBzW3RfaWR4XS5yZWN1cnNpdmVf YmJfc3RhcnQgPQorCQkJCQlNSV9CQVRDSF9CVUZGRVJfRU5EOworCQkJCV9fc3luY19zeW5jaHJv bml6ZSgpOworCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIGlmICh3LT50eXBlID09IFBSRUVNUFRJ T04gfHwKIAkJCQkgICB3LT50eXBlID09IEVOR0lORV9NQVAgfHwKIAkJCQkgICB3LT50eXBlID09 IExPQURfQkFMQU5DRSB8fApkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy93c2ltL1JFQURNRSBiL2Jl bmNobWFya3Mvd3NpbS9SRUFETUUKaW5kZXggZjI5NzQ5OTJhYjY4Li40MzllYTM2NTBlM2QgMTAw NjQ0Ci0tLSBhL2JlbmNobWFya3Mvd3NpbS9SRUFETUUKKysrIGIvYmVuY2htYXJrcy93c2ltL1JF QURNRQpAQCAtMiwxMSArMiwxMSBAQCBXb3JrbG9hZCBkZXNjcmlwdG9yIGZvcm1hdAogPT09PT09 PT09PT09PT09PT09PT09PT09PT0KIAogY3R4LmVuZ2luZS5kdXJhdGlvbl91cy5kZXBlbmRlbmN5 LndhaXQsLi4uCi08dWludD4uPHN0cj4uPHVpbnQ+Wy08dWludD5dLjxpbnQgPD0gMD5bLzxpbnQg PD0gMD5dWy4uLl0uPDB8MT4sLi4uCis8dWludD4uPHN0cj4uPHVpbnQ+Wy08dWludD5dfCouPGlu dCA8PSAwPlsvPGludCA8PSAwPl1bLi4uXS48MHwxPiwuLi4KIEIuPHVpbnQ+CiBNLjx1aW50Pi48 c3RyPlt8PHN0cj5dLi4uCiBQfFguPHVpbnQ+LjxpbnQ+Ci1kfHB8c3x0fHF8YS48aW50PiwuLi4K K2R8cHxzfHR8cXxhfFQuPGludD4sLi4uCiBiLjx1aW50Pi48dWludD4uPHN0cj4KIGYKIApAQCAt MzAsNiArMzAsNyBAQCBBZGRpdGlvbmFsIHdvcmtsb2FkIHN0ZXBzIGFyZSBhbHNvIHN1cHBvcnRl ZDoKICAnYicgLSBTZXQgdXAgZW5naW5lIGJvbmRzLgogICdNJyAtIFNldCB1cCBlbmdpbmUgbWFw LgogICdQJyAtIENvbnRleHQgcHJpb3JpdHkuCisgJ1QnIC0gVGVybWluYXRlIGFuIGluZmluaXRl IGJhdGNoLgogICdYJyAtIENvbnRleHQgcHJlZW1wdGlvbiBjb250cm9sLgogCiBFbmdpbmUgaWRz OiBERUZBVUxULCBSQ1MsIEJDUywgVkNTLCBWQ1MxLCBWQ1MyLCBWRUNTCkBAIC03Nyw2ICs3OCwx MCBAQCBFeGFtcGxlOgogCiBJIHRoaXMgY2FzZSB0aGUgbGFzdCBzdGVwIGhhcyBhIGRhdGEgZGVw ZW5kZW5jeSBvbiBib3RoIGZpcnN0IGFuZCBzZWNvbmQgc3RlcHMuCiAKK0JhdGNoIGR1cmF0aW9u cyBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgYXMgaW5maW5pdGUgYnkgdXNpbmcgdGhlICcqJyBpbiB0 aGUKK2R1cmF0aW9uIGZpZWxkLiBTdWNoIGJhdGNoZXMgbXVzdCBiZSBlbmRlZCBieSB0aGUgdGVy bWluYXRlIGNvbW1hbmQgKCdUJykKK290aGVyd2lzZSB0aGV5IHdpbGwgY2F1c2UgYSBHUFUgaGFu ZyB0byBiZSByZXBvcnRlZC4KKwogU3luYyAoZmQpIGZlbmNlcwogLS0tLS0tLS0tLS0tLS0tLQog CmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL3dzaW0vZnJhbWUtc3BsaXQtNjBmcHMud3NpbSBiL2Jl bmNobWFya3Mvd3NpbS9mcmFtZS1zcGxpdC02MGZwcy53c2ltCmluZGV4IGNmYmZjZDM5YmU3ZC4u ZWE4OWRhM2FkZDQ4IDEwMDY0NAotLS0gYS9iZW5jaG1hcmtzL3dzaW0vZnJhbWUtc3BsaXQtNjBm cHMud3NpbQorKysgYi9iZW5jaG1hcmtzL3dzaW0vZnJhbWUtc3BsaXQtNjBmcHMud3NpbQpAQCAt NiwxMCArNiwxMiBAQCBNLjIuVkNTMgogQi4yCiBiLjIuMS5WQ1MxCiBmCi0xLkRFRkFVTFQuNDAw MC02MDAwLmYtMS4wCisxLkRFRkFVTFQuKi5mLTEuMAogMi5ERUZBVUxULjQwMDAtNjAwMC5zLTEu MAogYS4tMwotMy5SQ1MuMjAwMC00MDAwLi0zLy0yLjAKK3MuLTIKK1QuLTQKKzMuUkNTLjIwMDAt NDAwMC4tNS8tNC4wCiAzLlZFQ1MuMjAwMC4tMS4wCiA0LkJDUy4xMDAwLi0xLjAKIHMuLTIKLS0g CjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==