From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 10/10] kms_drrs: Test DRRS entry and exit Date: Tue, 20 Jan 2015 10:11:31 +0100 Message-ID: <20150120091131.GF10113@phenom.ffwll.local> References: <1420836965-10068-1-git-send-email-vandana.kannan@intel.com> <1420836965-10068-11-git-send-email-vandana.kannan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-we0-f171.google.com (mail-we0-f171.google.com [74.125.82.171]) by gabe.freedesktop.org (Postfix) with ESMTP id 042066E5DB for ; Tue, 20 Jan 2015 01:11:36 -0800 (PST) Received: by mail-we0-f171.google.com with SMTP id u56so35812873wes.2 for ; Tue, 20 Jan 2015 01:11:35 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx , "Vivi, Rodrigo" , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKYW4gMTUsIDIwMTUgYXQgMDM6MjQ6MDRQTSAtMDgwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IEkgZGlkbid0IGdldCBob3cgaXQgc2hvd3MgZGlmZmVyZW50IHJhdGVzIGlmIHRoZSBp OTE1X2RycnNfc3RhdHVzIG9ubHkKPiBzaG93cyBpZiBwYW5lbCBzdXBwb3J0cyBvciBub3QuCj4g Cj4gTWF5YmUgdGhlIGRlYnVnZnMgZmlsZSBjb3VsZCBjb250YWluIG1vcmUgaW5mbyBmb3IgZWFj aCBjcnRjIGNvbm5lY3QsCj4gY3J0YyBpbmZvLCBpZiBwYW5lbCBjb25uZWN0ZWQgdGhlcmUgc3Vw cG9ydHMsIGlmIGl0IGlzIGVuYWJsZWQgYW5kCj4gYWxzbyBjdXJyZW50IGZyZXEuLiB0aGVuIHBh cnNlIGFsbCBoZXJlIHByb3Blcmx5LgoKWWVhaCwgZ2l2aW5nIHRoZSB0ZXN0Y2FzZSBtaW5pbWFs IGZ1bmN0aW9uYWwgdGVzdGluZyBieSBtYWtpbmcgc3VyZSB0aGUKa2VybmVsIGdvZXMgaW50byBs b3ctUlIgbW9kZSB3aGVuIGl0IHNob3VsZCB3b3VsZCBiZSBnb29kLiBJIHRoaW5rIHdpdGgKZmJj L3BzciB0ZXN0cyB3ZSdyZSBtb3JlIHRoYW4gY292ZXJlZCBvbiB0aGUgZnVuY3Rpb25hbCBzaWRl IGZvciB0ZXN0aW5nCnRoYXQgd2UgZG9uJ3QgbWlzcyB1cGRhdGVzLgoKPiBCdXQgb25lIHRoaW5n IEkgZG9uJ3Qga25vdyBob3cgdG8gY292ZXIgYnV0IGl0IHdvdWxkIGJlIGdvb2QgaXMgdG8KPiBj aGVjayBmb3IgZmxpY2tlcnMuLi4KCkkgZG9uJ3QgdGhpbmsgdGhhdCdzIHBvc3NpYmxlIHVuZm9y dHVuYXRlbHkgOiggV2UganVzdCBoYXZlIHRvIHdhaXQgZm9yCnJhbmRvbSBidWcgcmVwb3J0cy4g QWxzbyB0aGlzIHRpbWUgYXJvdW5kIHdlIGRvIHJlc3BlY3QgdGhlIHZhcmlvdXMgdmJ0CmFuZCBw YW5lbCBzZXR0aW5ncywgc28gaG9wZWZ1bGx5IHRoaXMgd29ya3MgYmV0dGVyIHRoYW4gdGhlIG9s ZCBsdmRzIGRycnMKY29kZSB3ZSBoYXZlIG1lcmdlZCBhbHJlYWR5LgotRGFuaWVsCgo+IE9uIEZy aSwgSmFuIDksIDIwMTUgYXQgMTI6NTYgUE0sIFZhbmRhbmEgS2FubmFuCj4gPHZhbmRhbmEua2Fu bmFuQGludGVsLmNvbT4gd3JvdGU6Cj4gPiBUaGlzIHRlc3QganVzdCBkaXNwbGF5IGEgZnJhbWUg b24gc2NyZWVuLCB3YWl0cyBmb3IgMSBzZWNvbmQgdG8gZW50ZXIgRFJSUwo+ID4gYW5kIGRpc3Bs YXlzIGFub3RoZXIgZnJhbWUgdG8gZXhpdCBEUlJTLgo+ID4gVE9ETzotIE5vdGlmeSB0aGUgdXNl ciBhYm91dCB3aGljaCByZWZyZXNoIHJhdGUgd2FzIHVzZWQgYXQgZGlmZmVyZW50IHN0YWdlcy4K PiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBWYW5kYW5hIEthbm5hbiA8dmFuZGFuYS5rYW5uYW5AaW50 ZWwuY29tPgo+ID4gLS0tCj4gPiAgdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCj4gPiAg dGVzdHMva21zX2RycnMuYyAgICAgICB8IDIyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9u cygrKQo+ID4gIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgdGVzdHMvTWFrZWZpbGUuc291 cmNlcwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHJycy5jCj4gPgo+ID4gZGlm ZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz Cj4gPiBvbGQgbW9kZSAxMDA2NDQKPiA+IG5ldyBtb2RlIDEwMDc1NQo+ID4gaW5kZXggOTY3ZGM4 Zi4uZmJjMDk3Nwo+ID4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gKysrIGIvdGVz dHMvTWFrZWZpbGUuc291cmNlcwo+ID4gQEAgLTY0LDYgKzY0LDcgQEAgVEVTVFNfcHJvZ3NfTSA9 IFwKPiA+ICAgICAgICAgZ2VtX3dyaXRlX3JlYWRfcmluZ19zd2l0Y2ggXAo+ID4gICAgICAgICBr bXNfYWRkZmIgXAo+ID4gICAgICAgICBrbXNfY3Vyc29yX2NyYyBcCj4gPiArICAgICAgIGttc19k cnJzIFwKPiA+ICAgICAgICAga21zX2ZiY19jcmMgXAo+ID4gICAgICAgICBrbXNfZmxpcCBcCj4g PiAgICAgICAgIGttc19mbGlwX2V2ZW50X2xlYWsgXAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2tt c19kcnJzLmMgYi90ZXN0cy9rbXNfZHJycy5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4g aW5kZXggMDAwMDAwMC4uNWEzNjBmMwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdGVzdHMv a21zX2RycnMuYwo+ID4gQEAgLTAsMCArMSwyMjUgQEAKPiA+ICsvKgo+ID4gKyAqIENvcHlyaWdo dCDCqSAyMDEzIEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4g KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQo+ID4gKyAqIFNvZnR3YXJlLgo+ID4gKyAqCj4gPiArICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK PiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiA+ICsgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiArICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UiBERUFMSU5HUwo+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ICsgKgo+ID4gKyAqLwo+ID4g Kwo+ID4gKyNpbmNsdWRlICJkcm10ZXN0LmgiCj4gPiArI2luY2x1ZGUgImlndF9kZWJ1Z2ZzLmgi Cj4gPiArI2luY2x1ZGUgImlndF9rbXMuaCIKPiA+ICsjaW5jbHVkZSAiaW50ZWxfY2hpcHNldC5o Igo+ID4gKyNpbmNsdWRlICJpbnRlbF9iYXRjaGJ1ZmZlci5oIgo+ID4gKyNpbmNsdWRlICJpb2N0 bF93cmFwcGVycy5oIgo+ID4gKwo+ID4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKAo+ID4gKyJQZXJm b3JtcyB3cml0ZSBvcGVyYXRpb25zIGFuZCB0aGVuIHdhaXRzIGZvciBEUlJTIHRvIGJlIGVuYWJs ZWQgYW5kIHRoZW4gIgo+ID4gKyJkaXN0dXJicyB0aGUgY29udGVudHMgb2YgdGhlIHNjcmVlbiBv bmNlIGFnYWluIHRvIGRpc2FibGUgRFJSUy4iKTsKPiA+ICsKPiA+ICt0eXBlZGVmIHN0cnVjdCB7 Cj4gPiArICAgICAgIGludCBkcm1fZmQ7Cj4gPiArICAgICAgIHVpbnQzMl90IGRldmlkOwo+ID4g KyAgICAgICB1aW50MzJfdCBoYW5kbGVbMl07Cj4gPiArICAgICAgIGlndF9kaXNwbGF5X3QgZGlz cGxheTsKPiA+ICsgICAgICAgaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gPiArICAgICAgIGVudW0g cGlwZSBwaXBlOwo+ID4gKyAgICAgICBpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiA+ICsgICAgICAg c3RydWN0IGlndF9mYiBmYlsyXTsKPiA+ICsgICAgICAgdWludDMyX3QgZmJfaWRbMl07Cj4gPiAr fSBkYXRhX3Q7Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgZHJyc19lbmFibGVkKGRhdGFfdCAqZGF0 YSkKPiA+ICt7Cj4gPiArICAgICAgIEZJTEUgKnN0YXR1czsKPiA+ICsgICAgICAgY2hhciBzdHJb NjRdID0ge307Cj4gPiArCj4gPiArICAgICAgIHN0YXR1cyA9IGlndF9kZWJ1Z2ZzX2ZvcGVuKCJp OTE1X2RycnNfc3RhdHVzIiwgInIiKTsKPiA+ICsgICAgICAgaWd0X2Fzc2VydChzdGF0dXMpOwo+ ID4gKwo+ID4gKyAgICAgICBmcmVhZChzdHIsIHNpemVvZihzdHIpIC0gMSwgMSwgc3RhdHVzKTsK PiA+ICsgICAgICAgZmNsb3NlKHN0YXR1cyk7Cj4gPiArICAgICAgIHJldHVybiBzdHJzdHIoc3Ry LCAiRFJSUyBlbmFibGVkIikgIT0gTlVMTDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wg cHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSkKPiA+ICt7Cj4gPiArICAgICAgIGlndF9kaXNwbGF5 X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiA+ICsgICAgICAgaWd0X291dHB1dF90ICpv dXRwdXQgPSBkYXRhLT5vdXRwdXQ7Cj4gPiArCj4gPiArICAgICAgIC8qIHNlbGVjdCB0aGUgcGlw ZSB3ZSB3YW50IHRvIHVzZSAqLwo+ID4gKyAgICAgICBpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1 dCwgZGF0YS0+cGlwZSk7Cj4gPiArICAgICAgIGlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsK PiA+ICsKPiA+ICsgICAgICAgaWYgKCFvdXRwdXQtPnZhbGlkKSB7Cj4gPiArICAgICAgICAgICAg ICAgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKPiA+ICsgICAgICAgICAg ICAgICBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIHJldHVybiB0cnVlOwo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgYm9vbCBwcmVwYXJlX3Rlc3QoZGF0YV90ICpkYXRhKQo+ ID4gK3sKPiA+ICsgICAgICAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5 Owo+ID4gKyAgICAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGRhdGEtPm91dHB1dDsKPiA+ICsg ICAgICAgZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+ID4gKwo+ID4gKyAgICAgICBkYXRhLT5wcmlt YXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmUoZGF0YS0+b3V0cHV0LCBJR1RfUExBTkVfUFJJTUFS WSk7Cj4gPiArICAgICAgIG1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKGRhdGEtPm91dHB1dCk7 Cj4gPiArCj4gPiArICAgICAgIGRhdGEtPmZiX2lkWzBdID0gaWd0X2NyZWF0ZV9jb2xvcl9mYihk YXRhLT5kcm1fZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBJOTE1X1RJTElOR19YLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgMC4wLCAw LjAsIDAuMCwgJmRhdGEtPmZiWzBdKTsKPiA+ICsgICAgICAgaWd0X2Fzc2VydChkYXRhLT5mYl9p ZFswXSk7Cj4gPiArICAgICAgIGRhdGEtPmZiX2lkWzFdID0gaWd0X2NyZWF0ZV9jb2xvcl9mYihk YXRhLT5kcm1fZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBJOTE1X1RJTElOR19YLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgMC4xLCAw LjEsIDAuMSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICZkYXRhLT5mYlsxXSk7Cj4gPiAr ICAgICAgIGlndF9hc3NlcnQoZGF0YS0+ZmJfaWRbMV0pOwo+ID4gKwo+ID4gKyAgICAgICBkYXRh LT5oYW5kbGVbMF0gPSBkYXRhLT5mYlswXS5nZW1faGFuZGxlOwo+ID4gKyAgICAgICBkYXRhLT5o YW5kbGVbMV0gPSBkYXRhLT5mYlsxXS5nZW1faGFuZGxlOwo+ID4gKwo+ID4gKyAgICAgICAvKiBz Y2Fub3V0ID0gZmJbMV0gKi8KPiA+ICsgICAgICAgaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmlt YXJ5LCAmZGF0YS0+ZmJbMV0pOwo+ID4gKyAgICAgICBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxh eSk7Cj4gPiArICAgICAgIHVzbGVlcCgxMDAwMDAwKTsKPiA+ICsKPiA+ICsgICAgICAgaWYgKCFk cnJzX2VuYWJsZWQoZGF0YSkpIHsKPiA+ICsgICAgICAgICAgICAgICBpZ3RfaW5mbygiRFJSUyBu b3QgZW5hYmxlZFxuIik7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaWd0X3BsYW5lX3NldF9m YihkYXRhLT5wcmltYXJ5LCBOVUxMKTsKPiA+ICsgICAgICAgICAgICAgICBpZ3Rfb3V0cHV0X3Nl dF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwo+ID4gKyAgICAgICAgICAgICAgIGlndF9kaXNwbGF5 X2NvbW1pdChkaXNwbGF5KTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBpZ3RfcmVtb3ZlX2Zi KGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiWzBdKTsKPiA+ICsgICAgICAgICAgICAgICBpZ3RfcmVt b3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiWzFdKTsKPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgaWd0X3dhaXRfZm9y X3ZibGFuayhkYXRhLT5kcm1fZmQsIGRhdGEtPnBpcGUpOwo+ID4gKwo+ID4gKyAgICAgICAvKiBz Y2Fub3V0ID0gZmJbMF0gKi8KPiA+ICsgICAgICAgaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmlt YXJ5LCAmZGF0YS0+ZmJbMF0pOwo+ID4gKyAgICAgICBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxh eSk7Cj4gPiArICAgICAgIHVzbGVlcCgxMDAwMDApOwo+ID4gKwo+ID4gKyAgICAgICBpZ3Rfd2Fp dF9mb3JfdmJsYW5rKGRhdGEtPmRybV9mZCwgZGF0YS0+cGlwZSk7Cj4gPiArCj4gPiArICAgICAg IHJldHVybiB0cnVlOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBmaW5pc2hfY3J0Yyhk YXRhX3QgKmRhdGEpCj4gPiArewo+ID4gKyAgICAgICBpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnBy aW1hcnksIE5VTEwpOwo+ID4gKyAgICAgICBpZ3Rfb3V0cHV0X3NldF9waXBlKGRhdGEtPm91dHB1 dCwgUElQRV9BTlkpOwo+ID4gKyAgICAgICBpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3Bs YXkpOwo+ID4gKwo+ID4gKyAgICAgICBpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEt PmZiWzBdKTsKPiA+ICsgICAgICAgaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5m YlsxXSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHJlc2V0X2Rpc3BsYXkoZGF0YV90 ICpkYXRhKQo+ID4gK3sKPiA+ICsgICAgICAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRh LT5kaXNwbGF5Owo+ID4gKwo+ID4gKyAgICAgICBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRp c3BsYXksIGRhdGEtPm91dHB1dCkgewo+ID4gKyAgICAgICAgICAgICAgIGlmIChkYXRhLT5vdXRw dXQtPnZhbGlkKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5wcmltYXJ5ID0g IGlndF9vdXRwdXRfZ2V0X3BsYW5lKGRhdGEtPm91dHB1dCwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUdUX1BMQU5FX1BSSU1BUlkp Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmlt YXJ5LCBOVUxMKTsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAgICAgaWd0 X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIFBJUEVfQU5ZKTsKPiA+ICsgICAgICAgfQo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBydW5fdGVzdChkYXRhX3QgKmRhdGEpCj4gPiAr ewo+ID4gKyAgICAgICBpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4g PiArICAgICAgIGludCB2YWxpZF90ZXN0cyA9IDA7Cj4gPiArCj4gPiArICAgICAgIHJlc2V0X2Rp c3BsYXkoZGF0YSk7Cj4gPiArCj4gPiArICAgICAgIGZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQo ZGlzcGxheSwgZGF0YS0+b3V0cHV0KSB7Cj4gPiArICAgICAgICAgICAgICAgZm9yX2VhY2hfcGlw ZShkaXNwbGF5LCBkYXRhLT5waXBlKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo IXByZXBhcmVfY3J0YyhkYXRhKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZ3RfaW5mbygiQmVn aW5uaW5nICVzIG9uIHBpcGUgJXMsIGNvbm5lY3RvciAlc1xuIiwKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZ3Rfc3VidGVzdF9uYW1lKCksCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga21zdGVzdF9waXBlX25hbWUoZGF0YS0+ cGlwZSksCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X291 dHB1dF9uYW1lKGRhdGEtPm91dHB1dCkpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCFwcmVwYXJlX3Rlc3QoZGF0YSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWd0X2luZm8oIiVzIG9uIHBpcGUgJXMsIGNvbm5lY3RvciAlczogU0tJUFBFRFxu IiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGln dF9zdWJ0ZXN0X25hbWUoKSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKGRhdGEtPnBpcGUpLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X291dHB1dF9uYW1lKGRh dGEtPm91dHB1dCkpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX3Rlc3RzKys7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBpZ3RfaW5mbygiJXMgb24gcGlwZSAlcywgY29ubmVjdG9yICVzOiBQQVNTRURcbiIsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X3N1YnRlc3RfbmFtZSgp LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGttc3Rlc3RfcGlw ZV9uYW1lKGRhdGEtPnBpcGUpLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlndF9vdXRwdXRfbmFtZShkYXRhLT5vdXRwdXQpKTsKPiA+ICsKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGZpbmlzaF9jcnRjKGRhdGEpOwo+ID4gKyAgICAgICAgICAgICAgIH0K PiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBpZ3RfcmVxdWlyZV9mKHZhbGlkX3Rlc3Rz LCAibm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IgY29tYmluYXRpb25zIGZvdW5kXG4iKTsKPiA+ICt9 Cj4gPiArCj4gPiAraWd0X21haW4KPiA+ICt7Cj4gPiArICAgICAgIGRhdGFfdCBkYXRhID0ge307 Cj4gPiArCj4gPiArICAgICAgIGlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKPiA+ICsKPiA+ICsg ICAgICAgaWd0X2ZpeHR1cmUgewo+ID4gKyAgICAgICAgICAgICAgIGNoYXIgYnVmWzY0XTsKPiA+ ICsgICAgICAgICAgICAgICBGSUxFICpzdGF0dXM7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAg ZGF0YS5kcm1fZmQgPSBkcm1fb3Blbl9hbnlfbWFzdGVyKCk7Cj4gPiArCj4gPiArICAgICAgICAg ICAgICAgZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpOwo+ID4g Kwo+ID4gKyAgICAgICAgICAgICAgIHN0YXR1cyA9IGlndF9kZWJ1Z2ZzX2ZvcGVuKCJpOTE1X2Ry cnNfc3RhdHVzIiwgInIiKTsKPiA+ICsgICAgICAgICAgICAgICBpZ3RfcmVxdWlyZV9mKHN0YXR1 cywgIk5vIGk5MTVfZHJyc19zdGF0dXMgZm91bmRcbiIpOwo+ID4gKyAgICAgICAgICAgICAgIGZy ZWFkKGJ1Ziwgc2l6ZW9mKGJ1ZiksIDEsIHN0YXR1cyk7Cj4gPiArICAgICAgICAgICAgICAgZmNs b3NlKHN0YXR1cyk7Cj4gPiArICAgICAgICAgICAgICAgYnVmW3NpemVvZihidWYpIC0gMV0gPSAn XDAnOwo+ID4gKyAgICAgICAgICAgICAgIGlndF9yZXF1aXJlX2YoIXN0cnN0cihidWYsICJkaXNh YmxlZCIpLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRFJSUyBub3Qgc3Vw cG9ydGVkOmNoZWNrIFZCVC9wYW5lbCBjYXBzXG4iKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAg ICBpZ3RfZGlzcGxheV9pbml0KCZkYXRhLmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsKPiA+ICsgICAg ICAgfQo+ID4gKwo+ID4gKyAgICAgICBydW5fdGVzdCgmZGF0YSk7Cj4gPiArCj4gPiArICAgICAg IGlndF9maXh0dXJlIHsKPiA+ICsgICAgICAgICAgICAgICBpZ3RfZGlzcGxheV9maW5pKCZkYXRh LmRpc3BsYXkpOwo+ID4gKyAgICAgICB9Cj4gPiArfQo+ID4gLS0KPiA+IDIuMC4xCj4gPgo+ID4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK PiAKPiAKPiAKPiAtLSAKPiBSb2RyaWdvIFZpdmkKPiBCbG9nOiBodHRwOi8vYmxvZy52aXZpLmVu Zy5icgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24K KzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=