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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 72410C433B4 for ; Mon, 17 May 2021 10:57:24 +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 3215661059 for ; Mon, 17 May 2021 10:57:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3215661059 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 4CE996E928; Mon, 17 May 2021 10:57:20 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 066AA6E926; Mon, 17 May 2021 10:57:18 +0000 (UTC) IronPort-SDR: fq5YflTTxWr6dyzMM7EY0wsmAmRUPMNZiU8KEe4oOS+qINSxSZokzo9lYv8/uoVNIVEx72cqJo On92HCd8qbxg== X-IronPort-AV: E=McAfee;i="6200,9189,9986"; a="221470226" X-IronPort-AV: E=Sophos;i="5.82,307,1613462400"; d="scan'208";a="221470226" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2021 03:57:17 -0700 IronPort-SDR: lGBplcriXwGuqoq7xRPG3JRkkzjJheETgd5sjzIFiWO51+9YlYoJNrNP7eV8dWczr6/013tYEG sxwDoNijgqDg== X-IronPort-AV: E=Sophos;i="5.82,307,1613462400"; d="scan'208";a="472359308" Received: from sudhirk1-mobl1.ger.corp.intel.com (HELO localhost) ([10.252.50.192]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2021 03:57:13 -0700 From: Jani Nikula To: Thomas =?utf-8?Q?Hellstr=C3=B6m?= , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org In-Reply-To: <20210511132525.377190-6-thomas.hellstrom@linux.intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20210511132525.377190-1-thomas.hellstrom@linux.intel.com> <20210511132525.377190-6-thomas.hellstrom@linux.intel.com> Date: Mon, 17 May 2021 13:57:10 +0300 Message-ID: <87pmxphbll.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 5/7] drm/i915/ttm, drm/ttm: Add a generic TTM memcpy move for page-based iomem 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: Thomas =?utf-8?Q?Hellstr=C3=B6m?= , Christian =?utf-8?Q?K=C3=B6nig?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAxMSBNYXkgMjAyMSwgVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21A bGludXguaW50ZWwuY29tPiB3cm90ZToKPiBUaGUgaW50ZXJuYWwgdHRtX2JvX3V0aWwgbWVtY3B5 IHVzZXMgdm1hcCBmdW5jdGlvbmFsaXR5LCBhbmQgd2hpbGUgaXQKPiBwcm9iYWJseSBtaWdodCBi ZSBwb3NzaWJsZSB0byB1c2UgaXQgZm9yIGNvcHlpbmcgaW4tIGFuZCBvdXQgb2YKPiBzZ2xpc3Qg cmVwcmVzZW50ZWQgaW8gbWVtb3J5LCB1c2luZyBpb19tZW1fcmVzZXJ2ZSgpIC8gaW9fbWVtX2Zy ZWUoKQo+IGNhbGxiYWNrcywgdGhhdCB3b3VsZCBjYXVzZSBwcm9ibGVtcyB3aXRoIGZhdWx0KCku Cj4gSW5zdGVhZCwgaW1wbGVtZW50IGEgbWV0aG9kIG1hcHBpbmcgcGFnZS1ieS1wYWdlIHVzaW5n IGttYXBfbG9jYWwoKQo+IHNlbWFudGljcy4gQXMgYW4gYWRkaXRpb25hbCBiZW5lZml0IHdlIHRo ZW4gYXZvaWQgdGhlIG9jY2FzaW9uYWwgZ2xvYmFsCj4gVExCIGZsdXNoZXMgb2Ygdm1hcCgpIGFu ZCBjb25zdW1pbmcgdm1hcCBzcGFjZSwgZWxpbWluYXRpb24gb2YgYSBjcml0aWNhbAo+IHBvaW50 IG9mIGZhaWx1cmUgYW5kIHdpdGggYSBzbGlnaHQgY2hhbmdlIG9mIHNlbWFudGljcyB3ZSBjb3Vs ZCBhbHNvIHB1c2gKPiB0aGUgbWVtY3B5IG91dCBhc3luYyBmb3IgdGVzdGluZyBhbmQgYXN5bmMg ZHJpdmVyIGRldmVscG1lbnQgcHVycG9zZXMuCj4gUHVzaGluZyBvdXQgYXN5bmMgY2FuIGJlIGRv bmUgc2luY2UgdGhlcmUgaXMgbm8gbWVtb3J5IGFsbG9jYXRpb24gZ29pbmcgb24KPiB0aGF0IGNv dWxkIHZpb2xhdGUgdGhlIGRtYV9mZW5jZSBsb2NrZGVwIHJ1bGVzLgo+Cj4gTm90ZSB0aGF0IGRy aXZlcnMgdGhhdCBkb24ndCB3YW50IHRvIHVzZSBzdHJ1Y3QgaW9fbWFwcGluZyBidXQgcmVsaWVz IG9uCj4gbWVtcmVtYXAgZnVuY3Rpb25hbGl0eSwgYW5kIHRoYXQgZG9uJ3Qgd2FudCB0byB1c2Ug c2NhdHRlcmxpc3RzIGZvcgo+IFZSQU0gbWF5IHdlbGwgZGVmaW5lIHNwZWNpYWxpemVkIChob3Bl ZnVsbHkgcmV1c2FibGUpIGl0ZXJhdG9ycyBmb3IgdGhlaXIKPiBwYXJ0aWN1bGFyIGVudmlyb25t ZW50Lgo+Cj4gQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4K PiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51 eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAg ICAgICAgICAgICB8ICAgMSArCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9i b191dGlsLmMgICB8IDE1NSArKysrKysrKysrKysrKysrKysKPiAgLi4uL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fdHRtX2JvX3V0aWwuaCAgIHwgMTQxICsrKysrKysrKysrKysrKysKPiAgZHJp dmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYyAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgNCBm aWxlcyBjaGFuZ2VkLCAyOTggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9ib191dGlsLmMKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG1fYm9fdXRpbC5o Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IGNiODgyMzU3MDk5Ni4uOTU4Y2NjMWVkZmVk IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTU1LDYgKzE1NSw3IEBAIGdlbS15ICs9 IFwKPiAgCWdlbS9pOTE1X2dlbV9zdG9sZW4ubyBcCj4gIAlnZW0vaTkxNV9nZW1fdGhyb3R0bGUu byBcCj4gIAlnZW0vaTkxNV9nZW1fdGlsaW5nLm8gXAo+ICsJZ2VtL2k5MTVfZ2VtX3R0bV9ib191 dGlsLm8gXAo+ICAJZ2VtL2k5MTVfZ2VtX3VzZXJwdHIubyBcCj4gIAlnZW0vaTkxNV9nZW1fd2Fp dC5vIFwKPiAgCWdlbS9pOTE1X2dlbWZzLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9ib191dGlsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fdHRtX2JvX3V0aWwuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi4xMTE2ZDdkZjE0NjEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9ib191dGlsLmMKPiBAQCAtMCwwICsxLDE1 NSBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKy8qCj4gKyAqIENvcHly aWdodCDCqSAyMDIxIEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIERP QzogVXNhZ2UgYW5kIGludGVudGlvbnMuCj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBjb250YWlucyBm dW5jdGlvbmFsaXR5IHRoYXQgd2UgbWlnaHQgd2FudCB0byBtb3ZlIGludG8KPiArICogdHRtX2Jv X3V0aWwuYyBpZiB0aGVyZSBpcyBhIGNvbW1vbiBpbnRlcmVzdC4KPiArICogQ3VycmVudGx5IGEg a21hcF9sb2NhbCBvbmx5IG1lbWNweSB3aXRoIHN1cHBvcnQgZm9yIHBhZ2UtYmFzZWQgaW9tZW0g cmVnaW9ucywKPiArICogYW5kIGZhc3QgbWVtY3B5IGZyb20gd3JpdGUtY29tYmluZWQgbWVtb3J5 Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvaGlnaG1lbS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8tbWFwcGluZy5oPgo+ICsj aW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KPiArCj4gKyNpbmNsdWRlICJpOTE1X21lbWNw eS5oIgo+ICsKPiArI2luY2x1ZGUgImdlbS9pOTE1X2dlbV90dG1fYm9fdXRpbC5oIgo+ICsKPiAr c3RhdGljIHZvaWQgaTkxNV90dG1fa21hcF9pdGVyX3R0X2ttYXBfbG9jYWwoc3RydWN0IGk5MTVf dHRtX2ttYXBfaXRlciAqaXRlciwKPiArCQkJCQkgICAgIHN0cnVjdCBkbWFfYnVmX21hcCAqZG1h cCwKPiArCQkJCQkgICAgIHBnb2ZmX3QgaSkKPiArewo+ICsJc3RydWN0IGk5MTVfdHRtX2ttYXBf aXRlcl90dCAqaXRlcl90dCA9Cj4gKwkJY29udGFpbmVyX29mKGl0ZXIsIHR5cGVvZigqaXRlcl90 dCksIGJhc2UpOwo+ICsKPiArCWRtYV9idWZfbWFwX3NldF92YWRkcihkbWFwLCBrbWFwX2xvY2Fs X3BhZ2UoaXRlcl90dC0+dHQtPnBhZ2VzW2ldKSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5 MTVfdHRtX2ttYXBfaXRlcl9pb21hcF9rbWFwX2xvY2FsKHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0 ZXIgKml0ZXIsCj4gKwkJCQkJCXN0cnVjdCBkbWFfYnVmX21hcCAqZG1hcCwKPiArCQkJCQkJcGdv ZmZfdCBpKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVyX2lvbWFwICppdGVyX2lv ID0KPiArCQljb250YWluZXJfb2YoaXRlciwgdHlwZW9mKCppdGVyX2lvKSwgYmFzZSk7Cj4gKwl2 b2lkIF9faW9tZW0gKmFkZHI7Cj4gKwo+ICtyZXRyeToKPiArCXdoaWxlIChpID49IGl0ZXJfaW8t PmNhY2hlLmVuZCkgewo+ICsJCWl0ZXJfaW8tPmNhY2hlLnNnID0gaXRlcl9pby0+Y2FjaGUuc2cg Pwo+ICsJCQlzZ19uZXh0KGl0ZXJfaW8tPmNhY2hlLnNnKSA6IGl0ZXJfaW8tPnN0LT5zZ2w7Cj4g KwkJaXRlcl9pby0+Y2FjaGUuaSA9IGl0ZXJfaW8tPmNhY2hlLmVuZDsKPiArCQlpdGVyX2lvLT5j YWNoZS5lbmQgKz0gc2dfZG1hX2xlbihpdGVyX2lvLT5jYWNoZS5zZykgPj4KPiArCQkJUEFHRV9T SElGVDsKPiArCQlpdGVyX2lvLT5jYWNoZS5vZmZzID0gc2dfZG1hX2FkZHJlc3MoaXRlcl9pby0+ Y2FjaGUuc2cpIC0KPiArCQkJaXRlcl9pby0+c3RhcnQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKGkgPCBp dGVyX2lvLT5jYWNoZS5pKSB7Cj4gKwkJaXRlcl9pby0+Y2FjaGUuZW5kID0gMDsKPiArCQlpdGVy X2lvLT5jYWNoZS5zZyA9IE5VTEw7Cj4gKwkJZ290byByZXRyeTsKPiArCX0KPiArCj4gKwlhZGRy ID0gaW9fbWFwcGluZ19tYXBfbG9jYWxfd2MoaXRlcl9pby0+aW9tYXAsIGl0ZXJfaW8tPmNhY2hl Lm9mZnMgKwo+ICsJCQkJICAgICAgICgoKHJlc291cmNlX3NpemVfdClpIC0gaXRlcl9pby0+Y2Fj aGUuaSkKPiArCQkJCQk8PCBQQUdFX1NISUZUKSk7Cj4gKwlkbWFfYnVmX21hcF9zZXRfdmFkZHJf aW9tZW0oZG1hcCwgYWRkcik7Cj4gK30KPiArCj4gK3N0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXJf b3BzIGk5MTVfdHRtX2ttYXBfaXRlcl90dF9vcHMgPSB7Cj4gKwkua21hcF9sb2NhbCA9IGk5MTVf dHRtX2ttYXBfaXRlcl90dF9rbWFwX2xvY2FsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgaTkxNV90dG1f a21hcF9pdGVyX29wcyBpOTE1X3R0bV9rbWFwX2l0ZXJfaW9fb3BzID0gewo+ICsJLmttYXBfbG9j YWwgPSAgaTkxNV90dG1fa21hcF9pdGVyX2lvbWFwX2ttYXBfbG9jYWwKPiArfTsKPiArCj4gK3N0 YXRpYyB2b2lkIGt1bm1hcF9sb2NhbF9kbWFfYnVmX21hcChzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1h cCkKPiArewo+ICsJaWYgKG1hcC0+aXNfaW9tZW0pCj4gKwkJaW9fbWFwcGluZ191bm1hcF9sb2Nh bChtYXAtPnZhZGRyX2lvbWVtKTsKPiArCWVsc2UKPiArCQlrdW5tYXBfbG9jYWwobWFwLT52YWRk cik7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpOTE1X3R0bV9tb3ZlX21lbWNweSAtIEhlbHBlciB0 byBwZXJmb3JtIGEgbWVtY3B5IHR0bSBtb3ZlIG9wZXJhdGlvbi4KPiArICogQGJvOiBUaGUgc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0Lgo+ICsgKiBAbmV3X21lbTogVGhlIHN0cnVjdCB0dG1fcmVz b3VyY2Ugd2UncmUgbW92aW5nIHRvIChjb3B5IGRlc3RpbmF0aW9uKS4KPiArICogQG5ld19rbWFw OiBBIHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXIgcmVwcmVzZW50aW5nIHRoZSBkZXN0aW5hdGlv biByZXNvdXJjZS4KPiArICogQG9sZF9rbWFwOiBBIHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXIg cmVwcmVzZW50aW5nIHRoZSBzb3VyY2UgcmVzb3VyY2UuCj4gKyAqLwo+ICt2b2lkIGk5MTVfdHRt X21vdmVfbWVtY3B5KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4gKwkJCSAgc3RydWN0 IHR0bV9yZXNvdXJjZSAqbmV3X21lbSwKPiArCQkJICBzdHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVy ICpuZXdfa21hcCwKPiArCQkJICBzdHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVyICpvbGRfa21hcCkK PiArewo+ICsJc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKPiArCXN0cnVjdCB0 dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuID0gdHRtX21hbmFnZXJfdHlwZShiZGV2LCBuZXdfbWVt LT5tZW1fdHlwZSk7Cj4gKwlzdHJ1Y3QgdHRtX3R0ICp0dG0gPSBiby0+dHRtOwo+ICsJc3RydWN0 IHR0bV9yZXNvdXJjZSAqb2xkX21lbSA9ICZiby0+bWVtOwo+ICsJc3RydWN0IHR0bV9yZXNvdXJj ZSBvbGRfY29weSA9ICpvbGRfbWVtOwo+ICsJc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICpv bGRfbWFuID0gdHRtX21hbmFnZXJfdHlwZShiZGV2LCBvbGRfbWVtLT5tZW1fdHlwZSk7Cj4gKwlz dHJ1Y3QgZG1hX2J1Zl9tYXAgb2xkX21hcCwgbmV3X21hcDsKPiArCXBnb2ZmX3QgaTsKPiArCj4g KwkvKiBGb3IgdGhlIHBhZ2UtYmFzZWQgYWxsb2NhdG9yIHdlIG5lZWQgc2d0YWJsZSBpdGVyYXRv cnMgYXMgd2VsbC4qLwo+ICsKPiArCS8qIFNpbmdsZSBUVE0gbW92ZS4gTk9QICovCj4gKwlpZiAo b2xkX21hbi0+dXNlX3R0ICYmIG1hbi0+dXNlX3R0KQo+ICsJCWdvdG8gZG9uZTsKPiArCj4gKwkv KiBEb24ndCBtb3ZlIG5vbmV4aXN0ZW50IGRhdGEuIENsZWFyIGRlc3RpbmF0aW9uIGluc3RlYWQu ICovCj4gKwlpZiAob2xkX21hbi0+dXNlX3R0ICYmICFtYW4tPnVzZV90dCAmJgo+ICsJICAgICh0 dG0gPT0gTlVMTCB8fCAhdHRtX3R0X2lzX3BvcHVsYXRlZCh0dG0pKSkgewo+ICsJCWlmICh0dG0g JiYgISh0dG0tPnBhZ2VfZmxhZ3MgJiBUVE1fUEFHRV9GTEFHX1pFUk9fQUxMT0MpKQo+ICsJCQln b3RvIGRvbmU7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBuZXdfbWVtLT5udW1fcGFnZXM7ICsr aSkgewo+ICsJCQluZXdfa21hcC0+b3BzLT5rbWFwX2xvY2FsKG5ld19rbWFwLCAmbmV3X21hcCwg aSk7Cj4gKwkJCW1lbXNldF9pbyhuZXdfbWFwLnZhZGRyX2lvbWVtLCAwLCBQQUdFX1NJWkUpOwo+ ICsJCQlrdW5tYXBfbG9jYWxfZG1hX2J1Zl9tYXAoJm5ld19tYXApOwo+ICsJCX0KPiArCQlnb3Rv IGRvbmU7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG5ld19tZW0tPm51bV9wYWdlczsg KytpKSB7Cj4gKwkJbmV3X2ttYXAtPm9wcy0+a21hcF9sb2NhbChuZXdfa21hcCwgJm5ld19tYXAs IGkpOwo+ICsJCW9sZF9rbWFwLT5vcHMtPmttYXBfbG9jYWwob2xkX2ttYXAsICZvbGRfbWFwLCBp KTsKPiArCQlpZiAoIW9sZF9tYXAuaXNfaW9tZW0gfHwKPiArCQkgICAgIWk5MTVfbWVtY3B5X2Zy b21fd2MobmV3X21hcC52YWRkciwgb2xkX21hcC52YWRkciwgUEFHRV9TSVpFKSkgewo+ICsJCQlp ZiAoIW9sZF9tYXAuaXNfaW9tZW0pIHsKPiArCQkJCWRtYV9idWZfbWFwX21lbWNweV90bygmbmV3 X21hcCwgb2xkX21hcC52YWRkciwKPiArCQkJCQkJICAgICAgUEFHRV9TSVpFKTsKPiArCQkJfSBl bHNlIGlmICghbmV3X21hcC5pc19pb21lbSkgewo+ICsJCQkJbWVtY3B5X2Zyb21pbyhuZXdfbWFw LnZhZGRyLCBvbGRfbWFwLnZhZGRyX2lvbWVtLAo+ICsJCQkJCSAgICAgIFBBR0VfU0laRSk7Cj4g KwkJCX0gZWxzZSB7Cj4gKwkJCQlwZ29mZl90IGo7Cj4gKwkJCQl1MzIgX19pb21lbSAqc3JjID0g b2xkX21hcC52YWRkcl9pb21lbTsKPiArCQkJCXUzMiBfX2lvbWVtICpkc3QgPSBuZXdfbWFwLnZh ZGRyX2lvbWVtOwo+ICsKPiArCQkJCWZvciAoaiA9IDA7IGogPCAoUEFHRV9TSVpFID4+IDIpOyAr K2opCj4gKwkJCQkJaW93cml0ZTMyKGlvcmVhZDMyKHNyYysrKSwgZHN0KyspOwo+ICsJCQl9Cj4g KwkJfQo+ICsJCWt1bm1hcF9sb2NhbF9kbWFfYnVmX21hcCgmb2xkX21hcCk7Cj4gKwkJa3VubWFw X2xvY2FsX2RtYV9idWZfbWFwKCZuZXdfbWFwKTsKPiArCX0KPiArCj4gK2RvbmU6Cj4gKwlvbGRf Y29weSA9ICpvbGRfbWVtOwo+ICsKPiArCXR0bV9ib19hc3NpZ25fbWVtKGJvLCBuZXdfbWVtKTsK PiArCj4gKwlpZiAoIW1hbi0+dXNlX3R0KQo+ICsJCXR0bV9ib190dF9kZXN0cm95KGJvKTsKPiAr Cj4gKwl0dG1fcmVzb3VyY2VfZnJlZShibywgJm9sZF9jb3B5KTsKPiArfQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX2JvX3V0aWwuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG1fYm9fdXRpbC5oCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjgyYzkyMTc2NzE4ZAo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX2JvX3V0aWwu aAo+IEBAIC0wLDAgKzEsMTQxIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQg Ki8KPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMjEgSW50ZWwgQ29ycG9yYXRpb24KPiArICov Cj4gKwo+ICsvKgo+ICsgKiBUaGlzIGZpbGVzIGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgdGhhdCB3 ZSBtaWdodCB3YW50IHRvIG1vdmUgaW50bwo+ICsgKiB0dG1fYm9fdXRpbC5jIGlmIHRoZXJlIGlz IGEgY29tbW9uIGludGVyZXN0Lgo+ICsgKi8KPiArI2lmbmRlZiBfSTkxNV9HRU1fVFRNX0JPX1VU SUxfSF8KPiArI2RlZmluZSBfSTkxNV9HRU1fVFRNX0JPX1VUSUxfSF8KPiArCj4gKyNpbmNsdWRl IDxkcm0vdHRtL3R0bV9ib19kcml2ZXIuaD4KPiArc3RydWN0IGRtYV9idWZfbWFwOwo+ICtzdHJ1 Y3QgaW9fbWFwcGluZzsKPiArc3RydWN0IHNnX3RhYmxlOwo+ICtzdHJ1Y3Qgc2NhdHRlcmxpc3Q7 Cj4gKwo+ICtzdHJ1Y3QgdHRtX3R0Owo+ICtzdHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVyOwo+ICsK PiArLyoqCj4gKyAqIHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXJfb3BzIC0gT3BzIHN0cnVjdHVy ZSBmb3IgYSBzdHJ1Y3QKPiArICogaTkxNV90dG1fa21hcF9pdGVyLgo+ICsgKi8KPiArc3RydWN0 IGk5MTVfdHRtX2ttYXBfaXRlcl9vcHMgewo+ICsJLyoqCj4gKwkgKiBrbWFwX2xvY2FsIC0gTWFw IGEgUEFHRV9TSVpFIHBhcnQgb2YgdGhlIHJlc291cmNlIHVzaW5nCj4gKwkgKiBrbWFwX2xvY2Fs IHNlbWFudGljcy4KPiArCSAqIEByZXNfa21hcDogUG9pbnRlciB0byB0aGUgc3RydWN0IGk5MTVf dHRtX2ttYXBfaXRlciByZXByZXNlbnRpbmcKPiArCSAqIHRoZSByZXNvdXJjZS4KPiArCSAqIEBk bWFwOiBUaGUgc3RydWN0IGRtYV9idWZfbWFwIGhvbGRpbmcgdGhlIHZpcnR1YWwgYWRkcmVzcyBh ZnRlcgo+ICsJICogdGhlIG9wZXJhdGlvbi4KPiArCSAqIEBpOiBUaGUgbG9jYXRpb24gd2l0aGlu IHRoZSByZXNvdXJjZSB0byBtYXAuIFBBR0VfU0laRSBncmFudWxhcml0eS4KPiArCSAqLwo+ICsJ dm9pZCAoKmttYXBfbG9jYWwpKHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXIgKnJlc19rbWFwLAo+ ICsJCQkgICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKmRtYXAsIHBnb2ZmX3QgaSk7Cj4gK307Cj4gKwo+ ICsvKioKPiArICogc3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlciAtIEl0ZXJhdG9yIGZvciBrbWFw X2xvY2FsIHR5cGUgb3BlcmF0aW9ucyBvbiBhCj4gKyAqIHJlc291cmNlLgo+ICsgKiBAb3BzOiBQ b2ludGVyIHRvIHRoZSBvcGVyYXRpb25zIHN0cnVjdC4KPiArICoKPiArICogVGhpcyBzdHJ1Y3Qg aXMgaW50ZW5kZWQgdG8gYmUgZW1iZWRkZWQgaW4gYSByZXNvdXJjZS1zcGVjaWZpYyBzcGVjaWFs aXphdGlvbgo+ICsgKiBpbXBsZW1lbnRpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHJlc291cmNlLgo+ ICsgKgo+ICsgKiBOb3RoaW5nIHN0b3BzIHVzIGZyb20gZXh0ZW5kaW5nIHRoZSBvcGVyYXRpb25z IHRvIHZtYXAsIHZtYXBfcGZuIGV0YywKPiArICogcmVwbGFjaW5nIHNvbWUgb3IgcGFydHMgb2Yg dGhlIHR0bV9ib191dGlsLiBjcHUtbWFwIGZ1bmN0aW9uYWxpdHkuCj4gKyAqLwo+ICtzdHJ1Y3Qg aTkxNV90dG1fa21hcF9pdGVyIHsKPiArCWNvbnN0IHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXJf b3BzICpvcHM7Cj4gK307Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGk5MTVfdHRtX2ttYXBfaXRl cl90dCAtIFNwZWNpYWxpemF0aW9uIGZvciBhIHR0IChwYWdlKSBiYWNrZWQgc3RydWN0Cj4gKyAq IHR0bV9yZXNvdXJjZS4KPiArICogQGJhc2U6IEVtYmVkZGVkIHN0cnVjdCBpOTE1X3R0bV9rbWFw X2l0ZXIgcHJvdmlkaW5nIHRoZSB1c2FnZSBpbnRlcmZhY2UKPiArICogQHR0OiBDYWNoZWQgc3Ry dWN0IHR0bV90dC4KPiArICovCj4gK3N0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXJfdHQgewo+ICsJ c3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlciBiYXNlOwo+ICsJc3RydWN0IHR0bV90dCAqdHQ7Cj4g K307Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlcl9pb21hcCAtIFNw ZWNpYWxpemF0aW9uIGZvciBhIHN0cnVjdCBpb19tYXBwaW5nICsKPiArICogc3RydWN0IHNnX3Rh YmxlIGJhY2tlZCBzdHJ1Y3QgdHRtX3Jlc291cmNlLgo+ICsgKiBAYmFzZTogRW1iZWRkZWQgc3Ry dWN0IGk5MTVfdHRtX2ttYXBfaXRlciBwcm92aWRpbmcgdGhlIHVzYWdlIGludGVyZmFjZS4KPiAr ICogQGlvbWFwOiBzdHJ1Y3QgaW9fbWFwcGluZyByZXByZXNlbnRpbmcgdGhlIHVuZGVybHlpbmcg bGluZWFyIGlvX21lbW9yeS4KPiArICogQHN0OiBzZ190YWJsZSBpbnRvIEBpb21hcCwgcmVwcmVz ZW50aW5nIHRoZSBtZW1vcnkgb2YgdGhlIHN0cnVjdCB0dG1fcmVzb3VyY2UuCj4gKyAqIEBzdGFy dDogT2Zmc2V0IHRoYXQgbmVlZHMgdG8gYmUgc3VidHJhY3RlZCBmcm9tIEBzdCB0byBtYWtlCj4g KyAqIHNnX2RtYV9hZGRyZXNzKHN0LT5zZ2wpIC0gQHN0YXJ0ID09IDAgZm9yIEBpb21hcCBzdGFy dC4KPiArICogQGNhY2hlOiBTY2F0dGVybGlzdCB0cmF2ZXJzYWwgY2FjaGUgZm9yIGZhc3QgbG9v a3Vwcy4KPiArICogQGNhY2hlLnNnOiBQb2ludGVyIHRvIHRoZSBjdXJyZW50bHkgY2FjaGVkIHNj YXR0ZXJsaXN0IHNlZ21lbnQuCj4gKyAqIEBjYWNoZS5pOiBGaXJzdCBpbmRleCBvZiBAc2cuIFBB R0VfU0laRSBncmFudWxhcml0eS4KPiArICogQGNhY2hlLmVuZDogTGFzdCBpbmRleCArIDEgb2Yg QHNnLiBQQUdFX1NJWkUgZ3JhbnVsYXJpdHkuCj4gKyAqIEBjYWNoZS5vZmZzOiBGaXJzdCBvZmZz ZXQgaW50byBAaW9tYXAgb2YgQHNnLiBQQUdFX1NJWkUgZ3JhbnVsYXJpdHkuCj4gKyAqLwo+ICtz dHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVyX2lvbWFwIHsKPiArCXN0cnVjdCBpOTE1X3R0bV9rbWFw X2l0ZXIgYmFzZTsKPiArCXN0cnVjdCBpb19tYXBwaW5nICppb21hcDsKPiArCXN0cnVjdCBzZ190 YWJsZSAqc3Q7Cj4gKwlyZXNvdXJjZV9zaXplX3Qgc3RhcnQ7Cj4gKwlzdHJ1Y3Qgewo+ICsJCXN0 cnVjdCBzY2F0dGVybGlzdCAqc2c7Cj4gKwkJcGdvZmZfdCBpOwo+ICsJCXBnb2ZmX3QgZW5kOwo+ ICsJCXBnb2ZmX3Qgb2ZmczsKPiArCX0gY2FjaGU7Cj4gK307Cj4gKwo+ICtleHRlcm4gc3RydWN0 IGk5MTVfdHRtX2ttYXBfaXRlcl9vcHMgaTkxNV90dG1fa21hcF9pdGVyX3R0X29wczsKPiArZXh0 ZXJuIHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXJfb3BzIGk5MTVfdHRtX2ttYXBfaXRlcl9pb19v cHM7Cj4gKwo+ICsvKioKPiArICogaTkxNV90dG1fa21hcF9pdGVyX2lvbWFwX2luaXQgLSBJbml0 aWFsaXplIGEgc3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlcl9pb21hcAo+ICsgKiBAaXRlcl9pbzog VGhlIHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXJfaW9tYXAgdG8gaW5pdGlhbGl6ZS4KPiArICog QGlvbWFwOiBUaGUgc3RydWN0IGlvX21hcHBpbmcgcmVwcmVzZW50aW5nIHRoZSB1bmRlcmx5aW5n IGxpbmVhciBpb19tZW1vcnkuCj4gKyAqIEBzdDogc2dfdGFibGUgaW50byBAaW9tYXAsIHJlcHJl c2VudGluZyB0aGUgbWVtb3J5IG9mIHRoZSBzdHJ1Y3QKPiArICogdHRtX3Jlc291cmNlLgo+ICsg KiBAc3RhcnQ6IE9mZnNldCB0aGF0IG5lZWRzIHRvIGJlIHN1YnRyYWN0ZWQgZnJvbSBAc3QgdG8g bWFrZQo+ICsgKiBzZ19kbWFfYWRkcmVzcyhzdC0+c2dsKSAtIEBzdGFydCA9PSAwIGZvciBAaW9t YXAgc3RhcnQuCj4gKyAqCj4gKyAqIFJldHVybjogUG9pbnRlciB0byB0aGUgZW1iZWRkZWQgc3Ry dWN0IGk5MTVfdHRtX2ttYXBfaXRlci4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGk5 MTVfdHRtX2ttYXBfaXRlciAqCj4gK2k5MTVfdHRtX2ttYXBfaXRlcl9pb21hcF9pbml0KHN0cnVj dCBpOTE1X3R0bV9rbWFwX2l0ZXJfaW9tYXAgKml0ZXJfaW8sCj4gKwkJCSAgICAgIHN0cnVjdCBp b19tYXBwaW5nICppb21hcCwKPiArCQkJICAgICAgc3RydWN0IHNnX3RhYmxlICpzdCwKPiArCQkJ ICAgICAgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0KQo+ICt7Cj4gKwlpdGVyX2lvLT5iYXNlLm9wcyA9 ICZpOTE1X3R0bV9rbWFwX2l0ZXJfaW9fb3BzOwo+ICsJaXRlcl9pby0+aW9tYXAgPSBpb21hcDsK PiArCWl0ZXJfaW8tPnN0ID0gc3Q7Cj4gKwlpdGVyX2lvLT5zdGFydCA9IHN0YXJ0Owo+ICsJbWVt c2V0KCZpdGVyX2lvLT5jYWNoZSwgMCwgc2l6ZW9mKGl0ZXJfaW8tPmNhY2hlKSk7Cj4gKwlyZXR1 cm4gJml0ZXJfaW8tPmJhc2U7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiB0dG1fa21hcF9pdGVyX3R0 X2luaXQgLSBJbml0aWFsaXplIGEgc3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlcl90dAo+ICsgKiBA aXRlcl90dDogVGhlIHN0cnVjdCBpOTE1X3R0bV9rbWFwX2l0ZXJfdHQgdG8gaW5pdGlhbGl6ZS4K PiArICogQHR0OiBTdHJ1Y3QgdHRtX3R0IGhvbGRpbmcgcGFnZSBwb2ludGVycyBvZiB0aGUgc3Ry dWN0IHR0bV9yZXNvdXJjZS4KPiArICoKPiArICogUmV0dXJuOiBQb2ludGVyIHRvIHRoZSBlbWJl ZGRlZCBzdHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVyLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBz dHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVyICoKPiAraTkxNV90dG1fa21hcF9pdGVyX3R0X2luaXQo c3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlcl90dCAqaXRlcl90dCwKPiArCQkJICAgc3RydWN0IHR0 bV90dCAqdHQpCj4gK3sKPiArCWl0ZXJfdHQtPmJhc2Uub3BzID0gJmk5MTVfdHRtX2ttYXBfaXRl cl90dF9vcHM7Cj4gKwlpdGVyX3R0LT50dCA9IHR0Owo+ICsJcmV0dXJuICZpdGVyX3R0LT5iYXNl Owo+ICt9CgpEbyB0aGVyZSBmdW5jdGlvbnMgaGF2ZSBhIHZhbGlkICpwZXJmb3JtYW5jZSogcmVh c29uIHRvIGJlIGlubGluZT8gSQp0aGluayB0aGF0J3MgcHJldHR5IG11Y2ggdGhlIG9ubHkgdmFs aWQgcmVhc29uLgoKSGF2aW5nIHRoZXNlIGlubGluZSBmb3JjZXMgaTkxNV90dG1fa21hcF9pdGVy Xypfb3BzIGV4dGVybiwgYW5kIHRoZXkKc2hvdWxkIHJlYWxseSBiZSBzdGF0aWMuIElubGluZSBm dW5jdGlvbnMgY29tcGxpY2F0ZSBoZWFkZXIgZGVwZW5kZW5jaWVzCmFuZCBsZWFrIHRoZSBhYnN0 cmFjdGlvbnMuCgpCUiwKSmFuaS4KCgo+ICsKPiArdm9pZCBpOTE1X3R0bV9tb3ZlX21lbWNweShz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+ICsJCQkgIHN0cnVjdCB0dG1fcmVzb3VyY2Ug Km5ld19tZW0sCj4gKwkJCSAgc3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlciAqbmV3X2l0ZXIsCj4g KwkJCSAgc3RydWN0IGk5MTVfdHRtX2ttYXBfaXRlciAqb2xkX2l0ZXIpOwo+ICsjZW5kaWYKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYyBiL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX2JvLmMKPiBpbmRleCBjYTFiMDk4YjZhNTYuLjQ0NzljNTVhYWExZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3R0bS90dG1fYm8uYwo+IEBAIC0xMjIxLDMgKzEyMjEsNCBAQCB2b2lkIHR0bV9ib190dF9k ZXN0cm95KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pCj4gIAl0dG1fdHRfZGVzdHJveShi by0+YmRldiwgYm8tPnR0bSk7Cj4gIAliby0+dHRtID0gTlVMTDsKPiAgfQo+ICtFWFBPUlRfU1lN Qk9MKHR0bV9ib190dF9kZXN0cm95KTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3Vy Y2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=