From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Tue, 8 Jan 2019 15:13:01 +0000 Message-Id: <20190108151303.4302-3-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190108151303.4302-1-tvrtko.ursulin@linux.intel.com> References: <20190108151303.4302-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/4] tests/gem_ctx_sseu: Dynamic (sub)slice programming tests 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: RnJvbTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoK VmVyaWZ5IHRoYXQgdGhlIHBlci1jb250ZXh0IGR5bmFtaWMgU1NFVSB1QVBJIHdvcmtzIGFzIGV4 cGVjdGVkLgoKdjI6IEFkZCBzdWJzbGljZSB0ZXN0cyAoTGlvbmVsKQogICAgVXNlIE1JX1NFVF9Q UkVESUNBVEUgZm9yIGZ1cnRoZXIgdmVyaWZpY2F0aW9uIHdoZW4gYXZhaWxhYmxlIChMaW9uZWwp Cgp2MzogUmVuYW1lIHRvIGdlbV9jdHhfcnBjcyAoTGlvbmVsKQoKdjQ6IFVwZGF0ZSBrZXJuZWwg QVBJIChMaW9uZWwpCiAgICBBZGQgMCB2YWx1ZSB0ZXN0IChMaW9uZWwpCiAgICBFeGVyY2lzZSBp bnZhbGlkIHZhbHVlcyAoTGlvbmVsKQoKdjU6IEFkZCBwZXJmIHRlc3RzIChMaW9uZWwpCgp2Njog QWRkIG5ldyBzeXNmcyBlbnRyeSB0ZXN0cyAoTGlvbmVsKQoKdjc6IFRlc3QgcnN2ZCBmaWVsZHMK ICAgIFVwZGF0ZSBmb3Iga2VybmVsIHNlcmllcyBjaGFuZ2VzCgp2ODogRHJvcCB0ZXN0X25vX3Nz ZXVfc3VwcG9ydCgpIHRlc3QgKEtlbHZpbikKICAgIERyb3AgZHJtX2ludGVsXyooKSBhcGlzIChD aHJpcykKCnY5OiBieSBDaHJpczoKICAgIERyb3AgYWxsIGRvX2lvY3RsL2RvX2lvY3RsX2Vycigp CiAgICBVc2UgZ2VtX2NvbnRleHRfW2dzXWV0X3BhcmFtKCkKICAgIFVzZSBnZW1fcmVhZCgpIGlu c3RlYWQgb2YgbWFwcGluZyBtZW1vcnkKICAgIGJ5IExpb25lbDoKICAgIFRlc3QgZHluYW1pYyBz c2V1IG9uL29mZiBtb3JlCgpUdnJ0a28gVXJzdWxpbjoKCnYxMDoKICogVmFyaW91cyBzdHlsZSB0 d2Vha3MgYW5kIHJlZmFjdG9yaW5ncy4KICogTmV3IHRlc3QgY292ZXJhZ2UuCgp2MTE6CiAqIENo YW5nZSBwbGF0Zm9ybSBzdXBwb3J0IHRvIGp1c3QgR2VuMTEuCiAqIFNpbXBsaWZ5IGF2YWlsYWJp bGl0eSB0ZXN0LiAoQ2hyaXMgV2lsc29uKQogKiBNb3JlIGludmFsaWQgcG9pbnRlciB0ZXN0cy4g KENocmlzIFdpbHNvbikKCnYxMjoKICogRml4IE1BUF9GSVhFRCB1c2UgKGRvaCEpLgogKiBGaXgg Z2V0L3NldCBjb3B5JnBhc3RlIGVycm9ycy4KICogRHJvcCBzdXBwb3J0ZWQgcGxhdGZvcm0gdGVz dC4gKENocmlzIFdpbHNvbikKICogQWRkIG1tYXBfX2d0dCB0ZXN0LiAoQ2hyaXMgV2lsc29uKQoK djEzOgogKiBDb21taXQgbWVzc2FnZSB0d2Vha3MuCiAqIEFkZGVkIHJlc2V0L2hhbmcvc3VzcGVu ZCB0ZXN0cy4gKENocmlzIFdpbHNvbikKICogQXNzZXJ0IHNwaW5uZXIgaXMgYnVzeS4gKENocmlz IFdpbHNvbikKICogUmVtb3ZlIHNvbWUgbW9yZSBBQkkgYXNzdW1wdGlvbnMuIChDaHJpcyBXaWxz b24pCgp2MTQ6CiAqIFVzZSBkZWZhdWx0IHJlc3VtZSB0aW1lLiAoQ2hyaXMgV2lsc29uKQogKiBU cmlnZ2VyIGhhbmcgYWZ0ZXIgcnBjcyByZWFkIGJhdGNoIGhhcyBiZWVuIHN1Ym1pdHRlZC4gKENo cmlzIFdpbHNvbikKCnYxNToKICogQWRqdXN0IGZvciB1QVBJIHJlc3RyaWN0aW9ucy4KCnYxNjoK ICogQnVpbGQgc3lzdGVtIGNoYW5nZXMuCgp2MTc6CiAqIFJlbW92ZSBhbGwgc3VidGVzdHMgd2hp Y2ggcmVhZCB0aGUgUlBDUyByZWdpc3Rlci4gKEpvb25hcyBMYWh0aW5lbikKCnYxODoKICogVGlk eSBjdXJseSBicmFjZXMuIChKb29uYXMgTGFodGluZW4pCgp2MTk6CiAqIENoZWNrIGZsYWdzL3Jz dmQgTUJaLgoKU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3 ZXJsaW5AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVy c3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+ICMgdjE0ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5s YWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAg fCAgIDEgKwogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgfCAgIDMgKwogdGVzdHMvaTkxNS9n ZW1fY3R4X3BhcmFtLmMgfCAgIDQgKy0KIHRlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMgIHwgNTQx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxk ICAgICAgICAgIHwgICA4ICsKIDUgZmlsZXMgY2hhbmdlZCwgNTU2IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5j CgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQppbmRl eCA0OGQ3NzUzNWI2YmQuLjQyNDYzYmRlN2YzMCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUu YW0KKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KQEAgLTExMSw2ICsxMTEsNyBAQCBnZW1fY2xvc2Vf cmFjZV9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQogZ2VtX2Nsb3NlX3Jh Y2VfTERBREQgPSAkKExEQUREKSAtbHB0aHJlYWQKIGdlbV9jdHhfdGhyYXNoX0NGTEFHUyA9ICQo QU1fQ0ZMQUdTKSAkKFRIUkVBRF9DRkxBR1MpCiBnZW1fY3R4X3RocmFzaF9MREFERCA9ICQoTERB REQpIC1scHRocmVhZAorZ2VtX2N0eF9zc2V1X0xEQUREID0gJChMREFERCkgJCh0b3BfYnVpbGRk aXIpL2xpYi9saWJpZ3RfcGVyZi5sYQogZ2VtX2V4ZWNfY2FwdHVyZV9MREFERCA9ICQoTERBREQp IC1segogZ2VtX2V4ZWNfcGFyYWxsZWxfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoVEhSRUFEX0NG TEFHUykKIGdlbV9leGVjX3BhcmFsbGVsX0xEQUREID0gJChMREFERCkgLWxwdGhyZWFkCmRpZmYg LS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpp bmRleCBlZWRkZTFlODE3Y2IuLjNkZmViNWI2NzI3NCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZp bGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0xNjEsNiArMTYxLDkg QEAgZ2VtX2N0eF9pc29sYXRpb25fU09VUkNFUyA9IGk5MTUvZ2VtX2N0eF9pc29sYXRpb24uYwog VEVTVFNfcHJvZ3MgKz0gZ2VtX2N0eF9wYXJhbQogZ2VtX2N0eF9wYXJhbV9TT1VSQ0VTID0gaTkx NS9nZW1fY3R4X3BhcmFtLmMKIAorVEVTVFNfcHJvZ3MgKz0gZ2VtX2N0eF9zc2V1CitnZW1fY3R4 X3NzZXVfU09VUkNFUyA9IGk5MTUvZ2VtX2N0eF9zc2V1LmMKKwogVEVTVFNfcHJvZ3MgKz0gZ2Vt X2N0eF9zd2l0Y2gKIGdlbV9jdHhfc3dpdGNoX1NPVVJDRVMgPSBpOTE1L2dlbV9jdHhfc3dpdGNo LmMKIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY3R4X3BhcmFtLmMgYi90ZXN0cy9pOTE1 L2dlbV9jdHhfcGFyYW0uYwppbmRleCAwYmJjNWVmZmJmOWYuLmFjYzFlNjI5Nzc1MCAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fY3R4X3BhcmFtLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fY3R4 X3BhcmFtLmMKQEAgLTI5NCwxMSArMjk0LDEzIEBAIGlndF9tYWluCiAJCQlzZXRfcHJpb3JpdHko ZmQpOwogCX0KIAorCS8qIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVIHRlc3RzIGFyZSBsb2NhdGVk IGluIGdlbV9jdHhfc3NldS5jICovCisKIAkvKiBOT1RFOiBUaGlzIHRlc3RjYXNlIGludGVudGlv bmFsbHkgdGVzdHMgZm9yIHRoZSBuZXh0IGZyZWUgcGFyYW1ldGVyCiAJICogdG8gY2F0Y2ggQUJJ IGV4dGVuc2lvbnMuIERvbid0ICJmaXgiIHRoaXMgdGVzdGNhc2Ugd2l0aG91dCBhZGRpbmcgYWxs CiAJICogdGhlIHRlc3RzIGZvciB0aGUgbmV3IHBhcmFtIGZpcnN0LgogCSAqLwotCWFyZy5wYXJh bSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWSArIDE7CisJYXJnLnBhcmFtID0gSTkxNV9D T05URVhUX1BBUkFNX1NTRVUgKyAxOwogCiAJaWd0X3N1YnRlc3QoImludmFsaWQtcGFyYW0tZ2V0 IikgewogCQlhcmcuY3R4X2lkID0gY3R4OwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY3R4 X3NzZXUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi41MjYwMGE5Mjg2OTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0 cy9pOTE1L2dlbV9jdHhfc3NldS5jCkBAIC0wLDAgKzEsNTQxIEBACisvKgorICogQ29weXJpZ2h0 IMKpIDIwMTctMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MK KyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgTGlvbmVsIExhbmR3 ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgorICoKKyAqLworCisjaW5jbHVk ZSAiaWd0LmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgor I2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dGltZS5o PgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKworI2luY2x1 ZGUgImlndF9kdW1teWxvYWQuaCIKKyNpbmNsdWRlICJpZ3RfcGVyZi5oIgorI2luY2x1ZGUgImln dF9zeXNmcy5oIgorI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisKK0lHVF9URVNUX0RFU0NS SVBUSU9OKCJUZXN0IGNvbnRleHQgcmVuZGVyIHBvd2VyZ2F0aW5nIHByb2dyYW1taW5nLiIpOwor CitzdGF0aWMgdW5zaWduZWQgaW50IF9faW50ZWxfZ2VuX18sIF9faW50ZWxfZGV2aWRfXzsKK3N0 YXRpYyB1aW50NjRfdCBfX3NsaWNlX21hc2tfXywgX19zdWJzbGljZV9tYXNrX187CitzdGF0aWMg dW5zaWduZWQgaW50IF9fc2xpY2VfY291bnRfXywgX19zdWJzbGljZV9jb3VudF9fOworCitzdGF0 aWMgdWludDY0X3QgbWFza19taW51c19vbmUodWludDY0X3QgbWFzaykKK3sKKwl1bnNpZ25lZCBp bnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mKG1hc2spICogOCAtIDEpOyBpKyspIHsK KwkJaWYgKCgxVUxMIDw8IGkpICYgbWFzaykKKwkJCXJldHVybiBtYXNrICYgfigxVUxMIDw8IGkp OworCX0KKworCWlndF9hc3NlcnQoMCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50NjRf dCBtYXNrX3BsdXNfb25lKHVpbnQ2NF90IG1hc2spCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlm b3IgKGkgPSAwOyBpIDwgKHNpemVvZihtYXNrKSAqIDggLSAxKTsgaSsrKSB7CisJCWlmICgoKDFV TEwgPDwgaSkgJiBtYXNrKSA9PSAwKQorCQkJcmV0dXJuIG1hc2sgfCAoMVVMTCA8PCBpKTsKKwl9 CisKKwlpZ3RfYXNzZXJ0KDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgdWludDY0X3QgbWFz a19taW51cyh1aW50NjRfdCBtYXNrLCBpbnQgbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZv ciAoaSA9IDA7IGkgPCBuOyBpKyspCisJCW1hc2sgPSBtYXNrX21pbnVzX29uZShtYXNrKTsKKwor CXJldHVybiBtYXNrOworfQorCitzdGF0aWMgdWludDY0X3QgbWFza19wbHVzKHVpbnQ2NF90IG1h c2ssIGludCBuKQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IG47IGkr KykKKwkJbWFzayA9IG1hc2tfcGx1c19vbmUobWFzayk7CisKKwlyZXR1cm4gbWFzazsKK30KKwor c3RhdGljIGJvb2wKK2tlcm5lbF9oYXNfcGVyX2NvbnRleHRfc3NldV9zdXBwb3J0KGludCBmZCkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9Owor CXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5 MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuc2l6ZSA9IHNpemVvZihzc2V1KSwKKwkJLnZhbHVl ID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1KSwKKwl9OworCWludCByZXQ7CisKKwlpZiAoX19nZW1f Y29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlhcmcudmFs dWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpOworCisJcmV0ID0gX19nZW1fY29udGV4dF9zZXRf cGFyYW0oZmQsICZhcmcpOworCisJaWd0X2Fzc2VydChyZXQgPT0gMCB8fCByZXQgPT0gLUVOT0RF ViB8fCByZXQgPT0gLUVJTlZBTCk7CisKKwlyZXR1cm4gcmV0ID09IDA7Cit9CisKK3N0YXRpYyBi b29sIGhhc19lbmdpbmUoaW50IGZkLCB1bnNpZ25lZCBpbnQgY2xhc3MsIHVuc2lnbmVkIGludCBp bnN0YW5jZSkKK3sKKwlpbnQgcG11ID0gcGVyZl9pOTE1X29wZW4oSTkxNV9QTVVfRU5HSU5FX0JV U1koY2xhc3MsIGluc3RhbmNlKSk7CisKKwlpZiAocG11ID49IDApCisJCWNsb3NlKHBtdSk7CisK KwlyZXR1cm4gcG11ID49IDA7Cit9CisKKy8qCisgKiBWZXJpZnkgdGhhdCBpbnZhbGlkIGVuZ2lu ZXMgYXJlIHJlamVjdGVkIGFuZCB2YWxpZCBvbmVzIGFyZSBhY2NlcHRlZC4KKyAqLworc3RhdGlj IHZvaWQgdGVzdF9lbmdpbmVzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4 X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJLnNpemUgPSBzaXplb2Yoc3NldSksCisJ CS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSkKKwl9OworCXVuc2lnbmVkIGludCBjbGFz cywgaW5zdGFuY2U7CisJaW50IGxhc3Rfd2l0aF9lbmdpbmVzOworCisJLyogZ2V0X3BhcmFtICov CisKKwlzc2V1Lmluc3RhbmNlID0gLTE7IC8qIEFzc3VtZWQgaW52YWxpZC4gKi8KKwlpZ3RfYXNz ZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwlz c2V1LmNsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsgLyogQm90aCBpbnZhbGlkLiAq LworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlO VkFMKTsKKworCXNzZXUuaW5zdGFuY2UgPSAwOyAvKiBDbGFzcyBpbnZhbGlkLiAqLworCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwlz c2V1LmNsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSOworCisJbGFzdF93aXRoX2VuZ2lu ZXMgPSAtMTsKKwlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPCB+MDsgY2xhc3MrKykgeworCQlmb3Ig KGluc3RhbmNlID0gMDsgaW5zdGFuY2UgPCB+MDsgaW5zdGFuY2UrKykgeworCQkJaW50IHJldDsK KworCQkJc3NldS5jbGFzcyA9IGNsYXNzOworCQkJc3NldS5pbnN0YW5jZSA9IGluc3RhbmNlOwor CisJCQlyZXQgPSBfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7CisKKwkJCWlmICho YXNfZW5naW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJaWd0X2Fzc2VydF9lcShyZXQs IDApOworCQkJCWxhc3Rfd2l0aF9lbmdpbmVzID0gY2xhc3M7CisJCQl9IGVsc2UgeworCQkJCWln dF9hc3NlcnRfZXEocmV0LCAtRUlOVkFMKTsKKwkJCQlpZiAoaW5zdGFuY2UgPiA4KSAvKiBTa2lw IG92ZXIgc29tZSBpbnN0YW5jZSBob2xlcy4gKi8KKwkJCQkJYnJlYWs7CisJCQl9CisJCX0KKwor CQlpZiAoY2xhc3MgLSBsYXN0X3dpdGhfZW5naW5lcyA+IDgpIC8qIFNraXAgb3ZlciBzb21lIGNs YXNzIGhvbGVzLiAqLworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBHZXQgc29tZSBwcm9wZXIg dmFsdWVzIGJlZm9yZSB0cnlpbmcgdG8gcmVwcm9ncmFtIHRoZW0gb250bworCSAqIGFuIGludmFs aWQgZW5naW5lLgorCSAqLworCXNzZXUuY2xhc3MgPSAwOworCXNzZXUuaW5zdGFuY2UgPSAwOwor CWdlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7CisKKwkvKiBzZXRfcGFyYW0gKi8KKwor CXNzZXUuaW5zdGFuY2UgPSAtMTsgLyogQXNzdW1lZCBpbnZhbGlkLiAqLworCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCXNzZXUu Y2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEOyAvKiBCb3RoIGludmFsaWQuICovCisJ aWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwp OworCisJc3NldS5pbnN0YW5jZSA9IDA7IC8qIENsYXNzIGludmFsaWQuICovCisJaWd0X2Fzc2Vy dF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJbGFz dF93aXRoX2VuZ2luZXMgPSAtMTsKKwlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPCB+MDsgY2xhc3Mr KykgeworCQlmb3IgKGluc3RhbmNlID0gMDsgaW5zdGFuY2UgPCB+MDsgaW5zdGFuY2UrKykgewor CQkJaW50IHJldDsKKworCQkJc3NldS5jbGFzcyA9IGNsYXNzOworCQkJc3NldS5pbnN0YW5jZSA9 IGluc3RhbmNlOworCisJCQlyZXQgPSBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyk7 CisKKwkJCWlmIChoYXNfZW5naW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJaWd0X2Fz c2VydChyZXQgPT0gMCB8fCByZXQgPT0gLUVOT0RFVik7CisJCQkJbGFzdF93aXRoX2VuZ2luZXMg PSBjbGFzczsKKwkJCX0gZWxzZSB7CisJCQkJaWd0X2Fzc2VydF9lcShyZXQsIC1FSU5WQUwpOwor CQkJCWlmIChpbnN0YW5jZSA+IDgpIC8qIFNraXAgb3ZlciBzb21lIGluc3RhbmNlIGhvbGVzLiAq LworCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChjbGFzcyAtIGxhc3Rfd2l0aF9lbmdp bmVzID4gOCkgLyogU2tpcCBvdmVyIHNvbWUgY2xhc3MgaG9sZXMuICovCisJCQlicmVhazsKKwl9 CisKKwlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBhcmcuY3R4X2lkKTsKK30KKworLyoKKyAqIFZl cmlmeSB0aGF0IGludmFsaWQgYXJndW1lbnRzIGFyZSByZWplY3RlZC4KKyAqLworc3RhdGljIHZv aWQKK3Rlc3RfaW52YWxpZF9hcmdzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gYXJnID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwK KwkJLmN0eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCksCisJfTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXVuc2lnbmVkIGNoYXIgKnBh Z2VbMl07CisJdW5zaWduZWQgY2hhciAqYWRkcjsKKwl1bnNpZ25lZCBpbnQgc3o7CisKKwkvKiBn ZXQgcGFyYW0gKi8KKworCS8qIEludmFsaWQgc2l6ZS4gKi8KKwlhcmcuc2l6ZSA9IDE7CisJaWd0 X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOwor CisJLyogUXVlcnkgc2l6ZS4gKi8KKwlhcmcuc2l6ZSA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dl bV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIDApOworCXN6ID0gYXJnLnNpemU7CisKKwkv KiBCYWQgcG9pbnRlcnMuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJh bShmZCwgJmFyZyksIC1FRkFVTFQpOworCWFyZy52YWx1ZSA9IC0xOworCWlndF9hc3NlcnRfZXEo X19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUg PSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAt RUZBVUxUKTsKKworCS8qIFVubWFwcGVkLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDQwOTYsIFBS T1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBh Z2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMF0sIDAsIHNpemVvZihzc2V1KSk7 CisJbXVubWFwKHBhZ2VbMF0sIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihw YWdlWzBdKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJn KSwgLUVGQVVMVCk7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHVubWFwcGVkIGFyZWEuICovCisJcGFn ZVswXSA9IG1tYXAoMCwgODE5MiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwg LTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltdW5tYXAocGFn ZVswXSwgODE5Mik7CisJcGFnZVswXSA9IG1tYXAocGFnZVswXSwgNDA5NiwKKwkJICAgICAgIFBS T1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlp Z3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMF0sIDAsIHNp emVvZihzc2V1KSk7CisJcGFnZVsxXSA9IG1tYXAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpcGFn ZVswXSArIDQwOTYpLCA0MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBN QVBfQU5PTiB8IE1BUF9GSVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVsxXSAhPSBNQVBf RkFJTEVEKTsKKwltZW1zZXQocGFnZVsxXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwltdW5tYXAocGFn ZVsxXSwgNDA5Nik7CisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKHBhZ2VbMV0pIC0KKwkJ ICAgIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSkgKyA0Owor CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxU KTsKKwltdW5tYXAocGFnZVswXSwgNDA5Nik7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHJlYWQtb25s eSBhcmVhLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDgxOTIsIFBST1RfV1JJVEUsIE1BUF9QUklW QVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxF RCk7CisJbXVubWFwKHBhZ2VbMF0sIDgxOTIpOworCXBhZ2VbMF0gPSBtbWFwKHBhZ2VbMF0sIDQw OTYsCisJCSAgICAgICBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OIHwgTUFQX0ZJ WEVELCAtMSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9IE1BUF9GQUlMRUQpOworCW1lbXNl dChwYWdlWzBdLCAwLCBzaXplb2Yoc3NldSkpOworCXBhZ2VbMV0gPSBtbWFwKCh2b2lkICopKCh1 bnNpZ25lZCBsb25nKXBhZ2VbMF0gKyA0MDk2KSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUs IE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0 KHBhZ2VbMV0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMV0sIDAsIHNpemVvZihzc2V1 KSk7CisJaWd0X2Fzc2VydChtcHJvdGVjdChwYWdlWzFdLCA0MDk2LCBQUk9UX1JFQUQpID09IDAp OworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdlWzFdIC0gc2l6ZW9mKHNzZXUpICsg NCk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1F RkFVTFQpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKwltdW5tYXAocGFnZVsxXSwgNDA5Nik7 CisKKwkvKiBzZXQgcGFyYW0gKi8KKworCS8qIEludmFsaWQgc2l6ZXMuICovCisJYXJnLnNpemUg PSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAt RUlOVkFMKTsKKworCWFyZy5zaXplID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRf c2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisJYXJnLnNpemUgPSBzejsKKworCS8qIEJh ZCBwb2ludGVycy4gKi8KKwlhcmcudmFsdWUgPSAwOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUgPSAtMTsKKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7 CisJYXJnLnZhbHVlID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFt KGZkLCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBHZXQgdmFsaWQgU1NFVS4gKi8KKwlhcmcudmFs dWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4 dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKworCS8qIEludmFsaWQgTUJaLiAqLworCXNzZXUu ZmxhZ3MgPSAtMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAm YXJnKSwgLUVJTlZBTCk7CisJc3NldS5yc3ZkID0gLTE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCXNzZXUuZmxhZ3MgPSAwOwor CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFM KTsKKwlzc2V1LnJzdmQgPSAwOworCisJLyogVW5tYXBwZWQuICovCisJcGFnZVswXSA9IG1tYXAo MCwgNDA5NiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworCWln dF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltZW1jcHkocGFnZVswXSwgJnNzZXUs IHNpemVvZihzc2V1KSk7CisJbXVubWFwKHBhZ2VbMF0sIDQwOTYpOworCWFyZy52YWx1ZSA9IHRv X3VzZXJfcG9pbnRlcihwYWdlWzBdKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHVubWFwcGVk IGFyZWEuICovCisJcGFnZVswXSA9IG1tYXAoMCwgODE5MiwgUFJPVF9XUklURSwgTUFQX1BSSVZB VEUgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVE KTsKKwltdW5tYXAocGFnZVswXSwgODE5Mik7CisJcGFnZVswXSA9IG1tYXAocGFnZVswXSwgNDA5 NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklY RUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJcGFnZVsx XSA9IG1tYXAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpcGFnZVswXSArIDQwOTYpLCA0MDk2LAor CQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9GSVhFRCwg LTEsIDApOworCWlndF9hc3NlcnQocGFnZVsxXSAhPSBNQVBfRkFJTEVEKTsKKwlhZGRyID0gcGFn ZVsxXSAtIHNpemVvZihzc2V1KSArIDQ7CisJbWVtY3B5KGFkZHIsICZzc2V1LCBzaXplb2Yoc3Nl dSkpOworCW11bm1hcChwYWdlWzFdLCA0MDk2KTsKKwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50 ZXIoYWRkcik7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFy ZyksIC1FRkFVTFQpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKworCWdlbV9jb250ZXh0X2Rl c3Ryb3koZmQsIGFyZy5jdHhfaWQpOworfQorCisvKgorICogVmVyaWZ5IHRoYXQgZ2d0dCBtYXBw ZWQgYXJlYSBjYW4gYmUgdXNlZCBhcyB0aGUgc3NldSBwb2ludGVyLgorICovCitzdGF0aWMgdm9p ZAordGVzdF9nZ3R0X2FyZ3MoaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbV9zc2V1ICpzc2V1OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBh cmcgPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4X2lkID0g Z2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJLnNpemUgPSBzaXplb2YoKnNzZXUpLAorCX07CisJ dWludDMyX3QgYm87CisKKwlibyA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCWFyZy52YWx1ZSA9 IHRvX3VzZXJfcG9pbnRlcihnZW1fbW1hcF9fZ3R0KGZkLCBibywgNDA5NiwKKwkJCQkJCSAgUFJP VF9SRUFEIHwgUFJPVF9XUklURSkpOworCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dl dF9wYXJhbShmZCwgJmFyZyksIDApOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRf cGFyYW0oZmQsICZhcmcpLCAwKTsKKworCW11bm1hcCgodm9pZCAqKWFyZy52YWx1ZSwgNDA5Nik7 CisJZ2VtX2Nsb3NlKGZkLCBibyk7CisJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgYXJnLmN0eF9p ZCk7Cit9CisKKy8qCisgKiBWZXJpZnkgdGhhdCBpbnZhbGlkIFNTRVUgdmFsdWVzIGFyZSByZWpl Y3RlZC4KKyAqLworc3RhdGljIHZvaWQKK3Rlc3RfaW52YWxpZF9zc2V1KGludCBmZCkKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBkZXZpY2Vfc3NldSA9IHsgfTsK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVf Q09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwK KwkJLnNpemUgPSBzaXplb2Yoc3NldSksCisJfTsKKwl1bnNpZ25lZCBpbnQgaTsKKworCS8qIEZl dGNoIHRoZSBkZXZpY2UgZGVmYXVsdHMuICovCisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVy KCZkZXZpY2Vfc3NldSk7CisJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKTsKKworCWFy Zy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSk7CisKKwkvKiBUcnkgYWxsIHNsaWNlIG1h c2tzIGtub3duIHRvIGJlIGludmFsaWQuICovCisJc3NldSA9IGRldmljZV9zc2V1OworCWZvciAo aSA9IDE7IGkgPD0gKDggLSBfX3NsaWNlX2NvdW50X18pOyBpKyspIHsKKwkJc3NldS5zbGljZV9t YXNrID0gbWFza19wbHVzKF9fc2xpY2VfbWFza19fLCBpKTsKKwkJaWd0X2Fzc2VydF9lcShfX2dl bV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCX0KKworCS8qIDAgc2xp Y2VzLiAqLworCXNzZXUuc2xpY2VfbWFzayA9IDA7CisJaWd0X2Fzc2VydF9lcSgtRUlOVkFMLCBf X2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZykpOworCisJLyogVHJ5IGFsbCBzdWJzbGlj ZSBtYXNrcyBrbm93biB0byBiZSBpbnZhbGlkLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlm b3IgKGkgPSAxOyBpIDw9ICg4IC0gX19zdWJzbGljZV9jb3VudF9fKTsgaSsrKSB7CisJCXNzZXUu c3Vic2xpY2VfbWFzayA9IG1hc2tfcGx1cyhfX3N1YnNsaWNlX21hc2tfXywgaSk7CisJCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9 CisKKwkvKiAwIHN1YnNsaWNlcy4gKi8KKwlzc2V1LnN1YnNsaWNlX21hc2sgPSAwOworCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwor CS8qIFRyeSBudW1iZXIgb2YgRVVzIHN1cGVyaW9yIHRvIHRoZSBtYXggYXZhaWxhYmxlLiAqLwor CXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gZGV2aWNl X3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgKyAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCXNzZXUgPSBkZXZpY2Vfc3Nl dTsKKwlzc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0gZGV2aWNlX3NzZXUubWF4X2V1c19wZXJf c3Vic2xpY2UgKyAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQs ICZhcmcpLCAtRUlOVkFMKTsKKworCS8qIFRyeSB0byBwcm9ncmFtIDAgbWF4IEVVcy4gKi8KKwlz c2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDA7CisJaWd0 X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOwor CisJLyogTWluID4gbWF4ICovCisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUubWluX2V1c19w ZXJfc3Vic2xpY2UgPSBzc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCXNzZXUubWF4X2V1c19w ZXJfc3Vic2xpY2UgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0o ZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCWlmIChfX2ludGVsX2dlbl9fICE9IDExKQorCQlnb3Rv IG91dDsKKworCS8qIFN1YnNldCBvZiBzdWJzbGljZXMgYnV0IHNsaWNlIG1hc2sgZ3JlYXRlciB0 aGFuIG9uZS4gKi8KKwlpZiAoX19zbGljZV9jb3VudF9fID4gMSkgeworCQlzc2V1ID0gZGV2aWNl X3NzZXU7CisJCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfbWludXNfb25lKHNzZXUuc3Vic2xp Y2VfbWFzayk7CisJCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZh cmcpLCAtRUlOVkFMKTsKKwl9CisKKwkvKiBPZGQgc3Vic2xpY2VzIGFib3ZlIGZvdXIuICovCisJ c3NldSA9IGRldmljZV9zc2V1OworCXNzZXUuc2xpY2VfbWFzayA9IDB4MTsKKwlzc2V1LnN1YnNs aWNlX21hc2sgPSBtYXNrX21pbnVzX29uZShzc2V1LnN1YnNsaWNlX21hc2spOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8q IE1vcmUgdGhhbiBoYWxmIHN1YnNsaWNlcyB3aXRoIG9uZSBzbGljZS4gKi8KKwlzc2V1ID0gZGV2 aWNlX3NzZXU7CisJc3NldS5zbGljZV9tYXNrID0gMHgxOworCXNzZXUuc3Vic2xpY2VfbWFzayA9 IG1hc2tfbWludXMoc3NldS5zdWJzbGljZV9tYXNrLAorCQkJCQlfX3N1YnNsaWNlX2NvdW50X18g LyAyIC0gMSk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFy ZyksIC1FSU5WQUwpOworCisJLyogVk1FICovCisKKwkvKiBTbGljZSBjb3VudCBiZXR3ZWVuIG9u ZSBhbmQgbWF4LiAqLworCWlmIChfX3NsaWNlX2NvdW50X18gPiAyKSB7CisJCXNzZXUgPSBkZXZp Y2Vfc3NldTsKKwkJc3NldS5zbGljZV9tYXNrID0gbWFza19taW51c19vbmUoc3NldS5zbGljZV9t YXNrKTsKKwkJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyks IC1FSU5WQUwpOworCX0KKworCS8qIExlc3MgdGhhbiBoYWxmIHN1YnNsaWNlcyB3aXRoIG9uZSBz bGljZS4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5zbGljZV9tYXNrID0gMHgxOwor CXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfbWludXMoc3NldS5zdWJzbGljZV9tYXNrLAorCQkJ CQlfX3N1YnNsaWNlX2NvdW50X18gLyAyICsgMSk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250 ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCitvdXQ6CisJZ2VtX2NvbnRleHRf ZGVzdHJveShmZCwgYXJnLmN0eF9pZCk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGZkOworCisJ aWd0X2ZpeHR1cmUgeworCQlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlp Z3RfcmVxdWlyZV9nZW0oZmQpOworCisJCV9faW50ZWxfZGV2aWRfXyA9IGludGVsX2dldF9kcm1f ZGV2aWQoZmQpOworCQlfX2ludGVsX2dlbl9fID0gaW50ZWxfZ2VuKF9faW50ZWxfZGV2aWRfXyk7 CisKKwkJaWd0X3JlcXVpcmUoa2VybmVsX2hhc19wZXJfY29udGV4dF9zc2V1X3N1cHBvcnQoZmQp KTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9ncm91cCB7CisJCWlndF9maXh0dXJlIHsKKwkJCWRybV9p OTE1X2dldHBhcmFtX3QgZ3A7CisKKwkJCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9TTElDRV9NQVNL OworCQkJZ3AudmFsdWUgPSAoaW50ICopICZfX3NsaWNlX21hc2tfXzsKKwkJCWRvX2lvY3RsKGZk LCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKwkJCV9fc2xpY2VfY291bnRfXyA9IF9f YnVpbHRpbl9wb3Bjb3VudChfX3NsaWNlX21hc2tfXyk7CisKKwkJCWdwLnBhcmFtID0gSTkxNV9Q QVJBTV9TVUJTTElDRV9NQVNLOworCQkJZ3AudmFsdWUgPSAoaW50ICopICZfX3N1YnNsaWNlX21h c2tfXzsKKwkJCWRvX2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKwkJ CV9fc3Vic2xpY2VfY291bnRfXyA9CisJCQkJX19idWlsdGluX3BvcGNvdW50KF9fc3Vic2xpY2Vf bWFza19fKTsKKwkJfQorCisJCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLWFyZ3MiKQorCQkJdGVzdF9p bnZhbGlkX2FyZ3MoZmQpOworCisJCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLXNzZXUiKQorCQkJdGVz dF9pbnZhbGlkX3NzZXUoZmQpOworCisJCWlndF9zdWJ0ZXN0KCJnZ3R0LWFyZ3MiKQorCQkJdGVz dF9nZ3R0X2FyZ3MoZmQpOworCisJCWlndF9zdWJ0ZXN0KCJlbmdpbmVzIikKKwkJCXRlc3RfZW5n aW5lcyhmZCk7CisJfQorCisJaWd0X2ZpeHR1cmUgeworCQljbG9zZShmZCk7CisJfQorfQpkaWZm IC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBiOGE2 ZTYxYjM0MDQuLmY0MWY3MjRhZjhhZiAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysr IGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTI4OCw2ICsyODgsMTQgQEAgZm9yZWFjaCBwcm9nIDog Z2VtX3Byb2dzICsgZ2VuM19wcm9ncwogCXRlc3RfbGlzdCArPSBwcm9nCiBlbmRmb3JlYWNoCiAK K3Rlc3RfZXhlY3V0YWJsZXMgKz0gZXhlY3V0YWJsZSgnZ2VtX2N0eF9zc2V1JywKKwkgICBqb2lu X3BhdGhzKCdpOTE1JywgJ2dlbV9jdHhfc3NldS5jJyksCisJICAgZGVwZW5kZW5jaWVzIDogdGVz dF9kZXBzICsgWyBsaWJfaWd0X3BlcmYgXSwKKwkgICBpbnN0YWxsX2RpciA6IGxpYmV4ZWNkaXIs CisJICAgaW5zdGFsbF9ycGF0aCA6IGxpYmV4ZWNkaXJfcnBhdGhkaXIsCisJICAgaW5zdGFsbCA6 IHRydWUpCit0ZXN0X3Byb2dzICs9ICdnZW1fY3R4X3NzZXUnCisKIHRlc3RfZXhlY3V0YWJsZXMg Kz0gZXhlY3V0YWJsZSgnZ2VtX2VpbycsCiAJICAgam9pbl9wYXRocygnaTkxNScsICdnZW1fZWlv LmMnKSwKIAkgICBkZXBlbmRlbmNpZXMgOiB0ZXN0X2RlcHMgKyBbIHJlYWx0aW1lIF0sCi0tIAoy LjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmln dC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=