From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Thu, 17 Jan 2019 11:01:20 +0000 Message-Id: <20190117110122.9509-3-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190117110122.9509-1-tvrtko.ursulin@linux.intel.com> References: <20190117110122.9509-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 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 dmQgTUJaLgoKdjIwOgogKiBSZWJhc2UgZm9yIGVuZ2luZV9jbGFzcy9lbmdpbmVfaW5zdGFuY2Ug dWFwaSBjaGFuZ2UuCgp2MjE6CiAqIEZpeGVkIG1lc29uLmJ1aWxkLgoKU2lnbmVkLW9mZi1ieTog TGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpSZXZpZXdl ZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ICMgdjE0ClJldmll d2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ Ci0tLQogdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgfCAgIDEgKwogdGVzdHMvTWFrZWZpbGUu c291cmNlcyAgICAgfCAgIDMgKwogdGVzdHMvaTkxNS9nZW1fY3R4X3BhcmFtLmMgfCAgIDQgKy0K IHRlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMgIHwgNTQxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgIHwgICA4ICsKIDUgZmls ZXMgY2hhbmdlZCwgNTU2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jCgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFr ZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQppbmRleCA0OGQ3NzUzNWI2YmQuLjQyNDYzYmRl N2YzMCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFrZWZpbGUu YW0KQEAgLTExMSw2ICsxMTEsNyBAQCBnZW1fY2xvc2VfcmFjZV9DRkxBR1MgPSAkKEFNX0NGTEFH UykgJChUSFJFQURfQ0ZMQUdTKQogZ2VtX2Nsb3NlX3JhY2VfTERBREQgPSAkKExEQUREKSAtbHB0 aHJlYWQKIGdlbV9jdHhfdGhyYXNoX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKFRIUkVBRF9DRkxB R1MpCiBnZW1fY3R4X3RocmFzaF9MREFERCA9ICQoTERBREQpIC1scHRocmVhZAorZ2VtX2N0eF9z c2V1X0xEQUREID0gJChMREFERCkgJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJpZ3RfcGVyZi5sYQog Z2VtX2V4ZWNfY2FwdHVyZV9MREFERCA9ICQoTERBREQpIC1segogZ2VtX2V4ZWNfcGFyYWxsZWxf Q0ZMQUdTID0gJChBTV9DRkxBR1MpICQoVEhSRUFEX0NGTEFHUykKIGdlbV9leGVjX3BhcmFsbGVs X0xEQUREID0gJChMREFERCkgLWxwdGhyZWFkCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCA1MTllYWM3OTJiYTkuLmI0ZmUy OWUyZjI3NyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9N YWtlZmlsZS5zb3VyY2VzCkBAIC0xNjMsNiArMTYzLDkgQEAgZ2VtX2N0eF9pc29sYXRpb25fU09V UkNFUyA9IGk5MTUvZ2VtX2N0eF9pc29sYXRpb24uYwogVEVTVFNfcHJvZ3MgKz0gZ2VtX2N0eF9w YXJhbQogZ2VtX2N0eF9wYXJhbV9TT1VSQ0VTID0gaTkxNS9nZW1fY3R4X3BhcmFtLmMKIAorVEVT VFNfcHJvZ3MgKz0gZ2VtX2N0eF9zc2V1CitnZW1fY3R4X3NzZXVfU09VUkNFUyA9IGk5MTUvZ2Vt X2N0eF9zc2V1LmMKKwogVEVTVFNfcHJvZ3MgKz0gZ2VtX2N0eF9zd2l0Y2gKIGdlbV9jdHhfc3dp dGNoX1NPVVJDRVMgPSBpOTE1L2dlbV9jdHhfc3dpdGNoLmMKIApkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fY3R4X3BhcmFtLmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfcGFyYW0uYwppbmRleCAw YmJjNWVmZmJmOWYuLmFjYzFlNjI5Nzc1MCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fY3R4 X3BhcmFtLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fY3R4X3BhcmFtLmMKQEAgLTI5NCwxMSArMjk0 LDEzIEBAIGlndF9tYWluCiAJCQlzZXRfcHJpb3JpdHkoZmQpOwogCX0KIAorCS8qIEk5MTVfQ09O VEVYVF9QQVJBTV9TU0VVIHRlc3RzIGFyZSBsb2NhdGVkIGluIGdlbV9jdHhfc3NldS5jICovCisK IAkvKiBOT1RFOiBUaGlzIHRlc3RjYXNlIGludGVudGlvbmFsbHkgdGVzdHMgZm9yIHRoZSBuZXh0 IGZyZWUgcGFyYW1ldGVyCiAJICogdG8gY2F0Y2ggQUJJIGV4dGVuc2lvbnMuIERvbid0ICJmaXgi IHRoaXMgdGVzdGNhc2Ugd2l0aG91dCBhZGRpbmcgYWxsCiAJICogdGhlIHRlc3RzIGZvciB0aGUg bmV3IHBhcmFtIGZpcnN0LgogCSAqLwotCWFyZy5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9Q UklPUklUWSArIDE7CisJYXJnLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVUgKyAxOwog CiAJaWd0X3N1YnRlc3QoImludmFsaWQtcGFyYW0tZ2V0IikgewogCQlhcmcuY3R4X2lkID0gY3R4 OwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY3R4X3NzZXUuYyBiL3Rlc3RzL2k5MTUvZ2Vt X2N0eF9zc2V1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNjYw OWJlZTYxYzgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jCkBA IC0wLDAgKzEsNTQxIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKiBBdXRob3JzOgorICogICAgTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJs aW5AaW50ZWwuY29tPgorICoKKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSA8c3Rk aW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl IDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2lu Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+ CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKworI2luY2x1ZGUgImlndF9kdW1teWxvYWQuaCIKKyNp bmNsdWRlICJpZ3RfcGVyZi5oIgorI2luY2x1ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgImlv Y3RsX3dyYXBwZXJzLmgiCisKK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IGNvbnRleHQgcmVu ZGVyIHBvd2VyZ2F0aW5nIHByb2dyYW1taW5nLiIpOworCitzdGF0aWMgdW5zaWduZWQgaW50IF9f aW50ZWxfZ2VuX18sIF9faW50ZWxfZGV2aWRfXzsKK3N0YXRpYyB1aW50NjRfdCBfX3NsaWNlX21h c2tfXywgX19zdWJzbGljZV9tYXNrX187CitzdGF0aWMgdW5zaWduZWQgaW50IF9fc2xpY2VfY291 bnRfXywgX19zdWJzbGljZV9jb3VudF9fOworCitzdGF0aWMgdWludDY0X3QgbWFza19taW51c19v bmUodWludDY0X3QgbWFzaykKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkg PCAoc2l6ZW9mKG1hc2spICogOCAtIDEpOyBpKyspIHsKKwkJaWYgKCgxVUxMIDw8IGkpICYgbWFz aykKKwkJCXJldHVybiBtYXNrICYgfigxVUxMIDw8IGkpOworCX0KKworCWlndF9hc3NlcnQoMCk7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBtYXNrX3BsdXNfb25lKHVpbnQ2NF90 IG1hc2spCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgKHNpemVvZiht YXNrKSAqIDggLSAxKTsgaSsrKSB7CisJCWlmICgoKDFVTEwgPDwgaSkgJiBtYXNrKSA9PSAwKQor CQkJcmV0dXJuIG1hc2sgfCAoMVVMTCA8PCBpKTsKKwl9CisKKwlpZ3RfYXNzZXJ0KDApOworCXJl dHVybiAwOworfQorCitzdGF0aWMgdWludDY0X3QgbWFza19taW51cyh1aW50NjRfdCBtYXNrLCBp bnQgbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisJ CW1hc2sgPSBtYXNrX21pbnVzX29uZShtYXNrKTsKKworCXJldHVybiBtYXNrOworfQorCitzdGF0 aWMgdWludDY0X3QgbWFza19wbHVzKHVpbnQ2NF90IG1hc2ssIGludCBuKQoreworCXVuc2lnbmVk IGludCBpOworCisJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJbWFzayA9IG1hc2tfcGx1c19v bmUobWFzayk7CisKKwlyZXR1cm4gbWFzazsKK30KKworc3RhdGljIGJvb2wKK2tlcm5lbF9oYXNf cGVyX2NvbnRleHRfc3NldV9zdXBwb3J0KGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAor CQkuc2l6ZSA9IHNpemVvZihzc2V1KSwKKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1 KSwKKwl9OworCWludCByZXQ7CisKKwlpZiAoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZh cmcpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJnNz ZXUpOworCisJcmV0ID0gX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpOworCisJaWd0 X2Fzc2VydChyZXQgPT0gMCB8fCByZXQgPT0gLUVOT0RFViB8fCByZXQgPT0gLUVJTlZBTCk7CisK KwlyZXR1cm4gcmV0ID09IDA7Cit9CisKK3N0YXRpYyBib29sIGhhc19lbmdpbmUoaW50IGZkLCB1 bnNpZ25lZCBpbnQgY2xhc3MsIHVuc2lnbmVkIGludCBpbnN0YW5jZSkKK3sKKwlpbnQgcG11ID0g cGVyZl9pOTE1X29wZW4oSTkxNV9QTVVfRU5HSU5FX0JVU1koY2xhc3MsIGluc3RhbmNlKSk7CisK KwlpZiAocG11ID49IDApCisJCWNsb3NlKHBtdSk7CisKKwlyZXR1cm4gcG11ID49IDA7Cit9CisK Ky8qCisgKiBWZXJpZnkgdGhhdCBpbnZhbGlkIGVuZ2luZXMgYXJlIHJlamVjdGVkIGFuZCB2YWxp ZCBvbmVzIGFyZSBhY2NlcHRlZC4KKyAqLworc3RhdGljIHZvaWQgdGVzdF9lbmdpbmVzKGludCBm ZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9 OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9 IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRl KGZkKSwKKwkJLnNpemUgPSBzaXplb2Yoc3NldSksCisJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRl cigmc3NldSkKKwl9OworCXVuc2lnbmVkIGludCBjbGFzcywgaW5zdGFuY2U7CisJaW50IGxhc3Rf d2l0aF9lbmdpbmVzOworCisJLyogZ2V0X3BhcmFtICovCisKKwlzc2V1LmVuZ2luZV9pbnN0YW5j ZSA9IC0xOyAvKiBBc3N1bWVkIGludmFsaWQuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250 ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJc3NldS5lbmdpbmVfY2xhc3Mg PSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEOyAvKiBCb3RoIGludmFsaWQuICovCisJaWd0X2Fz c2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJ c3NldS5lbmdpbmVfaW5zdGFuY2UgPSAwOyAvKiBDbGFzcyBpbnZhbGlkLiAqLworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwlzc2V1 LmVuZ2luZV9jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX1JFTkRFUjsKKworCWxhc3Rfd2l0aF9l bmdpbmVzID0gLTE7CisJZm9yIChjbGFzcyA9IDA7IGNsYXNzIDwgfjA7IGNsYXNzKyspIHsKKwkJ Zm9yIChpbnN0YW5jZSA9IDA7IGluc3RhbmNlIDwgfjA7IGluc3RhbmNlKyspIHsKKwkJCWludCBy ZXQ7CisKKwkJCXNzZXUuZW5naW5lX2NsYXNzID0gY2xhc3M7CisJCQlzc2V1LmVuZ2luZV9pbnN0 YW5jZSA9IGluc3RhbmNlOworCisJCQlyZXQgPSBfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwg JmFyZyk7CisKKwkJCWlmIChoYXNfZW5naW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJ aWd0X2Fzc2VydF9lcShyZXQsIDApOworCQkJCWxhc3Rfd2l0aF9lbmdpbmVzID0gY2xhc3M7CisJ CQl9IGVsc2UgeworCQkJCWlndF9hc3NlcnRfZXEocmV0LCAtRUlOVkFMKTsKKwkJCQlpZiAoaW5z dGFuY2UgPiA4KSAvKiBTa2lwIG92ZXIgc29tZSBpbnN0YW5jZSBob2xlcy4gKi8KKwkJCQkJYnJl YWs7CisJCQl9CisJCX0KKworCQlpZiAoY2xhc3MgLSBsYXN0X3dpdGhfZW5naW5lcyA+IDgpIC8q IFNraXAgb3ZlciBzb21lIGNsYXNzIGhvbGVzLiAqLworCQkJYnJlYWs7CisJfQorCisJLyoKKwkg KiBHZXQgc29tZSBwcm9wZXIgdmFsdWVzIGJlZm9yZSB0cnlpbmcgdG8gcmVwcm9ncmFtIHRoZW0g b250bworCSAqIGFuIGludmFsaWQgZW5naW5lLgorCSAqLworCXNzZXUuZW5naW5lX2NsYXNzID0g MDsKKwlzc2V1LmVuZ2luZV9pbnN0YW5jZSA9IDA7CisJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZk LCAmYXJnKTsKKworCS8qIHNldF9wYXJhbSAqLworCisJc3NldS5lbmdpbmVfaW5zdGFuY2UgPSAt MTsgLyogQXNzdW1lZCBpbnZhbGlkLiAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9z ZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCXNzZXUuZW5naW5lX2NsYXNzID0gSTkx NV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsgLyogQm90aCBpbnZhbGlkLiAqLworCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCXNzZXUu ZW5naW5lX2luc3RhbmNlID0gMDsgLyogQ2xhc3MgaW52YWxpZC4gKi8KKwlpZ3RfYXNzZXJ0X2Vx KF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwlsYXN0X3dp dGhfZW5naW5lcyA9IC0xOworCWZvciAoY2xhc3MgPSAwOyBjbGFzcyA8IH4wOyBjbGFzcysrKSB7 CisJCWZvciAoaW5zdGFuY2UgPSAwOyBpbnN0YW5jZSA8IH4wOyBpbnN0YW5jZSsrKSB7CisJCQlp bnQgcmV0OworCisJCQlzc2V1LmVuZ2luZV9jbGFzcyA9IGNsYXNzOworCQkJc3NldS5lbmdpbmVf aW5zdGFuY2UgPSBpbnN0YW5jZTsKKworCQkJcmV0ID0gX19nZW1fY29udGV4dF9zZXRfcGFyYW0o ZmQsICZhcmcpOworCisJCQlpZiAoaGFzX2VuZ2luZShmZCwgY2xhc3MsIGluc3RhbmNlKSkgewor CQkJCWlndF9hc3NlcnQocmV0ID09IDAgfHwgcmV0ID09IC1FTk9ERVYpOworCQkJCWxhc3Rfd2l0 aF9lbmdpbmVzID0gY2xhc3M7CisJCQl9IGVsc2UgeworCQkJCWlndF9hc3NlcnRfZXEocmV0LCAt RUlOVkFMKTsKKwkJCQlpZiAoaW5zdGFuY2UgPiA4KSAvKiBTa2lwIG92ZXIgc29tZSBpbnN0YW5j ZSBob2xlcy4gKi8KKwkJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoY2xhc3MgLSBsYXN0 X3dpdGhfZW5naW5lcyA+IDgpIC8qIFNraXAgb3ZlciBzb21lIGNsYXNzIGhvbGVzLiAqLworCQkJ YnJlYWs7CisJfQorCisJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgYXJnLmN0eF9pZCk7Cit9CisK Ky8qCisgKiBWZXJpZnkgdGhhdCBpbnZhbGlkIGFyZ3VtZW50cyBhcmUgcmVqZWN0ZWQuCisgKi8K K3N0YXRpYyB2b2lkCit0ZXN0X2ludmFsaWRfYXJncyhpbnQgZmQpCit7CisJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BB UkFNX1NTRVUsCisJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpLAorCX07CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgc3NldSA9IHsgfTsKKwl1bnNpZ25l ZCBjaGFyICpwYWdlWzJdOworCXVuc2lnbmVkIGNoYXIgKmFkZHI7CisJdW5zaWduZWQgaW50IHN6 OworCisJLyogZ2V0IHBhcmFtICovCisKKwkvKiBJbnZhbGlkIHNpemUuICovCisJYXJnLnNpemUg PSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAt RUlOVkFMKTsKKworCS8qIFF1ZXJ5IHNpemUuICovCisJYXJnLnNpemUgPSAwOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKwlzeiA9IGFyZy5z aXplOworCisJLyogQmFkIHBvaW50ZXJzLiAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4 dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUgPSAtMTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisJ YXJnLnZhbHVlID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZk LCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBVbm1hcHBlZC4gKi8KKwlwYWdlWzBdID0gbW1hcCgw LCA0MDk2LCBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwgMCk7CisJaWd0 X2Fzc2VydChwYWdlWzBdICE9IE1BUF9GQUlMRUQpOworCW1lbXNldChwYWdlWzBdLCAwLCBzaXpl b2Yoc3NldSkpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKwlhcmcudmFsdWUgPSB0b191c2Vy X3BvaW50ZXIocGFnZVswXSk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJh bShmZCwgJmFyZyksIC1FRkFVTFQpOworCisJLyogU3RyYWRkbGUgaW50byB1bm1hcHBlZCBhcmVh LiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDgxOTIsIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwg TUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJ bXVubWFwKHBhZ2VbMF0sIDgxOTIpOworCXBhZ2VbMF0gPSBtbWFwKHBhZ2VbMF0sIDQwOTYsCisJ CSAgICAgICBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OIHwgTUFQX0ZJWEVELCAt MSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9IE1BUF9GQUlMRUQpOworCW1lbXNldChwYWdl WzBdLCAwLCBzaXplb2Yoc3NldSkpOworCXBhZ2VbMV0gPSBtbWFwKCh2b2lkICopKCh1bnNpZ25l ZCBsb25nKXBhZ2VbMF0gKyA0MDk2KSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9Q UklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2Vb MV0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMV0sIDAsIHNpemVvZihzc2V1KSk7CisJ bXVubWFwKHBhZ2VbMV0sIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdl WzFdKSAtCisJCSAgICBzaXplb2Yoc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3Nz ZXUpICsgNDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJn KSwgLUVGQVVMVCk7CisJbXVubWFwKHBhZ2VbMF0sIDQwOTYpOworCisJLyogU3RyYWRkbGUgaW50 byByZWFkLW9ubHkgYXJlYS4gKi8KKwlwYWdlWzBdID0gbW1hcCgwLCA4MTkyLCBQUk9UX1dSSVRF LCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9 IE1BUF9GQUlMRUQpOworCW11bm1hcChwYWdlWzBdLCA4MTkyKTsKKwlwYWdlWzBdID0gbW1hcChw YWdlWzBdLCA0MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5P TiB8IE1BUF9GSVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVE KTsKKwltZW1zZXQocGFnZVswXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwlwYWdlWzFdID0gbW1hcCgo dm9pZCAqKSgodW5zaWduZWQgbG9uZylwYWdlWzBdICsgNDA5NiksIDQwOTYsCisJCSAgICAgICBQ Uk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OIHwgTUFQX0ZJWEVELCAtMSwgMCk7CisJ aWd0X2Fzc2VydChwYWdlWzFdICE9IE1BUF9GQUlMRUQpOworCW1lbXNldChwYWdlWzFdLCAwLCBz aXplb2Yoc3NldSkpOworCWlndF9hc3NlcnQobXByb3RlY3QocGFnZVsxXSwgNDA5NiwgUFJPVF9S RUFEKSA9PSAwKTsKKwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIocGFnZVsxXSAtIHNpemVv Zihzc2V1KSArIDQpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQs ICZhcmcpLCAtRUZBVUxUKTsKKwltdW5tYXAocGFnZVswXSwgNDA5Nik7CisJbXVubWFwKHBhZ2Vb MV0sIDQwOTYpOworCisJLyogc2V0IHBhcmFtICovCisKKwkvKiBJbnZhbGlkIHNpemVzLiAqLwor CWFyZy5zaXplID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZk LCAmYXJnKSwgLUVJTlZBTCk7CisKKwlhcmcuc2l6ZSA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dl bV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCWFyZy5zaXplID0gc3o7 CisKKwkvKiBCYWQgcG9pbnRlcnMuICovCisJYXJnLnZhbHVlID0gMDsKKwlpZ3RfYXNzZXJ0X2Vx KF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisJYXJnLnZhbHVl ID0gLTE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyks IC1FRkFVTFQpOworCWFyZy52YWx1ZSA9IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0 X3NldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCisJLyogR2V0IHZhbGlkIFNTRVUuICov CisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1KTsKKwlpZ3RfYXNzZXJ0X2VxKF9f Z2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgMCk7CisKKwkvKiBJbnZhbGlkIE1CWi4g Ki8KKwlzc2V1LmZsYWdzID0gLTE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9w YXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCXNzZXUucnN2ZCA9IC0xOworCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwlzc2V1LmZs YWdzID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJn KSwgLUVJTlZBTCk7CisJc3NldS5yc3ZkID0gMDsKKworCS8qIFVubWFwcGVkLiAqLworCXBhZ2Vb MF0gPSBtbWFwKDAsIDQwOTYsIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0x LCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtY3B5KHBhZ2Vb MF0sICZzc2V1LCBzaXplb2Yoc3NldSkpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKwlhcmcu dmFsdWUgPSB0b191c2VyX3BvaW50ZXIocGFnZVswXSk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCisJLyogU3RyYWRkbGUgaW50 byB1bm1hcHBlZCBhcmVhLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDgxOTIsIFBST1RfV1JJVEUs IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0g TUFQX0ZBSUxFRCk7CisJbXVubWFwKHBhZ2VbMF0sIDgxOTIpOworCXBhZ2VbMF0gPSBtbWFwKHBh Z2VbMF0sIDQwOTYsCisJCSAgICAgICBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9O IHwgTUFQX0ZJWEVELCAtMSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9IE1BUF9GQUlMRUQp OworCXBhZ2VbMV0gPSBtbWFwKCh2b2lkICopKCh1bnNpZ25lZCBsb25nKXBhZ2VbMF0gKyA0MDk2 KSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBN QVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMV0gIT0gTUFQX0ZBSUxFRCk7CisJ YWRkciA9IHBhZ2VbMV0gLSBzaXplb2Yoc3NldSkgKyA0OworCW1lbWNweShhZGRyLCAmc3NldSwg c2l6ZW9mKHNzZXUpKTsKKwltdW5tYXAocGFnZVsxXSwgNDA5Nik7CisJYXJnLnZhbHVlID0gdG9f dXNlcl9wb2ludGVyKGFkZHIpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFy YW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwltdW5tYXAocGFnZVswXSwgNDA5Nik7CisKKwlnZW1f Y29udGV4dF9kZXN0cm95KGZkLCBhcmcuY3R4X2lkKTsKK30KKworLyoKKyAqIFZlcmlmeSB0aGF0 IGdndHQgbWFwcGVkIGFyZWEgY2FuIGJlIHVzZWQgYXMgdGhlIHNzZXUgcG9pbnRlci4KKyAqLwor c3RhdGljIHZvaWQKK3Rlc3RfZ2d0dF9hcmdzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW1fc3NldSAqc3NldTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gYXJnID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwKKwkJ LmN0eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCksCisJCS5zaXplID0gc2l6ZW9mKCpzc2V1 KSwKKwl9OworCXVpbnQzMl90IGJvOworCisJYm8gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwlh cmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoZ2VtX21tYXBfX2d0dChmZCwgYm8sIDQwOTYsCisJ CQkJCQkgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKTsKKworCWlndF9hc3NlcnRfZXEoX19nZW1f Y29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgMCk7CisKKwltdW5tYXAoKHZvaWQgKilhcmcudmFs dWUsIDQwOTYpOworCWdlbV9jbG9zZShmZCwgYm8pOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQs IGFyZy5jdHhfaWQpOworfQorCisvKgorICogVmVyaWZ5IHRoYXQgaW52YWxpZCBTU0VVIHZhbHVl cyBhcmUgcmVqZWN0ZWQuCisgKi8KK3N0YXRpYyB2b2lkCit0ZXN0X2ludmFsaWRfc3NldShpbnQg ZmQpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgZGV2aWNlX3Nz ZXUgPSB7IH07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgc3NldSA9 IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gYXJnID0geworCQkucGFy YW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwKKwkJLmN0eF9pZCA9IGdlbV9jb250ZXh0X2Ny ZWF0ZShmZCksCisJCS5zaXplID0gc2l6ZW9mKHNzZXUpLAorCX07CisJdW5zaWduZWQgaW50IGk7 CisKKwkvKiBGZXRjaCB0aGUgZGV2aWNlIGRlZmF1bHRzLiAqLworCWFyZy52YWx1ZSA9IHRvX3Vz ZXJfcG9pbnRlcigmZGV2aWNlX3NzZXUpOworCWdlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFy Zyk7CisKKwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpOworCisJLyogVHJ5IGFs bCBzbGljZSBtYXNrcyBrbm93biB0byBiZSBpbnZhbGlkLiAqLworCXNzZXUgPSBkZXZpY2Vfc3Nl dTsKKwlmb3IgKGkgPSAxOyBpIDw9ICg4IC0gX19zbGljZV9jb3VudF9fKTsgaSsrKSB7CisJCXNz ZXUuc2xpY2VfbWFzayA9IG1hc2tfcGx1cyhfX3NsaWNlX21hc2tfXywgaSk7CisJCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9CisK KwkvKiAwIHNsaWNlcy4gKi8KKwlzc2V1LnNsaWNlX21hc2sgPSAwOworCWlndF9hc3NlcnRfZXEo LUVJTlZBTCwgX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpKTsKKworCS8qIFRyeSBh bGwgc3Vic2xpY2UgbWFza3Mga25vd24gdG8gYmUgaW52YWxpZC4gKi8KKwlzc2V1ID0gZGV2aWNl X3NzZXU7CisJZm9yIChpID0gMTsgaSA8PSAoOCAtIF9fc3Vic2xpY2VfY291bnRfXyk7IGkrKykg eworCQlzc2V1LnN1YnNsaWNlX21hc2sgPSBtYXNrX3BsdXMoX19zdWJzbGljZV9tYXNrX18sIGkp OworCQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJ TlZBTCk7CisJfQorCisJLyogMCBzdWJzbGljZXMuICovCisJc3NldS5zdWJzbGljZV9tYXNrID0g MDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJ TlZBTCk7CisKKwkvKiBUcnkgbnVtYmVyIG9mIEVVcyBzdXBlcmlvciB0byB0aGUgbWF4IGF2YWls YWJsZS4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5taW5fZXVzX3Blcl9zdWJzbGlj ZSA9IGRldmljZV9zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlICsgMTsKKwlpZ3RfYXNzZXJ0X2Vx KF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwlzc2V1ID0g ZGV2aWNlX3NzZXU7CisJc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IGRldmljZV9zc2V1Lm1h eF9ldXNfcGVyX3N1YnNsaWNlICsgMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwkvKiBUcnkgdG8gcHJvZ3JhbSAwIG1heCBF VXMuICovCisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2Ug PSAwOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAt RUlOVkFMKTsKKworCS8qIE1pbiA+IG1heCAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1 Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKKwlzc2V1 Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRf c2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwlpZiAoX19pbnRlbF9nZW5fXyAhPSAx MSkKKwkJZ290byBvdXQ7CisKKwkvKiBTdWJzZXQgb2Ygc3Vic2xpY2VzIGJ1dCBzbGljZSBtYXNr IGdyZWF0ZXIgdGhhbiBvbmUuICovCisJaWYgKF9fc2xpY2VfY291bnRfXyA+IDEpIHsKKwkJc3Nl dSA9IGRldmljZV9zc2V1OworCQlzc2V1LnN1YnNsaWNlX21hc2sgPSBtYXNrX21pbnVzX29uZShz c2V1LnN1YnNsaWNlX21hc2spOworCQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3Bh cmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisJfQorCisJLyogT2RkIHN1YnNsaWNlcyBhYm92ZSBm b3VyLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1LnNsaWNlX21hc2sgPSAweDE7CisJ c3NldS5zdWJzbGljZV9tYXNrID0gbWFza19taW51c19vbmUoc3NldS5zdWJzbGljZV9tYXNrKTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZB TCk7CisKKwkvKiBNb3JlIHRoYW4gaGFsZiBzdWJzbGljZXMgd2l0aCBvbmUgc2xpY2UuICovCisJ c3NldSA9IGRldmljZV9zc2V1OworCXNzZXUuc2xpY2VfbWFzayA9IDB4MTsKKwlzc2V1LnN1YnNs aWNlX21hc2sgPSBtYXNrX21pbnVzKHNzZXUuc3Vic2xpY2VfbWFzaywKKwkJCQkJX19zdWJzbGlj ZV9jb3VudF9fIC8gMiAtIDEpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFy YW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8qIFZNRSAqLworCisJLyogU2xpY2UgY291bnQg YmV0d2VlbiBvbmUgYW5kIG1heC4gKi8KKwlpZiAoX19zbGljZV9jb3VudF9fID4gMikgeworCQlz c2V1ID0gZGV2aWNlX3NzZXU7CisJCXNzZXUuc2xpY2VfbWFzayA9IG1hc2tfbWludXNfb25lKHNz ZXUuc2xpY2VfbWFzayk7CisJCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0o ZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9CisKKwkvKiBMZXNzIHRoYW4gaGFsZiBzdWJzbGljZXMg d2l0aCBvbmUgc2xpY2UuICovCisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUuc2xpY2VfbWFz ayA9IDB4MTsKKwlzc2V1LnN1YnNsaWNlX21hc2sgPSBtYXNrX21pbnVzKHNzZXUuc3Vic2xpY2Vf bWFzaywKKwkJCQkJX19zdWJzbGljZV9jb3VudF9fIC8gMiArIDEpOworCWlndF9hc3NlcnRfZXEo X19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworb3V0OgorCWdl bV9jb250ZXh0X2Rlc3Ryb3koZmQsIGFyZy5jdHhfaWQpOworfQorCitpZ3RfbWFpbgoreworCWlu dCBmZDsKKworCWlndF9maXh0dXJlIHsKKwkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lO VEVMKTsKKwkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKworCQlfX2ludGVsX2RldmlkX18gPSBpbnRl bF9nZXRfZHJtX2RldmlkKGZkKTsKKwkJX19pbnRlbF9nZW5fXyA9IGludGVsX2dlbihfX2ludGVs X2RldmlkX18pOworCisJCWlndF9yZXF1aXJlKGtlcm5lbF9oYXNfcGVyX2NvbnRleHRfc3NldV9z dXBwb3J0KGZkKSk7CisJfQorCisJaWd0X3N1YnRlc3RfZ3JvdXAgeworCQlpZ3RfZml4dHVyZSB7 CisJCQlkcm1faTkxNV9nZXRwYXJhbV90IGdwOworCisJCQlncC5wYXJhbSA9IEk5MTVfUEFSQU1f U0xJQ0VfTUFTSzsKKwkJCWdwLnZhbHVlID0gKGludCAqKSAmX19zbGljZV9tYXNrX187CisJCQlk b19pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7CisJCQlfX3NsaWNlX2Nv dW50X18gPSBfX2J1aWx0aW5fcG9wY291bnQoX19zbGljZV9tYXNrX18pOworCisJCQlncC5wYXJh bSA9IEk5MTVfUEFSQU1fU1VCU0xJQ0VfTUFTSzsKKwkJCWdwLnZhbHVlID0gKGludCAqKSAmX19z dWJzbGljZV9tYXNrX187CisJCQlkb19pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0s ICZncCk7CisJCQlfX3N1YnNsaWNlX2NvdW50X18gPQorCQkJCV9fYnVpbHRpbl9wb3Bjb3VudChf X3N1YnNsaWNlX21hc2tfXyk7CisJCX0KKworCQlpZ3Rfc3VidGVzdCgiaW52YWxpZC1hcmdzIikK KwkJCXRlc3RfaW52YWxpZF9hcmdzKGZkKTsKKworCQlpZ3Rfc3VidGVzdCgiaW52YWxpZC1zc2V1 IikKKwkJCXRlc3RfaW52YWxpZF9zc2V1KGZkKTsKKworCQlpZ3Rfc3VidGVzdCgiZ2d0dC1hcmdz IikKKwkJCXRlc3RfZ2d0dF9hcmdzKGZkKTsKKworCQlpZ3Rfc3VidGVzdCgiZW5naW5lcyIpCisJ CQl0ZXN0X2VuZ2luZXMoZmQpOworCX0KKworCWlndF9maXh0dXJlIHsKKwkJY2xvc2UoZmQpOwor CX0KK30KZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQK aW5kZXggZTE0YWIyYjQ1N2U4Li41ODUyYmRjOGY1OWQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29u LmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0yODksNiArMjg5LDE0IEBAIGZvcmVh Y2ggcHJvZyA6IGdlbV9wcm9ncyArIGdlbjNfcHJvZ3MKIAl0ZXN0X2xpc3QgKz0gcHJvZwogZW5k Zm9yZWFjaAogCit0ZXN0X2V4ZWN1dGFibGVzICs9IGV4ZWN1dGFibGUoJ2dlbV9jdHhfc3NldScs CisJICAgam9pbl9wYXRocygnaTkxNScsICdnZW1fY3R4X3NzZXUuYycpLAorCSAgIGRlcGVuZGVu Y2llcyA6IHRlc3RfZGVwcyArIFsgbGliX2lndF9wZXJmIF0sCisJICAgaW5zdGFsbF9kaXIgOiBs aWJleGVjZGlyLAorCSAgIGluc3RhbGxfcnBhdGggOiBsaWJleGVjZGlyX3JwYXRoZGlyLAorCSAg IGluc3RhbGwgOiB0cnVlKQordGVzdF9saXN0ICs9ICdnZW1fY3R4X3NzZXUnCisKIHRlc3RfZXhl Y3V0YWJsZXMgKz0gZXhlY3V0YWJsZSgnZ2VtX2VpbycsCiAJICAgam9pbl9wYXRocygnaTkxNScs ICdnZW1fZWlvLmMnKSwKIAkgICBkZXBlbmRlbmNpZXMgOiB0ZXN0X2RlcHMgKyBbIHJlYWx0aW1l IF0sCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=