From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tiago Vignatti Subject: [PATCH igt v6 5/6] tests: Add kms_mmap_write_crc for cache coherency tests Date: Wed, 16 Dec 2015 20:25:42 -0200 Message-ID: <1450304743-6571-11-git-send-email-tiago.vignatti@intel.com> References: <1450304743-6571-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id E6D816E518 for ; Wed, 16 Dec 2015 14:26:35 -0800 (PST) In-Reply-To: <1450304743-6571-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, daniel.vetter@ffwll.ch, thellstrom@vmware.com, jglisse@redhat.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBwcm9ncmFtIGNhbiBiZSB1c2VkIHRvIGRldGVjdCB3aGVuIENQVSB3cml0ZXMgaW4gdGhl IGRtYS1idWYgbWFwcGVkIG9iamVjdApkb24ndCBsYW5kIGluIHNjYW5vdXQgZHVlIGNhY2hlIGlu Y29oZXJlbmN5LgoKQWx0aG91Z2ggdGhpcyBzZWVtcyBhIHByb2JsZW0gaW5oZXJlbnRseSBvZiBu b24tTENDIG1hY2hpbmVzICgiQXRvbSIpLCB0aGlzCnBhcnRpY3VsYXIgdGVzdCBjYXRjaGVzIGEg Y2FjaGUgZGlydCBvbiBzY2Fub3V0IG9uIExMQyBtYWNoaW5lcyBhcyB3ZWxsLiBJdCdzCmluc3Bp cmVkIGluIFZpbGxlJ3Mga21zX3B3cml0ZV9jcmMuYyBhbmQgY2FuIGJlIHVzZWQgYWxzbyB0byB0 ZXN0IHRoZQpjb3JyZWN0bmVzcyBvZiB0aGUgZHJpdmVyJ3MgYmVnaW5fY3B1X2FjY2VzcyBhbmQg ZW5kX2NwdV9hY2Nlc3MgKHdoaWNoIHJlcXVpcmVzCmk5MTUgaW1wbGVtZW50YXRpb24uCgpUbyBz ZWUgdGhlIG5lZWQgZm9yIGZsdXNoLCBvbmUgaGFzIHRvIHJ1biB0aGlzIHNhbWUgYmluYXJ5IGEg ZmV3IHRpbWVzIGNhdXNlCml0J3Mgbm90IDEwMCUgcmVwcm9kdWNpYmxlIC0tIHdoYXQgSSB1c3Vh bGx5IGRvIGlzIHRoZSBmb2xsb3dpbmcsIHVzaW5nICctbicKb3B0aW9uIHRvIG5vdCBjYWxsIHRo ZSBzeW5jIGlvY3RsczoKCiAgICAkIHdoaWxlICgoMSkpIDsgZG8gLi9rbXNfbW1hcF93cml0ZV9j cmMgLW47IGRvbmUgICMgaW4gdGVybWluYWwgQQogICAgJCBmaW5kIC8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRlcm1pbmFsIEIKClRoYXQgd2lsbCBtb3N0 IGxpa2VseSB0cmFzaGVzIHRoZSBtZW1vcnkgd2hpbGUgdGhlIHRlc3Qgd2lsbCBjYXRjaCB0aGUK Y29oZXJlbmN5IGlzc3VlLiBJZiB5b3Ugbm93IHN1cHByZXNzICctbicsIHRoZW4gdGhpbmdzIHNo b3VsZCBqdXN0IHdvcmsgbGlrZQpleHBlY3RlZC4KCkkgdGVzdGVkIHRoaXMgd2l0aCAhbGxjIGFu ZCBsbGMgcGxhdGZvcm1zLCBCVFkgYW5kIElWWSByZXNwZWN0aXZlbHkuCgp2MjogdXNlIHByaW1l X2hhbmRsZV90b19mZF9mb3JfbW1hcCBpbnN0ZWFkLgp2MzogbWVyZ2UgZW5kX2NwdV9hY2Nlc3Mo KSBwYXRjaCB3aXRoIHRoaXMgYW5kIHByb3ZpZGUgb3B0aW9ucyB0byBkaXNhYmxlIHN5bmMuCnY0 OiB1c2UgbGlicmFyeSdzIHByaW1lX3N5bmNfe3N0YXJ0LGVuZH0gaW5zdGVhZC4KClNpZ25lZC1v ZmYtYnk6IFRpYWdvIFZpZ25hdHRpIDx0aWFnby52aWduYXR0aUBpbnRlbC5jb20+Ci0tLQogdGVz dHMvTWFrZWZpbGUuc291cmNlcyAgICAgfCAgIDEgKwogdGVzdHMva21zX21tYXBfd3JpdGVfY3Jj LmMgfCAyODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAy IGZpbGVzIGNoYW5nZWQsIDI4MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVz dHMva21zX21tYXBfd3JpdGVfY3JjLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCA3NWYzY2IwLi5hZDJkZDZhIDEwMDY0 NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKQEAgLTE2OCw2ICsxNjgsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlrbXNfM2QgXAogCWttc19m ZW5jZV9waW5fbGVhayBcCiAJa21zX2ZvcmNlX2Nvbm5lY3Rvcl9iYXNpYyBcCisJa21zX21tYXBf d3JpdGVfY3JjIFwKIAlrbXNfcHdyaXRlX2NyYyBcCiAJa21zX3NpbmtfY3JjX2Jhc2ljIFwKIAlw cmltZV91ZGwgXApkaWZmIC0tZ2l0IGEvdGVzdHMva21zX21tYXBfd3JpdGVfY3JjLmMgYi90ZXN0 cy9rbXNfbW1hcF93cml0ZV9jcmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42YTEyNTM5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMva21zX21tYXBfd3JpdGVfY3JjLmMK QEAgLTAsMCArMSwyODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3Jh dGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQor ICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS SVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisg KiBBdXRob3JzOgorICogICAgVGlhZ28gVmlnbmF0dGkgPHRpYWdvLnZpZ25hdHRpIGF0IGludGVs LmNvbT4KKyAqLworCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNp bmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKworI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgorI2lu Y2x1ZGUgImlndF9rbXMuaCIKKyNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCisjaW5jbHVkZSAi aW9jdGxfd3JhcHBlcnMuaCIKKyNpbmNsdWRlICJpZ3RfYXV4LmgiCisKK0lHVF9URVNUX0RFU0NS SVBUSU9OKAorICAgIlVzZSB0aGUgZGlzcGxheSBDUkMgc3VwcG9ydCB0byB2YWxpZGF0ZSBtbWFw IHdyaXRlIHRvIGFuIGFscmVhZHkgdW5jYWNoZWQgZnV0dXJlIHNjYW5vdXQgYnVmZmVyLiIpOwor Cit0eXBlZGVmIHN0cnVjdCB7CisJaW50IGRybV9mZDsKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7 CisJc3RydWN0IGlndF9mYiBmYlsyXTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlpZ3RfcGxh bmVfdCAqcHJpbWFyeTsKKwllbnVtIHBpcGUgcGlwZTsKKwlpZ3RfY3JjX3QgcmVmX2NyYzsKKwlp Z3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CisJdWludDMyX3QgZGV2aWQ7Cit9IGRhdGFfdDsKKwor c3RhdGljIGludCBpb2N0bF9zeW5jID0gdHJ1ZTsKK2ludCBkbWFfYnVmX2ZkOworCitzdGF0aWMg Y2hhciAqZG1hYnVmX21tYXBfZnJhbWVidWZmZXIoaW50IGRybV9mZCwgc3RydWN0IGlndF9mYiAq ZmIpCit7CisJY2hhciAqcHRyID0gTlVMTDsKKworCWRtYV9idWZfZmQgPSBwcmltZV9oYW5kbGVf dG9fZmRfZm9yX21tYXAoZHJtX2ZkLCBmYi0+Z2VtX2hhbmRsZSk7CisJaWd0X3NraXBfb24oZG1h X2J1Zl9mZCA9PSAtMSAmJiBlcnJubyA9PSBFSU5WQUwpOworCisJcHRyID0gbW1hcChOVUxMLCBm Yi0+c2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZG1hX2J1Zl9mZCwg MCk7CisJaWd0X2Fzc2VydChwdHIgIT0gTUFQX0ZBSUxFRCk7CisKKwlyZXR1cm4gcHRyOworfQor CitzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfZGlzcGxheV90ICpkaXNw bGF5ID0gJmRhdGEtPmRpc3BsYXk7CisJaWd0X291dHB1dF90ICpvdXRwdXQgPSBkYXRhLT5vdXRw dXQ7CisJc3RydWN0IGlndF9mYiAqZmIgPSAmZGF0YS0+ZmJbMV07CisJZHJtTW9kZU1vZGVJbmZv ICptb2RlOworCWNhaXJvX3QgKmNyOworCWNoYXIgKnB0cjsKKwl1aW50MzJfdCBjYWNoaW5nOwor CXZvaWQgKmJ1ZjsKKwlpZ3RfY3JjX3QgY3JjOworCisJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21v ZGUob3V0cHV0KTsKKworCS8qIGNyZWF0ZSBhIG5vbi13aGl0ZSBmYiB3aGVyZSB3ZSBjYW4gd3Jp dGUgbGF0ZXIgKi8KKwlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXks IG1vZGUtPnZkaXNwbGF5LAorCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1f Rk9STUFUX01PRF9OT05FLCBmYik7CisKKwlwdHIgPSBkbWFidWZfbW1hcF9mcmFtZWJ1ZmZlcihk YXRhLT5kcm1fZmQsIGZiKTsKKworCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2Zk LCBmYik7CisJaWd0X3BhaW50X3Rlc3RfcGF0dGVybihjciwgZmItPndpZHRoLCBmYi0+aGVpZ2h0 KTsKKwljYWlyb19kZXN0cm95KGNyKTsKKworCS8qIGZsaXAgdG8gaXQgdG8gbWFrZSBpdCBVQy9X QyBhbmQgZnVsbHkgZmx1c2hlZCAqLworCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwg ZmIpOworCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKKworCS8qIGZsaXAgYmFjayB0aGUg b3JpZ2luYWwgd2hpdGUgYnVmZmVyICovCisJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmltYXJ5 LCAmZGF0YS0+ZmJbMF0pOworCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKKworCS8qIG1h a2Ugc3VyZSBjYWNoaW5nIG1vZGUgaGFzIGJlY29tZSBVQy9XVCAqLworCWNhY2hpbmcgPSBnZW1f Z2V0X2NhY2hpbmcoZGF0YS0+ZHJtX2ZkLCBmYi0+Z2VtX2hhbmRsZSk7CisJaWd0X2Fzc2VydChj YWNoaW5nID09IEk5MTVfQ0FDSElOR19OT05FIHx8IGNhY2hpbmcgPT0gSTkxNV9DQUNISU5HX0RJ U1BMQVkpOworCisJLyoKKwkgKiBmaXJzdGx5IGRlbW9uc3RyYXRlIHRoZSBuZWVkIGZvciBETUFf QlVGX1NZTkNfU1RBUlQgKCJiZWdpbl9jcHVfYWNjZXNzIikKKwkgKi8KKwlpZiAoaW9jdGxfc3lu YykKKwkJcHJpbWVfc3luY19zdGFydChkbWFfYnVmX2ZkKTsKKworCS8qIHVzZSBkbWFidWYgcG9p bnRlciB0byBtYWtlIHRoZSBvdGhlciBmYiBhbGwgd2hpdGUgdG9vICovCisJYnVmID0gbWFsbG9j KGZiLT5zaXplKTsKKwlpZ3RfYXNzZXJ0KGJ1ZiAhPSBOVUxMKTsKKwltZW1zZXQoYnVmLCAweGZm LCBmYi0+c2l6ZSk7CisJbWVtY3B5KHB0ciwgYnVmLCBmYi0+c2l6ZSk7CisJZnJlZShidWYpOwor CisJLyogYW5kIGZsaXAgdG8gaXQgKi8KKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnks IGZiKTsKKwlpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7CisKKwkvKiBjaGVjayB0aGF0IHRo ZSBjcmMgaXMgYXMgZXhwZWN0ZWQsIHdoaWNoIHJlcXVpcmVzIHRoYXQgY2FjaGVzIGdvdCBmbHVz aGVkICovCisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsK KwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjLCAmZGF0YS0+cmVmX2NyYyk7CisKKwkvKgorCSAq IG5vdyBkZW1vbnN0cmF0ZXMgdGhlIG5lZWQgZm9yIERNQV9CVUZfU1lOQ19FTkQgKCJlbmRfY3B1 X2FjY2VzcyIpCisJICovCisKKwkvKiBzdGFydCBvdmVyLCB3cml0aW5nIG5vbi13aGl0ZSB0byB0 aGUgZmIgYWdhaW4gYW5kIGZsaXAgdG8gaXQgdG8gbWFrZSBpdAorCSAqIGZ1bGx5IGZsdXNoZWQg Ki8KKwljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEtPmRybV9mZCwgZmIpOworCWlndF9wYWlu dF90ZXN0X3BhdHRlcm4oY3IsIGZiLT53aWR0aCwgZmItPmhlaWdodCk7CisJY2Fpcm9fZGVzdHJv eShjcik7CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksIGZiKTsKKwlpZ3RfZGlz cGxheV9jb21taXQoZGlzcGxheSk7CisKKwkvKiBzeW5jIHN0YXJ0LCB0byBtb3ZlIHRvIENQVSBk b21haW4gKi8KKwlpZiAoaW9jdGxfc3luYykKKwkJcHJpbWVfc3luY19zdGFydChkbWFfYnVmX2Zk KTsKKworCS8qIHVzZSBkbWFidWYgcG9pbnRlciBpbiB0aGUgc2FtZSBmYiB0byBtYWtlIGl0IGFs bCB3aGl0ZSAqLworCWJ1ZiA9IG1hbGxvYyhmYi0+c2l6ZSk7CisJaWd0X2Fzc2VydChidWYgIT0g TlVMTCk7CisJbWVtc2V0KGJ1ZiwgMHhmZiwgZmItPnNpemUpOworCW1lbWNweShwdHIsIGJ1Ziwg ZmItPnNpemUpOworCWZyZWUoYnVmKTsKKworCS8qIGlmIHdlIGRvbid0IGNoYW5nZSB0byB0aGUg R1RUIGRvbWFpbiBhZ2FpbiwgdGhlIHdoaXRlcyB3b24ndCBnZXQgZmx1c2hlZAorCSAqIGFuZCB0 aGVyZWZvcmUgd2UgZGVtb25zdHJhdGVzIHRoZSBuZWVkIGZvciBzeW5jIGVuZCBoZXJlICovCisJ aWYgKGlvY3RsX3N5bmMpCisJCXByaW1lX3N5bmNfZW5kKGRtYV9idWZfZmQpOworCisJLyogY2hl Y2sgdGhhdCB0aGUgY3JjIGlzIGFzIGV4cGVjdGVkLCB3aGljaCByZXF1aXJlcyB0aGF0IGNhY2hl cyBnb3QgZmx1c2hlZCAqLworCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2Ny YywgJmNyYyk7CisJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNyYywgJmRhdGEtPnJlZl9jcmMpOwor fQorCitzdGF0aWMgYm9vbCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhKQoreworCWlndF9kaXNw bGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9 IGRhdGEtPm91dHB1dDsKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisKKwkvKiBzZWxlY3QgdGhl IHBpcGUgd2Ugd2FudCB0byB1c2UgKi8KKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgZGF0 YS0+cGlwZSk7CisJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOworCisJaWYgKCFvdXRwdXQt PnZhbGlkKSB7CisJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7CisJCWln dF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW1vZGUg PSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7CisKKwkvKiBjcmVhdGUgYSB3aGl0ZSByZWZl cmVuY2UgZmIgYW5kIGZsaXAgdG8gaXQgKi8KKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRy bV9mZCwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJICAgIERSTV9GT1JNQVRf WFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCQkgICAgMS4wLCAxLjAsIDEu MCwgJmRhdGEtPmZiWzBdKTsKKworCWRhdGEtPnByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFu ZShvdXRwdXQsIElHVF9QTEFORV9QUklNQVJZKTsKKworCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+ cHJpbWFyeSwgJmRhdGEtPmZiWzBdKTsKKwlpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7CisK KwlpZiAoZGF0YS0+cGlwZV9jcmMpCisJCWlndF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVfY3Jj KTsKKworCWRhdGEtPnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5waXBlLAorCQkJ CQkgIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKKworCS8qIGdldCByZWZlcmVuY2UgY3Jj IGZvciB0aGUgd2hpdGUgZmIgKi8KKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlw ZV9jcmMsICZkYXRhLT5yZWZfY3JjKTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9p ZCBjbGVhbnVwX2NydGMoZGF0YV90ICpkYXRhKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkg PSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGRhdGEtPm91dHB1dDsK KworCWlndF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKKwlkYXRhLT5waXBlX2NyYyA9 IE5VTEw7CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksIE5VTEwpOworCisJaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKKwlpZ3RfZGlzcGxheV9jb21taXQo ZGlzcGxheSk7CisKKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiWzBdKTsK KwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiWzFdKTsKK30KKworc3RhdGlj IHZvaWQgcnVuX3Rlc3QoZGF0YV90ICpkYXRhKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkg PSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwllbnVtIHBpcGUgcGlw ZTsKKworCWZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGlzcGxheSwgb3V0cHV0KSB7CisJCWRh dGEtPm91dHB1dCA9IG91dHB1dDsKKwkJZm9yX2VhY2hfcGlwZShkaXNwbGF5LCBwaXBlKSB7CisJ CQlkYXRhLT5waXBlID0gcGlwZTsKKworCQkJaWYgKCFwcmVwYXJlX2NydGMoZGF0YSkpCisJCQkJ Y29udGludWU7CisKKwkJCXRlc3QoZGF0YSk7CisJCQljbGVhbnVwX2NydGMoZGF0YSk7CisKKwkJ CS8qIG9uY2UgaXMgZW5vdWdoICovCisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlpZ3Rfc2tpcCgi bm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IgY29tYmluYXRpb25zIGZvdW5kXG4iKTsKK30KKworc3Rh dGljIGludCBvcHRfaGFuZGxlcihpbnQgb3B0LCBpbnQgb3B0X2luZGV4LCB2b2lkICpkYXRhKQor eworCWlmIChvcHQgPT0gJ24nKSB7CisJCWlvY3RsX3N5bmMgPSBmYWxzZTsKKwkJaWd0X2luZm8o InNldCB2aWEgY21kIGxpbmUgdG8gbm90IHVzZSBzeW5jIGlvY3Rsc1xuIik7CisJfQorCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBkYXRhX3QgZGF0YTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQoreworCWlndF9zaW1wbGVfaW5pdF9wYXJzZV9vcHRzKCZhcmdjLCBhcmd2LCAi biIsIE5VTEwsIE5VTEwsIG9wdF9oYW5kbGVyLCBOVUxMKTsKKworCWlndF9za2lwX29uX3NpbXVs YXRpb24oKTsKKworCWlndF9maXh0dXJlIHsKKwkJZGF0YS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2 ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7CisKKwkJZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1f ZGV2aWQoZGF0YS5kcm1fZmQpOworCisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsK KworCQlpZ3RfcmVxdWlyZV9waXBlX2NyYygpOworCisJCWlndF9kaXNwbGF5X2luaXQoJmRhdGEu ZGlzcGxheSwgZGF0YS5kcm1fZmQpOworCX0KKworCXJ1bl90ZXN0KCZkYXRhKTsKKworCWlndF9m aXh0dXJlIHsKKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKwl9CisKKwlpZ3Rf ZXhpdCgpOworfQotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==