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 186A6C11F67 for ; Thu, 1 Jul 2021 15:48:14 +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 D4D6061410 for ; Thu, 1 Jul 2021 15:48:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D4D6061410 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 F33686EB40; Thu, 1 Jul 2021 15:48:07 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 48DBE6EADA; Thu, 1 Jul 2021 15:48:06 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10032"; a="205554364" X-IronPort-AV: E=Sophos;i="5.83,314,1616482800"; d="scan'208";a="205554364" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jul 2021 08:48:04 -0700 X-IronPort-AV: E=Sophos;i="5.83,314,1616482800"; d="scan'208";a="447938285" Received: from awvttdev-05.aw.intel.com ([10.228.212.156]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jul 2021 08:48:03 -0700 From: "Michael J. Ruhl" To: michael.j.ruhl@intel.com, daniel@ffwll.ch, thomas.hellstrom@linux.intel.com, ckoenig.leichtzumerken@gmail.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, matthew.auld@intel.com, maarten.lankhorst@linux.intel.com Date: Thu, 1 Jul 2021 11:47:53 -0400 Message-Id: <20210701154754.665034-1-michael.j.ruhl@intel.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 1/2] drm/i915/gem: Correct the locking and pin pattern for dma-buf 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29t PgoKSWYgb3VyIGV4cG9ydGVkIGRtYS1idWZzIGFyZSBpbXBvcnRlZCBieSBhbm90aGVyIGluc3Rh bmNlIG9mIG91ciBkcml2ZXIsCnRoYXQgaW5zdGFuY2Ugd2lsbCB0eXBpY2FsbHkgaGF2ZSB0aGUg aW1wb3J0ZWQgZG1hLWJ1ZnMgbG9ja2VkIGR1cmluZwpkbWFfYnVmX21hcF9hdHRhY2htZW50KCku IEJ1dCB0aGUgZXhwb3J0ZXIgYWxzbyBsb2NrcyB0aGUgc2FtZSByZXNlcnZhdGlvbgpvYmplY3Qg aW4gdGhlIG1hcF9kbWFfYnVmKCkgY2FsbGJhY2ssIHdoaWNoIGxlYWRzIHRvIHJlY3Vyc2l2ZSBs b2NraW5nLgoKU28gdGFraW5nIHRoZSBsb2NrIGluc2lkZSBfcGluX3BhZ2VzX3VubG9ja2VkKCkg aXMgaW5jb3JyZWN0LgoKQWRkaXRpb25hbGx5LCB0aGUgY3VycmVudCBwaW5uaW5nIGNvZGUgcGF0 aCBpcyBjb250cmFyeSB0byB0aGUgZGVmaW5lZAp3YXkgdGhhdCBwaW5uaW5nIHNob3VsZCBvY2N1 ci4KClJlbW92ZSB0aGUgZXhwbGljaXQgcGluL3VucGluIGZyb20gdGhlIG1hcC91bWFwIGZ1bmN0 aW9ucyBhbmQgbW92ZSB0aGVtCnRvIHRoZSBhdHRhY2gvZGV0YWNoIGFsbG93aW5nIGNvcnJlY3Qg bG9ja2luZyB0byBvY2N1ciwgYW5kIHRvIG1hdGNoCnRoZSBzdGF0aWMgZG1hLWJ1ZiBkcm1fcHJp bWUgcGF0dGVybi4KCkFkZCBhIGxpdmUgc2VsZnRlc3QgdG8gZXhlcmNpc2UgYm90aCBkeW5hbWlj IGFuZCBub24tZHluYW1pYwpleHBvcnRzLgoKdjI6Ci0gRXh0ZW5kIHRoZSBzZWxmdGVzdCB3aXRo IGEgZmFrZSBkeW5hbWljIGltcG9ydGVyLgotIFByb3ZpZGUgcmVhbCBwaW4gYW5kIHVucGluIGNh bGxiYWNrcyB0byBub3QgYWJ1c2UgdGhlIGludGVyZmFjZS4KdjM6IChydWhsKQotIFJlbW92ZSB0 aGUgZHluYW1pYyBleHBvcnQgc3VwcG9ydCBhbmQgbW92ZSB0aGUgcGlubmluZyBpbnRvIHRoZQog IGF0dGFjaC9kZXRhY2ggcGF0aC4KClJlcG9ydGVkLWJ5OiBNaWNoYWVsIEouIFJ1aGwgPG1pY2hh ZWwuai5ydWhsQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhlbGxzdHLDtm0gPHRo b21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEou IFJ1aGwgPG1pY2hhZWwuai5ydWhsQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fZG1hYnVmLmMgICAgfCAgNDYgKysrKystLQogLi4uL2RybS9pOTE1L2dl bS9zZWxmdGVzdHMvaTkxNV9nZW1fZG1hYnVmLmMgIHwgMTE2ICsrKysrKysrKysrKysrKysrLQog MiBmaWxlcyBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jCmluZGV4IDYxNmMzYTJmMWJh Zi4uOGM1MjhiNjkzYTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Rt YWJ1Zi5jCkBAIC0xMiw2ICsxMiw4IEBACiAjaW5jbHVkZSAiaTkxNV9nZW1fb2JqZWN0LmgiCiAj aW5jbHVkZSAiaTkxNV9zY2F0dGVybGlzdC5oIgogCitJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3Rh dGljIGJvb2wgZm9yY2VfZGlmZmVyZW50X2RldmljZXM7KQorCiBzdGF0aWMgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKmRtYV9idWZfdG9fb2JqKHN0cnVjdCBkbWFfYnVmICpidWYpCiB7CiAJ cmV0dXJuIHRvX2ludGVsX2JvKGJ1Zi0+cHJpdik7CkBAIC0yNSwxNSArMjcsMTEgQEAgc3RhdGlj IHN0cnVjdCBzZ190YWJsZSAqaTkxNV9nZW1fbWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqYXR0YWNobWUKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyYywgKmRzdDsKIAlpbnQg cmV0LCBpOwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlc191bmxvY2tlZChvYmop OwotCWlmIChyZXQpCi0JCWdvdG8gZXJyOwotCiAJLyogQ29weSBzZyBzbyB0aGF0IHdlIG1ha2Ug YW4gaW5kZXBlbmRlbnQgbWFwcGluZyAqLwogCXN0ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHNn X3RhYmxlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHN0ID09IE5VTEwpIHsKIAkJcmV0ID0gLUVOT01F TTsKLQkJZ290byBlcnJfdW5waW5fcGFnZXM7CisJCWdvdG8gZXJyOwogCX0KIAogCXJldCA9IHNn X2FsbG9jX3RhYmxlKHN0LCBvYmotPm1tLnBhZ2VzLT5uZW50cywgR0ZQX0tFUk5FTCk7CkBAIC01 OCw4ICs1Niw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmk5MTVfZ2VtX21hcF9kbWFfYnVm KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lCiAJc2dfZnJlZV90YWJsZShzdCk7 CiBlcnJfZnJlZToKIAlrZnJlZShzdCk7Ci1lcnJfdW5waW5fcGFnZXM6Ci0JaTkxNV9nZW1fb2Jq ZWN0X3VucGluX3BhZ2VzKG9iaik7CiBlcnI6CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KQEAg LTY4LDEzICs2NCw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3VubWFwX2RtYV9idWYoc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKIAkJCQkgICBzdHJ1Y3Qgc2dfdGFibGUg KnNnLAogCQkJCSAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKLQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zl90b19vYmooYXR0YWNobWVudC0+ZG1hYnVm KTsKLQogCWRtYV91bm1hcF9zZ3RhYmxlKGF0dGFjaG1lbnQtPmRldiwgc2csIGRpciwgRE1BX0FU VFJfU0tJUF9DUFVfU1lOQyk7CiAJc2dfZnJlZV90YWJsZShzZyk7CiAJa2ZyZWUoc2cpOwotCi0J aTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9n ZW1fZG1hYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCBkbWFfYnVmX21h cCAqbWFwKQpAQCAtMTY4LDcgKzE2MCwzMiBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX2VuZF9jcHVf YWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBlbnVtIGRtYV9kYXRhX2RpcmVjdAogCXJl dHVybiBlcnI7CiB9CiAKKy8qKgorICogaTkxNV9nZW1fZG1hYnVmX2F0dGFjaCAtIERvIGFueSBl eHRyYSBhdHRhY2ggd29yayBuZWNlc3NhcnkKKyAqIEBkbWFidWY6IGltcG9ydGVkIGRtYS1idWYK KyAqIEBhdHRhY2g6IG5ldyBhdHRhY2ggdG8gZG8gd29yayBvbgorICoKKyAqLworc3RhdGljIGlu dCBpOTE1X2dlbV9kbWFidWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisJCQkJICBz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGRtYV9idWZfdG9fb2JqKGRtYWJ1Zik7CisKKwlhc3NlcnRfb2JqZWN0 X2hlbGQob2JqKTsKKwlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOworfQor CitzdGF0aWMgdm9pZCBpOTE1X2dlbV9kbWFidWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFi dWYsCisJCQkJICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQoreworCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihkbWFidWYpOworCisJ aTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZG1hX2J1Zl9vcHMgaTkxNV9kbWFidWZfb3BzID0gIHsKKwkuYXR0YWNoID0gaTkxNV9nZW1f ZG1hYnVmX2F0dGFjaCwKKwkuZGV0YWNoID0gaTkxNV9nZW1fZG1hYnVmX2RldGFjaCwKIAkubWFw X2RtYV9idWYgPSBpOTE1X2dlbV9tYXBfZG1hX2J1ZiwKIAkudW5tYXBfZG1hX2J1ZiA9IGk5MTVf Z2VtX3VubWFwX2RtYV9idWYsCiAJLnJlbGVhc2UgPSBkcm1fZ2VtX2RtYWJ1Zl9yZWxlYXNlLApA QCAtMjA0LDYgKzIyMSw4IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19k bWFidWYoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlzdHJ1Y3Qgc2dfdGFibGUg KnBhZ2VzOwogCXVuc2lnbmVkIGludCBzZ19wYWdlX3NpemVzOwogCisJYXNzZXJ0X29iamVjdF9o ZWxkKG9iaik7CisKIAlwYWdlcyA9IGRtYV9idWZfbWFwX2F0dGFjaG1lbnQob2JqLT5iYXNlLmlt cG9ydF9hdHRhY2gsCiAJCQkJICAgICAgIERNQV9CSURJUkVDVElPTkFMKTsKIAlpZiAoSVNfRVJS KHBhZ2VzKSkKQEAgLTIxOSw2ICsyMzgsOCBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9n ZXRfcGFnZXNfZG1hYnVmKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMg dm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2RtYWJ1ZihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAogCQkJCQkgICAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7CisJYXNz ZXJ0X29iamVjdF9oZWxkKG9iaik7CisKIAlkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQob2JqLT5i YXNlLmltcG9ydF9hdHRhY2gsIHBhZ2VzLAogCQkJCSBETUFfQklESVJFQ1RJT05BTCk7CiB9CkBA IC0yNDEsNyArMjYyLDggQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICppOTE1X2dlbV9wcmltZV9p bXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoZG1hX2J1Zi0+b3BzID09ICZpOTE1 X2RtYWJ1Zl9vcHMpIHsKIAkJb2JqID0gZG1hX2J1Zl90b19vYmooZG1hX2J1Zik7CiAJCS8qIGlz IGl0IGZyb20gb3VyIGRldmljZT8gKi8KLQkJaWYgKG9iai0+YmFzZS5kZXYgPT0gZGV2KSB7CisJ CWlmIChvYmotPmJhc2UuZGV2ID09IGRldiAmJgorCQkgICAgIUk5MTVfU0VMRlRFU1RfT05MWShm b3JjZV9kaWZmZXJlbnRfZGV2aWNlcykpIHsKIAkJCS8qCiAJCQkgKiBJbXBvcnRpbmcgZG1hYnVm IGV4cG9ydGVkIGZyb20gb3V0IG93biBnZW0gaW5jcmVhc2VzCiAJCQkgKiByZWZjb3VudCBvbiBn ZW0gaXRzZWxmIGluc3RlYWQgb2YgZl9jb3VudCBvZiBkbWFidWYuCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYwppbmRleCBkZDc0 YmMwOWVjODguLjg2OGIzNDY5ZWNiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRp YyBpbnQgaWd0X2RtYWJ1Zl9leHBvcnQodm9pZCAqYXJnKQogc3RhdGljIGludCBpZ3RfZG1hYnVm X2ltcG9ydF9zZWxmKHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGFyZzsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosICppbXBvcnRfb2JqOwogCXN0cnVjdCBkcm1fZ2VtX29iamVj dCAqaW1wb3J0OwogCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7CiAJaW50IGVycjsKQEAgLTY1LDE0 ICs2NSwxMjUgQEAgc3RhdGljIGludCBpZ3RfZG1hYnVmX2ltcG9ydF9zZWxmKHZvaWQgKmFyZykK IAkJZXJyID0gLUVJTlZBTDsKIAkJZ290byBvdXRfaW1wb3J0OwogCX0KKwlpbXBvcnRfb2JqID0g dG9faW50ZWxfYm8oaW1wb3J0KTsKKworCWk5MTVfZ2VtX29iamVjdF9sb2NrKGltcG9ydF9vYmos IE5VTEwpOworCWVyciA9IF9fX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKGltcG9ydF9vYmop OworCWk5MTVfZ2VtX29iamVjdF91bmxvY2soaW1wb3J0X29iaik7CisJaWYgKGVycikgeworCQlw cl9lcnIoIlNhbWUgb2JqZWN0IGRtYS1idWYgZ2V0X3BhZ2VzIGZhaWxlZCFcbiIpOworCQlnb3Rv IG91dF9pbXBvcnQ7CisJfQogCiAJZXJyID0gMDsKIG91dF9pbXBvcnQ6Ci0JaTkxNV9nZW1fb2Jq ZWN0X3B1dCh0b19pbnRlbF9ibyhpbXBvcnQpKTsKKwlpOTE1X2dlbV9vYmplY3RfcHV0KGltcG9y dF9vYmopOworb3V0X2RtYWJ1ZjoKKwlkbWFfYnVmX3B1dChkbWFidWYpOworb3V0OgorCWk5MTVf Z2VtX29iamVjdF9wdXQob2JqKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBpZ3Rf ZG1hYnVmX21vdmVfbm90aWZ5KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKK3sK KwlHRU1fV0FSTl9PTigxKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFj aF9vcHMgaWd0X2RtYWJ1Zl9hdHRhY2hfb3BzID0geworCS5tb3ZlX25vdGlmeSA9IGlndF9kbWFi dWZfbW92ZV9ub3RpZnksCit9OworCitzdGF0aWMgaW50IGlndF9kbWFidWZfaW1wb3J0X3NhbWVf ZHJpdmVyKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFy ZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCAqaW1wb3J0X29iajsKKwlzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmltcG9ydDsKKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOworCXN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmltcG9ydF9hdHRhY2g7CisJc3RydWN0IHNnX3RhYmxl ICpzdDsKKwlsb25nIHRpbWVvdXQ7CisJaW50IGVycjsKKworCWZvcmNlX2RpZmZlcmVudF9kZXZp Y2VzID0gdHJ1ZTsKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3NobWVtKGk5MTUsIFBB R0VfU0laRSk7CisJaWYgKElTX0VSUihvYmopKQorCQlnb3RvIG91dF9yZXQ7CisKKwlkbWFidWYg PSBpOTE1X2dlbV9wcmltZV9leHBvcnQoJm9iai0+YmFzZSwgMCk7CisJaWYgKElTX0VSUihkbWFi dWYpKSB7CisJCXByX2VycigiaTkxNV9nZW1fcHJpbWVfZXhwb3J0IGZhaWxlZCB3aXRoIGVycj0l ZFxuIiwKKwkJICAgICAgIChpbnQpUFRSX0VSUihkbWFidWYpKTsKKwkJZXJyID0gUFRSX0VSUihk bWFidWYpOworCQlnb3RvIG91dDsKKwl9CisKKwlpbXBvcnQgPSBpOTE1X2dlbV9wcmltZV9pbXBv cnQoJmk5MTUtPmRybSwgZG1hYnVmKTsKKwlpZiAoSVNfRVJSKGltcG9ydCkpIHsKKwkJcHJfZXJy KCJpOTE1X2dlbV9wcmltZV9pbXBvcnQgZmFpbGVkIHdpdGggZXJyPSVkXG4iLAorCQkgICAgICAg KGludClQVFJfRVJSKGltcG9ydCkpOworCQllcnIgPSBQVFJfRVJSKGltcG9ydCk7CisJCWdvdG8g b3V0X2RtYWJ1ZjsKKwl9CisKKwlpZiAoaW1wb3J0ID09ICZvYmotPmJhc2UpIHsKKwkJcHJfZXJy KCJpOTE1X2dlbV9wcmltZV9pbXBvcnQgcmV1c2VkIGdlbSBvYmplY3QhXG4iKTsKKwkJZXJyID0g LUVJTlZBTDsKKwkJZ290byBvdXRfaW1wb3J0OworCX0KKworCWltcG9ydF9vYmogPSB0b19pbnRl bF9ibyhpbXBvcnQpOworCisJaTkxNV9nZW1fb2JqZWN0X2xvY2soaW1wb3J0X29iaiwgTlVMTCk7 CisJZXJyID0gX19fX2k5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoaW1wb3J0X29iaik7CisJaWYg KGVycikgeworCQlwcl9lcnIoIkRpZmZlcmVudCBvYmplY3RzIGRtYS1idWYgZ2V0X3BhZ2VzIGZh aWxlZCFcbiIpOworCQlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKGltcG9ydF9vYmopOworCQlnb3Rv IG91dF9pbXBvcnQ7CisJfQorCisJLyoKKwkgKiBJZiB0aGUgZXhwb3J0ZWQgb2JqZWN0IGlzIG5v dCBpbiBzeXN0ZW0gbWVtb3J5LCBzb21ldGhpbmcKKwkgKiB3ZWlyZCBpcyBnb2luZyBvbi4gVE9E TzogV2hlbiBwMnAgaXMgc3VwcG9ydGVkLCB0aGlzIGlzIG5vCisJICogbG9uZ2VyIGNvbnNpZGVy ZWQgd2VpcmQuCisJICovCisJaWYgKG9iai0+bW0ucmVnaW9uICE9IGk5MTUtPm1tLnJlZ2lvbnNb SU5URUxfUkVHSU9OX1NNRU1dKSB7CisJCXByX2VycigiRXhwb3J0ZWQgZG1hLWJ1ZiBpcyBub3Qg aW4gc3lzdGVtIG1lbW9yeVxuIik7CisJCWVyciA9IC1FSU5WQUw7CisJfQorCisJaTkxNV9nZW1f b2JqZWN0X3VubG9jayhpbXBvcnRfb2JqKTsKKworCS8qIE5vdyB0cnkgYSBmYWtlIGR5bmFtaWMg aW1wb3J0ZXIgKi8KKwlpbXBvcnRfYXR0YWNoID0gZG1hX2J1Zl9keW5hbWljX2F0dGFjaChkbWFi dWYsIG9iai0+YmFzZS5kZXYtPmRldiwKKwkJCQkJICAgICAgICZpZ3RfZG1hYnVmX2F0dGFjaF9v cHMsCisJCQkJCSAgICAgICBOVUxMKTsKKwlpZiAoSVNfRVJSKGltcG9ydF9hdHRhY2gpKQorCQln b3RvIG91dF9pbXBvcnQ7CisKKwlkbWFfcmVzdl9sb2NrKGRtYWJ1Zi0+cmVzdiwgTlVMTCk7CisJ c3QgPSBkbWFfYnVmX21hcF9hdHRhY2htZW50KGltcG9ydF9hdHRhY2gsIERNQV9CSURJUkVDVElP TkFMKTsKKwlkbWFfcmVzdl91bmxvY2soZG1hYnVmLT5yZXN2KTsKKwlpZiAoSVNfRVJSKHN0KSkK KwkJZ290byBvdXRfZGV0YWNoOworCisJdGltZW91dCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dChk bWFidWYtPnJlc3YsIGZhbHNlLCB0cnVlLCA1ICogSFopOworCWlmICghdGltZW91dCkgeworCQlw cl9lcnIoImRtYWJ1ZiB3YWl0IGZvciBleGNsdXNpdmUgZmVuY2UgdGltZWQgb3V0LlxuIik7CisJ CXRpbWVvdXQgPSAtRVRJTUU7CisJfQorCWVyciA9IHRpbWVvdXQgPiAwID8gMCA6IHRpbWVvdXQ7 CisJZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KGltcG9ydF9hdHRhY2gsIHN0LCBETUFfQklESVJF Q1RJT05BTCk7CitvdXRfZGV0YWNoOgorCWRtYV9idWZfZGV0YWNoKGRtYWJ1ZiwgaW1wb3J0X2F0 dGFjaCk7CitvdXRfaW1wb3J0OgorCWk5MTVfZ2VtX29iamVjdF9wdXQoaW1wb3J0X29iaik7CiBv dXRfZG1hYnVmOgogCWRtYV9idWZfcHV0KGRtYWJ1Zik7CiBvdXQ6CiAJaTkxNV9nZW1fb2JqZWN0 X3B1dChvYmopOworb3V0X3JldDoKKwlmb3JjZV9kaWZmZXJlbnRfZGV2aWNlcyA9IGZhbHNlOwog CXJldHVybiBlcnI7CiB9CiAKQEAgLTI4Niw2ICszOTcsNyBAQCBpbnQgaTkxNV9nZW1fZG1hYnVm X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7CiAJCVNVQlRFU1QoaWd0X2Rt YWJ1Zl9leHBvcnQpLAorCQlTVUJURVNUKGlndF9kbWFidWZfaW1wb3J0X3NhbWVfZHJpdmVyKSwK IAl9OwogCiAJcmV0dXJuIGk5MTVfc3VidGVzdHModGVzdHMsIGk5MTUpOwotLSAKMi4zMS4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK