From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Fri, 17 May 2019 12:25:19 +0100 Message-Id: <20190517112526.6738-19-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190517112526.6738-1-tvrtko.ursulin@linux.intel.com> References: <20190517112526.6738-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 18/25] gem_wsim: Infinite batch support 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: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkZvciBzaW11 bGF0aW5nIGZyYW1lIHNwbGl0IHdvcmtsb2FkcyBpdCBpcyB1c2VmdWwgdG8gZXhwcmVzcyBhIGJh dGNoIHdoaWNoCmVuZHMgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgcGFyYWxsZWwgc3VibWlzc2lv biBvbiB0aGUgcmVzcGVjdGl2ZSBib25kZWQKZW5naW5lLiBGb3IgdGhpcyB3ZSBhZGQgc3VwcG9y dCBmb3IgaW5maW5pdGUgYmF0Y2ggZHVyYXRpb25zIGFuZCB0aGUgYmF0Y2gKdGVybWluYXRlIGNv bW1hbmQgKCdUJykuIFN5bnRheCBsb29rcyBsaWtlIHRoaXM6CgogIDEuUkNTLiouMC4wCiAgVC4t MQoKRmlyc3Qgc3RlcCBzdGFydHMgYW4gaW5maW5pdGUgYmF0Y2gsIGFuZCBzZWNvbmQgY29tbWFu ZCB0ZXJtaW5hdGVzIHRoZQppbmZpbml0ZSBiYXRjaCB3aXRoIHRoZSB1c3VhbCByZWxhdGl2ZSB3 b3JrbG9hZCBzdGVwIGFkZHJlc3NpbmcuCgp2MjogKENocmlzKQogKiBSZWxheCB0aGUgcmVjdXJz aXZlIGJhdGNoIHdpdGggNDA5NiBub3BzIGJldHdlZW4gQkJfU1RBUlQuCiAqIENoZWNrIGZvciBh dCBsZWFzdCBnZW44LgogKiBTaW1wbGlmeSByZWxvY2F0aW9uIGVudHJ5IGJ1aWxkaW5nLgoKU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2 aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiAjIHYxCi0t LQogYmVuY2htYXJrcy9nZW1fd3NpbS5jICAgICAgICAgICAgICAgICAgfCAxMjQgKysrKysrKysr KysrKysrKysrLS0tLS0tLQogYmVuY2htYXJrcy93c2ltL1JFQURNRSAgICAgICAgICAgICAgICAg fCAgIDkgKy0KIGJlbmNobWFya3Mvd3NpbS9mcmFtZS1zcGxpdC02MGZwcy53c2ltIHwgICA2ICst CiAzIGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMK aW5kZXggYmQ5MjAxYzI5MjhiLi5hMzY4NzM2NDBiMjQgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3Mv Z2VtX3dzaW0uYworKysgYi9iZW5jaG1hcmtzL2dlbV93c2ltLmMKQEAgLTg2LDYgKzg2LDcgQEAg ZW51bSB3X3R5cGUKIAlFTkdJTkVfTUFQLAogCUxPQURfQkFMQU5DRSwKIAlCT05ELAorCVRFUk1J TkFURSwKIH07CiAKIHN0cnVjdCBkZXBzCkBAIC0xMTMsNiArMTE0LDcgQEAgc3RydWN0IHdfc3Rl cAogCXVuc2lnbmVkIGludCBjb250ZXh0OwogCXVuc2lnbmVkIGludCBlbmdpbmU7CiAJc3RydWN0 IGR1cmF0aW9uIGR1cmF0aW9uOworCWJvb2wgdW5ib3VuZF9kdXJhdGlvbjsKIAlzdHJ1Y3QgZGVw cyBkYXRhX2RlcHM7CiAJc3RydWN0IGRlcHMgZmVuY2VfZGVwczsKIAlpbnQgZW1pdF9mZW5jZTsK QEAgLTE0Myw3ICsxNDUsNyBAQCBzdHJ1Y3Qgd19zdGVwCiAKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNidWZmZXIyIGViOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmo7 Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jWzRdOworCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY1s1XTsKIAl1bnNpZ25lZCBsb25n IGJiX3N6OwogCXVpbnQzMl90IGJiX2hhbmRsZTsKIAl1aW50MzJfdCAqc2Vxbm9fdmFsdWU7CkBA IC0xNTMsNiArMTU1LDcgQEAgc3RydWN0IHdfc3RlcAogCXVpbnQzMl90ICpydDFfYWRkcmVzczsK IAl1aW50MzJfdCAqbGF0Y2hfdmFsdWU7CiAJdWludDMyX3QgKmxhdGNoX2FkZHJlc3M7CisJdWlu dDMyX3QgKnJlY3Vyc2l2ZV9iYl9zdGFydDsKIH07CiAKIERFQ0xBUkVfRVdNQSh1aW50NjRfdCwg cnQsIDQsIDIpCkBAIC01MTcsNiArNTIwLDEwIEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2Fy ZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAKIAkJ CQlzdGVwLnR5cGUgPSBFTkdJTkVfTUFQOwogCQkJCWdvdG8gYWRkX3N0ZXA7CisJCQl9IGVsc2Ug aWYgKCFzdHJjbXAoZmllbGQsICJUIikpIHsKKwkJCQlpbnRfZmllbGQoVEVSTUlOQVRFLCB0YXJn ZXQsCisJCQkJCSAgdG1wID49IDAgfHwgKChpbnQpbnJfc3RlcHMgKyB0bXApIDwgMCwKKwkJCQkJ ICAiSW52YWxpZCB0ZXJtaW5hdGUgdGFyZ2V0IGF0IHN0ZXAgJXUhXG4iKTsKIAkJCX0gZWxzZSBp ZiAoIXN0cmNtcChmaWVsZCwgIlgiKSkgewogCQkJCXVuc2lnbmVkIGludCBuciA9IDA7CiAJCQkJ d2hpbGUgKChmaWVsZCA9IHN0cnRva19yKGZzdGFydCwgIi4iLCAmZmN0eCkpKSB7CkBAIC02MzIs MjMgKzYzOSwzMSBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qgd19hcmcgKmFyZywgdW5zaWduZWQg aW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQogCiAJCQlmc3RhcnQgPSBOVUxMOwog Ci0JCQl0bXBsID0gc3RydG9sKGZpZWxkLCAmc2VwLCAxMCk7Ci0JCQljaGVja19hcmcodG1wbCA8 PSAwIHx8IHRtcGwgPT0gTE9OR19NSU4gfHwKLQkJCQkgIHRtcGwgPT0gTE9OR19NQVgsCi0JCQkJ ICAiSW52YWxpZCBkdXJhdGlvbiBhdCBzdGVwICV1IVxuIiwgbnJfc3RlcHMpOwotCQkJc3RlcC5k dXJhdGlvbi5taW4gPSB0bXBsOwotCi0JCQlpZiAoc2VwICYmICpzZXAgPT0gJy0nKSB7Ci0JCQkJ dG1wbCA9IHN0cnRvbChzZXAgKyAxLCBOVUxMLCAxMCk7Ci0JCQkJY2hlY2tfYXJnKHRtcGwgPD0g MCB8fAotCQkJCQkgIHRtcGwgPD0gc3RlcC5kdXJhdGlvbi5taW4gfHwKLQkJCQkJICB0bXBsID09 IExPTkdfTUlOIHx8Ci0JCQkJCSAgdG1wbCA9PSBMT05HX01BWCwKLQkJCQkJICAiSW52YWxpZCBk dXJhdGlvbiByYW5nZSBhdCBzdGVwICV1IVxuIiwKKwkJCWlmIChmaWVsZFswXSA9PSAnKicpIHsK KwkJCQljaGVja19hcmcoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA8IDgsCisJ CQkJCSAgIkluZmluaXRlIGJhdGNoIGF0IHN0ZXAgJXUgbmVlZHMgR2VuOCshXG4iLAogCQkJCQkg IG5yX3N0ZXBzKTsKLQkJCQlzdGVwLmR1cmF0aW9uLm1heCA9IHRtcGw7CisJCQkJc3RlcC51bmJv dW5kX2R1cmF0aW9uID0gdHJ1ZTsKIAkJCX0gZWxzZSB7Ci0JCQkJc3RlcC5kdXJhdGlvbi5tYXgg PSBzdGVwLmR1cmF0aW9uLm1pbjsKKwkJCQl0bXBsID0gc3RydG9sKGZpZWxkLCAmc2VwLCAxMCk7 CisJCQkJY2hlY2tfYXJnKHRtcGwgPD0gMCB8fCB0bXBsID09IExPTkdfTUlOIHx8CisJCQkJCSAg dG1wbCA9PSBMT05HX01BWCwKKwkJCQkJICAiSW52YWxpZCBkdXJhdGlvbiBhdCBzdGVwICV1IVxu IiwKKwkJCQkJICBucl9zdGVwcyk7CisJCQkJc3RlcC5kdXJhdGlvbi5taW4gPSB0bXBsOworCisJ CQkJaWYgKHNlcCAmJiAqc2VwID09ICctJykgeworCQkJCQl0bXBsID0gc3RydG9sKHNlcCArIDEs IE5VTEwsIDEwKTsKKwkJCQkJY2hlY2tfYXJnKHRtcGwgPD0gMCB8fAorCQkJCQkJdG1wbCA8PSBz dGVwLmR1cmF0aW9uLm1pbiB8fAorCQkJCQkJdG1wbCA9PSBMT05HX01JTiB8fAorCQkJCQkJdG1w bCA9PSBMT05HX01BWCwKKwkJCQkJCSJJbnZhbGlkIGR1cmF0aW9uIHJhbmdlIGF0IHN0ZXAgJXUh XG4iLAorCQkJCQkJbnJfc3RlcHMpOworCQkJCQlzdGVwLmR1cmF0aW9uLm1heCA9IHRtcGw7CisJ CQkJfSBlbHNlIHsKKwkJCQkJc3RlcC5kdXJhdGlvbi5tYXggPSBzdGVwLmR1cmF0aW9uLm1pbjsK KwkJCQl9CiAJCQl9CiAKIAkJCXZhbGlkKys7CkBAIC04MDgsNyArODIzLDcgQEAgaW5pdF9iYihz dHJ1Y3Qgd19zdGVwICp3LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJdW5zaWduZWQgaW50IGk7CiAJ dWludDMyX3QgKnB0cjsKIAotCWlmICghYXJiX3BlcmlvZCkKKwlpZiAody0+dW5ib3VuZF9kdXJh dGlvbiB8fCAhYXJiX3BlcmlvZCkKIAkJcmV0dXJuOwogCiAJZ2VtX3NldF9kb21haW4oZmQsIHct PmJiX2hhbmRsZSwKQEAgLTgyMiwxMiArODM3LDEzIEBAIGluaXRfYmIoc3RydWN0IHdfc3RlcCAq dywgdW5zaWduZWQgaW50IGZsYWdzKQogCW11bm1hcChwdHIsIG1tYXBfbGVuKTsKIH0KIAotc3Rh dGljIHZvaWQKK3N0YXRpYyB1bnNpZ25lZCBpbnQKIHRlcm1pbmF0ZV9iYihzdHJ1Y3Qgd19zdGVw ICp3LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJY29uc3QgdWludDMyX3QgYmJlID0gMHhhIDw8 IDIzOwogCXVuc2lnbmVkIGxvbmcgbW1hcF9zdGFydCwgbW1hcF9sZW47CiAJdW5zaWduZWQgbG9u ZyBiYXRjaF9zdGFydCA9IHctPmJiX3N6OworCXVuc2lnbmVkIGludCByID0gMDsKIAl1aW50MzJf dCAqcHRyLCAqY3M7CiAKIAlpZ3RfYXNzZXJ0KCgoZmxhZ3MgJiBSVCkgJiYgKGZsYWdzICYgU0VR Tk8pKSB8fCAhKGZsYWdzICYgUlQpKTsKQEAgLTgzOCw2ICs4NTQsOSBAQCB0ZXJtaW5hdGVfYmIo c3RydWN0IHdfc3RlcCAqdywgdW5zaWduZWQgaW50IGZsYWdzKQogCWlmIChmbGFncyAmIFJUKQog CQliYXRjaF9zdGFydCAtPSAxMiAqIHNpemVvZih1aW50MzJfdCk7CiAKKwlpZiAody0+dW5ib3Vu ZF9kdXJhdGlvbikKKwkJYmF0Y2hfc3RhcnQgLT0gNCAqIHNpemVvZih1aW50MzJfdCk7IC8qIE1J X0FSQl9DSEsgKyBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgKi8KKwogCW1tYXBfc3RhcnQgPSByb3Vu ZGRvd24oYmF0Y2hfc3RhcnQsIFBBR0VfU0laRSk7CiAJbW1hcF9sZW4gPSBBTElHTih3LT5iYl9z eiAtIG1tYXBfc3RhcnQsIFBBR0VfU0laRSk7CiAKQEAgLTg0Nyw4ICs4NjYsMTkgQEAgdGVybWlu YXRlX2JiKHN0cnVjdCB3X3N0ZXAgKncsIHVuc2lnbmVkIGludCBmbGFncykKIAlwdHIgPSBnZW1f bW1hcF9fd2MoZmQsIHctPmJiX2hhbmRsZSwgbW1hcF9zdGFydCwgbW1hcF9sZW4sIFBST1RfV1JJ VEUpOwogCWNzID0gKHVpbnQzMl90ICopKChjaGFyICopcHRyICsgYmF0Y2hfc3RhcnQgLSBtbWFw X3N0YXJ0KTsKIAorCWlmICh3LT51bmJvdW5kX2R1cmF0aW9uKSB7CisJCXctPnJlbG9jW3IrK10u b2Zmc2V0ID0gYmF0Y2hfc3RhcnQgKyAyICogc2l6ZW9mKHVpbnQzMl90KTsKKwkJYmF0Y2hfc3Rh cnQgKz0gNCAqIHNpemVvZih1aW50MzJfdCk7CisKKwkJKmNzKysgPSB3LT5wcmVlbXB0X3VzID8g MHg1IDw8IDIzIC8qIE1JX0FSQl9DSEs7ICovIDogTUlfTk9PUDsKKwkJdy0+cmVjdXJzaXZlX2Ji X3N0YXJ0ID0gY3M7CisJCSpjcysrID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwg MTsKKwkJKmNzKysgPSAwOworCQkqY3MrKyA9IDA7CisJfQorCiAJaWYgKGZsYWdzICYgU0VRTk8p IHsKLQkJdy0+cmVsb2NbMF0ub2Zmc2V0ID0gYmF0Y2hfc3RhcnQgKyBzaXplb2YodWludDMyX3Qp OworCQl3LT5yZWxvY1tyKytdLm9mZnNldCA9IGJhdGNoX3N0YXJ0ICsgc2l6ZW9mKHVpbnQzMl90 KTsKIAkJYmF0Y2hfc3RhcnQgKz0gNCAqIHNpemVvZih1aW50MzJfdCk7CiAKIAkJKmNzKysgPSBN SV9TVE9SRV9EV09SRF9JTU07CkBAIC04NjAsNyArODkwLDcgQEAgdGVybWluYXRlX2JiKHN0cnVj dCB3X3N0ZXAgKncsIHVuc2lnbmVkIGludCBmbGFncykKIAl9CiAKIAlpZiAoZmxhZ3MgJiBSVCkg ewotCQl3LT5yZWxvY1sxXS5vZmZzZXQgPSBiYXRjaF9zdGFydCArIHNpemVvZih1aW50MzJfdCk7 CisJCXctPnJlbG9jW3IrK10ub2Zmc2V0ID0gYmF0Y2hfc3RhcnQgKyBzaXplb2YodWludDMyX3Qp OwogCQliYXRjaF9zdGFydCArPSA0ICogc2l6ZW9mKHVpbnQzMl90KTsKIAogCQkqY3MrKyA9IE1J X1NUT1JFX0RXT1JEX0lNTTsKQEAgLTg3MCw3ICs5MDAsNyBAQCB0ZXJtaW5hdGVfYmIoc3RydWN0 IHdfc3RlcCAqdywgdW5zaWduZWQgaW50IGZsYWdzKQogCQl3LT5ydDBfdmFsdWUgPSBjczsKIAkJ KmNzKysgPSAwOwogCi0JCXctPnJlbG9jWzJdLm9mZnNldCA9IGJhdGNoX3N0YXJ0ICsgMiAqIHNp emVvZih1aW50MzJfdCk7CisJCXctPnJlbG9jW3IrK10ub2Zmc2V0ID0gYmF0Y2hfc3RhcnQgKyAy ICogc2l6ZW9mKHVpbnQzMl90KTsKIAkJYmF0Y2hfc3RhcnQgKz0gNCAqIHNpemVvZih1aW50MzJf dCk7CiAKIAkJKmNzKysgPSAweDI0IDw8IDIzIHwgMjsgLyogTUlfU1RPUkVfUkVHX01FTSAqLwpA QCAtODc5LDcgKzkwOSw3IEBAIHRlcm1pbmF0ZV9iYihzdHJ1Y3Qgd19zdGVwICp3LCB1bnNpZ25l ZCBpbnQgZmxhZ3MpCiAJCSpjcysrID0gMDsKIAkJKmNzKysgPSAwOwogCi0JCXctPnJlbG9jWzNd Lm9mZnNldCA9IGJhdGNoX3N0YXJ0ICsgc2l6ZW9mKHVpbnQzMl90KTsKKwkJdy0+cmVsb2Nbcisr XS5vZmZzZXQgPSBiYXRjaF9zdGFydCArIHNpemVvZih1aW50MzJfdCk7CiAJCWJhdGNoX3N0YXJ0 ICs9IDQgKiBzaXplb2YodWludDMyX3QpOwogCiAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1N OwpAQCAtODkxLDYgKzkyMSw4IEBAIHRlcm1pbmF0ZV9iYihzdHJ1Y3Qgd19zdGVwICp3LCB1bnNp Z25lZCBpbnQgZmxhZ3MpCiAJfQogCiAJKmNzID0gYmJlOworCisJcmV0dXJuIHI7CiB9CiAKIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZWJfZW5naW5lX21hcFtOVU1fRU5HSU5FU10gPSB7CkBA IC0xMDExLDE5ICsxMDQzLDIyIEBAIGFsbG9jX3N0ZXBfYmF0Y2goc3RydWN0IHdvcmtsb2FkICp3 cmssIHN0cnVjdCB3X3N0ZXAgKncsIHVuc2lnbmVkIGludCBmbGFncykKIAkJfQogCX0KIAotCXct PmJiX3N6ID0gZ2V0X2JiX3N6KHctPmR1cmF0aW9uLm1heCk7Ci0Jdy0+YmJfaGFuZGxlID0gdy0+ b2JqW2pdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIHctPmJiX3N6KTsKKwlpZiAody0+dW5ib3Vu ZF9kdXJhdGlvbikKKwkJLyogbm9wcyArIE1JX0FSQl9DSEsgKyBNSV9CQVRDSF9CVUZGRVJfU1RB UlQgKi8KKwkJdy0+YmJfc3ogPSBtYXgoUEFHRV9TSVpFLCBnZXRfYmJfc3oody0+cHJlZW1wdF91 cykpICsKKwkJCSAgICgxICsgMykgKiBzaXplb2YodWludDMyX3QpOworCWVsc2UKKwkJdy0+YmJf c3ogPSBnZXRfYmJfc3oody0+ZHVyYXRpb24ubWF4KTsKKwl3LT5iYl9oYW5kbGUgPSB3LT5vYmpb al0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgdy0+YmJfc3ogKyAody0+dW5ib3VuZF9kdXJhdGlv biA/IDQwOTYgOiAwKSk7CiAJaW5pdF9iYih3LCBmbGFncyk7Ci0JdGVybWluYXRlX2JiKHcsIGZs YWdzKTsKKwl3LT5vYmpbal0ucmVsb2NhdGlvbl9jb3VudCA9IHRlcm1pbmF0ZV9iYih3LCBmbGFn cyk7CiAKLQlpZiAoZmxhZ3MgJiBTRVFOTykgeworCWlmICh3LT5vYmpbal0ucmVsb2NhdGlvbl9j b3VudCkgewogCQl3LT5vYmpbal0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmdy0+cmVs b2MpOwotCQlpZiAoZmxhZ3MgJiBSVCkKLQkJCXctPm9ialtqXS5yZWxvY2F0aW9uX2NvdW50ID0g NDsKLQkJZWxzZQotCQkJdy0+b2JqW2pdLnJlbG9jYXRpb25fY291bnQgPSAxOwogCQlmb3IgKGkg PSAwOyBpIDwgdy0+b2JqW2pdLnJlbG9jYXRpb25fY291bnQ7IGkrKykKIAkJCXctPnJlbG9jW2ld LnRhcmdldF9oYW5kbGUgPSAxOworCQlpZiAody0+dW5ib3VuZF9kdXJhdGlvbikKKwkJCXctPnJl bG9jWzBdLnRhcmdldF9oYW5kbGUgPSBqOwogCX0KIAogCXctPmViLmJ1ZmZlcnNfcHRyID0gdG9f dXNlcl9wb2ludGVyKHctPm9iaik7CkBAIC0yMTIwLDYgKzIxNTUsMTggQEAgdXBkYXRlX2JiX3J0 KHN0cnVjdCB3X3N0ZXAgKncsIGVudW0gaW50ZWxfZW5naW5lX2lkIGVuZ2luZSwgdWludDMyX3Qg c2Vxbm8pCiAJfQogfQogCitzdGF0aWMgdm9pZAordXBkYXRlX2JiX3N0YXJ0KHN0cnVjdCB3X3N0 ZXAgKncpCit7CisJaWYgKCF3LT51bmJvdW5kX2R1cmF0aW9uKQorCQlyZXR1cm47CisKKwlnZW1f c2V0X2RvbWFpbihmZCwgdy0+YmJfaGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX1dD LCBJOTE1X0dFTV9ET01BSU5fV0MpOworCisJKnctPnJlY3Vyc2l2ZV9iYl9zdGFydCA9IE1JX0JB VENIX0JVRkZFUl9TVEFSVCB8ICgxIDw8IDgpIHwgMTsKK30KKwogc3RhdGljIHZvaWQgd19zeW5j X3RvKHN0cnVjdCB3b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3LCBpbnQgdGFyZ2V0KQog ewogCWlmICh0YXJnZXQgPCAwKQpAQCAtMjI1NSw5ICsyMzAyLDEzIEBAIGRvX2ViKHN0cnVjdCB3 b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3LCBlbnVtIGludGVsX2VuZ2luZV9pZCBlbmdp bmUsCiAJaWYgKGZsYWdzICYgUlQpCiAJCXVwZGF0ZV9iYl9ydCh3LCBlbmdpbmUsIHNlcW5vKTsK IAorCXVwZGF0ZV9iYl9zdGFydCh3KTsKKwogCXctPmViLmJhdGNoX3N0YXJ0X29mZnNldCA9CisJ CXctPnVuYm91bmRfZHVyYXRpb24gPworCQkwIDoKIAkJQUxJR04ody0+YmJfc3ogLSBnZXRfYmJf c3ooZ2V0X2R1cmF0aW9uKHcpKSwKLQkJCTIgKiBzaXplb2YodWludDMyX3QpKTsKKwkJICAgICAg MiAqIHNpemVvZih1aW50MzJfdCkpOwogCiAJZm9yIChpID0gMDsgaSA8IHctPmZlbmNlX2RlcHMu bnI7IGkrKykgewogCQlpbnQgdGd0ID0gdy0+aWR4ICsgdy0+ZmVuY2VfZGVwcy5saXN0W2ldOwpA QCAtMjM5Nyw2ICsyNDQ4LDE3IEBAIHN0YXRpYyB2b2lkICpydW5fd29ya2xvYWQodm9pZCAqZGF0 YSkKIAkJCQkJCQkJICAgIHctPnByaW9yaXR5OwogCQkJCX0KIAkJCQljb250aW51ZTsKKwkJCX0g ZWxzZSBpZiAody0+dHlwZSA9PSBURVJNSU5BVEUpIHsKKwkJCQl1bnNpZ25lZCBpbnQgdF9pZHgg PSBpICsgdy0+dGFyZ2V0OworCisJCQkJaWd0X2Fzc2VydCh0X2lkeCA+PSAwICYmIHRfaWR4IDwg aSk7CisJCQkJaWd0X2Fzc2VydCh3cmstPnN0ZXBzW3RfaWR4XS50eXBlID09IEJBVENIKTsKKwkJ CQlpZ3RfYXNzZXJ0KHdyay0+c3RlcHNbdF9pZHhdLnVuYm91bmRfZHVyYXRpb24pOworCisJCQkJ Kndyay0+c3RlcHNbdF9pZHhdLnJlY3Vyc2l2ZV9iYl9zdGFydCA9CisJCQkJCU1JX0JBVENIX0JV RkZFUl9FTkQ7CisJCQkJX19zeW5jX3N5bmNocm9uaXplKCk7CisJCQkJY29udGludWU7CiAJCQl9 IGVsc2UgaWYgKHctPnR5cGUgPT0gUFJFRU1QVElPTiB8fAogCQkJCSAgIHctPnR5cGUgPT0gRU5H SU5FX01BUCB8fAogCQkJCSAgIHctPnR5cGUgPT0gTE9BRF9CQUxBTkNFIHx8CmRpZmYgLS1naXQg YS9iZW5jaG1hcmtzL3dzaW0vUkVBRE1FIGIvYmVuY2htYXJrcy93c2ltL1JFQURNRQppbmRleCBl NWRjZjkyOTUxOWUuLjU1MmQ4ODgyMDEwYiAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy93c2ltL1JF QURNRQorKysgYi9iZW5jaG1hcmtzL3dzaW0vUkVBRE1FCkBAIC0yLDExICsyLDExIEBAIFdvcmts b2FkIGRlc2NyaXB0b3IgZm9ybWF0CiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjdHgu ZW5naW5lLmR1cmF0aW9uX3VzLmRlcGVuZGVuY3kud2FpdCwuLi4KLTx1aW50Pi48c3RyPi48dWlu dD5bLTx1aW50Pl0uPGludCA8PSAwPlsvPGludCA8PSAwPl1bLi4uXS48MHwxPiwuLi4KKzx1aW50 Pi48c3RyPi48dWludD5bLTx1aW50Pl18Ki48aW50IDw9IDA+Wy88aW50IDw9IDA+XVsuLi5dLjww fDE+LC4uLgogQi48dWludD4KIE0uPHVpbnQ+LjxzdHI+W3w8c3RyPl0uLi4KIFB8WC48dWludD4u PGludD4KLWR8cHxzfHR8cXxhLjxpbnQ+LC4uLgorZHxwfHN8dHxxfGF8VC48aW50PiwuLi4KIGIu PHVpbnQ+LjxzdHI+W3w8c3RyPl0uPHN0cj4KIGYKIApAQCAtMzAsNiArMzAsNyBAQCBBZGRpdGlv bmFsIHdvcmtsb2FkIHN0ZXBzIGFyZSBhbHNvIHN1cHBvcnRlZDoKICAnYicgLSBTZXQgdXAgZW5n aW5lIGJvbmRzLgogICdNJyAtIFNldCB1cCBlbmdpbmUgbWFwLgogICdQJyAtIENvbnRleHQgcHJp b3JpdHkuCisgJ1QnIC0gVGVybWluYXRlIGFuIGluZmluaXRlIGJhdGNoLgogICdYJyAtIENvbnRl eHQgcHJlZW1wdGlvbiBjb250cm9sLgogCiBFbmdpbmUgaWRzOiBERUZBVUxULCBSQ1MsIEJDUywg VkNTLCBWQ1MxLCBWQ1MyLCBWRUNTCkBAIC03Nyw2ICs3OCwxMCBAQCBFeGFtcGxlOgogCiBJIHRo aXMgY2FzZSB0aGUgbGFzdCBzdGVwIGhhcyBhIGRhdGEgZGVwZW5kZW5jeSBvbiBib3RoIGZpcnN0 IGFuZCBzZWNvbmQgc3RlcHMuCiAKK0JhdGNoIGR1cmF0aW9ucyBjYW4gYWxzbyBiZSBzcGVjaWZp ZWQgYXMgaW5maW5pdGUgYnkgdXNpbmcgdGhlICcqJyBpbiB0aGUKK2R1cmF0aW9uIGZpZWxkLiBT dWNoIGJhdGNoZXMgbXVzdCBiZSBlbmRlZCBieSB0aGUgdGVybWluYXRlIGNvbW1hbmQgKCdUJykK K290aGVyd2lzZSB0aGV5IHdpbGwgY2F1c2UgYSBHUFUgaGFuZyB0byBiZSByZXBvcnRlZC4KKwog U3luYyAoZmQpIGZlbmNlcwogLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9iZW5jaG1h cmtzL3dzaW0vZnJhbWUtc3BsaXQtNjBmcHMud3NpbSBiL2JlbmNobWFya3Mvd3NpbS9mcmFtZS1z cGxpdC02MGZwcy53c2ltCmluZGV4IDIwZmRjZjhjOGI0YS4uMTc0OTBkZGZhZGRkIDEwMDY0NAot LS0gYS9iZW5jaG1hcmtzL3dzaW0vZnJhbWUtc3BsaXQtNjBmcHMud3NpbQorKysgYi9iZW5jaG1h cmtzL3dzaW0vZnJhbWUtc3BsaXQtNjBmcHMud3NpbQpAQCAtNiwxMCArNiwxMiBAQCBNLjIuVkNT MgogQi4yCiBiLjIuVkNTMi5WQ1MxCiBmCi0xLkRFRkFVTFQuNDAwMC02MDAwLmYtMS4wCisxLkRF RkFVTFQuKi5mLTEuMAogMi5ERUZBVUxULjQwMDAtNjAwMC5zLTEuMAogYS4tMwotMy5SQ1MuMjAw MC00MDAwLi0zLy0yLjAKK3MuLTIKK1QuLTQKKzMuUkNTLjIwMDAtNDAwMC4tNS8tNC4wCiAzLlZF Q1MuMjAwMC4tMS4wCiA0LkJDUy4xMDAwLi0xLjAKIHMuLTIKLS0gCjIuMjAuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxp c3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2