From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t 17/25] i915: Add gem_vm_create Date: Thu, 14 Mar 2019 14:19:31 +0000 Message-ID: <20190314141939.26246-17-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 RXhlcmNpc2UgYmFzaWMgY3JlYXRpb24gYW5kIHN3YXBwaW5nIGJldHdlZW4gbmV3IGFkZHJlc3Mg c3BhY2VzLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Ci0tLQogbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgfCAgIDIgKwogbGliL2k5MTUv Z2VtX3ZtLmMgICAgICAgICAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysKIGxpYi9pOTE1L2dl bV92bS5oICAgICAgICAgIHwgIDM4ICsrKysrKwogbGliL21lc29uLmJ1aWxkICAgICAgICAgICAg fCAgIDEgKwogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgfCAgIDEgKwogdGVzdHMvaTkxNS9n ZW1fdm1fY3JlYXRlLmMgfCAyMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgfCAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCA0 MDkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pOTE1L2dlbV92bS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX3ZtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 ZXN0cy9pOTE1L2dlbV92bV9jcmVhdGUuYwoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3Vy Y2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggZTAwMzQ3Zjk0Li5hNzA3NDIwOWEgMTAw NjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2Vz CkBAIC0xMyw2ICsxMyw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5MTUvZ2VtX3Jpbmcu YwlcCiAJaTkxNS9nZW1fbW1hbi5jCVwKIAlpOTE1L2dlbV9tbWFuLmgJXAorCWk5MTUvZ2VtX3Zt LmMJXAorCWk5MTUvZ2VtX3ZtLmgJXAogCWk5MTVfM2QuaAkJXAogCWk5MTVfcmVnLmgJCVwKIAlp OTE1X3BjaWlkcy5oCQlcCmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fdm0uYyBiL2xpYi9pOTE1 L2dlbV92bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTBkNDZkNTA5 Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX3ZtLmMKQEAgLTAsMCArMSwxMzAgQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSA8ZXJybm8u aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisj aW5jbHVkZSAiZHJtdGVzdC5oIgorCisjaW5jbHVkZSAiaTkxNS9nZW1fdm0uaCIKKworLyoqCisg KiBTRUNUSU9OOmdlbV92bQorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBIZWxwZXJzIGZvciBkZWFs aW5nIHdpdGggYWRkcmVzcyBzcGFjZXMgKHZtL0dUVCkKKyAqIEB0aXRsZTogR0VNIFZpcnR1YWwg TWVtb3J5CisgKgorICogVGhpcyBoZWxwZXIgbGlicmFyeSBjb250YWlucyBmdW5jdGlvbnMgdXNl ZCBmb3IgaGFuZGxpbmcgZ2VtIGFkZHJlc3MKKyAqIHNwYWNlcy4uCisgKi8KKworLyoqCisgKiBn ZW1faGFzX3ZtOgorICogQGk5MTU6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKgor ICogUmV0dXJuczogd2hldGhlciBWTSBjcmVhdGlvbiBpcyBzdXBwb3J0ZWQgb3Igbm90LgorICov Citib29sIGdlbV9oYXNfdm0oaW50IGk5MTUpCit7CisJdWludDMyX3Qgdm1faWQgPSAwOworCisJ X19nZW1fdm1fY3JlYXRlKGk5MTUsICZ2bV9pZCk7CisJaWYgKHZtX2lkKQorCQlnZW1fdm1fZGVz dHJveShpOTE1LCB2bV9pZCk7CisKKwlyZXR1cm4gdm1faWQ7Cit9CisKKy8qKgorICogZ2VtX3Jl cXVpcmVfdm06CisgKiBAaTkxNTogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqCisg KiBUaGlzIGhlbHBlciB3aWxsIGF1dG9tYXRpY2FsbHkgc2tpcCB0aGUgdGVzdCBvbiBwbGF0Zm9y bXMgd2hlcmUgYWRkcmVzcworICogc3BhY2UgY3JlYXRpb24gaXMgbm90IGF2YWlsYWJsZS4KKyAq Lwordm9pZCBnZW1fcmVxdWlyZV92bShpbnQgaTkxNSkKK3sKKwlpZ3RfcmVxdWlyZShnZW1faGFz X3ZtKGk5MTUpKTsKK30KKworaW50IF9fZ2VtX3ZtX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qg KnZtX2lkKQoreworICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCBjdGwgPSB7 fTsKKyAgICAgICBpbnQgZXJyID0gMDsKKworICAgICAgIGlmIChpZ3RfaW9jdGwoaTkxNSwgRFJN X0lPQ1RMX0k5MTVfR0VNX1ZNX0NSRUFURSwgJmN0bCkgPT0gMCkgeworICAgICAgICAgICAgICAg KnZtX2lkID0gY3RsLnZtX2lkOworICAgICAgIH0gZWxzZSB7CisJICAgICAgIGVyciA9IC1lcnJu bzsKKwkgICAgICAgaWd0X2Fzc3VtZShlcnIgIT0gMCk7CisgICAgICAgfQorCisgICAgICAgZXJy bm8gPSAwOworICAgICAgIHJldHVybiBlcnI7Cit9CisKKy8qKgorICogZ2VtX3ZtX2NyZWF0ZToK KyAqIEBpOTE1OiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICoKKyAqIFRoaXMgd3Jh cHMgdGhlIFZNX0NSRUFURSBpb2N0bCwgd2hpY2ggaXMgdXNlZCB0byBhbGxvY2F0ZSBhIG5ldwor ICogdm1fc2V0X2NhY2hpbmcoKSB0aGlzIHdyYXBwZXIgc2tpcHMgb24KKyAqIGtlcm5lbHMgYW5k IHBsYXRmb3JtcyB3aGVyZSBhZGRyZXNzIHNwYWNlIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS4K KyAqCisgKiBSZXR1cm5zOiBUaGUgaWQgb2YgdGhlIGFsbG9jYXRlZCBhZGRyZXNzIHNwYWNlLgor ICovCit1aW50MzJfdCBnZW1fdm1fY3JlYXRlKGludCBpOTE1KQoreworCXVpbnQzMl90IHZtX2lk OworCisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGUoaTkxNSwgJnZtX2lkKSwgMCk7CisJ aWd0X2Fzc2VydCh2bV9pZCAhPSAwKTsKKworCXJldHVybiB2bV9pZDsKK30KKworaW50IF9fZ2Vt X3ZtX2Rlc3Ryb3koaW50IGk5MTUsIHVpbnQzMl90IHZtX2lkKQoreworCXN0cnVjdCBkcm1faTkx NV9nZW1fdm1fY29udHJvbCBjdGwgPSB7IC52bV9pZCA9IHZtX2lkIH07CisJaW50IGVyciA9IDA7 CisKKwlpZiAoaWd0X2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9WTV9ERVNUUk9ZLCAm Y3RsKSkgeworCQllcnIgPSAtZXJybm87CisJCWlndF9hc3N1bWUoZXJyKTsKKwl9CisKKwllcnJu byA9IDA7CisJcmV0dXJuIGVycjsKK30KKworLyoqCisgKiBnZW1fdm1fZGVzdHJveToKKyAqIEBp OTE1OiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQHZtX2lkOiBpOTE1IFZNIGlk CisgKgorICogVGhpcyB3cmFwcyB0aGUgVk1fREVTVFJPWSBpb2N0bCwgd2hpY2ggaXMgdXNlZCB0 byBmcmVlIGFuIGFkZHJlc3Mgc3BhY2UuCisgKi8KK3ZvaWQgZ2VtX3ZtX2Rlc3Ryb3koaW50IGk5 MTUsIHVpbnQzMl90IHZtX2lkKQoreworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveShp OTE1LCB2bV9pZCksIDApOworfQpkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX3ZtLmggYi9saWIv aTkxNS9nZW1fdm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjI3YWY4 OTlkNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV92bS5oCkBAIC0wLDAgKzEsMzgg QEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisg KgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIEdFTV9W TV9ICisjZGVmaW5lIEdFTV9WTV9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworYm9vbCBnZW1f aGFzX3ZtKGludCBpOTE1KTsKK3ZvaWQgZ2VtX3JlcXVpcmVfdm0oaW50IGk5MTUpOworCit1aW50 MzJfdCBnZW1fdm1fY3JlYXRlKGludCBpOTE1KTsKK2ludCBfX2dlbV92bV9jcmVhdGUoaW50IGk5 MTUsIHVpbnQzMl90ICp2bV9pZCk7CisKK3ZvaWQgZ2VtX3ZtX2Rlc3Ryb3koaW50IGk5MTUsIHVp bnQzMl90IHZtX2lkKTsKK2ludCBfX2dlbV92bV9kZXN0cm95KGludCBpOTE1LCB1aW50MzJfdCB2 bV9pZCk7CisKKyNlbmRpZiAvKiBHRU1fVk1fSCAqLwpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1 aWxkIGIvbGliL21lc29uLmJ1aWxkCmluZGV4IDg5ZGUwNmU2OS4uZjk1OTIyMzMwIDEwMDY0NAot LS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01LDYgKzUsNyBA QCBsaWJfc291cmNlcyA9IFsKIAknaTkxNS9nZW1fc3VibWlzc2lvbi5jJywKIAknaTkxNS9nZW1f cmluZy5jJywKIAknaTkxNS9nZW1fbW1hbi5jJywKKwknaTkxNS9nZW1fdm0uYycsCiAJJ2lndF9j b2xvcl9lbmNvZGluZy5jJywKIAknaWd0X2RlYnVnZnMuYycsCiAJJ2lndF9kZXZpY2UuYycsCmRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwppbmRleCA2ZDBmZTFjOTUuLjEyZjRiYmQ3NSAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUu c291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0yMiw2ICsyMiw3IEBAIFRF U1RTX3Byb2dzID0gXAogCWRybV9tbSBcCiAJZHJtX3JlYWQgXAogCWk5MTUvZ2VtX2N0eF9jbG9u ZSBcCisJaTkxNS9nZW1fdm1fY3JlYXRlIFwKIAlrbXNfM2QgXAogCWttc19hZGRmYl9iYXNpYyBc CiAJa21zX2F0b21pYyBcCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV92bV9jcmVhdGUuYyBi L3Rlc3RzL2k5MTUvZ2VtX3ZtX2NyZWF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uMDI2NGZhMzAxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvaTkxNS9nZW1fdm1f Y3JlYXRlLmMKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FS RS4KKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgor I2luY2x1ZGUgImk5MTUvZ2VtX3ZtLmgiCisKK3N0YXRpYyBpbnQgX19nZW1fdm1fY3JlYXRlX2xv Y2FsKGludCBpOTE1LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgKmN0bCkKK3sKKwlp bnQgZXJyID0gMDsKKwlpZiAoaWd0X2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9WTV9D UkVBVEUsIGN0bCkpIHsKKwkJZXJyID0gLWVycm5vOworCQlpZ3RfYXNzdW1lKGVycik7CisJfQor CWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IF9fZ2VtX3ZtX2Rlc3Ry b3lfbG9jYWwoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCAqY3RsKQor eworCWludCBlcnIgPSAwOworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VN X1ZNX0RFU1RST1ksIGN0bCkpIHsKKwkJZXJyID0gLWVycm5vOworCQlpZ3RfYXNzdW1lKGVycik7 CisJfQorCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgYm9vbCBoYXNfdm0o aW50IGk5MTUpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sIGN0bCA9IHt9Owor CWludCBlcnI7CisKKwllcnIgPSBfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCk7CisJ c3dpdGNoIChlcnIpIHsKKwljYXNlIC1FSU5WQUw6IC8qIHVua25vd24gaW9jdGwgKi8KKwljYXNl IC1FTk9ERVY6IC8qICFmdWxsLXBwZ3R0ICovCisJCXJldHVybiBmYWxzZTsKKworCWNhc2UgMDoK KwkJZ2VtX3ZtX2Rlc3Ryb3koaTkxNSwgY3RsLnZtX2lkKTsKKwkJcmV0dXJuIHRydWU7CisKKwlk ZWZhdWx0OgorCQlpZ3RfZmFpbF9vbl9mKGVyciwgIlVua25vd24gcmVzcG9uc2UgZnJvbSBWTV9D UkVBVEVcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCitzdGF0aWMgdm9pZCBpbnZhbGlk X2NyZWF0ZShpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgY3Rs ID0ge307CisJc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gZXh0ID0geyAubmFtZSA9IC0xIH07 CisKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3RsKSwgMCk7 CisJZ2VtX3ZtX2Rlc3Ryb3koaTkxNSwgY3RsLnZtX2lkKTsKKworCWN0bC52bV9pZCA9IDB4ZGVh ZGJlZWY7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCks IDApOworCWdlbV92bV9kZXN0cm95KGk5MTUsIGN0bC52bV9pZCk7CisJY3RsLnZtX2lkID0gMDsK KworCWN0bC5mbGFncyA9IC0xOworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fY3JlYXRlX2xvY2Fs KGk5MTUsICZjdGwpLCAtRUlOVkFMKTsKKwljdGwuZmxhZ3MgPSAwOworCisJY3RsLmV4dGVuc2lv bnMgPSAtMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3Rs KSwgLUVGQVVMVCk7CisJY3RsLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmV4dCk7CisJ aWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCksIC1FSU5WQUwp OworCWN0bC5leHRlbnNpb25zID0gMDsKK30KKworc3RhdGljIHZvaWQgaW52YWxpZF9kZXN0cm95 KGludCBpOTE1KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCBjdGwgPSB7fTsK KworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAmY3RsKSwgLUVO T0VOVCk7CisKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3Rs KSwgMCk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0cm95X2xvY2FsKGk5MTUsICZjdGwp LCAwKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCks IC1FTk9FTlQpOworCisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwg JmN0bCksIDApOworCWN0bC52bV9pZCA9IGN0bC52bV9pZCArIDE7IC8qIFhYWCBhc3N1bWUgY3lj bGljIGFsbG9jYXRvciAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChp OTE1LCAmY3RsKSwgLUVOT0VOVCk7CisJY3RsLnZtX2lkID0gY3RsLnZtX2lkIC0gMTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX3ZtX2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCisJaWd0 X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCWN0bC5m bGFncyA9IC0xOworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAm Y3RsKSwgLUVJTlZBTCk7CisJY3RsLmZsYWdzID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3Zt X2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCisJaWd0X2Fzc2VydF9lcShfX2dlbV92 bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCWN0bC5leHRlbnNpb25zID0gLTE7CisJ aWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0cm95X2xvY2FsKGk5MTUsICZjdGwpLCAtRUlOVkFM KTsKKwljdGwuZXh0ZW5zaW9ucyA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0cm95 X2xvY2FsKGk5MTUsICZjdGwpLCAwKTsKK30KKworc3RhdGljIHVpbnQzMl90IF9fYmF0Y2hfY3Jl YXRlKGludCBpOTE1LCB1aW50MzJfdCBvZmZzZXQpCit7CisJY29uc3QgdWludDMyX3QgYmJlID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKKwl1aW50MzJfdCBoYW5kbGU7CisKKwloYW5kbGUgPSBnZW1f Y3JlYXRlKGk5MTUsIEFMSUdOKG9mZnNldCArIDQsIDQwOTYpKTsKKwlnZW1fd3JpdGUoaTkxNSwg aGFuZGxlLCBvZmZzZXQsICZiYmUsIHNpemVvZihiYmUpKTsKKworCXJldHVybiBoYW5kbGU7Cit9 CisKK3N0YXRpYyB1aW50MzJfdCBiYXRjaF9jcmVhdGUoaW50IGk5MTUpCit7CisJcmV0dXJuIF9f YmF0Y2hfY3JlYXRlKGk5MTUsIDApOworfQorCitzdGF0aWMgdm9pZCBleGVjYnVmKGludCBpOTE1 KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIGJhdGNoID0geworCQkuaGFu ZGxlID0gYmF0Y2hfY3JlYXRlKGk5MTUpLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiBlYiA9IHsKKwkJLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZiYXRjaCks CisJCS5idWZmZXJfY291bnQgPSAxLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1ZNLAorCX07CisK KwkvKiBGaXJzdCB2ZXJpZnkgdGhhdCB3ZSB0cnkgdG8gdXNlICJzb2Z0cGlubmluZyIgYnkgZGVm YXVsdCAqLworCWJhdGNoLm9mZnNldCA9IDQ4IDw8IDIwOworCWdlbV9leGVjYnVmKGk5MTUsICZl Yik7CisJaWd0X2Fzc2VydF9lcV91NjQoYmF0Y2gub2Zmc2V0LCA0OCA8PCAyMCk7CisKKwlhcmcu dmFsdWUgPSBnZW1fdm1fY3JlYXRlKGk5MTUpOworCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1 LCAmYXJnKTsKKwlnZW1fZXhlY2J1ZihpOTE1LCAmZWIpOworCWlndF9hc3NlcnRfZXFfdTY0KGJh dGNoLm9mZnNldCwgNDggPDwgMjApOworCWdlbV92bV9kZXN0cm95KGk5MTUsIGFyZy52YWx1ZSk7 CisKKwlhcmcudmFsdWUgPSBnZW1fdm1fY3JlYXRlKGk5MTUpOworCWdlbV9jb250ZXh0X3NldF9w YXJhbShpOTE1LCAmYXJnKTsKKwliYXRjaC5vZmZzZXQgPSAwOworCWdlbV9leGVjYnVmKGk5MTUs ICZlYik7CisJaWd0X2Fzc2VydF9lcV91NjQoYmF0Y2gub2Zmc2V0LCAwKTsKKwlnZW1fdm1fZGVz dHJveShpOTE1LCBhcmcudmFsdWUpOworCisJZ2VtX3N5bmMoaTkxNSwgYmF0Y2guaGFuZGxlKTsK KwlnZW1fY2xvc2UoaTkxNSwgYmF0Y2guaGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgYXN5bmNf ZGVzdHJveShpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0g YXJnID0geworCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpLAorCQkudmFsdWUg PSBnZW1fdm1fY3JlYXRlKGk5MTUpLAorCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fVk0s CisJfTsKKwlpZ3Rfc3Bpbl90ICpzcGluWzJdOworCisJc3BpblswXSA9IGlndF9zcGluX2JhdGNo X25ldyhpOTE1LAorCQkJCSAgICAgLmN0eCA9IGFyZy5jdHhfaWQsCisJCQkJICAgICAuZmxhZ3Mg PSBJR1RfU1BJTl9QT0xMX1JVTik7CisJaWd0X3NwaW5fYnVzeXdhaXRfdW50aWxfcnVubmluZyhz cGluWzBdKTsKKworCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmYXJnKTsKKwlzcGluWzFd ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaTkxNSwgLmN0eCA9IGFyZy5jdHhfaWQpOworCisJaWd0 X3NwaW5fYmF0Y2hfZW5kKHNwaW5bMF0pOworCWdlbV9zeW5jKGk5MTUsIHNwaW5bMF0tPmhhbmRs ZSk7CisKKwlnZW1fdm1fZGVzdHJveShpOTE1LCBhcmcudmFsdWUpOworCWdlbV9jb250ZXh0X2Rl c3Ryb3koaTkxNSwgYXJnLmN0eF9pZCk7CisKKwlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3BpblsxXSk7 CisJZ2VtX3N5bmMoaTkxNSwgc3BpblsxXS0+aGFuZGxlKTsKKworCWZvciAoaW50IGkgPSAwOyBp IDwgQVJSQVlfU0laRShzcGluKTsgaSsrKQorCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGk5MTUsIHNw aW5baV0pOworfQorCitpZ3RfbWFpbgoreworCWludCBpOTE1ID0gLTE7CisKKwlpZ3RfZml4dHVy ZSB7CisJCWk5MTUgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKKwkJaWd0X3JlcXVp cmVfZ2VtKGk5MTUpOworCQlpZ3RfcmVxdWlyZShoYXNfdm0oaTkxNSkpOworCX0KKworCWlndF9z dWJ0ZXN0KCJpbnZhbGlkLWNyZWF0ZSIpCisJCWludmFsaWRfY3JlYXRlKGk5MTUpOworCisJaWd0 X3N1YnRlc3QoImludmFsaWQtZGVzdHJveSIpCisJCWludmFsaWRfZGVzdHJveShpOTE1KTsKKwor CWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJaWd0X2ZpeHR1cmUgeworCQkJZ2VtX2NvbnRleHRfcmVx dWlyZV9wYXJhbShpOTE1LCBJOTE1X0NPTlRFWFRfUEFSQU1fVk0pOworCQl9CisKKwkJaWd0X3N1 YnRlc3QoImV4ZWNidWYiKQorCQkJZXhlY2J1ZihpOTE1KTsKKworCQlpZ3Rfc3VidGVzdCgiYXN5 bmMtZGVzdHJveSIpCisJCQlhc3luY19kZXN0cm95KGk5MTUpOworCX0KKworCWlndF9maXh0dXJl IHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQg Yi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAyYjYxMzIzNDUuLjdjMTk0YzNlMyAxMDA2NDQKLS0t IGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTIxMCw2ICsy MTAsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fdW5mZW5jZV9hY3RpdmVfYnVmZmVycycsCiAJ J2dlbV91bnJlZl9hY3RpdmVfYnVmZmVycycsCiAJJ2dlbV91c2VycHRyX2JsaXRzJywKKwknZ2Vt X3ZtX2NyZWF0ZScsCiAJJ2dlbV93YWl0JywKIAknZ2VtX3dvcmthcm91bmRzJywKIAknZ2VtX3dy aXRlX3JlYWRfcmluZ19zd2l0Y2gnLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Thu, 14 Mar 2019 14:19:31 +0000 Message-Id: <20190314141939.26246-17-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: [Intel-gfx] [PATCH i-g-t 17/25] i915: Add gem_vm_create List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 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: RXhlcmNpc2UgYmFzaWMgY3JlYXRpb24gYW5kIHN3YXBwaW5nIGJldHdlZW4gbmV3IGFkZHJlc3Mg c3BhY2VzLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Ci0tLQogbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgfCAgIDIgKwogbGliL2k5MTUv Z2VtX3ZtLmMgICAgICAgICAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysKIGxpYi9pOTE1L2dl bV92bS5oICAgICAgICAgIHwgIDM4ICsrKysrKwogbGliL21lc29uLmJ1aWxkICAgICAgICAgICAg fCAgIDEgKwogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgfCAgIDEgKwogdGVzdHMvaTkxNS9n ZW1fdm1fY3JlYXRlLmMgfCAyMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgfCAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCA0 MDkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pOTE1L2dlbV92bS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX3ZtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 ZXN0cy9pOTE1L2dlbV92bV9jcmVhdGUuYwoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3Vy Y2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggZTAwMzQ3Zjk0Li5hNzA3NDIwOWEgMTAw NjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2Vz CkBAIC0xMyw2ICsxMyw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5MTUvZ2VtX3Jpbmcu YwlcCiAJaTkxNS9nZW1fbW1hbi5jCVwKIAlpOTE1L2dlbV9tbWFuLmgJXAorCWk5MTUvZ2VtX3Zt LmMJXAorCWk5MTUvZ2VtX3ZtLmgJXAogCWk5MTVfM2QuaAkJXAogCWk5MTVfcmVnLmgJCVwKIAlp OTE1X3BjaWlkcy5oCQlcCmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fdm0uYyBiL2xpYi9pOTE1 L2dlbV92bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTBkNDZkNTA5 Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX3ZtLmMKQEAgLTAsMCArMSwxMzAgQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSA8ZXJybm8u aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisj aW5jbHVkZSAiZHJtdGVzdC5oIgorCisjaW5jbHVkZSAiaTkxNS9nZW1fdm0uaCIKKworLyoqCisg KiBTRUNUSU9OOmdlbV92bQorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBIZWxwZXJzIGZvciBkZWFs aW5nIHdpdGggYWRkcmVzcyBzcGFjZXMgKHZtL0dUVCkKKyAqIEB0aXRsZTogR0VNIFZpcnR1YWwg TWVtb3J5CisgKgorICogVGhpcyBoZWxwZXIgbGlicmFyeSBjb250YWlucyBmdW5jdGlvbnMgdXNl ZCBmb3IgaGFuZGxpbmcgZ2VtIGFkZHJlc3MKKyAqIHNwYWNlcy4uCisgKi8KKworLyoqCisgKiBn ZW1faGFzX3ZtOgorICogQGk5MTU6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKgor ICogUmV0dXJuczogd2hldGhlciBWTSBjcmVhdGlvbiBpcyBzdXBwb3J0ZWQgb3Igbm90LgorICov Citib29sIGdlbV9oYXNfdm0oaW50IGk5MTUpCit7CisJdWludDMyX3Qgdm1faWQgPSAwOworCisJ X19nZW1fdm1fY3JlYXRlKGk5MTUsICZ2bV9pZCk7CisJaWYgKHZtX2lkKQorCQlnZW1fdm1fZGVz dHJveShpOTE1LCB2bV9pZCk7CisKKwlyZXR1cm4gdm1faWQ7Cit9CisKKy8qKgorICogZ2VtX3Jl cXVpcmVfdm06CisgKiBAaTkxNTogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqCisg KiBUaGlzIGhlbHBlciB3aWxsIGF1dG9tYXRpY2FsbHkgc2tpcCB0aGUgdGVzdCBvbiBwbGF0Zm9y bXMgd2hlcmUgYWRkcmVzcworICogc3BhY2UgY3JlYXRpb24gaXMgbm90IGF2YWlsYWJsZS4KKyAq Lwordm9pZCBnZW1fcmVxdWlyZV92bShpbnQgaTkxNSkKK3sKKwlpZ3RfcmVxdWlyZShnZW1faGFz X3ZtKGk5MTUpKTsKK30KKworaW50IF9fZ2VtX3ZtX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qg KnZtX2lkKQoreworICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCBjdGwgPSB7 fTsKKyAgICAgICBpbnQgZXJyID0gMDsKKworICAgICAgIGlmIChpZ3RfaW9jdGwoaTkxNSwgRFJN X0lPQ1RMX0k5MTVfR0VNX1ZNX0NSRUFURSwgJmN0bCkgPT0gMCkgeworICAgICAgICAgICAgICAg KnZtX2lkID0gY3RsLnZtX2lkOworICAgICAgIH0gZWxzZSB7CisJICAgICAgIGVyciA9IC1lcnJu bzsKKwkgICAgICAgaWd0X2Fzc3VtZShlcnIgIT0gMCk7CisgICAgICAgfQorCisgICAgICAgZXJy bm8gPSAwOworICAgICAgIHJldHVybiBlcnI7Cit9CisKKy8qKgorICogZ2VtX3ZtX2NyZWF0ZToK KyAqIEBpOTE1OiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICoKKyAqIFRoaXMgd3Jh cHMgdGhlIFZNX0NSRUFURSBpb2N0bCwgd2hpY2ggaXMgdXNlZCB0byBhbGxvY2F0ZSBhIG5ldwor ICogdm1fc2V0X2NhY2hpbmcoKSB0aGlzIHdyYXBwZXIgc2tpcHMgb24KKyAqIGtlcm5lbHMgYW5k IHBsYXRmb3JtcyB3aGVyZSBhZGRyZXNzIHNwYWNlIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS4K KyAqCisgKiBSZXR1cm5zOiBUaGUgaWQgb2YgdGhlIGFsbG9jYXRlZCBhZGRyZXNzIHNwYWNlLgor ICovCit1aW50MzJfdCBnZW1fdm1fY3JlYXRlKGludCBpOTE1KQoreworCXVpbnQzMl90IHZtX2lk OworCisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGUoaTkxNSwgJnZtX2lkKSwgMCk7CisJ aWd0X2Fzc2VydCh2bV9pZCAhPSAwKTsKKworCXJldHVybiB2bV9pZDsKK30KKworaW50IF9fZ2Vt X3ZtX2Rlc3Ryb3koaW50IGk5MTUsIHVpbnQzMl90IHZtX2lkKQoreworCXN0cnVjdCBkcm1faTkx NV9nZW1fdm1fY29udHJvbCBjdGwgPSB7IC52bV9pZCA9IHZtX2lkIH07CisJaW50IGVyciA9IDA7 CisKKwlpZiAoaWd0X2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9WTV9ERVNUUk9ZLCAm Y3RsKSkgeworCQllcnIgPSAtZXJybm87CisJCWlndF9hc3N1bWUoZXJyKTsKKwl9CisKKwllcnJu byA9IDA7CisJcmV0dXJuIGVycjsKK30KKworLyoqCisgKiBnZW1fdm1fZGVzdHJveToKKyAqIEBp OTE1OiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQHZtX2lkOiBpOTE1IFZNIGlk CisgKgorICogVGhpcyB3cmFwcyB0aGUgVk1fREVTVFJPWSBpb2N0bCwgd2hpY2ggaXMgdXNlZCB0 byBmcmVlIGFuIGFkZHJlc3Mgc3BhY2UuCisgKi8KK3ZvaWQgZ2VtX3ZtX2Rlc3Ryb3koaW50IGk5 MTUsIHVpbnQzMl90IHZtX2lkKQoreworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveShp OTE1LCB2bV9pZCksIDApOworfQpkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX3ZtLmggYi9saWIv aTkxNS9nZW1fdm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjI3YWY4 OTlkNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV92bS5oCkBAIC0wLDAgKzEsMzgg QEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisg KgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIEdFTV9W TV9ICisjZGVmaW5lIEdFTV9WTV9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworYm9vbCBnZW1f aGFzX3ZtKGludCBpOTE1KTsKK3ZvaWQgZ2VtX3JlcXVpcmVfdm0oaW50IGk5MTUpOworCit1aW50 MzJfdCBnZW1fdm1fY3JlYXRlKGludCBpOTE1KTsKK2ludCBfX2dlbV92bV9jcmVhdGUoaW50IGk5 MTUsIHVpbnQzMl90ICp2bV9pZCk7CisKK3ZvaWQgZ2VtX3ZtX2Rlc3Ryb3koaW50IGk5MTUsIHVp bnQzMl90IHZtX2lkKTsKK2ludCBfX2dlbV92bV9kZXN0cm95KGludCBpOTE1LCB1aW50MzJfdCB2 bV9pZCk7CisKKyNlbmRpZiAvKiBHRU1fVk1fSCAqLwpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1 aWxkIGIvbGliL21lc29uLmJ1aWxkCmluZGV4IDg5ZGUwNmU2OS4uZjk1OTIyMzMwIDEwMDY0NAot LS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01LDYgKzUsNyBA QCBsaWJfc291cmNlcyA9IFsKIAknaTkxNS9nZW1fc3VibWlzc2lvbi5jJywKIAknaTkxNS9nZW1f cmluZy5jJywKIAknaTkxNS9nZW1fbW1hbi5jJywKKwknaTkxNS9nZW1fdm0uYycsCiAJJ2lndF9j b2xvcl9lbmNvZGluZy5jJywKIAknaWd0X2RlYnVnZnMuYycsCiAJJ2lndF9kZXZpY2UuYycsCmRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwppbmRleCA2ZDBmZTFjOTUuLjEyZjRiYmQ3NSAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUu c291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0yMiw2ICsyMiw3IEBAIFRF U1RTX3Byb2dzID0gXAogCWRybV9tbSBcCiAJZHJtX3JlYWQgXAogCWk5MTUvZ2VtX2N0eF9jbG9u ZSBcCisJaTkxNS9nZW1fdm1fY3JlYXRlIFwKIAlrbXNfM2QgXAogCWttc19hZGRmYl9iYXNpYyBc CiAJa21zX2F0b21pYyBcCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV92bV9jcmVhdGUuYyBi L3Rlc3RzL2k5MTUvZ2VtX3ZtX2NyZWF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uMDI2NGZhMzAxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvaTkxNS9nZW1fdm1f Y3JlYXRlLmMKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FS RS4KKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgor I2luY2x1ZGUgImk5MTUvZ2VtX3ZtLmgiCisKK3N0YXRpYyBpbnQgX19nZW1fdm1fY3JlYXRlX2xv Y2FsKGludCBpOTE1LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgKmN0bCkKK3sKKwlp bnQgZXJyID0gMDsKKwlpZiAoaWd0X2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dFTV9WTV9D UkVBVEUsIGN0bCkpIHsKKwkJZXJyID0gLWVycm5vOworCQlpZ3RfYXNzdW1lKGVycik7CisJfQor CWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IF9fZ2VtX3ZtX2Rlc3Ry b3lfbG9jYWwoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCAqY3RsKQor eworCWludCBlcnIgPSAwOworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VN X1ZNX0RFU1RST1ksIGN0bCkpIHsKKwkJZXJyID0gLWVycm5vOworCQlpZ3RfYXNzdW1lKGVycik7 CisJfQorCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgYm9vbCBoYXNfdm0o aW50IGk5MTUpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sIGN0bCA9IHt9Owor CWludCBlcnI7CisKKwllcnIgPSBfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCk7CisJ c3dpdGNoIChlcnIpIHsKKwljYXNlIC1FSU5WQUw6IC8qIHVua25vd24gaW9jdGwgKi8KKwljYXNl IC1FTk9ERVY6IC8qICFmdWxsLXBwZ3R0ICovCisJCXJldHVybiBmYWxzZTsKKworCWNhc2UgMDoK KwkJZ2VtX3ZtX2Rlc3Ryb3koaTkxNSwgY3RsLnZtX2lkKTsKKwkJcmV0dXJuIHRydWU7CisKKwlk ZWZhdWx0OgorCQlpZ3RfZmFpbF9vbl9mKGVyciwgIlVua25vd24gcmVzcG9uc2UgZnJvbSBWTV9D UkVBVEVcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCitzdGF0aWMgdm9pZCBpbnZhbGlk X2NyZWF0ZShpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgY3Rs ID0ge307CisJc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gZXh0ID0geyAubmFtZSA9IC0xIH07 CisKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3RsKSwgMCk7 CisJZ2VtX3ZtX2Rlc3Ryb3koaTkxNSwgY3RsLnZtX2lkKTsKKworCWN0bC52bV9pZCA9IDB4ZGVh ZGJlZWY7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCks IDApOworCWdlbV92bV9kZXN0cm95KGk5MTUsIGN0bC52bV9pZCk7CisJY3RsLnZtX2lkID0gMDsK KworCWN0bC5mbGFncyA9IC0xOworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fY3JlYXRlX2xvY2Fs KGk5MTUsICZjdGwpLCAtRUlOVkFMKTsKKwljdGwuZmxhZ3MgPSAwOworCisJY3RsLmV4dGVuc2lv bnMgPSAtMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3Rs KSwgLUVGQVVMVCk7CisJY3RsLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmV4dCk7CisJ aWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCksIC1FSU5WQUwp OworCWN0bC5leHRlbnNpb25zID0gMDsKK30KKworc3RhdGljIHZvaWQgaW52YWxpZF9kZXN0cm95 KGludCBpOTE1KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCBjdGwgPSB7fTsK KworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAmY3RsKSwgLUVO T0VOVCk7CisKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2NyZWF0ZV9sb2NhbChpOTE1LCAmY3Rs KSwgMCk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0cm95X2xvY2FsKGk5MTUsICZjdGwp LCAwKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCks IC1FTk9FTlQpOworCisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwg JmN0bCksIDApOworCWN0bC52bV9pZCA9IGN0bC52bV9pZCArIDE7IC8qIFhYWCBhc3N1bWUgY3lj bGljIGFsbG9jYXRvciAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChp OTE1LCAmY3RsKSwgLUVOT0VOVCk7CisJY3RsLnZtX2lkID0gY3RsLnZtX2lkIC0gMTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX3ZtX2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCisJaWd0 X2Fzc2VydF9lcShfX2dlbV92bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCWN0bC5m bGFncyA9IC0xOworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fZGVzdHJveV9sb2NhbChpOTE1LCAm Y3RsKSwgLUVJTlZBTCk7CisJY3RsLmZsYWdzID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3Zt X2Rlc3Ryb3lfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCisJaWd0X2Fzc2VydF9lcShfX2dlbV92 bV9jcmVhdGVfbG9jYWwoaTkxNSwgJmN0bCksIDApOworCWN0bC5leHRlbnNpb25zID0gLTE7CisJ aWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0cm95X2xvY2FsKGk5MTUsICZjdGwpLCAtRUlOVkFM KTsKKwljdGwuZXh0ZW5zaW9ucyA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV9kZXN0cm95 X2xvY2FsKGk5MTUsICZjdGwpLCAwKTsKK30KKworc3RhdGljIHVpbnQzMl90IF9fYmF0Y2hfY3Jl YXRlKGludCBpOTE1LCB1aW50MzJfdCBvZmZzZXQpCit7CisJY29uc3QgdWludDMyX3QgYmJlID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKKwl1aW50MzJfdCBoYW5kbGU7CisKKwloYW5kbGUgPSBnZW1f Y3JlYXRlKGk5MTUsIEFMSUdOKG9mZnNldCArIDQsIDQwOTYpKTsKKwlnZW1fd3JpdGUoaTkxNSwg aGFuZGxlLCBvZmZzZXQsICZiYmUsIHNpemVvZihiYmUpKTsKKworCXJldHVybiBoYW5kbGU7Cit9 CisKK3N0YXRpYyB1aW50MzJfdCBiYXRjaF9jcmVhdGUoaW50IGk5MTUpCit7CisJcmV0dXJuIF9f YmF0Y2hfY3JlYXRlKGk5MTUsIDApOworfQorCitzdGF0aWMgdm9pZCBleGVjYnVmKGludCBpOTE1 KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIGJhdGNoID0geworCQkuaGFu ZGxlID0gYmF0Y2hfY3JlYXRlKGk5MTUpLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiBlYiA9IHsKKwkJLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZiYXRjaCks CisJCS5idWZmZXJfY291bnQgPSAxLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1ZNLAorCX07CisK KwkvKiBGaXJzdCB2ZXJpZnkgdGhhdCB3ZSB0cnkgdG8gdXNlICJzb2Z0cGlubmluZyIgYnkgZGVm YXVsdCAqLworCWJhdGNoLm9mZnNldCA9IDQ4IDw8IDIwOworCWdlbV9leGVjYnVmKGk5MTUsICZl Yik7CisJaWd0X2Fzc2VydF9lcV91NjQoYmF0Y2gub2Zmc2V0LCA0OCA8PCAyMCk7CisKKwlhcmcu dmFsdWUgPSBnZW1fdm1fY3JlYXRlKGk5MTUpOworCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1 LCAmYXJnKTsKKwlnZW1fZXhlY2J1ZihpOTE1LCAmZWIpOworCWlndF9hc3NlcnRfZXFfdTY0KGJh dGNoLm9mZnNldCwgNDggPDwgMjApOworCWdlbV92bV9kZXN0cm95KGk5MTUsIGFyZy52YWx1ZSk7 CisKKwlhcmcudmFsdWUgPSBnZW1fdm1fY3JlYXRlKGk5MTUpOworCWdlbV9jb250ZXh0X3NldF9w YXJhbShpOTE1LCAmYXJnKTsKKwliYXRjaC5vZmZzZXQgPSAwOworCWdlbV9leGVjYnVmKGk5MTUs ICZlYik7CisJaWd0X2Fzc2VydF9lcV91NjQoYmF0Y2gub2Zmc2V0LCAwKTsKKwlnZW1fdm1fZGVz dHJveShpOTE1LCBhcmcudmFsdWUpOworCisJZ2VtX3N5bmMoaTkxNSwgYmF0Y2guaGFuZGxlKTsK KwlnZW1fY2xvc2UoaTkxNSwgYmF0Y2guaGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgYXN5bmNf ZGVzdHJveShpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0g YXJnID0geworCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpLAorCQkudmFsdWUg PSBnZW1fdm1fY3JlYXRlKGk5MTUpLAorCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fVk0s CisJfTsKKwlpZ3Rfc3Bpbl90ICpzcGluWzJdOworCisJc3BpblswXSA9IGlndF9zcGluX2JhdGNo X25ldyhpOTE1LAorCQkJCSAgICAgLmN0eCA9IGFyZy5jdHhfaWQsCisJCQkJICAgICAuZmxhZ3Mg PSBJR1RfU1BJTl9QT0xMX1JVTik7CisJaWd0X3NwaW5fYnVzeXdhaXRfdW50aWxfcnVubmluZyhz cGluWzBdKTsKKworCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmYXJnKTsKKwlzcGluWzFd ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaTkxNSwgLmN0eCA9IGFyZy5jdHhfaWQpOworCisJaWd0 X3NwaW5fYmF0Y2hfZW5kKHNwaW5bMF0pOworCWdlbV9zeW5jKGk5MTUsIHNwaW5bMF0tPmhhbmRs ZSk7CisKKwlnZW1fdm1fZGVzdHJveShpOTE1LCBhcmcudmFsdWUpOworCWdlbV9jb250ZXh0X2Rl c3Ryb3koaTkxNSwgYXJnLmN0eF9pZCk7CisKKwlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3BpblsxXSk7 CisJZ2VtX3N5bmMoaTkxNSwgc3BpblsxXS0+aGFuZGxlKTsKKworCWZvciAoaW50IGkgPSAwOyBp IDwgQVJSQVlfU0laRShzcGluKTsgaSsrKQorCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGk5MTUsIHNw aW5baV0pOworfQorCitpZ3RfbWFpbgoreworCWludCBpOTE1ID0gLTE7CisKKwlpZ3RfZml4dHVy ZSB7CisJCWk5MTUgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKKwkJaWd0X3JlcXVp cmVfZ2VtKGk5MTUpOworCQlpZ3RfcmVxdWlyZShoYXNfdm0oaTkxNSkpOworCX0KKworCWlndF9z dWJ0ZXN0KCJpbnZhbGlkLWNyZWF0ZSIpCisJCWludmFsaWRfY3JlYXRlKGk5MTUpOworCisJaWd0 X3N1YnRlc3QoImludmFsaWQtZGVzdHJveSIpCisJCWludmFsaWRfZGVzdHJveShpOTE1KTsKKwor CWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJaWd0X2ZpeHR1cmUgeworCQkJZ2VtX2NvbnRleHRfcmVx dWlyZV9wYXJhbShpOTE1LCBJOTE1X0NPTlRFWFRfUEFSQU1fVk0pOworCQl9CisKKwkJaWd0X3N1 YnRlc3QoImV4ZWNidWYiKQorCQkJZXhlY2J1ZihpOTE1KTsKKworCQlpZ3Rfc3VidGVzdCgiYXN5 bmMtZGVzdHJveSIpCisJCQlhc3luY19kZXN0cm95KGk5MTUpOworCX0KKworCWlndF9maXh0dXJl IHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQg Yi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAyYjYxMzIzNDUuLjdjMTk0YzNlMyAxMDA2NDQKLS0t IGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTIxMCw2ICsy MTAsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fdW5mZW5jZV9hY3RpdmVfYnVmZmVycycsCiAJ J2dlbV91bnJlZl9hY3RpdmVfYnVmZmVycycsCiAJJ2dlbV91c2VycHRyX2JsaXRzJywKKwknZ2Vt X3ZtX2NyZWF0ZScsCiAJJ2dlbV93YWl0JywKIAknZ2VtX3dvcmthcm91bmRzJywKIAknZ2VtX3dy aXRlX3JlYWRfcmluZ19zd2l0Y2gnLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng=