From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id B86506E4D5 for ; Fri, 26 Jan 2018 10:20:15 +0000 (UTC) References: <20180123125642.58698-1-maarten.lankhorst@linux.intel.com> <20180123125642.58698-4-maarten.lankhorst@linux.intel.com> <1516957215.2602.5.camel@intel.com> From: Maarten Lankhorst Message-ID: <441aaac8-03bf-56f7-6fec-2a81e0bb5bc7@linux.intel.com> Date: Fri, 26 Jan 2018 11:20:08 +0100 MIME-Version: 1.0 In-Reply-To: <1516957215.2602.5.camel@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 3/8] lib/fb: Handle planar formats in igt_calc_fb_size and create_bo_for_fb List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: mika.kahola@intel.com, igt-dev@lists.freedesktop.org List-ID: T3AgMjYtMDEtMTggb20gMTA6MDAgc2NocmVlZiBNaWthIEthaG9sYToKPiBPbiBUdWUsIDIwMTgt MDEtMjMgYXQgMTM6NTYgKzAxMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBCeSBhZGRp bmcgc3VwcG9ydCBmb3IgcGxhbmFyIGZvcm1hdHMgdG8gaWd0X2NhbGNfZmJfc2l6ZSBhbmQKPj4g Y3JlYXRlX2JvX2Zvcl9mYiwKPj4gd2UgY2FuIGNhbGN1bGF0ZSBkaW1lbnNpb25zIGFuZCBjcmVh dGUgYmFja2luZyBzdG9yYWdlIGZvciBwbGFuYXIKPj4gZnJhbWVidWZmZXJzLgo+Pgo+PiBUaGlz IGlzIHJlcXVpcmVkIGZvciBhZGRpbmcgc3VwcG9ydCB0byBjcmVhdGUgcGxhbmFyIGZyYW1lYnVm ZmVycyBpbgo+PiB0aGUgbmV4dCBwYXRjaC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBM YW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+IMKg bGliL2lndF9mYi5jIHwgMTY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tCj4+IC0tLS0tLS0tLS0tLQo+PiDCoDEgZmlsZSBjaGFuZ2VkLCAxMjMgaW5zZXJ0 aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMg Yi9saWIvaWd0X2ZiLmMKPj4gaW5kZXggZGEwN2QxYTllMjFmLi42YTMzMWYwNjcyNGIgMTAwNjQ0 Cj4+IC0tLSBhL2xpYi9pZ3RfZmIuYwo+PiArKysgYi9saWIvaWd0X2ZiLmMKPj4gQEAgLTU0LDE0 ICs1NCwxNiBAQAo+PiDCoCAqLwo+PiDCoAo+PiDCoC8qIGRybSBmb3VyY2MvY2Fpcm8gZm9ybWF0 IG1hcHMgKi8KPj4gLSNkZWZpbmUgREYoZGlkLCBjaWQsIF9icHAsIF9kZXB0aCkJXAo+PiAtCXsg RFJNX0ZPUk1BVF8jI2RpZCwgQ0FJUk9fRk9STUFUXyMjY2lkLCAjIGRpZCwgX2JwcCwgX2RlcHRo Cj4+IH0KPj4gKyNkZWZpbmUgREYoZGlkLCBjaWQsIC4uLikJXAo+PiArCXsgRFJNX0ZPUk1BVF8j I2RpZCwgQ0FJUk9fRk9STUFUXyMjY2lkLCAjIGRpZCwgX19WQV9BUkdTX18gfQo+PiDCoHN0YXRp YyBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0IHsKPj4gwqAJdWludDMyX3QgZHJtX2lkOwo+PiDC oAljYWlyb19mb3JtYXRfdCBjYWlyb19pZDsKPj4gwqAJY29uc3QgY2hhciAqbmFtZTsKPj4gwqAJ aW50IGJwcDsKPj4gwqAJaW50IGRlcHRoOwo+PiArCWludCBwbGFuZXM7Cj4+ICsJaW50IHBsYW5l X2JwcFs0XTsKPiBzaG91bGQgd2UgZGVmaW5lIGEgbWF4IHZhbHVlIGZvciB0aGlzIGluc3RlYWQg b2YgaGFyZGNvZGVkIG9uZT8KNCBwbGFuZXMgaXMgdGhlIG1heGltdW0gZXZlci4gQWxwaGEsIFIs IEcgYW5kIEIuCj4+IMKgfSBmb3JtYXRfZGVzY1tdID0gewo+PiDCoAlERihSR0I1NjUsCVJHQjE2 XzU2NSwJMTYsIDE2KSwKPj4gwqAJLy9ERihSR0I4ODgsCUlOVkFMSUQsCTI0LCAyNCksCj4+IEBA IC03NCw2ICs3NiwyMCBAQCBzdGF0aWMgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7Cj4+IMKg I2RlZmluZSBmb3JfZWFjaF9mb3JtYXQoZikJXAo+PiDCoAlmb3IgKGYgPSBmb3JtYXRfZGVzYzsg ZiAtIGZvcm1hdF9kZXNjIDwKPj4gQVJSQVlfU0laRShmb3JtYXRfZGVzYyk7IGYrKykKPj4gwqAK Pj4gK3N0YXRpYyBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpsb29rdXBfZHJtX2Zvcm1hdCh1 aW50MzJfdAo+PiBkcm1fZm9ybWF0KQo+PiArewo+PiArCXN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1 Y3QgKmZvcm1hdDsKPj4gKwo+PiArCWZvcl9lYWNoX2Zvcm1hdChmb3JtYXQpIHsKPj4gKwkJaWYg KGZvcm1hdC0+ZHJtX2lkICE9IGRybV9mb3JtYXQpCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiAr CQlyZXR1cm4gZm9ybWF0Owo+PiArCX0KPj4gKwo+PiArCXJldHVybiBOVUxMOwo+PiArfQo+PiAr Cj4+IMKgLyoqCj4+IMKgICogaWd0X2dldF9mYl90aWxlX3NpemU6Cj4+IMKgICogQGZkOiB0aGUg RFJNIGZpbGUgZGVzY3JpcHRvcgo+PiBAQCAtMTQyLDI3ICsxNTgsNjggQEAgdm9pZCBpZ3RfZ2V0 X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90Cj4+IHRpbGluZywgaW50IGZiX2JwcCwKPj4g wqAJfQo+PiDCoH0KPj4gwqAKPj4gLS8qKgo+PiAtICogaWd0X2NhbGNfZmJfc2l6ZToKPj4gLSAq IEBmZDogdGhlIERSTSBmaWxlIGRlc2NyaXB0b3IKPj4gLSAqIEB3aWR0aDogd2lkdGggb2YgdGhl IGZyYW1lYnVmZmVyIGluIHBpeGVscwo+PiAtICogQGhlaWdodDogaGVpZ2h0IG9mIHRoZSBmcmFt ZWJ1ZmZlciBpbiBwaXhlbHMKPj4gLSAqIEBmb3JtYXQ6IGRybSBmb3VyY2MgcGl4ZWwgZm9ybWF0 IGNvZGUKPj4gLSAqIEB0aWxpbmc6IHRpbGluZyBsYXlvdXQgb2YgdGhlIGZyYW1lYnVmZmVyIChh cyBmcmFtZWJ1ZmZlcgo+PiBtb2RpZmllcikKPj4gLSAqIEBzaXplX3JldDogcmV0dXJuZWQgc2l6 ZSBmb3IgdGhlIGZyYW1lYnVmZmVyCj4+IC0gKiBAc3RyaWRlX3JldDogcmV0dXJuZWQgc3RyaWRl IGZvciB0aGUgZnJhbWVidWZmZXIKPj4gLSAqCj4+IC0gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMg dmFsaWQgc3RyaWRlIGFuZCBzaXplIHZhbHVlcyBmb3IgYQo+PiBmcmFtZWJ1ZmZlciB3aXRoIHRo ZQo+PiAtICogc3BlY2lmaWVkIHBhcmFtZXRlcnMuCj4+IC0gKi8KPj4gLXZvaWQgaWd0X2NhbGNf ZmJfc2l6ZShpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QKPj4gZm9ybWF0 LCB1aW50NjRfdCB0aWxpbmcsCj4+IC0JCcKgwqDCoMKgwqDCoHVuc2lnbmVkICpzaXplX3JldCwg dW5zaWduZWQgKnN0cmlkZV9yZXQpCj4+ICtzdGF0aWMgdW5zaWduZWQgcGxhbmFyX3N0cmlkZShz dHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsCj4+IHVuc2lnbmVkIHdpZHRoLCBpbnQg cGxhbmUpCj4+ICt7Cj4+ICsJdW5zaWduZWQgY3BwID0gZm9ybWF0LT5wbGFuZV9icHBbcGxhbmVd IC8gODsKPj4gKwo+PiArCWlmIChmb3JtYXQtPmRybV9pZCA9PSBEUk1fRk9STUFUX05WMTIgJiYg cGxhbmUgPT0gMSkKPj4gKwkJcmV0dXJuICh3aWR0aCArIDEpIC8gMiAqIGNwcDsKPj4gKwo+PiAr CXJldHVybiB3aWR0aCAqIGNwcDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIHBsYW5h cl9oZWlnaHQoc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZm9ybWF0LAo+PiB1bnNpZ25lZCBo ZWlnaHQsIGludCBwbGFuZSkKPj4gK3sKPj4gKwlpZiAoZm9ybWF0LT5kcm1faWQgPT0gRFJNX0ZP Uk1BVF9OVjEyICYmIHBsYW5lID09IDEpCj4+ICsJCXJldHVybiAoaGVpZ2h0ICsgMSkgLyAyOwo+ PiArCj4+ICsJcmV0dXJuIGhlaWdodDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY2FsY19m Yl9zaXplX3BsYW5hcihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKPj4gKwkJCQlzdHJ1 Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsCj4+ICsJCQkJdWludDY0X3QgdGlsaW5nLCB1 bnNpZ25lZCAqc2l6ZV9yZXQsCj4+ICsJCQkJdW5zaWduZWQgKnN0cmlkZV9yZXQsIHVuc2lnbmVk Cj4+ICpvZmZzZXRzKQo+PiArewo+PiArCWludCBwbGFuZTsKPj4gKwl1bnNpZ25lZCBzdHJpZGUg PSAwLCB0aWxlX3dpZHRoLCB0aWxlX2hlaWdodDsKPj4gKwo+PiArCSpzaXplX3JldCA9IDA7Cj4+ ICsKPj4gKwlmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCBmb3JtYXQtPnBsYW5lczsgcGxhbmUrKykg ewo+PiArCQl1bnNpZ25lZCBwbGFuZV9zdHJpZGU7Cj4+ICsKPj4gKwkJaWd0X2dldF9mYl90aWxl X3NpemUoZmQsIHRpbGluZywgZm9ybWF0LQo+Pj4gcGxhbmVfYnBwW3BsYW5lXSwgJnRpbGVfd2lk dGgsICZ0aWxlX2hlaWdodCk7Cj4+ICsKPj4gKwkJcGxhbmVfc3RyaWRlID0gQUxJR04ocGxhbmFy X3N0cmlkZShmb3JtYXQsIHdpZHRoLAo+PiBwbGFuZSksIHRpbGVfd2lkdGgpOwo+PiArCQlpZiAo c3RyaWRlIDwgcGxhbmVfc3RyaWRlKQo+PiArCQkJc3RyaWRlID0gcGxhbmVfc3RyaWRlOwo+PiAr CX0KPj4gKwo+PiArCWZvciAocGxhbmUgPSAwOyBwbGFuZSA8IGZvcm1hdC0+cGxhbmVzOyBwbGFu ZSsrKSB7Cj4+ICsJCWlmIChvZmZzZXRzKQo+PiArCQkJb2Zmc2V0c1twbGFuZV0gPSAqc2l6ZV9y ZXQ7Cj4+ICsKPj4gKwkJaWd0X2dldF9mYl90aWxlX3NpemUoZmQsIHRpbGluZywgZm9ybWF0LQo+ Pj4gcGxhbmVfYnBwW3BsYW5lXSwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCk7Cj4+ICsKPj4g KwkJKnNpemVfcmV0ICs9IHN0cmlkZSAqIEFMSUdOKHBsYW5hcl9oZWlnaHQoZm9ybWF0LAo+PiBo ZWlnaHQsIHBsYW5lKSwgdGlsZV9oZWlnaHQpOwo+PiArCX0KPj4gKwo+PiArCWlmIChvZmZzZXRz KQo+PiArCQlmb3IgKDsgcGxhbmUgPCA0OyBwbGFuZSsrKQo+IFdlIGNvdWxkIGxvb3AgdGhyb3Vn aCBtYXggZGVmaW5lIHZhbHVlIGhlcmUgdG9vIGluc3RlYWQgb2YgaGFyZGNvZGVkCj4gb25lLgo+ Cj4+ICsJCQlvZmZzZXRzW3BsYW5lXSA9IDA7Cj4+ICsKPj4gKwkqc3RyaWRlX3JldCA9IHN0cmlk ZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY2FsY19mYl9zaXplX3BhY2tlZChpbnQgZmQs IGludCB3aWR0aCwgaW50IGhlaWdodCwKPj4gKwkJCQlzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0 ICpmb3JtYXQsCj4+IHVpbnQ2NF90IHRpbGluZywKPj4gKwkJCQl1bnNpZ25lZCAqc2l6ZV9yZXQs IHVuc2lnbmVkCj4+ICpzdHJpZGVfcmV0KQo+PiDCoHsKPj4gwqAJdW5zaWduZWQgaW50IHRpbGVf d2lkdGgsIHRpbGVfaGVpZ2h0LCBzdHJpZGUsIHNpemU7Cj4+IC0JaW50IGJwcCA9IGlndF9kcm1f Zm9ybWF0X3RvX2JwcChmb3JtYXQpOwo+PiAtCWludCBieXRlX3dpZHRoID0gd2lkdGggKiAoYnBw IC8gOCk7Cj4+ICsJaW50IGJ5dGVfd2lkdGggPSB3aWR0aCAqIChmb3JtYXQtPmJwcCAvIDgpOwo+ PiDCoAo+PiAtCWlndF9nZXRfZmJfdGlsZV9zaXplKGZkLCB0aWxpbmcsIGJwcCwgJnRpbGVfd2lk dGgsCj4+ICZ0aWxlX2hlaWdodCk7Cj4+ICsJaWd0X2dldF9mYl90aWxlX3NpemUoZmQsIHRpbGlu ZywgZm9ybWF0LT5icHAsICZ0aWxlX3dpZHRoLAo+PiAmdGlsZV9oZWlnaHQpOwo+PiDCoAo+PiDC oAlpZiAodGlsaW5nICE9IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUgJiYKPj4gwqAJwqDCoMKg wqBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpIDw9IDMpIHsKPj4gQEAgLTE3Niw3 ICsyMzMsNyBAQCB2b2lkIGlndF9jYWxjX2ZiX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludAo+ PiBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgdAo+PiDCoAkJwqAqIHRpbGVkLiBC dXQgdGhlbiB0aGF0IGZhaWx1cmUgaXMgZXhwZWN0ZWQuCj4+IMKgCQnCoCovCj4+IMKgCj4+IC0J CXYgPSB3aWR0aCAqIGJwcCAvIDg7Cj4+ICsJCXYgPSBieXRlX3dpZHRoOwo+PiDCoAkJZm9yIChz dHJpZGUgPSA1MTI7IHN0cmlkZSA8IHY7IHN0cmlkZSAqPSAyKQo+PiDCoAkJCTsKPj4gwqAKPj4g QEAgLTE5Miw2ICsyNDksMzEgQEAgdm9pZCBpZ3RfY2FsY19mYl9zaXplKGludCBmZCwgaW50IHdp ZHRoLCBpbnQKPj4gaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IHQKPj4gwqAJKnNp emVfcmV0ID0gc2l6ZTsKPj4gwqB9Cj4+IMKgCj4+ICsvKioKPj4gKyAqIGlndF9jYWxjX2ZiX3Np emU6Cj4+ICsgKiBAZmQ6IHRoZSBEUk0gZmlsZSBkZXNjcmlwdG9yCj4+ICsgKiBAd2lkdGg6IHdp ZHRoIG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbHMKPj4gKyAqIEBoZWlnaHQ6IGhlaWdodCBv ZiB0aGUgZnJhbWVidWZmZXIgaW4gcGl4ZWxzCj4+ICsgKiBAZm9ybWF0OiBkcm0gZm91cmNjIHBp eGVsIGZvcm1hdCBjb2RlCj4+ICsgKiBAdGlsaW5nOiB0aWxpbmcgbGF5b3V0IG9mIHRoZSBmcmFt ZWJ1ZmZlciAoYXMgZnJhbWVidWZmZXIKPj4gbW9kaWZpZXIpCj4+ICsgKiBAc2l6ZV9yZXQ6IHJl dHVybmVkIHNpemUgZm9yIHRoZSBmcmFtZWJ1ZmZlcgo+PiArICogQHN0cmlkZV9yZXQ6IHJldHVy bmVkIHN0cmlkZSBmb3IgdGhlIGZyYW1lYnVmZmVyCj4+ICsgKgo+PiArICogVGhpcyBmdW5jdGlv biByZXR1cm5zIHZhbGlkIHN0cmlkZSBhbmQgc2l6ZSB2YWx1ZXMgZm9yIGEKPj4gZnJhbWVidWZm ZXIgd2l0aCB0aGUKPj4gKyAqIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgo+PiArICovCj4+ICt2b2lk IGlndF9jYWxjX2ZiX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90 Cj4+IGRybV9mb3JtYXQsIHVpbnQ2NF90IHRpbGluZywKPj4gKwkJwqDCoMKgwqDCoMKgdW5zaWdu ZWQgKnNpemVfcmV0LCB1bnNpZ25lZCAqc3RyaWRlX3JldCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZm9y bWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQgPQo+PiBsb29rdXBfZHJtX2Zvcm1hdChkcm1fZm9ybWF0 KTsKPj4gKwlpZ3RfYXNzZXJ0KGZvcm1hdCk7Cj4+ICsKPj4gKwlpZiAoZm9ybWF0LT5wbGFuZXMg PiAxKQo+PiArCQljYWxjX2ZiX3NpemVfcGxhbmFyKGZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs Cj4+IHRpbGluZywgc2l6ZV9yZXQsIHN0cmlkZV9yZXQsIE5VTEwpOwo+PiArCWVsc2UKPj4gKwkJ Y2FsY19mYl9zaXplX3BhY2tlZChmZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LAo+PiB0aWxpbmcs IHNpemVfcmV0LCBzdHJpZGVfcmV0KTsKPj4gK30KPj4gKwo+PiDCoC8qKgo+PiDCoCAqIGlndF9m Yl9tb2RfdG9fdGlsaW5nOgo+PiDCoCAqIEBtb2RpZmllcjogRFJNIGZyYW1lYnVmZmVyIG1vZGlm aWVyCj4+IEBAIC0yNDUsMTcgKzMyNywyMCBAQCB1aW50NjRfdCBpZ3RfZmJfdGlsaW5nX3RvX21v ZCh1aW50NjRfdCB0aWxpbmcpCj4+IMKgfQo+PiDCoAo+PiDCoC8qIGhlbHBlcnMgdG8gY3JlYXRl IG5pY2UtbG9va2luZyBmcmFtZWJ1ZmZlcnMgKi8KPj4gLXN0YXRpYyBpbnQgY3JlYXRlX2JvX2Zv cl9mYihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QKPj4gZm9ybWF0LAo+ PiArc3RhdGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVp Z2h0LAo+PiArCQkJwqDCoMKgwqBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsCj4+ IMKgCQkJwqDCoMKgwqB1aW50NjRfdCB0aWxpbmcsIHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkCj4+ IHN0cmlkZSwKPj4gwqAJCQnCoMKgwqDCoHVuc2lnbmVkICpzaXplX3JldCwgdW5zaWduZWQKPj4g KnN0cmlkZV9yZXQsCj4+IMKgCQkJwqDCoMKgwqBib29sICppc19kdW1iKQo+PiDCoHsKPj4gwqAJ aW50IGJvOwo+PiDCoAo+PiAtCWlmICh0aWxpbmcgfHwgc2l6ZSB8fCBzdHJpZGUpIHsKPj4gKwlp Z3RfYXNzZXJ0KGZvcm1hdCk7Cj4+ICsKPj4gKwlpZiAodGlsaW5nIHx8IHNpemUgfHwgc3RyaWRl IHx8IGZvcm1hdC0+cGxhbmVzID4gMSkgewo+PiDCoAkJdW5zaWduZWQgY2FsY3VsYXRlZF9zaXpl LCBjYWxjdWxhdGVkX3N0cmlkZTsKPj4gwqAKPj4gLQkJaWd0X2NhbGNfZmJfc2l6ZShmZCwgd2lk dGgsIGhlaWdodCwgZm9ybWF0LCB0aWxpbmcsCj4+ICsJCWlndF9jYWxjX2ZiX3NpemUoZmQsIHdp ZHRoLCBoZWlnaHQsIGZvcm1hdC0+ZHJtX2lkLAo+PiB0aWxpbmcsCj4+IMKgCQkJCcKgJmNhbGN1 bGF0ZWRfc2l6ZSwKPj4gJmNhbGN1bGF0ZWRfc3RyaWRlKTsKPj4gwqAJCWlmIChzdHJpZGUgPT0g MCkKPj4gwqAJCQlzdHJpZGUgPSBjYWxjdWxhdGVkX3N0cmlkZTsKPj4gQEAgLTI5MCwxMiArMzc1 LDEwIEBAIHN0YXRpYyBpbnQgY3JlYXRlX2JvX2Zvcl9mYihpbnQgZmQsIGludCB3aWR0aCwKPj4g aW50IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LAo+PiDCoAkJCXJldHVybiAtRUlOVkFMOwo+PiDC oAkJfQo+PiDCoAl9IGVsc2Ugewo+PiAtCQlpbnQgYnBwID0gaWd0X2RybV9mb3JtYXRfdG9fYnBw KGZvcm1hdCk7Cj4+IC0KPj4gwqAJCWlmIChpc19kdW1iKQo+PiDCoAkJCSppc19kdW1iID0gdHJ1 ZTsKPj4gwqAKPj4gLQkJcmV0dXJuIGttc3Rlc3RfZHVtYl9jcmVhdGUoZmQsIHdpZHRoLCBoZWln aHQsIGJwcCwKPj4gc3RyaWRlX3JldCwKPj4gKwkJcmV0dXJuIGttc3Rlc3RfZHVtYl9jcmVhdGUo ZmQsIHdpZHRoLCBoZWlnaHQsCj4+IGZvcm1hdC0+YnBwLCBzdHJpZGVfcmV0LAo+PiDCoAkJCQkJ wqDCoMKgc2l6ZV9yZXQpOwo+PiDCoAl9Cj4+IMKgfQo+PiBAQCAtMzIzLDggKzQwNiw4IEBAIGlu dCBpZ3RfY3JlYXRlX2JvX3dpdGhfZGltZW5zaW9ucyhpbnQgZmQsIGludAo+PiB3aWR0aCwgaW50 IGhlaWdodCwKPj4gwqAJCQkJwqDCoHVuc2lnbmVkIHN0cmlkZSwgdW5zaWduZWQKPj4gKnNpemVf cmV0LAo+PiDCoAkJCQnCoMKgdW5zaWduZWQgKnN0cmlkZV9yZXQsIGJvb2wKPj4gKmlzX2R1bWIp Cj4+IMKgewo+PiAtCXJldHVybiBjcmVhdGVfYm9fZm9yX2ZiKGZkLCB3aWR0aCwgaGVpZ2h0LCBm b3JtYXQsIG1vZGlmaWVyLAo+PiAwLCBzdHJpZGUsCj4+IC0JCQnCoMKgwqDCoMKgc2l6ZV9yZXQs IHN0cmlkZV9yZXQsIGlzX2R1bWIpOwo+PiArCXJldHVybiBjcmVhdGVfYm9fZm9yX2ZiKGZkLCB3 aWR0aCwgaGVpZ2h0LAo+PiBsb29rdXBfZHJtX2Zvcm1hdChmb3JtYXQpLAo+PiArCQkJCW1vZGlm aWVyLCAwLCBzdHJpZGUsIHNpemVfcmV0LAo+PiBzdHJpZGVfcmV0LCBpc19kdW1iKTsKPj4gwqB9 Cj4+IMKgCj4+IMKgLyoqCj4+IEBAIC02NzEsOSArNzU0LDEwIEBAIGlndF9jcmVhdGVfZmJfd2l0 aF9ib19zaXplKGludCBmZCwgaW50IHdpZHRoLAo+PiBpbnQgaGVpZ2h0LAo+PiDCoAo+PiDCoAlp Z3RfZGVidWcoIiVzKHdpZHRoPSVkLCBoZWlnaHQ9JWQsIGZvcm1hdD0weCV4LAo+PiB0aWxpbmc9 MHglIlBSSXg2NCIsIHNpemU9JWQpXG4iLAo+PiDCoAkJwqDCoF9fZnVuY19fLCB3aWR0aCwgaGVp Z2h0LCBmb3JtYXQsIHRpbGluZywgYm9fc2l6ZSk7Cj4+IC0JZmItPmdlbV9oYW5kbGUgPSBjcmVh dGVfYm9fZm9yX2ZiKGZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsCj4+IHRpbGluZywKPj4gLQkJ CQkJwqDCoGJvX3NpemUsIGJvX3N0cmlkZSwgJmZiLQo+Pj4gc2l6ZSwKPj4gLQkJCQkJwqDCoCZm Yi0+c3RyaWRlLCAmZmItCj4+PiBpc19kdW1iKTsKPj4gKwlmYi0+Z2VtX2hhbmRsZSA9IGNyZWF0 ZV9ib19mb3JfZmIoZmQsIHdpZHRoLCBoZWlnaHQsCj4+ICsJCQkJCcKgwqBsb29rdXBfZHJtX2Zv cm1hdChmb3JtYXQpLAo+PiArCQkJCQnCoMKgdGlsaW5nLCBib19zaXplLAo+PiBib19zdHJpZGUs Cj4+ICsJCQkJCcKgwqAmZmItPnNpemUsICZmYi0+c3RyaWRlLAo+PiAmZmItPmlzX2R1bWIpOwo+ PiDCoAlpZ3RfYXNzZXJ0KGZiLT5nZW1faGFuZGxlID4gMCk7Cj4+IMKgCj4+IMKgCWlndF9kZWJ1 ZygiJXMoaGFuZGxlPSVkLCBwaXRjaD0lZClcbiIsCj4+IEBAIC0xMDY5LDcgKzExNTMsNyBAQCBz dGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fYmxpdChpbnQgZmQsCj4+IHN0cnVjdCBp Z3RfZmIgKmZiKQo+PiDCoAnCoCogZGVzdGluYXRpb24sIHRpbGluZyBpdCBhdCB0aGUgc2FtZSB0 aW1lLgo+PiDCoAnCoCovCj4+IMKgCWJsaXQtPmxpbmVhci5oYW5kbGUgPSBjcmVhdGVfYm9fZm9y X2ZiKGZkLCBmYi0+d2lkdGgsIGZiLQo+Pj4gaGVpZ2h0LAo+PiAtCQkJCQnCoMKgwqDCoMKgwqDC oGZiLT5kcm1fZm9ybWF0LAo+PiArCQkJCQnCoMKgwqDCoMKgwqDCoGxvb2t1cF9kcm1fZm9ybWF0 KGZiLQo+Pj4gZHJtX2Zvcm1hdCksCj4+IMKgCQkJCQnCoMKgwqDCoMKgwqDCoExPQ0FMX0RSTV9G T1JNQVRfTU9EXwo+PiBOT05FLCAwLAo+PiDCoAkJCQkJwqDCoMKgwqDCoMKgwqAwLCAmYmxpdC0K Pj4+IGxpbmVhci5zaXplLAo+PiDCoAkJCQkJwqDCoMKgwqDCoMKgwqAmYmxpdC0+bGluZWFyLnN0 cmlkZSwKPj4gQEAgLTEyOTMsMTQgKzEzNzcsMTIgQEAgdWludDMyX3QgaWd0X2JwcF9kZXB0aF90 b19kcm1fZm9ybWF0KGludCBicHAsCj4+IGludCBkZXB0aCkKPj4gwqAgKi8KPj4gwqB1aW50MzJf dCBpZ3RfZHJtX2Zvcm1hdF90b19icHAodWludDMyX3QgZHJtX2Zvcm1hdCkKPj4gwqB7Cj4+IC0J c3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZjsKPj4gKwlzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3Ry dWN0ICpmID0KPj4gbG9va3VwX2RybV9mb3JtYXQoZHJtX2Zvcm1hdCk7Cj4+IMKgCj4+IC0JZm9y X2VhY2hfZm9ybWF0KGYpCj4+IC0JCWlmIChmLT5kcm1faWQgPT0gZHJtX2Zvcm1hdCkKPj4gLQkJ CXJldHVybiBmLT5icHA7Cj4+IC0KPj4gLQlpZ3RfYXNzZXJ0X2YoMCwgImNhbid0IGZpbmQgYSBi cHAgZm9ybWF0IGZvciAlMDh4ICglcylcbiIsCj4+ICsJaWd0X2Fzc2VydF9mKGYsICJjYW4ndCBm aW5kIGEgYnBwIGZvcm1hdCBmb3IgJTA4eCAoJXMpXG4iLAo+PiDCoAkJwqDCoMKgwqDCoGRybV9m b3JtYXQsIGlndF9mb3JtYXRfc3RyKGRybV9mb3JtYXQpKTsKPj4gKwo+PiArCXJldHVybiBmLT5i cHA7Cj4+IMKgfQo+PiDCoAo+PiDCoC8qKgo+PiBAQCAtMTMxMywxMyArMTM5NSw5IEBAIHVpbnQz Ml90IGlndF9kcm1fZm9ybWF0X3RvX2JwcCh1aW50MzJfdAo+PiBkcm1fZm9ybWF0KQo+PiDCoCAq Lwo+PiDCoGNvbnN0IGNoYXIgKmlndF9mb3JtYXRfc3RyKHVpbnQzMl90IGRybV9mb3JtYXQpCj4+ IMKgewo+PiAtCXN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmY7Cj4+IC0KPj4gLQlmb3JfZWFj aF9mb3JtYXQoZikKPj4gLQkJaWYgKGYtPmRybV9pZCA9PSBkcm1fZm9ybWF0KQo+PiAtCQkJcmV0 dXJuIGYtPm5hbWU7Cj4+ICsJc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZiA9Cj4+IGxvb2t1 cF9kcm1fZm9ybWF0KGRybV9mb3JtYXQpOwo+PiDCoAo+PiAtCXJldHVybiAiaW52YWxpZCI7Cj4+ ICsJcmV0dXJuIGYgPyBmLT5uYW1lIDogImludmFsaWQiOwo+PiDCoH0KPj4gwqAKPj4gwqAvKioK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2 IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK