From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF91DC433E0 for ; Tue, 5 Jan 2021 15:45:57 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8E95822BF3 for ; Tue, 5 Jan 2021 15:45:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8E95822BF3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0FD386E157; Tue, 5 Jan 2021 15:45:41 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F8B66E14B for ; Tue, 5 Jan 2021 15:45:39 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Tue, 5 Jan 2021 16:35:24 +0100 Message-Id: <20210105153558.134272-31-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.30.0.rc1 In-Reply-To: <20210105153558.134272-1-maarten.lankhorst@linux.intel.com> References: <20210105153558.134272-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v6 30/64] drm/i915: Fix pread/pwrite to work with new locking rules. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" V2UgYXJlIHJlbW92aW5nIG9iai0+bW0ubG9jaywgYW5kIG5lZWQgdG8gdGFrZSB0aGUgcmVzZXJ2 YXRpb24gbG9jawpiZWZvcmUgd2UgY2FuIHBpbiBwYWdlcy4gTW92ZSB0aGUgcGlubmluZyBwYWdl cyBpbnRvIHRoZSBoZWxwZXIsIGFuZAptZXJnZSBndHQgcHdyaXRlL3ByZWFkIHByZXBhcmF0aW9u IGFuZCBjbGVhbnVwIHBhdGhzLgoKVGhlIGZlbmNlIGxvY2sgaXMgYWxzbyByZW1vdmVkOyBpdCB3 aWxsIGNvbmZsaWN0IHdpdGggZmVuY2UgYW5ub3RhdGlvbnMsCmJlY2F1c2Ugb2YgbWVtb3J5IGFs bG9jYXRpb25zIGRvbmUgd2hlbiBwYWdlZmF1bHRpbmcgaW5zaWRlIGNvcHlfKl91c2VyLgoKU2ln bmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9t QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAg ICAgICAgICAgfCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2ZlbmNl LmMgIHwgIDk1IC0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5oIHwgICA1IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAg ICB8IDIyNCArKysrKysrKysrKy0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2Vy dGlvbnMoKyksIDIxMSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZmVuY2UuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXgg ZjFjN2MzMjQ2MjI2Li4zNTAyNzQ2OTgwMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0xMzcs NyArMTM3LDYgQEAgZ2VtLXkgKz0gXAogCWdlbS9pOTE1X2dlbV9kbWFidWYubyBcCiAJZ2VtL2k5 MTVfZ2VtX2RvbWFpbi5vIFwKIAlnZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5vIFwKLQlnZW0vaTkx NV9nZW1fZmVuY2UubyBcCiAJZ2VtL2k5MTVfZ2VtX2ludGVybmFsLm8gXAogCWdlbS9pOTE1X2dl bV9vYmplY3QubyBcCiAJZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQubyBcCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9mZW5jZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA4YWI4NDJjODBmOTkuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fZmVuY2UuYworKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0g KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCi0gKgotICogQ29weXJpZ2h0IMKpIDIwMTkg SW50ZWwgQ29ycG9yYXRpb24KLSAqLwotCi0jaW5jbHVkZSAiaTkxNV9kcnYuaCIKLSNpbmNsdWRl ICJpOTE1X2dlbV9vYmplY3QuaCIKLQotc3RydWN0IHN0dWJfZmVuY2UgewotCXN0cnVjdCBkbWFf ZmVuY2UgZG1hOwotCXN0cnVjdCBpOTE1X3N3X2ZlbmNlIGNoYWluOwotfTsKLQotc3RhdGljIGlu dCBfX2k5MTVfc3dfZmVuY2VfY2FsbAotc3R1Yl9ub3RpZnkoc3RydWN0IGk5MTVfc3dfZmVuY2Ug KmZlbmNlLCBlbnVtIGk5MTVfc3dfZmVuY2Vfbm90aWZ5IHN0YXRlKQotewotCXN0cnVjdCBzdHVi X2ZlbmNlICpzdHViID0gY29udGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnN0dWIpLCBjaGFpbik7 Ci0KLQlzd2l0Y2ggKHN0YXRlKSB7Ci0JY2FzZSBGRU5DRV9DT01QTEVURToKLQkJZG1hX2ZlbmNl X3NpZ25hbCgmc3R1Yi0+ZG1hKTsKLQkJYnJlYWs7Ci0KLQljYXNlIEZFTkNFX0ZSRUU6Ci0JCWRt YV9mZW5jZV9wdXQoJnN0dWItPmRtYSk7Ci0JCWJyZWFrOwotCX0KLQotCXJldHVybiBOT1RJRllf RE9ORTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgKnN0dWJfZHJpdmVyX25hbWUoc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UpCi17Ci0JcmV0dXJuIERSSVZFUl9OQU1FOwotfQotCi1zdGF0aWMgY29u c3QgY2hhciAqc3R1Yl90aW1lbGluZV9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQotewot CXJldHVybiAib2JqZWN0IjsKLX0KLQotc3RhdGljIHZvaWQgc3R1Yl9yZWxlYXNlKHN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlKQotewotCXN0cnVjdCBzdHViX2ZlbmNlICpzdHViID0gY29udGFpbmVy X29mKGZlbmNlLCB0eXBlb2YoKnN0dWIpLCBkbWEpOwotCi0JaTkxNV9zd19mZW5jZV9maW5pKCZz dHViLT5jaGFpbik7Ci0KLQlCVUlMRF9CVUdfT04ob2Zmc2V0b2YodHlwZW9mKCpzdHViKSwgZG1h KSk7Ci0JZG1hX2ZlbmNlX2ZyZWUoJnN0dWItPmRtYSk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZG1hX2ZlbmNlX29wcyBzdHViX2ZlbmNlX29wcyA9IHsKLQkuZ2V0X2RyaXZlcl9uYW1lID0g c3R1Yl9kcml2ZXJfbmFtZSwKLQkuZ2V0X3RpbWVsaW5lX25hbWUgPSBzdHViX3RpbWVsaW5lX25h bWUsCi0JLnJlbGVhc2UgPSBzdHViX3JlbGVhc2UsCi19OwotCi1zdHJ1Y3QgZG1hX2ZlbmNlICoK LWk5MTVfZ2VtX29iamVjdF9sb2NrX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCi17Ci0Jc3RydWN0IHN0dWJfZmVuY2UgKnN0dWI7Ci0KLQlhc3NlcnRfb2JqZWN0X2hlbGQo b2JqKTsKLQotCXN0dWIgPSBrbWFsbG9jKHNpemVvZigqc3R1YiksIEdGUF9LRVJORUwpOwotCWlm ICghc3R1YikKLQkJcmV0dXJuIE5VTEw7Ci0KLQlpOTE1X3N3X2ZlbmNlX2luaXQoJnN0dWItPmNo YWluLCBzdHViX25vdGlmeSk7Ci0JZG1hX2ZlbmNlX2luaXQoJnN0dWItPmRtYSwgJnN0dWJfZmVu Y2Vfb3BzLCAmc3R1Yi0+Y2hhaW4ud2FpdC5sb2NrLAotCQkgICAgICAgMCwgMCk7Ci0KLQlpZiAo aTkxNV9zd19mZW5jZV9hd2FpdF9yZXNlcnZhdGlvbigmc3R1Yi0+Y2hhaW4sCi0JCQkJCSAgICBv YmotPmJhc2UucmVzdiwgTlVMTCwgdHJ1ZSwKLQkJCQkJICAgIGk5MTVfZmVuY2VfdGltZW91dCh0 b19pOTE1KG9iai0+YmFzZS5kZXYpKSwKLQkJCQkJICAgIEk5MTVfRkVOQ0VfR0ZQKSA8IDApCi0J CWdvdG8gZXJyOwotCi0JZG1hX3Jlc3ZfYWRkX2V4Y2xfZmVuY2Uob2JqLT5iYXNlLnJlc3YsICZz dHViLT5kbWEpOwotCi0JcmV0dXJuICZzdHViLT5kbWE7Ci0KLWVycjoKLQlzdHViX3JlbGVhc2Uo JnN0dWItPmRtYSk7Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXZvaWQgaTkxNV9nZW1fb2JqZWN0X3Vu bG9ja19mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJCSAgc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UpCi17Ci0Jc3RydWN0IHN0dWJfZmVuY2UgKnN0dWIgPSBjb250YWlu ZXJfb2YoZmVuY2UsIHR5cGVvZigqc3R1YiksIGRtYSk7Ci0KLQlpOTE1X3N3X2ZlbmNlX2NvbW1p dCgmc3R1Yi0+Y2hhaW4pOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5oCmluZGV4IDBjMzU3ZTkxZGNlNC4uZmJkMDFlMjVjYTcxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCkBAIC0xNjMsMTEgKzE2Myw2IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5sb2NrKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCiAJZG1hX3Jlc3ZfdW5sb2NrKG9iai0+YmFzZS5yZXN2KTsKIH0KIAotc3Ry dWN0IGRtYV9mZW5jZSAqCi1pOTE1X2dlbV9vYmplY3RfbG9ja19mZW5jZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgaTkxNV9nZW1fb2JqZWN0X3VubG9ja19mZW5jZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJCSAgc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2UpOwotCiBzdGF0aWMgaW5saW5lIHZvaWQKIGk5MTVfZ2VtX29iamVjdF9zZXRfcmVhZG9u bHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCmluZGV4IGM1ZDBmMzg4N2QyOS4uZGQ4MTFkMGY5NmYyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKQEAgLTMwNiw3ICszMDYsNiBAQCBpOTE1X2dlbV9zaG1lbV9wcmVhZChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAogewogCXVuc2lnbmVkIGludCBuZWVkc19jbGZsdXNoOwog CXVuc2lnbmVkIGludCBpZHgsIG9mZnNldDsKLQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAlj aGFyIF9fdXNlciAqdXNlcl9kYXRhOwogCXU2NCByZW1haW47CiAJaW50IHJldDsKQEAgLTMxNSwx OSArMzE0LDE3IEBAIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAorCXJldCA9IGk5MTVfZ2VtX29i amVjdF9waW5fcGFnZXMob2JqKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl91bmxvY2s7CisKIAly ZXQgPSBpOTE1X2dlbV9vYmplY3RfcHJlcGFyZV9yZWFkKG9iaiwgJm5lZWRzX2NsZmx1c2gpOwot CWlmIChyZXQpIHsKLQkJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwotCQlyZXR1cm4gcmV0 OwotCX0KKwlpZiAocmV0KQorCQlnb3RvIGVycl91bnBpbjsKIAotCWZlbmNlID0gaTkxNV9nZW1f b2JqZWN0X2xvY2tfZmVuY2Uob2JqKTsKIAlpOTE1X2dlbV9vYmplY3RfZmluaXNoX2FjY2Vzcyhv YmopOwogCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAotCWlmICghZmVuY2UpCi0JCXJl dHVybiAtRU5PTUVNOwotCiAJcmVtYWluID0gYXJncy0+c2l6ZTsKIAl1c2VyX2RhdGEgPSB1NjRf dG9fdXNlcl9wdHIoYXJncy0+ZGF0YV9wdHIpOwogCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGFy Z3MtPm9mZnNldCk7CkBAIC0zNDUsNyArMzQyLDEzIEBAIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCW9mZnNldCA9IDA7CiAJfQogCi0JaTkx NV9nZW1fb2JqZWN0X3VubG9ja19mZW5jZShvYmosIGZlbmNlKTsKKwlpOTE1X2dlbV9vYmplY3Rf dW5waW5fcGFnZXMob2JqKTsKKwlyZXR1cm4gcmV0OworCitlcnJfdW5waW46CisJaTkxNV9nZW1f b2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CitlcnJfdW5sb2NrOgorCWk5MTVfZ2VtX29iamVjdF91 bmxvY2sob2JqKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zNzMsNTIgKzM3NiwxMDIgQEAgZ3R0 X3VzZXJfcmVhZChzdHJ1Y3QgaW9fbWFwcGluZyAqbWFwcGluZywKIAlyZXR1cm4gdW53cml0dGVu OwogfQogCi1zdGF0aWMgaW50Ci1pOTE1X2dlbV9ndHRfcHJlYWQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKLQkJICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9wcmVhZCAqYXJn cykKK3N0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX2d0dF9wcmVwYXJlKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJCSAgICAgc3RydWN0IGRybV9tbV9ub2RlICpu b2RlLAorCQkJCQkgICAgIGJvb2wgd3JpdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCXN0cnVjdCBpOTE1X2dndHQgKmdndHQg PSAmaTkxNS0+Z2d0dDsKLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKLQlzdHJ1Y3QgZHJtX21t X25vZGUgbm9kZTsKLQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKLQl2b2lkIF9fdXNlciAqdXNl cl9kYXRhOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXU2NCByZW1haW4sIG9mZnNldDsKKwlz dHJ1Y3QgaTkxNV9nZW1fd3dfY3R4IHd3OwogCWludCByZXQ7CiAKLQl3YWtlcmVmID0gaW50ZWxf cnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOworCWk5MTVfZ2VtX3d3X2N0eF9pbml0 KCZ3dywgdHJ1ZSk7CityZXRyeToKIAl2bWEgPSBFUlJfUFRSKC1FTk9ERVYpOworCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9sb2NrKG9iaiwgJnd3KTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl93dzsK KworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHdyaXRlKTsK KwlpZiAocmV0KQorCQlnb3RvIGVycl93dzsKKwogCWlmICghaTkxNV9nZW1fb2JqZWN0X2lzX3Rp bGVkKG9iaikpCi0JCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAs IDAsCi0JCQkJCSAgICAgICBQSU5fTUFQUEFCTEUgfAotCQkJCQkgICAgICAgUElOX05PTkJMT0NL IC8qIE5PV0FSTiAqLyB8Ci0JCQkJCSAgICAgICBQSU5fTk9FVklDVCk7Ci0JaWYgKCFJU19FUlIo dm1hKSkgewotCQlub2RlLnN0YXJ0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwotCQlub2RlLmZs YWdzID0gMDsKKwkJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluX3d3KG9iaiwgJnd3LCBO VUxMLCAwLCAwLAorCQkJCQkJICBQSU5fTUFQUEFCTEUgfAorCQkJCQkJICBQSU5fTk9OQkxPQ0sg LyogTk9XQVJOICovIHwKKwkJCQkJCSAgUElOX05PRVZJQ1QpOworCWlmICh2bWEgPT0gRVJSX1BU UigtRURFQURMSykpIHsKKwkJcmV0ID0gLUVERUFETEs7CisJCWdvdG8gZXJyX3d3OworCX0gZWxz ZSBpZiAoIUlTX0VSUih2bWEpKSB7CisJCW5vZGUtPnN0YXJ0ID0gaTkxNV9nZ3R0X29mZnNldCh2 bWEpOworCQlub2RlLT5mbGFncyA9IDA7CiAJfSBlbHNlIHsKLQkJcmV0ID0gaW5zZXJ0X21hcHBh YmxlX25vZGUoZ2d0dCwgJm5vZGUsIFBBR0VfU0laRSk7CisJCXJldCA9IGluc2VydF9tYXBwYWJs ZV9ub2RlKGdndHQsIG5vZGUsIFBBR0VfU0laRSk7CiAJCWlmIChyZXQpCi0JCQlnb3RvIG91dF9y cG07Ci0JCUdFTV9CVUdfT04oIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmbm9kZSkpOworCQkJZ290 byBlcnJfd3c7CisJCUdFTV9CVUdfT04oIWRybV9tbV9ub2RlX2FsbG9jYXRlZChub2RlKSk7CisJ CXZtYSA9IE5VTEw7CiAJfQogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0 aWJsZShvYmosIE5VTEwpOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0X3VucGluOwotCi0JcmV0ID0g aTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlpZiAocmV0KSB7Ci0JCWk5MTVfZ2VtX29i amVjdF91bmxvY2sob2JqKTsKLQkJZ290byBvdXRfdW5waW47CisJCWlmIChkcm1fbW1fbm9kZV9h bGxvY2F0ZWQobm9kZSkpIHsKKwkJCWdndHQtPnZtLmNsZWFyX3JhbmdlKCZnZ3R0LT52bSwgbm9k ZS0+c3RhcnQsIG5vZGUtPnNpemUpOworCQkJcmVtb3ZlX21hcHBhYmxlX25vZGUoZ2d0dCwgbm9k ZSk7CisJCX0gZWxzZSB7CisJCQlpOTE1X3ZtYV91bnBpbih2bWEpOworCQl9CiAJfQogCi0JZmVu Y2UgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19mZW5jZShvYmopOwotCWk5MTVfZ2VtX29iamVjdF91 bmxvY2sob2JqKTsKLQlpZiAoIWZlbmNlKSB7Ci0JCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gb3V0 X3VucGluOworZXJyX3d3OgorCWlmIChyZXQgPT0gLUVERUFETEspIHsKKwkJcmV0ID0gaTkxNV9n ZW1fd3dfY3R4X2JhY2tvZmYoJnd3KTsKKwkJaWYgKCFyZXQpCisJCQlnb3RvIHJldHJ5OworCX0K KwlpOTE1X2dlbV93d19jdHhfZmluaSgmd3cpOworCisJcmV0dXJuIHJldCA/IEVSUl9QVFIocmV0 KSA6IHZtYTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1fZ3R0X2NsZWFudXAoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgc3RydWN0IGRybV9tbV9ub2RlICpub2RlLAor CQkJCSBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9 ICZpOTE1LT5nZ3R0OworCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CisJaWYg KGRybV9tbV9ub2RlX2FsbG9jYXRlZChub2RlKSkgeworCQlnZ3R0LT52bS5jbGVhcl9yYW5nZSgm Z2d0dC0+dm0sIG5vZGUtPnN0YXJ0LCBub2RlLT5zaXplKTsKKwkJcmVtb3ZlX21hcHBhYmxlX25v ZGUoZ2d0dCwgbm9kZSk7CisJfSBlbHNlIHsKKwkJaTkxNV92bWFfdW5waW4odm1hKTsKKwl9Cit9 CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2d0dF9wcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAorCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ByZWFkICphcmdzKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2 KTsKKwlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmk5MTUtPmdndHQ7CisJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7CisJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7CisJdm9pZCBfX3VzZXIgKnVz ZXJfZGF0YTsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl1NjQgcmVtYWluLCBvZmZzZXQ7CisJ aW50IHJldCA9IDA7CisKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1 bnRpbWVfcG0pOworCisJdm1hID0gaTkxNV9nZW1fZ3R0X3ByZXBhcmUob2JqLCAmbm9kZSwgZmFs c2UpOworCWlmIChJU19FUlIodm1hKSkgeworCQlyZXQgPSBQVFJfRVJSKHZtYSk7CisJCWdvdG8g b3V0X3JwbTsKIAl9CiAKIAl1c2VyX2RhdGEgPSB1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZGF0YV9w dHIpOwpAQCAtNDU1LDE0ICs1MDgsNyBAQCBpOTE1X2dlbV9ndHRfcHJlYWQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJb2Zmc2V0ICs9IHBhZ2VfbGVuZ3RoOwogCX0KIAotCWk5 MTVfZ2VtX29iamVjdF91bmxvY2tfZmVuY2Uob2JqLCBmZW5jZSk7Ci1vdXRfdW5waW46Ci0JaWYg KGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmbm9kZSkpIHsKLQkJZ2d0dC0+dm0uY2xlYXJfcmFuZ2Uo JmdndHQtPnZtLCBub2RlLnN0YXJ0LCBub2RlLnNpemUpOwotCQlyZW1vdmVfbWFwcGFibGVfbm9k ZShnZ3R0LCAmbm9kZSk7Ci0JfSBlbHNlIHsKLQkJaTkxNV92bWFfdW5waW4odm1hKTsKLQl9CisJ aTkxNV9nZW1fZ3R0X2NsZWFudXAob2JqLCAmbm9kZSwgdm1hKTsKIG91dF9ycG06CiAJaW50ZWxf cnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwogCXJldHVybiByZXQ7 CkBAIC01MjAsMTUgKzU2NiwxMCBAQCBpOTE1X2dlbV9wcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCi0JcmV0ID0g aTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0Owot CiAJcmV0ID0gaTkxNV9nZW1fc2htZW1fcHJlYWQob2JqLCBhcmdzKTsKIAlpZiAocmV0ID09IC1F RkFVTFQgfHwgcmV0ID09IC1FTk9ERVYpCiAJCXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVhZChvYmos IGFyZ3MpOwogCi0JaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CiBvdXQ6CiAJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOwogCXJldHVybiByZXQ7CkBAIC01NzYsMTEgKzYxNywxMCBA QCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAlzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnBtID0gJmk5MTUtPnJ1bnRpbWVfcG07CiAJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7Ci0Jc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2U7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdTY0IHJlbWFp biwgb2Zmc2V0OwogCXZvaWQgX191c2VyICp1c2VyX2RhdGE7Ci0JaW50IHJldDsKKwlpbnQgcmV0 ID0gMDsKIAogCWlmIChpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikpIHsKIAkJ LyoKQEAgLTU5OCwzNyArNjM4LDEwIEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQocnBtKTsKIAl9CiAKLQl2bWEgPSBFUlJfUFRSKC1FTk9ERVYpOwotCWlmICghaTkxNV9nZW1f b2JqZWN0X2lzX3RpbGVkKG9iaikpCi0JCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbihv YmosIE5VTEwsIDAsIDAsCi0JCQkJCSAgICAgICBQSU5fTUFQUEFCTEUgfAotCQkJCQkgICAgICAg UElOX05PTkJMT0NLIC8qIE5PV0FSTiAqLyB8Ci0JCQkJCSAgICAgICBQSU5fTk9FVklDVCk7Ci0J aWYgKCFJU19FUlIodm1hKSkgewotCQlub2RlLnN0YXJ0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEp OwotCQlub2RlLmZsYWdzID0gMDsKLQl9IGVsc2UgewotCQlyZXQgPSBpbnNlcnRfbWFwcGFibGVf bm9kZShnZ3R0LCAmbm9kZSwgUEFHRV9TSVpFKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0X3Jw bTsKLQkJR0VNX0JVR19PTighZHJtX21tX25vZGVfYWxsb2NhdGVkKCZub2RlKSk7Ci0JfQotCi0J cmV0ID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShvYmosIE5VTEwpOwotCWlm IChyZXQpCi0JCWdvdG8gb3V0X3VucGluOwotCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90 b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7Ci0JaWYgKHJldCkgewotCQlpOTE1X2dlbV9vYmplY3Rf dW5sb2NrKG9iaik7Ci0JCWdvdG8gb3V0X3VucGluOwotCX0KLQotCWZlbmNlID0gaTkxNV9nZW1f b2JqZWN0X2xvY2tfZmVuY2Uob2JqKTsKLQlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7Ci0J aWYgKCFmZW5jZSkgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dF91bnBpbjsKKwl2bWEg PSBpOTE1X2dlbV9ndHRfcHJlcGFyZShvYmosICZub2RlLCB0cnVlKTsKKwlpZiAoSVNfRVJSKHZt YSkpIHsKKwkJcmV0ID0gUFRSX0VSUih2bWEpOworCQlnb3RvIG91dF9ycG07CiAJfQogCiAJaTkx NV9nZW1fb2JqZWN0X2ludmFsaWRhdGVfZnJvbnRidWZmZXIob2JqLCBPUklHSU5fQ1BVKTsKQEAg LTY3NywxNCArNjkwLDcgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCiAJaW50ZWxfZ3RfZmx1c2hfZ2d0dF93cml0ZXMoZ2d0dC0+dm0u Z3QpOwogCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9mcm9udGJ1ZmZlcihvYmosIE9SSUdJTl9DUFUp OwogCi0JaTkxNV9nZW1fb2JqZWN0X3VubG9ja19mZW5jZShvYmosIGZlbmNlKTsKLW91dF91bnBp bjoKLQlpZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZub2RlKSkgewotCQlnZ3R0LT52bS5jbGVh cl9yYW5nZSgmZ2d0dC0+dm0sIG5vZGUuc3RhcnQsIG5vZGUuc2l6ZSk7Ci0JCXJlbW92ZV9tYXBw YWJsZV9ub2RlKGdndHQsICZub2RlKTsKLQl9IGVsc2UgewotCQlpOTE1X3ZtYV91bnBpbih2bWEp OwotCX0KKwlpOTE1X2dlbV9ndHRfY2xlYW51cChvYmosICZub2RlLCB2bWEpOwogb3V0X3JwbToK IAlpbnRlbF9ydW50aW1lX3BtX3B1dChycG0sIHdha2VyZWYpOwogCXJldHVybiByZXQ7CkBAIC03 MjQsNyArNzMwLDYgQEAgaTkxNV9nZW1fc2htZW1fcHdyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJdW5zaWduZWQgaW50IHBhcnRpYWxfY2FjaGVsaW5lX3dyaXRlOwogCXVu c2lnbmVkIGludCBuZWVkc19jbGZsdXNoOwogCXVuc2lnbmVkIGludCBvZmZzZXQsIGlkeDsKLQlz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAl2b2lkIF9fdXNlciAqdXNlcl9kYXRhOwogCXU2NCBy ZW1haW47CiAJaW50IHJldDsKQEAgLTczMywxOSArNzM4LDE3IEBAIGk5MTVfZ2VtX3NobWVtX3B3 cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJaWYgKHJl dCkKKwkJZ290byBlcnJfdW5sb2NrOworCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVf d3JpdGUob2JqLCAmbmVlZHNfY2xmbHVzaCk7Ci0JaWYgKHJldCkgewotCQlpOTE1X2dlbV9vYmpl Y3RfdW5sb2NrKG9iaik7Ci0JCXJldHVybiByZXQ7Ci0JfQorCWlmIChyZXQpCisJCWdvdG8gZXJy X3VucGluOwogCi0JZmVuY2UgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19mZW5jZShvYmopOwogCWk5 MTVfZ2VtX29iamVjdF9maW5pc2hfYWNjZXNzKG9iaik7CiAJaTkxNV9nZW1fb2JqZWN0X3VubG9j ayhvYmopOwogCi0JaWYgKCFmZW5jZSkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KIAkvKiBJZiB3ZSBk b24ndCBvdmVyd3JpdGUgYSBjYWNoZWxpbmUgY29tcGxldGVseSB3ZSBuZWVkIHRvIGJlCiAJICog Y2FyZWZ1bCB0byBoYXZlIHVwLXRvLWRhdGUgZGF0YSBieSBmaXJzdCBjbGZsdXNoaW5nLiBEb24n dAogCSAqIG92ZXJjb21wbGljYXRlIHRoaW5ncyBhbmQgZmx1c2ggdGhlIGVudGlyZSBwYXRjaC4K QEAgLTc3Myw4ICs3NzYsMTQgQEAgaTkxNV9nZW1fc2htZW1fcHdyaXRlKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCiAJfQogCiAJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2Zyb250YnVm ZmVyKG9iaiwgT1JJR0lOX0NQVSk7Ci0JaTkxNV9nZW1fb2JqZWN0X3VubG9ja19mZW5jZShvYmos IGZlbmNlKTsKIAorCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOworCXJldHVybiBy ZXQ7CisKK2Vycl91bnBpbjoKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKK2Vy cl91bmxvY2s6CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTgzMSwxMCArODQwLDYgQEAgaTkxNV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJZ290byBlcnI7CiAKLQlyZXQg PSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Ci0JaWYgKHJldCkKLQkJZ290byBlcnI7 Ci0KIAlyZXQgPSAtRUZBVUxUOwogCS8qIFdlIGNhbiBvbmx5IGRvIHRoZSBHVFQgcHdyaXRlIG9u IHVudGlsZWQgYnVmZmVycywgYXMgb3RoZXJ3aXNlCiAJICogaXQgd291bGQgZW5kIHVwIGdvaW5n IHRocm91Z2ggdGhlIGZlbmNlZCBhY2Nlc3MsIGFuZCB3ZSdsbCBnZXQKQEAgLTg1NSw3ICs4NjAs NiBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJCXJldCA9IGk5MTVfZ2VtX3NobWVtX3B3cml0ZShvYmosIGFyZ3MpOwogCX0KIAot CWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogZXJyOgogCWk5MTVfZ2VtX29iamVj dF9wdXQob2JqKTsKIAlyZXR1cm4gcmV0OwotLSAKMi4zMC4wLnJjMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==