From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id C7C8789F24 for ; Mon, 8 Oct 2018 14:04:58 +0000 (UTC) From: Arkadiusz Hiler Date: Mon, 8 Oct 2018 17:04:23 +0300 Message-Id: <20181008140433.32399-6-arkadiusz.hiler@intel.com> In-Reply-To: <20181008140433.32399-1-arkadiusz.hiler@intel.com> References: <20181008140433.32399-1-arkadiusz.hiler@intel.com> Subject: [igt-dev] [CI 06/16] fb: Create common function to convert frame formats 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: RnJvbTogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBib290bGluLmNvbT4KClRoZSBjdXJy ZW50IGNvZGUgdG8gY29udmVydCBiZXR3ZWVuIHR3byBidWZmZXIgZm9ybWF0cyBpcyBxdWl0ZSB0 aWVkIHRvIHRoZQpjYWlybyBzdXJmYWNlIGluZnJhc3RydWN0dXJlLiBTaW5jZSB3ZSdsbCB3YW50 IHRvIHJldXNlIGl0LCBtYWtlIHRoYXQKZnVuY3Rpb24gbW9yZSBnZW5lcmljIGJ5IGludHJvZHVj aW5nIGEgY29tbW9uIHN0cnVjdHVyZSB0aGF0IHBhc3NlcyBhbGwgdGhlCmFyZ3VtZW50cyBhbmQg YSBjb21tb24gZnVuY3Rpb24gdGhhdCB3aWxsIGNhbGwgdGhlIHJpZ2h0IGZ1bmN0aW9ucyB3ZQpu ZWVkZWQuCgpSZXZpZXdlZC1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KU2lnbmVk LW9mZi1ieTogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBib290bGluLmNvbT4KLS0tCiBs aWIvaWd0X2ZiLmMgfCAyMDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTE4IGluc2VydGlvbnMoKyksIDg4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwppbmRleCBj YzEwODlhYS4uZGMyMjc0OTMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZmIuYworKysgYi9saWIvaWd0 X2ZiLmMKQEAgLTE0NDUsMjggKzE0NDUsMzggQEAgc3RhdGljIHZvaWQgd3JpdGVfcmdiKHVpbnQ4 X3QgKnJnYjI0LCBjb25zdCBzdHJ1Y3QgaWd0X3ZlYzQgKnJnYikKIAlyZ2IyNFswXSA9IGNsYW1w cmdiKHJnYi0+ZFsyXSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnZlcnRfbnYxMl90b19yZ2IyNChz dHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQpCitz dHJ1Y3QgZmJfY29udmVydF9idWYgeworCXZvaWQJCQkqcHRyOworCXN0cnVjdCBpZ3RfZmIJCSpm YjsKK307CisKK3N0cnVjdCBmYl9jb252ZXJ0IHsKKwlzdHJ1Y3QgZmJfY29udmVydF9idWYJZHN0 OworCXN0cnVjdCBmYl9jb252ZXJ0X2J1ZglzcmM7Cit9OworCitzdGF0aWMgdm9pZCBjb252ZXJ0 X252MTJfdG9fcmdiMjQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIHsKIAlpbnQgaSwgajsKIAlj b25zdCB1aW50OF90ICp5LCAqdXY7Ci0JdWludDhfdCAqcmdiMjQgPSBibGl0LT5zaGFkb3dfcHRy OwotCXVuc2lnbmVkIHJnYjI0X3N0cmlkZSA9IGJsaXQtPnNoYWRvd19mYi5zdHJpZGVzWzBdOwot CXVuc2lnbmVkIHBsYW5hcl9zdHJpZGUgPSBibGl0LT5iYXNlLmxpbmVhci5mYi5zdHJpZGVzWzBd OwotCXVpbnQ4X3QgKmJ1ZiA9IG1hbGxvYyhibGl0LT5iYXNlLmxpbmVhci5mYi5zaXplKTsKLQlz dHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4KGZiLT5jb2xvcl9lbmNv ZGluZywKLQkJCQkJCSAgICBmYi0+Y29sb3JfcmFuZ2UpOworCXVpbnQ4X3QgKnJnYjI0ID0gY3Z0 LT5kc3QucHRyOworCXVuc2lnbmVkIGludCByZ2IyNF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3Ry aWRlc1swXTsKKwl1bnNpZ25lZCBpbnQgcGxhbmFyX3N0cmlkZSA9IGN2dC0+c3JjLmZiLT5zdHJp ZGVzWzBdOworCXVpbnQ4X3QgKmJ1ZiA9IG1hbGxvYyhjdnQtPnNyYy5mYi0+c2l6ZSk7CisJc3Ry dWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeChjdnQtPnNyYy5mYi0+Y29s b3JfZW5jb2RpbmcsCisJCQkJCQkgICAgY3Z0LT5zcmMuZmItPmNvbG9yX3JhbmdlKTsKIAogCS8q CiAJICogUmVhZGluZyBmcm9tIHRoZSBCTyBpcyBhd2Z1bGx5IHNsb3cgYmVjYXVzZSBvZiBsYWNr IG9mIHJlYWQgY2FjaGluZywKIAkgKiBpdCdzIGZhc3RlciB0byBjb3B5IHRoZSB3aG9sZSBCTyB0 byBhIHRlbXBvcmFyeSBidWZmZXIgYW5kIGNvbnZlcnQKIAkgKiBmcm9tIHRoZXJlLgogCSAqLwot CWlndF9tZW1jcHlfZnJvbV93YyhidWYsIGJsaXQtPmJhc2UubGluZWFyLm1hcCwgYmxpdC0+YmFz ZS5saW5lYXIuZmIuc2l6ZSk7Ci0JeSA9ICZidWZbYmxpdC0+YmFzZS5saW5lYXIuZmIub2Zmc2V0 c1swXV07Ci0JdXYgPSAmYnVmW2JsaXQtPmJhc2UubGluZWFyLmZiLm9mZnNldHNbMV1dOworCWln dF9tZW1jcHlfZnJvbV93YyhidWYsIGN2dC0+c3JjLnB0ciwgY3Z0LT5zcmMuZmItPnNpemUpOwor CXkgPSBjdnQtPnNyYy5wdHIgKyBjdnQtPnNyYy5mYi0+b2Zmc2V0c1swXTsKKwl1diA9IGN2dC0+ c3JjLnB0ciArIGN2dC0+c3JjLmZiLT5vZmZzZXRzWzFdOwogCi0JZm9yIChpID0gMDsgaSA8IGZi LT5oZWlnaHQgLyAyOyBpKyspIHsKLQkJZm9yIChqID0gMDsgaiA8IGZiLT53aWR0aCAvIDI7IGor KykgeworCWZvciAoaSA9IDA7IGkgPCBjdnQtPmRzdC5mYi0+aGVpZ2h0IC8gMjsgaSsrKSB7CisJ CWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGggLyAyOyBqKyspIHsKIAkJCS8qIENv bnZlcnQgMngyIHBpeGVsIGJsb2NrcyAqLwogCQkJc3RydWN0IGlndF92ZWM0IHl1dls0XTsKIAkJ CXN0cnVjdCBpZ3RfdmVjNCByZ2JbNF07CkBAIC0xNDkxLDcgKzE1MDEsNyBAQCBzdGF0aWMgdm9p ZCBjb252ZXJ0X252MTJfdG9fcmdiMjQoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9jb252 ZXJ0X2JsaXRfdXBsbwogCQkJd3JpdGVfcmdiKCZyZ2IyNFtqICogOCArIDQgKyByZ2IyNF9zdHJp ZGVdLCAmcmdiWzNdKTsKIAkJfQogCi0JCWlmIChmYi0+d2lkdGggJiAxKSB7CisJCWlmIChjdnQt PmRzdC5mYi0+d2lkdGggJiAxKSB7CiAJCQkvKiBDb252ZXJ0IDF4MiBwaXhlbCBibG9jayAqLwog CQkJc3RydWN0IGlndF92ZWM0IHl1dlsyXTsKIAkJCXN0cnVjdCBpZ3RfdmVjNCByZ2JbMl07CkBA IC0xNTE1LDkgKzE1MjUsOSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X252MTJfdG9fcmdiMjQoc3Ry dWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsbwogCQl1diArPSBwbGFu YXJfc3RyaWRlOwogCX0KIAotCWlmIChmYi0+aGVpZ2h0ICYgMSkgeworCWlmIChjdnQtPmRzdC5m Yi0+aGVpZ2h0ICYgMSkgewogCQkvKiBDb252ZXJ0IGxhc3Qgcm93ICovCi0JCWZvciAoaiA9IDA7 IGogPCBmYi0+d2lkdGggLyAyOyBqKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IGN2dC0+ZHN0LmZi LT53aWR0aCAvIDI7IGorKykgewogCQkJLyogQ29udmVydCAyeDEgcGl4ZWwgYmxvY2tzICovCiAJ CQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2WzJdOwogCQkJc3RydWN0IGlndF92ZWM0IHJnYlsyXTsKQEAg LTE1MzUsNyArMTU0NSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfbnYxMl90b19yZ2IyNChzdHJ1 Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvCiAJCQl3cml0ZV9yZ2Io JnJnYjI0W2ogKiA4ICsgNF0sICZyZ2JbMF0pOwogCQl9CiAKLQkJaWYgKGZiLT53aWR0aCAmIDEp IHsKKwkJaWYgKGN2dC0+ZHN0LmZiLT53aWR0aCAmIDEpIHsKIAkJCS8qIENvbnZlcnQgc2luZ2xl IHBpeGVsICovCiAJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2OwogCQkJc3RydWN0IGlndF92ZWM0IHJn YjsKQEAgLTE1NTQsMjIgKzE1NjQsMjIgQEAgc3RhdGljIHZvaWQgY29udmVydF9udjEyX3RvX3Jn YjI0KHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG8KIAlmcmVl KGJ1Zik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9fbnYxMihzdHJ1Y3QgaWd0 X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQpCitzdGF0aWMgdm9p ZCBjb252ZXJ0X3JnYjI0X3RvX252MTIoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIHsKIAlpbnQg aSwgajsKLQl1aW50OF90ICp5ID0gJmJsaXQtPmJhc2UubGluZWFyLm1hcFtibGl0LT5iYXNlLmxp bmVhci5mYi5vZmZzZXRzWzBdXTsKLQl1aW50OF90ICp1diA9ICZibGl0LT5iYXNlLmxpbmVhci5t YXBbYmxpdC0+YmFzZS5saW5lYXIuZmIub2Zmc2V0c1sxXV07Ci0JY29uc3QgdWludDhfdCAqcmdi MjQgPSBibGl0LT5zaGFkb3dfcHRyOwotCXVuc2lnbmVkIHJnYjI0X3N0cmlkZSA9IGJsaXQtPnNo YWRvd19mYi5zdHJpZGVzWzBdOwotCXVuc2lnbmVkIHBsYW5hcl9zdHJpZGUgPSBibGl0LT5iYXNl LmxpbmVhci5mYi5zdHJpZGVzWzBdOwotCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195 Y2Jjcl9tYXRyaXgoZmItPmNvbG9yX2VuY29kaW5nLAotCQkJCQkJICAgIGZiLT5jb2xvcl9yYW5n ZSk7CisJdWludDhfdCAqeSA9IGN2dC0+ZHN0LnB0ciArIGN2dC0+ZHN0LmZiLT5vZmZzZXRzWzBd OworCXVpbnQ4X3QgKnV2ID0gY3Z0LT5kc3QucHRyICsgY3Z0LT5kc3QuZmItPm9mZnNldHNbMV07 CisJY29uc3QgdWludDhfdCAqcmdiMjQgPSBjdnQtPnNyYy5wdHI7CisJdW5zaWduZWQgcmdiMjRf c3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF07CisJdW5zaWduZWQgcGxhbmFyX3N0cmlk ZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3Jn Yl90b195Y2Jjcl9tYXRyaXgoY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAorCQkJCQkJICAg IGN2dC0+ZHN0LmZiLT5jb2xvcl9yYW5nZSk7CiAKLQlpZ3RfYXNzZXJ0X2YoZmItPmRybV9mb3Jt YXQgPT0gRFJNX0ZPUk1BVF9OVjEyLAorCWlndF9hc3NlcnRfZihjdnQtPmRzdC5mYi0+ZHJtX2Zv cm1hdCA9PSBEUk1fRk9STUFUX05WMTIsCiAJCSAgICAgIkNvbnZlcnNpb24gbm90IGltcGxlbWVu dGVkIGZvciAhTlYxMiBwbGFuYXIgZm9ybWF0c1xuIik7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZmIt PmhlaWdodCAvIDI7IGkrKykgewotCQlmb3IgKGogPSAwOyBqIDwgZmItPndpZHRoIC8gMjsgaisr KSB7CisJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQgLyAyOyBpKyspIHsKKwkJ Zm9yIChqID0gMDsgaiA8IGN2dC0+ZHN0LmZiLT53aWR0aCAvIDI7IGorKykgewogCQkJLyogQ29u dmVydCAyeDIgcGl4ZWwgYmxvY2tzICovCiAJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiWzRdOwogCQkJ c3RydWN0IGlndF92ZWM0IHl1dls0XTsKQEAgLTE1OTgsNyArMTYwOCw3IEBAIHN0YXRpYyB2b2lk IGNvbnZlcnRfcmdiMjRfdG9fbnYxMihzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZl cnRfYmxpdF91cGxvCiAJCQl1dltqICogMiArIDFdID0gKHl1dlswXS5kWzJdICsgeXV2WzJdLmRb Ml0pIC8gMi4wZjsKIAkJfQogCi0JCWlmIChmYi0+d2lkdGggJiAxKSB7CisJCWlmIChjdnQtPmRz dC5mYi0+d2lkdGggJiAxKSB7CiAJCQkvKiBDb252ZXJ0IDF4MiBwaXhlbCBibG9jayAqLwogCQkJ c3RydWN0IGlndF92ZWM0IHJnYlsyXTsKIAkJCXN0cnVjdCBpZ3RfdmVjNCB5dXZbMl07CkBAIC0x NjI3LDggKzE2MzcsOCBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjI0X3RvX252MTIoc3RydWN0 IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsbwogCX0KIAogCS8qIExhc3Qg cm93IGNhbm5vdCBiZSBpbnRlcnBvbGF0ZWQgYmV0d2VlbiAyIHBpeGVscywgdGFrZSB0aGUgc2lu Z2xlIHZhbHVlICovCi0JaWYgKGZiLT5oZWlnaHQgJiAxKSB7Ci0JCWZvciAoaiA9IDA7IGogPCBm Yi0+d2lkdGggLyAyOyBqKyspIHsKKwlpZiAoY3Z0LT5kc3QuZmItPmhlaWdodCAmIDEpIHsKKwkJ Zm9yIChqID0gMDsgaiA8IGN2dC0+ZHN0LmZiLT53aWR0aCAvIDI7IGorKykgewogCQkJLyogQ29u dmVydCAyeDEgcGl4ZWwgYmxvY2tzICovCiAJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiWzJdOwogCQkJ c3RydWN0IGlndF92ZWM0IHl1dlsyXTsKQEAgLTE2NDUsNyArMTY1NSw3IEBAIHN0YXRpYyB2b2lk IGNvbnZlcnRfcmdiMjRfdG9fbnYxMihzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZl cnRfYmxpdF91cGxvCiAJCQl1dltqICogMiArIDFdID0geXV2WzBdLmRbMl07CiAJCX0KIAotCQlp ZiAoZmItPndpZHRoICYgMSkgeworCQlpZiAoY3Z0LT5kc3QuZmItPndpZHRoICYgMSkgewogCQkJ LyogQ29udmVydCBzaW5nbGUgcGl4ZWwgKi8KIAkJCXN0cnVjdCBpZ3RfdmVjNCByZ2I7CiAJCQlz dHJ1Y3QgaWd0X3ZlYzQgeXV2OwpAQCAtMTY4MiwyOCArMTY5MiwyOCBAQCBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciAqeXV5dl9zd2l6emxlKHVpbnQzMl90IGZvcm1hdCkKIAl9CiB9CiAKLXN0 YXRpYyB2b2lkIGNvbnZlcnRfeXV5dl90b19yZ2IyNChzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0 IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQpCitzdGF0aWMgdm9pZCBjb252ZXJ0X3l1eXZf dG9fcmdiMjQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIHsKIAlpbnQgaSwgajsKIAljb25zdCB1 aW50OF90ICp5dXl2OwotCXVpbnQ4X3QgKnJnYjI0ID0gYmxpdC0+c2hhZG93X3B0cjsKLQl1bnNp Z25lZCByZ2IyNF9zdHJpZGUgPSBibGl0LT5zaGFkb3dfZmIuc3RyaWRlc1swXTsKLQl1bnNpZ25l ZCB5dXl2X3N0cmlkZSA9IGJsaXQtPmJhc2UubGluZWFyLmZiLnN0cmlkZXNbMF07Ci0JdWludDhf dCAqYnVmID0gbWFsbG9jKGJsaXQtPmJhc2UubGluZWFyLmZiLnNpemUpOwotCXN0cnVjdCBpZ3Rf bWF0NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoZmItPmNvbG9yX2VuY29kaW5nLAotCQkJ CQkJICAgIGZiLT5jb2xvcl9yYW5nZSk7Ci0JY29uc3QgdW5zaWduZWQgY2hhciAqc3d6ID0geXV5 dl9zd2l6emxlKGZiLT5kcm1fZm9ybWF0KTsKKwl1aW50OF90ICpyZ2IyNCA9IGN2dC0+ZHN0LnB0 cjsKKwl1bnNpZ25lZCBpbnQgcmdiMjRfc3RyaWRlID0gY3Z0LT5kc3QuZmItPnN0cmlkZXNbMF07 CisJdW5zaWduZWQgaW50IHl1eXZfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF07CisJ dWludDhfdCAqYnVmID0gbWFsbG9jKGN2dC0+c3JjLmZiLT5zaXplKTsKKwlzdHJ1Y3QgaWd0X21h dDQgbSA9IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4KGN2dC0+c3JjLmZiLT5jb2xvcl9lbmNvZGlu ZywKKwkJCQkJCSAgICBjdnQtPnNyYy5mYi0+Y29sb3JfcmFuZ2UpOworCWNvbnN0IHVuc2lnbmVk IGNoYXIgKnN3eiA9IHl1eXZfc3dpenpsZShjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCk7CiAKIAkv KgogCSAqIFJlYWRpbmcgZnJvbSB0aGUgQk8gaXMgYXdmdWxseSBzbG93IGJlY2F1c2Ugb2YgbGFj ayBvZiByZWFkIGNhY2hpbmcsCiAJICogaXQncyBmYXN0ZXIgdG8gY29weSB0aGUgd2hvbGUgQk8g dG8gYSB0ZW1wb3JhcnkgYnVmZmVyIGFuZCBjb252ZXJ0CiAJICogZnJvbSB0aGVyZS4KIAkgKi8K LQlpZ3RfbWVtY3B5X2Zyb21fd2MoYnVmLCBibGl0LT5iYXNlLmxpbmVhci5tYXAsIGJsaXQtPmJh c2UubGluZWFyLmZiLnNpemUpOworCWlndF9tZW1jcHlfZnJvbV93YyhidWYsIGN2dC0+c3JjLnB0 ciwgY3Z0LT5zcmMuZmItPnNpemUpOwogCXl1eXYgPSBidWY7CiAKLQlmb3IgKGkgPSAwOyBpIDwg ZmItPmhlaWdodDsgaSsrKSB7Ci0JCWZvciAoaiA9IDA7IGogPCBmYi0+d2lkdGggLyAyOyBqKysp IHsKKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhlaWdodDsgaSsrKSB7CisJCWZvciAo aiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGggLyAyOyBqKyspIHsKIAkJCS8qIENvbnZlcnQg MngxIHBpeGVsIGJsb2NrcyAqLwogCQkJc3RydWN0IGlndF92ZWM0IHl1dlsyXTsKIAkJCXN0cnVj dCBpZ3RfdmVjNCByZ2JbMl07CkBAIC0xNzIxLDcgKzE3MzEsNyBAQCBzdGF0aWMgdm9pZCBjb252 ZXJ0X3l1eXZfdG9fcmdiMjQoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9jb252ZXJ0X2Js aXRfdXBsbwogCQkJd3JpdGVfcmdiKCZyZ2IyNFtqICogOCArIDRdLCAmcmdiWzFdKTsKIAkJfQog Ci0JCWlmIChmYi0+d2lkdGggJiAxKSB7CisJCWlmIChjdnQtPmRzdC5mYi0+d2lkdGggJiAxKSB7 CiAJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2OwogCQkJc3RydWN0IGlndF92ZWM0IHJnYjsKIApAQCAt MTc0MiwyNSArMTc1MiwyNSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3l1eXZfdG9fcmdiMjQoc3Ry dWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsbwogCWZyZWUoYnVmKTsK IH0KIAotc3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90b195dXl2KHN0cnVjdCBpZ3RfZmIgKmZi LCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG9hZCAqYmxpdCkKK3N0YXRpYyB2b2lkIGNvbnZl cnRfcmdiMjRfdG9feXV5dihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogewogCWludCBpLCBqOwot CXVpbnQ4X3QgKnl1eXYgPSBibGl0LT5iYXNlLmxpbmVhci5tYXA7Ci0JY29uc3QgdWludDhfdCAq cmdiMjQgPSBibGl0LT5zaGFkb3dfcHRyOwotCXVuc2lnbmVkIHJnYjI0X3N0cmlkZSA9IGJsaXQt PnNoYWRvd19mYi5zdHJpZGVzWzBdOwotCXVuc2lnbmVkIHl1eXZfc3RyaWRlID0gYmxpdC0+YmFz ZS5saW5lYXIuZmIuc3RyaWRlc1swXTsKLQlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF9yZ2JfdG9f eWNiY3JfbWF0cml4KGZiLT5jb2xvcl9lbmNvZGluZywKLQkJCQkJCSAgICBmYi0+Y29sb3JfcmFu Z2UpOwotCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnN3eiA9IHl1eXZfc3dpenpsZShmYi0+ZHJtX2Zv cm1hdCk7CisJdWludDhfdCAqeXV5diA9IGN2dC0+ZHN0LnB0cjsKKwljb25zdCB1aW50OF90ICpy Z2IyNCA9IGN2dC0+c3JjLnB0cjsKKwl1bnNpZ25lZCByZ2IyNF9zdHJpZGUgPSBjdnQtPnNyYy5m Yi0+c3RyaWRlc1swXTsKKwl1bnNpZ25lZCB5dXl2X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJp ZGVzWzBdOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoY3Z0 LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAorCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9y YW5nZSk7CisJY29uc3QgdW5zaWduZWQgY2hhciAqc3d6ID0geXV5dl9zd2l6emxlKGN2dC0+ZHN0 LmZiLT5kcm1fZm9ybWF0KTsKIAotCWlndF9hc3NlcnRfZihmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1f Rk9STUFUX1lVWVYgfHwKLQkJICAgICBmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1lWWVUg fHwKLQkJICAgICBmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1VZVlkgfHwKLQkJICAgICBm Yi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1ZZVVksCisJaWd0X2Fzc2VydF9mKGN2dC0+ZHN0 LmZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfWVVZViB8fAorCQkgICAgIGN2dC0+ZHN0LmZi LT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfWVZZVSB8fAorCQkgICAgIGN2dC0+ZHN0LmZiLT5k cm1fZm9ybWF0ID09IERSTV9GT1JNQVRfVVlWWSB8fAorCQkgICAgIGN2dC0+ZHN0LmZiLT5kcm1f Zm9ybWF0ID09IERSTV9GT1JNQVRfVllVWSwKIAkJICAgICAiQ29udmVyc2lvbiBub3QgaW1wbGVt ZW50ZWQgZm9yICFZVVlWIHBsYW5hciBmb3JtYXRzXG4iKTsKIAotCWZvciAoaSA9IDA7IGkgPCBm Yi0+aGVpZ2h0OyBpKyspIHsKLQkJZm9yIChqID0gMDsgaiA8IGZiLT53aWR0aCAvIDI7IGorKykg eworCWZvciAoaSA9IDA7IGkgPCBjdnQtPmRzdC5mYi0+aGVpZ2h0OyBpKyspIHsKKwkJZm9yIChq ID0gMDsgaiA8IGN2dC0+ZHN0LmZiLT53aWR0aCAvIDI7IGorKykgewogCQkJLyogQ29udmVydCAy eDEgcGl4ZWwgYmxvY2tzICovCiAJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiWzJdOwogCQkJc3RydWN0 IGlndF92ZWM0IHl1dlsyXTsKQEAgLTE3NzcsNyArMTc4Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbnZl cnRfcmdiMjRfdG9feXV5dihzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRfYmxp dF91cGxvCiAJCQl5dXl2W2ogKiA0ICsgc3d6WzNdXSA9ICh5dXZbMF0uZFsyXSArIHl1dlsxXS5k WzJdKSAvIDIuMGY7CiAJCX0KIAotCQlpZiAoZmItPndpZHRoICYgMSkgeworCQlpZiAoY3Z0LT5k c3QuZmItPndpZHRoICYgMSkgewogCQkJc3RydWN0IGlndF92ZWM0IHJnYjsKIAkJCXN0cnVjdCBp Z3RfdmVjNCB5dXY7CiAKQEAgLTE3OTUsMjcgKzE4MDUsNTYgQEAgc3RhdGljIHZvaWQgY29udmVy dF9yZ2IyNF90b195dXl2KHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0 X3VwbG8KIAl9CiB9CiAKK3N0YXRpYyB2b2lkIGZiX2NvbnZlcnQoc3RydWN0IGZiX2NvbnZlcnQg KmN2dCkKK3sKKwlpZiAoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I4 ODgpIHsKKwkJc3dpdGNoIChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCkgeworCQljYXNlIERSTV9G T1JNQVRfTlYxMjoKKwkJCWNvbnZlcnRfbnYxMl90b19yZ2IyNChjdnQpOworCQkJcmV0dXJuOwor CQljYXNlIERSTV9GT1JNQVRfWVVZVjoKKwkJY2FzZSBEUk1fRk9STUFUX1lWWVU6CisJCWNhc2Ug RFJNX0ZPUk1BVF9VWVZZOgorCQljYXNlIERSTV9GT1JNQVRfVllVWToKKwkJCWNvbnZlcnRfeXV5 dl90b19yZ2IyNChjdnQpOworCQkJcmV0dXJuOworCQl9CisJfSBlbHNlIGlmIChjdnQtPnNyYy5m Yi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1JHQjg4OCkgeworCQlzd2l0Y2ggKGN2dC0+ZHN0 LmZiLT5kcm1fZm9ybWF0KSB7CisJCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgorCQkJY29udmVydF9y Z2IyNF90b19udjEyKGN2dCk7CisJCQlyZXR1cm47CisJCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgor CQljYXNlIERSTV9GT1JNQVRfWVZZVToKKwkJY2FzZSBEUk1fRk9STUFUX1VZVlk6CisJCWNhc2Ug RFJNX0ZPUk1BVF9WWVVZOgorCQkJY29udmVydF9yZ2IyNF90b195dXl2KGN2dCk7CisJCQlyZXR1 cm47CisJCX0KKwl9CisKKwlpZ3RfYXNzZXJ0X2YoZmFsc2UsCisJCSAgICAgIkNvbnZlcnNpb24g bm90IGltcGxlbWVudGVkIChmcm9tIGZvcm1hdCAweCV4IHRvIDB4JXgpXG4iLAorCQkgICAgIGN2 dC0+c3JjLmZiLT5kcm1fZm9ybWF0LCBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCk7Cit9CisKIHN0 YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9fY29udmVydCh2b2lkICphcmcpCiB7CiAJ c3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBhcmc7CiAJc3RydWN0IGlndF9m YiAqZmIgPSBibGl0LT5iYXNlLmZiOworCXN0cnVjdCBmYl9jb252ZXJ0IGN2dCA9IHsKKwkJLmRz dAk9IHsKKwkJCS5wdHIJPSBibGl0LT5iYXNlLmxpbmVhci5tYXAsCisJCQkuZmIJPSBibGl0LT5i YXNlLmZiLAorCQl9LAogCi0JLyogQ29udmVydCBsaW5lYXIgcmdiIGJhY2shICovCi0Jc3dpdGNo KGZiLT5kcm1fZm9ybWF0KSB7Ci0JY2FzZSBEUk1fRk9STUFUX05WMTI6Ci0JCWNvbnZlcnRfcmdi MjRfdG9fbnYxMihmYiwgYmxpdCk7Ci0JCWJyZWFrOwotCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgot CWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgotCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgotCWNhc2UgRFJN X0ZPUk1BVF9WWVVZOgotCQljb252ZXJ0X3JnYjI0X3RvX3l1eXYoZmIsIGJsaXQpOwotCQlicmVh azsKLQlkZWZhdWx0OgotCQlpZ3RfYXNzZXJ0X2YoZmFsc2UsICJDb252ZXJzaW9uIG5vdCBpbXBs ZW1lbnRlZCBmb3IgZm9ybWF0cyAweCV4XG4iLAotCQkJICAgICBmYi0+ZHJtX2Zvcm1hdCk7Ci0J fQorCQkuc3JjCT0geworCQkJLnB0cgk9IGJsaXQtPnNoYWRvd19wdHIsCisJCQkuZmIJPSAmYmxp dC0+c2hhZG93X2ZiLAorCQl9LAorCX07CiAKKwlmYl9jb252ZXJ0KCZjdnQpOwogCWlndF9mYl9k ZXN0cm95X2NhaXJvX3NoYWRvd19idWZmZXIoJmJsaXQtPnNoYWRvd19mYiwgYmxpdC0+c2hhZG93 X3B0cik7CiAKIAlpZiAoYmxpdC0+YmFzZS5saW5lYXIuZmIuZ2VtX2hhbmRsZSkKQEAgLTE4MzEs NiArMTg3MCw3IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9fY29udmVydCh2 b2lkICphcmcpCiBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQg ZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogewogCXN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2Fk ICpibGl0ID0gbWFsbG9jKHNpemVvZigqYmxpdCkpOworCXN0cnVjdCBmYl9jb252ZXJ0IGN2dCA9 IHsgMCB9OwogCiAJaWd0X2Fzc2VydChibGl0KTsKIApAQCAtMTg1NCwyMSArMTg5NCwxMSBAQCBz dGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBp Z3RfZmIgKmZiKQogCQltZW1jcHkoYmxpdC0+YmFzZS5saW5lYXIuZmIub2Zmc2V0cywgZmItPm9m ZnNldHMsIHNpemVvZihmYi0+b2Zmc2V0cykpOwogCX0KIAotCS8qIENvbnZlcnQgdG8gbGluZWFy IHJnYiEgKi8KLQlzd2l0Y2goZmItPmRybV9mb3JtYXQpIHsKLQljYXNlIERSTV9GT1JNQVRfTlYx MjoKLQkJY29udmVydF9udjEyX3RvX3JnYjI0KGZiLCBibGl0KTsKLQkJYnJlYWs7Ci0JY2FzZSBE Uk1fRk9STUFUX1lVWVY6Ci0JY2FzZSBEUk1fRk9STUFUX1lWWVU6Ci0JY2FzZSBEUk1fRk9STUFU X1VZVlk6Ci0JY2FzZSBEUk1fRk9STUFUX1ZZVVk6Ci0JCWNvbnZlcnRfeXV5dl90b19yZ2IyNChm YiwgYmxpdCk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWlndF9hc3NlcnRfZihmYWxzZSwgIkNv bnZlcnNpb24gbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXRzIDB4JXhcbiIsCi0JCQkgICAgIGZi LT5kcm1fZm9ybWF0KTsKLQl9CisJY3Z0LmRzdC5wdHIgPSBibGl0LT5zaGFkb3dfcHRyOworCWN2 dC5kc3QuZmIgPSAmYmxpdC0+c2hhZG93X2ZiOworCWN2dC5zcmMucHRyID0gYmxpdC0+YmFzZS5s aW5lYXIubWFwOworCWN2dC5zcmMuZmIgPSBibGl0LT5iYXNlLmZiOworCWZiX2NvbnZlcnQoJmN2 dCk7CiAKIAlmYi0+Y2Fpcm9fc3VyZmFjZSA9CiAJCWNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRl X2Zvcl9kYXRhKGJsaXQtPnNoYWRvd19wdHIsCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldgo=