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 851BB6E380 for ; Tue, 23 Jan 2018 12:56:56 +0000 (UTC) From: Maarten Lankhorst Date: Tue, 23 Jan 2018 13:56:40 +0100 Message-Id: <20180123125642.58698-7-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 6/8] lib/fb: Add support for creating planar framebuffers 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 c2lvbiB0byB0aGUgUkdCMjQgZm9ybWF0LgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ZiLmMg ICAgICAgICAgICAgfCA3NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0KIGxpYi9pZ3RfZmIuaCAgICAgICAgICAgICB8IDEwICsrKysrKysKIGxpYi9pb2N0 bF93cmFwcGVycy5jICAgICB8IDExICsrKysrLS0KIGxpYi9pb2N0bF93cmFwcGVycy5oICAgICB8 ICAyICstCiB0ZXN0cy9rbXNfZHJhd19jcmMuYyAgICAgfCAgMiArLQogdGVzdHMva21zX3JvdGF0 aW9uX2NyYy5jIHwgIDUgKystLQogdGVzdHMvcHJpbWVfdmdlbS5jICAgICAgIHwgIDIgKy0KIDcg ZmlsZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCmluZGV4IDEyNTFmNDYyZDI0ZS4uNGQ2 YjYyYTY0ZGVkIDEwMDY0NAotLS0gYS9saWIvaWd0X2ZiLmMKKysrIGIvbGliL2lndF9mYi5jCkBA IC0xNTgsMTQgKzE1OCwxOSBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXplKGludCBmZCwgdWlu dDY0X3QgdGlsaW5nLCBpbnQgZmJfYnBwLAogCX0KIH0KIAorc3RhdGljIHVuc2lnbmVkIHBsYW5h cl93aWR0aChzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQsIHVuc2lnbmVkIHdpZHRo LCBpbnQgcGxhbmUpCit7CisJaWYgKGZvcm1hdC0+ZHJtX2lkID09IERSTV9GT1JNQVRfTlYxMiAm JiBwbGFuZSA9PSAxKQorCQlyZXR1cm4gKHdpZHRoICsgMSkgLyAyOworCisJcmV0dXJuIHdpZHRo OworfQorCiBzdGF0aWMgdW5zaWduZWQgcGxhbmFyX3N0cmlkZShzdHJ1Y3QgZm9ybWF0X2Rlc2Nf c3RydWN0ICpmb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCBpbnQgcGxhbmUpCiB7CiAJdW5zaWduZWQg Y3BwID0gZm9ybWF0LT5wbGFuZV9icHBbcGxhbmVdIC8gODsKIAotCWlmIChmb3JtYXQtPmRybV9p ZCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxhbmUgPT0gMSkKLQkJcmV0dXJuICh3aWR0aCArIDEp IC8gMiAqIGNwcDsKLQotCXJldHVybiB3aWR0aCAqIGNwcDsKKwlyZXR1cm4gcGxhbmFyX3dpZHRo KGZvcm1hdCwgd2lkdGgsIHBsYW5lKSAqIGNwcDsKIH0KIAogc3RhdGljIHVuc2lnbmVkIHBsYW5h cl9oZWlnaHQoc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZm9ybWF0LCB1bnNpZ25lZCBoZWln aHQsIGludCBwbGFuZSkKQEAgLTMzMSw3ICszMzYsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9ib19m b3JfZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAJCQkgICAgc3RydWN0IGZvcm1h dF9kZXNjX3N0cnVjdCAqZm9ybWF0LAogCQkJICAgIHVpbnQ2NF90IHRpbGluZywgdW5zaWduZWQg c2l6ZSwgdW5zaWduZWQgc3RyaWRlLAogCQkJICAgIHVuc2lnbmVkICpzaXplX3JldCwgdW5zaWdu ZWQgKnN0cmlkZV9yZXQsCi0JCQkgICAgYm9vbCAqaXNfZHVtYikKKwkJCSAgICB1aW50MzJfdCAq b2Zmc2V0cywgYm9vbCAqaXNfZHVtYikKIHsKIAlpbnQgYm87CiAKQEAgLTM0MCw4ICszNDUsMTUg QEAgc3RhdGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVp Z2h0LAogCWlmICh0aWxpbmcgfHwgc2l6ZSB8fCBzdHJpZGUgfHwgZm9ybWF0LT5wbGFuZXMgPiAx KSB7CiAJCXVuc2lnbmVkIGNhbGN1bGF0ZWRfc2l6ZSwgY2FsY3VsYXRlZF9zdHJpZGU7CiAKLQkJ aWd0X2NhbGNfZmJfc2l6ZShmZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LT5kcm1faWQsIHRpbGlu ZywKLQkJCQkgJmNhbGN1bGF0ZWRfc2l6ZSwgJmNhbGN1bGF0ZWRfc3RyaWRlKTsKKwkJaWYgKGZv cm1hdC0+cGxhbmVzID4gMSkKKwkJCWNhbGNfZmJfc2l6ZV9wbGFuYXIoZmQsIHdpZHRoLCBoZWln aHQsIGZvcm1hdCwgdGlsaW5nLAorCQkJCQkgICAgJmNhbGN1bGF0ZWRfc2l6ZSwgJmNhbGN1bGF0 ZWRfc3RyaWRlLCBvZmZzZXRzKTsKKwkJZWxzZSB7CisJCQltZW1zZXQob2Zmc2V0cywgMCwgNCAq IHNpemVvZigqb2Zmc2V0cykpOworCQkJY2FsY19mYl9zaXplX3BhY2tlZChmZCwgd2lkdGgsIGhl aWdodCwgZm9ybWF0LCB0aWxpbmcsCisJCQkJCSAgICAmY2FsY3VsYXRlZF9zaXplLCAmY2FsY3Vs YXRlZF9zdHJpZGUpOworCQl9CisKIAkJaWYgKHN0cmlkZSA9PSAwKQogCQkJc3RyaWRlID0gY2Fs Y3VsYXRlZF9zdHJpZGU7CiAJCWlmIChzaXplID09IDApCkBAIC00MDcsNyArNDE5LDcgQEAgaW50 IGlndF9jcmVhdGVfYm9fd2l0aF9kaW1lbnNpb25zKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVp Z2h0LAogCQkJCSAgdW5zaWduZWQgKnN0cmlkZV9yZXQsIGJvb2wgKmlzX2R1bWIpCiB7CiAJcmV0 dXJuIGNyZWF0ZV9ib19mb3JfZmIoZmQsIHdpZHRoLCBoZWlnaHQsIGxvb2t1cF9kcm1fZm9ybWF0 KGZvcm1hdCksCi0JCQkJbW9kaWZpZXIsIDAsIHN0cmlkZSwgc2l6ZV9yZXQsIHN0cmlkZV9yZXQs IGlzX2R1bWIpOworCQkJCW1vZGlmaWVyLCAwLCBzdHJpZGUsIHNpemVfcmV0LCBzdHJpZGVfcmV0 LCBOVUxMLCBpc19kdW1iKTsKIH0KIAogLyoqCkBAIC03NDgsMTYgKzc2MCwyMCBAQCBpZ3RfY3Jl YXRlX2ZiX3dpdGhfYm9fc2l6ZShpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKIAkJCSAg IHN0cnVjdCBpZ3RfZmIgKmZiLCB1bnNpZ25lZCBib19zaXplLAogCQkJICAgdW5zaWduZWQgYm9f c3RyaWRlKQogeworCXN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zv cm1hdChmb3JtYXQpOwogCXVpbnQzMl90IGZiX2lkOworCWludCBpOworCisJaWd0X2Fzc2VydF9m KGYsICJEUk0gZm9ybWF0ICUwOHggbm90IGZvdW5kXG4iLCBmb3JtYXQpOwogCiAJbWVtc2V0KGZi LCAwLCBzaXplb2YoKmZiKSk7CiAKIAlpZ3RfZGVidWcoIiVzKHdpZHRoPSVkLCBoZWlnaHQ9JWQs IGZvcm1hdD0weCV4LCB0aWxpbmc9MHglIlBSSXg2NCIsIHNpemU9JWQpXG4iLAogCQkgIF9fZnVu Y19fLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRpbGluZywgYm9fc2l6ZSk7Ci0JZmItPmdlbV9o YW5kbGUgPSBjcmVhdGVfYm9fZm9yX2ZiKGZkLCB3aWR0aCwgaGVpZ2h0LAotCQkJCQkgIGxvb2t1 cF9kcm1fZm9ybWF0KGZvcm1hdCksCisJZmItPmdlbV9oYW5kbGUgPSBjcmVhdGVfYm9fZm9yX2Zi KGZkLCB3aWR0aCwgaGVpZ2h0LCBmLAogCQkJCQkgIHRpbGluZywgYm9fc2l6ZSwgYm9fc3RyaWRl LAotCQkJCQkgICZmYi0+c2l6ZSwgJmZiLT5zdHJpZGUsICZmYi0+aXNfZHVtYik7CisJCQkJCSAg JmZiLT5zaXplLCAmZmItPnN0cmlkZSwKKwkJCQkJICBmYi0+b2Zmc2V0cywgJmZiLT5pc19kdW1i KTsKIAlpZ3RfYXNzZXJ0KGZiLT5nZW1faGFuZGxlID4gMCk7CiAKIAlpZ3RfZGVidWcoIiVzKGhh bmRsZT0lZCwgcGl0Y2g9JWQpXG4iLApAQCAtNzY2LDIyICs3ODIsMjQgQEAgaWd0X2NyZWF0ZV9m Yl93aXRoX2JvX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAJaWYgKHRpbGlu ZyAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FICYmCiAJICAgIHRpbGluZyAhPSBMT0NBTF9J OTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkgewogCQlkb19vcl9kaWUoX19rbXNfYWRkZmIoZmQsIGZi LT5nZW1faGFuZGxlLCB3aWR0aCwgaGVpZ2h0LAotCQkJCSAgICAgIGZiLT5zdHJpZGUsIGZvcm1h dCwgdGlsaW5nLAorCQkJCSAgICAgIGZiLT5zdHJpZGUsIGZvcm1hdCwgdGlsaW5nLCBmYi0+b2Zm c2V0cywKIAkJCQkgICAgICBMT0NBTF9EUk1fTU9ERV9GQl9NT0RJRklFUlMsICZmYl9pZCkpOwog CX0gZWxzZSB7CiAJCXVpbnQzMl90IGhhbmRsZXNbNF07CiAJCXVpbnQzMl90IHBpdGNoZXNbNF07 Ci0JCXVpbnQzMl90IG9mZnNldHNbNF07CiAKIAkJbWVtc2V0KGhhbmRsZXMsIDAsIHNpemVvZiho YW5kbGVzKSk7CiAJCW1lbXNldChwaXRjaGVzLCAwLCBzaXplb2YocGl0Y2hlcykpOwotCQltZW1z ZXQob2Zmc2V0cywgMCwgc2l6ZW9mKG9mZnNldHMpKTsKIAogCQloYW5kbGVzWzBdID0gZmItPmdl bV9oYW5kbGU7CiAJCXBpdGNoZXNbMF0gPSBmYi0+c3RyaWRlOworCQlmb3IgKGkgPSAwOyBpIDwg Zi0+cGxhbmVzOyBpKyspIHsKKwkJCWhhbmRsZXNbaV0gPSBmYi0+Z2VtX2hhbmRsZTsKKwkJCXBp dGNoZXNbaV0gPSBmYi0+c3RyaWRlOworCQl9CiAKIAkJZG9fb3JfZGllKGRybU1vZGVBZGRGQjIo ZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwKLQkJCQkJaGFuZGxlcywgcGl0Y2hlcywgb2Zmc2V0 cywKKwkJCQkJaGFuZGxlcywgcGl0Y2hlcywgZmItPm9mZnNldHMsCiAJCQkJCSZmYl9pZCwgMCkp OwogCX0KIApAQCAtNzkxLDYgKzgwOSwxNyBAQCBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZShp bnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKIAlmYi0+ZHJtX2Zvcm1hdCA9IGZvcm1hdDsK IAlmYi0+ZmJfaWQgPSBmYl9pZDsKIAlmYi0+ZmQgPSBmZDsKKwlmYi0+bnVtX3BsYW5lcyA9IGYt PnBsYW5lcyA/OiAxOworCWZiLT5wbGFuZV9icHBbMF0gPSBmLT5icHA7CisJZmItPnBsYW5lX2hl aWdodFswXSA9IGhlaWdodDsKKwlmYi0+cGxhbmVfd2lkdGhbMF0gPSB3aWR0aDsKKworCS8qIGlm IGYtPnBsYW5lcyBpcyBzZXQsIHRoZW4gcGxhbmVfYnBwIGlzIHZhbGlkIHRvbyBzbyB1c2UgdGhh dC4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgZi0+cGxhbmVzOyBpKyspIHsKKwkJZmItPnBsYW5lX2Jw cFtpXSA9IGYtPnBsYW5lX2JwcFtpXTsKKwkJZmItPnBsYW5lX2hlaWdodFtpXSA9IHBsYW5hcl9o ZWlnaHQoZiwgaGVpZ2h0LCBpKTsKKwkJZmItPnBsYW5lX3dpZHRoW2ldID0gcGxhbmFyX3dpZHRo KGYsIHdpZHRoLCBpKTsKKwl9CiAKIAlyZXR1cm4gZmJfaWQ7CiB9CkBAIC0xMTI3LDcgKzExNTYs OCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX2JsaXQodm9pZCAqYXJnKQog CQkJCSAgIDAsIDAsIC8qIHNyY194LCBzcmNfeSAqLwogCQkJCSAgIGZiLT53aWR0aCwgZmItPmhl aWdodCwKIAkJCQkgICBpZ3RfZHJtX2Zvcm1hdF90b19icHAoZmItPmRybV9mb3JtYXQpLAotCQkJ CSAgIGZiLT5nZW1faGFuZGxlLCAwLAorCQkJCSAgIGZiLT5nZW1faGFuZGxlLAorCQkJCSAgIGZi LT5vZmZzZXRzWzBdLAogCQkJCSAgIGZiLT5zdHJpZGUsCiAJCQkJICAgb2JqX3RpbGluZywKIAkJ CQkgICAwLCAwIC8qIGRzdF94LCBkc3RfeSAqLyk7CkBAIC0xMTQzLDYgKzExNzMsNyBAQCBzdGF0 aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fYmxpdChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIg KmZiKQogCXN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdDsKIAljYWlyb19mb3JtYXRfdCBjYWly b19mb3JtYXQ7CiAJdW5zaWduZWQgaW50IG9ial90aWxpbmcgPSBpZ3RfZmJfbW9kX3RvX3RpbGlu ZyhmYi0+dGlsaW5nKTsKKwl1aW50MzJfdCBvZmZzZXRzWzRdOwogCiAJYmxpdCA9IG1hbGxvYyhz aXplb2YoKmJsaXQpKTsKIAlpZ3RfYXNzZXJ0KGJsaXQpOwpAQCAtMTE1Nyw3ICsxMTg4LDcgQEAg c3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2JsaXQoaW50IGZkLCBzdHJ1Y3QgaWd0 X2ZiICpmYikKIAkJCQkJICAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsIDAsCiAJCQkJ CSAgICAgICAwLCAmYmxpdC0+bGluZWFyLnNpemUsCiAJCQkJCSAgICAgICAmYmxpdC0+bGluZWFy LnN0cmlkZSwKLQkJCQkJICAgICAgICZibGl0LT5saW5lYXIuaXNfZHVtYik7CisJCQkJCSAgICAg ICBvZmZzZXRzLCAmYmxpdC0+bGluZWFyLmlzX2R1bWIpOwogCiAJaWd0X2Fzc2VydChibGl0LT5s aW5lYXIuaGFuZGxlID4gMCk7CiAKQEAgLTExNjksNyArMTIwMCw4IEBAIHN0YXRpYyB2b2lkIGNy ZWF0ZV9jYWlyb19zdXJmYWNlX19ibGl0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJCQlJ OTE1X0dFTV9ET01BSU5fR1RULCAwKTsKIAogCWlndF9ibGl0dGVyX2Zhc3RfY29weV9fcmF3KGZk LAotCQkJCSAgIGZiLT5nZW1faGFuZGxlLCAwLAorCQkJCSAgIGZiLT5nZW1faGFuZGxlLAorCQkJ CSAgIGZiLT5vZmZzZXRzWzBdLAogCQkJCSAgIGZiLT5zdHJpZGUsCiAJCQkJICAgb2JqX3RpbGlu ZywKIAkJCQkgICAwLCAwLCAvKiBzcmNfeCwgc3JjX3kgKi8KQEAgLTEyNTcsMTQgKzEyODksMTcg QEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2d0dChpbnQgZmQsIHN0cnVjdCBp Z3RfZmIgKmZiKQogICogQGZkOiBvcGVuIGRybSBmaWxlIGRlc2NyaXB0b3IKICAqIEBmYjogcG9p bnRlciB0byBhbiAjaWd0X2ZiIHN0cnVjdHVyZQogICoKLSAqIFRoaXMgZnVuY3Rpb24gc3RvcmVz IHRoZSBjb250ZW50cyBvZiB0aGUgc3VwcGxpZWQgZnJhbWVidWZmZXIgaW50byBhIGNhaXJvCi0g KiBzdXJmYWNlIGFuZCByZXR1cm5zIGl0LgorICogVGhpcyBmdW5jdGlvbiBzdG9yZXMgdGhlIGNv bnRlbnRzIG9mIHRoZSBzdXBwbGllZCBmcmFtZWJ1ZmZlcidzIHBsYW5lCisgKiBpbnRvIGEgY2Fp cm8gc3VyZmFjZSBhbmQgcmV0dXJucyBpdC4KICAqCiAgKiBSZXR1cm5zOgogICogQSBwb2ludGVy IHRvIGEgY2Fpcm8gc3VyZmFjZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgZnJhbWVidWZmZXIu CiAgKi8KIGNhaXJvX3N1cmZhY2VfdCAqaWd0X2dldF9jYWlyb19zdXJmYWNlKGludCBmZCwgc3Ry dWN0IGlndF9mYiAqZmIpCiB7CisJLyogVGhpcyBkb2Vzbid0IHdvcmsgZm9yIHBsYW5hciBmb3Jt YXRzIGZvciBub3csIGJ1dCB3ZSB3aWxsIGNvbnZlcnQgdGhlbSB0byBSR0IyNCBpbiB0aGUgZnV0 dXJlLiAqLworCWlndF9hc3NlcnQoZmItPm51bV9wbGFuZXMgPCAyKTsKKwogCWlmIChmYi0+Y2Fp cm9fc3VyZmFjZSA9PSBOVUxMKSB7CiAJCWlmIChmYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZX1RJTEVEIHx8CiAJCSAgICBmYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFU X01PRF9ZZl9USUxFRCkKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuaCBiL2xpYi9pZ3RfZmIuaApp bmRleCAxNTI3OThlOTg5NmIuLjc3ZmQ4OGJiN2FjYSAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5o CisrKyBiL2xpYi9pZ3RfZmIuaApAQCAtNTAsNiArNTAsMTEgQEAKICAqIEBzaXplOiBzaXplIGlu IGJ5dGVzIG9mIHRoZSB1bmRlcmx5aW5nIGJhY2tpbmcgc3RvcmFnZQogICogQGNhaXJvX3N1cmZh Y2U6IG9wdGlvbmFsbHkgYXR0YWNoZWQgY2Fpcm8gZHJhd2luZyBzdXJmYWNlCiAgKiBAZG9tYWlu OiBjdXJyZW50IGRvbWFpbiBmb3IgY2FjaGUgZmx1c2hpbmcgdHJhY2tpbmcgb24gaTkxNS5rbwor ICogQG51bV9wbGFuZXM6IEFtb3VudCBvZiBwbGFuZXMgb24gdGhpcyBmYi4gPjEgZm9yIHBsYW5h ciBmb3JtYXRzLgorICogQG9mZnNldHM6IE9mZnNldCBmb3IgZWFjaCBwbGFuZSBpbiBieXRlcy4K KyAqIEBwbGFuZV9icHA6IFRoZSBicHAgZm9yIGVhY2ggcGxhbmUuCisgKiBAcGxhbmVfd2lkdGg6 IFRoZSB3aWR0aCBmb3IgZWFjaCBwbGFuZS4KKyAqIEBwbGFuZV9oZWlnaHQ6IFRoZSBoZWlnaHQg Zm9yIGVhY2ggcGxhbmUuCiAgKgogICogVHJhY2tpbmcgc3RydWN0dXJlIGZvciBLTVMgZnJhbWVi dWZmZXIgb2JqZWN0cy4KICAqLwpAQCAtNjYsNiArNzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgaWd0 X2ZiIHsKIAl1bnNpZ25lZCBpbnQgc2l6ZTsKIAljYWlyb19zdXJmYWNlX3QgKmNhaXJvX3N1cmZh Y2U7CiAJdW5zaWduZWQgaW50IGRvbWFpbjsKKwl1bnNpZ25lZCBpbnQgbnVtX3BsYW5lczsKKwl1 aW50MzJfdCBvZmZzZXRzWzRdOworCXVuc2lnbmVkIGludCBwbGFuZV9icHBbNF07CisJdW5zaWdu ZWQgaW50IHBsYW5lX3dpZHRoWzRdOworCXVuc2lnbmVkIGludCBwbGFuZV9oZWlnaHRbNF07CiB9 IGlndF9mYl90OwogCiAvKioKZGlmZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5jIGIvbGli L2lvY3RsX3dyYXBwZXJzLmMKaW5kZXggMzllODQ2OWUzOTg1Li4xMGQ5NTg3MjZkYTcgMTAwNjQ0 Ci0tLSBhL2xpYi9pb2N0bF93cmFwcGVycy5jCisrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5jCkBA IC0xNjU5LDEwICsxNjU5LDEwIEBAIHZvaWQgaWd0X3JlcXVpcmVfZmJfbW9kaWZpZXJzKGludCBm ZCkKIAogaW50IF9fa21zX2FkZGZiKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB3 aWR0aCwgdWludDMyX3QgaGVpZ2h0LAogCQl1aW50MzJfdCBzdHJpZGUsIHVpbnQzMl90IHBpeGVs X2Zvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIsCi0JCXVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAq YnVmX2lkKQorCQl1aW50MzJfdCAqb2Zmc2V0cywgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpi dWZfaWQpCiB7CiAJc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgZjsKLQlpbnQgcmV0OworCWludCBy ZXQsIGk7CiAKIAlpZ3RfcmVxdWlyZV9mYl9tb2RpZmllcnMoZmQpOwogCkBAIC0xNjc2LDYgKzE2 NzYsMTMgQEAgaW50IF9fa21zX2FkZGZiKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJf dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAogCWYucGl0Y2hlc1swXSA9IHN0cmlkZTsKIAlmLm1v ZGlmaWVyWzBdID0gbW9kaWZpZXI7CiAKKwlmb3IgKGkgPSAxOyBpIDwgNCAmJiBvZmZzZXRzICYm IG9mZnNldHNbaV07IGkrKykgeworCQlmLmhhbmRsZXNbaV0gPSBoYW5kbGU7CisJCWYucGl0Y2hl c1tpXSA9IHN0cmlkZTsKKwkJZi5tb2RpZmllcltpXSA9IG1vZGlmaWVyOworCQlmLm9mZnNldHNb aV0gPSBvZmZzZXRzW2ldOworCX0KKwogCXJldCA9IGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX01P REVfQURERkIyLCAmZik7CiAKIAkqYnVmX2lkID0gZi5mYl9pZDsKZGlmZiAtLWdpdCBhL2xpYi9p b2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKaW5kZXggZjc3NTJhZWFiMmM0 Li4xM2ZiZTNjMTAzYzAgMTAwNjQ0Ci0tLSBhL2xpYi9pb2N0bF93cmFwcGVycy5oCisrKyBiL2xp Yi9pb2N0bF93cmFwcGVycy5oCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBpZ3RfcmVxdWlyZV9m Yl9tb2RpZmllcnMoaW50IGZkKTsKICAqLwogaW50IF9fa21zX2FkZGZiKGludCBmZCwgdWludDMy X3QgaGFuZGxlLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAogCQl1aW50MzJfdCBz dHJpZGUsIHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIsCi0JCXVpbnQz Ml90IGZsYWdzLCB1aW50MzJfdCAqYnVmX2lkKTsKKwkJdWludDMyX3QgKm9mZnNldHMsIHVpbnQz Ml90IGZsYWdzLCB1aW50MzJfdCAqYnVmX2lkKTsKIAogLyoqCiAgKiB0b191c2VyX3BvaW50ZXI6 CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZHJhd19jcmMuYyBiL3Rlc3RzL2ttc19kcmF3X2NyYy5j CmluZGV4IDcyM2U3YTE4MmM5NS4uODZkY2YzOTI4NWYzIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNf ZHJhd19jcmMuYworKysgYi90ZXN0cy9rbXNfZHJhd19jcmMuYwpAQCAtMTYzLDcgKzE2Myw3IEBA IHN0YXRpYyBib29sIGZvcm1hdF9pc19zdXBwb3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRf dCBtb2RpZmllcikKIAkJCQkJCSAgIGZvcm1hdCwgbW9kaWZpZXIsCiAJCQkJCQkgICAwLCBOVUxM LCAmc3RyaWRlLCBOVUxMKTsKIAlyZXQgPSAgX19rbXNfYWRkZmIoZHJtX2ZkLCBnZW1faGFuZGxl LCA2NCwgNjQsCi0JCQkgICBzdHJpZGUsIGZvcm1hdCwgbW9kaWZpZXIsCisJCQkgICBzdHJpZGUs IGZvcm1hdCwgbW9kaWZpZXIsIE5VTEwsCiAJCQkgICBMT0NBTF9EUk1fTU9ERV9GQl9NT0RJRklF UlMsICZmYl9pZCk7CiAJZHJtTW9kZVJtRkIoZHJtX2ZkLCBmYl9pZCk7CiAJZ2VtX2Nsb3NlKGRy bV9mZCwgZ2VtX2hhbmRsZSk7CmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMg Yi90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKaW5kZXggNWIxOTBhMGQwM2NiLi5mNjU1NjJiYWU5 ZWIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYworKysgYi90ZXN0cy9rbXNf cm90YXRpb25fY3JjLmMKQEAgLTUyMCw3ICs1MjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5l X3JvdGF0aW9uX3l0aWxlZF9vYmooZGF0YV90ICpkYXRhLAogCWlndF9hc3NlcnRfZXEocmV0LCAw KTsKIAogCWRvX29yX2RpZShfX2ttc19hZGRmYihmZCwgZ2VtX2hhbmRsZSwgdywgaCwgc3RyaWRl LAotCQkgIGZvcm1hdCwgdGlsaW5nLCBMT0NBTF9EUk1fTU9ERV9GQl9NT0RJRklFUlMsCisJCSAg Zm9ybWF0LCB0aWxpbmcsIE5VTEwsIExPQ0FMX0RSTV9NT0RFX0ZCX01PRElGSUVSUywKIAkJICAm ZGF0YS0+ZmIuZmJfaWQpKTsKIAlkYXRhLT5mYi53aWR0aCA9IHc7CiAJZGF0YS0+ZmIuaGVpZ2h0 ID0gaDsKQEAgLTYwMSw3ICs2MDEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9u X2V4aGF1c3RfZmVuY2VzKGRhdGFfdCAqZGF0YSwKIAkJfQogCiAJCXJldCA9IChfX2ttc19hZGRm YihmZCwgZ2VtX2hhbmRsZSwgdywgaCwgc3RyaWRlLAotCQkgICAgICAgZm9ybWF0LCB0aWxpbmcs IExPQ0FMX0RSTV9NT0RFX0ZCX01PRElGSUVSUywKKwkJICAgICAgIGZvcm1hdCwgdGlsaW5nLCBO VUxMLAorCQkgICAgICAgTE9DQUxfRFJNX01PREVfRkJfTU9ESUZJRVJTLAogCQkgICAgICAgJmRh dGEyW2ldLmZiLmZiX2lkKSk7CiAJCWlmIChyZXQpIHsKIAkJCWlndF93YXJuKCJmYWlsZWQgdG8g Y3JlYXRlIGZyYW1lYnVmZmVyXG4iKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3ByaW1lX3ZnZW0uYyBi L3Rlc3RzL3ByaW1lX3ZnZW0uYwppbmRleCBhNWY3NWQ4ODhiZWYuLjc2M2M2MmU2MDZmNiAxMDA2 NDQKLS0tIGEvdGVzdHMvcHJpbWVfdmdlbS5jCisrKyBiL3Rlc3RzL3ByaW1lX3ZnZW0uYwpAQCAt NzIzLDcgKzcyMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmxpcChpbnQgaTkxNSwgaW50IHZnZW0s IHVuc2lnbmVkIGhhbmcpCiAKIAkJZG9fb3JfZGllKF9fa21zX2FkZGZiKGk5MTUsIGhhbmRsZVtp XSwKIAkJCQkgICAgICBib1tpXS53aWR0aCwgYm9baV0uaGVpZ2h0LCBib1tpXS5waXRjaCwKLQkJ CQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBJOTE1X1RJTElOR19OT05FLAorCQkJCSAgICAg IERSTV9GT1JNQVRfWFJHQjg4ODgsIEk5MTVfVElMSU5HX05PTkUsIE5VTEwsCiAJCQkJICAgICAg TE9DQUxfRFJNX01PREVfRkJfTU9ESUZJRVJTLCAmZmJfaWRbaV0pKTsKIAkJaWd0X2Fzc2VydChm Yl9pZFtpXSk7CiAJfQotLSAKMi4xNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXYK