From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm/i915: Enable asynchronous nuclear flips Date: Sat, 31 Jan 2015 10:30:29 +0100 Message-ID: <20150131093028.GK14009@phenom.ffwll.local> References: <1422663759-21589-1-git-send-email-matthew.d.roper@intel.com> <1422663759-21589-4-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f47.google.com (mail-wg0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTP id ED0DE6E0A4 for ; Sat, 31 Jan 2015 01:29:08 -0800 (PST) Received: by mail-wg0-f47.google.com with SMTP id n12so30757091wgh.6 for ; Sat, 31 Jan 2015 01:29:08 -0800 (PST) Content-Disposition: inline In-Reply-To: <1422663759-21589-4-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMzAsIDIwMTUgYXQgMDQ6MjI6MzhQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBUaGUgaW5pdGlhbCBpOTE1IG51Y2xlYXIgcGFnZWZsaXAgc3VwcG9ydCByZWplY3RlZCBh c3luY2hyb25vdXMgdXBkYXRlcy4KPiBBbGxvdyBhbGwgd29yayBhZnRlciB3ZSBzd2FwIGluIHRo ZSBuZXcgc3RhdGUgc3RydWN0dXJlcyB0byBydW4KPiBhc3luY2hyb25vdXNseS4gIFdlIGFsc28g bmVlZCB0byBzdGFydCBzZW5kaW5nIGNvbXBsZXRpb24gZXZlbnRzIHRvCj4gdXNlcnNwYWNlIGlm IHRoZXkgd2VyZSByZXF1ZXN0ZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0 dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMu YyB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAgIDggKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAx NTAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gaW5kZXggOGZhZDcwMi4uYzdhNTIwYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+IEBAIC0xNzc3LDYgKzE3NzcsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAlz dHJ1Y3QgZHJtX2NydGMgKnBpcGVfdG9fY3J0Y19tYXBwaW5nW0k5MTVfTUFYX1BJUEVTXTsKPiAg CXdhaXRfcXVldWVfaGVhZF90IHBlbmRpbmdfZmxpcF9xdWV1ZTsKPiAgCj4gKwkvKiBDUlRDIG1h c2sgb2YgcGVuZGluZyBhdG9taWMgZmxpcHMgKi8KPiArCXVpbnQzMl90IHBlbmRpbmdfYXRvbWlj Owo+ICsKPiAgI2lmZGVmIENPTkZJR19ERUJVR19GUwo+ICAJc3RydWN0IGludGVsX3BpcGVfY3Jj IHBpcGVfY3JjW0k5MTVfTUFYX1BJUEVTXTsKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXRvbWljLmMKPiBpbmRleCAxOWE5ZGQ1Li41ZGQ3ODk3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljLmMKPiBAQCAtNzYsNiArNzYsOCBAQCBpbnQgaW50ZWxfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlzdGF0ZS0+YWxsb3dfbW9kZXNldCA9IGZh bHNlOwo+ICAJZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7Cj4gIAkJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHN0YXRlLT5jcnRjc1tpXSk7Cj4gKwkJaWYgKGNy dGMpCj4gKwkJCXN0YXRlLT5jcnRjX3N0YXRlc1tpXS0+ZW5hYmxlID0gY3J0Yy0+YWN0aXZlOwo+ ICAJCWlmIChjcnRjICYmIGNydGMtPnBpcGUgIT0gbnVjbGVhcl9waXBlKQo+ICAJCQlub3RfbnVj bGVhciA9IHRydWU7Cj4gIAl9Cj4gQEAgLTk2LDYgKzk4LDg3IEBAIGludCBpbnRlbF9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgfQo+ICAKPiAgCj4gKy8qCj4gKyAqIFdh aXQgdW50aWwgQ1JUQydzIGhhdmUgbm8gcGVuZGluZyBmbGlwLCB0aGVuIGF0b21pY2FsbHkgbWFy ayB0aG9zZSBDUlRDJ3MKPiArICogYXMgYnVzeS4KPiArICovCj4gK3N0YXRpYyBpbnQgd2FpdF9m b3JfcGVuZGluZ19mbGlwKHVpbnQzMl90IGNydGNfbWFzaywKPiArCQkJCSBzdHJ1Y3QgaW50ZWxf cGVuZGluZ19hdG9taWMgKmNvbW1pdCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gY29tbWl0LT5kZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IHJldDsKPiArCj4g KwlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVlLmxvY2spOwo+ICsJ cmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2xvY2tlZChkZXZfcHJpdi0+cGVuZGluZ19m bGlwX3F1ZXVlLAo+ICsJCQkJCSAgICAgICEoZGV2X3ByaXYtPnBlbmRpbmdfYXRvbWljICYgY3J0 Y19tYXNrKSk7Cj4gKwlpZiAocmV0ID09IDApCj4gKwkJZGV2X3ByaXYtPnBlbmRpbmdfYXRvbWlj IHw9IGNydGNfbWFzazsKPiArCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnBlbmRpbmdfZmxp cF9xdWV1ZS5sb2NrKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKiBGaW5pc2gg cGVuZGluZyBmbGlwIG9wZXJhdGlvbiBvbiBzcGVjaWZpZWQgQ1JUQydzICovCj4gK3N0YXRpYyB2 b2lkIGZsaXBfY29tcGxldGlvbihzdHJ1Y3QgaW50ZWxfcGVuZGluZ19hdG9taWMgKmNvbW1pdCkK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29tbWl0LT5kZXYt PmRldl9wcml2YXRlOwo+ICsKPiArCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5wZW5kaW5nX2Zs aXBfcXVldWUubG9jayk7Cj4gKwlkZXZfcHJpdi0+cGVuZGluZ19hdG9taWMgJj0gfmNvbW1pdC0+ Y3J0Y19tYXNrOwo+ICsJd2FrZV91cF9hbGxfbG9ja2VkKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlw X3F1ZXVlKTsKPiArCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnBlbmRpbmdfZmxpcF9xdWV1 ZS5sb2NrKTsKPiArfQo+ICsKPiArLyoKPiArICogRmluaXNoIGFuIGF0b21pYyBjb21taXQuICBU aGUgd29yayBoZXJlIGNhbiBiZSBwZXJmb3JtZWQgYXN5bmNocm9ub3VzbHkKPiArICogaWYgZGVz aXJlZC4gIFRoZSBuZXcgc3RhdGUgaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRoZSBEUk0g b2JqZWN0cwo+ICsgKiBhbmQgbm8gbW9kZXNldCBsb2NrcyBhcmUgbmVlZGVkLgo+ICsgKi8KPiAr c3RhdGljIHZvaWQgZmluaXNoX2F0b21pY19jb21taXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGVuZGluZ19hdG9taWMgKmNvbW1pdCA9Cj4gKwkJY29u dGFpbmVyX29mKHdvcmssIHN0cnVjdCBpbnRlbF9wZW5kaW5nX2F0b21pYywgd29yayk7Cj4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29tbWl0LT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjb21taXQtPnN0YXRl Owo+ICsJaW50IGk7Cj4gKwo+ICsJLyoKPiArCSAqIEZJWE1FOiAgVGhlIHByb3BlciBzZXF1ZW5j ZSBoZXJlIHdpbGwgZXZlbnR1YWxseSBiZToKPiArCSAqCj4gKwkgKiBkcm1fYXRvbWljX2hlbHBl cl9jb21taXRfcHJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiArCSAqIGRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gKwkgKiBkcm1fYXRvbWljX2hlbHBlcl9jb21t aXRfcG9zdF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gKwkgKiBkcm1fYXRvbWljX2hlbHBlcl93YWl0 X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOwo+ICsJICogZHJtX2F0b21pY19oZWxwZXJfY2xlYW51 cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gKwkgKiBkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUp Owo+ICsJICoKPiArCSAqIG9uY2Ugd2UgaGF2ZSBmdWxsIGF0b21pYyBtb2Rlc2V0LiAgRm9yIG5v dywganVzdCBtYW51YWxseSB1cGRhdGUKPiArCSAqIHBsYW5lIHN0YXRlcyB0byBhdm9pZCBjbG9i YmVyaW5nIGdvb2Qgc3RhdGVzIHdpdGggZHVtbXkgc3RhdGVzCj4gKwkgKiB3aGlsZSBudWNsZWFy IHBhZ2VmbGlwcGluZy4KPiArCSAqLwo+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5l cyhkZXYsIHN0YXRlKTsKPiArCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZGV2 LCBzdGF0ZSk7Cj4gKwo+ICsJLyogU2VuZCBDUlRDIGNvbXBsZXRpb24gZXZlbnRzLiAqLwo+ICsJ Zm9yIChpID0gMDsgaSA8IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7IGkrKykgewo+ICsJCWNy dGMgPSBzdGF0ZS0+Y3J0Y3NbaV07Cj4gKwkJaWYgKGNydGMgJiYgY3J0Yy0+c3RhdGUtPmV2ZW50 KSB7Cj4gKwkJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Cj4gKwkJCWRybV9zZW5k X3ZibGFua19ldmVudChkZXYsIHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGUsCj4gKwkJCQkJICAg ICAgY3J0Yy0+c3RhdGUtPmV2ZW50KTsKPiArCQkJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50 X2xvY2spOwo+ICsJCQljcnRjLT5zdGF0ZS0+ZXZlbnQgPSBOVUxMOwo+ICsJCX0KPiArCX0KPiAr Cj4gKwlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiArCWRy bV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwo+ICsJZmxpcF9jb21wbGV0aW9uKGNvbW1p dCk7Cj4gKwlrZnJlZShjb21taXQpOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogaW50ZWxfYXRvbWlj X2NvbW1pdCAtIGNvbW1pdCB2YWxpZGF0ZWQgc3RhdGUgb2JqZWN0Cj4gICAqIEBkZXY6IERSTSBk ZXZpY2UKPiBAQCAtMTE2LDM0ICsxOTksNDggQEAgaW50IGludGVsX2F0b21pY19jb21taXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAo+ICAJCQlib29sIGFzeW5jKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGVuZGluZ19hdG9taWMg KmNvbW1pdDsKPiAgCWludCByZXQ7Cj4gIAlpbnQgaTsKPiAgCj4gLQlpZiAoYXN5bmMpIHsKPiAt CQlEUk1fREVCVUdfS01TKCJpOTE1IGRvZXMgbm90IHlldCBzdXBwb3J0IGFzeW5jIGNvbW1pdFxu Iik7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+ICAJcmV0ID0gZHJtX2F0b21pY19o ZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVy biByZXQ7Cj4gIAo+IC0JLyogUG9pbnQgb2Ygbm8gcmV0dXJuICovCj4gKwljb21taXQgPSBremFs bG9jKHNpemVvZigqY29tbWl0KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWNvbW1pdCkKPiArCQly ZXR1cm4gLUVOT01FTTsKPiArCj4gKwljb21taXQtPmRldiA9IGRldjsKPiArCWNvbW1pdC0+c3Rh dGUgPSBzdGF0ZTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2LT5tb2RlX2NvbmZpZy5udW1f Y3J0YzsgaSsrKQo+ICsJCWlmIChzdGF0ZS0+Y3J0Y3NbaV0pCj4gKwkJCWNvbW1pdC0+Y3J0Y19t YXNrIHw9Cj4gKwkJCQkoMSA8PCBkcm1fY3J0Y19pbmRleChzdGF0ZS0+Y3J0Y3NbaV0pKTsKPiAg Cj4gIAkvKgo+IC0JICogRklYTUU6ICBUaGUgcHJvcGVyIHNlcXVlbmNlIGhlcmUgd2lsbCBldmVu dHVhbGx5IGJlOgo+IC0JICoKPiAtCSAqIGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoZGV2 LCBzdGF0ZSkKPiAtCSAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wcmVfcGxhbmVzKGRldiwg c3RhdGUpOwo+IC0JICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhkZXYsIHN0YXRl KTsKPiAtCSAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wb3N0X3BsYW5lcyhkZXYsIHN0YXRl KTsKPiAtCSAqIGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZGV2LCBzdGF0ZSk7 Cj4gLQkgKiBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiAt CSAqIGRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gLQkgKgo+IC0JICogb25jZSB3ZSBo YXZlIGZ1bGwgYXRvbWljIG1vZGVzZXQuICBGb3Igbm93LCBqdXN0IG1hbnVhbGx5IHVwZGF0ZQo+ IC0JICogcGxhbmUgc3RhdGVzIHRvIGF2b2lkIGNsb2JiZXJpbmcgZ29vZCBzdGF0ZXMgd2l0aCBk dW1teSBzdGF0ZXMKPiAtCSAqIHdoaWxlIG51Y2xlYXIgcGFnZWZsaXBwaW5nLgo+ICsJICogSWYg dGhlcmUncyBhbHJlYWR5IGEgZmxpcCBwZW5kaW5nLCB3ZSB3b24ndCBzY2hlZHVsZSBhbm90aGVy IG9uZQo+ICsJICogdW50aWwgaXQgY29tcGxldGVzLiAgV2UgbWF5IHJlbGF4IHRoaXMgaW4gdGhl IGZ1dHVyZSwgYnV0IGZvciBub3cKPiArCSAqIHRoaXMgbWF0Y2hlcyB0aGUgbGVnYWN5IHBhZ2Vm bGlwIGJlaGF2aW9yLgo+ICsJICovCj4gKwlyZXQgPSB3YWl0X2Zvcl9wZW5kaW5nX2ZsaXAoY29t bWl0LT5jcnRjX21hc2ssIGNvbW1pdCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJa2ZyZWUoY29tbWl0 KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBQb2ludCBvZiBubyBy ZXR1cm47IGV2ZXJ5dGhpbmcgZnJvbSBoZXJlIG9uIGNhbid0IGZhaWwsIHNvIHN3YXAKPiArCSAq IHRoZSBuZXcgc3RhdGUgaW50byB0aGUgRFJNIG9iamVjdHMuCj4gKwkgKi8KPiArCj4gKwkvKgo+ ICsJICogRklYTUU6ICBTaG91bGQgZXZlbnR1YWxseSB1c2UgZHJtX2F0b21pY19oZWxwZXJfc3dh cF9zdGF0ZSgpLgo+ICsJICogSG93ZXZlciBzaW5jZSB3ZSBvbmx5IGhhbmRsZSBwbGFuZXMgYXQg dGhlIG1vbWVudCwgd2UgZG9uJ3QKPiArCSAqIHdhbnQgdG8gY2xvYmJlciBvdXIgZ29vZCBjcnRj IHN0YXRlIHdpdGggc29tZXRoaW5nIGJvZ3VzLAo+ICsJICogc28ganVzdCBtYW51YWxseSBzd2Fw IHRoZSBwbGFuZSBzdGF0ZXMgYW5kIGNvcHkgb3ZlciBhbnkgY29tcGxldGlvbgo+ICsJICogZXZl bnRzIGZvciBDUlRDJ3MuCj4gIAkgKi8KPiAgCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1vZGVfY29u ZmlnLm51bV90b3RhbF9wbGFuZTsgaSsrKSB7Cj4gIAkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUg PSBzdGF0ZS0+cGxhbmVzW2ldOwo+IEBAIC0xNTUsMTAgKzI1MiwyOSBAQCBpbnQgaW50ZWxfYXRv bWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXN3YXAoc3RhdGUtPnBsYW5l X3N0YXRlc1tpXSwgcGxhbmUtPnN0YXRlKTsKPiAgCQlwbGFuZS0+c3RhdGUtPnN0YXRlID0gTlVM TDsKPiAgCX0KPiAtCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSk7 Cj4gLQlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOwo+IC0J ZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gLQlkcm1fYXRv bWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1vZGVf Y29uZmlnLm51bV9jcnRjOyBpKyspIHsKPiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0 ZS0+Y3J0Y3NbaV07Cj4gKwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gc3Rh dGUtPmNydGNfc3RhdGVzW2ldOwo+ICsKPiArCQlpZiAoIWNydGMgfHwgIWNydGNfc3RhdGUpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQkvKiBuLmIuLCB3ZSBvbmx5IGNvcHkgdGhlIGV2ZW50IGFu ZCBlbmFibGVkIGZsYWcgZm9yIG5vdyAqLwo+ICsJCXN3YXAoY3J0Yy0+c3RhdGUtPmV2ZW50LCBj cnRjX3N0YXRlLT5ldmVudCk7Cj4gKwkJc3dhcChjcnRjLT5zdGF0ZS0+ZW5hYmxlLCBjcnRjX3N0 YXRlLT5lbmFibGUpOwo+ICsJfQoKQmVmb3JlIHdlIGNhbiBzd2FwIGluIHRoZSBuZXcgc3RhdGUg d2UgbmVlZCB0byBzdGFsbCBmb3IgYW55IG91c3RhbmRpbmcKYXN5bmMgZmxpcCB0byBjb21wbGV0 ZS4gQXQgbGVhc3QgdW50aWwgd2UgaGF2ZSBhIGZ1bGwtYmxvd24gZmxpcCBxdWV1ZS4KCj4gKwo+ ICsJLyoKPiArCSAqIEZyb20gaGVyZSBvbiwgd2UgY2FuIGRvIGV2ZXJ5dGhpbmcgYXN5bmNocm9u b3VzbHkgd2l0aG91dCBhbnkKPiArCSAqIG1vZGVzZXQgbG9ja3MuCj4gKwkgKi8KPiArCWlmIChh c3luYykgewo+ICsJCUlOSVRfV09SSygmY29tbWl0LT53b3JrLCBmaW5pc2hfYXRvbWljX2NvbW1p dCk7Cj4gKwkJc2NoZWR1bGVfd29yaygmY29tbWl0LT53b3JrKTsKPiArCX0gZWxzZSB7Cj4gKwkJ ZmluaXNoX2F0b21pY19jb21taXQoJmNvbW1pdC0+d29yayk7CgpUaGF0IGFsc28gc29sdmVzIHRo ZSBwcm9ibGVtIG9mIHN0YWxsaW5nIGZvciBhbnkgb3VzdGFuZGluZyBhc3luYyBjb21taXQKd2hl biB3ZSBwcm9jZXNzIGEgc3luY2hyb25vdXMgb25lLiBXaXRoIGp1c3QgbGVnYWN5IHBhZ2VmbGlw cyB3ZSBkbyB0aGF0CmluIHRoZSBjcnRjIHNodXRkb3duIGZ1bmNzLCBidXQgbG9uZy10ZXJtIEkg dGhpbmsgaXQnbGwgYmUgbXVjaCBtb3JlCnJvYnVzdCB0byBkbyB0aGlzIGluIHRoZSB0b3AtbGV2 ZWwgY29tbWl0IGNvZGUgKGFuZCByaXAgb3V0IGFsbCB0aGUKcGFnZWZsaXAgd2FpdHMgZGVlcCBk b3duIGluIHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zKS4KLURhbmllbAoKPiArCX0KPiAgCj4gIAly ZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggZWVmNzljYy4u MTViMDJiMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTM5MSw2ICszOTEs MTQgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+ICAJaW50IHBibjsKPiAgfTsKPiAgCj4g Ky8qIEluLWZsaWdodCBhdG9taWMgb3BlcmF0aW9uICovCj4gK3N0cnVjdCBpbnRlbF9wZW5kaW5n X2F0b21pYyB7Cj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gKwl1aW50MzJf dCBjcnRjX21hc2s7Cj4gK307Cj4gKwo+ICBzdHJ1Y3QgaW50ZWxfcGlwZV93bSB7Cj4gIAlzdHJ1 Y3QgaW50ZWxfd21fbGV2ZWwgd21bNV07Cj4gIAl1aW50MzJfdCBsaW5ldGltZTsKPiAtLSAKPiAx LjguNS4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3Jh dGlvbgorNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==