From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tiago Vignatti Subject: [PATCH igt v7 6/6] tests: Add prime_mmap_coherency for cache coherency tests Date: Tue, 22 Dec 2015 19:36:54 -0200 Message-ID: <1450820214-12509-12-git-send-email-tiago.vignatti@intel.com> References: <1450820214-12509-1-git-send-email-tiago.vignatti@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id BB0336E42A for ; Tue, 22 Dec 2015 13:37:34 -0800 (PST) In-Reply-To: <1450820214-12509-1-git-send-email-tiago.vignatti@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: daniel.thompson@linaro.org, marcheu@google.com, daniel.vetter@ffwll.ch, thellstrom@vmware.com, jglisse@redhat.com, reveman@google.com List-Id: dri-devel@lists.freedesktop.org RGlmZmVyZW50IHRoYW4ga21zX21tYXBfd3JpdGVfY3JjIHRoYXQgY2FwdHVyZXMgdGhlIGNvaGVy ZW5jeSBpc3N1ZXMgd2l0aGluIHRoZQpzY2Fub3V0IG1hcHBlZCBidWZmZXIsIHRoaXMgb25lIGlz IG1lYW50IGZvciB0ZXN0IGRtYS1idWYgbW1hcCBvbiAhbGxjCnBsYXRmb3JtcyBtb3N0bHkgYW5k IHByb3Zva2UgY29oZXJlbmN5IGJ1Z3Mgc28gd2Uga25vdyB3aGVyZSB3ZSBuZWVkIHRoZSBzeW5j CmlvY3Rscy4KCkkgdGVzdGVkIHRoaXMgd2l0aCAhbGxjIGFuZCBsbGMgcGxhdGZvcm1zLCBCVFkg YW5kIElWWSByZXNwZWN0aXZlbHkuCgpTaWduZWQtb2ZmLWJ5OiBUaWFnbyBWaWduYXR0aSA8dGlh Z28udmlnbmF0dGlAaW50ZWwuY29tPgotLS0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAgICAg fCAgIDEgKwogdGVzdHMvcHJpbWVfbW1hcF9jb2hlcmVuY3kuYyB8IDI0NiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcHJpbWVfbW1hcF9jb2hlcmVuY3ku YwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCmluZGV4IGFkMmRkNmEuLjc4NjA1YzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtOTcsNiArOTcsNyBAQCBU RVNUU19wcm9nc19NID0gXAogCXBtX3JjNl9yZXNpZGVuY3kgXAogCXBtX3NzZXUgXAogCXByaW1l X21tYXAgXAorCXByaW1lX21tYXBfY29oZXJlbmN5IFwKIAlwcmltZV9zZWxmX2ltcG9ydCBcCiAJ dGVtcGxhdGUgXAogCSQoTlVMTCkKZGlmZiAtLWdpdCBhL3Rlc3RzL3ByaW1lX21tYXBfY29oZXJl bmN5LmMgYi90ZXN0cy9wcmltZV9tbWFwX2NvaGVyZW5jeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmE5YTI2NjQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9wcmltZV9t bWFwX2NvaGVyZW5jeS5jCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIw MTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUg U09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIFRpYWdvIFZpZ25hdHRpCisgKi8KKwor LyoqIEBmaWxlIHByaW1lX21tYXBfY29oZXJlbmN5LmMKKyAqCisgKiBUT0RPOiBuZWVkIHRvIHNo b3cgdGhlIG5lZWQgZm9yIHByaW1lX3N5bmNfZW5kKCkuCisgKi8KKworI2luY2x1ZGUgImlndC5o IgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBkbWEtYnVmIG1tYXAgb24gIWxsYyBwbGF0 Zm9ybXMgbW9zdGx5IGFuZCBwcm92b2tlIgorCQkiIGNvaGVyZW5jeSBidWdzIHNvIHdlIGtub3cg Zm9yIHN1cmUgd2hlcmUgd2UgbmVlZCB0aGUgc3luYyBpb2N0bHMuIik7CisKKyNkZWZpbmUgUk9V TkRTIDIwCisKK2ludCBmZDsKK2ludCBzdGFsZSA9IDA7CitzdGF0aWMgZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyOworc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKK3N0YXRpYyBpbnQg d2lkdGggPSAxMDI0LCBoZWlnaHQgPSAxMDI0OworCisvKgorICogRXhlcmNpc2VzIHRoZSBuZWVk IGZvciByZWFkIGZsdXNoOgorICogICAxLiBjcmVhdGUgYSBCTyBhbmQgd3JpdGUgJzAncywgaW4g R1RUIGRvbWFpbi4KKyAqICAgMi4gcmVhZCBCTyB1c2luZyB0aGUgZG1hLWJ1ZiBDUFUgbW1hcC4K KyAqICAgMy4gd3JpdGUgJzEncywgaW4gR1RUIGRvbWFpbi4KKyAqICAgNC4gcmVhZCBhZ2FpbiB0 aHJvdWdoIHRoZSBtYXBwZWQgZG1hLWJ1Zi4KKyAqLworc3RhdGljIHZvaWQgdGVzdF9yZWFkX2Zs dXNoKGJvb2wgZXhwZWN0X3N0YWxlX2NhY2hlKQoreworCWRybV9pbnRlbF9ibyAqYm9fMTsKKwlk cm1faW50ZWxfYm8gKmJvXzI7CisJdWludDMyX3QgKnB0cl9jcHU7CisJdWludDMyX3QgKnB0cl9n dHQ7CisJaW50IGRtYV9idWZfZmQsIGk7CisKKwlpZiAoZXhwZWN0X3N0YWxlX2NhY2hlKQorCQlp Z3RfcmVxdWlyZSghZ2VtX2hhc19sbGMoZmQpKTsKKworCWJvXzEgPSBkcm1faW50ZWxfYm9fYWxs b2MoYnVmbWdyLCAiQk8gMSIsIHdpZHRoICogaGVpZ2h0ICogNCwgNDA5Nik7CisKKwkvKiBTVEVQ ICMxOiBwdXQgdGhlIEJPIDEgaW4gR1RUIGRvbWFpbi4gV2UgdXNlIHRoZSBibGl0dGVyIHRvIGNv cHkgYW5kIGZpbGwKKwkgKiB6ZXJvcyB0byBCTyAxLCBzbyBjb21tYW5kcyB3aWxsIGJlIHN1Ym1p dHRlZCBhbmQgbGlrZWx5IHRvIHBsYWNlIEJPIDEgaW4KKwkgKiB0aGUgR1RUIGRvbWFpbi4gKi8K Kwlib18yID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgIkJPIDIiLCB3aWR0aCAqIGhlaWdo dCAqIDQsIDQwOTYpOworCWludGVsX2NvcHlfYm8oYmF0Y2gsIGJvXzEsIGJvXzIsIHdpZHRoICog aGVpZ2h0KTsKKwlnZW1fc3luYyhmZCwgYm9fMS0+aGFuZGxlKTsKKwlkcm1faW50ZWxfYm9fdW5y ZWZlcmVuY2UoYm9fMik7CisKKwkvKiBTVEVQICMyOiByZWFkIEJPIDEgdXNpbmcgdGhlIGRtYS1i dWYgQ1BVIG1tYXAuIFRoaXMgZGlydGllcyB0aGUgQ1BVIGNhY2hlcy4gKi8KKwlkbWFfYnVmX2Zk ID0gcHJpbWVfaGFuZGxlX3RvX2ZkX2Zvcl9tbWFwKGZkLCBib18xLT5oYW5kbGUpOworCWlndF9z a2lwX29uKGVycm5vID09IEVJTlZBTCk7CisKKwlwdHJfY3B1ID0gbW1hcChOVUxMLCB3aWR0aCAq IGhlaWdodCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKKwkJICAgICAgIE1BUF9TSEFSRUQsIGRt YV9idWZfZmQsIDApOworCWlndF9hc3NlcnQocHRyX2NwdSAhPSBNQVBfRkFJTEVEKTsKKworCWZv ciAoaSA9IDA7IGkgPCAod2lkdGggKiBoZWlnaHQpIC8gNDsgaSsrKQorCQlpZ3RfYXNzZXJ0X2Vx KHB0cl9jcHVbaV0sIDApOworCisJLyogU1RFUCAjMzogd3JpdGUgMHgxMSBpbnRvIEJPIDEuICov CisJYm9fMiA9IGRybV9pbnRlbF9ib19hbGxvYyhidWZtZ3IsICJCTyAyIiwgd2lkdGggKiBoZWln aHQgKiA0LCA0MDk2KTsKKwlwdHJfZ3R0ID0gZ2VtX21tYXBfX2d0dChmZCwgYm9fMi0+aGFuZGxl LCB3aWR0aCAqIGhlaWdodCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJbWVtc2V0KHB0cl9n dHQsIDB4MTEsIHdpZHRoICogaGVpZ2h0KTsKKwltdW5tYXAocHRyX2d0dCwgd2lkdGggKiBoZWln aHQpOworCisJaW50ZWxfY29weV9ibyhiYXRjaCwgYm9fMSwgYm9fMiwgd2lkdGggKiBoZWlnaHQp OworCWdlbV9zeW5jKGZkLCBib18xLT5oYW5kbGUpOworCWRybV9pbnRlbF9ib191bnJlZmVyZW5j ZShib18yKTsKKworCS8qIFNURVAgIzQ6IHJlYWQgYWdhaW4gdXNpbmcgdGhlIENQVSBtbWFwLiBE b2luZyAjMSBiZWZvcmUgIzMgbWFrZXMgc3VyZSB3ZQorCSAqIGRvbid0IGRvIGEgZnVsbCBDUFUg Y2FjaGUgZmx1c2ggaW4gc3RlcCAjMyBhZ2Fpbi4gVGhhdCBtYWtlcyBzdXJlIGFsbCB0aGUKKwkg KiBzdGFsZSBjYWNoZWxpbmVzIGZyb20gc3RlcCAjMiBzdXJ2aXZlIChtb3N0bHksIGEgZmV3IHdp bGwgYmUgZXZpY3RlZCkKKwkgKiB1bnRpbCB3ZSB0cnkgdG8gcmVhZCB0aGVtIGFnYWluIGluIHN0 ZXAgIzQuIFRoaXMgYmVoYXZpb3IgY291bGQgYmUgZml4ZWQKKwkgKiBieSBmbHVzaCBDUFUgcmVh ZCByaWdodCBiZWZvcmUgYWNjZXNzaW5nIHRoZSBDUFUgcG9pbnRlciAqLworCWlmICghZXhwZWN0 X3N0YWxlX2NhY2hlKQorCQlwcmltZV9zeW5jX3N0YXJ0KGRtYV9idWZfZmQpOworCisJZm9yIChp ID0gMDsgaSA8ICh3aWR0aCAqIGhlaWdodCkgLyA0OyBpKyspCisJCWlmIChwdHJfY3B1W2ldICE9 IDB4MTExMTExMTEpIHsKKwkJCWlndF93YXJuX29uX2YoIWV4cGVjdF9zdGFsZV9jYWNoZSwKKwkJ CQkgICAgIkZvdW5kIDB4JTA4eCBhdCBvZmZzZXQgMHglMDh4XG4iLCBwdHJfY3B1W2ldLCBpKTsK KwkJCXN0YWxlKys7CisJCX0KKworCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShib18xKTsKKwlt dW5tYXAocHRyX2NwdSwgd2lkdGggKiBoZWlnaHQpOworfQorCisvKgorICogRXhlcmNpc2VzIHRo ZSBuZWVkIGZvciB3cml0ZSBmbHVzaDoKKyAqICAgMS4gY3JlYXRlIEJPIDEgYW5kIHdyaXRlICcw J3MsIGluIEdUVCBkb21haW4uCisgKiAgIDIuIHdyaXRlICcxJ3MgaW50byBCTyAxIHVzaW5nIHRo ZSBkbWEtYnVmIENQVSBtbWFwLgorICogICAzLiBjb3B5IEJPIDEgdG8gbmV3IEJPIDIsIGluIEdU VCBkb21haW4uCisgKiAgIDQuIHJlYWQgdmlhIGRtYS1idWYgbW1hcCBCTyAyLgorICovCitzdGF0 aWMgdm9pZCB0ZXN0X3dyaXRlX2ZsdXNoKGJvb2wgZXhwZWN0X3N0YWxlX2NhY2hlKQoreworCWRy bV9pbnRlbF9ibyAqYm9fMTsKKwlkcm1faW50ZWxfYm8gKmJvXzI7CisJdWludDMyX3QgKnB0cl9j cHU7CisJdWludDMyX3QgKnB0cjJfY3B1OworCWludCBkbWFfYnVmX2ZkLCBkbWFfYnVmMl9mZCwg aTsKKworCWlmIChleHBlY3Rfc3RhbGVfY2FjaGUpCisJCWlndF9yZXF1aXJlKCFnZW1faGFzX2xs YyhmZCkpOworCisJYm9fMSA9IGRybV9pbnRlbF9ib19hbGxvYyhidWZtZ3IsICJCTyAxIiwgd2lk dGggKiBoZWlnaHQgKiA0LCA0MDk2KTsKKworCS8qIFNURVAgIzE6IFB1dCB0aGUgQk8gMSBpbiBH VFQgZG9tYWluLiBXZSB1c2UgdGhlIGJsaXR0ZXIgdG8gY29weSBhbmQgZmlsbAorCSAqIHplcm9z IHRvIEJPIDEsIHNvIGNvbW1hbmRzIHdpbGwgYmUgc3VibWl0dGVkIGFuZCBsaWtlbHkgdG8gcGxh Y2UgQk8gMSBpbgorCSAqIHRoZSBHVFQgZG9tYWluLiAqLworCWJvXzIgPSBkcm1faW50ZWxfYm9f YWxsb2MoYnVmbWdyLCAiQk8gMiIsIHdpZHRoICogaGVpZ2h0ICogNCwgNDA5Nik7CisJaW50ZWxf Y29weV9ibyhiYXRjaCwgYm9fMSwgYm9fMiwgd2lkdGggKiBoZWlnaHQpOworCWdlbV9zeW5jKGZk LCBib18xLT5oYW5kbGUpOworCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShib18yKTsKKworCS8q IFNURVAgIzI6IFdyaXRlICcxJ3MgaW50byBCTyAxIHVzaW5nIHRoZSBkbWEtYnVmIENQVSBtbWFw LiAqLworCWRtYV9idWZfZmQgPSBwcmltZV9oYW5kbGVfdG9fZmRfZm9yX21tYXAoZmQsIGJvXzEt PmhhbmRsZSk7CisJaWd0X3NraXBfb24oZXJybm8gPT0gRUlOVkFMKTsKKworCXB0cl9jcHUgPSBt bWFwKE5VTEwsIHdpZHRoICogaGVpZ2h0LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQkgICAg ICAgTUFQX1NIQVJFRCwgZG1hX2J1Zl9mZCwgMCk7CisJaWd0X2Fzc2VydChwdHJfY3B1ICE9IE1B UF9GQUlMRUQpOworCisJLyogVGhpcyBpcyB0aGUgbWFpbiBwb2ludCBvZiB0aGlzIHRlc3Q6ICFs bGMgaHcgcmVxdWlyZXMgYSBjYWNoZSB3cml0ZQorCSAqIGZsdXNoIHJpZ2h0IGhlcmUgKGV4cGxh aW5lZCBpbiBzdGVwICM0KS4gKi8KKwlpZiAoIWV4cGVjdF9zdGFsZV9jYWNoZSkKKwkJcHJpbWVf c3luY19zdGFydChkbWFfYnVmX2ZkKTsKKworCW1lbXNldChwdHJfY3B1LCAweDExLCB3aWR0aCAq IGhlaWdodCk7CisKKwkvKiBTVEVQICMzOiBDb3B5IEJPIDEgaW50byBCTyAyLCB1c2luZyBibGl0 dGVyLiAqLworCWJvXzIgPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAiQk8gMiIsIHdpZHRo ICogaGVpZ2h0ICogNCwgNDA5Nik7CisJaW50ZWxfY29weV9ibyhiYXRjaCwgYm9fMiwgYm9fMSwg d2lkdGggKiBoZWlnaHQpOworCWdlbV9zeW5jKGZkLCBib18yLT5oYW5kbGUpOworCisJLyogU1RF UCAjNDogY29tcGFyZSBCTyAyIGFnYWluc3Qgd3JpdHRlbiBCTyAxLiBJbiAhbGxjIGhhcmR3YXJl LCB0aGVyZQorCSAqIHNob3VsZCBiZSBzb21lIGNhY2hlIGxpbmVzIHRoYXQgZGlkbid0IGdldCBm bHVzaGVkIG91dCBhbmQgYXJlIHN0aWxsIDAsCisJICogcmVxdWlyaW5nIGNhY2hlIGZsdXNoIGJl Zm9yZSB0aGUgd3JpdGUgaW4gc3RlcCAyLiAqLworCWRtYV9idWYyX2ZkID0gcHJpbWVfaGFuZGxl X3RvX2ZkX2Zvcl9tbWFwKGZkLCBib18yLT5oYW5kbGUpOworCWlndF9za2lwX29uKGVycm5vID09 IEVJTlZBTCk7CisKKwlwdHIyX2NwdSA9IG1tYXAoTlVMTCwgd2lkdGggKiBoZWlnaHQsIFBST1Rf UkVBRCB8IFBST1RfV1JJVEUsCisJCSAgICAgICAgTUFQX1NIQVJFRCwgZG1hX2J1ZjJfZmQsIDAp OworCWlndF9hc3NlcnQocHRyMl9jcHUgIT0gTUFQX0ZBSUxFRCk7CisKKwlmb3IgKGkgPSAwOyBp IDwgKHdpZHRoICogaGVpZ2h0KSAvIDQ7IGkrKykKKwkJaWYgKHB0cjJfY3B1W2ldICE9IDB4MTEx MTExMTEpIHsKKwkJCWlndF93YXJuX29uX2YoIWV4cGVjdF9zdGFsZV9jYWNoZSwKKwkJCQkgICAg ICAiRm91bmQgMHglMDh4IGF0IG9mZnNldCAweCUwOHhcbiIsIHB0cjJfY3B1W2ldLCBpKTsKKwkJ CXN0YWxlKys7CisJCX0KKworCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShib18xKTsKKwlkcm1f aW50ZWxfYm9fdW5yZWZlcmVuY2UoYm9fMik7CisJbXVubWFwKHB0cl9jcHUsIHdpZHRoICogaGVp Z2h0KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBpOwor CWJvb2wgZXhwZWN0X3N0YWxlX2NhY2hlOworCWlndF9zdWJ0ZXN0X2luaXQoYXJnYywgYXJndik7 CisKKwlpZ3RfZml4dHVyZSB7CisJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7 CisKKwkJYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7CisJCWJh dGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYnVmbWdyLCBpbnRlbF9nZXRfZHJtX2Rldmlk KGZkKSk7CisJfQorCisJLyogQ2FjaGUgY29oZXJlbmN5IGFuZCB0aGUgZXZpY3Rpb24gYXJlIHBy ZXR0eSBtdWNoIHVucHJlZGljdGFibGUsIHNvCisJICogcmVwcm9kdWNpbmcgYm9pbHMgZG93biB0 byB0cmlhbCBhbmQgZXJyb3IgdG8gaGl0IGRpZmZlcmVudCBzY2VuYXJpb3MuCisJICogVE9ETzog V2UgbWF5IHdhbnQgdG8gaW1wcm92ZSB0ZXN0cyBhIGJpdCBieSBwaWNraW5nIHJhbmRvbSBzdWJy YW5nZXMuICovCisJaWd0X2luZm8oIiVkIHJvdW5kcyBmb3IgZWFjaCB0ZXN0XG4iLCBST1VORFMp OworCWlndF9zdWJ0ZXN0KCJyZWFkIikgeworCQlzdGFsZSA9IDA7CisJCWV4cGVjdF9zdGFsZV9j YWNoZSA9IGZhbHNlOworCQlpZ3RfaW5mbygiZXhlcmNpc2luZyByZWFkIGZsdXNoXG4iKTsKKwkJ Zm9yIChpID0gMDsgaSA8IFJPVU5EUzsgaSsrKQorCQkJdGVzdF9yZWFkX2ZsdXNoKGV4cGVjdF9z dGFsZV9jYWNoZSk7CisJCWlndF9mYWlsX29uX2Yoc3RhbGUsICJudW0gb2Ygc3RhbGUgY2FjaGUg bGluZXMgJWRcbiIsIHN0YWxlKTsKKwl9CisKKwkvKiBPbmx5IGZvciAhbGxjIHBsYXRmb3JtcyAq LworCWlndF9zdWJ0ZXN0KCJyZWFkLWFuZC1mYWlsIikgeworCQlzdGFsZSA9IDA7CisJCWV4cGVj dF9zdGFsZV9jYWNoZSA9IHRydWU7CisJCWlndF9pbmZvKCJleGVyY2lzaW5nIHJlYWQgZmx1c2gg YW5kIGV4cGVjdCB0byBmYWlsIG9uICFsbGNcbiIpOworCQlmb3IgKGkgPSAwOyBpIDwgUk9VTkRT OyBpKyspCisJCQl0ZXN0X3JlYWRfZmx1c2goZXhwZWN0X3N0YWxlX2NhY2hlKTsKKwkJaWd0X2Zh aWxfb25fZighc3RhbGUsICJjb3VsZG4ndCBmaW5kIGFueSBzdGFsZSBjYWNoZSBsaW5lc1xuIik7 CisJfQorCisJaWd0X3N1YnRlc3QoIndyaXRlIikgeworCQlzdGFsZSA9IDA7CisJCWV4cGVjdF9z dGFsZV9jYWNoZSA9IGZhbHNlOworCQlpZ3RfaW5mbygiZXhlcmNpc2luZyB3cml0ZSBmbHVzaFxu Iik7CisJCWZvciAoaSA9IDA7IGkgPCBST1VORFM7IGkrKykKKwkJCXRlc3Rfd3JpdGVfZmx1c2go ZXhwZWN0X3N0YWxlX2NhY2hlKTsKKwkJaWd0X2ZhaWxfb25fZihzdGFsZSwgIm51bSBvZiBzdGFs ZSBjYWNoZSBsaW5lcyAlZFxuIiwgc3RhbGUpOworCX0KKworCS8qIE9ubHkgZm9yICFsbGMgcGxh dGZvcm1zICovCisJaWd0X3N1YnRlc3QoIndyaXRlLWFuZC1mYWlsIikgeworCQlzdGFsZSA9IDA7 CisJCWV4cGVjdF9zdGFsZV9jYWNoZSA9IHRydWU7CisJCWlndF9pbmZvKCJleGVyY2lzaW5nIHdy aXRlIGZsdXNoIGFuZCBleHBlY3QgdG8gZmFpbCBvbiAhbGxjXG4iKTsKKwkJZm9yIChpID0gMDsg aSA8IFJPVU5EUzsgaSsrKQorCQkJdGVzdF93cml0ZV9mbHVzaChleHBlY3Rfc3RhbGVfY2FjaGUp OworCQlpZ3RfZmFpbF9vbl9mKCFzdGFsZSwgImNvdWxkbid0IGZpbmQgYW55IHN0YWxlIGNhY2hl IGxpbmVzXG4iKTsKKwl9CisKKwlpZ3RfZml4dHVyZSB7CisJCWludGVsX2JhdGNoYnVmZmVyX2Zy ZWUoYmF0Y2gpOworCQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koYnVmbWdyKTsKKworCQljbG9z ZShmZCk7CisJfQorCisJaWd0X2V4aXQoKTsKK30KLS0gCjIuMS40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=