From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id EC8E46E386 for ; Tue, 23 Jan 2018 12:56:54 +0000 (UTC) From: Maarten Lankhorst Date: Tue, 23 Jan 2018 13:56:37 +0100 Message-Id: <20180123125642.58698-4-maarten.lankhorst@linux.intel.com> In-Reply-To: <20180123125642.58698-1-maarten.lankhorst@linux.intel.com> References: <20180123125642.58698-1-maarten.lankhorst@linux.intel.com> Subject: [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: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: QnkgYWRkaW5nIHN1cHBvcnQgZm9yIHBsYW5hciBmb3JtYXRzIHRvIGlndF9jYWxjX2ZiX3NpemUg YW5kIGNyZWF0ZV9ib19mb3JfZmIsCndlIGNhbiBjYWxjdWxhdGUgZGltZW5zaW9ucyBhbmQgY3Jl YXRlIGJhY2tpbmcgc3RvcmFnZSBmb3IgcGxhbmFyIGZyYW1lYnVmZmVycy4KClRoaXMgaXMgcmVx dWlyZWQgZm9yIGFkZGluZyBzdXBwb3J0IHRvIGNyZWF0ZSBwbGFuYXIgZnJhbWVidWZmZXJzIGlu IHRoZSBuZXh0IHBhdGNoLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ZiLmMgfCAxNjggKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCmluZGV4IGRhMDdkMWE5ZTIxZi4u NmEzMzFmMDY3MjRiIDEwMDY0NAotLS0gYS9saWIvaWd0X2ZiLmMKKysrIGIvbGliL2lndF9mYi5j CkBAIC01NCwxNCArNTQsMTYgQEAKICAqLwogCiAvKiBkcm0gZm91cmNjL2NhaXJvIGZvcm1hdCBt YXBzICovCi0jZGVmaW5lIERGKGRpZCwgY2lkLCBfYnBwLCBfZGVwdGgpCVwKLQl7IERSTV9GT1JN QVRfIyNkaWQsIENBSVJPX0ZPUk1BVF8jI2NpZCwgIyBkaWQsIF9icHAsIF9kZXB0aCB9CisjZGVm aW5lIERGKGRpZCwgY2lkLCAuLi4pCVwKKwl7IERSTV9GT1JNQVRfIyNkaWQsIENBSVJPX0ZPUk1B VF8jI2NpZCwgIyBkaWQsIF9fVkFfQVJHU19fIH0KIHN0YXRpYyBzdHJ1Y3QgZm9ybWF0X2Rlc2Nf c3RydWN0IHsKIAl1aW50MzJfdCBkcm1faWQ7CiAJY2Fpcm9fZm9ybWF0X3QgY2Fpcm9faWQ7CiAJ Y29uc3QgY2hhciAqbmFtZTsKIAlpbnQgYnBwOwogCWludCBkZXB0aDsKKwlpbnQgcGxhbmVzOwor CWludCBwbGFuZV9icHBbNF07CiB9IGZvcm1hdF9kZXNjW10gPSB7CiAJREYoUkdCNTY1LAlSR0Ix Nl81NjUsCTE2LCAxNiksCiAJLy9ERihSR0I4ODgsCUlOVkFMSUQsCTI0LCAyNCksCkBAIC03NCw2 ICs3NiwyMCBAQCBzdGF0aWMgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7CiAjZGVmaW5lIGZv cl9lYWNoX2Zvcm1hdChmKQlcCiAJZm9yIChmID0gZm9ybWF0X2Rlc2M7IGYgLSBmb3JtYXRfZGVz YyA8IEFSUkFZX1NJWkUoZm9ybWF0X2Rlc2MpOyBmKyspCiAKK3N0YXRpYyBzdHJ1Y3QgZm9ybWF0 X2Rlc2Nfc3RydWN0ICpsb29rdXBfZHJtX2Zvcm1hdCh1aW50MzJfdCBkcm1fZm9ybWF0KQorewor CXN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdDsKKworCWZvcl9lYWNoX2Zvcm1hdChm b3JtYXQpIHsKKwkJaWYgKGZvcm1hdC0+ZHJtX2lkICE9IGRybV9mb3JtYXQpCisJCQljb250aW51 ZTsKKworCQlyZXR1cm4gZm9ybWF0OworCX0KKworCXJldHVybiBOVUxMOworfQorCiAvKioKICAq IGlndF9nZXRfZmJfdGlsZV9zaXplOgogICogQGZkOiB0aGUgRFJNIGZpbGUgZGVzY3JpcHRvcgpA QCAtMTQyLDI3ICsxNTgsNjggQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVp bnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKIAl9CiB9CiAKLS8qKgotICogaWd0X2NhbGNfZmJf c2l6ZToKLSAqIEBmZDogdGhlIERSTSBmaWxlIGRlc2NyaXB0b3IKLSAqIEB3aWR0aDogd2lkdGgg b2YgdGhlIGZyYW1lYnVmZmVyIGluIHBpeGVscwotICogQGhlaWdodDogaGVpZ2h0IG9mIHRoZSBm cmFtZWJ1ZmZlciBpbiBwaXhlbHMKLSAqIEBmb3JtYXQ6IGRybSBmb3VyY2MgcGl4ZWwgZm9ybWF0 IGNvZGUKLSAqIEB0aWxpbmc6IHRpbGluZyBsYXlvdXQgb2YgdGhlIGZyYW1lYnVmZmVyIChhcyBm cmFtZWJ1ZmZlciBtb2RpZmllcikKLSAqIEBzaXplX3JldDogcmV0dXJuZWQgc2l6ZSBmb3IgdGhl IGZyYW1lYnVmZmVyCi0gKiBAc3RyaWRlX3JldDogcmV0dXJuZWQgc3RyaWRlIGZvciB0aGUgZnJh bWVidWZmZXIKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdmFsaWQgc3RyaWRlIGFuZCBz aXplIHZhbHVlcyBmb3IgYSBmcmFtZWJ1ZmZlciB3aXRoIHRoZQotICogc3BlY2lmaWVkIHBhcmFt ZXRlcnMuCi0gKi8KLXZvaWQgaWd0X2NhbGNfZmJfc2l6ZShpbnQgZmQsIGludCB3aWR0aCwgaW50 IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCB0aWxpbmcsCi0JCSAgICAgIHVuc2ln bmVkICpzaXplX3JldCwgdW5zaWduZWQgKnN0cmlkZV9yZXQpCitzdGF0aWMgdW5zaWduZWQgcGxh bmFyX3N0cmlkZShzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsIHVuc2lnbmVkIHdp ZHRoLCBpbnQgcGxhbmUpCit7CisJdW5zaWduZWQgY3BwID0gZm9ybWF0LT5wbGFuZV9icHBbcGxh bmVdIC8gODsKKworCWlmIChmb3JtYXQtPmRybV9pZCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxh bmUgPT0gMSkKKwkJcmV0dXJuICh3aWR0aCArIDEpIC8gMiAqIGNwcDsKKworCXJldHVybiB3aWR0 aCAqIGNwcDsKK30KKworc3RhdGljIHVuc2lnbmVkIHBsYW5hcl9oZWlnaHQoc3RydWN0IGZvcm1h dF9kZXNjX3N0cnVjdCAqZm9ybWF0LCB1bnNpZ25lZCBoZWlnaHQsIGludCBwbGFuZSkKK3sKKwlp ZiAoZm9ybWF0LT5kcm1faWQgPT0gRFJNX0ZPUk1BVF9OVjEyICYmIHBsYW5lID09IDEpCisJCXJl dHVybiAoaGVpZ2h0ICsgMSkgLyAyOworCisJcmV0dXJuIGhlaWdodDsKK30KKworc3RhdGljIHZv aWQgY2FsY19mYl9zaXplX3BsYW5hcihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJ CQlzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsCisJCQkJdWludDY0X3QgdGlsaW5n LCB1bnNpZ25lZCAqc2l6ZV9yZXQsCisJCQkJdW5zaWduZWQgKnN0cmlkZV9yZXQsIHVuc2lnbmVk ICpvZmZzZXRzKQoreworCWludCBwbGFuZTsKKwl1bnNpZ25lZCBzdHJpZGUgPSAwLCB0aWxlX3dp ZHRoLCB0aWxlX2hlaWdodDsKKworCSpzaXplX3JldCA9IDA7CisKKwlmb3IgKHBsYW5lID0gMDsg cGxhbmUgPCBmb3JtYXQtPnBsYW5lczsgcGxhbmUrKykgeworCQl1bnNpZ25lZCBwbGFuZV9zdHJp ZGU7CisKKwkJaWd0X2dldF9mYl90aWxlX3NpemUoZmQsIHRpbGluZywgZm9ybWF0LT5wbGFuZV9i cHBbcGxhbmVdLCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0KTsKKworCQlwbGFuZV9zdHJpZGUg PSBBTElHTihwbGFuYXJfc3RyaWRlKGZvcm1hdCwgd2lkdGgsIHBsYW5lKSwgdGlsZV93aWR0aCk7 CisJCWlmIChzdHJpZGUgPCBwbGFuZV9zdHJpZGUpCisJCQlzdHJpZGUgPSBwbGFuZV9zdHJpZGU7 CisJfQorCisJZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgZm9ybWF0LT5wbGFuZXM7IHBsYW5lKysp IHsKKwkJaWYgKG9mZnNldHMpCisJCQlvZmZzZXRzW3BsYW5lXSA9ICpzaXplX3JldDsKKworCQlp Z3RfZ2V0X2ZiX3RpbGVfc2l6ZShmZCwgdGlsaW5nLCBmb3JtYXQtPnBsYW5lX2JwcFtwbGFuZV0s ICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQpOworCisJCSpzaXplX3JldCArPSBzdHJpZGUgKiBB TElHTihwbGFuYXJfaGVpZ2h0KGZvcm1hdCwgaGVpZ2h0LCBwbGFuZSksIHRpbGVfaGVpZ2h0KTsK Kwl9CisKKwlpZiAob2Zmc2V0cykKKwkJZm9yICg7IHBsYW5lIDwgNDsgcGxhbmUrKykKKwkJCW9m ZnNldHNbcGxhbmVdID0gMDsKKworCSpzdHJpZGVfcmV0ID0gc3RyaWRlOworfQorCitzdGF0aWMg dm9pZCBjYWxjX2ZiX3NpemVfcGFja2VkKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAor CQkJCXN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCwgdWludDY0X3QgdGlsaW5nLAor CQkJCXVuc2lnbmVkICpzaXplX3JldCwgdW5zaWduZWQgKnN0cmlkZV9yZXQpCiB7CiAJdW5zaWdu ZWQgaW50IHRpbGVfd2lkdGgsIHRpbGVfaGVpZ2h0LCBzdHJpZGUsIHNpemU7Ci0JaW50IGJwcCA9 IGlndF9kcm1fZm9ybWF0X3RvX2JwcChmb3JtYXQpOwotCWludCBieXRlX3dpZHRoID0gd2lkdGgg KiAoYnBwIC8gOCk7CisJaW50IGJ5dGVfd2lkdGggPSB3aWR0aCAqIChmb3JtYXQtPmJwcCAvIDgp OwogCi0JaWd0X2dldF9mYl90aWxlX3NpemUoZmQsIHRpbGluZywgYnBwLCAmdGlsZV93aWR0aCwg JnRpbGVfaGVpZ2h0KTsKKwlpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShmZCwgdGlsaW5nLCBmb3JtYXQt PmJwcCwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCk7CiAKIAlpZiAodGlsaW5nICE9IExPQ0FM X0RSTV9GT1JNQVRfTU9EX05PTkUgJiYKIAkgICAgaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2 aWQoZmQpKSA8PSAzKSB7CkBAIC0xNzYsNyArMjMzLDcgQEAgdm9pZCBpZ3RfY2FsY19mYl9zaXpl KGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90 IHQKIAkJICogdGlsZWQuIEJ1dCB0aGVuIHRoYXQgZmFpbHVyZSBpcyBleHBlY3RlZC4KIAkJICov CiAKLQkJdiA9IHdpZHRoICogYnBwIC8gODsKKwkJdiA9IGJ5dGVfd2lkdGg7CiAJCWZvciAoc3Ry aWRlID0gNTEyOyBzdHJpZGUgPCB2OyBzdHJpZGUgKj0gMikKIAkJCTsKIApAQCAtMTkyLDYgKzI0 OSwzMSBAQCB2b2lkIGlndF9jYWxjX2ZiX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWln aHQsIHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgdAogCSpzaXplX3JldCA9IHNpemU7CiB9CiAK Ky8qKgorICogaWd0X2NhbGNfZmJfc2l6ZToKKyAqIEBmZDogdGhlIERSTSBmaWxlIGRlc2NyaXB0 b3IKKyAqIEB3aWR0aDogd2lkdGggb2YgdGhlIGZyYW1lYnVmZmVyIGluIHBpeGVscworICogQGhl aWdodDogaGVpZ2h0IG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbHMKKyAqIEBmb3JtYXQ6IGRy bSBmb3VyY2MgcGl4ZWwgZm9ybWF0IGNvZGUKKyAqIEB0aWxpbmc6IHRpbGluZyBsYXlvdXQgb2Yg dGhlIGZyYW1lYnVmZmVyIChhcyBmcmFtZWJ1ZmZlciBtb2RpZmllcikKKyAqIEBzaXplX3JldDog cmV0dXJuZWQgc2l6ZSBmb3IgdGhlIGZyYW1lYnVmZmVyCisgKiBAc3RyaWRlX3JldDogcmV0dXJu ZWQgc3RyaWRlIGZvciB0aGUgZnJhbWVidWZmZXIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVy bnMgdmFsaWQgc3RyaWRlIGFuZCBzaXplIHZhbHVlcyBmb3IgYSBmcmFtZWJ1ZmZlciB3aXRoIHRo ZQorICogc3BlY2lmaWVkIHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQgaWd0X2NhbGNfZmJfc2l6ZShp bnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgZHJtX2Zvcm1hdCwgdWludDY0 X3QgdGlsaW5nLAorCQkgICAgICB1bnNpZ25lZCAqc2l6ZV9yZXQsIHVuc2lnbmVkICpzdHJpZGVf cmV0KQoreworCXN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCA9IGxvb2t1cF9kcm1f Zm9ybWF0KGRybV9mb3JtYXQpOworCWlndF9hc3NlcnQoZm9ybWF0KTsKKworCWlmIChmb3JtYXQt PnBsYW5lcyA+IDEpCisJCWNhbGNfZmJfc2l6ZV9wbGFuYXIoZmQsIHdpZHRoLCBoZWlnaHQsIGZv cm1hdCwgdGlsaW5nLCBzaXplX3JldCwgc3RyaWRlX3JldCwgTlVMTCk7CisJZWxzZQorCQljYWxj X2ZiX3NpemVfcGFja2VkKGZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRpbGluZywgc2l6ZV9y ZXQsIHN0cmlkZV9yZXQpOworfQorCiAvKioKICAqIGlndF9mYl9tb2RfdG9fdGlsaW5nOgogICog QG1vZGlmaWVyOiBEUk0gZnJhbWVidWZmZXIgbW9kaWZpZXIKQEAgLTI0NSwxNyArMzI3LDIwIEBA IHVpbnQ2NF90IGlndF9mYl90aWxpbmdfdG9fbW9kKHVpbnQ2NF90IHRpbGluZykKIH0KIAogLyog aGVscGVycyB0byBjcmVhdGUgbmljZS1sb29raW5nIGZyYW1lYnVmZmVycyAqLwotc3RhdGljIGlu dCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50MzJf dCBmb3JtYXQsCitzdGF0aWMgaW50IGNyZWF0ZV9ib19mb3JfZmIoaW50IGZkLCBpbnQgd2lkdGgs IGludCBoZWlnaHQsCisJCQkgICAgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZm9ybWF0LAog CQkJICAgIHVpbnQ2NF90IHRpbGluZywgdW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgc3RyaWRlLAog CQkJICAgIHVuc2lnbmVkICpzaXplX3JldCwgdW5zaWduZWQgKnN0cmlkZV9yZXQsCiAJCQkgICAg Ym9vbCAqaXNfZHVtYikKIHsKIAlpbnQgYm87CiAKLQlpZiAodGlsaW5nIHx8IHNpemUgfHwgc3Ry aWRlKSB7CisJaWd0X2Fzc2VydChmb3JtYXQpOworCisJaWYgKHRpbGluZyB8fCBzaXplIHx8IHN0 cmlkZSB8fCBmb3JtYXQtPnBsYW5lcyA+IDEpIHsKIAkJdW5zaWduZWQgY2FsY3VsYXRlZF9zaXpl LCBjYWxjdWxhdGVkX3N0cmlkZTsKIAotCQlpZ3RfY2FsY19mYl9zaXplKGZkLCB3aWR0aCwgaGVp Z2h0LCBmb3JtYXQsIHRpbGluZywKKwkJaWd0X2NhbGNfZmJfc2l6ZShmZCwgd2lkdGgsIGhlaWdo dCwgZm9ybWF0LT5kcm1faWQsIHRpbGluZywKIAkJCQkgJmNhbGN1bGF0ZWRfc2l6ZSwgJmNhbGN1 bGF0ZWRfc3RyaWRlKTsKIAkJaWYgKHN0cmlkZSA9PSAwKQogCQkJc3RyaWRlID0gY2FsY3VsYXRl ZF9zdHJpZGU7CkBAIC0yOTAsMTIgKzM3NSwxMCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9ib19mb3Jf ZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwKIAkJCXJl dHVybiAtRUlOVkFMOwogCQl9CiAJfSBlbHNlIHsKLQkJaW50IGJwcCA9IGlndF9kcm1fZm9ybWF0 X3RvX2JwcChmb3JtYXQpOwotCiAJCWlmIChpc19kdW1iKQogCQkJKmlzX2R1bWIgPSB0cnVlOwog Ci0JCXJldHVybiBrbXN0ZXN0X2R1bWJfY3JlYXRlKGZkLCB3aWR0aCwgaGVpZ2h0LCBicHAsIHN0 cmlkZV9yZXQsCisJCXJldHVybiBrbXN0ZXN0X2R1bWJfY3JlYXRlKGZkLCB3aWR0aCwgaGVpZ2h0 LCBmb3JtYXQtPmJwcCwgc3RyaWRlX3JldCwKIAkJCQkJICAgc2l6ZV9yZXQpOwogCX0KIH0KQEAg LTMyMyw4ICs0MDYsOCBAQCBpbnQgaWd0X2NyZWF0ZV9ib193aXRoX2RpbWVuc2lvbnMoaW50IGZk LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAJCQkJICB1bnNpZ25lZCBzdHJpZGUsIHVuc2lnbmVk ICpzaXplX3JldCwKIAkJCQkgIHVuc2lnbmVkICpzdHJpZGVfcmV0LCBib29sICppc19kdW1iKQog ewotCXJldHVybiBjcmVhdGVfYm9fZm9yX2ZiKGZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIG1v ZGlmaWVyLCAwLCBzdHJpZGUsCi0JCQkgICAgIHNpemVfcmV0LCBzdHJpZGVfcmV0LCBpc19kdW1i KTsKKwlyZXR1cm4gY3JlYXRlX2JvX2Zvcl9mYihmZCwgd2lkdGgsIGhlaWdodCwgbG9va3VwX2Ry bV9mb3JtYXQoZm9ybWF0KSwKKwkJCQltb2RpZmllciwgMCwgc3RyaWRlLCBzaXplX3JldCwgc3Ry aWRlX3JldCwgaXNfZHVtYik7CiB9CiAKIC8qKgpAQCAtNjcxLDkgKzc1NCwxMCBAQCBpZ3RfY3Jl YXRlX2ZiX3dpdGhfYm9fc2l6ZShpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKIAogCWln dF9kZWJ1ZygiJXMod2lkdGg9JWQsIGhlaWdodD0lZCwgZm9ybWF0PTB4JXgsIHRpbGluZz0weCUi UFJJeDY0Iiwgc2l6ZT0lZClcbiIsCiAJCSAgX19mdW5jX18sIHdpZHRoLCBoZWlnaHQsIGZvcm1h dCwgdGlsaW5nLCBib19zaXplKTsKLQlmYi0+Z2VtX2hhbmRsZSA9IGNyZWF0ZV9ib19mb3JfZmIo ZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGlsaW5nLAotCQkJCQkgIGJvX3NpemUsIGJvX3N0 cmlkZSwgJmZiLT5zaXplLAotCQkJCQkgICZmYi0+c3RyaWRlLCAmZmItPmlzX2R1bWIpOworCWZi LT5nZW1faGFuZGxlID0gY3JlYXRlX2JvX2Zvcl9mYihmZCwgd2lkdGgsIGhlaWdodCwKKwkJCQkJ ICBsb29rdXBfZHJtX2Zvcm1hdChmb3JtYXQpLAorCQkJCQkgIHRpbGluZywgYm9fc2l6ZSwgYm9f c3RyaWRlLAorCQkJCQkgICZmYi0+c2l6ZSwgJmZiLT5zdHJpZGUsICZmYi0+aXNfZHVtYik7CiAJ aWd0X2Fzc2VydChmYi0+Z2VtX2hhbmRsZSA+IDApOwogCiAJaWd0X2RlYnVnKCIlcyhoYW5kbGU9 JWQsIHBpdGNoPSVkKVxuIiwKQEAgLTEwNjksNyArMTE1Myw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0 ZV9jYWlyb19zdXJmYWNlX19ibGl0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJICogZGVz dGluYXRpb24sIHRpbGluZyBpdCBhdCB0aGUgc2FtZSB0aW1lLgogCSAqLwogCWJsaXQtPmxpbmVh ci5oYW5kbGUgPSBjcmVhdGVfYm9fZm9yX2ZiKGZkLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCi0J CQkJCSAgICAgICBmYi0+ZHJtX2Zvcm1hdCwKKwkJCQkJICAgICAgIGxvb2t1cF9kcm1fZm9ybWF0 KGZiLT5kcm1fZm9ybWF0KSwKIAkJCQkJICAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUs IDAsCiAJCQkJCSAgICAgICAwLCAmYmxpdC0+bGluZWFyLnNpemUsCiAJCQkJCSAgICAgICAmYmxp dC0+bGluZWFyLnN0cmlkZSwKQEAgLTEyOTMsMTQgKzEzNzcsMTIgQEAgdWludDMyX3QgaWd0X2Jw cF9kZXB0aF90b19kcm1fZm9ybWF0KGludCBicHAsIGludCBkZXB0aCkKICAqLwogdWludDMyX3Qg aWd0X2RybV9mb3JtYXRfdG9fYnBwKHVpbnQzMl90IGRybV9mb3JtYXQpCiB7Ci0Jc3RydWN0IGZv cm1hdF9kZXNjX3N0cnVjdCAqZjsKKwlzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmID0gbG9v a3VwX2RybV9mb3JtYXQoZHJtX2Zvcm1hdCk7CiAKLQlmb3JfZWFjaF9mb3JtYXQoZikKLQkJaWYg KGYtPmRybV9pZCA9PSBkcm1fZm9ybWF0KQotCQkJcmV0dXJuIGYtPmJwcDsKLQotCWlndF9hc3Nl cnRfZigwLCAiY2FuJ3QgZmluZCBhIGJwcCBmb3JtYXQgZm9yICUwOHggKCVzKVxuIiwKKwlpZ3Rf YXNzZXJ0X2YoZiwgImNhbid0IGZpbmQgYSBicHAgZm9ybWF0IGZvciAlMDh4ICglcylcbiIsCiAJ CSAgICAgZHJtX2Zvcm1hdCwgaWd0X2Zvcm1hdF9zdHIoZHJtX2Zvcm1hdCkpOworCisJcmV0dXJu IGYtPmJwcDsKIH0KIAogLyoqCkBAIC0xMzEzLDEzICsxMzk1LDkgQEAgdWludDMyX3QgaWd0X2Ry bV9mb3JtYXRfdG9fYnBwKHVpbnQzMl90IGRybV9mb3JtYXQpCiAgKi8KIGNvbnN0IGNoYXIgKmln dF9mb3JtYXRfc3RyKHVpbnQzMl90IGRybV9mb3JtYXQpCiB7Ci0Jc3RydWN0IGZvcm1hdF9kZXNj X3N0cnVjdCAqZjsKLQotCWZvcl9lYWNoX2Zvcm1hdChmKQotCQlpZiAoZi0+ZHJtX2lkID09IGRy bV9mb3JtYXQpCi0JCQlyZXR1cm4gZi0+bmFtZTsKKwlzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0 ICpmID0gbG9va3VwX2RybV9mb3JtYXQoZHJtX2Zvcm1hdCk7CiAKLQlyZXR1cm4gImludmFsaWQi OworCXJldHVybiBmID8gZi0+bmFtZSA6ICJpbnZhbGlkIjsKIH0KIAogLyoqCi0tIAoyLjE1LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYg bWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=