From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 3/4] drm/i915: Enable asynchronous nuclear flips Date: Sat, 31 Jan 2015 12:07:56 -0800 Message-ID: <20150131200756.GA30483@mattrope.com> References: <1422663759-21589-1-git-send-email-matthew.d.roper@intel.com> <1422663759-21589-4-git-send-email-matthew.d.roper@intel.com> <20150131093028.GK14009@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from www.mattrope.com (pengra.com [66.220.1.87]) by gabe.freedesktop.org (Postfix) with ESMTP id 87B6B6E27F for ; Sat, 31 Jan 2015 12:22:50 -0800 (PST) Content-Disposition: inline In-Reply-To: <20150131093028.GK14009@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCBKYW4gMzEsIDIwMTUgYXQgMTA6MzA6MjlBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIEphbiAzMCwgMjAxNSBhdCAwNDoyMjozOFBNIC0wODAwLCBNYXR0IFJv cGVyIHdyb3RlOgo+ID4gVGhlIGluaXRpYWwgaTkxNSBudWNsZWFyIHBhZ2VmbGlwIHN1cHBvcnQg cmVqZWN0ZWQgYXN5bmNocm9ub3VzIHVwZGF0ZXMuCj4gPiBBbGxvdyBhbGwgd29yayBhZnRlciB3 ZSBzd2FwIGluIHRoZSBuZXcgc3RhdGUgc3RydWN0dXJlcyB0byBydW4KPiA+IGFzeW5jaHJvbm91 c2x5LiAgV2UgYWxzbyBuZWVkIHRvIHN0YXJ0IHNlbmRpbmcgY29tcGxldGlvbiBldmVudHMgdG8K PiA+IHVzZXJzcGFjZSBpZiB0aGV5IHdlcmUgcmVxdWVzdGVkLgo+ID4gCj4gPiBTaWduZWQtb2Zm LWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAgIDMgKwo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIHwgMTYyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgIHwg ICA4ICsrCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRp b25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gaW5kZXggOGZhZDcwMi4u YzdhNTIwYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IEBAIC0xNzc3LDYg KzE3NzcsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPiAgCXN0cnVjdCBkcm1fY3J0 YyAqcGlwZV90b19jcnRjX21hcHBpbmdbSTkxNV9NQVhfUElQRVNdOwo+ID4gIAl3YWl0X3F1ZXVl X2hlYWRfdCBwZW5kaW5nX2ZsaXBfcXVldWU7Cj4gPiAgCj4gPiArCS8qIENSVEMgbWFzayBvZiBw ZW5kaW5nIGF0b21pYyBmbGlwcyAqLwo+ID4gKwl1aW50MzJfdCBwZW5kaW5nX2F0b21pYzsKPiA+ ICsKPiA+ICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4gPiAgCXN0cnVjdCBpbnRlbF9waXBlX2Ny YyBwaXBlX2NyY1tJOTE1X01BWF9QSVBFU107Cj4gPiAgI2VuZGlmCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdG9taWMuYwo+ID4gaW5kZXggMTlhOWRkNS4uNWRkNzg5NyAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ID4gQEAgLTc2LDYgKzc2LDggQEAgaW50IGlu dGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gIAlzdGF0ZS0+YWxs b3dfbW9kZXNldCA9IGZhbHNlOwo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgbmNydGNzOyBpKyspIHsK PiA+ICAJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+Y3J0 Y3NbaV0pOwo+ID4gKwkJaWYgKGNydGMpCj4gPiArCQkJc3RhdGUtPmNydGNfc3RhdGVzW2ldLT5l bmFibGUgPSBjcnRjLT5hY3RpdmU7Cj4gPiAgCQlpZiAoY3J0YyAmJiBjcnRjLT5waXBlICE9IG51 Y2xlYXJfcGlwZSkKPiA+ICAJCQlub3RfbnVjbGVhciA9IHRydWU7Cj4gPiAgCX0KPiA+IEBAIC05 Niw2ICs5OCw4NyBAQCBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gPiAgfQo+ID4gIAo+ID4gIAo+ID4gKy8qCj4gPiArICogV2FpdCB1bnRpbCBDUlRDJ3Mg aGF2ZSBubyBwZW5kaW5nIGZsaXAsIHRoZW4gYXRvbWljYWxseSBtYXJrIHRob3NlIENSVEMncwo+ ID4gKyAqIGFzIGJ1c3kuCj4gPiArICovCj4gPiArc3RhdGljIGludCB3YWl0X2Zvcl9wZW5kaW5n X2ZsaXAodWludDMyX3QgY3J0Y19tYXNrLAo+ID4gKwkJCQkgc3RydWN0IGludGVsX3BlbmRpbmdf YXRvbWljICpjb21taXQpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBjb21taXQtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4g PiArCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5wZW5kaW5nX2ZsaXBfcXVldWUubG9jayk7Cj4g PiArCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV9sb2NrZWQoZGV2X3ByaXYtPnBlbmRp bmdfZmxpcF9xdWV1ZSwKPiA+ICsJCQkJCSAgICAgICEoZGV2X3ByaXYtPnBlbmRpbmdfYXRvbWlj ICYgY3J0Y19tYXNrKSk7Cj4gPiArCWlmIChyZXQgPT0gMCkKPiA+ICsJCWRldl9wcml2LT5wZW5k aW5nX2F0b21pYyB8PSBjcnRjX21hc2s7Cj4gPiArCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYt PnBlbmRpbmdfZmxpcF9xdWV1ZS5sb2NrKTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9 Cj4gPiArCj4gPiArLyogRmluaXNoIHBlbmRpbmcgZmxpcCBvcGVyYXRpb24gb24gc3BlY2lmaWVk IENSVEMncyAqLwo+ID4gK3N0YXRpYyB2b2lkIGZsaXBfY29tcGxldGlvbihzdHJ1Y3QgaW50ZWxf cGVuZGluZ19hdG9taWMgKmNvbW1pdCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGNvbW1pdC0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICsKPiA+ICsJc3Bp bl9sb2NrX2lycSgmZGV2X3ByaXYtPnBlbmRpbmdfZmxpcF9xdWV1ZS5sb2NrKTsKPiA+ICsJZGV2 X3ByaXYtPnBlbmRpbmdfYXRvbWljICY9IH5jb21taXQtPmNydGNfbWFzazsKPiA+ICsJd2FrZV91 cF9hbGxfbG9ja2VkKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVlKTsKPiA+ICsJc3Bpbl91 bmxvY2tfaXJxKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVlLmxvY2spOwo+ID4gK30KPiA+ ICsKPiA+ICsvKgo+ID4gKyAqIEZpbmlzaCBhbiBhdG9taWMgY29tbWl0LiAgVGhlIHdvcmsgaGVy ZSBjYW4gYmUgcGVyZm9ybWVkIGFzeW5jaHJvbm91c2x5Cj4gPiArICogaWYgZGVzaXJlZC4gIFRo ZSBuZXcgc3RhdGUgaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRoZSBEUk0gb2JqZWN0cwo+ ID4gKyAqIGFuZCBubyBtb2Rlc2V0IGxvY2tzIGFyZSBuZWVkZWQuCj4gPiArICovCj4gPiArc3Rh dGljIHZvaWQgZmluaXNoX2F0b21pY19jb21taXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX3BlbmRpbmdfYXRvbWljICpjb21taXQgPQo+ID4gKwkJ Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpbnRlbF9wZW5kaW5nX2F0b21pYywgd29yayk7Cj4g PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb21taXQtPmRldjsKPiA+ICsJc3RydWN0IGRy bV9jcnRjICpjcnRjOwo+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjb21t aXQtPnN0YXRlOwo+ID4gKwlpbnQgaTsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogRklYTUU6ICBU aGUgcHJvcGVyIHNlcXVlbmNlIGhlcmUgd2lsbCBldmVudHVhbGx5IGJlOgo+ID4gKwkgKgo+ID4g KwkgKiBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcHJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+ ICsJICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+ICsJ ICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3Bvc3RfcGxhbmVzKGRldiwgc3RhdGUpOwo+ID4g KwkgKiBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOwo+ID4g KwkgKiBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+ICsJ ICogZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiA+ICsJICoKPiA+ICsJICogb25jZSB3 ZSBoYXZlIGZ1bGwgYXRvbWljIG1vZGVzZXQuICBGb3Igbm93LCBqdXN0IG1hbnVhbGx5IHVwZGF0 ZQo+ID4gKwkgKiBwbGFuZSBzdGF0ZXMgdG8gYXZvaWQgY2xvYmJlcmluZyBnb29kIHN0YXRlcyB3 aXRoIGR1bW15IHN0YXRlcwo+ID4gKwkgKiB3aGlsZSBudWNsZWFyIHBhZ2VmbGlwcGluZy4KPiA+ ICsJICovCj4gPiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSk7 Cj4gPiArCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZGV2LCBzdGF0ZSk7Cj4g PiArCj4gPiArCS8qIFNlbmQgQ1JUQyBjb21wbGV0aW9uIGV2ZW50cy4gKi8KPiA+ICsJZm9yIChp ID0gMDsgaSA8IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7IGkrKykgewo+ID4gKwkJY3J0YyA9 IHN0YXRlLT5jcnRjc1tpXTsKPiA+ICsJCWlmIChjcnRjICYmIGNydGMtPnN0YXRlLT5ldmVudCkg ewo+ID4gKwkJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Cj4gPiArCQkJZHJtX3Nl bmRfdmJsYW5rX2V2ZW50KGRldiwgdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZSwKPiA+ICsJCQkJ CSAgICAgIGNydGMtPnN0YXRlLT5ldmVudCk7Cj4gPiArCQkJc3Bpbl91bmxvY2tfaXJxKCZkZXYt PmV2ZW50X2xvY2spOwo+ID4gKwkJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7Cj4gPiArCQl9 Cj4gPiArCX0KPiA+ICsKPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2 LCBzdGF0ZSk7Cj4gPiArCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gPiArCj4gPiAr CWZsaXBfY29tcGxldGlvbihjb21taXQpOwo+ID4gKwlrZnJlZShjb21taXQpOwo+ID4gK30KPiA+ ICsKPiA+ICAvKioKPiA+ICAgKiBpbnRlbF9hdG9taWNfY29tbWl0IC0gY29tbWl0IHZhbGlkYXRl ZCBzdGF0ZSBvYmplY3QKPiA+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gPiBAQCAtMTE2LDM0ICsx OTksNDggQEAgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiA+ICAJCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiAgCQkJYm9vbCBhc3lu YykKPiA+ICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9wZW5kaW5nX2F0b21pYyAqY29tbWl0Owo+ID4g IAlpbnQgcmV0Owo+ID4gIAlpbnQgaTsKPiA+ICAKPiA+IC0JaWYgKGFzeW5jKSB7Cj4gPiAtCQlE Uk1fREVCVUdfS01TKCJpOTE1IGRvZXMgbm90IHlldCBzdXBwb3J0IGFzeW5jIGNvbW1pdFxuIik7 Cj4gPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0JfQo+ID4gLQo+ID4gIAlyZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+ICAJaWYgKHJldCkKPiA+ ICAJCXJldHVybiByZXQ7Cj4gPiAgCj4gPiAtCS8qIFBvaW50IG9mIG5vIHJldHVybiAqLwo+ID4g Kwljb21taXQgPSBremFsbG9jKHNpemVvZigqY29tbWl0KSwgR0ZQX0tFUk5FTCk7Cj4gPiArCWlm ICghY29tbWl0KQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiArCj4gPiArCWNvbW1pdC0+ZGV2 ID0gZGV2Owo+ID4gKwljb21taXQtPnN0YXRlID0gc3RhdGU7Cj4gPiArCj4gPiArCWZvciAoaSA9 IDA7IGkgPCBkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjOyBpKyspCj4gPiArCQlpZiAoc3RhdGUt PmNydGNzW2ldKQo+ID4gKwkJCWNvbW1pdC0+Y3J0Y19tYXNrIHw9Cj4gPiArCQkJCSgxIDw8IGRy bV9jcnRjX2luZGV4KHN0YXRlLT5jcnRjc1tpXSkpOwo+ID4gIAo+ID4gIAkvKgo+ID4gLQkgKiBG SVhNRTogIFRoZSBwcm9wZXIgc2VxdWVuY2UgaGVyZSB3aWxsIGV2ZW50dWFsbHkgYmU6Cj4gPiAt CSAqCj4gPiAtCSAqIGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoZGV2LCBzdGF0ZSkKPiA+ IC0JICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3ByZV9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4g PiAtCSAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gPiAt CSAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wb3N0X3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+ IC0JICogZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcyhkZXYsIHN0YXRlKTsKPiA+ IC0JICogZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gPiAt CSAqIGRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gPiAtCSAqCj4gPiAtCSAqIG9uY2Ug d2UgaGF2ZSBmdWxsIGF0b21pYyBtb2Rlc2V0LiAgRm9yIG5vdywganVzdCBtYW51YWxseSB1cGRh dGUKPiA+IC0JICogcGxhbmUgc3RhdGVzIHRvIGF2b2lkIGNsb2JiZXJpbmcgZ29vZCBzdGF0ZXMg d2l0aCBkdW1teSBzdGF0ZXMKPiA+IC0JICogd2hpbGUgbnVjbGVhciBwYWdlZmxpcHBpbmcuCj4g PiArCSAqIElmIHRoZXJlJ3MgYWxyZWFkeSBhIGZsaXAgcGVuZGluZywgd2Ugd29uJ3Qgc2NoZWR1 bGUgYW5vdGhlciBvbmUKPiA+ICsJICogdW50aWwgaXQgY29tcGxldGVzLiAgV2UgbWF5IHJlbGF4 IHRoaXMgaW4gdGhlIGZ1dHVyZSwgYnV0IGZvciBub3cKPiA+ICsJICogdGhpcyBtYXRjaGVzIHRo ZSBsZWdhY3kgcGFnZWZsaXAgYmVoYXZpb3IuCj4gPiArCSAqLwo+ID4gKwlyZXQgPSB3YWl0X2Zv cl9wZW5kaW5nX2ZsaXAoY29tbWl0LT5jcnRjX21hc2ssIGNvbW1pdCk7Cj4gPiArCWlmIChyZXQp IHsKPiA+ICsJCWtmcmVlKGNvbW1pdCk7Cj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gKwl9Cj4gPiAr Cj4gPiArCS8qCj4gPiArCSAqIFBvaW50IG9mIG5vIHJldHVybjsgZXZlcnl0aGluZyBmcm9tIGhl cmUgb24gY2FuJ3QgZmFpbCwgc28gc3dhcAo+ID4gKwkgKiB0aGUgbmV3IHN0YXRlIGludG8gdGhl IERSTSBvYmplY3RzLgo+ID4gKwkgKi8KPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogRklYTUU6ICBT aG91bGQgZXZlbnR1YWxseSB1c2UgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZSgpLgo+ID4g KwkgKiBIb3dldmVyIHNpbmNlIHdlIG9ubHkgaGFuZGxlIHBsYW5lcyBhdCB0aGUgbW9tZW50LCB3 ZSBkb24ndAo+ID4gKwkgKiB3YW50IHRvIGNsb2JiZXIgb3VyIGdvb2QgY3J0YyBzdGF0ZSB3aXRo IHNvbWV0aGluZyBib2d1cywKPiA+ICsJICogc28ganVzdCBtYW51YWxseSBzd2FwIHRoZSBwbGFu ZSBzdGF0ZXMgYW5kIGNvcHkgb3ZlciBhbnkgY29tcGxldGlvbgo+ID4gKwkgKiBldmVudHMgZm9y IENSVEMncy4KPiA+ICAJICovCj4gPiAgCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1vZGVfY29uZmln Lm51bV90b3RhbF9wbGFuZTsgaSsrKSB7Cj4gPiAgCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9 IHN0YXRlLT5wbGFuZXNbaV07Cj4gPiBAQCAtMTU1LDEwICsyNTIsMjkgQEAgaW50IGludGVsX2F0 b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCXN3YXAoc3RhdGUtPnBs YW5lX3N0YXRlc1tpXSwgcGxhbmUtPnN0YXRlKTsKPiA+ICAJCXBsYW5lLT5zdGF0ZS0+c3RhdGUg PSBOVUxMOwo+ID4gIAl9Cj4gPiAtCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2 LCBzdGF0ZSk7Cj4gPiAtCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZGV2LCBz dGF0ZSk7Cj4gPiAtCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUp Owo+ID4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ID4gKwo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YzsgaSsrKSB7Cj4gPiArCQlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0Y3NbaV07Cj4gPiArCQlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Y19zdGF0ZXNbaV07Cj4gPiArCj4gPiArCQlp ZiAoIWNydGMgfHwgIWNydGNfc3RhdGUpCj4gPiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQkv KiBuLmIuLCB3ZSBvbmx5IGNvcHkgdGhlIGV2ZW50IGFuZCBlbmFibGVkIGZsYWcgZm9yIG5vdyAq Lwo+ID4gKwkJc3dhcChjcnRjLT5zdGF0ZS0+ZXZlbnQsIGNydGNfc3RhdGUtPmV2ZW50KTsKPiA+ ICsJCXN3YXAoY3J0Yy0+c3RhdGUtPmVuYWJsZSwgY3J0Y19zdGF0ZS0+ZW5hYmxlKTsKPiA+ICsJ fQo+IAo+IEJlZm9yZSB3ZSBjYW4gc3dhcCBpbiB0aGUgbmV3IHN0YXRlIHdlIG5lZWQgdG8gc3Rh bGwgZm9yIGFueSBvdXN0YW5kaW5nCj4gYXN5bmMgZmxpcCB0byBjb21wbGV0ZS4gQXQgbGVhc3Qg dW50aWwgd2UgaGF2ZSBhIGZ1bGwtYmxvd24gZmxpcCBxdWV1ZS4KCkkgdGhpbmsgdGhlIHdhaXRf Zm9yX3BlbmRpbmdfZmxpcCgpIGNhbGwgYWJvdmUgdGhlIHR3byBjb21tZW50IGJsb2NrcwpiZWZv cmUgdGhlIGxvb3Agc2hvdWxkIHRha2UgY2FyZSBvZiB0aGF0IC0tLSBpdCB3YWl0cyB1bnRpbCBh bGwgdGhlCkNSVEMncyBpbiBjb21taXQtPmNydGNfbWFzayBoYXZlIG5vIHBlbmRpbmcgZmxpcCwg dGhlbiBhdG9taWNhbGx5IG1hcmtzCnRoZW0gYXMgYnVzeSBiZWZvcmUgcHJvY2VlZGluZy4KCgpN YXR0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=