From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3EFFD6E8C1 for ; Fri, 28 Jun 2019 19:44:45 +0000 (UTC) From: Ville Syrjala Date: Fri, 28 Jun 2019 22:44:36 +0300 Message-Id: <20190628194438.2714-2-ville.syrjala@linux.intel.com> In-Reply-To: <20190628194438.2714-1-ville.syrjala@linux.intel.com> References: <20190628194438.2714-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/3] lib/igt_fb: Allow creating yuv fbs with different encodings/ranges 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: igt-dev@lists.freedesktop.org List-ID: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClBy b3ZpZGUgYWx0ZXJuYXRlIHZlcnNpb25zIG9mIHRoZSBmYiBjcmVhdGlvbiBmdW5jdGlvbnMgdGhh dCBhbGxvdwp0aGUgY2FsbGVyIHRvIHNwZWNpZnkgdGhlIHl1diBjb2xvciBlbmNvZGluZy9yYW5n ZS4KCkNjOiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGxp Yi9pZ3RfZmIuYyAgICAgICAgICAgICAgICAgICAgIHwgMjA3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0KIGxpYi9pZ3RfZmIuaCAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICsrKyst CiB0ZXN0cy9rbXNfZmxpcC5jICAgICAgICAgICAgICAgICB8ICAgNiArLQogdGVzdHMva21zX2Zy b250YnVmZmVyX3RyYWNraW5nLmMgfCAgIDYgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjE3IGluc2Vy dGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xp Yi9pZ3RfZmIuYwppbmRleCA0MTVhM2Q2NWQyNGIuLjg2OTg4ZDZjYTgwNSAxMDA2NDQKLS0tIGEv bGliL2lndF9mYi5jCisrKyBiL2xpYi9pZ3RfZmIuYwpAQCAtMTQxNSw2ICsxNDE1LDggQEAgdm9p ZCBpZ3RfcGFpbnRfaW1hZ2UoY2Fpcm9fdCAqY3IsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogICog QGhlaWdodDogaGVpZ2h0IG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbAogICogQGZvcm1hdDog ZHJtIGZvdXJjYyBwaXhlbCBmb3JtYXQgY29kZQogICogQG1vZGlmaWVyOiB0aWxpbmcgbGF5b3V0 IG9mIHRoZSBmcmFtZWJ1ZmZlciAoYXMgZnJhbWVidWZmZXIgbW9kaWZpZXIpCisgKiBAY29sb3Jf ZW5jb2Rpbmc6IGNvbG9yIGVuY29kaW5nIGZvciBZQ2JDciBmb3JtYXRzIChpZ25vcmVkIG90aGVy d2lzZSkKKyAqIEBjb2xvcl9yYW5nZTogY29sb3IgcmFuZ2UgZm9yIFlDYkNyIGZvcm1hdHMgKGln bm9yZWQgb3RoZXJ3aXNlKQogICogQGZiOiBwb2ludGVyIHRvIGFuICNpZ3RfZmIgc3RydWN0dXJl CiAgKiBAYm9fc2l6ZTogc2l6ZSBvZiB0aGUgYmFja2luZyBibyAoMCBmb3IgYXV0b21hdGljIHNp emUpCiAgKiBAYm9fc3RyaWRlOiBzdHJpZGUgb2YgdGhlIGJhY2tpbmcgYm8gKDAgZm9yIGF1dG9t YXRpYyBzdHJpZGUpCkBAIC0xNDMyLDEyICsxNDM0LDExIEBAIHZvaWQgaWd0X3BhaW50X2ltYWdl KGNhaXJvX3QgKmNyLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKIHVuc2lnbmVkIGludAogaWd0X2Ny ZWF0ZV9mYl93aXRoX2JvX3NpemUoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAJCQkg ICB1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyLAorCQkJICAgZW51bSBpZ3RfY29s b3JfZW5jb2RpbmcgY29sb3JfZW5jb2RpbmcsCisJCQkgICBlbnVtIGlndF9jb2xvcl9yYW5nZSBj b2xvcl9yYW5nZSwKIAkJCSAgIHN0cnVjdCBpZ3RfZmIgKmZiLCB1aW50NjRfdCBib19zaXplLAog CQkJICAgdW5zaWduZWQgYm9fc3RyaWRlKQogewotCS8qIEZJWE1FIGFsbG93IHRoZSBjYWxsZXIg dG8gcGFzcyB0aGVzZSBpbiAqLwotCWVudW0gaWd0X2NvbG9yX2VuY29kaW5nIGNvbG9yX2VuY29k aW5nID0gSUdUX0NPTE9SX1lDQkNSX0JUNzA5OwotCWVudW0gaWd0X2NvbG9yX3JhbmdlIGNvbG9y X3JhbmdlID0gSUdUX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0U7CiAJdWludDMyX3QgZmxhZ3Mg PSAwOwogCiAJZmJfaW5pdChmYiwgZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbW9kaWZpZXIs CkBAIC0xNDcxLDYgKzE0NzIsMzggQEAgaWd0X2NyZWF0ZV9mYl93aXRoX2JvX3NpemUoaW50IGZk LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAJcmV0dXJuIGZiLT5mYl9pZDsKIH0KIAorLyoqCisg KiBpZ3RfY3JlYXRlX2ZiX2Z1bGw6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlw dG9yCisgKiBAd2lkdGg6IHdpZHRoIG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbAorICogQGhl aWdodDogaGVpZ2h0IG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbAorICogQGZvcm1hdDogZHJt IGZvdXJjYyBwaXhlbCBmb3JtYXQgY29kZQorICogQG1vZGlmaWVyOiB0aWxpbmcgbGF5b3V0IG9m IHRoZSBmcmFtZWJ1ZmZlcgorICogQGNvbG9yX2VuY29kaW5nOiBjb2xvciBlbmNvZGluZyBmb3Ig WUNiQ3IgZm9ybWF0cyAoaWdub3JlZCBvdGhlcndpc2UpCisgKiBAY29sb3JfcmFuZ2U6IGNvbG9y IHJhbmdlIGZvciBZQ2JDciBmb3JtYXRzIChpZ25vcmVkIG90aGVyd2lzZSkKKyAqIEBmYjogcG9p bnRlciB0byBhbiAjaWd0X2ZiIHN0cnVjdHVyZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gYWxsb2Nh dGVzIGEgZ2VtIGJ1ZmZlciBvYmplY3Qgc3VpdGFibGUgdG8gYmFjayBhIGZyYW1lYnVmZmVyCisg KiB3aXRoIHRoZSByZXF1ZXN0ZWQgcHJvcGVydGllcyBhbmQgdGhlbiB3cmFwcyBpdCB1cCBpbiBh IGRybSBmcmFtZWJ1ZmZlcgorICogb2JqZWN0LiBBbGwgbWV0YWRhdGEgaXMgc3RvcmVkIGluIEBm Yi4KKyAqCisgKiBUaGUgYmFja2luZyBzdG9yYWdlIG9mIHRoZSBmcmFtZWJ1ZmZlciBpcyBmaWxs ZWQgd2l0aCBhbGwgemVyb3MsIGkuZS4gYmxhY2sKKyAqIGZvciByZ2IgcGl4ZWwgZm9ybWF0cy4K KyAqCisgKiBSZXR1cm5zOgorICogVGhlIGttcyBpZCBvZiB0aGUgY3JlYXRlZCBmcmFtZWJ1ZmZl ci4KKyAqLwordW5zaWduZWQgaW50IGlndF9jcmVhdGVfZmJfZnVsbChpbnQgZmQsIGludCB3aWR0 aCwgaW50IGhlaWdodCwKKwkJCQl1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyLAor CQkJCWVudW0gaWd0X2NvbG9yX2VuY29kaW5nIGNvbG9yX2VuY29kaW5nLAorCQkJCWVudW0gaWd0 X2NvbG9yX3JhbmdlIGNvbG9yX3JhbmdlLAorCQkJCXN0cnVjdCBpZ3RfZmIgKmZiKQoreworCXJl dHVybiBpZ3RfY3JlYXRlX2ZiX3dpdGhfYm9fc2l6ZShmZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0 LCBtb2RpZmllciwKKwkJCQkJICBjb2xvcl9lbmNvZGluZywgY29sb3JfcmFuZ2UsCisJCQkJCSAg ZmIsIDAsIDApOworfQorCiAvKioKICAqIGlndF9jcmVhdGVfZmI6CiAgKiBAZmQ6IG9wZW4gaTkx NSBkcm0gZmlsZSBkZXNjcmlwdG9yCkBAIC0xNDkwLDExICsxNTIzLDU5IEBAIGlndF9jcmVhdGVf ZmJfd2l0aF9ib19zaXplKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogICogUmV0dXJu czoKICAqIFRoZSBrbXMgaWQgb2YgdGhlIGNyZWF0ZWQgZnJhbWVidWZmZXIuCiAgKi8KLXVuc2ln bmVkIGludCBpZ3RfY3JlYXRlX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50 MzJfdCBmb3JtYXQsCi0JCQkgICB1aW50NjRfdCBtb2RpZmllciwgc3RydWN0IGlndF9mYiAqZmIp Cit1bnNpZ25lZCBpbnQgaWd0X2NyZWF0ZV9mYihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdo dCwKKwkJCSAgIHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIsCisJCQkgICBzdHJ1 Y3QgaWd0X2ZiICpmYikKIHsKLQlyZXR1cm4gaWd0X2NyZWF0ZV9mYl93aXRoX2JvX3NpemUoZmQs IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbW9kaWZpZXIsIGZiLAotCQkJCQkgIDAsIDApOworCXJl dHVybiBpZ3RfY3JlYXRlX2ZiX2Z1bGwoZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbW9kaWZp ZXIsCisJCQkJICBJR1RfQ09MT1JfWUNCQ1JfQlQ3MDksCisJCQkJICBJR1RfQ09MT1JfWUNCQ1Jf TElNSVRFRF9SQU5HRSwgZmIpOworfQorCisvKioKKyAqIGlndF9jcmVhdGVfY29sb3JfZmJfZnVs bDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEB3aWR0aDogd2lk dGggb2YgdGhlIGZyYW1lYnVmZmVyIGluIHBpeGVsCisgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgdGhl IGZyYW1lYnVmZmVyIGluIHBpeGVsCisgKiBAZm9ybWF0OiBkcm0gZm91cmNjIHBpeGVsIGZvcm1h dCBjb2RlCisgKiBAbW9kaWZpZXI6IHRpbGluZyBsYXlvdXQgb2YgdGhlIGZyYW1lYnVmZmVyCisg KiBAY29sb3JfZW5jb2Rpbmc6IGNvbG9yIGVuY29kaW5nIGZvciBZQ2JDciBmb3JtYXRzIChpZ25v cmVkIG90aGVyd2lzZSkKKyAqIEBjb2xvcl9yYW5nZTogY29sb3IgcmFuZ2UgZm9yIFlDYkNyIGZv cm1hdHMgKGlnbm9yZWQgb3RoZXJ3aXNlKQorICogQHI6IHJlZCB2YWx1ZSB0byB1c2UgYXMgZmls bCBjb2xvcgorICogQGc6IGdyZWVuIHZhbHVlIHRvIHVzZSBhcyBmaWxsIGNvbG9yCisgKiBAYjog Ymx1ZSB2YWx1ZSB0byB1c2UgYXMgZmlsbCBjb2xvcgorICogQGZiOiBwb2ludGVyIHRvIGFuICNp Z3RfZmIgc3RydWN0dXJlCisgKgorICogVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgYSBnZW0gYnVm ZmVyIG9iamVjdCBzdWl0YWJsZSB0byBiYWNrIGEgZnJhbWVidWZmZXIKKyAqIHdpdGggdGhlIHJl cXVlc3RlZCBwcm9wZXJ0aWVzIGFuZCB0aGVuIHdyYXBzIGl0IHVwIGluIGEgZHJtIGZyYW1lYnVm ZmVyCisgKiBvYmplY3QuIEFsbCBtZXRhZGF0YSBpcyBzdG9yZWQgaW4gQGZiLgorICoKKyAqIENv bXBhcmVkIHRvIGlndF9jcmVhdGVfZmIoKSB0aGlzIGZ1bmN0aW9uIGFsc28gZmlsbHMgdGhlIGVu dGlyZSBmcmFtZWJ1ZmZlcgorICogd2l0aCB0aGUgZ2l2ZW4gY29sb3IsIHdoaWNoIGlzIHVzZWZ1 bCBmb3Igc29tZSBzaW1wbGUgcGlwZSBjcmMgYmFzZWQgdGVzdHMuCisgKgorICogUmV0dXJuczoK KyAqIFRoZSBrbXMgaWQgb2YgdGhlIGNyZWF0ZWQgZnJhbWVidWZmZXIgb24gc3VjY2VzcyBvciBh IG5lZ2F0aXZlIGVycm9yIGNvZGUgb24KKyAqIGZhaWx1cmUuCisgKi8KK3Vuc2lnbmVkIGludCBp Z3RfY3JlYXRlX2NvbG9yX2ZiX2Z1bGwoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJ CQkJICAgICAgdWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllciwKKwkJCQkgICAgICBl bnVtIGlndF9jb2xvcl9lbmNvZGluZyBjb2xvcl9lbmNvZGluZywKKwkJCQkgICAgICBlbnVtIGln dF9jb2xvcl9yYW5nZSBjb2xvcl9yYW5nZSwKKwkJCQkgICAgICBkb3VibGUgciwgZG91YmxlIGcs IGRvdWJsZSBiLAorCQkJCSAgICAgIHN0cnVjdCBpZ3RfZmIgKmZiIC8qIG91dAkgKi8pCit7CisJ dW5zaWduZWQgaW50IGZiX2lkOworCWNhaXJvX3QgKmNyOworCisJZmJfaWQgPSBpZ3RfY3JlYXRl X2ZiX2Z1bGwoZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbW9kaWZpZXIsCisJCQkJICAgY29s b3JfZW5jb2RpbmcsIGNvbG9yX3JhbmdlLCBmYik7CisJaWd0X2Fzc2VydChmYl9pZCk7CisKKwlj ciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZkLCBmYik7CisJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAw LCB3aWR0aCwgaGVpZ2h0LCByLCBnLCBiKTsKKwlpZ3RfcHV0X2NhaXJvX2N0eChmZCwgZmIsIGNy KTsKKworCXJldHVybiBmYl9pZDsKIH0KIAogLyoqCkBAIC0xNTI0LDE1ICsxNjA1LDUxIEBAIHVu c2lnbmVkIGludCBpZ3RfY3JlYXRlX2NvbG9yX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVp Z2h0LAogCQkJCSB1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyLAogCQkJCSBkb3Vi bGUgciwgZG91YmxlIGcsIGRvdWJsZSBiLAogCQkJCSBzdHJ1Y3QgaWd0X2ZiICpmYiAvKiBvdXQg Ki8pCit7CisJcmV0dXJuIGlndF9jcmVhdGVfY29sb3JfZmJfZnVsbChmZCwgd2lkdGgsIGhlaWdo dCwKKwkJCQkJZm9ybWF0LCBtb2RpZmllciwKKwkJCQkJSUdUX0NPTE9SX1lDQkNSX0JUNzA5LAor CQkJCQlJR1RfQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSwKKwkJCQkJciwgZywgYiwgZmIpOwor fQorCisvKioKKyAqIGlndF9jcmVhdGVfcGF0dGVybl9mYl9mdWxsOgorICogQGZkOiBvcGVuIGk5 MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQHdpZHRoOiB3aWR0aCBvZiB0aGUgZnJhbWVidWZm ZXIgaW4gcGl4ZWwKKyAqIEBoZWlnaHQ6IGhlaWdodCBvZiB0aGUgZnJhbWVidWZmZXIgaW4gcGl4 ZWwKKyAqIEBmb3JtYXQ6IGRybSBmb3VyY2MgcGl4ZWwgZm9ybWF0IGNvZGUKKyAqIEBtb2RpZmll cjogdGlsaW5nIGxheW91dCBvZiB0aGUgZnJhbWVidWZmZXIKKyAqIEBjb2xvcl9lbmNvZGluZzog Y29sb3IgZW5jb2RpbmcgZm9yIFlDYkNyIGZvcm1hdHMgKGlnbm9yZWQgb3RoZXJ3aXNlKQorICog QGNvbG9yX3JhbmdlOiBjb2xvciByYW5nZSBmb3IgWUNiQ3IgZm9ybWF0cyAoaWdub3JlZCBvdGhl cndpc2UpCisgKiBAZmI6IHBvaW50ZXIgdG8gYW4gI2lndF9mYiBzdHJ1Y3R1cmUKKyAqCisgKiBU aGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBhIGdlbSBidWZmZXIgb2JqZWN0IHN1aXRhYmxlIHRvIGJh Y2sgYSBmcmFtZWJ1ZmZlcgorICogd2l0aCB0aGUgcmVxdWVzdGVkIHByb3BlcnRpZXMgYW5kIHRo ZW4gd3JhcHMgaXQgdXAgaW4gYSBkcm0gZnJhbWVidWZmZXIKKyAqIG9iamVjdC4gQWxsIG1ldGFk YXRhIGlzIHN0b3JlZCBpbiBAZmIuCisgKgorICogQ29tcGFyZWQgdG8gaWd0X2NyZWF0ZV9mYigp IHRoaXMgZnVuY3Rpb24gYWxzbyBkcmF3cyB0aGUgc3RhbmRhcmQgdGVzdCBwYXR0ZXJuCisgKiBp bnRvIHRoZSBmcmFtZWJ1ZmZlci4KKyAqCisgKiBSZXR1cm5zOgorICogVGhlIGttcyBpZCBvZiB0 aGUgY3JlYXRlZCBmcmFtZWJ1ZmZlciBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29k ZSBvbgorICogZmFpbHVyZS4KKyAqLwordW5zaWduZWQgaW50IGlndF9jcmVhdGVfcGF0dGVybl9m Yl9mdWxsKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAorCQkJCQl1aW50MzJfdCBmb3Jt YXQsIHVpbnQ2NF90IG1vZGlmaWVyLAorCQkJCQllbnVtIGlndF9jb2xvcl9lbmNvZGluZyBjb2xv cl9lbmNvZGluZywKKwkJCQkJZW51bSBpZ3RfY29sb3JfcmFuZ2UgY29sb3JfcmFuZ2UsCisJCQkJ CXN0cnVjdCBpZ3RfZmIgKmZiIC8qIG91dCAqLykKIHsKIAl1bnNpZ25lZCBpbnQgZmJfaWQ7CiAJ Y2Fpcm9fdCAqY3I7CiAKLQlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZmQsIHdpZHRoLCBoZWlnaHQs IGZvcm1hdCwgbW9kaWZpZXIsIGZiKTsKKwlmYl9pZCA9IGlndF9jcmVhdGVfZmJfZnVsbChmZCwg d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBtb2RpZmllciwKKwkJCQkgICBjb2xvcl9lbmNvZGluZywg Y29sb3JfcmFuZ2UsIGZiKTsKIAlpZ3RfYXNzZXJ0KGZiX2lkKTsKIAogCWNyID0gaWd0X2dldF9j YWlyb19jdHgoZmQsIGZiKTsKLQlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIDAsIHdpZHRoLCBoZWln aHQsIHIsIGcsIGIpOworCWlndF9wYWludF90ZXN0X3BhdHRlcm4oY3IsIHdpZHRoLCBoZWlnaHQp OwogCWlndF9wdXRfY2Fpcm9fY3R4KGZkLCBmYiwgY3IpOwogCiAJcmV0dXJuIGZiX2lkOwpAQCAt MTU2MSwxNCArMTY3OCw1NiBAQCB1bnNpZ25lZCBpbnQgaWd0X2NyZWF0ZV9jb2xvcl9mYihpbnQg ZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKIHVuc2lnbmVkIGludCBpZ3RfY3JlYXRlX3BhdHRl cm5fZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAJCQkJICAgdWludDMyX3QgZm9y bWF0LCB1aW50NjRfdCBtb2RpZmllciwKIAkJCQkgICBzdHJ1Y3QgaWd0X2ZiICpmYiAvKiBvdXQg Ki8pCit7CisJcmV0dXJuIGlndF9jcmVhdGVfcGF0dGVybl9mYl9mdWxsKGZkLCB3aWR0aCwgaGVp Z2h0LAorCQkJCQkgIGZvcm1hdCwgbW9kaWZpZXIsCisJCQkJCSAgSUdUX0NPTE9SX1lDQkNSX0JU NzA5LAorCQkJCQkgIElHVF9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFLAorCQkJCQkgIGZiKTsK K30KKworLyoqCisgKiBpZ3RfY3JlYXRlX2NvbG9yX3BhdHRlcm5fZmJfZnVsbDoKKyAqIEBmZDog b3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEB3aWR0aDogd2lkdGggb2YgdGhlIGZy YW1lYnVmZmVyIGluIHBpeGVsCisgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgdGhlIGZyYW1lYnVmZmVy IGluIHBpeGVsCisgKiBAZm9ybWF0OiBkcm0gZm91cmNjIHBpeGVsIGZvcm1hdCBjb2RlCisgKiBA bW9kaWZpZXI6IHRpbGluZyBsYXlvdXQgb2YgdGhlIGZyYW1lYnVmZmVyCisgKiBAY29sb3JfZW5j b2Rpbmc6IGNvbG9yIGVuY29kaW5nIGZvciBZQ2JDciBmb3JtYXRzIChpZ25vcmVkIG90aGVyd2lz ZSkKKyAqIEBjb2xvcl9yYW5nZTogY29sb3IgcmFuZ2UgZm9yIFlDYkNyIGZvcm1hdHMgKGlnbm9y ZWQgb3RoZXJ3aXNlKQorICogQHI6IHJlZCB2YWx1ZSB0byB1c2UgYXMgZmlsbCBjb2xvcgorICog QGc6IGdyZWVuIHZhbHVlIHRvIHVzZSBhcyBmaWxsIGNvbG9yCisgKiBAYjogYmx1ZSB2YWx1ZSB0 byB1c2UgYXMgZmlsbCBjb2xvcgorICogQGZiOiBwb2ludGVyIHRvIGFuICNpZ3RfZmIgc3RydWN0 dXJlCisgKgorICogVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgYSBnZW0gYnVmZmVyIG9iamVjdCBz dWl0YWJsZSB0byBiYWNrIGEgZnJhbWVidWZmZXIKKyAqIHdpdGggdGhlIHJlcXVlc3RlZCBwcm9w ZXJ0aWVzIGFuZCB0aGVuIHdyYXBzIGl0IHVwIGluIGEgZHJtIGZyYW1lYnVmZmVyCisgKiBvYmpl Y3QuIEFsbCBtZXRhZGF0YSBpcyBzdG9yZWQgaW4gQGZiLgorICoKKyAqIENvbXBhcmVkIHRvIGln dF9jcmVhdGVfZmIoKSB0aGlzIGZ1bmN0aW9uIGFsc28gZmlsbHMgdGhlIGVudGlyZSBmcmFtZWJ1 ZmZlcgorICogd2l0aCB0aGUgZ2l2ZW4gY29sb3IsIGFuZCB0aGVuIGRyYXdzIHRoZSBzdGFuZGFy ZCB0ZXN0IHBhdHRlcm4gaW50byB0aGUKKyAqIGZyYW1lYnVmZmVyLgorICoKKyAqIFJldHVybnM6 CisgKiBUaGUga21zIGlkIG9mIHRoZSBjcmVhdGVkIGZyYW1lYnVmZmVyIG9uIHN1Y2Nlc3Mgb3Ig YSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uCisgKiBmYWlsdXJlLgorICovCit1bnNpZ25lZCBpbnQg aWd0X2NyZWF0ZV9jb2xvcl9wYXR0ZXJuX2ZiX2Z1bGwoaW50IGZkLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQsCisJCQkJCSAgICAgIHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIsCisJ CQkJCSAgICAgIGVudW0gaWd0X2NvbG9yX2VuY29kaW5nIGNvbG9yX2VuY29kaW5nLAorCQkJCQkg ICAgICBlbnVtIGlndF9jb2xvcl9yYW5nZSBjb2xvcl9yYW5nZSwKKwkJCQkJICAgICAgZG91Ymxl IHIsIGRvdWJsZSBnLCBkb3VibGUgYiwKKwkJCQkJICAgICAgc3RydWN0IGlndF9mYiAqZmIgLyog b3V0CSAqLykKIHsKIAl1bnNpZ25lZCBpbnQgZmJfaWQ7CiAJY2Fpcm9fdCAqY3I7CiAKLQlmYl9p ZCA9IGlndF9jcmVhdGVfZmIoZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbW9kaWZpZXIsIGZi KTsKKwlmYl9pZCA9IGlndF9jcmVhdGVfZmJfZnVsbChmZCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0 LCBtb2RpZmllciwKKwkJCQkgICBjb2xvcl9lbmNvZGluZywgY29sb3JfcmFuZ2UsIGZiKTsKIAlp Z3RfYXNzZXJ0KGZiX2lkKTsKIAogCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZmQsIGZiKTsKKwlp Z3RfcGFpbnRfY29sb3IoY3IsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIHIsIGcsIGIpOwogCWlndF9w YWludF90ZXN0X3BhdHRlcm4oY3IsIHdpZHRoLCBoZWlnaHQpOwogCWlndF9wdXRfY2Fpcm9fY3R4 KGZkLCBmYiwgY3IpOwogCkBAIC0xNTgyLDYgKzE3NDEsOCBAQCB1bnNpZ25lZCBpbnQgaWd0X2Ny ZWF0ZV9wYXR0ZXJuX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogICogQGhlaWdo dDogaGVpZ2h0IG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbAogICogQGZvcm1hdDogZHJtIGZv dXJjYyBwaXhlbCBmb3JtYXQgY29kZQogICogQG1vZGlmaWVyOiB0aWxpbmcgbGF5b3V0IG9mIHRo ZSBmcmFtZWJ1ZmZlcgorICogQGNvbG9yX2VuY29kaW5nOiBjb2xvciBlbmNvZGluZyBmb3IgWUNi Q3IgZm9ybWF0cyAoaWdub3JlZCBvdGhlcndpc2UpCisgKiBAY29sb3JfcmFuZ2U6IGNvbG9yIHJh bmdlIGZvciBZQ2JDciBmb3JtYXRzIChpZ25vcmVkIG90aGVyd2lzZSkKICAqIEByOiByZWQgdmFs dWUgdG8gdXNlIGFzIGZpbGwgY29sb3IKICAqIEBnOiBncmVlbiB2YWx1ZSB0byB1c2UgYXMgZmls bCBjb2xvcgogICogQGI6IGJsdWUgdmFsdWUgdG8gdXNlIGFzIGZpbGwgY29sb3IKQEAgLTE2MDQs MTggKzE3NjUsMTEgQEAgdW5zaWduZWQgaW50IGlndF9jcmVhdGVfY29sb3JfcGF0dGVybl9mYihp bnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKIAkJCQkJIGRvdWJsZSByLCBkb3VibGUgZywg ZG91YmxlIGIsCiAJCQkJCSBzdHJ1Y3QgaWd0X2ZiICpmYiAvKiBvdXQgKi8pCiB7Ci0JdW5zaWdu ZWQgaW50IGZiX2lkOwotCWNhaXJvX3QgKmNyOwotCi0JZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGZk LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIG1vZGlmaWVyLCBmYik7Ci0JaWd0X2Fzc2VydChmYl9p ZCk7Ci0KLQljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZkLCBmYik7Ci0JaWd0X3BhaW50X2NvbG9y KGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCByLCBnLCBiKTsKLQlpZ3RfcGFpbnRfdGVzdF9wYXR0 ZXJuKGNyLCB3aWR0aCwgaGVpZ2h0KTsKLQlpZ3RfcHV0X2NhaXJvX2N0eChmZCwgZmIsIGNyKTsK LQotCXJldHVybiBmYl9pZDsKKwlyZXR1cm4gaWd0X2NyZWF0ZV9jb2xvcl9wYXR0ZXJuX2ZiX2Z1 bGwoZmQsIHdpZHRoLCBoZWlnaHQsCisJCQkJCQlmb3JtYXQsIG1vZGlmaWVyLAorCQkJCQkJSUdU X0NPTE9SX1lDQkNSX0JUNzA5LAorCQkJCQkJSUdUX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0Us CisJCQkJCQlyLCBnLCBiLCBmYik7CiB9CiAKIC8qKgpAQCAtMTc0NSw4ICsxODk5LDggQEAgdW5z aWduZWQgaW50IGlndF9jcmVhdGVfc3RlcmVvX2ZiKGludCBkcm1fZmQsIGRybU1vZGVNb2RlSW5m byAqbW9kZSwKIAlzdHJ1Y3QgaWd0X2ZiIGZiOwogCiAJc3RlcmVvX2ZiX2xheW91dF9mcm9tX21v ZGUoJmxheW91dCwgbW9kZSk7Ci0JZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRybV9mZCwgbGF5b3V0 LmZiX3dpZHRoLCBsYXlvdXQuZmJfaGVpZ2h0LCBmb3JtYXQsCi0JCQkgICAgICBtb2RpZmllciwg JmZiKTsKKwlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZHJtX2ZkLCBsYXlvdXQuZmJfd2lkdGgsIGxh eW91dC5mYl9oZWlnaHQsCisJCQkgICAgICBmb3JtYXQsIG1vZGlmaWVyLCAmZmIpOwogCWNyID0g aWd0X2dldF9jYWlyb19jdHgoZHJtX2ZkLCAmZmIpOwogCiAJaWd0X3BhaW50X2ltYWdlKGNyLCAi MTA4MHAtbGVmdC5wbmciLApAQCAtMzMyOSw3ICszNDgzLDEwIEBAIHVuc2lnbmVkIGludCBpZ3Rf ZmJfY29udmVydF93aXRoX3N0cmlkZShzdHJ1Y3QgaWd0X2ZiICpkc3QsIHN0cnVjdCBpZ3RfZmIg KnNyYywKIAogCWZiX2lkID0gaWd0X2NyZWF0ZV9mYl93aXRoX2JvX3NpemUoc3JjLT5mZCwgc3Jj LT53aWR0aCwKIAkJCQkJICAgc3JjLT5oZWlnaHQsIGRzdF9mb3VyY2MsCi0JCQkJCSAgIGRzdF9t b2RpZmllciwgZHN0LCAwLAorCQkJCQkgICBkc3RfbW9kaWZpZXIsCisJCQkJCSAgIElHVF9DT0xP Ul9ZQ0JDUl9CVDcwOSwKKwkJCQkJICAgSUdUX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0UsCisJ CQkJCSAgIGRzdCwgMCwKIAkJCQkJICAgZHN0X3N0cmlkZSk7CiAJaWd0X2Fzc2VydChmYl9pZCA+ IDApOwogCmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmggYi9saWIvaWd0X2ZiLmgKaW5kZXggYmU3 ODY5MTFkNTc3Li5kYjkzNmIxNjA4YTYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZmIuaAorKysgYi9s aWIvaWd0X2ZiLmgKQEAgLTEyMCwxNyArMTIwLDQyIEBAIHZvaWQgaWd0X2NhbGNfZmJfc2l6ZShp bnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBt CiB1bnNpZ25lZCBpbnQKIGlndF9jcmVhdGVfZmJfd2l0aF9ib19zaXplKGludCBmZCwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LAogCQkJICAgdWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmll ciwKKwkJCSAgIGVudW0gaWd0X2NvbG9yX2VuY29kaW5nIGNvbG9yX2VuY29kaW5nLAorCQkJICAg ZW51bSBpZ3RfY29sb3JfcmFuZ2UgY29sb3JfcmFuZ2UsCiAJCQkgICBzdHJ1Y3QgaWd0X2ZiICpm YiwgdWludDY0X3QgYm9fc2l6ZSwKIAkJCSAgIHVuc2lnbmVkIGJvX3N0cmlkZSk7Ci11bnNpZ25l ZCBpbnQgaWd0X2NyZWF0ZV9mYihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMy X3QgZm9ybWF0LAotCQkJICAgdWludDY0X3QgbW9kaWZpZXIsIHN0cnVjdCBpZ3RfZmIgKmZiKTsK K3Vuc2lnbmVkIGludCBpZ3RfY3JlYXRlX2ZiX2Z1bGwoaW50IGZkLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQsCisJCQkJdWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllciwKKwkJCQllbnVt IGlndF9jb2xvcl9lbmNvZGluZyBjb2xvcl9lbmNvZGluZywKKwkJCQllbnVtIGlndF9jb2xvcl9y YW5nZSBjb2xvcl9yYW5nZSwKKwkJCQlzdHJ1Y3QgaWd0X2ZiICpmYiAvKiBvdXQgKi8pOwordW5z aWduZWQgaW50IGlndF9jcmVhdGVfZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJ CQkgICB1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyLAorCQkJICAgc3RydWN0IGln dF9mYiAqZmIgLyogb3V0ICovKTsKK3Vuc2lnbmVkIGludCBpZ3RfY3JlYXRlX2NvbG9yX2ZiX2Z1 bGwoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJCQkJICAgICAgdWludDMyX3QgZm9y bWF0LCB1aW50NjRfdCBtb2RpZmllciwKKwkJCQkgICAgICBlbnVtIGlndF9jb2xvcl9lbmNvZGlu ZyBjb2xvcl9lbmNvZGluZywKKwkJCQkgICAgICBlbnVtIGlndF9jb2xvcl9yYW5nZSBjb2xvcl9y YW5nZSwKKwkJCQkgICAgICBkb3VibGUgciwgZG91YmxlIGcsIGRvdWJsZSBiLAorCQkJCSAgICAg IHN0cnVjdCBpZ3RfZmIgKmZiIC8qIG91dCAqLyk7CiB1bnNpZ25lZCBpbnQgaWd0X2NyZWF0ZV9j b2xvcl9mYihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKIAkJCQkgdWludDMyX3QgZm9y bWF0LCB1aW50NjRfdCBtb2RpZmllciwKIAkJCQkgZG91YmxlIHIsIGRvdWJsZSBnLCBkb3VibGUg YiwKIAkJCQkgc3RydWN0IGlndF9mYiAqZmIgLyogb3V0ICovKTsKK3Vuc2lnbmVkIGludCBpZ3Rf Y3JlYXRlX3BhdHRlcm5fZmJfZnVsbChpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJ CQkJdWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllciwKKwkJCQkJZW51bSBpZ3RfY29s b3JfZW5jb2RpbmcgY29sb3JfZW5jb2RpbmcsCisJCQkJCWVudW0gaWd0X2NvbG9yX3JhbmdlIGNv bG9yX3JhbmdlLAorCQkJCQlzdHJ1Y3QgaWd0X2ZiICpmYiAvKiBvdXQgKi8pOwogdW5zaWduZWQg aW50IGlndF9jcmVhdGVfcGF0dGVybl9mYihpbnQgZmQsIGludCB3aWR0aCwgaW50IGhlaWdodCwK IAkJCQkgICB1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyLAogCQkJCSAgIHN0cnVj dCBpZ3RfZmIgKmZiIC8qIG91dCAqLyk7Cit1bnNpZ25lZCBpbnQgaWd0X2NyZWF0ZV9jb2xvcl9w YXR0ZXJuX2ZiX2Z1bGwoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJCQkJCSAgICAg IHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIsCisJCQkJCSAgICAgIGVudW0gaWd0 X2NvbG9yX2VuY29kaW5nIGNvbG9yX2VuY29kaW5nLAorCQkJCQkgICAgICBlbnVtIGlndF9jb2xv cl9yYW5nZSBjb2xvcl9yYW5nZSwKKwkJCQkJICAgICAgZG91YmxlIHIsIGRvdWJsZSBnLCBkb3Vi bGUgYiwKKwkJCQkJICAgICAgc3RydWN0IGlndF9mYiAqZmIgLyogb3V0ICovKTsKIHVuc2lnbmVk IGludCBpZ3RfY3JlYXRlX2NvbG9yX3BhdHRlcm5fZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQsCiAJCQkJCSB1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyLAogCQkJCQkg ZG91YmxlIHIsIGRvdWJsZSBnLCBkb3VibGUgYiwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19mbGlw LmMgYi90ZXN0cy9rbXNfZmxpcC5jCmluZGV4IDBhOGQxYzU1YTdhYS4uZWYyNTIxZjIxYTQyIDEw MDc1NQotLS0gYS90ZXN0cy9rbXNfZmxpcC5jCisrKyBiL3Rlc3RzL2ttc19mbGlwLmMKQEAgLTEy NDcsOCArMTI0NywxMCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdF9vbl9jcnRjX3NldChzdHJ1Y3Qg dGVzdF9vdXRwdXQgKm8sIGludCAqY3J0Y19pZHhzLAogCQkJCQkgaWd0X2JwcF9kZXB0aF90b19k cm1fZm9ybWF0KG8tPmJwcCwgby0+ZGVwdGgpLAogCQkJCQkgdGlsaW5nLCAmby0+ZmJfaW5mb1sw XSk7CiAJby0+ZmJfaWRzWzFdID0gaWd0X2NyZWF0ZV9mYl93aXRoX2JvX3NpemUoZHJtX2ZkLCBv LT5mYl93aWR0aCwgby0+ZmJfaGVpZ2h0LAotCQkJCQkgaWd0X2JwcF9kZXB0aF90b19kcm1fZm9y bWF0KG8tPmJwcCwgby0+ZGVwdGgpLAotCQkJCQkgdGlsaW5nLCAmby0+ZmJfaW5mb1sxXSwgYm9f c2l6ZSwgMCk7CisJCQkJCQkgIGlndF9icHBfZGVwdGhfdG9fZHJtX2Zvcm1hdChvLT5icHAsIG8t PmRlcHRoKSwKKwkJCQkJCSAgdGlsaW5nLCBJR1RfQ09MT1JfWUNCQ1JfQlQ3MDksCisJCQkJCQkg IElHVF9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFLAorCQkJCQkJICAmby0+ZmJfaW5mb1sxXSwg Ym9fc2l6ZSwgMCk7CiAKIAlpZ3RfYXNzZXJ0KG8tPmZiX2lkc1swXSk7CiAJaWd0X2Fzc2VydChv LT5mYl9pZHNbMV0pOwpkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5n LmMgYi90ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwppbmRleCAxMDM3ZmFmOGU2Zjcu LmM3ODhiNTllZWZiYSAxMDA2NDQKLS0tIGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5n LmMKKysrIGIvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKQEAgLTQ5MSw4ICs0OTEs MTAgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2ZiKGVudW0gcGl4ZWxfZm9ybWF0IHBmb3JtYXQsIGlu dCB3aWR0aCwgaW50IGhlaWdodCwKIAlpZ3RfY2FsY19mYl9zaXplKGRybS5mZCwgd2lkdGgsIGhl aWdodCwgZm9ybWF0LCB0aWxpbmdfZm9yX3NpemUsICZzaXplLAogCQkJICZzdHJpZGUpOwogCi0J aWd0X2NyZWF0ZV9mYl93aXRoX2JvX3NpemUoZHJtLmZkLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs IHRpbGluZywgZmIsCi0JCQkJICAgc2l6ZSwgc3RyaWRlKTsKKwlpZ3RfY3JlYXRlX2ZiX3dpdGhf Ym9fc2l6ZShkcm0uZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGlsaW5nLAorCQkJCSAgIElH VF9DT0xPUl9ZQ0JDUl9CVDcwOSwKKwkJCQkgICBJR1RfQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5H RSwKKwkJCQkgICBmYiwgc2l6ZSwgc3RyaWRlKTsKIH0KIAogc3RhdGljIHVpbnQzMl90IHBpY2tf Y29sb3Ioc3RydWN0IGlndF9mYiAqZmIsIGVudW0gY29sb3IgZWNvbG9yKQotLSAKMi4yMS4wCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1h aWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=