From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tiago Vignatti Subject: [PATCH igt v7 5/6] tests: Add kms_mmap_write_crc for cache coherency tests Date: Tue, 22 Dec 2015 19:36:53 -0200 Message-ID: <1450820214-12509-11-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 59F4D6E42A for ; Tue, 22 Dec 2015 13:37:32 -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 VGhpcyBwcm9ncmFtIGNhbiBiZSB1c2VkIHRvIGRldGVjdCB3aGVuIENQVSB3cml0ZXMgaW4gdGhl IGRtYS1idWYgbWFwcGVkIG9iamVjdApkb24ndCBsYW5kIGluIHNjYW5vdXQgZHVlIGNhY2hlIGlu Y29oZXJlbmN5LgoKQWx0aG91Z2ggdGhpcyBzZWVtcyBhIHByb2JsZW0gaW5oZXJlbnRseSBvZiBu b24tTENDIG1hY2hpbmVzICgiQXRvbSIpLCB0aGlzCnBhcnRpY3VsYXIgdGVzdCBjYXRjaGVzIGEg Y2FjaGUgZGlydCBvbiBzY2Fub3V0IG9uIExMQyBtYWNoaW5lcyBhcyB3ZWxsLiBJdCdzCmluc3Bp cmVkIGluIFZpbGxlJ3Mga21zX3B3cml0ZV9jcmMuYyBhbmQgY2FuIGJlIHVzZWQgYWxzbyB0byB0 ZXN0IHRoZQpjb3JyZWN0bmVzcyBvZiB0aGUgZHJpdmVyJ3MgYmVnaW5fY3B1X2FjY2VzcyBhbmQg ZW5kX2NwdV9hY2Nlc3MgKHdoaWNoIHJlcXVpcmVzCmk5MTUgaW1wbGVtZW50YXRpb24uCgpUbyBz ZWUgdGhlIG5lZWQgZm9yIGZsdXNoLCBvbmUgaGFzIHRvIHJ1biB1c2luZyAnLW4nIG9wdGlvbiB0 byBub3QgY2FsbCB0aGUKc3luYyBpb2N0bHMgd2hpY2gsIHZpYSBhIHJhdGhlciBzaW1wbGUgQ1BV IGhvZyB0aGUgc3lzdGVtIHdpbGwgdHJhc2hlcyB0aGUKY2FjaGVzLCB3aGlsZSB0aGUgdGVzdCB3 aWxsIGNhdGNoIHRoZSBjb2hlcmVuY3kgaXNzdWUuIElmIHlvdSBub3cgc3VwcHJlc3MKJy1uJywg dGhlbiB0aGluZ3Mgc2hvdWxkIGp1c3Qgd29yayBsaWtlIGV4cGVjdGVkLgoKSSB0ZXN0ZWQgdGhp cyB3aXRoICFsbGMgYW5kIGxsYyBwbGF0Zm9ybXMsIEJUWSBhbmQgSVZZIHJlc3BlY3RpdmVseS4K CnYyOiB1c2UgcHJpbWVfaGFuZGxlX3RvX2ZkX2Zvcl9tbWFwIGluc3RlYWQuCnYzOiBtZXJnZSBl bmRfY3B1X2FjY2VzcygpIHBhdGNoIHdpdGggdGhpcyBhbmQgcHJvdmlkZSBvcHRpb25zIHRvIGRp c2FibGUgc3luYy4KdjQ6IHVzZSBsaWJyYXJ5J3MgcHJpbWVfc3luY197c3RhcnQsZW5kfSBpbnN0 ZWFkLgp2NzogdXNlIENQVSBob2cgaW5zdGVhZCBhbmQgdXNlIHRlc3Rpbmcgcm91bmRzIHRvIGNh dGNoIHRoZSBzeW5jIHByb2JsZW1zLgoKU2lnbmVkLW9mZi1ieTogVGlhZ28gVmlnbmF0dGkgPHRp YWdvLnZpZ25hdHRpQGludGVsLmNvbT4KLS0tCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICB8 ICAgMSArCiB0ZXN0cy9rbXNfbW1hcF93cml0ZV9jcmMuYyB8IDMxMyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzE0IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfbW1hcF93cml0ZV9jcmMuYwoK ZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzCmluZGV4IDc1ZjNjYjAuLmFkMmRkNmEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNv dXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMTY4LDYgKzE2OCw3IEBAIFRF U1RTX3Byb2dzID0gXAogCWttc18zZCBcCiAJa21zX2ZlbmNlX3Bpbl9sZWFrIFwKIAlrbXNfZm9y Y2VfY29ubmVjdG9yX2Jhc2ljIFwKKwlrbXNfbW1hcF93cml0ZV9jcmMgXAogCWttc19wd3JpdGVf Y3JjIFwKIAlrbXNfc2lua19jcmNfYmFzaWMgXAogCXByaW1lX3VkbCBcCmRpZmYgLS1naXQgYS90 ZXN0cy9rbXNfbW1hcF93cml0ZV9jcmMuYyBiL3Rlc3RzL2ttc19tbWFwX3dyaXRlX2NyYy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ODRiYmQKLS0tIC9kZXYvbnVsbAor KysgYi90ZXN0cy9rbXNfbW1hcF93cml0ZV9jcmMuYwpAQCAtMCwwICsxLDMxMyBAQAorLyoKKyAq IENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBUaWFnbyBW aWduYXR0aSA8dGlhZ28udmlnbmF0dGkgYXQgaW50ZWwuY29tPgorICovCisKKyNpbmNsdWRlIDxl cnJuby5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNs dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZHJtdGVzdC5o IgorI2luY2x1ZGUgImlndF9kZWJ1Z2ZzLmgiCisjaW5jbHVkZSAiaWd0X2ttcy5oIgorI2luY2x1 ZGUgImludGVsX2NoaXBzZXQuaCIKKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorI2luY2x1 ZGUgImlndF9hdXguaCIKKworSUdUX1RFU1RfREVTQ1JJUFRJT04oCisgICAiVXNlIHRoZSBkaXNw bGF5IENSQyBzdXBwb3J0IHRvIHZhbGlkYXRlIG1tYXAgd3JpdGUgdG8gYW4gYWxyZWFkeSB1bmNh Y2hlZCBmdXR1cmUgc2Nhbm91dCBidWZmZXIuIik7CisKKyNkZWZpbmUgUk9VTkRTIDEwCisKK3R5 cGVkZWYgc3RydWN0IHsKKwlpbnQgZHJtX2ZkOworCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKKwlz dHJ1Y3QgaWd0X2ZiIGZiWzJdOworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlndF9wbGFuZV90 ICpwcmltYXJ5OworCWVudW0gcGlwZSBwaXBlOworCWlndF9jcmNfdCByZWZfY3JjOworCWlndF9w aXBlX2NyY190ICpwaXBlX2NyYzsKKwl1aW50MzJfdCBkZXZpZDsKK30gZGF0YV90OworCitzdGF0 aWMgaW50IGlvY3RsX3N5bmMgPSB0cnVlOworaW50IGRtYV9idWZfZmQ7CisKK3N0YXRpYyBjaGFy ICpkbWFidWZfbW1hcF9mcmFtZWJ1ZmZlcihpbnQgZHJtX2ZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikK K3sKKwljaGFyICpwdHIgPSBOVUxMOworCisJZG1hX2J1Zl9mZCA9IHByaW1lX2hhbmRsZV90b19m ZF9mb3JfbW1hcChkcm1fZmQsIGZiLT5nZW1faGFuZGxlKTsKKwlpZ3Rfc2tpcF9vbihkbWFfYnVm X2ZkID09IC0xICYmIGVycm5vID09IEVJTlZBTCk7CisKKwlwdHIgPSBtbWFwKE5VTEwsIGZiLT5z aXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBkbWFfYnVmX2ZkLCAwKTsK KwlpZ3RfYXNzZXJ0KHB0ciAhPSBNQVBfRkFJTEVEKTsKKworCXJldHVybiBwdHI7Cit9CisKK3N0 YXRpYyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkg PSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGRhdGEtPm91dHB1dDsK KwlzdHJ1Y3QgaWd0X2ZiICpmYiA9ICZkYXRhLT5mYlsxXTsKKwlkcm1Nb2RlTW9kZUluZm8gKm1v ZGU7CisJY2Fpcm9fdCAqY3I7CisJY2hhciAqcHRyOworCXVpbnQzMl90IGNhY2hpbmc7CisJdm9p ZCAqYnVmOworCWlndF9jcmNfdCBjcmM7CisKKwltb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShv dXRwdXQpOworCisJLyogY3JlYXRlIGEgbm9uLXdoaXRlIGZiIHdoZXJlIHdlIGNhbiB3cml0ZSBs YXRlciAqLworCWlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9k ZS0+dmRpc3BsYXksCisJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JN QVRfTU9EX05PTkUsIGZiKTsKKworCXB0ciA9IGRtYWJ1Zl9tbWFwX2ZyYW1lYnVmZmVyKGRhdGEt PmRybV9mZCwgZmIpOworCisJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsIGZi KTsKKwlpZ3RfcGFpbnRfdGVzdF9wYXR0ZXJuKGNyLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOwor CWNhaXJvX2Rlc3Ryb3koY3IpOworCisJLyogZmxpcCB0byBpdCB0byBtYWtlIGl0IFVDL1dDIGFu ZCBmdWxseSBmbHVzaGVkICovCisJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmltYXJ5LCBmYik7 CisJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOworCisJLyogZmxpcCBiYWNrIHRoZSBvcmln aW5hbCB3aGl0ZSBidWZmZXIgKi8KKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZk YXRhLT5mYlswXSk7CisJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOworCisJLyogbWFrZSBz dXJlIGNhY2hpbmcgbW9kZSBoYXMgYmVjb21lIFVDL1dUICovCisJY2FjaGluZyA9IGdlbV9nZXRf Y2FjaGluZyhkYXRhLT5kcm1fZmQsIGZiLT5nZW1faGFuZGxlKTsKKwlpZ3RfYXNzZXJ0KGNhY2hp bmcgPT0gSTkxNV9DQUNISU5HX05PTkUgfHwgY2FjaGluZyA9PSBJOTE1X0NBQ0hJTkdfRElTUExB WSk7CisKKwkvKgorCSAqIGZpcnN0bHkgZGVtb25zdHJhdGUgdGhlIG5lZWQgZm9yIERNQV9CVUZf U1lOQ19TVEFSVCAoImJlZ2luX2NwdV9hY2Nlc3MiKQorCSAqLworCWlmIChpb2N0bF9zeW5jKQor CQlwcmltZV9zeW5jX3N0YXJ0KGRtYV9idWZfZmQpOworCisJLyogdXNlIGRtYWJ1ZiBwb2ludGVy IHRvIG1ha2UgdGhlIG90aGVyIGZiIGFsbCB3aGl0ZSB0b28gKi8KKwlidWYgPSBtYWxsb2MoZmIt PnNpemUpOworCWlndF9hc3NlcnQoYnVmICE9IE5VTEwpOworCW1lbXNldChidWYsIDB4ZmYsIGZi LT5zaXplKTsKKwltZW1jcHkocHRyLCBidWYsIGZiLT5zaXplKTsKKwlmcmVlKGJ1Zik7CisKKwkv KiBhbmQgZmxpcCB0byBpdCAqLworCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgZmIp OworCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKKworCS8qIGNoZWNrIHRoYXQgdGhlIGNy YyBpcyBhcyBleHBlY3RlZCwgd2hpY2ggcmVxdWlyZXMgdGhhdCBjYWNoZXMgZ290IGZsdXNoZWQg Ki8KKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmMpOworCWln dF9hc3NlcnRfY3JjX2VxdWFsKCZjcmMsICZkYXRhLT5yZWZfY3JjKTsKKworCS8qCisJICogbm93 IGRlbW9uc3RyYXRlcyB0aGUgbmVlZCBmb3IgRE1BX0JVRl9TWU5DX0VORCAoImVuZF9jcHVfYWNj ZXNzIikKKwkgKi8KKworCS8qIHN0YXJ0IG92ZXIsIHdyaXRpbmcgbm9uLXdoaXRlIHRvIHRoZSBm YiBhZ2FpbiBhbmQgZmxpcCB0byBpdCB0byBtYWtlIGl0CisJICogZnVsbHkgZmx1c2hlZCAqLwor CWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCBmYik7CisJaWd0X3BhaW50X3Rl c3RfcGF0dGVybihjciwgZmItPndpZHRoLCBmYi0+aGVpZ2h0KTsKKwljYWlyb19kZXN0cm95KGNy KTsKKworCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgZmIpOworCWlndF9kaXNwbGF5 X2NvbW1pdChkaXNwbGF5KTsKKworCS8qIHN5bmMgc3RhcnQsIHRvIG1vdmUgdG8gQ1BVIGRvbWFp biAqLworCWlmIChpb2N0bF9zeW5jKQorCQlwcmltZV9zeW5jX3N0YXJ0KGRtYV9idWZfZmQpOwor CisJLyogdXNlIGRtYWJ1ZiBwb2ludGVyIGluIHRoZSBzYW1lIGZiIHRvIG1ha2UgaXQgYWxsIHdo aXRlICovCisJYnVmID0gbWFsbG9jKGZiLT5zaXplKTsKKwlpZ3RfYXNzZXJ0KGJ1ZiAhPSBOVUxM KTsKKwltZW1zZXQoYnVmLCAweGZmLCBmYi0+c2l6ZSk7CisJbWVtY3B5KHB0ciwgYnVmLCBmYi0+ c2l6ZSk7CisJZnJlZShidWYpOworCisJLyogaWYgd2UgZG9uJ3QgY2hhbmdlIHRvIHRoZSBHVFQg ZG9tYWluIGFnYWluLCB0aGUgd2hpdGVzIHdvbid0IGdldCBmbHVzaGVkCisJICogYW5kIHRoZXJl Zm9yZSB3ZSBkZW1vbnN0cmF0ZXMgdGhlIG5lZWQgZm9yIHN5bmMgZW5kIGhlcmUgKi8KKwlpZiAo aW9jdGxfc3luYykKKwkJcHJpbWVfc3luY19lbmQoZG1hX2J1Zl9mZCk7CisKKwkvKiBjaGVjayB0 aGF0IHRoZSBjcmMgaXMgYXMgZXhwZWN0ZWQsIHdoaWNoIHJlcXVpcmVzIHRoYXQgY2FjaGVzIGdv dCBmbHVzaGVkICovCisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAm Y3JjKTsKKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjLCAmZGF0YS0+cmVmX2NyYyk7Cit9CisK K3N0YXRpYyBib29sIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEpCit7CisJaWd0X2Rpc3BsYXlf dCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gZGF0 YS0+b3V0cHV0OworCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKKworCS8qIHNlbGVjdCB0aGUgcGlw ZSB3ZSB3YW50IHRvIHVzZSAqLworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBkYXRhLT5w aXBlKTsKKwlpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7CisKKwlpZiAoIW91dHB1dC0+dmFs aWQpIHsKKwkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKKwkJaWd0X2Rp c3BsYXlfY29tbWl0KGRpc3BsYXkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJbW9kZSA9IGln dF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKworCS8qIGNyZWF0ZSBhIHdoaXRlIHJlZmVyZW5j ZSBmYiBhbmQgZmxpcCB0byBpdCAqLworCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2Zk LCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCisJCQkgICAgRFJNX0ZPUk1BVF9YUkdC ODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCSAgICAxLjAsIDEuMCwgMS4wLCAm ZGF0YS0+ZmJbMF0pOworCisJZGF0YS0+cHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91 dHB1dCwgSUdUX1BMQU5FX1BSSU1BUlkpOworCisJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmlt YXJ5LCAmZGF0YS0+ZmJbMF0pOworCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKKworCWlm IChkYXRhLT5waXBlX2NyYykKKwkJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwor CisJZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPnBpcGUsCisJCQkJCSAg SU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOworCisJLyogZ2V0IHJlZmVyZW5jZSBjcmMgZm9y IHRoZSB3aGl0ZSBmYiAqLworCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2Ny YywgJmRhdGEtPnJlZl9jcmMpOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGNs ZWFudXBfY3J0YyhkYXRhX3QgKmRhdGEpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZk YXRhLT5kaXNwbGF5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gZGF0YS0+b3V0cHV0OworCisJ aWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOworCWRhdGEtPnBpcGVfY3JjID0gTlVM TDsKKworCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgTlVMTCk7CisKKwlpZ3Rfb3V0 cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOworCWlndF9kaXNwbGF5X2NvbW1pdChkaXNw bGF5KTsKKworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbMF0pOworCWln dF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbMV0pOworfQorCitzdGF0aWMgdm9p ZCBydW5fdGVzdChkYXRhX3QgKmRhdGEpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZk YXRhLT5kaXNwbGF5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWVudW0gcGlwZSBwaXBlOwor CisJZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChkaXNwbGF5LCBvdXRwdXQpIHsKKwkJZGF0YS0+ b3V0cHV0ID0gb3V0cHV0OworCQlmb3JfZWFjaF9waXBlKGRpc3BsYXksIHBpcGUpIHsKKwkJCWRh dGEtPnBpcGUgPSBwaXBlOworCisJCQlpZiAoIXByZXBhcmVfY3J0YyhkYXRhKSkKKwkJCQljb250 aW51ZTsKKworCQkJdGVzdChkYXRhKTsKKwkJCWNsZWFudXBfY3J0YyhkYXRhKTsKKworCQkJLyog b25jZSBpcyBlbm91Z2ggKi8KKwkJCXJldHVybjsKKwkJfQorCX0KKworCWlndF9za2lwKCJubyB2 YWxpZCBjcnRjL2Nvbm5lY3RvciBjb21iaW5hdGlvbnMgZm91bmRcbiIpOworfQorCisvKioKKyAq IGZvcmtfY3B1aG9nX2hlbHBlcjoKKyAqCisgKiBGb3JrIGEgY2hpbGQgcHJvY2VzcyB0aGF0IGxv b3BzIGluZGVmaW5pdGVseSB0byBjb25zdW1lIENQVS4gVGhpcyBpcyB1c2VkIHRvCisgKiBmaWxs IHRoZSBDUFUgY2FjaGVzIHdpdGggcmFuZG9tIGluZm9ybWF0aW9uIHNvIHRoZXkgY2FuIGdldCBz dGFsbGVkLAorICogcHJvdm9raW5nIGluY29oZXJlbmN5IHdpdGggdGhlIEdQVSBtb3N0IGxpa2Vs eS4KKyAqLworc3RhdGljIHZvaWQgZm9ya19jcHVob2dfaGVscGVyKHZvaWQpIHsKKworCS8qIFRP RE86IGlmIHRoZSBwYXJlbnQgaXMgYWJvdXQgdG8gZGllIGJlZm9yZSBpdHMgY2hpbGQsIGUuZy4K KwkgKiBpZ3RfYXNzZXJ0X2NyY19lcXVhbCgpIGZhaWxzLCB0aGVyZSB3aWxsIGJlIGEgYm9yaW5n IGV4aXQgaGFuZGxlcgorCSAqIHdhaXRpbmcgdGhlIGNoaWxkIHRvIGV4aXQgYWxzby4gQSB3b3Jr YXJvdW5kIGlzIHRvIHNpbXBseSBkaXNhYmxlIHRoYXQKKwkgKiBoYW5kbGVyLCBidXkgdGhpcyBu ZWVkcyB0byBiZSBmaXhlZCBwcm9wZXJseSBpbiBhbiBlbGVnYW50IHdheS4gKi8KKwlpZ3RfZGlz YWJsZV9leGl0X2hhbmRsZXIoKTsKKworCWlndF9mb3JrKGhvZywgMSkgeworCQl3aGlsZSAoMSkg eworCQkJdXNsZWVwKDEwKTsgLyogcXVpdGUgcmFtZG9tIHJlYWxseS4gKi8KKworCQkJaWYgKChp bnQpZ2V0cHBpZCgpID09IDEpIC8qIFBhcmVudCBoYXMgZGllZCwgc28gbXVzdCB3ZS4gKi8KKwkJ CQlleGl0KDApOworCQl9CisJfQorfQorCitzdGF0aWMgaW50IG9wdF9oYW5kbGVyKGludCBvcHQs IGludCBvcHRfaW5kZXgsIHZvaWQgKmRhdGEpCit7CisJaWYgKG9wdCA9PSAnbicpIHsKKwkJaW9j dGxfc3luYyA9IGZhbHNlOworCQlpZ3RfaW5mbygic2V0IHZpYSBjbWQgbGluZSB0byBub3QgdXNl IHN5bmMgaW9jdGxzXG4iKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGRhdGFfdCBk YXRhOworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50IGk7CisJaWd0 X3NpbXBsZV9pbml0X3BhcnNlX29wdHMoJmFyZ2MsIGFyZ3YsICJuIiwgTlVMTCwgTlVMTCwgb3B0 X2hhbmRsZXIsIE5VTEwpOworCisJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOworCisJaWd0X2Zp eHR1cmUgeworCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lO VEVMKTsKKworCQlkYXRhLmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9mZCk7 CisKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOworCisJCWlndF9yZXF1aXJlX3Bp cGVfY3JjKCk7CisKKwkJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9m ZCk7CisJfQorCisJaWd0X2luZm8oIlVzaW5nICVkIHJvdW5kcyBmb3IgdGhlIHRlc3RcbiIsIFJP VU5EUyk7CisJZm9ya19jcHVob2dfaGVscGVyKCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgUk9VTkRT OyBpKyspCisJCXJ1bl90ZXN0KCZkYXRhKTsKKworCWlndF9maXh0dXJlIHsKKwkJaWd0X2Rpc3Bs YXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKwl9CisKKwlpZ3RfZXhpdCgpOworfQotLSAKMi4xLjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==