From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 3/2] Revert "drm/i915: Allow nonblocking update of pageflips." Date: Mon, 23 May 2016 16:08:58 +0200 Message-ID: <813a8e73-893b-6d5d-c97f-0d97a2b6ba1f@linux.intel.com> References: <1464010661-32674-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id CEE8D6E2CE for ; Mon, 23 May 2016 14:09:37 +0000 (UTC) In-Reply-To: <1464010661-32674-1-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyByZXZlcnRzIGNvbW1pdCBkNTVkYmQwNmJiNWUxMzk5YWJhOWFiNTIyNzQ2NTMzOWQxYmJl ZmZmLgoKSXQgbGFja3MgYSBkZXNjcmlwdGlvbiwgcmVtb3ZlcyB0aGUgZmxpcCB0cmFjZSBwb2lu dCwKZG9lc24ndCBoYW5kbGUgLUVCVVNZIGlmIGEgZmxpcCBpcyBhbHJlYWR5IHF1ZXVlZAphbmQg bmVlZHMgdG8gYmUgcmVkb25lLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1h YXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQpQYXRjaCAzLzIgd2hpY2ggQ0kgcHJvYmFi bHkgZG9lc24ndCBoYW5kbGUgY29ycmVjdGx5LApzbyB0cnlib3QgcmVzdWx0cyBzaG91bGQgYmUg b24gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy83NTcwLwoKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDM1MCArKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI2NiBpbnNlcnRpb25zKCspLCA4NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMjFjMGEy ZjMxMDJiLi5mNDllZjYyOWM0YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK QEAgLTEwOCw2ICsxMDgsOCBAQCBzdGF0aWMgdm9pZCB2bHZfcHJlcGFyZV9wbGwoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCiAJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKTsKIHN0YXRpYyB2b2lkIGNodl9wcmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcpOworc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRj ICosIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqKTsKK3N0YXRpYyB2b2lkIGludGVsX2ZpbmlzaF9j cnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKiwgc3RydWN0IGRybV9jcnRjX3N0YXRlICopOwog c3RhdGljIHZvaWQgc2tsX2luaXRfc2NhbGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSk7CiBzdGF0aWMgdm9pZCBza3lsYWtlX3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKTsKQEAgLTEwOTg0LDcgKzEwOTg2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW1p b19mbGlwX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwot CWludCBpLCByZXQ7CisJaW50IGk7CiAKIAlpZiAoIW5lZWRzX21vZGVzZXQoJmNydGNfc3RhdGUt PmJhc2UpICYmIGNydGNfc3RhdGUtPnVwZGF0ZV9waXBlKSB7CiAJCXdvcmstPnB1dF9wb3dlcl9k b21haW5zID0KQEAgLTExMDA2LDE0ICsxMTAwOCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21taW9f ZmxpcF93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogCQkJCQkgICAgJmRldl9wcml2 LT5ycHMubW1pb2ZsaXBzKSk7CiAJfQogCi0JcmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRj KTsKLQlJOTE1X1NUQVRFX1dBUk4ocmV0IDwgMCwgImVuYWJsaW5nIHZibGFuayBmYWlsZWQgd2l0 aCAlaVxuIiwgcmV0KTsKLQotCWlmICh3b3JrLT5udW1fcGxhbmVzICYmCi0JICAgIHdvcmstPm9s ZF9wbGFuZV9zdGF0ZVswXS0+YmFzZS5wbGFuZSA9PSBjcnRjLT5wcmltYXJ5KQotCQlpbnRlbF9m YmNfZW5hYmxlKGludGVsX2NydGMsIHdvcmstPm5ld19jcnRjX3N0YXRlLCB3b3JrLT5uZXdfcGxh bmVfc3RhdGVbMF0pOwotCi0JaW50ZWxfZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKGRldiwgd29y ay0+ZmJfYml0cyk7CisJaW50ZWxfZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKGRldiwgY3J0Y19z dGF0ZS0+ZmJfYml0cyk7CiAKIAlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRjKTsK IAlpZiAoIW5lZWRzX21vZGVzZXQoJmNydGNfc3RhdGUtPmJhc2UpKSB7CkBAIC0xMTAzMiwxNSAr MTEwMjcsMjA2IEBAIHN0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3RydWN0 IHdvcmtfc3RydWN0ICp3KQogCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9z dGF0ZSA9IHdvcmstPm5ld19wbGFuZV9zdGF0ZVtpXTsKIAkJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CiAKLQkJ aWYgKG5ld19wbGFuZV9zdGF0ZS0+dmlzaWJsZSkKLQkJCXBsYW5lLT51cGRhdGVfcGxhbmUoJnBs YW5lLT5iYXNlLCBjcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUpOwotCQllbHNlCi0JCQlwbGFu ZS0+ZGlzYWJsZV9wbGFuZSgmcGxhbmUtPmJhc2UsIGNydGMpOworCQlwbGFuZS0+dXBkYXRlX3Bs YW5lKCZwbGFuZS0+YmFzZSwgY3J0Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKIAl9CiAKIAlp bnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0Yywgd29yayk7CiB9CiAKK3N0YXRpYyBzdHJ1 Y3QgZmVuY2UgKmludGVsX2dldF9leGNsX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCit7CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKKworCisJaWYgKCFv YmotPmJhc2UuZG1hX2J1ZikKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXN2ID0gb2JqLT5iYXNlLmRt YV9idWYtPnJlc3Y7CisKKwkvKiBGb3IgZnJhbWVidWZmZXIgYmFja2VkIGJ5IGRtYWJ1Ziwgd2Fp dCBmb3IgZmVuY2UgKi8KKwl3aGlsZSAoMSkgeworCQlzdHJ1Y3QgZmVuY2UgKmZlbmNlX2V4Y2ws ICpyZXQgPSBOVUxMOworCisJCXJjdV9yZWFkX2xvY2soKTsKKworCQlmZW5jZV9leGNsID0gcmN1 X2RlcmVmZXJlbmNlKHJlc3YtPmZlbmNlX2V4Y2wpOworCQlpZiAoZmVuY2VfZXhjbCkKKwkJCXJl dCA9IGZlbmNlX2dldF9yY3UoZmVuY2VfZXhjbCk7CisKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CisK KwkJaWYgKHJldCA9PSBmZW5jZV9leGNsKQorCQkJcmV0dXJuIHJldDsKKwl9Cit9CisKK3N0YXRp YyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJCXN0cnVjdCBkcm1fcGVuZGluZ192Ymxhbmtf ZXZlbnQgKmV2ZW50LAorCQkJCXVpbnQzMl90IHBhZ2VfZmxpcF9mbGFncykKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xk X3N0YXRlLCAqbmV3X3N0YXRlID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIgPSBjcnRj LT5wcmltYXJ5LT5zdGF0ZS0+ZmI7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IGludGVsX2ZiX29iaihmYik7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19p bnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjcnRjLT5wcmlt YXJ5OworCXN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcms7CisJaW50IHJldDsKKworCW9sZF9z dGF0ZSA9IGNydGMtPnByaW1hcnktPnN0YXRlOworCisJaWYgKCFjcnRjLT5zdGF0ZS0+YWN0aXZl KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qCisJICogZHJtX21vZGVfcGFnZV9mbGlwX2lvY3Rs KCkgc2hvdWxkIGFscmVhZHkgY2F0Y2ggdGhpcywgYnV0IGRvdWJsZQorCSAqIGNoZWNrIHRvIGJl IHNhZmUuICBJbiB0aGUgZnV0dXJlIHdlIG1heSBlbmFibGUgcGFnZWZsaXBwaW5nIGZyb20KKwkg KiBhIGRpc2FibGVkIHByaW1hcnkgcGxhbmUuCisJICovCisJaWYgKFdBUk5fT04oaW50ZWxfZmJf b2JqKG9sZF9mYikgPT0gTlVMTCkpCisJCXJldHVybiAtRUJVU1k7CisKKwkvKiBDYW4ndCBjaGFu Z2UgcGl4ZWwgZm9ybWF0IHZpYSBNSSBkaXNwbGF5IGZsaXBzLiAqLworCWlmIChmYi0+cGl4ZWxf Zm9ybWF0ICE9IG9sZF9mYi0+cGl4ZWxfZm9ybWF0KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8q CisJICogVElMRU9GRi9MSU5PRkYgcmVnaXN0ZXJzIGNhbid0IGJlIGNoYW5nZWQgdmlhIE1JIGRp c3BsYXkgZmxpcHMuCisJICogTm90ZSB0aGF0IHBpdGNoIGNoYW5nZXMgY291bGQgYWxzbyBhZmZl Y3QgdGhlc2UgcmVnaXN0ZXIuCisJICovCisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMyAm JgorCSAgICAoZmItPm9mZnNldHNbMF0gIT0gb2xkX2ZiLT5vZmZzZXRzWzBdIHx8CisJICAgICBm Yi0+cGl0Y2hlc1swXSAhPSBvbGRfZmItPnBpdGNoZXNbMF0pKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXdvcmsgPSBremFsbG9jKHNpemVvZigqd29yayksIEdGUF9LRVJORUwpOworCW5ld19jcnRj X3N0YXRlID0gaW50ZWxfY3J0Y19kdXBsaWNhdGVfc3RhdGUoY3J0Yyk7CisJbmV3X3N0YXRlID0g aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHByaW1hcnkpOworCisJaWYgKCF3b3JrIHx8ICFu ZXdfY3J0Y19zdGF0ZSB8fCAhbmV3X3N0YXRlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8g Y2xlYW51cDsKKwl9CisKKwlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UobmV3X3N0YXRlLT5m Yik7CisJZHJtX2ZyYW1lYnVmZmVyX3JlZmVyZW5jZShmYik7CisJbmV3X3N0YXRlLT5mYiA9IGZi OworCisJd29yay0+ZXZlbnQgPSBldmVudDsKKwlJTklUX1dPUksoJndvcmstPnVucGluX3dvcmss IGludGVsX3VucGluX3dvcmtfZm4pOworCUlOSVRfV09SSygmd29yay0+bW1pb193b3JrLCBpbnRl bF9tbWlvX2ZsaXBfd29ya19mdW5jKTsKKworCXdvcmstPm5ld19jcnRjX3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7CisJd29yay0+b2xkX2NydGNfc3RhdGUgPSBp bnRlbF9jcnRjLT5jb25maWc7CisKKwl3b3JrLT5mYl9iaXRzID0gdG9faW50ZWxfcGxhbmUocHJp bWFyeSktPmZyb250YnVmZmVyX2JpdDsKKwl3b3JrLT5uZXdfY3J0Y19zdGF0ZS0+ZmJfYml0cyA9 IHdvcmstPmZiX2JpdHM7CisKKwl3b3JrLT5jYW5fYXN5bmNfdW5waW4gPSB0cnVlOworCXdvcmst Pm51bV9wbGFuZXMgPSAxOworCXdvcmstPm9sZF9wbGFuZV9zdGF0ZVswXSA9IHRvX2ludGVsX3Bs YW5lX3N0YXRlKG9sZF9zdGF0ZSk7CisJd29yay0+bmV3X3BsYW5lX3N0YXRlWzBdID0gdG9faW50 ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRlKTsKKworCS8qIFN0ZXAgMTogdmJsYW5rIHdhaXRpbmcg YW5kIHdvcmtxdWV1ZSB0aHJvdHRsaW5nLAorCSAqIHNpbWlsYXIgdG8gaW50ZWxfYXRvbWljX3By ZXBhcmVfY29tbWl0CisJICovCisJcmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTsKKwlp ZiAocmV0KQorCQlnb3RvIGNsZWFudXA7CisKKwkvKiBXZSBib3Jyb3cgdGhlIGV2ZW50IHNwaW4g bG9jayBmb3IgcHJvdGVjdGluZyBmbGlwX3dvcmsgKi8KKwlzcGluX2xvY2tfaXJxKCZkZXYtPmV2 ZW50X2xvY2spOworCWlmICghbGlzdF9lbXB0eSgmaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKSkgewor CQlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICpvbGRfd29yazsKKworCQlvbGRfd29yayA9IGxpc3Rf bGFzdF9lbnRyeSgmaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLAorCQkJCQkgICBzdHJ1Y3QgaW50ZWxf ZmxpcF93b3JrLCBoZWFkKTsKKworCQkvKiBCZWZvcmUgZGVjbGFyaW5nIHRoZSBmbGlwIHF1ZXVl IHdlZGdlZCwgY2hlY2sgaWYKKwkJICogdGhlIGhhcmR3YXJlIGNvbXBsZXRlZCB0aGUgb3BlcmF0 aW9uIGJlaGluZCBvdXIgYmFja3MuCisJCSAqLworCQlpZiAocGFnZWZsaXBfZmluaXNoZWQoaW50 ZWxfY3J0Yywgb2xkX3dvcmspKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJmbGlwIHF1ZXVlOiBw cmV2aW91cyBmbGlwIGNvbXBsZXRlZCwgY29udGludWluZ1xuIik7CisJCQlwYWdlX2ZsaXBfY29t cGxldGVkKGludGVsX2NydGMsIG9sZF93b3JrKTsKKwkJfSBlbHNlIHsKKwkJCURSTV9ERUJVR19E UklWRVIoImZsaXAgcXVldWU6IGNydGMgYWxyZWFkeSBidXN5XG4iKTsKKwkJCXNwaW5fdW5sb2Nr X2lycSgmZGV2LT5ldmVudF9sb2NrKTsKKworCQkJcmV0ID0gLUVCVVNZOworCQkJZ290byBjbGVh bnVwX3ZibGFuazsKKwkJfQorCX0KKwlsaXN0X2FkZF90YWlsKCZ3b3JrLT5oZWFkLCAmaW50ZWxf Y3J0Yy0+ZmxpcF93b3JrKTsKKwlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CisK KwlpZiAoYXRvbWljX3JlYWQoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpID49IDIpCisJ CWZsdXNoX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOworCisJLyogc3RlcCAyLCBzaW1pbGFyIHRv IGludGVsX3ByZXBhcmVfcGxhbmVfZmIgKi8KKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGli bGUoJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlnb3RvIGNsZWFudXBfd29yazsK KworCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBuZXdfc3RhdGUtPnJvdGF0 aW9uKTsKKwlpZiAocmV0KQorCQlnb3RvIGNsZWFudXBfdW5sb2NrOworCisJaTkxNV9nZW1fdHJh Y2tfZmIoaW50ZWxfZmJfb2JqKG9sZF9mYiksIG9iaiwKKwkJCSAgdG9faW50ZWxfcGxhbmUocHJp bWFyeSktPmZyb250YnVmZmVyX2JpdCk7CisKKwkvKiBwb2ludCBvZiBubyByZXR1cm4sIHN3YXAg c3RhdGUgKi8KKwlwcmltYXJ5LT5zdGF0ZSA9IG5ld19zdGF0ZTsKKwljcnRjLT5zdGF0ZSA9IG5l d19jcnRjX3N0YXRlOworCWludGVsX2NydGMtPmNvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUo bmV3X2NydGNfc3RhdGUpOworCXByaW1hcnktPmZiID0gZmI7CisKKwkvKiBzY2hlZHVsaW5nIGZs aXAgd29yayAqLworCWF0b21pY19pbmMoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOwor CisJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEgJiYKKwkgICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29t cGxldGVkKG9iai0+bGFzdF93cml0ZV9yZXEsIHRydWUpKQorCQlpOTE1X2dlbV9yZXF1ZXN0X2Fz c2lnbigmd29yay0+b2xkX3BsYW5lX3N0YXRlWzBdLT53YWl0X3JlcSwKKwkJCQkJb2JqLT5sYXN0 X3dyaXRlX3JlcSk7CisKKwlpZiAob2JqLT5iYXNlLmRtYV9idWYpCisJCXdvcmstPm9sZF9wbGFu ZV9zdGF0ZVswXS0+YmFzZS5mZW5jZSA9IGludGVsX2dldF9leGNsX2ZlbmNlKG9iaik7CisKKwlp bnRlbF9mYmNfcHJlX3VwZGF0ZShpbnRlbF9jcnRjLAorCQkJICAgICB0b19pbnRlbF9jcnRjX3N0 YXRlKG5ld19jcnRjX3N0YXRlKSwKKwkJCSAgICAgdG9faW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0 YXRlKSk7CisKKwlzY2hlZHVsZV93b3JrKCZ3b3JrLT5tbWlvX3dvcmspOworCisJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwl0cmFjZV9pOTE1X2ZsaXBfcmVxdWVzdChpbnRl bF9jcnRjLT5wbGFuZSwgb2JqKTsKKworCXJldHVybiAwOworCitjbGVhbnVwX3VubG9jazoKKwlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKK2NsZWFudXBfd29yazoKKwlzcGluX2xv Y2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOworCWxpc3RfZGVsKCZ3b3JrLT5oZWFkKTsKKwlzcGlu X3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CisKK2NsZWFudXBfdmJsYW5rOgorCWRybV9j cnRjX3ZibGFua19wdXQoY3J0Yyk7CitjbGVhbnVwOgorCWlmIChuZXdfc3RhdGUpCisJCWludGVs X3BsYW5lX2Rlc3Ryb3lfc3RhdGUocHJpbWFyeSwgbmV3X3N0YXRlKTsKKworCWlmIChuZXdfY3J0 Y19zdGF0ZSkKKwkJaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsIG5ld19jcnRjX3N0YXRl KTsKKworCWludGVsX2ZyZWVfZmxpcF93b3JrKHdvcmspOworCXJldHVybiByZXQ7Cit9CisKKwog LyoqCiAgKiBpbnRlbF93bV9uZWVkX3VwZGF0ZSAtIENoZWNrIHdoZXRoZXIgd2F0ZXJtYXJrcyBu ZWVkIHVwZGF0aW5nCiAgKiBAcGxhbmU6IGRybSBwbGFuZQpAQCAtMTEzMTcsNiArMTE1MDMsOCBA QCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgaW50ZWxfaGVs cGVyX2Z1bmNzID0gewogCS5tb2RlX3NldF9iYXNlX2F0b21pYyA9IGludGVsX3BpcGVfc2V0X2Jh c2VfYXRvbWljLAorCS5hdG9taWNfYmVnaW4gPSBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdCwKKwku YXRvbWljX2ZsdXNoID0gaW50ZWxfZmluaXNoX2NydGNfY29tbWl0LAogCS5hdG9taWNfY2hlY2sg PSBpbnRlbF9jcnRjX2F0b21pY19jaGVjaywKIH07CiAKQEAgLTEyNzM2LDYgKzEyOTI0LDExIEBA IHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCWludCBpLCByZXQ7CiAKKwlpZiAobm9u YmxvY2spIHsKKwkJRFJNX0RFQlVHX0tNUygiaTkxNSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBub25i bG9ja2luZyBjb21taXRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKIAlmb3JfZWFjaF9j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CiAJCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAkJc3RydWN0IGludGVs X2ZsaXBfd29yayAqd29yazsKQEAgLTEyNzc3LDExICsxMjk3MCw2IEBAIHN0YXRpYyBpbnQgaW50 ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCX0KIAl9 CiAKLQlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQgJiYgbm9uYmxvY2spIHsKLQkJRFJNX0RFQlVH X0FUT01JQygiTm9uYmxvY2sgbW9kZXNldHMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIVxuIik7Ci0J CXJldHVybiAtRUlOVkFMOwotCX0KLQogCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0xMjkzNSw0 MSArMTMxMjMsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2NoZWR1bGVfdW5waW4oc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCXF1ZXVlX3dvcmsoZGV2X3ByaXYtPndxLCAmd29yay0+dW5waW5fd29y ayk7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX3NjaGVkdWxlX2ZsaXAoc3RydWN0IGRybV9jcnRj ICpjcnRjLAotCQkJCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCXN0cnVj dCBpbnRlbF9mbGlwX3dvcmsgKndvcmssCi0JCQkJYm9vbCBub25ibG9jaykKLXsKLQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IHdvcmstPm5ld19jcnRjX3N0YXRlOwotCi0J aWYgKGNydGNfc3RhdGUtPmJhc2UucGxhbmVzX2NoYW5nZWQgfHwKLQkgICAgbmVlZHNfbW9kZXNl dCgmY3J0Y19zdGF0ZS0+YmFzZSkgfHwKLQkgICAgY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpIHsK LQkJaWYgKG5vbmJsb2NrKQotCQkJc2NoZWR1bGVfd29yaygmd29yay0+bW1pb193b3JrKTsKLQkJ ZWxzZQotCQkJaW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYygmd29yay0+bW1pb193b3JrKTsKLQl9 IGVsc2UgewotCQlpbnQgcmV0OwotCi0JCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7 Ci0JCUk5MTVfU1RBVEVfV0FSTihyZXQgPCAwLCAiZW5hYmxpbmcgdmJsYW5rIGZhaWxlZCB3aXRo ICVpXG4iLCByZXQpOwotCi0JCXdvcmstPmZsaXBfcXVldWVkX3ZibGFuayA9IGludGVsX2NydGNf Z2V0X3ZibGFua19jb3VudGVyKHRvX2ludGVsX2NydGMoY3J0YykpOwotCQlzbXBfbWJfX2JlZm9y ZV9hdG9taWMoKTsKLQkJYXRvbWljX3NldCgmd29yay0+cGVuZGluZywgMSk7Ci0JfQotfQotCiBz dGF0aWMgdm9pZCBpbnRlbF9zY2hlZHVsZV91cGRhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CQkJCSAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICBzdHJ1Y3QgaW50 ZWxfZmxpcF93b3JrICp3b3JrLAotCQkJCSAgYm9vbCBub25ibG9jaykKKwkJCQkgIHN0cnVjdCBp bnRlbF9mbGlwX3dvcmsgKndvcmspCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMt PmRldjsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPSB3b3JrLT5uZXdf Y3J0Y19zdGF0ZTsKIAotCWlmICghcGlwZV9jb25maWctPmJhc2UuYWN0aXZlICYmIHdvcmstPmNh bl9hc3luY191bnBpbikgeworCWlmICh3b3JrLT5jYW5fYXN5bmNfdW5waW4pIHsKIAkJSU5JVF9M SVNUX0hFQUQoJndvcmstPmhlYWQpOwogCQlpbnRlbF9zY2hlZHVsZV91bnBpbihjcnRjLCBzdGF0 ZSwgd29yayk7CiAJCXJldHVybjsKQEAgLTEyOTc5LDEwICsxMzEzOSw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3NjaGVkdWxlX3VwZGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJbGlzdF9hZGRf dGFpbCgmd29yay0+aGVhZCwgJnRvX2ludGVsX2NydGMoY3J0YyktPmZsaXBfd29yayk7CiAJc3Bp bl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwogCi0JaWYgKCFwaXBlX2NvbmZpZy0+YmFz ZS5hY3RpdmUpCi0JCWludGVsX3NjaGVkdWxlX3VucGluKGNydGMsIHN0YXRlLCB3b3JrKTsKLQll bHNlCi0JCWludGVsX3NjaGVkdWxlX2ZsaXAoY3J0Yywgc3RhdGUsIHdvcmssIG5vbmJsb2NrKTsK KwlpbnRlbF9zY2hlZHVsZV91bnBpbihjcnRjLCBzdGF0ZSwgd29yayk7CiB9CiAKIC8qKgpAQCAt MTMwNzcsOSArMTMyMzQsMTEgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAKIAkvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBw aXBlLCBhbmQgY29ubmVjdG9ycyB0aGF0IHdlIHNldCB1cC4gKi8KIAlmb3JfZWFjaF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewotCQlzdHJ1Y3QgaW50ZWxf ZmxpcF93b3JrICp3b3JrID0gaW50ZWxfc3RhdGUtPndvcmtbaV07CiAJCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAkJYm9vbCBtb2Rlc2V0ID0g bmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSk7CisJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZyA9CisJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKwkJYm9v bCB1cGRhdGVfcGlwZSA9ICFtb2Rlc2V0ICYmIHBpcGVfY29uZmlnLT51cGRhdGVfcGlwZTsKIAog CQljcnRjX21hc2sgfD0gZHJtX2NydGNfbWFzayhjcnRjKTsKIApAQCAtMTMwOTEsNiArMTMyNTAs MjIgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJCWlmICghbW9kZXNldCkKIAkJCWludGVsX3ByZV9wbGFuZV91cGRhdGUodG9faW50ZWxf Y3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSkpOwogCisJCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZl ICYmCisJCSAgICBkcm1fYXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0ZShzdGF0ZSwgY3J0 Yy0+cHJpbWFyeSkpCisJCQlpbnRlbF9mYmNfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmln LCB0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5wcmltYXJ5LT5zdGF0ZSkpOworCisJCWlmIChj cnRjLT5zdGF0ZS0+YWN0aXZlICYmCisJCSAgICAoY3J0Yy0+c3RhdGUtPnBsYW5lc19jaGFuZ2Vk IHx8IHVwZGF0ZV9waXBlKSkKKwkJCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25f Y3J0YyhvbGRfY3J0Y19zdGF0ZSk7CisJfQorCisJLyogRklYTUU6IGFkZCBzdWJwaXhlbCBvcmRl ciAqLworCisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3Rh dGUsIGkpIHsKKwkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOworCQlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrID0KKwkJCWludGVsX3N0YXRl LT53b3JrW2ldOworCiAJCWlmICghd29yaykgewogCQkJaWYgKCFsaXN0X2VtcHR5X2NhcmVmdWwo JmludGVsX2NydGMtPmZsaXBfd29yaykpIHsKIAkJCQlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50 X2xvY2spOwpAQCAtMTMxMTAsNyArMTMyODUsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19j b21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCQlpbnRlbF9zdGF0ZS0+d29ya1tpXSA9 IE5VTEw7CiAJCWludGVsX3ByZXBhcmVfd29yayhjcnRjLCB3b3JrLCBzdGF0ZSwgb2xkX2NydGNf c3RhdGUpOwotCQlpbnRlbF9zY2hlZHVsZV91cGRhdGUoY3J0YywgaW50ZWxfc3RhdGUsIHdvcmss IG5vbmJsb2NrKTsKKwkJaW50ZWxfc2NoZWR1bGVfdXBkYXRlKGNydGMsIGludGVsX3N0YXRlLCB3 b3JrKTsKIAl9CiAKIAlpZiAoIW5vbmJsb2NrICYmICFzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRh dGUpIHsKQEAgLTEzMTE5LDggKzEzMjk0LDYgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29t bWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5k aW5nX2ZsaXBzKGNydGMsIGZhbHNlKTsKIAl9CiAKLQkvKiBGSVhNRTogYWRkIHN1YnBpeGVsIG9y ZGVyICovCi0KIAlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwogCiAJLyogQXMgb25lIG9m IHRoZSBwcmltYXJ5IG1taW8gYWNjZXNzb3JzLCBLTVMgaGFzIGEgaGlnaCBsaWtlbGlob29kCkBA IC0xMzE4NCwzOCArMTMzNTcsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5j cyBpbnRlbF9jcnRjX2Z1bmNzID0gewogCS5zZXRfY29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJf c2V0X2NvbmZpZywKIAkuc2V0X3Byb3BlcnR5ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19zZXRf cHJvcGVydHksCiAJLmRlc3Ryb3kgPSBpbnRlbF9jcnRjX2Rlc3Ryb3ksCi0JLnBhZ2VfZmxpcCA9 IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKKwkucGFnZV9mbGlwID0gaW50ZWxfY3J0Y19w YWdlX2ZsaXAsCiAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9jcnRjX2R1cGxpY2F0 ZV9zdGF0ZSwKIAkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRlbF9jcnRjX2Rlc3Ryb3lfc3Rh dGUsCiB9OwogCi1zdGF0aWMgc3RydWN0IGZlbmNlICppbnRlbF9nZXRfZXhjbF9mZW5jZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3QgKnJlc3Y7Ci0KLQotCWlmICghb2JqLT5iYXNlLmRtYV9idWYpCi0JCXJldHVybiBOVUxMOwot Ci0JcmVzdiA9IG9iai0+YmFzZS5kbWFfYnVmLT5yZXN2OwotCi0JLyogRm9yIGZyYW1lYnVmZmVy IGJhY2tlZCBieSBkbWFidWYsIHdhaXQgZm9yIGZlbmNlICovCi0Jd2hpbGUgKDEpIHsKLQkJc3Ry dWN0IGZlbmNlICpmZW5jZV9leGNsLCAqcmV0ID0gTlVMTDsKLQotCQlyY3VfcmVhZF9sb2NrKCk7 Ci0KLQkJZmVuY2VfZXhjbCA9IHJjdV9kZXJlZmVyZW5jZShyZXN2LT5mZW5jZV9leGNsKTsKLQkJ aWYgKGZlbmNlX2V4Y2wpCi0JCQlyZXQgPSBmZW5jZV9nZXRfcmN1KGZlbmNlX2V4Y2wpOwotCi0J CXJjdV9yZWFkX3VubG9jaygpOwotCi0JCWlmIChyZXQgPT0gZmVuY2VfZXhjbCkKLQkJCXJldHVy biByZXQ7Ci0JfQotfQotCiAvKioKICAqIGludGVsX3ByZXBhcmVfcGxhbmVfZmIgLSBQcmVwYXJl IGZiIGZvciB1c2FnZSBvbiBwbGFuZQogICogQHBsYW5lOiBkcm0gcGxhbmUgdG8gcHJlcGFyZSBm b3IKQEAgLTEzNDAyLDYgKzEzNTQ4LDQyIEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJCSAgICAgJnN0YXRlLT52aXNpYmxlKTsKIH0KIAor c3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRj LAorCQkJCSAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfaW50ZWxfc3RhdGUgPQorCQl0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRl KTsKKwlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKTsKKworCWludGVs X2Zyb250YnVmZmVyX2ZsaXBfcHJlcGFyZShkZXYsIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+ c3RhdGUpLT5mYl9iaXRzKTsKKworCS8qIFBlcmZvcm0gdmJsYW5rIGV2YXNpb24gYXJvdW5kIGNv bW1pdCBvcGVyYXRpb24gKi8KKwlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRjKTsK KworCWlmIChtb2Rlc2V0KQorCQlyZXR1cm47CisKKwlpZiAoY3J0Yy0+c3RhdGUtPmNvbG9yX21n bXRfY2hhbmdlZCB8fCB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+dXBkYXRlX3Bp cGUpIHsKKwkJaW50ZWxfY29sb3Jfc2V0X2NzYyhjcnRjLT5zdGF0ZSk7CisJCWludGVsX2NvbG9y X2xvYWRfbHV0cyhjcnRjLT5zdGF0ZSk7CisJfQorCisJaWYgKHRvX2ludGVsX2NydGNfc3RhdGUo Y3J0Yy0+c3RhdGUpLT51cGRhdGVfcGlwZSkKKwkJaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKGlu dGVsX2NydGMsIG9sZF9pbnRlbF9zdGF0ZSk7CisJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gOSkKKwkJc2tsX2RldGFjaF9zY2FsZXJzKGludGVsX2NydGMpOworfQorCitzdGF0aWMg dm9pZCBpbnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJ CSAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisKKwlpbnRlbF9w aXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0YywgTlVMTCk7Cit9CisKIC8qKgogICogaW50ZWxfcGxh bmVfZGVzdHJveSAtIGRlc3Ryb3kgYSBwbGFuZQogICogQHBsYW5lOiBwbGFuZSB0byBkZXN0cm95 Ci0tIAoyLjUuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=