From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 07/20] drm/i915: Rework primary plane stuff slightly. Date: Tue, 7 Jul 2015 13:16:55 +0200 Message-ID: <20150707111655.GJ7568@phenom.ffwll.local> References: <1436252911-5703-1-git-send-email-maarten.lankhorst@linux.intel.com> <1436252911-5703-8-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178]) by gabe.freedesktop.org (Postfix) with ESMTPS id 764FE6E9BC for ; Tue, 7 Jul 2015 04:14:10 -0700 (PDT) Received: by wifm2 with SMTP id m2so56051302wif.1 for ; Tue, 07 Jul 2015 04:14:09 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1436252911-5703-8-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMDcsIDIwMTUgYXQgMDk6MDg6MThBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gTWFrZSBzdXJlIHRoZSBwcmltYXJ5IHBsYW5lIGlzIHNldCB1cCBjb3JyZWN0 bHkuIFRoaXMgaXMgZG9uZSBieQo+IHNldHRpbmcgcGxhbmVfc3RhdGUtPnNyYyBhbmQgcGxhbmVf c3RhdGUtPmNydGMuCj4gCj4gQWxsIG5vbi1wcmltYXJ5IHBsYW5lcyBnZXQgZGlzYWJsZWQuCgpU b28gdGVyc2UgY29tbWl0IG1lc3NhZ2UsIGZhaWxzIHRvIG1lbnRpb24gdGhhdCB0aGlzIGlzIGFi b3V0IGh3CnJlYWRvdXQgY29tcGxldGVseS4gQWxzbyBzaG91bGQgbWVudGlvbiB0aGF0IHRoaXMg cmVtb3ZlcyB0aGUKaW5pdGlhbF9wbGFuZXMgaGFjay4KCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRl biBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgIHwgICA3IC0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE2NyArKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAg IDIgLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDExNiBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+IGluZGV4IDQyOTY3N2ExMTFk NS4uYjU5MzYxMmE5MTdkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiBA QCAtOTgsMTMgKzk4LDYgQEAgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAtCWlmIChjcnRjX3N0YXRl ICYmCj4gLQkgICAgY3J0Y19zdGF0ZS0+cXVpcmtzICYgUElQRV9DT05GSUdfUVVJUktfSU5JVElB TF9QTEFORVMpIHsKPiAtCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3Rh dGUsICZudWNsZWFyX2NydGMtPmJhc2UpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7 Cj4gLQl9Cj4gLQo+ICAJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKGRldiwg c3RhdGUpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBpbmRleCBlYjdjMmUyODE5YjcuLmZhMTEwMjM5MmVjYSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTA5LDYgKzEwOSw3IEBAIHN0 YXRpYyB2b2lkIHNrbF9pbml0X3NjYWxlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NyCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Cj4gIHN0YXRpYyBpbnQgaTl4eF9nZXRfcmVmY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICBpbnQgbnVtX2Nvbm5lY3RvcnMpOwo+ICtz dGF0aWMgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yyk7Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2ZpbmRfZW5jb2Rl cihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBwaXBlKQo+ICB7Cj4gQEAg LTI1ODIsMTEgKzI1ODMsMTIgQEAgaW50ZWxfZmluZF9pbml0aWFsX3BsYW5lX29iaihzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGludGVsX2NydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqYzsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICppOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAt CXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnk7Cj4g IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1h cnkgPSBpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnA7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiArCQl0b19pbnRl bF9wbGFuZV9zdGF0ZShwcmltYXJ5LT5zdGF0ZSk7Cj4gIAo+ICAJaWYgKCFwbGFuZV9jb25maWct PmZiKQo+ICAJCXJldHVybjsKPiBAQCAtMjYwMiwxNiArMjYwNCwxMSBAQCBpbnRlbF9maW5kX2lu aXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJICogRmFp bGVkIHRvIGFsbG9jIHRoZSBvYmosIGNoZWNrIHRvIHNlZSBpZiB3ZSBzaG91bGQgc2hhcmUKPiAg CSAqIGFuIGZiIHdpdGggYW5vdGhlciBDUlRDIGluc3RlYWQKPiAgCSAqLwo+IC0JZm9yX2VhY2hf Y3J0YyhkZXYsIGMpIHsKPiAtCQlpID0gdG9faW50ZWxfY3J0YyhjKTsKPiAtCj4gLQkJaWYgKGMg PT0gJmludGVsX2NydGMtPmJhc2UpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlpZiAoIWktPmFj dGl2ZSkKPiArCWZvcl9lYWNoX2ludGVsX3BsYW5lKGRldiwgcCkgewo+ICsJCWlmIChwLT5iYXNl LnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKPiAgCQkJY29udGludWU7Cj4gIAo+IC0J CWZiID0gYy0+cHJpbWFyeS0+ZmI7Cj4gKwkJZmIgPSBwLT5iYXNlLnN0YXRlLT5mYjsKClRoaXMg c2VlbXMgdG8gYnJlYWsgdGhlIHNoYXJpbmcgbG9naWMgY29tcGxldGVseTogV2Ugd2FudCB0byBj aGVjayBwcmltYXJ5CnBsYW5lcyBvZiBhbGwgb3RoZXIgY3J0Y3MgdG8gc2VlIHdoZXRoZXIgd2Ug Y291bGQgbWVyZ2VkIHRoZSBmYiB0b2dldGhlci4KV2UgZG9uJ3QgZXZlbiByZWFkIG91dCBwbGFu ZSBzdGF0ZSBmb3Igbm9uLXByaW1hcnkgcGxhbmVzLCBzbyB0aGUgYmVsb3cgZmIKY2hlY2sgd2ls bCBuZXZlciBiZSBub24tTlVMTC4KCj4gIAkJaWYgKCFmYikKPiAgCQkJY29udGludWU7Cj4gIAo+ IEBAIC0yNjIyLDE4ICsyNjE5LDI4IEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFuZV9vYmooc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIAkJfQo+ICAJfQo+ICAKPiArCWludGVsX3By ZV9kaXNhYmxlX3ByaW1hcnkoJmludGVsX2NydGMtPmJhc2UpOwo+ICsJdG9faW50ZWxfcGxhbmUo cHJpbWFyeSktPmRpc2FibGVfcGxhbmUocHJpbWFyeSwgJmludGVsX2NydGMtPmJhc2UpOwo+ICsK PiAgCXJldHVybjsKPiAgCj4gIHZhbGlkX2ZiOgo+ICsJZHJtX2ZyYW1lYnVmZmVyX3JlZmVyZW5j ZShmYik7Cj4gKwlwcmltYXJ5LT5mYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiID0gZmI7Cj4gKwlw bGFuZV9zdGF0ZS0+YmFzZS5jcnRjID0gcHJpbWFyeS0+Y3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNl Owo+ICsKPiArCXBsYW5lX3N0YXRlLT5iYXNlLnNyY194ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3Jj X3kgPSAwOwo+ICsJcGxhbmVfc3RhdGUtPmJhc2Uuc3JjX3cgPSBmYi0+d2lkdGggPDwgMTY7Cj4g KwlwbGFuZV9zdGF0ZS0+YmFzZS5zcmNfaCA9IGZiLT5oZWlnaHQgPDwgMTY7Cj4gKwo+ICsJcGxh bmVfc3RhdGUtPmJhc2UuY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjX3kgPSAwOwo+ICsJ cGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193ID0gZmItPndpZHRoOwo+ICsJcGxhbmVfc3RhdGUtPmJh c2UuY3J0Y19oID0gZmItPmhlaWdodDsKPiArCj4gKwlwbGFuZV9zdGF0ZS0+dmlzaWJsZSA9IHRy dWU7Cj4gIAlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJaWYgKG9iai0+dGlsaW5nX21vZGUg IT0gSTkxNV9USUxJTkdfTk9ORSkKPiAgCQlkZXZfcHJpdi0+cHJlc2VydmVfYmlvc19zd2l6emxl ID0gdHJ1ZTsKPiAtCj4gLQlwcmltYXJ5LT5mYiA9IGZiOwo+IC0JcHJpbWFyeS0+Y3J0YyA9IHBy aW1hcnktPnN0YXRlLT5jcnRjID0gJmludGVsX2NydGMtPmJhc2U7Cj4gLQl1cGRhdGVfc3RhdGVf ZmIocHJpbWFyeSk7CgpEbyB3ZSBzdGlsbCBoYXZlIG90aGVyIHVzZXJzIG9mIHVwZGF0ZV9zdGF0 ZV9mYiBsZWZ0PwoKPiAtCWludGVsX2NydGMtPmJhc2Uuc3RhdGUtPnBsYW5lX21hc2sgfD0gKDEg PDwgZHJtX3BsYW5lX2luZGV4KHByaW1hcnkpKTsKPiAtCW9iai0+ZnJvbnRidWZmZXJfYml0cyB8 PSB0b19pbnRlbF9wbGFuZShwcmltYXJ5KS0+ZnJvbnRidWZmZXJfYml0Owo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiBAQCAtMTE3NjEsMzQgKzExNzY4LDYgQEAgc3RhdGljIGJvb2wgY2hlY2tfZW5jb2Rlcl9j bG9uaW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCXJldHVybiB0cnVlOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NoZWNrX2luaXRpYWxfcGxhbmVzKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJCQkgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcg PQo+IC0JCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7Cj4gLQlzdHJ1Y3QgZHJtX3Bs YW5lICpwOwo+IC0JdW5zaWduZWQgdmlzaWJsZV9tYXNrID0gMDsKPiAtCj4gLQlkcm1fZm9yX2Vh Y2hfcGxhbmVfbWFzayhwLCBjcnRjLT5kZXYsIGNydGNfc3RhdGUtPnBsYW5lX21hc2spIHsKPiAt CQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gLQkJCWRybV9hdG9taWNf Z2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKGNydGNfc3RhdGUtPnN0YXRlLCBwKTsKPiAtCj4gLQkJ aWYgKFdBUk5fT04oIXBsYW5lX3N0YXRlKSkKPiAtCQkJY29udGludWU7Cj4gLQo+IC0JCWlmICgh cGxhbmVfc3RhdGUtPmZiKQo+IC0JCQljcnRjX3N0YXRlLT5wbGFuZV9tYXNrICY9Cj4gLQkJCQl+ KDEgPDwgZHJtX3BsYW5lX2luZGV4KHApKTsKPiAtCQllbHNlIGlmICh0b19pbnRlbF9wbGFuZV9z dGF0ZShwbGFuZV9zdGF0ZSktPnZpc2libGUpCj4gLQkJCXZpc2libGVfbWFzayB8PSAxIDw8IGRy bV9wbGFuZV9pbmRleChwKTsKPiAtCX0KPiAtCj4gLQlpZiAoIXZpc2libGVfbWFzaykKPiAtCQly ZXR1cm47Cj4gLQo+IC0JcGlwZV9jb25maWctPnF1aXJrcyAmPSB+UElQRV9DT05GSUdfUVVJUktf SU5JVElBTF9QTEFORVM7Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNf Y2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJICAgc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gQEAgLTExODEwLDEwICsxMTc4OSw2IEBAIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCSJb Q1JUQzolaV0gbWlzbWF0Y2ggYmV0d2VlbiBzdGF0ZS0+YWN0aXZlKCVpKSBhbmQgY3J0Yy0+YWN0 aXZlKCVpKVxuIiwKPiAgCQlpZHgsIGNydGMtPnN0YXRlLT5hY3RpdmUsIGludGVsX2NydGMtPmFj dGl2ZSk7Cj4gIAo+IC0JLyogcGxhbmUgbWFzayBpcyBmaXhlZCB1cCBhZnRlciBhbGwgaW5pdGlh bCBwbGFuZXMgYXJlIGNhbGN1bGF0ZWQgKi8KPiAtCWlmIChwaXBlX2NvbmZpZy0+cXVpcmtzICYg UElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVMpCj4gLQkJaW50ZWxfY3J0Y19jaGVja19p bml0aWFsX3BsYW5lcyhjcnRjLCBjcnRjX3N0YXRlKTsKPiAtCj4gIAlpZiAobW9kZV9jaGFuZ2Vk ICYmICFjcnRjX3N0YXRlLT5hY3RpdmUpCj4gIAkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93 bV9wb3N0ID0gdHJ1ZTsKPiAgCj4gQEAgLTEzMTU1LDE5ICsxMzEzMCw2IEBAIGludGVsX21vZGVz ZXRfY29tcHV0ZV9jb25maWcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCQlj b250aW51ZTsKPiAgCQl9Cj4gIAo+IC0JCWlmIChwaXBlX2NvbmZpZy0+cXVpcmtzICYgUElQRV9D T05GSUdfUVVJUktfSU5JVElBTF9QTEFORVMpIHsKPiAtCQkJcmV0ID0gZHJtX2F0b21pY19hZGRf YWZmZWN0ZWRfcGxhbmVzKHN0YXRlLCBjcnRjKTsKPiAtCQkJaWYgKHJldCkKPiAtCQkJCXJldHVy biByZXQ7Cj4gLQo+IC0JCQkvKgo+IC0JCQkgKiBXZSBvdWdodCB0byBoYW5kbGUgaTkxNS5mYXN0 Ym9vdCBoZXJlLgo+IC0JCQkgKiBJZiBubyBtb2Rlc2V0IGlzIHJlcXVpcmVkIGFuZCB0aGUgcHJp bWFyeSBwbGFuZSBoYXMKPiAtCQkJICogYSBmYiwgdXBkYXRlIHRoZSBtZW1iZXJzIG9mIGNydGNf c3RhdGUgYXMgbmVlZGVkLAo+IC0JCQkgKiBhbmQgcnVuIHRoZSBuZWNlc3NhcnkgdXBkYXRlcyBk dXJpbmcgdmJsYW5rIGV2YXNpb24uCj4gLQkJCSAqLwo+IC0JCX0KPiAtCj4gIAkJaWYgKCFuZWVk c19tb2Rlc2V0KGNydGNfc3RhdGUpKSB7Cj4gIAkJCWlmICghKHBpcGVfY29uZmlnLT5xdWlya3Mg JiBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERSkpCj4gIAkJCQljb250aW51ZTsKPiBA QCAtMTUxNDksMjUgKzE1MTExLDMwIEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gIAo+ICAJ Zm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPiAtCQlpZiAoIWNydGMtPmFjdGl2ZSkK PiArCQlzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9wbGFuZV9jb25maWcgcGxhbmVfY29uZmlnOwo+ICsJ CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ICsKPiArCQlpZiAoIWNydGMtPmJhc2Uuc3RhdGUt PmFjdGl2ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICsJCS8qIGRpc2FibGUgYWxsIG5vbi1wcmlt YXJ5IHBsYW5lcyAqLwo+ICsJCWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsCj4g KwkJCQkJY3J0Yy0+YmFzZS5zdGF0ZS0+cGxhbmVfbWFzaykKPiArCQkJaWYgKHBsYW5lLT50eXBl ICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gKwkJCQl0b19pbnRlbF9wbGFuZShwbGFuZSkt PmRpc2FibGVfcGxhbmUocGxhbmUsICZjcnRjLT5iYXNlKTsKPiArCj4gKwkJY3J0Yy0+YmFzZS5z dGF0ZS0+cGxhbmVfbWFzayAmPQo+ICsJCQkxIDw8IGRybV9wbGFuZV9pbmRleChjcnRjLT5iYXNl LnByaW1hcnkpOwo+ICsKPiArCQlwbGFuZV9jb25maWcuZmIgPSBOVUxMOwo+ICsJCWRldl9wcml2 LT5kaXNwbGF5LmdldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhjcnRjLAo+ICsJCQkJCQkJICAgJnBs YW5lX2NvbmZpZyk7Cj4gKwo+ICAJCS8qCj4gLQkJICogTm90ZSB0aGF0IHJlc2VydmluZyB0aGUg QklPUyBmYiB1cCBmcm9udCBwcmV2ZW50cyB1cwo+IC0JCSAqIGZyb20gc3R1ZmZpbmcgb3RoZXIg c3RvbGVuIGFsbG9jYXRpb25zIGxpa2UgdGhlIHJpbmcKPiAtCQkgKiBvbiB0b3AuICBUaGlzIHBy ZXZlbnRzIHNvbWUgdWdsaW5lc3MgYXQgYm9vdCB0aW1lLCBhbmQKPiAtCQkgKiBjYW4gZXZlbiBh bGxvdyBmb3Igc21vb3RoIGJvb3QgdHJhbnNpdGlvbnMgaWYgdGhlIEJJT1MKPiAtCQkgKiBmYiBp cyBsYXJnZSBlbm91Z2ggZm9yIHRoZSBhY3RpdmUgcGlwZSBjb25maWd1cmF0aW9uLgo+ICsJCSAq IElmIHRoZSBmYiBpcyBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBoZWFkcywgd2UnbGwKPiArCQkg KiBqdXN0IGdldCB0aGUgZmlyc3Qgb25lLgo+ICAJCSAqLwo+IC0JCWlmIChkZXZfcHJpdi0+ZGlz cGxheS5nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcpIHsKPiAtCQkJZGV2X3ByaXYtPmRpc3BsYXku Z2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKGNydGMsCj4gLQkJCQkJCQkgICAmY3J0Yy0+cGxhbmVf Y29uZmlnKTsKPiAtCQkJLyoKPiAtCQkJICogSWYgdGhlIGZiIGlzIHNoYXJlZCBiZXR3ZWVuIG11 bHRpcGxlIGhlYWRzLCB3ZSdsbAo+IC0JCQkgKiBqdXN0IGdldCB0aGUgZmlyc3Qgb25lLgo+IC0J CQkgKi8KPiAtCQkJaW50ZWxfZmluZF9pbml0aWFsX3BsYW5lX29iaihjcnRjLCAmY3J0Yy0+cGxh bmVfY29uZmlnKTsKPiAtCQl9Cj4gKwkJaW50ZWxfZmluZF9pbml0aWFsX3BsYW5lX29iaihjcnRj LCAmcGxhbmVfY29uZmlnKTsKPiAgCX0KPiAgfQoKT2sgSSBsb29rZWQgYXQgdGhpcyBhbmQgdGhl IHJlYWRvdXRfcGxhbmVfc3RhdGUgZnVuY3Rpb24gYW5kIEkgdGhpbmsgd2UKaGF2ZSBhIGJpdCBh IGNvbmZ1c2lvbiBhYm91dCByZXNwb25zaWJpbGl0aWVzIGhlcmUuIFRoZSBiaWcgdGhpbmcgaXMg dGhhdApvbmx5IGRyaXZlciBsb2FkIGNhcmVzIGFib3V0IHJlY29uc3RydWN0aW5nIHBsYW5lIHN0 YXRlIGFjY3VyYXRlbHksIGZvcgpyZXN1bWUgYW5kIGxpZCBub3RpZmllciB3ZSBqdXN0IHdhbnQg dG8gbWFrZSBzdXJlIHRoYXQgd2UgdXBkYXRlIHRoZQpwbGFuZXMuIEFuZCB0aGF0IGNvdWxkIGJl IGFjaGlldmVkIGJ5IHVuY29uZGl0aW9uYWxseSBzZXR0aW5nCmNydGNfc3RhdGUtPnBsYW5lc19j aGFuZ2VkLiBXZSBhbHJlYWR5IGhhdmUgYWxsIHRoZSBwbGFuZSBzdGF0ZXMgd2hlbgpyZXN0b3Jp bmcgc3RhdGUgYW55d2F5LgoKVGhhdCBtZWFucyB3ZSBzaG91bGQgbW92ZSByZWFkb3V0X3BsYW5l X3N0YXRlIGludG8gdGhlIGFib3ZlIGxvb3AuIFdoaWNoCnRoZW4gZ2V0cyBhIGJpdCB0b28gYmln LCBzbyBiZXR0ZXIgZXh0cmFjdCB0aGlzIGludG8gYQppbnRlbF9yZWNvbnN0cnVjdF9wbGFuZV9z dGF0ZSBvciBzaW1pbGFyLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCB0aGVuIGRvIGFsbAp0aGUgcGxh bmUgc3RhdGUgcmVjb25zdHJ1Y3Rpb24uCgpUaGF0IGFsc28gbWVhbnMgd2UgZG9uJ3QgaGF2ZSB0 byBwbGF5IHRyaWNrcyB3aXRoIHBsYW5lX21hc2sgbGlrZSB5b3UgZG8uCldlIHNpbXBseSByZWNv bnN0cnVjdCB0aGUgcHJpbWFyeSBwbGFuZSAoaWYgcG9zc2libGUpIGFuZCBmb3JjZS1kaXNhYmxl CmFsbCB0aGUgb3RoZXJzLiBTaW5jZSB0aGlzIG9ubHkgaGFwcGVucyBhdCBkcml2ZXIgbG9hZCB0 aGVyZSdzIG5vIG5lZWQgdG8KY2xlYXIgb3V0IGFueSBzdGF0ZSBmb3Igc3ByaXRlL2N1cnNvcnMg c2luY2UgaXQncyBhbHJlYWR5IGZ1bGx5IGNsZWFyZWQuCgpJIHRoaW5rIHRoaXMgd2F5IHdlIHNo b3VsZCBiZSBhYmxlIHRvIGhhdmUgZXZlcnl0aGluZyBpbiBvbmUgcGxhY2UsIGFuZAp0aGF0IHNo b3VsZCBhbGxvdyB1cyB0byBzaW1wbGlmeSB0aGluZ3MgYSBsb3QuCgo+ICAKPiBAQCAtMTU0MDQs NDcgKzE1MzcxLDMwIEBAIHN0YXRpYyB2b2lkIHJlYWRvdXRfcGxhbmVfc3RhdGUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnA7Cj4gIAlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpkcm1fcGxhbmVfc3RhdGU7Cj4gIAlib29sIGFjdGl2ZSA9IGNydGNfc3Rh dGUtPmJhc2UuYWN0aXZlOwo+ICsJYm9vbCB3cm9uZ19wbGFuZTsKPiAgCj4gLQlpZiAoYWN0aXZl KSB7Cj4gLQkJY3J0Y19zdGF0ZS0+cXVpcmtzIHw9IFBJUEVfQ09ORklHX1FVSVJLX0lOSVRJQUxf UExBTkVTOwo+IC0KPiAtCQkvKiBhcHBseSB0byBwcmV2aW91cyBzdyBzdGF0ZSB0b28gKi8KPiAt CQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpLT5xdWlya3MgfD0KPiAtCQkJ UElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVM7Cj4gLQl9Cj4gKwl3cm9uZ19wbGFuZSA9 IGFjdGl2ZSAmJiAhaW50ZWxfY2hlY2tfcGxhbmVfbWFwcGluZyhjcnRjKTsKPiArCWlmICh3cm9u Z19wbGFuZSkKPiArCQljcnRjLT5waXBlID0gIWNydGMtPnBpcGU7Cj4gIAo+ICAJZm9yX2VhY2hf aW50ZWxfcGxhbmUoY3J0Yy0+YmFzZS5kZXYsIHApIHsKPiAtCQlib29sIHZpc2libGUgPSBhY3Rp dmU7Cj4gLQo+ICAJCWlmIChjcnRjLT5waXBlICE9IHAtPnBpcGUpCj4gIAkJCWNvbnRpbnVlOwo+ ICAKPiAgCQlkcm1fcGxhbmVfc3RhdGUgPSBwLT5iYXNlLnN0YXRlOwo+ICAKPiAtCQkvKiBQbGFu ZSBzY2FsZXIgc3RhdGUgaXMgbm90IHRvdWNoZWQgaGVyZS4gVGhlIGZpcnN0IGF0b21pYwo+IC0J CSAqIGNvbW1pdCB3aWxsIHJlc3RvcmUgYWxsIHBsYW5lIHNjYWxlcnMgdG8gaXRzIG9sZCBzdGF0 ZS4KPiAtCQkgKi8KPiAtCj4gLQkJaWYgKGFjdGl2ZSAmJiBwLT5iYXNlLnR5cGUgPT0gRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSkgewo+IC0JCQl2aXNpYmxlID0gcHJpbWFyeV9nZXRfaHdfc3RhdGUo Y3J0Yyk7Cj4gLQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZV9zdGF0ZSktPnZpc2li bGUgPSB2aXNpYmxlOwo+IC0JCX0gZWxzZSB7Cj4gLQkJCS8qCj4gLQkJCSAqIHVua25vd24gc3Rh dGUsIGFzc3VtZSBpdCdzIG9mZiB0byBmb3JjZSBhIHRyYW5zaXRpb24KPiAtCQkJICogdG8gb24g d2hlbiBjYWxjdWxhdGluZyBzdGF0ZSBjaGFuZ2VzLgo+IC0JCQkgKi8KPiArCQlpZiAocC0+YmFz ZS50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gKwkJCXRvX2ludGVsX3BsYW5lX3N0 YXRlKGRybV9wbGFuZV9zdGF0ZSktPnZpc2libGUgPQo+ICsJCQkJcHJpbWFyeV9nZXRfaHdfc3Rh dGUoY3J0Yyk7Cj4gKwkJZWxzZQo+ICAJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShkcm1fcGxhbmVf c3RhdGUpLT52aXNpYmxlID0gZmFsc2U7Cj4gLQkJfQo+ICAKPiAtCQlpZiAodmlzaWJsZSkgewo+ IC0JCQljcnRjX3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgfD0KPiAtCQkJCTEgPDwgZHJtX3BsYW5l X2luZGV4KCZwLT5iYXNlKTsKPiAtCQl9IGVsc2UgaWYgKGNydGNfc3RhdGUtPmJhc2Uuc3RhdGUp IHsKPiAtCQkJLyogTWFrZSB0aGlzIHVuY29uZGl0aW9uYWwgZm9yIGF0b21pYyBodyByZWFkb3V0 LiAqLwo+IC0JCQljcnRjX3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgJj0KPiAtCQkJCX4oMSA8PCBk cm1fcGxhbmVfaW5kZXgoJnAtPmJhc2UpKTsKPiAtCQl9Cj4gKwkJY3J0Y19zdGF0ZS0+YmFzZS5w bGFuZV9tYXNrIHw9Cj4gKwkJCTEgPDwgZHJtX3BsYW5lX2luZGV4KCZwLT5iYXNlKTsKPiAgCX0K PiArCj4gKwlpZiAod3JvbmdfcGxhbmUpCj4gKwkJY3J0Yy0+cGlwZSA9ICFjcnRjLT5waXBlOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiBAQCAtMTU2NjQsNiArMTU2MTQsOSBAQCB2b2lkIGludGVs X21vZGVzZXRfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJdXBkYXRlX3N0 YXRlX2ZiKGMtPnByaW1hcnkpOwo+ICAJCQljLT5zdGF0ZS0+cGxhbmVfbWFzayAmPSB+KDEgPDwg ZHJtX3BsYW5lX2luZGV4KGMtPnByaW1hcnkpKTsKPiAgCQl9Cj4gKwkJZWxzZQo+ICsJCQlvYmot PmZyb250YnVmZmVyX2JpdHMgfD0KPiArCQkJCXRvX2ludGVsX3BsYW5lKGMtPnByaW1hcnkpLT5m cm9udGJ1ZmZlcl9iaXQ7CgpUaGlzIGlzIHBhcnQgb2YgcGxhbmUgc3RhdGUgcmVjb25zdHJ1Y3Rp b24sIG5vIG5lZWQgdG8gbW92ZSBpdC4gVGhlIG9ubHkKcmVhc29uIHdlIGhhdmUgdG8gcGluIGxh dGUgaXMgdGhhdCBnZW0gaXNuJ3QgaW5pdGlhbGl6ZWQgeWV0IGZ1bGx5IHdoZW4gd2UKd2FudCB0 byByZWNvbnN0cnVjdCB0aGUgbW9kZXNldCBzdGF0ZS4gQW5kIHRoYXQgcGlubmluZyBzaG91bGRu J3QgZXZlcgpmYWlsLCBpdCBqdXN0IGluY3JlbWVudHMgcGluX2NvdW50IGFuZCB3cml0ZXMgdGhl IHB0ZXMgKGFnYWluKS4KLURhbmllbAoKPiAgCX0KPiAgCj4gIAlpbnRlbF9iYWNrbGlnaHRfcmVn aXN0ZXIoZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDJlZDYxOGY3OGZl Ni4uYzNjZWExNzhjODA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMzQx LDcgKzM0MSw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCSAqLwo+ICAjZGVmaW5l IFBJUEVfQ09ORklHX1FVSVJLX01PREVfU1lOQ19GTEFHUwkoMTw8MCkgLyogdW5yZWxpYWJsZSBz eW5jIG1vZGUuZmxhZ3MgKi8KPiAgI2RlZmluZSBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURf TU9ERQkoMTw8MSkgLyogbW9kZSBpbmhlcml0ZWQgZnJvbSBmaXJtd2FyZSAqLwo+IC0jZGVmaW5l IFBJUEVfQ09ORklHX1FVSVJLX0lOSVRJQUxfUExBTkVTCSgxPDwyKSAvKiBwbGFuZXMgYXJlIGlu IHVua25vd24gc3RhdGUgKi8KPiAgCXVuc2lnbmVkIGxvbmcgcXVpcmtzOwo+ICAKPiAgCS8qIFBp cGUgc291cmNlIHNpemUgKGllLiBwYW5lbCBmaXR0ZXIgaW5wdXQgc2l6ZSkKPiBAQCAtNTUwLDcg KzU0OSw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKPiAgCXVpbnQzMl90IGN1cnNvcl9zaXplOwo+ ICAJdWludDMyX3QgY3Vyc29yX2Jhc2U7Cj4gIAo+IC0Jc3RydWN0IGludGVsX2luaXRpYWxfcGxh bmVfY29uZmlnIHBsYW5lX2NvbmZpZzsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25m aWc7Cj4gIAlib29sIG5ld19lbmFibGVkOwo+ICAKPiAtLSAKPiAyLjEuMAo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZl dHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK