From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t 22/25] i915: Add gem_ctx_engines Date: Thu, 14 Mar 2019 14:19:36 +0000 Message-ID: <20190314141939.26246-22-chris@chris-wilson.co.uk> References: <20190314141939.26246-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190314141939.26246-1-chris@chris-wilson.co.uk> 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 VG8gZXhlcmNpc2UgdGhlIG5ldyBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyBhbmQgaW50ZXJh Y3Rpb25zIHdpdGgKZ2VtX2V4ZWNidWYoKS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFuZGkgU2h5dGkgPGFuZGlAZXRlemlhbi5vcmc+Ci0t LQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMSArCiB0ZXN0cy9pOTE1L2dlbV9j dHhfZW5naW5lcy5jIHwgNDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0 ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDQz IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9jdHhfZW5n aW5lcy5jCgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2Vm aWxlLnNvdXJjZXMKaW5kZXggN2UwNmM5NjlmLi4yZjU2MTJiMDcgMTAwNjQ0Ci0tLSBhL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMjIsNiAr MjIsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlkcm1fbW0gXAogCWRybV9yZWFkIFwKIAlpOTE1L2dl bV9jdHhfY2xvbmUgXAorCWk5MTUvZ2VtX2N0eF9lbmdpbmVzIFwKIAlpOTE1L2dlbV9jdHhfc2hh cmVkIFwKIAlpOTE1L2dlbV92bV9jcmVhdGUgXAogCWttc18zZCBcCmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2dlbV9jdHhfZW5naW5lcy5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4X2VuZ2luZXMuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjU4OGVjZjE5NgotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9lbmdpbmVzLmMKQEAgLTAsMCArMSw0NDEgQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImln dC5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk ZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNp bmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8u aD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1 ZGUgPHN5cy90aW1lLmg+CisKKyNpbmNsdWRlIDxkcm0uaD4KKworI2luY2x1ZGUgImk5MTUvZ2Vt X2NvbnRleHQuaCIKKworI2RlZmluZSBlbmdpbmVfY2xhc3MoZSwgbikgKChlKS0+Y2xhc3NfaW5z dGFuY2VbKG4pXS5lbmdpbmVfY2xhc3MpCisjZGVmaW5lIGVuZ2luZV9pbnN0YW5jZShlLCBuKSAo KGUpLT5jbGFzc19pbnN0YW5jZVsobildLmVuZ2luZV9pbnN0YW5jZSkKKworc3RhdGljIGJvb2wg aGFzX2NvbnRleHRfZW5naW5lcyhpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5jdHhfaWQgPSAwLAorCQkucGFyYW0gPSBJOTE1X0NP TlRFWFRfUEFSQU1fRU5HSU5FUywKKwl9OworCXJldHVybiBfX2dlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcGFyYW0pID09IDA7Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRfZW5naW5lcyhp bnQgaTkxNSkKK3sKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgc3RhY2sgPSB7 fSwgKmVuZ2luZXM7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0g eworCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpLAorCQkucGFyYW0gPSBJOTE1 X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzdGFj ayksCisJfTsKKwl1aW50MzJfdCBoYW5kbGU7CisJdm9pZCAqcHRyOworCisJcGFyYW0uc2l6ZSA9 IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0p LCAwKTsKKworCXBhcmFtLnNpemUgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9z ZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVJTlZBTCk7CisKKwlwYXJhbS5zaXplID0gc2l6ZW9m KHN0YWNrKSAtIDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1 LCAmcGFyYW0pLCAtRUlOVkFMKTsKKworCXBhcmFtLnNpemUgPSBzaXplb2Yoc3RhY2spICsgMTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIC1F SU5WQUwpOworCisJcGFyYW0uc2l6ZSA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAwKTsKKworCS8qIENyZWF0ZSBhIHNpbmdsZSBwYWdl IHN1cnJvdW5kZWQgYnkgaW5hY2Nlc3NpYmxlIG5vdGhpbmduZXNzICovCisJcHRyID0gbW1hcChO VUxMLCAzICogNDA5NiwgUFJPVF9XUklURSwgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDAp OworCWlndF9hc3NlcnQocHRyICE9IE1BUF9GQUlMRUQpOworCisJbXVubWFwKHB0ciwgNDA5Nik7 CisJZW5naW5lcyA9IHB0ciArIDQwOTY7CisJbXVubWFwKHB0ciArIDIgKjQwOTYsIDQwOTYpOwor CisJcGFyYW0uc2l6ZSA9IHNpemVvZigqZW5naW5lcykgKyBzaXplb2YoKmVuZ2luZXMtPmNsYXNz X2luc3RhbmNlKTsKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKTsKKwor CWVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdLmVuZ2luZV9jbGFzcyA9IC0xOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVOT0VOVCk7CisK KwltcHJvdGVjdChlbmdpbmVzLCA0MDk2LCBQUk9UX1JFQUQpOworCWlndF9hc3NlcnRfZXEoX19n ZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVOT0VOVCk7CisKKwltcHJvdGVj dChlbmdpbmVzLCA0MDk2LCBQUk9UX1dSSVRFKTsKKwllbmdpbmVzLT5jbGFzc19pbnN0YW5jZVsw XS5lbmdpbmVfY2xhc3MgPSAwOworCWlmIChfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAm cGFyYW0pKSAvKiBYWFggbmVlZHMgUkNTICovCisJCWdvdG8gb3V0OworCisJZW5naW5lcy0+ZXh0 ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcihwdHIpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisKKwllbmdpbmVzLT5leHRl bnNpb25zID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUs ICZwYXJhbSksIDApOworCisJcGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIoZW5naW5lcyAt IDEpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFt KSwgLUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKSAt IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0p LCAtRUZBVUxUKTsKKworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpIC0g cGFyYW0uc2l6ZSArICAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0o aTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRl cihlbmdpbmVzKSArIDQwOTY7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsKKworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2lu dGVyKGVuZ2luZXMpIC0gcGFyYW0uc2l6ZSArIDQwOTY7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAwKTsKKworCXBhcmFtLnZhbHVlID0gdG9f dXNlcl9wb2ludGVyKGVuZ2luZXMpIC0gcGFyYW0uc2l6ZSArIDQwOTYgKyAxOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisK KwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKSArIDQwOTY7CisJaWd0X2Fz c2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsK KworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpICsgNDA5NiAtIDE7CisJ aWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZB VUxUKTsKKworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpIC0gMTsKKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIC1FRkFV TFQpOworCisJcGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIoZW5naW5lcyAtIDEpOworCWln dF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVM VCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzIC0gMSkgKyA0MDk2 OworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwg LUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzIC0gMSkg KyA0MDk2IC0gc2l6ZW9mKCplbmdpbmVzLT5jbGFzc19pbnN0YW5jZSkgLyAyOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisK KwloYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYgKiAzKTsKKwlwdHIgPSBnZW1fbW1hcF9f Z3R0KGk5MTUsIGhhbmRsZSwgNDA5NiAqIDMsIFBST1RfUkVBRCk7CisJZ2VtX2Nsb3NlKGk5MTUs IGhhbmRsZSk7CisKKwltdW5tYXAocHRyLCA0MDk2KTsKKwltdW5tYXAocHRyICsgODE5MiwgNDA5 Nik7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwdHIgKyA0MDk2KTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIDApOworCisJ cGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIocHRyKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIC1FRkFVTFQpOworCisJcGFyYW0udmFs dWUgPSB0b191c2VyX3BvaW50ZXIocHRyKSArIDQwOTU7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsKKworCXBhcmFtLnZhbHVl ID0gdG9fdXNlcl9wb2ludGVyKHB0cikgKyA4MTkyOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9 IHRvX3VzZXJfcG9pbnRlcihwdHIpICsgMTIyODc7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250 ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsKKworCW11bm1hcChwdHIgKyA0 MDk2LCA0MDk2KTsKKworb3V0OgorCW11bm1hcChlbmdpbmVzLCA0MDk2KTsKKwlnZW1fY29udGV4 dF9kZXN0cm95KGk5MTUsIHBhcmFtLmN0eF9pZCk7Cit9CisKK3N0YXRpYyB2b2lkIGlkZW1wb3Rl bnQoaW50IGk5MTUpCit7CisJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2lu ZXMgLCBJOTE1X0VYRUNfUklOR19NQVNLICsgMSk7CisJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJB TV9FTkdJTkVTKGV4cGVjdGVkICwgSTkxNV9FWEVDX1JJTkdfTUFTSyArIDEpOworCXN0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBwID0geworCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRf Y3JlYXRlKGk5MTUpLAorCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwkJ LnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZlbmdpbmVzKSwKKwkJLnNpemUgPSBzaXplb2YoZW5n aW5lcyksCisJfTsKKwljb25zdCBzaXplX3QgYmFzZSA9IHNpemVvZihzdHJ1Y3QgaTkxNV9jb250 ZXh0X3BhcmFtX2VuZ2luZXMpOworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZTsKKwlpbnQgaWR4OworCisJLyogV2hhdCBnb2VzIGluLCBtdXN0IGNvbWUgb3V0LiBBbmQg d2hhdCBjb21lcyBvdXQsIG11c3QgZ28gaW4gKi8KKworCWdlbV9jb250ZXh0X2dldF9wYXJhbShp OTE1LCAmcCk7CisJaWd0X2Fzc2VydF9lcShwLnNpemUsIDApOyAvKiBhdG0gZGVmYXVsdCBpcyB0 byB1c2UgbGVnYWN5IHJpbmcgbWFzayAqLworCisJaWR4ID0gMDsKKwltZW1zZXQoJmVuZ2luZXMs IDAsIHNpemVvZihlbmdpbmVzKSk7CisJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGk5 MTUsIGUpIHsKKwkJZW5naW5lcy5jbGFzc19pbnN0YW5jZVtpZHhdLmVuZ2luZV9jbGFzcyA9IGUt PmNsYXNzOworCQllbmdpbmVzLmNsYXNzX2luc3RhbmNlW2lkeF0uZW5naW5lX2luc3RhbmNlID0g ZS0+aW5zdGFuY2U7CisJCWlkeCsrOworCX0KKwlpZHggKj0gc2l6ZW9mKCplbmdpbmVzLmNsYXNz X2luc3RhbmNlKTsKKwlwLnNpemUgPSBiYXNlICsgaWR4OworCWdlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcCk7CisKKwltZW1jcHkoJmV4cGVjdGVkLCAmZW5naW5lcywgc2l6ZW9mKGV4cGVj dGVkKSk7CisKKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnApOworCWlndF9hc3NlcnRf ZXEocC5zaXplLCBiYXNlICsgaWR4KTsKKwlpZ3RfYXNzZXJ0KCFtZW1jbXAoJmV4cGVjdGVkLCAm ZW5naW5lcywgaWR4KSk7CisKKwlwLnNpemUgPSBiYXNlOworCWdlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcCk7CisJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZwKTsKKwlpZ3RfYXNz ZXJ0X2VxKHAuc2l6ZSwgYmFzZSk7CisKKwkvKiBhbmQgaXQgc2hvdWxkIG5vdCBoYXZlIG92ZXJ3 cml0dGVuIHRoZSBwcmV2aW91cyBjb250ZW50cyAqLworCWlndF9hc3NlcnQoIW1lbWNtcCgmZXhw ZWN0ZWQsICZlbmdpbmVzLCBpZHgpKTsKKworCW1lbXNldCgmZW5naW5lcywgMCwgc2l6ZW9mKGVu Z2luZXMpKTsKKwllbmdpbmVzLmNsYXNzX2luc3RhbmNlWzBdLmVuZ2luZV9jbGFzcyA9IEk5MTVf RU5HSU5FX0NMQVNTX0lOVkFMSUQ7CisJZW5naW5lcy5jbGFzc19pbnN0YW5jZVswXS5lbmdpbmVf aW5zdGFuY2UgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkU7CisJaWR4ID0gc2l6ZW9m KCplbmdpbmVzLmNsYXNzX2luc3RhbmNlKTsKKwlwLnNpemUgPSBiYXNlICsgaWR4OworCWdlbV9j b250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCk7CisKKwltZW1jcHkoJmV4cGVjdGVkLCAmZW5naW5l cywgc2l6ZW9mKGV4cGVjdGVkKSk7CisKKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnAp OworCWlndF9hc3NlcnRfZXEocC5zaXplLCBiYXNlICsgaWR4KTsKKwlpZ3RfYXNzZXJ0KCFtZW1j bXAoJmV4cGVjdGVkLCAmZW5naW5lcywgaWR4KSk7CisKKwltZW1zZXQoJmVuZ2luZXMsIDAsIHNp emVvZihlbmdpbmVzKSk7CisJcC5zaXplID0gc2l6ZW9mKGVuZ2luZXMpOworCWdlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmcCk7CisKKwltZW1jcHkoJmV4cGVjdGVkLCAmZW5naW5lcywgc2l6 ZW9mKGV4cGVjdGVkKSk7CisKKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnApOworCWln dF9hc3NlcnRfZXEocC5zaXplLCBzaXplb2YoZW5naW5lcykpOworCWlndF9hc3NlcnQoIW1lbWNt cCgmZXhwZWN0ZWQsICZlbmdpbmVzLCBpZHgpKTsKKworCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkx NSwgcC5jdHhfaWQpOworfQorCitzdGF0aWMgdm9pZCBleGVjdXRlX29uZShpbnQgaTkxNSkKK3sK KwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMoZW5naW5lcyAsIEk5MTVfRVhFQ19S SU5HX01BU0sgKyAxKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0g PSB7CisJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSksCisJCS5wYXJhbSA9IEk5 MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVu Z2luZXMpLAorCQkvKiAuc2l6ZSB0byBiZSBmaWxsZWQgaW4gbGF0ZXIgKi8KKwl9OworCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsKKwkJLmhhbmRsZSA9IGdlbV9jcmVh dGUoaTkxNSwgNDA5NiksCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4 ZWNidWYgPSB7CisJCS5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKSwKKwkJLmJ1 ZmZlcl9jb3VudCA9IDEsCisJCS5yc3ZkMSA9IHBhcmFtLmN0eF9pZCwKKwl9OworCWNvbnN0IHVp bnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplOworCisJZ2VtX3dyaXRlKGk5MTUsIG9iai5oYW5kbGUsIDAsICZi YmUsIHNpemVvZihiYmUpKTsKKworCS8qIFVuYWR1bHRlcmF0ZWQgSTkxNV9FWEVDX0RFRkFVTFQg c2hvdWxkIHdvcmsgKi8KKwlleGVjYnVmLmZsYWdzID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpLCAwKTsKKwlnZW1fc3luYyhpOTE1LCBvYmouaGFuZGxl KTsKKworCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShpOTE1LCBlKSB7CisJCXN0cnVj dCBkcm1faTkxNV9nZW1fYnVzeSBidXN5ID0geyAuaGFuZGxlID0gb2JqLmhhbmRsZSB9OworCisJ CWZvciAoaW50IGkgPSAtMTsgaSA8PSBJOTE1X0VYRUNfUklOR19NQVNLOyBpKyspIHsKKwkJCWln dF9zcGluX3QgKnNwaW47CisKKwkJCW1lbXNldCgmZW5naW5lcywgMCwgc2l6ZW9mKGVuZ2luZXMp KTsKKwkJCWVuZ2luZV9jbGFzcygmZW5naW5lcywgMCkgPSBlLT5jbGFzczsKKwkJCWVuZ2luZV9p bnN0YW5jZSgmZW5naW5lcywgMCkgPSBlLT5pbnN0YW5jZTsKKwkJCXBhcmFtLnNpemUgPSBvZmZz ZXRvZih0eXBlb2YoZW5naW5lcyksIGNsYXNzX2luc3RhbmNlWzFdKTsKKwkJCWdlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pOworCisJCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3 KGk5MTUsCisJCQkJCQkgIC5jdHggPSBwYXJhbS5jdHhfaWQsCisJCQkJCQkgIC5lbmdpbmUgPSAw KTsKKworCQkJaWd0X2RlYnVnKCJUZXN0aW5nIHdpdGggbWFwIG9mICVkIGVuZ2luZXNcbiIsIGkg KyAxKTsKKwkJCW1lbXNldCgmZW5naW5lcy5jbGFzc19pbnN0YW5jZSwgLTEsIHNpemVvZihlbmdp bmVzLmNsYXNzX2luc3RhbmNlKSk7CisJCQlpZiAoaSAhPSAtMSkgeworCQkJCWVuZ2luZV9jbGFz cygmZW5naW5lcywgaSkgPSBlLT5jbGFzczsKKwkJCQllbmdpbmVfaW5zdGFuY2UoJmVuZ2luZXMs IGkpID0gZS0+aW5zdGFuY2U7CisJCQl9CisJCQlwYXJhbS5zaXplID0gc2l6ZW9mKHVpbnQ2NF90 KSArIChpICsgMSkgKiBzaXplb2YodWludDMyX3QpOworCQkJZ2VtX2NvbnRleHRfc2V0X3BhcmFt KGk5MTUsICZwYXJhbSk7CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDw9IEk5MTVfRVhFQ19SSU5H X01BU0s7IGorKykgeworCQkJCWludCBlcnI7CisKKwkJCQlleGVjYnVmLmZsYWdzID0gajsKKwkJ CQllcnIgPV9fZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOworCQkJCWlmIChqID09IGkpIHsK KwkJCQkJaWd0X2Fzc2VydF9mKGVyciA9PSAwLAorCQkJCQkJICAgICAiRmFpbGVkIHRvIHJlcG9y dCB0aGUgdmFsaWQgZW5naW5lIGZvciBzbG90ICVkXG4iLAorCQkJCQkJICAgICBpKTsKKwkJCQl9 IGVsc2UgeworCQkJCQlpZ3RfYXNzZXJ0X2YoZXJyID09IC1FSU5WQUwsCisJCQkJCQkgICAgICJG YWlsZWQgdG8gcmVwb3J0IGFuIGludmFsaWQgZW5naW5lIGZvciBzbG90ICVkICh2YWxpZCBhdCAl ZClcbiIsCisJCQkJCQkgICAgIGosIGkpOworCQkJCX0KKwkJCX0KKworCQkJZG9faW9jdGwoaTkx NSwgRFJNX0lPQ1RMX0k5MTVfR0VNX0JVU1ksICZidXN5KTsKKwkJCWlmIChpICE9IC0xKSB7CisJ CQkJaWd0X2Fzc2VydF9lcShidXN5LmJ1c3ksIDEgPDwgKGUtPmNsYXNzICsgMTYpKTsKKwkJCX0g ZWxzZSB7CisJCQkJaWd0X2Fzc2VydF9lcShidXN5LmJ1c3ksIDApOworCQkJfQorCisJCQlpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGk5MTUsIHNwaW4pOworCisJCQlnZW1fc3luYyhpOTE1LCBvYmouaGFu ZGxlKTsKKwkJCWRvX2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZLCAmYnVzeSk7 CisJCQlpZ3RfYXNzZXJ0X2VxKGJ1c3kuYnVzeSwgMCk7CisJCX0KKwl9CisKKwkvKiBSZXN0b3Jl IHRoZSBkZWZhdWx0cyBhbmQgY2hlY2sgSTkxNV9FWEVDX0RFRkFVTFQgd29ya3MgYWdhaW4uICov CisJcGFyYW0uc2l6ZSA9IDA7CisJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSk7 CisJZXhlY2J1Zi5mbGFncyA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9leGVjYnVmKGk5MTUs ICZleGVjYnVmKSwgMCk7CisKKwlnZW1fY2xvc2UoaTkxNSwgb2JqLmhhbmRsZSk7CisJZ2VtX2Nv bnRleHRfZGVzdHJveShpOTE1LCBwYXJhbS5jdHhfaWQpOworfQorCitzdGF0aWMgdm9pZCBleGVj dXRlX29uZWZvcmFsbChpbnQgaTkxNSkKK3sKKwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VO R0lORVMoZW5naW5lcyAsIEk5MTVfRVhFQ19SSU5HX01BU0sgKyAxKTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9j cmVhdGUoaTkxNSksCisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCQku dmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpLAorCQkuc2l6ZSA9IHNpemVvZihlbmdp bmVzKSwKKwl9OworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwor CWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShpOTE1LCBlKSB7CisJCW1lbXNldCgmZW5n aW5lcywgMCwgc2l6ZW9mKGVuZ2luZXMpKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPD0gSTkxNV9F WEVDX1JJTkdfTUFTSzsgaSsrKSB7CisJCQllbmdpbmVfY2xhc3MoJmVuZ2luZXMsIGkpID0gZS0+ Y2xhc3M7CisJCQllbmdpbmVfaW5zdGFuY2UoJmVuZ2luZXMsIGkpID0gZS0+aW5zdGFuY2U7CisJ CX0KKwkJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSk7CisKKwkJZm9yIChpbnQg aSA9IDA7IGkgPD0gSTkxNV9FWEVDX1JJTkdfTUFTSzsgaSsrKSB7CisJCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2J1c3kgYnVzeSA9IHt9OworCQkJaWd0X3NwaW5fdCAqc3BpbjsKKworCQkJc3BpbiA9 IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGk5MTUsCisJCQkJCQkgICAgLmN0eCA9IHBhcmFtLmN0eF9p ZCwKKwkJCQkJCSAgICAuZW5naW5lID0gaSk7CisKKwkJCWJ1c3kuaGFuZGxlID0gc3Bpbi0+aGFu ZGxlOworCQkJZG9faW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VNX0JVU1ksICZidXN5KTsK KwkJCWlndF9hc3NlcnRfZXEoYnVzeS5idXN5LCAxIDw8IChlLT5jbGFzcyArIDE2KSk7CisKKwkJ CWlndF9zcGluX2JhdGNoX2ZyZWUoaTkxNSwgc3Bpbik7CisJCX0KKwl9CisKKwlnZW1fY29udGV4 dF9kZXN0cm95KGk5MTUsIHBhcmFtLmN0eF9pZCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWN1dGVf YWxsZm9yb25lKGludCBpOTE1KQoreworCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5F UyhlbmdpbmVzICwgSTkxNV9FWEVDX1JJTkdfTUFTSyArIDEpOworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKKwkJLmN0eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0 ZShpOTE1KSwKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJCS52YWx1 ZSA9IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyksCisJfTsKKwljb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisJaW50IGk7CisKKwlpID0gMDsKKwltZW1zZXQoJmVuZ2lu ZXMsIDAsIHNpemVvZihlbmdpbmVzKSk7CisJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNl KGk5MTUsIGUpIHsKKwkJZW5naW5lX2NsYXNzKCZlbmdpbmVzLCBpKSA9IGUtPmNsYXNzOworCQll bmdpbmVfaW5zdGFuY2UoJmVuZ2luZXMsIGkpID0gZS0+aW5zdGFuY2U7CisJCWkrKzsKKwl9CisJ cGFyYW0uc2l6ZSA9IHNpemVvZih1aW50NjRfdCkgKyBpICogc2l6ZW9mKHVpbnQzMl90KTsKKwln ZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKTsKKworCWkgPSAwOworCWZvcl9lYWNo X2VuZ2luZV9jbGFzc19pbnN0YW5jZShpOTE1LCBlKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1f YnVzeSBidXN5ID0ge307CisJCWlndF9zcGluX3QgKnNwaW47CisKKwkJc3BpbiA9IF9faWd0X3Nw aW5fYmF0Y2hfbmV3KGk5MTUsCisJCQkJCSAgICAuY3R4ID0gcGFyYW0uY3R4X2lkLAorCQkJCQkg ICAgLmVuZ2luZSA9IGkrKyk7CisKKwkJYnVzeS5oYW5kbGUgPSBzcGluLT5oYW5kbGU7CisJCWRv X2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZLCAmYnVzeSk7CisJCWlndF9hc3Nl cnRfZXEoYnVzeS5idXN5LCAxIDw8IChlLT5jbGFzcyArIDE2KSk7CisKKwkJaWd0X3NwaW5fYmF0 Y2hfZnJlZShpOTE1LCBzcGluKTsKKwl9CisKKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIHBh cmFtLmN0eF9pZCk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGk5MTUgPSAtMTsKKworCWlndF9m aXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcl9yZW5kZXIoRFJJVkVSX0lOVEVMKTsK KwkJaWd0X3JlcXVpcmVfZ2VtKGk5MTUpOworCisJCWdlbV9yZXF1aXJlX2NvbnRleHRzKGk5MTUp OworCQlpZ3RfcmVxdWlyZShoYXNfY29udGV4dF9lbmdpbmVzKGk5MTUpKTsKKwl9CisKKwlpZ3Rf c3VidGVzdCgiaW52YWxpZC1lbmdpbmVzIikKKwkJaW52YWxpZF9lbmdpbmVzKGk5MTUpOworCisJ aWd0X3N1YnRlc3QoImlkZW1wb3RlbnQiKQorCQlpZGVtcG90ZW50KGk5MTUpOworCisJaWd0X3N1 YnRlc3QoImV4ZWN1dGUtb25lIikKKwkJZXhlY3V0ZV9vbmUoaTkxNSk7CisKKwlpZ3Rfc3VidGVz dCgiZXhlY3V0ZS1vbmVmb3JhbGwiKQorCQlleGVjdXRlX29uZWZvcmFsbChpOTE1KTsKKworCWln dF9zdWJ0ZXN0KCJleGVjdXRlLWFsbGZvcm9uZSIpCisJCWV4ZWN1dGVfYWxsZm9yb25lKGk5MTUp OworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZApp bmRleCBlMDA1Yzc5YzQuLmFiZmM4NWY0NiAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQK KysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTExMCw2ICsxMTAsNyBAQCBpOTE1X3Byb2dzID0g WwogCSdnZW1fY3R4X2JhZF9kZXN0cm95JywKIAknZ2VtX2N0eF9jbG9uZScsCiAJJ2dlbV9jdHhf Y3JlYXRlJywKKwknZ2VtX2N0eF9lbmdpbmVzJywKIAknZ2VtX2N0eF9leGVjJywKIAknZ2VtX2N0 eF9pc29sYXRpb24nLAogCSdnZW1fY3R4X3BhcmFtJywKLS0gCjIuMjAuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Thu, 14 Mar 2019 14:19:36 +0000 Message-Id: <20190314141939.26246-22-chris@chris-wilson.co.uk> In-Reply-To: <20190314141939.26246-1-chris@chris-wilson.co.uk> References: <20190314141939.26246-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 22/25] i915: Add gem_ctx_engines 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, Andi Shyti List-ID: VG8gZXhlcmNpc2UgdGhlIG5ldyBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyBhbmQgaW50ZXJh Y3Rpb25zIHdpdGgKZ2VtX2V4ZWNidWYoKS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFuZGkgU2h5dGkgPGFuZGlAZXRlemlhbi5vcmc+Ci0t LQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMSArCiB0ZXN0cy9pOTE1L2dlbV9j dHhfZW5naW5lcy5jIHwgNDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0 ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDQz IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9jdHhfZW5n aW5lcy5jCgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2Vm aWxlLnNvdXJjZXMKaW5kZXggN2UwNmM5NjlmLi4yZjU2MTJiMDcgMTAwNjQ0Ci0tLSBhL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMjIsNiAr MjIsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlkcm1fbW0gXAogCWRybV9yZWFkIFwKIAlpOTE1L2dl bV9jdHhfY2xvbmUgXAorCWk5MTUvZ2VtX2N0eF9lbmdpbmVzIFwKIAlpOTE1L2dlbV9jdHhfc2hh cmVkIFwKIAlpOTE1L2dlbV92bV9jcmVhdGUgXAogCWttc18zZCBcCmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2dlbV9jdHhfZW5naW5lcy5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4X2VuZ2luZXMuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjU4OGVjZjE5NgotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9lbmdpbmVzLmMKQEAgLTAsMCArMSw0NDEgQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImln dC5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk ZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNp bmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8u aD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1 ZGUgPHN5cy90aW1lLmg+CisKKyNpbmNsdWRlIDxkcm0uaD4KKworI2luY2x1ZGUgImk5MTUvZ2Vt X2NvbnRleHQuaCIKKworI2RlZmluZSBlbmdpbmVfY2xhc3MoZSwgbikgKChlKS0+Y2xhc3NfaW5z dGFuY2VbKG4pXS5lbmdpbmVfY2xhc3MpCisjZGVmaW5lIGVuZ2luZV9pbnN0YW5jZShlLCBuKSAo KGUpLT5jbGFzc19pbnN0YW5jZVsobildLmVuZ2luZV9pbnN0YW5jZSkKKworc3RhdGljIGJvb2wg aGFzX2NvbnRleHRfZW5naW5lcyhpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5jdHhfaWQgPSAwLAorCQkucGFyYW0gPSBJOTE1X0NP TlRFWFRfUEFSQU1fRU5HSU5FUywKKwl9OworCXJldHVybiBfX2dlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcGFyYW0pID09IDA7Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRfZW5naW5lcyhp bnQgaTkxNSkKK3sKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgc3RhY2sgPSB7 fSwgKmVuZ2luZXM7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0g eworCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpLAorCQkucGFyYW0gPSBJOTE1 X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzdGFj ayksCisJfTsKKwl1aW50MzJfdCBoYW5kbGU7CisJdm9pZCAqcHRyOworCisJcGFyYW0uc2l6ZSA9 IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0p LCAwKTsKKworCXBhcmFtLnNpemUgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9z ZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVJTlZBTCk7CisKKwlwYXJhbS5zaXplID0gc2l6ZW9m KHN0YWNrKSAtIDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1 LCAmcGFyYW0pLCAtRUlOVkFMKTsKKworCXBhcmFtLnNpemUgPSBzaXplb2Yoc3RhY2spICsgMTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIC1F SU5WQUwpOworCisJcGFyYW0uc2l6ZSA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAwKTsKKworCS8qIENyZWF0ZSBhIHNpbmdsZSBwYWdl IHN1cnJvdW5kZWQgYnkgaW5hY2Nlc3NpYmxlIG5vdGhpbmduZXNzICovCisJcHRyID0gbW1hcChO VUxMLCAzICogNDA5NiwgUFJPVF9XUklURSwgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDAp OworCWlndF9hc3NlcnQocHRyICE9IE1BUF9GQUlMRUQpOworCisJbXVubWFwKHB0ciwgNDA5Nik7 CisJZW5naW5lcyA9IHB0ciArIDQwOTY7CisJbXVubWFwKHB0ciArIDIgKjQwOTYsIDQwOTYpOwor CisJcGFyYW0uc2l6ZSA9IHNpemVvZigqZW5naW5lcykgKyBzaXplb2YoKmVuZ2luZXMtPmNsYXNz X2luc3RhbmNlKTsKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKTsKKwor CWVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdLmVuZ2luZV9jbGFzcyA9IC0xOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVOT0VOVCk7CisK KwltcHJvdGVjdChlbmdpbmVzLCA0MDk2LCBQUk9UX1JFQUQpOworCWlndF9hc3NlcnRfZXEoX19n ZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVOT0VOVCk7CisKKwltcHJvdGVj dChlbmdpbmVzLCA0MDk2LCBQUk9UX1dSSVRFKTsKKwllbmdpbmVzLT5jbGFzc19pbnN0YW5jZVsw XS5lbmdpbmVfY2xhc3MgPSAwOworCWlmIChfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAm cGFyYW0pKSAvKiBYWFggbmVlZHMgUkNTICovCisJCWdvdG8gb3V0OworCisJZW5naW5lcy0+ZXh0 ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcihwdHIpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisKKwllbmdpbmVzLT5leHRl bnNpb25zID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUs ICZwYXJhbSksIDApOworCisJcGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIoZW5naW5lcyAt IDEpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFt KSwgLUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKSAt IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0p LCAtRUZBVUxUKTsKKworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpIC0g cGFyYW0uc2l6ZSArICAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0o aTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRl cihlbmdpbmVzKSArIDQwOTY7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsKKworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2lu dGVyKGVuZ2luZXMpIC0gcGFyYW0uc2l6ZSArIDQwOTY7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAwKTsKKworCXBhcmFtLnZhbHVlID0gdG9f dXNlcl9wb2ludGVyKGVuZ2luZXMpIC0gcGFyYW0uc2l6ZSArIDQwOTYgKyAxOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisK KwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKSArIDQwOTY7CisJaWd0X2Fz c2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsK KworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpICsgNDA5NiAtIDE7CisJ aWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZB VUxUKTsKKworCXBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpIC0gMTsKKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIC1FRkFV TFQpOworCisJcGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIoZW5naW5lcyAtIDEpOworCWln dF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVM VCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzIC0gMSkgKyA0MDk2 OworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwg LUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzIC0gMSkg KyA0MDk2IC0gc2l6ZW9mKCplbmdpbmVzLT5jbGFzc19pbnN0YW5jZSkgLyAyOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisK KwloYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYgKiAzKTsKKwlwdHIgPSBnZW1fbW1hcF9f Z3R0KGk5MTUsIGhhbmRsZSwgNDA5NiAqIDMsIFBST1RfUkVBRCk7CisJZ2VtX2Nsb3NlKGk5MTUs IGhhbmRsZSk7CisKKwltdW5tYXAocHRyLCA0MDk2KTsKKwltdW5tYXAocHRyICsgODE5MiwgNDA5 Nik7CisKKwlwYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwdHIgKyA0MDk2KTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIDApOworCisJ cGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIocHRyKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSksIC1FRkFVTFQpOworCisJcGFyYW0udmFs dWUgPSB0b191c2VyX3BvaW50ZXIocHRyKSArIDQwOTU7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsKKworCXBhcmFtLnZhbHVl ID0gdG9fdXNlcl9wb2ludGVyKHB0cikgKyA4MTkyOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKSwgLUVGQVVMVCk7CisKKwlwYXJhbS52YWx1ZSA9 IHRvX3VzZXJfcG9pbnRlcihwdHIpICsgMTIyODc7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250 ZXh0X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pLCAtRUZBVUxUKTsKKworCW11bm1hcChwdHIgKyA0 MDk2LCA0MDk2KTsKKworb3V0OgorCW11bm1hcChlbmdpbmVzLCA0MDk2KTsKKwlnZW1fY29udGV4 dF9kZXN0cm95KGk5MTUsIHBhcmFtLmN0eF9pZCk7Cit9CisKK3N0YXRpYyB2b2lkIGlkZW1wb3Rl bnQoaW50IGk5MTUpCit7CisJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2lu ZXMgLCBJOTE1X0VYRUNfUklOR19NQVNLICsgMSk7CisJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJB TV9FTkdJTkVTKGV4cGVjdGVkICwgSTkxNV9FWEVDX1JJTkdfTUFTSyArIDEpOworCXN0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBwID0geworCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRf Y3JlYXRlKGk5MTUpLAorCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwkJ LnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZlbmdpbmVzKSwKKwkJLnNpemUgPSBzaXplb2YoZW5n aW5lcyksCisJfTsKKwljb25zdCBzaXplX3QgYmFzZSA9IHNpemVvZihzdHJ1Y3QgaTkxNV9jb250 ZXh0X3BhcmFtX2VuZ2luZXMpOworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZTsKKwlpbnQgaWR4OworCisJLyogV2hhdCBnb2VzIGluLCBtdXN0IGNvbWUgb3V0LiBBbmQg d2hhdCBjb21lcyBvdXQsIG11c3QgZ28gaW4gKi8KKworCWdlbV9jb250ZXh0X2dldF9wYXJhbShp OTE1LCAmcCk7CisJaWd0X2Fzc2VydF9lcShwLnNpemUsIDApOyAvKiBhdG0gZGVmYXVsdCBpcyB0 byB1c2UgbGVnYWN5IHJpbmcgbWFzayAqLworCisJaWR4ID0gMDsKKwltZW1zZXQoJmVuZ2luZXMs IDAsIHNpemVvZihlbmdpbmVzKSk7CisJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGk5 MTUsIGUpIHsKKwkJZW5naW5lcy5jbGFzc19pbnN0YW5jZVtpZHhdLmVuZ2luZV9jbGFzcyA9IGUt PmNsYXNzOworCQllbmdpbmVzLmNsYXNzX2luc3RhbmNlW2lkeF0uZW5naW5lX2luc3RhbmNlID0g ZS0+aW5zdGFuY2U7CisJCWlkeCsrOworCX0KKwlpZHggKj0gc2l6ZW9mKCplbmdpbmVzLmNsYXNz X2luc3RhbmNlKTsKKwlwLnNpemUgPSBiYXNlICsgaWR4OworCWdlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcCk7CisKKwltZW1jcHkoJmV4cGVjdGVkLCAmZW5naW5lcywgc2l6ZW9mKGV4cGVj dGVkKSk7CisKKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnApOworCWlndF9hc3NlcnRf ZXEocC5zaXplLCBiYXNlICsgaWR4KTsKKwlpZ3RfYXNzZXJ0KCFtZW1jbXAoJmV4cGVjdGVkLCAm ZW5naW5lcywgaWR4KSk7CisKKwlwLnNpemUgPSBiYXNlOworCWdlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmcCk7CisJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZwKTsKKwlpZ3RfYXNz ZXJ0X2VxKHAuc2l6ZSwgYmFzZSk7CisKKwkvKiBhbmQgaXQgc2hvdWxkIG5vdCBoYXZlIG92ZXJ3 cml0dGVuIHRoZSBwcmV2aW91cyBjb250ZW50cyAqLworCWlndF9hc3NlcnQoIW1lbWNtcCgmZXhw ZWN0ZWQsICZlbmdpbmVzLCBpZHgpKTsKKworCW1lbXNldCgmZW5naW5lcywgMCwgc2l6ZW9mKGVu Z2luZXMpKTsKKwllbmdpbmVzLmNsYXNzX2luc3RhbmNlWzBdLmVuZ2luZV9jbGFzcyA9IEk5MTVf RU5HSU5FX0NMQVNTX0lOVkFMSUQ7CisJZW5naW5lcy5jbGFzc19pbnN0YW5jZVswXS5lbmdpbmVf aW5zdGFuY2UgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkU7CisJaWR4ID0gc2l6ZW9m KCplbmdpbmVzLmNsYXNzX2luc3RhbmNlKTsKKwlwLnNpemUgPSBiYXNlICsgaWR4OworCWdlbV9j b250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCk7CisKKwltZW1jcHkoJmV4cGVjdGVkLCAmZW5naW5l cywgc2l6ZW9mKGV4cGVjdGVkKSk7CisKKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnAp OworCWlndF9hc3NlcnRfZXEocC5zaXplLCBiYXNlICsgaWR4KTsKKwlpZ3RfYXNzZXJ0KCFtZW1j bXAoJmV4cGVjdGVkLCAmZW5naW5lcywgaWR4KSk7CisKKwltZW1zZXQoJmVuZ2luZXMsIDAsIHNp emVvZihlbmdpbmVzKSk7CisJcC5zaXplID0gc2l6ZW9mKGVuZ2luZXMpOworCWdlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmcCk7CisKKwltZW1jcHkoJmV4cGVjdGVkLCAmZW5naW5lcywgc2l6 ZW9mKGV4cGVjdGVkKSk7CisKKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnApOworCWln dF9hc3NlcnRfZXEocC5zaXplLCBzaXplb2YoZW5naW5lcykpOworCWlndF9hc3NlcnQoIW1lbWNt cCgmZXhwZWN0ZWQsICZlbmdpbmVzLCBpZHgpKTsKKworCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkx NSwgcC5jdHhfaWQpOworfQorCitzdGF0aWMgdm9pZCBleGVjdXRlX29uZShpbnQgaTkxNSkKK3sK KwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMoZW5naW5lcyAsIEk5MTVfRVhFQ19S SU5HX01BU0sgKyAxKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0g PSB7CisJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSksCisJCS5wYXJhbSA9IEk5 MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVu Z2luZXMpLAorCQkvKiAuc2l6ZSB0byBiZSBmaWxsZWQgaW4gbGF0ZXIgKi8KKwl9OworCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsKKwkJLmhhbmRsZSA9IGdlbV9jcmVh dGUoaTkxNSwgNDA5NiksCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4 ZWNidWYgPSB7CisJCS5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKSwKKwkJLmJ1 ZmZlcl9jb3VudCA9IDEsCisJCS5yc3ZkMSA9IHBhcmFtLmN0eF9pZCwKKwl9OworCWNvbnN0IHVp bnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJY29uc3Qgc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplOworCisJZ2VtX3dyaXRlKGk5MTUsIG9iai5oYW5kbGUsIDAsICZi YmUsIHNpemVvZihiYmUpKTsKKworCS8qIFVuYWR1bHRlcmF0ZWQgSTkxNV9FWEVDX0RFRkFVTFQg c2hvdWxkIHdvcmsgKi8KKwlleGVjYnVmLmZsYWdzID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpLCAwKTsKKwlnZW1fc3luYyhpOTE1LCBvYmouaGFuZGxl KTsKKworCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShpOTE1LCBlKSB7CisJCXN0cnVj dCBkcm1faTkxNV9nZW1fYnVzeSBidXN5ID0geyAuaGFuZGxlID0gb2JqLmhhbmRsZSB9OworCisJ CWZvciAoaW50IGkgPSAtMTsgaSA8PSBJOTE1X0VYRUNfUklOR19NQVNLOyBpKyspIHsKKwkJCWln dF9zcGluX3QgKnNwaW47CisKKwkJCW1lbXNldCgmZW5naW5lcywgMCwgc2l6ZW9mKGVuZ2luZXMp KTsKKwkJCWVuZ2luZV9jbGFzcygmZW5naW5lcywgMCkgPSBlLT5jbGFzczsKKwkJCWVuZ2luZV9p bnN0YW5jZSgmZW5naW5lcywgMCkgPSBlLT5pbnN0YW5jZTsKKwkJCXBhcmFtLnNpemUgPSBvZmZz ZXRvZih0eXBlb2YoZW5naW5lcyksIGNsYXNzX2luc3RhbmNlWzFdKTsKKwkJCWdlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmcGFyYW0pOworCisJCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3 KGk5MTUsCisJCQkJCQkgIC5jdHggPSBwYXJhbS5jdHhfaWQsCisJCQkJCQkgIC5lbmdpbmUgPSAw KTsKKworCQkJaWd0X2RlYnVnKCJUZXN0aW5nIHdpdGggbWFwIG9mICVkIGVuZ2luZXNcbiIsIGkg KyAxKTsKKwkJCW1lbXNldCgmZW5naW5lcy5jbGFzc19pbnN0YW5jZSwgLTEsIHNpemVvZihlbmdp bmVzLmNsYXNzX2luc3RhbmNlKSk7CisJCQlpZiAoaSAhPSAtMSkgeworCQkJCWVuZ2luZV9jbGFz cygmZW5naW5lcywgaSkgPSBlLT5jbGFzczsKKwkJCQllbmdpbmVfaW5zdGFuY2UoJmVuZ2luZXMs IGkpID0gZS0+aW5zdGFuY2U7CisJCQl9CisJCQlwYXJhbS5zaXplID0gc2l6ZW9mKHVpbnQ2NF90 KSArIChpICsgMSkgKiBzaXplb2YodWludDMyX3QpOworCQkJZ2VtX2NvbnRleHRfc2V0X3BhcmFt KGk5MTUsICZwYXJhbSk7CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDw9IEk5MTVfRVhFQ19SSU5H X01BU0s7IGorKykgeworCQkJCWludCBlcnI7CisKKwkJCQlleGVjYnVmLmZsYWdzID0gajsKKwkJ CQllcnIgPV9fZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOworCQkJCWlmIChqID09IGkpIHsK KwkJCQkJaWd0X2Fzc2VydF9mKGVyciA9PSAwLAorCQkJCQkJICAgICAiRmFpbGVkIHRvIHJlcG9y dCB0aGUgdmFsaWQgZW5naW5lIGZvciBzbG90ICVkXG4iLAorCQkJCQkJICAgICBpKTsKKwkJCQl9 IGVsc2UgeworCQkJCQlpZ3RfYXNzZXJ0X2YoZXJyID09IC1FSU5WQUwsCisJCQkJCQkgICAgICJG YWlsZWQgdG8gcmVwb3J0IGFuIGludmFsaWQgZW5naW5lIGZvciBzbG90ICVkICh2YWxpZCBhdCAl ZClcbiIsCisJCQkJCQkgICAgIGosIGkpOworCQkJCX0KKwkJCX0KKworCQkJZG9faW9jdGwoaTkx NSwgRFJNX0lPQ1RMX0k5MTVfR0VNX0JVU1ksICZidXN5KTsKKwkJCWlmIChpICE9IC0xKSB7CisJ CQkJaWd0X2Fzc2VydF9lcShidXN5LmJ1c3ksIDEgPDwgKGUtPmNsYXNzICsgMTYpKTsKKwkJCX0g ZWxzZSB7CisJCQkJaWd0X2Fzc2VydF9lcShidXN5LmJ1c3ksIDApOworCQkJfQorCisJCQlpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGk5MTUsIHNwaW4pOworCisJCQlnZW1fc3luYyhpOTE1LCBvYmouaGFu ZGxlKTsKKwkJCWRvX2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZLCAmYnVzeSk7 CisJCQlpZ3RfYXNzZXJ0X2VxKGJ1c3kuYnVzeSwgMCk7CisJCX0KKwl9CisKKwkvKiBSZXN0b3Jl IHRoZSBkZWZhdWx0cyBhbmQgY2hlY2sgSTkxNV9FWEVDX0RFRkFVTFQgd29ya3MgYWdhaW4uICov CisJcGFyYW0uc2l6ZSA9IDA7CisJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSk7 CisJZXhlY2J1Zi5mbGFncyA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9leGVjYnVmKGk5MTUs ICZleGVjYnVmKSwgMCk7CisKKwlnZW1fY2xvc2UoaTkxNSwgb2JqLmhhbmRsZSk7CisJZ2VtX2Nv bnRleHRfZGVzdHJveShpOTE1LCBwYXJhbS5jdHhfaWQpOworfQorCitzdGF0aWMgdm9pZCBleGVj dXRlX29uZWZvcmFsbChpbnQgaTkxNSkKK3sKKwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VO R0lORVMoZW5naW5lcyAsIEk5MTVfRVhFQ19SSU5HX01BU0sgKyAxKTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9j cmVhdGUoaTkxNSksCisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCQku dmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpLAorCQkuc2l6ZSA9IHNpemVvZihlbmdp bmVzKSwKKwl9OworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwor CWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShpOTE1LCBlKSB7CisJCW1lbXNldCgmZW5n aW5lcywgMCwgc2l6ZW9mKGVuZ2luZXMpKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPD0gSTkxNV9F WEVDX1JJTkdfTUFTSzsgaSsrKSB7CisJCQllbmdpbmVfY2xhc3MoJmVuZ2luZXMsIGkpID0gZS0+ Y2xhc3M7CisJCQllbmdpbmVfaW5zdGFuY2UoJmVuZ2luZXMsIGkpID0gZS0+aW5zdGFuY2U7CisJ CX0KKwkJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwYXJhbSk7CisKKwkJZm9yIChpbnQg aSA9IDA7IGkgPD0gSTkxNV9FWEVDX1JJTkdfTUFTSzsgaSsrKSB7CisJCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2J1c3kgYnVzeSA9IHt9OworCQkJaWd0X3NwaW5fdCAqc3BpbjsKKworCQkJc3BpbiA9 IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGk5MTUsCisJCQkJCQkgICAgLmN0eCA9IHBhcmFtLmN0eF9p ZCwKKwkJCQkJCSAgICAuZW5naW5lID0gaSk7CisKKwkJCWJ1c3kuaGFuZGxlID0gc3Bpbi0+aGFu ZGxlOworCQkJZG9faW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VNX0JVU1ksICZidXN5KTsK KwkJCWlndF9hc3NlcnRfZXEoYnVzeS5idXN5LCAxIDw8IChlLT5jbGFzcyArIDE2KSk7CisKKwkJ CWlndF9zcGluX2JhdGNoX2ZyZWUoaTkxNSwgc3Bpbik7CisJCX0KKwl9CisKKwlnZW1fY29udGV4 dF9kZXN0cm95KGk5MTUsIHBhcmFtLmN0eF9pZCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWN1dGVf YWxsZm9yb25lKGludCBpOTE1KQoreworCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5F UyhlbmdpbmVzICwgSTkxNV9FWEVDX1JJTkdfTUFTSyArIDEpOworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKKwkJLmN0eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0 ZShpOTE1KSwKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJCS52YWx1 ZSA9IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyksCisJfTsKKwljb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisJaW50IGk7CisKKwlpID0gMDsKKwltZW1zZXQoJmVuZ2lu ZXMsIDAsIHNpemVvZihlbmdpbmVzKSk7CisJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNl KGk5MTUsIGUpIHsKKwkJZW5naW5lX2NsYXNzKCZlbmdpbmVzLCBpKSA9IGUtPmNsYXNzOworCQll bmdpbmVfaW5zdGFuY2UoJmVuZ2luZXMsIGkpID0gZS0+aW5zdGFuY2U7CisJCWkrKzsKKwl9CisJ cGFyYW0uc2l6ZSA9IHNpemVvZih1aW50NjRfdCkgKyBpICogc2l6ZW9mKHVpbnQzMl90KTsKKwln ZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnBhcmFtKTsKKworCWkgPSAwOworCWZvcl9lYWNo X2VuZ2luZV9jbGFzc19pbnN0YW5jZShpOTE1LCBlKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1f YnVzeSBidXN5ID0ge307CisJCWlndF9zcGluX3QgKnNwaW47CisKKwkJc3BpbiA9IF9faWd0X3Nw aW5fYmF0Y2hfbmV3KGk5MTUsCisJCQkJCSAgICAuY3R4ID0gcGFyYW0uY3R4X2lkLAorCQkJCQkg ICAgLmVuZ2luZSA9IGkrKyk7CisKKwkJYnVzeS5oYW5kbGUgPSBzcGluLT5oYW5kbGU7CisJCWRv X2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZLCAmYnVzeSk7CisJCWlndF9hc3Nl cnRfZXEoYnVzeS5idXN5LCAxIDw8IChlLT5jbGFzcyArIDE2KSk7CisKKwkJaWd0X3NwaW5fYmF0 Y2hfZnJlZShpOTE1LCBzcGluKTsKKwl9CisKKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIHBh cmFtLmN0eF9pZCk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGk5MTUgPSAtMTsKKworCWlndF9m aXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcl9yZW5kZXIoRFJJVkVSX0lOVEVMKTsK KwkJaWd0X3JlcXVpcmVfZ2VtKGk5MTUpOworCisJCWdlbV9yZXF1aXJlX2NvbnRleHRzKGk5MTUp OworCQlpZ3RfcmVxdWlyZShoYXNfY29udGV4dF9lbmdpbmVzKGk5MTUpKTsKKwl9CisKKwlpZ3Rf c3VidGVzdCgiaW52YWxpZC1lbmdpbmVzIikKKwkJaW52YWxpZF9lbmdpbmVzKGk5MTUpOworCisJ aWd0X3N1YnRlc3QoImlkZW1wb3RlbnQiKQorCQlpZGVtcG90ZW50KGk5MTUpOworCisJaWd0X3N1 YnRlc3QoImV4ZWN1dGUtb25lIikKKwkJZXhlY3V0ZV9vbmUoaTkxNSk7CisKKwlpZ3Rfc3VidGVz dCgiZXhlY3V0ZS1vbmVmb3JhbGwiKQorCQlleGVjdXRlX29uZWZvcmFsbChpOTE1KTsKKworCWln dF9zdWJ0ZXN0KCJleGVjdXRlLWFsbGZvcm9uZSIpCisJCWV4ZWN1dGVfYWxsZm9yb25lKGk5MTUp OworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZApp bmRleCBlMDA1Yzc5YzQuLmFiZmM4NWY0NiAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQK KysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTExMCw2ICsxMTAsNyBAQCBpOTE1X3Byb2dzID0g WwogCSdnZW1fY3R4X2JhZF9kZXN0cm95JywKIAknZ2VtX2N0eF9jbG9uZScsCiAJJ2dlbV9jdHhf Y3JlYXRlJywKKwknZ2VtX2N0eF9lbmdpbmVzJywKIAknZ2VtX2N0eF9leGVjJywKIAknZ2VtX2N0 eF9pc29sYXRpb24nLAogCSdnZW1fY3R4X3BhcmFtJywKLS0gCjIuMjAuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QK aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2