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 D96E76E845 for ; Thu, 1 Feb 2018 14:39:40 +0000 (UTC) Date: Thu, 1 Feb 2018 16:39:37 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20180201143937.GR5453@intel.com> References: <20180123125642.58698-1-maarten.lankhorst@linux.intel.com> <20180123125642.58698-4-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180123125642.58698-4-maarten.lankhorst@linux.intel.com> 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: Maarten Lankhorst Cc: igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCBKYW4gMjMsIDIwMTggYXQgMDE6NTY6MzdQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gQnkgYWRkaW5nIHN1cHBvcnQgZm9yIHBsYW5hciBmb3JtYXRzIHRvIGlndF9j YWxjX2ZiX3NpemUgYW5kIGNyZWF0ZV9ib19mb3JfZmIsCj4gd2UgY2FuIGNhbGN1bGF0ZSBkaW1l bnNpb25zIGFuZCBjcmVhdGUgYmFja2luZyBzdG9yYWdlIGZvciBwbGFuYXIgZnJhbWVidWZmZXJz Lgo+IAo+IFRoaXMgaXMgcmVxdWlyZWQgZm9yIGFkZGluZyBzdXBwb3J0IHRvIGNyZWF0ZSBwbGFu YXIgZnJhbWVidWZmZXJzIGluIHRoZSBuZXh0IHBhdGNoLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0t Cj4gIGxpYi9pZ3RfZmIuYyB8IDE2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTIzIGluc2VydGlv bnMoKyksIDQ1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9s aWIvaWd0X2ZiLmMKPiBpbmRleCBkYTA3ZDFhOWUyMWYuLjZhMzMxZjA2NzI0YiAxMDA2NDQKPiAt LS0gYS9saWIvaWd0X2ZiLmMKPiArKysgYi9saWIvaWd0X2ZiLmMKPiBAQCAtNTQsMTQgKzU0LDE2 IEBACj4gICAqLwo+ICAKPiAgLyogZHJtIGZvdXJjYy9jYWlybyBmb3JtYXQgbWFwcyAqLwo+IC0j ZGVmaW5lIERGKGRpZCwgY2lkLCBfYnBwLCBfZGVwdGgpCVwKPiAtCXsgRFJNX0ZPUk1BVF8jI2Rp ZCwgQ0FJUk9fRk9STUFUXyMjY2lkLCAjIGRpZCwgX2JwcCwgX2RlcHRoIH0KPiArI2RlZmluZSBE RihkaWQsIGNpZCwgLi4uKQlcCj4gKwl7IERSTV9GT1JNQVRfIyNkaWQsIENBSVJPX0ZPUk1BVF8j I2NpZCwgIyBkaWQsIF9fVkFfQVJHU19fIH0KCkkgZG9uJ3QgdGhpbmsgdGhpcyBtYWNybyBpcyBw cm92aWRpbmcgYW55IGJlbmVmaXQgdG8gdXMgc2luY2UgaXQgY2FuJ3QKZXZlbiBwcm90ZWN0IGFn YWluc3QgZGlkIHZzLiBjaWQgdHlwb2VzLiBJTU8ganVzdCBraWxsIGl0IGFuZCBzd2l0Y2ggdG8K bmFtZWQgaW5pdGlhbGl6ZXJzLgoKPiAgc3RhdGljIHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qg ewo+ICAJdWludDMyX3QgZHJtX2lkOwo+ICAJY2Fpcm9fZm9ybWF0X3QgY2Fpcm9faWQ7Cj4gIAlj b25zdCBjaGFyICpuYW1lOwo+ICAJaW50IGJwcDsKPiAgCWludCBkZXB0aDsKPiArCWludCBwbGFu ZXM7Cj4gKwlpbnQgcGxhbmVfYnBwWzRdOwo+ICB9IGZvcm1hdF9kZXNjW10gPSB7Cj4gIAlERihS R0I1NjUsCVJHQjE2XzU2NSwJMTYsIDE2KSwKPiAgCS8vREYoUkdCODg4LAlJTlZBTElELAkyNCwg MjQpLAo+IEBAIC03NCw2ICs3NiwyMCBAQCBzdGF0aWMgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVj dCB7Cj4gICNkZWZpbmUgZm9yX2VhY2hfZm9ybWF0KGYpCVwKPiAgCWZvciAoZiA9IGZvcm1hdF9k ZXNjOyBmIC0gZm9ybWF0X2Rlc2MgPCBBUlJBWV9TSVpFKGZvcm1hdF9kZXNjKTsgZisrKQo+ICAK PiArc3RhdGljIHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmxvb2t1cF9kcm1fZm9ybWF0KHVp bnQzMl90IGRybV9mb3JtYXQpCgpUaGUgZnVuY3Rpb24gbmFtZSBmZWVscyBhIGJpdCBtaXNsZWFk aW5nLiBNYWtlcyBtZSB0aGluZyBpdCByZXR1cm5zIGEKZHJtIGZvdXJjYy4KCj4gK3sKPiArCXN0 cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdDsKPiArCj4gKwlmb3JfZWFjaF9mb3JtYXQo Zm9ybWF0KSB7Cj4gKwkJaWYgKGZvcm1hdC0+ZHJtX2lkICE9IGRybV9mb3JtYXQpCj4gKwkJCWNv bnRpbnVlOwoKT3IganVzdCAKaWYgKGEgPT0gYikKCXJldHVybiB3aGF0ZXZlcjsKCkFueXdheSBh cGFydCBmcm9tIHRob3NlIHRoaW5ncyBsb29rIHByZXR0eSByZWFzb25hYmxlIHRvIG1lLCBzbyB3 aXRoIHRoZQptaXNsZWFkaW5nIGZ1bmN0aW9uIG5hbWUgbWFkZSBiZXR0ZXIgdGhpcyBpcwoKUmV2 aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cgo+ICsKPiArCQlyZXR1cm4gZm9ybWF0Owo+ICsJfQo+ICsKPiArCXJldHVybiBOVUxMOwo+ICt9 Cj4gKwo+ICAvKioKPiAgICogaWd0X2dldF9mYl90aWxlX3NpemU6Cj4gICAqIEBmZDogdGhlIERS TSBmaWxlIGRlc2NyaXB0b3IKPiBAQCAtMTQyLDI3ICsxNTgsNjggQEAgdm9pZCBpZ3RfZ2V0X2Zi X3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKPiAgCX0KPiAg fQo+ICAKPiAtLyoqCj4gLSAqIGlndF9jYWxjX2ZiX3NpemU6Cj4gLSAqIEBmZDogdGhlIERSTSBm aWxlIGRlc2NyaXB0b3IKPiAtICogQHdpZHRoOiB3aWR0aCBvZiB0aGUgZnJhbWVidWZmZXIgaW4g cGl4ZWxzCj4gLSAqIEBoZWlnaHQ6IGhlaWdodCBvZiB0aGUgZnJhbWVidWZmZXIgaW4gcGl4ZWxz Cj4gLSAqIEBmb3JtYXQ6IGRybSBmb3VyY2MgcGl4ZWwgZm9ybWF0IGNvZGUKPiAtICogQHRpbGlu ZzogdGlsaW5nIGxheW91dCBvZiB0aGUgZnJhbWVidWZmZXIgKGFzIGZyYW1lYnVmZmVyIG1vZGlm aWVyKQo+IC0gKiBAc2l6ZV9yZXQ6IHJldHVybmVkIHNpemUgZm9yIHRoZSBmcmFtZWJ1ZmZlcgo+ IC0gKiBAc3RyaWRlX3JldDogcmV0dXJuZWQgc3RyaWRlIGZvciB0aGUgZnJhbWVidWZmZXIKPiAt ICoKPiAtICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHZhbGlkIHN0cmlkZSBhbmQgc2l6ZSB2YWx1 ZXMgZm9yIGEgZnJhbWVidWZmZXIgd2l0aCB0aGUKPiAtICogc3BlY2lmaWVkIHBhcmFtZXRlcnMu Cj4gLSAqLwo+IC12b2lkIGlndF9jYWxjX2ZiX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgdGlsaW5nLAo+IC0JCSAgICAgIHVuc2ln bmVkICpzaXplX3JldCwgdW5zaWduZWQgKnN0cmlkZV9yZXQpCj4gK3N0YXRpYyB1bnNpZ25lZCBw bGFuYXJfc3RyaWRlKHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCwgdW5zaWduZWQg d2lkdGgsIGludCBwbGFuZSkKPiArewo+ICsJdW5zaWduZWQgY3BwID0gZm9ybWF0LT5wbGFuZV9i cHBbcGxhbmVdIC8gODsKPiArCj4gKwlpZiAoZm9ybWF0LT5kcm1faWQgPT0gRFJNX0ZPUk1BVF9O VjEyICYmIHBsYW5lID09IDEpCj4gKwkJcmV0dXJuICh3aWR0aCArIDEpIC8gMiAqIGNwcDsKPiAr Cj4gKwlyZXR1cm4gd2lkdGggKiBjcHA7Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBwbGFu YXJfaGVpZ2h0KHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCwgdW5zaWduZWQgaGVp Z2h0LCBpbnQgcGxhbmUpCj4gK3sKPiArCWlmIChmb3JtYXQtPmRybV9pZCA9PSBEUk1fRk9STUFU X05WMTIgJiYgcGxhbmUgPT0gMSkKPiArCQlyZXR1cm4gKGhlaWdodCArIDEpIC8gMjsKPiArCj4g KwlyZXR1cm4gaGVpZ2h0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjYWxjX2ZiX3NpemVfcGxh bmFyKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAo+ICsJCQkJc3RydWN0IGZvcm1hdF9k ZXNjX3N0cnVjdCAqZm9ybWF0LAo+ICsJCQkJdWludDY0X3QgdGlsaW5nLCB1bnNpZ25lZCAqc2l6 ZV9yZXQsCj4gKwkJCQl1bnNpZ25lZCAqc3RyaWRlX3JldCwgdW5zaWduZWQgKm9mZnNldHMpCj4g K3sKPiArCWludCBwbGFuZTsKPiArCXVuc2lnbmVkIHN0cmlkZSA9IDAsIHRpbGVfd2lkdGgsIHRp bGVfaGVpZ2h0Owo+ICsKPiArCSpzaXplX3JldCA9IDA7Cj4gKwo+ICsJZm9yIChwbGFuZSA9IDA7 IHBsYW5lIDwgZm9ybWF0LT5wbGFuZXM7IHBsYW5lKyspIHsKPiArCQl1bnNpZ25lZCBwbGFuZV9z dHJpZGU7Cj4gKwo+ICsJCWlndF9nZXRfZmJfdGlsZV9zaXplKGZkLCB0aWxpbmcsIGZvcm1hdC0+ cGxhbmVfYnBwW3BsYW5lXSwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCk7Cj4gKwo+ICsJCXBs YW5lX3N0cmlkZSA9IEFMSUdOKHBsYW5hcl9zdHJpZGUoZm9ybWF0LCB3aWR0aCwgcGxhbmUpLCB0 aWxlX3dpZHRoKTsKPiArCQlpZiAoc3RyaWRlIDwgcGxhbmVfc3RyaWRlKQo+ICsJCQlzdHJpZGUg PSBwbGFuZV9zdHJpZGU7Cj4gKwl9Cj4gKwo+ICsJZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgZm9y bWF0LT5wbGFuZXM7IHBsYW5lKyspIHsKPiArCQlpZiAob2Zmc2V0cykKPiArCQkJb2Zmc2V0c1tw bGFuZV0gPSAqc2l6ZV9yZXQ7Cj4gKwo+ICsJCWlndF9nZXRfZmJfdGlsZV9zaXplKGZkLCB0aWxp bmcsIGZvcm1hdC0+cGxhbmVfYnBwW3BsYW5lXSwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCk7 Cj4gKwo+ICsJCSpzaXplX3JldCArPSBzdHJpZGUgKiBBTElHTihwbGFuYXJfaGVpZ2h0KGZvcm1h dCwgaGVpZ2h0LCBwbGFuZSksIHRpbGVfaGVpZ2h0KTsKPiArCX0KPiArCj4gKwlpZiAob2Zmc2V0 cykKPiArCQlmb3IgKDsgcGxhbmUgPCA0OyBwbGFuZSsrKQo+ICsJCQlvZmZzZXRzW3BsYW5lXSA9 IDA7Cj4gKwo+ICsJKnN0cmlkZV9yZXQgPSBzdHJpZGU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGNhbGNfZmJfc2l6ZV9wYWNrZWQoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCj4gKwkJ CQlzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsIHVpbnQ2NF90IHRpbGluZywKPiAr CQkJCXVuc2lnbmVkICpzaXplX3JldCwgdW5zaWduZWQgKnN0cmlkZV9yZXQpCj4gIHsKPiAgCXVu c2lnbmVkIGludCB0aWxlX3dpZHRoLCB0aWxlX2hlaWdodCwgc3RyaWRlLCBzaXplOwo+IC0JaW50 IGJwcCA9IGlndF9kcm1fZm9ybWF0X3RvX2JwcChmb3JtYXQpOwo+IC0JaW50IGJ5dGVfd2lkdGgg PSB3aWR0aCAqIChicHAgLyA4KTsKPiArCWludCBieXRlX3dpZHRoID0gd2lkdGggKiAoZm9ybWF0 LT5icHAgLyA4KTsKPiAgCj4gLQlpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShmZCwgdGlsaW5nLCBicHAs ICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQpOwo+ICsJaWd0X2dldF9mYl90aWxlX3NpemUoZmQs IHRpbGluZywgZm9ybWF0LT5icHAsICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQpOwo+ICAKPiAg CWlmICh0aWxpbmcgIT0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSAmJgo+ICAJICAgIGludGVs X2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSkgPD0gMykgewo+IEBAIC0xNzYsNyArMjMzLDcg QEAgdm9pZCBpZ3RfY2FsY19mYl9zaXplKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1 aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IHQKPiAgCQkgKiB0aWxlZC4gQnV0IHRoZW4gdGhhdCBm YWlsdXJlIGlzIGV4cGVjdGVkLgo+ICAJCSAqLwo+ICAKPiAtCQl2ID0gd2lkdGggKiBicHAgLyA4 Owo+ICsJCXYgPSBieXRlX3dpZHRoOwo+ICAJCWZvciAoc3RyaWRlID0gNTEyOyBzdHJpZGUgPCB2 OyBzdHJpZGUgKj0gMikKPiAgCQkJOwo+ICAKPiBAQCAtMTkyLDYgKzI0OSwzMSBAQCB2b2lkIGln dF9jYWxjX2ZiX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90IGZv cm1hdCwgdWludDY0X3QgdAo+ICAJKnNpemVfcmV0ID0gc2l6ZTsKPiAgfQo+ICAKPiArLyoqCj4g KyAqIGlndF9jYWxjX2ZiX3NpemU6Cj4gKyAqIEBmZDogdGhlIERSTSBmaWxlIGRlc2NyaXB0b3IK PiArICogQHdpZHRoOiB3aWR0aCBvZiB0aGUgZnJhbWVidWZmZXIgaW4gcGl4ZWxzCj4gKyAqIEBo ZWlnaHQ6IGhlaWdodCBvZiB0aGUgZnJhbWVidWZmZXIgaW4gcGl4ZWxzCj4gKyAqIEBmb3JtYXQ6 IGRybSBmb3VyY2MgcGl4ZWwgZm9ybWF0IGNvZGUKPiArICogQHRpbGluZzogdGlsaW5nIGxheW91 dCBvZiB0aGUgZnJhbWVidWZmZXIgKGFzIGZyYW1lYnVmZmVyIG1vZGlmaWVyKQo+ICsgKiBAc2l6 ZV9yZXQ6IHJldHVybmVkIHNpemUgZm9yIHRoZSBmcmFtZWJ1ZmZlcgo+ICsgKiBAc3RyaWRlX3Jl dDogcmV0dXJuZWQgc3RyaWRlIGZvciB0aGUgZnJhbWVidWZmZXIKPiArICoKPiArICogVGhpcyBm dW5jdGlvbiByZXR1cm5zIHZhbGlkIHN0cmlkZSBhbmQgc2l6ZSB2YWx1ZXMgZm9yIGEgZnJhbWVi dWZmZXIgd2l0aCB0aGUKPiArICogc3BlY2lmaWVkIHBhcmFtZXRlcnMuCj4gKyAqLwo+ICt2b2lk IGlndF9jYWxjX2ZiX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90 IGRybV9mb3JtYXQsIHVpbnQ2NF90IHRpbGluZywKPiArCQkgICAgICB1bnNpZ25lZCAqc2l6ZV9y ZXQsIHVuc2lnbmVkICpzdHJpZGVfcmV0KQo+ICt7Cj4gKwlzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3Ry dWN0ICpmb3JtYXQgPSBsb29rdXBfZHJtX2Zvcm1hdChkcm1fZm9ybWF0KTsKPiArCWlndF9hc3Nl cnQoZm9ybWF0KTsKPiArCj4gKwlpZiAoZm9ybWF0LT5wbGFuZXMgPiAxKQo+ICsJCWNhbGNfZmJf c2l6ZV9wbGFuYXIoZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGlsaW5nLCBzaXplX3JldCwg c3RyaWRlX3JldCwgTlVMTCk7Cj4gKwllbHNlCj4gKwkJY2FsY19mYl9zaXplX3BhY2tlZChmZCwg d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0aWxpbmcsIHNpemVfcmV0LCBzdHJpZGVfcmV0KTsKPiAr fQo+ICsKPiAgLyoqCj4gICAqIGlndF9mYl9tb2RfdG9fdGlsaW5nOgo+ICAgKiBAbW9kaWZpZXI6 IERSTSBmcmFtZWJ1ZmZlciBtb2RpZmllcgo+IEBAIC0yNDUsMTcgKzMyNywyMCBAQCB1aW50NjRf dCBpZ3RfZmJfdGlsaW5nX3RvX21vZCh1aW50NjRfdCB0aWxpbmcpCj4gIH0KPiAgCj4gIC8qIGhl bHBlcnMgdG8gY3JlYXRlIG5pY2UtbG9va2luZyBmcmFtZWJ1ZmZlcnMgKi8KPiAtc3RhdGljIGlu dCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50MzJf dCBmb3JtYXQsCj4gK3N0YXRpYyBpbnQgY3JlYXRlX2JvX2Zvcl9mYihpbnQgZmQsIGludCB3aWR0 aCwgaW50IGhlaWdodCwKPiArCQkJICAgIHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1h dCwKPiAgCQkJICAgIHVpbnQ2NF90IHRpbGluZywgdW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgc3Ry aWRlLAo+ICAJCQkgICAgdW5zaWduZWQgKnNpemVfcmV0LCB1bnNpZ25lZCAqc3RyaWRlX3JldCwK PiAgCQkJICAgIGJvb2wgKmlzX2R1bWIpCj4gIHsKPiAgCWludCBibzsKPiAgCj4gLQlpZiAodGls aW5nIHx8IHNpemUgfHwgc3RyaWRlKSB7Cj4gKwlpZ3RfYXNzZXJ0KGZvcm1hdCk7Cj4gKwo+ICsJ aWYgKHRpbGluZyB8fCBzaXplIHx8IHN0cmlkZSB8fCBmb3JtYXQtPnBsYW5lcyA+IDEpIHsKPiAg CQl1bnNpZ25lZCBjYWxjdWxhdGVkX3NpemUsIGNhbGN1bGF0ZWRfc3RyaWRlOwo+ICAKPiAtCQlp Z3RfY2FsY19mYl9zaXplKGZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRpbGluZywKPiArCQlp Z3RfY2FsY19mYl9zaXplKGZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQtPmRybV9pZCwgdGlsaW5n LAo+ICAJCQkJICZjYWxjdWxhdGVkX3NpemUsICZjYWxjdWxhdGVkX3N0cmlkZSk7Cj4gIAkJaWYg KHN0cmlkZSA9PSAwKQo+ICAJCQlzdHJpZGUgPSBjYWxjdWxhdGVkX3N0cmlkZTsKPiBAQCAtMjkw LDEyICszNzUsMTAgQEAgc3RhdGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsCj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ ICAJCX0KPiAgCX0gZWxzZSB7Cj4gLQkJaW50IGJwcCA9IGlndF9kcm1fZm9ybWF0X3RvX2JwcChm b3JtYXQpOwo+IC0KPiAgCQlpZiAoaXNfZHVtYikKPiAgCQkJKmlzX2R1bWIgPSB0cnVlOwo+ICAK PiAtCQlyZXR1cm4ga21zdGVzdF9kdW1iX2NyZWF0ZShmZCwgd2lkdGgsIGhlaWdodCwgYnBwLCBz dHJpZGVfcmV0LAo+ICsJCXJldHVybiBrbXN0ZXN0X2R1bWJfY3JlYXRlKGZkLCB3aWR0aCwgaGVp Z2h0LCBmb3JtYXQtPmJwcCwgc3RyaWRlX3JldCwKPiAgCQkJCQkgICBzaXplX3JldCk7Cj4gIAl9 Cj4gIH0KPiBAQCAtMzIzLDggKzQwNiw4IEBAIGludCBpZ3RfY3JlYXRlX2JvX3dpdGhfZGltZW5z aW9ucyhpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKPiAgCQkJCSAgdW5zaWduZWQgc3Ry aWRlLCB1bnNpZ25lZCAqc2l6ZV9yZXQsCj4gIAkJCQkgIHVuc2lnbmVkICpzdHJpZGVfcmV0LCBi b29sICppc19kdW1iKQo+ICB7Cj4gLQlyZXR1cm4gY3JlYXRlX2JvX2Zvcl9mYihmZCwgd2lkdGgs IGhlaWdodCwgZm9ybWF0LCBtb2RpZmllciwgMCwgc3RyaWRlLAo+IC0JCQkgICAgIHNpemVfcmV0 LCBzdHJpZGVfcmV0LCBpc19kdW1iKTsKPiArCXJldHVybiBjcmVhdGVfYm9fZm9yX2ZiKGZkLCB3 aWR0aCwgaGVpZ2h0LCBsb29rdXBfZHJtX2Zvcm1hdChmb3JtYXQpLAo+ICsJCQkJbW9kaWZpZXIs IDAsIHN0cmlkZSwgc2l6ZV9yZXQsIHN0cmlkZV9yZXQsIGlzX2R1bWIpOwo+ICB9Cj4gIAo+ICAv KioKPiBAQCAtNjcxLDkgKzc1NCwxMCBAQCBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZShpbnQg ZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKPiAgCj4gIAlpZ3RfZGVidWcoIiVzKHdpZHRoPSVk LCBoZWlnaHQ9JWQsIGZvcm1hdD0weCV4LCB0aWxpbmc9MHglIlBSSXg2NCIsIHNpemU9JWQpXG4i LAo+ICAJCSAgX19mdW5jX18sIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGlsaW5nLCBib19zaXpl KTsKPiAtCWZiLT5nZW1faGFuZGxlID0gY3JlYXRlX2JvX2Zvcl9mYihmZCwgd2lkdGgsIGhlaWdo dCwgZm9ybWF0LCB0aWxpbmcsCj4gLQkJCQkJICBib19zaXplLCBib19zdHJpZGUsICZmYi0+c2l6 ZSwKPiAtCQkJCQkgICZmYi0+c3RyaWRlLCAmZmItPmlzX2R1bWIpOwo+ICsJZmItPmdlbV9oYW5k bGUgPSBjcmVhdGVfYm9fZm9yX2ZiKGZkLCB3aWR0aCwgaGVpZ2h0LAo+ICsJCQkJCSAgbG9va3Vw X2RybV9mb3JtYXQoZm9ybWF0KSwKPiArCQkJCQkgIHRpbGluZywgYm9fc2l6ZSwgYm9fc3RyaWRl LAo+ICsJCQkJCSAgJmZiLT5zaXplLCAmZmItPnN0cmlkZSwgJmZiLT5pc19kdW1iKTsKPiAgCWln dF9hc3NlcnQoZmItPmdlbV9oYW5kbGUgPiAwKTsKPiAgCj4gIAlpZ3RfZGVidWcoIiVzKGhhbmRs ZT0lZCwgcGl0Y2g9JWQpXG4iLAo+IEBAIC0xMDY5LDcgKzExNTMsNyBAQCBzdGF0aWMgdm9pZCBj cmVhdGVfY2Fpcm9fc3VyZmFjZV9fYmxpdChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAJ ICogZGVzdGluYXRpb24sIHRpbGluZyBpdCBhdCB0aGUgc2FtZSB0aW1lLgo+ICAJICovCj4gIAli bGl0LT5saW5lYXIuaGFuZGxlID0gY3JlYXRlX2JvX2Zvcl9mYihmZCwgZmItPndpZHRoLCBmYi0+ aGVpZ2h0LAo+IC0JCQkJCSAgICAgICBmYi0+ZHJtX2Zvcm1hdCwKPiArCQkJCQkgICAgICAgbG9v a3VwX2RybV9mb3JtYXQoZmItPmRybV9mb3JtYXQpLAo+ICAJCQkJCSAgICAgICBMT0NBTF9EUk1f Rk9STUFUX01PRF9OT05FLCAwLAo+ICAJCQkJCSAgICAgICAwLCAmYmxpdC0+bGluZWFyLnNpemUs Cj4gIAkJCQkJICAgICAgICZibGl0LT5saW5lYXIuc3RyaWRlLAo+IEBAIC0xMjkzLDE0ICsxMzc3 LDEyIEBAIHVpbnQzMl90IGlndF9icHBfZGVwdGhfdG9fZHJtX2Zvcm1hdChpbnQgYnBwLCBpbnQg ZGVwdGgpCj4gICAqLwo+ICB1aW50MzJfdCBpZ3RfZHJtX2Zvcm1hdF90b19icHAodWludDMyX3Qg ZHJtX2Zvcm1hdCkKPiAgewo+IC0Jc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZjsKPiArCXN0 cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zvcm1hdChkcm1fZm9ybWF0 KTsKPiAgCj4gLQlmb3JfZWFjaF9mb3JtYXQoZikKPiAtCQlpZiAoZi0+ZHJtX2lkID09IGRybV9m b3JtYXQpCj4gLQkJCXJldHVybiBmLT5icHA7Cj4gLQo+IC0JaWd0X2Fzc2VydF9mKDAsICJjYW4n dCBmaW5kIGEgYnBwIGZvcm1hdCBmb3IgJTA4eCAoJXMpXG4iLAo+ICsJaWd0X2Fzc2VydF9mKGYs ICJjYW4ndCBmaW5kIGEgYnBwIGZvcm1hdCBmb3IgJTA4eCAoJXMpXG4iLAo+ICAJCSAgICAgZHJt X2Zvcm1hdCwgaWd0X2Zvcm1hdF9zdHIoZHJtX2Zvcm1hdCkpOwo+ICsKPiArCXJldHVybiBmLT5i cHA7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xMzEzLDEzICsxMzk1LDkgQEAgdWludDMyX3QgaWd0 X2RybV9mb3JtYXRfdG9fYnBwKHVpbnQzMl90IGRybV9mb3JtYXQpCj4gICAqLwo+ICBjb25zdCBj aGFyICppZ3RfZm9ybWF0X3N0cih1aW50MzJfdCBkcm1fZm9ybWF0KQo+ICB7Cj4gLQlzdHJ1Y3Qg Zm9ybWF0X2Rlc2Nfc3RydWN0ICpmOwo+IC0KPiAtCWZvcl9lYWNoX2Zvcm1hdChmKQo+IC0JCWlm IChmLT5kcm1faWQgPT0gZHJtX2Zvcm1hdCkKPiAtCQkJcmV0dXJuIGYtPm5hbWU7Cj4gKwlzdHJ1 Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmID0gbG9va3VwX2RybV9mb3JtYXQoZHJtX2Zvcm1hdCk7 Cj4gIAo+IC0JcmV0dXJuICJpbnZhbGlkIjsKPiArCXJldHVybiBmID8gZi0+bmFtZSA6ICJpbnZh bGlkIjsKPiAgfQo+ICAKPiAgLyoqCj4gLS0gCj4gMi4xNS4xCj4gCj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBpZ3QtZGV2IG1haWxpbmcgbGlzdAo+ IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVs IE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK