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 3E80689E1A for ; Tue, 5 Mar 2019 01:48:19 +0000 (UTC) From: Dhinakaran Pandiyan Date: Mon, 4 Mar 2019 17:47:39 -0800 Message-Id: <20190305014742.3598-4-dhinakaran.pandiyan@intel.com> In-Reply-To: <20190305014742.3598-1-dhinakaran.pandiyan@intel.com> References: <20190305014742.3598-1-dhinakaran.pandiyan@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 4/7] 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 Cc: Clinton Taylor , Dhinakaran Pandiyan List-ID: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClBs dWcgaW4gcmVuZGVyY29weSB0byB0aGUgY2Fpcm8gc3VyZmFjZSBzdHVmZiBzbyB0aGF0IHdlIGNh bgpnZW5lcmF0ZSBjb21wcmVzc2VkIGJ1ZmZlcnMgd2l0aCBjYWlyby4KCnYyOiBzL21vZGlmaWVy X2hhc19jY3MvaXNfY2NzX21vZGlmaWVyLwoKdjM6IEZyb20gREsKIFNldCBidWYuYnBwIHdoZW4g aW5pdGlhbGl6aW5nIGFuZCByZWJhc2UuCnY0OiBGcm9tIERLCkZpeCBZZi10aWxlZCBCR1IgZm9y bWF0cwoKQ2M6IENsaW50b24gVGF5bG9yIDxjbGludG9uLmEudGF5bG9yQGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlh bkBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9mYi5jIHwgMTU1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE0NCBpbnNl cnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9s aWIvaWd0X2ZiLmMKaW5kZXggOWRjYTJhNDYuLmI0ODBhMGExIDEwMDY0NAotLS0gYS9saWIvaWd0 X2ZiLmMKKysrIGIvbGliL2lndF9mYi5jCkBAIC0yOTksNiArMjk5LDcgQEAgdm9pZCBpZ3RfZ2V0 X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKIAkJfQog CQlicmVhazsKIAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgorCWNhc2UgTE9D QUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOgogCQlpZ3RfcmVxdWlyZV9pbnRlbChmZCk7 CiAJCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpID09IDIpIHsKIAkJCSp3 aWR0aF9yZXQgPSAxMjg7CkBAIC0zMTIsNiArMzEzLDcgQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVf c2l6ZShpbnQgZmQsIHVpbnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKIAkJfQogCQlicmVhazsK IAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKKwljYXNlIExPQ0FMX0k5MTVf Rk9STUFUX01PRF9ZZl9USUxFRF9DQ1M6CiAJCWlndF9yZXF1aXJlX2ludGVsKGZkKTsKIAkJc3dp dGNoIChmYl9icHApIHsKIAkJY2FzZSA4OgpAQCAtMzYyLDEwICszNjQsMTkgQEAgdm9pZCBpZ3Rf Z2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKIAl9 CiB9CiAKK3N0YXRpYyBib29sIGlzX2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikKK3sK KwlyZXR1cm4gbW9kaWZpZXIgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8 CisJCW1vZGlmaWVyID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M7Cit9CisK IHN0YXRpYyB1bnNpZ25lZCBmYl9wbGFuZV93aWR0aChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwg aW50IHBsYW5lKQogewogCWNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCA9 IGxvb2t1cF9kcm1fZm9ybWF0KGZiLT5kcm1fZm9ybWF0KTsKIAorCWlmIChpc19jY3NfbW9kaWZp ZXIoZmItPnRpbGluZykgJiYgcGxhbmUgPT0gMSkKKwkJcmV0dXJuIERJVl9ST1VORF9VUChmYi0+ d2lkdGgsIDEwMjQpICogMTI4OworCiAJaWYgKHBsYW5lID09IDApCiAJCXJldHVybiBmYi0+d2lk dGg7CiAKQEAgLTM3NiwxMyArMzg3LDE5IEBAIHN0YXRpYyB1bnNpZ25lZCBmYl9wbGFuZV9icHAo Y29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFuZSkKIHsKIAljb25zdCBzdHJ1Y3QgZm9y bWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJtX2Zvcm1h dCk7CiAKLQlyZXR1cm4gZm9ybWF0LT5wbGFuZV9icHBbcGxhbmVdOworCWlmIChpc19jY3NfbW9k aWZpZXIoZmItPnRpbGluZykgJiYgcGxhbmUgPT0gMSkKKwkJcmV0dXJuIDg7CisJZWxzZQorCQly ZXR1cm4gZm9ybWF0LT5wbGFuZV9icHBbcGxhbmVdOwogfQogCiBzdGF0aWMgdW5zaWduZWQgZmJf cGxhbmVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCiB7CiAJY29u c3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZm9ybWF0ID0gbG9va3VwX2RybV9mb3JtYXQo ZmItPmRybV9mb3JtYXQpOwogCisJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+dGlsaW5nKSAmJiBw bGFuZSA9PSAxKQorCQlyZXR1cm4gRElWX1JPVU5EX1VQKGZiLT5oZWlnaHQsIDUxMikgKiAzMjsK KwogCWlmIChwbGFuZSA9PSAwKQogCQlyZXR1cm4gZmItPmhlaWdodDsKIApAQCAtMzkzLDcgKzQx MCwxMCBAQCBzdGF0aWMgaW50IGZiX251bV9wbGFuZXMoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIp CiB7CiAJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZm9ybWF0ID0gbG9va3VwX2Ry bV9mb3JtYXQoZmItPmRybV9mb3JtYXQpOwogCi0JcmV0dXJuIGZvcm1hdC0+bnVtX3BsYW5lczsK KwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpKQorCQlyZXR1cm4gMjsKKwllbHNlCisJ CXJldHVybiBmb3JtYXQtPm51bV9wbGFuZXM7CiB9CiAKIHN0YXRpYyB2b2lkIGZiX2luaXQoc3Ry dWN0IGlndF9mYiAqZmIsCkBAIC01NjEsOCArNTgxLDEwIEBAIHVpbnQ2NF90IGlndF9mYl9tb2Rf dG9fdGlsaW5nKHVpbnQ2NF90IG1vZGlmaWVyKQogCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1hfVElMRUQ6CiAJCXJldHVybiBJOTE1X1RJTElOR19YOwogCWNhc2UgTE9DQUxfSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQ6CisJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6 CiAJCXJldHVybiBJOTE1X1RJTElOR19ZOwogCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEOgorCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKIAkJcmV0 dXJuIEk5MTVfVElMSU5HX1lmOwogCWRlZmF1bHQ6CiAJCWlndF9hc3NlcnQoMCk7CkBAIC0xNDU5 LDggKzE0ODEsNTQgQEAgc3RydWN0IGZiX2JsaXRfdXBsb2FkIHsKIAlpbnQgZmQ7CiAJc3RydWN0 IGlndF9mYiAqZmI7CiAJc3RydWN0IGZiX2JsaXRfbGluZWFyIGxpbmVhcjsKKwlkcm1faW50ZWxf YnVmbWdyICpidWZtZ3I7CisJc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKIH07CiAK K3N0YXRpYyB2b2lkIGluaXRfYnVmKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKKwkJICAg ICBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAorCQkgICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLAor CQkgICAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJaWd0X2Fzc2VydF9lcShmYi0+b2Zmc2V0c1sw XSwgMCk7CisKKwlidWYtPmJvID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oYmxpdC0+YnVmbWdy LCBibGl0LT5mZCwKKwkJCQkJICBuYW1lLCBmYi0+Z2VtX2hhbmRsZSk7CisJYnVmLT50aWxpbmcg PSBpZ3RfZmJfbW9kX3RvX3RpbGluZyhmYi0+dGlsaW5nKTsKKwlidWYtPnN0cmlkZSA9IGZiLT5z dHJpZGVzWzBdOworCWJ1Zi0+YnBwID0gZmItPnBsYW5lX2JwcFswXTsKKwlidWYtPnNpemUgPSBm Yi0+c2l6ZTsKKworCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPnRpbGluZykpIHsKKwkJaWd0X2Fz c2VydF9lcShmYi0+c3RyaWRlc1swXSAmIDEyNywgMCk7CisJCWlndF9hc3NlcnRfZXEoZmItPnN0 cmlkZXNbMV0gJiAxMjcsIDApOworCisJCWJ1Zi0+YXV4Lm9mZnNldCA9IGZiLT5vZmZzZXRzWzFd OworCQlidWYtPmF1eC5zdHJpZGUgPSBmYi0+c3RyaWRlc1sxXTsKKwl9Cit9CisKK3N0YXRpYyB2 b2lkIHJlbmRlcmNvcHkoc3RydWN0IGZiX2JsaXRfdXBsb2FkICpibGl0LAorCQkgICAgICAgY29u c3Qgc3RydWN0IGlndF9mYiAqZHN0X2ZiLAorCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9mYiAq c3JjX2ZiKQoreworCXN0cnVjdCBpZ3RfYnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsKKwlpZ3RfcmVu ZGVyX2NvcHlmdW5jX3QgcmVuZGVyX2NvcHkgPQorCQlpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhp bnRlbF9nZXRfZHJtX2RldmlkKGJsaXQtPmZkKSk7CisKKwlpZ3RfcmVxdWlyZShyZW5kZXJfY29w eSk7CisKKwlpZ3RfYXNzZXJ0X2VxKGRzdF9mYi0+b2Zmc2V0c1swXSwgMCk7CisJaWd0X2Fzc2Vy dF9lcShzcmNfZmItPm9mZnNldHNbMF0sIDApOworCisJaW5pdF9idWYoYmxpdCwgJnNyYywgc3Jj X2ZiLCAiY2Fpcm8gcmVuZGVyY29weSBzcmMiKTsKKwlpbml0X2J1ZihibGl0LCAmZHN0LCBkc3Rf ZmIsICJjYWlybyByZW5kZXJjb3B5IGRzdCIpOworCisJcmVuZGVyX2NvcHkoYmxpdC0+YmF0Y2gs IE5VTEwsCisJCSAgICAmc3JjLCAwLCAwLCBkc3RfZmItPnBsYW5lX3dpZHRoWzBdLCBkc3RfZmIt PnBsYW5lX2hlaWdodFswXSwKKwkJICAgICZkc3QsIDAsIDApOworfQorCiBzdGF0aWMgdm9pZCBi bGl0Y29weShjb25zdCBzdHJ1Y3QgaWd0X2ZiICpkc3RfZmIsCiAJCSAgICAgY29uc3Qgc3RydWN0 IGlndF9mYiAqc3JjX2ZiKQogewpAQCAtMTQ5OCw3ICsxNTY2LDEwIEBAIHN0YXRpYyB2b2lkIGZy ZWVfbGluZWFyX21hcHBpbmcoc3RydWN0IGZiX2JsaXRfdXBsb2FkICpibGl0KQogCWdlbV9zZXRf ZG9tYWluKGZkLCBsaW5lYXItPmZiLmdlbV9oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01B SU5fR1RULCAwKTsKIAotCWJsaXRjb3B5KGZiLCAmbGluZWFyLT5mYik7CisJaWYgKGJsaXQtPmJh dGNoKQorCQlyZW5kZXJjb3B5KGJsaXQsIGZiLCAmbGluZWFyLT5mYik7CisJZWxzZQorCQlibGl0 Y29weShmYiwgJmxpbmVhci0+ZmIpOwogCiAJZ2VtX3N5bmMoZmQsIGxpbmVhci0+ZmIuZ2VtX2hh bmRsZSk7CiAJZ2VtX2Nsb3NlKGZkLCBsaW5lYXItPmZiLmdlbV9oYW5kbGUpOwpAQCAtMTUxNSw4 ICsxNTg2LDI2IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9fYmxpdCh2b2lk ICphcmcpCiAJZnJlZShibGl0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0dXBfbGluZWFyX21hcHBp bmcoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2JsaXRfbGluZWFyICpsaW5l YXIpCitzdGF0aWMgdm9pZCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX3JlbmRlcmNvcHkodm9pZCAq YXJnKQoreworCXN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCA9IGFyZzsKKworCWJsaXQtPmZi LT5jYWlyb19zdXJmYWNlID0gTlVMTDsKKworCWZyZWVfbGluZWFyX21hcHBpbmcoYmxpdCk7CisK KwlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJsaXQtPmJhdGNoKTsKKwlkcm1faW50ZWxfYnVmbWdy X2Rlc3Ryb3koYmxpdC0+YnVmbWdyKTsKKworCWZyZWUoYmxpdCk7Cit9CisKK3N0YXRpYyB2b2lk IHNldHVwX2xpbmVhcl9tYXBwaW5nKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCkKIHsKKwlp bnQgZmQgPSBibGl0LT5mZDsKKwlzdHJ1Y3QgaWd0X2ZiICpmYiA9IGJsaXQtPmZiOworCXN0cnVj dCBmYl9ibGl0X2xpbmVhciAqbGluZWFyID0gJmJsaXQtPmxpbmVhcjsKKwogCS8qCiAJICogV2Ug Y3JlYXRlIGEgbGluZWFyIEJPIHRoYXQgd2UnbGwgbWFwIGZvciB0aGUgQ1BVIHRvIHdyaXRlIHRv ICh1c2luZwogCSAqIGNhaXJvKS4gVGhpcyBsaW5lYXIgYm8gd2lsbCBiZSB0aGVuIGJsaXR0ZWQg dG8gaXRzIGZpbmFsCkBAIC0xNTM1LDcgKzE2MjQsMTAgQEAgc3RhdGljIHZvaWQgc2V0dXBfbGlu ZWFyX21hcHBpbmcoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2JsaXRfbGlu ZWEKIAlnZW1fc2V0X2RvbWFpbihmZCwgbGluZWFyLT5mYi5nZW1faGFuZGxlLAogCQkJSTkxNV9H RU1fRE9NQUlOX0dUVCwgMCk7CiAKLQlibGl0Y29weSgmbGluZWFyLT5mYiwgZmIpOworCWlmIChi bGl0LT5iYXRjaCkKKwkJcmVuZGVyY29weShibGl0LCAmbGluZWFyLT5mYiwgZmIpOworCWVsc2UK KwkJYmxpdGNvcHkoJmxpbmVhci0+ZmIsIGZiKTsKIAogCWdlbV9zeW5jKGZkLCBsaW5lYXItPmZi LmdlbV9oYW5kbGUpOwogCkBAIC0xNTUyLDEyICsxNjQ0LDEyIEBAIHN0YXRpYyB2b2lkIGNyZWF0 ZV9jYWlyb19zdXJmYWNlX19ibGl0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJc3RydWN0 IGZiX2JsaXRfdXBsb2FkICpibGl0OwogCWNhaXJvX2Zvcm1hdF90IGNhaXJvX2Zvcm1hdDsKIAot CWJsaXQgPSBtYWxsb2Moc2l6ZW9mKCpibGl0KSk7CisJYmxpdCA9IGNhbGxvYygxLCBzaXplb2Yo KmJsaXQpKTsKIAlpZ3RfYXNzZXJ0KGJsaXQpOwogCiAJYmxpdC0+ZmQgPSBmZDsKIAlibGl0LT5m YiA9IGZiOwotCXNldHVwX2xpbmVhcl9tYXBwaW5nKGZkLCBmYiwgJmJsaXQtPmxpbmVhcik7CisJ c2V0dXBfbGluZWFyX21hcHBpbmcoYmxpdCk7CiAKIAljYWlyb19mb3JtYXQgPSBkcm1fZm9ybWF0 X3RvX2NhaXJvKGZiLT5kcm1fZm9ybWF0KTsKIAlmYi0+Y2Fpcm9fc3VyZmFjZSA9CkBAIC0xNTcy LDYgKzE2NjQsMzYgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2JsaXQoaW50 IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCQkgICAgYmxpdCwgZGVzdHJveV9jYWlyb19zdXJm YWNlX19ibGl0KTsKIH0KIAorc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX3JlbmRl cmNvcHkoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKK3sKKwlzdHJ1Y3QgZmJfYmxpdF91cGxv YWQgKmJsaXQ7CisJY2Fpcm9fZm9ybWF0X3QgY2Fpcm9fZm9ybWF0OworCisJYmxpdCA9IGNhbGxv YygxLCBzaXplb2YoKmJsaXQpKTsKKwlpZ3RfYXNzZXJ0KGJsaXQpOworCisJYmxpdC0+ZmQgPSBm ZDsKKwlibGl0LT5mYiA9IGZiOworCisJYmxpdC0+YnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9n ZW1faW5pdChmZCwgNDA5Nik7CisJYmxpdC0+YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxv YyhibGl0LT5idWZtZ3IsCisJCQkJCSAgICAgIGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKKwor CXNldHVwX2xpbmVhcl9tYXBwaW5nKGJsaXQpOworCisJY2Fpcm9fZm9ybWF0ID0gZHJtX2Zvcm1h dF90b19jYWlybyhmYi0+ZHJtX2Zvcm1hdCk7CisJZmItPmNhaXJvX3N1cmZhY2UgPQorCQljYWly b19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShibGl0LT5saW5lYXIubWFwLAorCQkJCQkJ ICAgIGNhaXJvX2Zvcm1hdCwKKwkJCQkJCSAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCisJCQkJ CQkgICAgYmxpdC0+bGluZWFyLmZiLnN0cmlkZXNbMF0pOworCWZiLT5kb21haW4gPSBJOTE1X0dF TV9ET01BSU5fR1RUOworCisJY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKGZiLT5jYWlyb19z dXJmYWNlLAorCQkJCSAgICAoY2Fpcm9fdXNlcl9kYXRhX2tleV90ICopY3JlYXRlX2NhaXJvX3N1 cmZhY2VfX3JlbmRlcmNvcHksCisJCQkJICAgIGJsaXQsIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9f cmVuZGVyY29weSk7Cit9CisKIC8qKgogICogaWd0X2RpcnR5X2ZiOgogICogQGZkOiBvcGVuIGRy bSBmaWxlIGRlc2NyaXB0b3IKQEAgLTIzMzcsNyArMjQ1OSw3IEBAIHN0YXRpYyB2b2lkIGRlc3Ry b3lfY2Fpcm9fc3VyZmFjZV9fY29udmVydCh2b2lkICphcmcpCiAKIHN0YXRpYyB2b2lkIGNyZWF0 ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiB7Ci0J c3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBtYWxsb2Moc2l6ZW9mKCpibGl0 KSk7CisJc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBjYWxsb2MoMSwgc2l6 ZW9mKCpibGl0KSk7CiAJc3RydWN0IGZiX2NvbnZlcnQgY3Z0ID0geyB9OwogCWNvbnN0IHN0cnVj dCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJtX2Zvcm1h dCk7CiAJdW5zaWduZWQgZHJtX2Zvcm1hdDsKQEAgLTIzNjksNiArMjQ5MSwxMyBAQCBzdGF0aWMg dm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIg KmZiKQogCiAJYmxpdC0+YmFzZS5mZCA9IGZkOwogCWJsaXQtPmJhc2UuZmIgPSBmYjsKKworCWlm IChpc19jY3NfbW9kaWZpZXIoZmItPnRpbGluZykpIHsKKwkJYmxpdC0+YmFzZS5idWZtZ3IgPSBk cm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGZkLCA0MDk2KTsKKwkJYmxpdC0+YmFzZS5iYXRjaCA9 IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJsaXQtPmJhc2UuYnVmbWdyLAorCQkJCQkJICAgaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpOworCX0KKwogCWJsaXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJf Y3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoZmQsIGRybV9mb3JtYXQsCiAJCQkJCQkJICAgICBm Yi0+d2lkdGgsCiAJCQkJCQkJICAgICBmYi0+aGVpZ2h0LApAQCAtMjM3Niw4ICsyNTA1LDEwIEBA IHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0 IGlndF9mYiAqZmIpCiAJaWd0X2Fzc2VydChibGl0LT5zaGFkb3dfcHRyKTsKIAogCWlmIChmYi0+ dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Ci0JICAgIGZiLT50aWxp bmcgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7Ci0JCXNldHVwX2xpbmVhcl9t YXBwaW5nKGZkLCBmYiwgJmJsaXQtPmJhc2UubGluZWFyKTsKKwkgICAgZmItPnRpbGluZyA9PSBM T0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgfHwKKwkgICAgZmItPnRpbGluZyA9PSBMT0NB TF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MgfHwKKwkgICAgZmItPnRpbGluZyA9PSBMT0NB TF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTKSB7CisJCXNldHVwX2xpbmVhcl9tYXBwaW5n KCZibGl0LT5iYXNlKTsKIAl9IGVsc2UgewogCQlibGl0LT5iYXNlLmxpbmVhci5mYiA9ICpmYjsK IAkJYmxpdC0+YmFzZS5saW5lYXIuZmIuZ2VtX2hhbmRsZSA9IDA7CkBAIC0yNDU2LDggKzI1ODcs MTAgQEAgY2Fpcm9fc3VyZmFjZV90ICppZ3RfZ2V0X2NhaXJvX3N1cmZhY2UoaW50IGZkLCBzdHJ1 Y3QgaWd0X2ZiICpmYikKIAkJICAgICgoZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFUX0lOVkFM SUQpICYmCiAJCSAgICAgKGYtPnBpeG1hbl9pZCAhPSBQSVhNQU5faW52YWxpZCkpKQogCQkJY3Jl YXRlX2NhaXJvX3N1cmZhY2VfX2NvbnZlcnQoZmQsIGZiKTsKKwkJZWxzZSBpZiAoaXNfY2NzX21v ZGlmaWVyKGZiLT50aWxpbmcpKQorCQkJY3JlYXRlX2NhaXJvX3N1cmZhY2VfX3JlbmRlcmNvcHko ZmQsIGZiKTsKIAkJZWxzZSBpZiAoZmItPnRpbGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRCB8fAotCQkgICAgZmItPnRpbGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZf VElMRUQpCisJCQkgZmItPnRpbGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQp CiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fYmxpdChmZCwgZmIpOwogCQllbHNlCiAJCQljcmVh dGVfY2Fpcm9fc3VyZmFjZV9fZ3R0KGZkLCBmYik7Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0Cmln dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==