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 995D66E3C3 for ; Tue, 23 Jan 2018 14:50:32 +0000 (UTC) From: Maarten Lankhorst Date: Tue, 23 Jan 2018 15:50:28 +0100 Message-Id: <20180123145028.72938-1-maarten.lankhorst@linux.intel.com> In-Reply-To: <20180123125642.58698-7-maarten.lankhorst@linux.intel.com> References: <20180123125642.58698-7-maarten.lankhorst@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t] lib/fb: Add support for creating planar framebuffers, v2. 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 aCBpbiBpZ3RfY3JlYXRlX2JvX3dpdGhfZGltZW5zaW9ucygpLgoKU2lnbmVkLW9mZi1ieTogTWFh cnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBs aWIvaWd0X2ZiLmMgICAgICAgICAgICAgfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0KIGxpYi9pZ3RfZmIuaCAgICAgICAgICAgICB8IDEwICsrKysr KysKIGxpYi9pb2N0bF93cmFwcGVycy5jICAgICB8IDExICsrKysrLS0KIGxpYi9pb2N0bF93cmFw cGVycy5oICAgICB8ICAyICstCiB0ZXN0cy9rbXNfZHJhd19jcmMuYyAgICAgfCAgMiArLQogdGVz dHMva21zX3JvdGF0aW9uX2NyYy5jIHwgIDUgKystLQogdGVzdHMvcHJpbWVfdmdlbS5jICAgICAg IHwgIDIgKy0KIDcgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCmluZGV4IDEyNTFm NDYyZDI0ZS4uYzY1MjVlMTdhZmUzIDEwMDY0NAotLS0gYS9saWIvaWd0X2ZiLmMKKysrIGIvbGli L2lndF9mYi5jCkBAIC0xNTgsMTQgKzE1OCwxOSBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXpl KGludCBmZCwgdWludDY0X3QgdGlsaW5nLCBpbnQgZmJfYnBwLAogCX0KIH0KIAorc3RhdGljIHVu c2lnbmVkIHBsYW5hcl93aWR0aChzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsIHVu c2lnbmVkIHdpZHRoLCBpbnQgcGxhbmUpCit7CisJaWYgKGZvcm1hdC0+ZHJtX2lkID09IERSTV9G T1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQorCQlyZXR1cm4gKHdpZHRoICsgMSkgLyAyOworCisJ cmV0dXJuIHdpZHRoOworfQorCiBzdGF0aWMgdW5zaWduZWQgcGxhbmFyX3N0cmlkZShzdHJ1Y3Qg Zm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCBpbnQgcGxhbmUpCiB7 CiAJdW5zaWduZWQgY3BwID0gZm9ybWF0LT5wbGFuZV9icHBbcGxhbmVdIC8gODsKIAotCWlmIChm b3JtYXQtPmRybV9pZCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxhbmUgPT0gMSkKLQkJcmV0dXJu ICh3aWR0aCArIDEpIC8gMiAqIGNwcDsKLQotCXJldHVybiB3aWR0aCAqIGNwcDsKKwlyZXR1cm4g cGxhbmFyX3dpZHRoKGZvcm1hdCwgd2lkdGgsIHBsYW5lKSAqIGNwcDsKIH0KIAogc3RhdGljIHVu c2lnbmVkIHBsYW5hcl9oZWlnaHQoc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZm9ybWF0LCB1 bnNpZ25lZCBoZWlnaHQsIGludCBwbGFuZSkKQEAgLTMzMSw3ICszMzYsNyBAQCBzdGF0aWMgaW50 IGNyZWF0ZV9ib19mb3JfZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAJCQkgICAg c3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZm9ybWF0LAogCQkJICAgIHVpbnQ2NF90IHRpbGlu ZywgdW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgc3RyaWRlLAogCQkJICAgIHVuc2lnbmVkICpzaXpl X3JldCwgdW5zaWduZWQgKnN0cmlkZV9yZXQsCi0JCQkgICAgYm9vbCAqaXNfZHVtYikKKwkJCSAg ICB1aW50MzJfdCAqb2Zmc2V0cywgYm9vbCAqaXNfZHVtYikKIHsKIAlpbnQgYm87CiAKQEAgLTM0 MCw4ICszNDUsMTYgQEAgc3RhdGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LAogCWlmICh0aWxpbmcgfHwgc2l6ZSB8fCBzdHJpZGUgfHwgZm9ybWF0 LT5wbGFuZXMgPiAxKSB7CiAJCXVuc2lnbmVkIGNhbGN1bGF0ZWRfc2l6ZSwgY2FsY3VsYXRlZF9z dHJpZGU7CiAKLQkJaWd0X2NhbGNfZmJfc2l6ZShmZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LT5k cm1faWQsIHRpbGluZywKLQkJCQkgJmNhbGN1bGF0ZWRfc2l6ZSwgJmNhbGN1bGF0ZWRfc3RyaWRl KTsKKwkJaWYgKGZvcm1hdC0+cGxhbmVzID4gMSkKKwkJCWNhbGNfZmJfc2l6ZV9wbGFuYXIoZmQs IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGlsaW5nLAorCQkJCQkgICAgJmNhbGN1bGF0ZWRfc2l6 ZSwgJmNhbGN1bGF0ZWRfc3RyaWRlLCBvZmZzZXRzKTsKKwkJZWxzZSB7CisJCQlpZiAob2Zmc2V0 cykKKwkJCQltZW1zZXQob2Zmc2V0cywgMCwgNCAqIHNpemVvZigqb2Zmc2V0cykpOworCQkJY2Fs Y19mYl9zaXplX3BhY2tlZChmZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0aWxpbmcsCisJCQkJ CSAgICAmY2FsY3VsYXRlZF9zaXplLCAmY2FsY3VsYXRlZF9zdHJpZGUpOworCQl9CisKIAkJaWYg KHN0cmlkZSA9PSAwKQogCQkJc3RyaWRlID0gY2FsY3VsYXRlZF9zdHJpZGU7CiAJCWlmIChzaXpl ID09IDApCkBAIC00MDcsNyArNDIwLDcgQEAgaW50IGlndF9jcmVhdGVfYm9fd2l0aF9kaW1lbnNp b25zKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogCQkJCSAgdW5zaWduZWQgKnN0cmlk ZV9yZXQsIGJvb2wgKmlzX2R1bWIpCiB7CiAJcmV0dXJuIGNyZWF0ZV9ib19mb3JfZmIoZmQsIHdp ZHRoLCBoZWlnaHQsIGxvb2t1cF9kcm1fZm9ybWF0KGZvcm1hdCksCi0JCQkJbW9kaWZpZXIsIDAs IHN0cmlkZSwgc2l6ZV9yZXQsIHN0cmlkZV9yZXQsIGlzX2R1bWIpOworCQkJCW1vZGlmaWVyLCAw LCBzdHJpZGUsIHNpemVfcmV0LCBzdHJpZGVfcmV0LCBOVUxMLCBpc19kdW1iKTsKIH0KIAogLyoq CkBAIC03NDgsMTYgKzc2MSwyMCBAQCBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZShpbnQgZmQs IGludCB3aWR0aCwgaW50IGhlaWdodCwKIAkJCSAgIHN0cnVjdCBpZ3RfZmIgKmZiLCB1bnNpZ25l ZCBib19zaXplLAogCQkJICAgdW5zaWduZWQgYm9fc3RyaWRlKQogeworCXN0cnVjdCBmb3JtYXRf ZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zvcm1hdChmb3JtYXQpOwogCXVpbnQzMl90IGZi X2lkOworCWludCBpOworCisJaWd0X2Fzc2VydF9mKGYsICJEUk0gZm9ybWF0ICUwOHggbm90IGZv dW5kXG4iLCBmb3JtYXQpOwogCiAJbWVtc2V0KGZiLCAwLCBzaXplb2YoKmZiKSk7CiAKIAlpZ3Rf ZGVidWcoIiVzKHdpZHRoPSVkLCBoZWlnaHQ9JWQsIGZvcm1hdD0weCV4LCB0aWxpbmc9MHglIlBS SXg2NCIsIHNpemU9JWQpXG4iLAogCQkgIF9fZnVuY19fLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs IHRpbGluZywgYm9fc2l6ZSk7Ci0JZmItPmdlbV9oYW5kbGUgPSBjcmVhdGVfYm9fZm9yX2ZiKGZk LCB3aWR0aCwgaGVpZ2h0LAotCQkJCQkgIGxvb2t1cF9kcm1fZm9ybWF0KGZvcm1hdCksCisJZmIt PmdlbV9oYW5kbGUgPSBjcmVhdGVfYm9fZm9yX2ZiKGZkLCB3aWR0aCwgaGVpZ2h0LCBmLAogCQkJ CQkgIHRpbGluZywgYm9fc2l6ZSwgYm9fc3RyaWRlLAotCQkJCQkgICZmYi0+c2l6ZSwgJmZiLT5z dHJpZGUsICZmYi0+aXNfZHVtYik7CisJCQkJCSAgJmZiLT5zaXplLCAmZmItPnN0cmlkZSwKKwkJ CQkJICBmYi0+b2Zmc2V0cywgJmZiLT5pc19kdW1iKTsKIAlpZ3RfYXNzZXJ0KGZiLT5nZW1faGFu ZGxlID4gMCk7CiAKIAlpZ3RfZGVidWcoIiVzKGhhbmRsZT0lZCwgcGl0Y2g9JWQpXG4iLApAQCAt NzY2LDIyICs3ODMsMjQgQEAgaWd0X2NyZWF0ZV9mYl93aXRoX2JvX3NpemUoaW50IGZkLCBpbnQg d2lkdGgsIGludCBoZWlnaHQsCiAJaWYgKHRpbGluZyAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9O T05FICYmCiAJICAgIHRpbGluZyAhPSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkgewog CQlkb19vcl9kaWUoX19rbXNfYWRkZmIoZmQsIGZiLT5nZW1faGFuZGxlLCB3aWR0aCwgaGVpZ2h0 LAotCQkJCSAgICAgIGZiLT5zdHJpZGUsIGZvcm1hdCwgdGlsaW5nLAorCQkJCSAgICAgIGZiLT5z dHJpZGUsIGZvcm1hdCwgdGlsaW5nLCBmYi0+b2Zmc2V0cywKIAkJCQkgICAgICBMT0NBTF9EUk1f TU9ERV9GQl9NT0RJRklFUlMsICZmYl9pZCkpOwogCX0gZWxzZSB7CiAJCXVpbnQzMl90IGhhbmRs ZXNbNF07CiAJCXVpbnQzMl90IHBpdGNoZXNbNF07Ci0JCXVpbnQzMl90IG9mZnNldHNbNF07CiAK IAkJbWVtc2V0KGhhbmRsZXMsIDAsIHNpemVvZihoYW5kbGVzKSk7CiAJCW1lbXNldChwaXRjaGVz LCAwLCBzaXplb2YocGl0Y2hlcykpOwotCQltZW1zZXQob2Zmc2V0cywgMCwgc2l6ZW9mKG9mZnNl dHMpKTsKIAogCQloYW5kbGVzWzBdID0gZmItPmdlbV9oYW5kbGU7CiAJCXBpdGNoZXNbMF0gPSBm Yi0+c3RyaWRlOworCQlmb3IgKGkgPSAwOyBpIDwgZi0+cGxhbmVzOyBpKyspIHsKKwkJCWhhbmRs ZXNbaV0gPSBmYi0+Z2VtX2hhbmRsZTsKKwkJCXBpdGNoZXNbaV0gPSBmYi0+c3RyaWRlOworCQl9 CiAKIAkJZG9fb3JfZGllKGRybU1vZGVBZGRGQjIoZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwK LQkJCQkJaGFuZGxlcywgcGl0Y2hlcywgb2Zmc2V0cywKKwkJCQkJaGFuZGxlcywgcGl0Y2hlcywg ZmItPm9mZnNldHMsCiAJCQkJCSZmYl9pZCwgMCkpOwogCX0KIApAQCAtNzkxLDYgKzgxMCwxNyBA QCBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZShpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdo dCwKIAlmYi0+ZHJtX2Zvcm1hdCA9IGZvcm1hdDsKIAlmYi0+ZmJfaWQgPSBmYl9pZDsKIAlmYi0+ ZmQgPSBmZDsKKwlmYi0+bnVtX3BsYW5lcyA9IGYtPnBsYW5lcyA/OiAxOworCWZiLT5wbGFuZV9i cHBbMF0gPSBmLT5icHA7CisJZmItPnBsYW5lX2hlaWdodFswXSA9IGhlaWdodDsKKwlmYi0+cGxh bmVfd2lkdGhbMF0gPSB3aWR0aDsKKworCS8qIGlmIGYtPnBsYW5lcyBpcyBzZXQsIHRoZW4gcGxh bmVfYnBwIGlzIHZhbGlkIHRvbyBzbyB1c2UgdGhhdC4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgZi0+ cGxhbmVzOyBpKyspIHsKKwkJZmItPnBsYW5lX2JwcFtpXSA9IGYtPnBsYW5lX2JwcFtpXTsKKwkJ ZmItPnBsYW5lX2hlaWdodFtpXSA9IHBsYW5hcl9oZWlnaHQoZiwgaGVpZ2h0LCBpKTsKKwkJZmIt PnBsYW5lX3dpZHRoW2ldID0gcGxhbmFyX3dpZHRoKGYsIHdpZHRoLCBpKTsKKwl9CiAKIAlyZXR1 cm4gZmJfaWQ7CiB9CkBAIC0xMTI3LDcgKzExNTcsOCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2Nh aXJvX3N1cmZhY2VfX2JsaXQodm9pZCAqYXJnKQogCQkJCSAgIDAsIDAsIC8qIHNyY194LCBzcmNf eSAqLwogCQkJCSAgIGZiLT53aWR0aCwgZmItPmhlaWdodCwKIAkJCQkgICBpZ3RfZHJtX2Zvcm1h dF90b19icHAoZmItPmRybV9mb3JtYXQpLAotCQkJCSAgIGZiLT5nZW1faGFuZGxlLCAwLAorCQkJ CSAgIGZiLT5nZW1faGFuZGxlLAorCQkJCSAgIGZiLT5vZmZzZXRzWzBdLAogCQkJCSAgIGZiLT5z dHJpZGUsCiAJCQkJICAgb2JqX3RpbGluZywKIAkJCQkgICAwLCAwIC8qIGRzdF94LCBkc3RfeSAq Lyk7CkBAIC0xMTQzLDYgKzExNzQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFj ZV9fYmxpdChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCXN0cnVjdCBmYl9ibGl0X3VwbG9h ZCAqYmxpdDsKIAljYWlyb19mb3JtYXRfdCBjYWlyb19mb3JtYXQ7CiAJdW5zaWduZWQgaW50IG9i al90aWxpbmcgPSBpZ3RfZmJfbW9kX3RvX3RpbGluZyhmYi0+dGlsaW5nKTsKKwl1aW50MzJfdCBv ZmZzZXRzWzRdOwogCiAJYmxpdCA9IG1hbGxvYyhzaXplb2YoKmJsaXQpKTsKIAlpZ3RfYXNzZXJ0 KGJsaXQpOwpAQCAtMTE1Nyw3ICsxMTg5LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1 cmZhY2VfX2JsaXQoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCQkJICAgICAgIExPQ0FM X0RSTV9GT1JNQVRfTU9EX05PTkUsIDAsCiAJCQkJCSAgICAgICAwLCAmYmxpdC0+bGluZWFyLnNp emUsCiAJCQkJCSAgICAgICAmYmxpdC0+bGluZWFyLnN0cmlkZSwKLQkJCQkJICAgICAgICZibGl0 LT5saW5lYXIuaXNfZHVtYik7CisJCQkJCSAgICAgICBvZmZzZXRzLCAmYmxpdC0+bGluZWFyLmlz X2R1bWIpOwogCiAJaWd0X2Fzc2VydChibGl0LT5saW5lYXIuaGFuZGxlID4gMCk7CiAKQEAgLTEx NjksNyArMTIwMSw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19ibGl0KGlu dCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJCQlJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsKIAog CWlndF9ibGl0dGVyX2Zhc3RfY29weV9fcmF3KGZkLAotCQkJCSAgIGZiLT5nZW1faGFuZGxlLCAw LAorCQkJCSAgIGZiLT5nZW1faGFuZGxlLAorCQkJCSAgIGZiLT5vZmZzZXRzWzBdLAogCQkJCSAg IGZiLT5zdHJpZGUsCiAJCQkJICAgb2JqX3RpbGluZywKIAkJCQkgICAwLCAwLCAvKiBzcmNfeCwg c3JjX3kgKi8KQEAgLTEyNTcsMTQgKzEyOTAsMTcgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJv X3N1cmZhY2VfX2d0dChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogICogQGZkOiBvcGVuIGRy bSBmaWxlIGRlc2NyaXB0b3IKICAqIEBmYjogcG9pbnRlciB0byBhbiAjaWd0X2ZiIHN0cnVjdHVy ZQogICoKLSAqIFRoaXMgZnVuY3Rpb24gc3RvcmVzIHRoZSBjb250ZW50cyBvZiB0aGUgc3VwcGxp ZWQgZnJhbWVidWZmZXIgaW50byBhIGNhaXJvCi0gKiBzdXJmYWNlIGFuZCByZXR1cm5zIGl0Lgor ICogVGhpcyBmdW5jdGlvbiBzdG9yZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdXBwbGllZCBmcmFt ZWJ1ZmZlcidzIHBsYW5lCisgKiBpbnRvIGEgY2Fpcm8gc3VyZmFjZSBhbmQgcmV0dXJucyBpdC4K ICAqCiAgKiBSZXR1cm5zOgogICogQSBwb2ludGVyIHRvIGEgY2Fpcm8gc3VyZmFjZSB3aXRoIHRo ZSBjb250ZW50cyBvZiB0aGUgZnJhbWVidWZmZXIuCiAgKi8KIGNhaXJvX3N1cmZhY2VfdCAqaWd0 X2dldF9jYWlyb19zdXJmYWNlKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiB7CisJLyogVGhp cyBkb2Vzbid0IHdvcmsgZm9yIHBsYW5hciBmb3JtYXRzIGZvciBub3csIGJ1dCB3ZSB3aWxsIGNv bnZlcnQgdGhlbSB0byBSR0IyNCBpbiB0aGUgZnV0dXJlLiAqLworCWlndF9hc3NlcnQoZmItPm51 bV9wbGFuZXMgPCAyKTsKKwogCWlmIChmYi0+Y2Fpcm9fc3VyZmFjZSA9PSBOVUxMKSB7CiAJCWlm IChmYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8CiAJCSAgICBm Yi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkKZGlmZiAtLWdpdCBh L2xpYi9pZ3RfZmIuaCBiL2xpYi9pZ3RfZmIuaAppbmRleCAxNTI3OThlOTg5NmIuLjc3ZmQ4OGJi N2FjYSAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5oCisrKyBiL2xpYi9pZ3RfZmIuaApAQCAtNTAs NiArNTAsMTEgQEAKICAqIEBzaXplOiBzaXplIGluIGJ5dGVzIG9mIHRoZSB1bmRlcmx5aW5nIGJh Y2tpbmcgc3RvcmFnZQogICogQGNhaXJvX3N1cmZhY2U6IG9wdGlvbmFsbHkgYXR0YWNoZWQgY2Fp cm8gZHJhd2luZyBzdXJmYWNlCiAgKiBAZG9tYWluOiBjdXJyZW50IGRvbWFpbiBmb3IgY2FjaGUg Zmx1c2hpbmcgdHJhY2tpbmcgb24gaTkxNS5rbworICogQG51bV9wbGFuZXM6IEFtb3VudCBvZiBw bGFuZXMgb24gdGhpcyBmYi4gPjEgZm9yIHBsYW5hciBmb3JtYXRzLgorICogQG9mZnNldHM6IE9m ZnNldCBmb3IgZWFjaCBwbGFuZSBpbiBieXRlcy4KKyAqIEBwbGFuZV9icHA6IFRoZSBicHAgZm9y IGVhY2ggcGxhbmUuCisgKiBAcGxhbmVfd2lkdGg6IFRoZSB3aWR0aCBmb3IgZWFjaCBwbGFuZS4K KyAqIEBwbGFuZV9oZWlnaHQ6IFRoZSBoZWlnaHQgZm9yIGVhY2ggcGxhbmUuCiAgKgogICogVHJh Y2tpbmcgc3RydWN0dXJlIGZvciBLTVMgZnJhbWVidWZmZXIgb2JqZWN0cy4KICAqLwpAQCAtNjYs NiArNzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgaWd0X2ZiIHsKIAl1bnNpZ25lZCBpbnQgc2l6ZTsK IAljYWlyb19zdXJmYWNlX3QgKmNhaXJvX3N1cmZhY2U7CiAJdW5zaWduZWQgaW50IGRvbWFpbjsK Kwl1bnNpZ25lZCBpbnQgbnVtX3BsYW5lczsKKwl1aW50MzJfdCBvZmZzZXRzWzRdOworCXVuc2ln bmVkIGludCBwbGFuZV9icHBbNF07CisJdW5zaWduZWQgaW50IHBsYW5lX3dpZHRoWzRdOworCXVu c2lnbmVkIGludCBwbGFuZV9oZWlnaHRbNF07CiB9IGlndF9mYl90OwogCiAvKioKZGlmZiAtLWdp dCBhL2xpYi9pb2N0bF93cmFwcGVycy5jIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKaW5kZXggMzll ODQ2OWUzOTg1Li4xMGQ5NTg3MjZkYTcgMTAwNjQ0Ci0tLSBhL2xpYi9pb2N0bF93cmFwcGVycy5j CisrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5jCkBAIC0xNjU5LDEwICsxNjU5LDEwIEBAIHZvaWQg aWd0X3JlcXVpcmVfZmJfbW9kaWZpZXJzKGludCBmZCkKIAogaW50IF9fa21zX2FkZGZiKGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAogCQl1 aW50MzJfdCBzdHJpZGUsIHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIs Ci0JCXVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqYnVmX2lkKQorCQl1aW50MzJfdCAqb2Zmc2V0 cywgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpidWZfaWQpCiB7CiAJc3RydWN0IGRybV9tb2Rl X2ZiX2NtZDIgZjsKLQlpbnQgcmV0OworCWludCByZXQsIGk7CiAKIAlpZ3RfcmVxdWlyZV9mYl9t b2RpZmllcnMoZmQpOwogCkBAIC0xNjc2LDYgKzE2NzYsMTMgQEAgaW50IF9fa21zX2FkZGZiKGlu dCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAog CWYucGl0Y2hlc1swXSA9IHN0cmlkZTsKIAlmLm1vZGlmaWVyWzBdID0gbW9kaWZpZXI7CiAKKwlm b3IgKGkgPSAxOyBpIDwgNCAmJiBvZmZzZXRzICYmIG9mZnNldHNbaV07IGkrKykgeworCQlmLmhh bmRsZXNbaV0gPSBoYW5kbGU7CisJCWYucGl0Y2hlc1tpXSA9IHN0cmlkZTsKKwkJZi5tb2RpZmll cltpXSA9IG1vZGlmaWVyOworCQlmLm9mZnNldHNbaV0gPSBvZmZzZXRzW2ldOworCX0KKwogCXJl dCA9IGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX01PREVfQURERkIyLCAmZik7CiAKIAkqYnVmX2lk ID0gZi5mYl9pZDsKZGlmZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3Rs X3dyYXBwZXJzLmgKaW5kZXggZjc3NTJhZWFiMmM0Li4xM2ZiZTNjMTAzYzAgMTAwNjQ0Ci0tLSBh L2xpYi9pb2N0bF93cmFwcGVycy5oCisrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5oCkBAIC0yMzYs NyArMjM2LDcgQEAgdm9pZCBpZ3RfcmVxdWlyZV9mYl9tb2RpZmllcnMoaW50IGZkKTsKICAqLwog aW50IF9fa21zX2FkZGZiKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB3aWR0aCwg dWludDMyX3QgaGVpZ2h0LAogCQl1aW50MzJfdCBzdHJpZGUsIHVpbnQzMl90IHBpeGVsX2Zvcm1h dCwgdWludDY0X3QgbW9kaWZpZXIsCi0JCXVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqYnVmX2lk KTsKKwkJdWludDMyX3QgKm9mZnNldHMsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqYnVmX2lk KTsKIAogLyoqCiAgKiB0b191c2VyX3BvaW50ZXI6CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZHJh d19jcmMuYyBiL3Rlc3RzL2ttc19kcmF3X2NyYy5jCmluZGV4IDcyM2U3YTE4MmM5NS4uODZkY2Yz OTI4NWYzIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfZHJhd19jcmMuYworKysgYi90ZXN0cy9rbXNf ZHJhd19jcmMuYwpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBib29sIGZvcm1hdF9pc19zdXBw b3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllcikKIAkJCQkJCSAgIGZvcm1h dCwgbW9kaWZpZXIsCiAJCQkJCQkgICAwLCBOVUxMLCAmc3RyaWRlLCBOVUxMKTsKIAlyZXQgPSAg X19rbXNfYWRkZmIoZHJtX2ZkLCBnZW1faGFuZGxlLCA2NCwgNjQsCi0JCQkgICBzdHJpZGUsIGZv cm1hdCwgbW9kaWZpZXIsCisJCQkgICBzdHJpZGUsIGZvcm1hdCwgbW9kaWZpZXIsIE5VTEwsCiAJ CQkgICBMT0NBTF9EUk1fTU9ERV9GQl9NT0RJRklFUlMsICZmYl9pZCk7CiAJZHJtTW9kZVJtRkIo ZHJtX2ZkLCBmYl9pZCk7CiAJZ2VtX2Nsb3NlKGRybV9mZCwgZ2VtX2hhbmRsZSk7CmRpZmYgLS1n aXQgYS90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMgYi90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMK aW5kZXggNWIxOTBhMGQwM2NiLi5mNjU1NjJiYWU5ZWIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19y b3RhdGlvbl9jcmMuYworKysgYi90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKQEAgLTUyMCw3ICs1 MjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9uX3l0aWxlZF9vYmooZGF0YV90 ICpkYXRhLAogCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKIAogCWRvX29yX2RpZShfX2ttc19hZGRm YihmZCwgZ2VtX2hhbmRsZSwgdywgaCwgc3RyaWRlLAotCQkgIGZvcm1hdCwgdGlsaW5nLCBMT0NB TF9EUk1fTU9ERV9GQl9NT0RJRklFUlMsCisJCSAgZm9ybWF0LCB0aWxpbmcsIE5VTEwsIExPQ0FM X0RSTV9NT0RFX0ZCX01PRElGSUVSUywKIAkJICAmZGF0YS0+ZmIuZmJfaWQpKTsKIAlkYXRhLT5m Yi53aWR0aCA9IHc7CiAJZGF0YS0+ZmIuaGVpZ2h0ID0gaDsKQEAgLTYwMSw3ICs2MDEsOCBAQCBz dGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9uX2V4aGF1c3RfZmVuY2VzKGRhdGFfdCAqZGF0 YSwKIAkJfQogCiAJCXJldCA9IChfX2ttc19hZGRmYihmZCwgZ2VtX2hhbmRsZSwgdywgaCwgc3Ry aWRlLAotCQkgICAgICAgZm9ybWF0LCB0aWxpbmcsIExPQ0FMX0RSTV9NT0RFX0ZCX01PRElGSUVS UywKKwkJICAgICAgIGZvcm1hdCwgdGlsaW5nLCBOVUxMLAorCQkgICAgICAgTE9DQUxfRFJNX01P REVfRkJfTU9ESUZJRVJTLAogCQkgICAgICAgJmRhdGEyW2ldLmZiLmZiX2lkKSk7CiAJCWlmIChy ZXQpIHsKIAkJCWlndF93YXJuKCJmYWlsZWQgdG8gY3JlYXRlIGZyYW1lYnVmZmVyXG4iKTsKZGlm ZiAtLWdpdCBhL3Rlc3RzL3ByaW1lX3ZnZW0uYyBiL3Rlc3RzL3ByaW1lX3ZnZW0uYwppbmRleCBh NWY3NWQ4ODhiZWYuLjc2M2M2MmU2MDZmNiAxMDA2NDQKLS0tIGEvdGVzdHMvcHJpbWVfdmdlbS5j CisrKyBiL3Rlc3RzL3ByaW1lX3ZnZW0uYwpAQCAtNzIzLDcgKzcyMyw3IEBAIHN0YXRpYyB2b2lk IHRlc3RfZmxpcChpbnQgaTkxNSwgaW50IHZnZW0sIHVuc2lnbmVkIGhhbmcpCiAKIAkJZG9fb3Jf ZGllKF9fa21zX2FkZGZiKGk5MTUsIGhhbmRsZVtpXSwKIAkJCQkgICAgICBib1tpXS53aWR0aCwg Ym9baV0uaGVpZ2h0LCBib1tpXS5waXRjaCwKLQkJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4 LCBJOTE1X1RJTElOR19OT05FLAorCQkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIEk5MTVf VElMSU5HX05PTkUsIE5VTEwsCiAJCQkJICAgICAgTE9DQUxfRFJNX01PREVfRkJfTU9ESUZJRVJT LCAmZmJfaWRbaV0pKTsKIAkJaWd0X2Fzc2VydChmYl9pZFtpXSk7CiAJfQotLSAKMi4xNS4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1h aWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK