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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 190AAF9EDC0 for ; Wed, 22 Apr 2026 12:26:22 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7FB1B10E9BC; Wed, 22 Apr 2026 12:26:21 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="TOv4xUDK"; dkim-atps=neutral Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) by gabe.freedesktop.org (Postfix) with ESMTPS id 30A0710E9BC for ; Wed, 22 Apr 2026 12:26:20 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1776860768; cv=none; d=zohomail.com; s=zohoarc; b=gY6JEYte0I3g/R6lO3UeOxDTl/CyfTSHWKJ9+NpRZ9SEYj1sebcmV0fYsWz/pBeZoF6v2UWFSZMhRPWEXSa4ZgyIPMFkqnNsgAJtrJltKo+a6lxt8H5Thkyex5wxoPkpP6R5G7qziueSpB6u7C9Yq+TNFqO7PAbyJriHn3ibJxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776860768; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=4aXDbZWW2lXopSUFtkem8C/FgiqTFnMbd07l4IZVzUU=; b=jTMoFK6aIBk24y3wyY8CkBswDg+dJ+vCmB3IbkRER9Jj7GyL1uyaGjPXKuU3IuEJeT1aM6OvcxCAo6rIfeueQLgN6qD7RxtVmLaqYbQhpYrQ87YdVALNLvcgly0lZJi3Sc3aK6FOdapsMQRVNqCmrwponn9XNxLHaMsBpFLC88s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1776860768; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To; bh=4aXDbZWW2lXopSUFtkem8C/FgiqTFnMbd07l4IZVzUU=; b=TOv4xUDKK7HxIWkfBD+87w8et7R7DsPqhKOgNtB4UprXkUpEghpZdGlvAqluP7K3 AjzZdBhUnahxhhMlGIDj7ovKuXG7XajvJ9GrXTZ9mPIm2koHGtPUtLaMOUc92eSkc39 Eh9kQVm3YzZbRfbB8W87kj3JPU2vEfcJF1lEYUaw= Received: by mx.zohomail.com with SMTPS id 1776860767653889.303288815062; Wed, 22 Apr 2026 05:26:07 -0700 (PDT) From: =?UTF-8?q?Adri=C3=A1n=20Larumbe?= To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Steven Price , Boris Brezillon , kernel@collabora.com, =?UTF-8?q?Adri=C3=A1n=20Larumbe?= , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Daniel Almeida , Alice Ryhl Subject: [PATCH v9 5/6] drm/panthor: Support sparse mappings Date: Wed, 22 Apr 2026 13:25:32 +0100 Message-ID: <20260422122538.3117380-6-adrian.larumbe@collabora.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260422122538.3117380-1-adrian.larumbe@collabora.com> References: <20260422122538.3117380-1-adrian.larumbe@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QWxsb3cgVU0gdG8gYmluZCBzcGFyc2VseSBwb3B1bGF0ZWQgbWVtb3J5IHJlZ2lvbnMgYnkgY3lj bGljYWxseSBtYXBwaW5nCnZpcnR1YWwgcmFuZ2VzIG92ZXIgYSBrZXJuZWwtYWxsb2NhdGVkIGR1 bW15IEJPLiBUaGlzIGFsdGVybmF0aXZlIGlzCnByZWZlcmFibGUgdG8gdGhlIG9sZCBtZXRob2Qg b2YgaGFuZGxpbmcgc3BhcnNlbmVzcyBpbiB0aGUgVU1ELCBiZWNhdXNlIGl0CnJlbGllZCBvbiB0 aGUgY3JlYXRpb24gb2YgYSBidWZmZXIgb2JqZWN0IHRvIHRoZSBzYW1lIGVuZCwgZGVzcGl0ZSB0 aGUgZmFjdApWdWxrYW4gc3BhcnNlIHJlc291cmNlcyBkb24ndCBuZWVkIHRvIGJlIGJhY2tlZCBi eSBhIGRyaXZlciBCTy4KClRoZSBjaG9pY2Ugb2YgYmFja2luZyBzcGFyc2VseS1ib3VuZCByZWdp b25zIHdpdGggYSBQYW5odG9yIEJPIHdhcyBtYWRlIHNvCmFzIHRvIHByb2ZpdCBmcm9tIHRoZSBl eGlzdGluZyBzaHJpbmtlciByZWNsYWltIGNvZGUuIFRoYXQgd2F5IG5vIHNwZWNpYWwKdHJlYXRt ZW50IG11c3QgYmUgZ2l2ZW4gdG8gdGhlIGR1bW15IHNwYXJzZSBCT3Mgd2hlbiByZWNsYWltaW5n IG1lbW9yeSwgYXMKd291bGQgYmUgdGhlIGNhc2UgaWYgd2UgaGFkIGNob3NlbiBhIHJhdyBrZXJu ZWwgcGFnZSBpbXBsZW1lbnRhdGlvbi4KCkEgbmV3IGR1bW15IEJPIGlzIGFsbG9jYXRlZCBwZXIg b3BlbiBmaWxlIGNvbnRleHQsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlClZ1bGthbiBzcGVjIG1h bmRhdGVzIHRoYXQgd3JpdGVzIGludG8gc3BhcnNlbHkgYm91bmQgcmVnaW9ucyBtdXN0IGJlCmRp c2NhcmRlZCwgb3VyIGltcGxlbWVudGF0aW9uIGlzIHN0aWxsIGEgd29ya2Fyb3VuZCBvdmVyIHRo ZSBmYWN0IE1hbGkgQ1NGCkdQVXMgY2Fubm90IHN1cHBvcnQgdGhpcyBiZWhhdmlvdXIgb24gdGhl IGhhcmR3YXJlIGxldmVsLCBzbyB3cml0ZXMgc3RpbGwKbWFrZSBpdCBpbnRvIHRoZSBiYWNraW5n IEJPLiBJZiB3ZSBoYWQgYSBnbG9iYWwgb25lLCB0aGVuIGl0IGNvdWxkIGJlIGEKdmVudWUgZm9y IGluZm9ybWF0aW9uIGxlYWtzIGJldHdlZW4gZmlsZSBjb250ZXh0cywgd2hpY2ggc2hvdWxkIG5l dmVyCmhhcHBlbiBpbiBEUk0uCgpSZXZpZXdlZC1ieTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5i cmV6aWxsb25AY29sbGFib3JhLmNvbT4KU2lnbmVkLW9mZi1ieTogQWRyacOhbiBMYXJ1bWJlIDxh ZHJpYW4ubGFydW1iZUBjb2xsYWJvcmEuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW50aG9y L3BhbnRob3JfZ2VtLmMgfCAgMTggKysrCiBkcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9y X2dlbS5oIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfbW11LmMgfCAx NzIgKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIGluY2x1ZGUvdWFwaS9kcm0vcGFudGhvcl9k cm0uaCAgICAgICAgfCAgMTIgKysKIDQgZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyks IDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3Bh bnRob3JfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCmluZGV4 IDY5Y2VmMDViNmVmNy4uODMzMTUzYzJiMDgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFudGhvci9wYW50aG9yX2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRo b3JfZ2VtLmMKQEAgLTEzNDUsNiArMTM0NSwyNCBAQCBwYW50aG9yX2tlcm5lbF9ib19jcmVhdGUo c3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldiwgc3RydWN0IHBhbnRob3Jfdm0gKnZtLAogCXJl dHVybiBFUlJfUFRSKHJldCk7CiB9CiAKKy8qKgorICogcGFudGhvcl9kdW1teV9ib19jcmVhdGUo KSAtIENyZWF0ZSBhIFBhbnRob3IgQk8gbWVhbnQgdG8gYmFjayBzcGFyc2UgYmluZGluZ3MuCisg KiBAcHRkZXY6IERldmljZS4KKyAqCisgKiBSZXR1cm46IEEgdmFsaWQgcG9pbnRlciBpbiBjYXNl IG9mIHN1Y2Nlc3MsIGFuIEVSUl9QVFIoKSBvdGhlcndpc2UuCisgKi8KK3N0cnVjdCBwYW50aG9y X2dlbV9vYmplY3QgKgorcGFudGhvcl9kdW1teV9ib19jcmVhdGUoc3RydWN0IHBhbnRob3JfZGV2 aWNlICpwdGRldikKK3sKKwkvKiBTaW5jZSBldmVuIHdoZW4gdGhlIERSTSBkZXZpY2UncyBtb3Vu dCBwb2ludCBoYXMgZW5hYmxlZCBUSFAgd2UgaGF2ZSBubyBndWFyYW50ZWUKKwkgKiB0aGF0IGRy bV9nZW1fZ2V0X3BhZ2VzKCkgd2lsbCByZXR1cm4gYSBzaW5nbGUgMk1pQiBQTUQsIGFuZCBhbHNv IHdlIGNhbm5vdCBiZSBzdXJlCisJICogdGhhdCB0aGUgMk1pQiB3b24ndCBiZSByZWNsYWltZWQg YW5kIHJlLWFsbG9jYXRlZCBsYXRlciBvbiBhcyA0S2lCIGNodW5rcywgaXQgZG9lc24ndAorCSAq IG1ha2Ugc2Vuc2UgdG8gcHJlLXBvcHVsYXRlIHRoaXMgb2JqZWN0J3MgcGFnZSBhcnJheSwgbm9y IHRvIGZhbGwgYmFjayBvbiBhIEJPIHNpemUKKwkgKiBvZiA0S2lCLiBTdGlja2luZyB0byBhIGR1 bW15IG9iamVjdCBzaXplIG9mIDJNaUIgbGV0cyB1cyBrZWVwIHRoaW5ncyBzaW1wbGUgZm9yIG5v dy4KKwkgKi8KKwlyZXR1cm4gcGFudGhvcl9nZW1fY3JlYXRlKCZwdGRldi0+YmFzZSwgU1pfMk0s IERSTV9QQU5USE9SX0JPX05PX01NQVAsIE5VTEwsIDApOworfQorCiBzdGF0aWMgYm9vbCBjYW5f c3dhcCh2b2lkKQogewogCXJldHVybiBnZXRfbnJfc3dhcF9wYWdlcygpID4gMDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmggYi9kcml2ZXJzL2dwdS9k cm0vcGFudGhvci9wYW50aG9yX2dlbS5oCmluZGV4IGFlMDQ5MWQwYjEyMS4uODYzOWMyZmEwOGU2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmgKQEAgLTMxNSw2ICszMTUsOCBA QCBwYW50aG9yX2tlcm5lbF9ib19jcmVhdGUoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldiwg c3RydWN0IHBhbnRob3Jfdm0gKnZtLAogCiB2b2lkIHBhbnRob3Jfa2VybmVsX2JvX2Rlc3Ryb3ko c3RydWN0IHBhbnRob3Jfa2VybmVsX2JvICpibyk7CiAKK3N0cnVjdCBwYW50aG9yX2dlbV9vYmpl Y3QgKnBhbnRob3JfZHVtbXlfYm9fY3JlYXRlKHN0cnVjdCBwYW50aG9yX2RldmljZSAqcHRkZXYp OworCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIHBhbnRob3JfZ2VtX2RlYnVnZnNfaW5p dChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9wYW50aG9yL3BhbnRob3JfbW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9w YW50aG9yX21tdS5jCmluZGV4IDU0ZjdmN2E4ZDQ0Zi4uN2I5MTgzNmU2MDhkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX21tdS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9wYW50aG9yL3BhbnRob3JfbW11LmMKQEAgLTExMiw2ICsxMTIsMTcgQEAgc3RydWN0IHBh bnRob3JfbW11IHsKIHN0cnVjdCBwYW50aG9yX3ZtX3Bvb2wgewogCS8qKiBAeGE6IEFycmF5IHVz ZWQgZm9yIFZNIGhhbmRsZSB0cmFja2luZy4gKi8KIAlzdHJ1Y3QgeGFycmF5IHhhOworCisJLyoq CisJICogQGR1bW15OiBEdW1teSBvYmplY3QgdXNlZCBmb3Igc3BhcnNlIG1hcHBpbmdzCisJICoK KwkgKiBTcGFyc2UgYmluZGluZ3MgbWFwIHZpcnR1YWwgYWRkcmVzcyByYW5nZXMgb250byBhIGR1 bW15CisJICogQk8gaW4gYSBtb2R1bG8gZmFzaGlvbi4gRXZlbiB0aG91Z2ggc3BhcnNlIHdyaXRl cyBhcmUgbWVhbnQKKwkgKiB0byBiZSBkaXNjYXJkZWQgYW5kIHJlYWRzIHVuZGVmaW5lZCwgd3Jp dGVzIGFyZSBzdGlsbCByZWZsZWN0ZWQKKwkgKiBpbiB0aGUgZHVtbXkgYnVmZmVyLiBUaGF0IG1l YW5zIHdlIG11c3Qga2VlcCBhIGR1bW15IG9iamVjdCBwZXIKKwkgKiBmaWxlIGNvbnRleHQsIHRv IGF2b2lkIGRhdGEgbGVha3MgYmV0d2VlbiB0aGVtLgorCSAqLworCXN0cnVjdCBwYW50aG9yX2dl bV9vYmplY3QgKmR1bW15OwogfTsKIAogLyoqCkBAIC0zOTEsNiArNDAyLDE2IEBAIHN0cnVjdCBw YW50aG9yX3ZtIHsKIAkJICovCiAJCXN0cnVjdCBsaXN0X2hlYWQgbHJ1X25vZGU7CiAJfSByZWNs YWltOworCisJLyoqCisJICogQGR1bW15OiBEdW1teSBvYmplY3QgdXNlZCBmb3Igc3BhcnNlIG1h cHBpbmdzLgorCSAqCisJICogVk0ncyBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGZpbGUg Y29udGV4dC13aWRlIGR1bW15IEJPIGJlY2F1c2UKKwkgKiB0aGV5IGNhbiBvdXRsaXZlIHRoZSBm aWxlIGNvbnRleHQsIHdoaWNoIGluY2x1ZGVzIHRoZSBWTSBwb29sIGhvbGRpbmcKKwkgKiB0aGUg b3JpZ2luYWwgZHVtbXkgQk8gcmVmZXJlbmNlLgorCSAqCisJICovCisJc3RydWN0IHBhbnRob3Jf Z2VtX29iamVjdCAqZHVtbXk7CiB9OwogCiAvKioKQEAgLTEwMjAsNiArMTA0MSw0NSBAQCBwYW50 aG9yX3ZtX21hcF9wYWdlcyhzdHJ1Y3QgcGFudGhvcl92bSAqdm0sIHU2NCBpb3ZhLCBpbnQgcHJv dCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorcGFudGhvcl92bV9tYXBfc3BhcnNlKHN0 cnVjdCBwYW50aG9yX3ZtICp2bSwgdTY0IGlvdmEsIGludCBwcm90LAorCQkgICAgICBzdHJ1Y3Qg c2dfdGFibGUgKnNndCwgdTY0IHNpemUpCit7CisJdTY0IHN0YXJ0X2lvdmEgPSBpb3ZhOworCWlu dCByZXQ7CisKKwlpZiAoaW92YSAmIChTWl8yTSAtIDEpKSB7CisJCXU2NCB1bmFsaWduZWRfc2l6 ZSA9IG1pbihBTElHTihpb3ZhLCBTWl8yTSkgLSBpb3ZhLCBzaXplKTsKKworCQlyZXQgPSBwYW50 aG9yX3ZtX21hcF9wYWdlcyh2bSwgaW92YSwgcHJvdCwgc2d0LAorCQkJCQkgICAwLCB1bmFsaWdu ZWRfc2l6ZSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXNpemUgLT0gdW5hbGln bmVkX3NpemU7CisJCWlvdmEgKz0gdW5hbGlnbmVkX3NpemU7CisJfQorCisJLyogVE9ETzogd2Ug c2hvdWxkIHByb2JhYmx5IG9wdGltaXplIHRoaXMgYXQgdGhlIGlvX3BndGFibGUgbGV2ZWwuICov CisJd2hpbGUgKHNpemUgPiAwKSB7CisJCXU2NCBuZXh0X3NpemUgPSBtaW4oc2l6ZSwgc2dfZG1h X2xlbihzZ3QtPnNnbCkpOworCisJCXJldCA9IHBhbnRob3Jfdm1fbWFwX3BhZ2VzKHZtLCBpb3Zh LCBwcm90LAorCQkJCQkgICBzZ3QsIDAsIG5leHRfc2l6ZSk7CisJCWlmIChyZXQpCisJCQlnb3Rv IGVycl91bm1hcDsKKworCQlzaXplIC09IG5leHRfc2l6ZTsKKwkJaW92YSArPSBuZXh0X3NpemU7 CisJfQorCisJcmV0dXJuIDA7CisKK2Vycl91bm1hcDoKKwlwYW50aG9yX3ZtX3VubWFwX3BhZ2Vz KHZtLCBzdGFydF9pb3ZhLCBpb3ZhIC0gc3RhcnRfaW92YSk7CisJcmV0dXJuIHJldDsKK30KKwog c3RhdGljIGludCBmbGFnc190b19wcm90KHUzMiBmbGFncykKIHsKIAlpbnQgcHJvdCA9IDA7CkBA IC0xMjYyLDYgKzEzMjIsNyBAQCBzdGF0aWMgaW50IHBhbnRob3Jfdm1fb3BfY3R4X3ByZWFsbG9j X3B0cyhzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHggKm9wX2N0eCkKIAkoRFJNX1BBTlRIT1JfVk1f QklORF9PUF9NQVBfUkVBRE9OTFkgfCBcCiAJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05P RVhFQyB8IFwKIAkgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfVU5DQUNIRUQgfCBcCisJIERS TV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJTRSB8IFwKIAkgRFJNX1BBTlRIT1JfVk1fQklO RF9PUF9UWVBFX01BU0spCiAKIHN0YXRpYyBpbnQgcGFudGhvcl92bV9wcmVwYXJlX21hcF9vcF9j dHgoc3RydWN0IHBhbnRob3Jfdm1fb3BfY3R4ICpvcF9jdHgsCkBAIC0xMjY5LDYgKzEzMzAsNyBA QCBzdGF0aWMgaW50IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KHN0cnVjdCBwYW50aG9y X3ZtX29wX2N0eCAqb3BfY3R4LAogCQkJCQkgc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8s CiAJCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX3BhbnRob3Jfdm1fYmluZF9vcCAqb3ApCiB7CisJYm9v bCBpc19zcGFyc2UgPSBvcC0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFS U0U7CiAJc3RydWN0IGRybV9ncHV2bV9ibyAqcHJlYWxsb2NhdGVkX3ZtX2JvOwogCXN0cnVjdCBz Z190YWJsZSAqc2d0ID0gTlVMTDsKIAlpbnQgcmV0OwpAQCAtMTI4MCw4ICsxMzQyLDIxIEBAIHN0 YXRpYyBpbnQgcGFudGhvcl92bV9wcmVwYXJlX21hcF9vcF9jdHgoc3RydWN0IHBhbnRob3Jfdm1f b3BfY3R4ICpvcF9jdHgsCiAJICAgIChvcC0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09Q X1RZUEVfTUFTSykgIT0gRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBFX01BUCkKIAkJcmV0dXJu IC1FSU5WQUw7CiAKLQkvKiBNYWtlIHN1cmUgdGhlIFZBIGFuZCBzaXplIGFyZSBpbi1ib3VuZHMu ICovCi0JaWYgKG9wLT5zaXplID4gYm8tPmJhc2Uuc2l6ZSB8fCBvcC0+Ym9fb2Zmc2V0ID4gYm8t PmJhc2Uuc2l6ZSAtIG9wLT5zaXplKQorCS8qIHVBUEkgbWFuZGF0ZXMgc3BhcnNlbHkgYm91bmQg cmVnaW9ucyBtdXN0IG5vdCBiZSBleGVjdXRhYmxlLiAqLworCWlmIChpc19zcGFyc2UgJiYgIShv cC0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9OT0VYRUMpKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCS8qIEZvciBub24tc3BhcnNlLCBtYWtlIHN1cmUgdGhlIFZBIGFuZCBzaXpl IGFyZSBpbi1ib3VuZHMuCisJICogRm9yIHNwYXJzZSwgdGhpcyBpcyBub3QgYXBwbGljYWJsZSwg YmVjYXVzZSB0aGUgZHVtbXkgQk8gaXMKKwkgKiByZXBlYXRlZGx5IG1hcHBlZCBvdmVyIGEgcG90 ZW50aWFsbHkgd2lkZXIgVkEgcmFuZ2UuCisJICovCisJaWYgKCFpc19zcGFyc2UgJiYgKG9wLT5z aXplID4gYm8tPmJhc2Uuc2l6ZSB8fCBvcC0+Ym9fb2Zmc2V0ID4gYm8tPmJhc2Uuc2l6ZSAtIG9w LT5zaXplKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBGb3Igc3BhcnNlLCB3ZSBkb24ndCBl eHBlY3QgYW55IHVzZXIgQk8sIHRoZSBCTyB3ZSBnZXQgcGFzc2VkCisJICogaXMgdGhlIGR1bW15 IEJPIGF0dGFjaGVkIHRvIHRoZSBWTSBwb29sLgorCSAqLworCWlmIChpc19zcGFyc2UgJiYgKG9w LT5ib19oYW5kbGUgfHwgb3AtPmJvX29mZnNldCkpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJLyog SWYgdGhlIEJPIGhhcyBhbiBleGNsdXNpdmUgVk0gYXR0YWNoZWQsIGl0IGNhbid0IGJlIG1hcHBl ZCB0byBvdGhlciBWTXMuICovCkBAIC0xNTQzLDYgKzE2MTgsOSBAQCBpbnQgcGFudGhvcl92bV9w b29sX2NyZWF0ZV92bShzdHJ1Y3QgcGFudGhvcl9kZXZpY2UgKnB0ZGV2LAogCQlyZXR1cm4gcmV0 OwogCX0KIAorCWRybV9nZW1fb2JqZWN0X2dldCgmcG9vbC0+ZHVtbXktPmJhc2UpOworCXZtLT5k dW1teSA9IHBvb2wtPmR1bW15OworCiAJYXJncy0+dXNlcl92YV9yYW5nZSA9IGtlcm5lbF92YV9z dGFydDsKIAlyZXR1cm4gaWQ7CiB9CkBAIC0xNjM0LDYgKzE3MTIsNyBAQCB2b2lkIHBhbnRob3Jf dm1fcG9vbF9kZXN0cm95KHN0cnVjdCBwYW50aG9yX2ZpbGUgKnBmaWxlKQogCXhhX2Zvcl9lYWNo KCZwZmlsZS0+dm1zLT54YSwgaSwgdm0pCiAJCXBhbnRob3Jfdm1fZGVzdHJveSh2bSk7CiAKKwlk cm1fZ2VtX29iamVjdF9wdXQoJnBmaWxlLT52bXMtPmR1bW15LT5iYXNlKTsKIAl4YV9kZXN0cm95 KCZwZmlsZS0+dm1zLT54YSk7CiAJa2ZyZWUocGZpbGUtPnZtcyk7CiB9CkBAIC0xNjUxLDYgKzE3 MzAsMTEgQEAgaW50IHBhbnRob3Jfdm1fcG9vbF9jcmVhdGUoc3RydWN0IHBhbnRob3JfZmlsZSAq cGZpbGUpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJeGFfaW5pdF9mbGFncygmcGZpbGUtPnZtcy0+ eGEsIFhBX0ZMQUdTX0FMTE9DMSk7CisKKwlwZmlsZS0+dm1zLT5kdW1teSA9IHBhbnRob3JfZHVt bXlfYm9fY3JlYXRlKHBmaWxlLT5wdGRldik7CisJaWYgKElTX0VSUihwZmlsZS0+dm1zLT5kdW1t eSkpCisJCXJldHVybiBQVFJfRVJSKHBmaWxlLT52bXMtPmR1bW15KTsKKwogCXJldHVybiAwOwog fQogCkBAIC0xOTY4LDYgKzIwNTIsOSBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX3ZtX2ZyZWUoc3Ry dWN0IGRybV9ncHV2bSAqZ3B1dm0pCiAKIAlmcmVlX2lvX3BndGFibGVfb3BzKHZtLT5wZ3RibF9v cHMpOwogCisJaWYgKHZtLT5kdW1teSkKKwkJZHJtX2dlbV9vYmplY3RfcHV0KCZ2bS0+ZHVtbXkt PmJhc2UpOworCiAJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0pOwogCWtmcmVlKHZtKTsKIH0KQEAg LTIxMjcsNyArMjIxNCwyMyBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX3ZtYV9pbml0KHN0cnVjdCBw YW50aG9yX3ZtYSAqdm1hLCB1MzIgZmxhZ3MpCiAjZGVmaW5lIFBBTlRIT1JfVk1fTUFQX0ZMQUdT IFwKIAkoRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfUkVBRE9OTFkgfCBcCiAJIERSTV9QQU5U SE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyB8IFwKLQkgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9N QVBfVU5DQUNIRUQpCisJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1VOQ0FDSEVEIHwgXAor CSBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpCisKK3N0YXRpYyBpbnQKK3BhbnRo b3Jfdm1fZXhlY19tYXBfb3Aoc3RydWN0IHBhbnRob3Jfdm0gKnZtLCB1MzIgZmxhZ3MsCisJCSAg ICAgICBjb25zdCBzdHJ1Y3QgZHJtX2dwdXZhX29wX21hcCAqb3ApCit7CisJc3RydWN0IHBhbnRo b3JfZ2VtX29iamVjdCAqYm8gPSB0b19wYW50aG9yX2JvKG9wLT5nZW0ub2JqKTsKKwlpbnQgcHJv dCA9IGZsYWdzX3RvX3Byb3QoZmxhZ3MpOworCisJaWYgKGZsYWdzICYgRFJNX1BBTlRIT1JfVk1f QklORF9PUF9NQVBfU1BBUlNFKQorCQlyZXR1cm4gcGFudGhvcl92bV9tYXBfc3BhcnNlKHZtLCBv cC0+dmEuYWRkciwgcHJvdCwKKwkJCQkJICAgICBiby0+ZG1hcC5zZ3QsIG9wLT52YS5yYW5nZSk7 CisKKwlyZXR1cm4gcGFudGhvcl92bV9tYXBfcGFnZXModm0sIG9wLT52YS5hZGRyLCBwcm90LCBi by0+ZG1hcC5zZ3QsCisJCQkJICAgIG9wLT5nZW0ub2Zmc2V0LCBvcC0+dmEucmFuZ2UpOworfQog CiBzdGF0aWMgaW50IHBhbnRob3JfZ3B1dmFfc21fc3RlcF9tYXAoc3RydWN0IGRybV9ncHV2YV9v cCAqb3AsIHZvaWQgKnByaXYpCiB7CkBAIC0yMTQxLDkgKzIyNDQsNyBAQCBzdGF0aWMgaW50IHBh bnRob3JfZ3B1dmFfc21fc3RlcF9tYXAoc3RydWN0IGRybV9ncHV2YV9vcCAqb3AsIHZvaWQgKnBy aXYpCiAKIAlwYW50aG9yX3ZtYV9pbml0KHZtYSwgb3BfY3R4LT5mbGFncyAmIFBBTlRIT1JfVk1f TUFQX0ZMQUdTKTsKIAotCXJldCA9IHBhbnRob3Jfdm1fbWFwX3BhZ2VzKHZtLCBvcC0+bWFwLnZh LmFkZHIsIGZsYWdzX3RvX3Byb3Qodm1hLT5mbGFncyksCi0JCQkJICAgb3BfY3R4LT5tYXAuYm8t PmRtYXAuc2d0LCBvcC0+bWFwLmdlbS5vZmZzZXQsCi0JCQkJICAgb3AtPm1hcC52YS5yYW5nZSk7 CisJcmV0ID0gcGFudGhvcl92bV9leGVjX21hcF9vcCh2bSwgdm1hLT5mbGFncywgJm9wLT5tYXAp OwogCWlmIChyZXQpIHsKIAkJcGFudGhvcl92bV9vcF9jdHhfcmV0dXJuX3ZtYShvcF9jdHgsIHZt YSk7CiAJCXJldHVybiByZXQ7CkBAIC0yMTU5LDEzICsyMjYwLDE2IEBAIHN0YXRpYyBpbnQgcGFu dGhvcl9ncHV2YV9zbV9zdGVwX21hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwgdm9pZCAqcHJp dikKIH0KIAogc3RhdGljIGJvb2wKLWlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShzdHJ1Y3QgZHJt X2dwdXZhX29wX21hcCAqb3AsIHU2NCBhZGRyKQoraW92YV9tYXBwZWRfYXNfaHVnZV9wYWdlKHN0 cnVjdCBkcm1fZ3B1dmFfb3BfbWFwICpvcCwgdTY0IGFkZHIsIGJvb2wgaXNfc3BhcnNlKQogewog CXN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmJvID0gdG9fcGFudGhvcl9ibyhvcC0+Z2VtLm9i aik7CiAJY29uc3Qgc3RydWN0IHBhZ2UgKnBnOwogCXBnb2ZmX3QgYm9fb2Zmc2V0OwogCi0JYm9f b2Zmc2V0ID0gYWRkciAtIG9wLT52YS5hZGRyICsgb3AtPmdlbS5vZmZzZXQ7CisJLyogUGVyLVZN IER1bW15IEJPIGluIHNwYXJzZSBtYXBwaW5ncyBpcyBhbHdheXMgMk1pQiwgc28gY2hlY2tpbmcg dGhlCisJICogc2l6ZSBvZiB0aGUgdmVyeSBmaXJzdCBwYWdlIGlzIGVub3VnaC4KKwkgKi8KKwli b19vZmZzZXQgPSAhaXNfc3BhcnNlID8gYWRkciAtIG9wLT52YS5hZGRyICsgb3AtPmdlbS5vZmZz ZXQgOiAwOwogCXBnID0gYm8tPmJhY2tpbmcucGFnZXNbYm9fb2Zmc2V0ID4+IFBBR0VfU0hJRlRd OwogCiAJcmV0dXJuIGZvbGlvX3NpemUocGFnZV9mb2xpbyhwZykpID49IFNaXzJNOwpAQCAtMjE3 NSw2ICsyMjc5LDggQEAgc3RhdGljIHZvaWQKIHVubWFwX2h1Z2VwYWdlX2FsaWduKGNvbnN0IHN0 cnVjdCBkcm1fZ3B1dmFfb3BfcmVtYXAgKm9wLAogCQkgICAgIHU2NCAqdW5tYXBfc3RhcnQsIHU2 NCAqdW5tYXBfcmFuZ2UpCiB7CisJc3RydWN0IHBhbnRob3Jfdm1hICp1bm1hcF92bWEgPSBjb250 YWluZXJfb2Yob3AtPnVubWFwLT52YSwgc3RydWN0IHBhbnRob3Jfdm1hLCBiYXNlKTsKKwlib29s IGlzX3NwYXJzZSA9IHVubWFwX3ZtYS0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01B UF9TUEFSU0U7CiAJdTY0IGFsaWduZWRfdW5tYXBfc3RhcnQsIGFsaWduZWRfdW5tYXBfZW5kLCB1 bm1hcF9lbmQ7CiAKIAl1bm1hcF9lbmQgPSAqdW5tYXBfc3RhcnQgKyAqdW5tYXBfcmFuZ2U7CkBA IC0yMTg2LDcgKzIyOTIsNyBAQCB1bm1hcF9odWdlcGFnZV9hbGlnbihjb25zdCBzdHJ1Y3QgZHJt X2dwdXZhX29wX3JlbWFwICpvcCwKIAkgKi8KIAlpZiAob3AtPnByZXYgJiYgYWxpZ25lZF91bm1h cF9zdGFydCA8ICp1bm1hcF9zdGFydCAmJgogCSAgICBvcC0+cHJldi0+dmEuYWRkciA8PSBhbGln bmVkX3VubWFwX3N0YXJ0ICYmCi0JICAgIGlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShvcC0+cHJl diwgKnVubWFwX3N0YXJ0KSkgeworCSAgICAoaW92YV9tYXBwZWRfYXNfaHVnZV9wYWdlKG9wLT5w cmV2LCAqdW5tYXBfc3RhcnQsIGlzX3NwYXJzZSkpKSB7CiAJCSp1bm1hcF9yYW5nZSArPSAqdW5t YXBfc3RhcnQgLSBhbGlnbmVkX3VubWFwX3N0YXJ0OwogCQkqdW5tYXBfc3RhcnQgPSBhbGlnbmVk X3VubWFwX3N0YXJ0OwogCX0KQEAgLTIxOTYsNyArMjMwMiw3IEBAIHVubWFwX2h1Z2VwYWdlX2Fs aWduKGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfcmVtYXAgKm9wLAogCSAqLwogCWlmIChvcC0+ bmV4dCAmJiBhbGlnbmVkX3VubWFwX2VuZCA+IHVubWFwX2VuZCAmJgogCSAgICBvcC0+bmV4dC0+ dmEuYWRkciArIG9wLT5uZXh0LT52YS5yYW5nZSA+PSBhbGlnbmVkX3VubWFwX2VuZCAmJgotCSAg ICBpb3ZhX21hcHBlZF9hc19odWdlX3BhZ2Uob3AtPm5leHQsIHVubWFwX2VuZCAtIDEpKSB7CisJ ICAgIChpb3ZhX21hcHBlZF9hc19odWdlX3BhZ2Uob3AtPm5leHQsICp1bm1hcF9zdGFydCwgaXNf c3BhcnNlKSkpIHsKIAkJKnVubWFwX3JhbmdlICs9IGFsaWduZWRfdW5tYXBfZW5kIC0gdW5tYXBf ZW5kOwogCX0KIH0KQEAgLTIyMzEsMTUgKzIzMzcsMjcgQEAgc3RhdGljIGludCBwYW50aG9yX2dw dXZhX3NtX3N0ZXBfcmVtYXAoc3RydWN0IGRybV9ncHV2YV9vcCAqb3AsCiAJCXBhbnRob3Jfdm1f dW5tYXBfcGFnZXModm0sIHVubWFwX3N0YXJ0LCB1bm1hcF9yYW5nZSk7CiAJfQogCisJLyogSW4g dGhlIGZvbGxvd2luZyB0d28gYnJhbmNoZXMsIG5laXRoZXIgcmVtYXA6OnVubWFwOjpvZmZzZXQg bm9yIHJlbWFwOjp1bm1hcDo6a2VlcAorCSAqIGNhbiBiZSB0cnVzdGVkIHRvIGNvbnRhaW4gbGVn aXRpbWF0ZSB2YWx1ZXMgaW4gdGhlIGNhc2Ugb2Ygc3BhcnNlIG1hcHBpbmdzLCBiZWNhdXNlCisJ ICogdGhlIGRybV9ncHV2bSBjb3JlIGNhbGN1bGF0ZXMgdGhlbSBvbiB0aGUgYXNzdW1wdGlvbiB0 aGF0IGEgVk1fQklORCBvcGVyYXRpb24ncworCSAqIHJhbmdlIGlzIGFsd2F5cyBsZXNzIHRoYW4g dGhlIHRhcmdldCBCTy4gVGhhdCBkb2Vzbid0IGhvbGQgaW4gdGhlIGNhc2Ugb2Ygc3BhcnNlCisJ ICogYmluZGluZ3MsIGJ1dCB3ZSBkb24ndCBjYXJlIHRvIGFkanVzdCB0aGUgQk8gb2Zmc2V0IG9m IG5ldyBWQSdzIHNwYXduZWQgYnkgYSByZW1hcAorCSAqIG9wZXJhdGlvbiBiZWNhdXNlIHdlIGln bm9yZSB0aGVtIGFsdG9nZXRoZXIgd2hlbiBzcGFyc2UtbWFwcGluZyBwYWdlcyBvbiBhIEhXIGxl dmVsCisJICoganVzdCBmdXJ0aGVyIGJlbG93LiBJZiB3ZSBldmVyIHdhbnRlZCB0byBtYWtlIHVz ZSBvZiByZW1hcDo6dW5tYXA6OmtlZXAsIHRoZW4gdGhpcworCSAqIGxvZ2ljIHdvdWxkIGhhdmUg dG8gYmUgcmV3b3JrZWQuCisJICovCiAJaWYgKG9wLT5yZW1hcC5wcmV2KSB7Ci0JCXN0cnVjdCBw YW50aG9yX2dlbV9vYmplY3QgKmJvID0gdG9fcGFudGhvcl9ibyhvcC0+cmVtYXAucHJldi0+Z2Vt Lm9iaik7CiAJCXU2NCBvZmZzZXQgPSBvcC0+cmVtYXAucHJldi0+Z2VtLm9mZnNldCArIHVubWFw X3N0YXJ0IC0gb3AtPnJlbWFwLnByZXYtPnZhLmFkZHI7CiAJCXU2NCBzaXplID0gb3AtPnJlbWFw LnByZXYtPnZhLmFkZHIgKyBvcC0+cmVtYXAucHJldi0+dmEucmFuZ2UgLSB1bm1hcF9zdGFydDsK KwkJY29uc3Qgc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgbWFwX29wID0geworCQkJLnZhLmFkZHIg PSB1bm1hcF9zdGFydCwKKwkJCS52YS5yYW5nZSA9IHNpemUsCisJCQkuZ2VtLm9iaiA9IG9wLT5y ZW1hcC5wcmV2LT5nZW0ub2JqLAorCQkJLmdlbS5vZmZzZXQgPSBvZmZzZXQsCisJCX07CiAKLQkJ aWYgKCF1bm1hcF92bWEtPmV2aWN0ZWQpIHsKLQkJCXJldCA9IHBhbnRob3Jfdm1fbWFwX3BhZ2Vz KHZtLCB1bm1hcF9zdGFydCwKLQkJCQkJCSAgIGZsYWdzX3RvX3Byb3QodW5tYXBfdm1hLT5mbGFn cyksCi0JCQkJCQkgICBiby0+ZG1hcC5zZ3QsIG9mZnNldCwgc2l6ZSk7CisJCWlmICghdW5tYXBf dm1hLT5ldmljdGVkICYmIHNpemUgPiAwKSB7CisJCQlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFw X29wKHZtLCB1bm1hcF92bWEtPmZsYWdzLCAmbWFwX29wKTsKIAkJCWlmIChyZXQpCiAJCQkJcmV0 dXJuIHJldDsKIAkJfQpAQCAtMjI1MCwxNCArMjM2OCwxNyBAQCBzdGF0aWMgaW50IHBhbnRob3Jf Z3B1dmFfc21fc3RlcF9yZW1hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwKIAl9CiAKIAlpZiAo b3AtPnJlbWFwLm5leHQpIHsKLQkJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8gPSB0b19w YW50aG9yX2JvKG9wLT5yZW1hcC5uZXh0LT5nZW0ub2JqKTsKIAkJdTY0IGFkZHIgPSBvcC0+cmVt YXAubmV4dC0+dmEuYWRkcjsKIAkJdTY0IHNpemUgPSB1bm1hcF9zdGFydCArIHVubWFwX3Jhbmdl IC0gb3AtPnJlbWFwLm5leHQtPnZhLmFkZHI7CisJCWNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3Bf bWFwIG1hcF9vcCA9IHsKKwkJCS52YS5hZGRyID0gYWRkciwKKwkJCS52YS5yYW5nZSA9IHNpemUs CisJCQkuZ2VtLm9iaiA9IG9wLT5yZW1hcC5uZXh0LT5nZW0ub2JqLAorCQkJLmdlbS5vZmZzZXQg PSBvcC0+cmVtYXAubmV4dC0+Z2VtLm9mZnNldCwKKwkJfTsKIAotCQlpZiAoIXVubWFwX3ZtYS0+ ZXZpY3RlZCkgewotCQkJcmV0ID0gcGFudGhvcl92bV9tYXBfcGFnZXModm0sIGFkZHIsIGZsYWdz X3RvX3Byb3QodW5tYXBfdm1hLT5mbGFncyksCi0JCQkJCQkgICBiby0+ZG1hcC5zZ3QsIG9wLT5y ZW1hcC5uZXh0LT5nZW0ub2Zmc2V0LAotCQkJCQkJICAgc2l6ZSk7CisJCWlmICghdW5tYXBfdm1h LT5ldmljdGVkICYmIHNpemUgPiAwKSB7CisJCQlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29w KHZtLCB1bm1hcF92bWEtPmZsYWdzLCAmbWFwX29wKTsKIAkJCWlmIChyZXQpCiAJCQkJcmV0dXJu IHJldDsKIAkJfQpAQCAtMjgxNyw3ICsyOTM4LDEzIEBAIHBhbnRob3Jfdm1fYmluZF9wcmVwYXJl X29wX2N0eChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAKIAlzd2l0Y2ggKG9wLT5mbGFncyAmIERS TV9QQU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVNLKSB7CiAJY2FzZSBEUk1fUEFOVEhPUl9WTV9C SU5EX09QX1RZUEVfTUFQOgotCQlnZW0gPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgb3At PmJvX2hhbmRsZSk7CisJCWlmICghKG9wLT5mbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1Bf TUFQX1NQQVJTRSkpIHsKKwkJCWdlbSA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBvcC0+ Ym9faGFuZGxlKTsKKwkJfSBlbHNlIHsKKwkJCWdlbSA9ICZ2bS0+ZHVtbXktPmJhc2U7CisJCQlk cm1fZ2VtX29iamVjdF9nZXQoJnZtLT5kdW1teS0+YmFzZSk7CisJCX0KKwogCQlyZXQgPSBwYW50 aG9yX3ZtX3ByZXBhcmVfbWFwX29wX2N0eChvcF9jdHgsIHZtLAogCQkJCQkJICAgIGdlbSA/IHRv X3BhbnRob3JfYm8oZ2VtKSA6IE5VTEwsCiAJCQkJCQkgICAgb3ApOwpAQCAtMzAyNSw2ICszMTUy LDkgQEAgaW50IHBhbnRob3Jfdm1fbWFwX2JvX3JhbmdlKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwg c3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8KIAlzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHgg b3BfY3R4OwogCWludCByZXQ7CiAKKwlpZiAoZHJtX1dBUk5fT04oJnZtLT5wdGRldi0+YmFzZSwg ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpKQorCQlyZXR1cm4gLUVJ TlZBTDsKKwogCXJldCA9IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KCZvcF9jdHgsIHZt LCBibywgJm9wKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2RybS9wYW50aG9yX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5o CmluZGV4IDQyYzkwMWViZGI3YS4uMTQ5MGEyMjIzNzY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Vh cGkvZHJtL3BhbnRob3JfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5o CkBAIC02MTQsNiArNjE0LDE4IEBAIGVudW0gZHJtX3BhbnRob3Jfdm1fYmluZF9vcF9mbGFncyB7 CiAJICovCiAJRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfVU5DQUNIRUQgPSAxIDw8IDIsCiAK KwkvKioKKwkgKiBARFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFOiBTcGFyc2VseSBt YXAgYSB2aXJ0dWFsIG1lbW9yeSByYW5nZQorCSAqCisJICogT25seSB2YWxpZCB3aXRoIERSTV9Q QU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVAuCisJICoKKwkgKiBXaGVuIHRoaXMgZmxhZyBpcyBz ZXQsIHRoZSB3aG9sZSB2bV9iaW5kIHJhbmdlIGlzIG1hcHBlZCBvdmVyIGEgZHVtbXkgb2JqZWN0 IGluIGEgY3ljbGljCisJICogZmFzaGlvbiwgYW5kIGFsbCBHUFUgcmVhZHMgZnJvbSBhZGRyZXNz ZXMgaW4gdGhlIHJhbmdlIHJldHVybiB1bmRlZmluZWQgdmFsdWVzLiBUaGlzIGZsYWcKKwkgKiBi ZWluZyBzZXQgbWVhbnMgZHJtX3BhbnRob3Jfdm1fYmluZF9vcDpvZmZzZXQgYW5kIGRybV9wYW50 aG9yX3ZtX2JpbmRfb3A6OmhhbmRsZSBtdXN0CisJICogYm90aCBiZSBzZXQgdG8gMC4gRFJNX1BB TlRIT1JfVk1fQklORF9PUF9NQVBfTk9FWEVDIG11c3QgYWxzbyBiZSBzZXQuCisJICovCisJRFJN X1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFID0gMSA8PCAzLAorCiAJLyoqCiAJICogQERS TV9QQU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVNLOiBNYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIHRo ZSB0eXBlIG9mIG9wZXJhdGlvbi4KIAkgKi8KLS0gCjIuNTMuMAoK