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 6014E6E5A5 for ; Wed, 24 Jan 2018 10:53:45 +0000 (UTC) From: Maarten Lankhorst Date: Wed, 24 Jan 2018 11:53:42 +0100 Message-Id: <20180124105342.45025-1-maarten.lankhorst@linux.intel.com> In-Reply-To: <20180123145028.72938-1-maarten.lankhorst@linux.intel.com> References: <20180123145028.72938-1-maarten.lankhorst@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t] lib/fb: Add support for creating planar framebuffers, v3. 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: QWRkIHN1cHBvcnQgdG8gY3JlYXRlIHBsYW5hciBmcmFtZWJ1ZmZlcnMsIGJ1dCBkb24ndCBhZGQg Zm9ybWF0cwp0aGF0IHN1cHBvcnQgdGhlbSB5ZXQuIFRoaXMgZmlyc3QgcmVxdWlyZXMgY29udmVy c2lvbiB0byB0aGUgUkdCMjQgZm9ybWF0LgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBEb24ndCBjcmFz aCBpbiBpZ3RfY3JlYXRlX2JvX3dpdGhfZGltZW5zaW9ucygpLgpDaGFuZ2VzIHNpbmNlIHYyOgot IFplcm8gb2Zmc2V0cyBmb3IgZHVtYiBmYiB0b28uCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExh bmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGxpYi9pZ3Rf ZmIuYyAgICAgICAgICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQogbGliL2lndF9mYi5oICAgICAgICAgICAgIHwgMTAgKysrKysrKwogbGli L2lvY3RsX3dyYXBwZXJzLmMgICAgIHwgMTEgKysrKystLQogbGliL2lvY3RsX3dyYXBwZXJzLmgg ICAgIHwgIDIgKy0KIHRlc3RzL2ttc19kcmF3X2NyYy5jICAgICB8ICAyICstCiB0ZXN0cy9rbXNf cm90YXRpb25fY3JjLmMgfCAgNSArKy0tCiB0ZXN0cy9wcmltZV92Z2VtLmMgICAgICAgfCAgMiAr LQogNyBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMKaW5kZXggMTI1MWY0NjJkMjRl Li45ZDYwMjgwZjE5OGUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZmIuYworKysgYi9saWIvaWd0X2Zi LmMKQEAgLTE1OCwxNCArMTU4LDE5IEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZk LCB1aW50NjRfdCB0aWxpbmcsIGludCBmYl9icHAsCiAJfQogfQogCitzdGF0aWMgdW5zaWduZWQg cGxhbmFyX3dpZHRoKHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCwgdW5zaWduZWQg d2lkdGgsIGludCBwbGFuZSkKK3sKKwlpZiAoZm9ybWF0LT5kcm1faWQgPT0gRFJNX0ZPUk1BVF9O VjEyICYmIHBsYW5lID09IDEpCisJCXJldHVybiAod2lkdGggKyAxKSAvIDI7CisKKwlyZXR1cm4g d2lkdGg7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBwbGFuYXJfc3RyaWRlKHN0cnVjdCBmb3JtYXRf ZGVzY19zdHJ1Y3QgKmZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIGludCBwbGFuZSkKIHsKIAl1bnNp Z25lZCBjcHAgPSBmb3JtYXQtPnBsYW5lX2JwcFtwbGFuZV0gLyA4OwogCi0JaWYgKGZvcm1hdC0+ ZHJtX2lkID09IERSTV9GT1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQotCQlyZXR1cm4gKHdpZHRo ICsgMSkgLyAyICogY3BwOwotCi0JcmV0dXJuIHdpZHRoICogY3BwOworCXJldHVybiBwbGFuYXJf d2lkdGgoZm9ybWF0LCB3aWR0aCwgcGxhbmUpICogY3BwOwogfQogCiBzdGF0aWMgdW5zaWduZWQg cGxhbmFyX2hlaWdodChzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsIHVuc2lnbmVk IGhlaWdodCwgaW50IHBsYW5lKQpAQCAtMzMxLDE3ICszMzYsMjUgQEAgc3RhdGljIGludCBjcmVh dGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogCQkJICAgIHN0cnVj dCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCwKIAkJCSAgICB1aW50NjRfdCB0aWxpbmcsIHVu c2lnbmVkIHNpemUsIHVuc2lnbmVkIHN0cmlkZSwKIAkJCSAgICB1bnNpZ25lZCAqc2l6ZV9yZXQs IHVuc2lnbmVkICpzdHJpZGVfcmV0LAotCQkJICAgIGJvb2wgKmlzX2R1bWIpCisJCQkgICAgdWlu dDMyX3QgKm9mZnNldHMsIGJvb2wgKmlzX2R1bWIpCiB7CiAJaW50IGJvOwogCiAJaWd0X2Fzc2Vy dChmb3JtYXQpOwogCisJaWYgKG9mZnNldHMpCisJCW1lbXNldChvZmZzZXRzLCAwLCA0ICogc2l6 ZW9mKCpvZmZzZXRzKSk7CisKIAlpZiAodGlsaW5nIHx8IHNpemUgfHwgc3RyaWRlIHx8IGZvcm1h dC0+cGxhbmVzID4gMSkgewogCQl1bnNpZ25lZCBjYWxjdWxhdGVkX3NpemUsIGNhbGN1bGF0ZWRf c3RyaWRlOwogCi0JCWlndF9jYWxjX2ZiX3NpemUoZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdC0+ ZHJtX2lkLCB0aWxpbmcsCi0JCQkJICZjYWxjdWxhdGVkX3NpemUsICZjYWxjdWxhdGVkX3N0cmlk ZSk7CisJCWlmIChmb3JtYXQtPnBsYW5lcyA+IDEpCisJCQljYWxjX2ZiX3NpemVfcGxhbmFyKGZk LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRpbGluZywKKwkJCQkJICAgICZjYWxjdWxhdGVkX3Np emUsICZjYWxjdWxhdGVkX3N0cmlkZSwgb2Zmc2V0cyk7CisJCWVsc2UKKwkJCWNhbGNfZmJfc2l6 ZV9wYWNrZWQoZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGlsaW5nLAorCQkJCQkgICAgJmNh bGN1bGF0ZWRfc2l6ZSwgJmNhbGN1bGF0ZWRfc3RyaWRlKTsKKwogCQlpZiAoc3RyaWRlID09IDAp CiAJCQlzdHJpZGUgPSBjYWxjdWxhdGVkX3N0cmlkZTsKIAkJaWYgKHNpemUgPT0gMCkKQEAgLTQw Nyw3ICs0MjAsNyBAQCBpbnQgaWd0X2NyZWF0ZV9ib193aXRoX2RpbWVuc2lvbnMoaW50IGZkLCBp bnQgd2lkdGgsIGludCBoZWlnaHQsCiAJCQkJICB1bnNpZ25lZCAqc3RyaWRlX3JldCwgYm9vbCAq aXNfZHVtYikKIHsKIAlyZXR1cm4gY3JlYXRlX2JvX2Zvcl9mYihmZCwgd2lkdGgsIGhlaWdodCwg bG9va3VwX2RybV9mb3JtYXQoZm9ybWF0KSwKLQkJCQltb2RpZmllciwgMCwgc3RyaWRlLCBzaXpl X3JldCwgc3RyaWRlX3JldCwgaXNfZHVtYik7CisJCQkJbW9kaWZpZXIsIDAsIHN0cmlkZSwgc2l6 ZV9yZXQsIHN0cmlkZV9yZXQsIE5VTEwsIGlzX2R1bWIpOwogfQogCiAvKioKQEAgLTc0OCwxNiAr NzYxLDIwIEBAIGlndF9jcmVhdGVfZmJfd2l0aF9ib19zaXplKGludCBmZCwgaW50IHdpZHRoLCBp bnQgaGVpZ2h0LAogCQkJICAgc3RydWN0IGlndF9mYiAqZmIsIHVuc2lnbmVkIGJvX3NpemUsCiAJ CQkgICB1bnNpZ25lZCBib19zdHJpZGUpCiB7CisJc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAq ZiA9IGxvb2t1cF9kcm1fZm9ybWF0KGZvcm1hdCk7CiAJdWludDMyX3QgZmJfaWQ7CisJaW50IGk7 CisKKwlpZ3RfYXNzZXJ0X2YoZiwgIkRSTSBmb3JtYXQgJTA4eCBub3QgZm91bmRcbiIsIGZvcm1h dCk7CiAKIAltZW1zZXQoZmIsIDAsIHNpemVvZigqZmIpKTsKIAogCWlndF9kZWJ1ZygiJXMod2lk dGg9JWQsIGhlaWdodD0lZCwgZm9ybWF0PTB4JXgsIHRpbGluZz0weCUiUFJJeDY0Iiwgc2l6ZT0l ZClcbiIsCiAJCSAgX19mdW5jX18sIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGlsaW5nLCBib19z aXplKTsKLQlmYi0+Z2VtX2hhbmRsZSA9IGNyZWF0ZV9ib19mb3JfZmIoZmQsIHdpZHRoLCBoZWln aHQsCi0JCQkJCSAgbG9va3VwX2RybV9mb3JtYXQoZm9ybWF0KSwKKwlmYi0+Z2VtX2hhbmRsZSA9 IGNyZWF0ZV9ib19mb3JfZmIoZmQsIHdpZHRoLCBoZWlnaHQsIGYsCiAJCQkJCSAgdGlsaW5nLCBi b19zaXplLCBib19zdHJpZGUsCi0JCQkJCSAgJmZiLT5zaXplLCAmZmItPnN0cmlkZSwgJmZiLT5p c19kdW1iKTsKKwkJCQkJICAmZmItPnNpemUsICZmYi0+c3RyaWRlLAorCQkJCQkgIGZiLT5vZmZz ZXRzLCAmZmItPmlzX2R1bWIpOwogCWlndF9hc3NlcnQoZmItPmdlbV9oYW5kbGUgPiAwKTsKIAog CWlndF9kZWJ1ZygiJXMoaGFuZGxlPSVkLCBwaXRjaD0lZClcbiIsCkBAIC03NjYsMjIgKzc4Mywy NCBAQCBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZShpbnQgZmQsIGludCB3aWR0aCwgaW50IGhl aWdodCwKIAlpZiAodGlsaW5nICE9IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUgJiYKIAkgICAg dGlsaW5nICE9IExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKSB7CiAJCWRvX29yX2RpZShf X2ttc19hZGRmYihmZCwgZmItPmdlbV9oYW5kbGUsIHdpZHRoLCBoZWlnaHQsCi0JCQkJICAgICAg ZmItPnN0cmlkZSwgZm9ybWF0LCB0aWxpbmcsCisJCQkJICAgICAgZmItPnN0cmlkZSwgZm9ybWF0 LCB0aWxpbmcsIGZiLT5vZmZzZXRzLAogCQkJCSAgICAgIExPQ0FMX0RSTV9NT0RFX0ZCX01PRElG SUVSUywgJmZiX2lkKSk7CiAJfSBlbHNlIHsKIAkJdWludDMyX3QgaGFuZGxlc1s0XTsKIAkJdWlu dDMyX3QgcGl0Y2hlc1s0XTsKLQkJdWludDMyX3Qgb2Zmc2V0c1s0XTsKIAogCQltZW1zZXQoaGFu ZGxlcywgMCwgc2l6ZW9mKGhhbmRsZXMpKTsKIAkJbWVtc2V0KHBpdGNoZXMsIDAsIHNpemVvZihw aXRjaGVzKSk7Ci0JCW1lbXNldChvZmZzZXRzLCAwLCBzaXplb2Yob2Zmc2V0cykpOwogCiAJCWhh bmRsZXNbMF0gPSBmYi0+Z2VtX2hhbmRsZTsKIAkJcGl0Y2hlc1swXSA9IGZiLT5zdHJpZGU7CisJ CWZvciAoaSA9IDA7IGkgPCBmLT5wbGFuZXM7IGkrKykgeworCQkJaGFuZGxlc1tpXSA9IGZiLT5n ZW1faGFuZGxlOworCQkJcGl0Y2hlc1tpXSA9IGZiLT5zdHJpZGU7CisJCX0KIAogCQlkb19vcl9k aWUoZHJtTW9kZUFkZEZCMihmZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LAotCQkJCQloYW5kbGVz LCBwaXRjaGVzLCBvZmZzZXRzLAorCQkJCQloYW5kbGVzLCBwaXRjaGVzLCBmYi0+b2Zmc2V0cywK IAkJCQkJJmZiX2lkLCAwKSk7CiAJfQogCkBAIC03OTEsNiArODEwLDE3IEBAIGlndF9jcmVhdGVf ZmJfd2l0aF9ib19zaXplKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogCWZiLT5kcm1f Zm9ybWF0ID0gZm9ybWF0OwogCWZiLT5mYl9pZCA9IGZiX2lkOwogCWZiLT5mZCA9IGZkOworCWZi LT5udW1fcGxhbmVzID0gZi0+cGxhbmVzID86IDE7CisJZmItPnBsYW5lX2JwcFswXSA9IGYtPmJw cDsKKwlmYi0+cGxhbmVfaGVpZ2h0WzBdID0gaGVpZ2h0OworCWZiLT5wbGFuZV93aWR0aFswXSA9 IHdpZHRoOworCisJLyogaWYgZi0+cGxhbmVzIGlzIHNldCwgdGhlbiBwbGFuZV9icHAgaXMgdmFs aWQgdG9vIHNvIHVzZSB0aGF0LiAqLworCWZvciAoaSA9IDA7IGkgPCBmLT5wbGFuZXM7IGkrKykg eworCQlmYi0+cGxhbmVfYnBwW2ldID0gZi0+cGxhbmVfYnBwW2ldOworCQlmYi0+cGxhbmVfaGVp Z2h0W2ldID0gcGxhbmFyX2hlaWdodChmLCBoZWlnaHQsIGkpOworCQlmYi0+cGxhbmVfd2lkdGhb aV0gPSBwbGFuYXJfd2lkdGgoZiwgd2lkdGgsIGkpOworCX0KIAogCXJldHVybiBmYl9pZDsKIH0K QEAgLTExMjcsNyArMTE1Nyw4IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9f YmxpdCh2b2lkICphcmcpCiAJCQkJICAgMCwgMCwgLyogc3JjX3gsIHNyY195ICovCiAJCQkJICAg ZmItPndpZHRoLCBmYi0+aGVpZ2h0LAogCQkJCSAgIGlndF9kcm1fZm9ybWF0X3RvX2JwcChmYi0+ ZHJtX2Zvcm1hdCksCi0JCQkJICAgZmItPmdlbV9oYW5kbGUsIDAsCisJCQkJICAgZmItPmdlbV9o YW5kbGUsCisJCQkJICAgZmItPm9mZnNldHNbMF0sCiAJCQkJICAgZmItPnN0cmlkZSwKIAkJCQkg ICBvYmpfdGlsaW5nLAogCQkJCSAgIDAsIDAgLyogZHN0X3gsIGRzdF95ICovKTsKQEAgLTExNDMs NiArMTE3NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19ibGl0KGludCBm ZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJc3RydWN0IGZiX2JsaXRfdXBsb2FkICpibGl0OwogCWNh aXJvX2Zvcm1hdF90IGNhaXJvX2Zvcm1hdDsKIAl1bnNpZ25lZCBpbnQgb2JqX3RpbGluZyA9IGln dF9mYl9tb2RfdG9fdGlsaW5nKGZiLT50aWxpbmcpOworCXVpbnQzMl90IG9mZnNldHNbNF07CiAK IAlibGl0ID0gbWFsbG9jKHNpemVvZigqYmxpdCkpOwogCWlndF9hc3NlcnQoYmxpdCk7CkBAIC0x MTU3LDcgKzExODksNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fYmxpdChp bnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCQkJCQkgICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9N T0RfTk9ORSwgMCwKIAkJCQkJICAgICAgIDAsICZibGl0LT5saW5lYXIuc2l6ZSwKIAkJCQkJICAg ICAgICZibGl0LT5saW5lYXIuc3RyaWRlLAotCQkJCQkgICAgICAgJmJsaXQtPmxpbmVhci5pc19k dW1iKTsKKwkJCQkJICAgICAgIG9mZnNldHMsICZibGl0LT5saW5lYXIuaXNfZHVtYik7CiAKIAlp Z3RfYXNzZXJ0KGJsaXQtPmxpbmVhci5oYW5kbGUgPiAwKTsKIApAQCAtMTE2OSw3ICsxMjAxLDgg QEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2JsaXQoaW50IGZkLCBzdHJ1Y3Qg aWd0X2ZiICpmYikKIAkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwogCiAJaWd0X2JsaXR0ZXJf ZmFzdF9jb3B5X19yYXcoZmQsCi0JCQkJICAgZmItPmdlbV9oYW5kbGUsIDAsCisJCQkJICAgZmIt PmdlbV9oYW5kbGUsCisJCQkJICAgZmItPm9mZnNldHNbMF0sCiAJCQkJICAgZmItPnN0cmlkZSwK IAkJCQkgICBvYmpfdGlsaW5nLAogCQkJCSAgIDAsIDAsIC8qIHNyY194LCBzcmNfeSAqLwpAQCAt MTI1NywxNCArMTI5MCwxNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3R0 KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiAgKiBAZmQ6IG9wZW4gZHJtIGZpbGUgZGVzY3Jp cHRvcgogICogQGZiOiBwb2ludGVyIHRvIGFuICNpZ3RfZmIgc3RydWN0dXJlCiAgKgotICogVGhp cyBmdW5jdGlvbiBzdG9yZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdXBwbGllZCBmcmFtZWJ1ZmZl ciBpbnRvIGEgY2Fpcm8KLSAqIHN1cmZhY2UgYW5kIHJldHVybnMgaXQuCisgKiBUaGlzIGZ1bmN0 aW9uIHN0b3JlcyB0aGUgY29udGVudHMgb2YgdGhlIHN1cHBsaWVkIGZyYW1lYnVmZmVyJ3MgcGxh bmUKKyAqIGludG8gYSBjYWlybyBzdXJmYWNlIGFuZCByZXR1cm5zIGl0LgogICoKICAqIFJldHVy bnM6CiAgKiBBIHBvaW50ZXIgdG8gYSBjYWlybyBzdXJmYWNlIHdpdGggdGhlIGNvbnRlbnRzIG9m IHRoZSBmcmFtZWJ1ZmZlci4KICAqLwogY2Fpcm9fc3VyZmFjZV90ICppZ3RfZ2V0X2NhaXJvX3N1 cmZhY2UoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIHsKKwkvKiBUaGlzIGRvZXNuJ3Qgd29y ayBmb3IgcGxhbmFyIGZvcm1hdHMgZm9yIG5vdywgYnV0IHdlIHdpbGwgY29udmVydCB0aGVtIHRv IFJHQjI0IGluIHRoZSBmdXR1cmUuICovCisJaWd0X2Fzc2VydChmYi0+bnVtX3BsYW5lcyA8IDIp OworCiAJaWYgKGZiLT5jYWlyb19zdXJmYWNlID09IE5VTEwpIHsKIAkJaWYgKGZiLT50aWxpbmcg PT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKIAkJICAgIGZiLT50aWxpbmcgPT0g TE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKQpkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5o IGIvbGliL2lndF9mYi5oCmluZGV4IDE1Mjc5OGU5ODk2Yi4uNzdmZDg4YmI3YWNhIDEwMDY0NAot LS0gYS9saWIvaWd0X2ZiLmgKKysrIGIvbGliL2lndF9mYi5oCkBAIC01MCw2ICs1MCwxMSBAQAog ICogQHNpemU6IHNpemUgaW4gYnl0ZXMgb2YgdGhlIHVuZGVybHlpbmcgYmFja2luZyBzdG9yYWdl CiAgKiBAY2Fpcm9fc3VyZmFjZTogb3B0aW9uYWxseSBhdHRhY2hlZCBjYWlybyBkcmF3aW5nIHN1 cmZhY2UKICAqIEBkb21haW46IGN1cnJlbnQgZG9tYWluIGZvciBjYWNoZSBmbHVzaGluZyB0cmFj a2luZyBvbiBpOTE1LmtvCisgKiBAbnVtX3BsYW5lczogQW1vdW50IG9mIHBsYW5lcyBvbiB0aGlz IGZiLiA+MSBmb3IgcGxhbmFyIGZvcm1hdHMuCisgKiBAb2Zmc2V0czogT2Zmc2V0IGZvciBlYWNo IHBsYW5lIGluIGJ5dGVzLgorICogQHBsYW5lX2JwcDogVGhlIGJwcCBmb3IgZWFjaCBwbGFuZS4K KyAqIEBwbGFuZV93aWR0aDogVGhlIHdpZHRoIGZvciBlYWNoIHBsYW5lLgorICogQHBsYW5lX2hl aWdodDogVGhlIGhlaWdodCBmb3IgZWFjaCBwbGFuZS4KICAqCiAgKiBUcmFja2luZyBzdHJ1Y3R1 cmUgZm9yIEtNUyBmcmFtZWJ1ZmZlciBvYmplY3RzLgogICovCkBAIC02Niw2ICs3MSwxMSBAQCB0 eXBlZGVmIHN0cnVjdCBpZ3RfZmIgewogCXVuc2lnbmVkIGludCBzaXplOwogCWNhaXJvX3N1cmZh Y2VfdCAqY2Fpcm9fc3VyZmFjZTsKIAl1bnNpZ25lZCBpbnQgZG9tYWluOworCXVuc2lnbmVkIGlu dCBudW1fcGxhbmVzOworCXVpbnQzMl90IG9mZnNldHNbNF07CisJdW5zaWduZWQgaW50IHBsYW5l X2JwcFs0XTsKKwl1bnNpZ25lZCBpbnQgcGxhbmVfd2lkdGhbNF07CisJdW5zaWduZWQgaW50IHBs YW5lX2hlaWdodFs0XTsKIH0gaWd0X2ZiX3Q7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbGliL2lvY3Rs X3dyYXBwZXJzLmMgYi9saWIvaW9jdGxfd3JhcHBlcnMuYwppbmRleCAzOWU4NDY5ZTM5ODUuLjEw ZDk1ODcyNmRhNyAxMDA2NDQKLS0tIGEvbGliL2lvY3RsX3dyYXBwZXJzLmMKKysrIGIvbGliL2lv Y3RsX3dyYXBwZXJzLmMKQEAgLTE2NTksMTAgKzE2NTksMTAgQEAgdm9pZCBpZ3RfcmVxdWlyZV9m Yl9tb2RpZmllcnMoaW50IGZkKQogCiBpbnQgX19rbXNfYWRkZmIoaW50IGZkLCB1aW50MzJfdCBo YW5kbGUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsCiAJCXVpbnQzMl90IHN0cmlk ZSwgdWludDMyX3QgcGl4ZWxfZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllciwKLQkJdWludDMyX3Qg ZmxhZ3MsIHVpbnQzMl90ICpidWZfaWQpCisJCXVpbnQzMl90ICpvZmZzZXRzLCB1aW50MzJfdCBm bGFncywgdWludDMyX3QgKmJ1Zl9pZCkKIHsKIAlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiBmOwot CWludCByZXQ7CisJaW50IHJldCwgaTsKIAogCWlndF9yZXF1aXJlX2ZiX21vZGlmaWVycyhmZCk7 CiAKQEAgLTE2NzYsNiArMTY3NiwxMyBAQCBpbnQgX19rbXNfYWRkZmIoaW50IGZkLCB1aW50MzJf dCBoYW5kbGUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsCiAJZi5waXRjaGVzWzBd ID0gc3RyaWRlOwogCWYubW9kaWZpZXJbMF0gPSBtb2RpZmllcjsKIAorCWZvciAoaSA9IDE7IGkg PCA0ICYmIG9mZnNldHMgJiYgb2Zmc2V0c1tpXTsgaSsrKSB7CisJCWYuaGFuZGxlc1tpXSA9IGhh bmRsZTsKKwkJZi5waXRjaGVzW2ldID0gc3RyaWRlOworCQlmLm1vZGlmaWVyW2ldID0gbW9kaWZp ZXI7CisJCWYub2Zmc2V0c1tpXSA9IG9mZnNldHNbaV07CisJfQorCiAJcmV0ID0gaWd0X2lvY3Rs KGZkLCBEUk1fSU9DVExfTU9ERV9BRERGQjIsICZmKTsKIAogCSpidWZfaWQgPSBmLmZiX2lkOwpk aWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmggYi9saWIvaW9jdGxfd3JhcHBlcnMuaApp bmRleCBmNzc1MmFlYWIyYzQuLjEzZmJlM2MxMDNjMCAxMDA2NDQKLS0tIGEvbGliL2lvY3RsX3dy YXBwZXJzLmgKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCB2 b2lkIGlndF9yZXF1aXJlX2ZiX21vZGlmaWVycyhpbnQgZmQpOwogICovCiBpbnQgX19rbXNfYWRk ZmIoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWln aHQsCiAJCXVpbnQzMl90IHN0cmlkZSwgdWludDMyX3QgcGl4ZWxfZm9ybWF0LCB1aW50NjRfdCBt b2RpZmllciwKLQkJdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpidWZfaWQpOworCQl1aW50MzJf dCAqb2Zmc2V0cywgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpidWZfaWQpOwogCiAvKioKICAq IHRvX3VzZXJfcG9pbnRlcjoKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kcmF3X2NyYy5jIGIvdGVz dHMva21zX2RyYXdfY3JjLmMKaW5kZXggNzIzZTdhMTgyYzk1Li44NmRjZjM5Mjg1ZjMgMTAwNjQ0 Ci0tLSBhL3Rlc3RzL2ttc19kcmF3X2NyYy5jCisrKyBiL3Rlc3RzL2ttc19kcmF3X2NyYy5jCkBA IC0xNjMsNyArMTYzLDcgQEAgc3RhdGljIGJvb2wgZm9ybWF0X2lzX3N1cHBvcnRlZCh1aW50MzJf dCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQogCQkJCQkJICAgZm9ybWF0LCBtb2RpZmllciwK IAkJCQkJCSAgIDAsIE5VTEwsICZzdHJpZGUsIE5VTEwpOwogCXJldCA9ICBfX2ttc19hZGRmYihk cm1fZmQsIGdlbV9oYW5kbGUsIDY0LCA2NCwKLQkJCSAgIHN0cmlkZSwgZm9ybWF0LCBtb2RpZmll ciwKKwkJCSAgIHN0cmlkZSwgZm9ybWF0LCBtb2RpZmllciwgTlVMTCwKIAkJCSAgIExPQ0FMX0RS TV9NT0RFX0ZCX01PRElGSUVSUywgJmZiX2lkKTsKIAlkcm1Nb2RlUm1GQihkcm1fZmQsIGZiX2lk KTsKIAlnZW1fY2xvc2UoZHJtX2ZkLCBnZW1faGFuZGxlKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2tt c19yb3RhdGlvbl9jcmMuYyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwppbmRleCA1YjE5MGEw ZDAzY2IuLmY2NTU2MmJhZTllYiAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3JvdGF0aW9uX2NyYy5j CisrKyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwpAQCAtNTIwLDcgKzUyMCw3IEBAIHN0YXRp YyB2b2lkIHRlc3RfcGxhbmVfcm90YXRpb25feXRpbGVkX29iaihkYXRhX3QgKmRhdGEsCiAJaWd0 X2Fzc2VydF9lcShyZXQsIDApOwogCiAJZG9fb3JfZGllKF9fa21zX2FkZGZiKGZkLCBnZW1faGFu ZGxlLCB3LCBoLCBzdHJpZGUsCi0JCSAgZm9ybWF0LCB0aWxpbmcsIExPQ0FMX0RSTV9NT0RFX0ZC X01PRElGSUVSUywKKwkJICBmb3JtYXQsIHRpbGluZywgTlVMTCwgTE9DQUxfRFJNX01PREVfRkJf TU9ESUZJRVJTLAogCQkgICZkYXRhLT5mYi5mYl9pZCkpOwogCWRhdGEtPmZiLndpZHRoID0gdzsK IAlkYXRhLT5mYi5oZWlnaHQgPSBoOwpAQCAtNjAxLDcgKzYwMSw4IEBAIHN0YXRpYyB2b2lkIHRl c3RfcGxhbmVfcm90YXRpb25fZXhoYXVzdF9mZW5jZXMoZGF0YV90ICpkYXRhLAogCQl9CiAKIAkJ cmV0ID0gKF9fa21zX2FkZGZiKGZkLCBnZW1faGFuZGxlLCB3LCBoLCBzdHJpZGUsCi0JCSAgICAg ICBmb3JtYXQsIHRpbGluZywgTE9DQUxfRFJNX01PREVfRkJfTU9ESUZJRVJTLAorCQkgICAgICAg Zm9ybWF0LCB0aWxpbmcsIE5VTEwsCisJCSAgICAgICBMT0NBTF9EUk1fTU9ERV9GQl9NT0RJRklF UlMsCiAJCSAgICAgICAmZGF0YTJbaV0uZmIuZmJfaWQpKTsKIAkJaWYgKHJldCkgewogCQkJaWd0 X3dhcm4oImZhaWxlZCB0byBjcmVhdGUgZnJhbWVidWZmZXJcbiIpOwpkaWZmIC0tZ2l0IGEvdGVz dHMvcHJpbWVfdmdlbS5jIGIvdGVzdHMvcHJpbWVfdmdlbS5jCmluZGV4IGE1Zjc1ZDg4OGJlZi4u NzYzYzYyZTYwNmY2IDEwMDY0NAotLS0gYS90ZXN0cy9wcmltZV92Z2VtLmMKKysrIGIvdGVzdHMv cHJpbWVfdmdlbS5jCkBAIC03MjMsNyArNzIzLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9mbGlwKGlu dCBpOTE1LCBpbnQgdmdlbSwgdW5zaWduZWQgaGFuZykKIAogCQlkb19vcl9kaWUoX19rbXNfYWRk ZmIoaTkxNSwgaGFuZGxlW2ldLAogCQkJCSAgICAgIGJvW2ldLndpZHRoLCBib1tpXS5oZWlnaHQs IGJvW2ldLnBpdGNoLAotCQkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIEk5MTVfVElMSU5H X05PTkUsCisJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgSTkxNV9USUxJTkdfTk9ORSwg TlVMTCwKIAkJCQkgICAgICBMT0NBTF9EUk1fTU9ERV9GQl9NT0RJRklFUlMsICZmYl9pZFtpXSkp OwogCQlpZ3RfYXNzZXJ0KGZiX2lkW2ldKTsKIAl9Ci0tIAoyLjE1LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0Cmln dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=