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 E997AFF8875 for ; Wed, 29 Apr 2026 18:33:34 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3460F10F127; Wed, 29 Apr 2026 18:33:34 +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="fT4amCBc"; 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 6369E10F123 for ; Wed, 29 Apr 2026 18:33:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1777487599; cv=none; d=zohomail.com; s=zohoarc; b=gM/JnRp9UOnOOivDq8iv7nYsiCUPntIc6OeF510Ezk6zneU2ZGXoSffqgXTE26MBaPr2bOTGDGxCwk6J5Z7zAolm7U7PGXVo88qRcH10TC3e/om5ZKh+kaGDfhdLPbPb/OFYEVQDMATFgbvsxvX5ces59E42/tlH/oVYg1okCfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777487599; 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=svCR5+ymLg4oiCG5fkAhriEmjH3gqYitga9irHOijfw=; b=iEaTum00rXZB264ytJWmb7hpokesuVmnOx9AQ8gHvRpeZi+NtlpYgPmUEEwVr0Xm5F+5dxZj/AAMIFQAr0AZ+jvWlPaLP3DhxEDohxAL6v1zzYWdrCtl6Uu0tWF3zZ9+L9sUAD9MB9RLmSoNFIwOZV/36mwqw6j0ONTCsVIw46k= 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=1777487599; 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=svCR5+ymLg4oiCG5fkAhriEmjH3gqYitga9irHOijfw=; b=fT4amCBcpbQmmIrjNNh5fgmXi59hLkWoxJBfml5KKrXFlGJkBi4s2B44JLIAIOCl qIy6AZ87KVoBVcpbksDhUZyVDd2LKu+GwyYfi0vjMs/jl3+va3wtZWe7ulDyTEyABCW i58sCJjGnxYUSOI/q29j0kvobM06OnGtbVSMqW7Y= Received: by mx.zohomail.com with SMTPS id 1777487598413324.49177010259405; Wed, 29 Apr 2026 11:33:18 -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 v10 5/6] drm/panthor: Support sparse mappings Date: Wed, 29 Apr 2026 19:32:17 +0100 Message-ID: <20260429183253.66422-6-adrian.larumbe@collabora.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429183253.66422-1-adrian.larumbe@collabora.com> References: <20260429183253.66422-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 NTkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIGluY2x1ZGUvdWFwaS9kcm0vcGFudGhvcl9k cm0uaCAgICAgICAgfCAgMTIgKysKIDQgZmlsZXMgY2hhbmdlZCwgMTcwIGluc2VydGlvbnMoKyks IDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3Bh bnRob3JfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCmluZGV4 IDEzMjk1ZDdhNTkzZC4uYzc5OGFjMjk2M2UxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v 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 YW50aG9yX21tdS5jCmluZGV4IGY1NGE2MGNkMGVjNC4uOTI1N2FmZDZhZGM5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX21tdS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9wYW50aG9yL3BhbnRob3JfbW11LmMKQEAgLTExMiw2ICsxMTIsMTcgQEAgc3RydWN0IHBh bnRob3JfbW11IHsKIHN0cnVjdCBwYW50aG9yX3ZtX3Bvb2wgewogCS8qKiBAeGE6IEFycmF5IHVz ZWQgZm9yIFZNIGhhbmRsZSB0cmFja2luZy4gKi8KIAlzdHJ1Y3QgeGFycmF5IHhhOworCisJLyoq CisJICogQGR1bW15OiBEdW1teSBvYmplY3QgdXNlZCBmb3Igc3BhcnNlIG1hcHBpbmdzCisJICoK KwkgKiBTcGFyc2UgYmluZGluZ3MgbWFwIHZpcnR1YWwgYWRkcmVzcyByYW5nZXMgb250byBhIGR1 bW15CisJICogQk8gaW4gYSBtb2R1bG8gZmFzaGlvbi4gRXZlbiB0aG91Z2ggc3BhcnNlIHdyaXRl cyBhcmUgbWVhbnQKKwkgKiB0byBiZSBkaXNjYXJkZWQgYW5kIHJlYWRzIHVuZGVmaW5lZCwgd3Jp dGVzIGFyZSBzdGlsbCByZWZsZWN0ZWQKKwkgKiBpbiB0aGUgZHVtbXkgYnVmZmVyLiBUaGF0IG1l YW5zIHdlIG11c3Qga2VlcCBhIGR1bW15IG9iamVjdCBwZXIKKwkgKiBmaWxlIGNvbnRleHQsIHRv IGF2b2lkIGRhdGEgbGVha3MgYmV0d2VlbiB0aGVtLgorCSAqLworCXN0cnVjdCBwYW50aG9yX2dl bV9vYmplY3QgKmR1bW15OwogfTsKIAogLyoqCkBAIC0zOTEsNiArNDAyLDE2IEBAIHN0cnVjdCBw YW50aG9yX3ZtIHsKIAkJICovCiAJCXN0cnVjdCBsaXN0X2hlYWQgbHJ1X25vZGU7CiAJfSByZWNs YWltOworCisJLyoqCisJICogQGR1bW15OiBEdW1teSBvYmplY3QgdXNlZCBmb3Igc3BhcnNlIG1h cHBpbmdzLgorCSAqCisJICogVk0ncyBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGZpbGUg Y29udGV4dC13aWRlIGR1bW15IEJPIGJlY2F1c2UKKwkgKiB0aGV5IGNhbiBvdXRsaXZlIHRoZSBm aWxlIGNvbnRleHQsIHdoaWNoIGluY2x1ZGVzIHRoZSBWTSBwb29sIGhvbGRpbmcKKwkgKiB0aGUg b3JpZ2luYWwgZHVtbXkgQk8gcmVmZXJlbmNlLgorCSAqCisJICovCisJc3RydWN0IHBhbnRob3Jf Z2VtX29iamVjdCAqZHVtbXk7CiB9OwogCiAvKioKQEAgLTEwMjAsNiArMTA0MSwzMCBAQCBwYW50 aG9yX3ZtX21hcF9wYWdlcyhzdHJ1Y3QgcGFudGhvcl92bSAqdm0sIHU2NCBpb3ZhLCBpbnQgcHJv dCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorcGFudGhvcl92bV9tYXBfc3BhcnNlKHN0 cnVjdCBwYW50aG9yX3ZtICp2bSwgdTY0IGlvdmEsIGludCBwcm90LAorCQkgICAgICBzdHJ1Y3Qg c2dfdGFibGUgKnNndCwgdTY0IHNpemUpCit7CisJdTY0IG1hcHBlZCA9IDA7CisJaW50IHJldDsK KworCXdoaWxlIChtYXBwZWQgPCBzaXplKSB7CisJCXU2NCBhZGRyID0gaW92YSArIG1hcHBlZDsK KwkJdTMyIGNodW5rX3NpemUgPSBtaW4oc2l6ZSAtIG1hcHBlZCwgU1pfMk0gLSAoYWRkciAmIChT Wl8yTSAtIDEpKSk7CisKKwkJcmV0ID0gcGFudGhvcl92bV9tYXBfcGFnZXModm0sIGFkZHIsIHBy b3QsCisJCQkJCSAgIHNndCwgMCwgY2h1bmtfc2l6ZSk7CisJCWlmIChyZXQpIHsKKwkJCXBhbnRo b3Jfdm1fdW5tYXBfcGFnZXModm0sIGlvdmEsIG1hcHBlZCk7CisJCQlyZXR1cm4gcmV0OworCQl9 CisKKwkJbWFwcGVkICs9IGNodW5rX3NpemU7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRp YyBpbnQgZmxhZ3NfdG9fcHJvdCh1MzIgZmxhZ3MpCiB7CiAJaW50IHByb3QgPSAwOwpAQCAtMTI2 Miw2ICsxMzA3LDcgQEAgc3RhdGljIGludCBwYW50aG9yX3ZtX29wX2N0eF9wcmVhbGxvY19wdHMo c3RydWN0IHBhbnRob3Jfdm1fb3BfY3R4ICpvcF9jdHgpCiAJKERSTV9QQU5USE9SX1ZNX0JJTkRf T1BfTUFQX1JFQURPTkxZIHwgXAogCSBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9OT0VYRUMg fCBcCiAJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1VOQ0FDSEVEIHwgXAorCSBEUk1fUEFO VEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UgfCBcCiAJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1Bf VFlQRV9NQVNLKQogCiBzdGF0aWMgaW50IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KHN0 cnVjdCBwYW50aG9yX3ZtX29wX2N0eCAqb3BfY3R4LApAQCAtMTI2OSw2ICsxMzE1LDcgQEAgc3Rh dGljIGludCBwYW50aG9yX3ZtX3ByZXBhcmVfbWFwX29wX2N0eChzdHJ1Y3QgcGFudGhvcl92bV9v cF9jdHggKm9wX2N0eCwKIAkJCQkJIHN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmJvLAogCQkJ CQkgY29uc3Qgc3RydWN0IGRybV9wYW50aG9yX3ZtX2JpbmRfb3AgKm9wKQogeworCWJvb2wgaXNf c3BhcnNlID0gb3AtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFOwog CXN0cnVjdCBkcm1fZ3B1dm1fYm8gKnByZWFsbG9jYXRlZF92bV9ibzsKIAlzdHJ1Y3Qgc2dfdGFi bGUgKnNndCA9IE5VTEw7CiAJaW50IHJldDsKQEAgLTEyODAsOCArMTMyNywyMSBAQCBzdGF0aWMg aW50IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KHN0cnVjdCBwYW50aG9yX3ZtX29wX2N0 eCAqb3BfY3R4LAogCSAgICAob3AtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBF X01BU0spICE9IERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVApCiAJCXJldHVybiAtRUlO VkFMOwogCi0JLyogTWFrZSBzdXJlIHRoZSBWQSBhbmQgc2l6ZSBhcmUgaW4tYm91bmRzLiAqLwot CWlmIChvcC0+c2l6ZSA+IGJvLT5iYXNlLnNpemUgfHwgb3AtPmJvX29mZnNldCA+IGJvLT5iYXNl LnNpemUgLSBvcC0+c2l6ZSkKKwkvKiB1QVBJIG1hbmRhdGVzIHNwYXJzZWx5IGJvdW5kIHJlZ2lv bnMgbXVzdCBub3QgYmUgZXhlY3V0YWJsZS4gKi8KKwlpZiAoaXNfc3BhcnNlICYmICEob3AtPmZs YWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfTk9FWEVDKSkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwkvKiBGb3Igbm9uLXNwYXJzZSwgbWFrZSBzdXJlIHRoZSBWQSBhbmQgc2l6ZSBhcmUg aW4tYm91bmRzLgorCSAqIEZvciBzcGFyc2UsIHRoaXMgaXMgbm90IGFwcGxpY2FibGUsIGJlY2F1 c2UgdGhlIGR1bW15IEJPIGlzCisJICogcmVwZWF0ZWRseSBtYXBwZWQgb3ZlciBhIHBvdGVudGlh bGx5IHdpZGVyIFZBIHJhbmdlLgorCSAqLworCWlmICghaXNfc3BhcnNlICYmIChvcC0+c2l6ZSA+ IGJvLT5iYXNlLnNpemUgfHwgb3AtPmJvX29mZnNldCA+IGJvLT5iYXNlLnNpemUgLSBvcC0+c2l6 ZSkpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogRm9yIHNwYXJzZSwgd2UgZG9uJ3QgZXhwZWN0 IGFueSB1c2VyIEJPLCB0aGUgQk8gd2UgZ2V0IHBhc3NlZAorCSAqIGlzIHRoZSBkdW1teSBCTyBh dHRhY2hlZCB0byB0aGUgVk0gcG9vbC4KKwkgKi8KKwlpZiAoaXNfc3BhcnNlICYmIChvcC0+Ym9f aGFuZGxlIHx8IG9wLT5ib19vZmZzZXQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIElmIHRo ZSBCTyBoYXMgYW4gZXhjbHVzaXZlIFZNIGF0dGFjaGVkLCBpdCBjYW4ndCBiZSBtYXBwZWQgdG8g b3RoZXIgVk1zLiAqLwpAQCAtMTU0Myw2ICsxNjAzLDkgQEAgaW50IHBhbnRob3Jfdm1fcG9vbF9j cmVhdGVfdm0oc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldiwKIAkJcmV0dXJuIHJldDsKIAl9 CiAKKwlkcm1fZ2VtX29iamVjdF9nZXQoJnBvb2wtPmR1bW15LT5iYXNlKTsKKwl2bS0+ZHVtbXkg PSBwb29sLT5kdW1teTsKKwogCWFyZ3MtPnVzZXJfdmFfcmFuZ2UgPSBrZXJuZWxfdmFfc3RhcnQ7 CiAJcmV0dXJuIGlkOwogfQpAQCAtMTYzNCw2ICsxNjk3LDcgQEAgdm9pZCBwYW50aG9yX3ZtX3Bv b2xfZGVzdHJveShzdHJ1Y3QgcGFudGhvcl9maWxlICpwZmlsZSkKIAl4YV9mb3JfZWFjaCgmcGZp bGUtPnZtcy0+eGEsIGksIHZtKQogCQlwYW50aG9yX3ZtX2Rlc3Ryb3kodm0pOwogCisJZHJtX2dl bV9vYmplY3RfcHV0KCZwZmlsZS0+dm1zLT5kdW1teS0+YmFzZSk7CiAJeGFfZGVzdHJveSgmcGZp bGUtPnZtcy0+eGEpOwogCWtmcmVlKHBmaWxlLT52bXMpOwogfQpAQCAtMTY1MSw2ICsxNzE1LDEz IEBAIGludCBwYW50aG9yX3ZtX3Bvb2xfY3JlYXRlKHN0cnVjdCBwYW50aG9yX2ZpbGUgKnBmaWxl KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCXhhX2luaXRfZmxhZ3MoJnBmaWxlLT52bXMtPnhhLCBY QV9GTEFHU19BTExPQzEpOworCisJcGZpbGUtPnZtcy0+ZHVtbXkgPSBwYW50aG9yX2R1bW15X2Jv X2NyZWF0ZShwZmlsZS0+cHRkZXYpOworCWlmIChJU19FUlIocGZpbGUtPnZtcy0+ZHVtbXkpKSB7 CisJCWtmcmVlKHBmaWxlLT52bXMpOworCQlyZXR1cm4gUFRSX0VSUihwZmlsZS0+dm1zLT5kdW1t eSk7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE5ODcsNiArMjA1OCw5IEBAIHN0YXRpYyB2 b2lkIHBhbnRob3Jfdm1fZnJlZShzdHJ1Y3QgZHJtX2dwdXZtICpncHV2bSkKIAogCWZyZWVfaW9f cGd0YWJsZV9vcHModm0tPnBndGJsX29wcyk7CiAKKwlpZiAodm0tPmR1bW15KQorCQlkcm1fZ2Vt X29iamVjdF9wdXQoJnZtLT5kdW1teS0+YmFzZSk7CisKIAlkcm1fbW1fdGFrZWRvd24oJnZtLT5t bSk7CiAJa2ZyZWUodm0pOwogfQpAQCAtMjE0Niw3ICsyMjIwLDIzIEBAIHN0YXRpYyB2b2lkIHBh bnRob3Jfdm1hX2luaXQoc3RydWN0IHBhbnRob3Jfdm1hICp2bWEsIHUzMiBmbGFncykKICNkZWZp bmUgUEFOVEhPUl9WTV9NQVBfRkxBR1MgXAogCShEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9S RUFET05MWSB8IFwKIAkgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfTk9FWEVDIHwgXAotCSBE Uk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9VTkNBQ0hFRCkKKwkgRFJNX1BBTlRIT1JfVk1fQklO RF9PUF9NQVBfVU5DQUNIRUQgfCBcCisJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJT RSkKKworc3RhdGljIGludAorcGFudGhvcl92bV9leGVjX21hcF9vcChzdHJ1Y3QgcGFudGhvcl92 bSAqdm0sIHUzMiBmbGFncywKKwkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfbWFw ICpvcCkKK3sKKwlzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibyA9IHRvX3BhbnRob3JfYm8o b3AtPmdlbS5vYmopOworCWludCBwcm90ID0gZmxhZ3NfdG9fcHJvdChmbGFncyk7CisKKwlpZiAo ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpCisJCXJldHVybiBwYW50 aG9yX3ZtX21hcF9zcGFyc2Uodm0sIG9wLT52YS5hZGRyLCBwcm90LAorCQkJCQkgICAgIGJvLT5k bWFwLnNndCwgb3AtPnZhLnJhbmdlKTsKKworCXJldHVybiBwYW50aG9yX3ZtX21hcF9wYWdlcyh2 bSwgb3AtPnZhLmFkZHIsIHByb3QsIGJvLT5kbWFwLnNndCwKKwkJCQkgICAgb3AtPmdlbS5vZmZz ZXQsIG9wLT52YS5yYW5nZSk7Cit9CiAKIHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2YV9zbV9zdGVw X21hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwgdm9pZCAqcHJpdikKIHsKQEAgLTIxNjAsOSAr MjI1MCw3IEBAIHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2YV9zbV9zdGVwX21hcChzdHJ1Y3QgZHJt X2dwdXZhX29wICpvcCwgdm9pZCAqcHJpdikKIAogCXBhbnRob3Jfdm1hX2luaXQodm1hLCBvcF9j dHgtPmZsYWdzICYgUEFOVEhPUl9WTV9NQVBfRkxBR1MpOwogCi0JcmV0ID0gcGFudGhvcl92bV9t YXBfcGFnZXModm0sIG9wLT5tYXAudmEuYWRkciwgZmxhZ3NfdG9fcHJvdCh2bWEtPmZsYWdzKSwK LQkJCQkgICBvcF9jdHgtPm1hcC5iby0+ZG1hcC5zZ3QsIG9wLT5tYXAuZ2VtLm9mZnNldCwKLQkJ CQkgICBvcC0+bWFwLnZhLnJhbmdlKTsKKwlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29wKHZt LCB2bWEtPmZsYWdzLCAmb3AtPm1hcCk7CiAJaWYgKHJldCkgewogCQlwYW50aG9yX3ZtX29wX2N0 eF9yZXR1cm5fdm1hKG9wX2N0eCwgdm1hKTsKIAkJcmV0dXJuIHJldDsKQEAgLTIxNzgsMTMgKzIy NjYsMTYgQEAgc3RhdGljIGludCBwYW50aG9yX2dwdXZhX3NtX3N0ZXBfbWFwKHN0cnVjdCBkcm1f Z3B1dmFfb3AgKm9wLCB2b2lkICpwcml2KQogfQogCiBzdGF0aWMgYm9vbAotaW92YV9tYXBwZWRf YXNfaHVnZV9wYWdlKHN0cnVjdCBkcm1fZ3B1dmFfb3BfbWFwICpvcCwgdTY0IGFkZHIpCitpb3Zh X21hcHBlZF9hc19odWdlX3BhZ2Uoc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgKm9wLCB1NjQgYWRk ciwgYm9vbCBpc19zcGFyc2UpCiB7CiAJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8gPSB0 b19wYW50aG9yX2JvKG9wLT5nZW0ub2JqKTsKIAljb25zdCBzdHJ1Y3QgcGFnZSAqcGc7CiAJcGdv ZmZfdCBib19vZmZzZXQ7CiAKLQlib19vZmZzZXQgPSBhZGRyIC0gb3AtPnZhLmFkZHIgKyBvcC0+ Z2VtLm9mZnNldDsKKwkvKiBQZXItVk0gRHVtbXkgQk8gaW4gc3BhcnNlIG1hcHBpbmdzIGlzIGFs d2F5cyAyTWlCLCBzbyBjaGVja2luZyB0aGUKKwkgKiBzaXplIG9mIHRoZSB2ZXJ5IGZpcnN0IHBh Z2UgaXMgZW5vdWdoLgorCSAqLworCWJvX29mZnNldCA9ICFpc19zcGFyc2UgPyBhZGRyIC0gb3At PnZhLmFkZHIgKyBvcC0+Z2VtLm9mZnNldCA6IDA7CiAJcGcgPSBiby0+YmFja2luZy5wYWdlc1ti b19vZmZzZXQgPj4gUEFHRV9TSElGVF07CiAKIAlyZXR1cm4gZm9saW9fc2l6ZShwYWdlX2ZvbGlv KHBnKSkgPj0gU1pfMk07CkBAIC0yMTk0LDYgKzIyODUsOCBAQCBzdGF0aWMgdm9pZAogdW5tYXBf aHVnZXBhZ2VfYWxpZ24oY29uc3Qgc3RydWN0IGRybV9ncHV2YV9vcF9yZW1hcCAqb3AsCiAJCSAg ICAgdTY0ICp1bm1hcF9zdGFydCwgdTY0ICp1bm1hcF9yYW5nZSkKIHsKKwlzdHJ1Y3QgcGFudGhv cl92bWEgKnVubWFwX3ZtYSA9IGNvbnRhaW5lcl9vZihvcC0+dW5tYXAtPnZhLCBzdHJ1Y3QgcGFu dGhvcl92bWEsIGJhc2UpOworCWJvb2wgaXNfc3BhcnNlID0gdW5tYXBfdm1hLT5mbGFncyAmIERS TV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJTRTsKIAl1NjQgYWxpZ25lZF91bm1hcF9zdGFy dCwgYWxpZ25lZF91bm1hcF9lbmQsIHVubWFwX2VuZDsKIAogCXVubWFwX2VuZCA9ICp1bm1hcF9z dGFydCArICp1bm1hcF9yYW5nZTsKQEAgLTIyMDUsNyArMjI5OCw3IEBAIHVubWFwX2h1Z2VwYWdl X2FsaWduKGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfcmVtYXAgKm9wLAogCSAqLwogCWlmIChv cC0+cHJldiAmJiBhbGlnbmVkX3VubWFwX3N0YXJ0IDwgKnVubWFwX3N0YXJ0ICYmCiAJICAgIG9w LT5wcmV2LT52YS5hZGRyIDw9IGFsaWduZWRfdW5tYXBfc3RhcnQgJiYKLQkgICAgaW92YV9tYXBw ZWRfYXNfaHVnZV9wYWdlKG9wLT5wcmV2LCAqdW5tYXBfc3RhcnQpKSB7CisJICAgIChpb3ZhX21h cHBlZF9hc19odWdlX3BhZ2Uob3AtPnByZXYsICp1bm1hcF9zdGFydCwgaXNfc3BhcnNlKSkpIHsK IAkJKnVubWFwX3JhbmdlICs9ICp1bm1hcF9zdGFydCAtIGFsaWduZWRfdW5tYXBfc3RhcnQ7CiAJ CSp1bm1hcF9zdGFydCA9IGFsaWduZWRfdW5tYXBfc3RhcnQ7CiAJfQpAQCAtMjIxNSw3ICsyMzA4 LDcgQEAgdW5tYXBfaHVnZXBhZ2VfYWxpZ24oY29uc3Qgc3RydWN0IGRybV9ncHV2YV9vcF9yZW1h cCAqb3AsCiAJICovCiAJaWYgKG9wLT5uZXh0ICYmIGFsaWduZWRfdW5tYXBfZW5kID4gdW5tYXBf ZW5kICYmCiAJICAgIG9wLT5uZXh0LT52YS5hZGRyICsgb3AtPm5leHQtPnZhLnJhbmdlID49IGFs aWduZWRfdW5tYXBfZW5kICYmCi0JICAgIGlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShvcC0+bmV4 dCwgdW5tYXBfZW5kIC0gMSkpIHsKKwkgICAgaW92YV9tYXBwZWRfYXNfaHVnZV9wYWdlKG9wLT5u ZXh0LCB1bm1hcF9lbmQgLSAxLCBpc19zcGFyc2UpKSB7CiAJCSp1bm1hcF9yYW5nZSArPSBhbGln bmVkX3VubWFwX2VuZCAtIHVubWFwX2VuZDsKIAl9CiB9CkBAIC0yMjUwLDE1ICsyMzQzLDI3IEBA IHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2YV9zbV9zdGVwX3JlbWFwKHN0cnVjdCBkcm1fZ3B1dmFf b3AgKm9wLAogCQlwYW50aG9yX3ZtX3VubWFwX3BhZ2VzKHZtLCB1bm1hcF9zdGFydCwgdW5tYXBf cmFuZ2UpOwogCX0KIAorCS8qIEluIHRoZSBmb2xsb3dpbmcgdHdvIGJyYW5jaGVzLCBuZWl0aGVy IHJlbWFwOjp1bm1hcDo6b2Zmc2V0IG5vciByZW1hcDo6dW5tYXA6OmtlZXAKKwkgKiBjYW4gYmUg dHJ1c3RlZCB0byBjb250YWluIGxlZ2l0aW1hdGUgdmFsdWVzIGluIHRoZSBjYXNlIG9mIHNwYXJz ZSBtYXBwaW5ncywgYmVjYXVzZQorCSAqIHRoZSBkcm1fZ3B1dm0gY29yZSBjYWxjdWxhdGVzIHRo ZW0gb24gdGhlIGFzc3VtcHRpb24gdGhhdCBhIFZNX0JJTkQgb3BlcmF0aW9uJ3MKKwkgKiByYW5n ZSBpcyBhbHdheXMgbGVzcyB0aGFuIHRoZSB0YXJnZXQgQk8uIFRoYXQgZG9lc24ndCBob2xkIGlu IHRoZSBjYXNlIG9mIHNwYXJzZQorCSAqIGJpbmRpbmdzLCBidXQgd2UgZG9uJ3QgY2FyZSB0byBh ZGp1c3QgdGhlIEJPIG9mZnNldCBvZiBuZXcgVkEncyBzcGF3bmVkIGJ5IGEgcmVtYXAKKwkgKiBv cGVyYXRpb24gYmVjYXVzZSB3ZSBpZ25vcmUgdGhlbSBhbHRvZ2V0aGVyIHdoZW4gc3BhcnNlLW1h cHBpbmcgcGFnZXMgb24gYSBIVyBsZXZlbAorCSAqIGp1c3QgZnVydGhlciBiZWxvdy4gSWYgd2Ug ZXZlciB3YW50ZWQgdG8gbWFrZSB1c2Ugb2YgcmVtYXA6OnVubWFwOjprZWVwLCB0aGVuIHRoaXMK KwkgKiBsb2dpYyB3b3VsZCBoYXZlIHRvIGJlIHJld29ya2VkLgorCSAqLwogCWlmIChvcC0+cmVt YXAucHJldikgewotCQlzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibyA9IHRvX3BhbnRob3Jf Ym8ob3AtPnJlbWFwLnByZXYtPmdlbS5vYmopOwogCQl1NjQgb2Zmc2V0ID0gb3AtPnJlbWFwLnBy ZXYtPmdlbS5vZmZzZXQgKyB1bm1hcF9zdGFydCAtIG9wLT5yZW1hcC5wcmV2LT52YS5hZGRyOwog CQl1NjQgc2l6ZSA9IG9wLT5yZW1hcC5wcmV2LT52YS5hZGRyICsgb3AtPnJlbWFwLnByZXYtPnZh LnJhbmdlIC0gdW5tYXBfc3RhcnQ7CisJCWNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfbWFwIG1h cF9vcCA9IHsKKwkJCS52YS5hZGRyID0gdW5tYXBfc3RhcnQsCisJCQkudmEucmFuZ2UgPSBzaXpl LAorCQkJLmdlbS5vYmogPSBvcC0+cmVtYXAucHJldi0+Z2VtLm9iaiwKKwkJCS5nZW0ub2Zmc2V0 ID0gb2Zmc2V0LAorCQl9OwogCi0JCWlmICghdW5tYXBfdm1hLT5ldmljdGVkKSB7Ci0JCQlyZXQg PSBwYW50aG9yX3ZtX21hcF9wYWdlcyh2bSwgdW5tYXBfc3RhcnQsCi0JCQkJCQkgICBmbGFnc190 b19wcm90KHVubWFwX3ZtYS0+ZmxhZ3MpLAotCQkJCQkJICAgYm8tPmRtYXAuc2d0LCBvZmZzZXQs IHNpemUpOworCQlpZiAoIXVubWFwX3ZtYS0+ZXZpY3RlZCAmJiBzaXplID4gMCkgeworCQkJcmV0 ID0gcGFudGhvcl92bV9leGVjX21hcF9vcCh2bSwgdW5tYXBfdm1hLT5mbGFncywgJm1hcF9vcCk7 CiAJCQlpZiAocmV0KQogCQkJCXJldHVybiByZXQ7CiAJCX0KQEAgLTIyNjksMTQgKzIzNzQsMTcg QEAgc3RhdGljIGludCBwYW50aG9yX2dwdXZhX3NtX3N0ZXBfcmVtYXAoc3RydWN0IGRybV9ncHV2 YV9vcCAqb3AsCiAJfQogCiAJaWYgKG9wLT5yZW1hcC5uZXh0KSB7Ci0JCXN0cnVjdCBwYW50aG9y X2dlbV9vYmplY3QgKmJvID0gdG9fcGFudGhvcl9ibyhvcC0+cmVtYXAubmV4dC0+Z2VtLm9iaik7 CiAJCXU2NCBhZGRyID0gb3AtPnJlbWFwLm5leHQtPnZhLmFkZHI7CiAJCXU2NCBzaXplID0gdW5t YXBfc3RhcnQgKyB1bm1hcF9yYW5nZSAtIG9wLT5yZW1hcC5uZXh0LT52YS5hZGRyOworCQljb25z dCBzdHJ1Y3QgZHJtX2dwdXZhX29wX21hcCBtYXBfb3AgPSB7CisJCQkudmEuYWRkciA9IGFkZHIs CisJCQkudmEucmFuZ2UgPSBzaXplLAorCQkJLmdlbS5vYmogPSBvcC0+cmVtYXAubmV4dC0+Z2Vt Lm9iaiwKKwkJCS5nZW0ub2Zmc2V0ID0gb3AtPnJlbWFwLm5leHQtPmdlbS5vZmZzZXQsCisJCX07 CiAKLQkJaWYgKCF1bm1hcF92bWEtPmV2aWN0ZWQpIHsKLQkJCXJldCA9IHBhbnRob3Jfdm1fbWFw X3BhZ2VzKHZtLCBhZGRyLCBmbGFnc190b19wcm90KHVubWFwX3ZtYS0+ZmxhZ3MpLAotCQkJCQkJ ICAgYm8tPmRtYXAuc2d0LCBvcC0+cmVtYXAubmV4dC0+Z2VtLm9mZnNldCwKLQkJCQkJCSAgIHNp emUpOworCQlpZiAoIXVubWFwX3ZtYS0+ZXZpY3RlZCAmJiBzaXplID4gMCkgeworCQkJcmV0ID0g cGFudGhvcl92bV9leGVjX21hcF9vcCh2bSwgdW5tYXBfdm1hLT5mbGFncywgJm1hcF9vcCk7CiAJ CQlpZiAocmV0KQogCQkJCXJldHVybiByZXQ7CiAJCX0KQEAgLTI4MzUsNyArMjk0MywxMyBAQCBw YW50aG9yX3ZtX2JpbmRfcHJlcGFyZV9vcF9jdHgoc3RydWN0IGRybV9maWxlICpmaWxlLAogCiAJ c3dpdGNoIChvcC0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFTSykgewog CWNhc2UgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBFX01BUDoKLQkJZ2VtID0gZHJtX2dlbV9v YmplY3RfbG9va3VwKGZpbGUsIG9wLT5ib19oYW5kbGUpOworCQlpZiAoIShvcC0+ZmxhZ3MgJiBE Uk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpKSB7CisJCQlnZW0gPSBkcm1fZ2VtX29i amVjdF9sb29rdXAoZmlsZSwgb3AtPmJvX2hhbmRsZSk7CisJCX0gZWxzZSB7CisJCQlnZW0gPSAm dm0tPmR1bW15LT5iYXNlOworCQkJZHJtX2dlbV9vYmplY3RfZ2V0KCZ2bS0+ZHVtbXktPmJhc2Up OworCQl9CisKIAkJcmV0ID0gcGFudGhvcl92bV9wcmVwYXJlX21hcF9vcF9jdHgob3BfY3R4LCB2 bSwKIAkJCQkJCSAgICBnZW0gPyB0b19wYW50aG9yX2JvKGdlbSkgOiBOVUxMLAogCQkJCQkJICAg IG9wKTsKQEAgLTMwNDMsNiArMzE1Nyw5IEBAIGludCBwYW50aG9yX3ZtX21hcF9ib19yYW5nZShz dHJ1Y3QgcGFudGhvcl92bSAqdm0sIHN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmJvCiAJc3Ry dWN0IHBhbnRob3Jfdm1fb3BfY3R4IG9wX2N0eDsKIAlpbnQgcmV0OwogCisJaWYgKGRybV9XQVJO X09OKCZ2bS0+cHRkZXYtPmJhc2UsIGZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBf U1BBUlNFKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlyZXQgPSBwYW50aG9yX3ZtX3ByZXBhcmVf bWFwX29wX2N0eCgmb3BfY3R4LCB2bSwgYm8sICZvcCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vcGFudGhvcl9kcm0uaCBiL2luY2x1ZGUv dWFwaS9kcm0vcGFudGhvcl9kcm0uaAppbmRleCAxNGE5M2E0ZWY2ZmYuLjFiNzA2ZDAwYjBhMSAx MDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5oCisrKyBiL2luY2x1ZGUv dWFwaS9kcm0vcGFudGhvcl9kcm0uaApAQCAtNjE0LDYgKzYxNCwxOCBAQCBlbnVtIGRybV9wYW50 aG9yX3ZtX2JpbmRfb3BfZmxhZ3MgewogCSAqLwogCURSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQ X1VOQ0FDSEVEID0gMSA8PCAyLAogCisJLyoqCisJICogQERSTV9QQU5USE9SX1ZNX0JJTkRfT1Bf TUFQX1NQQVJTRTogU3BhcnNlbHkgbWFwIGEgdmlydHVhbCBtZW1vcnkgcmFuZ2UKKwkgKgorCSAq IE9ubHkgdmFsaWQgd2l0aCBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFQLgorCSAqCisJ ICogV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgd2hvbGUgdm1fYmluZCByYW5nZSBpcyBtYXBw ZWQgb3ZlciBhIGR1bW15IG9iamVjdCBpbiBhIGN5Y2xpYworCSAqIGZhc2hpb24sIGFuZCBhbGwg R1BVIHJlYWRzIGZyb20gYWRkcmVzc2VzIGluIHRoZSByYW5nZSByZXR1cm4gdW5kZWZpbmVkIHZh bHVlcy4gVGhpcyBmbGFnCisJICogYmVpbmcgc2V0IG1lYW5zIGRybV9wYW50aG9yX3ZtX2JpbmRf b3A6b2Zmc2V0IGFuZCBkcm1fcGFudGhvcl92bV9iaW5kX29wOjpoYW5kbGUgbXVzdAorCSAqIGJv dGggYmUgc2V0IHRvIDAuIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyBtdXN0IGFs c28gYmUgc2V0LgorCSAqLworCURSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJTRSA9IDEg PDwgMywKKwogCS8qKgogCSAqIEBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFTSzogTWFz ayB1c2VkIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZiBvcGVyYXRpb24uCiAJICovCi0tIAoyLjUz LjAKCg==