From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Tue, 8 Jan 2019 11:24:48 +0000 Message-Id: <20190108112450.29108-3-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190108112450.29108-1-tvrtko.ursulin@linux.intel.com> References: <20190108112450.29108-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+ICMgdjE4Ci0tLQogdGVzdHMvTWFrZWZpbGUuYW0gICAg ICAgICAgfCAgIDEgKwogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgfCAgIDMgKwogdGVzdHMv aTkxNS9nZW1fY3R4X3BhcmFtLmMgfCAgIDQgKy0KIHRlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMg IHwgNTQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29u LmJ1aWxkICAgICAgICAgIHwgICA4ICsKIDUgZmlsZXMgY2hhbmdlZCwgNTU2IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9jdHhf c3NldS5jCgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5h bQppbmRleCA0OGQ3NzUzNWI2YmQuLjQyNDYzYmRlN2YzMCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFr ZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KQEAgLTExMSw2ICsxMTEsNyBAQCBnZW1f Y2xvc2VfcmFjZV9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQogZ2VtX2Ns b3NlX3JhY2VfTERBREQgPSAkKExEQUREKSAtbHB0aHJlYWQKIGdlbV9jdHhfdGhyYXNoX0NGTEFH UyA9ICQoQU1fQ0ZMQUdTKSAkKFRIUkVBRF9DRkxBR1MpCiBnZW1fY3R4X3RocmFzaF9MREFERCA9 ICQoTERBREQpIC1scHRocmVhZAorZ2VtX2N0eF9zc2V1X0xEQUREID0gJChMREFERCkgJCh0b3Bf YnVpbGRkaXIpL2xpYi9saWJpZ3RfcGVyZi5sYQogZ2VtX2V4ZWNfY2FwdHVyZV9MREFERCA9ICQo TERBREQpIC1segogZ2VtX2V4ZWNfcGFyYWxsZWxfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoVEhS RUFEX0NGTEFHUykKIGdlbV9leGVjX3BhcmFsbGVsX0xEQUREID0gJChMREFERCkgLWxwdGhyZWFk CmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291 cmNlcwppbmRleCBlZWRkZTFlODE3Y2IuLjNkZmViNWI2NzI3NCAxMDA2NDQKLS0tIGEvdGVzdHMv TWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0xNjEsNiAr MTYxLDkgQEAgZ2VtX2N0eF9pc29sYXRpb25fU09VUkNFUyA9IGk5MTUvZ2VtX2N0eF9pc29sYXRp b24uYwogVEVTVFNfcHJvZ3MgKz0gZ2VtX2N0eF9wYXJhbQogZ2VtX2N0eF9wYXJhbV9TT1VSQ0VT ID0gaTkxNS9nZW1fY3R4X3BhcmFtLmMKIAorVEVTVFNfcHJvZ3MgKz0gZ2VtX2N0eF9zc2V1Citn ZW1fY3R4X3NzZXVfU09VUkNFUyA9IGk5MTUvZ2VtX2N0eF9zc2V1LmMKKwogVEVTVFNfcHJvZ3Mg Kz0gZ2VtX2N0eF9zd2l0Y2gKIGdlbV9jdHhfc3dpdGNoX1NPVVJDRVMgPSBpOTE1L2dlbV9jdHhf c3dpdGNoLmMKIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY3R4X3BhcmFtLmMgYi90ZXN0 cy9pOTE1L2dlbV9jdHhfcGFyYW0uYwppbmRleCAwYmJjNWVmZmJmOWYuLmFjYzFlNjI5Nzc1MCAx MDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fY3R4X3BhcmFtLmMKKysrIGIvdGVzdHMvaTkxNS9n ZW1fY3R4X3BhcmFtLmMKQEAgLTI5NCwxMSArMjk0LDEzIEBAIGlndF9tYWluCiAJCQlzZXRfcHJp b3JpdHkoZmQpOwogCX0KIAorCS8qIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVIHRlc3RzIGFyZSBs b2NhdGVkIGluIGdlbV9jdHhfc3NldS5jICovCisKIAkvKiBOT1RFOiBUaGlzIHRlc3RjYXNlIGlu dGVudGlvbmFsbHkgdGVzdHMgZm9yIHRoZSBuZXh0IGZyZWUgcGFyYW1ldGVyCiAJICogdG8gY2F0 Y2ggQUJJIGV4dGVuc2lvbnMuIERvbid0ICJmaXgiIHRoaXMgdGVzdGNhc2Ugd2l0aG91dCBhZGRp bmcgYWxsCiAJICogdGhlIHRlc3RzIGZvciB0aGUgbmV3IHBhcmFtIGZpcnN0LgogCSAqLwotCWFy Zy5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWSArIDE7CisJYXJnLnBhcmFtID0g STkxNV9DT05URVhUX1BBUkFNX1NTRVUgKyAxOwogCiAJaWd0X3N1YnRlc3QoImludmFsaWQtcGFy YW0tZ2V0IikgewogCQlhcmcuY3R4X2lkID0gY3R4OwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9n ZW1fY3R4X3NzZXUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MjYwMGE5Mjg2OTMKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jCkBAIC0wLDAgKzEsNTQxIEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTctMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgTGlvbmVs IExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgorICoKKyAqLworCisj aW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxmY250 bC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8 dGltZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKwor I2luY2x1ZGUgImlndF9kdW1teWxvYWQuaCIKKyNpbmNsdWRlICJpZ3RfcGVyZi5oIgorI2luY2x1 ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisKK0lHVF9URVNU X0RFU0NSSVBUSU9OKCJUZXN0IGNvbnRleHQgcmVuZGVyIHBvd2VyZ2F0aW5nIHByb2dyYW1taW5n LiIpOworCitzdGF0aWMgdW5zaWduZWQgaW50IF9faW50ZWxfZ2VuX18sIF9faW50ZWxfZGV2aWRf XzsKK3N0YXRpYyB1aW50NjRfdCBfX3NsaWNlX21hc2tfXywgX19zdWJzbGljZV9tYXNrX187Citz dGF0aWMgdW5zaWduZWQgaW50IF9fc2xpY2VfY291bnRfXywgX19zdWJzbGljZV9jb3VudF9fOwor CitzdGF0aWMgdWludDY0X3QgbWFza19taW51c19vbmUodWludDY0X3QgbWFzaykKK3sKKwl1bnNp Z25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mKG1hc2spICogOCAtIDEpOyBp KyspIHsKKwkJaWYgKCgxVUxMIDw8IGkpICYgbWFzaykKKwkJCXJldHVybiBtYXNrICYgfigxVUxM IDw8IGkpOworCX0KKworCWlndF9hc3NlcnQoMCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1 aW50NjRfdCBtYXNrX3BsdXNfb25lKHVpbnQ2NF90IG1hc2spCit7CisJdW5zaWduZWQgaW50IGk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihtYXNrKSAqIDggLSAxKTsgaSsrKSB7CisJCWlm ICgoKDFVTEwgPDwgaSkgJiBtYXNrKSA9PSAwKQorCQkJcmV0dXJuIG1hc2sgfCAoMVVMTCA8PCBp KTsKKwl9CisKKwlpZ3RfYXNzZXJ0KDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgdWludDY0 X3QgbWFza19taW51cyh1aW50NjRfdCBtYXNrLCBpbnQgbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsK KworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisJCW1hc2sgPSBtYXNrX21pbnVzX29uZShtYXNr KTsKKworCXJldHVybiBtYXNrOworfQorCitzdGF0aWMgdWludDY0X3QgbWFza19wbHVzKHVpbnQ2 NF90IG1hc2ssIGludCBuKQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8 IG47IGkrKykKKwkJbWFzayA9IG1hc2tfcGx1c19vbmUobWFzayk7CisKKwlyZXR1cm4gbWFzazsK K30KKworc3RhdGljIGJvb2wKK2tlcm5lbF9oYXNfcGVyX2NvbnRleHRfc3NldV9zdXBwb3J0KGlu dCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0g eyB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJh bSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuc2l6ZSA9IHNpemVvZihzc2V1KSwKKwkJ LnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1KSwKKwl9OworCWludCByZXQ7CisKKwlpZiAo X19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlh cmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpOworCisJcmV0ID0gX19nZW1fY29udGV4 dF9zZXRfcGFyYW0oZmQsICZhcmcpOworCisJaWd0X2Fzc2VydChyZXQgPT0gMCB8fCByZXQgPT0g LUVOT0RFViB8fCByZXQgPT0gLUVJTlZBTCk7CisKKwlyZXR1cm4gcmV0ID09IDA7Cit9CisKK3N0 YXRpYyBib29sIGhhc19lbmdpbmUoaW50IGZkLCB1bnNpZ25lZCBpbnQgY2xhc3MsIHVuc2lnbmVk IGludCBpbnN0YW5jZSkKK3sKKwlpbnQgcG11ID0gcGVyZl9pOTE1X29wZW4oSTkxNV9QTVVfRU5H SU5FX0JVU1koY2xhc3MsIGluc3RhbmNlKSk7CisKKwlpZiAocG11ID49IDApCisJCWNsb3NlKHBt dSk7CisKKwlyZXR1cm4gcG11ID49IDA7Cit9CisKKy8qCisgKiBWZXJpZnkgdGhhdCBpbnZhbGlk IGVuZ2luZXMgYXJlIHJlamVjdGVkIGFuZCB2YWxpZCBvbmVzIGFyZSBhY2NlcHRlZC4KKyAqLwor c3RhdGljIHZvaWQgdGVzdF9lbmdpbmVzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAor CQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJLnNpemUgPSBzaXplb2Yoc3Nl dSksCisJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSkKKwl9OworCXVuc2lnbmVkIGlu dCBjbGFzcywgaW5zdGFuY2U7CisJaW50IGxhc3Rfd2l0aF9lbmdpbmVzOworCisJLyogZ2V0X3Bh cmFtICovCisKKwlzc2V1Lmluc3RhbmNlID0gLTE7IC8qIEFzc3VtZWQgaW52YWxpZC4gKi8KKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7 CisKKwlzc2V1LmNsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsgLyogQm90aCBpbnZh bGlkLiAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcp LCAtRUlOVkFMKTsKKworCXNzZXUuaW5zdGFuY2UgPSAwOyAvKiBDbGFzcyBpbnZhbGlkLiAqLwor CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFM KTsKKwlzc2V1LmNsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSOworCisJbGFzdF93aXRo X2VuZ2luZXMgPSAtMTsKKwlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPCB+MDsgY2xhc3MrKykgewor CQlmb3IgKGluc3RhbmNlID0gMDsgaW5zdGFuY2UgPCB+MDsgaW5zdGFuY2UrKykgeworCQkJaW50 IHJldDsKKworCQkJc3NldS5jbGFzcyA9IGNsYXNzOworCQkJc3NldS5pbnN0YW5jZSA9IGluc3Rh bmNlOworCisJCQlyZXQgPSBfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7CisKKwkJ CWlmIChoYXNfZW5naW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJaWd0X2Fzc2VydF9l cShyZXQsIDApOworCQkJCWxhc3Rfd2l0aF9lbmdpbmVzID0gY2xhc3M7CisJCQl9IGVsc2Ugewor CQkJCWlndF9hc3NlcnRfZXEocmV0LCAtRUlOVkFMKTsKKwkJCQlpZiAoaW5zdGFuY2UgPiA4KSAv KiBTa2lwIG92ZXIgc29tZSBpbnN0YW5jZSBob2xlcy4gKi8KKwkJCQkJYnJlYWs7CisJCQl9CisJ CX0KKworCQlpZiAoY2xhc3MgLSBsYXN0X3dpdGhfZW5naW5lcyA+IDgpIC8qIFNraXAgb3ZlciBz b21lIGNsYXNzIGhvbGVzLiAqLworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBHZXQgc29tZSBw cm9wZXIgdmFsdWVzIGJlZm9yZSB0cnlpbmcgdG8gcmVwcm9ncmFtIHRoZW0gb250bworCSAqIGFu IGludmFsaWQgZW5naW5lLgorCSAqLworCXNzZXUuY2xhc3MgPSAwOworCXNzZXUuaW5zdGFuY2Ug PSAwOworCWdlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7CisKKwkvKiBzZXRfcGFyYW0g Ki8KKworCXNzZXUuaW5zdGFuY2UgPSAtMTsgLyogQXNzdW1lZCBpbnZhbGlkLiAqLworCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwor CXNzZXUuY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEOyAvKiBCb3RoIGludmFsaWQu ICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1F SU5WQUwpOworCisJc3NldS5pbnN0YW5jZSA9IDA7IC8qIENsYXNzIGludmFsaWQuICovCisJaWd0 X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOwor CisJbGFzdF93aXRoX2VuZ2luZXMgPSAtMTsKKwlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPCB+MDsg Y2xhc3MrKykgeworCQlmb3IgKGluc3RhbmNlID0gMDsgaW5zdGFuY2UgPCB+MDsgaW5zdGFuY2Ur KykgeworCQkJaW50IHJldDsKKworCQkJc3NldS5jbGFzcyA9IGNsYXNzOworCQkJc3NldS5pbnN0 YW5jZSA9IGluc3RhbmNlOworCisJCQlyZXQgPSBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmFyZyk7CisKKwkJCWlmIChoYXNfZW5naW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJ aWd0X2Fzc2VydChyZXQgPT0gMCB8fCByZXQgPT0gLUVOT0RFVik7CisJCQkJbGFzdF93aXRoX2Vu Z2luZXMgPSBjbGFzczsKKwkJCX0gZWxzZSB7CisJCQkJaWd0X2Fzc2VydF9lcShyZXQsIC1FSU5W QUwpOworCQkJCWlmIChpbnN0YW5jZSA+IDgpIC8qIFNraXAgb3ZlciBzb21lIGluc3RhbmNlIGhv bGVzLiAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChjbGFzcyAtIGxhc3Rfd2l0 aF9lbmdpbmVzID4gOCkgLyogU2tpcCBvdmVyIHNvbWUgY2xhc3MgaG9sZXMuICovCisJCQlicmVh azsKKwl9CisKKwlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBhcmcuY3R4X2lkKTsKK30KKworLyoK KyAqIFZlcmlmeSB0aGF0IGludmFsaWQgYXJndW1lbnRzIGFyZSByZWplY3RlZC4KKyAqLworc3Rh dGljIHZvaWQKK3Rlc3RfaW52YWxpZF9hcmdzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gYXJnID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1f U1NFVSwKKwkJLmN0eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCksCisJfTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXVuc2lnbmVkIGNo YXIgKnBhZ2VbMl07CisJdW5zaWduZWQgY2hhciAqYWRkcjsKKwl1bnNpZ25lZCBpbnQgc3o7CisK KwkvKiBnZXQgcGFyYW0gKi8KKworCS8qIEludmFsaWQgc2l6ZS4gKi8KKwlhcmcuc2l6ZSA9IDE7 CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FSU5W QUwpOworCisJLyogUXVlcnkgc2l6ZS4gKi8KKwlhcmcuc2l6ZSA9IDA7CisJaWd0X2Fzc2VydF9l cShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIDApOworCXN6ID0gYXJnLnNpemU7 CisKKwkvKiBCYWQgcG9pbnRlcnMuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dl dF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCWFyZy52YWx1ZSA9IC0xOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcu dmFsdWUgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZh cmcpLCAtRUZBVUxUKTsKKworCS8qIFVubWFwcGVkLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDQw OTYsIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNz ZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMF0sIDAsIHNpemVvZihz c2V1KSk7CisJbXVubWFwKHBhZ2VbMF0sIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9p bnRlcihwYWdlWzBdKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZk LCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHVubWFwcGVkIGFyZWEuICov CisJcGFnZVswXSA9IG1tYXAoMCwgODE5MiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBf QU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltdW5t YXAocGFnZVswXSwgODE5Mik7CisJcGFnZVswXSA9IG1tYXAocGFnZVswXSwgNDA5NiwKKwkJICAg ICAgIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAw KTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMF0s IDAsIHNpemVvZihzc2V1KSk7CisJcGFnZVsxXSA9IG1tYXAoKHZvaWQgKikoKHVuc2lnbmVkIGxv bmcpcGFnZVswXSArIDQwOTYpLCA0MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZB VEUgfCBNQVBfQU5PTiB8IE1BUF9GSVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVsxXSAh PSBNQVBfRkFJTEVEKTsKKwltZW1zZXQocGFnZVsxXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwltdW5t YXAocGFnZVsxXSwgNDA5Nik7CisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKHBhZ2VbMV0p IC0KKwkJICAgIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSkg KyA0OworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAt RUZBVUxUKTsKKwltdW5tYXAocGFnZVswXSwgNDA5Nik7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHJl YWQtb25seSBhcmVhLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDgxOTIsIFBST1RfV1JJVEUsIE1B UF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQ X0ZBSUxFRCk7CisJbXVubWFwKHBhZ2VbMF0sIDgxOTIpOworCXBhZ2VbMF0gPSBtbWFwKHBhZ2Vb MF0sIDQwOTYsCisJCSAgICAgICBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OIHwg TUFQX0ZJWEVELCAtMSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9IE1BUF9GQUlMRUQpOwor CW1lbXNldChwYWdlWzBdLCAwLCBzaXplb2Yoc3NldSkpOworCXBhZ2VbMV0gPSBtbWFwKCh2b2lk ICopKCh1bnNpZ25lZCBsb25nKXBhZ2VbMF0gKyA0MDk2KSwgNDA5NiwKKwkJICAgICAgIFBST1Rf V1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3Rf YXNzZXJ0KHBhZ2VbMV0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMV0sIDAsIHNpemVv Zihzc2V1KSk7CisJaWd0X2Fzc2VydChtcHJvdGVjdChwYWdlWzFdLCA0MDk2LCBQUk9UX1JFQUQp ID09IDApOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdlWzFdIC0gc2l6ZW9mKHNz ZXUpICsgNCk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFy ZyksIC1FRkFVTFQpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKwltdW5tYXAocGFnZVsxXSwg NDA5Nik7CisKKwkvKiBzZXQgcGFyYW0gKi8KKworCS8qIEludmFsaWQgc2l6ZXMuICovCisJYXJn LnNpemUgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZh cmcpLCAtRUlOVkFMKTsKKworCWFyZy5zaXplID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisJYXJnLnNpemUgPSBzejsKKwor CS8qIEJhZCBwb2ludGVycy4gKi8KKwlhcmcudmFsdWUgPSAwOworCWlndF9hc3NlcnRfZXEoX19n ZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUgPSAt MTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVG QVVMVCk7CisJYXJnLnZhbHVlID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBHZXQgdmFsaWQgU1NFVS4gKi8KKwlh cmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpOworCWlndF9hc3NlcnRfZXEoX19nZW1f Y29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKworCS8qIEludmFsaWQgTUJaLiAqLwor CXNzZXUuZmxhZ3MgPSAtMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFt KGZkLCAmYXJnKSwgLUVJTlZBTCk7CisJc3NldS5yc3ZkID0gLTE7CisJaWd0X2Fzc2VydF9lcShf X2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCXNzZXUuZmxhZ3Mg PSAwOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAt RUlOVkFMKTsKKwlzc2V1LnJzdmQgPSAwOworCisJLyogVW5tYXBwZWQuICovCisJcGFnZVswXSA9 IG1tYXAoMCwgNDA5NiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDAp OworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltZW1jcHkocGFnZVswXSwg JnNzZXUsIHNpemVvZihzc2V1KSk7CisJbXVubWFwKHBhZ2VbMF0sIDQwOTYpOworCWFyZy52YWx1 ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdlWzBdKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRl eHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHVu bWFwcGVkIGFyZWEuICovCisJcGFnZVswXSA9IG1tYXAoMCwgODE5MiwgUFJPVF9XUklURSwgTUFQ X1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBf RkFJTEVEKTsKKwltdW5tYXAocGFnZVswXSwgODE5Mik7CisJcGFnZVswXSA9IG1tYXAocGFnZVsw XSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBN QVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJ cGFnZVsxXSA9IG1tYXAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpcGFnZVswXSArIDQwOTYpLCA0 MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9G SVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVsxXSAhPSBNQVBfRkFJTEVEKTsKKwlhZGRy ID0gcGFnZVsxXSAtIHNpemVvZihzc2V1KSArIDQ7CisJbWVtY3B5KGFkZHIsICZzc2V1LCBzaXpl b2Yoc3NldSkpOworCW11bm1hcChwYWdlWzFdLCA0MDk2KTsKKwlhcmcudmFsdWUgPSB0b191c2Vy X3BvaW50ZXIoYWRkcik7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShm ZCwgJmFyZyksIC1FRkFVTFQpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKworCWdlbV9jb250 ZXh0X2Rlc3Ryb3koZmQsIGFyZy5jdHhfaWQpOworfQorCisvKgorICogVmVyaWZ5IHRoYXQgZ2d0 dCBtYXBwZWQgYXJlYSBjYW4gYmUgdXNlZCBhcyB0aGUgc3NldSBwb2ludGVyLgorICovCitzdGF0 aWMgdm9pZAordGVzdF9nZ3R0X2FyZ3MoaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbV9zc2V1ICpzc2V1OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4 X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJLnNpemUgPSBzaXplb2YoKnNzZXUpLAor CX07CisJdWludDMyX3QgYm87CisKKwlibyA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCWFyZy52 YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihnZW1fbW1hcF9fZ3R0KGZkLCBibywgNDA5NiwKKwkJCQkJ CSAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpOworCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250 ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIDApOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4 dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKworCW11bm1hcCgodm9pZCAqKWFyZy52YWx1ZSwg NDA5Nik7CisJZ2VtX2Nsb3NlKGZkLCBibyk7CisJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgYXJn LmN0eF9pZCk7Cit9CisKKy8qCisgKiBWZXJpZnkgdGhhdCBpbnZhbGlkIFNTRVUgdmFsdWVzIGFy ZSByZWplY3RlZC4KKyAqLworc3RhdGljIHZvaWQKK3Rlc3RfaW52YWxpZF9zc2V1KGludCBmZCkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBkZXZpY2Vfc3NldSA9 IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9 OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9 IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRl KGZkKSwKKwkJLnNpemUgPSBzaXplb2Yoc3NldSksCisJfTsKKwl1bnNpZ25lZCBpbnQgaTsKKwor CS8qIEZldGNoIHRoZSBkZXZpY2UgZGVmYXVsdHMuICovCisJYXJnLnZhbHVlID0gdG9fdXNlcl9w b2ludGVyKCZkZXZpY2Vfc3NldSk7CisJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKTsK KworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSk7CisKKwkvKiBUcnkgYWxsIHNs aWNlIG1hc2tzIGtub3duIHRvIGJlIGludmFsaWQuICovCisJc3NldSA9IGRldmljZV9zc2V1Owor CWZvciAoaSA9IDE7IGkgPD0gKDggLSBfX3NsaWNlX2NvdW50X18pOyBpKyspIHsKKwkJc3NldS5z bGljZV9tYXNrID0gbWFza19wbHVzKF9fc2xpY2VfbWFza19fLCBpKTsKKwkJaWd0X2Fzc2VydF9l cShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCX0KKworCS8q IDAgc2xpY2VzLiAqLworCXNzZXUuc2xpY2VfbWFzayA9IDA7CisJaWd0X2Fzc2VydF9lcSgtRUlO VkFMLCBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZykpOworCisJLyogVHJ5IGFsbCBz dWJzbGljZSBtYXNrcyBrbm93biB0byBiZSBpbnZhbGlkLiAqLworCXNzZXUgPSBkZXZpY2Vfc3Nl dTsKKwlmb3IgKGkgPSAxOyBpIDw9ICg4IC0gX19zdWJzbGljZV9jb3VudF9fKTsgaSsrKSB7CisJ CXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfcGx1cyhfX3N1YnNsaWNlX21hc2tfXywgaSk7CisJ CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFM KTsKKwl9CisKKwkvKiAwIHN1YnNsaWNlcy4gKi8KKwlzc2V1LnN1YnNsaWNlX21hc2sgPSAwOwor CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFM KTsKKworCS8qIFRyeSBudW1iZXIgb2YgRVVzIHN1cGVyaW9yIHRvIHRoZSBtYXggYXZhaWxhYmxl LiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0g ZGV2aWNlX3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgKyAxOworCWlndF9hc3NlcnRfZXEoX19n ZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCXNzZXUgPSBkZXZp Y2Vfc3NldTsKKwlzc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0gZGV2aWNlX3NzZXUubWF4X2V1 c19wZXJfc3Vic2xpY2UgKyAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFy YW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8qIFRyeSB0byBwcm9ncmFtIDAgbWF4IEVVcy4g Ki8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDA7 CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5W QUwpOworCisJLyogTWluID4gbWF4ICovCisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUubWlu X2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCXNzZXUubWF4 X2V1c19wZXJfc3Vic2xpY2UgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRf cGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCWlmIChfX2ludGVsX2dlbl9fICE9IDExKQor CQlnb3RvIG91dDsKKworCS8qIFN1YnNldCBvZiBzdWJzbGljZXMgYnV0IHNsaWNlIG1hc2sgZ3Jl YXRlciB0aGFuIG9uZS4gKi8KKwlpZiAoX19zbGljZV9jb3VudF9fID4gMSkgeworCQlzc2V1ID0g ZGV2aWNlX3NzZXU7CisJCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfbWludXNfb25lKHNzZXUu c3Vic2xpY2VfbWFzayk7CisJCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0o ZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9CisKKwkvKiBPZGQgc3Vic2xpY2VzIGFib3ZlIGZvdXIu ICovCisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUuc2xpY2VfbWFzayA9IDB4MTsKKwlzc2V1 LnN1YnNsaWNlX21hc2sgPSBtYXNrX21pbnVzX29uZShzc2V1LnN1YnNsaWNlX21hc2spOworCWln dF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsK KworCS8qIE1vcmUgdGhhbiBoYWxmIHN1YnNsaWNlcyB3aXRoIG9uZSBzbGljZS4gKi8KKwlzc2V1 ID0gZGV2aWNlX3NzZXU7CisJc3NldS5zbGljZV9tYXNrID0gMHgxOworCXNzZXUuc3Vic2xpY2Vf bWFzayA9IG1hc2tfbWludXMoc3NldS5zdWJzbGljZV9tYXNrLAorCQkJCQlfX3N1YnNsaWNlX2Nv dW50X18gLyAyIC0gMSk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShm ZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogVk1FICovCisKKwkvKiBTbGljZSBjb3VudCBiZXR3 ZWVuIG9uZSBhbmQgbWF4LiAqLworCWlmIChfX3NsaWNlX2NvdW50X18gPiAyKSB7CisJCXNzZXUg PSBkZXZpY2Vfc3NldTsKKwkJc3NldS5zbGljZV9tYXNrID0gbWFza19taW51c19vbmUoc3NldS5z bGljZV9tYXNrKTsKKwkJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmFyZyksIC1FSU5WQUwpOworCX0KKworCS8qIExlc3MgdGhhbiBoYWxmIHN1YnNsaWNlcyB3aXRo IG9uZSBzbGljZS4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5zbGljZV9tYXNrID0g MHgxOworCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfbWludXMoc3NldS5zdWJzbGljZV9tYXNr LAorCQkJCQlfX3N1YnNsaWNlX2NvdW50X18gLyAyICsgMSk7CisJaWd0X2Fzc2VydF9lcShfX2dl bV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCitvdXQ6CisJZ2VtX2Nv bnRleHRfZGVzdHJveShmZCwgYXJnLmN0eF9pZCk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGZk OworCisJaWd0X2ZpeHR1cmUgeworCQlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwp OworCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOworCisJCV9faW50ZWxfZGV2aWRfXyA9IGludGVsX2dl dF9kcm1fZGV2aWQoZmQpOworCQlfX2ludGVsX2dlbl9fID0gaW50ZWxfZ2VuKF9faW50ZWxfZGV2 aWRfXyk7CisKKwkJaWd0X3JlcXVpcmUoa2VybmVsX2hhc19wZXJfY29udGV4dF9zc2V1X3N1cHBv cnQoZmQpKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9ncm91cCB7CisJCWlndF9maXh0dXJlIHsKKwkJ CWRybV9pOTE1X2dldHBhcmFtX3QgZ3A7CisKKwkJCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9TTElD RV9NQVNLOworCQkJZ3AudmFsdWUgPSAoaW50ICopICZfX3NsaWNlX21hc2tfXzsKKwkJCWRvX2lv Y3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKwkJCV9fc2xpY2VfY291bnRf XyA9IF9fYnVpbHRpbl9wb3Bjb3VudChfX3NsaWNlX21hc2tfXyk7CisKKwkJCWdwLnBhcmFtID0g STkxNV9QQVJBTV9TVUJTTElDRV9NQVNLOworCQkJZ3AudmFsdWUgPSAoaW50ICopICZfX3N1YnNs aWNlX21hc2tfXzsKKwkJCWRvX2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdw KTsKKwkJCV9fc3Vic2xpY2VfY291bnRfXyA9CisJCQkJX19idWlsdGluX3BvcGNvdW50KF9fc3Vi c2xpY2VfbWFza19fKTsKKwkJfQorCisJCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLWFyZ3MiKQorCQkJ dGVzdF9pbnZhbGlkX2FyZ3MoZmQpOworCisJCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLXNzZXUiKQor CQkJdGVzdF9pbnZhbGlkX3NzZXUoZmQpOworCisJCWlndF9zdWJ0ZXN0KCJnZ3R0LWFyZ3MiKQor CQkJdGVzdF9nZ3R0X2FyZ3MoZmQpOworCisJCWlndF9zdWJ0ZXN0KCJlbmdpbmVzIikKKwkJCXRl c3RfZW5naW5lcyhmZCk7CisJfQorCisJaWd0X2ZpeHR1cmUgeworCQljbG9zZShmZCk7CisJfQor fQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRl eCBiOGE2ZTYxYjM0MDQuLmY0MWY3MjRhZjhhZiAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVp bGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTI4OCw2ICsyODgsMTQgQEAgZm9yZWFjaCBw cm9nIDogZ2VtX3Byb2dzICsgZ2VuM19wcm9ncwogCXRlc3RfbGlzdCArPSBwcm9nCiBlbmRmb3Jl YWNoCiAKK3Rlc3RfZXhlY3V0YWJsZXMgKz0gZXhlY3V0YWJsZSgnZ2VtX2N0eF9zc2V1JywKKwkg ICBqb2luX3BhdGhzKCdpOTE1JywgJ2dlbV9jdHhfc3NldS5jJyksCisJICAgZGVwZW5kZW5jaWVz IDogdGVzdF9kZXBzICsgWyBsaWJfaWd0X3BlcmYgXSwKKwkgICBpbnN0YWxsX2RpciA6IGxpYmV4 ZWNkaXIsCisJICAgaW5zdGFsbF9ycGF0aCA6IGxpYmV4ZWNkaXJfcnBhdGhkaXIsCisJICAgaW5z dGFsbCA6IHRydWUpCit0ZXN0X3Byb2dzICs9ICdnZW1fY3R4X3NzZXUnCisKIHRlc3RfZXhlY3V0 YWJsZXMgKz0gZXhlY3V0YWJsZSgnZ2VtX2VpbycsCiAJICAgam9pbl9wYXRocygnaTkxNScsICdn ZW1fZWlvLmMnKSwKIAkgICBkZXBlbmRlbmNpZXMgOiB0ZXN0X2RlcHMgKyBbIHJlYWx0aW1lIF0s Ci0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=