From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 10/13] HACK: drm/i915: Make non-blocking GPU synchronization optional Date: Fri, 16 Nov 2012 16:22:22 +0200 Message-ID: <1353075745-30115-11-git-send-email-ville.syrjala@linux.intel.com> References: <1353075745-30115-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1353075745-30115-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCBhIG1vZHVsZSBwYXJhbWV0ZXIgdGhhdCBhbGxvd3Mgb25lIHRvIGVhc2lseSBjaGFuZ2UgYmV0 d2VlbiBibG9ja2luZwphbmQgbm9uLWJsb2NraW5nIEdQVSBzeW5jaHJvbml6YXRpb24gd2l0aCBh dG9taWMgcGFnZSBmbGlwcy4KClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9zdHViLmMg ICAgICAgICAgfCAgICA1ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggICB8 ICAgNDkgKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5j IHwgIDExOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFu Z2VkLCAxNzIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX3N0dWIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3R1Yi5jCmluZGV4 IGMyMzZmZDIuLmE2MTQ5ZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3R1Yi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3R1Yi5jCkBAIC00NiwxNiArNDYsMjEgQEAgRVhQ T1JUX1NZTUJPTChkcm1fdmJsYW5rX29mZmRlbGF5KTsKIHVuc2lnbmVkIGludCBkcm1fdGltZXN0 YW1wX3ByZWNpc2lvbiA9IDIwOyAgLyogRGVmYXVsdCB0byAyMCB1c2Vjcy4gKi8KIEVYUE9SVF9T WU1CT0woZHJtX3RpbWVzdGFtcF9wcmVjaXNpb24pOwogCit1bnNpZ25lZCBpbnQgZHJtX2FzeW5j X2dwdSA9IDE7CS8qIDEgdG8gZW5hYmxlIGFzeW5jIGdwdSB3YWl0ICovCitFWFBPUlRfU1lNQk9M KGRybV9hc3luY19ncHUpOworCiBNT0RVTEVfQVVUSE9SKENPUkVfQVVUSE9SKTsKIE1PRFVMRV9E RVNDUklQVElPTihDT1JFX0RFU0MpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCBhbmQgYWRkaXRpb25h bCByaWdodHMiKTsKIE1PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJFbmFibGUgZGVidWcgb3V0cHV0 Iik7CiBNT0RVTEVfUEFSTV9ERVNDKHZibGFua29mZmRlbGF5LCAiRGVsYXkgdW50aWwgdmJsYW5r IGlycSBhdXRvLWRpc2FibGUgW21zZWNzXSIpOwogTU9EVUxFX1BBUk1fREVTQyh0aW1lc3RhbXBf cHJlY2lzaW9uX3VzZWMsICJNYXguIGVycm9yIG9uIHRpbWVzdGFtcHMgW3VzZWNzXSIpOworTU9E VUxFX1BBUk1fREVTQyhhc3luY19ncHUsICJBc3luYyBHUFUgd2FpdCIpOwogCiBtb2R1bGVfcGFy YW1fbmFtZWQoZGVidWcsIGRybV9kZWJ1ZywgaW50LCAwNjAwKTsKIG1vZHVsZV9wYXJhbV9uYW1l ZCh2YmxhbmtvZmZkZWxheSwgZHJtX3ZibGFua19vZmZkZWxheSwgaW50LCAwNjAwKTsKIG1vZHVs ZV9wYXJhbV9uYW1lZCh0aW1lc3RhbXBfcHJlY2lzaW9uX3VzZWMsIGRybV90aW1lc3RhbXBfcHJl Y2lzaW9uLCBpbnQsIDA2MDApOworbW9kdWxlX3BhcmFtX25hbWVkKGFzeW5jX2dwdSwgZHJtX2Fz eW5jX2dwdSwgaW50LCAwNjAwKTsKIAogc3RydWN0IGlkciBkcm1fbWlub3JzX2lkcjsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90cmFjZS5oCmluZGV4IGY3MWUxYjMuLjc1NGEyMDQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3RyYWNlLmgKQEAgLTE2LDYgKzE2LDU1IEBACiAKIC8qIG9iamVjdCB0cmFja2lu ZyAqLwogCitUUkFDRV9FVkVOVChpOTE1X2F0b21pY19mbGlwLAorCSAgICBUUF9QUk9UTyhib29s IHNwcml0ZSwgaW50IHBpcGUsIGludCBhY3Rpb24sIHUzMiBjb21taXRfc3VyZiwgdTMyIGNvbW1p dF9zdXJmbGl2ZSwgdTMyIHN1cmYsIHUzMiBzdXJmbGl2ZSwgdTMyIGlpciwgdTMyIGNvbW1pdF9k c2wsIHUzMiBkc2wsIHUzMiBmbGlwX3ZibF9jb3VudCwgdTMyIHZibF9jb3VudCksCisJICAgIFRQ X0FSR1Moc3ByaXRlLCBwaXBlLCBhY3Rpb24sIGNvbW1pdF9zdXJmLCBjb21taXRfc3VyZmxpdmUs IHN1cmYsIHN1cmZsaXZlLCBpaXIsIGNvbW1pdF9kc2wsIGRzbCwgZmxpcF92YmxfY291bnQsIHZi bF9jb3VudCksCisKKwkgICAgVFBfU1RSVUNUX19lbnRyeSgKKwkJCSAgICAgX19maWVsZChib29s LCBzcHJpdGUpCisJCQkgICAgIF9fZmllbGQoaW50LCBwaXBlKQorCQkJICAgICBfX2ZpZWxkKGlu dCwgYWN0aW9uKQorCQkJICAgICBfX2ZpZWxkKHUzMiwgY29tbWl0X3N1cmYpCisJCQkgICAgIF9f ZmllbGQodTMyLCBjb21taXRfc3VyZmxpdmUpCisJCQkgICAgIF9fZmllbGQodTMyLCBzdXJmKQor CQkJICAgICBfX2ZpZWxkKHUzMiwgc3VyZmxpdmUpCisJCQkgICAgIF9fZmllbGQodTMyLCBpaXIp CisJCQkgICAgIF9fZmllbGQodTMyLCBjb21taXRfZHNsKQorCQkJICAgICBfX2ZpZWxkKHUzMiwg ZHNsKQorCQkJICAgICBfX2ZpZWxkKHUzMiwgZmxpcF92YmxfY291bnQpCisJCQkgICAgIF9fZmll bGQodTMyLCB2YmxfY291bnQpCisJCQkgICAgICksCisKKwkgICAgVFBfZmFzdF9hc3NpZ24oCisJ CQkgICBfX2VudHJ5LT5zcHJpdGUgPSBzcHJpdGU7CisJCQkgICBfX2VudHJ5LT5waXBlID0gcGlw ZTsKKwkJCSAgIF9fZW50cnktPmFjdGlvbiA9IGFjdGlvbjsKKwkJCSAgIF9fZW50cnktPmNvbW1p dF9zdXJmID0gY29tbWl0X3N1cmY7CisJCQkgICBfX2VudHJ5LT5jb21taXRfc3VyZmxpdmUgPSBj b21taXRfc3VyZmxpdmU7CisJCQkgICBfX2VudHJ5LT5zdXJmID0gc3VyZjsKKwkJCSAgIF9fZW50 cnktPnN1cmZsaXZlID0gc3VyZmxpdmU7CisJCQkgICBfX2VudHJ5LT5paXIgPSBpaXI7CisJCQkg ICBfX2VudHJ5LT5jb21taXRfZHNsID0gY29tbWl0X2RzbDsKKwkJCSAgIF9fZW50cnktPmRzbCA9 IGRzbDsKKwkJCSAgIF9fZW50cnktPmZsaXBfdmJsX2NvdW50ID0gZmxpcF92YmxfY291bnQ7CisJ CQkgICBfX2VudHJ5LT52YmxfY291bnQgPSB2YmxfY291bnQ7CisJCQkgICApLAorCisJICAgIFRQ X3ByaW50aygKKwkJICAgICAgIiVzLyVkICVzIGNvbW1pdF9zdXJmPSV4IGNvbW1pdF9zdXJmbGl2 ZT0leCBzdXJmPSV4IHN1cmZsaXZlPSV4IGlpcj0leCBjb21taXRfZHNsPSV1IGRzbD0ldSBmbGlw X3ZibF9jb3VudD0ldSB2YmxfY291bnQ9JXUiLAorCQkgICAgICBfX2VudHJ5LT5zcHJpdGUgPyAi U1BSIiA6ICJEU1AiLCBfX2VudHJ5LT5waXBlLAorCQkgICAgICBfX2VudHJ5LT5hY3Rpb24gPT0g MCA/ICJuZXciIDoKKwkJICAgICAgX19lbnRyeS0+YWN0aW9uID09IDEgPyAiZmxpcHBlZCIgOgor CQkgICAgICBfX2VudHJ5LT5hY3Rpb24gPT0gMiA/ICJub3QgZmxpcHBlZCIgOgorCQkgICAgICBf X2VudHJ5LT5hY3Rpb24gPT0gMyA/ICJtaXNzZWQgZmxpcHBlZCIgOiAiPyIsCisJCSAgICAgIF9f ZW50cnktPmNvbW1pdF9zdXJmLCBfX2VudHJ5LT5jb21taXRfc3VyZmxpdmUsCisJCSAgICAgIF9f ZW50cnktPnN1cmYsIF9fZW50cnktPnN1cmZsaXZlLAorCQkgICAgICBfX2VudHJ5LT5paXIsCisJ CSAgICAgIF9fZW50cnktPmNvbW1pdF9kc2wsIF9fZW50cnktPmRzbCwKKwkJICAgICAgX19lbnRy eS0+ZmxpcF92YmxfY291bnQsIF9fZW50cnktPnZibF9jb3VudAorCQkgICAgICApCispOworCiBU UkFDRV9FVkVOVChpOTE1X2ZsaXBfcXVldWVfbGVuLAogCSAgICBUUF9QUk9UTyh1bnNpZ25lZCBp bnQgcXVldWVfbGVuKSwKIAkgICAgVFBfQVJHUyhxdWV1ZV9sZW4pLApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYwppbmRleCBmMmU2ZDg4Li4xNzBhYzZmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYwpAQCAtMzQsNiArMzQsOCBAQAogI2RlZmluZSBVU0VfT0xSCiAvLyNkZWZp bmUgRk9SQ0VfQ0FDSEVfRkxVU0gKIAorLy8jZGVmaW5lIFNVUkZMSVZFX0RFQlVHCisKIHN0cnVj dCBpbnRlbF9mbGlwIHsKIAlzdHJ1Y3QgZHJtX2ZsaXAgYmFzZTsKIAl1MzIgdmJsX2NvdW50OwpA QCAtNTEsNiArNTMsMTEgQEAgc3RydWN0IGludGVsX2ZsaXAgewogCXVuc2lnbmVkIGludCBmbGlw X3NlcTsKIAkvKiBGSVhNRSBuZWVkIGN1cnNvciByZWdzIHRvbyAqLwogCXN0cnVjdCBpbnRlbF9w bGFuZV9yZWdzIHJlZ3M7CisjaWZkZWYgU1VSRkxJVkVfREVCVUcKKwl1MzIgY29tbWl0X2RzbDsK Kwl1MzIgY29tbWl0X3N1cmY7CisJdTMyIGNvbW1pdF9zdXJmbGl2ZTsKKyNlbmRpZgogfTsKIAog c3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKQEAgLTgwNiwxMSArODEzLDEzIEBAIHN0YXRpYyB2 b2lkIHVucGluX2ZicyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIH0KIAorZXh0ZXJuIHVu c2lnbmVkIGludCBkcm1fYXN5bmNfZ3B1OworCiBzdGF0aWMgaW50IHBpbl9mYnMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqcykKIHsKIAlp bnQgaSwgcmV0OwotCWJvb2wgbm9uYmxvY2sgPSBzLT5mbGFncyAmIERSTV9NT0RFX0FUT01JQ19O T05CTE9DSzsKKwlib29sIG5vbmJsb2NrID0gZHJtX2FzeW5jX2dwdSAmJiAocy0+ZmxhZ3MgJiBE Uk1fTU9ERV9BVE9NSUNfTk9OQkxPQ0spOwogCiAJZm9yIChpID0gMDsgaSA8IGRldi0+bW9kZV9j b25maWcubnVtX2NydGM7IGkrKykgewogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3QgPSAm cy0+Y3J0Y1tpXTsKQEAgLTE5NzEsNiArMTk4MCw0OCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mbGlw X3ByZXBhcmUoc3RydWN0IGRybV9mbGlwICpmbGlwKQogCX0KIH0KIAorI2lmZGVmIFNVUkZMSVZF X0RFQlVHCitlbnVtIGZsaXBfYWN0aW9uIHsKKwlfTkVXLAorCV9GTElQUEVELAorCV9OT1RfRkxJ UFBFRCwKKwlfTUlTU0VEX0ZMSVBQRUQsCit9OworCitzdGF0aWMgdm9pZCB0cmFjZV9mbGlwKHN0 cnVjdCBpbnRlbF9mbGlwICppbnRlbF9mbGlwLCBlbnVtIGZsaXBfYWN0aW9uIGFjdGlvbikKK3sK KwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBpbnRlbF9mbGlwLT5jcnRjOworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Yykt PnBpcGU7CisJdTMyIHN1cmY7CisJdTMyIHN1cmZsaXZlOworCXUzMiBkc2w7CisJdTMyIGlpcjsK Kwl1MzIgdmJsX2NvdW50OworCisJaWYgKGludGVsX2ZsaXAtPnBsYW5lKSB7CisJCXN1cmYgPSBJ OTE1X1JFQUQoU1BSU1VSRihwaXBlKSk7CisJCXN1cmZsaXZlID0gSTkxNV9SRUFEKFNQUlNVUkZM SVZFKHBpcGUpKTsKKwl9IGVsc2UgeworCQlzdXJmID0gSTkxNV9SRUFEKERTUFNVUkYocGlwZSkp OworCQlzdXJmbGl2ZSA9IEk5MTVfUkVBRChEU1BTVVJGTElWRShwaXBlKSk7CisJfQorCWRzbCA9 IEk5MTVfUkVBRChQSVBFRFNMKHBpcGUpKTsKKwlpaXIgPSBJOTE1X1JFQUQoREVJSVIpOworCXZi bF9jb3VudCA9IGdldF92YmxfY291bnQoY3J0Yyk7CisKKwl0cmFjZV9pOTE1X2F0b21pY19mbGlw KGludGVsX2ZsaXAtPnBsYW5lICE9IE5VTEwsIHBpcGUsIGFjdGlvbiwKKwkJCSAgICAgICBpbnRl bF9mbGlwLT5jb21taXRfc3VyZiwgaW50ZWxfZmxpcC0+Y29tbWl0X3N1cmZsaXZlLAorCQkJICAg ICAgIHN1cmYsIHN1cmZsaXZlLCBpaXIsIGludGVsX2ZsaXAtPmNvbW1pdF9kc2wsIGRzbCwKKwkJ CSAgICAgICBpbnRlbF9mbGlwLT52YmxfY291bnQsIHZibF9jb3VudCk7Cit9CisjZW5kaWYKKwor I2lmZGVmIFNVUkZMSVZFX0RFQlVHCitzdGF0aWMgdW5zaWduZWQgaW50IG1pc3NlZF9mbGlwczsK KyNlbmRpZgorCiBzdGF0aWMgYm9vbCBpbnRlbF9mbGlwX2ZsaXAoc3RydWN0IGRybV9mbGlwICpm bGlwLAogCQkJICAgIHN0cnVjdCBkcm1fZmxpcCAqcGVuZGluZ19mbGlwKQogewpAQCAtMTk4MCw2 ICsyMDMxLDkgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmxpcF9mbGlwKHN0cnVjdCBkcm1fZmxpcCAq ZmxpcCwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCWludCBwaXBlID0g aW50ZWxfY3J0Yy0+cGlwZTsKIAl1MzIgdmJsX2NvdW50OworI2lmZGVmIFNVUkZMSVZFX0RFQlVH CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK KyNlbmRpZgogCiAJaW50ZWxfZmxpcC0+dmJsYW5rX3JlZiA9IGRybV92YmxhbmtfZ2V0KGRldiwg cGlwZSkgPT0gMDsKIApAQCAtMTk5MSwxMCArMjA0NSwyNiBAQCBzdGF0aWMgYm9vbCBpbnRlbF9m bGlwX2ZsaXAoc3RydWN0IGRybV9mbGlwICpmbGlwLAogCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmlu dGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwogCiAJCWludGVsX3BsYW5lLT5jb21t aXQocGxhbmUsICZpbnRlbF9mbGlwLT5yZWdzKTsKKworI2lmZGVmIFNVUkZMSVZFX0RFQlVHCisJ CWludGVsX2ZsaXAtPmNvbW1pdF9kc2wgPSBJOTE1X1JFQUQoUElQRURTTChwaXBlKSk7CisJCWlu dGVsX2ZsaXAtPmNvbW1pdF9zdXJmID0gSTkxNV9SRUFEKFNQUlNVUkYocGlwZSkpOworCQlpbnRl bF9mbGlwLT5jb21taXRfc3VyZmxpdmUgPSBJOTE1X1JFQUQoU1BSU1VSRkxJVkUocGlwZSkpOwor CQlpZiAoaW50ZWxfZmxpcC0+Y29tbWl0X3N1cmYgIT0gaW50ZWxfZmxpcC0+cmVncy5zdXJmKQor CQkJcHJfZXJyKCJTUFJJVEUgU1VSRiBNSVNNQVRDSFxuIik7CisjZW5kaWYKIAl9IGVsc2Ugewog CQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CiAJCWRldl9wcml2LT5kaXNwbGF5LmNvbW1pdF9wbGFuZShjcnRjLCAmaW50ZWxfZmxpcC0+cmVn cyk7CisKKyNpZmRlZiBTVVJGTElWRV9ERUJVRworCQlpbnRlbF9mbGlwLT5jb21taXRfZHNsID0g STkxNV9SRUFEKFBJUEVEU0wocGlwZSkpOworCQlpbnRlbF9mbGlwLT5jb21taXRfc3VyZiA9IEk5 MTVfUkVBRChEU1BTVVJGKHBpcGUpKTsKKwkJaW50ZWxfZmxpcC0+Y29tbWl0X3N1cmZsaXZlID0g STkxNV9SRUFEKERTUFNVUkZMSVZFKHBpcGUpKTsKKwkJaWYgKGludGVsX2ZsaXAtPmNvbW1pdF9z dXJmICE9IGludGVsX2ZsaXAtPnJlZ3Muc3VyZikKKwkJCXByX2VycigiUFJJTUFSWSBQTEFORSBT VVJGIE1JU01BVENIXG4iKTsKKyNlbmRpZgogCX0KIAogCWlmIChpbnRlbF9mbGlwLT5oYXNfY3Vy c29yKQpAQCAtMjAxMSwxNiArMjA4MSwzOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mbGlwX2ZsaXAo c3RydWN0IGRybV9mbGlwICpmbGlwLAogCWVsc2UKIAkJaW50ZWxfZmxpcC0+dmJsX2NvdW50ID0g KHZibF9jb3VudCArIDEpICYgMHhmZmZmZmY7CiAKKyNpZmRlZiBTVVJGTElWRV9ERUJVRworCXRy YWNlX2ZsaXAoaW50ZWxfZmxpcCwgX05FVyk7CisjZW5kaWYKKwogCWlmIChwZW5kaW5nX2ZsaXAp IHsKIAkJc3RydWN0IGludGVsX2ZsaXAgKm9sZF9pbnRlbF9mbGlwID0KIAkJCWNvbnRhaW5lcl9v ZihwZW5kaW5nX2ZsaXAsIHN0cnVjdCBpbnRlbF9mbGlwLCBiYXNlKTsKIAkJYm9vbCBmbGlwcGVk ID0gaW50ZWxfdmJsX2NoZWNrKHBlbmRpbmdfZmxpcCwgdmJsX2NvdW50KTsKIAogCQlpZiAoIWZs aXBwZWQpIHsKKyNpZmRlZiBTVVJGTElWRV9ERUJVRworCQkJdTMyIHN1cmZsaXZlID0gSTkxNV9S RUFEKG9sZF9pbnRlbF9mbGlwLT5wbGFuZSA/IFNQUlNVUkZMSVZFKHBpcGUpIDogRFNQU1VSRkxJ VkUocGlwZSkpOworCQkJaWYgKG9sZF9pbnRlbF9mbGlwLT5jb21taXRfc3VyZmxpdmUgIT0gc3Vy ZmxpdmUpCisJCQkJdHJhY2VfZmxpcChvbGRfaW50ZWxfZmxpcCwgX05PVF9GTElQUEVEKTsKKyNl bmRpZgogCQkJc3dhcChpbnRlbF9mbGlwLT5vbGRfZmJfaWQsIG9sZF9pbnRlbF9mbGlwLT5vbGRf ZmJfaWQpOwogCQkJc3dhcChpbnRlbF9mbGlwLT5vbGRfYm8sIG9sZF9pbnRlbF9mbGlwLT5vbGRf Ym8pOwogCQkJc3dhcChpbnRlbF9mbGlwLT5vbGRfY3Vyc29yX2JvLCBvbGRfaW50ZWxfZmxpcC0+ b2xkX2N1cnNvcl9ibyk7CiAJCX0KKyNpZmRlZiBTVVJGTElWRV9ERUJVRworCQllbHNlIHsKKwkJ CXUzMiBzdXJmbGl2ZSA9IEk5MTVfUkVBRChvbGRfaW50ZWxfZmxpcC0+cGxhbmUgPyBTUFJTVVJG TElWRShwaXBlKSA6IERTUFNVUkZMSVZFKHBpcGUpKTsKKwkJCWlmIChvbGRfaW50ZWxfZmxpcC0+ Y29tbWl0X3N1cmYgIT0gc3VyZmxpdmUpIHsKKwkJCQl0cmFjZV9mbGlwKG9sZF9pbnRlbF9mbGlw LCBfRkxJUFBFRCk7CisJCQkJbWlzc2VkX2ZsaXBzKys7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJ fQorCQkJaWYgKG1pc3NlZF9mbGlwcykKKwkJCQl0cmFjZV9mbGlwKG9sZF9pbnRlbF9mbGlwLCBf TUlTU0VEX0ZMSVBQRUQpOworCQkJbWlzc2VkX2ZsaXBzID0gMDsKKwkJfQorI2VuZGlmCiAKIAkJ cmV0dXJuIGZsaXBwZWQ7CiAJfQpAQCAtMjAzNCw3ICsyMTI2LDI2IEBAIHN0YXRpYyBib29sIGlu dGVsX2ZsaXBfdmJsYW5rKHN0cnVjdCBkcm1fZmxpcCAqcGVuZGluZ19mbGlwKQogCQljb250YWlu ZXJfb2YocGVuZGluZ19mbGlwLCBzdHJ1Y3QgaW50ZWxfZmxpcCwgYmFzZSk7CiAJdTMyIHZibF9j b3VudCA9IGdldF92YmxfY291bnQob2xkX2ludGVsX2ZsaXAtPmNydGMpOwogCisjaWZkZWYgU1VS RkxJVkVfREVCVUcKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvbGRfaW50 ZWxfZmxpcC0+Y3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcGlwZSA9IHRvX2ludGVsX2Ny dGMob2xkX2ludGVsX2ZsaXAtPmNydGMpLT5waXBlOworCWJvb2wgZmxpcHBlZDsKKwlmbGlwcGVk ID0gaW50ZWxfdmJsX2NoZWNrKHBlbmRpbmdfZmxpcCwgdmJsX2NvdW50KTsKKwlpZiAoZmxpcHBl ZCkgeworCQl1MzIgc3VyZmxpdmUgPSBJOTE1X1JFQUQob2xkX2ludGVsX2ZsaXAtPnBsYW5lID8g U1BSU1VSRkxJVkUocGlwZSkgOiBEU1BTVVJGTElWRShwaXBlKSk7CisJCWlmIChvbGRfaW50ZWxf ZmxpcC0+Y29tbWl0X3N1cmYgIT0gc3VyZmxpdmUpIHsKKwkJCXRyYWNlX2ZsaXAob2xkX2ludGVs X2ZsaXAsIF9GTElQUEVEKTsKKwkJCW1pc3NlZF9mbGlwcysrOworCQkJcmV0dXJuIGZhbHNlOwor CQl9CisJCWlmIChtaXNzZWRfZmxpcHMpCisJCQl0cmFjZV9mbGlwKG9sZF9pbnRlbF9mbGlwLCBf TUlTU0VEX0ZMSVBQRUQpOworCQltaXNzZWRfZmxpcHMgPSAwOworCX0KKwlyZXR1cm4gZmxpcHBl ZDsKKyNlbHNlCiAJcmV0dXJuIGludGVsX3ZibF9jaGVjayhwZW5kaW5nX2ZsaXAsIHZibF9jb3Vu dCk7CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZmxpcF9oZWxwZXJfZnVu Y3MgaW50ZWxfZmxpcF9mdW5jcyA9IHsKQEAgLTI0MzAsNiArMjU0MSwxMiBAQCBzdGF0aWMgdm9p ZCBhdG9taWNfcGlwZV9jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAobGlzdF9l bXB0eSgmZmxpcHMpKQogCQlyZXR1cm47CiAKKwlpZiAoIWRybV9hc3luY19ncHUpIHsKKwkJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGludGVsX2dldF9jcnRj X2Zvcl9waXBlKGRldiwgcGlwZSkpOworCQlpbnRlbF9hdG9taWNfc2NoZWR1bGVfZmxpcHMoZGV2 X3ByaXYsIGludGVsX2NydGMsICZmbGlwcyk7CisJCXJldHVybjsKKwl9CisKIAltdXRleF9sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX2ZsaXAs ICZmbGlwcywgYmFzZS5saXN0KSB7Ci0tIAoxLjcuOC42CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=