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 701CFCD5BAC for ; Thu, 21 May 2026 13:07:04 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CEF9E10E4EB; Thu, 21 May 2026 13:07:03 +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="Tp85oJOk"; 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 E976910E4EB for ; Thu, 21 May 2026 13:07:02 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1779368810; cv=none; d=zohomail.com; s=zohoarc; b=lD+XupshjV8Qhbu5R1eS2CcOPGwyY1xheZa3Izyl0WPJjoUfpPF802zByCHvOaEMPF4T44FxNm/Ul+0rHbfrzeePWT4rXeMtfSbJDsg6zoZCP+cbdHxMqh7iXc4KAD8hKJockHdCqR9dU6KJ+jwXQvPtRxeHkFiPOKv5j1Uqm3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779368810; 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=X0AAsweE1+kBMGmF6Ta7bN5RFx0peGB1mzzcebzzJPQ=; b=muQbtyPPxv01sRmdcwfwBm4KnIt3XibHqjgIpLKARLw7Q53pM3Zho6gL9ACrCLJelKMserJuidNaLz8CkdqQPLivLcMFhsl0U7bDCr1tPc9dHjY6MOsWEk/B8DNbm2fPTh9NAawM1zJL6l/2eXYI+BvxLYPX2RYQ2UQeRu+wnqI= 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=1779368810; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=Date:Date:From:From:To:To:Cc:Cc:Subject:Subject:Message-ID:References:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:Message-Id:Reply-To; bh=X0AAsweE1+kBMGmF6Ta7bN5RFx0peGB1mzzcebzzJPQ=; b=Tp85oJOkFjkYxS8Zl3/ORkoElPG1l66ADYaYcOHIzDYDluThizUhHMVOqBNBdWjB O8U56RaNFN6sBYEmwRxU/YoNtXEJVOpf08pfj0xC9JjElm/FqxyzAdhzZkW7F8+eKm+ i+CmUb7HFqXBL8QII5X+H/tNkKKlIK6IOccZz2/s= Received: by mx.zohomail.com with SMTPS id 1779368810094121.99672027942722; Thu, 21 May 2026 06:06:50 -0700 (PDT) Date: Thu, 21 May 2026 14:06:44 +0100 From: =?utf-8?Q?Adri=C3=A1n?= Larumbe To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Steven Price , Boris Brezillon , kernel@collabora.com, Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Daniel Almeida , Alice Ryhl Subject: Re: [PATCH v12 5/6] drm/panthor: Support sparse mappings Message-ID: References: <20260521014359.2011484-1-adrian.larumbe@collabora.com> <20260521014359.2011484-6-adrian.larumbe@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: <20260521014359.2011484-6-adrian.larumbe@collabora.com> 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" T24gMjEuMDUuMjAyNiAwMjo0MywgQWRyacOhbiBMYXJ1bWJlIHdyb3RlOgo+IEFsbG93IFVNIHRv IGJpbmQgc3BhcnNlbHkgcG9wdWxhdGVkIG1lbW9yeSByZWdpb25zIGJ5IGN5Y2xpY2FsbHkgbWFw cGluZwo+IHZpcnR1YWwgcmFuZ2VzIG92ZXIgYSBrZXJuZWwtYWxsb2NhdGVkIGR1bW15IEJPLiBU aGlzIGFsdGVybmF0aXZlIGlzCj4gcHJlZmVyYWJsZSB0byB0aGUgb2xkIG1ldGhvZCBvZiBoYW5k bGluZyBzcGFyc2VuZXNzIGluIHRoZSBVTUQsIGJlY2F1c2UgaXQKPiByZWxpZWQgb24gdGhlIGNy ZWF0aW9uIG9mIGEgYnVmZmVyIG9iamVjdCB0byB0aGUgc2FtZSBlbmQsIGRlc3BpdGUgdGhlIGZh Y3QKPiBWdWxrYW4gc3BhcnNlIHJlc291cmNlcyBkb24ndCBuZWVkIHRvIGJlIGJhY2tlZCBieSBh IGRyaXZlciBCTy4KPgo+IFRoZSBjaG9pY2Ugb2YgYmFja2luZyBzcGFyc2VseS1ib3VuZCByZWdp b25zIHdpdGggYSBQYW50aG9yIEJPIHdhcyBtYWRlIHNvCj4gYXMgdG8gcHJvZml0IGZyb20gdGhl IGV4aXN0aW5nIHNocmlua2VyIHJlY2xhaW0gY29kZS4gVGhhdCB3YXkgbm8gc3BlY2lhbAo+IHRy ZWF0bWVudCBtdXN0IGJlIGdpdmVuIHRvIHRoZSBkdW1teSBzcGFyc2UgQk9zIHdoZW4gcmVjbGFp bWluZyBtZW1vcnksIGFzCj4gd291bGQgYmUgdGhlIGNhc2UgaWYgd2UgaGFkIGNob3NlbiBhIHJh dyBrZXJuZWwgcGFnZSBpbXBsZW1lbnRhdGlvbi4KPgo+IEEgbmV3IGR1bW15IEJPIGlzIGFsbG9j YXRlZCBwZXIgb3BlbiBmaWxlIGNvbnRleHQsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlCj4gVnVs a2FuIHNwZWMgbWFuZGF0ZXMgdGhhdCB3cml0ZXMgaW50byBzcGFyc2VseSBib3VuZCByZWdpb25z IG11c3QgYmUKPiBkaXNjYXJkZWQsIG91ciBpbXBsZW1lbnRhdGlvbiBpcyBzdGlsbCBhIHdvcmth cm91bmQgb3ZlciB0aGUgZmFjdCBNYWxpIENTRgo+IEdQVXMgY2Fubm90IHN1cHBvcnQgdGhpcyBi ZWhhdmlvdXIgb24gdGhlIGhhcmR3YXJlIGxldmVsLCBzbyB3cml0ZXMgc3RpbGwKPiBtYWtlIGl0 IGludG8gdGhlIGJhY2tpbmcgQk8uIElmIHdlIGhhZCBhIGdsb2JhbCBvbmUsIHRoZW4gaXQgY291 bGQgYmUgYQo+IHZlbnVlIGZvciBpbmZvcm1hdGlvbiBsZWFrcyBiZXR3ZWVuIGZpbGUgY29udGV4 dHMsIHdoaWNoIHNob3VsZCBuZXZlcgo+IGhhcHBlbiBpbiBEUk0uCj4KPiBBcyBhIHNpZGUgbm90 ZSwgY2FyZSB3YXMgcHV0IHRvIGFkanVzdCBkdW1teSBCTyBvZmZzZXRzIGZvciBzcGFyc2UgbWFw cGluZ3MKPiBzbyB0aGF0IGFsbCBhZGRyZXNzZXMgaW4gdGhlIG5ldyBWQSBhcmUgbWFwcGVkIGFs aWduZWQgYWdhaW5zdCBpdC4KPgo+IFNpZ25lZC1vZmYtYnk6IEFkcmnDoW4gTGFydW1iZSA8YWRy aWFuLmxhcnVtYmVAY29sbGFib3JhLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3BhbnRo b3IvcGFudGhvcl9nZW0uYyB8ICAxOCArKysKPiAgZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFu dGhvcl9nZW0uaCB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfbW11 LmMgfCAxOTcgKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgaW5jbHVkZS91YXBpL2RybS9w YW50aG9yX2RybS5oICAgICAgICB8ICAxMiArKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDIwMyBpbnNl cnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcGFudGhvci9wYW50aG9yX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhv cl9nZW0uYwo+IGluZGV4IDEzMjk1ZDdhNTkzZC4uYzc5OGFjMjk2M2UxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCj4gQEAgLTEzNDUsNiArMTM0NSwyNCBAQCBwYW50 aG9yX2tlcm5lbF9ib19jcmVhdGUoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldiwgc3RydWN0 IHBhbnRob3Jfdm0gKnZtLAo+ICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgfQo+Cj4gKy8qKgo+ ICsgKiBwYW50aG9yX2R1bW15X2JvX2NyZWF0ZSgpIC0gQ3JlYXRlIGEgUGFudGhvciBCTyBtZWFu dCB0byBiYWNrIHNwYXJzZSBiaW5kaW5ncy4KPiArICogQHB0ZGV2OiBEZXZpY2UuCj4gKyAqCj4g KyAqIFJldHVybjogQSB2YWxpZCBwb2ludGVyIGluIGNhc2Ugb2Ygc3VjY2VzcywgYW4gRVJSX1BU UigpIG90aGVyd2lzZS4KPiArICovCj4gK3N0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKgo+ICtw YW50aG9yX2R1bW15X2JvX2NyZWF0ZShzdHJ1Y3QgcGFudGhvcl9kZXZpY2UgKnB0ZGV2KQo+ICt7 Cj4gKwkvKiBTaW5jZSBldmVuIHdoZW4gdGhlIERSTSBkZXZpY2UncyBtb3VudCBwb2ludCBoYXMg ZW5hYmxlZCBUSFAgd2UgaGF2ZSBubyBndWFyYW50ZWUKPiArCSAqIHRoYXQgZHJtX2dlbV9nZXRf cGFnZXMoKSB3aWxsIHJldHVybiBhIHNpbmdsZSAyTWlCIFBNRCwgYW5kIGFsc28gd2UgY2Fubm90 IGJlIHN1cmUKPiArCSAqIHRoYXQgdGhlIDJNaUIgd29uJ3QgYmUgcmVjbGFpbWVkIGFuZCByZS1h bGxvY2F0ZWQgbGF0ZXIgb24gYXMgNEtpQiBjaHVua3MsIGl0IGRvZXNuJ3QKPiArCSAqIG1ha2Ug c2Vuc2UgdG8gcHJlLXBvcHVsYXRlIHRoaXMgb2JqZWN0J3MgcGFnZSBhcnJheSwgbm9yIHRvIGZh bGwgYmFjayBvbiBhIEJPIHNpemUKPiArCSAqIG9mIDRLaUIuIFN0aWNraW5nIHRvIGEgZHVtbXkg b2JqZWN0IHNpemUgb2YgMk1pQiBsZXRzIHVzIGtlZXAgdGhpbmdzIHNpbXBsZSBmb3Igbm93Lgo+ ICsJICovCj4gKwlyZXR1cm4gcGFudGhvcl9nZW1fY3JlYXRlKCZwdGRldi0+YmFzZSwgU1pfMk0s IERSTV9QQU5USE9SX0JPX05PX01NQVAsIE5VTEwsIDApOwo+ICt9Cj4gKwo+ICBzdGF0aWMgYm9v bCBjYW5fc3dhcCh2b2lkKQo+ICB7Cj4gIAlyZXR1cm4gZ2V0X25yX3N3YXBfcGFnZXMoKSA+IDA7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmggYi9k cml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5oCj4gaW5kZXggYWUwNDkxZDBiMTIx Li44NjM5YzJmYTA4ZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFu dGhvcl9nZW0uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmgK PiBAQCAtMzE1LDYgKzMxNSw4IEBAIHBhbnRob3Jfa2VybmVsX2JvX2NyZWF0ZShzdHJ1Y3QgcGFu dGhvcl9kZXZpY2UgKnB0ZGV2LCBzdHJ1Y3QgcGFudGhvcl92bSAqdm0sCj4KPiAgdm9pZCBwYW50 aG9yX2tlcm5lbF9ib19kZXN0cm95KHN0cnVjdCBwYW50aG9yX2tlcm5lbF9ibyAqYm8pOwo+Cj4g K3N0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKnBhbnRob3JfZHVtbXlfYm9fY3JlYXRlKHN0cnVj dCBwYW50aG9yX2RldmljZSAqcHRkZXYpOwo+ICsKPiAgI2lmZGVmIENPTkZJR19ERUJVR19GUwo+ ICB2b2lkIHBhbnRob3JfZ2VtX2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7 Cj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9y X21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9tbXUuYwo+IGluZGV4IGNh NzgyNjdkNDNlOS4uYmRjYzQ5ZmJhNjI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9w YW50aG9yL3BhbnRob3JfbW11LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50 aG9yX21tdS5jCj4gQEAgLTExNiw2ICsxMTYsMTcgQEAgc3RydWN0IHBhbnRob3JfbW11IHsKPiAg c3RydWN0IHBhbnRob3Jfdm1fcG9vbCB7Cj4gIAkvKiogQHhhOiBBcnJheSB1c2VkIGZvciBWTSBo YW5kbGUgdHJhY2tpbmcuICovCj4gIAlzdHJ1Y3QgeGFycmF5IHhhOwo+ICsKPiArCS8qKgo+ICsJ ICogQGR1bW15OiBEdW1teSBvYmplY3QgdXNlZCBmb3Igc3BhcnNlIG1hcHBpbmdzCj4gKwkgKgo+ ICsJICogU3BhcnNlIGJpbmRpbmdzIG1hcCB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2VzIG9udG8gYSBk dW1teQo+ICsJICogQk8gaW4gYSBtb2R1bG8gZmFzaGlvbi4gRXZlbiB0aG91Z2ggc3BhcnNlIHdy aXRlcyBhcmUgbWVhbnQKPiArCSAqIHRvIGJlIGRpc2NhcmRlZCBhbmQgcmVhZHMgdW5kZWZpbmVk LCB3cml0ZXMgYXJlIHN0aWxsIHJlZmxlY3RlZAo+ICsJICogaW4gdGhlIGR1bW15IGJ1ZmZlci4g VGhhdCBtZWFucyB3ZSBtdXN0IGtlZXAgYSBkdW1teSBvYmplY3QgcGVyCj4gKwkgKiBmaWxlIGNv bnRleHQsIHRvIGF2b2lkIGRhdGEgbGVha3MgYmV0d2VlbiB0aGVtLgo+ICsJICovCj4gKwlzdHJ1 Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpkdW1teTsKPiAgfTsKPgo+ICAvKioKPiBAQCAtMzk1LDYg KzQwNiwxNSBAQCBzdHJ1Y3QgcGFudGhvcl92bSB7Cj4gIAkJICovCj4gIAkJc3RydWN0IGxpc3Rf aGVhZCBscnVfbm9kZTsKPiAgCX0gcmVjbGFpbTsKPiArCj4gKwkvKioKPiArCSAqIEBkdW1teTog RHVtbXkgb2JqZWN0IHVzZWQgZm9yIHNwYXJzZSBtYXBwaW5ncy4KPiArCSAqCj4gKwkgKiBWTSdz IG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgZmlsZSBjb250ZXh0LXdpZGUgZHVtbXkgQk8g YmVjYXVzZQo+ICsJICogdGhleSBjYW4gb3V0bGl2ZSB0aGUgZmlsZSBjb250ZXh0LCB3aGljaCBp bmNsdWRlcyB0aGUgVk0gcG9vbCBob2xkaW5nCj4gKwkgKiB0aGUgb3JpZ2luYWwgZHVtbXkgQk8g cmVmZXJlbmNlLgo+ICsJICovCj4gKwlzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpkdW1teTsK PiAgfTsKPgo+ICAvKioKPiBAQCAtMTAyNyw2ICsxMDQ3LDMxIEBAIHBhbnRob3Jfdm1fbWFwX3Bh Z2VzKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgdTY0IGlvdmEsIGludCBwcm90LAo+ICAJcmV0dXJu IDA7Cj4gIH0KPgo+ICtzdGF0aWMgaW50Cj4gK3BhbnRob3Jfdm1fbWFwX3NwYXJzZShzdHJ1Y3Qg cGFudGhvcl92bSAqdm0sIHU2NCBpb3ZhLCBpbnQgcHJvdCwKPiArCQkgICAgICBzdHJ1Y3Qgc2df dGFibGUgKnNndCwgdTY0IHNpemUpCj4gK3sKPiArCXU2NCBtYXBwZWQgPSAwOwo+ICsJaW50IHJl dDsKPiArCj4gKwl3aGlsZSAobWFwcGVkIDwgc2l6ZSkgewo+ICsJCXU2NCBhZGRyID0gaW92YSAr IG1hcHBlZDsKPiArCQl1MzIgY2h1bmtfc2l6ZSA9IG1pbihzaXplIC0gbWFwcGVkLCBTWl8yTSAt IChhZGRyICYgKFNaXzJNIC0gMSkpKTsKPiArCj4gKwkJcmV0ID0gcGFudGhvcl92bV9tYXBfcGFn ZXModm0sIGFkZHIsIHByb3QsIHNndCwKPiArCQkJCQkgICBhZGRyICUgU1pfMk0sIGNodW5rX3Np emUpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJcGFudGhvcl92bV91bm1hcF9wYWdlcyh2bSwgaW92 YSwgbWFwcGVkKTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCW1hcHBlZCArPSBj aHVua19zaXplOwo+ICsJCWNvbmRfcmVzY2hlZCgpOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGZsYWdzX3RvX3Byb3QodTMyIGZsYWdzKQo+ICB7Cj4gIAlp bnQgcHJvdCA9IDA7Cj4gQEAgLTEyNjksNiArMTMxNCw3IEBAIHN0YXRpYyBpbnQgcGFudGhvcl92 bV9vcF9jdHhfcHJlYWxsb2NfcHRzKHN0cnVjdCBwYW50aG9yX3ZtX29wX2N0eCAqb3BfY3R4KQo+ ICAJKERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1JFQURPTkxZIHwgXAo+ICAJIERSTV9QQU5U SE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyB8IFwKPiAgCSBEUk1fUEFOVEhPUl9WTV9CSU5EX09Q X01BUF9VTkNBQ0hFRCB8IFwKPiArCSBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0Ug fCBcCj4gIAkgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBFX01BU0spCj4KPiAgc3RhdGljIGlu dCBwYW50aG9yX3ZtX3ByZXBhcmVfbWFwX29wX2N0eChzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHgg Km9wX2N0eCwKPiBAQCAtMTI3Niw2ICsxMzIyLDcgQEAgc3RhdGljIGludCBwYW50aG9yX3ZtX3By ZXBhcmVfbWFwX29wX2N0eChzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHggKm9wX2N0eCwKPiAgCQkJ CQkgc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8sCj4gIAkJCQkJIGNvbnN0IHN0cnVjdCBk cm1fcGFudGhvcl92bV9iaW5kX29wICpvcCkKPiAgewo+ICsJYm9vbCBpc19zcGFyc2UgPSBvcC0+ ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0U7Cj4gIAlzdHJ1Y3QgZHJt X2dwdXZtX2JvICpwcmVhbGxvY2F0ZWRfdm1fYm87Cj4gIAlzdHJ1Y3Qgc2dfdGFibGUgKnNndCA9 IE5VTEw7Cj4gIAlpbnQgcmV0Owo+IEBAIC0xMjg3LDggKzEzMzQsMjEgQEAgc3RhdGljIGludCBw YW50aG9yX3ZtX3ByZXBhcmVfbWFwX29wX2N0eChzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHggKm9w X2N0eCwKPiAgCSAgICAob3AtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBFX01B U0spICE9IERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVApCj4gIAkJcmV0dXJuIC1FSU5W QUw7Cj4KPiAtCS8qIE1ha2Ugc3VyZSB0aGUgVkEgYW5kIHNpemUgYXJlIGluLWJvdW5kcy4gKi8K PiAtCWlmIChvcC0+c2l6ZSA+IGJvLT5iYXNlLnNpemUgfHwgb3AtPmJvX29mZnNldCA+IGJvLT5i YXNlLnNpemUgLSBvcC0+c2l6ZSkKPiArCS8qIHVBUEkgbWFuZGF0ZXMgc3BhcnNlbHkgYm91bmQg cmVnaW9ucyBtdXN0IG5vdCBiZSBleGVjdXRhYmxlLiAqLwo+ICsJaWYgKGlzX3NwYXJzZSAmJiAh KG9wLT5mbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQykpCj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogRm9yIG5vbi1zcGFyc2UsIG1ha2Ugc3VyZSB0aGUgVkEg YW5kIHNpemUgYXJlIGluLWJvdW5kcy4KPiArCSAqIEZvciBzcGFyc2UsIHRoaXMgaXMgbm90IGFw cGxpY2FibGUsIGJlY2F1c2UgdGhlIGR1bW15IEJPIGlzCj4gKwkgKiByZXBlYXRlZGx5IG1hcHBl ZCBvdmVyIGEgcG90ZW50aWFsbHkgd2lkZXIgVkEgcmFuZ2UuCj4gKwkgKi8KPiArCWlmICghaXNf c3BhcnNlICYmIChvcC0+c2l6ZSA+IGJvLT5iYXNlLnNpemUgfHwgb3AtPmJvX29mZnNldCA+IGJv LT5iYXNlLnNpemUgLSBvcC0+c2l6ZSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyog Rm9yIHNwYXJzZSwgd2UgZG9uJ3QgZXhwZWN0IGFueSB1c2VyIEJPLCB0aGUgQk8gd2UgZ2V0IHBh c3NlZAo+ICsJICogaXMgdGhlIGR1bW15IEJPIGF0dGFjaGVkIHRvIHRoZSBWTSBwb29sLgo+ICsJ ICovCj4gKwlpZiAoaXNfc3BhcnNlICYmIChvcC0+Ym9faGFuZGxlIHx8IG9wLT5ib19vZmZzZXQp KQo+ICAJCXJldHVybiAtRUlOVkFMOwo+Cj4gIAkvKiBJZiB0aGUgQk8gaGFzIGFuIGV4Y2x1c2l2 ZSBWTSBhdHRhY2hlZCwgaXQgY2FuJ3QgYmUgbWFwcGVkIHRvIG90aGVyIFZNcy4gKi8KPiBAQCAt MTQzNyw3ICsxNDk3LDkgQEAgcGFudGhvcl92bV9nZXRfYm9fZm9yX3ZhKHN0cnVjdCBwYW50aG9y X3ZtICp2bSwgdTY0IHZhLCB1NjQgKmJvX29mZnNldCkKPiAgCWlmICh2bWEgJiYgdm1hLT5iYXNl LmdlbS5vYmopIHsKPiAgCQlkcm1fZ2VtX29iamVjdF9nZXQodm1hLT5iYXNlLmdlbS5vYmopOwo+ ICAJCWJvID0gdG9fcGFudGhvcl9ibyh2bWEtPmJhc2UuZ2VtLm9iaik7Cj4gLQkJKmJvX29mZnNl dCA9IHZtYS0+YmFzZS5nZW0ub2Zmc2V0ICsgKHZhIC0gdm1hLT5iYXNlLnZhLmFkZHIpOwo+ICsJ CSpib19vZmZzZXQgPSAhKHZtYS0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9T UEFSU0UpID8KPiArCQkJdm1hLT5iYXNlLmdlbS5vZmZzZXQgKyAodmEgLSB2bWEtPmJhc2UudmEu YWRkcikgOgo+ICsJCQl2YSAmIChTWl8yTSAtIDEpOwo+ICAJfQo+ICAJbXV0ZXhfdW5sb2NrKCZ2 bS0+b3BfbG9jayk7Cj4KPiBAQCAtMTU0MiwxMCArMTYwNCwxNCBAQCBpbnQgcGFudGhvcl92bV9w b29sX2NyZWF0ZV92bShzdHJ1Y3QgcGFudGhvcl9kZXZpY2UgKnB0ZGV2LAo+ICAJaWYgKElTX0VS Uih2bSkpCj4gIAkJcmV0dXJuIFBUUl9FUlIodm0pOwo+Cj4gKwlkcm1fZ2VtX29iamVjdF9nZXQo JnBvb2wtPmR1bW15LT5iYXNlKTsKPiArCXZtLT5kdW1teSA9IHBvb2wtPmR1bW15Owo+ICsKPiAg CXJldCA9IHhhX2FsbG9jKCZwb29sLT54YSwgJmlkLCB2bSwKPiAgCQkgICAgICAgWEFfTElNSVQo MSwgUEFOVEhPUl9NQVhfVk1TX1BFUl9GSUxFKSwgR0ZQX0tFUk5FTCk7Cj4KPiAgCWlmIChyZXQp IHsKPiArCQlkcm1fZ2VtX29iamVjdF9wdXQoJnZtLT5kdW1teS0+YmFzZSk7CgpKdXN0IHJlYWxp c2VkIHRoaXMgaXMgYWxyZWFkeSBiZWluZyBkb25lIGluc2lkZSBwYW50aG9yX3ZtX2ZyZWUoKSwg c28gcmlnaHQgbm93CnRoaXMgY291bGQgbGVhZCB0byBhIGRvdWJsZSBmcmVlLiBXaWxsIHJlbW92 ZSBpdCBpbiBhIGZvbGxvdy11cCByZXZpc2lvbi4KCj4gIAkJcGFudGhvcl92bV9wdXQodm0pOwo+ ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gQEAgLTE2NDEsNiArMTcwNyw4IEBAIHZvaWQgcGFudGhv cl92bV9wb29sX2Rlc3Ryb3koc3RydWN0IHBhbnRob3JfZmlsZSAqcGZpbGUpCj4gIAl4YV9mb3Jf ZWFjaCgmcGZpbGUtPnZtcy0+eGEsIGksIHZtKQo+ICAJCXBhbnRob3Jfdm1fZGVzdHJveSh2bSk7 Cj4KPiArCWlmIChwZmlsZS0+dm1zLT5kdW1teSkKPiArCQlkcm1fZ2VtX29iamVjdF9wdXQoJnBm aWxlLT52bXMtPmR1bW15LT5iYXNlKTsKPiAgCXhhX2Rlc3Ryb3koJnBmaWxlLT52bXMtPnhhKTsK PiAgCWtmcmVlKHBmaWxlLT52bXMpOwo+ICB9Cj4gQEAgLTE2NTMsMTIgKzE3MjEsMjggQEAgdm9p ZCBwYW50aG9yX3ZtX3Bvb2xfZGVzdHJveShzdHJ1Y3QgcGFudGhvcl9maWxlICpwZmlsZSkKPiAg ICovCj4gIGludCBwYW50aG9yX3ZtX3Bvb2xfY3JlYXRlKHN0cnVjdCBwYW50aG9yX2ZpbGUgKnBm aWxlKQo+ICB7Cj4gKwlzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpkdW1teTsKPiArCWludCBy ZXQ7Cj4gKwo+ICAJcGZpbGUtPnZtcyA9IGt6YWxsb2Nfb2JqKCpwZmlsZS0+dm1zKTsKPiAgCWlm ICghcGZpbGUtPnZtcykKPiAgCQlyZXR1cm4gLUVOT01FTTsKPgo+ICAJeGFfaW5pdF9mbGFncygm cGZpbGUtPnZtcy0+eGEsIFhBX0ZMQUdTX0FMTE9DMSk7Cj4gKwo+ICsJZHVtbXkgPSBwYW50aG9y X2R1bW15X2JvX2NyZWF0ZShwZmlsZS0+cHRkZXYpOwo+ICsJaWYgKElTX0VSUihkdW1teSkpIHsK PiArCQlyZXQgPSBQVFJfRVJSKGR1bW15KTsKPiArCQlnb3RvIGVycl9kZXN0cm95X3ZtX3Bvb2w7 Cj4gKwl9Cj4gKwo+ICsJcGZpbGUtPnZtcy0+ZHVtbXkgPSBkdW1teTsKPiArCj4gIAlyZXR1cm4g MDsKPiArCj4gK2Vycl9kZXN0cm95X3ZtX3Bvb2w6Cj4gKwlwYW50aG9yX3ZtX3Bvb2xfZGVzdHJv eShwZmlsZSk7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4KPiAgLyogZHVtbXkgVExCIG9wcywgdGhl IHJlYWwgVExCIGZsdXNoIGhhcHBlbnMgaW4gcGFudGhvcl92bV9mbHVzaF9yYW5nZSgpICovCj4g QEAgLTE5OTUsNiArMjA3OSw5IEBAIHN0YXRpYyB2b2lkIHBhbnRob3Jfdm1fZnJlZShzdHJ1Y3Qg ZHJtX2dwdXZtICpncHV2bSkKPgo+ICAJZnJlZV9pb19wZ3RhYmxlX29wcyh2bS0+cGd0Ymxfb3Bz KTsKPgo+ICsJaWYgKHZtLT5kdW1teSkKPiArCQlkcm1fZ2VtX29iamVjdF9wdXQoJnZtLT5kdW1t eS0+YmFzZSk7Cj4gKwo+ICAJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0pOwo+ICAJa2ZyZWUodm0p Owo+ICB9Cj4gQEAgLTIxNTQsNyArMjI0MSwzMCBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX3ZtYV9p bml0KHN0cnVjdCBwYW50aG9yX3ZtYSAqdm1hLCB1MzIgZmxhZ3MpCj4gICNkZWZpbmUgUEFOVEhP Ul9WTV9NQVBfRkxBR1MgXAo+ICAJKERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1JFQURPTkxZ IHwgXAo+ICAJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyB8IFwKPiAtCSBEUk1f UEFOVEhPUl9WTV9CSU5EX09QX01BUF9VTkNBQ0hFRCkKPiArCSBEUk1fUEFOVEhPUl9WTV9CSU5E X09QX01BUF9VTkNBQ0hFRCB8IFwKPiArCSBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFS U0UpCj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtwYW50aG9yX2ZpeF9zcGFyc2VfbWFwX29mZnNldChz dHJ1Y3QgZHJtX2dwdXZhX29wX21hcCAqb3AsIHUzMiBmbGFncykKPiArewo+ICsJaWYgKG9wICYm IChmbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJTRSkpCj4gKwkJb3AtPmdl bS5vZmZzZXQgPSBvcC0+dmEuYWRkciAmIChTWl8yTSAtIDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50Cj4gK3BhbnRob3Jfdm1fZXhlY19tYXBfb3Aoc3RydWN0IHBhbnRob3Jfdm0gKnZtLCB1MzIg ZmxhZ3MsCj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfbWFwICpvcCkKPiAr ewo+ICsJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8gPSB0b19wYW50aG9yX2JvKG9wLT5n ZW0ub2JqKTsKPiArCWludCBwcm90ID0gZmxhZ3NfdG9fcHJvdChmbGFncyk7Cj4gKwo+ICsJaWYg KGZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFKQo+ICsJCXJldHVybiBw YW50aG9yX3ZtX21hcF9zcGFyc2Uodm0sIG9wLT52YS5hZGRyLCBwcm90LAo+ICsJCQkJCSAgICAg Ym8tPmRtYXAuc2d0LCBvcC0+dmEucmFuZ2UpOwo+ICsKPiArCXJldHVybiBwYW50aG9yX3ZtX21h cF9wYWdlcyh2bSwgb3AtPnZhLmFkZHIsIHByb3QsIGJvLT5kbWFwLnNndCwKPiArCQkJCSAgICBv cC0+Z2VtLm9mZnNldCwgb3AtPnZhLnJhbmdlKTsKPiArfQo+Cj4gIHN0YXRpYyBpbnQgcGFudGhv cl9ncHV2YV9zbV9zdGVwX21hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwgdm9pZCAqcHJpdikK PiAgewo+IEBAIC0yMTY3LDEwICsyMjc3LDkgQEAgc3RhdGljIGludCBwYW50aG9yX2dwdXZhX3Nt X3N0ZXBfbWFwKHN0cnVjdCBkcm1fZ3B1dmFfb3AgKm9wLCB2b2lkICpwcml2KQo+ICAJCXJldHVy biAtRUlOVkFMOwo+Cj4gIAlwYW50aG9yX3ZtYV9pbml0KHZtYSwgb3BfY3R4LT5mbGFncyAmIFBB TlRIT1JfVk1fTUFQX0ZMQUdTKTsKPiArCXBhbnRob3JfZml4X3NwYXJzZV9tYXBfb2Zmc2V0KCZv cC0+bWFwLCB2bWEtPmZsYWdzKTsKPgo+IC0JcmV0ID0gcGFudGhvcl92bV9tYXBfcGFnZXModm0s IG9wLT5tYXAudmEuYWRkciwgZmxhZ3NfdG9fcHJvdCh2bWEtPmZsYWdzKSwKPiAtCQkJCSAgIG9w X2N0eC0+bWFwLmJvLT5kbWFwLnNndCwgb3AtPm1hcC5nZW0ub2Zmc2V0LAo+IC0JCQkJICAgb3At Pm1hcC52YS5yYW5nZSk7Cj4gKwlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29wKHZtLCB2bWEt PmZsYWdzLCAmb3AtPm1hcCk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJcGFudGhvcl92bV9vcF9jdHhf cmV0dXJuX3ZtYShvcF9jdHgsIHZtYSk7Cj4gIAkJcmV0dXJuIHJldDsKPiBAQCAtMjIwMiw2ICsy MzExLDggQEAgc3RhdGljIHZvaWQKPiAgdW5tYXBfaHVnZXBhZ2VfYWxpZ24oY29uc3Qgc3RydWN0 IGRybV9ncHV2YV9vcF9yZW1hcCAqb3AsCj4gIAkJICAgICB1NjQgKnVubWFwX3N0YXJ0LCB1NjQg KnVubWFwX3JhbmdlKQo+ICB7Cj4gKwlzdHJ1Y3QgcGFudGhvcl92bWEgKnVubWFwX3ZtYSA9IGNv bnRhaW5lcl9vZihvcC0+dW5tYXAtPnZhLCBzdHJ1Y3QgcGFudGhvcl92bWEsIGJhc2UpOwo+ICsJ Ym9vbCBpc19zcGFyc2UgPSB1bm1hcF92bWEtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9P UF9NQVBfU1BBUlNFOwo+ICAJdTY0IGFsaWduZWRfdW5tYXBfc3RhcnQsIGFsaWduZWRfdW5tYXBf ZW5kLCB1bm1hcF9lbmQ7Cj4KPiAgCXVubWFwX2VuZCA9ICp1bm1hcF9zdGFydCArICp1bm1hcF9y YW5nZTsKPiBAQCAtMjIwOSwxMSArMjMyMCwxNSBAQCB1bm1hcF9odWdlcGFnZV9hbGlnbihjb25z dCBzdHJ1Y3QgZHJtX2dwdXZhX29wX3JlbWFwICpvcCwKPiAgCWFsaWduZWRfdW5tYXBfZW5kID0g QUxJR04odW5tYXBfZW5kLCBTWl8yTSk7Cj4KPiAgCS8qIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBh IGh1Z2UgcGFnZSwgbWFrZSBzdXJlIHRoZSB1bm1hcCByZWdpb24gaXMKPiAtCSAqIGFsaWduZWQg b24gdGhlIHN0YXJ0IG9mIHRoZSBwYWdlLgo+ICsJICogYWxpZ25lZCBvbiB0aGUgc3RhcnQgb2Yg dGhlIHBhZ2UuIElmIHRoZSB1bm1hcHBlZCBWTUEgc3RhbmRzIGZvcgo+ICsJICogYSBzcGFyc2Ug bWFwcGluZywgYWx3YXlzIGFzc3VtZSB0aGUgYmFja2luZyBzdG9yYWdlIGlzIGEgVEhQLCBzaW5j ZQo+ICsJICogdGhlIG92ZXJoZWFkIG9mIHVubWFwcGluZyAyTWlCIHdvcnRoIG9mIDRLaUIgcGFn ZXMgYW5kIHJlbWFwcGluZwo+ICsJICogc29tZSBvZiB0aGVtIGlzIG9mZnNldCBieSB0aGUgbG9n aWMgb2Ygd29ya2luZyBvdXQgd2hldGhlciBpdCdzCj4gKwkgKiB0aGUgb3Bwb3NpdGUgY2FzZSBy aWdodCBiZWxvdy4gVGhpcyBhbHNvIGhvbGRzIHRydWUgZm9yIG9wLT5uZXh0Lgo+ICAJICovCj4g IAlpZiAob3AtPnByZXYgJiYgYWxpZ25lZF91bm1hcF9zdGFydCA8ICp1bm1hcF9zdGFydCAmJgo+ ICAJICAgIG9wLT5wcmV2LT52YS5hZGRyIDw9IGFsaWduZWRfdW5tYXBfc3RhcnQgJiYKPiAtCSAg ICBpb3ZhX21hcHBlZF9hc19odWdlX3BhZ2Uob3AtPnByZXYsICp1bm1hcF9zdGFydCkpIHsKPiAr CSAgICAoaXNfc3BhcnNlIHx8IGlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShvcC0+cHJldiwgKnVu bWFwX3N0YXJ0KSkpIHsKPiAgCQkqdW5tYXBfcmFuZ2UgKz0gKnVubWFwX3N0YXJ0IC0gYWxpZ25l ZF91bm1hcF9zdGFydDsKPiAgCQkqdW5tYXBfc3RhcnQgPSBhbGlnbmVkX3VubWFwX3N0YXJ0Owo+ ICAJfQo+IEBAIC0yMjIzLDcgKzIzMzgsNyBAQCB1bm1hcF9odWdlcGFnZV9hbGlnbihjb25zdCBz dHJ1Y3QgZHJtX2dwdXZhX29wX3JlbWFwICpvcCwKPiAgCSAqLwo+ICAJaWYgKG9wLT5uZXh0ICYm IGFsaWduZWRfdW5tYXBfZW5kID4gdW5tYXBfZW5kICYmCj4gIAkgICAgb3AtPm5leHQtPnZhLmFk ZHIgKyBvcC0+bmV4dC0+dmEucmFuZ2UgPj0gYWxpZ25lZF91bm1hcF9lbmQgJiYKPiAtCSAgICBp b3ZhX21hcHBlZF9hc19odWdlX3BhZ2Uob3AtPm5leHQsIHVubWFwX2VuZCAtIDEpKSB7Cj4gKwkg ICAgKGlzX3NwYXJzZSB8fCBpb3ZhX21hcHBlZF9hc19odWdlX3BhZ2Uob3AtPm5leHQsIHVubWFw X2VuZCAtIDEpKSkgewo+ICAJCSp1bm1hcF9yYW5nZSArPSBhbGlnbmVkX3VubWFwX2VuZCAtIHVu bWFwX2VuZDsKPiAgCX0KPiAgfQo+IEBAIC0yMjQwLDYgKzIzNTUsMTEgQEAgc3RhdGljIGludCBw YW50aG9yX2dwdXZhX3NtX3N0ZXBfcmVtYXAoc3RydWN0IGRybV9ncHV2YV9vcCAqb3AsCj4KPiAg CWRybV9ncHV2YV9vcF9yZW1hcF90b191bm1hcF9yYW5nZSgmb3AtPnJlbWFwLCAmdW5tYXBfc3Rh cnQsICZ1bm1hcF9yYW5nZSk7Cj4KPiArCS8qIG9wLT5yZW1hcC5wcmV2J3MgQk8gb2Zmc2V0IGlz IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgdW5tYXAgdmEncywgYnV0Cj4gKwkgKiB0aGF0IG9mIG9w LT5yZW1hcC5uZXh0IG11c3QgYmUgYWRqdXN0ZWQgc28gYXMgdG8gcmVtYWluIDwgU1pfMk0KPiAr CSAqLwo+ICsJcGFudGhvcl9maXhfc3BhcnNlX21hcF9vZmZzZXQob3AtPnJlbWFwLm5leHQsIHVu bWFwX3ZtYS0+ZmxhZ3MpOwo+ICsKPiAgCS8qCj4gIAkgKiBBUk0gSU9NTVUgcGFnZSB0YWJsZSBt YW5hZ2VtZW50IGNvZGUgZGlzYWxsb3dzIHBhcnRpYWwgdW5tYXBzIG9mIGh1Z2UgcGFnZXMsCj4g IAkgKiBzbyB3aGVuIGEgcGFydGlhbCB1bm1hcCBpcyByZXF1ZXN0ZWQsIHdlIG11c3QgZmlyc3Qg dW5tYXAgdGhlIGVudGlyZSBodWdlCj4gQEAgLTIyNTksMTQgKzIzNzksMTkgQEAgc3RhdGljIGlu dCBwYW50aG9yX2dwdXZhX3NtX3N0ZXBfcmVtYXAoc3RydWN0IGRybV9ncHV2YV9vcCAqb3AsCj4g IAl9Cj4KPiAgCWlmIChvcC0+cmVtYXAucHJldikgewo+IC0JCXN0cnVjdCBwYW50aG9yX2dlbV9v YmplY3QgKmJvID0gdG9fcGFudGhvcl9ibyhvcC0+cmVtYXAucHJldi0+Z2VtLm9iaik7Cj4gIAkJ dTY0IG9mZnNldCA9IG9wLT5yZW1hcC5wcmV2LT5nZW0ub2Zmc2V0ICsgdW5tYXBfc3RhcnQgLSBv cC0+cmVtYXAucHJldi0+dmEuYWRkcjsKPiAgCQl1NjQgc2l6ZSA9IG9wLT5yZW1hcC5wcmV2LT52 YS5hZGRyICsgb3AtPnJlbWFwLnByZXYtPnZhLnJhbmdlIC0gdW5tYXBfc3RhcnQ7Cj4KPiAtCQlp ZiAoIXVubWFwX3ZtYS0+ZXZpY3RlZCkgewo+IC0JCQlyZXQgPSBwYW50aG9yX3ZtX21hcF9wYWdl cyh2bSwgdW5tYXBfc3RhcnQsCj4gLQkJCQkJCSAgIGZsYWdzX3RvX3Byb3QodW5tYXBfdm1hLT5m bGFncyksCj4gLQkJCQkJCSAgIGJvLT5kbWFwLnNndCwgb2Zmc2V0LCBzaXplKTsKPiArCQlpZiAo IXVubWFwX3ZtYS0+ZXZpY3RlZCAmJiBzaXplID4gMCkgewo+ICsJCQlzdHJ1Y3QgZHJtX2dwdXZh X29wX21hcCBtYXBfb3AgPSB7Cj4gKwkJCQkudmEuYWRkciA9IHVubWFwX3N0YXJ0LAo+ICsJCQkJ LnZhLnJhbmdlID0gc2l6ZSwKPiArCQkJCS5nZW0ub2JqID0gb3AtPnJlbWFwLnByZXYtPmdlbS5v YmosCj4gKwkJCQkuZ2VtLm9mZnNldCA9IG9mZnNldCwKPiArCQkJfTsKPiArCQkJcGFudGhvcl9m aXhfc3BhcnNlX21hcF9vZmZzZXQoJm1hcF9vcCwgdW5tYXBfdm1hLT5mbGFncyk7Cj4gKwo+ICsJ CQlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29wKHZtLCB1bm1hcF92bWEtPmZsYWdzLCAmbWFw X29wKTsKPiAgCQkJaWYgKHJldCkKPiAgCQkJCXJldHVybiByZXQ7Cj4gIAkJfQo+IEBAIC0yMjc3 LDE0ICsyNDAyLDE5IEBAIHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2YV9zbV9zdGVwX3JlbWFwKHN0 cnVjdCBkcm1fZ3B1dmFfb3AgKm9wLAo+ICAJfQo+Cj4gIAlpZiAob3AtPnJlbWFwLm5leHQpIHsK PiAtCQlzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibyA9IHRvX3BhbnRob3JfYm8ob3AtPnJl bWFwLm5leHQtPmdlbS5vYmopOwo+ICAJCXU2NCBhZGRyID0gb3AtPnJlbWFwLm5leHQtPnZhLmFk ZHI7Cj4gIAkJdTY0IHNpemUgPSB1bm1hcF9zdGFydCArIHVubWFwX3JhbmdlIC0gb3AtPnJlbWFw Lm5leHQtPnZhLmFkZHI7Cj4KPiAtCQlpZiAoIXVubWFwX3ZtYS0+ZXZpY3RlZCkgewo+IC0JCQly ZXQgPSBwYW50aG9yX3ZtX21hcF9wYWdlcyh2bSwgYWRkciwgZmxhZ3NfdG9fcHJvdCh1bm1hcF92 bWEtPmZsYWdzKSwKPiAtCQkJCQkJICAgYm8tPmRtYXAuc2d0LCBvcC0+cmVtYXAubmV4dC0+Z2Vt Lm9mZnNldCwKPiAtCQkJCQkJICAgc2l6ZSk7Cj4gKwkJaWYgKCF1bm1hcF92bWEtPmV2aWN0ZWQg JiYgc2l6ZSA+IDApIHsKPiArCQkJc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgbWFwX29wID0gewo+ ICsJCQkJLnZhLmFkZHIgPSBhZGRyLAo+ICsJCQkJLnZhLnJhbmdlID0gc2l6ZSwKPiArCQkJCS5n ZW0ub2JqID0gb3AtPnJlbWFwLm5leHQtPmdlbS5vYmosCj4gKwkJCQkuZ2VtLm9mZnNldCA9IG9w LT5yZW1hcC5uZXh0LT5nZW0ub2Zmc2V0LAo+ICsJCQl9Owo+ICsJCQlwYW50aG9yX2ZpeF9zcGFy c2VfbWFwX29mZnNldCgmbWFwX29wLCB1bm1hcF92bWEtPmZsYWdzKTsKPiArCj4gKwkJCXJldCA9 IHBhbnRob3Jfdm1fZXhlY19tYXBfb3Aodm0sIHVubWFwX3ZtYS0+ZmxhZ3MsICZtYXBfb3ApOwo+ ICAJCQlpZiAocmV0KQo+ICAJCQkJcmV0dXJuIHJldDsKPiAgCQl9Cj4gQEAgLTI0ODEsMTEgKzI2 MTEsMTcgQEAgc3RhdGljIGludCByZW1hcF9ldmljdGVkX3ZtYShzdHJ1Y3QgZHJtX2dwdXZtX2Jv ICp2bV9ibywKPiAgCQlyZXQgPSBwYW50aG9yX3ZtX2xvY2tfcmVnaW9uKHZtLCBldmljdGVkX3Zt YS0+YmFzZS52YS5hZGRyLAo+ICAJCQkJCSAgICAgZXZpY3RlZF92bWEtPmJhc2UudmEucmFuZ2Up Owo+ICAJCWlmICghcmV0KSB7Cj4gLQkJCXJldCA9IHBhbnRob3Jfdm1fbWFwX3BhZ2VzKHZtLCBl dmljdGVkX3ZtYS0+YmFzZS52YS5hZGRyLAo+IC0JCQkJCQkgICBmbGFnc190b19wcm90KGV2aWN0 ZWRfdm1hLT5mbGFncyksCj4gLQkJCQkJCSAgIGJvLT5kbWFwLnNndCwKPiAtCQkJCQkJICAgZXZp Y3RlZF92bWEtPmJhc2UuZ2VtLm9mZnNldCwKPiAtCQkJCQkJICAgZXZpY3RlZF92bWEtPmJhc2Uu dmEucmFuZ2UpOwo+ICsJCQlzdHJ1Y3QgZHJtX2dwdXZhX29wX21hcCBtYXBfb3AgPSB7Cj4gKwkJ CQkudmEuYWRkciA9IGV2aWN0ZWRfdm1hLT5iYXNlLnZhLmFkZHIsCj4gKwkJCQkudmEucmFuZ2Ug PSBldmljdGVkX3ZtYS0+YmFzZS52YS5yYW5nZSwKPiArCQkJCS5nZW0ub2JqID0gJmJvLT5iYXNl LAo+ICsJCQkJLmdlbS5vZmZzZXQgPSBldmljdGVkX3ZtYS0+YmFzZS5nZW0ub2Zmc2V0LAo+ICsJ CQl9Owo+ICsJCQlpZiAoZXZpY3RlZF92bWEtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9P UF9NQVBfU1BBUlNFKQo+ICsJCQkJZHJtX1dBUk5fT05fT05DRSgmdm0tPnB0ZGV2LT5iYXNlLCBt YXBfb3AuZ2VtLm9mZnNldCAhPQo+ICsJCQkJCQkgKG1hcF9vcC52YS5hZGRyICYgKFNaXzJNIC0g MSkpKTsKPiArCj4gKwkJCXJldCA9IHBhbnRob3Jfdm1fZXhlY19tYXBfb3Aodm0sIGV2aWN0ZWRf dm1hLT5mbGFncywgJm1hcF9vcCk7Cj4gIAkJCWlmICghcmV0KQo+ICAJCQkJZXZpY3RlZF92bWEt PmV2aWN0ZWQgPSBmYWxzZTsKPgo+IEBAIC0yODQ5LDcgKzI5ODUsMTMgQEAgcGFudGhvcl92bV9i aW5kX3ByZXBhcmVfb3BfY3R4KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPgo+ICAJc3dpdGNoIChv cC0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFTSykgewo+ICAJY2FzZSBE Uk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFQOgo+IC0JCWdlbSA9IGRybV9nZW1fb2JqZWN0 X2xvb2t1cChmaWxlLCBvcC0+Ym9faGFuZGxlKTsKPiArCQlpZiAoIShvcC0+ZmxhZ3MgJiBEUk1f UEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpKSB7Cj4gKwkJCWdlbSA9IGRybV9nZW1fb2Jq ZWN0X2xvb2t1cChmaWxlLCBvcC0+Ym9faGFuZGxlKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlnZW0g PSAmdm0tPmR1bW15LT5iYXNlOwo+ICsJCQlkcm1fZ2VtX29iamVjdF9nZXQoJnZtLT5kdW1teS0+ YmFzZSk7Cj4gKwkJfQo+ICsKPiAgCQlyZXQgPSBwYW50aG9yX3ZtX3ByZXBhcmVfbWFwX29wX2N0 eChvcF9jdHgsIHZtLAo+ICAJCQkJCQkgICAgZ2VtID8gdG9fcGFudGhvcl9ibyhnZW0pIDogTlVM TCwKPiAgCQkJCQkJICAgIG9wKTsKPiBAQCAtMzA1Nyw2ICszMTk5LDkgQEAgaW50IHBhbnRob3Jf dm1fbWFwX2JvX3JhbmdlKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgc3RydWN0IHBhbnRob3JfZ2Vt X29iamVjdCAqYm8KPiAgCXN0cnVjdCBwYW50aG9yX3ZtX29wX2N0eCBvcF9jdHg7Cj4gIAlpbnQg cmV0Owo+Cj4gKwlpZiAoZHJtX1dBUk5fT04oJnZtLT5wdGRldi0+YmFzZSwgZmxhZ3MgJiBEUk1f UEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsK PiAgCXJldCA9IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KCZvcF9jdHgsIHZtLCBibywg Jm9wKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2RybS9wYW50aG9yX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5o Cj4gaW5kZXggMTRhOTNhNGVmNmZmLi5hMmZmMGY0ZWM2OTEgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS91YXBpL2RybS9wYW50aG9yX2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9y X2RybS5oCj4gQEAgLTYxNCw2ICs2MTQsMTggQEAgZW51bSBkcm1fcGFudGhvcl92bV9iaW5kX29w X2ZsYWdzIHsKPiAgCSAqLwo+ICAJRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfVU5DQUNIRUQg PSAxIDw8IDIsCj4KPiArCS8qKgo+ICsJICogQERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQ QVJTRTogU3BhcnNlbHkgbWFwIGEgdmlydHVhbCBtZW1vcnkgcmFuZ2UKPiArCSAqCj4gKwkgKiBP bmx5IHZhbGlkIHdpdGggRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBFX01BUC4KPiArCSAqCj4g KwkgKiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIHRoZSB3aG9sZSB2bV9iaW5kIHJhbmdlIGlzIG1h cHBlZCBvdmVyIGEgZHVtbXkgb2JqZWN0IGluIGEgY3ljbGljCj4gKwkgKiBmYXNoaW9uLCBhbmQg YWxsIEdQVSByZWFkcyBmcm9tIGFkZHJlc3NlcyBpbiB0aGUgcmFuZ2UgcmV0dXJuIHVuZGVmaW5l ZCB2YWx1ZXMuIFRoaXMgZmxhZwo+ICsJICogYmVpbmcgc2V0IG1lYW5zIGRybV9wYW50aG9yX3Zt X2JpbmRfb3A6OmJvX29mZnNldCBhbmQgZHJtX3BhbnRob3Jfdm1fYmluZF9vcDo6Ym9faGFuZGxl Cj4gKwkgKiBtdXN0IGJvdGggYmUgc2V0IHRvIDAuIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQ X05PRVhFQyBtdXN0IGFsc28gYmUgc2V0Lgo+ICsJICovCj4gKwlEUk1fUEFOVEhPUl9WTV9CSU5E X09QX01BUF9TUEFSU0UgPSAxIDw8IDMsCj4gKwo+ICAJLyoqCj4gIAkgKiBARFJNX1BBTlRIT1Jf Vk1fQklORF9PUF9UWVBFX01BU0s6IE1hc2sgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2Yg b3BlcmF0aW9uLgo+ICAJICovCj4gLS0KPiAyLjUzLjAKCgpBZHJpYW4gTGFydW1iZQo=