From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915/overlay: Use the ioctl parameters directly Date: Tue, 11 Sep 2018 16:12:45 +0300 Message-ID: <20180911131245.GB5565@intel.com> References: <20180906190144.1272-1-chris@chris-wilson.co.uk> <20180906190144.1272-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 633CC89789 for ; Tue, 11 Sep 2018 13:13:07 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180906190144.1272-2-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBTZXAgMDYsIDIwMTggYXQgMDg6MDE6NDRQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFRoZSB1c2VyIHBhcmFtZXRlcnMgdG8gcHV0X2ltYWdlIGFyZSBub3QgY29waWVkIGJh Y2sgdG8gdXNlcnNwYWNlCj4gKERSTV9JT1cpLCBhbmQgc28gd2UgY2FuIG1vZGlmeSB0aGUgaW9j dGwgcGFyYW1ldGVycyAoaGF2aW5nIGFscmVhZHkgYmVlbgo+IGNvcGllZCB0byBhIHRlbXBvcmFy eSBrZXJuZWwgc3RydWN0KSBkaXJlY3RseSBhbmQgdXNlIHRob3NlIGluIHBsYWNlLAo+IGF2b2lk aW5nIGFub3RoZXIgdGVtcG9yYXJ5IG1hbGxvYyBhbmQgbG90cyBvZiBtYW51YWwgY29weWluZy4K PiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIHwgMTQ3ICsr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNTQgaW5zZXJ0aW9u cygrKSwgOTMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXku Ywo+IGluZGV4IDQ0M2RmYWVmZDdhNi4uNzJlYjdlNDhlOGJjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC00ODcsMjMgKzQ4Nyw2IEBAIHZvaWQgaW50ZWxfb3Zl cmxheV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlvdmVybGF5 LT5hY3RpdmUgPSBmYWxzZTsKPiAgfQo+ICAKPiAtc3RydWN0IHB1dF9pbWFnZV9wYXJhbXMgewo+ IC0JaW50IGZvcm1hdDsKPiAtCXNob3J0IGRzdF94Owo+IC0Jc2hvcnQgZHN0X3k7Cj4gLQlzaG9y dCBkc3RfdzsKPiAtCXNob3J0IGRzdF9oOwo+IC0Jc2hvcnQgc3JjX3c7Cj4gLQlzaG9ydCBzcmNf c2Nhbl9oOwo+IC0Jc2hvcnQgc3JjX3NjYW5fdzsKPiAtCXNob3J0IHNyY19oOwo+IC0Jc2hvcnQg c3RyaWRlX1k7Cj4gLQlzaG9ydCBzdHJpZGVfVVY7Cj4gLQlpbnQgb2Zmc2V0X1k7Cj4gLQlpbnQg b2Zmc2V0X1U7Cj4gLQlpbnQgb2Zmc2V0X1Y7Cj4gLX07Cj4gLQo+ICBzdGF0aWMgaW50IHBhY2tl ZF9kZXB0aF9ieXRlcyh1MzIgZm9ybWF0KQo+ICB7Cj4gIAlzd2l0Y2ggKGZvcm1hdCAmIEk5MTVf T1ZFUkxBWV9ERVBUSF9NQVNLKSB7Cj4gQEAgLTYxOCwyNSArNjAxLDI1IEBAIHN0YXRpYyB2b2lk IHVwZGF0ZV9wb2x5cGhhc2VfZmlsdGVyKHN0cnVjdCBvdmVybGF5X3JlZ2lzdGVycyBfX2lvbWVt ICpyZWdzKQo+ICAKPiAgc3RhdGljIGJvb2wgdXBkYXRlX3NjYWxpbmdfZmFjdG9ycyhzdHJ1Y3Qg aW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiAgCQkJCSAgIHN0cnVjdCBvdmVybGF5X3JlZ2lzdGVy cyBfX2lvbWVtICpyZWdzLAo+IC0JCQkJICAgc3RydWN0IHB1dF9pbWFnZV9wYXJhbXMgKnBhcmFt cykKPiArCQkJCSAgIHN0cnVjdCBkcm1faW50ZWxfb3ZlcmxheV9wdXRfaW1hZ2UgKnBhcmFtcykK CkkgYmVsaWV2ZSB3ZSBjb3VsZCBjb25zdGlmeSBhIGJ1bmNoIG9mIHRoZXNlIHdoaWxlIGF0IGl0 LgoKUXVpY2sgc2NhbiBkaWRuJ3QgZmluZCBhbnkgb2J2aW91cyBmYWlscyBzbwpSZXZpZXdlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gIHsK PiAgCS8qIGZpeGVkIHBvaW50IHdpdGggYSAxMiBiaXQgc2hpZnQgKi8KPiAgCXUzMiB4c2NhbGUs IHlzY2FsZSwgeHNjYWxlX1VWLCB5c2NhbGVfVVY7Cj4gICNkZWZpbmUgRlBfU0hJRlQgMTIKPiAg I2RlZmluZSBGUkFDVF9NQVNLIDB4ZmZmCj4gIAlib29sIHNjYWxlX2NoYW5nZWQgPSBmYWxzZTsK PiAtCWludCB1dl9oc2NhbGUgPSB1dl9oc3Vic2FtcGxpbmcocGFyYW1zLT5mb3JtYXQpOwo+IC0J aW50IHV2X3ZzY2FsZSA9IHV2X3ZzdWJzYW1wbGluZyhwYXJhbXMtPmZvcm1hdCk7Cj4gKwlpbnQg dXZfaHNjYWxlID0gdXZfaHN1YnNhbXBsaW5nKHBhcmFtcy0+ZmxhZ3MpOwo+ICsJaW50IHV2X3Zz Y2FsZSA9IHV2X3ZzdWJzYW1wbGluZyhwYXJhbXMtPmZsYWdzKTsKPiAgCj4gLQlpZiAocGFyYW1z LT5kc3RfdyA+IDEpCj4gLQkJeHNjYWxlID0gKChwYXJhbXMtPnNyY19zY2FuX3cgLSAxKSA8PCBG UF9TSElGVCkKPiAtCQkJLyhwYXJhbXMtPmRzdF93KTsKPiArCWlmIChwYXJhbXMtPmRzdF93aWR0 aCA+IDEpCj4gKwkJeHNjYWxlID0gKChwYXJhbXMtPnNyY19zY2FuX3dpZHRoIC0gMSkgPDwgRlBf U0hJRlQpIC8KPiArCQkJcGFyYW1zLT5kc3Rfd2lkdGg7Cj4gIAllbHNlCj4gIAkJeHNjYWxlID0g MSA8PCBGUF9TSElGVDsKPiAgCj4gLQlpZiAocGFyYW1zLT5kc3RfaCA+IDEpCj4gLQkJeXNjYWxl ID0gKChwYXJhbXMtPnNyY19zY2FuX2ggLSAxKSA8PCBGUF9TSElGVCkKPiAtCQkJLyhwYXJhbXMt PmRzdF9oKTsKPiArCWlmIChwYXJhbXMtPmRzdF9oZWlnaHQgPiAxKQo+ICsJCXlzY2FsZSA9ICgo cGFyYW1zLT5zcmNfc2Nhbl9oZWlnaHQgLSAxKSA8PCBGUF9TSElGVCkgLwo+ICsJCQlwYXJhbXMt PmRzdF9oZWlnaHQ7Cj4gIAllbHNlCj4gIAkJeXNjYWxlID0gMSA8PCBGUF9TSElGVDsKPiAgCj4g QEAgLTcxMywxMiArNjk2LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9jb2xvcmtleShzdHJ1Y3Qg aW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiAgCWlvd3JpdGUzMihmbGFncywgJnJlZ3MtPkRDTFJL TSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1MzIgb3ZlcmxheV9jbWRfcmVnKHN0cnVjdCBwdXRfaW1h Z2VfcGFyYW1zICpwYXJhbXMpCj4gK3N0YXRpYyB1MzIgb3ZlcmxheV9jbWRfcmVnKHN0cnVjdCBk cm1faW50ZWxfb3ZlcmxheV9wdXRfaW1hZ2UgKnBhcmFtcykKPiAgewo+ICAJdTMyIGNtZCA9IE9D TURfRU5BQkxFIHwgT0NNRF9CVUZfVFlQRV9GUkFNRSB8IE9DTURfQlVGRkVSMDsKPiAgCj4gLQlp ZiAocGFyYW1zLT5mb3JtYXQgJiBJOTE1X09WRVJMQVlfWVVWX1BMQU5BUikgewo+IC0JCXN3aXRj aCAocGFyYW1zLT5mb3JtYXQgJiBJOTE1X09WRVJMQVlfREVQVEhfTUFTSykgewo+ICsJaWYgKHBh cmFtcy0+ZmxhZ3MgJiBJOTE1X09WRVJMQVlfWVVWX1BMQU5BUikgewo+ICsJCXN3aXRjaCAocGFy YW1zLT5mbGFncyAmIEk5MTVfT1ZFUkxBWV9ERVBUSF9NQVNLKSB7Cj4gIAkJY2FzZSBJOTE1X09W RVJMQVlfWVVWNDIyOgo+ICAJCQljbWQgfD0gT0NNRF9ZVVZfNDIyX1BMQU5BUjsKPiAgCQkJYnJl YWs7Cj4gQEAgLTczMSw3ICs3MTQsNyBAQCBzdGF0aWMgdTMyIG92ZXJsYXlfY21kX3JlZyhzdHJ1 Y3QgcHV0X2ltYWdlX3BhcmFtcyAqcGFyYW1zKQo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAl9IGVs c2UgeyAvKiBZVVYgcGFja2VkICovCj4gLQkJc3dpdGNoIChwYXJhbXMtPmZvcm1hdCAmIEk5MTVf T1ZFUkxBWV9ERVBUSF9NQVNLKSB7Cj4gKwkJc3dpdGNoIChwYXJhbXMtPmZsYWdzICYgSTkxNV9P VkVSTEFZX0RFUFRIX01BU0spIHsKPiAgCQljYXNlIEk5MTVfT1ZFUkxBWV9ZVVY0MjI6Cj4gIAkJ CWNtZCB8PSBPQ01EX1lVVl80MjJfUEFDS0VEOwo+ICAJCQlicmVhazsKPiBAQCAtNzQwLDcgKzcy Myw3IEBAIHN0YXRpYyB1MzIgb3ZlcmxheV9jbWRfcmVnKHN0cnVjdCBwdXRfaW1hZ2VfcGFyYW1z ICpwYXJhbXMpCj4gIAkJCWJyZWFrOwo+ICAJCX0KPiAgCj4gLQkJc3dpdGNoIChwYXJhbXMtPmZv cm1hdCAmIEk5MTVfT1ZFUkxBWV9TV0FQX01BU0spIHsKPiArCQlzd2l0Y2ggKHBhcmFtcy0+Zmxh Z3MgJiBJOTE1X09WRVJMQVlfU1dBUF9NQVNLKSB7Cj4gIAkJY2FzZSBJOTE1X09WRVJMQVlfTk9f U1dBUDoKPiAgCQkJYnJlYWs7Cj4gIAkJY2FzZSBJOTE1X09WRVJMQVlfVVZfU1dBUDoKPiBAQCAt NzYwLDcgKzc0Myw3IEBAIHN0YXRpYyB1MzIgb3ZlcmxheV9jbWRfcmVnKHN0cnVjdCBwdXRfaW1h Z2VfcGFyYW1zICpwYXJhbXMpCj4gIAo+ICBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfZG9fcHV0 X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAo+ICAJCQkJICAgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm5ld19ibywKPiAtCQkJCSAgICAgIHN0cnVjdCBwdXRfaW1h Z2VfcGFyYW1zICpwYXJhbXMpCj4gKwkJCQkgICAgICBzdHJ1Y3QgZHJtX2ludGVsX292ZXJsYXlf cHV0X2ltYWdlICpwYXJhbXMpCj4gIHsKPiAgCXN0cnVjdCBvdmVybGF5X3JlZ2lzdGVycyBfX2lv bWVtICpyZWdzID0gb3ZlcmxheS0+cmVnczsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7Cj4gQEAgLTgwNiwzNSArNzg5LDQwIEBAIHN0YXRpYyBp bnQgaW50ZWxfb3ZlcmxheV9kb19wdXRfaW1hZ2Uoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJs YXksCj4gIAkJCWdvdG8gb3V0X3VucGluOwo+ICAJfQo+ICAKPiAtCWlvd3JpdGUzMigocGFyYW1z LT5kc3RfeSA8PCAxNikgfCBwYXJhbXMtPmRzdF94LCAmcmVncy0+RFdJTlBPUyk7Cj4gLQlpb3dy aXRlMzIoKHBhcmFtcy0+ZHN0X2ggPDwgMTYpIHwgcGFyYW1zLT5kc3RfdywgJnJlZ3MtPkRXSU5T Wik7Cj4gKwlpb3dyaXRlMzIocGFyYW1zLT5kc3RfeSA8PCAxNiB8IHBhcmFtcy0+ZHN0X3gsICZy ZWdzLT5EV0lOUE9TKTsKPiArCWlvd3JpdGUzMihwYXJhbXMtPmRzdF9oZWlnaHQgPDwgMTYgfCBw YXJhbXMtPmRzdF93aWR0aCwgJnJlZ3MtPkRXSU5TWik7Cj4gIAo+IC0JaWYgKHBhcmFtcy0+Zm9y bWF0ICYgSTkxNV9PVkVSTEFZX1lVVl9QQUNLRUQpCj4gLQkJdG1wX3dpZHRoID0gcGFja2VkX3dp ZHRoX2J5dGVzKHBhcmFtcy0+Zm9ybWF0LCBwYXJhbXMtPnNyY193KTsKPiArCWlmIChwYXJhbXMt PmZsYWdzICYgSTkxNV9PVkVSTEFZX1lVVl9QQUNLRUQpCj4gKwkJdG1wX3dpZHRoID0gcGFja2Vk X3dpZHRoX2J5dGVzKHBhcmFtcy0+ZmxhZ3MsCj4gKwkJCQkJICAgICAgIHBhcmFtcy0+c3JjX3dp ZHRoKTsKPiAgCWVsc2UKPiAtCQl0bXBfd2lkdGggPSBwYXJhbXMtPnNyY193Owo+ICsJCXRtcF93 aWR0aCA9IHBhcmFtcy0+c3JjX3dpZHRoOwo+ICAKPiAtCXN3aWR0aCA9IHBhcmFtcy0+c3JjX3c7 Cj4gKwlzd2lkdGggPSBwYXJhbXMtPnNyY193aWR0aDsKPiAgCXN3aWR0aHN3ID0gY2FsY19zd2lk dGhzdyhkZXZfcHJpdiwgcGFyYW1zLT5vZmZzZXRfWSwgdG1wX3dpZHRoKTsKPiAtCXNoZWlnaHQg PSBwYXJhbXMtPnNyY19oOwo+ICsJc2hlaWdodCA9IHBhcmFtcy0+c3JjX2hlaWdodDsKPiAgCWlv d3JpdGUzMihpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBwYXJhbXMtPm9mZnNldF9ZLCAmcmVncy0+ T0JVRl8wWSk7Cj4gIAlvc3RyaWRlID0gcGFyYW1zLT5zdHJpZGVfWTsKPiAgCj4gLQlpZiAocGFy YW1zLT5mb3JtYXQgJiBJOTE1X09WRVJMQVlfWVVWX1BMQU5BUikgewo+IC0JCWludCB1dl9oc2Nh bGUgPSB1dl9oc3Vic2FtcGxpbmcocGFyYW1zLT5mb3JtYXQpOwo+IC0JCWludCB1dl92c2NhbGUg PSB1dl92c3Vic2FtcGxpbmcocGFyYW1zLT5mb3JtYXQpOwo+ICsJaWYgKHBhcmFtcy0+ZmxhZ3Mg JiBJOTE1X09WRVJMQVlfWVVWX1BMQU5BUikgewo+ICsJCWludCB1dl9oc2NhbGUgPSB1dl9oc3Vi c2FtcGxpbmcocGFyYW1zLT5mbGFncyk7Cj4gKwkJaW50IHV2X3ZzY2FsZSA9IHV2X3ZzdWJzYW1w bGluZyhwYXJhbXMtPmZsYWdzKTsKPiAgCQl1MzIgdG1wX1UsIHRtcF9WOwo+IC0JCXN3aWR0aCB8 PSAocGFyYW1zLT5zcmNfdy91dl9oc2NhbGUpIDw8IDE2Owo+ICsKPiArCQlzd2lkdGggfD0gKHBh cmFtcy0+c3JjX3dpZHRoIC8gdXZfaHNjYWxlKSA8PCAxNjsKPiArCQlzaGVpZ2h0IHw9IChwYXJh bXMtPnNyY19oZWlnaHQgLyB1dl92c2NhbGUpIDw8IDE2Owo+ICsKPiAgCQl0bXBfVSA9IGNhbGNf c3dpZHRoc3coZGV2X3ByaXYsIHBhcmFtcy0+b2Zmc2V0X1UsCj4gLQkJCQkgICAgICBwYXJhbXMt PnNyY193L3V2X2hzY2FsZSk7Cj4gKwkJCQkgICAgICBwYXJhbXMtPnNyY193aWR0aCAvIHV2X2hz Y2FsZSk7Cj4gIAkJdG1wX1YgPSBjYWxjX3N3aWR0aHN3KGRldl9wcml2LCBwYXJhbXMtPm9mZnNl dF9WLAo+IC0JCQkJICAgICAgcGFyYW1zLT5zcmNfdy91dl9oc2NhbGUpOwo+IC0JCXN3aWR0aHN3 IHw9IG1heF90KHUzMiwgdG1wX1UsIHRtcF9WKSA8PCAxNjsKPiAtCQlzaGVpZ2h0IHw9IChwYXJh bXMtPnNyY19oL3V2X3ZzY2FsZSkgPDwgMTY7Cj4gKwkJCQkgICAgICBwYXJhbXMtPnNyY193aWR0 aCAvIHV2X2hzY2FsZSk7Cj4gKwkJc3dpZHRoc3cgfD0gbWF4KHRtcF9VLCB0bXBfVikgPDwgMTY7 Cj4gKwo+ICAJCWlvd3JpdGUzMihpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBwYXJhbXMtPm9mZnNl dF9VLAo+ICAJCQkgICZyZWdzLT5PQlVGXzBVKTsKPiAgCQlpb3dyaXRlMzIoaTkxNV9nZ3R0X29m ZnNldCh2bWEpICsgcGFyYW1zLT5vZmZzZXRfViwKPiAgCQkJICAmcmVncy0+T0JVRl8wVik7Cj4g Kwo+ICAJCW9zdHJpZGUgfD0gcGFyYW1zLT5zdHJpZGVfVVYgPDwgMTY7Cj4gIAl9Cj4gIAo+IEBA IC05MzgsMTUgKzkyNiwxNiBAQCBzdGF0aWMgaW50IGNoZWNrX292ZXJsYXlfZHN0KHN0cnVjdCBp bnRlbF9vdmVybGF5ICpvdmVybGF5LAo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICB9Cj4gIAo+IC1z dGF0aWMgaW50IGNoZWNrX292ZXJsYXlfc2NhbGluZyhzdHJ1Y3QgcHV0X2ltYWdlX3BhcmFtcyAq cmVjKQo+ICtzdGF0aWMgaW50IGNoZWNrX292ZXJsYXlfc2NhbGluZyhzdHJ1Y3QgZHJtX2ludGVs X292ZXJsYXlfcHV0X2ltYWdlICpyZWMpCj4gIHsKPiAgCXUzMiB0bXA7Cj4gIAo+ICAJLyogZG93 bnNjYWxpbmcgbGltaXQgaXMgOC4wICovCj4gLQl0bXAgPSAoKHJlYy0+c3JjX3NjYW5faCA8PCAx NikgLyByZWMtPmRzdF9oKSA+PiAxNjsKPiArCXRtcCA9ICgocmVjLT5zcmNfc2Nhbl9oZWlnaHQg PDwgMTYpIC8gcmVjLT5kc3RfaGVpZ2h0KSA+PiAxNjsKPiAgCWlmICh0bXAgPiA3KQo+ICAJCXJl dHVybiAtRUlOVkFMOwo+IC0JdG1wID0gKChyZWMtPnNyY19zY2FuX3cgPDwgMTYpIC8gcmVjLT5k c3RfdykgPj4gMTY7Cj4gKwo+ICsJdG1wID0gKChyZWMtPnNyY19zY2FuX3dpZHRoIDw8IDE2KSAv IHJlYy0+ZHN0X3dpZHRoKSA+PiAxNjsKPiAgCWlmICh0bXAgPiA3KQo+ICAJCXJldHVybiAtRUlO VkFMOwo+ICAKPiBAQCAtMTA2NywxMyArMTA1NiwxMiBAQCBzdGF0aWMgaW50IGNoZWNrX292ZXJs YXlfc3JjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgaW50IGludGVsX292 ZXJsYXlfcHV0X2ltYWdlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs Cj4gIAkJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJt X2ludGVsX292ZXJsYXlfcHV0X2ltYWdlICpwdXRfaW1hZ2VfcmVjID0gZGF0YTsKPiArCXN0cnVj dCBkcm1faW50ZWxfb3ZlcmxheV9wdXRfaW1hZ2UgKnBhcmFtcyA9IGRhdGE7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50 ZWxfb3ZlcmxheSAqb3ZlcmxheTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqZHJtbW9kZV9jcnRjOwo+ ICAJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqbmV3X2JvOwo+IC0Jc3RydWN0IHB1dF9pbWFnZV9wYXJhbXMgKnBhcmFtczsKPiAgCWludCBy ZXQ7Cj4gIAo+ICAJb3ZlcmxheSA9IGRldl9wcml2LT5vdmVybGF5Owo+IEBAIC0xMDgyLDcgKzEw NzAsNyBAQCBpbnQgaW50ZWxfb3ZlcmxheV9wdXRfaW1hZ2VfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCX0KPiAgCj4gLQlp ZiAoIShwdXRfaW1hZ2VfcmVjLT5mbGFncyAmIEk5MTVfT1ZFUkxBWV9FTkFCTEUpKSB7Cj4gKwlp ZiAoIShwYXJhbXMtPmZsYWdzICYgSTkxNV9PVkVSTEFZX0VOQUJMRSkpIHsKPiAgCQlkcm1fbW9k ZXNldF9sb2NrX2FsbChkZXYpOwo+ICAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiAgCj4gQEAgLTEwOTQsMjIgKzEwODIsMTQgQEAgaW50IGludGVsX292ZXJsYXlfcHV0X2ltYWdl X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJcmV0dXJuIHJl dDsKPiAgCX0KPiAgCj4gLQlwYXJhbXMgPSBrbWFsbG9jKHNpemVvZigqcGFyYW1zKSwgR0ZQX0tF Uk5FTCk7Cj4gLQlpZiAoIXBhcmFtcykKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAtCj4gLQlkcm1t b2RlX2NydGMgPSBkcm1fY3J0Y19maW5kKGRldiwgZmlsZV9wcml2LCBwdXRfaW1hZ2VfcmVjLT5j cnRjX2lkKTsKPiAtCWlmICghZHJtbW9kZV9jcnRjKSB7Cj4gLQkJcmV0ID0gLUVOT0VOVDsKPiAt CQlnb3RvIG91dF9mcmVlOwo+IC0JfQo+ICsJZHJtbW9kZV9jcnRjID0gZHJtX2NydGNfZmluZChk ZXYsIGZpbGVfcHJpdiwgcGFyYW1zLT5jcnRjX2lkKTsKPiArCWlmICghZHJtbW9kZV9jcnRjKQo+ ICsJCXJldHVybiAtRU5PRU5UOwo+ICAJY3J0YyA9IHRvX2ludGVsX2NydGMoZHJtbW9kZV9jcnRj KTsKPiAgCj4gLQluZXdfYm8gPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJpdiwgcHV0 X2ltYWdlX3JlYy0+Ym9faGFuZGxlKTsKPiAtCWlmICghbmV3X2JvKSB7Cj4gLQkJcmV0ID0gLUVO T0VOVDsKPiAtCQlnb3RvIG91dF9mcmVlOwo+IC0JfQo+ICsJbmV3X2JvID0gaTkxNV9nZW1fb2Jq ZWN0X2xvb2t1cChmaWxlX3ByaXYsIHBhcmFtcy0+Ym9faGFuZGxlKTsKPiArCWlmICghbmV3X2Jv KQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ICAKPiAgCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7 Cj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gQEAgLTExNDUsNDIgKzExMjUs MjcgQEAgaW50IGludGVsX292ZXJsYXlfcHV0X2ltYWdlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJCW92ZXJsYXktPnBmaXRfYWN0aXZlID0gZmFsc2U7Cj4g IAl9Cj4gIAo+IC0JcmV0ID0gY2hlY2tfb3ZlcmxheV9kc3Qob3ZlcmxheSwgcHV0X2ltYWdlX3Jl Yyk7Cj4gKwlyZXQgPSBjaGVja19vdmVybGF5X2RzdChvdmVybGF5LCBwYXJhbXMpOwo+ICAJaWYg KHJldCAhPSAwKQo+ICAJCWdvdG8gb3V0X3VubG9jazsKPiAgCj4gIAlpZiAob3ZlcmxheS0+cGZp dF9hY3RpdmUpIHsKPiAtCQlwYXJhbXMtPmRzdF95ID0gKCgoKHUzMilwdXRfaW1hZ2VfcmVjLT5k c3RfeSkgPDwgMTIpIC8KPiArCQlwYXJhbXMtPmRzdF95ID0gKCgodTMyKXBhcmFtcy0+ZHN0X3kg PDwgMTIpIC8KPiAgCQkJCSBvdmVybGF5LT5wZml0X3ZzY2FsZV9yYXRpbyk7Cj4gIAkJLyogc2hp ZnRpbmcgcmlnaHQgcm91bmRzIGRvd253YXJkcywgc28gYWRkIDEgKi8KPiAtCQlwYXJhbXMtPmRz dF9oID0gKCgoKHUzMilwdXRfaW1hZ2VfcmVjLT5kc3RfaGVpZ2h0KSA8PCAxMikgLwo+ICsJCXBh cmFtcy0+ZHN0X2hlaWdodCA9ICgoKHUzMilwYXJhbXMtPmRzdF9oZWlnaHQgPDwgMTIpIC8KPiAg CQkJCSBvdmVybGF5LT5wZml0X3ZzY2FsZV9yYXRpbykgKyAxOwo+IC0JfSBlbHNlIHsKPiAtCQlw YXJhbXMtPmRzdF95ID0gcHV0X2ltYWdlX3JlYy0+ZHN0X3k7Cj4gLQkJcGFyYW1zLT5kc3RfaCA9 IHB1dF9pbWFnZV9yZWMtPmRzdF9oZWlnaHQ7Cj4gIAl9Cj4gLQlwYXJhbXMtPmRzdF94ID0gcHV0 X2ltYWdlX3JlYy0+ZHN0X3g7Cj4gLQlwYXJhbXMtPmRzdF93ID0gcHV0X2ltYWdlX3JlYy0+ZHN0 X3dpZHRoOwo+IC0KPiAtCXBhcmFtcy0+c3JjX3cgPSBwdXRfaW1hZ2VfcmVjLT5zcmNfd2lkdGg7 Cj4gLQlwYXJhbXMtPnNyY19oID0gcHV0X2ltYWdlX3JlYy0+c3JjX2hlaWdodDsKPiAtCXBhcmFt cy0+c3JjX3NjYW5fdyA9IHB1dF9pbWFnZV9yZWMtPnNyY19zY2FuX3dpZHRoOwo+IC0JcGFyYW1z LT5zcmNfc2Nhbl9oID0gcHV0X2ltYWdlX3JlYy0+c3JjX3NjYW5faGVpZ2h0Owo+IC0JaWYgKHBh cmFtcy0+c3JjX3NjYW5faCA+IHBhcmFtcy0+c3JjX2ggfHwKPiAtCSAgICBwYXJhbXMtPnNyY19z Y2FuX3cgPiBwYXJhbXMtPnNyY193KSB7Cj4gKwo+ICsJaWYgKHBhcmFtcy0+c3JjX3NjYW5faGVp Z2h0ID4gcGFyYW1zLT5zcmNfaGVpZ2h0IHx8Cj4gKwkgICAgcGFyYW1zLT5zcmNfc2Nhbl93aWR0 aCA+IHBhcmFtcy0+c3JjX3dpZHRoKSB7Cj4gIAkJcmV0ID0gLUVJTlZBTDsKPiAgCQlnb3RvIG91 dF91bmxvY2s7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gY2hlY2tfb3ZlcmxheV9zcmMoZGV2X3ByaXYs IHB1dF9pbWFnZV9yZWMsIG5ld19ibyk7Cj4gKwlyZXQgPSBjaGVja19vdmVybGF5X3NyYyhkZXZf cHJpdiwgcGFyYW1zLCBuZXdfYm8pOwo+ICAJaWYgKHJldCAhPSAwKQo+ICAJCWdvdG8gb3V0X3Vu bG9jazsKPiAtCXBhcmFtcy0+Zm9ybWF0ID0gcHV0X2ltYWdlX3JlYy0+ZmxhZ3MgJiB+STkxNV9P VkVSTEFZX0ZMQUdTX01BU0s7Cj4gLQlwYXJhbXMtPnN0cmlkZV9ZID0gcHV0X2ltYWdlX3JlYy0+ c3RyaWRlX1k7Cj4gLQlwYXJhbXMtPnN0cmlkZV9VViA9IHB1dF9pbWFnZV9yZWMtPnN0cmlkZV9V VjsKPiAtCXBhcmFtcy0+b2Zmc2V0X1kgPSBwdXRfaW1hZ2VfcmVjLT5vZmZzZXRfWTsKPiAtCXBh cmFtcy0+b2Zmc2V0X1UgPSBwdXRfaW1hZ2VfcmVjLT5vZmZzZXRfVTsKPiAtCXBhcmFtcy0+b2Zm c2V0X1YgPSBwdXRfaW1hZ2VfcmVjLT5vZmZzZXRfVjsKPiAgCj4gIAkvKiBDaGVjayBzY2FsaW5n IGFmdGVyIHNyYyBzaXplIHRvIHByZXZlbnQgYSBkaXZpZGUtYnktemVyby4gKi8KPiAgCXJldCA9 IGNoZWNrX292ZXJsYXlfc2NhbGluZyhwYXJhbXMpOwo+IEBAIC0xMTk1LDE2ICsxMTYwLDEyIEBA IGludCBpbnRlbF9vdmVybGF5X3B1dF9pbWFnZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+ICAJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ICAJaTkxNV9n ZW1fb2JqZWN0X3B1dChuZXdfYm8pOwo+ICAKPiAtCWtmcmVlKHBhcmFtcyk7Cj4gLQo+ICAJcmV0 dXJuIDA7Cj4gIAo+ICBvdXRfdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Cj4gIAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gIAlpOTE1X2dlbV9vYmpl Y3RfcHV0KG5ld19ibyk7Cj4gLW91dF9mcmVlOgo+IC0Ja2ZyZWUocGFyYW1zKTsKPiAgCj4gIAly ZXR1cm4gcmV0Owo+ICB9Cj4gLS0gCj4gMi4xOS4wLnJjMgo+IAo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJ bnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK