From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 545BB89ECB for ; Tue, 30 Oct 2018 16:20:49 +0000 (UTC) From: Ville Syrjala Date: Tue, 30 Oct 2018 18:20:36 +0200 Message-Id: <20181030162038.27373-3-ville.syrjala@linux.intel.com> In-Reply-To: <20181030162038.27373-1-ville.syrjala@linux.intel.com> References: <20181030162038.27373-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 3/5] lib/igt_fb: Use rendercopy for rendering into compressed buffers 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: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClBs dWcgaW4gcmVuZGVyY29weSB0byB0aGUgY2Fpcm8gc3VyZmFjZSBzdHVmZiBzbyB0aGF0IHdlIGNh bgpnZW5lcmF0ZSBjb21wcmVzc2VkIGJ1ZmZlcnMgd2l0aCBjYWlyby4KCnYyOiBzL21vZGlmaWVy X2hhc19jY3MvaXNfY2NzX21vZGlmaWVyLwoKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ZiLmMgfCAxNDIg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZp bGUgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwppbmRleCA1ZGNhMWNmYTQ0N2EuLmNiZTZk NTM5NjkwZCAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5jCisrKyBiL2xpYi9pZ3RfZmIuYwpAQCAt MTk1LDYgKzE5NSw3IEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZkLCB1aW50NjRf dCB0aWxpbmcsIGludCBmYl9icHAsCiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBMT0NBTF9JOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRDoKKwljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0ND UzoKIAkJaWd0X3JlcXVpcmVfaW50ZWwoZmQpOwogCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9k cm1fZGV2aWQoZmQpKSA9PSAyKSB7CiAJCQkqd2lkdGhfcmV0ID0gMTI4OwpAQCAtMjA4LDYgKzIw OSw3IEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZkLCB1aW50NjRfdCB0aWxpbmcs IGludCBmYl9icHAsCiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRUQ6CisJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgogCQlp Z3RfcmVxdWlyZV9pbnRlbChmZCk7CiAJCXN3aXRjaCAoZmJfYnBwKSB7CiAJCWNhc2UgODoKQEAg LTIzMyw4ICsyMzUsMTYgQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2 NF90IHRpbGluZywgaW50IGZiX2JwcCwKIAl9CiB9CiAKK3N0YXRpYyBib29sIGlzX2Njc19tb2Rp Zmllcih1aW50NjRfdCBtb2RpZmllcikKK3sKKwlyZXR1cm4gbW9kaWZpZXIgPT0gTE9DQUxfSTkx NV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8CisJCW1vZGlmaWVyID09IExPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZZl9USUxFRF9DQ1M7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBmYl9wbGFuZV93aWR0 aChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQogeworCWlmIChpc19jY3NfbW9k aWZpZXIoZmItPnRpbGluZykgJiYgcGxhbmUgPT0gMSkKKwkJcmV0dXJuIERJVl9ST1VORF9VUChm Yi0+d2lkdGgsIDEwMjQpICogMTI4OwogCWlmIChmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFU X05WMTIgJiYgcGxhbmUgPT0gMSkKIAkJcmV0dXJuIERJVl9ST1VORF9VUChmYi0+d2lkdGgsIDIp OwogCkBAIC0yNDUsMTEgKzI1NSwxNiBAQCBzdGF0aWMgdW5zaWduZWQgZmJfcGxhbmVfYnBwKGNv bnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCiB7CiAJY29uc3Qgc3RydWN0IGZvcm1h dF9kZXNjX3N0cnVjdCAqZm9ybWF0ID0gbG9va3VwX2RybV9mb3JtYXQoZmItPmRybV9mb3JtYXQp OwogCi0JcmV0dXJuIGZvcm1hdC0+cGxhbmVfYnBwW3BsYW5lXTsKKwlpZiAoaXNfY2NzX21vZGlm aWVyKGZiLT50aWxpbmcpICYmIHBsYW5lID09IDEpCisJCXJldHVybiA4OworCWVsc2UKKwkJcmV0 dXJuIGZvcm1hdC0+cGxhbmVfYnBwW3BsYW5lXTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGZiX3Bs YW5lX2hlaWdodChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQogeworCWlmIChp c19jY3NfbW9kaWZpZXIoZmItPnRpbGluZykgJiYgcGxhbmUgPT0gMSkKKwkJcmV0dXJuIERJVl9S T1VORF9VUChmYi0+aGVpZ2h0LCA1MTIpICogMzI7CiAJaWYgKGZiLT5kcm1fZm9ybWF0ID09IERS TV9GT1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQogCQlyZXR1cm4gRElWX1JPVU5EX1VQKGZiLT5o ZWlnaHQsIDIpOwogCkBAIC0yNjAsNyArMjc1LDEwIEBAIHN0YXRpYyBpbnQgZmJfbnVtX3BsYW5l cyhjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYikKIHsKIAljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nf c3RydWN0ICpmb3JtYXQgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJtX2Zvcm1hdCk7CiAKLQly ZXR1cm4gZm9ybWF0LT5udW1fcGxhbmVzOworCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPnRpbGlu ZykpCisJCXJldHVybiAyOworCWVsc2UKKwkJcmV0dXJuIGZvcm1hdC0+bnVtX3BsYW5lczsKIH0K IAogc3RhdGljIHZvaWQgZmJfaW5pdChzdHJ1Y3QgaWd0X2ZiICpmYiwKQEAgLTQxOSw4ICs0Mzcs MTAgQEAgdWludDY0X3QgaWd0X2ZiX21vZF90b190aWxpbmcodWludDY0X3QgbW9kaWZpZXIpCiAJ Y2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKIAkJcmV0dXJuIEk5MTVfVElMSU5H X1g7CiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKKwljYXNlIExPQ0FMX0k5 MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKIAkJcmV0dXJuIEk5MTVfVElMSU5HX1k7CiAJY2Fz ZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6CisJY2FzZSBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWWZfVElMRURfQ0NTOgogCQlyZXR1cm4gSTkxNV9USUxJTkdfWWY7CiAJZGVmYXVsdDoK IAkJaWd0X2Fzc2VydCgwKTsKQEAgLTEyNjcsOCArMTI4Nyw1MyBAQCBzdHJ1Y3QgZmJfYmxpdF91 cGxvYWQgewogCWludCBmZDsKIAlzdHJ1Y3QgaWd0X2ZiICpmYjsKIAlzdHJ1Y3QgZmJfYmxpdF9s aW5lYXIgbGluZWFyOworCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKKwlzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoOwogfTsKIAorc3RhdGljIHZvaWQgaW5pdF9idWYoc3RydWN0IGZi X2JsaXRfdXBsb2FkICpibGl0LAorCQkgICAgIHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCSAgICAg Y29uc3Qgc3RydWN0IGlndF9mYiAqZmIsCisJCSAgICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlp Z3RfYXNzZXJ0X2VxKGZiLT5vZmZzZXRzWzBdLCAwKTsKKworCWJ1Zi0+Ym8gPSBnZW1faGFuZGxl X3RvX2xpYmRybV9ibyhibGl0LT5idWZtZ3IsIGJsaXQtPmZkLAorCQkJCQkgIG5hbWUsIGZiLT5n ZW1faGFuZGxlKTsKKwlidWYtPnRpbGluZyA9IGlndF9mYl9tb2RfdG9fdGlsaW5nKGZiLT50aWxp bmcpOworCWJ1Zi0+c3RyaWRlID0gZmItPnN0cmlkZXNbMF07CisJYnVmLT5zaXplID0gZmItPnNp emU7CisKKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpKSB7CisJCWlndF9hc3NlcnRf ZXEoZmItPnN0cmlkZXNbMF0gJiAxMjcsIDApOworCQlpZ3RfYXNzZXJ0X2VxKGZiLT5zdHJpZGVz WzFdICYgMTI3LCAwKTsKKworCQlidWYtPmF1eC5vZmZzZXQgPSBmYi0+b2Zmc2V0c1sxXTsKKwkJ YnVmLT5hdXguc3RyaWRlID0gZmItPnN0cmlkZXNbMV07CisJfQorfQorCitzdGF0aWMgdm9pZCBy ZW5kZXJjb3B5KHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKKwkJICAgICAgIGNvbnN0IHN0 cnVjdCBpZ3RfZmIgKmRzdF9mYiwKKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKnNyY19m YikKK3sKKwlzdHJ1Y3QgaWd0X2J1ZiBzcmMgPSB7fSwgZHN0ID0ge307CisJaWd0X3JlbmRlcl9j b3B5ZnVuY190IHJlbmRlcl9jb3B5ID0KKwkJaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoaW50ZWxf Z2V0X2RybV9kZXZpZChibGl0LT5mZCkpOworCisJaWd0X3JlcXVpcmUocmVuZGVyX2NvcHkpOwor CisJaWd0X2Fzc2VydF9lcShkc3RfZmItPm9mZnNldHNbMF0sIDApOworCWlndF9hc3NlcnRfZXEo c3JjX2ZiLT5vZmZzZXRzWzBdLCAwKTsKKworCWluaXRfYnVmKGJsaXQsICZzcmMsIHNyY19mYiwg ImNhaXJvIHJlbmRlcmNvcHkgc3JjIik7CisJaW5pdF9idWYoYmxpdCwgJmRzdCwgZHN0X2ZiLCAi Y2Fpcm8gcmVuZGVyY29weSBkc3QiKTsKKworCXJlbmRlcl9jb3B5KGJsaXQtPmJhdGNoLCBOVUxM LAorCQkgICAgJnNyYywgMCwgMCwgZHN0X2ZiLT5wbGFuZV93aWR0aFswXSwgZHN0X2ZiLT5wbGFu ZV9oZWlnaHRbMF0sCisJCSAgICAmZHN0LCAwLCAwKTsKK30KKwogc3RhdGljIHZvaWQgYmxpdGNv cHkoY29uc3Qgc3RydWN0IGlndF9mYiAqZHN0X2ZiLAogCQkgICAgIGNvbnN0IHN0cnVjdCBpZ3Rf ZmIgKnNyY19mYikKIHsKQEAgLTEzMDYsNyArMTM3MSwxMCBAQCBzdGF0aWMgdm9pZCBmcmVlX2xp bmVhcl9tYXBwaW5nKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCkKIAlnZW1fc2V0X2RvbWFp bihmZCwgbGluZWFyLT5mYi5nZW1faGFuZGxlLAogCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dU VCwgMCk7CiAKLQlibGl0Y29weShmYiwgJmxpbmVhci0+ZmIpOworCWlmIChibGl0LT5iYXRjaCkK KwkJcmVuZGVyY29weShibGl0LCBmYiwgJmxpbmVhci0+ZmIpOworCWVsc2UKKwkJYmxpdGNvcHko ZmIsICZsaW5lYXItPmZiKTsKIAogCWdlbV9zeW5jKGZkLCBsaW5lYXItPmZiLmdlbV9oYW5kbGUp OwogCWdlbV9jbG9zZShmZCwgbGluZWFyLT5mYi5nZW1faGFuZGxlKTsKQEAgLTEzMjMsOCArMTM5 MSwyNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX2JsaXQodm9pZCAqYXJn KQogCWZyZWUoYmxpdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwX2xpbmVhcl9tYXBwaW5nKGlu dCBmZCwgc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9ibGl0X2xpbmVhciAqbGluZWFyKQor c3RhdGljIHZvaWQgZGVzdHJveV9jYWlyb19zdXJmYWNlX19yZW5kZXJjb3B5KHZvaWQgKmFyZykK IHsKKwlzdHJ1Y3QgZmJfYmxpdF91cGxvYWQgKmJsaXQgPSBhcmc7CisKKwlibGl0LT5mYi0+Y2Fp cm9fc3VyZmFjZSA9IE5VTEw7CisKKwlmcmVlX2xpbmVhcl9tYXBwaW5nKGJsaXQpOworCisJaW50 ZWxfYmF0Y2hidWZmZXJfZnJlZShibGl0LT5iYXRjaCk7CisJZHJtX2ludGVsX2J1Zm1ncl9kZXN0 cm95KGJsaXQtPmJ1Zm1ncik7CisKKwlmcmVlKGJsaXQpOworfQorCitzdGF0aWMgdm9pZCBzZXR1 cF9saW5lYXJfbWFwcGluZyhzdHJ1Y3QgZmJfYmxpdF91cGxvYWQgKmJsaXQpCit7CisJaW50IGZk ID0gYmxpdC0+ZmQ7CisJc3RydWN0IGlndF9mYiAqZmIgPSBibGl0LT5mYjsKKwlzdHJ1Y3QgZmJf YmxpdF9saW5lYXIgKmxpbmVhciA9ICZibGl0LT5saW5lYXI7CisKIAkvKgogCSAqIFdlIGNyZWF0 ZSBhIGxpbmVhciBCTyB0aGF0IHdlJ2xsIG1hcCBmb3IgdGhlIENQVSB0byB3cml0ZSB0byAodXNp bmcKIAkgKiBjYWlybykuIFRoaXMgbGluZWFyIGJvIHdpbGwgYmUgdGhlbiBibGl0dGVkIHRvIGl0 cyBmaW5hbApAQCAtMTM0Myw3ICsxNDI5LDEwIEBAIHN0YXRpYyB2b2lkIHNldHVwX2xpbmVhcl9t YXBwaW5nKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9ibGl0X2xpbmVhCiAJ Z2VtX3NldF9kb21haW4oZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSwKIAkJCUk5MTVfR0VNX0RP TUFJTl9HVFQsIDApOwogCi0JYmxpdGNvcHkoJmxpbmVhci0+ZmIsIGZiKTsKKwlpZiAoYmxpdC0+ YmF0Y2gpCisJCXJlbmRlcmNvcHkoYmxpdCwgJmxpbmVhci0+ZmIsIGZiKTsKKwllbHNlCisJCWJs aXRjb3B5KCZsaW5lYXItPmZiLCBmYik7CiAKIAlnZW1fc3luYyhmZCwgbGluZWFyLT5mYi5nZW1f aGFuZGxlKTsKIApAQCAtMTM2MCwxMiArMTQ0OSwxMiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fp cm9fc3VyZmFjZV9fYmxpdChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCXN0cnVjdCBmYl9i bGl0X3VwbG9hZCAqYmxpdDsKIAljYWlyb19mb3JtYXRfdCBjYWlyb19mb3JtYXQ7CiAKLQlibGl0 ID0gbWFsbG9jKHNpemVvZigqYmxpdCkpOworCWJsaXQgPSBjYWxsb2MoMSwgc2l6ZW9mKCpibGl0 KSk7CiAJaWd0X2Fzc2VydChibGl0KTsKIAogCWJsaXQtPmZkID0gZmQ7CiAJYmxpdC0+ZmIgPSBm YjsKLQlzZXR1cF9saW5lYXJfbWFwcGluZyhmZCwgZmIsICZibGl0LT5saW5lYXIpOworCXNldHVw X2xpbmVhcl9tYXBwaW5nKGJsaXQpOwogCiAJY2Fpcm9fZm9ybWF0ID0gZHJtX2Zvcm1hdF90b19j YWlybyhmYi0+ZHJtX2Zvcm1hdCk7CiAJZmItPmNhaXJvX3N1cmZhY2UgPQpAQCAtMTM4MCw2ICsx NDY5LDM2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19ibGl0KGludCBmZCwg c3RydWN0IGlndF9mYiAqZmIpCiAJCQkJICAgIGJsaXQsIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9f YmxpdCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19yZW5kZXJjb3B5 KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCit7CisJc3RydWN0IGZiX2JsaXRfdXBsb2FkICpi bGl0OworCWNhaXJvX2Zvcm1hdF90IGNhaXJvX2Zvcm1hdDsKKworCWJsaXQgPSBjYWxsb2MoMSwg c2l6ZW9mKCpibGl0KSk7CisJaWd0X2Fzc2VydChibGl0KTsKKworCWJsaXQtPmZkID0gZmQ7CisJ YmxpdC0+ZmIgPSBmYjsKKworCWJsaXQtPmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2lu aXQoZmQsIDQwOTYpOworCWJsaXQtPmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYmxp dC0+YnVmbWdyLAorCQkJCQkgICAgICBpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisKKwlzZXR1 cF9saW5lYXJfbWFwcGluZyhibGl0KTsKKworCWNhaXJvX2Zvcm1hdCA9IGRybV9mb3JtYXRfdG9f Y2Fpcm8oZmItPmRybV9mb3JtYXQpOworCWZiLT5jYWlyb19zdXJmYWNlID0KKwkJY2Fpcm9faW1h Z2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYmxpdC0+bGluZWFyLm1hcCwKKwkJCQkJCSAgICBj YWlyb19mb3JtYXQsCisJCQkJCQkgICAgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAorCQkJCQkJICAg IGJsaXQtPmxpbmVhci5mYi5zdHJpZGVzWzBdKTsKKwlmYi0+ZG9tYWluID0gSTkxNV9HRU1fRE9N QUlOX0dUVDsKKworCWNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShmYi0+Y2Fpcm9fc3VyZmFj ZSwKKwkJCQkgICAgKGNhaXJvX3VzZXJfZGF0YV9rZXlfdCAqKWNyZWF0ZV9jYWlyb19zdXJmYWNl X19yZW5kZXJjb3B5LAorCQkJCSAgICBibGl0LCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX3JlbmRl cmNvcHkpOworfQorCiAvKioKICAqIGlndF9kaXJ0eV9mYjoKICAqIEBmZDogb3BlbiBkcm0gZmls ZSBkZXNjcmlwdG9yCkBAIC0xOTYxLDkgKzIwODAsOCBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2Nh aXJvX3N1cmZhY2VfX2NvbnZlcnQodm9pZCAqYXJnKQogCiBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fp cm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogewotCXN0cnVj dCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkICpibGl0ID0gbWFsbG9jKHNpemVvZigqYmxpdCkpOwor CXN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkICpibGl0ID0gY2FsbG9jKDEsIHNpemVvZigq YmxpdCkpOwogCXN0cnVjdCBmYl9jb252ZXJ0IGN2dCA9IHsgMCB9OwotCiAJaWd0X2Fzc2VydChi bGl0KTsKIAogCWJsaXQtPmJhc2UuZmQgPSBmZDsKQEAgLTE5NzYsNyArMjA5NCw3IEBAIHN0YXRp YyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9m YiAqZmIpCiAKIAlpZiAoZmItPnRpbGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxF RCB8fAogCSAgICBmYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkg ewotCQlzZXR1cF9saW5lYXJfbWFwcGluZyhmZCwgZmIsICZibGl0LT5iYXNlLmxpbmVhcik7CisJ CXNldHVwX2xpbmVhcl9tYXBwaW5nKCZibGl0LT5iYXNlKTsKIAl9IGVsc2UgewogCQlibGl0LT5i YXNlLmxpbmVhci5mYi5nZW1faGFuZGxlID0gMDsKIAkJYmxpdC0+YmFzZS5saW5lYXIubWFwID0g bWFwX2JvKGZkLCBmYik7CkBAIC0yMDUzLDggKzIxNzEsMTAgQEAgY2Fpcm9fc3VyZmFjZV90ICpp Z3RfZ2V0X2NhaXJvX3N1cmZhY2UoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJICAgICgo Zi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFUX0lOVkFMSUQpICYmCiAJCSAgICAgKGYtPnBpeG1h bl9pZCAhPSBQSVhNQU5faW52YWxpZCkpKQogCQkJY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2NvbnZl cnQoZmQsIGZiKTsKKwkJZWxzZSBpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpKQorCQkJ Y3JlYXRlX2NhaXJvX3N1cmZhY2VfX3JlbmRlcmNvcHkoZmQsIGZiKTsKIAkJZWxzZSBpZiAoZmIt PnRpbGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAotCQkgICAgZmItPnRp bGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpCisJCQkgZmItPnRpbGluZyA9 PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpCiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFj ZV9fYmxpdChmZCwgZmIpOwogCQllbHNlCiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3R0KGZk LCBmYik7Ci0tIAoyLjE4LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dgo=